[ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 /******/ (() => { // webpackBootstrap 2 /******/ var __webpack_modules__ = ({ 3 4 /***/ 2321: 5 /***/ ((module) => { 6 7 /** 8 * Checks if the block is experimental based on the metadata loaded 9 * from block.json. 10 * 11 * This function is in a separate file and uses the older JS syntax so 12 * that it can be imported in both: 13 * – block-library/src/index.js 14 * – block-library/src/babel-plugin.js 15 * 16 * @param {Object} metadata Parsed block.json metadata. 17 * @return {boolean} Is the block experimental? 18 */ 19 module.exports = function isBlockMetadataExperimental(metadata) { 20 return metadata && '__experimental' in metadata && metadata.__experimental !== false; 21 }; 22 23 24 /***/ }), 25 26 /***/ 7734: 27 /***/ ((module) => { 28 29 "use strict"; 30 31 32 // do not edit .js files directly - edit src/index.jst 33 34 35 var envHasBigInt64Array = typeof BigInt64Array !== 'undefined'; 36 37 38 module.exports = function equal(a, b) { 39 if (a === b) return true; 40 41 if (a && b && typeof a == 'object' && typeof b == 'object') { 42 if (a.constructor !== b.constructor) return false; 43 44 var length, i, keys; 45 if (Array.isArray(a)) { 46 length = a.length; 47 if (length != b.length) return false; 48 for (i = length; i-- !== 0;) 49 if (!equal(a[i], b[i])) return false; 50 return true; 51 } 52 53 54 if ((a instanceof Map) && (b instanceof Map)) { 55 if (a.size !== b.size) return false; 56 for (i of a.entries()) 57 if (!b.has(i[0])) return false; 58 for (i of a.entries()) 59 if (!equal(i[1], b.get(i[0]))) return false; 60 return true; 61 } 62 63 if ((a instanceof Set) && (b instanceof Set)) { 64 if (a.size !== b.size) return false; 65 for (i of a.entries()) 66 if (!b.has(i[0])) return false; 67 return true; 68 } 69 70 if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) { 71 length = a.length; 72 if (length != b.length) return false; 73 for (i = length; i-- !== 0;) 74 if (a[i] !== b[i]) return false; 75 return true; 76 } 77 78 79 if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; 80 if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); 81 if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); 82 83 keys = Object.keys(a); 84 length = keys.length; 85 if (length !== Object.keys(b).length) return false; 86 87 for (i = length; i-- !== 0;) 88 if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; 89 90 for (i = length; i-- !== 0;) { 91 var key = keys[i]; 92 93 if (!equal(a[key], b[key])) return false; 94 } 95 96 return true; 97 } 98 99 // true if both NaN, false otherwise 100 return a!==a && b!==b; 101 }; 102 103 104 /***/ }), 105 106 /***/ 9681: 107 /***/ ((module) => { 108 109 var characterMap = { 110 "À": "A", 111 "Á": "A", 112 "Â": "A", 113 "Ã": "A", 114 "Ä": "A", 115 "Å": "A", 116 "Ấ": "A", 117 "Ắ": "A", 118 "Ẳ": "A", 119 "Ẵ": "A", 120 "Ặ": "A", 121 "Æ": "AE", 122 "Ầ": "A", 123 "Ằ": "A", 124 "Ȃ": "A", 125 "Ả": "A", 126 "Ạ": "A", 127 "Ẩ": "A", 128 "Ẫ": "A", 129 "Ậ": "A", 130 "Ç": "C", 131 "Ḉ": "C", 132 "È": "E", 133 "É": "E", 134 "Ê": "E", 135 "Ë": "E", 136 "Ế": "E", 137 "Ḗ": "E", 138 "Ề": "E", 139 "Ḕ": "E", 140 "Ḝ": "E", 141 "Ȇ": "E", 142 "Ẻ": "E", 143 "Ẽ": "E", 144 "Ẹ": "E", 145 "Ể": "E", 146 "Ễ": "E", 147 "Ệ": "E", 148 "Ì": "I", 149 "Í": "I", 150 "Î": "I", 151 "Ï": "I", 152 "Ḯ": "I", 153 "Ȋ": "I", 154 "Ỉ": "I", 155 "Ị": "I", 156 "Ð": "D", 157 "Ñ": "N", 158 "Ò": "O", 159 "Ó": "O", 160 "Ô": "O", 161 "Õ": "O", 162 "Ö": "O", 163 "Ø": "O", 164 "Ố": "O", 165 "Ṍ": "O", 166 "Ṓ": "O", 167 "Ȏ": "O", 168 "Ỏ": "O", 169 "Ọ": "O", 170 "Ổ": "O", 171 "Ỗ": "O", 172 "Ộ": "O", 173 "Ờ": "O", 174 "Ở": "O", 175 "Ỡ": "O", 176 "Ớ": "O", 177 "Ợ": "O", 178 "Ù": "U", 179 "Ú": "U", 180 "Û": "U", 181 "Ü": "U", 182 "Ủ": "U", 183 "Ụ": "U", 184 "Ử": "U", 185 "Ữ": "U", 186 "Ự": "U", 187 "Ý": "Y", 188 "à": "a", 189 "á": "a", 190 "â": "a", 191 "ã": "a", 192 "ä": "a", 193 "å": "a", 194 "ấ": "a", 195 "ắ": "a", 196 "ẳ": "a", 197 "ẵ": "a", 198 "ặ": "a", 199 "æ": "ae", 200 "ầ": "a", 201 "ằ": "a", 202 "ȃ": "a", 203 "ả": "a", 204 "ạ": "a", 205 "ẩ": "a", 206 "ẫ": "a", 207 "ậ": "a", 208 "ç": "c", 209 "ḉ": "c", 210 "è": "e", 211 "é": "e", 212 "ê": "e", 213 "ë": "e", 214 "ế": "e", 215 "ḗ": "e", 216 "ề": "e", 217 "ḕ": "e", 218 "ḝ": "e", 219 "ȇ": "e", 220 "ẻ": "e", 221 "ẽ": "e", 222 "ẹ": "e", 223 "ể": "e", 224 "ễ": "e", 225 "ệ": "e", 226 "ì": "i", 227 "í": "i", 228 "î": "i", 229 "ï": "i", 230 "ḯ": "i", 231 "ȋ": "i", 232 "ỉ": "i", 233 "ị": "i", 234 "ð": "d", 235 "ñ": "n", 236 "ò": "o", 237 "ó": "o", 238 "ô": "o", 239 "õ": "o", 240 "ö": "o", 241 "ø": "o", 242 "ố": "o", 243 "ṍ": "o", 244 "ṓ": "o", 245 "ȏ": "o", 246 "ỏ": "o", 247 "ọ": "o", 248 "ổ": "o", 249 "ỗ": "o", 250 "ộ": "o", 251 "ờ": "o", 252 "ở": "o", 253 "ỡ": "o", 254 "ớ": "o", 255 "ợ": "o", 256 "ù": "u", 257 "ú": "u", 258 "û": "u", 259 "ü": "u", 260 "ủ": "u", 261 "ụ": "u", 262 "ử": "u", 263 "ữ": "u", 264 "ự": "u", 265 "ý": "y", 266 "ÿ": "y", 267 "Ā": "A", 268 "ā": "a", 269 "Ă": "A", 270 "ă": "a", 271 "Ą": "A", 272 "ą": "a", 273 "Ć": "C", 274 "ć": "c", 275 "Ĉ": "C", 276 "ĉ": "c", 277 "Ċ": "C", 278 "ċ": "c", 279 "Č": "C", 280 "č": "c", 281 "C̆": "C", 282 "c̆": "c", 283 "Ď": "D", 284 "ď": "d", 285 "Đ": "D", 286 "đ": "d", 287 "Ē": "E", 288 "ē": "e", 289 "Ĕ": "E", 290 "ĕ": "e", 291 "Ė": "E", 292 "ė": "e", 293 "Ę": "E", 294 "ę": "e", 295 "Ě": "E", 296 "ě": "e", 297 "Ĝ": "G", 298 "Ǵ": "G", 299 "ĝ": "g", 300 "ǵ": "g", 301 "Ğ": "G", 302 "ğ": "g", 303 "Ġ": "G", 304 "ġ": "g", 305 "Ģ": "G", 306 "ģ": "g", 307 "Ĥ": "H", 308 "ĥ": "h", 309 "Ħ": "H", 310 "ħ": "h", 311 "Ḫ": "H", 312 "ḫ": "h", 313 "Ĩ": "I", 314 "ĩ": "i", 315 "Ī": "I", 316 "ī": "i", 317 "Ĭ": "I", 318 "ĭ": "i", 319 "Į": "I", 320 "į": "i", 321 "İ": "I", 322 "ı": "i", 323 "IJ": "IJ", 324 "ij": "ij", 325 "Ĵ": "J", 326 "ĵ": "j", 327 "Ķ": "K", 328 "ķ": "k", 329 "Ḱ": "K", 330 "ḱ": "k", 331 "K̆": "K", 332 "k̆": "k", 333 "Ĺ": "L", 334 "ĺ": "l", 335 "Ļ": "L", 336 "ļ": "l", 337 "Ľ": "L", 338 "ľ": "l", 339 "Ŀ": "L", 340 "ŀ": "l", 341 "Ł": "l", 342 "ł": "l", 343 "Ḿ": "M", 344 "ḿ": "m", 345 "M̆": "M", 346 "m̆": "m", 347 "Ń": "N", 348 "ń": "n", 349 "Ņ": "N", 350 "ņ": "n", 351 "Ň": "N", 352 "ň": "n", 353 "ʼn": "n", 354 "N̆": "N", 355 "n̆": "n", 356 "Ō": "O", 357 "ō": "o", 358 "Ŏ": "O", 359 "ŏ": "o", 360 "Ő": "O", 361 "ő": "o", 362 "Œ": "OE", 363 "œ": "oe", 364 "P̆": "P", 365 "p̆": "p", 366 "Ŕ": "R", 367 "ŕ": "r", 368 "Ŗ": "R", 369 "ŗ": "r", 370 "Ř": "R", 371 "ř": "r", 372 "R̆": "R", 373 "r̆": "r", 374 "Ȓ": "R", 375 "ȓ": "r", 376 "Ś": "S", 377 "ś": "s", 378 "Ŝ": "S", 379 "ŝ": "s", 380 "Ş": "S", 381 "Ș": "S", 382 "ș": "s", 383 "ş": "s", 384 "Š": "S", 385 "š": "s", 386 "Ţ": "T", 387 "ţ": "t", 388 "ț": "t", 389 "Ț": "T", 390 "Ť": "T", 391 "ť": "t", 392 "Ŧ": "T", 393 "ŧ": "t", 394 "T̆": "T", 395 "t̆": "t", 396 "Ũ": "U", 397 "ũ": "u", 398 "Ū": "U", 399 "ū": "u", 400 "Ŭ": "U", 401 "ŭ": "u", 402 "Ů": "U", 403 "ů": "u", 404 "Ű": "U", 405 "ű": "u", 406 "Ų": "U", 407 "ų": "u", 408 "Ȗ": "U", 409 "ȗ": "u", 410 "V̆": "V", 411 "v̆": "v", 412 "Ŵ": "W", 413 "ŵ": "w", 414 "Ẃ": "W", 415 "ẃ": "w", 416 "X̆": "X", 417 "x̆": "x", 418 "Ŷ": "Y", 419 "ŷ": "y", 420 "Ÿ": "Y", 421 "Y̆": "Y", 422 "y̆": "y", 423 "Ź": "Z", 424 "ź": "z", 425 "Ż": "Z", 426 "ż": "z", 427 "Ž": "Z", 428 "ž": "z", 429 "ſ": "s", 430 "ƒ": "f", 431 "Ơ": "O", 432 "ơ": "o", 433 "Ư": "U", 434 "ư": "u", 435 "Ǎ": "A", 436 "ǎ": "a", 437 "Ǐ": "I", 438 "ǐ": "i", 439 "Ǒ": "O", 440 "ǒ": "o", 441 "Ǔ": "U", 442 "ǔ": "u", 443 "Ǖ": "U", 444 "ǖ": "u", 445 "Ǘ": "U", 446 "ǘ": "u", 447 "Ǚ": "U", 448 "ǚ": "u", 449 "Ǜ": "U", 450 "ǜ": "u", 451 "Ứ": "U", 452 "ứ": "u", 453 "Ṹ": "U", 454 "ṹ": "u", 455 "Ǻ": "A", 456 "ǻ": "a", 457 "Ǽ": "AE", 458 "ǽ": "ae", 459 "Ǿ": "O", 460 "ǿ": "o", 461 "Þ": "TH", 462 "þ": "th", 463 "Ṕ": "P", 464 "ṕ": "p", 465 "Ṥ": "S", 466 "ṥ": "s", 467 "X́": "X", 468 "x́": "x", 469 "Ѓ": "Г", 470 "ѓ": "г", 471 "Ќ": "К", 472 "ќ": "к", 473 "A̋": "A", 474 "a̋": "a", 475 "E̋": "E", 476 "e̋": "e", 477 "I̋": "I", 478 "i̋": "i", 479 "Ǹ": "N", 480 "ǹ": "n", 481 "Ồ": "O", 482 "ồ": "o", 483 "Ṑ": "O", 484 "ṑ": "o", 485 "Ừ": "U", 486 "ừ": "u", 487 "Ẁ": "W", 488 "ẁ": "w", 489 "Ỳ": "Y", 490 "ỳ": "y", 491 "Ȁ": "A", 492 "ȁ": "a", 493 "Ȅ": "E", 494 "ȅ": "e", 495 "Ȉ": "I", 496 "ȉ": "i", 497 "Ȍ": "O", 498 "ȍ": "o", 499 "Ȑ": "R", 500 "ȑ": "r", 501 "Ȕ": "U", 502 "ȕ": "u", 503 "B̌": "B", 504 "b̌": "b", 505 "Č̣": "C", 506 "č̣": "c", 507 "Ê̌": "E", 508 "ê̌": "e", 509 "F̌": "F", 510 "f̌": "f", 511 "Ǧ": "G", 512 "ǧ": "g", 513 "Ȟ": "H", 514 "ȟ": "h", 515 "J̌": "J", 516 "ǰ": "j", 517 "Ǩ": "K", 518 "ǩ": "k", 519 "M̌": "M", 520 "m̌": "m", 521 "P̌": "P", 522 "p̌": "p", 523 "Q̌": "Q", 524 "q̌": "q", 525 "Ř̩": "R", 526 "ř̩": "r", 527 "Ṧ": "S", 528 "ṧ": "s", 529 "V̌": "V", 530 "v̌": "v", 531 "W̌": "W", 532 "w̌": "w", 533 "X̌": "X", 534 "x̌": "x", 535 "Y̌": "Y", 536 "y̌": "y", 537 "A̧": "A", 538 "a̧": "a", 539 "B̧": "B", 540 "b̧": "b", 541 "Ḑ": "D", 542 "ḑ": "d", 543 "Ȩ": "E", 544 "ȩ": "e", 545 "Ɛ̧": "E", 546 "ɛ̧": "e", 547 "Ḩ": "H", 548 "ḩ": "h", 549 "I̧": "I", 550 "i̧": "i", 551 "Ɨ̧": "I", 552 "ɨ̧": "i", 553 "M̧": "M", 554 "m̧": "m", 555 "O̧": "O", 556 "o̧": "o", 557 "Q̧": "Q", 558 "q̧": "q", 559 "U̧": "U", 560 "u̧": "u", 561 "X̧": "X", 562 "x̧": "x", 563 "Z̧": "Z", 564 "z̧": "z", 565 "й":"и", 566 "Й":"И", 567 "ё":"е", 568 "Ё":"Е", 569 }; 570 571 var chars = Object.keys(characterMap).join('|'); 572 var allAccents = new RegExp(chars, 'g'); 573 var firstAccent = new RegExp(chars, ''); 574 575 function matcher(match) { 576 return characterMap[match]; 577 } 578 579 var removeAccents = function(string) { 580 return string.replace(allAccents, matcher); 581 }; 582 583 var hasAccents = function(string) { 584 return !!string.match(firstAccent); 585 }; 586 587 module.exports = removeAccents; 588 module.exports.has = hasAccents; 589 module.exports.remove = removeAccents; 590 591 592 /***/ }) 593 594 /******/ }); 595 /************************************************************************/ 596 /******/ // The module cache 597 /******/ var __webpack_module_cache__ = {}; 598 /******/ 599 /******/ // The require function 600 /******/ function __webpack_require__(moduleId) { 601 /******/ // Check if module is in cache 602 /******/ var cachedModule = __webpack_module_cache__[moduleId]; 603 /******/ if (cachedModule !== undefined) { 604 /******/ return cachedModule.exports; 605 /******/ } 606 /******/ // Create a new module (and put it into the cache) 607 /******/ var module = __webpack_module_cache__[moduleId] = { 608 /******/ // no module.id needed 609 /******/ // no module.loaded needed 610 /******/ exports: {} 611 /******/ }; 612 /******/ 613 /******/ // Execute the module function 614 /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); 615 /******/ 616 /******/ // Return the exports of the module 617 /******/ return module.exports; 618 /******/ } 619 /******/ 620 /************************************************************************/ 621 /******/ /* webpack/runtime/compat get default export */ 622 /******/ (() => { 623 /******/ // getDefaultExport function for compatibility with non-harmony modules 624 /******/ __webpack_require__.n = (module) => { 625 /******/ var getter = module && module.__esModule ? 626 /******/ () => (module['default']) : 627 /******/ () => (module); 628 /******/ __webpack_require__.d(getter, { a: getter }); 629 /******/ return getter; 630 /******/ }; 631 /******/ })(); 632 /******/ 633 /******/ /* webpack/runtime/define property getters */ 634 /******/ (() => { 635 /******/ // define getter functions for harmony exports 636 /******/ __webpack_require__.d = (exports, definition) => { 637 /******/ for(var key in definition) { 638 /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 639 /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 640 /******/ } 641 /******/ } 642 /******/ }; 643 /******/ })(); 644 /******/ 645 /******/ /* webpack/runtime/hasOwnProperty shorthand */ 646 /******/ (() => { 647 /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 648 /******/ })(); 649 /******/ 650 /******/ /* webpack/runtime/make namespace object */ 651 /******/ (() => { 652 /******/ // define __esModule on exports 653 /******/ __webpack_require__.r = (exports) => { 654 /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 655 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 656 /******/ } 657 /******/ Object.defineProperty(exports, '__esModule', { value: true }); 658 /******/ }; 659 /******/ })(); 660 /******/ 661 /************************************************************************/ 662 var __webpack_exports__ = {}; 663 // This entry need to be wrapped in an IIFE because it need to be in strict mode. 664 (() => { 665 "use strict"; 666 // ESM COMPAT FLAG 667 __webpack_require__.r(__webpack_exports__); 668 669 // EXPORTS 670 __webpack_require__.d(__webpack_exports__, { 671 __experimentalGetCoreBlocks: () => (/* binding */ __experimentalGetCoreBlocks), 672 __experimentalRegisterExperimentalCoreBlocks: () => (/* binding */ __experimentalRegisterExperimentalCoreBlocks), 673 privateApis: () => (/* reexport */ privateApis), 674 registerCoreBlocks: () => (/* binding */ registerCoreBlocks) 675 }); 676 677 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/archives/index.js 678 var archives_namespaceObject = {}; 679 __webpack_require__.r(archives_namespaceObject); 680 __webpack_require__.d(archives_namespaceObject, { 681 init: () => (init), 682 metadata: () => (metadata), 683 name: () => (archives_name), 684 settings: () => (settings) 685 }); 686 687 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/avatar/index.js 688 var avatar_namespaceObject = {}; 689 __webpack_require__.r(avatar_namespaceObject); 690 __webpack_require__.d(avatar_namespaceObject, { 691 init: () => (avatar_init), 692 metadata: () => (avatar_metadata), 693 name: () => (avatar_name), 694 settings: () => (avatar_settings) 695 }); 696 697 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/audio/index.js 698 var build_module_audio_namespaceObject = {}; 699 __webpack_require__.r(build_module_audio_namespaceObject); 700 __webpack_require__.d(build_module_audio_namespaceObject, { 701 init: () => (audio_init), 702 metadata: () => (audio_metadata), 703 name: () => (audio_name), 704 settings: () => (audio_settings) 705 }); 706 707 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/button/index.js 708 var build_module_button_namespaceObject = {}; 709 __webpack_require__.r(build_module_button_namespaceObject); 710 __webpack_require__.d(build_module_button_namespaceObject, { 711 init: () => (button_init), 712 metadata: () => (button_metadata), 713 name: () => (button_name), 714 settings: () => (button_settings) 715 }); 716 717 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/buttons/index.js 718 var build_module_buttons_namespaceObject = {}; 719 __webpack_require__.r(build_module_buttons_namespaceObject); 720 __webpack_require__.d(build_module_buttons_namespaceObject, { 721 init: () => (buttons_init), 722 metadata: () => (buttons_metadata), 723 name: () => (buttons_name), 724 settings: () => (buttons_settings) 725 }); 726 727 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/calendar/index.js 728 var build_module_calendar_namespaceObject = {}; 729 __webpack_require__.r(build_module_calendar_namespaceObject); 730 __webpack_require__.d(build_module_calendar_namespaceObject, { 731 init: () => (calendar_init), 732 metadata: () => (calendar_metadata), 733 name: () => (calendar_name), 734 settings: () => (calendar_settings) 735 }); 736 737 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/categories/index.js 738 var categories_namespaceObject = {}; 739 __webpack_require__.r(categories_namespaceObject); 740 __webpack_require__.d(categories_namespaceObject, { 741 init: () => (categories_init), 742 metadata: () => (categories_metadata), 743 name: () => (categories_name), 744 settings: () => (categories_settings) 745 }); 746 747 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/freeform/index.js 748 var freeform_namespaceObject = {}; 749 __webpack_require__.r(freeform_namespaceObject); 750 __webpack_require__.d(freeform_namespaceObject, { 751 init: () => (freeform_init), 752 metadata: () => (freeform_metadata), 753 name: () => (freeform_name), 754 settings: () => (freeform_settings) 755 }); 756 757 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/code/index.js 758 var build_module_code_namespaceObject = {}; 759 __webpack_require__.r(build_module_code_namespaceObject); 760 __webpack_require__.d(build_module_code_namespaceObject, { 761 init: () => (code_init), 762 metadata: () => (code_metadata), 763 name: () => (code_name), 764 settings: () => (code_settings) 765 }); 766 767 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/column/index.js 768 var build_module_column_namespaceObject = {}; 769 __webpack_require__.r(build_module_column_namespaceObject); 770 __webpack_require__.d(build_module_column_namespaceObject, { 771 init: () => (column_init), 772 metadata: () => (column_metadata), 773 name: () => (column_name), 774 settings: () => (column_settings) 775 }); 776 777 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/columns/index.js 778 var build_module_columns_namespaceObject = {}; 779 __webpack_require__.r(build_module_columns_namespaceObject); 780 __webpack_require__.d(build_module_columns_namespaceObject, { 781 init: () => (columns_init), 782 metadata: () => (columns_metadata), 783 name: () => (columns_name), 784 settings: () => (columns_settings) 785 }); 786 787 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/comments/index.js 788 var comments_namespaceObject = {}; 789 __webpack_require__.r(comments_namespaceObject); 790 __webpack_require__.d(comments_namespaceObject, { 791 init: () => (comments_init), 792 metadata: () => (comments_metadata), 793 name: () => (comments_name), 794 settings: () => (comments_settings) 795 }); 796 797 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/comment-author-avatar/index.js 798 var build_module_comment_author_avatar_namespaceObject = {}; 799 __webpack_require__.r(build_module_comment_author_avatar_namespaceObject); 800 __webpack_require__.d(build_module_comment_author_avatar_namespaceObject, { 801 init: () => (comment_author_avatar_init), 802 metadata: () => (comment_author_avatar_metadata), 803 name: () => (comment_author_avatar_name), 804 settings: () => (comment_author_avatar_settings) 805 }); 806 807 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/comment-author-name/index.js 808 var build_module_comment_author_name_namespaceObject = {}; 809 __webpack_require__.r(build_module_comment_author_name_namespaceObject); 810 __webpack_require__.d(build_module_comment_author_name_namespaceObject, { 811 init: () => (comment_author_name_init), 812 metadata: () => (comment_author_name_metadata), 813 name: () => (comment_author_name_name), 814 settings: () => (comment_author_name_settings) 815 }); 816 817 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/comment-content/index.js 818 var build_module_comment_content_namespaceObject = {}; 819 __webpack_require__.r(build_module_comment_content_namespaceObject); 820 __webpack_require__.d(build_module_comment_content_namespaceObject, { 821 init: () => (comment_content_init), 822 metadata: () => (comment_content_metadata), 823 name: () => (comment_content_name), 824 settings: () => (comment_content_settings) 825 }); 826 827 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/comment-date/index.js 828 var comment_date_namespaceObject = {}; 829 __webpack_require__.r(comment_date_namespaceObject); 830 __webpack_require__.d(comment_date_namespaceObject, { 831 init: () => (comment_date_init), 832 metadata: () => (comment_date_metadata), 833 name: () => (comment_date_name), 834 settings: () => (comment_date_settings) 835 }); 836 837 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/comment-edit-link/index.js 838 var build_module_comment_edit_link_namespaceObject = {}; 839 __webpack_require__.r(build_module_comment_edit_link_namespaceObject); 840 __webpack_require__.d(build_module_comment_edit_link_namespaceObject, { 841 init: () => (comment_edit_link_init), 842 metadata: () => (comment_edit_link_metadata), 843 name: () => (comment_edit_link_name), 844 settings: () => (comment_edit_link_settings) 845 }); 846 847 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/comment-reply-link/index.js 848 var build_module_comment_reply_link_namespaceObject = {}; 849 __webpack_require__.r(build_module_comment_reply_link_namespaceObject); 850 __webpack_require__.d(build_module_comment_reply_link_namespaceObject, { 851 init: () => (comment_reply_link_init), 852 metadata: () => (comment_reply_link_metadata), 853 name: () => (comment_reply_link_name), 854 settings: () => (comment_reply_link_settings) 855 }); 856 857 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/comment-template/index.js 858 var comment_template_namespaceObject = {}; 859 __webpack_require__.r(comment_template_namespaceObject); 860 __webpack_require__.d(comment_template_namespaceObject, { 861 init: () => (comment_template_init), 862 metadata: () => (comment_template_metadata), 863 name: () => (comment_template_name), 864 settings: () => (comment_template_settings) 865 }); 866 867 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/comments-pagination-previous/index.js 868 var comments_pagination_previous_namespaceObject = {}; 869 __webpack_require__.r(comments_pagination_previous_namespaceObject); 870 __webpack_require__.d(comments_pagination_previous_namespaceObject, { 871 init: () => (comments_pagination_previous_init), 872 metadata: () => (comments_pagination_previous_metadata), 873 name: () => (comments_pagination_previous_name), 874 settings: () => (comments_pagination_previous_settings) 875 }); 876 877 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/comments-pagination/index.js 878 var comments_pagination_namespaceObject = {}; 879 __webpack_require__.r(comments_pagination_namespaceObject); 880 __webpack_require__.d(comments_pagination_namespaceObject, { 881 init: () => (comments_pagination_init), 882 metadata: () => (comments_pagination_metadata), 883 name: () => (comments_pagination_name), 884 settings: () => (comments_pagination_settings) 885 }); 886 887 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/comments-pagination-next/index.js 888 var comments_pagination_next_namespaceObject = {}; 889 __webpack_require__.r(comments_pagination_next_namespaceObject); 890 __webpack_require__.d(comments_pagination_next_namespaceObject, { 891 init: () => (comments_pagination_next_init), 892 metadata: () => (comments_pagination_next_metadata), 893 name: () => (comments_pagination_next_name), 894 settings: () => (comments_pagination_next_settings) 895 }); 896 897 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/comments-pagination-numbers/index.js 898 var comments_pagination_numbers_namespaceObject = {}; 899 __webpack_require__.r(comments_pagination_numbers_namespaceObject); 900 __webpack_require__.d(comments_pagination_numbers_namespaceObject, { 901 init: () => (comments_pagination_numbers_init), 902 metadata: () => (comments_pagination_numbers_metadata), 903 name: () => (comments_pagination_numbers_name), 904 settings: () => (comments_pagination_numbers_settings) 905 }); 906 907 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/comments-title/index.js 908 var comments_title_namespaceObject = {}; 909 __webpack_require__.r(comments_title_namespaceObject); 910 __webpack_require__.d(comments_title_namespaceObject, { 911 init: () => (comments_title_init), 912 metadata: () => (comments_title_metadata), 913 name: () => (comments_title_name), 914 settings: () => (comments_title_settings) 915 }); 916 917 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/cover/index.js 918 var build_module_cover_namespaceObject = {}; 919 __webpack_require__.r(build_module_cover_namespaceObject); 920 __webpack_require__.d(build_module_cover_namespaceObject, { 921 init: () => (cover_init), 922 metadata: () => (cover_metadata), 923 name: () => (cover_name), 924 settings: () => (cover_settings) 925 }); 926 927 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/details/index.js 928 var build_module_details_namespaceObject = {}; 929 __webpack_require__.r(build_module_details_namespaceObject); 930 __webpack_require__.d(build_module_details_namespaceObject, { 931 init: () => (details_init), 932 metadata: () => (details_metadata), 933 name: () => (details_name), 934 settings: () => (details_settings) 935 }); 936 937 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/embed/index.js 938 var embed_namespaceObject = {}; 939 __webpack_require__.r(embed_namespaceObject); 940 __webpack_require__.d(embed_namespaceObject, { 941 init: () => (embed_init), 942 metadata: () => (embed_metadata), 943 name: () => (embed_name), 944 settings: () => (embed_settings) 945 }); 946 947 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/file/index.js 948 var build_module_file_namespaceObject = {}; 949 __webpack_require__.r(build_module_file_namespaceObject); 950 __webpack_require__.d(build_module_file_namespaceObject, { 951 init: () => (file_init), 952 metadata: () => (file_metadata), 953 name: () => (file_name), 954 settings: () => (file_settings) 955 }); 956 957 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/form/index.js 958 var build_module_form_namespaceObject = {}; 959 __webpack_require__.r(build_module_form_namespaceObject); 960 __webpack_require__.d(build_module_form_namespaceObject, { 961 init: () => (form_init), 962 metadata: () => (form_metadata), 963 name: () => (form_name), 964 settings: () => (form_settings) 965 }); 966 967 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/form-input/index.js 968 var form_input_namespaceObject = {}; 969 __webpack_require__.r(form_input_namespaceObject); 970 __webpack_require__.d(form_input_namespaceObject, { 971 init: () => (form_input_init), 972 metadata: () => (form_input_metadata), 973 name: () => (form_input_name), 974 settings: () => (form_input_settings) 975 }); 976 977 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/form-submit-button/index.js 978 var form_submit_button_namespaceObject = {}; 979 __webpack_require__.r(form_submit_button_namespaceObject); 980 __webpack_require__.d(form_submit_button_namespaceObject, { 981 init: () => (form_submit_button_init), 982 metadata: () => (form_submit_button_metadata), 983 name: () => (form_submit_button_name), 984 settings: () => (form_submit_button_settings) 985 }); 986 987 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/form-submission-notification/index.js 988 var form_submission_notification_namespaceObject = {}; 989 __webpack_require__.r(form_submission_notification_namespaceObject); 990 __webpack_require__.d(form_submission_notification_namespaceObject, { 991 init: () => (form_submission_notification_init), 992 metadata: () => (form_submission_notification_metadata), 993 name: () => (form_submission_notification_name), 994 settings: () => (form_submission_notification_settings) 995 }); 996 997 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/gallery/index.js 998 var build_module_gallery_namespaceObject = {}; 999 __webpack_require__.r(build_module_gallery_namespaceObject); 1000 __webpack_require__.d(build_module_gallery_namespaceObject, { 1001 init: () => (gallery_init), 1002 metadata: () => (gallery_metadata), 1003 name: () => (gallery_name), 1004 settings: () => (gallery_settings) 1005 }); 1006 1007 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/group/index.js 1008 var build_module_group_namespaceObject = {}; 1009 __webpack_require__.r(build_module_group_namespaceObject); 1010 __webpack_require__.d(build_module_group_namespaceObject, { 1011 init: () => (group_init), 1012 metadata: () => (group_metadata), 1013 name: () => (group_name), 1014 settings: () => (group_settings) 1015 }); 1016 1017 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/heading/index.js 1018 var build_module_heading_namespaceObject = {}; 1019 __webpack_require__.r(build_module_heading_namespaceObject); 1020 __webpack_require__.d(build_module_heading_namespaceObject, { 1021 init: () => (heading_init), 1022 metadata: () => (heading_metadata), 1023 name: () => (heading_name), 1024 settings: () => (heading_settings) 1025 }); 1026 1027 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/home-link/index.js 1028 var home_link_namespaceObject = {}; 1029 __webpack_require__.r(home_link_namespaceObject); 1030 __webpack_require__.d(home_link_namespaceObject, { 1031 init: () => (home_link_init), 1032 metadata: () => (home_link_metadata), 1033 name: () => (home_link_name), 1034 settings: () => (home_link_settings) 1035 }); 1036 1037 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/html/index.js 1038 var build_module_html_namespaceObject = {}; 1039 __webpack_require__.r(build_module_html_namespaceObject); 1040 __webpack_require__.d(build_module_html_namespaceObject, { 1041 init: () => (html_init), 1042 metadata: () => (html_metadata), 1043 name: () => (html_name), 1044 settings: () => (html_settings) 1045 }); 1046 1047 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/image/index.js 1048 var build_module_image_namespaceObject = {}; 1049 __webpack_require__.r(build_module_image_namespaceObject); 1050 __webpack_require__.d(build_module_image_namespaceObject, { 1051 init: () => (image_init), 1052 metadata: () => (image_metadata), 1053 name: () => (image_name), 1054 settings: () => (image_settings) 1055 }); 1056 1057 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/latest-comments/index.js 1058 var latest_comments_namespaceObject = {}; 1059 __webpack_require__.r(latest_comments_namespaceObject); 1060 __webpack_require__.d(latest_comments_namespaceObject, { 1061 init: () => (latest_comments_init), 1062 metadata: () => (latest_comments_metadata), 1063 name: () => (latest_comments_name), 1064 settings: () => (latest_comments_settings) 1065 }); 1066 1067 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/latest-posts/index.js 1068 var latest_posts_namespaceObject = {}; 1069 __webpack_require__.r(latest_posts_namespaceObject); 1070 __webpack_require__.d(latest_posts_namespaceObject, { 1071 init: () => (latest_posts_init), 1072 metadata: () => (latest_posts_metadata), 1073 name: () => (latest_posts_name), 1074 settings: () => (latest_posts_settings) 1075 }); 1076 1077 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/list/index.js 1078 var build_module_list_namespaceObject = {}; 1079 __webpack_require__.r(build_module_list_namespaceObject); 1080 __webpack_require__.d(build_module_list_namespaceObject, { 1081 init: () => (list_init), 1082 metadata: () => (list_metadata), 1083 name: () => (list_name), 1084 settings: () => (list_settings) 1085 }); 1086 1087 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/list-item/index.js 1088 var build_module_list_item_namespaceObject = {}; 1089 __webpack_require__.r(build_module_list_item_namespaceObject); 1090 __webpack_require__.d(build_module_list_item_namespaceObject, { 1091 init: () => (list_item_init), 1092 metadata: () => (list_item_metadata), 1093 name: () => (list_item_name), 1094 settings: () => (list_item_settings) 1095 }); 1096 1097 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/loginout/index.js 1098 var loginout_namespaceObject = {}; 1099 __webpack_require__.r(loginout_namespaceObject); 1100 __webpack_require__.d(loginout_namespaceObject, { 1101 init: () => (loginout_init), 1102 metadata: () => (loginout_metadata), 1103 name: () => (loginout_name), 1104 settings: () => (loginout_settings) 1105 }); 1106 1107 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/media-text/index.js 1108 var media_text_namespaceObject = {}; 1109 __webpack_require__.r(media_text_namespaceObject); 1110 __webpack_require__.d(media_text_namespaceObject, { 1111 init: () => (media_text_init), 1112 metadata: () => (media_text_metadata), 1113 name: () => (media_text_name), 1114 settings: () => (media_text_settings) 1115 }); 1116 1117 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/missing/index.js 1118 var missing_namespaceObject = {}; 1119 __webpack_require__.r(missing_namespaceObject); 1120 __webpack_require__.d(missing_namespaceObject, { 1121 init: () => (missing_init), 1122 metadata: () => (missing_metadata), 1123 name: () => (missing_name), 1124 settings: () => (missing_settings) 1125 }); 1126 1127 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/more/index.js 1128 var build_module_more_namespaceObject = {}; 1129 __webpack_require__.r(build_module_more_namespaceObject); 1130 __webpack_require__.d(build_module_more_namespaceObject, { 1131 init: () => (more_init), 1132 metadata: () => (more_metadata), 1133 name: () => (more_name), 1134 settings: () => (more_settings) 1135 }); 1136 1137 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/navigation/index.js 1138 var build_module_navigation_namespaceObject = {}; 1139 __webpack_require__.r(build_module_navigation_namespaceObject); 1140 __webpack_require__.d(build_module_navigation_namespaceObject, { 1141 init: () => (navigation_init), 1142 metadata: () => (navigation_metadata), 1143 name: () => (navigation_name), 1144 settings: () => (navigation_settings) 1145 }); 1146 1147 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/navigation-link/index.js 1148 var navigation_link_namespaceObject = {}; 1149 __webpack_require__.r(navigation_link_namespaceObject); 1150 __webpack_require__.d(navigation_link_namespaceObject, { 1151 init: () => (navigation_link_init), 1152 metadata: () => (navigation_link_metadata), 1153 name: () => (navigation_link_name), 1154 settings: () => (navigation_link_settings) 1155 }); 1156 1157 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/navigation-submenu/index.js 1158 var navigation_submenu_namespaceObject = {}; 1159 __webpack_require__.r(navigation_submenu_namespaceObject); 1160 __webpack_require__.d(navigation_submenu_namespaceObject, { 1161 init: () => (navigation_submenu_init), 1162 metadata: () => (navigation_submenu_metadata), 1163 name: () => (navigation_submenu_name), 1164 settings: () => (navigation_submenu_settings) 1165 }); 1166 1167 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/nextpage/index.js 1168 var nextpage_namespaceObject = {}; 1169 __webpack_require__.r(nextpage_namespaceObject); 1170 __webpack_require__.d(nextpage_namespaceObject, { 1171 init: () => (nextpage_init), 1172 metadata: () => (nextpage_metadata), 1173 name: () => (nextpage_name), 1174 settings: () => (nextpage_settings) 1175 }); 1176 1177 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/pattern/index.js 1178 var pattern_namespaceObject = {}; 1179 __webpack_require__.r(pattern_namespaceObject); 1180 __webpack_require__.d(pattern_namespaceObject, { 1181 init: () => (pattern_init), 1182 metadata: () => (pattern_metadata), 1183 name: () => (pattern_name), 1184 settings: () => (pattern_settings) 1185 }); 1186 1187 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/page-list/index.js 1188 var page_list_namespaceObject = {}; 1189 __webpack_require__.r(page_list_namespaceObject); 1190 __webpack_require__.d(page_list_namespaceObject, { 1191 init: () => (page_list_init), 1192 metadata: () => (page_list_metadata), 1193 name: () => (page_list_name), 1194 settings: () => (page_list_settings) 1195 }); 1196 1197 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/page-list-item/index.js 1198 var page_list_item_namespaceObject = {}; 1199 __webpack_require__.r(page_list_item_namespaceObject); 1200 __webpack_require__.d(page_list_item_namespaceObject, { 1201 init: () => (page_list_item_init), 1202 metadata: () => (page_list_item_metadata), 1203 name: () => (page_list_item_name), 1204 settings: () => (page_list_item_settings) 1205 }); 1206 1207 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/paragraph/index.js 1208 var build_module_paragraph_namespaceObject = {}; 1209 __webpack_require__.r(build_module_paragraph_namespaceObject); 1210 __webpack_require__.d(build_module_paragraph_namespaceObject, { 1211 init: () => (paragraph_init), 1212 metadata: () => (paragraph_metadata), 1213 name: () => (paragraph_name), 1214 settings: () => (paragraph_settings) 1215 }); 1216 1217 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-author/index.js 1218 var build_module_post_author_namespaceObject = {}; 1219 __webpack_require__.r(build_module_post_author_namespaceObject); 1220 __webpack_require__.d(build_module_post_author_namespaceObject, { 1221 init: () => (post_author_init), 1222 metadata: () => (post_author_metadata), 1223 name: () => (post_author_name), 1224 settings: () => (post_author_settings) 1225 }); 1226 1227 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-author-name/index.js 1228 var post_author_name_namespaceObject = {}; 1229 __webpack_require__.r(post_author_name_namespaceObject); 1230 __webpack_require__.d(post_author_name_namespaceObject, { 1231 init: () => (post_author_name_init), 1232 metadata: () => (post_author_name_metadata), 1233 name: () => (post_author_name_name), 1234 settings: () => (post_author_name_settings) 1235 }); 1236 1237 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-author-biography/index.js 1238 var post_author_biography_namespaceObject = {}; 1239 __webpack_require__.r(post_author_biography_namespaceObject); 1240 __webpack_require__.d(post_author_biography_namespaceObject, { 1241 init: () => (post_author_biography_init), 1242 metadata: () => (post_author_biography_metadata), 1243 name: () => (post_author_biography_name), 1244 settings: () => (post_author_biography_settings) 1245 }); 1246 1247 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-comment/index.js 1248 var post_comment_namespaceObject = {}; 1249 __webpack_require__.r(post_comment_namespaceObject); 1250 __webpack_require__.d(post_comment_namespaceObject, { 1251 init: () => (post_comment_init), 1252 metadata: () => (post_comment_metadata), 1253 name: () => (post_comment_name), 1254 settings: () => (post_comment_settings) 1255 }); 1256 1257 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-comments-count/index.js 1258 var build_module_post_comments_count_namespaceObject = {}; 1259 __webpack_require__.r(build_module_post_comments_count_namespaceObject); 1260 __webpack_require__.d(build_module_post_comments_count_namespaceObject, { 1261 init: () => (post_comments_count_init), 1262 metadata: () => (post_comments_count_metadata), 1263 name: () => (post_comments_count_name), 1264 settings: () => (post_comments_count_settings) 1265 }); 1266 1267 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-comments-form/index.js 1268 var build_module_post_comments_form_namespaceObject = {}; 1269 __webpack_require__.r(build_module_post_comments_form_namespaceObject); 1270 __webpack_require__.d(build_module_post_comments_form_namespaceObject, { 1271 init: () => (post_comments_form_init), 1272 metadata: () => (post_comments_form_metadata), 1273 name: () => (post_comments_form_name), 1274 settings: () => (post_comments_form_settings) 1275 }); 1276 1277 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-comments-link/index.js 1278 var post_comments_link_namespaceObject = {}; 1279 __webpack_require__.r(post_comments_link_namespaceObject); 1280 __webpack_require__.d(post_comments_link_namespaceObject, { 1281 init: () => (post_comments_link_init), 1282 metadata: () => (post_comments_link_metadata), 1283 name: () => (post_comments_link_name), 1284 settings: () => (post_comments_link_settings) 1285 }); 1286 1287 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-content/index.js 1288 var build_module_post_content_namespaceObject = {}; 1289 __webpack_require__.r(build_module_post_content_namespaceObject); 1290 __webpack_require__.d(build_module_post_content_namespaceObject, { 1291 init: () => (post_content_init), 1292 metadata: () => (post_content_metadata), 1293 name: () => (post_content_name), 1294 settings: () => (post_content_settings) 1295 }); 1296 1297 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-date/index.js 1298 var build_module_post_date_namespaceObject = {}; 1299 __webpack_require__.r(build_module_post_date_namespaceObject); 1300 __webpack_require__.d(build_module_post_date_namespaceObject, { 1301 init: () => (post_date_init), 1302 metadata: () => (post_date_metadata), 1303 name: () => (post_date_name), 1304 settings: () => (post_date_settings) 1305 }); 1306 1307 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-excerpt/index.js 1308 var build_module_post_excerpt_namespaceObject = {}; 1309 __webpack_require__.r(build_module_post_excerpt_namespaceObject); 1310 __webpack_require__.d(build_module_post_excerpt_namespaceObject, { 1311 init: () => (post_excerpt_init), 1312 metadata: () => (post_excerpt_metadata), 1313 name: () => (post_excerpt_name), 1314 settings: () => (post_excerpt_settings) 1315 }); 1316 1317 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-featured-image/index.js 1318 var build_module_post_featured_image_namespaceObject = {}; 1319 __webpack_require__.r(build_module_post_featured_image_namespaceObject); 1320 __webpack_require__.d(build_module_post_featured_image_namespaceObject, { 1321 init: () => (post_featured_image_init), 1322 metadata: () => (post_featured_image_metadata), 1323 name: () => (post_featured_image_name), 1324 settings: () => (post_featured_image_settings) 1325 }); 1326 1327 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-navigation-link/index.js 1328 var post_navigation_link_namespaceObject = {}; 1329 __webpack_require__.r(post_navigation_link_namespaceObject); 1330 __webpack_require__.d(post_navigation_link_namespaceObject, { 1331 init: () => (post_navigation_link_init), 1332 metadata: () => (post_navigation_link_metadata), 1333 name: () => (post_navigation_link_name), 1334 settings: () => (post_navigation_link_settings) 1335 }); 1336 1337 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-template/index.js 1338 var post_template_namespaceObject = {}; 1339 __webpack_require__.r(post_template_namespaceObject); 1340 __webpack_require__.d(post_template_namespaceObject, { 1341 init: () => (post_template_init), 1342 metadata: () => (post_template_metadata), 1343 name: () => (post_template_name), 1344 settings: () => (post_template_settings) 1345 }); 1346 1347 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-terms/index.js 1348 var build_module_post_terms_namespaceObject = {}; 1349 __webpack_require__.r(build_module_post_terms_namespaceObject); 1350 __webpack_require__.d(build_module_post_terms_namespaceObject, { 1351 init: () => (post_terms_init), 1352 metadata: () => (post_terms_metadata), 1353 name: () => (post_terms_name), 1354 settings: () => (post_terms_settings) 1355 }); 1356 1357 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-time-to-read/index.js 1358 var post_time_to_read_namespaceObject = {}; 1359 __webpack_require__.r(post_time_to_read_namespaceObject); 1360 __webpack_require__.d(post_time_to_read_namespaceObject, { 1361 init: () => (post_time_to_read_init), 1362 metadata: () => (post_time_to_read_metadata), 1363 name: () => (post_time_to_read_name), 1364 settings: () => (post_time_to_read_settings) 1365 }); 1366 1367 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/post-title/index.js 1368 var post_title_namespaceObject = {}; 1369 __webpack_require__.r(post_title_namespaceObject); 1370 __webpack_require__.d(post_title_namespaceObject, { 1371 init: () => (post_title_init), 1372 metadata: () => (post_title_metadata), 1373 name: () => (post_title_name), 1374 settings: () => (post_title_settings) 1375 }); 1376 1377 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/preformatted/index.js 1378 var build_module_preformatted_namespaceObject = {}; 1379 __webpack_require__.r(build_module_preformatted_namespaceObject); 1380 __webpack_require__.d(build_module_preformatted_namespaceObject, { 1381 init: () => (preformatted_init), 1382 metadata: () => (preformatted_metadata), 1383 name: () => (preformatted_name), 1384 settings: () => (preformatted_settings) 1385 }); 1386 1387 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/pullquote/index.js 1388 var build_module_pullquote_namespaceObject = {}; 1389 __webpack_require__.r(build_module_pullquote_namespaceObject); 1390 __webpack_require__.d(build_module_pullquote_namespaceObject, { 1391 init: () => (pullquote_init), 1392 metadata: () => (pullquote_metadata), 1393 name: () => (pullquote_name), 1394 settings: () => (pullquote_settings) 1395 }); 1396 1397 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/query/index.js 1398 var query_namespaceObject = {}; 1399 __webpack_require__.r(query_namespaceObject); 1400 __webpack_require__.d(query_namespaceObject, { 1401 init: () => (query_init), 1402 metadata: () => (query_metadata), 1403 name: () => (query_name), 1404 settings: () => (query_settings) 1405 }); 1406 1407 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/query-no-results/index.js 1408 var query_no_results_namespaceObject = {}; 1409 __webpack_require__.r(query_no_results_namespaceObject); 1410 __webpack_require__.d(query_no_results_namespaceObject, { 1411 init: () => (query_no_results_init), 1412 metadata: () => (query_no_results_metadata), 1413 name: () => (query_no_results_name), 1414 settings: () => (query_no_results_settings) 1415 }); 1416 1417 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/query-pagination/index.js 1418 var build_module_query_pagination_namespaceObject = {}; 1419 __webpack_require__.r(build_module_query_pagination_namespaceObject); 1420 __webpack_require__.d(build_module_query_pagination_namespaceObject, { 1421 init: () => (query_pagination_init), 1422 metadata: () => (query_pagination_metadata), 1423 name: () => (query_pagination_name), 1424 settings: () => (query_pagination_settings) 1425 }); 1426 1427 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/query-pagination-next/index.js 1428 var build_module_query_pagination_next_namespaceObject = {}; 1429 __webpack_require__.r(build_module_query_pagination_next_namespaceObject); 1430 __webpack_require__.d(build_module_query_pagination_next_namespaceObject, { 1431 init: () => (query_pagination_next_init), 1432 metadata: () => (query_pagination_next_metadata), 1433 name: () => (query_pagination_next_name), 1434 settings: () => (query_pagination_next_settings) 1435 }); 1436 1437 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/query-pagination-numbers/index.js 1438 var build_module_query_pagination_numbers_namespaceObject = {}; 1439 __webpack_require__.r(build_module_query_pagination_numbers_namespaceObject); 1440 __webpack_require__.d(build_module_query_pagination_numbers_namespaceObject, { 1441 init: () => (query_pagination_numbers_init), 1442 metadata: () => (query_pagination_numbers_metadata), 1443 name: () => (query_pagination_numbers_name), 1444 settings: () => (query_pagination_numbers_settings) 1445 }); 1446 1447 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/query-pagination-previous/index.js 1448 var build_module_query_pagination_previous_namespaceObject = {}; 1449 __webpack_require__.r(build_module_query_pagination_previous_namespaceObject); 1450 __webpack_require__.d(build_module_query_pagination_previous_namespaceObject, { 1451 init: () => (query_pagination_previous_init), 1452 metadata: () => (query_pagination_previous_metadata), 1453 name: () => (query_pagination_previous_name), 1454 settings: () => (query_pagination_previous_settings) 1455 }); 1456 1457 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/query-title/index.js 1458 var query_title_namespaceObject = {}; 1459 __webpack_require__.r(query_title_namespaceObject); 1460 __webpack_require__.d(query_title_namespaceObject, { 1461 init: () => (query_title_init), 1462 metadata: () => (query_title_metadata), 1463 name: () => (query_title_name), 1464 settings: () => (query_title_settings) 1465 }); 1466 1467 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/quote/index.js 1468 var build_module_quote_namespaceObject = {}; 1469 __webpack_require__.r(build_module_quote_namespaceObject); 1470 __webpack_require__.d(build_module_quote_namespaceObject, { 1471 init: () => (quote_init), 1472 metadata: () => (quote_metadata), 1473 name: () => (quote_name), 1474 settings: () => (quote_settings) 1475 }); 1476 1477 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/block/index.js 1478 var block_namespaceObject = {}; 1479 __webpack_require__.r(block_namespaceObject); 1480 __webpack_require__.d(block_namespaceObject, { 1481 init: () => (block_init), 1482 metadata: () => (block_metadata), 1483 name: () => (block_name), 1484 settings: () => (block_settings) 1485 }); 1486 1487 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/read-more/index.js 1488 var read_more_namespaceObject = {}; 1489 __webpack_require__.r(read_more_namespaceObject); 1490 __webpack_require__.d(read_more_namespaceObject, { 1491 init: () => (read_more_init), 1492 metadata: () => (read_more_metadata), 1493 name: () => (read_more_name), 1494 settings: () => (read_more_settings) 1495 }); 1496 1497 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/rss/index.js 1498 var build_module_rss_namespaceObject = {}; 1499 __webpack_require__.r(build_module_rss_namespaceObject); 1500 __webpack_require__.d(build_module_rss_namespaceObject, { 1501 init: () => (rss_init), 1502 metadata: () => (rss_metadata), 1503 name: () => (rss_name), 1504 settings: () => (rss_settings) 1505 }); 1506 1507 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/search/index.js 1508 var build_module_search_namespaceObject = {}; 1509 __webpack_require__.r(build_module_search_namespaceObject); 1510 __webpack_require__.d(build_module_search_namespaceObject, { 1511 init: () => (search_init), 1512 metadata: () => (search_metadata), 1513 name: () => (search_name), 1514 settings: () => (search_settings) 1515 }); 1516 1517 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/separator/index.js 1518 var build_module_separator_namespaceObject = {}; 1519 __webpack_require__.r(build_module_separator_namespaceObject); 1520 __webpack_require__.d(build_module_separator_namespaceObject, { 1521 init: () => (separator_init), 1522 metadata: () => (separator_metadata), 1523 name: () => (separator_name), 1524 settings: () => (separator_settings) 1525 }); 1526 1527 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/shortcode/index.js 1528 var build_module_shortcode_namespaceObject = {}; 1529 __webpack_require__.r(build_module_shortcode_namespaceObject); 1530 __webpack_require__.d(build_module_shortcode_namespaceObject, { 1531 init: () => (shortcode_init), 1532 metadata: () => (shortcode_metadata), 1533 name: () => (shortcode_name), 1534 settings: () => (shortcode_settings) 1535 }); 1536 1537 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/site-logo/index.js 1538 var build_module_site_logo_namespaceObject = {}; 1539 __webpack_require__.r(build_module_site_logo_namespaceObject); 1540 __webpack_require__.d(build_module_site_logo_namespaceObject, { 1541 init: () => (site_logo_init), 1542 metadata: () => (site_logo_metadata), 1543 name: () => (site_logo_name), 1544 settings: () => (site_logo_settings) 1545 }); 1546 1547 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/site-tagline/index.js 1548 var site_tagline_namespaceObject = {}; 1549 __webpack_require__.r(site_tagline_namespaceObject); 1550 __webpack_require__.d(site_tagline_namespaceObject, { 1551 init: () => (site_tagline_init), 1552 metadata: () => (site_tagline_metadata), 1553 name: () => (site_tagline_name), 1554 settings: () => (site_tagline_settings) 1555 }); 1556 1557 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/site-title/index.js 1558 var site_title_namespaceObject = {}; 1559 __webpack_require__.r(site_title_namespaceObject); 1560 __webpack_require__.d(site_title_namespaceObject, { 1561 init: () => (site_title_init), 1562 metadata: () => (site_title_metadata), 1563 name: () => (site_title_name), 1564 settings: () => (site_title_settings) 1565 }); 1566 1567 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/social-link/index.js 1568 var social_link_namespaceObject = {}; 1569 __webpack_require__.r(social_link_namespaceObject); 1570 __webpack_require__.d(social_link_namespaceObject, { 1571 init: () => (social_link_init), 1572 metadata: () => (social_link_metadata), 1573 name: () => (social_link_name), 1574 settings: () => (social_link_settings) 1575 }); 1576 1577 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/social-links/index.js 1578 var social_links_namespaceObject = {}; 1579 __webpack_require__.r(social_links_namespaceObject); 1580 __webpack_require__.d(social_links_namespaceObject, { 1581 init: () => (social_links_init), 1582 metadata: () => (social_links_metadata), 1583 name: () => (social_links_name), 1584 settings: () => (social_links_settings) 1585 }); 1586 1587 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/spacer/index.js 1588 var spacer_namespaceObject = {}; 1589 __webpack_require__.r(spacer_namespaceObject); 1590 __webpack_require__.d(spacer_namespaceObject, { 1591 init: () => (spacer_init), 1592 metadata: () => (spacer_metadata), 1593 name: () => (spacer_name), 1594 settings: () => (spacer_settings) 1595 }); 1596 1597 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/table/index.js 1598 var build_module_table_namespaceObject = {}; 1599 __webpack_require__.r(build_module_table_namespaceObject); 1600 __webpack_require__.d(build_module_table_namespaceObject, { 1601 init: () => (table_init), 1602 metadata: () => (table_metadata), 1603 name: () => (table_name), 1604 settings: () => (table_settings) 1605 }); 1606 1607 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/table-of-contents/index.js 1608 var build_module_table_of_contents_namespaceObject = {}; 1609 __webpack_require__.r(build_module_table_of_contents_namespaceObject); 1610 __webpack_require__.d(build_module_table_of_contents_namespaceObject, { 1611 init: () => (table_of_contents_init), 1612 metadata: () => (table_of_contents_metadata), 1613 name: () => (table_of_contents_name), 1614 settings: () => (table_of_contents_settings) 1615 }); 1616 1617 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/tag-cloud/index.js 1618 var tag_cloud_namespaceObject = {}; 1619 __webpack_require__.r(tag_cloud_namespaceObject); 1620 __webpack_require__.d(tag_cloud_namespaceObject, { 1621 init: () => (tag_cloud_init), 1622 metadata: () => (tag_cloud_metadata), 1623 name: () => (tag_cloud_name), 1624 settings: () => (tag_cloud_settings) 1625 }); 1626 1627 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/template-part/index.js 1628 var template_part_namespaceObject = {}; 1629 __webpack_require__.r(template_part_namespaceObject); 1630 __webpack_require__.d(template_part_namespaceObject, { 1631 init: () => (template_part_init), 1632 metadata: () => (template_part_metadata), 1633 name: () => (template_part_name), 1634 settings: () => (template_part_settings) 1635 }); 1636 1637 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/term-description/index.js 1638 var build_module_term_description_namespaceObject = {}; 1639 __webpack_require__.r(build_module_term_description_namespaceObject); 1640 __webpack_require__.d(build_module_term_description_namespaceObject, { 1641 init: () => (term_description_init), 1642 metadata: () => (term_description_metadata), 1643 name: () => (term_description_name), 1644 settings: () => (term_description_settings) 1645 }); 1646 1647 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/text-columns/index.js 1648 var text_columns_namespaceObject = {}; 1649 __webpack_require__.r(text_columns_namespaceObject); 1650 __webpack_require__.d(text_columns_namespaceObject, { 1651 init: () => (text_columns_init), 1652 metadata: () => (text_columns_metadata), 1653 name: () => (text_columns_name), 1654 settings: () => (text_columns_settings) 1655 }); 1656 1657 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/verse/index.js 1658 var build_module_verse_namespaceObject = {}; 1659 __webpack_require__.r(build_module_verse_namespaceObject); 1660 __webpack_require__.d(build_module_verse_namespaceObject, { 1661 init: () => (verse_init), 1662 metadata: () => (verse_metadata), 1663 name: () => (verse_name), 1664 settings: () => (verse_settings) 1665 }); 1666 1667 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/video/index.js 1668 var build_module_video_namespaceObject = {}; 1669 __webpack_require__.r(build_module_video_namespaceObject); 1670 __webpack_require__.d(build_module_video_namespaceObject, { 1671 init: () => (video_init), 1672 metadata: () => (video_metadata), 1673 name: () => (video_name), 1674 settings: () => (video_settings) 1675 }); 1676 1677 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-library/build-module/footnotes/index.js 1678 var footnotes_namespaceObject = {}; 1679 __webpack_require__.r(footnotes_namespaceObject); 1680 __webpack_require__.d(footnotes_namespaceObject, { 1681 init: () => (footnotes_init), 1682 metadata: () => (footnotes_metadata), 1683 name: () => (footnotes_name), 1684 settings: () => (footnotes_settings) 1685 }); 1686 1687 ;// CONCATENATED MODULE: external ["wp","blocks"] 1688 const external_wp_blocks_namespaceObject = window["wp"]["blocks"]; 1689 ;// CONCATENATED MODULE: external ["wp","primitives"] 1690 const external_wp_primitives_namespaceObject = window["wp"]["primitives"]; 1691 ;// CONCATENATED MODULE: external "ReactJSXRuntime" 1692 const external_ReactJSXRuntime_namespaceObject = window["ReactJSXRuntime"]; 1693 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/archive.js 1694 /** 1695 * WordPress dependencies 1696 */ 1697 1698 1699 const archive = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 1700 viewBox: "0 0 24 24", 1701 xmlns: "http://www.w3.org/2000/svg", 1702 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 1703 fillRule: "evenodd", 1704 clipRule: "evenodd", 1705 d: "M11.934 7.406a1 1 0 0 0 .914.594H19a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h5.764a.5.5 0 0 1 .447.276l.723 1.63Zm1.064-1.216a.5.5 0 0 0 .462.31H19a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.764a2 2 0 0 1 1.789 1.106l.445 1.084ZM8.5 10.5h7V12h-7v-1.5Zm7 3.5h-7v1.5h7V14Z" 1706 }) 1707 }); 1708 /* harmony default export */ const library_archive = (archive); 1709 1710 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/utils/init-block.js 1711 /** 1712 * WordPress dependencies 1713 */ 1714 1715 1716 /** 1717 * Function to register an individual block. 1718 * 1719 * @param {Object} block The block to be registered. 1720 * 1721 * @return {WPBlockType | undefined} The block, if it has been successfully registered; 1722 * otherwise `undefined`. 1723 */ 1724 function initBlock(block) { 1725 if (!block) { 1726 return; 1727 } 1728 const { 1729 metadata, 1730 settings, 1731 name 1732 } = block; 1733 return (0,external_wp_blocks_namespaceObject.registerBlockType)({ 1734 name, 1735 ...metadata 1736 }, settings); 1737 } 1738 1739 ;// CONCATENATED MODULE: external ["wp","components"] 1740 const external_wp_components_namespaceObject = window["wp"]["components"]; 1741 ;// CONCATENATED MODULE: external ["wp","i18n"] 1742 const external_wp_i18n_namespaceObject = window["wp"]["i18n"]; 1743 ;// CONCATENATED MODULE: external ["wp","blockEditor"] 1744 const external_wp_blockEditor_namespaceObject = window["wp"]["blockEditor"]; 1745 ;// CONCATENATED MODULE: external ["wp","serverSideRender"] 1746 const external_wp_serverSideRender_namespaceObject = window["wp"]["serverSideRender"]; 1747 var external_wp_serverSideRender_default = /*#__PURE__*/__webpack_require__.n(external_wp_serverSideRender_namespaceObject); 1748 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/archives/edit.js 1749 /** 1750 * WordPress dependencies 1751 */ 1752 1753 1754 1755 1756 1757 1758 1759 function ArchivesEdit({ 1760 attributes, 1761 setAttributes 1762 }) { 1763 const { 1764 showLabel, 1765 showPostCounts, 1766 displayAsDropdown, 1767 type 1768 } = attributes; 1769 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 1770 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 1771 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 1772 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 1773 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 1774 __nextHasNoMarginBottom: true, 1775 label: (0,external_wp_i18n_namespaceObject.__)('Display as dropdown'), 1776 checked: displayAsDropdown, 1777 onChange: () => setAttributes({ 1778 displayAsDropdown: !displayAsDropdown 1779 }) 1780 }), displayAsDropdown && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 1781 __nextHasNoMarginBottom: true, 1782 label: (0,external_wp_i18n_namespaceObject.__)('Show label'), 1783 checked: showLabel, 1784 onChange: () => setAttributes({ 1785 showLabel: !showLabel 1786 }) 1787 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 1788 __nextHasNoMarginBottom: true, 1789 label: (0,external_wp_i18n_namespaceObject.__)('Show post counts'), 1790 checked: showPostCounts, 1791 onChange: () => setAttributes({ 1792 showPostCounts: !showPostCounts 1793 }) 1794 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 1795 __next40pxDefaultSize: true, 1796 __nextHasNoMarginBottom: true, 1797 label: (0,external_wp_i18n_namespaceObject.__)('Group by'), 1798 options: [{ 1799 label: (0,external_wp_i18n_namespaceObject.__)('Year'), 1800 value: 'yearly' 1801 }, { 1802 label: (0,external_wp_i18n_namespaceObject.__)('Month'), 1803 value: 'monthly' 1804 }, { 1805 label: (0,external_wp_i18n_namespaceObject.__)('Week'), 1806 value: 'weekly' 1807 }, { 1808 label: (0,external_wp_i18n_namespaceObject.__)('Day'), 1809 value: 'daily' 1810 }], 1811 value: type, 1812 onChange: value => setAttributes({ 1813 type: value 1814 }) 1815 })] 1816 }) 1817 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 1818 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)(), 1819 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, { 1820 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)((external_wp_serverSideRender_default()), { 1821 block: "core/archives", 1822 skipBlockSupportAttributes: true, 1823 attributes: attributes 1824 }) 1825 }) 1826 })] 1827 }); 1828 } 1829 1830 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/archives/index.js 1831 /** 1832 * WordPress dependencies 1833 */ 1834 1835 1836 /** 1837 * Internal dependencies 1838 */ 1839 1840 const metadata = { 1841 $schema: "https://schemas.wp.org/trunk/block.json", 1842 apiVersion: 3, 1843 name: "core/archives", 1844 title: "Archives", 1845 category: "widgets", 1846 description: "Display a date archive of your posts.", 1847 textdomain: "default", 1848 attributes: { 1849 displayAsDropdown: { 1850 type: "boolean", 1851 "default": false 1852 }, 1853 showLabel: { 1854 type: "boolean", 1855 "default": true 1856 }, 1857 showPostCounts: { 1858 type: "boolean", 1859 "default": false 1860 }, 1861 type: { 1862 type: "string", 1863 "default": "monthly" 1864 } 1865 }, 1866 supports: { 1867 align: true, 1868 html: false, 1869 spacing: { 1870 margin: true, 1871 padding: true, 1872 __experimentalDefaultControls: { 1873 margin: false, 1874 padding: false 1875 } 1876 }, 1877 typography: { 1878 fontSize: true, 1879 lineHeight: true, 1880 __experimentalFontFamily: true, 1881 __experimentalFontWeight: true, 1882 __experimentalFontStyle: true, 1883 __experimentalTextTransform: true, 1884 __experimentalTextDecoration: true, 1885 __experimentalLetterSpacing: true, 1886 __experimentalDefaultControls: { 1887 fontSize: true 1888 } 1889 }, 1890 interactivity: { 1891 clientNavigation: true 1892 } 1893 }, 1894 editorStyle: "wp-block-archives-editor" 1895 }; 1896 1897 const { 1898 name: archives_name 1899 } = metadata; 1900 1901 const settings = { 1902 icon: library_archive, 1903 example: {}, 1904 edit: ArchivesEdit 1905 }; 1906 const init = () => initBlock({ 1907 name: archives_name, 1908 metadata, 1909 settings 1910 }); 1911 1912 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/comment-author-avatar.js 1913 /** 1914 * WordPress dependencies 1915 */ 1916 1917 1918 const commentAuthorAvatar = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 1919 xmlns: "http://www.w3.org/2000/svg", 1920 viewBox: "0 0 24 24", 1921 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 1922 fillRule: "evenodd", 1923 d: "M7.25 16.437a6.5 6.5 0 1 1 9.5 0V16A2.75 2.75 0 0 0 14 13.25h-4A2.75 2.75 0 0 0 7.25 16v.437Zm1.5 1.193a6.47 6.47 0 0 0 3.25.87 6.47 6.47 0 0 0 3.25-.87V16c0-.69-.56-1.25-1.25-1.25h-4c-.69 0-1.25.56-1.25 1.25v1.63ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z", 1924 clipRule: "evenodd" 1925 }) 1926 }); 1927 /* harmony default export */ const comment_author_avatar = (commentAuthorAvatar); 1928 1929 ;// CONCATENATED MODULE: ./node_modules/clsx/dist/clsx.mjs 1930 function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f)}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}/* harmony default export */ const dist_clsx = (clsx); 1931 ;// CONCATENATED MODULE: external ["wp","url"] 1932 const external_wp_url_namespaceObject = window["wp"]["url"]; 1933 ;// CONCATENATED MODULE: external ["wp","coreData"] 1934 const external_wp_coreData_namespaceObject = window["wp"]["coreData"]; 1935 ;// CONCATENATED MODULE: external ["wp","data"] 1936 const external_wp_data_namespaceObject = window["wp"]["data"]; 1937 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/avatar/hooks.js 1938 /** 1939 * WordPress dependencies 1940 */ 1941 1942 1943 1944 1945 function getAvatarSizes(sizes) { 1946 const minSize = sizes ? sizes[0] : 24; 1947 const maxSize = sizes ? sizes[sizes.length - 1] : 96; 1948 const maxSizeBuffer = Math.floor(maxSize * 2.5); 1949 return { 1950 minSize, 1951 maxSize: maxSizeBuffer 1952 }; 1953 } 1954 function useDefaultAvatar() { 1955 const { 1956 avatarURL: defaultAvatarUrl 1957 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 1958 const { 1959 getSettings 1960 } = select(external_wp_blockEditor_namespaceObject.store); 1961 const { 1962 __experimentalDiscussionSettings 1963 } = getSettings(); 1964 return __experimentalDiscussionSettings; 1965 }); 1966 return defaultAvatarUrl; 1967 } 1968 function useCommentAvatar({ 1969 commentId 1970 }) { 1971 const [avatars] = (0,external_wp_coreData_namespaceObject.useEntityProp)('root', 'comment', 'author_avatar_urls', commentId); 1972 const [authorName] = (0,external_wp_coreData_namespaceObject.useEntityProp)('root', 'comment', 'author_name', commentId); 1973 const avatarUrls = avatars ? Object.values(avatars) : null; 1974 const sizes = avatars ? Object.keys(avatars) : null; 1975 const { 1976 minSize, 1977 maxSize 1978 } = getAvatarSizes(sizes); 1979 const defaultAvatar = useDefaultAvatar(); 1980 return { 1981 src: avatarUrls ? avatarUrls[avatarUrls.length - 1] : defaultAvatar, 1982 minSize, 1983 maxSize, 1984 alt: authorName ? 1985 // translators: %s: Author name. 1986 (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('%s Avatar'), authorName) : (0,external_wp_i18n_namespaceObject.__)('Default Avatar') 1987 }; 1988 } 1989 function useUserAvatar({ 1990 userId, 1991 postId, 1992 postType 1993 }) { 1994 const { 1995 authorDetails 1996 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 1997 const { 1998 getEditedEntityRecord, 1999 getUser 2000 } = select(external_wp_coreData_namespaceObject.store); 2001 if (userId) { 2002 return { 2003 authorDetails: getUser(userId) 2004 }; 2005 } 2006 const _authorId = getEditedEntityRecord('postType', postType, postId)?.author; 2007 return { 2008 authorDetails: _authorId ? getUser(_authorId) : null 2009 }; 2010 }, [postType, postId, userId]); 2011 const avatarUrls = authorDetails?.avatar_urls ? Object.values(authorDetails.avatar_urls) : null; 2012 const sizes = authorDetails?.avatar_urls ? Object.keys(authorDetails.avatar_urls) : null; 2013 const { 2014 minSize, 2015 maxSize 2016 } = getAvatarSizes(sizes); 2017 const defaultAvatar = useDefaultAvatar(); 2018 return { 2019 src: avatarUrls ? avatarUrls[avatarUrls.length - 1] : defaultAvatar, 2020 minSize, 2021 maxSize, 2022 alt: authorDetails ? 2023 // translators: %s: Author name. 2024 (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('%s Avatar'), authorDetails?.name) : (0,external_wp_i18n_namespaceObject.__)('Default Avatar') 2025 }; 2026 } 2027 2028 ;// CONCATENATED MODULE: external ["wp","element"] 2029 const external_wp_element_namespaceObject = window["wp"]["element"]; 2030 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/avatar/user-control.js 2031 /** 2032 * WordPress dependencies 2033 */ 2034 2035 2036 2037 2038 2039 2040 const AUTHORS_QUERY = { 2041 who: 'authors', 2042 per_page: -1, 2043 _fields: 'id,name', 2044 context: 'view' 2045 }; 2046 function UserControl({ 2047 value, 2048 onChange 2049 }) { 2050 const [filteredAuthorsList, setFilteredAuthorsList] = (0,external_wp_element_namespaceObject.useState)(); 2051 const authorsList = (0,external_wp_data_namespaceObject.useSelect)(select => { 2052 const { 2053 getUsers 2054 } = select(external_wp_coreData_namespaceObject.store); 2055 return getUsers(AUTHORS_QUERY); 2056 }, []); 2057 if (!authorsList) { 2058 return null; 2059 } 2060 const options = authorsList.map(author => { 2061 return { 2062 label: author.name, 2063 value: author.id 2064 }; 2065 }); 2066 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ComboboxControl, { 2067 __next40pxDefaultSize: true, 2068 __nextHasNoMarginBottom: true, 2069 label: (0,external_wp_i18n_namespaceObject.__)('User'), 2070 help: (0,external_wp_i18n_namespaceObject.__)('Select the avatar user to display, if it is blank it will use the post/page author.'), 2071 value: value, 2072 onChange: onChange, 2073 options: filteredAuthorsList || options, 2074 onFilterValueChange: inputValue => setFilteredAuthorsList(options.filter(option => option.label.toLowerCase().startsWith(inputValue.toLowerCase()))) 2075 }); 2076 } 2077 /* harmony default export */ const user_control = (UserControl); 2078 2079 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/avatar/edit.js 2080 /** 2081 * External dependencies 2082 */ 2083 2084 2085 /** 2086 * WordPress dependencies 2087 */ 2088 2089 2090 2091 2092 2093 /** 2094 * Internal dependencies 2095 */ 2096 2097 2098 2099 2100 2101 const AvatarInspectorControls = ({ 2102 setAttributes, 2103 avatar, 2104 attributes, 2105 selectUser 2106 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 2107 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 2108 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 2109 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 2110 __nextHasNoMarginBottom: true, 2111 __next40pxDefaultSize: true, 2112 label: (0,external_wp_i18n_namespaceObject.__)('Image size'), 2113 onChange: newSize => setAttributes({ 2114 size: newSize 2115 }), 2116 min: avatar.minSize, 2117 max: avatar.maxSize, 2118 initialPosition: attributes?.size, 2119 value: attributes?.size 2120 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 2121 __nextHasNoMarginBottom: true, 2122 label: (0,external_wp_i18n_namespaceObject.__)('Link to user profile'), 2123 onChange: () => setAttributes({ 2124 isLink: !attributes.isLink 2125 }), 2126 checked: attributes.isLink 2127 }), attributes.isLink && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 2128 __nextHasNoMarginBottom: true, 2129 label: (0,external_wp_i18n_namespaceObject.__)('Open in new tab'), 2130 onChange: value => setAttributes({ 2131 linkTarget: value ? '_blank' : '_self' 2132 }), 2133 checked: attributes.linkTarget === '_blank' 2134 }), selectUser && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(user_control, { 2135 value: attributes?.userId, 2136 onChange: value => { 2137 setAttributes({ 2138 userId: value 2139 }); 2140 } 2141 })] 2142 }) 2143 }); 2144 const ResizableAvatar = ({ 2145 setAttributes, 2146 attributes, 2147 avatar, 2148 blockProps, 2149 isSelected 2150 }) => { 2151 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseBorderProps)(attributes); 2152 const doubledSizedSrc = (0,external_wp_url_namespaceObject.addQueryArgs)((0,external_wp_url_namespaceObject.removeQueryArgs)(avatar?.src, ['s']), { 2153 s: attributes?.size * 2 2154 }); 2155 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 2156 ...blockProps, 2157 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ResizableBox, { 2158 size: { 2159 width: attributes.size, 2160 height: attributes.size 2161 }, 2162 showHandle: isSelected, 2163 onResizeStop: (event, direction, elt, delta) => { 2164 setAttributes({ 2165 size: parseInt(attributes.size + (delta.height || delta.width), 10) 2166 }); 2167 }, 2168 lockAspectRatio: true, 2169 enable: { 2170 top: false, 2171 right: !(0,external_wp_i18n_namespaceObject.isRTL)(), 2172 bottom: true, 2173 left: (0,external_wp_i18n_namespaceObject.isRTL)() 2174 }, 2175 minWidth: avatar.minSize, 2176 maxWidth: avatar.maxSize, 2177 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 2178 src: doubledSizedSrc, 2179 alt: avatar.alt, 2180 className: dist_clsx('avatar', 'avatar-' + attributes.size, 'photo', 'wp-block-avatar__image', borderProps.className), 2181 style: borderProps.style 2182 }) 2183 }) 2184 }); 2185 }; 2186 const CommentEdit = ({ 2187 attributes, 2188 context, 2189 setAttributes, 2190 isSelected 2191 }) => { 2192 const { 2193 commentId 2194 } = context; 2195 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 2196 const avatar = useCommentAvatar({ 2197 commentId 2198 }); 2199 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 2200 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AvatarInspectorControls, { 2201 avatar: avatar, 2202 setAttributes: setAttributes, 2203 attributes: attributes, 2204 selectUser: false 2205 }), attributes.isLink ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 2206 href: "#avatar-pseudo-link", 2207 className: "wp-block-avatar__link", 2208 onClick: event => event.preventDefault(), 2209 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResizableAvatar, { 2210 attributes: attributes, 2211 avatar: avatar, 2212 blockProps: blockProps, 2213 isSelected: isSelected, 2214 setAttributes: setAttributes 2215 }) 2216 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResizableAvatar, { 2217 attributes: attributes, 2218 avatar: avatar, 2219 blockProps: blockProps, 2220 isSelected: isSelected, 2221 setAttributes: setAttributes 2222 })] 2223 }); 2224 }; 2225 const UserEdit = ({ 2226 attributes, 2227 context, 2228 setAttributes, 2229 isSelected 2230 }) => { 2231 const { 2232 postId, 2233 postType 2234 } = context; 2235 const avatar = useUserAvatar({ 2236 userId: attributes?.userId, 2237 postId, 2238 postType 2239 }); 2240 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 2241 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 2242 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AvatarInspectorControls, { 2243 selectUser: true, 2244 attributes: attributes, 2245 avatar: avatar, 2246 setAttributes: setAttributes 2247 }), attributes.isLink ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 2248 href: "#avatar-pseudo-link", 2249 className: "wp-block-avatar__link", 2250 onClick: event => event.preventDefault(), 2251 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResizableAvatar, { 2252 attributes: attributes, 2253 avatar: avatar, 2254 blockProps: blockProps, 2255 isSelected: isSelected, 2256 setAttributes: setAttributes 2257 }) 2258 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResizableAvatar, { 2259 attributes: attributes, 2260 avatar: avatar, 2261 blockProps: blockProps, 2262 isSelected: isSelected, 2263 setAttributes: setAttributes 2264 })] 2265 }); 2266 }; 2267 function Edit(props) { 2268 // Don't show the Comment Edit controls if we have a comment ID set, or if we're in the Site Editor (where it is `null`). 2269 if (props?.context?.commentId || props?.context?.commentId === null) { 2270 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CommentEdit, { 2271 ...props 2272 }); 2273 } 2274 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(UserEdit, { 2275 ...props 2276 }); 2277 } 2278 2279 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/avatar/index.js 2280 /** 2281 * WordPress dependencies 2282 */ 2283 2284 2285 /** 2286 * Internal dependencies 2287 */ 2288 2289 const avatar_metadata = { 2290 $schema: "https://schemas.wp.org/trunk/block.json", 2291 apiVersion: 3, 2292 name: "core/avatar", 2293 title: "Avatar", 2294 category: "theme", 2295 description: "Add a user\u2019s avatar.", 2296 textdomain: "default", 2297 attributes: { 2298 userId: { 2299 type: "number" 2300 }, 2301 size: { 2302 type: "number", 2303 "default": 96 2304 }, 2305 isLink: { 2306 type: "boolean", 2307 "default": false 2308 }, 2309 linkTarget: { 2310 type: "string", 2311 "default": "_self" 2312 } 2313 }, 2314 usesContext: ["postType", "postId", "commentId"], 2315 supports: { 2316 html: false, 2317 align: true, 2318 alignWide: false, 2319 spacing: { 2320 margin: true, 2321 padding: true, 2322 __experimentalDefaultControls: { 2323 margin: false, 2324 padding: false 2325 } 2326 }, 2327 __experimentalBorder: { 2328 __experimentalSkipSerialization: true, 2329 radius: true, 2330 width: true, 2331 color: true, 2332 style: true, 2333 __experimentalDefaultControls: { 2334 radius: true 2335 } 2336 }, 2337 color: { 2338 text: false, 2339 background: false, 2340 __experimentalDuotone: "img" 2341 }, 2342 interactivity: { 2343 clientNavigation: true 2344 } 2345 }, 2346 selectors: { 2347 border: ".wp-block-avatar img" 2348 }, 2349 editorStyle: "wp-block-avatar-editor", 2350 style: "wp-block-avatar" 2351 }; 2352 2353 const { 2354 name: avatar_name 2355 } = avatar_metadata; 2356 2357 const avatar_settings = { 2358 icon: comment_author_avatar, 2359 edit: Edit 2360 }; 2361 const avatar_init = () => initBlock({ 2362 name: avatar_name, 2363 metadata: avatar_metadata, 2364 settings: avatar_settings 2365 }); 2366 2367 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/audio.js 2368 /** 2369 * WordPress dependencies 2370 */ 2371 2372 2373 const audio = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 2374 viewBox: "0 0 24 24", 2375 xmlns: "http://www.w3.org/2000/svg", 2376 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 2377 d: "M17.7 4.3c-1.2 0-2.8 0-3.8 1-.6.6-.9 1.5-.9 2.6V14c-.6-.6-1.5-1-2.5-1C8.6 13 7 14.6 7 16.5S8.6 20 10.5 20c1.5 0 2.8-1 3.3-2.3.5-.8.7-1.8.7-2.5V7.9c0-.7.2-1.2.5-1.6.6-.6 1.8-.6 2.8-.6h.3V4.3h-.4z" 2378 }) 2379 }); 2380 /* harmony default export */ const library_audio = (audio); 2381 2382 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/audio/deprecated.js 2383 /** 2384 * WordPress dependencies 2385 */ 2386 2387 2388 2389 /* harmony default export */ const deprecated = ([{ 2390 attributes: { 2391 src: { 2392 type: 'string', 2393 source: 'attribute', 2394 selector: 'audio', 2395 attribute: 'src' 2396 }, 2397 caption: { 2398 type: 'string', 2399 source: 'html', 2400 selector: 'figcaption' 2401 }, 2402 id: { 2403 type: 'number' 2404 }, 2405 autoplay: { 2406 type: 'boolean', 2407 source: 'attribute', 2408 selector: 'audio', 2409 attribute: 'autoplay' 2410 }, 2411 loop: { 2412 type: 'boolean', 2413 source: 'attribute', 2414 selector: 'audio', 2415 attribute: 'loop' 2416 }, 2417 preload: { 2418 type: 'string', 2419 source: 'attribute', 2420 selector: 'audio', 2421 attribute: 'preload' 2422 } 2423 }, 2424 supports: { 2425 align: true 2426 }, 2427 save({ 2428 attributes 2429 }) { 2430 const { 2431 autoplay, 2432 caption, 2433 loop, 2434 preload, 2435 src 2436 } = attributes; 2437 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 2438 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("audio", { 2439 controls: "controls", 2440 src: src, 2441 autoPlay: autoplay, 2442 loop: loop, 2443 preload: preload 2444 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 2445 tagName: "figcaption", 2446 value: caption 2447 })] 2448 }); 2449 } 2450 }]); 2451 2452 ;// CONCATENATED MODULE: external ["wp","blob"] 2453 const external_wp_blob_namespaceObject = window["wp"]["blob"]; 2454 ;// CONCATENATED MODULE: external ["wp","notices"] 2455 const external_wp_notices_namespaceObject = window["wp"]["notices"]; 2456 ;// CONCATENATED MODULE: ./node_modules/memize/dist/index.js 2457 /** 2458 * Memize options object. 2459 * 2460 * @typedef MemizeOptions 2461 * 2462 * @property {number} [maxSize] Maximum size of the cache. 2463 */ 2464 2465 /** 2466 * Internal cache entry. 2467 * 2468 * @typedef MemizeCacheNode 2469 * 2470 * @property {?MemizeCacheNode|undefined} [prev] Previous node. 2471 * @property {?MemizeCacheNode|undefined} [next] Next node. 2472 * @property {Array<*>} args Function arguments for cache 2473 * entry. 2474 * @property {*} val Function result. 2475 */ 2476 2477 /** 2478 * Properties of the enhanced function for controlling cache. 2479 * 2480 * @typedef MemizeMemoizedFunction 2481 * 2482 * @property {()=>void} clear Clear the cache. 2483 */ 2484 2485 /** 2486 * Accepts a function to be memoized, and returns a new memoized function, with 2487 * optional options. 2488 * 2489 * @template {(...args: any[]) => any} F 2490 * 2491 * @param {F} fn Function to memoize. 2492 * @param {MemizeOptions} [options] Options object. 2493 * 2494 * @return {((...args: Parameters<F>) => ReturnType<F>) & MemizeMemoizedFunction} Memoized function. 2495 */ 2496 function memize(fn, options) { 2497 var size = 0; 2498 2499 /** @type {?MemizeCacheNode|undefined} */ 2500 var head; 2501 2502 /** @type {?MemizeCacheNode|undefined} */ 2503 var tail; 2504 2505 options = options || {}; 2506 2507 function memoized(/* ...args */) { 2508 var node = head, 2509 len = arguments.length, 2510 args, 2511 i; 2512 2513 searchCache: while (node) { 2514 // Perform a shallow equality test to confirm that whether the node 2515 // under test is a candidate for the arguments passed. Two arrays 2516 // are shallowly equal if their length matches and each entry is 2517 // strictly equal between the two sets. Avoid abstracting to a 2518 // function which could incur an arguments leaking deoptimization. 2519 2520 // Check whether node arguments match arguments length 2521 if (node.args.length !== arguments.length) { 2522 node = node.next; 2523 continue; 2524 } 2525 2526 // Check whether node arguments match arguments values 2527 for (i = 0; i < len; i++) { 2528 if (node.args[i] !== arguments[i]) { 2529 node = node.next; 2530 continue searchCache; 2531 } 2532 } 2533 2534 // At this point we can assume we've found a match 2535 2536 // Surface matched node to head if not already 2537 if (node !== head) { 2538 // As tail, shift to previous. Must only shift if not also 2539 // head, since if both head and tail, there is no previous. 2540 if (node === tail) { 2541 tail = node.prev; 2542 } 2543 2544 // Adjust siblings to point to each other. If node was tail, 2545 // this also handles new tail's empty `next` assignment. 2546 /** @type {MemizeCacheNode} */ (node.prev).next = node.next; 2547 if (node.next) { 2548 node.next.prev = node.prev; 2549 } 2550 2551 node.next = head; 2552 node.prev = null; 2553 /** @type {MemizeCacheNode} */ (head).prev = node; 2554 head = node; 2555 } 2556 2557 // Return immediately 2558 return node.val; 2559 } 2560 2561 // No cached value found. Continue to insertion phase: 2562 2563 // Create a copy of arguments (avoid leaking deoptimization) 2564 args = new Array(len); 2565 for (i = 0; i < len; i++) { 2566 args[i] = arguments[i]; 2567 } 2568 2569 node = { 2570 args: args, 2571 2572 // Generate the result from original function 2573 val: fn.apply(null, args), 2574 }; 2575 2576 // Don't need to check whether node is already head, since it would 2577 // have been returned above already if it was 2578 2579 // Shift existing head down list 2580 if (head) { 2581 head.prev = node; 2582 node.next = head; 2583 } else { 2584 // If no head, follows that there's no tail (at initial or reset) 2585 tail = node; 2586 } 2587 2588 // Trim tail if we're reached max size and are pending cache insertion 2589 if (size === /** @type {MemizeOptions} */ (options).maxSize) { 2590 tail = /** @type {MemizeCacheNode} */ (tail).prev; 2591 /** @type {MemizeCacheNode} */ (tail).next = null; 2592 } else { 2593 size++; 2594 } 2595 2596 head = node; 2597 2598 return node.val; 2599 } 2600 2601 memoized.clear = function () { 2602 head = null; 2603 tail = null; 2604 size = 0; 2605 }; 2606 2607 // Ignore reason: There's not a clear solution to create an intersection of 2608 // the function with additional properties, where the goal is to retain the 2609 // function signature of the incoming argument and add control properties 2610 // on the return value. 2611 2612 // @ts-ignore 2613 return memoized; 2614 } 2615 2616 2617 2618 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/constants.js 2619 const ASPECT_RATIOS = [ 2620 // Common video resolutions. 2621 { 2622 ratio: '2.33', 2623 className: 'wp-embed-aspect-21-9' 2624 }, { 2625 ratio: '2.00', 2626 className: 'wp-embed-aspect-18-9' 2627 }, { 2628 ratio: '1.78', 2629 className: 'wp-embed-aspect-16-9' 2630 }, { 2631 ratio: '1.33', 2632 className: 'wp-embed-aspect-4-3' 2633 }, 2634 // Vertical video and instagram square video support. 2635 { 2636 ratio: '1.00', 2637 className: 'wp-embed-aspect-1-1' 2638 }, { 2639 ratio: '0.56', 2640 className: 'wp-embed-aspect-9-16' 2641 }, { 2642 ratio: '0.50', 2643 className: 'wp-embed-aspect-1-2' 2644 }]; 2645 const WP_EMBED_TYPE = 'wp-embed'; 2646 2647 ;// CONCATENATED MODULE: external ["wp","privateApis"] 2648 const external_wp_privateApis_namespaceObject = window["wp"]["privateApis"]; 2649 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/lock-unlock.js 2650 /** 2651 * WordPress dependencies 2652 */ 2653 2654 const { 2655 lock, 2656 unlock 2657 } = (0,external_wp_privateApis_namespaceObject.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.', '@wordpress/block-library'); 2658 2659 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/util.js 2660 /** 2661 * External dependencies 2662 */ 2663 2664 2665 2666 /** 2667 * WordPress dependencies 2668 */ 2669 2670 2671 2672 2673 /** 2674 * Internal dependencies 2675 */ 2676 const util_metadata = { 2677 $schema: "https://schemas.wp.org/trunk/block.json", 2678 apiVersion: 3, 2679 name: "core/embed", 2680 title: "Embed", 2681 category: "embed", 2682 description: "Add a block that displays content pulled from other sites, like Twitter or YouTube.", 2683 textdomain: "default", 2684 attributes: { 2685 url: { 2686 type: "string", 2687 role: "content" 2688 }, 2689 caption: { 2690 type: "rich-text", 2691 source: "rich-text", 2692 selector: "figcaption", 2693 role: "content" 2694 }, 2695 type: { 2696 type: "string", 2697 role: "content" 2698 }, 2699 providerNameSlug: { 2700 type: "string", 2701 role: "content" 2702 }, 2703 allowResponsive: { 2704 type: "boolean", 2705 "default": true 2706 }, 2707 responsive: { 2708 type: "boolean", 2709 "default": false, 2710 role: "content" 2711 }, 2712 previewable: { 2713 type: "boolean", 2714 "default": true, 2715 role: "content" 2716 } 2717 }, 2718 supports: { 2719 align: true, 2720 spacing: { 2721 margin: true 2722 }, 2723 interactivity: { 2724 clientNavigation: true 2725 } 2726 }, 2727 editorStyle: "wp-block-embed-editor", 2728 style: "wp-block-embed" 2729 }; 2730 2731 2732 2733 const { 2734 name: DEFAULT_EMBED_BLOCK 2735 } = util_metadata; 2736 const { 2737 kebabCase 2738 } = unlock(external_wp_components_namespaceObject.privateApis); 2739 2740 /** @typedef {import('@wordpress/blocks').WPBlockVariation} WPBlockVariation */ 2741 2742 /** 2743 * Returns the embed block's information by matching the provided service provider 2744 * 2745 * @param {string} provider The embed block's provider 2746 * @return {WPBlockVariation} The embed block's information 2747 */ 2748 const getEmbedInfoByProvider = provider => (0,external_wp_blocks_namespaceObject.getBlockVariations)(DEFAULT_EMBED_BLOCK)?.find(({ 2749 name 2750 }) => name === provider); 2751 2752 /** 2753 * Returns true if any of the regular expressions match the URL. 2754 * 2755 * @param {string} url The URL to test. 2756 * @param {Array} patterns The list of regular expressions to test agains. 2757 * @return {boolean} True if any of the regular expressions match the URL. 2758 */ 2759 const matchesPatterns = (url, patterns = []) => patterns.some(pattern => url.match(pattern)); 2760 2761 /** 2762 * Finds the block variation that should be used for the URL, 2763 * based on the provided URL and the variation's patterns. 2764 * 2765 * @param {string} url The URL to test. 2766 * @return {WPBlockVariation} The block variation that should be used for this URL 2767 */ 2768 const findMoreSuitableBlock = url => (0,external_wp_blocks_namespaceObject.getBlockVariations)(DEFAULT_EMBED_BLOCK)?.find(({ 2769 patterns 2770 }) => matchesPatterns(url, patterns)); 2771 const isFromWordPress = html => html && html.includes('class="wp-embedded-content"'); 2772 const getPhotoHtml = photo => { 2773 // If full image url not found use thumbnail. 2774 const imageUrl = photo.url || photo.thumbnail_url; 2775 2776 // 100% width for the preview so it fits nicely into the document, some "thumbnails" are 2777 // actually the full size photo. 2778 const photoPreview = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 2779 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 2780 src: imageUrl, 2781 alt: photo.title, 2782 width: "100%" 2783 }) 2784 }); 2785 return (0,external_wp_element_namespaceObject.renderToString)(photoPreview); 2786 }; 2787 2788 /** 2789 * Creates a more suitable embed block based on the passed in props 2790 * and attributes generated from an embed block's preview. 2791 * 2792 * We require `attributesFromPreview` to be generated from the latest attributes 2793 * and preview, and because of the way the react lifecycle operates, we can't 2794 * guarantee that the attributes contained in the block's props are the latest 2795 * versions, so we require that these are generated separately. 2796 * See `getAttributesFromPreview` in the generated embed edit component. 2797 * 2798 * @param {Object} props The block's props. 2799 * @param {Object} [attributesFromPreview] Attributes generated from the block's most up to date preview. 2800 * @return {Object|undefined} A more suitable embed block if one exists. 2801 */ 2802 const createUpgradedEmbedBlock = (props, attributesFromPreview = {}) => { 2803 const { 2804 preview, 2805 attributes = {} 2806 } = props; 2807 const { 2808 url, 2809 providerNameSlug, 2810 type, 2811 ...restAttributes 2812 } = attributes; 2813 if (!url || !(0,external_wp_blocks_namespaceObject.getBlockType)(DEFAULT_EMBED_BLOCK)) { 2814 return; 2815 } 2816 const matchedBlock = findMoreSuitableBlock(url); 2817 2818 // WordPress blocks can work on multiple sites, and so don't have patterns, 2819 // so if we're in a WordPress block, assume the user has chosen it for a WordPress URL. 2820 const isCurrentBlockWP = providerNameSlug === 'wordpress' || type === WP_EMBED_TYPE; 2821 // If current block is not WordPress and a more suitable block found 2822 // that is different from the current one, create the new matched block. 2823 const shouldCreateNewBlock = !isCurrentBlockWP && matchedBlock && (matchedBlock.attributes.providerNameSlug !== providerNameSlug || !providerNameSlug); 2824 if (shouldCreateNewBlock) { 2825 return (0,external_wp_blocks_namespaceObject.createBlock)(DEFAULT_EMBED_BLOCK, { 2826 url, 2827 ...restAttributes, 2828 ...matchedBlock.attributes 2829 }); 2830 } 2831 const wpVariation = (0,external_wp_blocks_namespaceObject.getBlockVariations)(DEFAULT_EMBED_BLOCK)?.find(({ 2832 name 2833 }) => name === 'wordpress'); 2834 2835 // We can't match the URL for WordPress embeds, we have to check the HTML instead. 2836 if (!wpVariation || !preview || !isFromWordPress(preview.html) || isCurrentBlockWP) { 2837 return; 2838 } 2839 2840 // This is not the WordPress embed block so transform it into one. 2841 return (0,external_wp_blocks_namespaceObject.createBlock)(DEFAULT_EMBED_BLOCK, { 2842 url, 2843 ...wpVariation.attributes, 2844 // By now we have the preview, but when the new block first renders, it 2845 // won't have had all the attributes set, and so won't get the correct 2846 // type and it won't render correctly. So, we pass through the current attributes 2847 // here so that the initial render works when we switch to the WordPress 2848 // block. This only affects the WordPress block because it can't be 2849 // rendered in the usual Sandbox (it has a sandbox of its own) and it 2850 // relies on the preview to set the correct render type. 2851 ...attributesFromPreview 2852 }); 2853 }; 2854 2855 /** 2856 * Determine if the block already has an aspect ratio class applied. 2857 * 2858 * @param {string} existingClassNames Existing block classes. 2859 * @return {boolean} True or false if the classnames contain an aspect ratio class. 2860 */ 2861 const hasAspectRatioClass = existingClassNames => { 2862 if (!existingClassNames) { 2863 return false; 2864 } 2865 return ASPECT_RATIOS.some(({ 2866 className 2867 }) => existingClassNames.includes(className)); 2868 }; 2869 2870 /** 2871 * Removes all previously set aspect ratio related classes and return the rest 2872 * existing class names. 2873 * 2874 * @param {string} existingClassNames Any existing class names. 2875 * @return {string} The class names without any aspect ratio related class. 2876 */ 2877 const removeAspectRatioClasses = existingClassNames => { 2878 if (!existingClassNames) { 2879 // Avoids extraneous work and also, by returning the same value as 2880 // received, ensures the post is not dirtied by a change of the block 2881 // attribute from `undefined` to an empty string. 2882 return existingClassNames; 2883 } 2884 const aspectRatioClassNames = ASPECT_RATIOS.reduce((accumulator, { 2885 className 2886 }) => { 2887 accumulator.push(className); 2888 return accumulator; 2889 }, ['wp-has-aspect-ratio']); 2890 let outputClassNames = existingClassNames; 2891 for (const className of aspectRatioClassNames) { 2892 outputClassNames = outputClassNames.replace(className, ''); 2893 } 2894 return outputClassNames.trim(); 2895 }; 2896 2897 /** 2898 * Returns class names with any relevant responsive aspect ratio names. 2899 * 2900 * @param {string} html The preview HTML that possibly contains an iframe with width and height set. 2901 * @param {string} existingClassNames Any existing class names. 2902 * @param {boolean} allowResponsive If the responsive class names should be added, or removed. 2903 * @return {string} Deduped class names. 2904 */ 2905 function getClassNames(html, existingClassNames, allowResponsive = true) { 2906 if (!allowResponsive) { 2907 return removeAspectRatioClasses(existingClassNames); 2908 } 2909 const previewDocument = document.implementation.createHTMLDocument(''); 2910 previewDocument.body.innerHTML = html; 2911 const iframe = previewDocument.body.querySelector('iframe'); 2912 2913 // If we have a fixed aspect iframe, and it's a responsive embed block. 2914 if (iframe && iframe.height && iframe.width) { 2915 const aspectRatio = (iframe.width / iframe.height).toFixed(2); 2916 // Given the actual aspect ratio, find the widest ratio to support it. 2917 for (let ratioIndex = 0; ratioIndex < ASPECT_RATIOS.length; ratioIndex++) { 2918 const potentialRatio = ASPECT_RATIOS[ratioIndex]; 2919 if (aspectRatio >= potentialRatio.ratio) { 2920 // Evaluate the difference between actual aspect ratio and closest match. 2921 // If the difference is too big, do not scale the embed according to aspect ratio. 2922 const ratioDiff = aspectRatio - potentialRatio.ratio; 2923 if (ratioDiff > 0.1) { 2924 // No close aspect ratio match found. 2925 return removeAspectRatioClasses(existingClassNames); 2926 } 2927 // Close aspect ratio match found. 2928 return dist_clsx(removeAspectRatioClasses(existingClassNames), potentialRatio.className, 'wp-has-aspect-ratio'); 2929 } 2930 } 2931 } 2932 return existingClassNames; 2933 } 2934 2935 /** 2936 * Fallback behaviour for unembeddable URLs. 2937 * Creates a paragraph block containing a link to the URL, and calls `onReplace`. 2938 * 2939 * @param {string} url The URL that could not be embedded. 2940 * @param {Function} onReplace Function to call with the created fallback block. 2941 */ 2942 function fallback(url, onReplace) { 2943 const link = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 2944 href: url, 2945 children: url 2946 }); 2947 onReplace((0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 2948 content: (0,external_wp_element_namespaceObject.renderToString)(link) 2949 })); 2950 } 2951 2952 /*** 2953 * Gets block attributes based on the preview and responsive state. 2954 * 2955 * @param {Object} preview The preview data. 2956 * @param {string} title The block's title, e.g. Twitter. 2957 * @param {Object} currentClassNames The block's current class names. 2958 * @param {boolean} isResponsive Boolean indicating if the block supports responsive content. 2959 * @param {boolean} allowResponsive Apply responsive classes to fixed size content. 2960 * @return {Object} Attributes and values. 2961 */ 2962 const getAttributesFromPreview = memize((preview, title, currentClassNames, isResponsive, allowResponsive = true) => { 2963 if (!preview) { 2964 return {}; 2965 } 2966 const attributes = {}; 2967 // Some plugins only return HTML with no type info, so default this to 'rich'. 2968 let { 2969 type = 'rich' 2970 } = preview; 2971 // If we got a provider name from the API, use it for the slug, otherwise we use the title, 2972 // because not all embed code gives us a provider name. 2973 const { 2974 html, 2975 provider_name: providerName 2976 } = preview; 2977 const providerNameSlug = kebabCase((providerName || title).toLowerCase()); 2978 if (isFromWordPress(html)) { 2979 type = WP_EMBED_TYPE; 2980 } 2981 if (html || 'photo' === type) { 2982 attributes.type = type; 2983 attributes.providerNameSlug = providerNameSlug; 2984 } 2985 2986 // Aspect ratio classes are removed when the embed URL is updated. 2987 // If the embed already has an aspect ratio class, that means the URL has not changed. 2988 // Which also means no need to regenerate it with getClassNames. 2989 if (hasAspectRatioClass(currentClassNames)) { 2990 return attributes; 2991 } 2992 attributes.className = getClassNames(html, currentClassNames, isResponsive && allowResponsive); 2993 return attributes; 2994 }); 2995 2996 /** 2997 * Returns the attributes derived from the preview, merged with the current attributes. 2998 * 2999 * @param {Object} currentAttributes The current attributes of the block. 3000 * @param {Object} preview The preview data. 3001 * @param {string} title The block's title, e.g. Twitter. 3002 * @param {boolean} isResponsive Boolean indicating if the block supports responsive content. 3003 * @return {Object} Merged attributes. 3004 */ 3005 const getMergedAttributesWithPreview = (currentAttributes, preview, title, isResponsive) => { 3006 const { 3007 allowResponsive, 3008 className 3009 } = currentAttributes; 3010 return { 3011 ...currentAttributes, 3012 ...getAttributesFromPreview(preview, title, className, isResponsive, allowResponsive) 3013 }; 3014 }; 3015 3016 ;// CONCATENATED MODULE: external ["wp","compose"] 3017 const external_wp_compose_namespaceObject = window["wp"]["compose"]; 3018 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/utils/hooks.js 3019 /** 3020 * WordPress dependencies 3021 */ 3022 3023 3024 3025 3026 3027 3028 3029 /** 3030 * Returns whether the current user can edit the given entity. 3031 * 3032 * @param {string} kind Entity kind. 3033 * @param {string} name Entity name. 3034 * @param {string} recordId Record's id. 3035 */ 3036 function useCanEditEntity(kind, name, recordId) { 3037 return (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).canUser('update', { 3038 kind, 3039 name, 3040 id: recordId 3041 }), [kind, name, recordId]); 3042 } 3043 3044 /** 3045 * Handles uploading a media file from a blob URL on mount. 3046 * 3047 * @param {Object} args Upload media arguments. 3048 * @param {string} args.url Blob URL. 3049 * @param {?Array} args.allowedTypes Array of allowed media types. 3050 * @param {Function} args.onChange Function called when the media is uploaded. 3051 * @param {Function} args.onError Function called when an error happens. 3052 */ 3053 function useUploadMediaFromBlobURL(args = {}) { 3054 const latestArgsRef = (0,external_wp_element_namespaceObject.useRef)(args); 3055 const hasUploadStartedRef = (0,external_wp_element_namespaceObject.useRef)(false); 3056 const { 3057 getSettings 3058 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 3059 (0,external_wp_element_namespaceObject.useLayoutEffect)(() => { 3060 latestArgsRef.current = args; 3061 }); 3062 (0,external_wp_element_namespaceObject.useEffect)(() => { 3063 // Uploading is a special effect that can't be canceled via the cleanup method. 3064 // The extra check avoids duplicate uploads in development mode (React.StrictMode). 3065 if (hasUploadStartedRef.current) { 3066 return; 3067 } 3068 if (!latestArgsRef.current.url || !(0,external_wp_blob_namespaceObject.isBlobURL)(latestArgsRef.current.url)) { 3069 return; 3070 } 3071 const file = (0,external_wp_blob_namespaceObject.getBlobByURL)(latestArgsRef.current.url); 3072 if (!file) { 3073 return; 3074 } 3075 const { 3076 url, 3077 allowedTypes, 3078 onChange, 3079 onError 3080 } = latestArgsRef.current; 3081 const { 3082 mediaUpload 3083 } = getSettings(); 3084 hasUploadStartedRef.current = true; 3085 mediaUpload({ 3086 filesList: [file], 3087 allowedTypes, 3088 onFileChange: ([media]) => { 3089 if ((0,external_wp_blob_namespaceObject.isBlobURL)(media?.url)) { 3090 return; 3091 } 3092 (0,external_wp_blob_namespaceObject.revokeBlobURL)(url); 3093 onChange(media); 3094 hasUploadStartedRef.current = false; 3095 }, 3096 onError: message => { 3097 (0,external_wp_blob_namespaceObject.revokeBlobURL)(url); 3098 onError(message); 3099 hasUploadStartedRef.current = false; 3100 } 3101 }); 3102 }, [getSettings]); 3103 } 3104 function useToolsPanelDropdownMenuProps() { 3105 const isMobile = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium', '<'); 3106 return !isMobile ? { 3107 popoverProps: { 3108 placement: 'left-start', 3109 // For non-mobile, inner sidebar width (248px) - button width (24px) - border (1px) + padding (16px) + spacing (20px) 3110 offset: 259 3111 } 3112 } : {}; 3113 } 3114 3115 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/caption.js 3116 /** 3117 * WordPress dependencies 3118 */ 3119 3120 3121 const caption = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 3122 viewBox: "0 0 24 24", 3123 xmlns: "http://www.w3.org/2000/svg", 3124 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 3125 fillRule: "evenodd", 3126 clipRule: "evenodd", 3127 d: "M6 5.5h12a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5ZM4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6Zm4 10h2v-1.5H8V16Zm5 0h-2v-1.5h2V16Zm1 0h2v-1.5h-2V16Z" 3128 }) 3129 }); 3130 /* harmony default export */ const library_caption = (caption); 3131 3132 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/utils/caption.js 3133 /** 3134 * External dependencies 3135 */ 3136 3137 3138 /** 3139 * WordPress dependencies 3140 */ 3141 3142 3143 3144 3145 3146 3147 3148 3149 /** 3150 * Internal dependencies 3151 */ 3152 3153 3154 3155 3156 function Caption({ 3157 attributeKey = 'caption', 3158 attributes, 3159 setAttributes, 3160 isSelected, 3161 insertBlocksAfter, 3162 placeholder = (0,external_wp_i18n_namespaceObject.__)('Add caption'), 3163 label = (0,external_wp_i18n_namespaceObject.__)('Caption text'), 3164 showToolbarButton = true, 3165 excludeElementClassName, 3166 className, 3167 readOnly, 3168 tagName = 'figcaption', 3169 addLabel = (0,external_wp_i18n_namespaceObject.__)('Add caption'), 3170 removeLabel = (0,external_wp_i18n_namespaceObject.__)('Remove caption'), 3171 icon = library_caption, 3172 ...props 3173 }) { 3174 const caption = attributes[attributeKey]; 3175 const prevCaption = (0,external_wp_compose_namespaceObject.usePrevious)(caption); 3176 const { 3177 PrivateRichText: RichText 3178 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 3179 const isCaptionEmpty = RichText.isEmpty(caption); 3180 const isPrevCaptionEmpty = RichText.isEmpty(prevCaption); 3181 const [showCaption, setShowCaption] = (0,external_wp_element_namespaceObject.useState)(!isCaptionEmpty); 3182 3183 // We need to show the caption when changes come from 3184 // history navigation(undo/redo). 3185 (0,external_wp_element_namespaceObject.useEffect)(() => { 3186 if (!isCaptionEmpty && isPrevCaptionEmpty) { 3187 setShowCaption(true); 3188 } 3189 }, [isCaptionEmpty, isPrevCaptionEmpty]); 3190 (0,external_wp_element_namespaceObject.useEffect)(() => { 3191 if (!isSelected && isCaptionEmpty) { 3192 setShowCaption(false); 3193 } 3194 }, [isSelected, isCaptionEmpty]); 3195 3196 // Focus the caption when we click to add one. 3197 const ref = (0,external_wp_element_namespaceObject.useCallback)(node => { 3198 if (node && isCaptionEmpty) { 3199 node.focus(); 3200 } 3201 }, [isCaptionEmpty]); 3202 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 3203 children: [showToolbarButton && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 3204 group: "block", 3205 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 3206 onClick: () => { 3207 setShowCaption(!showCaption); 3208 if (showCaption && caption) { 3209 setAttributes({ 3210 [attributeKey]: undefined 3211 }); 3212 } 3213 }, 3214 icon: icon, 3215 isPressed: showCaption, 3216 label: showCaption ? removeLabel : addLabel 3217 }) 3218 }), showCaption && (!RichText.isEmpty(caption) || isSelected) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RichText, { 3219 identifier: attributeKey, 3220 tagName: tagName, 3221 className: dist_clsx(className, excludeElementClassName ? '' : (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('caption')), 3222 ref: ref, 3223 "aria-label": label, 3224 placeholder: placeholder, 3225 value: caption, 3226 onChange: value => setAttributes({ 3227 [attributeKey]: value 3228 }), 3229 inlineToolbar: true, 3230 __unstableOnSplitAtEnd: () => insertBlocksAfter((0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getDefaultBlockName)())), 3231 readOnly: readOnly, 3232 ...props 3233 })] 3234 }); 3235 } 3236 3237 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/audio/edit.js 3238 /** 3239 * External dependencies 3240 */ 3241 3242 3243 /** 3244 * WordPress dependencies 3245 */ 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 /** 3256 * Internal dependencies 3257 */ 3258 3259 3260 3261 3262 3263 3264 const ALLOWED_MEDIA_TYPES = ['audio']; 3265 function AudioEdit({ 3266 attributes, 3267 className, 3268 setAttributes, 3269 onReplace, 3270 isSelected: isSingleSelected, 3271 insertBlocksAfter 3272 }) { 3273 const { 3274 id, 3275 autoplay, 3276 loop, 3277 preload, 3278 src 3279 } = attributes; 3280 const [temporaryURL, setTemporaryURL] = (0,external_wp_element_namespaceObject.useState)(attributes.blob); 3281 useUploadMediaFromBlobURL({ 3282 url: temporaryURL, 3283 allowedTypes: ALLOWED_MEDIA_TYPES, 3284 onChange: onSelectAudio, 3285 onError: onUploadError 3286 }); 3287 function toggleAttribute(attribute) { 3288 return newValue => { 3289 setAttributes({ 3290 [attribute]: newValue 3291 }); 3292 }; 3293 } 3294 function onSelectURL(newSrc) { 3295 // Set the block's src from the edit component's state, and switch off 3296 // the editing UI. 3297 if (newSrc !== src) { 3298 // Check if there's an embed block that handles this URL. 3299 const embedBlock = createUpgradedEmbedBlock({ 3300 attributes: { 3301 url: newSrc 3302 } 3303 }); 3304 if (undefined !== embedBlock && onReplace) { 3305 onReplace(embedBlock); 3306 return; 3307 } 3308 setAttributes({ 3309 src: newSrc, 3310 id: undefined, 3311 blob: undefined 3312 }); 3313 setTemporaryURL(); 3314 } 3315 } 3316 const { 3317 createErrorNotice 3318 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 3319 function onUploadError(message) { 3320 createErrorNotice(message, { 3321 type: 'snackbar' 3322 }); 3323 } 3324 function getAutoplayHelp(checked) { 3325 return checked ? (0,external_wp_i18n_namespaceObject.__)('Autoplay may cause usability issues for some users.') : null; 3326 } 3327 function onSelectAudio(media) { 3328 if (!media || !media.url) { 3329 // In this case there was an error and we should continue in the editing state 3330 // previous attributes should be removed because they may be temporary blob urls. 3331 setAttributes({ 3332 src: undefined, 3333 id: undefined, 3334 caption: undefined, 3335 blob: undefined 3336 }); 3337 setTemporaryURL(); 3338 return; 3339 } 3340 if ((0,external_wp_blob_namespaceObject.isBlobURL)(media.url)) { 3341 setTemporaryURL(media.url); 3342 return; 3343 } 3344 3345 // Sets the block's attribute and updates the edit component from the 3346 // selected media, then switches off the editing UI. 3347 setAttributes({ 3348 blob: undefined, 3349 src: media.url, 3350 id: media.id, 3351 caption: media.caption 3352 }); 3353 setTemporaryURL(); 3354 } 3355 const classes = dist_clsx(className, { 3356 'is-transient': !!temporaryURL 3357 }); 3358 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 3359 className: classes 3360 }); 3361 if (!src && !temporaryURL) { 3362 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 3363 ...blockProps, 3364 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaPlaceholder, { 3365 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 3366 icon: library_audio 3367 }), 3368 onSelect: onSelectAudio, 3369 onSelectURL: onSelectURL, 3370 accept: "audio/*", 3371 allowedTypes: ALLOWED_MEDIA_TYPES, 3372 value: attributes, 3373 onError: onUploadError 3374 }) 3375 }); 3376 } 3377 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 3378 children: [isSingleSelected && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 3379 group: "other", 3380 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaReplaceFlow, { 3381 mediaId: id, 3382 mediaURL: src, 3383 allowedTypes: ALLOWED_MEDIA_TYPES, 3384 accept: "audio/*", 3385 onSelect: onSelectAudio, 3386 onSelectURL: onSelectURL, 3387 onError: onUploadError, 3388 onReset: () => onSelectAudio(undefined) 3389 }) 3390 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 3391 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 3392 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 3393 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 3394 __nextHasNoMarginBottom: true, 3395 label: (0,external_wp_i18n_namespaceObject.__)('Autoplay'), 3396 onChange: toggleAttribute('autoplay'), 3397 checked: autoplay, 3398 help: getAutoplayHelp 3399 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 3400 __nextHasNoMarginBottom: true, 3401 label: (0,external_wp_i18n_namespaceObject.__)('Loop'), 3402 onChange: toggleAttribute('loop'), 3403 checked: loop 3404 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 3405 __next40pxDefaultSize: true, 3406 __nextHasNoMarginBottom: true, 3407 label: (0,external_wp_i18n_namespaceObject._x)('Preload', 'noun; Audio block parameter'), 3408 value: preload || '' 3409 // `undefined` is required for the preload attribute to be unset. 3410 , 3411 onChange: value => setAttributes({ 3412 preload: value || undefined 3413 }), 3414 options: [{ 3415 value: '', 3416 label: (0,external_wp_i18n_namespaceObject.__)('Browser default') 3417 }, { 3418 value: 'auto', 3419 label: (0,external_wp_i18n_namespaceObject.__)('Auto') 3420 }, { 3421 value: 'metadata', 3422 label: (0,external_wp_i18n_namespaceObject.__)('Metadata') 3423 }, { 3424 value: 'none', 3425 label: (0,external_wp_i18n_namespaceObject._x)('None', 'Preload value') 3426 }] 3427 })] 3428 }) 3429 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 3430 ...blockProps, 3431 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, { 3432 isDisabled: !isSingleSelected, 3433 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("audio", { 3434 controls: "controls", 3435 src: src !== null && src !== void 0 ? src : temporaryURL 3436 }) 3437 }), !!temporaryURL && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Caption, { 3438 attributes: attributes, 3439 setAttributes: setAttributes, 3440 isSelected: isSingleSelected, 3441 insertBlocksAfter: insertBlocksAfter, 3442 label: (0,external_wp_i18n_namespaceObject.__)('Audio caption text'), 3443 showToolbarButton: isSingleSelected 3444 })] 3445 })] 3446 }); 3447 } 3448 /* harmony default export */ const edit = (AudioEdit); 3449 3450 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/audio/save.js 3451 /** 3452 * WordPress dependencies 3453 */ 3454 3455 3456 3457 function save({ 3458 attributes 3459 }) { 3460 const { 3461 autoplay, 3462 caption, 3463 loop, 3464 preload, 3465 src 3466 } = attributes; 3467 return src && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 3468 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 3469 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("audio", { 3470 controls: "controls", 3471 src: src, 3472 autoPlay: autoplay, 3473 loop: loop, 3474 preload: preload 3475 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 3476 tagName: "figcaption", 3477 value: caption, 3478 className: (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('caption') 3479 })] 3480 }); 3481 } 3482 3483 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/audio/transforms.js 3484 /** 3485 * WordPress dependencies 3486 */ 3487 3488 3489 const transforms = { 3490 from: [{ 3491 type: 'files', 3492 isMatch(files) { 3493 return files.length === 1 && files[0].type.indexOf('audio/') === 0; 3494 }, 3495 transform(files) { 3496 const file = files[0]; 3497 // We don't need to upload the media directly here 3498 // It's already done as part of the `componentDidMount` 3499 // in the audio block. 3500 const block = (0,external_wp_blocks_namespaceObject.createBlock)('core/audio', { 3501 blob: (0,external_wp_blob_namespaceObject.createBlobURL)(file) 3502 }); 3503 return block; 3504 } 3505 }, { 3506 type: 'shortcode', 3507 tag: 'audio', 3508 attributes: { 3509 src: { 3510 type: 'string', 3511 shortcode: ({ 3512 named: { 3513 src, 3514 mp3, 3515 m4a, 3516 ogg, 3517 wav, 3518 wma 3519 } 3520 }) => { 3521 return src || mp3 || m4a || ogg || wav || wma; 3522 } 3523 }, 3524 loop: { 3525 type: 'string', 3526 shortcode: ({ 3527 named: { 3528 loop 3529 } 3530 }) => { 3531 return loop; 3532 } 3533 }, 3534 autoplay: { 3535 type: 'string', 3536 shortcode: ({ 3537 named: { 3538 autoplay 3539 } 3540 }) => { 3541 return autoplay; 3542 } 3543 }, 3544 preload: { 3545 type: 'string', 3546 shortcode: ({ 3547 named: { 3548 preload 3549 } 3550 }) => { 3551 return preload; 3552 } 3553 } 3554 } 3555 }] 3556 }; 3557 /* harmony default export */ const audio_transforms = (transforms); 3558 3559 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/audio/index.js 3560 /** 3561 * WordPress dependencies 3562 */ 3563 3564 3565 /** 3566 * Internal dependencies 3567 */ 3568 3569 3570 3571 const audio_metadata = { 3572 $schema: "https://schemas.wp.org/trunk/block.json", 3573 apiVersion: 3, 3574 name: "core/audio", 3575 title: "Audio", 3576 category: "media", 3577 description: "Embed a simple audio player.", 3578 keywords: ["music", "sound", "podcast", "recording"], 3579 textdomain: "default", 3580 attributes: { 3581 blob: { 3582 type: "string", 3583 role: "local" 3584 }, 3585 src: { 3586 type: "string", 3587 source: "attribute", 3588 selector: "audio", 3589 attribute: "src", 3590 role: "content" 3591 }, 3592 caption: { 3593 type: "rich-text", 3594 source: "rich-text", 3595 selector: "figcaption", 3596 role: "content" 3597 }, 3598 id: { 3599 type: "number", 3600 role: "content" 3601 }, 3602 autoplay: { 3603 type: "boolean", 3604 source: "attribute", 3605 selector: "audio", 3606 attribute: "autoplay" 3607 }, 3608 loop: { 3609 type: "boolean", 3610 source: "attribute", 3611 selector: "audio", 3612 attribute: "loop" 3613 }, 3614 preload: { 3615 type: "string", 3616 source: "attribute", 3617 selector: "audio", 3618 attribute: "preload" 3619 } 3620 }, 3621 supports: { 3622 anchor: true, 3623 align: true, 3624 spacing: { 3625 margin: true, 3626 padding: true, 3627 __experimentalDefaultControls: { 3628 margin: false, 3629 padding: false 3630 } 3631 }, 3632 interactivity: { 3633 clientNavigation: true 3634 } 3635 }, 3636 editorStyle: "wp-block-audio-editor", 3637 style: "wp-block-audio" 3638 }; 3639 3640 3641 const { 3642 name: audio_name 3643 } = audio_metadata; 3644 3645 const audio_settings = { 3646 icon: library_audio, 3647 example: { 3648 attributes: { 3649 src: 'https://upload.wikimedia.org/wikipedia/commons/d/dd/Armstrong_Small_Step.ogg' 3650 }, 3651 viewportWidth: 350 3652 }, 3653 transforms: audio_transforms, 3654 deprecated: deprecated, 3655 edit: edit, 3656 save: save 3657 }; 3658 const audio_init = () => initBlock({ 3659 name: audio_name, 3660 metadata: audio_metadata, 3661 settings: audio_settings 3662 }); 3663 3664 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/button.js 3665 /** 3666 * WordPress dependencies 3667 */ 3668 3669 3670 const button_button = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 3671 viewBox: "0 0 24 24", 3672 xmlns: "http://www.w3.org/2000/svg", 3673 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 3674 d: "M8 12.5h8V11H8v1.5Z M19 6.5H5a2 2 0 0 0-2 2V15a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8.5a2 2 0 0 0-2-2ZM5 8h14a.5.5 0 0 1 .5.5V15a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V8.5A.5.5 0 0 1 5 8Z" 3675 }) 3676 }); 3677 /* harmony default export */ const library_button = (button_button); 3678 3679 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/utils/migrate-font-family.js 3680 /** 3681 * WordPress dependencies 3682 */ 3683 3684 3685 /** 3686 * Internal dependencies 3687 */ 3688 3689 const { 3690 cleanEmptyObject 3691 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 3692 3693 /** 3694 * Migrates the current style.typography.fontFamily attribute, 3695 * whose value was "var:preset|font-family|helvetica-arial", 3696 * to the style.fontFamily attribute, whose value will be "helvetica-arial". 3697 * 3698 * @param {Object} attributes The current attributes 3699 * @return {Object} The updated attributes. 3700 */ 3701 /* harmony default export */ function migrate_font_family(attributes) { 3702 if (!attributes?.style?.typography?.fontFamily) { 3703 return attributes; 3704 } 3705 const { 3706 fontFamily, 3707 ...typography 3708 } = attributes.style.typography; 3709 return { 3710 ...attributes, 3711 style: cleanEmptyObject({ 3712 ...attributes.style, 3713 typography 3714 }), 3715 fontFamily: fontFamily.split('|').pop() 3716 }; 3717 } 3718 3719 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/button/deprecated.js 3720 /** 3721 * External dependencies 3722 */ 3723 3724 3725 /** 3726 * WordPress dependencies 3727 */ 3728 3729 3730 3731 /** 3732 * Internal dependencies 3733 */ 3734 3735 3736 const migrateBorderRadius = attributes => { 3737 const { 3738 borderRadius, 3739 ...newAttributes 3740 } = attributes; 3741 // We have to check old property `borderRadius` and if 3742 // `styles.border.radius` is a `number` 3743 const oldBorderRadius = [borderRadius, newAttributes.style?.border?.radius].find(possibleBorderRadius => { 3744 return typeof possibleBorderRadius === 'number' && possibleBorderRadius !== 0; 3745 }); 3746 if (!oldBorderRadius) { 3747 return newAttributes; 3748 } 3749 return { 3750 ...newAttributes, 3751 style: { 3752 ...newAttributes.style, 3753 border: { 3754 ...newAttributes.style?.border, 3755 radius: `$oldBorderRadius}px` 3756 } 3757 } 3758 }; 3759 }; 3760 function migrateAlign(attributes) { 3761 if (!attributes.align) { 3762 return attributes; 3763 } 3764 const { 3765 align, 3766 ...otherAttributes 3767 } = attributes; 3768 return { 3769 ...otherAttributes, 3770 className: dist_clsx(otherAttributes.className, `align$attributes.align}`) 3771 }; 3772 } 3773 const migrateCustomColorsAndGradients = attributes => { 3774 if (!attributes.customTextColor && !attributes.customBackgroundColor && !attributes.customGradient) { 3775 return attributes; 3776 } 3777 const style = { 3778 color: {} 3779 }; 3780 if (attributes.customTextColor) { 3781 style.color.text = attributes.customTextColor; 3782 } 3783 if (attributes.customBackgroundColor) { 3784 style.color.background = attributes.customBackgroundColor; 3785 } 3786 if (attributes.customGradient) { 3787 style.color.gradient = attributes.customGradient; 3788 } 3789 const { 3790 customTextColor, 3791 customBackgroundColor, 3792 customGradient, 3793 ...restAttributes 3794 } = attributes; 3795 return { 3796 ...restAttributes, 3797 style 3798 }; 3799 }; 3800 const oldColorsMigration = attributes => { 3801 const { 3802 color, 3803 textColor, 3804 ...restAttributes 3805 } = { 3806 ...attributes, 3807 customTextColor: attributes.textColor && '#' === attributes.textColor[0] ? attributes.textColor : undefined, 3808 customBackgroundColor: attributes.color && '#' === attributes.color[0] ? attributes.color : undefined 3809 }; 3810 return migrateCustomColorsAndGradients(restAttributes); 3811 }; 3812 const blockAttributes = { 3813 url: { 3814 type: 'string', 3815 source: 'attribute', 3816 selector: 'a', 3817 attribute: 'href' 3818 }, 3819 title: { 3820 type: 'string', 3821 source: 'attribute', 3822 selector: 'a', 3823 attribute: 'title' 3824 }, 3825 text: { 3826 type: 'string', 3827 source: 'html', 3828 selector: 'a' 3829 } 3830 }; 3831 const v11 = { 3832 attributes: { 3833 url: { 3834 type: 'string', 3835 source: 'attribute', 3836 selector: 'a', 3837 attribute: 'href' 3838 }, 3839 title: { 3840 type: 'string', 3841 source: 'attribute', 3842 selector: 'a', 3843 attribute: 'title' 3844 }, 3845 text: { 3846 type: 'string', 3847 source: 'html', 3848 selector: 'a' 3849 }, 3850 linkTarget: { 3851 type: 'string', 3852 source: 'attribute', 3853 selector: 'a', 3854 attribute: 'target' 3855 }, 3856 rel: { 3857 type: 'string', 3858 source: 'attribute', 3859 selector: 'a', 3860 attribute: 'rel' 3861 }, 3862 placeholder: { 3863 type: 'string' 3864 }, 3865 backgroundColor: { 3866 type: 'string' 3867 }, 3868 textColor: { 3869 type: 'string' 3870 }, 3871 gradient: { 3872 type: 'string' 3873 }, 3874 width: { 3875 type: 'number' 3876 } 3877 }, 3878 supports: { 3879 anchor: true, 3880 align: true, 3881 alignWide: false, 3882 color: { 3883 __experimentalSkipSerialization: true, 3884 gradients: true, 3885 __experimentalDefaultControls: { 3886 background: true, 3887 text: true 3888 } 3889 }, 3890 typography: { 3891 fontSize: true, 3892 __experimentalFontFamily: true, 3893 __experimentalDefaultControls: { 3894 fontSize: true 3895 } 3896 }, 3897 reusable: false, 3898 spacing: { 3899 __experimentalSkipSerialization: true, 3900 padding: ['horizontal', 'vertical'], 3901 __experimentalDefaultControls: { 3902 padding: true 3903 } 3904 }, 3905 __experimentalBorder: { 3906 radius: true, 3907 __experimentalSkipSerialization: true, 3908 __experimentalDefaultControls: { 3909 radius: true 3910 } 3911 }, 3912 __experimentalSelector: '.wp-block-button__link' 3913 }, 3914 save({ 3915 attributes, 3916 className 3917 }) { 3918 const { 3919 fontSize, 3920 linkTarget, 3921 rel, 3922 style, 3923 text, 3924 title, 3925 url, 3926 width 3927 } = attributes; 3928 if (!text) { 3929 return null; 3930 } 3931 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetBorderClassesAndStyles)(attributes); 3932 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetColorClassesAndStyles)(attributes); 3933 const spacingProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetSpacingClassesAndStyles)(attributes); 3934 const buttonClasses = dist_clsx('wp-block-button__link', colorProps.className, borderProps.className, { 3935 // For backwards compatibility add style that isn't provided via 3936 // block support. 3937 'no-border-radius': style?.border?.radius === 0 3938 }); 3939 const buttonStyle = { 3940 ...borderProps.style, 3941 ...colorProps.style, 3942 ...spacingProps.style 3943 }; 3944 3945 // The use of a `title` attribute here is soft-deprecated, but still applied 3946 // if it had already been assigned, for the sake of backward-compatibility. 3947 // A title will no longer be assigned for new or updated button block links. 3948 3949 const wrapperClasses = dist_clsx(className, { 3950 [`has-custom-width wp-block-button__width-$width}`]: width, 3951 [`has-custom-font-size`]: fontSize || style?.typography?.fontSize 3952 }); 3953 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 3954 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 3955 className: wrapperClasses 3956 }), 3957 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 3958 tagName: "a", 3959 className: buttonClasses, 3960 href: url, 3961 title: title, 3962 style: buttonStyle, 3963 value: text, 3964 target: linkTarget, 3965 rel: rel 3966 }) 3967 }); 3968 } 3969 }; 3970 const v10 = { 3971 attributes: { 3972 url: { 3973 type: 'string', 3974 source: 'attribute', 3975 selector: 'a', 3976 attribute: 'href' 3977 }, 3978 title: { 3979 type: 'string', 3980 source: 'attribute', 3981 selector: 'a', 3982 attribute: 'title' 3983 }, 3984 text: { 3985 type: 'string', 3986 source: 'html', 3987 selector: 'a' 3988 }, 3989 linkTarget: { 3990 type: 'string', 3991 source: 'attribute', 3992 selector: 'a', 3993 attribute: 'target' 3994 }, 3995 rel: { 3996 type: 'string', 3997 source: 'attribute', 3998 selector: 'a', 3999 attribute: 'rel' 4000 }, 4001 placeholder: { 4002 type: 'string' 4003 }, 4004 backgroundColor: { 4005 type: 'string' 4006 }, 4007 textColor: { 4008 type: 'string' 4009 }, 4010 gradient: { 4011 type: 'string' 4012 }, 4013 width: { 4014 type: 'number' 4015 } 4016 }, 4017 supports: { 4018 anchor: true, 4019 align: true, 4020 alignWide: false, 4021 color: { 4022 __experimentalSkipSerialization: true, 4023 gradients: true 4024 }, 4025 typography: { 4026 fontSize: true, 4027 __experimentalFontFamily: true 4028 }, 4029 reusable: false, 4030 spacing: { 4031 __experimentalSkipSerialization: true, 4032 padding: ['horizontal', 'vertical'], 4033 __experimentalDefaultControls: { 4034 padding: true 4035 } 4036 }, 4037 __experimentalBorder: { 4038 radius: true, 4039 __experimentalSkipSerialization: true 4040 }, 4041 __experimentalSelector: '.wp-block-button__link' 4042 }, 4043 save({ 4044 attributes, 4045 className 4046 }) { 4047 const { 4048 fontSize, 4049 linkTarget, 4050 rel, 4051 style, 4052 text, 4053 title, 4054 url, 4055 width 4056 } = attributes; 4057 if (!text) { 4058 return null; 4059 } 4060 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetBorderClassesAndStyles)(attributes); 4061 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetColorClassesAndStyles)(attributes); 4062 const spacingProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetSpacingClassesAndStyles)(attributes); 4063 const buttonClasses = dist_clsx('wp-block-button__link', colorProps.className, borderProps.className, { 4064 // For backwards compatibility add style that isn't provided via 4065 // block support. 4066 'no-border-radius': style?.border?.radius === 0 4067 }); 4068 const buttonStyle = { 4069 ...borderProps.style, 4070 ...colorProps.style, 4071 ...spacingProps.style 4072 }; 4073 4074 // The use of a `title` attribute here is soft-deprecated, but still applied 4075 // if it had already been assigned, for the sake of backward-compatibility. 4076 // A title will no longer be assigned for new or updated button block links. 4077 4078 const wrapperClasses = dist_clsx(className, { 4079 [`has-custom-width wp-block-button__width-$width}`]: width, 4080 [`has-custom-font-size`]: fontSize || style?.typography?.fontSize 4081 }); 4082 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 4083 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 4084 className: wrapperClasses 4085 }), 4086 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 4087 tagName: "a", 4088 className: buttonClasses, 4089 href: url, 4090 title: title, 4091 style: buttonStyle, 4092 value: text, 4093 target: linkTarget, 4094 rel: rel 4095 }) 4096 }); 4097 }, 4098 migrate: migrate_font_family, 4099 isEligible({ 4100 style 4101 }) { 4102 return style?.typography?.fontFamily; 4103 } 4104 }; 4105 const deprecated_deprecated = [v11, v10, { 4106 supports: { 4107 anchor: true, 4108 align: true, 4109 alignWide: false, 4110 color: { 4111 __experimentalSkipSerialization: true, 4112 gradients: true 4113 }, 4114 typography: { 4115 fontSize: true, 4116 __experimentalFontFamily: true 4117 }, 4118 reusable: false, 4119 __experimentalSelector: '.wp-block-button__link' 4120 }, 4121 attributes: { 4122 ...blockAttributes, 4123 linkTarget: { 4124 type: 'string', 4125 source: 'attribute', 4126 selector: 'a', 4127 attribute: 'target' 4128 }, 4129 rel: { 4130 type: 'string', 4131 source: 'attribute', 4132 selector: 'a', 4133 attribute: 'rel' 4134 }, 4135 placeholder: { 4136 type: 'string' 4137 }, 4138 backgroundColor: { 4139 type: 'string' 4140 }, 4141 textColor: { 4142 type: 'string' 4143 }, 4144 gradient: { 4145 type: 'string' 4146 }, 4147 width: { 4148 type: 'number' 4149 } 4150 }, 4151 isEligible({ 4152 style 4153 }) { 4154 return typeof style?.border?.radius === 'number'; 4155 }, 4156 save({ 4157 attributes, 4158 className 4159 }) { 4160 const { 4161 fontSize, 4162 linkTarget, 4163 rel, 4164 style, 4165 text, 4166 title, 4167 url, 4168 width 4169 } = attributes; 4170 if (!text) { 4171 return null; 4172 } 4173 const borderRadius = style?.border?.radius; 4174 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetColorClassesAndStyles)(attributes); 4175 const buttonClasses = dist_clsx('wp-block-button__link', colorProps.className, { 4176 'no-border-radius': style?.border?.radius === 0 4177 }); 4178 const buttonStyle = { 4179 borderRadius: borderRadius ? borderRadius : undefined, 4180 ...colorProps.style 4181 }; 4182 4183 // The use of a `title` attribute here is soft-deprecated, but still applied 4184 // if it had already been assigned, for the sake of backward-compatibility. 4185 // A title will no longer be assigned for new or updated button block links. 4186 4187 const wrapperClasses = dist_clsx(className, { 4188 [`has-custom-width wp-block-button__width-$width}`]: width, 4189 [`has-custom-font-size`]: fontSize || style?.typography?.fontSize 4190 }); 4191 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 4192 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 4193 className: wrapperClasses 4194 }), 4195 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 4196 tagName: "a", 4197 className: buttonClasses, 4198 href: url, 4199 title: title, 4200 style: buttonStyle, 4201 value: text, 4202 target: linkTarget, 4203 rel: rel 4204 }) 4205 }); 4206 }, 4207 migrate: (0,external_wp_compose_namespaceObject.compose)(migrate_font_family, migrateBorderRadius) 4208 }, { 4209 supports: { 4210 anchor: true, 4211 align: true, 4212 alignWide: false, 4213 color: { 4214 __experimentalSkipSerialization: true 4215 }, 4216 reusable: false, 4217 __experimentalSelector: '.wp-block-button__link' 4218 }, 4219 attributes: { 4220 ...blockAttributes, 4221 linkTarget: { 4222 type: 'string', 4223 source: 'attribute', 4224 selector: 'a', 4225 attribute: 'target' 4226 }, 4227 rel: { 4228 type: 'string', 4229 source: 'attribute', 4230 selector: 'a', 4231 attribute: 'rel' 4232 }, 4233 placeholder: { 4234 type: 'string' 4235 }, 4236 borderRadius: { 4237 type: 'number' 4238 }, 4239 backgroundColor: { 4240 type: 'string' 4241 }, 4242 textColor: { 4243 type: 'string' 4244 }, 4245 gradient: { 4246 type: 'string' 4247 }, 4248 style: { 4249 type: 'object' 4250 }, 4251 width: { 4252 type: 'number' 4253 } 4254 }, 4255 save({ 4256 attributes, 4257 className 4258 }) { 4259 const { 4260 borderRadius, 4261 linkTarget, 4262 rel, 4263 text, 4264 title, 4265 url, 4266 width 4267 } = attributes; 4268 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetColorClassesAndStyles)(attributes); 4269 const buttonClasses = dist_clsx('wp-block-button__link', colorProps.className, { 4270 'no-border-radius': borderRadius === 0 4271 }); 4272 const buttonStyle = { 4273 borderRadius: borderRadius ? borderRadius + 'px' : undefined, 4274 ...colorProps.style 4275 }; 4276 4277 // The use of a `title` attribute here is soft-deprecated, but still applied 4278 // if it had already been assigned, for the sake of backward-compatibility. 4279 // A title will no longer be assigned for new or updated button block links. 4280 4281 const wrapperClasses = dist_clsx(className, { 4282 [`has-custom-width wp-block-button__width-$width}`]: width 4283 }); 4284 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 4285 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 4286 className: wrapperClasses 4287 }), 4288 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 4289 tagName: "a", 4290 className: buttonClasses, 4291 href: url, 4292 title: title, 4293 style: buttonStyle, 4294 value: text, 4295 target: linkTarget, 4296 rel: rel 4297 }) 4298 }); 4299 }, 4300 migrate: (0,external_wp_compose_namespaceObject.compose)(migrate_font_family, migrateBorderRadius) 4301 }, { 4302 supports: { 4303 anchor: true, 4304 align: true, 4305 alignWide: false, 4306 color: { 4307 __experimentalSkipSerialization: true 4308 }, 4309 reusable: false, 4310 __experimentalSelector: '.wp-block-button__link' 4311 }, 4312 attributes: { 4313 ...blockAttributes, 4314 linkTarget: { 4315 type: 'string', 4316 source: 'attribute', 4317 selector: 'a', 4318 attribute: 'target' 4319 }, 4320 rel: { 4321 type: 'string', 4322 source: 'attribute', 4323 selector: 'a', 4324 attribute: 'rel' 4325 }, 4326 placeholder: { 4327 type: 'string' 4328 }, 4329 borderRadius: { 4330 type: 'number' 4331 }, 4332 backgroundColor: { 4333 type: 'string' 4334 }, 4335 textColor: { 4336 type: 'string' 4337 }, 4338 gradient: { 4339 type: 'string' 4340 }, 4341 style: { 4342 type: 'object' 4343 }, 4344 width: { 4345 type: 'number' 4346 } 4347 }, 4348 save({ 4349 attributes, 4350 className 4351 }) { 4352 const { 4353 borderRadius, 4354 linkTarget, 4355 rel, 4356 text, 4357 title, 4358 url, 4359 width 4360 } = attributes; 4361 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetColorClassesAndStyles)(attributes); 4362 const buttonClasses = dist_clsx('wp-block-button__link', colorProps.className, { 4363 'no-border-radius': borderRadius === 0 4364 }); 4365 const buttonStyle = { 4366 borderRadius: borderRadius ? borderRadius + 'px' : undefined, 4367 ...colorProps.style 4368 }; 4369 4370 // The use of a `title` attribute here is soft-deprecated, but still applied 4371 // if it had already been assigned, for the sake of backward-compatibility. 4372 // A title will no longer be assigned for new or updated button block links. 4373 4374 const wrapperClasses = dist_clsx(className, { 4375 [`has-custom-width wp-block-button__width-$width}`]: width 4376 }); 4377 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 4378 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 4379 className: wrapperClasses 4380 }), 4381 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 4382 tagName: "a", 4383 className: buttonClasses, 4384 href: url, 4385 title: title, 4386 style: buttonStyle, 4387 value: text, 4388 target: linkTarget, 4389 rel: rel 4390 }) 4391 }); 4392 }, 4393 migrate: (0,external_wp_compose_namespaceObject.compose)(migrate_font_family, migrateBorderRadius) 4394 }, { 4395 supports: { 4396 align: true, 4397 alignWide: false, 4398 color: { 4399 gradients: true 4400 } 4401 }, 4402 attributes: { 4403 ...blockAttributes, 4404 linkTarget: { 4405 type: 'string', 4406 source: 'attribute', 4407 selector: 'a', 4408 attribute: 'target' 4409 }, 4410 rel: { 4411 type: 'string', 4412 source: 'attribute', 4413 selector: 'a', 4414 attribute: 'rel' 4415 }, 4416 placeholder: { 4417 type: 'string' 4418 }, 4419 borderRadius: { 4420 type: 'number' 4421 }, 4422 backgroundColor: { 4423 type: 'string' 4424 }, 4425 textColor: { 4426 type: 'string' 4427 }, 4428 gradient: { 4429 type: 'string' 4430 }, 4431 style: { 4432 type: 'object' 4433 } 4434 }, 4435 save({ 4436 attributes 4437 }) { 4438 const { 4439 borderRadius, 4440 linkTarget, 4441 rel, 4442 text, 4443 title, 4444 url 4445 } = attributes; 4446 const buttonClasses = dist_clsx('wp-block-button__link', { 4447 'no-border-radius': borderRadius === 0 4448 }); 4449 const buttonStyle = { 4450 borderRadius: borderRadius ? borderRadius + 'px' : undefined 4451 }; 4452 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 4453 tagName: "a", 4454 className: buttonClasses, 4455 href: url, 4456 title: title, 4457 style: buttonStyle, 4458 value: text, 4459 target: linkTarget, 4460 rel: rel 4461 }); 4462 }, 4463 migrate: migrateBorderRadius 4464 }, { 4465 supports: { 4466 align: true, 4467 alignWide: false 4468 }, 4469 attributes: { 4470 ...blockAttributes, 4471 linkTarget: { 4472 type: 'string', 4473 source: 'attribute', 4474 selector: 'a', 4475 attribute: 'target' 4476 }, 4477 rel: { 4478 type: 'string', 4479 source: 'attribute', 4480 selector: 'a', 4481 attribute: 'rel' 4482 }, 4483 placeholder: { 4484 type: 'string' 4485 }, 4486 borderRadius: { 4487 type: 'number' 4488 }, 4489 backgroundColor: { 4490 type: 'string' 4491 }, 4492 textColor: { 4493 type: 'string' 4494 }, 4495 customBackgroundColor: { 4496 type: 'string' 4497 }, 4498 customTextColor: { 4499 type: 'string' 4500 }, 4501 customGradient: { 4502 type: 'string' 4503 }, 4504 gradient: { 4505 type: 'string' 4506 } 4507 }, 4508 isEligible: attributes => !!attributes.customTextColor || !!attributes.customBackgroundColor || !!attributes.customGradient || !!attributes.align, 4509 migrate: (0,external_wp_compose_namespaceObject.compose)(migrateBorderRadius, migrateCustomColorsAndGradients, migrateAlign), 4510 save({ 4511 attributes 4512 }) { 4513 const { 4514 backgroundColor, 4515 borderRadius, 4516 customBackgroundColor, 4517 customTextColor, 4518 customGradient, 4519 linkTarget, 4520 gradient, 4521 rel, 4522 text, 4523 textColor, 4524 title, 4525 url 4526 } = attributes; 4527 const textClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 4528 const backgroundClass = !customGradient && (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 4529 const gradientClass = (0,external_wp_blockEditor_namespaceObject.__experimentalGetGradientClass)(gradient); 4530 const buttonClasses = dist_clsx('wp-block-button__link', { 4531 'has-text-color': textColor || customTextColor, 4532 [textClass]: textClass, 4533 'has-background': backgroundColor || customBackgroundColor || customGradient || gradient, 4534 [backgroundClass]: backgroundClass, 4535 'no-border-radius': borderRadius === 0, 4536 [gradientClass]: gradientClass 4537 }); 4538 const buttonStyle = { 4539 background: customGradient ? customGradient : undefined, 4540 backgroundColor: backgroundClass || customGradient || gradient ? undefined : customBackgroundColor, 4541 color: textClass ? undefined : customTextColor, 4542 borderRadius: borderRadius ? borderRadius + 'px' : undefined 4543 }; 4544 4545 // The use of a `title` attribute here is soft-deprecated, but still applied 4546 // if it had already been assigned, for the sake of backward-compatibility. 4547 // A title will no longer be assigned for new or updated button block links. 4548 4549 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 4550 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 4551 tagName: "a", 4552 className: buttonClasses, 4553 href: url, 4554 title: title, 4555 style: buttonStyle, 4556 value: text, 4557 target: linkTarget, 4558 rel: rel 4559 }) 4560 }); 4561 } 4562 }, { 4563 attributes: { 4564 ...blockAttributes, 4565 align: { 4566 type: 'string', 4567 default: 'none' 4568 }, 4569 backgroundColor: { 4570 type: 'string' 4571 }, 4572 textColor: { 4573 type: 'string' 4574 }, 4575 customBackgroundColor: { 4576 type: 'string' 4577 }, 4578 customTextColor: { 4579 type: 'string' 4580 }, 4581 linkTarget: { 4582 type: 'string', 4583 source: 'attribute', 4584 selector: 'a', 4585 attribute: 'target' 4586 }, 4587 rel: { 4588 type: 'string', 4589 source: 'attribute', 4590 selector: 'a', 4591 attribute: 'rel' 4592 }, 4593 placeholder: { 4594 type: 'string' 4595 } 4596 }, 4597 isEligible(attribute) { 4598 return attribute.className && attribute.className.includes('is-style-squared'); 4599 }, 4600 migrate(attributes) { 4601 let newClassName = attributes.className; 4602 if (newClassName) { 4603 newClassName = newClassName.replace(/is-style-squared[\s]?/, '').trim(); 4604 } 4605 return migrateBorderRadius(migrateCustomColorsAndGradients({ 4606 ...attributes, 4607 className: newClassName ? newClassName : undefined, 4608 borderRadius: 0 4609 })); 4610 }, 4611 save({ 4612 attributes 4613 }) { 4614 const { 4615 backgroundColor, 4616 customBackgroundColor, 4617 customTextColor, 4618 linkTarget, 4619 rel, 4620 text, 4621 textColor, 4622 title, 4623 url 4624 } = attributes; 4625 const textClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 4626 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 4627 const buttonClasses = dist_clsx('wp-block-button__link', { 4628 'has-text-color': textColor || customTextColor, 4629 [textClass]: textClass, 4630 'has-background': backgroundColor || customBackgroundColor, 4631 [backgroundClass]: backgroundClass 4632 }); 4633 const buttonStyle = { 4634 backgroundColor: backgroundClass ? undefined : customBackgroundColor, 4635 color: textClass ? undefined : customTextColor 4636 }; 4637 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 4638 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 4639 tagName: "a", 4640 className: buttonClasses, 4641 href: url, 4642 title: title, 4643 style: buttonStyle, 4644 value: text, 4645 target: linkTarget, 4646 rel: rel 4647 }) 4648 }); 4649 } 4650 }, { 4651 attributes: { 4652 ...blockAttributes, 4653 align: { 4654 type: 'string', 4655 default: 'none' 4656 }, 4657 backgroundColor: { 4658 type: 'string' 4659 }, 4660 textColor: { 4661 type: 'string' 4662 }, 4663 customBackgroundColor: { 4664 type: 'string' 4665 }, 4666 customTextColor: { 4667 type: 'string' 4668 } 4669 }, 4670 migrate: oldColorsMigration, 4671 save({ 4672 attributes 4673 }) { 4674 const { 4675 url, 4676 text, 4677 title, 4678 backgroundColor, 4679 textColor, 4680 customBackgroundColor, 4681 customTextColor 4682 } = attributes; 4683 const textClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 4684 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 4685 const buttonClasses = dist_clsx('wp-block-button__link', { 4686 'has-text-color': textColor || customTextColor, 4687 [textClass]: textClass, 4688 'has-background': backgroundColor || customBackgroundColor, 4689 [backgroundClass]: backgroundClass 4690 }); 4691 const buttonStyle = { 4692 backgroundColor: backgroundClass ? undefined : customBackgroundColor, 4693 color: textClass ? undefined : customTextColor 4694 }; 4695 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 4696 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 4697 tagName: "a", 4698 className: buttonClasses, 4699 href: url, 4700 title: title, 4701 style: buttonStyle, 4702 value: text 4703 }) 4704 }); 4705 } 4706 }, { 4707 attributes: { 4708 ...blockAttributes, 4709 color: { 4710 type: 'string' 4711 }, 4712 textColor: { 4713 type: 'string' 4714 }, 4715 align: { 4716 type: 'string', 4717 default: 'none' 4718 } 4719 }, 4720 save({ 4721 attributes 4722 }) { 4723 const { 4724 url, 4725 text, 4726 title, 4727 align, 4728 color, 4729 textColor 4730 } = attributes; 4731 const buttonStyle = { 4732 backgroundColor: color, 4733 color: textColor 4734 }; 4735 const linkClass = 'wp-block-button__link'; 4736 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 4737 className: `align$align}`, 4738 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 4739 tagName: "a", 4740 className: linkClass, 4741 href: url, 4742 title: title, 4743 style: buttonStyle, 4744 value: text 4745 }) 4746 }); 4747 }, 4748 migrate: oldColorsMigration 4749 }, { 4750 attributes: { 4751 ...blockAttributes, 4752 color: { 4753 type: 'string' 4754 }, 4755 textColor: { 4756 type: 'string' 4757 }, 4758 align: { 4759 type: 'string', 4760 default: 'none' 4761 } 4762 }, 4763 save({ 4764 attributes 4765 }) { 4766 const { 4767 url, 4768 text, 4769 title, 4770 align, 4771 color, 4772 textColor 4773 } = attributes; 4774 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 4775 className: `align$align}`, 4776 style: { 4777 backgroundColor: color 4778 }, 4779 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 4780 tagName: "a", 4781 href: url, 4782 title: title, 4783 style: { 4784 color: textColor 4785 }, 4786 value: text 4787 }) 4788 }); 4789 }, 4790 migrate: oldColorsMigration 4791 }]; 4792 /* harmony default export */ const button_deprecated = (deprecated_deprecated); 4793 4794 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/button/constants.js 4795 const NEW_TAB_REL = 'noreferrer noopener'; 4796 const NEW_TAB_TARGET = '_blank'; 4797 const NOFOLLOW_REL = 'nofollow'; 4798 4799 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/button/get-updated-link-attributes.js 4800 /** 4801 * Internal dependencies 4802 */ 4803 4804 4805 /** 4806 * WordPress dependencies 4807 */ 4808 4809 4810 /** 4811 * Updates the link attributes. 4812 * 4813 * @param {Object} attributes The current block attributes. 4814 * @param {string} attributes.rel The current link rel attribute. 4815 * @param {string} attributes.url The current link url. 4816 * @param {boolean} attributes.opensInNewTab Whether the link should open in a new window. 4817 * @param {boolean} attributes.nofollow Whether the link should be marked as nofollow. 4818 */ 4819 function getUpdatedLinkAttributes({ 4820 rel = '', 4821 url = '', 4822 opensInNewTab, 4823 nofollow 4824 }) { 4825 let newLinkTarget; 4826 // Since `rel` is editable attribute, we need to check for existing values and proceed accordingly. 4827 let updatedRel = rel; 4828 if (opensInNewTab) { 4829 newLinkTarget = NEW_TAB_TARGET; 4830 updatedRel = updatedRel?.includes(NEW_TAB_REL) ? updatedRel : updatedRel + ` $NEW_TAB_REL}`; 4831 } else { 4832 const relRegex = new RegExp(`\\b$NEW_TAB_REL}\\s*`, 'g'); 4833 updatedRel = updatedRel?.replace(relRegex, '').trim(); 4834 } 4835 if (nofollow) { 4836 updatedRel = updatedRel?.includes(NOFOLLOW_REL) ? updatedRel : updatedRel + ` $NOFOLLOW_REL}`; 4837 } else { 4838 const relRegex = new RegExp(`\\b$NOFOLLOW_REL}\\s*`, 'g'); 4839 updatedRel = updatedRel?.replace(relRegex, '').trim(); 4840 } 4841 return { 4842 url: (0,external_wp_url_namespaceObject.prependHTTP)(url), 4843 linkTarget: newLinkTarget, 4844 rel: updatedRel || undefined 4845 }; 4846 } 4847 4848 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/utils/remove-anchor-tag.js 4849 /** 4850 * Removes anchor tags from a string. 4851 * 4852 * @param {string} value The value to remove anchor tags from. 4853 * 4854 * @return {string} The value with anchor tags removed. 4855 */ 4856 function removeAnchorTag(value) { 4857 // To do: Refactor this to use rich text's removeFormat instead. 4858 return value.toString().replace(/<\/?a[^>]*>/g, ''); 4859 } 4860 4861 ;// CONCATENATED MODULE: external ["wp","keycodes"] 4862 const external_wp_keycodes_namespaceObject = window["wp"]["keycodes"]; 4863 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/link.js 4864 /** 4865 * WordPress dependencies 4866 */ 4867 4868 4869 const link_link = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 4870 xmlns: "http://www.w3.org/2000/svg", 4871 viewBox: "0 0 24 24", 4872 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 4873 d: "M10 17.389H8.444A5.194 5.194 0 1 1 8.444 7H10v1.5H8.444a3.694 3.694 0 0 0 0 7.389H10v1.5ZM14 7h1.556a5.194 5.194 0 0 1 0 10.39H14v-1.5h1.556a3.694 3.694 0 0 0 0-7.39H14V7Zm-4.5 6h5v-1.5h-5V13Z" 4874 }) 4875 }); 4876 /* harmony default export */ const library_link = (link_link); 4877 4878 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/link-off.js 4879 /** 4880 * WordPress dependencies 4881 */ 4882 4883 4884 const linkOff = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 4885 xmlns: "http://www.w3.org/2000/svg", 4886 viewBox: "0 0 24 24", 4887 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 4888 d: "M17.031 4.703 15.576 4l-1.56 3H14v.03l-2.324 4.47H9.5V13h1.396l-1.502 2.889h-.95a3.694 3.694 0 0 1 0-7.389H10V7H8.444a5.194 5.194 0 1 0 0 10.389h.17L7.5 19.53l1.416.719L15.049 8.5h.507a3.694 3.694 0 0 1 0 7.39H14v1.5h1.556a5.194 5.194 0 0 0 .273-10.383l1.202-2.304Z" 4889 }) 4890 }); 4891 /* harmony default export */ const link_off = (linkOff); 4892 4893 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/button/edit.js 4894 /** 4895 * External dependencies 4896 */ 4897 4898 4899 /** 4900 * Internal dependencies 4901 */ 4902 4903 4904 4905 4906 /** 4907 * WordPress dependencies 4908 */ 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 const LINK_SETTINGS = [...external_wp_blockEditor_namespaceObject.__experimentalLinkControl.DEFAULT_LINK_SETTINGS, { 4922 id: 'nofollow', 4923 title: (0,external_wp_i18n_namespaceObject.__)('Mark as nofollow') 4924 }]; 4925 function useEnter(props) { 4926 const { 4927 replaceBlocks, 4928 selectionChange 4929 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 4930 const { 4931 getBlock, 4932 getBlockRootClientId, 4933 getBlockIndex 4934 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 4935 const propsRef = (0,external_wp_element_namespaceObject.useRef)(props); 4936 propsRef.current = props; 4937 return (0,external_wp_compose_namespaceObject.useRefEffect)(element => { 4938 function onKeyDown(event) { 4939 if (event.defaultPrevented || event.keyCode !== external_wp_keycodes_namespaceObject.ENTER) { 4940 return; 4941 } 4942 const { 4943 content, 4944 clientId 4945 } = propsRef.current; 4946 if (content.length) { 4947 return; 4948 } 4949 event.preventDefault(); 4950 const topParentListBlock = getBlock(getBlockRootClientId(clientId)); 4951 const blockIndex = getBlockIndex(clientId); 4952 const head = (0,external_wp_blocks_namespaceObject.cloneBlock)({ 4953 ...topParentListBlock, 4954 innerBlocks: topParentListBlock.innerBlocks.slice(0, blockIndex) 4955 }); 4956 const middle = (0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getDefaultBlockName)()); 4957 const after = topParentListBlock.innerBlocks.slice(blockIndex + 1); 4958 const tail = after.length ? [(0,external_wp_blocks_namespaceObject.cloneBlock)({ 4959 ...topParentListBlock, 4960 innerBlocks: after 4961 })] : []; 4962 replaceBlocks(topParentListBlock.clientId, [head, middle, ...tail], 1); 4963 // We manually change the selection here because we are replacing 4964 // a different block than the selected one. 4965 selectionChange(middle.clientId); 4966 } 4967 element.addEventListener('keydown', onKeyDown); 4968 return () => { 4969 element.removeEventListener('keydown', onKeyDown); 4970 }; 4971 }, []); 4972 } 4973 function WidthPanel({ 4974 selectedWidth, 4975 setAttributes 4976 }) { 4977 function handleChange(newWidth) { 4978 // Check if we are toggling the width off 4979 const width = selectedWidth === newWidth ? undefined : newWidth; 4980 4981 // Update attributes. 4982 setAttributes({ 4983 width 4984 }); 4985 } 4986 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 4987 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 4988 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ButtonGroup, { 4989 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Button width'), 4990 children: [25, 50, 75, 100].map(widthValue => { 4991 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Button, { 4992 size: "small", 4993 variant: widthValue === selectedWidth ? 'primary' : undefined, 4994 onClick: () => handleChange(widthValue), 4995 children: [widthValue, "%"] 4996 }, widthValue); 4997 }) 4998 }) 4999 }); 5000 } 5001 function ButtonEdit(props) { 5002 const { 5003 attributes, 5004 setAttributes, 5005 className, 5006 isSelected, 5007 onReplace, 5008 mergeBlocks, 5009 clientId, 5010 context 5011 } = props; 5012 const { 5013 tagName, 5014 textAlign, 5015 linkTarget, 5016 placeholder, 5017 rel, 5018 style, 5019 text, 5020 url, 5021 width, 5022 metadata 5023 } = attributes; 5024 const TagName = tagName || 'a'; 5025 function onKeyDown(event) { 5026 if (external_wp_keycodes_namespaceObject.isKeyboardEvent.primary(event, 'k')) { 5027 startEditing(event); 5028 } else if (external_wp_keycodes_namespaceObject.isKeyboardEvent.primaryShift(event, 'k')) { 5029 unlink(); 5030 richTextRef.current?.focus(); 5031 } 5032 } 5033 5034 // Use internal state instead of a ref to make sure that the component 5035 // re-renders when the popover's anchor updates. 5036 const [popoverAnchor, setPopoverAnchor] = (0,external_wp_element_namespaceObject.useState)(null); 5037 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseBorderProps)(attributes); 5038 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseColorProps)(attributes); 5039 const spacingProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetSpacingClassesAndStyles)(attributes); 5040 const shadowProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetShadowClassesAndStyles)(attributes); 5041 const ref = (0,external_wp_element_namespaceObject.useRef)(); 5042 const richTextRef = (0,external_wp_element_namespaceObject.useRef)(); 5043 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 5044 ref: (0,external_wp_compose_namespaceObject.useMergeRefs)([setPopoverAnchor, ref]), 5045 onKeyDown 5046 }); 5047 const blockEditingMode = (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)(); 5048 const [isEditingURL, setIsEditingURL] = (0,external_wp_element_namespaceObject.useState)(false); 5049 const isURLSet = !!url; 5050 const opensInNewTab = linkTarget === NEW_TAB_TARGET; 5051 const nofollow = !!rel?.includes(NOFOLLOW_REL); 5052 const isLinkTag = 'a' === TagName; 5053 function startEditing(event) { 5054 event.preventDefault(); 5055 setIsEditingURL(true); 5056 } 5057 function unlink() { 5058 setAttributes({ 5059 url: undefined, 5060 linkTarget: undefined, 5061 rel: undefined 5062 }); 5063 setIsEditingURL(false); 5064 } 5065 (0,external_wp_element_namespaceObject.useEffect)(() => { 5066 if (!isSelected) { 5067 setIsEditingURL(false); 5068 } 5069 }, [isSelected]); 5070 5071 // Memoize link value to avoid overriding the LinkControl's internal state. 5072 // This is a temporary fix. See https://github.com/WordPress/gutenberg/issues/51256. 5073 const linkValue = (0,external_wp_element_namespaceObject.useMemo)(() => ({ 5074 url, 5075 opensInNewTab, 5076 nofollow 5077 }), [url, opensInNewTab, nofollow]); 5078 const useEnterRef = useEnter({ 5079 content: text, 5080 clientId 5081 }); 5082 const mergedRef = (0,external_wp_compose_namespaceObject.useMergeRefs)([useEnterRef, richTextRef]); 5083 const { 5084 lockUrlControls = false 5085 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 5086 if (!isSelected) { 5087 return {}; 5088 } 5089 const blockBindingsSource = (0,external_wp_blocks_namespaceObject.getBlockBindingsSource)(metadata?.bindings?.url?.source); 5090 return { 5091 lockUrlControls: !!metadata?.bindings?.url && !blockBindingsSource?.canUserEditValue?.({ 5092 select, 5093 context, 5094 args: metadata?.bindings?.url?.args 5095 }) 5096 }; 5097 }, [context, isSelected, metadata?.bindings?.url]); 5098 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 5099 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 5100 ...blockProps, 5101 className: dist_clsx(blockProps.className, { 5102 [`has-custom-width wp-block-button__width-$width}`]: width, 5103 [`has-custom-font-size`]: blockProps.style.fontSize 5104 }), 5105 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 5106 ref: mergedRef, 5107 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Button text'), 5108 placeholder: placeholder || (0,external_wp_i18n_namespaceObject.__)('Add text…'), 5109 value: text, 5110 onChange: value => setAttributes({ 5111 text: removeAnchorTag(value) 5112 }), 5113 withoutInteractiveFormatting: true, 5114 className: dist_clsx(className, 'wp-block-button__link', colorProps.className, borderProps.className, { 5115 [`has-text-align-$textAlign}`]: textAlign, 5116 // For backwards compatibility add style that isn't 5117 // provided via block support. 5118 'no-border-radius': style?.border?.radius === 0 5119 }, (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('button')), 5120 style: { 5121 ...borderProps.style, 5122 ...colorProps.style, 5123 ...spacingProps.style, 5124 ...shadowProps.style 5125 }, 5126 onReplace: onReplace, 5127 onMerge: mergeBlocks, 5128 identifier: "text" 5129 }) 5130 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 5131 group: "block", 5132 children: [blockEditingMode === 'default' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 5133 value: textAlign, 5134 onChange: nextAlign => { 5135 setAttributes({ 5136 textAlign: nextAlign 5137 }); 5138 } 5139 }), !isURLSet && isLinkTag && !lockUrlControls && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 5140 name: "link", 5141 icon: library_link, 5142 title: (0,external_wp_i18n_namespaceObject.__)('Link'), 5143 shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primary('k'), 5144 onClick: startEditing 5145 }), isURLSet && isLinkTag && !lockUrlControls && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 5146 name: "link", 5147 icon: link_off, 5148 title: (0,external_wp_i18n_namespaceObject.__)('Unlink'), 5149 shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primaryShift('k'), 5150 onClick: unlink, 5151 isActive: true 5152 })] 5153 }), isLinkTag && isSelected && (isEditingURL || isURLSet) && !lockUrlControls && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Popover, { 5154 placement: "bottom", 5155 onClose: () => { 5156 setIsEditingURL(false); 5157 richTextRef.current?.focus(); 5158 }, 5159 anchor: popoverAnchor, 5160 focusOnMount: isEditingURL ? 'firstElement' : false, 5161 __unstableSlotName: "__unstable-block-tools-after", 5162 shift: true, 5163 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalLinkControl, { 5164 value: linkValue, 5165 onChange: ({ 5166 url: newURL, 5167 opensInNewTab: newOpensInNewTab, 5168 nofollow: newNofollow 5169 }) => setAttributes(getUpdatedLinkAttributes({ 5170 rel, 5171 url: newURL, 5172 opensInNewTab: newOpensInNewTab, 5173 nofollow: newNofollow 5174 })), 5175 onRemove: () => { 5176 unlink(); 5177 richTextRef.current?.focus(); 5178 }, 5179 forceIsEditingLink: isEditingURL, 5180 settings: LINK_SETTINGS 5181 }) 5182 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 5183 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WidthPanel, { 5184 selectedWidth: width, 5185 setAttributes: setAttributes 5186 }) 5187 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 5188 group: "advanced", 5189 children: isLinkTag && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 5190 __next40pxDefaultSize: true, 5191 __nextHasNoMarginBottom: true, 5192 label: (0,external_wp_i18n_namespaceObject.__)('Link rel'), 5193 value: rel || '', 5194 onChange: newRel => setAttributes({ 5195 rel: newRel 5196 }) 5197 }) 5198 })] 5199 }); 5200 } 5201 /* harmony default export */ const button_edit = (ButtonEdit); 5202 5203 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/button/save.js 5204 /** 5205 * External dependencies 5206 */ 5207 5208 5209 /** 5210 * WordPress dependencies 5211 */ 5212 5213 5214 function save_save({ 5215 attributes, 5216 className 5217 }) { 5218 const { 5219 tagName, 5220 type, 5221 textAlign, 5222 fontSize, 5223 linkTarget, 5224 rel, 5225 style, 5226 text, 5227 title, 5228 url, 5229 width 5230 } = attributes; 5231 const TagName = tagName || 'a'; 5232 const isButtonTag = 'button' === TagName; 5233 const buttonType = type || 'button'; 5234 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetBorderClassesAndStyles)(attributes); 5235 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetColorClassesAndStyles)(attributes); 5236 const spacingProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetSpacingClassesAndStyles)(attributes); 5237 const shadowProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetShadowClassesAndStyles)(attributes); 5238 const buttonClasses = dist_clsx('wp-block-button__link', colorProps.className, borderProps.className, { 5239 [`has-text-align-$textAlign}`]: textAlign, 5240 // For backwards compatibility add style that isn't provided via 5241 // block support. 5242 'no-border-radius': style?.border?.radius === 0 5243 }, (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('button')); 5244 const buttonStyle = { 5245 ...borderProps.style, 5246 ...colorProps.style, 5247 ...spacingProps.style, 5248 ...shadowProps.style 5249 }; 5250 5251 // The use of a `title` attribute here is soft-deprecated, but still applied 5252 // if it had already been assigned, for the sake of backward-compatibility. 5253 // A title will no longer be assigned for new or updated button block links. 5254 5255 const wrapperClasses = dist_clsx(className, { 5256 [`has-custom-width wp-block-button__width-$width}`]: width, 5257 [`has-custom-font-size`]: fontSize || style?.typography?.fontSize 5258 }); 5259 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 5260 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 5261 className: wrapperClasses 5262 }), 5263 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 5264 tagName: TagName, 5265 type: isButtonTag ? buttonType : null, 5266 className: buttonClasses, 5267 href: isButtonTag ? null : url, 5268 title: title, 5269 style: buttonStyle, 5270 value: text, 5271 target: isButtonTag ? null : linkTarget, 5272 rel: isButtonTag ? null : rel 5273 }) 5274 }); 5275 } 5276 5277 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/button/index.js 5278 /** 5279 * WordPress dependencies 5280 */ 5281 5282 5283 5284 /** 5285 * Internal dependencies 5286 */ 5287 5288 5289 5290 const button_metadata = { 5291 $schema: "https://schemas.wp.org/trunk/block.json", 5292 apiVersion: 3, 5293 name: "core/button", 5294 title: "Button", 5295 category: "design", 5296 parent: ["core/buttons"], 5297 description: "Prompt visitors to take action with a button-style link.", 5298 keywords: ["link"], 5299 textdomain: "default", 5300 attributes: { 5301 tagName: { 5302 type: "string", 5303 "enum": ["a", "button"], 5304 "default": "a" 5305 }, 5306 type: { 5307 type: "string", 5308 "default": "button" 5309 }, 5310 textAlign: { 5311 type: "string" 5312 }, 5313 url: { 5314 type: "string", 5315 source: "attribute", 5316 selector: "a", 5317 attribute: "href", 5318 role: "content" 5319 }, 5320 title: { 5321 type: "string", 5322 source: "attribute", 5323 selector: "a,button", 5324 attribute: "title", 5325 role: "content" 5326 }, 5327 text: { 5328 type: "rich-text", 5329 source: "rich-text", 5330 selector: "a,button", 5331 role: "content" 5332 }, 5333 linkTarget: { 5334 type: "string", 5335 source: "attribute", 5336 selector: "a", 5337 attribute: "target", 5338 role: "content" 5339 }, 5340 rel: { 5341 type: "string", 5342 source: "attribute", 5343 selector: "a", 5344 attribute: "rel", 5345 role: "content" 5346 }, 5347 placeholder: { 5348 type: "string" 5349 }, 5350 backgroundColor: { 5351 type: "string" 5352 }, 5353 textColor: { 5354 type: "string" 5355 }, 5356 gradient: { 5357 type: "string" 5358 }, 5359 width: { 5360 type: "number" 5361 } 5362 }, 5363 supports: { 5364 anchor: true, 5365 splitting: true, 5366 align: false, 5367 alignWide: false, 5368 color: { 5369 __experimentalSkipSerialization: true, 5370 gradients: true, 5371 __experimentalDefaultControls: { 5372 background: true, 5373 text: true 5374 } 5375 }, 5376 typography: { 5377 fontSize: true, 5378 lineHeight: true, 5379 __experimentalFontFamily: true, 5380 __experimentalFontWeight: true, 5381 __experimentalFontStyle: true, 5382 __experimentalTextTransform: true, 5383 __experimentalTextDecoration: true, 5384 __experimentalLetterSpacing: true, 5385 __experimentalWritingMode: true, 5386 __experimentalDefaultControls: { 5387 fontSize: true 5388 } 5389 }, 5390 reusable: false, 5391 shadow: { 5392 __experimentalSkipSerialization: true 5393 }, 5394 spacing: { 5395 __experimentalSkipSerialization: true, 5396 padding: ["horizontal", "vertical"], 5397 __experimentalDefaultControls: { 5398 padding: true 5399 } 5400 }, 5401 __experimentalBorder: { 5402 color: true, 5403 radius: true, 5404 style: true, 5405 width: true, 5406 __experimentalSkipSerialization: true, 5407 __experimentalDefaultControls: { 5408 color: true, 5409 radius: true, 5410 style: true, 5411 width: true 5412 } 5413 }, 5414 __experimentalSelector: ".wp-block-button .wp-block-button__link", 5415 interactivity: { 5416 clientNavigation: true 5417 } 5418 }, 5419 styles: [{ 5420 name: "fill", 5421 label: "Fill", 5422 isDefault: true 5423 }, { 5424 name: "outline", 5425 label: "Outline" 5426 }], 5427 editorStyle: "wp-block-button-editor", 5428 style: "wp-block-button" 5429 }; 5430 5431 const { 5432 name: button_name 5433 } = button_metadata; 5434 5435 const button_settings = { 5436 icon: library_button, 5437 example: { 5438 attributes: { 5439 className: 'is-style-fill', 5440 text: (0,external_wp_i18n_namespaceObject.__)('Call to Action') 5441 } 5442 }, 5443 edit: button_edit, 5444 save: save_save, 5445 deprecated: button_deprecated, 5446 merge: (a, { 5447 text = '' 5448 }) => ({ 5449 ...a, 5450 text: (a.text || '') + text 5451 }) 5452 }; 5453 const button_init = () => initBlock({ 5454 name: button_name, 5455 metadata: button_metadata, 5456 settings: button_settings 5457 }); 5458 5459 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/buttons.js 5460 /** 5461 * WordPress dependencies 5462 */ 5463 5464 5465 const buttons = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 5466 viewBox: "0 0 24 24", 5467 xmlns: "http://www.w3.org/2000/svg", 5468 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 5469 d: "M14.5 17.5H9.5V16H14.5V17.5Z M14.5 8H9.5V6.5H14.5V8Z M7 3.5H17C18.1046 3.5 19 4.39543 19 5.5V9C19 10.1046 18.1046 11 17 11H7C5.89543 11 5 10.1046 5 9V5.5C5 4.39543 5.89543 3.5 7 3.5ZM17 5H7C6.72386 5 6.5 5.22386 6.5 5.5V9C6.5 9.27614 6.72386 9.5 7 9.5H17C17.2761 9.5 17.5 9.27614 17.5 9V5.5C17.5 5.22386 17.2761 5 17 5Z M7 13H17C18.1046 13 19 13.8954 19 15V18.5C19 19.6046 18.1046 20.5 17 20.5H7C5.89543 20.5 5 19.6046 5 18.5V15C5 13.8954 5.89543 13 7 13ZM17 14.5H7C6.72386 14.5 6.5 14.7239 6.5 15V18.5C6.5 18.7761 6.72386 19 7 19H17C17.2761 19 17.5 18.7761 17.5 18.5V15C17.5 14.7239 17.2761 14.5 17 14.5Z" 5470 }) 5471 }); 5472 /* harmony default export */ const library_buttons = (buttons); 5473 5474 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/buttons/deprecated.js 5475 /** 5476 * External dependencies 5477 */ 5478 5479 /** 5480 * WordPress dependencies 5481 */ 5482 5483 5484 /** 5485 * @param {Object} attributes Block's attributes. 5486 */ 5487 5488 const migrateWithLayout = attributes => { 5489 if (!!attributes.layout) { 5490 return attributes; 5491 } 5492 const { 5493 contentJustification, 5494 orientation, 5495 ...updatedAttributes 5496 } = attributes; 5497 if (contentJustification || orientation) { 5498 Object.assign(updatedAttributes, { 5499 layout: { 5500 type: 'flex', 5501 ...(contentJustification && { 5502 justifyContent: contentJustification 5503 }), 5504 ...(orientation && { 5505 orientation 5506 }) 5507 } 5508 }); 5509 } 5510 return updatedAttributes; 5511 }; 5512 const buttons_deprecated_deprecated = [{ 5513 attributes: { 5514 contentJustification: { 5515 type: 'string' 5516 }, 5517 orientation: { 5518 type: 'string', 5519 default: 'horizontal' 5520 } 5521 }, 5522 supports: { 5523 anchor: true, 5524 align: ['wide', 'full'], 5525 __experimentalExposeControlsToChildren: true, 5526 spacing: { 5527 blockGap: true, 5528 margin: ['top', 'bottom'], 5529 __experimentalDefaultControls: { 5530 blockGap: true 5531 } 5532 } 5533 }, 5534 isEligible: ({ 5535 contentJustification, 5536 orientation 5537 }) => !!contentJustification || !!orientation, 5538 migrate: migrateWithLayout, 5539 save({ 5540 attributes: { 5541 contentJustification, 5542 orientation 5543 } 5544 }) { 5545 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 5546 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 5547 className: dist_clsx({ 5548 [`is-content-justification-$contentJustification}`]: contentJustification, 5549 'is-vertical': orientation === 'vertical' 5550 }) 5551 }), 5552 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 5553 }); 5554 } 5555 }, { 5556 supports: { 5557 align: ['center', 'left', 'right'], 5558 anchor: true 5559 }, 5560 save() { 5561 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 5562 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 5563 }); 5564 }, 5565 isEligible({ 5566 align 5567 }) { 5568 return align && ['center', 'left', 'right'].includes(align); 5569 }, 5570 migrate(attributes) { 5571 return migrateWithLayout({ 5572 ...attributes, 5573 align: undefined, 5574 // Floating Buttons blocks shouldn't have been supported in the 5575 // first place. Most users using them probably expected them to 5576 // act like content justification controls, so these blocks are 5577 // migrated to use content justification. 5578 // As for center-aligned Buttons blocks, the content justification 5579 // equivalent will create an identical end result in most cases. 5580 contentJustification: attributes.align 5581 }); 5582 } 5583 }]; 5584 /* harmony default export */ const buttons_deprecated = (buttons_deprecated_deprecated); 5585 5586 ;// CONCATENATED MODULE: external ["wp","richText"] 5587 const external_wp_richText_namespaceObject = window["wp"]["richText"]; 5588 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/utils/get-transformed-metadata.js 5589 /** 5590 * WordPress dependencies 5591 */ 5592 5593 5594 /** 5595 * Transform the metadata attribute with only the values and bindings specified by each transform. 5596 * Returns `undefined` if the input metadata is falsy. 5597 * 5598 * @param {Object} metadata Original metadata attribute from the block that is being transformed. 5599 * @param {Object} newBlockName Name of the final block after the transformation. 5600 * @param {Function} bindingsCallback Optional callback to transform the `bindings` property object. 5601 * @return {Object|undefined} New metadata object only with the relevant properties. 5602 */ 5603 function getTransformedMetadata(metadata, newBlockName, bindingsCallback) { 5604 if (!metadata) { 5605 return; 5606 } 5607 const { 5608 supports 5609 } = (0,external_wp_blocks_namespaceObject.getBlockType)(newBlockName); 5610 // Fixed until an opt-in mechanism is implemented. 5611 const BLOCK_BINDINGS_SUPPORTED_BLOCKS = ['core/paragraph', 'core/heading', 'core/image', 'core/button']; 5612 // The metadata properties that should be preserved after the transform. 5613 const transformSupportedProps = []; 5614 // If it support bindings, and there is a transform bindings callback, add the `id` and `bindings` properties. 5615 if (BLOCK_BINDINGS_SUPPORTED_BLOCKS.includes(newBlockName) && bindingsCallback) { 5616 transformSupportedProps.push('id', 'bindings'); 5617 } 5618 // If it support block naming (true by default), add the `name` property. 5619 if (supports.renaming !== false) { 5620 transformSupportedProps.push('name'); 5621 } 5622 5623 // Return early if no supported properties. 5624 if (!transformSupportedProps.length) { 5625 return; 5626 } 5627 const newMetadata = Object.entries(metadata).reduce((obj, [prop, value]) => { 5628 // If prop is not supported, don't add it to the new metadata object. 5629 if (!transformSupportedProps.includes(prop)) { 5630 return obj; 5631 } 5632 obj[prop] = prop === 'bindings' ? bindingsCallback(value) : value; 5633 return obj; 5634 }, {}); 5635 5636 // Return undefined if object is empty. 5637 return Object.keys(newMetadata).length ? newMetadata : undefined; 5638 } 5639 5640 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/buttons/transforms.js 5641 /** 5642 * WordPress dependencies 5643 */ 5644 5645 5646 5647 /** 5648 * Internal dependencies 5649 */ 5650 5651 const transforms_transforms = { 5652 from: [{ 5653 type: 'block', 5654 isMultiBlock: true, 5655 blocks: ['core/button'], 5656 transform: buttons => 5657 // Creates the buttons block. 5658 (0,external_wp_blocks_namespaceObject.createBlock)('core/buttons', {}, 5659 // Loop the selected buttons. 5660 buttons.map(attributes => 5661 // Create singular button in the buttons block. 5662 (0,external_wp_blocks_namespaceObject.createBlock)('core/button', attributes))) 5663 }, { 5664 type: 'block', 5665 isMultiBlock: true, 5666 blocks: ['core/paragraph'], 5667 transform: buttons => 5668 // Creates the buttons block. 5669 (0,external_wp_blocks_namespaceObject.createBlock)('core/buttons', {}, 5670 // Loop the selected buttons. 5671 buttons.map(attributes => { 5672 const { 5673 content, 5674 metadata 5675 } = attributes; 5676 const element = (0,external_wp_richText_namespaceObject.__unstableCreateElement)(document, content); 5677 // Remove any HTML tags. 5678 const text = element.innerText || ''; 5679 // Get first url. 5680 const link = element.querySelector('a'); 5681 const url = link?.getAttribute('href'); 5682 // Create singular button in the buttons block. 5683 return (0,external_wp_blocks_namespaceObject.createBlock)('core/button', { 5684 text, 5685 url, 5686 metadata: getTransformedMetadata(metadata, 'core/button', ({ 5687 content: contentBinding 5688 }) => ({ 5689 text: contentBinding 5690 })) 5691 }); 5692 })), 5693 isMatch: paragraphs => { 5694 return paragraphs.every(attributes => { 5695 const element = (0,external_wp_richText_namespaceObject.__unstableCreateElement)(document, attributes.content); 5696 const text = element.innerText || ''; 5697 const links = element.querySelectorAll('a'); 5698 return text.length <= 30 && links.length <= 1; 5699 }); 5700 } 5701 }] 5702 }; 5703 /* harmony default export */ const buttons_transforms = (transforms_transforms); 5704 5705 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/buttons/edit.js 5706 /** 5707 * External dependencies 5708 */ 5709 5710 5711 /** 5712 * WordPress dependencies 5713 */ 5714 5715 5716 5717 5718 const DEFAULT_BLOCK = { 5719 name: 'core/button', 5720 attributesToCopy: ['backgroundColor', 'border', 'className', 'fontFamily', 'fontSize', 'gradient', 'style', 'textColor', 'width'] 5721 }; 5722 function ButtonsEdit({ 5723 attributes, 5724 className 5725 }) { 5726 var _layout$orientation; 5727 const { 5728 fontSize, 5729 layout, 5730 style 5731 } = attributes; 5732 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 5733 className: dist_clsx(className, { 5734 'has-custom-font-size': fontSize || style?.typography?.fontSize 5735 }) 5736 }); 5737 const { 5738 hasButtonVariations 5739 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 5740 const buttonVariations = select(external_wp_blocks_namespaceObject.store).getBlockVariations('core/button', 'inserter'); 5741 return { 5742 hasButtonVariations: buttonVariations.length > 0 5743 }; 5744 }, []); 5745 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 5746 defaultBlock: DEFAULT_BLOCK, 5747 // This check should be handled by the `Inserter` internally to be consistent across all blocks that use it. 5748 directInsert: !hasButtonVariations, 5749 template: [['core/button']], 5750 templateInsertUpdatesSelection: true, 5751 orientation: (_layout$orientation = layout?.orientation) !== null && _layout$orientation !== void 0 ? _layout$orientation : 'horizontal' 5752 }); 5753 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 5754 ...innerBlocksProps 5755 }); 5756 } 5757 /* harmony default export */ const buttons_edit = (ButtonsEdit); 5758 5759 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/buttons/save.js 5760 /** 5761 * External dependencies 5762 */ 5763 5764 5765 /** 5766 * WordPress dependencies 5767 */ 5768 5769 5770 function buttons_save_save({ 5771 attributes, 5772 className 5773 }) { 5774 const { 5775 fontSize, 5776 style 5777 } = attributes; 5778 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save({ 5779 className: dist_clsx(className, { 5780 'has-custom-font-size': fontSize || style?.typography?.fontSize 5781 }) 5782 }); 5783 const innerBlocksProps = external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(blockProps); 5784 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 5785 ...innerBlocksProps 5786 }); 5787 } 5788 5789 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/buttons/index.js 5790 /** 5791 * WordPress dependencies 5792 */ 5793 5794 5795 5796 /** 5797 * Internal dependencies 5798 */ 5799 5800 5801 5802 5803 const buttons_metadata = { 5804 $schema: "https://schemas.wp.org/trunk/block.json", 5805 apiVersion: 3, 5806 name: "core/buttons", 5807 title: "Buttons", 5808 category: "design", 5809 allowedBlocks: ["core/button"], 5810 description: "Prompt visitors to take action with a group of button-style links.", 5811 keywords: ["link"], 5812 textdomain: "default", 5813 supports: { 5814 anchor: true, 5815 align: ["wide", "full"], 5816 html: false, 5817 __experimentalExposeControlsToChildren: true, 5818 color: { 5819 gradients: true, 5820 text: false, 5821 __experimentalDefaultControls: { 5822 background: true 5823 } 5824 }, 5825 spacing: { 5826 blockGap: ["horizontal", "vertical"], 5827 padding: true, 5828 margin: ["top", "bottom"], 5829 __experimentalDefaultControls: { 5830 blockGap: true 5831 } 5832 }, 5833 typography: { 5834 fontSize: true, 5835 lineHeight: true, 5836 __experimentalFontFamily: true, 5837 __experimentalFontWeight: true, 5838 __experimentalFontStyle: true, 5839 __experimentalTextTransform: true, 5840 __experimentalTextDecoration: true, 5841 __experimentalLetterSpacing: true, 5842 __experimentalDefaultControls: { 5843 fontSize: true 5844 } 5845 }, 5846 __experimentalBorder: { 5847 color: true, 5848 radius: true, 5849 style: true, 5850 width: true, 5851 __experimentalDefaultControls: { 5852 color: true, 5853 radius: true, 5854 style: true, 5855 width: true 5856 } 5857 }, 5858 layout: { 5859 allowSwitching: false, 5860 allowInheriting: false, 5861 "default": { 5862 type: "flex" 5863 } 5864 }, 5865 interactivity: { 5866 clientNavigation: true 5867 } 5868 }, 5869 editorStyle: "wp-block-buttons-editor", 5870 style: "wp-block-buttons" 5871 }; 5872 5873 const { 5874 name: buttons_name 5875 } = buttons_metadata; 5876 5877 const buttons_settings = { 5878 icon: library_buttons, 5879 example: { 5880 attributes: { 5881 layout: { 5882 type: 'flex', 5883 justifyContent: 'center' 5884 } 5885 }, 5886 innerBlocks: [{ 5887 name: 'core/button', 5888 attributes: { 5889 text: (0,external_wp_i18n_namespaceObject.__)('Find out more') 5890 } 5891 }, { 5892 name: 'core/button', 5893 attributes: { 5894 text: (0,external_wp_i18n_namespaceObject.__)('Contact us') 5895 } 5896 }] 5897 }, 5898 deprecated: buttons_deprecated, 5899 transforms: buttons_transforms, 5900 edit: buttons_edit, 5901 save: buttons_save_save 5902 }; 5903 const buttons_init = () => initBlock({ 5904 name: buttons_name, 5905 metadata: buttons_metadata, 5906 settings: buttons_settings 5907 }); 5908 5909 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/calendar.js 5910 /** 5911 * WordPress dependencies 5912 */ 5913 5914 5915 const calendar = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 5916 viewBox: "0 0 24 24", 5917 xmlns: "http://www.w3.org/2000/svg", 5918 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 5919 d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7h15v12zM9 10H7v2h2v-2zm0 4H7v2h2v-2zm4-4h-2v2h2v-2zm4 0h-2v2h2v-2zm-4 4h-2v2h2v-2zm4 0h-2v2h2v-2z" 5920 }) 5921 }); 5922 /* harmony default export */ const library_calendar = (calendar); 5923 5924 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/calendar/edit.js 5925 /** 5926 * External dependencies 5927 */ 5928 5929 5930 /** 5931 * WordPress dependencies 5932 */ 5933 5934 5935 5936 5937 5938 5939 5940 5941 /** 5942 * Returns the year and month of a specified date. 5943 * 5944 * @see `WP_REST_Posts_Controller::prepare_date_response()`. 5945 * 5946 * @param {string} date Date in `ISO8601/RFC3339` format. 5947 * @return {Object} Year and date of the specified date. 5948 */ 5949 5950 const getYearMonth = memize(date => { 5951 if (!date) { 5952 return {}; 5953 } 5954 const dateObj = new Date(date); 5955 return { 5956 year: dateObj.getFullYear(), 5957 month: dateObj.getMonth() + 1 5958 }; 5959 }); 5960 function CalendarEdit({ 5961 attributes 5962 }) { 5963 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 5964 const { 5965 date, 5966 hasPosts, 5967 hasPostsResolved 5968 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 5969 const { 5970 getEntityRecords, 5971 hasFinishedResolution 5972 } = select(external_wp_coreData_namespaceObject.store); 5973 const singlePublishedPostQuery = { 5974 status: 'publish', 5975 per_page: 1 5976 }; 5977 const posts = getEntityRecords('postType', 'post', singlePublishedPostQuery); 5978 const postsResolved = hasFinishedResolution('getEntityRecords', ['postType', 'post', singlePublishedPostQuery]); 5979 let _date; 5980 5981 // FIXME: @wordpress/block-library should not depend on @wordpress/editor. 5982 // Blocks can be loaded into a *non-post* block editor. 5983 // eslint-disable-next-line @wordpress/data-no-store-string-literals 5984 const editorSelectors = select('core/editor'); 5985 if (editorSelectors) { 5986 const postType = editorSelectors.getEditedPostAttribute('type'); 5987 // Dates are used to overwrite year and month used on the calendar. 5988 // This overwrite should only happen for 'post' post types. 5989 // For other post types the calendar always displays the current month. 5990 if (postType === 'post') { 5991 _date = editorSelectors.getEditedPostAttribute('date'); 5992 } 5993 } 5994 return { 5995 date: _date, 5996 hasPostsResolved: postsResolved, 5997 hasPosts: postsResolved && posts?.length === 1 5998 }; 5999 }, []); 6000 if (!hasPosts) { 6001 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 6002 ...blockProps, 6003 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 6004 icon: library_calendar, 6005 label: (0,external_wp_i18n_namespaceObject.__)('Calendar'), 6006 children: !hasPostsResolved ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) : (0,external_wp_i18n_namespaceObject.__)('No published posts found.') 6007 }) 6008 }); 6009 } 6010 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 6011 ...blockProps, 6012 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, { 6013 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)((external_wp_serverSideRender_default()), { 6014 block: "core/calendar", 6015 attributes: { 6016 ...attributes, 6017 ...getYearMonth(date) 6018 } 6019 }) 6020 }) 6021 }); 6022 } 6023 6024 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/calendar/transforms.js 6025 /** 6026 * WordPress dependencies 6027 */ 6028 6029 const calendar_transforms_transforms = { 6030 from: [{ 6031 type: 'block', 6032 blocks: ['core/archives'], 6033 transform: () => (0,external_wp_blocks_namespaceObject.createBlock)('core/calendar') 6034 }], 6035 to: [{ 6036 type: 'block', 6037 blocks: ['core/archives'], 6038 transform: () => (0,external_wp_blocks_namespaceObject.createBlock)('core/archives') 6039 }] 6040 }; 6041 /* harmony default export */ const calendar_transforms = (calendar_transforms_transforms); 6042 6043 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/calendar/index.js 6044 /** 6045 * WordPress dependencies 6046 */ 6047 6048 6049 /** 6050 * Internal dependencies 6051 */ 6052 6053 const calendar_metadata = { 6054 $schema: "https://schemas.wp.org/trunk/block.json", 6055 apiVersion: 3, 6056 name: "core/calendar", 6057 title: "Calendar", 6058 category: "widgets", 6059 description: "A calendar of your site\u2019s posts.", 6060 keywords: ["posts", "archive"], 6061 textdomain: "default", 6062 attributes: { 6063 month: { 6064 type: "integer" 6065 }, 6066 year: { 6067 type: "integer" 6068 } 6069 }, 6070 supports: { 6071 align: true, 6072 color: { 6073 link: true, 6074 __experimentalSkipSerialization: ["text", "background"], 6075 __experimentalDefaultControls: { 6076 background: true, 6077 text: true 6078 }, 6079 __experimentalSelector: "table, th" 6080 }, 6081 typography: { 6082 fontSize: true, 6083 lineHeight: true, 6084 __experimentalFontFamily: true, 6085 __experimentalFontWeight: true, 6086 __experimentalFontStyle: true, 6087 __experimentalTextTransform: true, 6088 __experimentalLetterSpacing: true, 6089 __experimentalDefaultControls: { 6090 fontSize: true 6091 } 6092 }, 6093 interactivity: { 6094 clientNavigation: true 6095 } 6096 }, 6097 style: "wp-block-calendar" 6098 }; 6099 6100 6101 const { 6102 name: calendar_name 6103 } = calendar_metadata; 6104 6105 const calendar_settings = { 6106 icon: library_calendar, 6107 example: {}, 6108 edit: CalendarEdit, 6109 transforms: calendar_transforms 6110 }; 6111 const calendar_init = () => initBlock({ 6112 name: calendar_name, 6113 metadata: calendar_metadata, 6114 settings: calendar_settings 6115 }); 6116 6117 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/category.js 6118 /** 6119 * WordPress dependencies 6120 */ 6121 6122 6123 const category = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 6124 viewBox: "0 0 24 24", 6125 xmlns: "http://www.w3.org/2000/svg", 6126 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 6127 d: "M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z", 6128 fillRule: "evenodd", 6129 clipRule: "evenodd" 6130 }) 6131 }); 6132 /* harmony default export */ const library_category = (category); 6133 6134 ;// CONCATENATED MODULE: external ["wp","htmlEntities"] 6135 const external_wp_htmlEntities_namespaceObject = window["wp"]["htmlEntities"]; 6136 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pin.js 6137 /** 6138 * WordPress dependencies 6139 */ 6140 6141 6142 const pin = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 6143 xmlns: "http://www.w3.org/2000/svg", 6144 viewBox: "0 0 24 24", 6145 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 6146 d: "m21.5 9.1-6.6-6.6-4.2 5.6c-1.2-.1-2.4.1-3.6.7-.1 0-.1.1-.2.1-.5.3-.9.6-1.2.9l3.7 3.7-5.7 5.7v1.1h1.1l5.7-5.7 3.7 3.7c.4-.4.7-.8.9-1.2.1-.1.1-.2.2-.3.6-1.1.8-2.4.6-3.6l5.6-4.1zm-7.3 3.5.1.9c.1.9 0 1.8-.4 2.6l-6-6c.8-.4 1.7-.5 2.6-.4l.9.1L15 4.9 19.1 9l-4.9 3.6z" 6147 }) 6148 }); 6149 /* harmony default export */ const library_pin = (pin); 6150 6151 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/categories/edit.js 6152 /** 6153 * External dependencies 6154 */ 6155 6156 6157 /** 6158 * WordPress dependencies 6159 */ 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 function CategoriesEdit({ 6171 attributes: { 6172 displayAsDropdown, 6173 showHierarchy, 6174 showPostCounts, 6175 showOnlyTopLevel, 6176 showEmpty, 6177 label, 6178 showLabel, 6179 taxonomy: taxonomySlug 6180 }, 6181 setAttributes, 6182 className 6183 }) { 6184 const selectId = (0,external_wp_compose_namespaceObject.useInstanceId)(CategoriesEdit, 'blocks-category-select'); 6185 const { 6186 records: allTaxonomies, 6187 isResolvingTaxonomies 6188 } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('root', 'taxonomy'); 6189 const taxonomies = allTaxonomies?.filter(t => t.visibility.public); 6190 const taxonomy = taxonomies?.find(t => t.slug === taxonomySlug); 6191 const isHierarchicalTaxonomy = !isResolvingTaxonomies && taxonomy?.hierarchical; 6192 const query = { 6193 per_page: -1, 6194 hide_empty: !showEmpty, 6195 context: 'view' 6196 }; 6197 if (isHierarchicalTaxonomy && showOnlyTopLevel) { 6198 query.parent = 0; 6199 } 6200 const { 6201 records: categories, 6202 isResolving 6203 } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('taxonomy', taxonomySlug, query); 6204 const getCategoriesList = parentId => { 6205 if (!categories?.length) { 6206 return []; 6207 } 6208 if (parentId === null) { 6209 return categories; 6210 } 6211 return categories.filter(({ 6212 parent 6213 }) => parent === parentId); 6214 }; 6215 const toggleAttribute = attributeName => newValue => setAttributes({ 6216 [attributeName]: newValue 6217 }); 6218 const renderCategoryName = name => !name ? (0,external_wp_i18n_namespaceObject.__)('(Untitled)') : (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(name).trim(); 6219 const renderCategoryList = () => { 6220 const parentId = isHierarchicalTaxonomy && showHierarchy ? 0 : null; 6221 const categoriesList = getCategoriesList(parentId); 6222 return categoriesList.map(category => renderCategoryListItem(category)); 6223 }; 6224 const renderCategoryListItem = category => { 6225 const childCategories = getCategoriesList(category.id); 6226 const { 6227 id, 6228 link, 6229 count, 6230 name 6231 } = category; 6232 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("li", { 6233 className: `cat-item cat-item-$id}`, 6234 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 6235 href: link, 6236 target: "_blank", 6237 rel: "noreferrer noopener", 6238 children: renderCategoryName(name) 6239 }), showPostCounts && ` ($count})`, isHierarchicalTaxonomy && showHierarchy && !!childCategories.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 6240 className: "children", 6241 children: childCategories.map(childCategory => renderCategoryListItem(childCategory)) 6242 })] 6243 }, id); 6244 }; 6245 const renderCategoryDropdown = () => { 6246 const parentId = isHierarchicalTaxonomy && showHierarchy ? 0 : null; 6247 const categoriesList = getCategoriesList(parentId); 6248 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 6249 children: [showLabel ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 6250 className: "wp-block-categories__label", 6251 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Label text'), 6252 placeholder: taxonomy.name, 6253 withoutInteractiveFormatting: true, 6254 value: label, 6255 onChange: html => setAttributes({ 6256 label: html 6257 }) 6258 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, { 6259 as: "label", 6260 htmlFor: selectId, 6261 children: label ? label : taxonomy.name 6262 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("select", { 6263 id: selectId, 6264 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("option", { 6265 children: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: taxonomy's singular name */ 6266 (0,external_wp_i18n_namespaceObject.__)('Select %s'), taxonomy.labels.singular_name) 6267 }), categoriesList.map(category => renderCategoryDropdownItem(category, 0))] 6268 })] 6269 }); 6270 }; 6271 const renderCategoryDropdownItem = (category, level) => { 6272 const { 6273 id, 6274 count, 6275 name 6276 } = category; 6277 const childCategories = getCategoriesList(id); 6278 return [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("option", { 6279 className: `level-$level}`, 6280 children: [Array.from({ 6281 length: level * 3 6282 }).map(() => '\xa0'), renderCategoryName(name), showPostCounts && ` ($count})`] 6283 }, id), isHierarchicalTaxonomy && showHierarchy && !!childCategories.length && childCategories.map(childCategory => renderCategoryDropdownItem(childCategory, level + 1))]; 6284 }; 6285 const TagName = !!categories?.length && !displayAsDropdown && !isResolving ? 'ul' : 'div'; 6286 const classes = dist_clsx(className, { 6287 'wp-block-categories-list': !!categories?.length && !displayAsDropdown && !isResolving, 6288 'wp-block-categories-dropdown': !!categories?.length && displayAsDropdown && !isResolving 6289 }); 6290 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 6291 className: classes 6292 }); 6293 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(TagName, { 6294 ...blockProps, 6295 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 6296 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 6297 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 6298 children: [Array.isArray(taxonomies) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 6299 __nextHasNoMarginBottom: true, 6300 __next40pxDefaultSize: true, 6301 label: (0,external_wp_i18n_namespaceObject.__)('Taxonomy'), 6302 options: taxonomies.map(t => ({ 6303 label: t.name, 6304 value: t.slug 6305 })), 6306 value: taxonomySlug, 6307 onChange: selectedTaxonomy => setAttributes({ 6308 taxonomy: selectedTaxonomy 6309 }) 6310 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 6311 __nextHasNoMarginBottom: true, 6312 label: (0,external_wp_i18n_namespaceObject.__)('Display as dropdown'), 6313 checked: displayAsDropdown, 6314 onChange: toggleAttribute('displayAsDropdown') 6315 }), displayAsDropdown && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 6316 __nextHasNoMarginBottom: true, 6317 className: "wp-block-categories__indentation", 6318 label: (0,external_wp_i18n_namespaceObject.__)('Show label'), 6319 checked: showLabel, 6320 onChange: toggleAttribute('showLabel') 6321 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 6322 __nextHasNoMarginBottom: true, 6323 label: (0,external_wp_i18n_namespaceObject.__)('Show post counts'), 6324 checked: showPostCounts, 6325 onChange: toggleAttribute('showPostCounts') 6326 }), isHierarchicalTaxonomy && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 6327 __nextHasNoMarginBottom: true, 6328 label: (0,external_wp_i18n_namespaceObject.__)('Show only top level terms'), 6329 checked: showOnlyTopLevel, 6330 onChange: toggleAttribute('showOnlyTopLevel') 6331 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 6332 __nextHasNoMarginBottom: true, 6333 label: (0,external_wp_i18n_namespaceObject.__)('Show empty terms'), 6334 checked: showEmpty, 6335 onChange: toggleAttribute('showEmpty') 6336 }), isHierarchicalTaxonomy && !showOnlyTopLevel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 6337 __nextHasNoMarginBottom: true, 6338 label: (0,external_wp_i18n_namespaceObject.__)('Show hierarchy'), 6339 checked: showHierarchy, 6340 onChange: toggleAttribute('showHierarchy') 6341 })] 6342 }) 6343 }), isResolving && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 6344 icon: library_pin, 6345 label: (0,external_wp_i18n_namespaceObject.__)('Terms'), 6346 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) 6347 }), !isResolving && categories?.length === 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 6348 children: taxonomy.labels.no_terms 6349 }), !isResolving && categories?.length > 0 && (displayAsDropdown ? renderCategoryDropdown() : renderCategoryList())] 6350 }); 6351 } 6352 6353 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/categories/variations.js 6354 /** 6355 * WordPress dependencies 6356 */ 6357 6358 6359 const variations = [{ 6360 name: 'terms', 6361 title: (0,external_wp_i18n_namespaceObject.__)('Terms List'), 6362 icon: library_category, 6363 attributes: { 6364 // We need to set an attribute here that will be set when inserting the block. 6365 // We cannot leave this empty, as that would be interpreted as the default value, 6366 // which is `category` -- for which we're defining a distinct variation below, 6367 // for backwards compatibility reasons. 6368 // The logical fallback is thus the only other built-in and public taxonomy: Tags. 6369 taxonomy: 'post_tag' 6370 }, 6371 isActive: blockAttributes => 6372 // This variation is used for any taxonomy other than `category`. 6373 blockAttributes.taxonomy !== 'category' 6374 }, { 6375 name: 'categories', 6376 title: (0,external_wp_i18n_namespaceObject.__)('Categories List'), 6377 description: (0,external_wp_i18n_namespaceObject.__)('Display a list of all categories.'), 6378 icon: library_category, 6379 attributes: { 6380 taxonomy: 'category' 6381 }, 6382 isActive: ['taxonomy'], 6383 // The following is needed to prevent "Terms List" from showing up twice in the inserter 6384 // (once for the block, once for the variation). Fortunately, it does not collide with 6385 // `categories` being the default value of the `taxonomy` attribute. 6386 isDefault: true 6387 }]; 6388 /* harmony default export */ const categories_variations = (variations); 6389 6390 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/categories/index.js 6391 /** 6392 * WordPress dependencies 6393 */ 6394 6395 6396 /** 6397 * Internal dependencies 6398 */ 6399 6400 const categories_metadata = { 6401 $schema: "https://schemas.wp.org/trunk/block.json", 6402 apiVersion: 3, 6403 name: "core/categories", 6404 title: "Terms List", 6405 category: "widgets", 6406 description: "Display a list of all terms of a given taxonomy.", 6407 keywords: ["categories"], 6408 textdomain: "default", 6409 attributes: { 6410 taxonomy: { 6411 type: "string", 6412 "default": "category" 6413 }, 6414 displayAsDropdown: { 6415 type: "boolean", 6416 "default": false 6417 }, 6418 showHierarchy: { 6419 type: "boolean", 6420 "default": false 6421 }, 6422 showPostCounts: { 6423 type: "boolean", 6424 "default": false 6425 }, 6426 showOnlyTopLevel: { 6427 type: "boolean", 6428 "default": false 6429 }, 6430 showEmpty: { 6431 type: "boolean", 6432 "default": false 6433 }, 6434 label: { 6435 type: "string", 6436 role: "content" 6437 }, 6438 showLabel: { 6439 type: "boolean", 6440 "default": true 6441 } 6442 }, 6443 usesContext: ["enhancedPagination"], 6444 supports: { 6445 align: true, 6446 html: false, 6447 spacing: { 6448 margin: true, 6449 padding: true, 6450 __experimentalDefaultControls: { 6451 margin: false, 6452 padding: false 6453 } 6454 }, 6455 typography: { 6456 fontSize: true, 6457 lineHeight: true, 6458 __experimentalFontFamily: true, 6459 __experimentalFontWeight: true, 6460 __experimentalFontStyle: true, 6461 __experimentalTextTransform: true, 6462 __experimentalTextDecoration: true, 6463 __experimentalLetterSpacing: true, 6464 __experimentalDefaultControls: { 6465 fontSize: true 6466 } 6467 }, 6468 interactivity: { 6469 clientNavigation: true 6470 }, 6471 __experimentalBorder: { 6472 radius: true, 6473 color: true, 6474 width: true, 6475 style: true, 6476 __experimentalDefaultControls: { 6477 radius: true, 6478 color: true, 6479 width: true, 6480 style: true 6481 } 6482 } 6483 }, 6484 editorStyle: "wp-block-categories-editor", 6485 style: "wp-block-categories" 6486 }; 6487 6488 6489 const { 6490 name: categories_name 6491 } = categories_metadata; 6492 6493 const categories_settings = { 6494 icon: library_category, 6495 example: {}, 6496 edit: CategoriesEdit, 6497 variations: categories_variations 6498 }; 6499 const categories_init = () => initBlock({ 6500 name: categories_name, 6501 metadata: categories_metadata, 6502 settings: categories_settings 6503 }); 6504 6505 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/classic.js 6506 /** 6507 * WordPress dependencies 6508 */ 6509 6510 6511 const classic = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 6512 viewBox: "0 0 24 24", 6513 xmlns: "http://www.w3.org/2000/svg", 6514 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 6515 d: "M20 6H4c-1.1 0-2 .9-2 2v9c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm.5 11c0 .3-.2.5-.5.5H4c-.3 0-.5-.2-.5-.5V8c0-.3.2-.5.5-.5h16c.3 0 .5.2.5.5v9zM10 10H8v2h2v-2zm-5 2h2v-2H5v2zm8-2h-2v2h2v-2zm-5 6h8v-2H8v2zm6-4h2v-2h-2v2zm3 0h2v-2h-2v2zm0 4h2v-2h-2v2zM5 16h2v-2H5v2z" 6516 }) 6517 }); 6518 /* harmony default export */ const library_classic = (classic); 6519 6520 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/freeform/convert-to-blocks-button.js 6521 /** 6522 * WordPress dependencies 6523 */ 6524 6525 6526 6527 6528 6529 6530 const ConvertToBlocksButton = ({ 6531 clientId 6532 }) => { 6533 const { 6534 replaceBlocks 6535 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 6536 const block = (0,external_wp_data_namespaceObject.useSelect)(select => { 6537 return select(external_wp_blockEditor_namespaceObject.store).getBlock(clientId); 6538 }, [clientId]); 6539 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 6540 onClick: () => replaceBlocks(block.clientId, (0,external_wp_blocks_namespaceObject.rawHandler)({ 6541 HTML: (0,external_wp_blocks_namespaceObject.serialize)(block) 6542 })), 6543 children: (0,external_wp_i18n_namespaceObject.__)('Convert to blocks') 6544 }); 6545 }; 6546 /* harmony default export */ const convert_to_blocks_button = (ConvertToBlocksButton); 6547 6548 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/fullscreen.js 6549 /** 6550 * WordPress dependencies 6551 */ 6552 6553 6554 const fullscreen = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 6555 xmlns: "http://www.w3.org/2000/svg", 6556 viewBox: "0 0 24 24", 6557 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 6558 d: "M6 4a2 2 0 0 0-2 2v3h1.5V6a.5.5 0 0 1 .5-.5h3V4H6Zm3 14.5H6a.5.5 0 0 1-.5-.5v-3H4v3a2 2 0 0 0 2 2h3v-1.5Zm6 1.5v-1.5h3a.5.5 0 0 0 .5-.5v-3H20v3a2 2 0 0 1-2 2h-3Zm3-16a2 2 0 0 1 2 2v3h-1.5V6a.5.5 0 0 0-.5-.5h-3V4h3Z" 6559 }) 6560 }); 6561 /* harmony default export */ const library_fullscreen = (fullscreen); 6562 6563 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/freeform/modal.js 6564 /** 6565 * WordPress dependencies 6566 */ 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 function ModalAuxiliaryActions({ 6578 onClick, 6579 isModalFullScreen 6580 }) { 6581 // 'small' to match the rules in editor.scss. 6582 const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('small', '<'); 6583 if (isMobileViewport) { 6584 return null; 6585 } 6586 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 6587 size: "small", 6588 onClick: onClick, 6589 icon: library_fullscreen, 6590 isPressed: isModalFullScreen, 6591 label: isModalFullScreen ? (0,external_wp_i18n_namespaceObject.__)('Exit fullscreen') : (0,external_wp_i18n_namespaceObject.__)('Enter fullscreen') 6592 }); 6593 } 6594 function ClassicEdit(props) { 6595 const styles = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings().styles); 6596 (0,external_wp_element_namespaceObject.useEffect)(() => { 6597 const { 6598 baseURL, 6599 suffix, 6600 settings 6601 } = window.wpEditorL10n.tinymce; 6602 window.tinymce.EditorManager.overrideDefaults({ 6603 base_url: baseURL, 6604 suffix 6605 }); 6606 window.wp.oldEditor.initialize(props.id, { 6607 tinymce: { 6608 ...settings, 6609 setup(editor) { 6610 editor.on('init', () => { 6611 const doc = editor.getDoc(); 6612 styles.forEach(({ 6613 css 6614 }) => { 6615 const styleEl = doc.createElement('style'); 6616 styleEl.innerHTML = css; 6617 doc.head.appendChild(styleEl); 6618 }); 6619 }); 6620 } 6621 } 6622 }); 6623 return () => { 6624 window.wp.oldEditor.remove(props.id); 6625 }; 6626 }, []); 6627 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("textarea", { 6628 ...props 6629 }); 6630 } 6631 function ModalEdit(props) { 6632 const { 6633 clientId, 6634 attributes: { 6635 content 6636 }, 6637 setAttributes, 6638 onReplace 6639 } = props; 6640 const [isOpen, setOpen] = (0,external_wp_element_namespaceObject.useState)(false); 6641 const [isModalFullScreen, setIsModalFullScreen] = (0,external_wp_element_namespaceObject.useState)(false); 6642 const id = `editor-$clientId}`; 6643 const onClose = () => content ? setOpen(false) : onReplace([]); 6644 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 6645 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 6646 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 6647 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 6648 onClick: () => setOpen(true), 6649 children: (0,external_wp_i18n_namespaceObject.__)('Edit') 6650 }) 6651 }) 6652 }), content && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_element_namespaceObject.RawHTML, { 6653 children: content 6654 }), (isOpen || !content) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Modal, { 6655 title: (0,external_wp_i18n_namespaceObject.__)('Classic Editor'), 6656 onRequestClose: onClose, 6657 shouldCloseOnClickOutside: false, 6658 overlayClassName: "block-editor-freeform-modal", 6659 isFullScreen: isModalFullScreen, 6660 className: "block-editor-freeform-modal__content", 6661 headerActions: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ModalAuxiliaryActions, { 6662 onClick: () => setIsModalFullScreen(!isModalFullScreen), 6663 isModalFullScreen: isModalFullScreen 6664 }), 6665 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ClassicEdit, { 6666 id: id, 6667 defaultValue: content 6668 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, { 6669 className: "block-editor-freeform-modal__actions", 6670 justify: "flex-end", 6671 expanded: false, 6672 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { 6673 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 6674 __next40pxDefaultSize: true, 6675 variant: "tertiary", 6676 onClick: onClose, 6677 children: (0,external_wp_i18n_namespaceObject.__)('Cancel') 6678 }) 6679 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { 6680 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 6681 __next40pxDefaultSize: true, 6682 variant: "primary", 6683 onClick: () => { 6684 setAttributes({ 6685 content: window.wp.oldEditor.getContent(id) 6686 }); 6687 setOpen(false); 6688 }, 6689 children: (0,external_wp_i18n_namespaceObject.__)('Save') 6690 }) 6691 })] 6692 })] 6693 })] 6694 }); 6695 } 6696 6697 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/freeform/edit.js 6698 /** 6699 * WordPress dependencies 6700 */ 6701 6702 6703 6704 6705 6706 6707 6708 6709 /** 6710 * Internal dependencies 6711 */ 6712 6713 6714 6715 6716 6717 const { 6718 wp 6719 } = window; 6720 function isTmceEmpty(editor) { 6721 // When tinyMce is empty the content seems to be: 6722 // <p><br data-mce-bogus="1"></p> 6723 // avoid expensive checks for large documents 6724 const body = editor.getBody(); 6725 if (body.childNodes.length > 1) { 6726 return false; 6727 } else if (body.childNodes.length === 0) { 6728 return true; 6729 } 6730 if (body.childNodes[0].childNodes.length > 1) { 6731 return false; 6732 } 6733 return /^\n?$/.test(body.innerText || body.textContent); 6734 } 6735 function FreeformEdit(props) { 6736 const { 6737 clientId 6738 } = props; 6739 const canRemove = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).canRemoveBlock(clientId), [clientId]); 6740 const [isIframed, setIsIframed] = (0,external_wp_element_namespaceObject.useState)(false); 6741 const ref = (0,external_wp_compose_namespaceObject.useRefEffect)(element => { 6742 setIsIframed(element.ownerDocument !== document); 6743 }, []); 6744 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 6745 children: [canRemove && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 6746 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 6747 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(convert_to_blocks_button, { 6748 clientId: clientId 6749 }) 6750 }) 6751 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 6752 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 6753 ref 6754 }), 6755 children: isIframed ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ModalEdit, { 6756 ...props 6757 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(edit_ClassicEdit, { 6758 ...props 6759 }) 6760 })] 6761 }); 6762 } 6763 function edit_ClassicEdit({ 6764 clientId, 6765 attributes: { 6766 content 6767 }, 6768 setAttributes, 6769 onReplace 6770 }) { 6771 const { 6772 getMultiSelectedBlockClientIds 6773 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 6774 const didMountRef = (0,external_wp_element_namespaceObject.useRef)(false); 6775 (0,external_wp_element_namespaceObject.useEffect)(() => { 6776 if (!didMountRef.current) { 6777 return; 6778 } 6779 const editor = window.tinymce.get(`editor-$clientId}`); 6780 if (!editor) { 6781 return; 6782 } 6783 const currentContent = editor.getContent(); 6784 if (currentContent !== content) { 6785 editor.setContent(content || ''); 6786 } 6787 }, [clientId, content]); 6788 (0,external_wp_element_namespaceObject.useEffect)(() => { 6789 const { 6790 baseURL, 6791 suffix 6792 } = window.wpEditorL10n.tinymce; 6793 didMountRef.current = true; 6794 window.tinymce.EditorManager.overrideDefaults({ 6795 base_url: baseURL, 6796 suffix 6797 }); 6798 function onSetup(editor) { 6799 let bookmark; 6800 if (content) { 6801 editor.on('loadContent', () => editor.setContent(content)); 6802 } 6803 editor.on('blur', () => { 6804 bookmark = editor.selection.getBookmark(2, true); 6805 // There is an issue with Chrome and the editor.focus call in core at https://core.trac.wordpress.org/browser/trunk/src/js/_enqueues/lib/link.js#L451. 6806 // This causes a scroll to the top of editor content on return from some content updating dialogs so tracking 6807 // scroll position until this is fixed in core. 6808 const scrollContainer = document.querySelector('.interface-interface-skeleton__content'); 6809 const scrollPosition = scrollContainer.scrollTop; 6810 6811 // Only update attributes if we aren't multi-selecting blocks. 6812 // Updating during multi-selection can overwrite attributes of other blocks. 6813 if (!getMultiSelectedBlockClientIds()?.length) { 6814 setAttributes({ 6815 content: editor.getContent() 6816 }); 6817 } 6818 editor.once('focus', () => { 6819 if (bookmark) { 6820 editor.selection.moveToBookmark(bookmark); 6821 if (scrollContainer.scrollTop !== scrollPosition) { 6822 scrollContainer.scrollTop = scrollPosition; 6823 } 6824 } 6825 }); 6826 return false; 6827 }); 6828 editor.on('mousedown touchstart', () => { 6829 bookmark = null; 6830 }); 6831 const debouncedOnChange = (0,external_wp_compose_namespaceObject.debounce)(() => { 6832 const value = editor.getContent(); 6833 if (value !== editor._lastChange) { 6834 editor._lastChange = value; 6835 setAttributes({ 6836 content: value 6837 }); 6838 } 6839 }, 250); 6840 editor.on('Paste Change input Undo Redo', debouncedOnChange); 6841 6842 // We need to cancel the debounce call because when we remove 6843 // the editor (onUnmount) this callback is executed in 6844 // another tick. This results in setting the content to empty. 6845 editor.on('remove', debouncedOnChange.cancel); 6846 editor.on('keydown', event => { 6847 if (external_wp_keycodes_namespaceObject.isKeyboardEvent.primary(event, 'z')) { 6848 // Prevent the gutenberg undo kicking in so TinyMCE undo stack works as expected. 6849 event.stopPropagation(); 6850 } 6851 if ((event.keyCode === external_wp_keycodes_namespaceObject.BACKSPACE || event.keyCode === external_wp_keycodes_namespaceObject.DELETE) && isTmceEmpty(editor)) { 6852 // Delete the block. 6853 onReplace([]); 6854 event.preventDefault(); 6855 event.stopImmediatePropagation(); 6856 } 6857 const { 6858 altKey 6859 } = event; 6860 /* 6861 * Prevent Mousetrap from kicking in: TinyMCE already uses its own 6862 * `alt+f10` shortcut to focus its toolbar. 6863 */ 6864 if (altKey && event.keyCode === external_wp_keycodes_namespaceObject.F10) { 6865 event.stopPropagation(); 6866 } 6867 }); 6868 editor.on('init', () => { 6869 const rootNode = editor.getBody(); 6870 6871 // Create the toolbar by refocussing the editor. 6872 if (rootNode.ownerDocument.activeElement === rootNode) { 6873 rootNode.blur(); 6874 editor.focus(); 6875 } 6876 }); 6877 } 6878 function initialize() { 6879 const { 6880 settings 6881 } = window.wpEditorL10n.tinymce; 6882 wp.oldEditor.initialize(`editor-$clientId}`, { 6883 tinymce: { 6884 ...settings, 6885 inline: true, 6886 content_css: false, 6887 fixed_toolbar_container: `#toolbar-$clientId}`, 6888 setup: onSetup 6889 } 6890 }); 6891 } 6892 function onReadyStateChange() { 6893 if (document.readyState === 'complete') { 6894 initialize(); 6895 } 6896 } 6897 if (document.readyState === 'complete') { 6898 initialize(); 6899 } else { 6900 document.addEventListener('readystatechange', onReadyStateChange); 6901 } 6902 return () => { 6903 document.removeEventListener('readystatechange', onReadyStateChange); 6904 wp.oldEditor.remove(`editor-$clientId}`); 6905 didMountRef.current = false; 6906 }; 6907 }, []); 6908 function focus() { 6909 const editor = window.tinymce.get(`editor-$clientId}`); 6910 if (editor) { 6911 editor.focus(); 6912 } 6913 } 6914 function onToolbarKeyDown(event) { 6915 // Prevent WritingFlow from kicking in and allow arrows navigation on the toolbar. 6916 event.stopPropagation(); 6917 // Prevent Mousetrap from moving focus to the top toolbar when pressing `alt+f10` on this block toolbar. 6918 event.nativeEvent.stopImmediatePropagation(); 6919 } 6920 6921 // Disable reasons: 6922 // 6923 // jsx-a11y/no-static-element-interactions 6924 // - the toolbar itself is non-interactive, but must capture events 6925 // from the KeyboardShortcuts component to stop their propagation. 6926 6927 /* eslint-disable jsx-a11y/no-static-element-interactions */ 6928 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 6929 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 6930 id: `toolbar-$clientId}`, 6931 className: "block-library-classic__toolbar", 6932 onClick: focus, 6933 "data-placeholder": (0,external_wp_i18n_namespaceObject.__)('Classic'), 6934 onKeyDown: onToolbarKeyDown 6935 }, "toolbar"), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 6936 id: `editor-$clientId}`, 6937 className: "wp-block-freeform block-library-rich-text__tinymce" 6938 }, "editor")] 6939 }); 6940 /* eslint-enable jsx-a11y/no-static-element-interactions */ 6941 } 6942 6943 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/freeform/save.js 6944 /** 6945 * WordPress dependencies 6946 */ 6947 6948 6949 function freeform_save_save({ 6950 attributes 6951 }) { 6952 const { 6953 content 6954 } = attributes; 6955 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_element_namespaceObject.RawHTML, { 6956 children: content 6957 }); 6958 } 6959 6960 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/freeform/index.js 6961 /** 6962 * WordPress dependencies 6963 */ 6964 6965 6966 /** 6967 * Internal dependencies 6968 */ 6969 6970 6971 const freeform_metadata = { 6972 $schema: "https://schemas.wp.org/trunk/block.json", 6973 apiVersion: 3, 6974 name: "core/freeform", 6975 title: "Classic", 6976 category: "text", 6977 description: "Use the classic WordPress editor.", 6978 textdomain: "default", 6979 attributes: { 6980 content: { 6981 type: "string", 6982 source: "raw" 6983 } 6984 }, 6985 supports: { 6986 className: false, 6987 customClassName: false, 6988 reusable: false 6989 }, 6990 editorStyle: "wp-block-freeform-editor" 6991 }; 6992 6993 const { 6994 name: freeform_name 6995 } = freeform_metadata; 6996 6997 const freeform_settings = { 6998 icon: library_classic, 6999 edit: FreeformEdit, 7000 save: freeform_save_save 7001 }; 7002 const freeform_init = () => initBlock({ 7003 name: freeform_name, 7004 metadata: freeform_metadata, 7005 settings: freeform_settings 7006 }); 7007 7008 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/code.js 7009 /** 7010 * WordPress dependencies 7011 */ 7012 7013 7014 const code = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 7015 viewBox: "0 0 24 24", 7016 xmlns: "http://www.w3.org/2000/svg", 7017 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 7018 d: "M20.8 10.7l-4.3-4.3-1.1 1.1 4.3 4.3c.1.1.1.3 0 .4l-4.3 4.3 1.1 1.1 4.3-4.3c.7-.8.7-1.9 0-2.6zM4.2 11.8l4.3-4.3-1-1-4.3 4.3c-.7.7-.7 1.8 0 2.5l4.3 4.3 1.1-1.1-4.3-4.3c-.2-.1-.2-.3-.1-.4z" 7019 }) 7020 }); 7021 /* harmony default export */ const library_code = (code); 7022 7023 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/code/edit.js 7024 /** 7025 * WordPress dependencies 7026 */ 7027 7028 7029 7030 7031 function CodeEdit({ 7032 attributes, 7033 setAttributes, 7034 onRemove, 7035 insertBlocksAfter, 7036 mergeBlocks 7037 }) { 7038 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 7039 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("pre", { 7040 ...blockProps, 7041 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 7042 tagName: "code", 7043 identifier: "content", 7044 value: attributes.content, 7045 onChange: content => setAttributes({ 7046 content 7047 }), 7048 onRemove: onRemove, 7049 onMerge: mergeBlocks, 7050 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write code…'), 7051 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Code'), 7052 preserveWhiteSpace: true, 7053 __unstablePastePlainText: true, 7054 __unstableOnSplitAtDoubleLineEnd: () => insertBlocksAfter((0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getDefaultBlockName)())) 7055 }) 7056 }); 7057 } 7058 7059 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/code/utils.js 7060 /** 7061 * WordPress dependencies 7062 */ 7063 7064 7065 /** 7066 * Escapes ampersands, shortcodes, and links. 7067 * 7068 * @param {string} content The content of a code block. 7069 * @return {string} The given content with some characters escaped. 7070 */ 7071 function utils_escape(content) { 7072 return (0,external_wp_compose_namespaceObject.pipe)(escapeOpeningSquareBrackets, escapeProtocolInIsolatedUrls)(content || ''); 7073 } 7074 7075 /** 7076 * Returns the given content with all opening shortcode characters converted 7077 * into their HTML entity counterpart (i.e. [ => [). For instance, a 7078 * shortcode like [embed] becomes [embed] 7079 * 7080 * This function replicates the escaping of HTML tags, where a tag like 7081 * <strong> becomes <strong>. 7082 * 7083 * @param {string} content The content of a code block. 7084 * @return {string} The given content with its opening shortcode characters 7085 * converted into their HTML entity counterpart 7086 * (i.e. [ => [) 7087 */ 7088 function escapeOpeningSquareBrackets(content) { 7089 return content.replace(/\[/g, '['); 7090 } 7091 7092 /** 7093 * Converts the first two forward slashes of any isolated URL into their HTML 7094 * counterparts (i.e. // => //). For instance, https://youtube.com/watch?x 7095 * becomes https://youtube.com/watch?x. 7096 * 7097 * An isolated URL is a URL that sits in its own line, surrounded only by spacing 7098 * characters. 7099 * 7100 * See https://github.com/WordPress/wordpress-develop/blob/5.1.1/src/wp-includes/class-wp-embed.php#L403 7101 * 7102 * @param {string} content The content of a code block. 7103 * @return {string} The given content with its ampersands converted into 7104 * their HTML entity counterpart (i.e. & => &) 7105 */ 7106 function escapeProtocolInIsolatedUrls(content) { 7107 return content.replace(/^(\s*https?:)\/\/([^\s<>"]+\s*)$/m, '$1//$2'); 7108 } 7109 7110 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/code/save.js 7111 /** 7112 * WordPress dependencies 7113 */ 7114 7115 7116 /** 7117 * Internal dependencies 7118 */ 7119 7120 7121 function code_save_save({ 7122 attributes 7123 }) { 7124 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("pre", { 7125 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 7126 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 7127 tagName: "code" 7128 // To do: `escape` encodes characters in shortcodes and URLs to 7129 // prevent embedding in PHP. Ideally checks for the code block, 7130 // or pre/code tags, should be made on the PHP side? 7131 , 7132 value: utils_escape(typeof attributes.content === 'string' ? attributes.content : attributes.content.toHTMLString({ 7133 preserveWhiteSpace: true 7134 })) 7135 }) 7136 }); 7137 } 7138 7139 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/code/transforms.js 7140 /** 7141 * WordPress dependencies 7142 */ 7143 7144 7145 7146 /** 7147 * Internal dependencies 7148 */ 7149 7150 const code_transforms_transforms = { 7151 from: [{ 7152 type: 'enter', 7153 regExp: /^```$/, 7154 transform: () => (0,external_wp_blocks_namespaceObject.createBlock)('core/code') 7155 }, { 7156 type: 'block', 7157 blocks: ['core/paragraph'], 7158 transform: ({ 7159 content, 7160 metadata 7161 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/code', { 7162 content, 7163 metadata: getTransformedMetadata(metadata, 'core/code') 7164 }) 7165 }, { 7166 type: 'block', 7167 blocks: ['core/html'], 7168 transform: ({ 7169 content: text, 7170 metadata 7171 }) => { 7172 return (0,external_wp_blocks_namespaceObject.createBlock)('core/code', { 7173 // The HTML is plain text (with plain line breaks), so 7174 // convert it to rich text. 7175 content: (0,external_wp_richText_namespaceObject.toHTMLString)({ 7176 value: (0,external_wp_richText_namespaceObject.create)({ 7177 text 7178 }) 7179 }), 7180 metadata: getTransformedMetadata(metadata, 'core/code') 7181 }); 7182 } 7183 }, { 7184 type: 'raw', 7185 isMatch: node => node.nodeName === 'PRE' && node.children.length === 1 && node.firstChild.nodeName === 'CODE', 7186 schema: { 7187 pre: { 7188 children: { 7189 code: { 7190 children: { 7191 '#text': {} 7192 } 7193 } 7194 } 7195 } 7196 } 7197 }], 7198 to: [{ 7199 type: 'block', 7200 blocks: ['core/paragraph'], 7201 transform: ({ 7202 content, 7203 metadata 7204 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 7205 content, 7206 metadata: getTransformedMetadata(metadata, 'core/paragraph') 7207 }) 7208 }] 7209 }; 7210 /* harmony default export */ const code_transforms = (code_transforms_transforms); 7211 7212 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/code/index.js 7213 /** 7214 * WordPress dependencies 7215 */ 7216 7217 7218 7219 /** 7220 * Internal dependencies 7221 */ 7222 7223 7224 const code_metadata = { 7225 $schema: "https://schemas.wp.org/trunk/block.json", 7226 apiVersion: 3, 7227 name: "core/code", 7228 title: "Code", 7229 category: "text", 7230 description: "Display code snippets that respect your spacing and tabs.", 7231 textdomain: "default", 7232 attributes: { 7233 content: { 7234 type: "rich-text", 7235 source: "rich-text", 7236 selector: "code", 7237 __unstablePreserveWhiteSpace: true 7238 } 7239 }, 7240 supports: { 7241 align: ["wide"], 7242 anchor: true, 7243 typography: { 7244 fontSize: true, 7245 lineHeight: true, 7246 __experimentalFontFamily: true, 7247 __experimentalFontWeight: true, 7248 __experimentalFontStyle: true, 7249 __experimentalTextTransform: true, 7250 __experimentalTextDecoration: true, 7251 __experimentalLetterSpacing: true, 7252 __experimentalDefaultControls: { 7253 fontSize: true 7254 } 7255 }, 7256 spacing: { 7257 margin: ["top", "bottom"], 7258 padding: true, 7259 __experimentalDefaultControls: { 7260 margin: false, 7261 padding: false 7262 } 7263 }, 7264 __experimentalBorder: { 7265 radius: true, 7266 color: true, 7267 width: true, 7268 style: true, 7269 __experimentalDefaultControls: { 7270 width: true, 7271 color: true 7272 } 7273 }, 7274 color: { 7275 text: true, 7276 background: true, 7277 gradients: true, 7278 __experimentalDefaultControls: { 7279 background: true, 7280 text: true 7281 } 7282 }, 7283 interactivity: { 7284 clientNavigation: true 7285 } 7286 }, 7287 style: "wp-block-code" 7288 }; 7289 7290 7291 const { 7292 name: code_name 7293 } = code_metadata; 7294 7295 const code_settings = { 7296 icon: library_code, 7297 example: { 7298 attributes: { 7299 /* eslint-disable @wordpress/i18n-no-collapsible-whitespace */ 7300 // translators: Preserve \n markers for line breaks 7301 content: (0,external_wp_i18n_namespaceObject.__)('// A “block” is the abstract term used\n// to describe units of markup that\n// when composed together, form the\n// content or layout of a page.\nregisterBlockType( name, settings );') 7302 /* eslint-enable @wordpress/i18n-no-collapsible-whitespace */ 7303 } 7304 }, 7305 merge(attributes, attributesToMerge) { 7306 return { 7307 content: attributes.content + '\n\n' + attributesToMerge.content 7308 }; 7309 }, 7310 transforms: code_transforms, 7311 edit: CodeEdit, 7312 save: code_save_save 7313 }; 7314 const code_init = () => initBlock({ 7315 name: code_name, 7316 metadata: code_metadata, 7317 settings: code_settings 7318 }); 7319 7320 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/column.js 7321 /** 7322 * WordPress dependencies 7323 */ 7324 7325 7326 const column = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 7327 xmlns: "http://www.w3.org/2000/svg", 7328 viewBox: "0 0 24 24", 7329 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 7330 d: "M19 6H6c-1.1 0-2 .9-2 2v9c0 1.1.9 2 2 2h13c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zM6 17.5c-.3 0-.5-.2-.5-.5V8c0-.3.2-.5.5-.5h3v10H6zm13.5-.5c0 .3-.2.5-.5.5h-3v-10h3c.3 0 .5.2.5.5v9z" 7331 }) 7332 }); 7333 /* harmony default export */ const library_column = (column); 7334 7335 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/column/deprecated.js 7336 /** 7337 * External dependencies 7338 */ 7339 7340 7341 /** 7342 * WordPress dependencies 7343 */ 7344 7345 7346 const column_deprecated_deprecated = [{ 7347 attributes: { 7348 verticalAlignment: { 7349 type: 'string' 7350 }, 7351 width: { 7352 type: 'number', 7353 min: 0, 7354 max: 100 7355 } 7356 }, 7357 isEligible({ 7358 width 7359 }) { 7360 return isFinite(width); 7361 }, 7362 migrate(attributes) { 7363 return { 7364 ...attributes, 7365 width: `$attributes.width}%` 7366 }; 7367 }, 7368 save({ 7369 attributes 7370 }) { 7371 const { 7372 verticalAlignment, 7373 width 7374 } = attributes; 7375 const wrapperClasses = dist_clsx({ 7376 [`is-vertically-aligned-$verticalAlignment}`]: verticalAlignment 7377 }); 7378 const style = { 7379 flexBasis: width + '%' 7380 }; 7381 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 7382 className: wrapperClasses, 7383 style: style, 7384 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 7385 }); 7386 } 7387 }]; 7388 /* harmony default export */ const column_deprecated = (column_deprecated_deprecated); 7389 7390 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/column/edit.js 7391 /** 7392 * External dependencies 7393 */ 7394 7395 7396 /** 7397 * WordPress dependencies 7398 */ 7399 7400 7401 7402 7403 7404 7405 7406 function ColumnInspectorControls({ 7407 width, 7408 setAttributes 7409 }) { 7410 const [availableUnits] = (0,external_wp_blockEditor_namespaceObject.useSettings)('spacing.units'); 7411 const units = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({ 7412 availableUnits: availableUnits || ['%', 'px', 'em', 'rem', 'vw'] 7413 }); 7414 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 7415 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 7416 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalUnitControl, { 7417 label: (0,external_wp_i18n_namespaceObject.__)('Width'), 7418 __unstableInputWidth: "calc(50% - 8px)", 7419 __next40pxDefaultSize: true, 7420 value: width || '', 7421 onChange: nextWidth => { 7422 nextWidth = 0 > parseFloat(nextWidth) ? '0' : nextWidth; 7423 setAttributes({ 7424 width: nextWidth 7425 }); 7426 }, 7427 units: units 7428 }) 7429 }); 7430 } 7431 function ColumnEdit({ 7432 attributes: { 7433 verticalAlignment, 7434 width, 7435 templateLock, 7436 allowedBlocks 7437 }, 7438 setAttributes, 7439 clientId 7440 }) { 7441 const classes = dist_clsx('block-core-columns', { 7442 [`is-vertically-aligned-$verticalAlignment}`]: verticalAlignment 7443 }); 7444 const { 7445 columnsIds, 7446 hasChildBlocks, 7447 rootClientId 7448 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 7449 const { 7450 getBlockOrder, 7451 getBlockRootClientId 7452 } = select(external_wp_blockEditor_namespaceObject.store); 7453 const rootId = getBlockRootClientId(clientId); 7454 return { 7455 hasChildBlocks: getBlockOrder(clientId).length > 0, 7456 rootClientId: rootId, 7457 columnsIds: getBlockOrder(rootId) 7458 }; 7459 }, [clientId]); 7460 const { 7461 updateBlockAttributes 7462 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 7463 const updateAlignment = value => { 7464 // Update own alignment. 7465 setAttributes({ 7466 verticalAlignment: value 7467 }); 7468 // Reset parent Columns block. 7469 updateBlockAttributes(rootClientId, { 7470 verticalAlignment: null 7471 }); 7472 }; 7473 const widthWithUnit = Number.isFinite(width) ? width + '%' : width; 7474 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 7475 className: classes, 7476 style: widthWithUnit ? { 7477 flexBasis: widthWithUnit 7478 } : undefined 7479 }); 7480 const columnsCount = columnsIds.length; 7481 const currentColumnPosition = columnsIds.indexOf(clientId) + 1; 7482 const label = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Block label (i.e. "Block: Column"), 2: Position of the selected block, 3: Total number of sibling blocks of the same type */ 7483 (0,external_wp_i18n_namespaceObject.__)('%1$s (%2$d of %3$d)'), blockProps['aria-label'], currentColumnPosition, columnsCount); 7484 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)({ 7485 ...blockProps, 7486 'aria-label': label 7487 }, { 7488 templateLock, 7489 allowedBlocks, 7490 renderAppender: hasChildBlocks ? undefined : external_wp_blockEditor_namespaceObject.InnerBlocks.ButtonBlockAppender 7491 }); 7492 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 7493 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 7494 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockVerticalAlignmentToolbar, { 7495 onChange: updateAlignment, 7496 value: verticalAlignment, 7497 controls: ['top', 'center', 'bottom', 'stretch'] 7498 }) 7499 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 7500 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ColumnInspectorControls, { 7501 width: width, 7502 setAttributes: setAttributes 7503 }) 7504 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 7505 ...innerBlocksProps 7506 })] 7507 }); 7508 } 7509 /* harmony default export */ const column_edit = (ColumnEdit); 7510 7511 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/column/save.js 7512 /** 7513 * External dependencies 7514 */ 7515 7516 7517 /** 7518 * WordPress dependencies 7519 */ 7520 7521 7522 function column_save_save({ 7523 attributes 7524 }) { 7525 const { 7526 verticalAlignment, 7527 width 7528 } = attributes; 7529 const wrapperClasses = dist_clsx({ 7530 [`is-vertically-aligned-$verticalAlignment}`]: verticalAlignment 7531 }); 7532 let style; 7533 if (width && /\d/.test(width)) { 7534 // Numbers are handled for backward compatibility as they can be still provided with templates. 7535 let flexBasis = Number.isFinite(width) ? width + '%' : width; 7536 // In some cases we need to round the width to a shorter float. 7537 if (!Number.isFinite(width) && width?.endsWith('%')) { 7538 const multiplier = 1000000000000; 7539 // Shrink the number back to a reasonable float. 7540 flexBasis = Math.round(Number.parseFloat(width) * multiplier) / multiplier + '%'; 7541 } 7542 style = { 7543 flexBasis 7544 }; 7545 } 7546 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save({ 7547 className: wrapperClasses, 7548 style 7549 }); 7550 const innerBlocksProps = external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(blockProps); 7551 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 7552 ...innerBlocksProps 7553 }); 7554 } 7555 7556 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/column/index.js 7557 /** 7558 * WordPress dependencies 7559 */ 7560 7561 7562 /** 7563 * Internal dependencies 7564 */ 7565 7566 7567 7568 const column_metadata = { 7569 $schema: "https://schemas.wp.org/trunk/block.json", 7570 apiVersion: 3, 7571 name: "core/column", 7572 title: "Column", 7573 category: "design", 7574 parent: ["core/columns"], 7575 description: "A single column within a columns block.", 7576 textdomain: "default", 7577 attributes: { 7578 verticalAlignment: { 7579 type: "string" 7580 }, 7581 width: { 7582 type: "string" 7583 }, 7584 allowedBlocks: { 7585 type: "array" 7586 }, 7587 templateLock: { 7588 type: ["string", "boolean"], 7589 "enum": ["all", "insert", "contentOnly", false] 7590 } 7591 }, 7592 supports: { 7593 __experimentalOnEnter: true, 7594 anchor: true, 7595 reusable: false, 7596 html: false, 7597 color: { 7598 gradients: true, 7599 heading: true, 7600 button: true, 7601 link: true, 7602 __experimentalDefaultControls: { 7603 background: true, 7604 text: true 7605 } 7606 }, 7607 shadow: true, 7608 spacing: { 7609 blockGap: true, 7610 padding: true, 7611 __experimentalDefaultControls: { 7612 padding: true, 7613 blockGap: true 7614 } 7615 }, 7616 __experimentalBorder: { 7617 color: true, 7618 radius: true, 7619 style: true, 7620 width: true, 7621 __experimentalDefaultControls: { 7622 color: true, 7623 radius: true, 7624 style: true, 7625 width: true 7626 } 7627 }, 7628 typography: { 7629 fontSize: true, 7630 lineHeight: true, 7631 __experimentalFontFamily: true, 7632 __experimentalFontWeight: true, 7633 __experimentalFontStyle: true, 7634 __experimentalTextTransform: true, 7635 __experimentalTextDecoration: true, 7636 __experimentalLetterSpacing: true, 7637 __experimentalDefaultControls: { 7638 fontSize: true 7639 } 7640 }, 7641 layout: true, 7642 interactivity: { 7643 clientNavigation: true 7644 } 7645 } 7646 }; 7647 7648 const { 7649 name: column_name 7650 } = column_metadata; 7651 7652 const column_settings = { 7653 icon: library_column, 7654 edit: column_edit, 7655 save: column_save_save, 7656 deprecated: column_deprecated 7657 }; 7658 const column_init = () => initBlock({ 7659 name: column_name, 7660 metadata: column_metadata, 7661 settings: column_settings 7662 }); 7663 7664 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/columns.js 7665 /** 7666 * WordPress dependencies 7667 */ 7668 7669 7670 const columns = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 7671 viewBox: "0 0 24 24", 7672 xmlns: "http://www.w3.org/2000/svg", 7673 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 7674 fillRule: "evenodd", 7675 clipRule: "evenodd", 7676 d: "M15 7.5h-5v10h5v-10Zm1.5 0v10H19a.5.5 0 0 0 .5-.5V8a.5.5 0 0 0-.5-.5h-2.5ZM6 7.5h2.5v10H6a.5.5 0 0 1-.5-.5V8a.5.5 0 0 1 .5-.5ZM6 6h13a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2Z" 7677 }) 7678 }); 7679 /* harmony default export */ const library_columns = (columns); 7680 7681 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/columns/deprecated.js 7682 /** 7683 * External dependencies 7684 */ 7685 7686 7687 /** 7688 * WordPress dependencies 7689 */ 7690 7691 7692 7693 /** 7694 * Given an HTML string for a deprecated columns inner block, returns the 7695 * column index to which the migrated inner block should be assigned. Returns 7696 * undefined if the inner block was not assigned to a column. 7697 * 7698 * @param {string} originalContent Deprecated Columns inner block HTML. 7699 * 7700 * @return {number | undefined} Column to which inner block is to be assigned. 7701 */ 7702 7703 function getDeprecatedLayoutColumn(originalContent) { 7704 let { 7705 doc 7706 } = getDeprecatedLayoutColumn; 7707 if (!doc) { 7708 doc = document.implementation.createHTMLDocument(''); 7709 getDeprecatedLayoutColumn.doc = doc; 7710 } 7711 let columnMatch; 7712 doc.body.innerHTML = originalContent; 7713 for (const classListItem of doc.body.firstChild.classList) { 7714 if (columnMatch = classListItem.match(/^layout-column-(\d+)$/)) { 7715 return Number(columnMatch[1]) - 1; 7716 } 7717 } 7718 } 7719 const migrateCustomColors = attributes => { 7720 if (!attributes.customTextColor && !attributes.customBackgroundColor) { 7721 return attributes; 7722 } 7723 const style = { 7724 color: {} 7725 }; 7726 if (attributes.customTextColor) { 7727 style.color.text = attributes.customTextColor; 7728 } 7729 if (attributes.customBackgroundColor) { 7730 style.color.background = attributes.customBackgroundColor; 7731 } 7732 const { 7733 customTextColor, 7734 customBackgroundColor, 7735 ...restAttributes 7736 } = attributes; 7737 return { 7738 ...restAttributes, 7739 style, 7740 isStackedOnMobile: true 7741 }; 7742 }; 7743 /* harmony default export */ const columns_deprecated = ([{ 7744 attributes: { 7745 verticalAlignment: { 7746 type: 'string' 7747 }, 7748 backgroundColor: { 7749 type: 'string' 7750 }, 7751 customBackgroundColor: { 7752 type: 'string' 7753 }, 7754 customTextColor: { 7755 type: 'string' 7756 }, 7757 textColor: { 7758 type: 'string' 7759 } 7760 }, 7761 migrate: migrateCustomColors, 7762 save({ 7763 attributes 7764 }) { 7765 const { 7766 verticalAlignment, 7767 backgroundColor, 7768 customBackgroundColor, 7769 textColor, 7770 customTextColor 7771 } = attributes; 7772 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 7773 const textClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 7774 const className = dist_clsx({ 7775 'has-background': backgroundColor || customBackgroundColor, 7776 'has-text-color': textColor || customTextColor, 7777 [backgroundClass]: backgroundClass, 7778 [textClass]: textClass, 7779 [`are-vertically-aligned-$verticalAlignment}`]: verticalAlignment 7780 }); 7781 const style = { 7782 backgroundColor: backgroundClass ? undefined : customBackgroundColor, 7783 color: textClass ? undefined : customTextColor 7784 }; 7785 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 7786 className: className ? className : undefined, 7787 style: style, 7788 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 7789 }); 7790 } 7791 }, { 7792 attributes: { 7793 columns: { 7794 type: 'number', 7795 default: 2 7796 } 7797 }, 7798 isEligible(attributes, innerBlocks) { 7799 // Since isEligible is called on every valid instance of the 7800 // Columns block and a deprecation is the unlikely case due to 7801 // its subsequent migration, optimize for the `false` condition 7802 // by performing a naive, inaccurate pass at inner blocks. 7803 const isFastPassEligible = innerBlocks.some(innerBlock => /layout-column-\d+/.test(innerBlock.originalContent)); 7804 if (!isFastPassEligible) { 7805 return false; 7806 } 7807 7808 // Only if the fast pass is considered eligible is the more 7809 // accurate, durable, slower condition performed. 7810 return innerBlocks.some(innerBlock => getDeprecatedLayoutColumn(innerBlock.originalContent) !== undefined); 7811 }, 7812 migrate(attributes, innerBlocks) { 7813 const columns = innerBlocks.reduce((accumulator, innerBlock) => { 7814 const { 7815 originalContent 7816 } = innerBlock; 7817 let columnIndex = getDeprecatedLayoutColumn(originalContent); 7818 if (columnIndex === undefined) { 7819 columnIndex = 0; 7820 } 7821 if (!accumulator[columnIndex]) { 7822 accumulator[columnIndex] = []; 7823 } 7824 accumulator[columnIndex].push(innerBlock); 7825 return accumulator; 7826 }, []); 7827 const migratedInnerBlocks = columns.map(columnBlocks => (0,external_wp_blocks_namespaceObject.createBlock)('core/column', {}, columnBlocks)); 7828 const { 7829 columns: ignoredColumns, 7830 ...restAttributes 7831 } = attributes; 7832 return [{ 7833 ...restAttributes, 7834 isStackedOnMobile: true 7835 }, migratedInnerBlocks]; 7836 }, 7837 save({ 7838 attributes 7839 }) { 7840 const { 7841 columns 7842 } = attributes; 7843 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 7844 className: `has-$columns}-columns`, 7845 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 7846 }); 7847 } 7848 }, { 7849 attributes: { 7850 columns: { 7851 type: 'number', 7852 default: 2 7853 } 7854 }, 7855 migrate(attributes, innerBlocks) { 7856 const { 7857 columns, 7858 ...restAttributes 7859 } = attributes; 7860 attributes = { 7861 ...restAttributes, 7862 isStackedOnMobile: true 7863 }; 7864 return [attributes, innerBlocks]; 7865 }, 7866 save({ 7867 attributes 7868 }) { 7869 const { 7870 verticalAlignment, 7871 columns 7872 } = attributes; 7873 const wrapperClasses = dist_clsx(`has-$columns}-columns`, { 7874 [`are-vertically-aligned-$verticalAlignment}`]: verticalAlignment 7875 }); 7876 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 7877 className: wrapperClasses, 7878 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 7879 }); 7880 } 7881 }]); 7882 7883 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/columns/utils.js 7884 /** 7885 * Returns a column width attribute value rounded to standard precision. 7886 * Returns `undefined` if the value is not a valid finite number. 7887 * 7888 * @param {?number} value Raw value. 7889 * 7890 * @return {number} Value rounded to standard precision. 7891 */ 7892 const toWidthPrecision = value => { 7893 const unitlessValue = parseFloat(value); 7894 return Number.isFinite(unitlessValue) ? parseFloat(unitlessValue.toFixed(2)) : undefined; 7895 }; 7896 /** 7897 * Returns an effective width for a given block. An effective width is equal to 7898 * its attribute value if set, or a computed value assuming equal distribution. 7899 * 7900 * @param {WPBlock} block Block object. 7901 * @param {number} totalBlockCount Total number of blocks in Columns. 7902 * 7903 * @return {number} Effective column width. 7904 */ 7905 function getEffectiveColumnWidth(block, totalBlockCount) { 7906 const { 7907 width = 100 / totalBlockCount 7908 } = block.attributes; 7909 return toWidthPrecision(width); 7910 } 7911 7912 /** 7913 * Returns the total width occupied by the given set of column blocks. 7914 * 7915 * @param {WPBlock[]} blocks Block objects. 7916 * @param {?number} totalBlockCount Total number of blocks in Columns. 7917 * Defaults to number of blocks passed. 7918 * 7919 * @return {number} Total width occupied by blocks. 7920 */ 7921 function getTotalColumnsWidth(blocks, totalBlockCount = blocks.length) { 7922 return blocks.reduce((sum, block) => sum + getEffectiveColumnWidth(block, totalBlockCount), 0); 7923 } 7924 7925 /** 7926 * Returns an object of `clientId` → `width` of effective column widths. 7927 * 7928 * @param {WPBlock[]} blocks Block objects. 7929 * @param {?number} totalBlockCount Total number of blocks in Columns. 7930 * Defaults to number of blocks passed. 7931 * 7932 * @return {Object<string,number>} Column widths. 7933 */ 7934 function getColumnWidths(blocks, totalBlockCount = blocks.length) { 7935 return blocks.reduce((accumulator, block) => { 7936 const width = getEffectiveColumnWidth(block, totalBlockCount); 7937 return Object.assign(accumulator, { 7938 [block.clientId]: width 7939 }); 7940 }, {}); 7941 } 7942 7943 /** 7944 * Returns an object of `clientId` → `width` of column widths as redistributed 7945 * proportional to their current widths, constrained or expanded to fit within 7946 * the given available width. 7947 * 7948 * @param {WPBlock[]} blocks Block objects. 7949 * @param {number} availableWidth Maximum width to fit within. 7950 * @param {?number} totalBlockCount Total number of blocks in Columns. 7951 * Defaults to number of blocks passed. 7952 * 7953 * @return {Object<string,number>} Redistributed column widths. 7954 */ 7955 function getRedistributedColumnWidths(blocks, availableWidth, totalBlockCount = blocks.length) { 7956 const totalWidth = getTotalColumnsWidth(blocks, totalBlockCount); 7957 return Object.fromEntries(Object.entries(getColumnWidths(blocks, totalBlockCount)).map(([clientId, width]) => { 7958 const newWidth = availableWidth * width / totalWidth; 7959 return [clientId, toWidthPrecision(newWidth)]; 7960 })); 7961 } 7962 7963 /** 7964 * Returns true if column blocks within the provided set are assigned with 7965 * explicit widths, or false otherwise. 7966 * 7967 * @param {WPBlock[]} blocks Block objects. 7968 * 7969 * @return {boolean} Whether columns have explicit widths. 7970 */ 7971 function hasExplicitPercentColumnWidths(blocks) { 7972 return blocks.every(block => { 7973 const blockWidth = block.attributes.width; 7974 return Number.isFinite(blockWidth?.endsWith?.('%') ? parseFloat(blockWidth) : blockWidth); 7975 }); 7976 } 7977 7978 /** 7979 * Returns a copy of the given set of blocks with new widths assigned from the 7980 * provided object of redistributed column widths. 7981 * 7982 * @param {WPBlock[]} blocks Block objects. 7983 * @param {Object<string,number>} widths Redistributed column widths. 7984 * 7985 * @return {WPBlock[]} blocks Mapped block objects. 7986 */ 7987 function getMappedColumnWidths(blocks, widths) { 7988 return blocks.map(block => ({ 7989 ...block, 7990 attributes: { 7991 ...block.attributes, 7992 width: `$widths[block.clientId]}%` 7993 } 7994 })); 7995 } 7996 7997 /** 7998 * Returns an array with columns widths values, parsed or no depends on `withParsing` flag. 7999 * 8000 * @param {WPBlock[]} blocks Block objects. 8001 * @param {?boolean} withParsing Whether value has to be parsed. 8002 * 8003 * @return {Array<number,string>} Column widths. 8004 */ 8005 function getWidths(blocks, withParsing = true) { 8006 return blocks.map(innerColumn => { 8007 const innerColumnWidth = innerColumn.attributes.width || 100 / blocks.length; 8008 return withParsing ? parseFloat(innerColumnWidth) : innerColumnWidth; 8009 }); 8010 } 8011 8012 /** 8013 * Returns a column width with unit. 8014 * 8015 * @param {string} width Column width. 8016 * @param {string} unit Column width unit. 8017 * 8018 * @return {string} Column width with unit. 8019 */ 8020 function getWidthWithUnit(width, unit) { 8021 width = 0 > parseFloat(width) ? '0' : width; 8022 if (isPercentageUnit(unit)) { 8023 width = Math.min(width, 100); 8024 } 8025 return `$width}$unit}`; 8026 } 8027 8028 /** 8029 * Returns a boolean whether passed unit is percentage 8030 * 8031 * @param {string} unit Column width unit. 8032 * 8033 * @return {boolean} Whether unit is '%'. 8034 */ 8035 function isPercentageUnit(unit) { 8036 return unit === '%'; 8037 } 8038 8039 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/columns/edit.js 8040 /** 8041 * External dependencies 8042 */ 8043 8044 8045 /** 8046 * WordPress dependencies 8047 */ 8048 8049 8050 8051 8052 8053 8054 /** 8055 * Internal dependencies 8056 */ 8057 8058 8059 8060 8061 const edit_DEFAULT_BLOCK = { 8062 name: 'core/column' 8063 }; 8064 function edit_ColumnInspectorControls({ 8065 clientId, 8066 setAttributes, 8067 isStackedOnMobile 8068 }) { 8069 const { 8070 count, 8071 canInsertColumnBlock, 8072 minCount 8073 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 8074 const { 8075 canInsertBlockType, 8076 canRemoveBlock, 8077 getBlocks, 8078 getBlockCount 8079 } = select(external_wp_blockEditor_namespaceObject.store); 8080 const innerBlocks = getBlocks(clientId); 8081 8082 // Get the indexes of columns for which removal is prevented. 8083 // The highest index will be used to determine the minimum column count. 8084 const preventRemovalBlockIndexes = innerBlocks.reduce((acc, block, index) => { 8085 if (!canRemoveBlock(block.clientId)) { 8086 acc.push(index); 8087 } 8088 return acc; 8089 }, []); 8090 return { 8091 count: getBlockCount(clientId), 8092 canInsertColumnBlock: canInsertBlockType('core/column', clientId), 8093 minCount: Math.max(...preventRemovalBlockIndexes) + 1 8094 }; 8095 }, [clientId]); 8096 const { 8097 getBlocks 8098 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 8099 const { 8100 replaceInnerBlocks 8101 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 8102 8103 /** 8104 * Updates the column count, including necessary revisions to child Column 8105 * blocks to grant required or redistribute available space. 8106 * 8107 * @param {number} previousColumns Previous column count. 8108 * @param {number} newColumns New column count. 8109 */ 8110 function updateColumns(previousColumns, newColumns) { 8111 let innerBlocks = getBlocks(clientId); 8112 const hasExplicitWidths = hasExplicitPercentColumnWidths(innerBlocks); 8113 8114 // Redistribute available width for existing inner blocks. 8115 const isAddingColumn = newColumns > previousColumns; 8116 if (isAddingColumn && hasExplicitWidths) { 8117 // If adding a new column, assign width to the new column equal to 8118 // as if it were `1 / columns` of the total available space. 8119 const newColumnWidth = toWidthPrecision(100 / newColumns); 8120 const newlyAddedColumns = newColumns - previousColumns; 8121 8122 // Redistribute in consideration of pending block insertion as 8123 // constraining the available working width. 8124 const widths = getRedistributedColumnWidths(innerBlocks, 100 - newColumnWidth * newlyAddedColumns); 8125 innerBlocks = [...getMappedColumnWidths(innerBlocks, widths), ...Array.from({ 8126 length: newlyAddedColumns 8127 }).map(() => { 8128 return (0,external_wp_blocks_namespaceObject.createBlock)('core/column', { 8129 width: `$newColumnWidth}%` 8130 }); 8131 })]; 8132 } else if (isAddingColumn) { 8133 innerBlocks = [...innerBlocks, ...Array.from({ 8134 length: newColumns - previousColumns 8135 }).map(() => { 8136 return (0,external_wp_blocks_namespaceObject.createBlock)('core/column'); 8137 })]; 8138 } else if (newColumns < previousColumns) { 8139 // The removed column will be the last of the inner blocks. 8140 innerBlocks = innerBlocks.slice(0, -(previousColumns - newColumns)); 8141 if (hasExplicitWidths) { 8142 // Redistribute as if block is already removed. 8143 const widths = getRedistributedColumnWidths(innerBlocks, 100); 8144 innerBlocks = getMappedColumnWidths(innerBlocks, widths); 8145 } 8146 } 8147 replaceInnerBlocks(clientId, innerBlocks); 8148 } 8149 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 8150 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 8151 children: [canInsertColumnBlock && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 8152 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 8153 __nextHasNoMarginBottom: true, 8154 __next40pxDefaultSize: true, 8155 label: (0,external_wp_i18n_namespaceObject.__)('Columns'), 8156 value: count, 8157 onChange: value => updateColumns(count, Math.max(minCount, value)), 8158 min: Math.max(1, minCount), 8159 max: Math.max(6, count) 8160 }), count > 6 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, { 8161 status: "warning", 8162 isDismissible: false, 8163 children: (0,external_wp_i18n_namespaceObject.__)('This column count exceeds the recommended amount and may cause visual breakage.') 8164 })] 8165 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 8166 __nextHasNoMarginBottom: true, 8167 label: (0,external_wp_i18n_namespaceObject.__)('Stack on mobile'), 8168 checked: isStackedOnMobile, 8169 onChange: () => setAttributes({ 8170 isStackedOnMobile: !isStackedOnMobile 8171 }) 8172 })] 8173 }); 8174 } 8175 function ColumnsEditContainer({ 8176 attributes, 8177 setAttributes, 8178 clientId 8179 }) { 8180 const { 8181 isStackedOnMobile, 8182 verticalAlignment, 8183 templateLock 8184 } = attributes; 8185 const registry = (0,external_wp_data_namespaceObject.useRegistry)(); 8186 const { 8187 getBlockOrder 8188 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 8189 const { 8190 updateBlockAttributes 8191 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 8192 const classes = dist_clsx({ 8193 [`are-vertically-aligned-$verticalAlignment}`]: verticalAlignment, 8194 [`is-not-stacked-on-mobile`]: !isStackedOnMobile 8195 }); 8196 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 8197 className: classes 8198 }); 8199 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 8200 defaultBlock: edit_DEFAULT_BLOCK, 8201 directInsert: true, 8202 orientation: 'horizontal', 8203 renderAppender: false, 8204 templateLock 8205 }); 8206 8207 /** 8208 * Update all child Column blocks with a new vertical alignment setting 8209 * based on whatever alignment is passed in. This allows change to parent 8210 * to overide anything set on a individual column basis. 8211 * 8212 * @param {string} newVerticalAlignment The vertical alignment setting. 8213 */ 8214 function updateAlignment(newVerticalAlignment) { 8215 const innerBlockClientIds = getBlockOrder(clientId); 8216 8217 // Update own and child Column block vertical alignments. 8218 // This is a single action; the batching prevents creating multiple history records. 8219 registry.batch(() => { 8220 setAttributes({ 8221 verticalAlignment: newVerticalAlignment 8222 }); 8223 updateBlockAttributes(innerBlockClientIds, { 8224 verticalAlignment: newVerticalAlignment 8225 }); 8226 }); 8227 } 8228 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 8229 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 8230 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockVerticalAlignmentToolbar, { 8231 onChange: updateAlignment, 8232 value: verticalAlignment 8233 }) 8234 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 8235 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(edit_ColumnInspectorControls, { 8236 clientId: clientId, 8237 setAttributes: setAttributes, 8238 isStackedOnMobile: isStackedOnMobile 8239 }) 8240 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 8241 ...innerBlocksProps 8242 })] 8243 }); 8244 } 8245 function Placeholder({ 8246 clientId, 8247 name, 8248 setAttributes 8249 }) { 8250 const { 8251 blockType, 8252 defaultVariation, 8253 variations 8254 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 8255 const { 8256 getBlockVariations, 8257 getBlockType, 8258 getDefaultBlockVariation 8259 } = select(external_wp_blocks_namespaceObject.store); 8260 return { 8261 blockType: getBlockType(name), 8262 defaultVariation: getDefaultBlockVariation(name, 'block'), 8263 variations: getBlockVariations(name, 'block') 8264 }; 8265 }, [name]); 8266 const { 8267 replaceInnerBlocks 8268 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 8269 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 8270 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 8271 ...blockProps, 8272 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalBlockVariationPicker, { 8273 icon: blockType?.icon?.src, 8274 label: blockType?.title, 8275 variations: variations, 8276 instructions: (0,external_wp_i18n_namespaceObject.__)('Divide into columns. Select a layout:'), 8277 onSelect: (nextVariation = defaultVariation) => { 8278 if (nextVariation.attributes) { 8279 setAttributes(nextVariation.attributes); 8280 } 8281 if (nextVariation.innerBlocks) { 8282 replaceInnerBlocks(clientId, (0,external_wp_blocks_namespaceObject.createBlocksFromInnerBlocksTemplate)(nextVariation.innerBlocks), true); 8283 } 8284 }, 8285 allowSkip: true 8286 }) 8287 }); 8288 } 8289 const ColumnsEdit = props => { 8290 const { 8291 clientId 8292 } = props; 8293 const hasInnerBlocks = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getBlocks(clientId).length > 0, [clientId]); 8294 const Component = hasInnerBlocks ? ColumnsEditContainer : Placeholder; 8295 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Component, { 8296 ...props 8297 }); 8298 }; 8299 /* harmony default export */ const columns_edit = (ColumnsEdit); 8300 8301 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/columns/save.js 8302 /** 8303 * External dependencies 8304 */ 8305 8306 8307 /** 8308 * WordPress dependencies 8309 */ 8310 8311 8312 function columns_save_save({ 8313 attributes 8314 }) { 8315 const { 8316 isStackedOnMobile, 8317 verticalAlignment 8318 } = attributes; 8319 const className = dist_clsx({ 8320 [`are-vertically-aligned-$verticalAlignment}`]: verticalAlignment, 8321 [`is-not-stacked-on-mobile`]: !isStackedOnMobile 8322 }); 8323 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save({ 8324 className 8325 }); 8326 const innerBlocksProps = external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(blockProps); 8327 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 8328 ...innerBlocksProps 8329 }); 8330 } 8331 8332 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/columns/variations.js 8333 /** 8334 * WordPress dependencies 8335 */ 8336 8337 8338 8339 /** @typedef {import('@wordpress/blocks').WPBlockVariation} WPBlockVariation */ 8340 8341 /** 8342 * Template option choices for predefined columns layouts. 8343 * 8344 * @type {WPBlockVariation[]} 8345 */ 8346 8347 const variations_variations = [{ 8348 name: 'one-column-full', 8349 title: (0,external_wp_i18n_namespaceObject.__)('100'), 8350 description: (0,external_wp_i18n_namespaceObject.__)('One column'), 8351 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 8352 xmlns: "http://www.w3.org/2000/svg", 8353 width: "48", 8354 height: "48", 8355 viewBox: "0 0 48 48", 8356 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 8357 d: "M0 10a2 2 0 0 1 2-2h44a2 2 0 0 1 2 2v28a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V10Z" 8358 }) 8359 }), 8360 innerBlocks: [['core/column']], 8361 scope: ['block'] 8362 }, { 8363 name: 'two-columns-equal', 8364 title: (0,external_wp_i18n_namespaceObject.__)('50 / 50'), 8365 description: (0,external_wp_i18n_namespaceObject.__)('Two columns; equal split'), 8366 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 8367 xmlns: "http://www.w3.org/2000/svg", 8368 width: "48", 8369 height: "48", 8370 viewBox: "0 0 48 48", 8371 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 8372 d: "M0 10a2 2 0 0 1 2-2h19a2 2 0 0 1 2 2v28a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V10Zm25 0a2 2 0 0 1 2-2h19a2 2 0 0 1 2 2v28a2 2 0 0 1-2 2H27a2 2 0 0 1-2-2V10Z" 8373 }) 8374 }), 8375 isDefault: true, 8376 innerBlocks: [['core/column'], ['core/column']], 8377 scope: ['block'] 8378 }, { 8379 name: 'two-columns-one-third-two-thirds', 8380 title: (0,external_wp_i18n_namespaceObject.__)('33 / 66'), 8381 description: (0,external_wp_i18n_namespaceObject.__)('Two columns; one-third, two-thirds split'), 8382 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 8383 xmlns: "http://www.w3.org/2000/svg", 8384 width: "48", 8385 height: "48", 8386 viewBox: "0 0 48 48", 8387 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 8388 d: "M0 10a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v28a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V10Zm17 0a2 2 0 0 1 2-2h27a2 2 0 0 1 2 2v28a2 2 0 0 1-2 2H19a2 2 0 0 1-2-2V10Z" 8389 }) 8390 }), 8391 innerBlocks: [['core/column', { 8392 width: '33.33%' 8393 }], ['core/column', { 8394 width: '66.66%' 8395 }]], 8396 scope: ['block'] 8397 }, { 8398 name: 'two-columns-two-thirds-one-third', 8399 title: (0,external_wp_i18n_namespaceObject.__)('66 / 33'), 8400 description: (0,external_wp_i18n_namespaceObject.__)('Two columns; two-thirds, one-third split'), 8401 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 8402 xmlns: "http://www.w3.org/2000/svg", 8403 width: "48", 8404 height: "48", 8405 viewBox: "0 0 48 48", 8406 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 8407 d: "M0 10a2 2 0 0 1 2-2h27a2 2 0 0 1 2 2v28a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V10Zm33 0a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v28a2 2 0 0 1-2 2H35a2 2 0 0 1-2-2V10Z" 8408 }) 8409 }), 8410 innerBlocks: [['core/column', { 8411 width: '66.66%' 8412 }], ['core/column', { 8413 width: '33.33%' 8414 }]], 8415 scope: ['block'] 8416 }, { 8417 name: 'three-columns-equal', 8418 title: (0,external_wp_i18n_namespaceObject.__)('33 / 33 / 33'), 8419 description: (0,external_wp_i18n_namespaceObject.__)('Three columns; equal split'), 8420 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 8421 xmlns: "http://www.w3.org/2000/svg", 8422 width: "48", 8423 height: "48", 8424 viewBox: "0 0 48 48", 8425 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 8426 d: "M0 10a2 2 0 0 1 2-2h10.531c1.105 0 1.969.895 1.969 2v28c0 1.105-.864 2-1.969 2H2a2 2 0 0 1-2-2V10Zm16.5 0c0-1.105.864-2 1.969-2H29.53c1.105 0 1.969.895 1.969 2v28c0 1.105-.864 2-1.969 2H18.47c-1.105 0-1.969-.895-1.969-2V10Zm17 0c0-1.105.864-2 1.969-2H46a2 2 0 0 1 2 2v28a2 2 0 0 1-2 2H35.469c-1.105 0-1.969-.895-1.969-2V10Z" 8427 }) 8428 }), 8429 innerBlocks: [['core/column'], ['core/column'], ['core/column']], 8430 scope: ['block'] 8431 }, { 8432 name: 'three-columns-wider-center', 8433 title: (0,external_wp_i18n_namespaceObject.__)('25 / 50 / 25'), 8434 description: (0,external_wp_i18n_namespaceObject.__)('Three columns; wide center column'), 8435 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 8436 xmlns: "http://www.w3.org/2000/svg", 8437 width: "48", 8438 height: "48", 8439 viewBox: "0 0 48 48", 8440 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 8441 d: "M0 10a2 2 0 0 1 2-2h7.531c1.105 0 1.969.895 1.969 2v28c0 1.105-.864 2-1.969 2H2a2 2 0 0 1-2-2V10Zm13.5 0c0-1.105.864-2 1.969-2H32.53c1.105 0 1.969.895 1.969 2v28c0 1.105-.864 2-1.969 2H15.47c-1.105 0-1.969-.895-1.969-2V10Zm23 0c0-1.105.864-2 1.969-2H46a2 2 0 0 1 2 2v28a2 2 0 0 1-2 2h-7.531c-1.105 0-1.969-.895-1.969-2V10Z" 8442 }) 8443 }), 8444 innerBlocks: [['core/column', { 8445 width: '25%' 8446 }], ['core/column', { 8447 width: '50%' 8448 }], ['core/column', { 8449 width: '25%' 8450 }]], 8451 scope: ['block'] 8452 }]; 8453 /* harmony default export */ const columns_variations = (variations_variations); 8454 8455 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/columns/transforms.js 8456 /** 8457 * WordPress dependencies 8458 */ 8459 8460 const MAXIMUM_SELECTED_BLOCKS = 6; 8461 const columns_transforms_transforms = { 8462 from: [{ 8463 type: 'block', 8464 isMultiBlock: true, 8465 blocks: ['*'], 8466 __experimentalConvert: blocks => { 8467 const columnWidth = +(100 / blocks.length).toFixed(2); 8468 const innerBlocksTemplate = blocks.map(({ 8469 name, 8470 attributes, 8471 innerBlocks 8472 }) => ['core/column', { 8473 width: `$columnWidth}%` 8474 }, [[name, { 8475 ...attributes 8476 }, innerBlocks]]]); 8477 return (0,external_wp_blocks_namespaceObject.createBlock)('core/columns', {}, (0,external_wp_blocks_namespaceObject.createBlocksFromInnerBlocksTemplate)(innerBlocksTemplate)); 8478 }, 8479 isMatch: ({ 8480 length: selectedBlocksLength 8481 }, blocks) => { 8482 // If a user is trying to transform a single Columns block, skip 8483 // the transformation. Enabling this functiontionality creates 8484 // nested Columns blocks resulting in an unintuitive user experience. 8485 // Multiple Columns blocks can still be transformed. 8486 if (blocks.length === 1 && blocks[0].name === 'core/columns') { 8487 return false; 8488 } 8489 return selectedBlocksLength && selectedBlocksLength <= MAXIMUM_SELECTED_BLOCKS; 8490 } 8491 }, { 8492 type: 'block', 8493 blocks: ['core/media-text'], 8494 priority: 1, 8495 transform: (attributes, innerBlocks) => { 8496 const { 8497 align, 8498 backgroundColor, 8499 textColor, 8500 style, 8501 mediaAlt: alt, 8502 mediaId: id, 8503 mediaPosition, 8504 mediaSizeSlug: sizeSlug, 8505 mediaType, 8506 mediaUrl: url, 8507 mediaWidth, 8508 verticalAlignment 8509 } = attributes; 8510 let media; 8511 if (mediaType === 'image' || !mediaType) { 8512 const imageAttrs = { 8513 id, 8514 alt, 8515 url, 8516 sizeSlug 8517 }; 8518 const linkAttrs = { 8519 href: attributes.href, 8520 linkClass: attributes.linkClass, 8521 linkDestination: attributes.linkDestination, 8522 linkTarget: attributes.linkTarget, 8523 rel: attributes.rel 8524 }; 8525 media = ['core/image', { 8526 ...imageAttrs, 8527 ...linkAttrs 8528 }]; 8529 } else { 8530 media = ['core/video', { 8531 id, 8532 src: url 8533 }]; 8534 } 8535 const innerBlocksTemplate = [['core/column', { 8536 width: `$mediaWidth}%` 8537 }, [media]], ['core/column', { 8538 width: `$100 - mediaWidth}%` 8539 }, innerBlocks]]; 8540 if (mediaPosition === 'right') { 8541 innerBlocksTemplate.reverse(); 8542 } 8543 return (0,external_wp_blocks_namespaceObject.createBlock)('core/columns', { 8544 align, 8545 backgroundColor, 8546 textColor, 8547 style, 8548 verticalAlignment 8549 }, (0,external_wp_blocks_namespaceObject.createBlocksFromInnerBlocksTemplate)(innerBlocksTemplate)); 8550 } 8551 }], 8552 ungroup: (attributes, innerBlocks) => innerBlocks.flatMap(innerBlock => innerBlock.innerBlocks) 8553 }; 8554 /* harmony default export */ const columns_transforms = (columns_transforms_transforms); 8555 8556 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/columns/index.js 8557 /** 8558 * WordPress dependencies 8559 */ 8560 8561 8562 8563 /** 8564 * Internal dependencies 8565 */ 8566 8567 8568 8569 const columns_metadata = { 8570 $schema: "https://schemas.wp.org/trunk/block.json", 8571 apiVersion: 3, 8572 name: "core/columns", 8573 title: "Columns", 8574 category: "design", 8575 allowedBlocks: ["core/column"], 8576 description: "Display content in multiple columns, with blocks added to each column.", 8577 textdomain: "default", 8578 attributes: { 8579 verticalAlignment: { 8580 type: "string" 8581 }, 8582 isStackedOnMobile: { 8583 type: "boolean", 8584 "default": true 8585 }, 8586 templateLock: { 8587 type: ["string", "boolean"], 8588 "enum": ["all", "insert", "contentOnly", false] 8589 } 8590 }, 8591 supports: { 8592 anchor: true, 8593 align: ["wide", "full"], 8594 html: false, 8595 color: { 8596 gradients: true, 8597 link: true, 8598 heading: true, 8599 button: true, 8600 __experimentalDefaultControls: { 8601 background: true, 8602 text: true 8603 } 8604 }, 8605 spacing: { 8606 blockGap: { 8607 __experimentalDefault: "2em", 8608 sides: ["horizontal", "vertical"] 8609 }, 8610 margin: ["top", "bottom"], 8611 padding: true, 8612 __experimentalDefaultControls: { 8613 padding: true, 8614 blockGap: true 8615 } 8616 }, 8617 layout: { 8618 allowSwitching: false, 8619 allowInheriting: false, 8620 allowEditing: false, 8621 "default": { 8622 type: "flex", 8623 flexWrap: "nowrap" 8624 } 8625 }, 8626 __experimentalBorder: { 8627 color: true, 8628 radius: true, 8629 style: true, 8630 width: true, 8631 __experimentalDefaultControls: { 8632 color: true, 8633 radius: true, 8634 style: true, 8635 width: true 8636 } 8637 }, 8638 typography: { 8639 fontSize: true, 8640 lineHeight: true, 8641 __experimentalFontFamily: true, 8642 __experimentalFontWeight: true, 8643 __experimentalFontStyle: true, 8644 __experimentalTextTransform: true, 8645 __experimentalTextDecoration: true, 8646 __experimentalLetterSpacing: true, 8647 __experimentalDefaultControls: { 8648 fontSize: true 8649 } 8650 }, 8651 interactivity: { 8652 clientNavigation: true 8653 }, 8654 shadow: true 8655 }, 8656 editorStyle: "wp-block-columns-editor", 8657 style: "wp-block-columns" 8658 }; 8659 8660 8661 8662 const { 8663 name: columns_name 8664 } = columns_metadata; 8665 8666 const columns_settings = { 8667 icon: library_columns, 8668 variations: columns_variations, 8669 example: { 8670 viewportWidth: 782, 8671 // Columns collapse "@media (max-width: 781px)". 8672 innerBlocks: [{ 8673 name: 'core/column', 8674 innerBlocks: [{ 8675 name: 'core/paragraph', 8676 attributes: { 8677 /* translators: example text. */ 8678 content: (0,external_wp_i18n_namespaceObject.__)('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent et eros eu felis.') 8679 } 8680 }, { 8681 name: 'core/image', 8682 attributes: { 8683 url: 'https://s.w.org/images/core/5.3/Windbuchencom.jpg' 8684 } 8685 }, { 8686 name: 'core/paragraph', 8687 attributes: { 8688 /* translators: example text. */ 8689 content: (0,external_wp_i18n_namespaceObject.__)('Suspendisse commodo neque lacus, a dictum orci interdum et.') 8690 } 8691 }] 8692 }, { 8693 name: 'core/column', 8694 innerBlocks: [{ 8695 name: 'core/paragraph', 8696 attributes: { 8697 /* translators: example text. */ 8698 content: (0,external_wp_i18n_namespaceObject.__)('Etiam et egestas lorem. Vivamus sagittis sit amet dolor quis lobortis. Integer sed fermentum arcu, id vulputate lacus. Etiam fermentum sem eu quam hendrerit.') 8699 } 8700 }, { 8701 name: 'core/paragraph', 8702 attributes: { 8703 /* translators: example text. */ 8704 content: (0,external_wp_i18n_namespaceObject.__)('Nam risus massa, ullamcorper consectetur eros fermentum, porta aliquet ligula. Sed vel mauris nec enim.') 8705 } 8706 }] 8707 }] 8708 }, 8709 deprecated: columns_deprecated, 8710 edit: columns_edit, 8711 save: columns_save_save, 8712 transforms: columns_transforms 8713 }; 8714 const columns_init = () => initBlock({ 8715 name: columns_name, 8716 metadata: columns_metadata, 8717 settings: columns_settings 8718 }); 8719 8720 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-comments.js 8721 /** 8722 * WordPress dependencies 8723 */ 8724 8725 8726 const postComments = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 8727 xmlns: "http://www.w3.org/2000/svg", 8728 viewBox: "0 0 24 24", 8729 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 8730 d: "M14 10.1V4c0-.6-.4-1-1-1H5c-.6 0-1 .4-1 1v8.3c0 .3.2.7.6.8.1.1.2.1.3.1.2 0 .5-.1.6-.3l1.8-1.8H13c.6 0 1-.4 1-1zm-1.5-.5H6.7l-1.2 1.2V4.5h7v5.1zM19 12h-8c-.6 0-1 .4-1 1v6.1c0 .6.4 1 1 1h5.7l1.8 1.8c.1.2.4.3.6.3.1 0 .2 0 .3-.1.4-.1.6-.5.6-.8V13c0-.6-.4-1-1-1zm-.5 7.8l-1.2-1.2h-5.8v-5.1h7v6.3z" 8731 }) 8732 }); 8733 /* harmony default export */ const post_comments = (postComments); 8734 8735 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments/deprecated.js 8736 /** 8737 * WordPress dependencies 8738 */ 8739 8740 8741 // v1: Deprecate the initial version of the block which was called "Comments 8742 // Query Loop" instead of "Comments". 8743 8744 const v1 = { 8745 attributes: { 8746 tagName: { 8747 type: 'string', 8748 default: 'div' 8749 } 8750 }, 8751 apiVersion: 3, 8752 supports: { 8753 align: ['wide', 'full'], 8754 html: false, 8755 color: { 8756 gradients: true, 8757 link: true, 8758 __experimentalDefaultControls: { 8759 background: true, 8760 text: true, 8761 link: true 8762 } 8763 } 8764 }, 8765 save({ 8766 attributes: { 8767 tagName: Tag 8768 } 8769 }) { 8770 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save(); 8771 const { 8772 className 8773 } = blockProps; 8774 const classes = className?.split(' ') || []; 8775 8776 // The ID of the previous version of the block 8777 // didn't have the `wp-block-comments` class, 8778 // so we need to remove it here in order to mimic it. 8779 const newClasses = classes?.filter(cls => cls !== 'wp-block-comments'); 8780 const newBlockProps = { 8781 ...blockProps, 8782 className: newClasses.join(' ') 8783 }; 8784 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 8785 ...newBlockProps, 8786 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 8787 }); 8788 } 8789 }; 8790 /* harmony default export */ const comments_deprecated = ([v1]); 8791 8792 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments/edit/comments-inspector-controls.js 8793 /** 8794 * WordPress dependencies 8795 */ 8796 8797 8798 8799 8800 function CommentsInspectorControls({ 8801 attributes: { 8802 tagName 8803 }, 8804 setAttributes 8805 }) { 8806 const htmlElementMessages = { 8807 section: (0,external_wp_i18n_namespaceObject.__)("The <section> element should represent a standalone portion of the document that can't be better represented by another element."), 8808 aside: (0,external_wp_i18n_namespaceObject.__)("The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content.") 8809 }; 8810 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 8811 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 8812 group: "advanced", 8813 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 8814 __nextHasNoMarginBottom: true, 8815 __next40pxDefaultSize: true, 8816 label: (0,external_wp_i18n_namespaceObject.__)('HTML element'), 8817 options: [{ 8818 label: (0,external_wp_i18n_namespaceObject.__)('Default (<div>)'), 8819 value: 'div' 8820 }, { 8821 label: '<section>', 8822 value: 'section' 8823 }, { 8824 label: '<aside>', 8825 value: 'aside' 8826 }], 8827 value: tagName, 8828 onChange: value => setAttributes({ 8829 tagName: value 8830 }), 8831 help: htmlElementMessages[tagName] 8832 }) 8833 }) 8834 }); 8835 } 8836 8837 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-comments-form/form.js 8838 /** 8839 * External dependencies 8840 */ 8841 8842 8843 /** 8844 * WordPress dependencies 8845 */ 8846 8847 8848 8849 8850 8851 8852 8853 8854 const CommentsFormPlaceholder = () => { 8855 const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(CommentsFormPlaceholder); 8856 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 8857 className: "comment-respond", 8858 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h3", { 8859 className: "comment-reply-title", 8860 children: (0,external_wp_i18n_namespaceObject.__)('Leave a Reply') 8861 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("form", { 8862 noValidate: true, 8863 className: "comment-form", 8864 onSubmit: event => event.preventDefault(), 8865 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("p", { 8866 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("label", { 8867 htmlFor: `comment-$instanceId}`, 8868 children: (0,external_wp_i18n_namespaceObject.__)('Comment') 8869 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("textarea", { 8870 id: `comment-$instanceId}`, 8871 name: "comment", 8872 cols: "45", 8873 rows: "8", 8874 readOnly: true 8875 })] 8876 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 8877 className: "form-submit wp-block-button", 8878 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("input", { 8879 name: "submit", 8880 type: "submit", 8881 className: dist_clsx('wp-block-button__link', (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('button')), 8882 label: (0,external_wp_i18n_namespaceObject.__)('Post Comment'), 8883 value: (0,external_wp_i18n_namespaceObject.__)('Post Comment'), 8884 "aria-disabled": "true" 8885 }) 8886 })] 8887 })] 8888 }); 8889 }; 8890 const CommentsForm = ({ 8891 postId, 8892 postType 8893 }) => { 8894 const [commentStatus, setCommentStatus] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postType, 'comment_status', postId); 8895 const isSiteEditor = postType === undefined || postId === undefined; 8896 const { 8897 defaultCommentStatus 8898 } = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings().__experimentalDiscussionSettings); 8899 const postTypeSupportsComments = (0,external_wp_data_namespaceObject.useSelect)(select => postType ? !!select(external_wp_coreData_namespaceObject.store).getPostType(postType)?.supports.comments : false); 8900 if (!isSiteEditor && 'open' !== commentStatus) { 8901 if ('closed' === commentStatus) { 8902 const actions = [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 8903 __next40pxDefaultSize: true, 8904 onClick: () => setCommentStatus('open'), 8905 variant: "primary", 8906 children: (0,external_wp_i18n_namespaceObject._x)('Enable comments', 'action that affects the current post') 8907 }, "enableComments")]; 8908 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 8909 actions: actions, 8910 children: (0,external_wp_i18n_namespaceObject.__)('Post Comments Form block: Comments are not enabled for this item.') 8911 }); 8912 } else if (!postTypeSupportsComments) { 8913 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 8914 children: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Post type (i.e. "post", "page") */ 8915 (0,external_wp_i18n_namespaceObject.__)('Post Comments Form block: Comments are not enabled for this post type (%s).'), postType) 8916 }); 8917 } else if ('open' !== defaultCommentStatus) { 8918 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 8919 children: (0,external_wp_i18n_namespaceObject.__)('Post Comments Form block: Comments are not enabled.') 8920 }); 8921 } 8922 } 8923 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CommentsFormPlaceholder, {}); 8924 }; 8925 /* harmony default export */ const post_comments_form_form = (CommentsForm); 8926 8927 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments/edit/placeholder.js 8928 /** 8929 * WordPress dependencies 8930 */ 8931 8932 8933 8934 8935 8936 8937 /** 8938 * Internal dependencies 8939 */ 8940 8941 8942 8943 function PostCommentsPlaceholder({ 8944 postType, 8945 postId 8946 }) { 8947 let [postTitle] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postType, 'title', postId); 8948 postTitle = postTitle || (0,external_wp_i18n_namespaceObject.__)('Post Title'); 8949 const { 8950 avatarURL 8951 } = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings().__experimentalDiscussionSettings); 8952 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 8953 className: "wp-block-comments__legacy-placeholder", 8954 inert: "true", 8955 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h3", { 8956 children: /* translators: %s: Post title. */ 8957 (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('One response to %s'), postTitle) 8958 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 8959 className: "navigation", 8960 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 8961 className: "alignleft", 8962 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("a", { 8963 href: "#top", 8964 children: ["\xAB ", (0,external_wp_i18n_namespaceObject.__)('Older Comments')] 8965 }) 8966 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 8967 className: "alignright", 8968 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("a", { 8969 href: "#top", 8970 children: [(0,external_wp_i18n_namespaceObject.__)('Newer Comments'), " \xBB"] 8971 }) 8972 })] 8973 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ol", { 8974 className: "commentlist", 8975 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", { 8976 className: "comment even thread-even depth-1", 8977 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("article", { 8978 className: "comment-body", 8979 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("footer", { 8980 className: "comment-meta", 8981 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 8982 className: "comment-author vcard", 8983 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 8984 alt: (0,external_wp_i18n_namespaceObject.__)('Commenter Avatar'), 8985 src: avatarURL, 8986 className: "avatar avatar-32 photo", 8987 height: "32", 8988 width: "32", 8989 loading: "lazy" 8990 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("b", { 8991 className: "fn", 8992 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 8993 href: "#top", 8994 className: "url", 8995 children: (0,external_wp_i18n_namespaceObject.__)('A WordPress Commenter') 8996 }) 8997 }), ' ', /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", { 8998 className: "says", 8999 children: [(0,external_wp_i18n_namespaceObject.__)('says'), ":"] 9000 })] 9001 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 9002 className: "comment-metadata", 9003 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 9004 href: "#top", 9005 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", { 9006 dateTime: "2000-01-01T00:00:00+00:00", 9007 children: (0,external_wp_i18n_namespaceObject.__)('January 1, 2000 at 00:00 am') 9008 }) 9009 }), ' ', /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 9010 className: "edit-link", 9011 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 9012 className: "comment-edit-link", 9013 href: "#top", 9014 children: (0,external_wp_i18n_namespaceObject.__)('Edit') 9015 }) 9016 })] 9017 })] 9018 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 9019 className: "comment-content", 9020 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("p", { 9021 children: [(0,external_wp_i18n_namespaceObject.__)('Hi, this is a comment.'), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("br", {}), (0,external_wp_i18n_namespaceObject.__)('To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.'), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("br", {}), (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.__)('Commenter avatars come from <a>Gravatar</a>.'), { 9022 a: 9023 /*#__PURE__*/ 9024 // eslint-disable-next-line jsx-a11y/anchor-has-content 9025 (0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 9026 href: "https://gravatar.com/" 9027 }) 9028 })] 9029 }) 9030 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 9031 className: "reply", 9032 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 9033 className: "comment-reply-link", 9034 href: "#top", 9035 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Reply to A WordPress Commenter'), 9036 children: (0,external_wp_i18n_namespaceObject.__)('Reply') 9037 }) 9038 })] 9039 }) 9040 }) 9041 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 9042 className: "navigation", 9043 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 9044 className: "alignleft", 9045 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("a", { 9046 href: "#top", 9047 children: ["\xAB ", (0,external_wp_i18n_namespaceObject.__)('Older Comments')] 9048 }) 9049 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 9050 className: "alignright", 9051 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("a", { 9052 href: "#top", 9053 children: [(0,external_wp_i18n_namespaceObject.__)('Newer Comments'), " \xBB"] 9054 }) 9055 })] 9056 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(post_comments_form_form, { 9057 postId: postId, 9058 postType: postType 9059 })] 9060 }); 9061 } 9062 9063 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments/edit/comments-legacy.js 9064 /** 9065 * External dependencies 9066 */ 9067 9068 9069 /** 9070 * WordPress dependencies 9071 */ 9072 9073 9074 9075 9076 /** 9077 * Internal dependencies 9078 */ 9079 9080 9081 9082 9083 function CommentsLegacy({ 9084 attributes, 9085 setAttributes, 9086 context: { 9087 postType, 9088 postId 9089 } 9090 }) { 9091 const { 9092 textAlign 9093 } = attributes; 9094 const actions = [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 9095 __next40pxDefaultSize: true, 9096 onClick: () => void setAttributes({ 9097 legacy: false 9098 }), 9099 variant: "primary", 9100 children: (0,external_wp_i18n_namespaceObject.__)('Switch to editable mode') 9101 }, "convert")]; 9102 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 9103 className: dist_clsx({ 9104 [`has-text-align-$textAlign}`]: textAlign 9105 }) 9106 }); 9107 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 9108 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 9109 group: "block", 9110 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 9111 value: textAlign, 9112 onChange: nextAlign => { 9113 setAttributes({ 9114 textAlign: nextAlign 9115 }); 9116 } 9117 }) 9118 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 9119 ...blockProps, 9120 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 9121 actions: actions, 9122 children: (0,external_wp_i18n_namespaceObject.__)('Comments block: You’re currently using the legacy version of the block. ' + 'The following is just a placeholder - the final styling will likely look different. ' + 'For a better representation and more customization options, ' + 'switch the block to its editable mode.') 9123 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PostCommentsPlaceholder, { 9124 postId: postId, 9125 postType: postType 9126 })] 9127 })] 9128 }); 9129 } 9130 9131 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments/edit/template.js 9132 const TEMPLATE = [['core/comments-title'], ['core/comment-template', {}, [['core/columns', {}, [['core/column', { 9133 width: '40px' 9134 }, [['core/avatar', { 9135 size: 40, 9136 style: { 9137 border: { 9138 radius: '20px' 9139 } 9140 } 9141 }]]], ['core/column', {}, [['core/comment-author-name', { 9142 fontSize: 'small' 9143 }], ['core/group', { 9144 layout: { 9145 type: 'flex' 9146 }, 9147 style: { 9148 spacing: { 9149 margin: { 9150 top: '0px', 9151 bottom: '0px' 9152 } 9153 } 9154 } 9155 }, [['core/comment-date', { 9156 fontSize: 'small' 9157 }], ['core/comment-edit-link', { 9158 fontSize: 'small' 9159 }]]], ['core/comment-content'], ['core/comment-reply-link', { 9160 fontSize: 'small' 9161 }]]]]]]], ['core/comments-pagination'], ['core/post-comments-form']]; 9162 /* harmony default export */ const template = (TEMPLATE); 9163 9164 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments/edit/index.js 9165 /** 9166 * WordPress dependencies 9167 */ 9168 9169 9170 /** 9171 * Internal dependencies 9172 */ 9173 9174 9175 9176 9177 9178 9179 function CommentsEdit(props) { 9180 const { 9181 attributes, 9182 setAttributes 9183 } = props; 9184 const { 9185 tagName: TagName, 9186 legacy 9187 } = attributes; 9188 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 9189 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 9190 template: template 9191 }); 9192 if (legacy) { 9193 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CommentsLegacy, { 9194 ...props 9195 }); 9196 } 9197 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 9198 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CommentsInspectorControls, { 9199 attributes: attributes, 9200 setAttributes: setAttributes 9201 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 9202 ...innerBlocksProps 9203 })] 9204 }); 9205 } 9206 9207 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments/save.js 9208 /** 9209 * WordPress dependencies 9210 */ 9211 9212 9213 function comments_save_save({ 9214 attributes: { 9215 tagName: Tag, 9216 legacy 9217 } 9218 }) { 9219 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save(); 9220 const innerBlocksProps = external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(blockProps); 9221 9222 // The legacy version is dynamic (i.e. PHP rendered) and doesn't allow inner 9223 // blocks, so nothing is saved in that case. 9224 return legacy ? null : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 9225 ...innerBlocksProps 9226 }); 9227 } 9228 9229 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments/index.js 9230 /** 9231 * WordPress dependencies 9232 */ 9233 9234 9235 /** 9236 * Internal dependencies 9237 */ 9238 9239 const comments_metadata = { 9240 $schema: "https://schemas.wp.org/trunk/block.json", 9241 apiVersion: 3, 9242 name: "core/comments", 9243 title: "Comments", 9244 category: "theme", 9245 description: "An advanced block that allows displaying post comments using different visual configurations.", 9246 textdomain: "default", 9247 attributes: { 9248 tagName: { 9249 type: "string", 9250 "default": "div" 9251 }, 9252 legacy: { 9253 type: "boolean", 9254 "default": false 9255 } 9256 }, 9257 supports: { 9258 align: ["wide", "full"], 9259 html: false, 9260 color: { 9261 gradients: true, 9262 heading: true, 9263 link: true, 9264 __experimentalDefaultControls: { 9265 background: true, 9266 text: true, 9267 link: true 9268 } 9269 }, 9270 spacing: { 9271 margin: true, 9272 padding: true 9273 }, 9274 typography: { 9275 fontSize: true, 9276 lineHeight: true, 9277 __experimentalFontFamily: true, 9278 __experimentalFontWeight: true, 9279 __experimentalFontStyle: true, 9280 __experimentalTextTransform: true, 9281 __experimentalTextDecoration: true, 9282 __experimentalLetterSpacing: true, 9283 __experimentalDefaultControls: { 9284 fontSize: true 9285 } 9286 } 9287 }, 9288 editorStyle: "wp-block-comments-editor", 9289 usesContext: ["postId", "postType"] 9290 }; 9291 9292 9293 9294 const { 9295 name: comments_name 9296 } = comments_metadata; 9297 9298 const comments_settings = { 9299 icon: post_comments, 9300 edit: CommentsEdit, 9301 save: comments_save_save, 9302 deprecated: comments_deprecated 9303 }; 9304 const comments_init = () => initBlock({ 9305 name: comments_name, 9306 metadata: comments_metadata, 9307 settings: comments_settings 9308 }); 9309 9310 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-author-avatar/edit.js 9311 /** 9312 * WordPress dependencies 9313 */ 9314 9315 9316 9317 9318 9319 9320 9321 9322 function edit_Edit({ 9323 attributes, 9324 context: { 9325 commentId 9326 }, 9327 setAttributes, 9328 isSelected 9329 }) { 9330 const { 9331 height, 9332 width 9333 } = attributes; 9334 const [avatars] = (0,external_wp_coreData_namespaceObject.useEntityProp)('root', 'comment', 'author_avatar_urls', commentId); 9335 const [authorName] = (0,external_wp_coreData_namespaceObject.useEntityProp)('root', 'comment', 'author_name', commentId); 9336 const avatarUrls = avatars ? Object.values(avatars) : null; 9337 const sizes = avatars ? Object.keys(avatars) : null; 9338 const minSize = sizes ? sizes[0] : 24; 9339 const maxSize = sizes ? sizes[sizes.length - 1] : 96; 9340 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 9341 const spacingProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetSpacingClassesAndStyles)(attributes); 9342 const maxSizeBuffer = Math.floor(maxSize * 2.5); 9343 const { 9344 avatarURL 9345 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 9346 const { 9347 getSettings 9348 } = select(external_wp_blockEditor_namespaceObject.store); 9349 const { 9350 __experimentalDiscussionSettings 9351 } = getSettings(); 9352 return __experimentalDiscussionSettings; 9353 }); 9354 const inspectorControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 9355 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 9356 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 9357 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 9358 __nextHasNoMarginBottom: true, 9359 __next40pxDefaultSize: true, 9360 label: (0,external_wp_i18n_namespaceObject.__)('Image size'), 9361 onChange: newWidth => setAttributes({ 9362 width: newWidth, 9363 height: newWidth 9364 }), 9365 min: minSize, 9366 max: maxSizeBuffer, 9367 initialPosition: width, 9368 value: width 9369 }) 9370 }) 9371 }); 9372 const resizableAvatar = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ResizableBox, { 9373 size: { 9374 width, 9375 height 9376 }, 9377 showHandle: isSelected, 9378 onResizeStop: (event, direction, elt, delta) => { 9379 setAttributes({ 9380 height: parseInt(height + delta.height, 10), 9381 width: parseInt(width + delta.width, 10) 9382 }); 9383 }, 9384 lockAspectRatio: true, 9385 enable: { 9386 top: false, 9387 right: !(0,external_wp_i18n_namespaceObject.isRTL)(), 9388 bottom: true, 9389 left: (0,external_wp_i18n_namespaceObject.isRTL)() 9390 }, 9391 minWidth: minSize, 9392 maxWidth: maxSizeBuffer, 9393 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 9394 src: avatarUrls ? avatarUrls[avatarUrls.length - 1] : avatarURL, 9395 alt: `$authorName} ${(0,external_wp_i18n_namespaceObject.__)('Avatar')}`, 9396 ...blockProps 9397 }) 9398 }); 9399 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 9400 children: [inspectorControls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 9401 ...spacingProps, 9402 children: resizableAvatar 9403 })] 9404 }); 9405 } 9406 9407 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-author-avatar/index.js 9408 /** 9409 * WordPress dependencies 9410 */ 9411 9412 9413 /** 9414 * Internal dependencies 9415 */ 9416 9417 const comment_author_avatar_metadata = { 9418 $schema: "https://schemas.wp.org/trunk/block.json", 9419 apiVersion: 3, 9420 __experimental: "fse", 9421 name: "core/comment-author-avatar", 9422 title: "Comment Author Avatar (deprecated)", 9423 category: "theme", 9424 ancestor: ["core/comment-template"], 9425 description: "This block is deprecated. Please use the Avatar block instead.", 9426 textdomain: "default", 9427 attributes: { 9428 width: { 9429 type: "number", 9430 "default": 96 9431 }, 9432 height: { 9433 type: "number", 9434 "default": 96 9435 } 9436 }, 9437 usesContext: ["commentId"], 9438 supports: { 9439 html: false, 9440 inserter: false, 9441 __experimentalBorder: { 9442 radius: true, 9443 width: true, 9444 color: true, 9445 style: true 9446 }, 9447 color: { 9448 background: true, 9449 text: false, 9450 __experimentalDefaultControls: { 9451 background: true 9452 } 9453 }, 9454 spacing: { 9455 __experimentalSkipSerialization: true, 9456 margin: true, 9457 padding: true 9458 }, 9459 interactivity: { 9460 clientNavigation: true 9461 } 9462 } 9463 }; 9464 9465 const { 9466 name: comment_author_avatar_name 9467 } = comment_author_avatar_metadata; 9468 9469 const comment_author_avatar_settings = { 9470 icon: comment_author_avatar, 9471 edit: edit_Edit 9472 }; 9473 const comment_author_avatar_init = () => initBlock({ 9474 name: comment_author_avatar_name, 9475 metadata: comment_author_avatar_metadata, 9476 settings: comment_author_avatar_settings 9477 }); 9478 9479 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/comment-author-name.js 9480 /** 9481 * WordPress dependencies 9482 */ 9483 9484 9485 9486 const commentAuthorName = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, { 9487 viewBox: "0 0 24 24", 9488 xmlns: "http://www.w3.org/2000/svg", 9489 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 9490 d: "M18 4H6c-1.1 0-2 .9-2 2v12.9c0 .6.5 1.1 1.1 1.1.3 0 .5-.1.8-.3L8.5 17H18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 11c0 .3-.2.5-.5.5H7.9l-2.4 2.4V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v9z", 9491 fillRule: "evenodd", 9492 clipRule: "evenodd" 9493 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 9494 d: "M15 15V15C15 13.8954 14.1046 13 13 13L11 13C9.89543 13 9 13.8954 9 15V15", 9495 fillRule: "evenodd", 9496 clipRule: "evenodd" 9497 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Circle, { 9498 cx: "12", 9499 cy: "9", 9500 r: "2", 9501 fillRule: "evenodd", 9502 clipRule: "evenodd" 9503 })] 9504 }); 9505 /* harmony default export */ const comment_author_name = (commentAuthorName); 9506 9507 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-author-name/edit.js 9508 /** 9509 * External dependencies 9510 */ 9511 9512 9513 /** 9514 * WordPress dependencies 9515 */ 9516 9517 9518 9519 9520 9521 9522 /** 9523 * Renders the `core/comment-author-name` block on the editor. 9524 * 9525 * @param {Object} props React props. 9526 * @param {Object} props.setAttributes Callback for updating block attributes. 9527 * @param {Object} props.attributes Block attributes. 9528 * @param {string} props.attributes.isLink Whether the author name should be linked. 9529 * @param {string} props.attributes.linkTarget Target of the link. 9530 * @param {string} props.attributes.textAlign Text alignment. 9531 * @param {Object} props.context Inherited context. 9532 * @param {string} props.context.commentId The comment ID. 9533 * 9534 * @return {JSX.Element} React element. 9535 */ 9536 9537 9538 9539 function comment_author_name_edit_Edit({ 9540 attributes: { 9541 isLink, 9542 linkTarget, 9543 textAlign 9544 }, 9545 context: { 9546 commentId 9547 }, 9548 setAttributes 9549 }) { 9550 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 9551 className: dist_clsx({ 9552 [`has-text-align-$textAlign}`]: textAlign 9553 }) 9554 }); 9555 let displayName = (0,external_wp_data_namespaceObject.useSelect)(select => { 9556 const { 9557 getEntityRecord 9558 } = select(external_wp_coreData_namespaceObject.store); 9559 const comment = getEntityRecord('root', 'comment', commentId); 9560 const authorName = comment?.author_name; // eslint-disable-line camelcase 9561 9562 if (comment && !authorName) { 9563 var _user$name; 9564 const user = getEntityRecord('root', 'user', comment.author); 9565 return (_user$name = user?.name) !== null && _user$name !== void 0 ? _user$name : (0,external_wp_i18n_namespaceObject.__)('Anonymous'); 9566 } 9567 return authorName !== null && authorName !== void 0 ? authorName : ''; 9568 }, [commentId]); 9569 const blockControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 9570 group: "block", 9571 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 9572 value: textAlign, 9573 onChange: newAlign => setAttributes({ 9574 textAlign: newAlign 9575 }) 9576 }) 9577 }); 9578 const inspectorControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 9579 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 9580 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 9581 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 9582 __nextHasNoMarginBottom: true, 9583 label: (0,external_wp_i18n_namespaceObject.__)('Link to authors URL'), 9584 onChange: () => setAttributes({ 9585 isLink: !isLink 9586 }), 9587 checked: isLink 9588 }), isLink && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 9589 __nextHasNoMarginBottom: true, 9590 label: (0,external_wp_i18n_namespaceObject.__)('Open in new tab'), 9591 onChange: value => setAttributes({ 9592 linkTarget: value ? '_blank' : '_self' 9593 }), 9594 checked: linkTarget === '_blank' 9595 })] 9596 }) 9597 }); 9598 if (!commentId || !displayName) { 9599 displayName = (0,external_wp_i18n_namespaceObject._x)('Comment Author', 'block title'); 9600 } 9601 const displayAuthor = isLink ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 9602 href: "#comment-author-pseudo-link", 9603 onClick: event => event.preventDefault(), 9604 children: displayName 9605 }) : displayName; 9606 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 9607 children: [inspectorControls, blockControls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 9608 ...blockProps, 9609 children: displayAuthor 9610 })] 9611 }); 9612 } 9613 9614 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-author-name/deprecated.js 9615 /** 9616 * Internal dependencies 9617 */ 9618 9619 const deprecated_v1 = { 9620 attributes: { 9621 isLink: { 9622 type: 'boolean', 9623 default: false 9624 }, 9625 linkTarget: { 9626 type: 'string', 9627 default: '_self' 9628 } 9629 }, 9630 supports: { 9631 html: false, 9632 color: { 9633 gradients: true, 9634 link: true 9635 }, 9636 typography: { 9637 fontSize: true, 9638 lineHeight: true, 9639 __experimentalFontFamily: true, 9640 __experimentalFontWeight: true, 9641 __experimentalFontStyle: true, 9642 __experimentalTextTransform: true, 9643 __experimentalLetterSpacing: true 9644 } 9645 }, 9646 save() { 9647 return null; 9648 }, 9649 migrate: migrate_font_family, 9650 isEligible({ 9651 style 9652 }) { 9653 return style?.typography?.fontFamily; 9654 } 9655 }; 9656 9657 /** 9658 * New deprecations need to be placed first 9659 * for them to have higher priority. 9660 * 9661 * Old deprecations may need to be updated as well. 9662 * 9663 * See block-deprecation.md 9664 */ 9665 /* harmony default export */ const comment_author_name_deprecated = ([deprecated_v1]); 9666 9667 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-author-name/index.js 9668 /** 9669 * WordPress dependencies 9670 */ 9671 9672 9673 /** 9674 * Internal dependencies 9675 */ 9676 9677 const comment_author_name_metadata = { 9678 $schema: "https://schemas.wp.org/trunk/block.json", 9679 apiVersion: 3, 9680 name: "core/comment-author-name", 9681 title: "Comment Author Name", 9682 category: "theme", 9683 ancestor: ["core/comment-template"], 9684 description: "Displays the name of the author of the comment.", 9685 textdomain: "default", 9686 attributes: { 9687 isLink: { 9688 type: "boolean", 9689 "default": true 9690 }, 9691 linkTarget: { 9692 type: "string", 9693 "default": "_self" 9694 }, 9695 textAlign: { 9696 type: "string" 9697 } 9698 }, 9699 usesContext: ["commentId"], 9700 supports: { 9701 html: false, 9702 spacing: { 9703 margin: true, 9704 padding: true 9705 }, 9706 color: { 9707 gradients: true, 9708 link: true, 9709 __experimentalDefaultControls: { 9710 background: true, 9711 text: true, 9712 link: true 9713 } 9714 }, 9715 typography: { 9716 fontSize: true, 9717 lineHeight: true, 9718 __experimentalFontFamily: true, 9719 __experimentalFontWeight: true, 9720 __experimentalFontStyle: true, 9721 __experimentalTextTransform: true, 9722 __experimentalTextDecoration: true, 9723 __experimentalLetterSpacing: true, 9724 __experimentalDefaultControls: { 9725 fontSize: true 9726 } 9727 }, 9728 interactivity: { 9729 clientNavigation: true 9730 }, 9731 __experimentalBorder: { 9732 radius: true, 9733 color: true, 9734 width: true, 9735 style: true, 9736 __experimentalDefaultControls: { 9737 radius: true, 9738 color: true, 9739 width: true, 9740 style: true 9741 } 9742 } 9743 }, 9744 style: "wp-block-comment-author-name" 9745 }; 9746 9747 9748 const { 9749 name: comment_author_name_name 9750 } = comment_author_name_metadata; 9751 9752 const comment_author_name_settings = { 9753 icon: comment_author_name, 9754 edit: comment_author_name_edit_Edit, 9755 deprecated: comment_author_name_deprecated 9756 }; 9757 const comment_author_name_init = () => initBlock({ 9758 name: comment_author_name_name, 9759 metadata: comment_author_name_metadata, 9760 settings: comment_author_name_settings 9761 }); 9762 9763 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/comment-content.js 9764 /** 9765 * WordPress dependencies 9766 */ 9767 9768 9769 const commentContent = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 9770 viewBox: "0 0 24 24", 9771 xmlns: "http://www.w3.org/2000/svg", 9772 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 9773 fillRule: "evenodd", 9774 clipRule: "evenodd", 9775 d: "M6.68822 16.625L5.5 17.8145L5.5 5.5L18.5 5.5L18.5 16.625L6.68822 16.625ZM7.31 18.125L19 18.125C19.5523 18.125 20 17.6773 20 17.125L20 5C20 4.44772 19.5523 4 19 4H5C4.44772 4 4 4.44772 4 5V19.5247C4 19.8173 4.16123 20.086 4.41935 20.2237C4.72711 20.3878 5.10601 20.3313 5.35252 20.0845L7.31 18.125ZM16 9.99997H8V8.49997H16V9.99997ZM8 14H13V12.5H8V14Z" 9776 }) 9777 }); 9778 /* harmony default export */ const comment_content = (commentContent); 9779 9780 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-content/edit.js 9781 /** 9782 * External dependencies 9783 */ 9784 9785 9786 /** 9787 * WordPress dependencies 9788 */ 9789 9790 9791 9792 9793 9794 9795 /** 9796 * Renders the `core/comment-content` block on the editor. 9797 * 9798 * @param {Object} props React props. 9799 * @param {Object} props.setAttributes Callback for updating block attributes. 9800 * @param {Object} props.attributes Block attributes. 9801 * @param {string} props.attributes.textAlign The `textAlign` attribute. 9802 * @param {Object} props.context Inherited context. 9803 * @param {string} props.context.commentId The comment ID. 9804 * 9805 * @return {JSX.Element} React element. 9806 */ 9807 9808 9809 9810 function comment_content_edit_Edit({ 9811 setAttributes, 9812 attributes: { 9813 textAlign 9814 }, 9815 context: { 9816 commentId 9817 } 9818 }) { 9819 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 9820 className: dist_clsx({ 9821 [`has-text-align-$textAlign}`]: textAlign 9822 }) 9823 }); 9824 const [content] = (0,external_wp_coreData_namespaceObject.useEntityProp)('root', 'comment', 'content', commentId); 9825 const blockControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 9826 group: "block", 9827 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 9828 value: textAlign, 9829 onChange: newAlign => setAttributes({ 9830 textAlign: newAlign 9831 }) 9832 }) 9833 }); 9834 if (!commentId || !content) { 9835 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 9836 children: [blockControls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 9837 ...blockProps, 9838 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 9839 children: (0,external_wp_i18n_namespaceObject._x)('Comment Content', 'block title') 9840 }) 9841 })] 9842 }); 9843 } 9844 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 9845 children: [blockControls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 9846 ...blockProps, 9847 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, { 9848 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_element_namespaceObject.RawHTML, { 9849 children: content.rendered 9850 }, "html") 9851 }) 9852 })] 9853 }); 9854 } 9855 9856 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-content/index.js 9857 /** 9858 * WordPress dependencies 9859 */ 9860 9861 9862 /** 9863 * Internal dependencies 9864 */ 9865 9866 const comment_content_metadata = { 9867 $schema: "https://schemas.wp.org/trunk/block.json", 9868 apiVersion: 3, 9869 name: "core/comment-content", 9870 title: "Comment Content", 9871 category: "theme", 9872 ancestor: ["core/comment-template"], 9873 description: "Displays the contents of a comment.", 9874 textdomain: "default", 9875 usesContext: ["commentId"], 9876 attributes: { 9877 textAlign: { 9878 type: "string" 9879 } 9880 }, 9881 supports: { 9882 color: { 9883 gradients: true, 9884 link: true, 9885 __experimentalDefaultControls: { 9886 background: true, 9887 text: true 9888 } 9889 }, 9890 typography: { 9891 fontSize: true, 9892 lineHeight: true, 9893 __experimentalFontFamily: true, 9894 __experimentalFontWeight: true, 9895 __experimentalFontStyle: true, 9896 __experimentalTextTransform: true, 9897 __experimentalTextDecoration: true, 9898 __experimentalLetterSpacing: true, 9899 __experimentalDefaultControls: { 9900 fontSize: true 9901 } 9902 }, 9903 __experimentalBorder: { 9904 radius: true, 9905 color: true, 9906 width: true, 9907 style: true, 9908 __experimentalDefaultControls: { 9909 radius: true, 9910 color: true, 9911 width: true, 9912 style: true 9913 } 9914 }, 9915 spacing: { 9916 padding: ["horizontal", "vertical"], 9917 __experimentalDefaultControls: { 9918 padding: true 9919 } 9920 }, 9921 html: false 9922 }, 9923 style: "wp-block-comment-content" 9924 }; 9925 9926 const { 9927 name: comment_content_name 9928 } = comment_content_metadata; 9929 9930 const comment_content_settings = { 9931 icon: comment_content, 9932 edit: comment_content_edit_Edit 9933 }; 9934 const comment_content_init = () => initBlock({ 9935 name: comment_content_name, 9936 metadata: comment_content_metadata, 9937 settings: comment_content_settings 9938 }); 9939 9940 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-date.js 9941 /** 9942 * WordPress dependencies 9943 */ 9944 9945 9946 9947 const postDate = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, { 9948 xmlns: "http://www.w3.org/2000/svg", 9949 viewBox: "0 0 24 24", 9950 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 9951 d: "M11.696 13.972c.356-.546.599-.958.728-1.235a1.79 1.79 0 00.203-.783c0-.264-.077-.47-.23-.618-.148-.153-.354-.23-.618-.23-.295 0-.569.07-.82.212a3.413 3.413 0 00-.738.571l-.147-1.188c.289-.234.59-.41.903-.526.313-.117.66-.175 1.041-.175.375 0 .695.08.959.24.264.153.46.362.59.626.135.265.203.556.203.876 0 .362-.08.734-.24 1.115-.154.381-.427.87-.82 1.466l-.756 1.152H14v1.106h-4l1.696-2.609z" 9952 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 9953 d: "M19.5 7h-15v12a.5.5 0 00.5.5h14a.5.5 0 00.5-.5V7zM3 7V5a2 2 0 012-2h14a2 2 0 012 2v14a2 2 0 01-2 2H5a2 2 0 01-2-2V7z" 9954 })] 9955 }); 9956 /* harmony default export */ const post_date = (postDate); 9957 9958 ;// CONCATENATED MODULE: external ["wp","date"] 9959 const external_wp_date_namespaceObject = window["wp"]["date"]; 9960 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-date/edit.js 9961 /** 9962 * WordPress dependencies 9963 */ 9964 9965 9966 9967 9968 9969 9970 /** 9971 * Renders the `core/comment-date` block on the editor. 9972 * 9973 * @param {Object} props React props. 9974 * @param {Object} props.setAttributes Callback for updating block attributes. 9975 * @param {Object} props.attributes Block attributes. 9976 * @param {string} props.attributes.format Format of the date. 9977 * @param {string} props.attributes.isLink Whether the author name should be linked. 9978 * @param {Object} props.context Inherited context. 9979 * @param {string} props.context.commentId The comment ID. 9980 * 9981 * @return {JSX.Element} React element. 9982 */ 9983 9984 9985 9986 function comment_date_edit_Edit({ 9987 attributes: { 9988 format, 9989 isLink 9990 }, 9991 context: { 9992 commentId 9993 }, 9994 setAttributes 9995 }) { 9996 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 9997 let [date] = (0,external_wp_coreData_namespaceObject.useEntityProp)('root', 'comment', 'date', commentId); 9998 const [siteFormat = (0,external_wp_date_namespaceObject.getSettings)().formats.date] = (0,external_wp_coreData_namespaceObject.useEntityProp)('root', 'site', 'date_format'); 9999 const inspectorControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 10000 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 10001 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 10002 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalDateFormatPicker, { 10003 format: format, 10004 defaultFormat: siteFormat, 10005 onChange: nextFormat => setAttributes({ 10006 format: nextFormat 10007 }) 10008 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 10009 __nextHasNoMarginBottom: true, 10010 label: (0,external_wp_i18n_namespaceObject.__)('Link to comment'), 10011 onChange: () => setAttributes({ 10012 isLink: !isLink 10013 }), 10014 checked: isLink 10015 })] 10016 }) 10017 }); 10018 if (!commentId || !date) { 10019 date = (0,external_wp_i18n_namespaceObject._x)('Comment Date', 'block title'); 10020 } 10021 let commentDate = date instanceof Date ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", { 10022 dateTime: (0,external_wp_date_namespaceObject.dateI18n)('c', date), 10023 children: format === 'human-diff' ? (0,external_wp_date_namespaceObject.humanTimeDiff)(date) : (0,external_wp_date_namespaceObject.dateI18n)(format || siteFormat, date) 10024 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", { 10025 children: date 10026 }); 10027 if (isLink) { 10028 commentDate = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 10029 href: "#comment-date-pseudo-link", 10030 onClick: event => event.preventDefault(), 10031 children: commentDate 10032 }); 10033 } 10034 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 10035 children: [inspectorControls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 10036 ...blockProps, 10037 children: commentDate 10038 })] 10039 }); 10040 } 10041 10042 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-date/deprecated.js 10043 /** 10044 * Internal dependencies 10045 */ 10046 10047 const comment_date_deprecated_v1 = { 10048 attributes: { 10049 format: { 10050 type: 'string' 10051 }, 10052 isLink: { 10053 type: 'boolean', 10054 default: false 10055 } 10056 }, 10057 supports: { 10058 html: false, 10059 color: { 10060 gradients: true, 10061 link: true 10062 }, 10063 typography: { 10064 fontSize: true, 10065 lineHeight: true, 10066 __experimentalFontFamily: true, 10067 __experimentalFontWeight: true, 10068 __experimentalFontStyle: true, 10069 __experimentalTextTransform: true, 10070 __experimentalLetterSpacing: true 10071 } 10072 }, 10073 save() { 10074 return null; 10075 }, 10076 migrate: migrate_font_family, 10077 isEligible({ 10078 style 10079 }) { 10080 return style?.typography?.fontFamily; 10081 } 10082 }; 10083 10084 /** 10085 * New deprecations need to be placed first 10086 * for them to have higher priority. 10087 * 10088 * Old deprecations may need to be updated as well. 10089 * 10090 * See block-deprecation.md 10091 */ 10092 /* harmony default export */ const comment_date_deprecated = ([comment_date_deprecated_v1]); 10093 10094 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-date/index.js 10095 /** 10096 * WordPress dependencies 10097 */ 10098 10099 10100 /** 10101 * Internal dependencies 10102 */ 10103 10104 const comment_date_metadata = { 10105 $schema: "https://schemas.wp.org/trunk/block.json", 10106 apiVersion: 3, 10107 name: "core/comment-date", 10108 title: "Comment Date", 10109 category: "theme", 10110 ancestor: ["core/comment-template"], 10111 description: "Displays the date on which the comment was posted.", 10112 textdomain: "default", 10113 attributes: { 10114 format: { 10115 type: "string" 10116 }, 10117 isLink: { 10118 type: "boolean", 10119 "default": true 10120 } 10121 }, 10122 usesContext: ["commentId"], 10123 supports: { 10124 html: false, 10125 color: { 10126 gradients: true, 10127 link: true, 10128 __experimentalDefaultControls: { 10129 background: true, 10130 text: true, 10131 link: true 10132 } 10133 }, 10134 spacing: { 10135 margin: true, 10136 padding: true 10137 }, 10138 typography: { 10139 fontSize: true, 10140 lineHeight: true, 10141 __experimentalFontFamily: true, 10142 __experimentalFontWeight: true, 10143 __experimentalFontStyle: true, 10144 __experimentalTextTransform: true, 10145 __experimentalTextDecoration: true, 10146 __experimentalLetterSpacing: true, 10147 __experimentalDefaultControls: { 10148 fontSize: true 10149 } 10150 }, 10151 interactivity: { 10152 clientNavigation: true 10153 }, 10154 __experimentalBorder: { 10155 radius: true, 10156 color: true, 10157 width: true, 10158 style: true, 10159 __experimentalDefaultControls: { 10160 radius: true, 10161 color: true, 10162 width: true, 10163 style: true 10164 } 10165 } 10166 }, 10167 style: "wp-block-comment-date" 10168 }; 10169 10170 10171 const { 10172 name: comment_date_name 10173 } = comment_date_metadata; 10174 10175 const comment_date_settings = { 10176 icon: post_date, 10177 edit: comment_date_edit_Edit, 10178 deprecated: comment_date_deprecated 10179 }; 10180 const comment_date_init = () => initBlock({ 10181 name: comment_date_name, 10182 metadata: comment_date_metadata, 10183 settings: comment_date_settings 10184 }); 10185 10186 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/comment-edit-link.js 10187 /** 10188 * WordPress dependencies 10189 */ 10190 10191 10192 const commentEditLink = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 10193 width: "24", 10194 height: "24", 10195 viewBox: "0 0 24 24", 10196 xmlns: "http://www.w3.org/2000/svg", 10197 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 10198 d: "m6.249 11.065.44-.44h3.186l-1.5 1.5H7.31l-1.957 1.96A.792.792 0 0 1 4 13.524V5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v1.5L12.5 8V5.5h-7v6.315l.749-.75ZM20 19.75H7v-1.5h13v1.5Zm0-12.653-8.967 9.064L8 17l.867-2.935L17.833 5 20 7.097Z" 10199 }) 10200 }); 10201 /* harmony default export */ const comment_edit_link = (commentEditLink); 10202 10203 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-edit-link/edit.js 10204 /** 10205 * External dependencies 10206 */ 10207 10208 10209 /** 10210 * WordPress dependencies 10211 */ 10212 10213 10214 10215 10216 10217 10218 function comment_edit_link_edit_Edit({ 10219 attributes: { 10220 linkTarget, 10221 textAlign 10222 }, 10223 setAttributes 10224 }) { 10225 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 10226 className: dist_clsx({ 10227 [`has-text-align-$textAlign}`]: textAlign 10228 }) 10229 }); 10230 const blockControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 10231 group: "block", 10232 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 10233 value: textAlign, 10234 onChange: newAlign => setAttributes({ 10235 textAlign: newAlign 10236 }) 10237 }) 10238 }); 10239 const inspectorControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 10240 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 10241 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 10242 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 10243 __nextHasNoMarginBottom: true, 10244 label: (0,external_wp_i18n_namespaceObject.__)('Open in new tab'), 10245 onChange: value => setAttributes({ 10246 linkTarget: value ? '_blank' : '_self' 10247 }), 10248 checked: linkTarget === '_blank' 10249 }) 10250 }) 10251 }); 10252 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 10253 children: [blockControls, inspectorControls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 10254 ...blockProps, 10255 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 10256 href: "#edit-comment-pseudo-link", 10257 onClick: event => event.preventDefault(), 10258 children: (0,external_wp_i18n_namespaceObject.__)('Edit') 10259 }) 10260 })] 10261 }); 10262 } 10263 10264 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-edit-link/index.js 10265 /** 10266 * WordPress dependencies 10267 */ 10268 10269 10270 /** 10271 * Internal dependencies 10272 */ 10273 10274 const comment_edit_link_metadata = { 10275 $schema: "https://schemas.wp.org/trunk/block.json", 10276 apiVersion: 3, 10277 name: "core/comment-edit-link", 10278 title: "Comment Edit Link", 10279 category: "theme", 10280 ancestor: ["core/comment-template"], 10281 description: "Displays a link to edit the comment in the WordPress Dashboard. This link is only visible to users with the edit comment capability.", 10282 textdomain: "default", 10283 usesContext: ["commentId"], 10284 attributes: { 10285 linkTarget: { 10286 type: "string", 10287 "default": "_self" 10288 }, 10289 textAlign: { 10290 type: "string" 10291 } 10292 }, 10293 supports: { 10294 html: false, 10295 color: { 10296 link: true, 10297 gradients: true, 10298 text: false, 10299 __experimentalDefaultControls: { 10300 background: true, 10301 link: true 10302 } 10303 }, 10304 spacing: { 10305 margin: true, 10306 padding: true, 10307 __experimentalDefaultControls: { 10308 margin: false, 10309 padding: false 10310 } 10311 }, 10312 typography: { 10313 fontSize: true, 10314 lineHeight: true, 10315 __experimentalFontFamily: true, 10316 __experimentalFontWeight: true, 10317 __experimentalFontStyle: true, 10318 __experimentalTextTransform: true, 10319 __experimentalTextDecoration: true, 10320 __experimentalLetterSpacing: true, 10321 __experimentalDefaultControls: { 10322 fontSize: true 10323 } 10324 }, 10325 interactivity: { 10326 clientNavigation: true 10327 }, 10328 __experimentalBorder: { 10329 radius: true, 10330 color: true, 10331 width: true, 10332 style: true 10333 } 10334 }, 10335 style: "wp-block-comment-edit-link" 10336 }; 10337 10338 const { 10339 name: comment_edit_link_name 10340 } = comment_edit_link_metadata; 10341 10342 const comment_edit_link_settings = { 10343 icon: comment_edit_link, 10344 edit: comment_edit_link_edit_Edit 10345 }; 10346 const comment_edit_link_init = () => initBlock({ 10347 name: comment_edit_link_name, 10348 metadata: comment_edit_link_metadata, 10349 settings: comment_edit_link_settings 10350 }); 10351 10352 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/comment-reply-link.js 10353 /** 10354 * WordPress dependencies 10355 */ 10356 10357 10358 const commentReplyLink = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 10359 width: "24", 10360 height: "24", 10361 viewBox: "0 0 24 24", 10362 xmlns: "http://www.w3.org/2000/svg", 10363 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 10364 d: "M6.68822 10.625L6.24878 11.0649L5.5 11.8145L5.5 5.5L12.5 5.5V8L14 6.5V5C14 4.44772 13.5523 4 13 4H5C4.44772 4 4 4.44771 4 5V13.5247C4 13.8173 4.16123 14.086 4.41935 14.2237C4.72711 14.3878 5.10601 14.3313 5.35252 14.0845L7.31 12.125H8.375L9.875 10.625H7.31H6.68822ZM14.5605 10.4983L11.6701 13.75H16.9975C17.9963 13.75 18.7796 14.1104 19.3553 14.7048C19.9095 15.2771 20.2299 16.0224 20.4224 16.7443C20.7645 18.0276 20.7543 19.4618 20.7487 20.2544C20.7481 20.345 20.7475 20.4272 20.7475 20.4999L19.2475 20.5001C19.2475 20.4191 19.248 20.3319 19.2484 20.2394V20.2394C19.2526 19.4274 19.259 18.2035 18.973 17.1307C18.8156 16.5401 18.586 16.0666 18.2778 15.7483C17.9909 15.4521 17.5991 15.25 16.9975 15.25H11.8106L14.5303 17.9697L13.4696 19.0303L8.96956 14.5303L13.4394 9.50171L14.5605 10.4983Z" 10365 }) 10366 }); 10367 /* harmony default export */ const comment_reply_link = (commentReplyLink); 10368 10369 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-reply-link/edit.js 10370 /** 10371 * External dependencies 10372 */ 10373 10374 10375 /** 10376 * WordPress dependencies 10377 */ 10378 10379 10380 10381 /** 10382 * Renders the `core/comment-reply-link` block on the editor. 10383 * 10384 * @param {Object} props React props. 10385 * @param {Object} props.setAttributes Callback for updating block attributes. 10386 * @param {Object} props.attributes Block attributes. 10387 * @param {string} props.attributes.textAlign The `textAlign` attribute. 10388 * 10389 * @return {JSX.Element} React element. 10390 */ 10391 10392 10393 10394 function comment_reply_link_edit_Edit({ 10395 setAttributes, 10396 attributes: { 10397 textAlign 10398 } 10399 }) { 10400 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 10401 className: dist_clsx({ 10402 [`has-text-align-$textAlign}`]: textAlign 10403 }) 10404 }); 10405 const blockControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 10406 group: "block", 10407 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 10408 value: textAlign, 10409 onChange: newAlign => setAttributes({ 10410 textAlign: newAlign 10411 }) 10412 }) 10413 }); 10414 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 10415 children: [blockControls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 10416 ...blockProps, 10417 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 10418 href: "#comment-reply-pseudo-link", 10419 onClick: event => event.preventDefault(), 10420 children: (0,external_wp_i18n_namespaceObject.__)('Reply') 10421 }) 10422 })] 10423 }); 10424 } 10425 /* harmony default export */ const comment_reply_link_edit = (comment_reply_link_edit_Edit); 10426 10427 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-reply-link/index.js 10428 /** 10429 * WordPress dependencies 10430 */ 10431 10432 10433 /** 10434 * Internal dependencies 10435 */ 10436 10437 const comment_reply_link_metadata = { 10438 $schema: "https://schemas.wp.org/trunk/block.json", 10439 apiVersion: 3, 10440 name: "core/comment-reply-link", 10441 title: "Comment Reply Link", 10442 category: "theme", 10443 ancestor: ["core/comment-template"], 10444 description: "Displays a link to reply to a comment.", 10445 textdomain: "default", 10446 usesContext: ["commentId"], 10447 attributes: { 10448 textAlign: { 10449 type: "string" 10450 } 10451 }, 10452 supports: { 10453 color: { 10454 gradients: true, 10455 link: true, 10456 text: false, 10457 __experimentalDefaultControls: { 10458 background: true, 10459 link: true 10460 } 10461 }, 10462 spacing: { 10463 margin: true, 10464 padding: true, 10465 __experimentalDefaultControls: { 10466 margin: false, 10467 padding: false 10468 } 10469 }, 10470 typography: { 10471 fontSize: true, 10472 lineHeight: true, 10473 __experimentalFontFamily: true, 10474 __experimentalFontWeight: true, 10475 __experimentalFontStyle: true, 10476 __experimentalTextTransform: true, 10477 __experimentalTextDecoration: true, 10478 __experimentalLetterSpacing: true, 10479 __experimentalDefaultControls: { 10480 fontSize: true 10481 } 10482 }, 10483 __experimentalBorder: { 10484 radius: true, 10485 color: true, 10486 width: true, 10487 style: true 10488 }, 10489 html: false 10490 }, 10491 style: "wp-block-comment-reply-link" 10492 }; 10493 10494 const { 10495 name: comment_reply_link_name 10496 } = comment_reply_link_metadata; 10497 10498 const comment_reply_link_settings = { 10499 edit: comment_reply_link_edit, 10500 icon: comment_reply_link 10501 }; 10502 const comment_reply_link_init = () => initBlock({ 10503 name: comment_reply_link_name, 10504 metadata: comment_reply_link_metadata, 10505 settings: comment_reply_link_settings 10506 }); 10507 10508 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/layout.js 10509 /** 10510 * WordPress dependencies 10511 */ 10512 10513 10514 const layout = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 10515 xmlns: "http://www.w3.org/2000/svg", 10516 viewBox: "0 0 24 24", 10517 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 10518 d: "M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z" 10519 }) 10520 }); 10521 /* harmony default export */ const library_layout = (layout); 10522 10523 ;// CONCATENATED MODULE: external ["wp","apiFetch"] 10524 const external_wp_apiFetch_namespaceObject = window["wp"]["apiFetch"]; 10525 var external_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_wp_apiFetch_namespaceObject); 10526 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-template/hooks.js 10527 /** 10528 * WordPress dependencies 10529 */ 10530 10531 10532 10533 10534 10535 10536 // This is limited by WP REST API 10537 const MAX_COMMENTS_PER_PAGE = 100; 10538 10539 /** 10540 * Return an object with the query args needed to fetch the default page of 10541 * comments. 10542 * 10543 * @param {Object} props Hook props. 10544 * @param {number} props.postId ID of the post that contains the comments. 10545 * discussion settings. 10546 * 10547 * @return {Object} Query args to retrieve the comments. 10548 */ 10549 const useCommentQueryArgs = ({ 10550 postId 10551 }) => { 10552 // Initialize the query args that are not going to change. 10553 const queryArgs = { 10554 status: 'approve', 10555 order: 'asc', 10556 context: 'embed', 10557 parent: 0, 10558 _embed: 'children' 10559 }; 10560 10561 // Get the Discussion settings that may be needed to query the comments. 10562 const { 10563 pageComments, 10564 commentsPerPage, 10565 defaultCommentsPage: defaultPage 10566 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 10567 const { 10568 getSettings 10569 } = select(external_wp_blockEditor_namespaceObject.store); 10570 const { 10571 __experimentalDiscussionSettings 10572 } = getSettings(); 10573 return __experimentalDiscussionSettings; 10574 }); 10575 10576 // WP REST API doesn't allow fetching more than max items limit set per single page of data. 10577 // As for the editor performance is more important than completeness of data and fetching only the 10578 // max allowed for single page should be enough for the purpose of design and laying out the page. 10579 // Fetching over the limit would return an error here but would work with backend query. 10580 const perPage = pageComments ? Math.min(commentsPerPage, MAX_COMMENTS_PER_PAGE) : MAX_COMMENTS_PER_PAGE; 10581 10582 // Get the number of the default page. 10583 const page = useDefaultPageIndex({ 10584 defaultPage, 10585 postId, 10586 perPage, 10587 queryArgs 10588 }); 10589 10590 // Merge, memoize and return all query arguments, unless the default page's 10591 // number is not known yet. 10592 return (0,external_wp_element_namespaceObject.useMemo)(() => { 10593 return page ? { 10594 ...queryArgs, 10595 post: postId, 10596 per_page: perPage, 10597 page 10598 } : null; 10599 }, [postId, perPage, page]); 10600 }; 10601 10602 /** 10603 * Return the index of the default page, depending on whether `defaultPage` is 10604 * `newest` or `oldest`. In the first case, the only way to know the page's 10605 * index is by using the `X-WP-TotalPages` header, which forces to make an 10606 * additional request. 10607 * 10608 * @param {Object} props Hook props. 10609 * @param {string} props.defaultPage Page shown by default (newest/oldest). 10610 * @param {number} props.postId ID of the post that contains the comments. 10611 * @param {number} props.perPage The number of comments included per page. 10612 * @param {Object} props.queryArgs Other query args. 10613 * 10614 * @return {number} Index of the default comments page. 10615 */ 10616 const useDefaultPageIndex = ({ 10617 defaultPage, 10618 postId, 10619 perPage, 10620 queryArgs 10621 }) => { 10622 // Store the default page indices. 10623 const [defaultPages, setDefaultPages] = (0,external_wp_element_namespaceObject.useState)({}); 10624 const key = `$postId}_$perPage}`; 10625 const page = defaultPages[key] || 0; 10626 (0,external_wp_element_namespaceObject.useEffect)(() => { 10627 // Do nothing if the page is already known or not the newest page. 10628 if (page || defaultPage !== 'newest') { 10629 return; 10630 } 10631 // We need to fetch comments to know the index. Use HEAD and limit 10632 // fields just to ID, to make this call as light as possible. 10633 external_wp_apiFetch_default()({ 10634 path: (0,external_wp_url_namespaceObject.addQueryArgs)('/wp/v2/comments', { 10635 ...queryArgs, 10636 post: postId, 10637 per_page: perPage, 10638 _fields: 'id' 10639 }), 10640 method: 'HEAD', 10641 parse: false 10642 }).then(res => { 10643 const pages = parseInt(res.headers.get('X-WP-TotalPages')); 10644 setDefaultPages({ 10645 ...defaultPages, 10646 [key]: pages <= 1 ? 1 : pages // If there are 0 pages, it means that there are no comments, but there is no 0th page. 10647 }); 10648 }); 10649 }, [defaultPage, postId, perPage, setDefaultPages]); 10650 10651 // The oldest one is always the first one. 10652 return defaultPage === 'newest' ? page : 1; 10653 }; 10654 10655 /** 10656 * Generate a tree structure of comment IDs from a list of comment entities. The 10657 * children of each comment are obtained from `_embedded`. 10658 * 10659 * @typedef {{ commentId: number, children: CommentNode }} CommentNode 10660 * 10661 * @param {Object[]} topLevelComments List of comment entities. 10662 * @return {{ commentTree: CommentNode[]}} Tree of comment IDs. 10663 */ 10664 const useCommentTree = topLevelComments => { 10665 const commentTree = (0,external_wp_element_namespaceObject.useMemo)(() => topLevelComments?.map(({ 10666 id, 10667 _embedded 10668 }) => { 10669 const [children] = _embedded?.children || [[]]; 10670 return { 10671 commentId: id, 10672 children: children.map(child => ({ 10673 commentId: child.id 10674 })) 10675 }; 10676 }), [topLevelComments]); 10677 return commentTree; 10678 }; 10679 10680 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-template/edit.js 10681 /** 10682 * WordPress dependencies 10683 */ 10684 10685 10686 10687 10688 10689 10690 10691 /** 10692 * Internal dependencies 10693 */ 10694 10695 10696 10697 const edit_TEMPLATE = [['core/avatar'], ['core/comment-author-name'], ['core/comment-date'], ['core/comment-content'], ['core/comment-reply-link'], ['core/comment-edit-link']]; 10698 10699 /** 10700 * Function that returns a comment structure that will be rendered with default placehoders. 10701 * 10702 * Each comment has a `commentId` property that is always a negative number in 10703 * case of the placeholders. This is to ensure that the comment does not 10704 * conflict with the actual (real) comments. 10705 * 10706 * @param {Object} settings Discussion Settings. 10707 * @param {number} [settings.perPage] - Comments per page setting or block attribute. 10708 * @param {boolean} [settings.pageComments] - Enable break comments into pages setting. 10709 * @param {boolean} [settings.threadComments] - Enable threaded (nested) comments setting. 10710 * @param {number} [settings.threadCommentsDepth] - Level deep of threaded comments. 10711 * 10712 * @typedef {{id: null, children: EmptyComment[]}} EmptyComment 10713 * @return {EmptyComment[]} Inner blocks of the Comment Template 10714 */ 10715 const getCommentsPlaceholder = ({ 10716 perPage, 10717 pageComments, 10718 threadComments, 10719 threadCommentsDepth 10720 }) => { 10721 // Limit commentsDepth to 3 10722 const commentsDepth = !threadComments ? 1 : Math.min(threadCommentsDepth, 3); 10723 const buildChildrenComment = commentsLevel => { 10724 // Render children comments until commentsDepth is reached 10725 if (commentsLevel < commentsDepth) { 10726 const nextLevel = commentsLevel + 1; 10727 return [{ 10728 commentId: -(commentsLevel + 3), 10729 children: buildChildrenComment(nextLevel) 10730 }]; 10731 } 10732 return []; 10733 }; 10734 10735 // Add the first comment and its children 10736 const placeholderComments = [{ 10737 commentId: -1, 10738 children: buildChildrenComment(1) 10739 }]; 10740 10741 // Add a second comment unless the break comments setting is active and set to less than 2, and there is one nested comment max 10742 if ((!pageComments || perPage >= 2) && commentsDepth < 3) { 10743 placeholderComments.push({ 10744 commentId: -2, 10745 children: [] 10746 }); 10747 } 10748 10749 // Add a third comment unless the break comments setting is active and set to less than 3, and there aren't nested comments 10750 if ((!pageComments || perPage >= 3) && commentsDepth < 2) { 10751 placeholderComments.push({ 10752 commentId: -3, 10753 children: [] 10754 }); 10755 } 10756 10757 // In case that the value is set but larger than 3 we truncate it to 3. 10758 return placeholderComments; 10759 }; 10760 10761 /** 10762 * Component which renders the inner blocks of the Comment Template. 10763 * 10764 * @param {Object} props Component props. 10765 * @param {Array} [props.comment] - A comment object. 10766 * @param {Array} [props.activeCommentId] - The ID of the comment that is currently active. 10767 * @param {Array} [props.setActiveCommentId] - The setter for activeCommentId. 10768 * @param {Array} [props.firstCommentId] - ID of the first comment in the array. 10769 * @param {Array} [props.blocks] - Array of blocks returned from 10770 * getBlocks() in parent . 10771 * @return {Element} Inner blocks of the Comment Template 10772 */ 10773 function CommentTemplateInnerBlocks({ 10774 comment, 10775 activeCommentId, 10776 setActiveCommentId, 10777 firstCommentId, 10778 blocks 10779 }) { 10780 const { 10781 children, 10782 ...innerBlocksProps 10783 } = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)({}, { 10784 template: edit_TEMPLATE 10785 }); 10786 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("li", { 10787 ...innerBlocksProps, 10788 children: [comment.commentId === (activeCommentId || firstCommentId) ? children : null, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MemoizedCommentTemplatePreview, { 10789 blocks: blocks, 10790 commentId: comment.commentId, 10791 setActiveCommentId: setActiveCommentId, 10792 isHidden: comment.commentId === (activeCommentId || firstCommentId) 10793 }), comment?.children?.length > 0 ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CommentsList, { 10794 comments: comment.children, 10795 activeCommentId: activeCommentId, 10796 setActiveCommentId: setActiveCommentId, 10797 blocks: blocks, 10798 firstCommentId: firstCommentId 10799 }) : null] 10800 }); 10801 } 10802 const CommentTemplatePreview = ({ 10803 blocks, 10804 commentId, 10805 setActiveCommentId, 10806 isHidden 10807 }) => { 10808 const blockPreviewProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseBlockPreview)({ 10809 blocks 10810 }); 10811 const handleOnClick = () => { 10812 setActiveCommentId(commentId); 10813 }; 10814 10815 // We have to hide the preview block if the `comment` props points to 10816 // the curently active block! 10817 10818 // Or, to put it differently, every preview block is visible unless it is the 10819 // currently active block - in this case we render its inner blocks. 10820 const style = { 10821 display: isHidden ? 'none' : undefined 10822 }; 10823 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 10824 ...blockPreviewProps, 10825 tabIndex: 0, 10826 role: "button", 10827 style: style 10828 // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role 10829 , 10830 onClick: handleOnClick, 10831 onKeyPress: handleOnClick 10832 }); 10833 }; 10834 const MemoizedCommentTemplatePreview = (0,external_wp_element_namespaceObject.memo)(CommentTemplatePreview); 10835 10836 /** 10837 * Component that renders a list of (nested) comments. It is called recursively. 10838 * 10839 * @param {Object} props Component props. 10840 * @param {Array} [props.comments] - Array of comment objects. 10841 * @param {Array} [props.blockProps] - Props from parent's `useBlockProps()`. 10842 * @param {Array} [props.activeCommentId] - The ID of the comment that is currently active. 10843 * @param {Array} [props.setActiveCommentId] - The setter for activeCommentId. 10844 * @param {Array} [props.blocks] - Array of blocks returned from getBlocks() in parent. 10845 * @param {Object} [props.firstCommentId] - The ID of the first comment in the array of 10846 * comment objects. 10847 * @return {Element} List of comments. 10848 */ 10849 const CommentsList = ({ 10850 comments, 10851 blockProps, 10852 activeCommentId, 10853 setActiveCommentId, 10854 blocks, 10855 firstCommentId 10856 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ol", { 10857 ...blockProps, 10858 children: comments && comments.map(({ 10859 commentId, 10860 ...comment 10861 }, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockContextProvider, { 10862 value: { 10863 // If the commentId is negative it means that this comment is a 10864 // "placeholder" and that the block is most likely being used in the 10865 // site editor. In this case, we have to set the commentId to `null` 10866 // because otherwise the (non-existent) comment with a negative ID 10867 // would be reqested from the REST API. 10868 commentId: commentId < 0 ? null : commentId 10869 }, 10870 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CommentTemplateInnerBlocks, { 10871 comment: { 10872 commentId, 10873 ...comment 10874 }, 10875 activeCommentId: activeCommentId, 10876 setActiveCommentId: setActiveCommentId, 10877 blocks: blocks, 10878 firstCommentId: firstCommentId 10879 }) 10880 }, comment.commentId || index)) 10881 }); 10882 function CommentTemplateEdit({ 10883 clientId, 10884 context: { 10885 postId 10886 } 10887 }) { 10888 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 10889 const [activeCommentId, setActiveCommentId] = (0,external_wp_element_namespaceObject.useState)(); 10890 const { 10891 commentOrder, 10892 threadCommentsDepth, 10893 threadComments, 10894 commentsPerPage, 10895 pageComments 10896 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 10897 const { 10898 getSettings 10899 } = select(external_wp_blockEditor_namespaceObject.store); 10900 return getSettings().__experimentalDiscussionSettings; 10901 }); 10902 const commentQuery = useCommentQueryArgs({ 10903 postId 10904 }); 10905 const { 10906 topLevelComments, 10907 blocks 10908 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 10909 const { 10910 getEntityRecords 10911 } = select(external_wp_coreData_namespaceObject.store); 10912 const { 10913 getBlocks 10914 } = select(external_wp_blockEditor_namespaceObject.store); 10915 return { 10916 // Request only top-level comments. Replies are embedded. 10917 topLevelComments: commentQuery ? getEntityRecords('root', 'comment', commentQuery) : null, 10918 blocks: getBlocks(clientId) 10919 }; 10920 }, [clientId, commentQuery]); 10921 10922 // Generate a tree structure of comment IDs. 10923 let commentTree = useCommentTree( 10924 // Reverse the order of top comments if needed. 10925 commentOrder === 'desc' && topLevelComments ? [...topLevelComments].reverse() : topLevelComments); 10926 if (!topLevelComments) { 10927 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 10928 ...blockProps, 10929 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) 10930 }); 10931 } 10932 if (!postId) { 10933 commentTree = getCommentsPlaceholder({ 10934 perPage: commentsPerPage, 10935 pageComments, 10936 threadComments, 10937 threadCommentsDepth 10938 }); 10939 } 10940 if (!commentTree.length) { 10941 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 10942 ...blockProps, 10943 children: (0,external_wp_i18n_namespaceObject.__)('No results found.') 10944 }); 10945 } 10946 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CommentsList, { 10947 comments: commentTree, 10948 blockProps: blockProps, 10949 blocks: blocks, 10950 activeCommentId: activeCommentId, 10951 setActiveCommentId: setActiveCommentId, 10952 firstCommentId: commentTree[0]?.commentId 10953 }); 10954 } 10955 10956 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-template/save.js 10957 /** 10958 * WordPress dependencies 10959 */ 10960 10961 10962 function CommentTemplateSave() { 10963 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 10964 } 10965 10966 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comment-template/index.js 10967 /** 10968 * WordPress dependencies 10969 */ 10970 10971 10972 /** 10973 * Internal dependencies 10974 */ 10975 10976 const comment_template_metadata = { 10977 $schema: "https://schemas.wp.org/trunk/block.json", 10978 apiVersion: 3, 10979 name: "core/comment-template", 10980 title: "Comment Template", 10981 category: "design", 10982 parent: ["core/comments"], 10983 description: "Contains the block elements used to display a comment, like the title, date, author, avatar and more.", 10984 textdomain: "default", 10985 usesContext: ["postId"], 10986 supports: { 10987 align: true, 10988 html: false, 10989 reusable: false, 10990 spacing: { 10991 margin: true, 10992 padding: true 10993 }, 10994 typography: { 10995 fontSize: true, 10996 lineHeight: true, 10997 __experimentalFontFamily: true, 10998 __experimentalFontWeight: true, 10999 __experimentalFontStyle: true, 11000 __experimentalTextTransform: true, 11001 __experimentalTextDecoration: true, 11002 __experimentalLetterSpacing: true, 11003 __experimentalDefaultControls: { 11004 fontSize: true 11005 } 11006 }, 11007 interactivity: { 11008 clientNavigation: true 11009 }, 11010 __experimentalBorder: { 11011 radius: true, 11012 color: true, 11013 width: true, 11014 style: true, 11015 __experimentalDefaultControls: { 11016 radius: true, 11017 color: true, 11018 width: true, 11019 style: true 11020 } 11021 } 11022 }, 11023 style: "wp-block-comment-template" 11024 }; 11025 11026 11027 const { 11028 name: comment_template_name 11029 } = comment_template_metadata; 11030 11031 const comment_template_settings = { 11032 icon: library_layout, 11033 edit: CommentTemplateEdit, 11034 save: CommentTemplateSave 11035 }; 11036 const comment_template_init = () => initBlock({ 11037 name: comment_template_name, 11038 metadata: comment_template_metadata, 11039 settings: comment_template_settings 11040 }); 11041 11042 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/query-pagination-previous.js 11043 /** 11044 * WordPress dependencies 11045 */ 11046 11047 11048 const queryPaginationPrevious = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 11049 xmlns: "http://www.w3.org/2000/svg", 11050 viewBox: "0 0 24 24", 11051 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 11052 d: "M16 10.5v3h3v-3h-3zm-5 3h3v-3h-3v3zM7 9l-3 3 3 3 1-1-2-2 2-2-1-1z" 11053 }) 11054 }); 11055 /* harmony default export */ const query_pagination_previous = (queryPaginationPrevious); 11056 11057 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments-pagination-previous/edit.js 11058 /** 11059 * WordPress dependencies 11060 */ 11061 11062 11063 11064 11065 const arrowMap = { 11066 none: '', 11067 arrow: '←', 11068 chevron: '«' 11069 }; 11070 function CommentsPaginationPreviousEdit({ 11071 attributes: { 11072 label 11073 }, 11074 setAttributes, 11075 context: { 11076 'comments/paginationArrow': paginationArrow 11077 } 11078 }) { 11079 const displayArrow = arrowMap[paginationArrow]; 11080 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("a", { 11081 href: "#comments-pagination-previous-pseudo-link", 11082 onClick: event => event.preventDefault(), 11083 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)(), 11084 children: [displayArrow && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 11085 className: `wp-block-comments-pagination-previous-arrow is-arrow-$paginationArrow}`, 11086 children: displayArrow 11087 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.PlainText, { 11088 __experimentalVersion: 2, 11089 tagName: "span", 11090 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Older comments page link'), 11091 placeholder: (0,external_wp_i18n_namespaceObject.__)('Older Comments'), 11092 value: label, 11093 onChange: newLabel => setAttributes({ 11094 label: newLabel 11095 }) 11096 })] 11097 }); 11098 } 11099 11100 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments-pagination-previous/index.js 11101 /** 11102 * WordPress dependencies 11103 */ 11104 11105 11106 /** 11107 * Internal dependencies 11108 */ 11109 11110 const comments_pagination_previous_metadata = { 11111 $schema: "https://schemas.wp.org/trunk/block.json", 11112 apiVersion: 3, 11113 name: "core/comments-pagination-previous", 11114 title: "Comments Previous Page", 11115 category: "theme", 11116 parent: ["core/comments-pagination"], 11117 description: "Displays the previous comment's page link.", 11118 textdomain: "default", 11119 attributes: { 11120 label: { 11121 type: "string" 11122 } 11123 }, 11124 usesContext: ["postId", "comments/paginationArrow"], 11125 supports: { 11126 reusable: false, 11127 html: false, 11128 color: { 11129 gradients: true, 11130 text: false, 11131 __experimentalDefaultControls: { 11132 background: true 11133 } 11134 }, 11135 typography: { 11136 fontSize: true, 11137 lineHeight: true, 11138 __experimentalFontFamily: true, 11139 __experimentalFontWeight: true, 11140 __experimentalFontStyle: true, 11141 __experimentalTextTransform: true, 11142 __experimentalTextDecoration: true, 11143 __experimentalLetterSpacing: true, 11144 __experimentalDefaultControls: { 11145 fontSize: true 11146 } 11147 }, 11148 interactivity: { 11149 clientNavigation: true 11150 } 11151 } 11152 }; 11153 11154 const { 11155 name: comments_pagination_previous_name 11156 } = comments_pagination_previous_metadata; 11157 11158 const comments_pagination_previous_settings = { 11159 icon: query_pagination_previous, 11160 edit: CommentsPaginationPreviousEdit 11161 }; 11162 const comments_pagination_previous_init = () => initBlock({ 11163 name: comments_pagination_previous_name, 11164 metadata: comments_pagination_previous_metadata, 11165 settings: comments_pagination_previous_settings 11166 }); 11167 11168 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/query-pagination.js 11169 /** 11170 * WordPress dependencies 11171 */ 11172 11173 11174 const queryPagination = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 11175 xmlns: "http://www.w3.org/2000/svg", 11176 viewBox: "0 0 24 24", 11177 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 11178 d: "M4 13.5h6v-3H4v3zm8 0h3v-3h-3v3zm5-3v3h3v-3h-3z" 11179 }) 11180 }); 11181 /* harmony default export */ const query_pagination = (queryPagination); 11182 11183 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments-pagination/comments-pagination-arrow-controls.js 11184 /** 11185 * WordPress dependencies 11186 */ 11187 11188 11189 11190 11191 function CommentsPaginationArrowControls({ 11192 value, 11193 onChange 11194 }) { 11195 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, { 11196 __next40pxDefaultSize: true, 11197 __nextHasNoMarginBottom: true, 11198 label: (0,external_wp_i18n_namespaceObject.__)('Arrow'), 11199 value: value, 11200 onChange: onChange, 11201 help: (0,external_wp_i18n_namespaceObject.__)('A decorative arrow appended to the next and previous comments link.'), 11202 isBlock: true, 11203 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 11204 value: "none", 11205 label: (0,external_wp_i18n_namespaceObject._x)('None', 'Arrow option for Comments Pagination Next/Previous blocks') 11206 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 11207 value: "arrow", 11208 label: (0,external_wp_i18n_namespaceObject._x)('Arrow', 'Arrow option for Comments Pagination Next/Previous blocks') 11209 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 11210 value: "chevron", 11211 label: (0,external_wp_i18n_namespaceObject._x)('Chevron', 'Arrow option for Comments Pagination Next/Previous blocks') 11212 })] 11213 }); 11214 } 11215 11216 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments-pagination/edit.js 11217 /** 11218 * WordPress dependencies 11219 */ 11220 11221 11222 11223 11224 11225 /** 11226 * Internal dependencies 11227 */ 11228 11229 11230 11231 11232 const comments_pagination_edit_TEMPLATE = [['core/comments-pagination-previous'], ['core/comments-pagination-numbers'], ['core/comments-pagination-next']]; 11233 function QueryPaginationEdit({ 11234 attributes: { 11235 paginationArrow 11236 }, 11237 setAttributes, 11238 clientId 11239 }) { 11240 const hasNextPreviousBlocks = (0,external_wp_data_namespaceObject.useSelect)(select => { 11241 const { 11242 getBlocks 11243 } = select(external_wp_blockEditor_namespaceObject.store); 11244 const innerBlocks = getBlocks(clientId); 11245 /** 11246 * Show the `paginationArrow` control only if a 11247 * Comments Pagination Next or Comments Pagination Previous 11248 * block exists. 11249 */ 11250 return innerBlocks?.find(innerBlock => { 11251 return ['core/comments-pagination-previous', 'core/comments-pagination-next'].includes(innerBlock.name); 11252 }); 11253 }, []); 11254 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 11255 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 11256 template: comments_pagination_edit_TEMPLATE 11257 }); 11258 11259 // Get the Discussion settings 11260 const pageComments = (0,external_wp_data_namespaceObject.useSelect)(select => { 11261 const { 11262 getSettings 11263 } = select(external_wp_blockEditor_namespaceObject.store); 11264 const { 11265 __experimentalDiscussionSettings 11266 } = getSettings(); 11267 return __experimentalDiscussionSettings?.pageComments; 11268 }, []); 11269 11270 // If paging comments is not enabled in the Discussion Settings then hide the pagination 11271 // controls. We don't want to remove them from the template so that when the user enables 11272 // paging comments, the controls will be visible. 11273 if (!pageComments) { 11274 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 11275 children: (0,external_wp_i18n_namespaceObject.__)('Comments Pagination block: paging comments is disabled in the Discussion Settings') 11276 }); 11277 } 11278 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 11279 children: [hasNextPreviousBlocks && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 11280 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 11281 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 11282 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CommentsPaginationArrowControls, { 11283 value: paginationArrow, 11284 onChange: value => { 11285 setAttributes({ 11286 paginationArrow: value 11287 }); 11288 } 11289 }) 11290 }) 11291 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 11292 ...innerBlocksProps 11293 })] 11294 }); 11295 } 11296 11297 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments-pagination/save.js 11298 /** 11299 * WordPress dependencies 11300 */ 11301 11302 11303 function comments_pagination_save_save() { 11304 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 11305 } 11306 11307 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments-pagination/index.js 11308 /** 11309 * WordPress dependencies 11310 */ 11311 11312 11313 /** 11314 * Internal dependencies 11315 */ 11316 11317 const comments_pagination_metadata = { 11318 $schema: "https://schemas.wp.org/trunk/block.json", 11319 apiVersion: 3, 11320 name: "core/comments-pagination", 11321 title: "Comments Pagination", 11322 category: "theme", 11323 parent: ["core/comments"], 11324 allowedBlocks: ["core/comments-pagination-previous", "core/comments-pagination-numbers", "core/comments-pagination-next"], 11325 description: "Displays a paginated navigation to next/previous set of comments, when applicable.", 11326 textdomain: "default", 11327 attributes: { 11328 paginationArrow: { 11329 type: "string", 11330 "default": "none" 11331 } 11332 }, 11333 providesContext: { 11334 "comments/paginationArrow": "paginationArrow" 11335 }, 11336 supports: { 11337 align: true, 11338 reusable: false, 11339 html: false, 11340 color: { 11341 gradients: true, 11342 link: true, 11343 __experimentalDefaultControls: { 11344 background: true, 11345 text: true, 11346 link: true 11347 } 11348 }, 11349 layout: { 11350 allowSwitching: false, 11351 allowInheriting: false, 11352 "default": { 11353 type: "flex" 11354 } 11355 }, 11356 typography: { 11357 fontSize: true, 11358 lineHeight: true, 11359 __experimentalFontFamily: true, 11360 __experimentalFontWeight: true, 11361 __experimentalFontStyle: true, 11362 __experimentalTextTransform: true, 11363 __experimentalTextDecoration: true, 11364 __experimentalLetterSpacing: true, 11365 __experimentalDefaultControls: { 11366 fontSize: true 11367 } 11368 }, 11369 interactivity: { 11370 clientNavigation: true 11371 } 11372 }, 11373 editorStyle: "wp-block-comments-pagination-editor", 11374 style: "wp-block-comments-pagination" 11375 }; 11376 11377 11378 const { 11379 name: comments_pagination_name 11380 } = comments_pagination_metadata; 11381 11382 const comments_pagination_settings = { 11383 icon: query_pagination, 11384 edit: QueryPaginationEdit, 11385 save: comments_pagination_save_save 11386 }; 11387 const comments_pagination_init = () => initBlock({ 11388 name: comments_pagination_name, 11389 metadata: comments_pagination_metadata, 11390 settings: comments_pagination_settings 11391 }); 11392 11393 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/query-pagination-next.js 11394 /** 11395 * WordPress dependencies 11396 */ 11397 11398 11399 const queryPaginationNext = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 11400 xmlns: "http://www.w3.org/2000/svg", 11401 viewBox: "0 0 24 24", 11402 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 11403 d: "M5 13.5h3v-3H5v3zm5 0h3v-3h-3v3zM17 9l-1 1 2 2-2 2 1 1 3-3-3-3z" 11404 }) 11405 }); 11406 /* harmony default export */ const query_pagination_next = (queryPaginationNext); 11407 11408 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments-pagination-next/edit.js 11409 /** 11410 * WordPress dependencies 11411 */ 11412 11413 11414 11415 11416 const edit_arrowMap = { 11417 none: '', 11418 arrow: '→', 11419 chevron: '»' 11420 }; 11421 function CommentsPaginationNextEdit({ 11422 attributes: { 11423 label 11424 }, 11425 setAttributes, 11426 context: { 11427 'comments/paginationArrow': paginationArrow 11428 } 11429 }) { 11430 const displayArrow = edit_arrowMap[paginationArrow]; 11431 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("a", { 11432 href: "#comments-pagination-next-pseudo-link", 11433 onClick: event => event.preventDefault(), 11434 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)(), 11435 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.PlainText, { 11436 __experimentalVersion: 2, 11437 tagName: "span", 11438 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Newer comments page link'), 11439 placeholder: (0,external_wp_i18n_namespaceObject.__)('Newer Comments'), 11440 value: label, 11441 onChange: newLabel => setAttributes({ 11442 label: newLabel 11443 }) 11444 }), displayArrow && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 11445 className: `wp-block-comments-pagination-next-arrow is-arrow-$paginationArrow}`, 11446 children: displayArrow 11447 })] 11448 }); 11449 } 11450 11451 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments-pagination-next/index.js 11452 /** 11453 * WordPress dependencies 11454 */ 11455 11456 11457 /** 11458 * Internal dependencies 11459 */ 11460 11461 const comments_pagination_next_metadata = { 11462 $schema: "https://schemas.wp.org/trunk/block.json", 11463 apiVersion: 3, 11464 name: "core/comments-pagination-next", 11465 title: "Comments Next Page", 11466 category: "theme", 11467 parent: ["core/comments-pagination"], 11468 description: "Displays the next comment's page link.", 11469 textdomain: "default", 11470 attributes: { 11471 label: { 11472 type: "string" 11473 } 11474 }, 11475 usesContext: ["postId", "comments/paginationArrow"], 11476 supports: { 11477 reusable: false, 11478 html: false, 11479 color: { 11480 gradients: true, 11481 text: false, 11482 __experimentalDefaultControls: { 11483 background: true 11484 } 11485 }, 11486 typography: { 11487 fontSize: true, 11488 lineHeight: true, 11489 __experimentalFontFamily: true, 11490 __experimentalFontWeight: true, 11491 __experimentalFontStyle: true, 11492 __experimentalTextTransform: true, 11493 __experimentalTextDecoration: true, 11494 __experimentalLetterSpacing: true, 11495 __experimentalDefaultControls: { 11496 fontSize: true 11497 } 11498 }, 11499 interactivity: { 11500 clientNavigation: true 11501 } 11502 } 11503 }; 11504 11505 const { 11506 name: comments_pagination_next_name 11507 } = comments_pagination_next_metadata; 11508 11509 const comments_pagination_next_settings = { 11510 icon: query_pagination_next, 11511 edit: CommentsPaginationNextEdit 11512 }; 11513 const comments_pagination_next_init = () => initBlock({ 11514 name: comments_pagination_next_name, 11515 metadata: comments_pagination_next_metadata, 11516 settings: comments_pagination_next_settings 11517 }); 11518 11519 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/query-pagination-numbers.js 11520 /** 11521 * WordPress dependencies 11522 */ 11523 11524 11525 const queryPaginationNumbers = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 11526 xmlns: "http://www.w3.org/2000/svg", 11527 viewBox: "0 0 24 24", 11528 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 11529 d: "M4 13.5h6v-3H4v3zm8.2-2.5.8-.3V14h1V9.3l-2.2.7.4 1zm7.1-1.2c-.5-.6-1.2-.5-1.7-.4-.3.1-.5.2-.7.3l.1 1.1c.2-.2.5-.4.8-.5.3-.1.6 0 .7.1.2.3 0 .8-.2 1.1-.5.8-.9 1.6-1.4 2.5h2.7v-1h-.9c.3-.6.8-1.4.9-2.1 0-.3-.1-.8-.3-1.1z" 11530 }) 11531 }); 11532 /* harmony default export */ const query_pagination_numbers = (queryPaginationNumbers); 11533 11534 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments-pagination-numbers/edit.js 11535 /** 11536 * WordPress dependencies 11537 */ 11538 11539 11540 11541 const PaginationItem = ({ 11542 content, 11543 tag: Tag = 'a', 11544 extraClass = '' 11545 }) => Tag === 'a' ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 11546 className: `page-numbers $extraClass}`, 11547 href: "#comments-pagination-numbers-pseudo-link", 11548 onClick: event => event.preventDefault(), 11549 children: content 11550 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 11551 className: `page-numbers $extraClass}`, 11552 children: content 11553 }); 11554 function CommentsPaginationNumbersEdit() { 11555 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 11556 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)(), 11557 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PaginationItem, { 11558 content: "1" 11559 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PaginationItem, { 11560 content: "2" 11561 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PaginationItem, { 11562 content: "3", 11563 tag: "span", 11564 extraClass: "current" 11565 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PaginationItem, { 11566 content: "4" 11567 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PaginationItem, { 11568 content: "5" 11569 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PaginationItem, { 11570 content: "...", 11571 tag: "span", 11572 extraClass: "dots" 11573 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PaginationItem, { 11574 content: "8" 11575 })] 11576 }); 11577 } 11578 11579 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments-pagination-numbers/index.js 11580 /** 11581 * WordPress dependencies 11582 */ 11583 11584 11585 /** 11586 * Internal dependencies 11587 */ 11588 11589 const comments_pagination_numbers_metadata = { 11590 $schema: "https://schemas.wp.org/trunk/block.json", 11591 apiVersion: 3, 11592 name: "core/comments-pagination-numbers", 11593 title: "Comments Page Numbers", 11594 category: "theme", 11595 parent: ["core/comments-pagination"], 11596 description: "Displays a list of page numbers for comments pagination.", 11597 textdomain: "default", 11598 usesContext: ["postId"], 11599 supports: { 11600 reusable: false, 11601 html: false, 11602 color: { 11603 gradients: true, 11604 text: false, 11605 __experimentalDefaultControls: { 11606 background: true 11607 } 11608 }, 11609 typography: { 11610 fontSize: true, 11611 lineHeight: true, 11612 __experimentalFontFamily: true, 11613 __experimentalFontWeight: true, 11614 __experimentalFontStyle: true, 11615 __experimentalTextTransform: true, 11616 __experimentalTextDecoration: true, 11617 __experimentalLetterSpacing: true, 11618 __experimentalDefaultControls: { 11619 fontSize: true 11620 } 11621 }, 11622 interactivity: { 11623 clientNavigation: true 11624 } 11625 } 11626 }; 11627 11628 const { 11629 name: comments_pagination_numbers_name 11630 } = comments_pagination_numbers_metadata; 11631 11632 const comments_pagination_numbers_settings = { 11633 icon: query_pagination_numbers, 11634 edit: CommentsPaginationNumbersEdit 11635 }; 11636 const comments_pagination_numbers_init = () => initBlock({ 11637 name: comments_pagination_numbers_name, 11638 metadata: comments_pagination_numbers_metadata, 11639 settings: comments_pagination_numbers_settings 11640 }); 11641 11642 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/title.js 11643 /** 11644 * WordPress dependencies 11645 */ 11646 11647 11648 const title = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 11649 xmlns: "http://www.w3.org/2000/svg", 11650 viewBox: "0 0 24 24", 11651 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 11652 d: "m4 5.5h2v6.5h1.5v-6.5h2v-1.5h-5.5zm16 10.5h-16v-1.5h16zm-7 4h-9v-1.5h9z" 11653 }) 11654 }); 11655 /* harmony default export */ const library_title = (title); 11656 11657 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments-title/edit.js 11658 /** 11659 * External dependencies 11660 */ 11661 11662 11663 /** 11664 * WordPress dependencies 11665 */ 11666 11667 11668 11669 11670 11671 11672 11673 11674 11675 11676 11677 function comments_title_edit_Edit({ 11678 attributes: { 11679 textAlign, 11680 showPostTitle, 11681 showCommentsCount, 11682 level, 11683 levelOptions 11684 }, 11685 setAttributes, 11686 context: { 11687 postType, 11688 postId 11689 } 11690 }) { 11691 const TagName = 'h' + level; 11692 const [commentsCount, setCommentsCount] = (0,external_wp_element_namespaceObject.useState)(); 11693 const [rawTitle] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postType, 'title', postId); 11694 const isSiteEditor = typeof postId === 'undefined'; 11695 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 11696 className: dist_clsx({ 11697 [`has-text-align-$textAlign}`]: textAlign 11698 }) 11699 }); 11700 const { 11701 threadCommentsDepth, 11702 threadComments, 11703 commentsPerPage, 11704 pageComments 11705 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 11706 const { 11707 getSettings 11708 } = select(external_wp_blockEditor_namespaceObject.store); 11709 return getSettings().__experimentalDiscussionSettings; 11710 }); 11711 (0,external_wp_element_namespaceObject.useEffect)(() => { 11712 if (isSiteEditor) { 11713 // Match the number of comments that will be shown in the comment-template/edit.js placeholder 11714 11715 const nestedCommentsNumber = threadComments ? Math.min(threadCommentsDepth, 3) - 1 : 0; 11716 const topLevelCommentsNumber = pageComments ? commentsPerPage : 3; 11717 const commentsNumber = parseInt(nestedCommentsNumber) + parseInt(topLevelCommentsNumber); 11718 setCommentsCount(Math.min(commentsNumber, 3)); 11719 return; 11720 } 11721 const currentPostId = postId; 11722 external_wp_apiFetch_default()({ 11723 path: (0,external_wp_url_namespaceObject.addQueryArgs)('/wp/v2/comments', { 11724 post: postId, 11725 _fields: 'id' 11726 }), 11727 method: 'HEAD', 11728 parse: false 11729 }).then(res => { 11730 // Stale requests will have the `currentPostId` of an older closure. 11731 if (currentPostId === postId) { 11732 setCommentsCount(parseInt(res.headers.get('X-WP-Total'))); 11733 } 11734 }).catch(() => { 11735 setCommentsCount(0); 11736 }); 11737 }, [postId]); 11738 const blockControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 11739 group: "block", 11740 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 11741 value: textAlign, 11742 onChange: newAlign => setAttributes({ 11743 textAlign: newAlign 11744 }) 11745 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.HeadingLevelDropdown, { 11746 value: level, 11747 options: levelOptions, 11748 onChange: newLevel => setAttributes({ 11749 level: newLevel 11750 }) 11751 })] 11752 }); 11753 const inspectorControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 11754 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 11755 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 11756 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 11757 __nextHasNoMarginBottom: true, 11758 label: (0,external_wp_i18n_namespaceObject.__)('Show post title'), 11759 checked: showPostTitle, 11760 onChange: value => setAttributes({ 11761 showPostTitle: value 11762 }) 11763 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 11764 __nextHasNoMarginBottom: true, 11765 label: (0,external_wp_i18n_namespaceObject.__)('Show comments count'), 11766 checked: showCommentsCount, 11767 onChange: value => setAttributes({ 11768 showCommentsCount: value 11769 }) 11770 })] 11771 }) 11772 }); 11773 const postTitle = isSiteEditor ? (0,external_wp_i18n_namespaceObject.__)('“Post Title”') : `"$rawTitle}"`; 11774 let placeholder; 11775 if (showCommentsCount && commentsCount !== undefined) { 11776 if (showPostTitle) { 11777 if (commentsCount === 1) { 11778 /* translators: %s: Post title. */ 11779 placeholder = (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('One response to %s'), postTitle); 11780 } else { 11781 placeholder = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Number of comments, 2: Post title. */ 11782 (0,external_wp_i18n_namespaceObject._n)('%1$s response to %2$s', '%1$s responses to %2$s', commentsCount), commentsCount, postTitle); 11783 } 11784 } else if (commentsCount === 1) { 11785 placeholder = (0,external_wp_i18n_namespaceObject.__)('One response'); 11786 } else { 11787 placeholder = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: Number of comments. */ 11788 (0,external_wp_i18n_namespaceObject._n)('%s response', '%s responses', commentsCount), commentsCount); 11789 } 11790 } else if (showPostTitle) { 11791 if (commentsCount === 1) { 11792 /* translators: %s: Post title. */ 11793 placeholder = (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('Response to %s'), postTitle); 11794 } else { 11795 /* translators: %s: Post title. */ 11796 placeholder = (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('Responses to %s'), postTitle); 11797 } 11798 } else if (commentsCount === 1) { 11799 placeholder = (0,external_wp_i18n_namespaceObject.__)('Response'); 11800 } else { 11801 placeholder = (0,external_wp_i18n_namespaceObject.__)('Responses'); 11802 } 11803 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 11804 children: [blockControls, inspectorControls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 11805 ...blockProps, 11806 children: placeholder 11807 })] 11808 }); 11809 } 11810 11811 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments-title/deprecated.js 11812 /** 11813 * Internal dependencies 11814 */ 11815 const deprecated_metadata = { 11816 $schema: "https://schemas.wp.org/trunk/block.json", 11817 apiVersion: 3, 11818 name: "core/comments-title", 11819 title: "Comments Title", 11820 category: "theme", 11821 ancestor: ["core/comments"], 11822 description: "Displays a title with the number of comments.", 11823 textdomain: "default", 11824 usesContext: ["postId", "postType"], 11825 attributes: { 11826 textAlign: { 11827 type: "string" 11828 }, 11829 showPostTitle: { 11830 type: "boolean", 11831 "default": true 11832 }, 11833 showCommentsCount: { 11834 type: "boolean", 11835 "default": true 11836 }, 11837 level: { 11838 type: "number", 11839 "default": 2 11840 }, 11841 levelOptions: { 11842 type: "array" 11843 } 11844 }, 11845 supports: { 11846 anchor: false, 11847 align: true, 11848 html: false, 11849 __experimentalBorder: { 11850 radius: true, 11851 color: true, 11852 width: true, 11853 style: true 11854 }, 11855 color: { 11856 gradients: true, 11857 __experimentalDefaultControls: { 11858 background: true, 11859 text: true 11860 } 11861 }, 11862 spacing: { 11863 margin: true, 11864 padding: true 11865 }, 11866 typography: { 11867 fontSize: true, 11868 lineHeight: true, 11869 __experimentalFontFamily: true, 11870 __experimentalFontWeight: true, 11871 __experimentalFontStyle: true, 11872 __experimentalTextTransform: true, 11873 __experimentalTextDecoration: true, 11874 __experimentalLetterSpacing: true, 11875 __experimentalDefaultControls: { 11876 fontSize: true, 11877 __experimentalFontFamily: true, 11878 __experimentalFontStyle: true, 11879 __experimentalFontWeight: true 11880 } 11881 }, 11882 interactivity: { 11883 clientNavigation: true 11884 } 11885 } 11886 }; 11887 const { 11888 attributes, 11889 supports 11890 } = deprecated_metadata; 11891 /* harmony default export */ const comments_title_deprecated = ([{ 11892 attributes: { 11893 ...attributes, 11894 singleCommentLabel: { 11895 type: 'string' 11896 }, 11897 multipleCommentsLabel: { 11898 type: 'string' 11899 } 11900 }, 11901 supports, 11902 migrate: oldAttributes => { 11903 const { 11904 singleCommentLabel, 11905 multipleCommentsLabel, 11906 ...newAttributes 11907 } = oldAttributes; 11908 return newAttributes; 11909 }, 11910 isEligible: ({ 11911 multipleCommentsLabel, 11912 singleCommentLabel 11913 }) => multipleCommentsLabel || singleCommentLabel, 11914 save: () => null 11915 }]); 11916 11917 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/comments-title/index.js 11918 /** 11919 * WordPress dependencies 11920 */ 11921 11922 11923 /** 11924 * Internal dependencies 11925 */ 11926 11927 const comments_title_metadata = { 11928 $schema: "https://schemas.wp.org/trunk/block.json", 11929 apiVersion: 3, 11930 name: "core/comments-title", 11931 title: "Comments Title", 11932 category: "theme", 11933 ancestor: ["core/comments"], 11934 description: "Displays a title with the number of comments.", 11935 textdomain: "default", 11936 usesContext: ["postId", "postType"], 11937 attributes: { 11938 textAlign: { 11939 type: "string" 11940 }, 11941 showPostTitle: { 11942 type: "boolean", 11943 "default": true 11944 }, 11945 showCommentsCount: { 11946 type: "boolean", 11947 "default": true 11948 }, 11949 level: { 11950 type: "number", 11951 "default": 2 11952 }, 11953 levelOptions: { 11954 type: "array" 11955 } 11956 }, 11957 supports: { 11958 anchor: false, 11959 align: true, 11960 html: false, 11961 __experimentalBorder: { 11962 radius: true, 11963 color: true, 11964 width: true, 11965 style: true 11966 }, 11967 color: { 11968 gradients: true, 11969 __experimentalDefaultControls: { 11970 background: true, 11971 text: true 11972 } 11973 }, 11974 spacing: { 11975 margin: true, 11976 padding: true 11977 }, 11978 typography: { 11979 fontSize: true, 11980 lineHeight: true, 11981 __experimentalFontFamily: true, 11982 __experimentalFontWeight: true, 11983 __experimentalFontStyle: true, 11984 __experimentalTextTransform: true, 11985 __experimentalTextDecoration: true, 11986 __experimentalLetterSpacing: true, 11987 __experimentalDefaultControls: { 11988 fontSize: true, 11989 __experimentalFontFamily: true, 11990 __experimentalFontStyle: true, 11991 __experimentalFontWeight: true 11992 } 11993 }, 11994 interactivity: { 11995 clientNavigation: true 11996 } 11997 } 11998 }; 11999 12000 12001 const { 12002 name: comments_title_name 12003 } = comments_title_metadata; 12004 12005 const comments_title_settings = { 12006 icon: library_title, 12007 edit: comments_title_edit_Edit, 12008 deprecated: comments_title_deprecated 12009 }; 12010 const comments_title_init = () => initBlock({ 12011 name: comments_title_name, 12012 metadata: comments_title_metadata, 12013 settings: comments_title_settings 12014 }); 12015 12016 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/cover.js 12017 /** 12018 * WordPress dependencies 12019 */ 12020 12021 12022 const cover = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 12023 xmlns: "http://www.w3.org/2000/svg", 12024 viewBox: "0 0 24 24", 12025 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 12026 d: "M18.7 3H5.3C4 3 3 4 3 5.3v13.4C3 20 4 21 5.3 21h13.4c1.3 0 2.3-1 2.3-2.3V5.3C21 4 20 3 18.7 3zm.8 15.7c0 .4-.4.8-.8.8H5.3c-.4 0-.8-.4-.8-.8V5.3c0-.4.4-.8.8-.8h6.2v8.9l2.5-3.1 2.5 3.1V4.5h2.2c.4 0 .8.4.8.8v13.4z" 12027 }) 12028 }); 12029 /* harmony default export */ const library_cover = (cover); 12030 12031 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/cover/shared.js 12032 /** 12033 * WordPress dependencies 12034 */ 12035 12036 const POSITION_CLASSNAMES = { 12037 'top left': 'is-position-top-left', 12038 'top center': 'is-position-top-center', 12039 'top right': 'is-position-top-right', 12040 'center left': 'is-position-center-left', 12041 'center center': 'is-position-center-center', 12042 center: 'is-position-center-center', 12043 'center right': 'is-position-center-right', 12044 'bottom left': 'is-position-bottom-left', 12045 'bottom center': 'is-position-bottom-center', 12046 'bottom right': 'is-position-bottom-right' 12047 }; 12048 const IMAGE_BACKGROUND_TYPE = 'image'; 12049 const VIDEO_BACKGROUND_TYPE = 'video'; 12050 const COVER_MIN_HEIGHT = 50; 12051 const COVER_MAX_HEIGHT = 1000; 12052 const COVER_DEFAULT_HEIGHT = 300; 12053 const DEFAULT_FOCAL_POINT = { 12054 x: 0.5, 12055 y: 0.5 12056 }; 12057 const shared_ALLOWED_MEDIA_TYPES = ['image', 'video']; 12058 function mediaPosition({ 12059 x, 12060 y 12061 } = DEFAULT_FOCAL_POINT) { 12062 return `$Math.round(x * 100)}% $Math.round(y * 100)}%`; 12063 } 12064 function dimRatioToClass(ratio) { 12065 return ratio === 50 || ratio === undefined ? null : 'has-background-dim-' + 10 * Math.round(ratio / 10); 12066 } 12067 function attributesFromMedia(media) { 12068 if (!media || !media.url) { 12069 return { 12070 url: undefined, 12071 id: undefined 12072 }; 12073 } 12074 if ((0,external_wp_blob_namespaceObject.isBlobURL)(media.url)) { 12075 media.type = (0,external_wp_blob_namespaceObject.getBlobTypeByURL)(media.url); 12076 } 12077 let mediaType; 12078 // For media selections originated from a file upload. 12079 if (media.media_type) { 12080 if (media.media_type === IMAGE_BACKGROUND_TYPE) { 12081 mediaType = IMAGE_BACKGROUND_TYPE; 12082 } else { 12083 // only images and videos are accepted so if the media_type is not an image we can assume it is a video. 12084 // Videos contain the media type of 'file' in the object returned from the rest api. 12085 mediaType = VIDEO_BACKGROUND_TYPE; 12086 } 12087 } else { 12088 // For media selections originated from existing files in the media library. 12089 if (media.type !== IMAGE_BACKGROUND_TYPE && media.type !== VIDEO_BACKGROUND_TYPE) { 12090 return; 12091 } 12092 mediaType = media.type; 12093 } 12094 return { 12095 url: media.url, 12096 id: media.id, 12097 alt: media?.alt, 12098 backgroundType: mediaType, 12099 ...(mediaType === VIDEO_BACKGROUND_TYPE ? { 12100 hasParallax: undefined 12101 } : {}) 12102 }; 12103 } 12104 12105 /** 12106 * Checks of the contentPosition is the center (default) position. 12107 * 12108 * @param {string} contentPosition The current content position. 12109 * @return {boolean} Whether the contentPosition is center. 12110 */ 12111 function isContentPositionCenter(contentPosition) { 12112 return !contentPosition || contentPosition === 'center center' || contentPosition === 'center'; 12113 } 12114 12115 /** 12116 * Retrieves the className for the current contentPosition. 12117 * The default position (center) will not have a className. 12118 * 12119 * @param {string} contentPosition The current content position. 12120 * @return {string} The className assigned to the contentPosition. 12121 */ 12122 function getPositionClassName(contentPosition) { 12123 /* 12124 * Only render a className if the contentPosition is not center (the default). 12125 */ 12126 if (isContentPositionCenter(contentPosition)) { 12127 return ''; 12128 } 12129 return POSITION_CLASSNAMES[contentPosition]; 12130 } 12131 12132 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/cover/deprecated.js 12133 /** 12134 * External dependencies 12135 */ 12136 12137 12138 /** 12139 * WordPress dependencies 12140 */ 12141 12142 12143 12144 12145 12146 /** 12147 * Internal dependencies 12148 */ 12149 12150 12151 12152 function backgroundImageStyles(url) { 12153 return url ? { 12154 backgroundImage: `url($url})` 12155 } : {}; 12156 } 12157 12158 /** 12159 * Original function to determine the background opacity classname 12160 * 12161 * Used in deprecations: v1-7. 12162 * 12163 * @param {number} ratio ratio to use for opacity. 12164 * @return {string} background opacity class . 12165 */ 12166 function dimRatioToClassV1(ratio) { 12167 return ratio === 0 || ratio === 50 || !ratio ? null : 'has-background-dim-' + 10 * Math.round(ratio / 10); 12168 } 12169 function migrateDimRatio(attributes) { 12170 return { 12171 ...attributes, 12172 dimRatio: !attributes.url ? 100 : attributes.dimRatio 12173 }; 12174 } 12175 function migrateTag(attributes) { 12176 if (!attributes.tagName) { 12177 attributes = { 12178 ...attributes, 12179 tagName: 'div' 12180 }; 12181 } 12182 return { 12183 ...attributes 12184 }; 12185 } 12186 const deprecated_blockAttributes = { 12187 url: { 12188 type: 'string' 12189 }, 12190 id: { 12191 type: 'number' 12192 }, 12193 hasParallax: { 12194 type: 'boolean', 12195 default: false 12196 }, 12197 dimRatio: { 12198 type: 'number', 12199 default: 50 12200 }, 12201 overlayColor: { 12202 type: 'string' 12203 }, 12204 customOverlayColor: { 12205 type: 'string' 12206 }, 12207 backgroundType: { 12208 type: 'string', 12209 default: 'image' 12210 }, 12211 focalPoint: { 12212 type: 'object' 12213 } 12214 }; 12215 const v8ToV11BlockAttributes = { 12216 url: { 12217 type: 'string' 12218 }, 12219 id: { 12220 type: 'number' 12221 }, 12222 alt: { 12223 type: 'string', 12224 source: 'attribute', 12225 selector: 'img', 12226 attribute: 'alt', 12227 default: '' 12228 }, 12229 hasParallax: { 12230 type: 'boolean', 12231 default: false 12232 }, 12233 isRepeated: { 12234 type: 'boolean', 12235 default: false 12236 }, 12237 dimRatio: { 12238 type: 'number', 12239 default: 100 12240 }, 12241 overlayColor: { 12242 type: 'string' 12243 }, 12244 customOverlayColor: { 12245 type: 'string' 12246 }, 12247 backgroundType: { 12248 type: 'string', 12249 default: 'image' 12250 }, 12251 focalPoint: { 12252 type: 'object' 12253 }, 12254 minHeight: { 12255 type: 'number' 12256 }, 12257 minHeightUnit: { 12258 type: 'string' 12259 }, 12260 gradient: { 12261 type: 'string' 12262 }, 12263 customGradient: { 12264 type: 'string' 12265 }, 12266 contentPosition: { 12267 type: 'string' 12268 }, 12269 isDark: { 12270 type: 'boolean', 12271 default: true 12272 }, 12273 allowedBlocks: { 12274 type: 'array' 12275 }, 12276 templateLock: { 12277 type: ['string', 'boolean'], 12278 enum: ['all', 'insert', false] 12279 } 12280 }; 12281 const v12BlockAttributes = { 12282 ...v8ToV11BlockAttributes, 12283 useFeaturedImage: { 12284 type: 'boolean', 12285 default: false 12286 }, 12287 tagName: { 12288 type: 'string', 12289 default: 'div' 12290 } 12291 }; 12292 const v7toV11BlockSupports = { 12293 anchor: true, 12294 align: true, 12295 html: false, 12296 spacing: { 12297 padding: true, 12298 __experimentalDefaultControls: { 12299 padding: true 12300 } 12301 }, 12302 color: { 12303 __experimentalDuotone: '> .wp-block-cover__image-background, > .wp-block-cover__video-background', 12304 text: false, 12305 background: false 12306 } 12307 }; 12308 const v12BlockSupports = { 12309 ...v7toV11BlockSupports, 12310 spacing: { 12311 padding: true, 12312 margin: ['top', 'bottom'], 12313 blockGap: true, 12314 __experimentalDefaultControls: { 12315 padding: true, 12316 blockGap: true 12317 } 12318 }, 12319 __experimentalBorder: { 12320 color: true, 12321 radius: true, 12322 style: true, 12323 width: true, 12324 __experimentalDefaultControls: { 12325 color: true, 12326 radius: true, 12327 style: true, 12328 width: true 12329 } 12330 }, 12331 color: { 12332 __experimentalDuotone: '> .wp-block-cover__image-background, > .wp-block-cover__video-background', 12333 heading: true, 12334 text: true, 12335 background: false, 12336 __experimentalSkipSerialization: ['gradients'], 12337 enableContrastChecker: false 12338 }, 12339 typography: { 12340 fontSize: true, 12341 lineHeight: true, 12342 __experimentalFontFamily: true, 12343 __experimentalFontWeight: true, 12344 __experimentalFontStyle: true, 12345 __experimentalTextTransform: true, 12346 __experimentalTextDecoration: true, 12347 __experimentalLetterSpacing: true, 12348 __experimentalDefaultControls: { 12349 fontSize: true 12350 } 12351 }, 12352 layout: { 12353 allowJustification: false 12354 } 12355 }; 12356 12357 // Deprecation for blocks that does not have the aria-label when the image background is fixed or repeated. 12358 const v13 = { 12359 attributes: v12BlockAttributes, 12360 supports: v12BlockSupports, 12361 save({ 12362 attributes 12363 }) { 12364 const { 12365 backgroundType, 12366 gradient, 12367 contentPosition, 12368 customGradient, 12369 customOverlayColor, 12370 dimRatio, 12371 focalPoint, 12372 useFeaturedImage, 12373 hasParallax, 12374 isDark, 12375 isRepeated, 12376 overlayColor, 12377 url, 12378 alt, 12379 id, 12380 minHeight: minHeightProp, 12381 minHeightUnit, 12382 tagName: Tag 12383 } = attributes; 12384 const overlayColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayColor); 12385 const gradientClass = (0,external_wp_blockEditor_namespaceObject.__experimentalGetGradientClass)(gradient); 12386 const minHeight = minHeightProp && minHeightUnit ? `$minHeightProp}$minHeightUnit}` : minHeightProp; 12387 const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType; 12388 const isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType; 12389 const isImgElement = !(hasParallax || isRepeated); 12390 const style = { 12391 minHeight: minHeight || undefined 12392 }; 12393 const bgStyle = { 12394 backgroundColor: !overlayColorClass ? customOverlayColor : undefined, 12395 background: customGradient ? customGradient : undefined 12396 }; 12397 const objectPosition = 12398 // prettier-ignore 12399 focalPoint && isImgElement ? mediaPosition(focalPoint) : undefined; 12400 const backgroundImage = url ? `url($url})` : undefined; 12401 const backgroundPosition = mediaPosition(focalPoint); 12402 const classes = dist_clsx({ 12403 'is-light': !isDark, 12404 'has-parallax': hasParallax, 12405 'is-repeated': isRepeated, 12406 'has-custom-content-position': !isContentPositionCenter(contentPosition) 12407 }, getPositionClassName(contentPosition)); 12408 const imgClasses = dist_clsx('wp-block-cover__image-background', id ? `wp-image-$id}` : null, { 12409 'has-parallax': hasParallax, 12410 'is-repeated': isRepeated 12411 }); 12412 const gradientValue = gradient || customGradient; 12413 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Tag, { 12414 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 12415 className: classes, 12416 style 12417 }), 12418 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 12419 "aria-hidden": "true", 12420 className: dist_clsx('wp-block-cover__background', overlayColorClass, dimRatioToClass(dimRatio), { 12421 'has-background-dim': dimRatio !== undefined, 12422 // For backwards compatibility. Former versions of the Cover Block applied 12423 // `.wp-block-cover__gradient-background` in the presence of 12424 // media, a gradient and a dim. 12425 'wp-block-cover__gradient-background': url && gradientValue && dimRatio !== 0, 12426 'has-background-gradient': gradientValue, 12427 [gradientClass]: gradientClass 12428 }), 12429 style: bgStyle 12430 }), !useFeaturedImage && isImageBackground && url && (isImgElement ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 12431 className: imgClasses, 12432 alt: alt, 12433 src: url, 12434 style: { 12435 objectPosition 12436 }, 12437 "data-object-fit": "cover", 12438 "data-object-position": objectPosition 12439 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 12440 role: "img", 12441 className: imgClasses, 12442 style: { 12443 backgroundPosition, 12444 backgroundImage 12445 } 12446 })), isVideoBackground && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 12447 className: dist_clsx('wp-block-cover__video-background', 'intrinsic-ignore'), 12448 autoPlay: true, 12449 muted: true, 12450 loop: true, 12451 playsInline: true, 12452 src: url, 12453 style: { 12454 objectPosition 12455 }, 12456 "data-object-fit": "cover", 12457 "data-object-position": objectPosition 12458 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 12459 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 12460 className: 'wp-block-cover__inner-container' 12461 }) 12462 })] 12463 }); 12464 } 12465 }; 12466 12467 // Deprecation for blocks to prevent auto overlay color from overriding previously set values. 12468 const v12 = { 12469 attributes: v12BlockAttributes, 12470 supports: v12BlockSupports, 12471 isEligible(attributes) { 12472 return (attributes.customOverlayColor !== undefined || attributes.overlayColor !== undefined) && attributes.isUserOverlayColor === undefined; 12473 }, 12474 migrate(attributes) { 12475 return { 12476 ...attributes, 12477 isUserOverlayColor: true 12478 }; 12479 }, 12480 save({ 12481 attributes 12482 }) { 12483 const { 12484 backgroundType, 12485 gradient, 12486 contentPosition, 12487 customGradient, 12488 customOverlayColor, 12489 dimRatio, 12490 focalPoint, 12491 useFeaturedImage, 12492 hasParallax, 12493 isDark, 12494 isRepeated, 12495 overlayColor, 12496 url, 12497 alt, 12498 id, 12499 minHeight: minHeightProp, 12500 minHeightUnit, 12501 tagName: Tag 12502 } = attributes; 12503 const overlayColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayColor); 12504 const gradientClass = (0,external_wp_blockEditor_namespaceObject.__experimentalGetGradientClass)(gradient); 12505 const minHeight = minHeightProp && minHeightUnit ? `$minHeightProp}$minHeightUnit}` : minHeightProp; 12506 const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType; 12507 const isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType; 12508 const isImgElement = !(hasParallax || isRepeated); 12509 const style = { 12510 minHeight: minHeight || undefined 12511 }; 12512 const bgStyle = { 12513 backgroundColor: !overlayColorClass ? customOverlayColor : undefined, 12514 background: customGradient ? customGradient : undefined 12515 }; 12516 const objectPosition = 12517 // prettier-ignore 12518 focalPoint && isImgElement ? mediaPosition(focalPoint) : undefined; 12519 const backgroundImage = url ? `url($url})` : undefined; 12520 const backgroundPosition = mediaPosition(focalPoint); 12521 const classes = dist_clsx({ 12522 'is-light': !isDark, 12523 'has-parallax': hasParallax, 12524 'is-repeated': isRepeated, 12525 'has-custom-content-position': !isContentPositionCenter(contentPosition) 12526 }, getPositionClassName(contentPosition)); 12527 const imgClasses = dist_clsx('wp-block-cover__image-background', id ? `wp-image-$id}` : null, { 12528 'has-parallax': hasParallax, 12529 'is-repeated': isRepeated 12530 }); 12531 const gradientValue = gradient || customGradient; 12532 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Tag, { 12533 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 12534 className: classes, 12535 style 12536 }), 12537 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 12538 "aria-hidden": "true", 12539 className: dist_clsx('wp-block-cover__background', overlayColorClass, dimRatioToClass(dimRatio), { 12540 'has-background-dim': dimRatio !== undefined, 12541 // For backwards compatibility. Former versions of the Cover Block applied 12542 // `.wp-block-cover__gradient-background` in the presence of 12543 // media, a gradient and a dim. 12544 'wp-block-cover__gradient-background': url && gradientValue && dimRatio !== 0, 12545 'has-background-gradient': gradientValue, 12546 [gradientClass]: gradientClass 12547 }), 12548 style: bgStyle 12549 }), !useFeaturedImage && isImageBackground && url && (isImgElement ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 12550 className: imgClasses, 12551 alt: alt, 12552 src: url, 12553 style: { 12554 objectPosition 12555 }, 12556 "data-object-fit": "cover", 12557 "data-object-position": objectPosition 12558 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 12559 role: "img", 12560 className: imgClasses, 12561 style: { 12562 backgroundPosition, 12563 backgroundImage 12564 } 12565 })), isVideoBackground && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 12566 className: dist_clsx('wp-block-cover__video-background', 'intrinsic-ignore'), 12567 autoPlay: true, 12568 muted: true, 12569 loop: true, 12570 playsInline: true, 12571 src: url, 12572 style: { 12573 objectPosition 12574 }, 12575 "data-object-fit": "cover", 12576 "data-object-position": objectPosition 12577 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 12578 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 12579 className: 'wp-block-cover__inner-container' 12580 }) 12581 })] 12582 }); 12583 } 12584 }; 12585 12586 // Deprecation for blocks that does not have a HTML tag option. 12587 const deprecated_v11 = { 12588 attributes: v8ToV11BlockAttributes, 12589 supports: v7toV11BlockSupports, 12590 save({ 12591 attributes 12592 }) { 12593 const { 12594 backgroundType, 12595 gradient, 12596 contentPosition, 12597 customGradient, 12598 customOverlayColor, 12599 dimRatio, 12600 focalPoint, 12601 useFeaturedImage, 12602 hasParallax, 12603 isDark, 12604 isRepeated, 12605 overlayColor, 12606 url, 12607 alt, 12608 id, 12609 minHeight: minHeightProp, 12610 minHeightUnit 12611 } = attributes; 12612 const overlayColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayColor); 12613 const gradientClass = (0,external_wp_blockEditor_namespaceObject.__experimentalGetGradientClass)(gradient); 12614 const minHeight = minHeightProp && minHeightUnit ? `$minHeightProp}$minHeightUnit}` : minHeightProp; 12615 const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType; 12616 const isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType; 12617 const isImgElement = !(hasParallax || isRepeated); 12618 const style = { 12619 minHeight: minHeight || undefined 12620 }; 12621 const bgStyle = { 12622 backgroundColor: !overlayColorClass ? customOverlayColor : undefined, 12623 background: customGradient ? customGradient : undefined 12624 }; 12625 const objectPosition = 12626 // prettier-ignore 12627 focalPoint && isImgElement ? mediaPosition(focalPoint) : undefined; 12628 const backgroundImage = url ? `url($url})` : undefined; 12629 const backgroundPosition = mediaPosition(focalPoint); 12630 const classes = dist_clsx({ 12631 'is-light': !isDark, 12632 'has-parallax': hasParallax, 12633 'is-repeated': isRepeated, 12634 'has-custom-content-position': !isContentPositionCenter(contentPosition) 12635 }, getPositionClassName(contentPosition)); 12636 const imgClasses = dist_clsx('wp-block-cover__image-background', id ? `wp-image-$id}` : null, { 12637 'has-parallax': hasParallax, 12638 'is-repeated': isRepeated 12639 }); 12640 const gradientValue = gradient || customGradient; 12641 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 12642 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 12643 className: classes, 12644 style 12645 }), 12646 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 12647 "aria-hidden": "true", 12648 className: dist_clsx('wp-block-cover__background', overlayColorClass, dimRatioToClass(dimRatio), { 12649 'has-background-dim': dimRatio !== undefined, 12650 // For backwards compatibility. Former versions of the Cover Block applied 12651 // `.wp-block-cover__gradient-background` in the presence of 12652 // media, a gradient and a dim. 12653 'wp-block-cover__gradient-background': url && gradientValue && dimRatio !== 0, 12654 'has-background-gradient': gradientValue, 12655 [gradientClass]: gradientClass 12656 }), 12657 style: bgStyle 12658 }), !useFeaturedImage && isImageBackground && url && (isImgElement ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 12659 className: imgClasses, 12660 alt: alt, 12661 src: url, 12662 style: { 12663 objectPosition 12664 }, 12665 "data-object-fit": "cover", 12666 "data-object-position": objectPosition 12667 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 12668 role: "img", 12669 className: imgClasses, 12670 style: { 12671 backgroundPosition, 12672 backgroundImage 12673 } 12674 })), isVideoBackground && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 12675 className: dist_clsx('wp-block-cover__video-background', 'intrinsic-ignore'), 12676 autoPlay: true, 12677 muted: true, 12678 loop: true, 12679 playsInline: true, 12680 src: url, 12681 style: { 12682 objectPosition 12683 }, 12684 "data-object-fit": "cover", 12685 "data-object-position": objectPosition 12686 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 12687 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 12688 className: 'wp-block-cover__inner-container' 12689 }) 12690 })] 12691 }); 12692 }, 12693 migrate: migrateTag 12694 }; 12695 12696 // Deprecation for blocks that renders fixed background as backgroud from the main block container. 12697 const deprecated_v10 = { 12698 attributes: v8ToV11BlockAttributes, 12699 supports: v7toV11BlockSupports, 12700 save({ 12701 attributes 12702 }) { 12703 const { 12704 backgroundType, 12705 gradient, 12706 contentPosition, 12707 customGradient, 12708 customOverlayColor, 12709 dimRatio, 12710 focalPoint, 12711 useFeaturedImage, 12712 hasParallax, 12713 isDark, 12714 isRepeated, 12715 overlayColor, 12716 url, 12717 alt, 12718 id, 12719 minHeight: minHeightProp, 12720 minHeightUnit 12721 } = attributes; 12722 const overlayColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayColor); 12723 const gradientClass = (0,external_wp_blockEditor_namespaceObject.__experimentalGetGradientClass)(gradient); 12724 const minHeight = minHeightProp && minHeightUnit ? `$minHeightProp}$minHeightUnit}` : minHeightProp; 12725 const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType; 12726 const isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType; 12727 const isImgElement = !(hasParallax || isRepeated); 12728 const style = { 12729 ...(isImageBackground && !isImgElement && !useFeaturedImage ? backgroundImageStyles(url) : {}), 12730 minHeight: minHeight || undefined 12731 }; 12732 const bgStyle = { 12733 backgroundColor: !overlayColorClass ? customOverlayColor : undefined, 12734 background: customGradient ? customGradient : undefined 12735 }; 12736 const objectPosition = 12737 // prettier-ignore 12738 focalPoint && isImgElement ? `$Math.round(focalPoint.x * 100)}% $Math.round(focalPoint.y * 100)}%` : undefined; 12739 const classes = dist_clsx({ 12740 'is-light': !isDark, 12741 'has-parallax': hasParallax, 12742 'is-repeated': isRepeated, 12743 'has-custom-content-position': !isContentPositionCenter(contentPosition) 12744 }, getPositionClassName(contentPosition)); 12745 const gradientValue = gradient || customGradient; 12746 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 12747 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 12748 className: classes, 12749 style 12750 }), 12751 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 12752 "aria-hidden": "true", 12753 className: dist_clsx('wp-block-cover__background', overlayColorClass, dimRatioToClass(dimRatio), { 12754 'has-background-dim': dimRatio !== undefined, 12755 // For backwards compatibility. Former versions of the Cover Block applied 12756 // `.wp-block-cover__gradient-background` in the presence of 12757 // media, a gradient and a dim. 12758 'wp-block-cover__gradient-background': url && gradientValue && dimRatio !== 0, 12759 'has-background-gradient': gradientValue, 12760 [gradientClass]: gradientClass 12761 }), 12762 style: bgStyle 12763 }), !useFeaturedImage && isImageBackground && isImgElement && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 12764 className: dist_clsx('wp-block-cover__image-background', id ? `wp-image-$id}` : null), 12765 alt: alt, 12766 src: url, 12767 style: { 12768 objectPosition 12769 }, 12770 "data-object-fit": "cover", 12771 "data-object-position": objectPosition 12772 }), isVideoBackground && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 12773 className: dist_clsx('wp-block-cover__video-background', 'intrinsic-ignore'), 12774 autoPlay: true, 12775 muted: true, 12776 loop: true, 12777 playsInline: true, 12778 src: url, 12779 style: { 12780 objectPosition 12781 }, 12782 "data-object-fit": "cover", 12783 "data-object-position": objectPosition 12784 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 12785 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 12786 className: 'wp-block-cover__inner-container' 12787 }) 12788 })] 12789 }); 12790 }, 12791 migrate: migrateTag 12792 }; 12793 12794 // Deprecation for blocks with `minHeightUnit` set but no `minHeight`. 12795 const v9 = { 12796 attributes: v8ToV11BlockAttributes, 12797 supports: v7toV11BlockSupports, 12798 save({ 12799 attributes 12800 }) { 12801 const { 12802 backgroundType, 12803 gradient, 12804 contentPosition, 12805 customGradient, 12806 customOverlayColor, 12807 dimRatio, 12808 focalPoint, 12809 hasParallax, 12810 isDark, 12811 isRepeated, 12812 overlayColor, 12813 url, 12814 alt, 12815 id, 12816 minHeight: minHeightProp, 12817 minHeightUnit 12818 } = attributes; 12819 const overlayColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayColor); 12820 const gradientClass = (0,external_wp_blockEditor_namespaceObject.__experimentalGetGradientClass)(gradient); 12821 const minHeight = minHeightUnit ? `$minHeightProp}$minHeightUnit}` : minHeightProp; 12822 const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType; 12823 const isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType; 12824 const isImgElement = !(hasParallax || isRepeated); 12825 const style = { 12826 ...(isImageBackground && !isImgElement ? backgroundImageStyles(url) : {}), 12827 minHeight: minHeight || undefined 12828 }; 12829 const bgStyle = { 12830 backgroundColor: !overlayColorClass ? customOverlayColor : undefined, 12831 background: customGradient ? customGradient : undefined 12832 }; 12833 const objectPosition = 12834 // prettier-ignore 12835 focalPoint && isImgElement ? `$Math.round(focalPoint.x * 100)}% $Math.round(focalPoint.y * 100)}%` : undefined; 12836 const classes = dist_clsx({ 12837 'is-light': !isDark, 12838 'has-parallax': hasParallax, 12839 'is-repeated': isRepeated, 12840 'has-custom-content-position': !isContentPositionCenter(contentPosition) 12841 }, getPositionClassName(contentPosition)); 12842 const gradientValue = gradient || customGradient; 12843 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 12844 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 12845 className: classes, 12846 style 12847 }), 12848 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 12849 "aria-hidden": "true", 12850 className: dist_clsx('wp-block-cover__background', overlayColorClass, dimRatioToClass(dimRatio), { 12851 'has-background-dim': dimRatio !== undefined, 12852 // For backwards compatibility. Former versions of the Cover Block applied 12853 // `.wp-block-cover__gradient-background` in the presence of 12854 // media, a gradient and a dim. 12855 'wp-block-cover__gradient-background': url && gradientValue && dimRatio !== 0, 12856 'has-background-gradient': gradientValue, 12857 [gradientClass]: gradientClass 12858 }), 12859 style: bgStyle 12860 }), isImageBackground && isImgElement && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 12861 className: dist_clsx('wp-block-cover__image-background', id ? `wp-image-$id}` : null), 12862 alt: alt, 12863 src: url, 12864 style: { 12865 objectPosition 12866 }, 12867 "data-object-fit": "cover", 12868 "data-object-position": objectPosition 12869 }), isVideoBackground && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 12870 className: dist_clsx('wp-block-cover__video-background', 'intrinsic-ignore'), 12871 autoPlay: true, 12872 muted: true, 12873 loop: true, 12874 playsInline: true, 12875 src: url, 12876 style: { 12877 objectPosition 12878 }, 12879 "data-object-fit": "cover", 12880 "data-object-position": objectPosition 12881 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 12882 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 12883 className: 'wp-block-cover__inner-container' 12884 }) 12885 })] 12886 }); 12887 }, 12888 migrate: migrateTag 12889 }; 12890 12891 // v8: deprecated to remove duplicated gradient classes and swap `wp-block-cover__gradient-background` for `wp-block-cover__background`. 12892 const v8 = { 12893 attributes: v8ToV11BlockAttributes, 12894 supports: v7toV11BlockSupports, 12895 save({ 12896 attributes 12897 }) { 12898 const { 12899 backgroundType, 12900 gradient, 12901 contentPosition, 12902 customGradient, 12903 customOverlayColor, 12904 dimRatio, 12905 focalPoint, 12906 hasParallax, 12907 isDark, 12908 isRepeated, 12909 overlayColor, 12910 url, 12911 alt, 12912 id, 12913 minHeight: minHeightProp, 12914 minHeightUnit 12915 } = attributes; 12916 const overlayColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayColor); 12917 const gradientClass = (0,external_wp_blockEditor_namespaceObject.__experimentalGetGradientClass)(gradient); 12918 const minHeight = minHeightUnit ? `$minHeightProp}$minHeightUnit}` : minHeightProp; 12919 const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType; 12920 const isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType; 12921 const isImgElement = !(hasParallax || isRepeated); 12922 const style = { 12923 ...(isImageBackground && !isImgElement ? backgroundImageStyles(url) : {}), 12924 minHeight: minHeight || undefined 12925 }; 12926 const bgStyle = { 12927 backgroundColor: !overlayColorClass ? customOverlayColor : undefined, 12928 background: customGradient ? customGradient : undefined 12929 }; 12930 const objectPosition = 12931 // prettier-ignore 12932 focalPoint && isImgElement ? `$Math.round(focalPoint.x * 100)}% $Math.round(focalPoint.y * 100)}%` : undefined; 12933 const classes = dist_clsx({ 12934 'is-light': !isDark, 12935 'has-parallax': hasParallax, 12936 'is-repeated': isRepeated, 12937 'has-custom-content-position': !isContentPositionCenter(contentPosition) 12938 }, getPositionClassName(contentPosition)); 12939 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 12940 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 12941 className: classes, 12942 style 12943 }), 12944 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 12945 "aria-hidden": "true", 12946 className: dist_clsx(overlayColorClass, dimRatioToClass(dimRatio), 'wp-block-cover__gradient-background', gradientClass, { 12947 'has-background-dim': dimRatio !== undefined, 12948 'has-background-gradient': gradient || customGradient, 12949 [gradientClass]: !url && gradientClass 12950 }), 12951 style: bgStyle 12952 }), isImageBackground && isImgElement && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 12953 className: dist_clsx('wp-block-cover__image-background', id ? `wp-image-$id}` : null), 12954 alt: alt, 12955 src: url, 12956 style: { 12957 objectPosition 12958 }, 12959 "data-object-fit": "cover", 12960 "data-object-position": objectPosition 12961 }), isVideoBackground && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 12962 className: dist_clsx('wp-block-cover__video-background', 'intrinsic-ignore'), 12963 autoPlay: true, 12964 muted: true, 12965 loop: true, 12966 playsInline: true, 12967 src: url, 12968 style: { 12969 objectPosition 12970 }, 12971 "data-object-fit": "cover", 12972 "data-object-position": objectPosition 12973 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 12974 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 12975 className: 'wp-block-cover__inner-container' 12976 }) 12977 })] 12978 }); 12979 }, 12980 migrate: migrateTag 12981 }; 12982 const v7 = { 12983 attributes: { 12984 ...deprecated_blockAttributes, 12985 isRepeated: { 12986 type: 'boolean', 12987 default: false 12988 }, 12989 minHeight: { 12990 type: 'number' 12991 }, 12992 minHeightUnit: { 12993 type: 'string' 12994 }, 12995 gradient: { 12996 type: 'string' 12997 }, 12998 customGradient: { 12999 type: 'string' 13000 }, 13001 contentPosition: { 13002 type: 'string' 13003 }, 13004 alt: { 13005 type: 'string', 13006 source: 'attribute', 13007 selector: 'img', 13008 attribute: 'alt', 13009 default: '' 13010 } 13011 }, 13012 supports: v7toV11BlockSupports, 13013 save({ 13014 attributes 13015 }) { 13016 const { 13017 backgroundType, 13018 gradient, 13019 contentPosition, 13020 customGradient, 13021 customOverlayColor, 13022 dimRatio, 13023 focalPoint, 13024 hasParallax, 13025 isRepeated, 13026 overlayColor, 13027 url, 13028 alt, 13029 id, 13030 minHeight: minHeightProp, 13031 minHeightUnit 13032 } = attributes; 13033 const overlayColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayColor); 13034 const gradientClass = (0,external_wp_blockEditor_namespaceObject.__experimentalGetGradientClass)(gradient); 13035 const minHeight = minHeightUnit ? `$minHeightProp}$minHeightUnit}` : minHeightProp; 13036 const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType; 13037 const isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType; 13038 const isImgElement = !(hasParallax || isRepeated); 13039 const style = { 13040 ...(isImageBackground && !isImgElement ? backgroundImageStyles(url) : {}), 13041 backgroundColor: !overlayColorClass ? customOverlayColor : undefined, 13042 background: customGradient && !url ? customGradient : undefined, 13043 minHeight: minHeight || undefined 13044 }; 13045 const objectPosition = 13046 // prettier-ignore 13047 focalPoint && isImgElement ? `$Math.round(focalPoint.x * 100)}% $Math.round(focalPoint.y * 100)}%` : undefined; 13048 const classes = dist_clsx(dimRatioToClassV1(dimRatio), overlayColorClass, { 13049 'has-background-dim': dimRatio !== 0, 13050 'has-parallax': hasParallax, 13051 'is-repeated': isRepeated, 13052 'has-background-gradient': gradient || customGradient, 13053 [gradientClass]: !url && gradientClass, 13054 'has-custom-content-position': !isContentPositionCenter(contentPosition) 13055 }, getPositionClassName(contentPosition)); 13056 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 13057 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 13058 className: classes, 13059 style 13060 }), 13061 children: [url && (gradient || customGradient) && dimRatio !== 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 13062 "aria-hidden": "true", 13063 className: dist_clsx('wp-block-cover__gradient-background', gradientClass), 13064 style: customGradient ? { 13065 background: customGradient 13066 } : undefined 13067 }), isImageBackground && isImgElement && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 13068 className: dist_clsx('wp-block-cover__image-background', id ? `wp-image-$id}` : null), 13069 alt: alt, 13070 src: url, 13071 style: { 13072 objectPosition 13073 }, 13074 "data-object-fit": "cover", 13075 "data-object-position": objectPosition 13076 }), isVideoBackground && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 13077 className: dist_clsx('wp-block-cover__video-background', 'intrinsic-ignore'), 13078 autoPlay: true, 13079 muted: true, 13080 loop: true, 13081 playsInline: true, 13082 src: url, 13083 style: { 13084 objectPosition 13085 }, 13086 "data-object-fit": "cover", 13087 "data-object-position": objectPosition 13088 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 13089 className: "wp-block-cover__inner-container", 13090 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 13091 })] 13092 }); 13093 }, 13094 migrate: (0,external_wp_compose_namespaceObject.compose)(migrateDimRatio, migrateTag) 13095 }; 13096 const v6 = { 13097 attributes: { 13098 ...deprecated_blockAttributes, 13099 isRepeated: { 13100 type: 'boolean', 13101 default: false 13102 }, 13103 minHeight: { 13104 type: 'number' 13105 }, 13106 minHeightUnit: { 13107 type: 'string' 13108 }, 13109 gradient: { 13110 type: 'string' 13111 }, 13112 customGradient: { 13113 type: 'string' 13114 }, 13115 contentPosition: { 13116 type: 'string' 13117 } 13118 }, 13119 supports: { 13120 align: true 13121 }, 13122 save({ 13123 attributes 13124 }) { 13125 const { 13126 backgroundType, 13127 gradient, 13128 contentPosition, 13129 customGradient, 13130 customOverlayColor, 13131 dimRatio, 13132 focalPoint, 13133 hasParallax, 13134 isRepeated, 13135 overlayColor, 13136 url, 13137 minHeight: minHeightProp, 13138 minHeightUnit 13139 } = attributes; 13140 const overlayColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayColor); 13141 const gradientClass = (0,external_wp_blockEditor_namespaceObject.__experimentalGetGradientClass)(gradient); 13142 const minHeight = minHeightUnit ? `$minHeightProp}$minHeightUnit}` : minHeightProp; 13143 const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType; 13144 const isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType; 13145 const style = isImageBackground ? backgroundImageStyles(url) : {}; 13146 const videoStyle = {}; 13147 if (!overlayColorClass) { 13148 style.backgroundColor = customOverlayColor; 13149 } 13150 if (customGradient && !url) { 13151 style.background = customGradient; 13152 } 13153 style.minHeight = minHeight || undefined; 13154 let positionValue; 13155 if (focalPoint) { 13156 positionValue = `$Math.round(focalPoint.x * 100)}% $Math.round(focalPoint.y * 100)}%`; 13157 if (isImageBackground && !hasParallax) { 13158 style.backgroundPosition = positionValue; 13159 } 13160 if (isVideoBackground) { 13161 videoStyle.objectPosition = positionValue; 13162 } 13163 } 13164 const classes = dist_clsx(dimRatioToClassV1(dimRatio), overlayColorClass, { 13165 'has-background-dim': dimRatio !== 0, 13166 'has-parallax': hasParallax, 13167 'is-repeated': isRepeated, 13168 'has-background-gradient': gradient || customGradient, 13169 [gradientClass]: !url && gradientClass, 13170 'has-custom-content-position': !isContentPositionCenter(contentPosition) 13171 }, getPositionClassName(contentPosition)); 13172 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 13173 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 13174 className: classes, 13175 style 13176 }), 13177 children: [url && (gradient || customGradient) && dimRatio !== 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 13178 "aria-hidden": "true", 13179 className: dist_clsx('wp-block-cover__gradient-background', gradientClass), 13180 style: customGradient ? { 13181 background: customGradient 13182 } : undefined 13183 }), isVideoBackground && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 13184 className: "wp-block-cover__video-background", 13185 autoPlay: true, 13186 muted: true, 13187 loop: true, 13188 playsInline: true, 13189 src: url, 13190 style: videoStyle 13191 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 13192 className: "wp-block-cover__inner-container", 13193 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 13194 })] 13195 }); 13196 }, 13197 migrate: (0,external_wp_compose_namespaceObject.compose)(migrateDimRatio, migrateTag) 13198 }; 13199 const v5 = { 13200 attributes: { 13201 ...deprecated_blockAttributes, 13202 minHeight: { 13203 type: 'number' 13204 }, 13205 gradient: { 13206 type: 'string' 13207 }, 13208 customGradient: { 13209 type: 'string' 13210 } 13211 }, 13212 supports: { 13213 align: true 13214 }, 13215 save({ 13216 attributes 13217 }) { 13218 const { 13219 backgroundType, 13220 gradient, 13221 customGradient, 13222 customOverlayColor, 13223 dimRatio, 13224 focalPoint, 13225 hasParallax, 13226 overlayColor, 13227 url, 13228 minHeight 13229 } = attributes; 13230 const overlayColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayColor); 13231 const gradientClass = (0,external_wp_blockEditor_namespaceObject.__experimentalGetGradientClass)(gradient); 13232 const style = backgroundType === IMAGE_BACKGROUND_TYPE ? backgroundImageStyles(url) : {}; 13233 if (!overlayColorClass) { 13234 style.backgroundColor = customOverlayColor; 13235 } 13236 if (focalPoint && !hasParallax) { 13237 style.backgroundPosition = `$Math.round(focalPoint.x * 100)}% $Math.round(focalPoint.y * 100)}%`; 13238 } 13239 if (customGradient && !url) { 13240 style.background = customGradient; 13241 } 13242 style.minHeight = minHeight || undefined; 13243 const classes = dist_clsx(dimRatioToClassV1(dimRatio), overlayColorClass, { 13244 'has-background-dim': dimRatio !== 0, 13245 'has-parallax': hasParallax, 13246 'has-background-gradient': customGradient, 13247 [gradientClass]: !url && gradientClass 13248 }); 13249 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 13250 className: classes, 13251 style: style, 13252 children: [url && (gradient || customGradient) && dimRatio !== 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 13253 "aria-hidden": "true", 13254 className: dist_clsx('wp-block-cover__gradient-background', gradientClass), 13255 style: customGradient ? { 13256 background: customGradient 13257 } : undefined 13258 }), VIDEO_BACKGROUND_TYPE === backgroundType && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 13259 className: "wp-block-cover__video-background", 13260 autoPlay: true, 13261 muted: true, 13262 loop: true, 13263 src: url 13264 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 13265 className: "wp-block-cover__inner-container", 13266 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 13267 })] 13268 }); 13269 }, 13270 migrate: (0,external_wp_compose_namespaceObject.compose)(migrateDimRatio, migrateTag) 13271 }; 13272 const v4 = { 13273 attributes: { 13274 ...deprecated_blockAttributes, 13275 minHeight: { 13276 type: 'number' 13277 }, 13278 gradient: { 13279 type: 'string' 13280 }, 13281 customGradient: { 13282 type: 'string' 13283 } 13284 }, 13285 supports: { 13286 align: true 13287 }, 13288 save({ 13289 attributes 13290 }) { 13291 const { 13292 backgroundType, 13293 gradient, 13294 customGradient, 13295 customOverlayColor, 13296 dimRatio, 13297 focalPoint, 13298 hasParallax, 13299 overlayColor, 13300 url, 13301 minHeight 13302 } = attributes; 13303 const overlayColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayColor); 13304 const gradientClass = (0,external_wp_blockEditor_namespaceObject.__experimentalGetGradientClass)(gradient); 13305 const style = backgroundType === IMAGE_BACKGROUND_TYPE ? backgroundImageStyles(url) : {}; 13306 if (!overlayColorClass) { 13307 style.backgroundColor = customOverlayColor; 13308 } 13309 if (focalPoint && !hasParallax) { 13310 style.backgroundPosition = `$focalPoint.x * 100}% $focalPoint.y * 100}%`; 13311 } 13312 if (customGradient && !url) { 13313 style.background = customGradient; 13314 } 13315 style.minHeight = minHeight || undefined; 13316 const classes = dist_clsx(dimRatioToClassV1(dimRatio), overlayColorClass, { 13317 'has-background-dim': dimRatio !== 0, 13318 'has-parallax': hasParallax, 13319 'has-background-gradient': customGradient, 13320 [gradientClass]: !url && gradientClass 13321 }); 13322 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 13323 className: classes, 13324 style: style, 13325 children: [url && (gradient || customGradient) && dimRatio !== 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 13326 "aria-hidden": "true", 13327 className: dist_clsx('wp-block-cover__gradient-background', gradientClass), 13328 style: customGradient ? { 13329 background: customGradient 13330 } : undefined 13331 }), VIDEO_BACKGROUND_TYPE === backgroundType && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 13332 className: "wp-block-cover__video-background", 13333 autoPlay: true, 13334 muted: true, 13335 loop: true, 13336 src: url 13337 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 13338 className: "wp-block-cover__inner-container", 13339 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 13340 })] 13341 }); 13342 }, 13343 migrate: (0,external_wp_compose_namespaceObject.compose)(migrateDimRatio, migrateTag) 13344 }; 13345 const v3 = { 13346 attributes: { 13347 ...deprecated_blockAttributes, 13348 title: { 13349 type: 'string', 13350 source: 'html', 13351 selector: 'p' 13352 }, 13353 contentAlign: { 13354 type: 'string', 13355 default: 'center' 13356 } 13357 }, 13358 supports: { 13359 align: true 13360 }, 13361 save({ 13362 attributes 13363 }) { 13364 const { 13365 backgroundType, 13366 contentAlign, 13367 customOverlayColor, 13368 dimRatio, 13369 focalPoint, 13370 hasParallax, 13371 overlayColor, 13372 title, 13373 url 13374 } = attributes; 13375 const overlayColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayColor); 13376 const style = backgroundType === IMAGE_BACKGROUND_TYPE ? backgroundImageStyles(url) : {}; 13377 if (!overlayColorClass) { 13378 style.backgroundColor = customOverlayColor; 13379 } 13380 if (focalPoint && !hasParallax) { 13381 style.backgroundPosition = `$focalPoint.x * 100}% $focalPoint.y * 100}%`; 13382 } 13383 const classes = dist_clsx(dimRatioToClassV1(dimRatio), overlayColorClass, { 13384 'has-background-dim': dimRatio !== 0, 13385 'has-parallax': hasParallax, 13386 [`has-$contentAlign}-content`]: contentAlign !== 'center' 13387 }); 13388 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 13389 className: classes, 13390 style: style, 13391 children: [VIDEO_BACKGROUND_TYPE === backgroundType && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 13392 className: "wp-block-cover__video-background", 13393 autoPlay: true, 13394 muted: true, 13395 loop: true, 13396 src: url 13397 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(title) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 13398 tagName: "p", 13399 className: "wp-block-cover-text", 13400 value: title 13401 })] 13402 }); 13403 }, 13404 migrate(attributes) { 13405 const newAttribs = { 13406 ...attributes, 13407 dimRatio: !attributes.url ? 100 : attributes.dimRatio, 13408 tagName: !attributes.tagName ? 'div' : attributes.tagName 13409 }; 13410 const { 13411 title, 13412 contentAlign, 13413 ...restAttributes 13414 } = newAttribs; 13415 return [restAttributes, [(0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 13416 content: attributes.title, 13417 align: attributes.contentAlign, 13418 fontSize: 'large', 13419 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write title…') 13420 })]]; 13421 } 13422 }; 13423 const v2 = { 13424 attributes: { 13425 ...deprecated_blockAttributes, 13426 title: { 13427 type: 'string', 13428 source: 'html', 13429 selector: 'p' 13430 }, 13431 contentAlign: { 13432 type: 'string', 13433 default: 'center' 13434 }, 13435 align: { 13436 type: 'string' 13437 } 13438 }, 13439 supports: { 13440 className: false 13441 }, 13442 save({ 13443 attributes 13444 }) { 13445 const { 13446 url, 13447 title, 13448 hasParallax, 13449 dimRatio, 13450 align, 13451 contentAlign, 13452 overlayColor, 13453 customOverlayColor 13454 } = attributes; 13455 const overlayColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayColor); 13456 const style = backgroundImageStyles(url); 13457 if (!overlayColorClass) { 13458 style.backgroundColor = customOverlayColor; 13459 } 13460 const classes = dist_clsx('wp-block-cover-image', dimRatioToClassV1(dimRatio), overlayColorClass, { 13461 'has-background-dim': dimRatio !== 0, 13462 'has-parallax': hasParallax, 13463 [`has-$contentAlign}-content`]: contentAlign !== 'center' 13464 }, align ? `align$align}` : null); 13465 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 13466 className: classes, 13467 style: style, 13468 children: !external_wp_blockEditor_namespaceObject.RichText.isEmpty(title) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 13469 tagName: "p", 13470 className: "wp-block-cover-image-text", 13471 value: title 13472 }) 13473 }); 13474 }, 13475 migrate(attributes) { 13476 const newAttribs = { 13477 ...attributes, 13478 dimRatio: !attributes.url ? 100 : attributes.dimRatio, 13479 tagName: !attributes.tagName ? 'div' : attributes.tagName 13480 }; 13481 const { 13482 title, 13483 contentAlign, 13484 align, 13485 ...restAttributes 13486 } = newAttribs; 13487 return [restAttributes, [(0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 13488 content: attributes.title, 13489 align: attributes.contentAlign, 13490 fontSize: 'large', 13491 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write title…') 13492 })]]; 13493 } 13494 }; 13495 const cover_deprecated_v1 = { 13496 attributes: { 13497 ...deprecated_blockAttributes, 13498 title: { 13499 type: 'string', 13500 source: 'html', 13501 selector: 'h2' 13502 }, 13503 align: { 13504 type: 'string' 13505 }, 13506 contentAlign: { 13507 type: 'string', 13508 default: 'center' 13509 } 13510 }, 13511 supports: { 13512 className: false 13513 }, 13514 save({ 13515 attributes 13516 }) { 13517 const { 13518 url, 13519 title, 13520 hasParallax, 13521 dimRatio, 13522 align 13523 } = attributes; 13524 const style = backgroundImageStyles(url); 13525 const classes = dist_clsx('wp-block-cover-image', dimRatioToClassV1(dimRatio), { 13526 'has-background-dim': dimRatio !== 0, 13527 'has-parallax': hasParallax 13528 }, align ? `align$align}` : null); 13529 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("section", { 13530 className: classes, 13531 style: style, 13532 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 13533 tagName: "h2", 13534 value: title 13535 }) 13536 }); 13537 }, 13538 migrate(attributes) { 13539 const newAttribs = { 13540 ...attributes, 13541 dimRatio: !attributes.url ? 100 : attributes.dimRatio, 13542 tagName: !attributes.tagName ? 'div' : attributes.tagName 13543 }; 13544 const { 13545 title, 13546 contentAlign, 13547 align, 13548 ...restAttributes 13549 } = newAttribs; 13550 return [restAttributes, [(0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 13551 content: attributes.title, 13552 align: attributes.contentAlign, 13553 fontSize: 'large', 13554 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write title…') 13555 })]]; 13556 } 13557 }; 13558 /* harmony default export */ const cover_deprecated = ([v13, v12, deprecated_v11, deprecated_v10, v9, v8, v7, v6, v5, v4, v3, v2, cover_deprecated_v1]); 13559 13560 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/cover/edit/inspector-controls.js 13561 /** 13562 * WordPress dependencies 13563 */ 13564 13565 13566 13567 13568 13569 13570 /** 13571 * Internal dependencies 13572 */ 13573 13574 13575 13576 13577 13578 const { 13579 cleanEmptyObject: inspector_controls_cleanEmptyObject 13580 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 13581 function CoverHeightInput({ 13582 onChange, 13583 onUnitChange, 13584 unit = 'px', 13585 value = '' 13586 }) { 13587 const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(external_wp_components_namespaceObject.__experimentalUnitControl); 13588 const inputId = `block-cover-height-input-$instanceId}`; 13589 const isPx = unit === 'px'; 13590 const [availableUnits] = (0,external_wp_blockEditor_namespaceObject.useSettings)('spacing.units'); 13591 const units = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({ 13592 availableUnits: availableUnits || ['px', 'em', 'rem', 'vw', 'vh'], 13593 defaultValues: { 13594 px: 430, 13595 '%': 20, 13596 em: 20, 13597 rem: 20, 13598 vw: 20, 13599 vh: 50 13600 } 13601 }); 13602 const handleOnChange = unprocessedValue => { 13603 const inputValue = unprocessedValue !== '' ? parseFloat(unprocessedValue) : undefined; 13604 if (isNaN(inputValue) && inputValue !== undefined) { 13605 return; 13606 } 13607 onChange(inputValue); 13608 }; 13609 const computedValue = (0,external_wp_element_namespaceObject.useMemo)(() => { 13610 const [parsedQuantity] = (0,external_wp_components_namespaceObject.__experimentalParseQuantityAndUnitFromRawValue)(value); 13611 return [parsedQuantity, unit].join(''); 13612 }, [unit, value]); 13613 const min = isPx ? COVER_MIN_HEIGHT : 0; 13614 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalUnitControl, { 13615 __next40pxDefaultSize: true, 13616 label: (0,external_wp_i18n_namespaceObject.__)('Minimum height'), 13617 id: inputId, 13618 isResetValueOnUnitChange: true, 13619 min: min, 13620 onChange: handleOnChange, 13621 onUnitChange: onUnitChange, 13622 units: units, 13623 value: computedValue 13624 }); 13625 } 13626 function CoverInspectorControls({ 13627 attributes, 13628 setAttributes, 13629 clientId, 13630 setOverlayColor, 13631 coverRef, 13632 currentSettings, 13633 updateDimRatio 13634 }) { 13635 const { 13636 useFeaturedImage, 13637 dimRatio, 13638 focalPoint, 13639 hasParallax, 13640 isRepeated, 13641 minHeight, 13642 minHeightUnit, 13643 alt, 13644 tagName 13645 } = attributes; 13646 const { 13647 isVideoBackground, 13648 isImageBackground, 13649 mediaElement, 13650 url, 13651 overlayColor 13652 } = currentSettings; 13653 const { 13654 gradientValue, 13655 setGradient 13656 } = (0,external_wp_blockEditor_namespaceObject.__experimentalUseGradient)(); 13657 const toggleParallax = () => { 13658 setAttributes({ 13659 hasParallax: !hasParallax, 13660 ...(!hasParallax ? { 13661 focalPoint: undefined 13662 } : {}) 13663 }); 13664 }; 13665 const toggleIsRepeated = () => { 13666 setAttributes({ 13667 isRepeated: !isRepeated 13668 }); 13669 }; 13670 const showFocalPointPicker = isVideoBackground || isImageBackground && (!hasParallax || isRepeated); 13671 const imperativeFocalPointPreview = value => { 13672 const [styleOfRef, property] = mediaElement.current ? [mediaElement.current.style, 'objectPosition'] : [coverRef.current.style, 'backgroundPosition']; 13673 styleOfRef[property] = mediaPosition(value); 13674 }; 13675 const colorGradientSettings = (0,external_wp_blockEditor_namespaceObject.__experimentalUseMultipleOriginColorsAndGradients)(); 13676 const htmlElementMessages = { 13677 header: (0,external_wp_i18n_namespaceObject.__)('The <header> element should represent introductory content, typically a group of introductory or navigational aids.'), 13678 main: (0,external_wp_i18n_namespaceObject.__)('The <main> element should be used for the primary content of your document only.'), 13679 section: (0,external_wp_i18n_namespaceObject.__)("The <section> element should represent a standalone portion of the document that can't be better represented by another element."), 13680 article: (0,external_wp_i18n_namespaceObject.__)('The <article> element should represent a self-contained, syndicatable portion of the document.'), 13681 aside: (0,external_wp_i18n_namespaceObject.__)("The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content."), 13682 footer: (0,external_wp_i18n_namespaceObject.__)('The <footer> element should represent a footer for its nearest sectioning element (e.g.: <section>, <article>, <main> etc.).') 13683 }; 13684 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 13685 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 13686 children: !!url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 13687 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 13688 children: [isImageBackground && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 13689 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 13690 __nextHasNoMarginBottom: true, 13691 label: (0,external_wp_i18n_namespaceObject.__)('Fixed background'), 13692 checked: hasParallax, 13693 onChange: toggleParallax 13694 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 13695 __nextHasNoMarginBottom: true, 13696 label: (0,external_wp_i18n_namespaceObject.__)('Repeated background'), 13697 checked: isRepeated, 13698 onChange: toggleIsRepeated 13699 })] 13700 }), showFocalPointPicker && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FocalPointPicker, { 13701 __nextHasNoMarginBottom: true, 13702 label: (0,external_wp_i18n_namespaceObject.__)('Focal point'), 13703 url: url, 13704 value: focalPoint, 13705 onDragStart: imperativeFocalPointPreview, 13706 onDrag: imperativeFocalPointPreview, 13707 onChange: newFocalPoint => setAttributes({ 13708 focalPoint: newFocalPoint 13709 }) 13710 }), !useFeaturedImage && url && !isVideoBackground && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextareaControl, { 13711 __nextHasNoMarginBottom: true, 13712 label: (0,external_wp_i18n_namespaceObject.__)('Alternative text'), 13713 value: alt, 13714 onChange: newAlt => setAttributes({ 13715 alt: newAlt 13716 }), 13717 help: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 13718 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, { 13719 href: 13720 // translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations. 13721 (0,external_wp_i18n_namespaceObject.__)('https://www.w3.org/WAI/tutorials/images/decision-tree/'), 13722 children: (0,external_wp_i18n_namespaceObject.__)('Describe the purpose of the image.') 13723 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("br", {}), (0,external_wp_i18n_namespaceObject.__)('Leave empty if decorative.')] 13724 }) 13725 })] 13726 }) 13727 }), colorGradientSettings.hasColorsOrGradients && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.InspectorControls, { 13728 group: "color", 13729 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientSettingsDropdown, { 13730 __experimentalIsRenderedInSidebar: true, 13731 settings: [{ 13732 colorValue: overlayColor.color, 13733 gradientValue, 13734 label: (0,external_wp_i18n_namespaceObject.__)('Overlay'), 13735 onColorChange: setOverlayColor, 13736 onGradientChange: setGradient, 13737 isShownByDefault: true, 13738 resetAllFilter: () => ({ 13739 overlayColor: undefined, 13740 customOverlayColor: undefined, 13741 gradient: undefined, 13742 customGradient: undefined 13743 }), 13744 clearable: true 13745 }], 13746 panelId: clientId, 13747 ...colorGradientSettings 13748 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 13749 hasValue: () => { 13750 // If there's a media background the dimRatio will be 13751 // defaulted to 50 whereas it will be 100 for colors. 13752 return dimRatio === undefined ? false : dimRatio !== (url ? 50 : 100); 13753 }, 13754 label: (0,external_wp_i18n_namespaceObject.__)('Overlay opacity'), 13755 onDeselect: () => updateDimRatio(url ? 50 : 100), 13756 resetAllFilter: () => ({ 13757 dimRatio: url ? 50 : 100 13758 }), 13759 isShownByDefault: true, 13760 panelId: clientId, 13761 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 13762 __nextHasNoMarginBottom: true, 13763 label: (0,external_wp_i18n_namespaceObject.__)('Overlay opacity'), 13764 value: dimRatio, 13765 onChange: newDimRatio => updateDimRatio(newDimRatio), 13766 min: 0, 13767 max: 100, 13768 step: 10, 13769 required: true, 13770 __next40pxDefaultSize: true 13771 }) 13772 })] 13773 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 13774 group: "dimensions", 13775 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 13776 className: "single-column", 13777 hasValue: () => !!minHeight, 13778 label: (0,external_wp_i18n_namespaceObject.__)('Minimum height'), 13779 onDeselect: () => setAttributes({ 13780 minHeight: undefined, 13781 minHeightUnit: undefined 13782 }), 13783 resetAllFilter: () => ({ 13784 minHeight: undefined, 13785 minHeightUnit: undefined 13786 }), 13787 isShownByDefault: true, 13788 panelId: clientId, 13789 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CoverHeightInput, { 13790 value: attributes?.style?.dimensions?.aspectRatio ? '' : minHeight, 13791 unit: minHeightUnit, 13792 onChange: newMinHeight => setAttributes({ 13793 minHeight: newMinHeight, 13794 style: inspector_controls_cleanEmptyObject({ 13795 ...attributes?.style, 13796 dimensions: { 13797 ...attributes?.style?.dimensions, 13798 aspectRatio: undefined // Reset aspect ratio when minHeight is set. 13799 } 13800 }) 13801 }), 13802 onUnitChange: nextUnit => setAttributes({ 13803 minHeightUnit: nextUnit 13804 }) 13805 }) 13806 }) 13807 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 13808 group: "advanced", 13809 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 13810 __nextHasNoMarginBottom: true, 13811 __next40pxDefaultSize: true, 13812 label: (0,external_wp_i18n_namespaceObject.__)('HTML element'), 13813 options: [{ 13814 label: (0,external_wp_i18n_namespaceObject.__)('Default (<div>)'), 13815 value: 'div' 13816 }, { 13817 label: '<header>', 13818 value: 'header' 13819 }, { 13820 label: '<main>', 13821 value: 'main' 13822 }, { 13823 label: '<section>', 13824 value: 'section' 13825 }, { 13826 label: '<article>', 13827 value: 'article' 13828 }, { 13829 label: '<aside>', 13830 value: 'aside' 13831 }, { 13832 label: '<footer>', 13833 value: 'footer' 13834 }], 13835 value: tagName, 13836 onChange: value => setAttributes({ 13837 tagName: value 13838 }), 13839 help: htmlElementMessages[tagName] 13840 }) 13841 })] 13842 }); 13843 } 13844 13845 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/cover/edit/block-controls.js 13846 /** 13847 * WordPress dependencies 13848 */ 13849 13850 13851 13852 13853 /** 13854 * Internal dependencies 13855 */ 13856 13857 13858 13859 13860 13861 const { 13862 cleanEmptyObject: block_controls_cleanEmptyObject 13863 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 13864 function CoverBlockControls({ 13865 attributes, 13866 setAttributes, 13867 onSelectMedia, 13868 currentSettings, 13869 toggleUseFeaturedImage, 13870 onClearMedia 13871 }) { 13872 const { 13873 contentPosition, 13874 id, 13875 useFeaturedImage, 13876 minHeight, 13877 minHeightUnit 13878 } = attributes; 13879 const { 13880 hasInnerBlocks, 13881 url 13882 } = currentSettings; 13883 const [prevMinHeightValue, setPrevMinHeightValue] = (0,external_wp_element_namespaceObject.useState)(minHeight); 13884 const [prevMinHeightUnit, setPrevMinHeightUnit] = (0,external_wp_element_namespaceObject.useState)(minHeightUnit); 13885 const isMinFullHeight = minHeightUnit === 'vh' && minHeight === 100 && !attributes?.style?.dimensions?.aspectRatio; 13886 const toggleMinFullHeight = () => { 13887 if (isMinFullHeight) { 13888 // If there aren't previous values, take the default ones. 13889 if (prevMinHeightUnit === 'vh' && prevMinHeightValue === 100) { 13890 return setAttributes({ 13891 minHeight: undefined, 13892 minHeightUnit: undefined 13893 }); 13894 } 13895 13896 // Set the previous values of height. 13897 return setAttributes({ 13898 minHeight: prevMinHeightValue, 13899 minHeightUnit: prevMinHeightUnit 13900 }); 13901 } 13902 setPrevMinHeightValue(minHeight); 13903 setPrevMinHeightUnit(minHeightUnit); 13904 13905 // Set full height, and clear any aspect ratio value. 13906 return setAttributes({ 13907 minHeight: 100, 13908 minHeightUnit: 'vh', 13909 style: block_controls_cleanEmptyObject({ 13910 ...attributes?.style, 13911 dimensions: { 13912 ...attributes?.style?.dimensions, 13913 aspectRatio: undefined // Reset aspect ratio when minHeight is set. 13914 } 13915 }) 13916 }); 13917 }; 13918 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 13919 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 13920 group: "block", 13921 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalBlockAlignmentMatrixControl, { 13922 label: (0,external_wp_i18n_namespaceObject.__)('Change content position'), 13923 value: contentPosition, 13924 onChange: nextPosition => setAttributes({ 13925 contentPosition: nextPosition 13926 }), 13927 isDisabled: !hasInnerBlocks 13928 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalBlockFullHeightAligmentControl, { 13929 isActive: isMinFullHeight, 13930 onToggle: toggleMinFullHeight, 13931 isDisabled: !hasInnerBlocks 13932 })] 13933 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 13934 group: "other", 13935 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaReplaceFlow, { 13936 mediaId: id, 13937 mediaURL: url, 13938 allowedTypes: shared_ALLOWED_MEDIA_TYPES, 13939 accept: "image/*,video/*", 13940 onSelect: onSelectMedia, 13941 onToggleFeaturedImage: toggleUseFeaturedImage, 13942 useFeaturedImage: useFeaturedImage, 13943 name: !url ? (0,external_wp_i18n_namespaceObject.__)('Add Media') : (0,external_wp_i18n_namespaceObject.__)('Replace'), 13944 onReset: onClearMedia 13945 }) 13946 })] 13947 }); 13948 } 13949 13950 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/cover/edit/cover-placeholder.js 13951 /** 13952 * WordPress dependencies 13953 */ 13954 13955 13956 13957 13958 /** 13959 * Internal dependencies 13960 */ 13961 13962 13963 function CoverPlaceholder({ 13964 disableMediaButtons = false, 13965 children, 13966 onSelectMedia, 13967 onError, 13968 style, 13969 toggleUseFeaturedImage 13970 }) { 13971 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaPlaceholder, { 13972 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 13973 icon: library_cover 13974 }), 13975 labels: { 13976 title: (0,external_wp_i18n_namespaceObject.__)('Cover'), 13977 instructions: (0,external_wp_i18n_namespaceObject.__)('Drag and drop onto this block, upload, or select existing media from your library.') 13978 }, 13979 onSelect: onSelectMedia, 13980 accept: "image/*,video/*", 13981 allowedTypes: shared_ALLOWED_MEDIA_TYPES, 13982 disableMediaButtons: disableMediaButtons, 13983 onToggleFeaturedImage: toggleUseFeaturedImage, 13984 onError: onError, 13985 style: style, 13986 children: children 13987 }); 13988 } 13989 13990 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/cover/edit/resizable-cover-popover.js 13991 /** 13992 * External dependencies 13993 */ 13994 13995 13996 /** 13997 * WordPress dependencies 13998 */ 13999 14000 14001 14002 /** 14003 * Internal dependencies 14004 */ 14005 14006 14007 const RESIZABLE_BOX_ENABLE_OPTION = { 14008 top: false, 14009 right: false, 14010 bottom: true, 14011 left: false, 14012 topRight: false, 14013 bottomRight: false, 14014 bottomLeft: false, 14015 topLeft: false 14016 }; 14017 const { 14018 ResizableBoxPopover 14019 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 14020 function ResizableCoverPopover({ 14021 className, 14022 height, 14023 minHeight, 14024 onResize, 14025 onResizeStart, 14026 onResizeStop, 14027 showHandle, 14028 size, 14029 width, 14030 ...props 14031 }) { 14032 const [isResizing, setIsResizing] = (0,external_wp_element_namespaceObject.useState)(false); 14033 const resizableBoxProps = { 14034 className: dist_clsx(className, { 14035 'is-resizing': isResizing 14036 }), 14037 enable: RESIZABLE_BOX_ENABLE_OPTION, 14038 onResizeStart: (_event, _direction, elt) => { 14039 onResizeStart(elt.clientHeight); 14040 onResize(elt.clientHeight); 14041 }, 14042 onResize: (_event, _direction, elt) => { 14043 onResize(elt.clientHeight); 14044 if (!isResizing) { 14045 setIsResizing(true); 14046 } 14047 }, 14048 onResizeStop: (_event, _direction, elt) => { 14049 onResizeStop(elt.clientHeight); 14050 setIsResizing(false); 14051 }, 14052 showHandle, 14053 size, 14054 __experimentalShowTooltip: true, 14055 __experimentalTooltipProps: { 14056 axis: 'y', 14057 position: 'bottom', 14058 isVisible: isResizing 14059 } 14060 }; 14061 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResizableBoxPopover, { 14062 className: "block-library-cover__resizable-box-popover", 14063 resizableBoxProps: resizableBoxProps, 14064 ...props 14065 }); 14066 } 14067 14068 ;// CONCATENATED MODULE: ./node_modules/colord/index.mjs 14069 var colord_r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return"string"==typeof r?r.length>0:"number"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?"0"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,p=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,v=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,m=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u="deg"),Number(e)*(colord_r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},"hsl"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},"rgb"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},"hsl"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},"hsv"]]},N=function(r,t){for(var n=0;n<t.length;n++){var e=t[n][0](r);if(e)return[e,t[n][1]]}return[null,void 0]},x=function(r){return"string"==typeof r?N(r.trim(),y.string):"object"==typeof r&&null!==r?N(r,y.object):[null,void 0]},I=function(r){return x(r)[1]},M=function(r,t){var n=c(r);return{h:n.h,s:e(n.s+100*t,0,100),l:n.l,a:n.a}},H=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},$=function(r,t){var n=c(r);return{h:n.h,s:n.s,l:e(n.l+100*t,0,100),a:n.a}},j=function(){function r(r){this.parsed=x(r)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return null!==this.parsed},r.prototype.brightness=function(){return n(H(this.rgba),2)},r.prototype.isDark=function(){return H(this.rgba)<.5},r.prototype.isLight=function(){return H(this.rgba)>=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):"","#"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?"rgba("+t+", "+n+", "+e+", "+u+")":"rgb("+t+", "+n+", "+e+")";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?"hsla("+t+", "+n+"%, "+e+"%, "+u+")":"hsl("+t+", "+n+"%, "+e+"%)";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return"number"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return"number"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})}; 14070 14071 ;// CONCATENATED MODULE: ./node_modules/colord/plugins/names.mjs 14072 /* harmony default export */ function names(e,f){var a={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},r={};for(var d in a)r[a[d]]=d;var l={};e.prototype.toName=function(f){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var d,i,n=r[this.toHex()];if(n)return n;if(null==f?void 0:f.closest){var o=this.toRgb(),t=1/0,b="black";if(!l.length)for(var c in a)l[c]=new e(a[c]).toRgb();for(var g in a){var u=(d=o,i=l[g],Math.pow(d.r-i.r,2)+Math.pow(d.g-i.g,2)+Math.pow(d.b-i.b,2));u<t&&(t=u,b=g)}return b}};f.string.push([function(f){var r=f.toLowerCase(),d="transparent"===r?"#0000":a[r];return d?new e(d).toRgb():null},"name"])} 14073 14074 ;// CONCATENATED MODULE: ./node_modules/fast-average-color/dist/index.esm.js 14075 /*! Fast Average Color | © 2022 Denis Seleznev | MIT License | https://github.com/fast-average-color/fast-average-color */ 14076 function toHex(num) { 14077 var str = num.toString(16); 14078 return str.length === 1 ? '0' + str : str; 14079 } 14080 function arrayToHex(arr) { 14081 return '#' + arr.map(toHex).join(''); 14082 } 14083 function isDark(color) { 14084 // http://www.w3.org/TR/AERT#color-contrast 14085 var result = (color[0] * 299 + color[1] * 587 + color[2] * 114) / 1000; 14086 return result < 128; 14087 } 14088 function prepareIgnoredColor(color) { 14089 if (!color) { 14090 return []; 14091 } 14092 return isRGBArray(color) ? color : [color]; 14093 } 14094 function isRGBArray(value) { 14095 return Array.isArray(value[0]); 14096 } 14097 function isIgnoredColor(data, index, ignoredColor) { 14098 for (var i = 0; i < ignoredColor.length; i++) { 14099 if (isIgnoredColorAsNumbers(data, index, ignoredColor[i])) { 14100 return true; 14101 } 14102 } 14103 return false; 14104 } 14105 function isIgnoredColorAsNumbers(data, index, ignoredColor) { 14106 switch (ignoredColor.length) { 14107 case 3: 14108 // [red, green, blue] 14109 if (isIgnoredRGBColor(data, index, ignoredColor)) { 14110 return true; 14111 } 14112 break; 14113 case 4: 14114 // [red, green, blue, alpha] 14115 if (isIgnoredRGBAColor(data, index, ignoredColor)) { 14116 return true; 14117 } 14118 break; 14119 case 5: 14120 // [red, green, blue, alpha, threshold] 14121 if (isIgnoredRGBAColorWithThreshold(data, index, ignoredColor)) { 14122 return true; 14123 } 14124 break; 14125 default: 14126 return false; 14127 } 14128 } 14129 function isIgnoredRGBColor(data, index, ignoredColor) { 14130 // Ignore if the pixel are transparent. 14131 if (data[index + 3] !== 255) { 14132 return true; 14133 } 14134 if (data[index] === ignoredColor[0] && 14135 data[index + 1] === ignoredColor[1] && 14136 data[index + 2] === ignoredColor[2]) { 14137 return true; 14138 } 14139 return false; 14140 } 14141 function isIgnoredRGBAColor(data, index, ignoredColor) { 14142 if (data[index + 3] && ignoredColor[3]) { 14143 return data[index] === ignoredColor[0] && 14144 data[index + 1] === ignoredColor[1] && 14145 data[index + 2] === ignoredColor[2] && 14146 data[index + 3] === ignoredColor[3]; 14147 } 14148 // Ignore rgb components if the pixel are fully transparent. 14149 return data[index + 3] === ignoredColor[3]; 14150 } 14151 function inRange(colorComponent, ignoredColorComponent, value) { 14152 return colorComponent >= (ignoredColorComponent - value) && 14153 colorComponent <= (ignoredColorComponent + value); 14154 } 14155 function isIgnoredRGBAColorWithThreshold(data, index, ignoredColor) { 14156 var redIgnored = ignoredColor[0]; 14157 var greenIgnored = ignoredColor[1]; 14158 var blueIgnored = ignoredColor[2]; 14159 var alphaIgnored = ignoredColor[3]; 14160 var threshold = ignoredColor[4]; 14161 var alphaData = data[index + 3]; 14162 var alphaInRange = inRange(alphaData, alphaIgnored, threshold); 14163 if (!alphaIgnored) { 14164 return alphaInRange; 14165 } 14166 if (!alphaData && alphaInRange) { 14167 return true; 14168 } 14169 if (inRange(data[index], redIgnored, threshold) && 14170 inRange(data[index + 1], greenIgnored, threshold) && 14171 inRange(data[index + 2], blueIgnored, threshold) && 14172 alphaInRange) { 14173 return true; 14174 } 14175 return false; 14176 } 14177 14178 function dominantAlgorithm(arr, len, options) { 14179 var colorHash = {}; 14180 var divider = 24; 14181 var ignoredColor = options.ignoredColor; 14182 var step = options.step; 14183 var max = [0, 0, 0, 0, 0]; 14184 for (var i = 0; i < len; i += step) { 14185 var red = arr[i]; 14186 var green = arr[i + 1]; 14187 var blue = arr[i + 2]; 14188 var alpha = arr[i + 3]; 14189 if (ignoredColor && isIgnoredColor(arr, i, ignoredColor)) { 14190 continue; 14191 } 14192 var key = Math.round(red / divider) + ',' + 14193 Math.round(green / divider) + ',' + 14194 Math.round(blue / divider); 14195 if (colorHash[key]) { 14196 colorHash[key] = [ 14197 colorHash[key][0] + red * alpha, 14198 colorHash[key][1] + green * alpha, 14199 colorHash[key][2] + blue * alpha, 14200 colorHash[key][3] + alpha, 14201 colorHash[key][4] + 1 14202 ]; 14203 } 14204 else { 14205 colorHash[key] = [red * alpha, green * alpha, blue * alpha, alpha, 1]; 14206 } 14207 if (max[4] < colorHash[key][4]) { 14208 max = colorHash[key]; 14209 } 14210 } 14211 var redTotal = max[0]; 14212 var greenTotal = max[1]; 14213 var blueTotal = max[2]; 14214 var alphaTotal = max[3]; 14215 var count = max[4]; 14216 return alphaTotal ? [ 14217 Math.round(redTotal / alphaTotal), 14218 Math.round(greenTotal / alphaTotal), 14219 Math.round(blueTotal / alphaTotal), 14220 Math.round(alphaTotal / count) 14221 ] : options.defaultColor; 14222 } 14223 14224 function simpleAlgorithm(arr, len, options) { 14225 var redTotal = 0; 14226 var greenTotal = 0; 14227 var blueTotal = 0; 14228 var alphaTotal = 0; 14229 var count = 0; 14230 var ignoredColor = options.ignoredColor; 14231 var step = options.step; 14232 for (var i = 0; i < len; i += step) { 14233 var alpha = arr[i + 3]; 14234 var red = arr[i] * alpha; 14235 var green = arr[i + 1] * alpha; 14236 var blue = arr[i + 2] * alpha; 14237 if (ignoredColor && isIgnoredColor(arr, i, ignoredColor)) { 14238 continue; 14239 } 14240 redTotal += red; 14241 greenTotal += green; 14242 blueTotal += blue; 14243 alphaTotal += alpha; 14244 count++; 14245 } 14246 return alphaTotal ? [ 14247 Math.round(redTotal / alphaTotal), 14248 Math.round(greenTotal / alphaTotal), 14249 Math.round(blueTotal / alphaTotal), 14250 Math.round(alphaTotal / count) 14251 ] : options.defaultColor; 14252 } 14253 14254 function sqrtAlgorithm(arr, len, options) { 14255 var redTotal = 0; 14256 var greenTotal = 0; 14257 var blueTotal = 0; 14258 var alphaTotal = 0; 14259 var count = 0; 14260 var ignoredColor = options.ignoredColor; 14261 var step = options.step; 14262 for (var i = 0; i < len; i += step) { 14263 var red = arr[i]; 14264 var green = arr[i + 1]; 14265 var blue = arr[i + 2]; 14266 var alpha = arr[i + 3]; 14267 if (ignoredColor && isIgnoredColor(arr, i, ignoredColor)) { 14268 continue; 14269 } 14270 redTotal += red * red * alpha; 14271 greenTotal += green * green * alpha; 14272 blueTotal += blue * blue * alpha; 14273 alphaTotal += alpha; 14274 count++; 14275 } 14276 return alphaTotal ? [ 14277 Math.round(Math.sqrt(redTotal / alphaTotal)), 14278 Math.round(Math.sqrt(greenTotal / alphaTotal)), 14279 Math.round(Math.sqrt(blueTotal / alphaTotal)), 14280 Math.round(alphaTotal / count) 14281 ] : options.defaultColor; 14282 } 14283 14284 function getDefaultColor(options) { 14285 return getOption(options, 'defaultColor', [0, 0, 0, 0]); 14286 } 14287 function getOption(options, name, defaultValue) { 14288 return (options[name] === undefined ? defaultValue : options[name]); 14289 } 14290 14291 var MIN_SIZE = 10; 14292 var MAX_SIZE = 100; 14293 function isSvg(filename) { 14294 return filename.search(/\.svg(\?|$)/i) !== -1; 14295 } 14296 function getOriginalSize(resource) { 14297 if (isInstanceOfHTMLImageElement(resource)) { 14298 var width = resource.naturalWidth; 14299 var height = resource.naturalHeight; 14300 // For SVG images with only viewBox attribute 14301 if (!resource.naturalWidth && isSvg(resource.src)) { 14302 width = height = MAX_SIZE; 14303 } 14304 return { 14305 width: width, 14306 height: height, 14307 }; 14308 } 14309 if (isInstanceOfHTMLVideoElement(resource)) { 14310 return { 14311 width: resource.videoWidth, 14312 height: resource.videoHeight 14313 }; 14314 } 14315 return { 14316 width: resource.width, 14317 height: resource.height 14318 }; 14319 } 14320 function getSrc(resource) { 14321 if (isInstanceOfHTMLCanvasElement(resource)) { 14322 return 'canvas'; 14323 } 14324 if (isInstanceOfOffscreenCanvas(resource)) { 14325 return 'offscreencanvas'; 14326 } 14327 if (isInstanceOfImageBitmap(resource)) { 14328 return 'imagebitmap'; 14329 } 14330 return resource.src; 14331 } 14332 function isInstanceOfHTMLImageElement(resource) { 14333 return typeof HTMLImageElement !== 'undefined' && resource instanceof HTMLImageElement; 14334 } 14335 var hasOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'; 14336 function isInstanceOfOffscreenCanvas(resource) { 14337 return hasOffscreenCanvas && resource instanceof OffscreenCanvas; 14338 } 14339 function isInstanceOfHTMLVideoElement(resource) { 14340 return typeof HTMLVideoElement !== 'undefined' && resource instanceof HTMLVideoElement; 14341 } 14342 function isInstanceOfHTMLCanvasElement(resource) { 14343 return typeof HTMLCanvasElement !== 'undefined' && resource instanceof HTMLCanvasElement; 14344 } 14345 function isInstanceOfImageBitmap(resource) { 14346 return typeof ImageBitmap !== 'undefined' && resource instanceof ImageBitmap; 14347 } 14348 function prepareSizeAndPosition(originalSize, options) { 14349 var srcLeft = getOption(options, 'left', 0); 14350 var srcTop = getOption(options, 'top', 0); 14351 var srcWidth = getOption(options, 'width', originalSize.width); 14352 var srcHeight = getOption(options, 'height', originalSize.height); 14353 var destWidth = srcWidth; 14354 var destHeight = srcHeight; 14355 if (options.mode === 'precision') { 14356 return { 14357 srcLeft: srcLeft, 14358 srcTop: srcTop, 14359 srcWidth: srcWidth, 14360 srcHeight: srcHeight, 14361 destWidth: destWidth, 14362 destHeight: destHeight 14363 }; 14364 } 14365 var factor; 14366 if (srcWidth > srcHeight) { 14367 factor = srcWidth / srcHeight; 14368 destWidth = MAX_SIZE; 14369 destHeight = Math.round(destWidth / factor); 14370 } 14371 else { 14372 factor = srcHeight / srcWidth; 14373 destHeight = MAX_SIZE; 14374 destWidth = Math.round(destHeight / factor); 14375 } 14376 if (destWidth > srcWidth || destHeight > srcHeight || 14377 destWidth < MIN_SIZE || destHeight < MIN_SIZE) { 14378 destWidth = srcWidth; 14379 destHeight = srcHeight; 14380 } 14381 return { 14382 srcLeft: srcLeft, 14383 srcTop: srcTop, 14384 srcWidth: srcWidth, 14385 srcHeight: srcHeight, 14386 destWidth: destWidth, 14387 destHeight: destHeight 14388 }; 14389 } 14390 var isWebWorkers = typeof window === 'undefined'; 14391 function makeCanvas() { 14392 if (isWebWorkers) { 14393 return hasOffscreenCanvas ? new OffscreenCanvas(1, 1) : null; 14394 } 14395 return document.createElement('canvas'); 14396 } 14397 14398 var ERROR_PREFIX = 'FastAverageColor: '; 14399 function getError(message) { 14400 return Error(ERROR_PREFIX + message); 14401 } 14402 function outputError(error, silent) { 14403 if (!silent) { 14404 console.error(error); 14405 } 14406 } 14407 14408 var FastAverageColor = /** @class */ (function () { 14409 function FastAverageColor() { 14410 this.canvas = null; 14411 this.ctx = null; 14412 } 14413 /** 14414 * Get asynchronously the average color from not loaded image. 14415 */ 14416 FastAverageColor.prototype.getColorAsync = function (resource, options) { 14417 if (!resource) { 14418 return Promise.reject(getError('call .getColorAsync() without resource.')); 14419 } 14420 if (typeof resource === 'string') { 14421 // Web workers 14422 if (typeof Image === 'undefined') { 14423 return Promise.reject(getError('resource as string is not supported in this environment')); 14424 } 14425 var img = new Image(); 14426 img.crossOrigin = options && options.crossOrigin || ''; 14427 img.src = resource; 14428 return this.bindImageEvents(img, options); 14429 } 14430 else if (isInstanceOfHTMLImageElement(resource) && !resource.complete) { 14431 return this.bindImageEvents(resource, options); 14432 } 14433 else { 14434 var result = this.getColor(resource, options); 14435 return result.error ? Promise.reject(result.error) : Promise.resolve(result); 14436 } 14437 }; 14438 /** 14439 * Get the average color from images, videos and canvas. 14440 */ 14441 FastAverageColor.prototype.getColor = function (resource, options) { 14442 options = options || {}; 14443 var defaultColor = getDefaultColor(options); 14444 if (!resource) { 14445 var error = getError('call .getColor(null) without resource'); 14446 outputError(error, options.silent); 14447 return this.prepareResult(defaultColor, error); 14448 } 14449 var originalSize = getOriginalSize(resource); 14450 var size = prepareSizeAndPosition(originalSize, options); 14451 if (!size.srcWidth || !size.srcHeight || !size.destWidth || !size.destHeight) { 14452 var error = getError("incorrect sizes for resource \"".concat(getSrc(resource), "\"")); 14453 outputError(error, options.silent); 14454 return this.prepareResult(defaultColor, error); 14455 } 14456 if (!this.canvas) { 14457 this.canvas = makeCanvas(); 14458 if (!this.canvas) { 14459 var error = getError('OffscreenCanvas is not supported in this browser'); 14460 outputError(error, options.silent); 14461 return this.prepareResult(defaultColor, error); 14462 } 14463 } 14464 if (!this.ctx) { 14465 this.ctx = this.canvas.getContext('2d', { willReadFrequently: true }); 14466 if (!this.ctx) { 14467 var error = getError('Canvas Context 2D is not supported in this browser'); 14468 outputError(error, options.silent); 14469 return this.prepareResult(defaultColor); 14470 } 14471 this.ctx.imageSmoothingEnabled = false; 14472 } 14473 this.canvas.width = size.destWidth; 14474 this.canvas.height = size.destHeight; 14475 try { 14476 this.ctx.clearRect(0, 0, size.destWidth, size.destHeight); 14477 this.ctx.drawImage(resource, size.srcLeft, size.srcTop, size.srcWidth, size.srcHeight, 0, 0, size.destWidth, size.destHeight); 14478 var bitmapData = this.ctx.getImageData(0, 0, size.destWidth, size.destHeight).data; 14479 return this.prepareResult(this.getColorFromArray4(bitmapData, options)); 14480 } 14481 catch (originalError) { 14482 var error = getError("security error (CORS) for resource ".concat(getSrc(resource), ".\nDetails: https://developer.mozilla.org/en/docs/Web/HTML/CORS_enabled_image")); 14483 outputError(error, options.silent); 14484 !options.silent && console.error(originalError); 14485 return this.prepareResult(defaultColor, error); 14486 } 14487 }; 14488 /** 14489 * Get the average color from a array when 1 pixel is 4 bytes. 14490 */ 14491 FastAverageColor.prototype.getColorFromArray4 = function (arr, options) { 14492 options = options || {}; 14493 var bytesPerPixel = 4; 14494 var arrLength = arr.length; 14495 var defaultColor = getDefaultColor(options); 14496 if (arrLength < bytesPerPixel) { 14497 return defaultColor; 14498 } 14499 var len = arrLength - arrLength % bytesPerPixel; 14500 var step = (options.step || 1) * bytesPerPixel; 14501 var algorithm; 14502 switch (options.algorithm || 'sqrt') { 14503 case 'simple': 14504 algorithm = simpleAlgorithm; 14505 break; 14506 case 'sqrt': 14507 algorithm = sqrtAlgorithm; 14508 break; 14509 case 'dominant': 14510 algorithm = dominantAlgorithm; 14511 break; 14512 default: 14513 throw getError("".concat(options.algorithm, " is unknown algorithm")); 14514 } 14515 return algorithm(arr, len, { 14516 defaultColor: defaultColor, 14517 ignoredColor: prepareIgnoredColor(options.ignoredColor), 14518 step: step 14519 }); 14520 }; 14521 /** 14522 * Get color data from value ([r, g, b, a]). 14523 */ 14524 FastAverageColor.prototype.prepareResult = function (value, error) { 14525 var rgb = value.slice(0, 3); 14526 var rgba = [value[0], value[1], value[2], value[3] / 255]; 14527 var isDarkColor = isDark(value); 14528 return { 14529 value: [value[0], value[1], value[2], value[3]], 14530 rgb: 'rgb(' + rgb.join(',') + ')', 14531 rgba: 'rgba(' + rgba.join(',') + ')', 14532 hex: arrayToHex(rgb), 14533 hexa: arrayToHex(value), 14534 isDark: isDarkColor, 14535 isLight: !isDarkColor, 14536 error: error, 14537 }; 14538 }; 14539 /** 14540 * Destroy the instance. 14541 */ 14542 FastAverageColor.prototype.destroy = function () { 14543 if (this.canvas) { 14544 this.canvas.width = 1; 14545 this.canvas.height = 1; 14546 this.canvas = null; 14547 } 14548 this.ctx = null; 14549 }; 14550 FastAverageColor.prototype.bindImageEvents = function (resource, options) { 14551 var _this = this; 14552 return new Promise(function (resolve, reject) { 14553 var onload = function () { 14554 unbindEvents(); 14555 var result = _this.getColor(resource, options); 14556 if (result.error) { 14557 reject(result.error); 14558 } 14559 else { 14560 resolve(result); 14561 } 14562 }; 14563 var onerror = function () { 14564 unbindEvents(); 14565 reject(getError("Error loading image \"".concat(resource.src, "\"."))); 14566 }; 14567 var onabort = function () { 14568 unbindEvents(); 14569 reject(getError("Image \"".concat(resource.src, "\" loading aborted"))); 14570 }; 14571 var unbindEvents = function () { 14572 resource.removeEventListener('load', onload); 14573 resource.removeEventListener('error', onerror); 14574 resource.removeEventListener('abort', onabort); 14575 }; 14576 resource.addEventListener('load', onload); 14577 resource.addEventListener('error', onerror); 14578 resource.addEventListener('abort', onabort); 14579 }); 14580 }; 14581 return FastAverageColor; 14582 }()); 14583 14584 14585 14586 ;// CONCATENATED MODULE: external ["wp","hooks"] 14587 const external_wp_hooks_namespaceObject = window["wp"]["hooks"]; 14588 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/cover/edit/color-utils.js 14589 /** 14590 * External dependencies 14591 */ 14592 14593 14594 14595 14596 14597 /** 14598 * WordPress dependencies 14599 */ 14600 14601 14602 /** 14603 * @typedef {import('colord').RgbaColor} RgbaColor 14604 */ 14605 14606 k([names]); 14607 14608 /** 14609 * Fallback color when the average color can't be computed. The image may be 14610 * rendering as transparent, and most sites have a light color background. 14611 */ 14612 const DEFAULT_BACKGROUND_COLOR = '#FFF'; 14613 14614 /** 14615 * Default dim color specified in style.css. 14616 */ 14617 const DEFAULT_OVERLAY_COLOR = '#000'; 14618 14619 /** 14620 * Performs a Porter Duff composite source over operation on two rgba colors. 14621 * 14622 * @see {@link https://www.w3.org/TR/compositing-1/#porterduffcompositingoperators_srcover} 14623 * 14624 * @param {RgbaColor} source Source color. 14625 * @param {RgbaColor} dest Destination color. 14626 * 14627 * @return {RgbaColor} Composite color. 14628 */ 14629 function compositeSourceOver(source, dest) { 14630 return { 14631 r: source.r * source.a + dest.r * dest.a * (1 - source.a), 14632 g: source.g * source.a + dest.g * dest.a * (1 - source.a), 14633 b: source.b * source.a + dest.b * dest.a * (1 - source.a), 14634 a: source.a + dest.a * (1 - source.a) 14635 }; 14636 } 14637 14638 /** 14639 * Retrieves the FastAverageColor singleton. 14640 * 14641 * @return {FastAverageColor} The FastAverageColor singleton. 14642 */ 14643 function retrieveFastAverageColor() { 14644 if (!retrieveFastAverageColor.fastAverageColor) { 14645 retrieveFastAverageColor.fastAverageColor = new FastAverageColor(); 14646 } 14647 return retrieveFastAverageColor.fastAverageColor; 14648 } 14649 14650 /** 14651 * Computes the average color of an image. 14652 * 14653 * @param {string} url The url of the image. 14654 * 14655 * @return {Promise<string>} Promise of an average color as a hex string. 14656 */ 14657 const getMediaColor = memize(async url => { 14658 if (!url) { 14659 return DEFAULT_BACKGROUND_COLOR; 14660 } 14661 14662 // making the default color rgb for compat with FAC 14663 const { 14664 r, 14665 g, 14666 b, 14667 a 14668 } = w(DEFAULT_BACKGROUND_COLOR).toRgb(); 14669 try { 14670 const imgCrossOrigin = (0,external_wp_hooks_namespaceObject.applyFilters)('media.crossOrigin', undefined, url); 14671 const color = await retrieveFastAverageColor().getColorAsync(url, { 14672 // The default color is white, which is the color 14673 // that is returned if there's an error. 14674 // colord returns alpga 0-1, FAC needs 0-255 14675 defaultColor: [r, g, b, a * 255], 14676 // Errors that come up don't reject the promise, 14677 // so error logging has to be silenced 14678 // with this option. 14679 silent: "production" === 'production', 14680 crossOrigin: imgCrossOrigin 14681 }); 14682 return color.hex; 14683 } catch (error) { 14684 // If there's an error return the fallback color. 14685 return DEFAULT_BACKGROUND_COLOR; 14686 } 14687 }); 14688 14689 /** 14690 * Computes if the color combination of the overlay and background color is dark. 14691 * 14692 * @param {number} dimRatio Opacity of the overlay between 0 and 100. 14693 * @param {string} overlayColor CSS color string for the overlay. 14694 * @param {string} backgroundColor CSS color string for the background. 14695 * 14696 * @return {boolean} true if the color combination composite result is dark. 14697 */ 14698 function compositeIsDark(dimRatio, overlayColor, backgroundColor) { 14699 // Opacity doesn't matter if you're overlaying the same color on top of itself. 14700 // And background doesn't matter when overlay is fully opaque. 14701 if (overlayColor === backgroundColor || dimRatio === 100) { 14702 return w(overlayColor).isDark(); 14703 } 14704 const overlay = w(overlayColor).alpha(dimRatio / 100).toRgb(); 14705 const background = w(backgroundColor).toRgb(); 14706 const composite = compositeSourceOver(overlay, background); 14707 return w(composite).isDark(); 14708 } 14709 14710 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/cover/edit/index.js 14711 /** 14712 * External dependencies 14713 */ 14714 14715 14716 /** 14717 * WordPress dependencies 14718 */ 14719 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 /** 14730 * Internal dependencies 14731 */ 14732 14733 14734 14735 14736 14737 14738 14739 14740 14741 function getInnerBlocksTemplate(attributes) { 14742 return [['core/paragraph', { 14743 align: 'center', 14744 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write title…'), 14745 ...attributes 14746 }]]; 14747 } 14748 14749 /** 14750 * Is the URL a temporary blob URL? A blob URL is one that is used temporarily while 14751 * the media (image or video) is being uploaded and will not have an id allocated yet. 14752 * 14753 * @param {number} id The id of the media. 14754 * @param {string} url The url of the media. 14755 * 14756 * @return {boolean} Is the URL a Blob URL. 14757 */ 14758 const isTemporaryMedia = (id, url) => !id && (0,external_wp_blob_namespaceObject.isBlobURL)(url); 14759 function CoverEdit({ 14760 attributes, 14761 clientId, 14762 isSelected, 14763 overlayColor, 14764 setAttributes, 14765 setOverlayColor, 14766 toggleSelection, 14767 context: { 14768 postId, 14769 postType 14770 } 14771 }) { 14772 const { 14773 contentPosition, 14774 id, 14775 url: originalUrl, 14776 backgroundType: originalBackgroundType, 14777 useFeaturedImage, 14778 dimRatio, 14779 focalPoint, 14780 hasParallax, 14781 isDark, 14782 isRepeated, 14783 minHeight, 14784 minHeightUnit, 14785 alt, 14786 allowedBlocks, 14787 templateLock, 14788 tagName: TagName = 'div', 14789 isUserOverlayColor 14790 } = attributes; 14791 const [featuredImage] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postType, 'featured_media', postId); 14792 const { 14793 __unstableMarkNextChangeAsNotPersistent 14794 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 14795 const media = (0,external_wp_data_namespaceObject.useSelect)(select => featuredImage && select(external_wp_coreData_namespaceObject.store).getMedia(featuredImage, { 14796 context: 'view' 14797 }), [featuredImage]); 14798 const mediaUrl = media?.source_url; 14799 14800 // User can change the featured image outside of the block, but we still 14801 // need to update the block when that happens. This effect should only 14802 // run when the featured image changes in that case. All other cases are 14803 // handled in their respective callbacks. 14804 (0,external_wp_element_namespaceObject.useEffect)(() => { 14805 (async () => { 14806 if (!useFeaturedImage) { 14807 return; 14808 } 14809 const averageBackgroundColor = await getMediaColor(mediaUrl); 14810 let newOverlayColor = overlayColor.color; 14811 if (!isUserOverlayColor) { 14812 newOverlayColor = averageBackgroundColor; 14813 __unstableMarkNextChangeAsNotPersistent(); 14814 setOverlayColor(newOverlayColor); 14815 } 14816 const newIsDark = compositeIsDark(dimRatio, newOverlayColor, averageBackgroundColor); 14817 __unstableMarkNextChangeAsNotPersistent(); 14818 setAttributes({ 14819 isDark: newIsDark, 14820 isUserOverlayColor: isUserOverlayColor || false 14821 }); 14822 })(); 14823 // Disable reason: Update the block only when the featured image changes. 14824 // eslint-disable-next-line react-hooks/exhaustive-deps 14825 }, [mediaUrl]); 14826 14827 // instead of destructuring the attributes 14828 // we define the url and background type 14829 // depending on the value of the useFeaturedImage flag 14830 // to preview in edit the dynamic featured image 14831 const url = useFeaturedImage ? mediaUrl : 14832 // Ensure the url is not malformed due to sanitization through `wp_kses`. 14833 originalUrl?.replaceAll('&', '&'); 14834 const backgroundType = useFeaturedImage ? IMAGE_BACKGROUND_TYPE : originalBackgroundType; 14835 const { 14836 createErrorNotice 14837 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 14838 const { 14839 gradientClass, 14840 gradientValue 14841 } = (0,external_wp_blockEditor_namespaceObject.__experimentalUseGradient)(); 14842 const onSelectMedia = async newMedia => { 14843 const mediaAttributes = attributesFromMedia(newMedia); 14844 const isImage = [newMedia?.type, newMedia?.media_type].includes(IMAGE_BACKGROUND_TYPE); 14845 const averageBackgroundColor = await getMediaColor(isImage ? newMedia?.url : undefined); 14846 let newOverlayColor = overlayColor.color; 14847 if (!isUserOverlayColor) { 14848 newOverlayColor = averageBackgroundColor; 14849 setOverlayColor(newOverlayColor); 14850 14851 // Make undo revert the next setAttributes and the previous setOverlayColor. 14852 __unstableMarkNextChangeAsNotPersistent(); 14853 } 14854 14855 // Only set a new dimRatio if there was no previous media selected 14856 // to avoid resetting to 50 if it has been explicitly set to 100. 14857 // See issue #52835 for context. 14858 const newDimRatio = originalUrl === undefined && dimRatio === 100 ? 50 : dimRatio; 14859 const newIsDark = compositeIsDark(newDimRatio, newOverlayColor, averageBackgroundColor); 14860 setAttributes({ 14861 ...mediaAttributes, 14862 focalPoint: undefined, 14863 useFeaturedImage: undefined, 14864 dimRatio: newDimRatio, 14865 isDark: newIsDark, 14866 isUserOverlayColor: isUserOverlayColor || false 14867 }); 14868 }; 14869 const onClearMedia = () => { 14870 let newOverlayColor = overlayColor.color; 14871 if (!isUserOverlayColor) { 14872 newOverlayColor = DEFAULT_OVERLAY_COLOR; 14873 setOverlayColor(undefined); 14874 14875 // Make undo revert the next setAttributes and the previous setOverlayColor. 14876 __unstableMarkNextChangeAsNotPersistent(); 14877 } 14878 const newIsDark = compositeIsDark(dimRatio, newOverlayColor, DEFAULT_BACKGROUND_COLOR); 14879 setAttributes({ 14880 url: undefined, 14881 id: undefined, 14882 backgroundType: undefined, 14883 focalPoint: undefined, 14884 hasParallax: undefined, 14885 isRepeated: undefined, 14886 useFeaturedImage: undefined, 14887 isDark: newIsDark 14888 }); 14889 }; 14890 const onSetOverlayColor = async newOverlayColor => { 14891 const averageBackgroundColor = await getMediaColor(url); 14892 const newIsDark = compositeIsDark(dimRatio, newOverlayColor, averageBackgroundColor); 14893 setOverlayColor(newOverlayColor); 14894 14895 // Make undo revert the next setAttributes and the previous setOverlayColor. 14896 __unstableMarkNextChangeAsNotPersistent(); 14897 setAttributes({ 14898 isUserOverlayColor: true, 14899 isDark: newIsDark 14900 }); 14901 }; 14902 const onUpdateDimRatio = async newDimRatio => { 14903 const averageBackgroundColor = await getMediaColor(url); 14904 const newIsDark = compositeIsDark(newDimRatio, overlayColor.color, averageBackgroundColor); 14905 setAttributes({ 14906 dimRatio: newDimRatio, 14907 isDark: newIsDark 14908 }); 14909 }; 14910 const onUploadError = message => { 14911 createErrorNotice(message, { 14912 type: 'snackbar' 14913 }); 14914 }; 14915 const isUploadingMedia = isTemporaryMedia(id, url); 14916 const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType; 14917 const isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType; 14918 const blockEditingMode = (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)(); 14919 const hasNonContentControls = blockEditingMode === 'default'; 14920 const [resizeListener, { 14921 height, 14922 width 14923 }] = (0,external_wp_compose_namespaceObject.useResizeObserver)(); 14924 const resizableBoxDimensions = (0,external_wp_element_namespaceObject.useMemo)(() => { 14925 return { 14926 height: minHeightUnit === 'px' ? minHeight : 'auto', 14927 width: 'auto' 14928 }; 14929 }, [minHeight, minHeightUnit]); 14930 const minHeightWithUnit = minHeight && minHeightUnit ? `$minHeight}$minHeightUnit}` : minHeight; 14931 const isImgElement = !(hasParallax || isRepeated); 14932 const style = { 14933 minHeight: minHeightWithUnit || undefined 14934 }; 14935 const backgroundImage = url ? `url($url})` : undefined; 14936 const backgroundPosition = mediaPosition(focalPoint); 14937 const bgStyle = { 14938 backgroundColor: overlayColor.color 14939 }; 14940 const mediaStyle = { 14941 objectPosition: focalPoint && isImgElement ? mediaPosition(focalPoint) : undefined 14942 }; 14943 const hasBackground = !!(url || overlayColor.color || gradientValue); 14944 const hasInnerBlocks = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getBlock(clientId).innerBlocks.length > 0, [clientId]); 14945 const ref = (0,external_wp_element_namespaceObject.useRef)(); 14946 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 14947 ref 14948 }); 14949 14950 // Check for fontSize support before we pass a fontSize attribute to the innerBlocks. 14951 const [fontSizes] = (0,external_wp_blockEditor_namespaceObject.useSettings)('typography.fontSizes'); 14952 const hasFontSizes = fontSizes?.length > 0; 14953 const innerBlocksTemplate = getInnerBlocksTemplate({ 14954 fontSize: hasFontSizes ? 'large' : undefined 14955 }); 14956 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)({ 14957 className: 'wp-block-cover__inner-container' 14958 }, { 14959 // Avoid template sync when the `templateLock` value is `all` or `contentOnly`. 14960 // See: https://github.com/WordPress/gutenberg/pull/45632 14961 template: !hasInnerBlocks ? innerBlocksTemplate : undefined, 14962 templateInsertUpdatesSelection: true, 14963 allowedBlocks, 14964 templateLock, 14965 dropZoneElement: ref.current 14966 }); 14967 const mediaElement = (0,external_wp_element_namespaceObject.useRef)(); 14968 const currentSettings = { 14969 isVideoBackground, 14970 isImageBackground, 14971 mediaElement, 14972 hasInnerBlocks, 14973 url, 14974 isImgElement, 14975 overlayColor 14976 }; 14977 const toggleUseFeaturedImage = async () => { 14978 const newUseFeaturedImage = !useFeaturedImage; 14979 const averageBackgroundColor = newUseFeaturedImage ? await getMediaColor(mediaUrl) : DEFAULT_BACKGROUND_COLOR; 14980 const newOverlayColor = !isUserOverlayColor ? averageBackgroundColor : overlayColor.color; 14981 if (!isUserOverlayColor) { 14982 if (newUseFeaturedImage) { 14983 setOverlayColor(newOverlayColor); 14984 } else { 14985 setOverlayColor(undefined); 14986 } 14987 14988 // Make undo revert the next setAttributes and the previous setOverlayColor. 14989 __unstableMarkNextChangeAsNotPersistent(); 14990 } 14991 const newDimRatio = dimRatio === 100 ? 50 : dimRatio; 14992 const newIsDark = compositeIsDark(newDimRatio, newOverlayColor, averageBackgroundColor); 14993 setAttributes({ 14994 id: undefined, 14995 url: undefined, 14996 useFeaturedImage: newUseFeaturedImage, 14997 dimRatio: newDimRatio, 14998 backgroundType: useFeaturedImage ? IMAGE_BACKGROUND_TYPE : undefined, 14999 isDark: newIsDark 15000 }); 15001 }; 15002 const blockControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CoverBlockControls, { 15003 attributes: attributes, 15004 setAttributes: setAttributes, 15005 onSelectMedia: onSelectMedia, 15006 currentSettings: currentSettings, 15007 toggleUseFeaturedImage: toggleUseFeaturedImage, 15008 onClearMedia: onClearMedia 15009 }); 15010 const inspectorControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CoverInspectorControls, { 15011 attributes: attributes, 15012 setAttributes: setAttributes, 15013 clientId: clientId, 15014 setOverlayColor: onSetOverlayColor, 15015 coverRef: ref, 15016 currentSettings: currentSettings, 15017 toggleUseFeaturedImage: toggleUseFeaturedImage, 15018 updateDimRatio: onUpdateDimRatio, 15019 onClearMedia: onClearMedia 15020 }); 15021 const resizableCoverProps = { 15022 className: 'block-library-cover__resize-container', 15023 clientId, 15024 height, 15025 minHeight: minHeightWithUnit, 15026 onResizeStart: () => { 15027 setAttributes({ 15028 minHeightUnit: 'px' 15029 }); 15030 toggleSelection(false); 15031 }, 15032 onResize: value => { 15033 setAttributes({ 15034 minHeight: value 15035 }); 15036 }, 15037 onResizeStop: newMinHeight => { 15038 toggleSelection(true); 15039 setAttributes({ 15040 minHeight: newMinHeight 15041 }); 15042 }, 15043 // Hide the resize handle if an aspect ratio is set, as the aspect ratio takes precedence. 15044 showHandle: !attributes.style?.dimensions?.aspectRatio ? true : false, 15045 size: resizableBoxDimensions, 15046 width 15047 }; 15048 if (!useFeaturedImage && !hasInnerBlocks && !hasBackground) { 15049 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 15050 children: [blockControls, inspectorControls, hasNonContentControls && isSelected && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResizableCoverPopover, { 15051 ...resizableCoverProps 15052 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(TagName, { 15053 ...blockProps, 15054 className: dist_clsx('is-placeholder', blockProps.className), 15055 style: { 15056 ...blockProps.style, 15057 minHeight: minHeightWithUnit || undefined 15058 }, 15059 children: [resizeListener, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CoverPlaceholder, { 15060 onSelectMedia: onSelectMedia, 15061 onError: onUploadError, 15062 toggleUseFeaturedImage: toggleUseFeaturedImage, 15063 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 15064 className: "wp-block-cover__placeholder-background-options", 15065 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.ColorPalette, { 15066 disableCustomColors: true, 15067 value: overlayColor.color, 15068 onChange: onSetOverlayColor, 15069 clearable: false 15070 }) 15071 }) 15072 })] 15073 })] 15074 }); 15075 } 15076 const classes = dist_clsx({ 15077 'is-dark-theme': isDark, 15078 'is-light': !isDark, 15079 'is-transient': isUploadingMedia, 15080 'has-parallax': hasParallax, 15081 'is-repeated': isRepeated, 15082 'has-custom-content-position': !isContentPositionCenter(contentPosition) 15083 }, getPositionClassName(contentPosition)); 15084 const showOverlay = url || !useFeaturedImage || useFeaturedImage && !url; 15085 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 15086 children: [blockControls, inspectorControls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(TagName, { 15087 ...blockProps, 15088 className: dist_clsx(classes, blockProps.className), 15089 style: { 15090 ...style, 15091 ...blockProps.style 15092 }, 15093 "data-url": url, 15094 children: [resizeListener, showOverlay && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 15095 "aria-hidden": "true", 15096 className: dist_clsx('wp-block-cover__background', dimRatioToClass(dimRatio), { 15097 [overlayColor.class]: overlayColor.class, 15098 'has-background-dim': dimRatio !== undefined, 15099 // For backwards compatibility. Former versions of the Cover Block applied 15100 // `.wp-block-cover__gradient-background` in the presence of 15101 // media, a gradient and a dim. 15102 'wp-block-cover__gradient-background': url && gradientValue && dimRatio !== 0, 15103 'has-background-gradient': gradientValue, 15104 [gradientClass]: gradientClass 15105 }), 15106 style: { 15107 backgroundImage: gradientValue, 15108 ...bgStyle 15109 } 15110 }), !url && useFeaturedImage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 15111 className: "wp-block-cover__image--placeholder-image", 15112 withIllustration: true 15113 }), url && isImageBackground && (isImgElement ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 15114 ref: mediaElement, 15115 className: "wp-block-cover__image-background", 15116 alt: alt, 15117 src: url, 15118 style: mediaStyle 15119 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 15120 ref: mediaElement, 15121 role: alt ? 'img' : undefined, 15122 "aria-label": alt ? alt : undefined, 15123 className: dist_clsx(classes, 'wp-block-cover__image-background'), 15124 style: { 15125 backgroundImage, 15126 backgroundPosition 15127 } 15128 })), url && isVideoBackground && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 15129 ref: mediaElement, 15130 className: "wp-block-cover__video-background", 15131 autoPlay: true, 15132 muted: true, 15133 loop: true, 15134 src: url, 15135 style: mediaStyle 15136 }), isUploadingMedia && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CoverPlaceholder, { 15137 disableMediaButtons: true, 15138 onSelectMedia: onSelectMedia, 15139 onError: onUploadError, 15140 toggleUseFeaturedImage: toggleUseFeaturedImage 15141 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 15142 ...innerBlocksProps 15143 })] 15144 }), hasNonContentControls && isSelected && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResizableCoverPopover, { 15145 ...resizableCoverProps 15146 })] 15147 }); 15148 } 15149 /* harmony default export */ const cover_edit = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_blockEditor_namespaceObject.withColors)({ 15150 overlayColor: 'background-color' 15151 })])(CoverEdit)); 15152 15153 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/cover/save.js 15154 /** 15155 * External dependencies 15156 */ 15157 15158 15159 /** 15160 * WordPress dependencies 15161 */ 15162 15163 15164 /** 15165 * Internal dependencies 15166 */ 15167 15168 15169 15170 function cover_save_save({ 15171 attributes 15172 }) { 15173 const { 15174 backgroundType, 15175 gradient, 15176 contentPosition, 15177 customGradient, 15178 customOverlayColor, 15179 dimRatio, 15180 focalPoint, 15181 useFeaturedImage, 15182 hasParallax, 15183 isDark, 15184 isRepeated, 15185 overlayColor, 15186 url, 15187 alt, 15188 id, 15189 minHeight: minHeightProp, 15190 minHeightUnit, 15191 tagName: Tag 15192 } = attributes; 15193 const overlayColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayColor); 15194 const gradientClass = (0,external_wp_blockEditor_namespaceObject.__experimentalGetGradientClass)(gradient); 15195 const minHeight = minHeightProp && minHeightUnit ? `$minHeightProp}$minHeightUnit}` : minHeightProp; 15196 const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType; 15197 const isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType; 15198 const isImgElement = !(hasParallax || isRepeated); 15199 const style = { 15200 minHeight: minHeight || undefined 15201 }; 15202 const bgStyle = { 15203 backgroundColor: !overlayColorClass ? customOverlayColor : undefined, 15204 background: customGradient ? customGradient : undefined 15205 }; 15206 const objectPosition = 15207 // prettier-ignore 15208 focalPoint && isImgElement ? mediaPosition(focalPoint) : undefined; 15209 const backgroundImage = url ? `url($url})` : undefined; 15210 const backgroundPosition = mediaPosition(focalPoint); 15211 const classes = dist_clsx({ 15212 'is-light': !isDark, 15213 'has-parallax': hasParallax, 15214 'is-repeated': isRepeated, 15215 'has-custom-content-position': !isContentPositionCenter(contentPosition) 15216 }, getPositionClassName(contentPosition)); 15217 const imgClasses = dist_clsx('wp-block-cover__image-background', id ? `wp-image-$id}` : null, { 15218 'has-parallax': hasParallax, 15219 'is-repeated': isRepeated 15220 }); 15221 const gradientValue = gradient || customGradient; 15222 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Tag, { 15223 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 15224 className: classes, 15225 style 15226 }), 15227 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 15228 "aria-hidden": "true", 15229 className: dist_clsx('wp-block-cover__background', overlayColorClass, dimRatioToClass(dimRatio), { 15230 'has-background-dim': dimRatio !== undefined, 15231 // For backwards compatibility. Former versions of the Cover Block applied 15232 // `.wp-block-cover__gradient-background` in the presence of 15233 // media, a gradient and a dim. 15234 'wp-block-cover__gradient-background': url && gradientValue && dimRatio !== 0, 15235 'has-background-gradient': gradientValue, 15236 [gradientClass]: gradientClass 15237 }), 15238 style: bgStyle 15239 }), !useFeaturedImage && isImageBackground && url && (isImgElement ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 15240 className: imgClasses, 15241 alt: alt, 15242 src: url, 15243 style: { 15244 objectPosition 15245 }, 15246 "data-object-fit": "cover", 15247 "data-object-position": objectPosition 15248 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 15249 role: alt ? 'img' : undefined, 15250 "aria-label": alt ? alt : undefined, 15251 className: imgClasses, 15252 style: { 15253 backgroundPosition, 15254 backgroundImage 15255 } 15256 })), isVideoBackground && url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 15257 className: dist_clsx('wp-block-cover__video-background', 'intrinsic-ignore'), 15258 autoPlay: true, 15259 muted: true, 15260 loop: true, 15261 playsInline: true, 15262 src: url, 15263 style: { 15264 objectPosition 15265 }, 15266 "data-object-fit": "cover", 15267 "data-object-position": objectPosition 15268 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 15269 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 15270 className: 'wp-block-cover__inner-container' 15271 }) 15272 })] 15273 }); 15274 } 15275 15276 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/cover/transforms.js 15277 /** 15278 * WordPress dependencies 15279 */ 15280 15281 15282 15283 /** 15284 * Internal dependencies 15285 */ 15286 15287 15288 const { 15289 cleanEmptyObject: transforms_cleanEmptyObject 15290 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 15291 const cover_transforms_transforms = { 15292 from: [{ 15293 type: 'block', 15294 blocks: ['core/image'], 15295 transform: ({ 15296 caption, 15297 url, 15298 alt, 15299 align, 15300 id, 15301 anchor, 15302 style 15303 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/cover', { 15304 dimRatio: 50, 15305 url, 15306 alt, 15307 align, 15308 id, 15309 anchor, 15310 style: { 15311 color: { 15312 duotone: style?.color?.duotone 15313 } 15314 } 15315 }, [(0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 15316 content: caption, 15317 fontSize: 'large', 15318 align: 'center' 15319 })]) 15320 }, { 15321 type: 'block', 15322 blocks: ['core/video'], 15323 transform: ({ 15324 caption, 15325 src, 15326 align, 15327 id, 15328 anchor 15329 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/cover', { 15330 dimRatio: 50, 15331 url: src, 15332 align, 15333 id, 15334 backgroundType: VIDEO_BACKGROUND_TYPE, 15335 anchor 15336 }, [(0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 15337 content: caption, 15338 fontSize: 'large', 15339 align: 'center' 15340 })]) 15341 }, { 15342 type: 'block', 15343 blocks: ['core/group'], 15344 transform: (attributes, innerBlocks) => { 15345 const { 15346 align, 15347 anchor, 15348 backgroundColor, 15349 gradient, 15350 style 15351 } = attributes; 15352 15353 // If the Group block being transformed has a Cover block as its 15354 // only child return that Cover block. 15355 if (innerBlocks?.length === 1 && innerBlocks[0]?.name === 'core/cover') { 15356 return (0,external_wp_blocks_namespaceObject.createBlock)('core/cover', innerBlocks[0].attributes, innerBlocks[0].innerBlocks); 15357 } 15358 15359 // If no background or gradient color is provided, default to 50% opacity. 15360 // This matches the styling of a Cover block with a background image, 15361 // in the state where a background image has been removed. 15362 const dimRatio = backgroundColor || gradient || style?.color?.background || style?.color?.gradient ? undefined : 50; 15363 15364 // Move the background or gradient color to the parent Cover block. 15365 const parentAttributes = { 15366 align, 15367 anchor, 15368 dimRatio, 15369 overlayColor: backgroundColor, 15370 customOverlayColor: style?.color?.background, 15371 gradient, 15372 customGradient: style?.color?.gradient 15373 }; 15374 const attributesWithoutBackgroundColors = { 15375 ...attributes, 15376 backgroundColor: undefined, 15377 gradient: undefined, 15378 style: transforms_cleanEmptyObject({ 15379 ...attributes?.style, 15380 color: style?.color ? { 15381 ...style?.color, 15382 background: undefined, 15383 gradient: undefined 15384 } : undefined 15385 }) 15386 }; 15387 15388 // Preserve the block by nesting it within the Cover block, 15389 // instead of converting the Group block directly to the Cover block. 15390 return (0,external_wp_blocks_namespaceObject.createBlock)('core/cover', parentAttributes, [(0,external_wp_blocks_namespaceObject.createBlock)('core/group', attributesWithoutBackgroundColors, innerBlocks)]); 15391 } 15392 }], 15393 to: [{ 15394 type: 'block', 15395 blocks: ['core/image'], 15396 isMatch: ({ 15397 backgroundType, 15398 url, 15399 overlayColor, 15400 customOverlayColor, 15401 gradient, 15402 customGradient 15403 }) => { 15404 if (url) { 15405 // If a url exists the transform could happen if that URL represents an image background. 15406 return backgroundType === IMAGE_BACKGROUND_TYPE; 15407 } 15408 // If a url is not set the transform could happen if the cover has no background color or gradient; 15409 return !overlayColor && !customOverlayColor && !gradient && !customGradient; 15410 }, 15411 transform: ({ 15412 title, 15413 url, 15414 alt, 15415 align, 15416 id, 15417 anchor, 15418 style 15419 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/image', { 15420 caption: title, 15421 url, 15422 alt, 15423 align, 15424 id, 15425 anchor, 15426 style: { 15427 color: { 15428 duotone: style?.color?.duotone 15429 } 15430 } 15431 }) 15432 }, { 15433 type: 'block', 15434 blocks: ['core/video'], 15435 isMatch: ({ 15436 backgroundType, 15437 url, 15438 overlayColor, 15439 customOverlayColor, 15440 gradient, 15441 customGradient 15442 }) => { 15443 if (url) { 15444 // If a url exists the transform could happen if that URL represents a video background. 15445 return backgroundType === VIDEO_BACKGROUND_TYPE; 15446 } 15447 // If a url is not set the transform could happen if the cover has no background color or gradient; 15448 return !overlayColor && !customOverlayColor && !gradient && !customGradient; 15449 }, 15450 transform: ({ 15451 title, 15452 url, 15453 align, 15454 id, 15455 anchor 15456 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/video', { 15457 caption: title, 15458 src: url, 15459 id, 15460 align, 15461 anchor 15462 }) 15463 }, { 15464 type: 'block', 15465 blocks: ['core/group'], 15466 isMatch: ({ 15467 url, 15468 useFeaturedImage 15469 }) => { 15470 // If the Cover block uses background media, skip this transform, 15471 // and instead use the Group block's default transform. 15472 if (url || useFeaturedImage) { 15473 return false; 15474 } 15475 return true; 15476 }, 15477 transform: (attributes, innerBlocks) => { 15478 // Convert Cover overlay colors to comparable Group background colors. 15479 const transformedColorAttributes = { 15480 backgroundColor: attributes?.overlayColor, 15481 gradient: attributes?.gradient, 15482 style: transforms_cleanEmptyObject({ 15483 ...attributes?.style, 15484 color: attributes?.customOverlayColor || attributes?.customGradient || attributes?.style?.color ? { 15485 background: attributes?.customOverlayColor, 15486 gradient: attributes?.customGradient, 15487 ...attributes?.style?.color 15488 } : undefined 15489 }) 15490 }; 15491 15492 // If the Cover block contains only a single Group block as a direct child, 15493 // then attempt to merge the Cover's background colors with the child Group block, 15494 // and remove the Cover block as the wrapper. 15495 if (innerBlocks?.length === 1 && innerBlocks[0]?.name === 'core/group') { 15496 const groupAttributes = transforms_cleanEmptyObject(innerBlocks[0].attributes || {}); 15497 15498 // If the Group block contains any kind of background color or gradient, 15499 // skip merging Cover background colors, and preserve the Group block's colors. 15500 if (groupAttributes?.backgroundColor || groupAttributes?.gradient || groupAttributes?.style?.color?.background || groupAttributes?.style?.color?.gradient) { 15501 return (0,external_wp_blocks_namespaceObject.createBlock)('core/group', groupAttributes, innerBlocks[0]?.innerBlocks); 15502 } 15503 return (0,external_wp_blocks_namespaceObject.createBlock)('core/group', { 15504 ...transformedColorAttributes, 15505 ...groupAttributes, 15506 style: transforms_cleanEmptyObject({ 15507 ...groupAttributes?.style, 15508 color: transformedColorAttributes?.style?.color || groupAttributes?.style?.color ? { 15509 ...transformedColorAttributes?.style?.color, 15510 ...groupAttributes?.style?.color 15511 } : undefined 15512 }) 15513 }, innerBlocks[0]?.innerBlocks); 15514 } 15515 15516 // In all other cases, transform the Cover block directly to a Group block. 15517 return (0,external_wp_blocks_namespaceObject.createBlock)('core/group', { 15518 ...attributes, 15519 ...transformedColorAttributes 15520 }, innerBlocks); 15521 } 15522 }] 15523 }; 15524 /* harmony default export */ const cover_transforms = (cover_transforms_transforms); 15525 15526 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/cover/variations.js 15527 /** 15528 * WordPress dependencies 15529 */ 15530 15531 15532 const cover_variations_variations = [{ 15533 name: 'cover', 15534 title: (0,external_wp_i18n_namespaceObject.__)('Cover'), 15535 description: (0,external_wp_i18n_namespaceObject.__)('Add an image or video with a text overlay.'), 15536 attributes: { 15537 layout: { 15538 type: 'constrained' 15539 } 15540 }, 15541 isDefault: true, 15542 icon: library_cover 15543 }]; 15544 /* harmony default export */ const cover_variations = (cover_variations_variations); 15545 15546 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/cover/index.js 15547 /** 15548 * WordPress dependencies 15549 */ 15550 15551 15552 15553 /** 15554 * Internal dependencies 15555 */ 15556 15557 15558 15559 const cover_metadata = { 15560 $schema: "https://schemas.wp.org/trunk/block.json", 15561 apiVersion: 3, 15562 name: "core/cover", 15563 title: "Cover", 15564 category: "media", 15565 description: "Add an image or video with a text overlay.", 15566 textdomain: "default", 15567 attributes: { 15568 url: { 15569 type: "string" 15570 }, 15571 useFeaturedImage: { 15572 type: "boolean", 15573 "default": false 15574 }, 15575 id: { 15576 type: "number" 15577 }, 15578 alt: { 15579 type: "string", 15580 "default": "" 15581 }, 15582 hasParallax: { 15583 type: "boolean", 15584 "default": false 15585 }, 15586 isRepeated: { 15587 type: "boolean", 15588 "default": false 15589 }, 15590 dimRatio: { 15591 type: "number", 15592 "default": 100 15593 }, 15594 overlayColor: { 15595 type: "string" 15596 }, 15597 customOverlayColor: { 15598 type: "string" 15599 }, 15600 isUserOverlayColor: { 15601 type: "boolean" 15602 }, 15603 backgroundType: { 15604 type: "string", 15605 "default": "image" 15606 }, 15607 focalPoint: { 15608 type: "object" 15609 }, 15610 minHeight: { 15611 type: "number" 15612 }, 15613 minHeightUnit: { 15614 type: "string" 15615 }, 15616 gradient: { 15617 type: "string" 15618 }, 15619 customGradient: { 15620 type: "string" 15621 }, 15622 contentPosition: { 15623 type: "string" 15624 }, 15625 isDark: { 15626 type: "boolean", 15627 "default": true 15628 }, 15629 allowedBlocks: { 15630 type: "array" 15631 }, 15632 templateLock: { 15633 type: ["string", "boolean"], 15634 "enum": ["all", "insert", "contentOnly", false] 15635 }, 15636 tagName: { 15637 type: "string", 15638 "default": "div" 15639 } 15640 }, 15641 usesContext: ["postId", "postType"], 15642 supports: { 15643 anchor: true, 15644 align: true, 15645 html: false, 15646 shadow: true, 15647 spacing: { 15648 padding: true, 15649 margin: ["top", "bottom"], 15650 blockGap: true, 15651 __experimentalDefaultControls: { 15652 padding: true, 15653 blockGap: true 15654 } 15655 }, 15656 __experimentalBorder: { 15657 color: true, 15658 radius: true, 15659 style: true, 15660 width: true, 15661 __experimentalDefaultControls: { 15662 color: true, 15663 radius: true, 15664 style: true, 15665 width: true 15666 } 15667 }, 15668 color: { 15669 __experimentalDuotone: "> .wp-block-cover__image-background, > .wp-block-cover__video-background", 15670 heading: true, 15671 text: true, 15672 background: false, 15673 __experimentalSkipSerialization: ["gradients"], 15674 enableContrastChecker: false 15675 }, 15676 dimensions: { 15677 aspectRatio: true 15678 }, 15679 typography: { 15680 fontSize: true, 15681 lineHeight: true, 15682 __experimentalFontFamily: true, 15683 __experimentalFontWeight: true, 15684 __experimentalFontStyle: true, 15685 __experimentalTextTransform: true, 15686 __experimentalTextDecoration: true, 15687 __experimentalLetterSpacing: true, 15688 __experimentalDefaultControls: { 15689 fontSize: true 15690 } 15691 }, 15692 layout: { 15693 allowJustification: false 15694 }, 15695 interactivity: { 15696 clientNavigation: true 15697 } 15698 }, 15699 editorStyle: "wp-block-cover-editor", 15700 style: "wp-block-cover" 15701 }; 15702 15703 15704 15705 const { 15706 name: cover_name 15707 } = cover_metadata; 15708 15709 const cover_settings = { 15710 icon: library_cover, 15711 example: { 15712 attributes: { 15713 customOverlayColor: '#065174', 15714 dimRatio: 40, 15715 url: 'https://s.w.org/images/core/5.3/Windbuchencom.jpg' 15716 }, 15717 innerBlocks: [{ 15718 name: 'core/paragraph', 15719 attributes: { 15720 content: (0,external_wp_i18n_namespaceObject.__)('<strong>Snow Patrol</strong>'), 15721 align: 'center', 15722 style: { 15723 typography: { 15724 fontSize: 48 15725 }, 15726 color: { 15727 text: 'white' 15728 } 15729 } 15730 } 15731 }] 15732 }, 15733 transforms: cover_transforms, 15734 save: cover_save_save, 15735 edit: cover_edit, 15736 deprecated: cover_deprecated, 15737 variations: cover_variations 15738 }; 15739 const cover_init = () => initBlock({ 15740 name: cover_name, 15741 metadata: cover_metadata, 15742 settings: cover_settings 15743 }); 15744 15745 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/details.js 15746 /** 15747 * WordPress dependencies 15748 */ 15749 15750 15751 15752 const details = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, { 15753 viewBox: "0 0 24 24", 15754 xmlns: "http://www.w3.org/2000/svg", 15755 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 15756 d: "M4 16h10v1.5H4V16Zm0-4.5h16V13H4v-1.5ZM10 7h10v1.5H10V7Z", 15757 fillRule: "evenodd", 15758 clipRule: "evenodd" 15759 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 15760 d: "m4 5.25 4 2.5-4 2.5v-5Z" 15761 })] 15762 }); 15763 /* harmony default export */ const library_details = (details); 15764 15765 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/details/edit.js 15766 /** 15767 * WordPress dependencies 15768 */ 15769 15770 15771 15772 15773 15774 15775 15776 const details_edit_TEMPLATE = [['core/paragraph', { 15777 placeholder: (0,external_wp_i18n_namespaceObject.__)('Type / to add a hidden block') 15778 }]]; 15779 function DetailsEdit({ 15780 attributes, 15781 setAttributes, 15782 clientId 15783 }) { 15784 const { 15785 showContent, 15786 summary 15787 } = attributes; 15788 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 15789 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 15790 template: details_edit_TEMPLATE, 15791 __experimentalCaptureToolbars: true 15792 }); 15793 15794 // Check if either the block or the inner blocks are selected. 15795 const hasSelection = (0,external_wp_data_namespaceObject.useSelect)(select => { 15796 const { 15797 isBlockSelected, 15798 hasSelectedInnerBlock 15799 } = select(external_wp_blockEditor_namespaceObject.store); 15800 /* Sets deep to true to also find blocks inside the details content block. */ 15801 return hasSelectedInnerBlock(clientId, true) || isBlockSelected(clientId); 15802 }, [clientId]); 15803 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 15804 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 15805 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 15806 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 15807 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 15808 __nextHasNoMarginBottom: true, 15809 label: (0,external_wp_i18n_namespaceObject.__)('Open by default'), 15810 checked: showContent, 15811 onChange: () => setAttributes({ 15812 showContent: !showContent 15813 }) 15814 }) 15815 }) 15816 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("details", { 15817 ...innerBlocksProps, 15818 open: hasSelection || showContent, 15819 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("summary", { 15820 onClick: event => event.preventDefault(), 15821 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 15822 identifier: "summary", 15823 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Write summary'), 15824 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write summary…'), 15825 allowedFormats: [], 15826 withoutInteractiveFormatting: true, 15827 value: summary, 15828 onChange: newSummary => setAttributes({ 15829 summary: newSummary 15830 }) 15831 }) 15832 }), innerBlocksProps.children] 15833 })] 15834 }); 15835 } 15836 /* harmony default export */ const details_edit = (DetailsEdit); 15837 15838 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/details/save.js 15839 /** 15840 * WordPress dependencies 15841 */ 15842 15843 15844 15845 function details_save_save({ 15846 attributes 15847 }) { 15848 const { 15849 showContent 15850 } = attributes; 15851 const summary = attributes.summary ? attributes.summary : 'Details'; 15852 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save(); 15853 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("details", { 15854 ...blockProps, 15855 open: showContent, 15856 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("summary", { 15857 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 15858 value: summary 15859 }) 15860 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {})] 15861 }); 15862 } 15863 15864 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/details/transforms.js 15865 /** 15866 * WordPress dependencies 15867 */ 15868 15869 /* harmony default export */ const details_transforms = ({ 15870 from: [{ 15871 type: 'block', 15872 isMultiBlock: true, 15873 blocks: ['*'], 15874 isMatch({}, blocks) { 15875 return !(blocks.length === 1 && blocks[0].name === 'core/details'); 15876 }, 15877 __experimentalConvert(blocks) { 15878 return (0,external_wp_blocks_namespaceObject.createBlock)('core/details', {}, blocks.map(block => (0,external_wp_blocks_namespaceObject.cloneBlock)(block))); 15879 } 15880 }] 15881 }); 15882 15883 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/details/index.js 15884 /** 15885 * WordPress dependencies 15886 */ 15887 15888 15889 15890 /** 15891 * Internal dependencies 15892 */ 15893 15894 const details_metadata = { 15895 $schema: "https://schemas.wp.org/trunk/block.json", 15896 apiVersion: 3, 15897 name: "core/details", 15898 title: "Details", 15899 category: "text", 15900 description: "Hide and show additional content.", 15901 keywords: ["accordion", "summary", "toggle", "disclosure"], 15902 textdomain: "default", 15903 attributes: { 15904 showContent: { 15905 type: "boolean", 15906 "default": false 15907 }, 15908 summary: { 15909 type: "rich-text", 15910 source: "rich-text", 15911 selector: "summary" 15912 } 15913 }, 15914 supports: { 15915 __experimentalOnEnter: true, 15916 align: ["wide", "full"], 15917 color: { 15918 gradients: true, 15919 link: true, 15920 __experimentalDefaultControls: { 15921 background: true, 15922 text: true 15923 } 15924 }, 15925 __experimentalBorder: { 15926 color: true, 15927 width: true, 15928 style: true 15929 }, 15930 html: false, 15931 spacing: { 15932 margin: true, 15933 padding: true, 15934 blockGap: true, 15935 __experimentalDefaultControls: { 15936 margin: false, 15937 padding: false 15938 } 15939 }, 15940 typography: { 15941 fontSize: true, 15942 lineHeight: true, 15943 __experimentalFontFamily: true, 15944 __experimentalFontWeight: true, 15945 __experimentalFontStyle: true, 15946 __experimentalTextTransform: true, 15947 __experimentalTextDecoration: true, 15948 __experimentalLetterSpacing: true, 15949 __experimentalDefaultControls: { 15950 fontSize: true 15951 } 15952 }, 15953 layout: { 15954 allowEditing: false 15955 }, 15956 interactivity: { 15957 clientNavigation: true 15958 } 15959 }, 15960 editorStyle: "wp-block-details-editor", 15961 style: "wp-block-details" 15962 }; 15963 15964 15965 15966 const { 15967 name: details_name 15968 } = details_metadata; 15969 15970 const details_settings = { 15971 icon: library_details, 15972 example: { 15973 attributes: { 15974 summary: 'La Mancha', 15975 showContent: true 15976 }, 15977 innerBlocks: [{ 15978 name: 'core/paragraph', 15979 attributes: { 15980 content: (0,external_wp_i18n_namespaceObject.__)('In a village of La Mancha, the name of which I have no desire to call to mind, there lived not long since one of those gentlemen that keep a lance in the lance-rack, an old buckler, a lean hack, and a greyhound for coursing.') 15981 } 15982 }] 15983 }, 15984 save: details_save_save, 15985 edit: details_edit, 15986 transforms: details_transforms 15987 }; 15988 const details_init = () => initBlock({ 15989 name: details_name, 15990 metadata: details_metadata, 15991 settings: details_settings 15992 }); 15993 15994 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pencil.js 15995 /** 15996 * WordPress dependencies 15997 */ 15998 15999 16000 const pencil = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 16001 xmlns: "http://www.w3.org/2000/svg", 16002 viewBox: "0 0 24 24", 16003 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 16004 d: "m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z" 16005 }) 16006 }); 16007 /* harmony default export */ const library_pencil = (pencil); 16008 16009 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/edit.js 16010 /** 16011 * Internal dependencies 16012 */ 16013 16014 16015 /* harmony default export */ const library_edit = (library_pencil); 16016 16017 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/embed-controls.js 16018 /** 16019 * WordPress dependencies 16020 */ 16021 16022 16023 16024 16025 16026 16027 16028 function getResponsiveHelp(checked) { 16029 return checked ? (0,external_wp_i18n_namespaceObject.__)('This embed will preserve its aspect ratio when the browser is resized.') : (0,external_wp_i18n_namespaceObject.__)('This embed may not preserve its aspect ratio when the browser is resized.'); 16030 } 16031 const EmbedControls = ({ 16032 blockSupportsResponsive, 16033 showEditButton, 16034 themeSupportsResponsive, 16035 allowResponsive, 16036 toggleResponsive, 16037 switchBackToURLInput 16038 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 16039 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 16040 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 16041 children: showEditButton && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 16042 className: "components-toolbar__control", 16043 label: (0,external_wp_i18n_namespaceObject.__)('Edit URL'), 16044 icon: library_edit, 16045 onClick: switchBackToURLInput 16046 }) 16047 }) 16048 }), themeSupportsResponsive && blockSupportsResponsive && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 16049 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 16050 title: (0,external_wp_i18n_namespaceObject.__)('Media settings'), 16051 className: "blocks-responsive", 16052 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 16053 __nextHasNoMarginBottom: true, 16054 label: (0,external_wp_i18n_namespaceObject.__)('Resize for smaller devices'), 16055 checked: allowResponsive, 16056 help: getResponsiveHelp, 16057 onChange: toggleResponsive 16058 }) 16059 }) 16060 })] 16061 }); 16062 /* harmony default export */ const embed_controls = (EmbedControls); 16063 16064 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/icons.js 16065 /** 16066 * WordPress dependencies 16067 */ 16068 16069 16070 16071 const embedContentIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16072 viewBox: "0 0 24 24", 16073 xmlns: "http://www.w3.org/2000/svg", 16074 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16075 d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V9.8l4.7-5.3H19c.3 0 .5.2.5.5v14zm-6-9.5L16 12l-2.5 2.8 1.1 1L18 12l-3.5-3.5-1 1zm-3 0l-1-1L6 12l3.5 3.8 1.1-1L8 12l2.5-2.5z" 16076 }) 16077 }); 16078 const embedAudioIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16079 viewBox: "0 0 24 24", 16080 xmlns: "http://www.w3.org/2000/svg", 16081 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16082 d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V9.8l4.7-5.3H19c.3 0 .5.2.5.5v14zM13.2 7.7c-.4.4-.7 1.1-.7 1.9v3.7c-.4-.3-.8-.4-1.3-.4-1.2 0-2.2 1-2.2 2.2 0 1.2 1 2.2 2.2 2.2.5 0 1-.2 1.4-.5.9-.6 1.4-1.6 1.4-2.6V9.6c0-.4.1-.6.2-.8.3-.3 1-.3 1.6-.3h.2V7h-.2c-.7 0-1.8 0-2.6.7z" 16083 }) 16084 }); 16085 const embedPhotoIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16086 viewBox: "0 0 24 24", 16087 xmlns: "http://www.w3.org/2000/svg", 16088 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16089 d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9.2 4.5H19c.3 0 .5.2.5.5v8.4l-3-2.9c-.3-.3-.8-.3-1 0L11.9 14 9 12c-.3-.2-.6-.2-.8 0l-3.6 2.6V9.8l4.6-5.3zm9.8 15H5c-.3 0-.5-.2-.5-.5v-2.4l4.1-3 3 1.9c.3.2.7.2.9-.1L16 12l3.5 3.4V19c0 .3-.2.5-.5.5z" 16090 }) 16091 }); 16092 const embedVideoIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16093 viewBox: "0 0 24 24", 16094 xmlns: "http://www.w3.org/2000/svg", 16095 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16096 d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V9.8l4.7-5.3H19c.3 0 .5.2.5.5v14zM10 15l5-3-5-3v6z" 16097 }) 16098 }); 16099 const embedTwitterIcon = { 16100 foreground: '#1da1f2', 16101 src: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16102 xmlns: "http://www.w3.org/2000/svg", 16103 viewBox: "0 0 24 24", 16104 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.G, { 16105 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16106 d: "M22.23 5.924c-.736.326-1.527.547-2.357.646.847-.508 1.498-1.312 1.804-2.27-.793.47-1.67.812-2.606.996C18.325 4.498 17.258 4 16.078 4c-2.266 0-4.103 1.837-4.103 4.103 0 .322.036.635.106.935-3.41-.17-6.433-1.804-8.457-4.287-.353.607-.556 1.312-.556 2.064 0 1.424.724 2.68 1.825 3.415-.673-.022-1.305-.207-1.86-.514v.052c0 1.988 1.415 3.647 3.293 4.023-.344.095-.707.145-1.08.145-.265 0-.522-.026-.773-.074.522 1.63 2.038 2.817 3.833 2.85-1.404 1.1-3.174 1.757-5.096 1.757-.332 0-.66-.02-.98-.057 1.816 1.164 3.973 1.843 6.29 1.843 7.547 0 11.675-6.252 11.675-11.675 0-.178-.004-.355-.012-.53.802-.578 1.497-1.3 2.047-2.124z" 16107 }) 16108 }) 16109 }) 16110 }; 16111 const embedYouTubeIcon = { 16112 foreground: '#ff0000', 16113 src: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16114 viewBox: "0 0 24 24", 16115 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16116 d: "M21.8 8s-.195-1.377-.795-1.984c-.76-.797-1.613-.8-2.004-.847-2.798-.203-6.996-.203-6.996-.203h-.01s-4.197 0-6.996.202c-.39.046-1.242.05-2.003.846C2.395 6.623 2.2 8 2.2 8S2 9.62 2 11.24v1.517c0 1.618.2 3.237.2 3.237s.195 1.378.795 1.985c.76.797 1.76.77 2.205.855 1.6.153 6.8.2 6.8.2s4.203-.005 7-.208c.392-.047 1.244-.05 2.005-.847.6-.607.795-1.985.795-1.985s.2-1.618.2-3.237v-1.517C22 9.62 21.8 8 21.8 8zM9.935 14.595v-5.62l5.403 2.82-5.403 2.8z" 16117 }) 16118 }) 16119 }; 16120 const embedFacebookIcon = { 16121 foreground: '#3b5998', 16122 src: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16123 viewBox: "0 0 24 24", 16124 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16125 d: "M20 3H4c-.6 0-1 .4-1 1v16c0 .5.4 1 1 1h8.6v-7h-2.3v-2.7h2.3v-2c0-2.3 1.4-3.6 3.5-3.6 1 0 1.8.1 2.1.1v2.4h-1.4c-1.1 0-1.3.5-1.3 1.3v1.7h2.7l-.4 2.8h-2.3v7H20c.5 0 1-.4 1-1V4c0-.6-.4-1-1-1z" 16126 }) 16127 }) 16128 }; 16129 const embedInstagramIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16130 viewBox: "0 0 24 24", 16131 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.G, { 16132 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16133 d: "M12 4.622c2.403 0 2.688.01 3.637.052.877.04 1.354.187 1.67.31.42.163.72.358 1.036.673.315.315.51.615.673 1.035.123.317.27.794.31 1.67.043.95.052 1.235.052 3.638s-.01 2.688-.052 3.637c-.04.877-.187 1.354-.31 1.67-.163.42-.358.72-.673 1.036-.315.315-.615.51-1.035.673-.317.123-.794.27-1.67.31-.95.043-1.234.052-3.638.052s-2.688-.01-3.637-.052c-.877-.04-1.354-.187-1.67-.31-.42-.163-.72-.358-1.036-.673-.315-.315-.51-.615-.673-1.035-.123-.317-.27-.794-.31-1.67-.043-.95-.052-1.235-.052-3.638s.01-2.688.052-3.637c.04-.877.187-1.354.31-1.67.163-.42.358-.72.673-1.036.315-.315.615-.51 1.035-.673.317-.123.794-.27 1.67-.31.95-.043 1.235-.052 3.638-.052M12 3c-2.444 0-2.75.01-3.71.054s-1.613.196-2.185.418c-.592.23-1.094.538-1.594 1.04-.5.5-.807 1-1.037 1.593-.223.572-.375 1.226-.42 2.184C3.01 9.25 3 9.555 3 12s.01 2.75.054 3.71.196 1.613.418 2.186c.23.592.538 1.094 1.038 1.594s1.002.808 1.594 1.038c.572.222 1.227.375 2.185.418.96.044 1.266.054 3.71.054s2.75-.01 3.71-.054 1.613-.196 2.186-.418c.592-.23 1.094-.538 1.594-1.038s.808-1.002 1.038-1.594c.222-.572.375-1.227.418-2.185.044-.96.054-1.266.054-3.71s-.01-2.75-.054-3.71-.196-1.613-.418-2.186c-.23-.592-.538-1.094-1.038-1.594s-1.002-.808-1.594-1.038c-.572-.222-1.227-.375-2.185-.418C14.75 3.01 14.445 3 12 3zm0 4.378c-2.552 0-4.622 2.07-4.622 4.622s2.07 4.622 4.622 4.622 4.622-2.07 4.622-4.622S14.552 7.378 12 7.378zM12 15c-1.657 0-3-1.343-3-3s1.343-3 3-3 3 1.343 3 3-1.343 3-3 3zm4.804-8.884c-.596 0-1.08.484-1.08 1.08s.484 1.08 1.08 1.08c.596 0 1.08-.484 1.08-1.08s-.483-1.08-1.08-1.08z" 16134 }) 16135 }) 16136 }); 16137 const embedWordPressIcon = { 16138 foreground: '#0073AA', 16139 src: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16140 viewBox: "0 0 24 24", 16141 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.G, { 16142 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16143 d: "M12.158 12.786l-2.698 7.84c.806.236 1.657.365 2.54.365 1.047 0 2.05-.18 2.986-.51-.024-.037-.046-.078-.065-.123l-2.762-7.57zM3.008 12c0 3.56 2.07 6.634 5.068 8.092L3.788 8.342c-.5 1.117-.78 2.354-.78 3.658zm15.06-.454c0-1.112-.398-1.88-.74-2.48-.456-.74-.883-1.368-.883-2.11 0-.825.627-1.595 1.51-1.595.04 0 .078.006.116.008-1.598-1.464-3.73-2.36-6.07-2.36-3.14 0-5.904 1.613-7.512 4.053.21.008.41.012.58.012.94 0 2.395-.114 2.395-.114.484-.028.54.684.057.74 0 0-.487.058-1.03.086l3.275 9.74 1.968-5.902-1.4-3.838c-.485-.028-.944-.085-.944-.085-.486-.03-.43-.77.056-.742 0 0 1.484.114 2.368.114.94 0 2.397-.114 2.397-.114.486-.028.543.684.058.74 0 0-.488.058-1.03.086l3.25 9.665.897-2.997c.456-1.17.684-2.137.684-2.907zm1.82-3.86c.04.286.06.593.06.924 0 .912-.17 1.938-.683 3.22l-2.746 7.94c2.672-1.558 4.47-4.454 4.47-7.77 0-1.564-.4-3.033-1.1-4.314zM12 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10z" 16144 }) 16145 }) 16146 }) 16147 }; 16148 const embedSpotifyIcon = { 16149 foreground: '#1db954', 16150 src: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16151 viewBox: "0 0 24 24", 16152 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16153 d: "M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m4.586 14.424c-.18.295-.563.387-.857.207-2.35-1.434-5.305-1.76-8.786-.963-.335.077-.67-.133-.746-.47-.077-.334.132-.67.47-.745 3.808-.87 7.076-.496 9.712 1.115.293.18.386.563.206.857M17.81 13.7c-.226.367-.706.482-1.072.257-2.687-1.652-6.785-2.13-9.965-1.166-.413.127-.848-.106-.973-.517-.125-.413.108-.848.52-.973 3.632-1.102 8.147-.568 11.234 1.328.366.226.48.707.256 1.072m.105-2.835C14.692 8.95 9.375 8.775 6.297 9.71c-.493.15-1.016-.13-1.166-.624-.148-.495.13-1.017.625-1.167 3.532-1.073 9.404-.866 13.115 1.337.445.264.59.838.327 1.282-.264.443-.838.59-1.282.325" 16154 }) 16155 }) 16156 }; 16157 const embedFlickrIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16158 viewBox: "0 0 24 24", 16159 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16160 d: "m6.5 7c-2.75 0-5 2.25-5 5s2.25 5 5 5 5-2.25 5-5-2.25-5-5-5zm11 0c-2.75 0-5 2.25-5 5s2.25 5 5 5 5-2.25 5-5-2.25-5-5-5z" 16161 }) 16162 }); 16163 const embedVimeoIcon = { 16164 foreground: '#1ab7ea', 16165 src: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16166 xmlns: "http://www.w3.org/2000/svg", 16167 viewBox: "0 0 24 24", 16168 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.G, { 16169 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16170 d: "M22.396 7.164c-.093 2.026-1.507 4.8-4.245 8.32C15.323 19.16 12.93 21 10.97 21c-1.214 0-2.24-1.12-3.08-3.36-.56-2.052-1.118-4.105-1.68-6.158-.622-2.24-1.29-3.36-2.004-3.36-.156 0-.7.328-1.634.98l-.978-1.26c1.027-.903 2.04-1.806 3.037-2.71C6 3.95 7.03 3.328 7.716 3.265c1.62-.156 2.616.95 2.99 3.32.404 2.558.685 4.148.84 4.77.468 2.12.982 3.18 1.543 3.18.435 0 1.09-.687 1.963-2.064.872-1.376 1.34-2.422 1.402-3.142.125-1.187-.343-1.782-1.4-1.782-.5 0-1.013.115-1.542.34 1.023-3.35 2.977-4.976 5.862-4.883 2.14.063 3.148 1.45 3.024 4.16z" 16171 }) 16172 }) 16173 }) 16174 }; 16175 const embedRedditIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16176 viewBox: "0 0 24 24", 16177 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16178 d: "M22 12.068a2.184 2.184 0 0 0-2.186-2.186c-.592 0-1.13.233-1.524.609-1.505-1.075-3.566-1.774-5.86-1.864l1.004-4.695 3.261.699A1.56 1.56 0 1 0 18.255 3c-.61-.001-1.147.357-1.398.877l-3.638-.77a.382.382 0 0 0-.287.053.348.348 0 0 0-.161.251l-1.112 5.233c-2.33.072-4.426.77-5.95 1.864a2.201 2.201 0 0 0-1.523-.61 2.184 2.184 0 0 0-.896 4.176c-.036.215-.053.43-.053.663 0 3.37 3.924 6.111 8.763 6.111s8.763-2.724 8.763-6.11c0-.216-.017-.449-.053-.664A2.207 2.207 0 0 0 22 12.068Zm-15.018 1.56a1.56 1.56 0 0 1 3.118 0c0 .86-.699 1.558-1.559 1.558-.86.018-1.559-.699-1.559-1.559Zm8.728 4.139c-1.076 1.075-3.119 1.147-3.71 1.147-.61 0-2.652-.09-3.71-1.147a.4.4 0 0 1 0-.573.4.4 0 0 1 .574 0c.68.68 2.114.914 3.136.914 1.022 0 2.473-.233 3.136-.914a.4.4 0 0 1 .574 0 .436.436 0 0 1 0 .573Zm-.287-2.563a1.56 1.56 0 0 1 0-3.118c.86 0 1.56.699 1.56 1.56 0 .841-.7 1.558-1.56 1.558Z" 16179 }) 16180 }); 16181 const embedTumblrIcon = { 16182 foreground: '#35465c', 16183 src: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16184 viewBox: "0 0 24 24", 16185 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16186 d: "M19 3H5a2 2 0 00-2 2v14c0 1.1.9 2 2 2h14a2 2 0 002-2V5a2 2 0 00-2-2zm-5.69 14.66c-2.72 0-3.1-1.9-3.1-3.16v-3.56H8.49V8.99c1.7-.62 2.54-1.99 2.64-2.87 0-.06.06-.41.06-.58h1.9v3.1h2.17v2.3h-2.18v3.1c0 .47.13 1.3 1.2 1.26h1.1v2.36c-1.01.02-2.07 0-2.07 0z" 16187 }) 16188 }) 16189 }; 16190 const embedAmazonIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.SVG, { 16191 viewBox: "0 0 24 24", 16192 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16193 d: "M18.42 14.58c-.51-.66-1.05-1.23-1.05-2.5V7.87c0-1.8.15-3.45-1.2-4.68-1.05-1.02-2.79-1.35-4.14-1.35-2.6 0-5.52.96-6.12 4.14-.06.36.18.54.4.57l2.66.3c.24-.03.42-.27.48-.5.24-1.12 1.17-1.63 2.2-1.63.56 0 1.22.21 1.55.7.4.56.33 1.31.33 1.97v.36c-1.59.18-3.66.27-5.16.93a4.63 4.63 0 0 0-2.93 4.44c0 2.82 1.8 4.23 4.1 4.23 1.95 0 3.03-.45 4.53-1.98.51.72.66 1.08 1.59 1.83.18.09.45.09.63-.1v.04l2.1-1.8c.24-.21.2-.48.03-.75zm-5.4-1.2c-.45.75-1.14 1.23-1.92 1.23-1.05 0-1.65-.81-1.65-1.98 0-2.31 2.1-2.73 4.08-2.73v.6c0 1.05.03 1.92-.5 2.88z" 16194 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16195 d: "M21.69 19.2a17.62 17.62 0 0 1-21.6-1.57c-.23-.2 0-.5.28-.33a23.88 23.88 0 0 0 20.93 1.3c.45-.19.84.3.39.6z" 16196 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16197 d: "M22.8 17.96c-.36-.45-2.22-.2-3.1-.12-.23.03-.3-.18-.05-.36 1.5-1.05 3.96-.75 4.26-.39.3.36-.1 2.82-1.5 4.02-.21.18-.42.1-.3-.15.3-.8 1.02-2.58.69-3z" 16198 })] 16199 }); 16200 const embedAnimotoIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.SVG, { 16201 viewBox: "0 0 24 24", 16202 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16203 d: "m.0206909 21 19.8160091-13.07806 3.5831 6.20826z", 16204 fill: "#4bc7ee" 16205 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16206 d: "m23.7254 19.0205-10.1074-17.18468c-.6421-1.114428-1.7087-1.114428-2.3249 0l-11.2931 19.16418h22.5655c1.279 0 1.8019-.8905 1.1599-1.9795z", 16207 fill: "#d4cdcb" 16208 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16209 d: "m.0206909 21 15.2439091-16.38571 4.3029 7.32271z", 16210 fill: "#c3d82e" 16211 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16212 d: "m13.618 1.83582c-.6421-1.114428-1.7087-1.114428-2.3249 0l-11.2931 19.16418 15.2646-16.38573z", 16213 fill: "#e4ecb0" 16214 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16215 d: "m.0206909 21 19.5468091-9.063 1.6621 2.8344z", 16216 fill: "#209dbd" 16217 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16218 d: "m.0206909 21 17.9209091-11.82623 1.6259 2.76323z", 16219 fill: "#7cb3c9" 16220 })] 16221 }); 16222 const embedDailymotionIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16223 viewBox: "0 0 24 24", 16224 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16225 d: "M11.903 16.568c-1.82 0-3.124-1.281-3.124-2.967a2.987 2.987 0 0 1 2.989-2.989c1.663 0 2.944 1.304 2.944 3.034 0 1.663-1.281 2.922-2.81 2.922ZM17.997 3l-3.308.73v5.107c-.809-1.034-2.045-1.37-3.505-1.37-1.529 0-2.9.561-4.023 1.662-1.259 1.214-1.933 2.764-1.933 4.495 0 1.888.72 3.506 2.113 4.742 1.056.944 2.314 1.415 3.775 1.415 1.438 0 2.517-.382 3.573-1.415v1.415h3.308V3Z", 16226 fill: "#333436" 16227 }) 16228 }); 16229 const embedPinterestIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16230 width: "24", 16231 height: "24", 16232 viewBox: "0 0 24 24", 16233 version: "1.1", 16234 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16235 d: "M12.289,2C6.617,2,3.606,5.648,3.606,9.622c0,1.846,1.025,4.146,2.666,4.878c0.25,0.111,0.381,0.063,0.439-0.169 c0.044-0.175,0.267-1.029,0.365-1.428c0.032-0.128,0.017-0.237-0.091-0.362C6.445,11.911,6.01,10.75,6.01,9.668 c0-2.777,2.194-5.464,5.933-5.464c3.23,0,5.49,2.108,5.49,5.122c0,3.407-1.794,5.768-4.13,5.768c-1.291,0-2.257-1.021-1.948-2.277 c0.372-1.495,1.089-3.112,1.089-4.191c0-0.967-0.542-1.775-1.663-1.775c-1.319,0-2.379,1.309-2.379,3.059 c0,1.115,0.394,1.869,0.394,1.869s-1.302,5.279-1.54,6.261c-0.405,1.666,0.053,4.368,0.094,4.604 c0.021,0.126,0.167,0.169,0.25,0.063c0.129-0.165,1.699-2.419,2.142-4.051c0.158-0.59,0.817-2.995,0.817-2.995 c0.43,0.784,1.681,1.446,3.013,1.446c3.963,0,6.822-3.494,6.822-7.833C20.394,5.112,16.849,2,12.289,2" 16236 }) 16237 }); 16238 const embedWolframIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16239 viewBox: "0 0 44 44", 16240 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16241 d: "M32.59521,22.001l4.31885-4.84473-6.34131-1.38379.646-6.459-5.94336,2.61035L22,6.31934l-3.27344,5.60351L12.78418,9.3125l.645,6.458L7.08643,17.15234,11.40479,21.999,7.08594,26.84375l6.34131,1.38379-.64551,6.458,5.94287-2.60938L22,37.68066l3.27344-5.60351,5.94287,2.61035-.64551-6.458,6.34277-1.38183Zm.44385,2.75244L30.772,23.97827l-1.59558-2.07391,1.97888.735Zm-8.82147,6.1579L22.75,33.424V30.88977l1.52228-2.22168ZM18.56226,13.48816,19.819,15.09534l-2.49219-.88642L15.94037,12.337Zm6.87719.00116,2.62043-1.15027-1.38654,1.86981L24.183,15.0946Zm3.59357,2.6029-1.22546,1.7381.07525-2.73486,1.44507-1.94867ZM22,29.33008l-2.16406-3.15686L22,23.23688l2.16406,2.93634Zm-4.25458-9.582-.10528-3.836,3.60986,1.284v3.73242Zm5.00458-2.552,3.60986-1.284-.10528,3.836L22.75,20.92853Zm-7.78174-1.10559-.29352-2.94263,1.44245,1.94739.07519,2.73321Zm2.30982,5.08319,3.50817,1.18164-2.16247,2.9342-3.678-1.08447Zm2.4486,7.49285L21.25,30.88977v2.53485L19.78052,30.91Zm3.48707-6.31121,3.50817-1.18164,2.33228,3.03137-3.678,1.08447Zm10.87219-4.28113-2.714,3.04529L28.16418,19.928l1.92176-2.72565ZM24.06036,12.81769l-2.06012,2.6322-2.059-2.63318L22,9.292ZM9.91455,18.07227l4.00079-.87195,1.921,2.72735-3.20794,1.19019Zm2.93024,4.565,1.9801-.73462L13.228,23.97827l-2.26838.77429Zm-1.55591,3.58819L13.701,25.4021l2.64935.78058-2.14447.67853Zm3.64868,1.977L18.19,27.17334l.08313,3.46332L14.52979,32.2793Zm10.7876,2.43549.08447-3.464,3.25165,1.03052.407,4.07684Zm4.06824-3.77478-2.14545-.68,2.65063-.781,2.41266.825Z" 16242 }) 16243 }); 16244 const embedPocketCastsIcon = { 16245 foreground: '#f43e37', 16246 src: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.SVG, { 16247 width: "24", 16248 height: "24", 16249 viewBox: "0 0 24 24", 16250 fill: "none", 16251 xmlns: "http://www.w3.org/2000/svg", 16252 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16253 fillRule: "evenodd", 16254 clipRule: "evenodd", 16255 d: "M24,12A12,12,0,1,1,12,0,12,12,0,0,1,24,12Z" 16256 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16257 fillRule: "evenodd", 16258 clipRule: "evenodd", 16259 d: "M2.67,12a9.33,9.33,0,0,1,18.66,0H19a7,7,0,1,0-7,7v2.33A9.33,9.33,0,0,1,2.67,12ZM12,17.6A5.6,5.6,0,1,1,17.6,12h-2A3.56,3.56,0,1,0,12,15.56Z", 16260 fill: "#fff" 16261 })] 16262 }) 16263 }; 16264 const embedBlueskyIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 16265 viewBox: "0 0 24 24", 16266 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 16267 fill: "#0a7aff", 16268 d: "M6.3,4.2c2.3,1.7,4.8,5.3,5.7,7.2.9-1.9,3.4-5.4,5.7-7.2,1.7-1.3,4.3-2.2,4.3.9s-.4,5.2-.6,5.9c-.7,2.6-3.3,3.2-5.6,2.8,4,.7,5.1,3,2.9,5.3-5,5.2-6.7-2.8-6.7-2.8,0,0-1.7,8-6.7,2.8-2.2-2.3-1.2-4.6,2.9-5.3-2.3.4-4.9-.3-5.6-2.8-.2-.7-.6-5.3-.6-5.9,0-3.1,2.7-2.1,4.3-.9h0Z" 16269 }) 16270 }); 16271 16272 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/embed-loading.js 16273 /** 16274 * WordPress dependencies 16275 */ 16276 16277 16278 const EmbedLoading = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 16279 className: "wp-block-embed is-loading", 16280 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) 16281 }); 16282 /* harmony default export */ const embed_loading = (EmbedLoading); 16283 16284 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/embed-placeholder.js 16285 /** 16286 * WordPress dependencies 16287 */ 16288 16289 16290 16291 16292 16293 const EmbedPlaceholder = ({ 16294 icon, 16295 label, 16296 value, 16297 onSubmit, 16298 onChange, 16299 cannotEmbed, 16300 fallback, 16301 tryAgain 16302 }) => { 16303 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Placeholder, { 16304 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 16305 icon: icon, 16306 showColors: true 16307 }), 16308 label: label, 16309 className: "wp-block-embed", 16310 instructions: (0,external_wp_i18n_namespaceObject.__)('Paste a link to the content you want to display on your site.'), 16311 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("form", { 16312 onSubmit: onSubmit, 16313 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalInputControl, { 16314 __next40pxDefaultSize: true, 16315 type: "url", 16316 value: value || '', 16317 className: "wp-block-embed__placeholder-input", 16318 label: label, 16319 hideLabelFromVision: true, 16320 placeholder: (0,external_wp_i18n_namespaceObject.__)('Enter URL to embed here…'), 16321 onChange: onChange 16322 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 16323 __next40pxDefaultSize: true, 16324 variant: "primary", 16325 type: "submit", 16326 children: (0,external_wp_i18n_namespaceObject._x)('Embed', 'button label') 16327 })] 16328 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 16329 className: "wp-block-embed__learn-more", 16330 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, { 16331 href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/documentation/article/embeds/'), 16332 children: (0,external_wp_i18n_namespaceObject.__)('Learn more about embeds') 16333 }) 16334 }), cannotEmbed && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { 16335 spacing: 3, 16336 className: "components-placeholder__error", 16337 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 16338 className: "components-placeholder__instructions", 16339 children: (0,external_wp_i18n_namespaceObject.__)('Sorry, this content could not be embedded.') 16340 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { 16341 expanded: false, 16342 spacing: 3, 16343 justify: "flex-start", 16344 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 16345 __next40pxDefaultSize: true, 16346 variant: "secondary", 16347 onClick: tryAgain, 16348 children: (0,external_wp_i18n_namespaceObject._x)('Try again', 'button label') 16349 }), ' ', /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 16350 __next40pxDefaultSize: true, 16351 variant: "secondary", 16352 onClick: fallback, 16353 children: (0,external_wp_i18n_namespaceObject._x)('Convert to link', 'button label') 16354 })] 16355 })] 16356 })] 16357 }); 16358 }; 16359 /* harmony default export */ const embed_placeholder = (EmbedPlaceholder); 16360 16361 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/wp-embed-preview.js 16362 /** 16363 * WordPress dependencies 16364 */ 16365 16366 16367 16368 /** @typedef {import('react').SyntheticEvent} SyntheticEvent */ 16369 16370 const attributeMap = { 16371 class: 'className', 16372 frameborder: 'frameBorder', 16373 marginheight: 'marginHeight', 16374 marginwidth: 'marginWidth' 16375 }; 16376 function WpEmbedPreview({ 16377 html 16378 }) { 16379 const ref = (0,external_wp_element_namespaceObject.useRef)(); 16380 const props = (0,external_wp_element_namespaceObject.useMemo)(() => { 16381 const doc = new window.DOMParser().parseFromString(html, 'text/html'); 16382 const iframe = doc.querySelector('iframe'); 16383 const iframeProps = {}; 16384 if (!iframe) { 16385 return iframeProps; 16386 } 16387 Array.from(iframe.attributes).forEach(({ 16388 name, 16389 value 16390 }) => { 16391 if (name === 'style') { 16392 return; 16393 } 16394 iframeProps[attributeMap[name] || name] = value; 16395 }); 16396 return iframeProps; 16397 }, [html]); 16398 (0,external_wp_element_namespaceObject.useEffect)(() => { 16399 const { 16400 ownerDocument 16401 } = ref.current; 16402 const { 16403 defaultView 16404 } = ownerDocument; 16405 16406 /** 16407 * Checks for WordPress embed events signaling the height change when 16408 * iframe content loads or iframe's window is resized. The event is 16409 * sent from WordPress core via the window.postMessage API. 16410 * 16411 * References: 16412 * window.postMessage: 16413 * https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage 16414 * WordPress core embed-template on load: 16415 * https://github.com/WordPress/WordPress/blob/HEAD/wp-includes/js/wp-embed-template.js#L143 16416 * WordPress core embed-template on resize: 16417 * https://github.com/WordPress/WordPress/blob/HEAD/wp-includes/js/wp-embed-template.js#L187 16418 * 16419 * @param {MessageEvent} event Message event. 16420 */ 16421 function resizeWPembeds({ 16422 data: { 16423 secret, 16424 message, 16425 value 16426 } = {} 16427 }) { 16428 if (message !== 'height' || secret !== props['data-secret']) { 16429 return; 16430 } 16431 ref.current.height = value; 16432 } 16433 defaultView.addEventListener('message', resizeWPembeds); 16434 return () => { 16435 defaultView.removeEventListener('message', resizeWPembeds); 16436 }; 16437 }, []); 16438 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 16439 className: "wp-block-embed__wrapper", 16440 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("iframe", { 16441 ref: (0,external_wp_compose_namespaceObject.useMergeRefs)([ref, (0,external_wp_compose_namespaceObject.useFocusableIframe)()]), 16442 title: props.title, 16443 ...props 16444 }) 16445 }); 16446 } 16447 16448 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/embed-preview.js 16449 /** 16450 * Internal dependencies 16451 */ 16452 16453 16454 /** 16455 * External dependencies 16456 */ 16457 16458 16459 /** 16460 * WordPress dependencies 16461 */ 16462 16463 16464 16465 16466 16467 16468 /** 16469 * Internal dependencies 16470 */ 16471 16472 16473 16474 16475 function EmbedPreview({ 16476 preview, 16477 previewable, 16478 url, 16479 type, 16480 isSelected, 16481 className, 16482 icon, 16483 label, 16484 insertBlocksAfter, 16485 attributes, 16486 setAttributes 16487 }) { 16488 const [interactive, setInteractive] = (0,external_wp_element_namespaceObject.useState)(false); 16489 if (!isSelected && interactive) { 16490 // We only want to change this when the block is not selected, because changing it when 16491 // the block becomes selected makes the overlap disappear too early. Hiding the overlay 16492 // happens on mouseup when the overlay is clicked. 16493 setInteractive(false); 16494 } 16495 const hideOverlay = () => { 16496 // This is called onMouseUp on the overlay. We can't respond to the `isSelected` prop 16497 // changing, because that happens on mouse down, and the overlay immediately disappears, 16498 // and the mouse event can end up in the preview content. We can't use onClick on 16499 // the overlay to hide it either, because then the editor misses the mouseup event, and 16500 // thinks we're multi-selecting blocks. 16501 setInteractive(true); 16502 }; 16503 const { 16504 scripts 16505 } = preview; 16506 const html = 'photo' === type ? getPhotoHtml(preview) : preview.html; 16507 const embedSourceUrl = (0,external_wp_url_namespaceObject.getAuthority)(url); 16508 const iframeTitle = (0,external_wp_i18n_namespaceObject.sprintf)( 16509 // translators: %s: host providing embed content e.g: www.youtube.com 16510 (0,external_wp_i18n_namespaceObject.__)('Embedded content from %s'), embedSourceUrl); 16511 const sandboxClassnames = dist_clsx(type, className, 'wp-block-embed__wrapper'); 16512 16513 // Disabled because the overlay div doesn't actually have a role or functionality 16514 // as far as the user is concerned. We're just catching the first click so that 16515 // the block can be selected without interacting with the embed preview that the overlay covers. 16516 /* eslint-disable jsx-a11y/no-static-element-interactions */ 16517 const embedWrapper = 'wp-embed' === type ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WpEmbedPreview, { 16518 html: html 16519 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 16520 className: "wp-block-embed__wrapper", 16521 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SandBox, { 16522 html: html, 16523 scripts: scripts, 16524 title: iframeTitle, 16525 type: sandboxClassnames, 16526 onFocus: hideOverlay 16527 }), !interactive && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 16528 className: "block-library-embed__interactive-overlay", 16529 onMouseUp: hideOverlay 16530 })] 16531 }); 16532 /* eslint-enable jsx-a11y/no-static-element-interactions */ 16533 16534 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 16535 className: dist_clsx(className, 'wp-block-embed', { 16536 'is-type-video': 'video' === type 16537 }), 16538 children: [previewable ? embedWrapper : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Placeholder, { 16539 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 16540 icon: icon, 16541 showColors: true 16542 }), 16543 label: label, 16544 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 16545 className: "components-placeholder__error", 16546 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 16547 href: url, 16548 children: url 16549 }) 16550 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 16551 className: "components-placeholder__error", 16552 children: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: host providing embed content e.g: www.youtube.com */ 16553 (0,external_wp_i18n_namespaceObject.__)("Embedded content from %s can't be previewed in the editor."), embedSourceUrl) 16554 })] 16555 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Caption, { 16556 attributes: attributes, 16557 setAttributes: setAttributes, 16558 isSelected: isSelected, 16559 insertBlocksAfter: insertBlocksAfter, 16560 label: (0,external_wp_i18n_namespaceObject.__)('Embed caption text'), 16561 showToolbarButton: isSelected 16562 })] 16563 }); 16564 } 16565 16566 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/edit.js 16567 /* wp:polyfill */ 16568 /** 16569 * Internal dependencies 16570 */ 16571 16572 16573 16574 16575 16576 16577 16578 /** 16579 * External dependencies 16580 */ 16581 16582 16583 /** 16584 * WordPress dependencies 16585 */ 16586 16587 16588 16589 16590 16591 16592 16593 16594 16595 16596 const EmbedEdit = props => { 16597 const { 16598 attributes: { 16599 providerNameSlug, 16600 previewable, 16601 responsive, 16602 url: attributesUrl 16603 }, 16604 attributes, 16605 isSelected, 16606 onReplace, 16607 setAttributes, 16608 insertBlocksAfter, 16609 onFocus 16610 } = props; 16611 const defaultEmbedInfo = { 16612 title: (0,external_wp_i18n_namespaceObject._x)('Embed', 'block title'), 16613 icon: embedContentIcon 16614 }; 16615 const { 16616 icon, 16617 title 16618 } = getEmbedInfoByProvider(providerNameSlug) || defaultEmbedInfo; 16619 const [url, setURL] = (0,external_wp_element_namespaceObject.useState)(attributesUrl); 16620 const [isEditingURL, setIsEditingURL] = (0,external_wp_element_namespaceObject.useState)(false); 16621 const { 16622 invalidateResolution 16623 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 16624 const { 16625 preview, 16626 fetching, 16627 themeSupportsResponsive, 16628 cannotEmbed, 16629 hasResolved 16630 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 16631 const { 16632 getEmbedPreview, 16633 isPreviewEmbedFallback, 16634 isRequestingEmbedPreview, 16635 getThemeSupports, 16636 hasFinishedResolution 16637 } = select(external_wp_coreData_namespaceObject.store); 16638 if (!attributesUrl) { 16639 return { 16640 fetching: false, 16641 cannotEmbed: false 16642 }; 16643 } 16644 const embedPreview = getEmbedPreview(attributesUrl); 16645 const previewIsFallback = isPreviewEmbedFallback(attributesUrl); 16646 16647 // The external oEmbed provider does not exist. We got no type info and no html. 16648 const badEmbedProvider = embedPreview?.html === false && embedPreview?.type === undefined; 16649 // Some WordPress URLs that can't be embedded will cause the API to return 16650 // a valid JSON response with no HTML and `data.status` set to 404, rather 16651 // than generating a fallback response as other embeds do. 16652 const wordpressCantEmbed = embedPreview?.data?.status === 404; 16653 const validPreview = !!embedPreview && !badEmbedProvider && !wordpressCantEmbed; 16654 return { 16655 preview: validPreview ? embedPreview : undefined, 16656 fetching: isRequestingEmbedPreview(attributesUrl), 16657 themeSupportsResponsive: getThemeSupports()['responsive-embeds'], 16658 cannotEmbed: !validPreview || previewIsFallback, 16659 hasResolved: hasFinishedResolution('getEmbedPreview', [attributesUrl]) 16660 }; 16661 }, [attributesUrl]); 16662 16663 /** 16664 * Returns the attributes derived from the preview, merged with the current attributes. 16665 * 16666 * @return {Object} Merged attributes. 16667 */ 16668 const getMergedAttributes = () => getMergedAttributesWithPreview(attributes, preview, title, responsive); 16669 const toggleResponsive = () => { 16670 const { 16671 allowResponsive, 16672 className 16673 } = attributes; 16674 const { 16675 html 16676 } = preview; 16677 const newAllowResponsive = !allowResponsive; 16678 setAttributes({ 16679 allowResponsive: newAllowResponsive, 16680 className: getClassNames(html, className, responsive && newAllowResponsive) 16681 }); 16682 }; 16683 (0,external_wp_element_namespaceObject.useEffect)(() => { 16684 if (preview?.html || !cannotEmbed || !hasResolved) { 16685 return; 16686 } 16687 16688 // At this stage, we're not fetching the preview and know it can't be embedded, 16689 // so try removing any trailing slash, and resubmit. 16690 const newURL = attributesUrl.replace(/\/$/, ''); 16691 setURL(newURL); 16692 setIsEditingURL(false); 16693 setAttributes({ 16694 url: newURL 16695 }); 16696 }, [preview?.html, attributesUrl, cannotEmbed, hasResolved, setAttributes]); 16697 16698 // Try a different provider in case the embed url is not supported. 16699 (0,external_wp_element_namespaceObject.useEffect)(() => { 16700 if (!cannotEmbed || fetching || !url) { 16701 return; 16702 } 16703 16704 // Until X provider is supported in WordPress, as a workaround we use Twitter provider. 16705 if ((0,external_wp_url_namespaceObject.getAuthority)(url) === 'x.com') { 16706 const newURL = new URL(url); 16707 newURL.host = 'twitter.com'; 16708 setAttributes({ 16709 url: newURL.toString() 16710 }); 16711 } 16712 }, [url, cannotEmbed, fetching, setAttributes]); 16713 16714 // Handle incoming preview. 16715 (0,external_wp_element_namespaceObject.useEffect)(() => { 16716 if (preview && !isEditingURL) { 16717 // When obtaining an incoming preview, 16718 // we set the attributes derived from the preview data. 16719 const mergedAttributes = getMergedAttributes(); 16720 setAttributes(mergedAttributes); 16721 if (onReplace) { 16722 const upgradedBlock = createUpgradedEmbedBlock(props, mergedAttributes); 16723 if (upgradedBlock) { 16724 onReplace(upgradedBlock); 16725 } 16726 } 16727 } 16728 }, [preview, isEditingURL]); 16729 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 16730 if (fetching) { 16731 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.View, { 16732 ...blockProps, 16733 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(embed_loading, {}) 16734 }); 16735 } 16736 16737 // translators: %s: type of embed e.g: "YouTube", "Twitter", etc. "Embed" is used when no specific type exists 16738 const label = (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('%s URL'), title); 16739 16740 // No preview, or we can't embed the current URL, or we've clicked the edit button. 16741 const showEmbedPlaceholder = !preview || cannotEmbed || isEditingURL; 16742 if (showEmbedPlaceholder) { 16743 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.View, { 16744 ...blockProps, 16745 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(embed_placeholder, { 16746 icon: icon, 16747 label: label, 16748 onFocus: onFocus, 16749 onSubmit: event => { 16750 if (event) { 16751 event.preventDefault(); 16752 } 16753 16754 // If the embed URL was changed, we need to reset the aspect ratio class. 16755 // To do this we have to remove the existing ratio class so it can be recalculated. 16756 const blockClass = removeAspectRatioClasses(attributes.className); 16757 setIsEditingURL(false); 16758 setAttributes({ 16759 url, 16760 className: blockClass 16761 }); 16762 }, 16763 value: url, 16764 cannotEmbed: cannotEmbed, 16765 onChange: value => setURL(value), 16766 fallback: () => fallback(url, onReplace), 16767 tryAgain: () => { 16768 invalidateResolution('getEmbedPreview', [url]); 16769 } 16770 }) 16771 }); 16772 } 16773 16774 // Even though we set attributes that get derived from the preview, 16775 // we don't access them directly because for the initial render, 16776 // the `setAttributes` call will not have taken effect. If we're 16777 // rendering responsive content, setting the responsive classes 16778 // after the preview has been rendered can result in unwanted 16779 // clipping or scrollbars. The `getAttributesFromPreview` function 16780 // that `getMergedAttributes` uses is memoized so that we're not 16781 // calculating them on every render. 16782 const { 16783 caption, 16784 type, 16785 allowResponsive, 16786 className: classFromPreview 16787 } = getMergedAttributes(); 16788 const className = dist_clsx(classFromPreview, props.className); 16789 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 16790 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(embed_controls, { 16791 showEditButton: preview && !cannotEmbed, 16792 themeSupportsResponsive: themeSupportsResponsive, 16793 blockSupportsResponsive: responsive, 16794 allowResponsive: allowResponsive, 16795 toggleResponsive: toggleResponsive, 16796 switchBackToURLInput: () => setIsEditingURL(true) 16797 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.View, { 16798 ...blockProps, 16799 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EmbedPreview, { 16800 preview: preview, 16801 previewable: previewable, 16802 className: className, 16803 url: url, 16804 type: type, 16805 caption: caption, 16806 onCaptionChange: value => setAttributes({ 16807 caption: value 16808 }), 16809 isSelected: isSelected, 16810 icon: icon, 16811 label: label, 16812 insertBlocksAfter: insertBlocksAfter, 16813 attributes: attributes, 16814 setAttributes: setAttributes 16815 }) 16816 })] 16817 }); 16818 }; 16819 /* harmony default export */ const embed_edit = (EmbedEdit); 16820 16821 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/save.js 16822 /** 16823 * External dependencies 16824 */ 16825 16826 16827 /** 16828 * WordPress dependencies 16829 */ 16830 16831 16832 16833 function embed_save_save({ 16834 attributes 16835 }) { 16836 const { 16837 url, 16838 caption, 16839 type, 16840 providerNameSlug 16841 } = attributes; 16842 if (!url) { 16843 return null; 16844 } 16845 const className = dist_clsx('wp-block-embed', { 16846 [`is-type-$type}`]: type, 16847 [`is-provider-$providerNameSlug}`]: providerNameSlug, 16848 [`wp-block-embed-$providerNameSlug}`]: providerNameSlug 16849 }); 16850 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 16851 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 16852 className 16853 }), 16854 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 16855 className: "wp-block-embed__wrapper", 16856 children: `\n$url}\n` /* URL needs to be on its own line. */ 16857 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 16858 className: (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('caption'), 16859 tagName: "figcaption", 16860 value: caption 16861 })] 16862 }); 16863 } 16864 16865 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/transforms.js 16866 /** 16867 * WordPress dependencies 16868 */ 16869 16870 16871 /** 16872 * Internal dependencies 16873 */ 16874 const transforms_metadata = { 16875 $schema: "https://schemas.wp.org/trunk/block.json", 16876 apiVersion: 3, 16877 name: "core/embed", 16878 title: "Embed", 16879 category: "embed", 16880 description: "Add a block that displays content pulled from other sites, like Twitter or YouTube.", 16881 textdomain: "default", 16882 attributes: { 16883 url: { 16884 type: "string", 16885 role: "content" 16886 }, 16887 caption: { 16888 type: "rich-text", 16889 source: "rich-text", 16890 selector: "figcaption", 16891 role: "content" 16892 }, 16893 type: { 16894 type: "string", 16895 role: "content" 16896 }, 16897 providerNameSlug: { 16898 type: "string", 16899 role: "content" 16900 }, 16901 allowResponsive: { 16902 type: "boolean", 16903 "default": true 16904 }, 16905 responsive: { 16906 type: "boolean", 16907 "default": false, 16908 role: "content" 16909 }, 16910 previewable: { 16911 type: "boolean", 16912 "default": true, 16913 role: "content" 16914 } 16915 }, 16916 supports: { 16917 align: true, 16918 spacing: { 16919 margin: true 16920 }, 16921 interactivity: { 16922 clientNavigation: true 16923 } 16924 }, 16925 editorStyle: "wp-block-embed-editor", 16926 style: "wp-block-embed" 16927 }; 16928 const { 16929 name: EMBED_BLOCK 16930 } = transforms_metadata; 16931 16932 /** 16933 * Default transforms for generic embeds. 16934 */ 16935 const embed_transforms_transforms = { 16936 from: [{ 16937 type: 'raw', 16938 isMatch: node => node.nodeName === 'P' && /^\s*(https?:\/\/\S+)\s*$/i.test(node.textContent) && node.textContent?.match(/https/gi)?.length === 1, 16939 transform: node => { 16940 return (0,external_wp_blocks_namespaceObject.createBlock)(EMBED_BLOCK, { 16941 url: node.textContent.trim() 16942 }); 16943 } 16944 }], 16945 to: [{ 16946 type: 'block', 16947 blocks: ['core/paragraph'], 16948 isMatch: ({ 16949 url 16950 }) => !!url, 16951 transform: ({ 16952 url, 16953 caption 16954 }) => { 16955 let value = `<a href="$url}">$url}</a>`; 16956 if (caption?.trim()) { 16957 value += `<br />$caption}`; 16958 } 16959 return (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 16960 content: value 16961 }); 16962 } 16963 }] 16964 }; 16965 /* harmony default export */ const embed_transforms = (embed_transforms_transforms); 16966 16967 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/variations.js 16968 /** 16969 * WordPress dependencies 16970 */ 16971 16972 16973 /** 16974 * Internal dependencies 16975 */ 16976 16977 16978 /** @typedef {import('@wordpress/blocks').WPBlockVariation} WPBlockVariation */ 16979 16980 function getTitle(providerName) { 16981 return (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: provider name */ 16982 (0,external_wp_i18n_namespaceObject.__)('%s Embed'), providerName); 16983 } 16984 16985 /** 16986 * The embed provider services. 16987 * 16988 * @type {WPBlockVariation[]} 16989 */ 16990 const embed_variations_variations = [{ 16991 name: 'twitter', 16992 title: getTitle('Twitter'), 16993 icon: embedTwitterIcon, 16994 keywords: ['tweet', (0,external_wp_i18n_namespaceObject.__)('social')], 16995 description: (0,external_wp_i18n_namespaceObject.__)('Embed a tweet.'), 16996 patterns: [/^https?:\/\/(www\.)?twitter\.com\/.+/i], 16997 attributes: { 16998 providerNameSlug: 'twitter', 16999 responsive: true 17000 } 17001 }, { 17002 name: 'youtube', 17003 title: getTitle('YouTube'), 17004 icon: embedYouTubeIcon, 17005 keywords: [(0,external_wp_i18n_namespaceObject.__)('music'), (0,external_wp_i18n_namespaceObject.__)('video')], 17006 description: (0,external_wp_i18n_namespaceObject.__)('Embed a YouTube video.'), 17007 patterns: [/^https?:\/\/((m|www)\.)?youtube\.com\/.+/i, /^https?:\/\/youtu\.be\/.+/i], 17008 attributes: { 17009 providerNameSlug: 'youtube', 17010 responsive: true 17011 } 17012 }, { 17013 // Deprecate Facebook Embed per FB policy 17014 // See: https://developers.facebook.com/docs/plugins/oembed-legacy 17015 name: 'facebook', 17016 title: getTitle('Facebook'), 17017 icon: embedFacebookIcon, 17018 keywords: [(0,external_wp_i18n_namespaceObject.__)('social')], 17019 description: (0,external_wp_i18n_namespaceObject.__)('Embed a Facebook post.'), 17020 scope: ['block'], 17021 patterns: [], 17022 attributes: { 17023 providerNameSlug: 'facebook', 17024 previewable: false, 17025 responsive: true 17026 } 17027 }, { 17028 // Deprecate Instagram per FB policy 17029 // See: https://developers.facebook.com/docs/instagram/oembed-legacy 17030 name: 'instagram', 17031 title: getTitle('Instagram'), 17032 icon: embedInstagramIcon, 17033 keywords: [(0,external_wp_i18n_namespaceObject.__)('image'), (0,external_wp_i18n_namespaceObject.__)('social')], 17034 description: (0,external_wp_i18n_namespaceObject.__)('Embed an Instagram post.'), 17035 scope: ['block'], 17036 patterns: [], 17037 attributes: { 17038 providerNameSlug: 'instagram', 17039 responsive: true 17040 } 17041 }, { 17042 name: 'wordpress', 17043 title: getTitle('WordPress'), 17044 icon: embedWordPressIcon, 17045 keywords: [(0,external_wp_i18n_namespaceObject.__)('post'), (0,external_wp_i18n_namespaceObject.__)('blog')], 17046 description: (0,external_wp_i18n_namespaceObject.__)('Embed a WordPress post.'), 17047 attributes: { 17048 providerNameSlug: 'wordpress' 17049 } 17050 }, { 17051 name: 'soundcloud', 17052 title: getTitle('SoundCloud'), 17053 icon: embedAudioIcon, 17054 keywords: [(0,external_wp_i18n_namespaceObject.__)('music'), (0,external_wp_i18n_namespaceObject.__)('audio')], 17055 description: (0,external_wp_i18n_namespaceObject.__)('Embed SoundCloud content.'), 17056 patterns: [/^https?:\/\/(www\.)?soundcloud\.com\/.+/i], 17057 attributes: { 17058 providerNameSlug: 'soundcloud', 17059 responsive: true 17060 } 17061 }, { 17062 name: 'spotify', 17063 title: getTitle('Spotify'), 17064 icon: embedSpotifyIcon, 17065 keywords: [(0,external_wp_i18n_namespaceObject.__)('music'), (0,external_wp_i18n_namespaceObject.__)('audio')], 17066 description: (0,external_wp_i18n_namespaceObject.__)('Embed Spotify content.'), 17067 patterns: [/^https?:\/\/(open|play)\.spotify\.com\/.+/i], 17068 attributes: { 17069 providerNameSlug: 'spotify', 17070 responsive: true 17071 } 17072 }, { 17073 name: 'flickr', 17074 title: getTitle('Flickr'), 17075 icon: embedFlickrIcon, 17076 keywords: [(0,external_wp_i18n_namespaceObject.__)('image')], 17077 description: (0,external_wp_i18n_namespaceObject.__)('Embed Flickr content.'), 17078 patterns: [/^https?:\/\/(www\.)?flickr\.com\/.+/i, /^https?:\/\/flic\.kr\/.+/i], 17079 attributes: { 17080 providerNameSlug: 'flickr', 17081 responsive: true 17082 } 17083 }, { 17084 name: 'vimeo', 17085 title: getTitle('Vimeo'), 17086 icon: embedVimeoIcon, 17087 keywords: [(0,external_wp_i18n_namespaceObject.__)('video')], 17088 description: (0,external_wp_i18n_namespaceObject.__)('Embed a Vimeo video.'), 17089 patterns: [/^https?:\/\/(www\.)?vimeo\.com\/.+/i], 17090 attributes: { 17091 providerNameSlug: 'vimeo', 17092 responsive: true 17093 } 17094 }, { 17095 name: 'animoto', 17096 title: getTitle('Animoto'), 17097 icon: embedAnimotoIcon, 17098 description: (0,external_wp_i18n_namespaceObject.__)('Embed an Animoto video.'), 17099 patterns: [/^https?:\/\/(www\.)?(animoto|video214)\.com\/.+/i], 17100 attributes: { 17101 providerNameSlug: 'animoto', 17102 responsive: true 17103 } 17104 }, { 17105 name: 'cloudup', 17106 title: getTitle('Cloudup'), 17107 icon: embedContentIcon, 17108 description: (0,external_wp_i18n_namespaceObject.__)('Embed Cloudup content.'), 17109 patterns: [/^https?:\/\/cloudup\.com\/.+/i], 17110 attributes: { 17111 providerNameSlug: 'cloudup', 17112 responsive: true 17113 } 17114 }, { 17115 // Deprecated since CollegeHumor content is now powered by YouTube. 17116 name: 'collegehumor', 17117 title: getTitle('CollegeHumor'), 17118 icon: embedVideoIcon, 17119 description: (0,external_wp_i18n_namespaceObject.__)('Embed CollegeHumor content.'), 17120 scope: ['block'], 17121 patterns: [], 17122 attributes: { 17123 providerNameSlug: 'collegehumor', 17124 responsive: true 17125 } 17126 }, { 17127 name: 'crowdsignal', 17128 title: getTitle('Crowdsignal'), 17129 icon: embedContentIcon, 17130 keywords: ['polldaddy', (0,external_wp_i18n_namespaceObject.__)('survey')], 17131 description: (0,external_wp_i18n_namespaceObject.__)('Embed Crowdsignal (formerly Polldaddy) content.'), 17132 patterns: [/^https?:\/\/((.+\.)?polldaddy\.com|poll\.fm|.+\.crowdsignal\.net|.+\.survey\.fm)\/.+/i], 17133 attributes: { 17134 providerNameSlug: 'crowdsignal', 17135 responsive: true 17136 } 17137 }, { 17138 name: 'dailymotion', 17139 title: getTitle('Dailymotion'), 17140 icon: embedDailymotionIcon, 17141 keywords: [(0,external_wp_i18n_namespaceObject.__)('video')], 17142 description: (0,external_wp_i18n_namespaceObject.__)('Embed a Dailymotion video.'), 17143 patterns: [/^https?:\/\/(www\.)?dailymotion\.com\/.+/i], 17144 attributes: { 17145 providerNameSlug: 'dailymotion', 17146 responsive: true 17147 } 17148 }, { 17149 name: 'imgur', 17150 title: getTitle('Imgur'), 17151 icon: embedPhotoIcon, 17152 description: (0,external_wp_i18n_namespaceObject.__)('Embed Imgur content.'), 17153 patterns: [/^https?:\/\/(.+\.)?imgur\.com\/.+/i], 17154 attributes: { 17155 providerNameSlug: 'imgur', 17156 responsive: true 17157 } 17158 }, { 17159 name: 'issuu', 17160 title: getTitle('Issuu'), 17161 icon: embedContentIcon, 17162 description: (0,external_wp_i18n_namespaceObject.__)('Embed Issuu content.'), 17163 patterns: [/^https?:\/\/(www\.)?issuu\.com\/.+/i], 17164 attributes: { 17165 providerNameSlug: 'issuu', 17166 responsive: true 17167 } 17168 }, { 17169 name: 'kickstarter', 17170 title: getTitle('Kickstarter'), 17171 icon: embedContentIcon, 17172 description: (0,external_wp_i18n_namespaceObject.__)('Embed Kickstarter content.'), 17173 patterns: [/^https?:\/\/(www\.)?kickstarter\.com\/.+/i, /^https?:\/\/kck\.st\/.+/i], 17174 attributes: { 17175 providerNameSlug: 'kickstarter', 17176 responsive: true 17177 } 17178 }, { 17179 name: 'mixcloud', 17180 title: getTitle('Mixcloud'), 17181 icon: embedAudioIcon, 17182 keywords: [(0,external_wp_i18n_namespaceObject.__)('music'), (0,external_wp_i18n_namespaceObject.__)('audio')], 17183 description: (0,external_wp_i18n_namespaceObject.__)('Embed Mixcloud content.'), 17184 patterns: [/^https?:\/\/(www\.)?mixcloud\.com\/.+/i], 17185 attributes: { 17186 providerNameSlug: 'mixcloud', 17187 responsive: true 17188 } 17189 }, { 17190 name: 'pocket-casts', 17191 title: getTitle('Pocket Casts'), 17192 icon: embedPocketCastsIcon, 17193 keywords: [(0,external_wp_i18n_namespaceObject.__)('podcast'), (0,external_wp_i18n_namespaceObject.__)('audio')], 17194 description: (0,external_wp_i18n_namespaceObject.__)('Embed a podcast player from Pocket Casts.'), 17195 patterns: [/^https:\/\/pca.st\/\w+/i], 17196 attributes: { 17197 providerNameSlug: 'pocket-casts', 17198 responsive: true 17199 } 17200 }, { 17201 name: 'reddit', 17202 title: getTitle('Reddit'), 17203 icon: embedRedditIcon, 17204 description: (0,external_wp_i18n_namespaceObject.__)('Embed a Reddit thread.'), 17205 patterns: [/^https?:\/\/(www\.)?reddit\.com\/.+/i], 17206 attributes: { 17207 providerNameSlug: 'reddit', 17208 responsive: true 17209 } 17210 }, { 17211 name: 'reverbnation', 17212 title: getTitle('ReverbNation'), 17213 icon: embedAudioIcon, 17214 description: (0,external_wp_i18n_namespaceObject.__)('Embed ReverbNation content.'), 17215 patterns: [/^https?:\/\/(www\.)?reverbnation\.com\/.+/i], 17216 attributes: { 17217 providerNameSlug: 'reverbnation', 17218 responsive: true 17219 } 17220 }, { 17221 name: 'screencast', 17222 title: getTitle('Screencast'), 17223 icon: embedVideoIcon, 17224 description: (0,external_wp_i18n_namespaceObject.__)('Embed Screencast content.'), 17225 patterns: [/^https?:\/\/(www\.)?screencast\.com\/.+/i], 17226 attributes: { 17227 providerNameSlug: 'screencast', 17228 responsive: true 17229 } 17230 }, { 17231 name: 'scribd', 17232 title: getTitle('Scribd'), 17233 icon: embedContentIcon, 17234 description: (0,external_wp_i18n_namespaceObject.__)('Embed Scribd content.'), 17235 patterns: [/^https?:\/\/(www\.)?scribd\.com\/.+/i], 17236 attributes: { 17237 providerNameSlug: 'scribd', 17238 responsive: true 17239 } 17240 }, { 17241 name: 'smugmug', 17242 title: getTitle('SmugMug'), 17243 icon: embedPhotoIcon, 17244 description: (0,external_wp_i18n_namespaceObject.__)('Embed SmugMug content.'), 17245 patterns: [/^https?:\/\/(.+\.)?smugmug\.com\/.*/i], 17246 attributes: { 17247 providerNameSlug: 'smugmug', 17248 previewable: false, 17249 responsive: true 17250 } 17251 }, { 17252 name: 'speaker-deck', 17253 title: getTitle('Speaker Deck'), 17254 icon: embedContentIcon, 17255 description: (0,external_wp_i18n_namespaceObject.__)('Embed Speaker Deck content.'), 17256 patterns: [/^https?:\/\/(www\.)?speakerdeck\.com\/.+/i], 17257 attributes: { 17258 providerNameSlug: 'speaker-deck', 17259 responsive: true 17260 } 17261 }, { 17262 name: 'tiktok', 17263 title: getTitle('TikTok'), 17264 icon: embedVideoIcon, 17265 keywords: [(0,external_wp_i18n_namespaceObject.__)('video')], 17266 description: (0,external_wp_i18n_namespaceObject.__)('Embed a TikTok video.'), 17267 patterns: [/^https?:\/\/(www\.)?tiktok\.com\/.+/i], 17268 attributes: { 17269 providerNameSlug: 'tiktok', 17270 responsive: true 17271 } 17272 }, { 17273 name: 'ted', 17274 title: getTitle('TED'), 17275 icon: embedVideoIcon, 17276 description: (0,external_wp_i18n_namespaceObject.__)('Embed a TED video.'), 17277 patterns: [/^https?:\/\/(www\.|embed\.)?ted\.com\/.+/i], 17278 attributes: { 17279 providerNameSlug: 'ted', 17280 responsive: true 17281 } 17282 }, { 17283 name: 'tumblr', 17284 title: getTitle('Tumblr'), 17285 icon: embedTumblrIcon, 17286 keywords: [(0,external_wp_i18n_namespaceObject.__)('social')], 17287 description: (0,external_wp_i18n_namespaceObject.__)('Embed a Tumblr post.'), 17288 patterns: [/^https?:\/\/(.+)\.tumblr\.com\/.+/i], 17289 attributes: { 17290 providerNameSlug: 'tumblr', 17291 responsive: true 17292 } 17293 }, { 17294 name: 'videopress', 17295 title: getTitle('VideoPress'), 17296 icon: embedVideoIcon, 17297 keywords: [(0,external_wp_i18n_namespaceObject.__)('video')], 17298 description: (0,external_wp_i18n_namespaceObject.__)('Embed a VideoPress video.'), 17299 patterns: [/^https?:\/\/videopress\.com\/.+/i], 17300 attributes: { 17301 providerNameSlug: 'videopress', 17302 responsive: true 17303 } 17304 }, { 17305 name: 'wordpress-tv', 17306 title: getTitle('WordPress.tv'), 17307 icon: embedVideoIcon, 17308 description: (0,external_wp_i18n_namespaceObject.__)('Embed a WordPress.tv video.'), 17309 patterns: [/^https?:\/\/wordpress\.tv\/.+/i], 17310 attributes: { 17311 providerNameSlug: 'wordpress-tv', 17312 responsive: true 17313 } 17314 }, { 17315 name: 'amazon-kindle', 17316 title: getTitle('Amazon Kindle'), 17317 icon: embedAmazonIcon, 17318 keywords: [(0,external_wp_i18n_namespaceObject.__)('ebook')], 17319 description: (0,external_wp_i18n_namespaceObject.__)('Embed Amazon Kindle content.'), 17320 patterns: [/^https?:\/\/([a-z0-9-]+\.)?(amazon|amzn)(\.[a-z]{2,4})+\/.+/i, /^https?:\/\/(www\.)?(a\.co|z\.cn)\/.+/i], 17321 attributes: { 17322 providerNameSlug: 'amazon-kindle' 17323 } 17324 }, { 17325 name: 'pinterest', 17326 title: getTitle('Pinterest'), 17327 icon: embedPinterestIcon, 17328 keywords: [(0,external_wp_i18n_namespaceObject.__)('social'), (0,external_wp_i18n_namespaceObject.__)('bookmark')], 17329 description: (0,external_wp_i18n_namespaceObject.__)('Embed Pinterest pins, boards, and profiles.'), 17330 patterns: [/^https?:\/\/([a-z]{2}|www)\.pinterest\.com(\.(au|mx))?\/.*/i], 17331 attributes: { 17332 providerNameSlug: 'pinterest' 17333 } 17334 }, { 17335 name: 'wolfram-cloud', 17336 title: getTitle('Wolfram'), 17337 icon: embedWolframIcon, 17338 description: (0,external_wp_i18n_namespaceObject.__)('Embed Wolfram notebook content.'), 17339 patterns: [/^https?:\/\/(www\.)?wolframcloud\.com\/obj\/.+/i], 17340 attributes: { 17341 providerNameSlug: 'wolfram-cloud', 17342 responsive: true 17343 } 17344 }, { 17345 name: 'bluesky', 17346 title: getTitle('Bluesky'), 17347 icon: embedBlueskyIcon, 17348 description: (0,external_wp_i18n_namespaceObject.__)('Embed a Bluesky post.'), 17349 patterns: [/^https?:\/\/bsky\.app\/profile\/.+\/post\/.+/i], 17350 attributes: { 17351 providerNameSlug: 'bluesky' 17352 } 17353 }]; 17354 17355 /** 17356 * Add `isActive` function to all `embed` variations, if not defined. 17357 * `isActive` function is used to find a variation match from a created 17358 * Block by providing its attributes. 17359 */ 17360 embed_variations_variations.forEach(variation => { 17361 if (variation.isActive) { 17362 return; 17363 } 17364 variation.isActive = (blockAttributes, variationAttributes) => blockAttributes.providerNameSlug === variationAttributes.providerNameSlug; 17365 }); 17366 /* harmony default export */ const embed_variations = (embed_variations_variations); 17367 17368 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/deprecated.js 17369 /** 17370 * External dependencies 17371 */ 17372 17373 17374 /** 17375 * Internal dependencies 17376 */ 17377 const embed_deprecated_metadata = { 17378 $schema: "https://schemas.wp.org/trunk/block.json", 17379 apiVersion: 3, 17380 name: "core/embed", 17381 title: "Embed", 17382 category: "embed", 17383 description: "Add a block that displays content pulled from other sites, like Twitter or YouTube.", 17384 textdomain: "default", 17385 attributes: { 17386 url: { 17387 type: "string", 17388 role: "content" 17389 }, 17390 caption: { 17391 type: "rich-text", 17392 source: "rich-text", 17393 selector: "figcaption", 17394 role: "content" 17395 }, 17396 type: { 17397 type: "string", 17398 role: "content" 17399 }, 17400 providerNameSlug: { 17401 type: "string", 17402 role: "content" 17403 }, 17404 allowResponsive: { 17405 type: "boolean", 17406 "default": true 17407 }, 17408 responsive: { 17409 type: "boolean", 17410 "default": false, 17411 role: "content" 17412 }, 17413 previewable: { 17414 type: "boolean", 17415 "default": true, 17416 role: "content" 17417 } 17418 }, 17419 supports: { 17420 align: true, 17421 spacing: { 17422 margin: true 17423 }, 17424 interactivity: { 17425 clientNavigation: true 17426 } 17427 }, 17428 editorStyle: "wp-block-embed-editor", 17429 style: "wp-block-embed" 17430 }; 17431 /** 17432 * WordPress dependencies 17433 */ 17434 17435 17436 17437 const { 17438 attributes: embed_deprecated_blockAttributes 17439 } = embed_deprecated_metadata; 17440 17441 // In #41140 support was added to global styles for caption elements which added a `wp-element-caption` classname 17442 // to the embed figcaption element. 17443 const deprecated_v2 = { 17444 attributes: embed_deprecated_blockAttributes, 17445 save({ 17446 attributes 17447 }) { 17448 const { 17449 url, 17450 caption, 17451 type, 17452 providerNameSlug 17453 } = attributes; 17454 if (!url) { 17455 return null; 17456 } 17457 const className = dist_clsx('wp-block-embed', { 17458 [`is-type-$type}`]: type, 17459 [`is-provider-$providerNameSlug}`]: providerNameSlug, 17460 [`wp-block-embed-$providerNameSlug}`]: providerNameSlug 17461 }); 17462 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 17463 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 17464 className 17465 }), 17466 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 17467 className: "wp-block-embed__wrapper", 17468 children: `\n$url}\n` /* URL needs to be on its own line. */ 17469 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 17470 tagName: "figcaption", 17471 value: caption 17472 })] 17473 }); 17474 } 17475 }; 17476 const embed_deprecated_v1 = { 17477 attributes: embed_deprecated_blockAttributes, 17478 save({ 17479 attributes: { 17480 url, 17481 caption, 17482 type, 17483 providerNameSlug 17484 } 17485 }) { 17486 if (!url) { 17487 return null; 17488 } 17489 const embedClassName = dist_clsx('wp-block-embed', { 17490 [`is-type-$type}`]: type, 17491 [`is-provider-$providerNameSlug}`]: providerNameSlug 17492 }); 17493 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 17494 className: embedClassName, 17495 children: [`\n$url}\n` /* URL needs to be on its own line. */, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 17496 tagName: "figcaption", 17497 value: caption 17498 })] 17499 }); 17500 } 17501 }; 17502 const embed_deprecated_deprecated = [deprecated_v2, embed_deprecated_v1]; 17503 /* harmony default export */ const embed_deprecated = (embed_deprecated_deprecated); 17504 17505 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/embed/index.js 17506 /** 17507 * Internal dependencies 17508 */ 17509 17510 17511 17512 const embed_metadata = { 17513 $schema: "https://schemas.wp.org/trunk/block.json", 17514 apiVersion: 3, 17515 name: "core/embed", 17516 title: "Embed", 17517 category: "embed", 17518 description: "Add a block that displays content pulled from other sites, like Twitter or YouTube.", 17519 textdomain: "default", 17520 attributes: { 17521 url: { 17522 type: "string", 17523 role: "content" 17524 }, 17525 caption: { 17526 type: "rich-text", 17527 source: "rich-text", 17528 selector: "figcaption", 17529 role: "content" 17530 }, 17531 type: { 17532 type: "string", 17533 role: "content" 17534 }, 17535 providerNameSlug: { 17536 type: "string", 17537 role: "content" 17538 }, 17539 allowResponsive: { 17540 type: "boolean", 17541 "default": true 17542 }, 17543 responsive: { 17544 type: "boolean", 17545 "default": false, 17546 role: "content" 17547 }, 17548 previewable: { 17549 type: "boolean", 17550 "default": true, 17551 role: "content" 17552 } 17553 }, 17554 supports: { 17555 align: true, 17556 spacing: { 17557 margin: true 17558 }, 17559 interactivity: { 17560 clientNavigation: true 17561 } 17562 }, 17563 editorStyle: "wp-block-embed-editor", 17564 style: "wp-block-embed" 17565 }; 17566 17567 17568 17569 17570 const { 17571 name: embed_name 17572 } = embed_metadata; 17573 17574 const embed_settings = { 17575 icon: embedContentIcon, 17576 edit: embed_edit, 17577 save: embed_save_save, 17578 transforms: embed_transforms, 17579 variations: embed_variations, 17580 deprecated: embed_deprecated 17581 }; 17582 const embed_init = () => initBlock({ 17583 name: embed_name, 17584 metadata: embed_metadata, 17585 settings: embed_settings 17586 }); 17587 17588 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/file.js 17589 /** 17590 * WordPress dependencies 17591 */ 17592 17593 17594 const file = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 17595 viewBox: "0 0 24 24", 17596 xmlns: "http://www.w3.org/2000/svg", 17597 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 17598 fillRule: "evenodd", 17599 clipRule: "evenodd", 17600 d: "M12.848 8a1 1 0 0 1-.914-.594l-.723-1.63a.5.5 0 0 0-.447-.276H5a.5.5 0 0 0-.5.5v11.5a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5v-9A.5.5 0 0 0 19 8h-6.152Zm.612-1.5a.5.5 0 0 1-.462-.31l-.445-1.084A2 2 0 0 0 10.763 4H5a2 2 0 0 0-2 2v11.5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-5.54Z" 17601 }) 17602 }); 17603 /* harmony default export */ const library_file = (file); 17604 17605 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/file/deprecated.js 17606 /** 17607 * External dependencies 17608 */ 17609 17610 17611 /** 17612 * WordPress dependencies 17613 */ 17614 17615 17616 17617 // Version of the file block without PR#43050 removing the translated aria-label. 17618 17619 17620 17621 const deprecated_v3 = { 17622 attributes: { 17623 id: { 17624 type: 'number' 17625 }, 17626 href: { 17627 type: 'string' 17628 }, 17629 fileId: { 17630 type: 'string', 17631 source: 'attribute', 17632 selector: 'a:not([download])', 17633 attribute: 'id' 17634 }, 17635 fileName: { 17636 type: 'string', 17637 source: 'html', 17638 selector: 'a:not([download])' 17639 }, 17640 textLinkHref: { 17641 type: 'string', 17642 source: 'attribute', 17643 selector: 'a:not([download])', 17644 attribute: 'href' 17645 }, 17646 textLinkTarget: { 17647 type: 'string', 17648 source: 'attribute', 17649 selector: 'a:not([download])', 17650 attribute: 'target' 17651 }, 17652 showDownloadButton: { 17653 type: 'boolean', 17654 default: true 17655 }, 17656 downloadButtonText: { 17657 type: 'string', 17658 source: 'html', 17659 selector: 'a[download]' 17660 }, 17661 displayPreview: { 17662 type: 'boolean' 17663 }, 17664 previewHeight: { 17665 type: 'number', 17666 default: 600 17667 } 17668 }, 17669 supports: { 17670 anchor: true, 17671 align: true 17672 }, 17673 save({ 17674 attributes 17675 }) { 17676 const { 17677 href, 17678 fileId, 17679 fileName, 17680 textLinkHref, 17681 textLinkTarget, 17682 showDownloadButton, 17683 downloadButtonText, 17684 displayPreview, 17685 previewHeight 17686 } = attributes; 17687 const pdfEmbedLabel = external_wp_blockEditor_namespaceObject.RichText.isEmpty(fileName) ? (0,external_wp_i18n_namespaceObject.__)('PDF embed') : (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: filename. */ 17688 (0,external_wp_i18n_namespaceObject.__)('Embed of %s.'), fileName); 17689 const hasFilename = !external_wp_blockEditor_namespaceObject.RichText.isEmpty(fileName); 17690 17691 // Only output an `aria-describedby` when the element it's referring to is 17692 // actually rendered. 17693 const describedById = hasFilename ? fileId : undefined; 17694 return href && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 17695 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 17696 children: [displayPreview && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 17697 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("object", { 17698 className: "wp-block-file__embed", 17699 data: href, 17700 type: "application/pdf", 17701 style: { 17702 width: '100%', 17703 height: `$previewHeight}px` 17704 }, 17705 "aria-label": pdfEmbedLabel 17706 }) 17707 }), hasFilename && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 17708 id: describedById, 17709 href: textLinkHref, 17710 target: textLinkTarget, 17711 rel: textLinkTarget ? 'noreferrer noopener' : undefined, 17712 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 17713 value: fileName 17714 }) 17715 }), showDownloadButton && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 17716 href: href, 17717 className: dist_clsx('wp-block-file__button', (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('button')), 17718 download: true, 17719 "aria-describedby": describedById, 17720 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 17721 value: downloadButtonText 17722 }) 17723 })] 17724 }); 17725 } 17726 }; 17727 17728 // In #41239 the button was made an element button which added a `wp-element-button` classname 17729 // to the download link element. 17730 const file_deprecated_v2 = { 17731 attributes: { 17732 id: { 17733 type: 'number' 17734 }, 17735 href: { 17736 type: 'string' 17737 }, 17738 fileId: { 17739 type: 'string', 17740 source: 'attribute', 17741 selector: 'a:not([download])', 17742 attribute: 'id' 17743 }, 17744 fileName: { 17745 type: 'string', 17746 source: 'html', 17747 selector: 'a:not([download])' 17748 }, 17749 textLinkHref: { 17750 type: 'string', 17751 source: 'attribute', 17752 selector: 'a:not([download])', 17753 attribute: 'href' 17754 }, 17755 textLinkTarget: { 17756 type: 'string', 17757 source: 'attribute', 17758 selector: 'a:not([download])', 17759 attribute: 'target' 17760 }, 17761 showDownloadButton: { 17762 type: 'boolean', 17763 default: true 17764 }, 17765 downloadButtonText: { 17766 type: 'string', 17767 source: 'html', 17768 selector: 'a[download]' 17769 }, 17770 displayPreview: { 17771 type: 'boolean' 17772 }, 17773 previewHeight: { 17774 type: 'number', 17775 default: 600 17776 } 17777 }, 17778 supports: { 17779 anchor: true, 17780 align: true 17781 }, 17782 save({ 17783 attributes 17784 }) { 17785 const { 17786 href, 17787 fileId, 17788 fileName, 17789 textLinkHref, 17790 textLinkTarget, 17791 showDownloadButton, 17792 downloadButtonText, 17793 displayPreview, 17794 previewHeight 17795 } = attributes; 17796 const pdfEmbedLabel = external_wp_blockEditor_namespaceObject.RichText.isEmpty(fileName) ? (0,external_wp_i18n_namespaceObject.__)('PDF embed') : (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: filename. */ 17797 (0,external_wp_i18n_namespaceObject.__)('Embed of %s.'), fileName); 17798 const hasFilename = !external_wp_blockEditor_namespaceObject.RichText.isEmpty(fileName); 17799 17800 // Only output an `aria-describedby` when the element it's referring to is 17801 // actually rendered. 17802 const describedById = hasFilename ? fileId : undefined; 17803 return href && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 17804 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 17805 children: [displayPreview && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 17806 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("object", { 17807 className: "wp-block-file__embed", 17808 data: href, 17809 type: "application/pdf", 17810 style: { 17811 width: '100%', 17812 height: `$previewHeight}px` 17813 }, 17814 "aria-label": pdfEmbedLabel 17815 }) 17816 }), hasFilename && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 17817 id: describedById, 17818 href: textLinkHref, 17819 target: textLinkTarget, 17820 rel: textLinkTarget ? 'noreferrer noopener' : undefined, 17821 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 17822 value: fileName 17823 }) 17824 }), showDownloadButton && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 17825 href: href, 17826 className: "wp-block-file__button", 17827 download: true, 17828 "aria-describedby": describedById, 17829 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 17830 value: downloadButtonText 17831 }) 17832 })] 17833 }); 17834 } 17835 }; 17836 17837 // Version of the file block without PR#28062 accessibility fix. 17838 const file_deprecated_v1 = { 17839 attributes: { 17840 id: { 17841 type: 'number' 17842 }, 17843 href: { 17844 type: 'string' 17845 }, 17846 fileName: { 17847 type: 'string', 17848 source: 'html', 17849 selector: 'a:not([download])' 17850 }, 17851 textLinkHref: { 17852 type: 'string', 17853 source: 'attribute', 17854 selector: 'a:not([download])', 17855 attribute: 'href' 17856 }, 17857 textLinkTarget: { 17858 type: 'string', 17859 source: 'attribute', 17860 selector: 'a:not([download])', 17861 attribute: 'target' 17862 }, 17863 showDownloadButton: { 17864 type: 'boolean', 17865 default: true 17866 }, 17867 downloadButtonText: { 17868 type: 'string', 17869 source: 'html', 17870 selector: 'a[download]' 17871 }, 17872 displayPreview: { 17873 type: 'boolean' 17874 }, 17875 previewHeight: { 17876 type: 'number', 17877 default: 600 17878 } 17879 }, 17880 supports: { 17881 anchor: true, 17882 align: true 17883 }, 17884 save({ 17885 attributes 17886 }) { 17887 const { 17888 href, 17889 fileName, 17890 textLinkHref, 17891 textLinkTarget, 17892 showDownloadButton, 17893 downloadButtonText, 17894 displayPreview, 17895 previewHeight 17896 } = attributes; 17897 const pdfEmbedLabel = external_wp_blockEditor_namespaceObject.RichText.isEmpty(fileName) ? (0,external_wp_i18n_namespaceObject.__)('PDF embed') : (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: filename. */ 17898 (0,external_wp_i18n_namespaceObject.__)('Embed of %s.'), fileName); 17899 return href && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 17900 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 17901 children: [displayPreview && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 17902 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("object", { 17903 className: "wp-block-file__embed", 17904 data: href, 17905 type: "application/pdf", 17906 style: { 17907 width: '100%', 17908 height: `$previewHeight}px` 17909 }, 17910 "aria-label": pdfEmbedLabel 17911 }) 17912 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(fileName) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 17913 href: textLinkHref, 17914 target: textLinkTarget, 17915 rel: textLinkTarget ? 'noreferrer noopener' : undefined, 17916 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 17917 value: fileName 17918 }) 17919 }), showDownloadButton && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 17920 href: href, 17921 className: "wp-block-file__button", 17922 download: true, 17923 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 17924 value: downloadButtonText 17925 }) 17926 })] 17927 }); 17928 } 17929 }; 17930 const file_deprecated_deprecated = [deprecated_v3, file_deprecated_v2, file_deprecated_v1]; 17931 /* harmony default export */ const file_deprecated = (file_deprecated_deprecated); 17932 17933 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/file/inspector.js 17934 /** 17935 * WordPress dependencies 17936 */ 17937 17938 17939 17940 17941 /** 17942 * Internal dependencies 17943 */ 17944 17945 17946 17947 17948 function FileBlockInspector({ 17949 hrefs, 17950 openInNewWindow, 17951 showDownloadButton, 17952 changeLinkDestinationOption, 17953 changeOpenInNewWindow, 17954 changeShowDownloadButton, 17955 displayPreview, 17956 changeDisplayPreview, 17957 previewHeight, 17958 changePreviewHeight 17959 }) { 17960 const { 17961 href, 17962 textLinkHref, 17963 attachmentPage 17964 } = hrefs; 17965 let linkDestinationOptions = [{ 17966 value: href, 17967 label: (0,external_wp_i18n_namespaceObject.__)('URL') 17968 }]; 17969 if (attachmentPage) { 17970 linkDestinationOptions = [{ 17971 value: href, 17972 label: (0,external_wp_i18n_namespaceObject.__)('Media file') 17973 }, { 17974 value: attachmentPage, 17975 label: (0,external_wp_i18n_namespaceObject.__)('Attachment page') 17976 }]; 17977 } 17978 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 17979 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.InspectorControls, { 17980 children: [href.endsWith('.pdf') && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 17981 title: (0,external_wp_i18n_namespaceObject.__)('PDF settings'), 17982 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 17983 __nextHasNoMarginBottom: true, 17984 label: (0,external_wp_i18n_namespaceObject.__)('Show inline embed'), 17985 help: displayPreview ? (0,external_wp_i18n_namespaceObject.__)("Note: Most phone and tablet browsers won't display embedded PDFs.") : null, 17986 checked: !!displayPreview, 17987 onChange: changeDisplayPreview 17988 }), displayPreview && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 17989 __nextHasNoMarginBottom: true, 17990 __next40pxDefaultSize: true, 17991 label: (0,external_wp_i18n_namespaceObject.__)('Height in pixels'), 17992 min: MIN_PREVIEW_HEIGHT, 17993 max: Math.max(MAX_PREVIEW_HEIGHT, previewHeight), 17994 value: previewHeight, 17995 onChange: changePreviewHeight 17996 })] 17997 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 17998 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 17999 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 18000 __next40pxDefaultSize: true, 18001 __nextHasNoMarginBottom: true, 18002 label: (0,external_wp_i18n_namespaceObject.__)('Link to'), 18003 value: textLinkHref, 18004 options: linkDestinationOptions, 18005 onChange: changeLinkDestinationOption 18006 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 18007 __nextHasNoMarginBottom: true, 18008 label: (0,external_wp_i18n_namespaceObject.__)('Open in new tab'), 18009 checked: openInNewWindow, 18010 onChange: changeOpenInNewWindow 18011 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 18012 __nextHasNoMarginBottom: true, 18013 label: (0,external_wp_i18n_namespaceObject.__)('Show download button'), 18014 checked: showDownloadButton, 18015 onChange: changeShowDownloadButton 18016 })] 18017 })] 18018 }) 18019 }); 18020 } 18021 18022 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/file/utils/index.js 18023 /** 18024 * Uses a combination of user agent matching and feature detection to determine whether 18025 * the current browser supports rendering PDFs inline. 18026 * 18027 * @return {boolean} Whether or not the browser supports inline PDFs. 18028 */ 18029 const browserSupportsPdfs = () => { 18030 // Most mobile devices include "Mobi" in their UA. 18031 if (window.navigator.userAgent.indexOf('Mobi') > -1) { 18032 return false; 18033 } 18034 18035 // Android tablets are the noteable exception. 18036 if (window.navigator.userAgent.indexOf('Android') > -1) { 18037 return false; 18038 } 18039 18040 // iPad pretends to be a Mac. 18041 if (window.navigator.userAgent.indexOf('Macintosh') > -1 && window.navigator.maxTouchPoints && window.navigator.maxTouchPoints > 2) { 18042 return false; 18043 } 18044 18045 // IE only supports PDFs when there's an ActiveX object available for it. 18046 if (!!(window.ActiveXObject || 'ActiveXObject' in window) && !(createActiveXObject('AcroPDF.PDF') || createActiveXObject('PDF.PdfCtrl'))) { 18047 return false; 18048 } 18049 return true; 18050 }; 18051 18052 /** 18053 * Helper function for creating ActiveX objects, catching any errors that are thrown 18054 * when it's generated. 18055 * 18056 * @param {string} type The name of the ActiveX object to create. 18057 * @return {window.ActiveXObject|undefined} The generated ActiveXObject, or null if it failed. 18058 */ 18059 const createActiveXObject = type => { 18060 let ax; 18061 try { 18062 ax = new window.ActiveXObject(type); 18063 } catch (e) { 18064 ax = undefined; 18065 } 18066 return ax; 18067 }; 18068 18069 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/file/edit.js 18070 /** 18071 * External dependencies 18072 */ 18073 18074 18075 /** 18076 * WordPress dependencies 18077 */ 18078 18079 18080 18081 18082 18083 18084 18085 18086 18087 18088 18089 /** 18090 * Internal dependencies 18091 */ 18092 18093 18094 18095 18096 18097 18098 18099 const MIN_PREVIEW_HEIGHT = 200; 18100 const MAX_PREVIEW_HEIGHT = 2000; 18101 function ClipboardToolbarButton({ 18102 text, 18103 disabled 18104 }) { 18105 const { 18106 createNotice 18107 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 18108 const ref = (0,external_wp_compose_namespaceObject.useCopyToClipboard)(text, () => { 18109 createNotice('info', (0,external_wp_i18n_namespaceObject.__)('Copied URL to clipboard.'), { 18110 isDismissible: true, 18111 type: 'snackbar' 18112 }); 18113 }); 18114 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 18115 className: "components-clipboard-toolbar-button", 18116 ref: ref, 18117 disabled: disabled, 18118 children: (0,external_wp_i18n_namespaceObject.__)('Copy URL') 18119 }); 18120 } 18121 function FileEdit({ 18122 attributes, 18123 isSelected, 18124 setAttributes, 18125 clientId 18126 }) { 18127 const { 18128 id, 18129 fileName, 18130 href, 18131 textLinkHref, 18132 textLinkTarget, 18133 showDownloadButton, 18134 downloadButtonText, 18135 displayPreview, 18136 previewHeight 18137 } = attributes; 18138 const [temporaryURL, setTemporaryURL] = (0,external_wp_element_namespaceObject.useState)(attributes.blob); 18139 const { 18140 media 18141 } = (0,external_wp_data_namespaceObject.useSelect)(select => ({ 18142 media: id === undefined ? undefined : select(external_wp_coreData_namespaceObject.store).getMedia(id) 18143 }), [id]); 18144 const { 18145 createErrorNotice 18146 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 18147 const { 18148 toggleSelection, 18149 __unstableMarkNextChangeAsNotPersistent 18150 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 18151 useUploadMediaFromBlobURL({ 18152 url: temporaryURL, 18153 onChange: onSelectFile, 18154 onError: onUploadError 18155 }); 18156 18157 // Note: Handle setting a default value for `downloadButtonText` via HTML API 18158 // when it supports replacing text content for HTML tags. 18159 (0,external_wp_element_namespaceObject.useEffect)(() => { 18160 if (external_wp_blockEditor_namespaceObject.RichText.isEmpty(downloadButtonText)) { 18161 __unstableMarkNextChangeAsNotPersistent(); 18162 setAttributes({ 18163 downloadButtonText: (0,external_wp_i18n_namespaceObject._x)('Download', 'button label') 18164 }); 18165 } 18166 // Reason: This effect should only run on mount. 18167 // eslint-disable-next-line react-hooks/exhaustive-deps 18168 }, []); 18169 function onSelectFile(newMedia) { 18170 if (!newMedia || !newMedia.url) { 18171 // Reset attributes. 18172 setAttributes({ 18173 href: undefined, 18174 fileName: undefined, 18175 textLinkHref: undefined, 18176 id: undefined, 18177 fileId: undefined, 18178 displayPreview: undefined, 18179 previewHeight: undefined 18180 }); 18181 setTemporaryURL(); 18182 return; 18183 } 18184 if ((0,external_wp_blob_namespaceObject.isBlobURL)(newMedia.url)) { 18185 setTemporaryURL(newMedia.url); 18186 return; 18187 } 18188 const isPdf = newMedia.url.endsWith('.pdf'); 18189 setAttributes({ 18190 href: newMedia.url, 18191 fileName: newMedia.title, 18192 textLinkHref: newMedia.url, 18193 id: newMedia.id, 18194 displayPreview: isPdf ? true : undefined, 18195 previewHeight: isPdf ? 600 : undefined, 18196 fileId: `wp-block-file--media-$clientId}`, 18197 blob: undefined 18198 }); 18199 setTemporaryURL(); 18200 } 18201 function onUploadError(message) { 18202 setAttributes({ 18203 href: undefined 18204 }); 18205 createErrorNotice(message, { 18206 type: 'snackbar' 18207 }); 18208 } 18209 function changeLinkDestinationOption(newHref) { 18210 // Choose Media File or Attachment Page (when file is in Media Library). 18211 setAttributes({ 18212 textLinkHref: newHref 18213 }); 18214 } 18215 function changeOpenInNewWindow(newValue) { 18216 setAttributes({ 18217 textLinkTarget: newValue ? '_blank' : false 18218 }); 18219 } 18220 function changeShowDownloadButton(newValue) { 18221 setAttributes({ 18222 showDownloadButton: newValue 18223 }); 18224 } 18225 function changeDisplayPreview(newValue) { 18226 setAttributes({ 18227 displayPreview: newValue 18228 }); 18229 } 18230 function handleOnResizeStop(event, direction, elt, delta) { 18231 toggleSelection(true); 18232 const newHeight = parseInt(previewHeight + delta.height, 10); 18233 setAttributes({ 18234 previewHeight: newHeight 18235 }); 18236 } 18237 function changePreviewHeight(newValue) { 18238 const newHeight = Math.max(parseInt(newValue, 10), MIN_PREVIEW_HEIGHT); 18239 setAttributes({ 18240 previewHeight: newHeight 18241 }); 18242 } 18243 const attachmentPage = media && media.link; 18244 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 18245 className: dist_clsx(!!temporaryURL && (0,external_wp_components_namespaceObject.__unstableGetAnimateClassName)({ 18246 type: 'loading' 18247 }), { 18248 'is-transient': !!temporaryURL 18249 }) 18250 }); 18251 const displayPreviewInEditor = browserSupportsPdfs() && displayPreview; 18252 if (!href && !temporaryURL) { 18253 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 18254 ...blockProps, 18255 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaPlaceholder, { 18256 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 18257 icon: library_file 18258 }), 18259 labels: { 18260 title: (0,external_wp_i18n_namespaceObject.__)('File'), 18261 instructions: (0,external_wp_i18n_namespaceObject.__)('Upload a file or pick one from your media library.') 18262 }, 18263 onSelect: onSelectFile, 18264 onError: onUploadError, 18265 accept: "*" 18266 }) 18267 }); 18268 } 18269 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 18270 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FileBlockInspector, { 18271 hrefs: { 18272 href: href || temporaryURL, 18273 textLinkHref, 18274 attachmentPage 18275 }, 18276 openInNewWindow: !!textLinkTarget, 18277 showDownloadButton, 18278 changeLinkDestinationOption, 18279 changeOpenInNewWindow, 18280 changeShowDownloadButton, 18281 displayPreview, 18282 changeDisplayPreview, 18283 previewHeight, 18284 changePreviewHeight 18285 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 18286 group: "other", 18287 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaReplaceFlow, { 18288 mediaId: id, 18289 mediaURL: href, 18290 accept: "*", 18291 onSelect: onSelectFile, 18292 onError: onUploadError, 18293 onReset: () => onSelectFile(undefined) 18294 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ClipboardToolbarButton, { 18295 text: href, 18296 disabled: (0,external_wp_blob_namespaceObject.isBlobURL)(href) 18297 })] 18298 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 18299 ...blockProps, 18300 children: [displayPreviewInEditor && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.ResizableBox, { 18301 size: { 18302 height: previewHeight 18303 }, 18304 minHeight: MIN_PREVIEW_HEIGHT, 18305 maxHeight: MAX_PREVIEW_HEIGHT, 18306 minWidth: "100%", 18307 grid: [10, 10], 18308 enable: { 18309 top: false, 18310 right: false, 18311 bottom: true, 18312 left: false, 18313 topRight: false, 18314 bottomRight: false, 18315 bottomLeft: false, 18316 topLeft: false 18317 }, 18318 onResizeStart: () => toggleSelection(false), 18319 onResizeStop: handleOnResizeStop, 18320 showHandle: isSelected, 18321 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("object", { 18322 className: "wp-block-file__preview", 18323 data: href, 18324 type: "application/pdf", 18325 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Embed of the selected PDF file.') 18326 }), !isSelected && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 18327 className: "wp-block-file__preview-overlay" 18328 })] 18329 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 18330 className: "wp-block-file__content-wrapper", 18331 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 18332 identifier: "fileName", 18333 tagName: "a", 18334 value: fileName, 18335 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write file name…'), 18336 withoutInteractiveFormatting: true, 18337 onChange: text => setAttributes({ 18338 fileName: removeAnchorTag(text) 18339 }), 18340 href: textLinkHref 18341 }), showDownloadButton && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 18342 className: "wp-block-file__button-richtext-wrapper", 18343 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 18344 identifier: "downloadButtonText", 18345 tagName: "div" // Must be block-level or else cursor disappears. 18346 , 18347 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Download button text'), 18348 className: dist_clsx('wp-block-file__button', (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('button')), 18349 value: downloadButtonText, 18350 withoutInteractiveFormatting: true, 18351 placeholder: (0,external_wp_i18n_namespaceObject.__)('Add text…'), 18352 onChange: text => setAttributes({ 18353 downloadButtonText: removeAnchorTag(text) 18354 }) 18355 }) 18356 })] 18357 })] 18358 })] 18359 }); 18360 } 18361 /* harmony default export */ const file_edit = (FileEdit); 18362 18363 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/file/save.js 18364 /** 18365 * External dependencies 18366 */ 18367 18368 18369 /** 18370 * WordPress dependencies 18371 */ 18372 18373 18374 18375 18376 function file_save_save({ 18377 attributes 18378 }) { 18379 const { 18380 href, 18381 fileId, 18382 fileName, 18383 textLinkHref, 18384 textLinkTarget, 18385 showDownloadButton, 18386 downloadButtonText, 18387 displayPreview, 18388 previewHeight 18389 } = attributes; 18390 const pdfEmbedLabel = external_wp_blockEditor_namespaceObject.RichText.isEmpty(fileName) ? 'PDF embed' : 18391 // To do: use toPlainText, but we need ensure it's RichTextData. See 18392 // https://github.com/WordPress/gutenberg/pull/56710. 18393 fileName.toString(); 18394 const hasFilename = !external_wp_blockEditor_namespaceObject.RichText.isEmpty(fileName); 18395 18396 // Only output an `aria-describedby` when the element it's referring to is 18397 // actually rendered. 18398 const describedById = hasFilename ? fileId : undefined; 18399 return href && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 18400 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 18401 children: [displayPreview && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 18402 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("object", { 18403 className: "wp-block-file__embed", 18404 data: href, 18405 type: "application/pdf", 18406 style: { 18407 width: '100%', 18408 height: `$previewHeight}px` 18409 }, 18410 "aria-label": pdfEmbedLabel 18411 }) 18412 }), hasFilename && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 18413 id: describedById, 18414 href: textLinkHref, 18415 target: textLinkTarget, 18416 rel: textLinkTarget ? 'noreferrer noopener' : undefined, 18417 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 18418 value: fileName 18419 }) 18420 }), showDownloadButton && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 18421 href: href, 18422 className: dist_clsx('wp-block-file__button', (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('button')), 18423 download: true, 18424 "aria-describedby": describedById, 18425 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 18426 value: downloadButtonText 18427 }) 18428 })] 18429 }); 18430 } 18431 18432 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/file/transforms.js 18433 /** 18434 * WordPress dependencies 18435 */ 18436 18437 18438 18439 18440 18441 const file_transforms_transforms = { 18442 from: [{ 18443 type: 'files', 18444 isMatch(files) { 18445 return files.length > 0; 18446 }, 18447 // We define a lower priorty (higher number) than the default of 10. This 18448 // ensures that the File block is only created as a fallback. 18449 priority: 15, 18450 transform: files => { 18451 const blocks = []; 18452 files.forEach(file => { 18453 const blobURL = (0,external_wp_blob_namespaceObject.createBlobURL)(file); 18454 18455 // File will be uploaded in componentDidMount() 18456 if (file.type.startsWith('video/')) { 18457 blocks.push((0,external_wp_blocks_namespaceObject.createBlock)('core/video', { 18458 blob: (0,external_wp_blob_namespaceObject.createBlobURL)(file) 18459 })); 18460 } else if (file.type.startsWith('image/')) { 18461 blocks.push((0,external_wp_blocks_namespaceObject.createBlock)('core/image', { 18462 blob: (0,external_wp_blob_namespaceObject.createBlobURL)(file) 18463 })); 18464 } else if (file.type.startsWith('audio/')) { 18465 blocks.push((0,external_wp_blocks_namespaceObject.createBlock)('core/audio', { 18466 blob: (0,external_wp_blob_namespaceObject.createBlobURL)(file) 18467 })); 18468 } else { 18469 blocks.push((0,external_wp_blocks_namespaceObject.createBlock)('core/file', { 18470 blob: blobURL, 18471 fileName: file.name 18472 })); 18473 } 18474 }); 18475 return blocks; 18476 } 18477 }, { 18478 type: 'block', 18479 blocks: ['core/audio'], 18480 transform: attributes => { 18481 return (0,external_wp_blocks_namespaceObject.createBlock)('core/file', { 18482 href: attributes.src, 18483 fileName: attributes.caption, 18484 textLinkHref: attributes.src, 18485 id: attributes.id, 18486 anchor: attributes.anchor 18487 }); 18488 } 18489 }, { 18490 type: 'block', 18491 blocks: ['core/video'], 18492 transform: attributes => { 18493 return (0,external_wp_blocks_namespaceObject.createBlock)('core/file', { 18494 href: attributes.src, 18495 fileName: attributes.caption, 18496 textLinkHref: attributes.src, 18497 id: attributes.id, 18498 anchor: attributes.anchor 18499 }); 18500 } 18501 }, { 18502 type: 'block', 18503 blocks: ['core/image'], 18504 transform: attributes => { 18505 return (0,external_wp_blocks_namespaceObject.createBlock)('core/file', { 18506 href: attributes.url, 18507 fileName: attributes.caption || (0,external_wp_url_namespaceObject.getFilename)(attributes.url), 18508 textLinkHref: attributes.url, 18509 id: attributes.id, 18510 anchor: attributes.anchor 18511 }); 18512 } 18513 }], 18514 to: [{ 18515 type: 'block', 18516 blocks: ['core/audio'], 18517 isMatch: ({ 18518 id 18519 }) => { 18520 if (!id) { 18521 return false; 18522 } 18523 const { 18524 getMedia 18525 } = (0,external_wp_data_namespaceObject.select)(external_wp_coreData_namespaceObject.store); 18526 const media = getMedia(id); 18527 return !!media && media.mime_type.includes('audio'); 18528 }, 18529 transform: attributes => { 18530 return (0,external_wp_blocks_namespaceObject.createBlock)('core/audio', { 18531 src: attributes.href, 18532 caption: attributes.fileName, 18533 id: attributes.id, 18534 anchor: attributes.anchor 18535 }); 18536 } 18537 }, { 18538 type: 'block', 18539 blocks: ['core/video'], 18540 isMatch: ({ 18541 id 18542 }) => { 18543 if (!id) { 18544 return false; 18545 } 18546 const { 18547 getMedia 18548 } = (0,external_wp_data_namespaceObject.select)(external_wp_coreData_namespaceObject.store); 18549 const media = getMedia(id); 18550 return !!media && media.mime_type.includes('video'); 18551 }, 18552 transform: attributes => { 18553 return (0,external_wp_blocks_namespaceObject.createBlock)('core/video', { 18554 src: attributes.href, 18555 caption: attributes.fileName, 18556 id: attributes.id, 18557 anchor: attributes.anchor 18558 }); 18559 } 18560 }, { 18561 type: 'block', 18562 blocks: ['core/image'], 18563 isMatch: ({ 18564 id 18565 }) => { 18566 if (!id) { 18567 return false; 18568 } 18569 const { 18570 getMedia 18571 } = (0,external_wp_data_namespaceObject.select)(external_wp_coreData_namespaceObject.store); 18572 const media = getMedia(id); 18573 return !!media && media.mime_type.includes('image'); 18574 }, 18575 transform: attributes => { 18576 return (0,external_wp_blocks_namespaceObject.createBlock)('core/image', { 18577 url: attributes.href, 18578 caption: attributes.fileName, 18579 id: attributes.id, 18580 anchor: attributes.anchor 18581 }); 18582 } 18583 }] 18584 }; 18585 /* harmony default export */ const file_transforms = (file_transforms_transforms); 18586 18587 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/file/index.js 18588 /** 18589 * WordPress dependencies 18590 */ 18591 18592 18593 18594 /** 18595 * Internal dependencies 18596 */ 18597 18598 18599 18600 const file_metadata = { 18601 $schema: "https://schemas.wp.org/trunk/block.json", 18602 apiVersion: 3, 18603 name: "core/file", 18604 title: "File", 18605 category: "media", 18606 description: "Add a link to a downloadable file.", 18607 keywords: ["document", "pdf", "download"], 18608 textdomain: "default", 18609 attributes: { 18610 id: { 18611 type: "number" 18612 }, 18613 blob: { 18614 type: "string", 18615 role: "local" 18616 }, 18617 href: { 18618 type: "string" 18619 }, 18620 fileId: { 18621 type: "string", 18622 source: "attribute", 18623 selector: "a:not([download])", 18624 attribute: "id" 18625 }, 18626 fileName: { 18627 type: "rich-text", 18628 source: "rich-text", 18629 selector: "a:not([download])" 18630 }, 18631 textLinkHref: { 18632 type: "string", 18633 source: "attribute", 18634 selector: "a:not([download])", 18635 attribute: "href" 18636 }, 18637 textLinkTarget: { 18638 type: "string", 18639 source: "attribute", 18640 selector: "a:not([download])", 18641 attribute: "target" 18642 }, 18643 showDownloadButton: { 18644 type: "boolean", 18645 "default": true 18646 }, 18647 downloadButtonText: { 18648 type: "rich-text", 18649 source: "rich-text", 18650 selector: "a[download]" 18651 }, 18652 displayPreview: { 18653 type: "boolean" 18654 }, 18655 previewHeight: { 18656 type: "number", 18657 "default": 600 18658 } 18659 }, 18660 supports: { 18661 anchor: true, 18662 align: true, 18663 spacing: { 18664 margin: true, 18665 padding: true 18666 }, 18667 color: { 18668 gradients: true, 18669 link: true, 18670 text: false, 18671 __experimentalDefaultControls: { 18672 background: true, 18673 link: true 18674 } 18675 }, 18676 __experimentalBorder: { 18677 radius: true, 18678 color: true, 18679 width: true, 18680 style: true, 18681 __experimentalDefaultControls: { 18682 radius: true, 18683 color: true, 18684 width: true, 18685 style: true 18686 } 18687 }, 18688 interactivity: true 18689 }, 18690 editorStyle: "wp-block-file-editor", 18691 style: "wp-block-file" 18692 }; 18693 18694 18695 const { 18696 name: file_name 18697 } = file_metadata; 18698 18699 const file_settings = { 18700 icon: library_file, 18701 example: { 18702 attributes: { 18703 href: 'https://upload.wikimedia.org/wikipedia/commons/d/dd/Armstrong_Small_Step.ogg', 18704 fileName: (0,external_wp_i18n_namespaceObject._x)('Armstrong_Small_Step', 'Name of the file') 18705 } 18706 }, 18707 transforms: file_transforms, 18708 deprecated: file_deprecated, 18709 edit: file_edit, 18710 save: file_save_save 18711 }; 18712 const file_init = () => initBlock({ 18713 name: file_name, 18714 metadata: file_metadata, 18715 settings: file_settings 18716 }); 18717 18718 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form/utils.js 18719 /** 18720 * WordPress dependencies 18721 */ 18722 18723 const formSubmissionNotificationSuccess = ['core/form-submission-notification', { 18724 type: 'success' 18725 }, [['core/paragraph', { 18726 content: '<mark style="background-color:rgba(0, 0, 0, 0);color:#345C00" class="has-inline-color">' + (0,external_wp_i18n_namespaceObject.__)('Your form has been submitted successfully') + '</mark>' 18727 }]]]; 18728 const formSubmissionNotificationError = ['core/form-submission-notification', { 18729 type: 'error' 18730 }, [['core/paragraph', { 18731 content: '<mark style="background-color:rgba(0, 0, 0, 0);color:#CF2E2E" class="has-inline-color">' + (0,external_wp_i18n_namespaceObject.__)('There was an error submitting your form.') + '</mark>' 18732 }]]]; 18733 18734 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form/edit.js 18735 /** 18736 * WordPress dependencies 18737 */ 18738 18739 18740 18741 18742 18743 /** 18744 * Internal dependencies 18745 */ 18746 18747 18748 18749 18750 const form_edit_TEMPLATE = [formSubmissionNotificationSuccess, formSubmissionNotificationError, ['core/form-input', { 18751 type: 'text', 18752 label: (0,external_wp_i18n_namespaceObject.__)('Name'), 18753 required: true 18754 }], ['core/form-input', { 18755 type: 'email', 18756 label: (0,external_wp_i18n_namespaceObject.__)('Email'), 18757 required: true 18758 }], ['core/form-input', { 18759 type: 'textarea', 18760 label: (0,external_wp_i18n_namespaceObject.__)('Comment'), 18761 required: true 18762 }], ['core/form-submit-button', {}]]; 18763 const form_edit_Edit = ({ 18764 attributes, 18765 setAttributes, 18766 clientId 18767 }) => { 18768 const { 18769 action, 18770 method, 18771 email, 18772 submissionMethod 18773 } = attributes; 18774 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 18775 const { 18776 hasInnerBlocks 18777 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 18778 const { 18779 getBlock 18780 } = select(external_wp_blockEditor_namespaceObject.store); 18781 const block = getBlock(clientId); 18782 return { 18783 hasInnerBlocks: !!(block && block.innerBlocks.length) 18784 }; 18785 }, [clientId]); 18786 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 18787 template: form_edit_TEMPLATE, 18788 renderAppender: hasInnerBlocks ? undefined : external_wp_blockEditor_namespaceObject.InnerBlocks.ButtonBlockAppender 18789 }); 18790 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 18791 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 18792 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 18793 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 18794 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 18795 __nextHasNoMarginBottom: true, 18796 __next40pxDefaultSize: true, 18797 label: (0,external_wp_i18n_namespaceObject.__)('Submissions method'), 18798 options: [ 18799 // TODO: Allow plugins to add their own submission methods. 18800 { 18801 label: (0,external_wp_i18n_namespaceObject.__)('Send email'), 18802 value: 'email' 18803 }, { 18804 label: (0,external_wp_i18n_namespaceObject.__)('- Custom -'), 18805 value: 'custom' 18806 }], 18807 value: submissionMethod, 18808 onChange: value => setAttributes({ 18809 submissionMethod: value 18810 }), 18811 help: submissionMethod === 'custom' ? (0,external_wp_i18n_namespaceObject.__)('Select the method to use for form submissions. Additional options for the "custom" mode can be found in the "Advanced" section.') : (0,external_wp_i18n_namespaceObject.__)('Select the method to use for form submissions.') 18812 }), submissionMethod === 'email' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 18813 __nextHasNoMarginBottom: true, 18814 __next40pxDefaultSize: true, 18815 autoComplete: "off", 18816 label: (0,external_wp_i18n_namespaceObject.__)('Email for form submissions'), 18817 value: email, 18818 required: true, 18819 onChange: value => { 18820 setAttributes({ 18821 email: value 18822 }); 18823 setAttributes({ 18824 action: `mailto:$value}` 18825 }); 18826 setAttributes({ 18827 method: 'post' 18828 }); 18829 }, 18830 help: (0,external_wp_i18n_namespaceObject.__)('The email address where form submissions will be sent. Separate multiple email addresses with a comma.') 18831 })] 18832 }) 18833 }), submissionMethod !== 'email' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.InspectorControls, { 18834 group: "advanced", 18835 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 18836 __next40pxDefaultSize: true, 18837 __nextHasNoMarginBottom: true, 18838 label: (0,external_wp_i18n_namespaceObject.__)('Method'), 18839 options: [{ 18840 label: 'Get', 18841 value: 'get' 18842 }, { 18843 label: 'Post', 18844 value: 'post' 18845 }], 18846 value: method, 18847 onChange: value => setAttributes({ 18848 method: value 18849 }), 18850 help: (0,external_wp_i18n_namespaceObject.__)('Select the method to use for form submissions.') 18851 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 18852 __next40pxDefaultSize: true, 18853 __nextHasNoMarginBottom: true, 18854 autoComplete: "off", 18855 label: (0,external_wp_i18n_namespaceObject.__)('Form action'), 18856 value: action, 18857 onChange: newVal => { 18858 setAttributes({ 18859 action: newVal 18860 }); 18861 }, 18862 help: (0,external_wp_i18n_namespaceObject.__)('The URL where the form should be submitted.') 18863 })] 18864 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", { 18865 ...innerBlocksProps, 18866 className: "wp-block-form", 18867 encType: submissionMethod === 'email' ? 'text/plain' : null 18868 })] 18869 }); 18870 }; 18871 /* harmony default export */ const form_edit = (form_edit_Edit); 18872 18873 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form/save.js 18874 /** 18875 * WordPress dependencies 18876 */ 18877 18878 18879 function form_save_save({ 18880 attributes 18881 }) { 18882 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save(); 18883 const { 18884 submissionMethod 18885 } = attributes; 18886 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", { 18887 ...blockProps, 18888 className: "wp-block-form", 18889 encType: submissionMethod === 'email' ? 'text/plain' : null, 18890 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 18891 }); 18892 } 18893 18894 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form/variations.js 18895 /** 18896 * WordPress dependencies 18897 */ 18898 18899 /** 18900 * Internal dependencies 18901 */ 18902 18903 const form_variations_variations = [{ 18904 name: 'comment-form', 18905 title: (0,external_wp_i18n_namespaceObject.__)('Experimental Comment form'), 18906 description: (0,external_wp_i18n_namespaceObject.__)('A comment form for posts and pages.'), 18907 attributes: { 18908 submissionMethod: 'custom', 18909 action: '{SITE_URL}/wp-comments-post.php', 18910 method: 'post', 18911 anchor: 'comment-form' 18912 }, 18913 isDefault: false, 18914 innerBlocks: [['core/form-input', { 18915 type: 'text', 18916 name: 'author', 18917 label: (0,external_wp_i18n_namespaceObject.__)('Name'), 18918 required: true, 18919 visibilityPermissions: 'logged-out' 18920 }], ['core/form-input', { 18921 type: 'email', 18922 name: 'email', 18923 label: (0,external_wp_i18n_namespaceObject.__)('Email'), 18924 required: true, 18925 visibilityPermissions: 'logged-out' 18926 }], ['core/form-input', { 18927 type: 'textarea', 18928 name: 'comment', 18929 label: (0,external_wp_i18n_namespaceObject.__)('Comment'), 18930 required: true, 18931 visibilityPermissions: 'all' 18932 }], ['core/form-submit-button', {}]], 18933 scope: ['inserter', 'transform'], 18934 isActive: blockAttributes => !blockAttributes?.type || blockAttributes?.type === 'text' 18935 }, { 18936 name: 'wp-privacy-form', 18937 title: (0,external_wp_i18n_namespaceObject.__)('Experimental privacy request form'), 18938 keywords: ['GDPR'], 18939 description: (0,external_wp_i18n_namespaceObject.__)('A form to request data exports and/or deletion.'), 18940 attributes: { 18941 submissionMethod: 'custom', 18942 action: '', 18943 method: 'post', 18944 anchor: 'gdpr-form' 18945 }, 18946 isDefault: false, 18947 innerBlocks: [formSubmissionNotificationSuccess, formSubmissionNotificationError, ['core/paragraph', { 18948 content: (0,external_wp_i18n_namespaceObject.__)('To request an export or deletion of your personal data on this site, please fill-in the form below. You can define the type of request you wish to perform, and your email address. Once the form is submitted, you will receive a confirmation email with instructions on the next steps.') 18949 }], ['core/form-input', { 18950 type: 'email', 18951 name: 'email', 18952 label: (0,external_wp_i18n_namespaceObject.__)('Enter your email address.'), 18953 required: true, 18954 visibilityPermissions: 'all' 18955 }], ['core/form-input', { 18956 type: 'checkbox', 18957 name: 'export_personal_data', 18958 label: (0,external_wp_i18n_namespaceObject.__)('Request data export'), 18959 required: false, 18960 visibilityPermissions: 'all' 18961 }], ['core/form-input', { 18962 type: 'checkbox', 18963 name: 'remove_personal_data', 18964 label: (0,external_wp_i18n_namespaceObject.__)('Request data deletion'), 18965 required: false, 18966 visibilityPermissions: 'all' 18967 }], ['core/form-submit-button', {}], ['core/form-input', { 18968 type: 'hidden', 18969 name: 'wp-action', 18970 value: 'wp_privacy_send_request' 18971 }], ['core/form-input', { 18972 type: 'hidden', 18973 name: 'wp-privacy-request', 18974 value: '1' 18975 }]], 18976 scope: ['inserter', 'transform'], 18977 isActive: blockAttributes => !blockAttributes?.type || blockAttributes?.type === 'text' 18978 }]; 18979 /* harmony default export */ const form_variations = (form_variations_variations); 18980 18981 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form/index.js 18982 /** 18983 * Internal dependencies 18984 */ 18985 18986 18987 const form_metadata = { 18988 $schema: "https://schemas.wp.org/trunk/block.json", 18989 apiVersion: 3, 18990 __experimental: true, 18991 name: "core/form", 18992 title: "Form", 18993 category: "common", 18994 allowedBlocks: ["core/paragraph", "core/heading", "core/form-input", "core/form-submit-button", "core/form-submission-notification", "core/group", "core/columns"], 18995 description: "A form.", 18996 keywords: ["container", "wrapper", "row", "section"], 18997 textdomain: "default", 18998 icon: "feedback", 18999 attributes: { 19000 submissionMethod: { 19001 type: "string", 19002 "default": "email" 19003 }, 19004 method: { 19005 type: "string", 19006 "default": "post" 19007 }, 19008 action: { 19009 type: "string" 19010 }, 19011 email: { 19012 type: "string" 19013 } 19014 }, 19015 supports: { 19016 anchor: true, 19017 className: false, 19018 color: { 19019 gradients: true, 19020 link: true, 19021 __experimentalDefaultControls: { 19022 background: true, 19023 text: true, 19024 link: true 19025 } 19026 }, 19027 spacing: { 19028 margin: true, 19029 padding: true 19030 }, 19031 typography: { 19032 fontSize: true, 19033 lineHeight: true, 19034 __experimentalFontFamily: true, 19035 __experimentalTextDecoration: true, 19036 __experimentalFontStyle: true, 19037 __experimentalFontWeight: true, 19038 __experimentalLetterSpacing: true, 19039 __experimentalTextTransform: true, 19040 __experimentalDefaultControls: { 19041 fontSize: true 19042 } 19043 }, 19044 __experimentalSelector: "form" 19045 }, 19046 viewScript: "file:./view.min.js" 19047 }; 19048 19049 19050 19051 /** 19052 * WordPress dependencies 19053 */ 19054 19055 const { 19056 name: form_name 19057 } = form_metadata; 19058 19059 const form_settings = { 19060 edit: form_edit, 19061 save: form_save_save, 19062 variations: form_variations 19063 }; 19064 const form_init = () => { 19065 // Prevent adding forms inside forms. 19066 const DISALLOWED_PARENTS = ['core/form']; 19067 (0,external_wp_hooks_namespaceObject.addFilter)('blockEditor.__unstableCanInsertBlockType', 'core/block-library/preventInsertingFormIntoAnotherForm', (canInsert, blockType, rootClientId, { 19068 getBlock, 19069 getBlockParentsByBlockName 19070 }) => { 19071 if (blockType.name !== 'core/form') { 19072 return canInsert; 19073 } 19074 for (const disallowedParentType of DISALLOWED_PARENTS) { 19075 const hasDisallowedParent = getBlock(rootClientId)?.name === disallowedParentType || getBlockParentsByBlockName(rootClientId, disallowedParentType).length; 19076 if (hasDisallowedParent) { 19077 return false; 19078 } 19079 } 19080 return true; 19081 }); 19082 return initBlock({ 19083 name: form_name, 19084 metadata: form_metadata, 19085 settings: form_settings 19086 }); 19087 }; 19088 19089 // EXTERNAL MODULE: ./node_modules/remove-accents/index.js 19090 var remove_accents = __webpack_require__(9681); 19091 var remove_accents_default = /*#__PURE__*/__webpack_require__.n(remove_accents); 19092 ;// CONCATENATED MODULE: external ["wp","dom"] 19093 const external_wp_dom_namespaceObject = window["wp"]["dom"]; 19094 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form-input/deprecated.js 19095 /** 19096 * External dependencies 19097 */ 19098 19099 19100 19101 /** 19102 * WordPress dependencies 19103 */ 19104 19105 19106 19107 19108 const getNameFromLabelV1 = content => { 19109 return remove_accents_default()((0,external_wp_dom_namespaceObject.__unstableStripHTML)(content)) 19110 // Convert anything that's not a letter or number to a hyphen. 19111 .replace(/[^\p{L}\p{N}]+/gu, '-') 19112 // Convert to lowercase 19113 .toLowerCase() 19114 // Remove any remaining leading or trailing hyphens. 19115 .replace(/(^-+)|(-+$)/g, ''); 19116 }; 19117 const form_input_deprecated_v2 = { 19118 attributes: { 19119 type: { 19120 type: 'string', 19121 default: 'text' 19122 }, 19123 name: { 19124 type: 'string' 19125 }, 19126 label: { 19127 type: 'string', 19128 default: 'Label', 19129 selector: '.wp-block-form-input__label-content', 19130 source: 'html', 19131 role: 'content' 19132 }, 19133 inlineLabel: { 19134 type: 'boolean', 19135 default: false 19136 }, 19137 required: { 19138 type: 'boolean', 19139 default: false, 19140 selector: '.wp-block-form-input__input', 19141 source: 'attribute', 19142 attribute: 'required' 19143 }, 19144 placeholder: { 19145 type: 'string', 19146 selector: '.wp-block-form-input__input', 19147 source: 'attribute', 19148 attribute: 'placeholder', 19149 role: 'content' 19150 }, 19151 value: { 19152 type: 'string', 19153 default: '', 19154 selector: 'input', 19155 source: 'attribute', 19156 attribute: 'value' 19157 }, 19158 visibilityPermissions: { 19159 type: 'string', 19160 default: 'all' 19161 } 19162 }, 19163 supports: { 19164 anchor: true, 19165 reusable: false, 19166 spacing: { 19167 margin: ['top', 'bottom'] 19168 }, 19169 __experimentalBorder: { 19170 radius: true, 19171 __experimentalSkipSerialization: true, 19172 __experimentalDefaultControls: { 19173 radius: true 19174 } 19175 } 19176 }, 19177 save({ 19178 attributes 19179 }) { 19180 const { 19181 type, 19182 name, 19183 label, 19184 inlineLabel, 19185 required, 19186 placeholder, 19187 value 19188 } = attributes; 19189 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetBorderClassesAndStyles)(attributes); 19190 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetColorClassesAndStyles)(attributes); 19191 const inputStyle = { 19192 ...borderProps.style, 19193 ...colorProps.style 19194 }; 19195 const inputClasses = dist_clsx('wp-block-form-input__input', colorProps.className, borderProps.className); 19196 const TagName = type === 'textarea' ? 'textarea' : 'input'; 19197 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save(); 19198 if ('hidden' === type) { 19199 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("input", { 19200 type: type, 19201 name: name, 19202 value: value 19203 }); 19204 } 19205 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 19206 ...blockProps, 19207 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("label", { 19208 className: dist_clsx('wp-block-form-input__label', { 19209 'is-label-inline': inlineLabel 19210 }), 19211 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 19212 className: "wp-block-form-input__label-content", 19213 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 19214 value: label 19215 }) 19216 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 19217 className: inputClasses, 19218 type: 'textarea' === type ? undefined : type, 19219 name: name || getNameFromLabelV1(label), 19220 required: required, 19221 "aria-required": required, 19222 placeholder: placeholder || undefined, 19223 style: inputStyle 19224 })] 19225 }) 19226 }); 19227 } 19228 }; 19229 19230 // Version without wrapper div in saved markup 19231 // See: https://github.com/WordPress/gutenberg/pull/56507 19232 const form_input_deprecated_v1 = { 19233 attributes: { 19234 type: { 19235 type: 'string', 19236 default: 'text' 19237 }, 19238 name: { 19239 type: 'string' 19240 }, 19241 label: { 19242 type: 'string', 19243 default: 'Label', 19244 selector: '.wp-block-form-input__label-content', 19245 source: 'html', 19246 role: 'content' 19247 }, 19248 inlineLabel: { 19249 type: 'boolean', 19250 default: false 19251 }, 19252 required: { 19253 type: 'boolean', 19254 default: false, 19255 selector: '.wp-block-form-input__input', 19256 source: 'attribute', 19257 attribute: 'required' 19258 }, 19259 placeholder: { 19260 type: 'string', 19261 selector: '.wp-block-form-input__input', 19262 source: 'attribute', 19263 attribute: 'placeholder', 19264 role: 'content' 19265 }, 19266 value: { 19267 type: 'string', 19268 default: '', 19269 selector: 'input', 19270 source: 'attribute', 19271 attribute: 'value' 19272 }, 19273 visibilityPermissions: { 19274 type: 'string', 19275 default: 'all' 19276 } 19277 }, 19278 supports: { 19279 className: false, 19280 anchor: true, 19281 reusable: false, 19282 spacing: { 19283 margin: ['top', 'bottom'] 19284 }, 19285 __experimentalBorder: { 19286 radius: true, 19287 __experimentalSkipSerialization: true, 19288 __experimentalDefaultControls: { 19289 radius: true 19290 } 19291 } 19292 }, 19293 save({ 19294 attributes 19295 }) { 19296 const { 19297 type, 19298 name, 19299 label, 19300 inlineLabel, 19301 required, 19302 placeholder, 19303 value 19304 } = attributes; 19305 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetBorderClassesAndStyles)(attributes); 19306 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetColorClassesAndStyles)(attributes); 19307 const inputStyle = { 19308 ...borderProps.style, 19309 ...colorProps.style 19310 }; 19311 const inputClasses = dist_clsx('wp-block-form-input__input', colorProps.className, borderProps.className); 19312 const TagName = type === 'textarea' ? 'textarea' : 'input'; 19313 if ('hidden' === type) { 19314 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("input", { 19315 type: type, 19316 name: name, 19317 value: value 19318 }); 19319 } 19320 19321 /* eslint-disable jsx-a11y/label-has-associated-control */ 19322 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("label", { 19323 className: dist_clsx('wp-block-form-input__label', { 19324 'is-label-inline': inlineLabel 19325 }), 19326 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 19327 className: "wp-block-form-input__label-content", 19328 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 19329 value: label 19330 }) 19331 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 19332 className: inputClasses, 19333 type: 'textarea' === type ? undefined : type, 19334 name: name || getNameFromLabelV1(label), 19335 required: required, 19336 "aria-required": required, 19337 placeholder: placeholder || undefined, 19338 style: inputStyle 19339 })] 19340 }); 19341 /* eslint-enable jsx-a11y/label-has-associated-control */ 19342 } 19343 }; 19344 const form_input_deprecated_deprecated = [form_input_deprecated_v2, form_input_deprecated_v1]; 19345 /* harmony default export */ const form_input_deprecated = (form_input_deprecated_deprecated); 19346 19347 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form-input/edit.js 19348 /** 19349 * External dependencies 19350 */ 19351 19352 19353 /** 19354 * WordPress dependencies 19355 */ 19356 19357 19358 19359 19360 19361 19362 19363 function InputFieldBlock({ 19364 attributes, 19365 setAttributes, 19366 className 19367 }) { 19368 const { 19369 type, 19370 name, 19371 label, 19372 inlineLabel, 19373 required, 19374 placeholder, 19375 value 19376 } = attributes; 19377 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 19378 const ref = (0,external_wp_element_namespaceObject.useRef)(); 19379 const TagName = type === 'textarea' ? 'textarea' : 'input'; 19380 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseBorderProps)(attributes); 19381 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseColorProps)(attributes); 19382 if (ref.current) { 19383 ref.current.focus(); 19384 } 19385 19386 // Note: radio inputs aren't implemented yet. 19387 const isCheckboxOrRadio = type === 'checkbox' || type === 'radio'; 19388 const controls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 19389 children: ['hidden' !== type && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 19390 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 19391 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 19392 children: ['checkbox' !== type && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, { 19393 __nextHasNoMarginBottom: true, 19394 label: (0,external_wp_i18n_namespaceObject.__)('Inline label'), 19395 checked: inlineLabel, 19396 onChange: newVal => { 19397 setAttributes({ 19398 inlineLabel: newVal 19399 }); 19400 } 19401 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, { 19402 __nextHasNoMarginBottom: true, 19403 label: (0,external_wp_i18n_namespaceObject.__)('Required'), 19404 checked: required, 19405 onChange: newVal => { 19406 setAttributes({ 19407 required: newVal 19408 }); 19409 } 19410 })] 19411 }) 19412 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 19413 group: "advanced", 19414 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 19415 __next40pxDefaultSize: true, 19416 __nextHasNoMarginBottom: true, 19417 autoComplete: "off", 19418 label: (0,external_wp_i18n_namespaceObject.__)('Name'), 19419 value: name, 19420 onChange: newVal => { 19421 setAttributes({ 19422 name: newVal 19423 }); 19424 }, 19425 help: (0,external_wp_i18n_namespaceObject.__)('Affects the "name" atribute of the input element, and is used as a name for the form submission results.') 19426 }) 19427 })] 19428 }); 19429 const content = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 19430 tagName: "span", 19431 className: "wp-block-form-input__label-content", 19432 value: label, 19433 onChange: newLabel => setAttributes({ 19434 label: newLabel 19435 }), 19436 "aria-label": label ? (0,external_wp_i18n_namespaceObject.__)('Label') : (0,external_wp_i18n_namespaceObject.__)('Empty label'), 19437 "data-empty": !label, 19438 placeholder: (0,external_wp_i18n_namespaceObject.__)('Type the label for this input') 19439 }); 19440 if ('hidden' === type) { 19441 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 19442 children: [controls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("input", { 19443 type: "hidden", 19444 className: dist_clsx(className, 'wp-block-form-input__input', colorProps.className, borderProps.className), 19445 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Value'), 19446 value: value, 19447 onChange: event => setAttributes({ 19448 value: event.target.value 19449 }) 19450 })] 19451 }); 19452 } 19453 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 19454 ...blockProps, 19455 children: [controls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", { 19456 className: dist_clsx('wp-block-form-input__label', { 19457 'is-label-inline': inlineLabel || 'checkbox' === type 19458 }), 19459 children: [!isCheckboxOrRadio && content, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 19460 type: 'textarea' === type ? undefined : type, 19461 className: dist_clsx(className, 'wp-block-form-input__input', colorProps.className, borderProps.className), 19462 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Optional placeholder text') 19463 // We hide the placeholder field's placeholder when there is a value. This 19464 // stops screen readers from reading the placeholder field's placeholder 19465 // which is confusing. 19466 , 19467 placeholder: placeholder ? undefined : (0,external_wp_i18n_namespaceObject.__)('Optional placeholder…'), 19468 value: placeholder, 19469 onChange: event => setAttributes({ 19470 placeholder: event.target.value 19471 }), 19472 "aria-required": required, 19473 style: { 19474 ...borderProps.style, 19475 ...colorProps.style 19476 } 19477 }), isCheckboxOrRadio && content] 19478 })] 19479 }); 19480 } 19481 /* harmony default export */ const form_input_edit = (InputFieldBlock); 19482 19483 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form-input/save.js 19484 /** 19485 * External dependencies 19486 */ 19487 19488 19489 19490 /** 19491 * WordPress dependencies 19492 */ 19493 19494 19495 19496 /** 19497 * Get the name attribute from a content string. 19498 * 19499 * @param {string} content The block content. 19500 * 19501 * @return {string} Returns the slug. 19502 */ 19503 19504 19505 const getNameFromLabel = content => { 19506 return remove_accents_default()((0,external_wp_dom_namespaceObject.__unstableStripHTML)(content)) 19507 // Convert anything that's not a letter or number to a hyphen. 19508 .replace(/[^\p{L}\p{N}]+/gu, '-') 19509 // Convert to lowercase 19510 .toLowerCase() 19511 // Remove any remaining leading or trailing hyphens. 19512 .replace(/(^-+)|(-+$)/g, ''); 19513 }; 19514 function form_input_save_save({ 19515 attributes 19516 }) { 19517 const { 19518 type, 19519 name, 19520 label, 19521 inlineLabel, 19522 required, 19523 placeholder, 19524 value 19525 } = attributes; 19526 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetBorderClassesAndStyles)(attributes); 19527 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetColorClassesAndStyles)(attributes); 19528 const inputStyle = { 19529 ...borderProps.style, 19530 ...colorProps.style 19531 }; 19532 const inputClasses = dist_clsx('wp-block-form-input__input', colorProps.className, borderProps.className); 19533 const TagName = type === 'textarea' ? 'textarea' : 'input'; 19534 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save(); 19535 19536 // Note: radio inputs aren't implemented yet. 19537 const isCheckboxOrRadio = type === 'checkbox' || type === 'radio'; 19538 if ('hidden' === type) { 19539 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("input", { 19540 type: type, 19541 name: name, 19542 value: value 19543 }); 19544 } 19545 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 19546 ...blockProps, 19547 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("label", { 19548 className: dist_clsx('wp-block-form-input__label', { 19549 'is-label-inline': inlineLabel 19550 }), 19551 children: [!isCheckboxOrRadio && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 19552 className: "wp-block-form-input__label-content", 19553 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 19554 value: label 19555 }) 19556 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 19557 className: inputClasses, 19558 type: 'textarea' === type ? undefined : type, 19559 name: name || getNameFromLabel(label), 19560 required: required, 19561 "aria-required": required, 19562 placeholder: placeholder || undefined, 19563 style: inputStyle 19564 }), isCheckboxOrRadio && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 19565 className: "wp-block-form-input__label-content", 19566 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 19567 value: label 19568 }) 19569 })] 19570 }) 19571 }); 19572 } 19573 19574 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form-input/variations.js 19575 /** 19576 * WordPress dependencies 19577 */ 19578 19579 const form_input_variations_variations = [{ 19580 name: 'text', 19581 title: (0,external_wp_i18n_namespaceObject.__)('Text Input'), 19582 icon: 'edit-page', 19583 description: (0,external_wp_i18n_namespaceObject.__)('A generic text input.'), 19584 attributes: { 19585 type: 'text' 19586 }, 19587 isDefault: true, 19588 scope: ['inserter', 'transform'], 19589 isActive: blockAttributes => !blockAttributes?.type || blockAttributes?.type === 'text' 19590 }, { 19591 name: 'textarea', 19592 title: (0,external_wp_i18n_namespaceObject.__)('Textarea Input'), 19593 icon: 'testimonial', 19594 description: (0,external_wp_i18n_namespaceObject.__)('A textarea input to allow entering multiple lines of text.'), 19595 attributes: { 19596 type: 'textarea' 19597 }, 19598 isDefault: true, 19599 scope: ['inserter', 'transform'], 19600 isActive: blockAttributes => blockAttributes?.type === 'textarea' 19601 }, { 19602 name: 'checkbox', 19603 title: (0,external_wp_i18n_namespaceObject.__)('Checkbox Input'), 19604 description: (0,external_wp_i18n_namespaceObject.__)('A simple checkbox input.'), 19605 icon: 'forms', 19606 attributes: { 19607 type: 'checkbox', 19608 inlineLabel: true 19609 }, 19610 isDefault: true, 19611 scope: ['inserter', 'transform'], 19612 isActive: blockAttributes => blockAttributes?.type === 'checkbox' 19613 }, { 19614 name: 'email', 19615 title: (0,external_wp_i18n_namespaceObject.__)('Email Input'), 19616 icon: 'email', 19617 description: (0,external_wp_i18n_namespaceObject.__)('Used for email addresses.'), 19618 attributes: { 19619 type: 'email' 19620 }, 19621 isDefault: true, 19622 scope: ['inserter', 'transform'], 19623 isActive: blockAttributes => blockAttributes?.type === 'email' 19624 }, { 19625 name: 'url', 19626 title: (0,external_wp_i18n_namespaceObject.__)('URL Input'), 19627 icon: 'admin-site', 19628 description: (0,external_wp_i18n_namespaceObject.__)('Used for URLs.'), 19629 attributes: { 19630 type: 'url' 19631 }, 19632 isDefault: true, 19633 scope: ['inserter', 'transform'], 19634 isActive: blockAttributes => blockAttributes?.type === 'url' 19635 }, { 19636 name: 'tel', 19637 title: (0,external_wp_i18n_namespaceObject.__)('Telephone Input'), 19638 icon: 'phone', 19639 description: (0,external_wp_i18n_namespaceObject.__)('Used for phone numbers.'), 19640 attributes: { 19641 type: 'tel' 19642 }, 19643 isDefault: true, 19644 scope: ['inserter', 'transform'], 19645 isActive: blockAttributes => blockAttributes?.type === 'tel' 19646 }, { 19647 name: 'number', 19648 title: (0,external_wp_i18n_namespaceObject.__)('Number Input'), 19649 icon: 'edit-page', 19650 description: (0,external_wp_i18n_namespaceObject.__)('A numeric input.'), 19651 attributes: { 19652 type: 'number' 19653 }, 19654 isDefault: true, 19655 scope: ['inserter', 'transform'], 19656 isActive: blockAttributes => blockAttributes?.type === 'number' 19657 }]; 19658 /* harmony default export */ const form_input_variations = (form_input_variations_variations); 19659 19660 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form-input/index.js 19661 /** 19662 * Internal dependencies 19663 */ 19664 19665 19666 19667 const form_input_metadata = { 19668 $schema: "https://schemas.wp.org/trunk/block.json", 19669 apiVersion: 3, 19670 __experimental: true, 19671 name: "core/form-input", 19672 title: "Input Field", 19673 category: "common", 19674 ancestor: ["core/form"], 19675 description: "The basic building block for forms.", 19676 keywords: ["input", "form"], 19677 textdomain: "default", 19678 icon: "forms", 19679 attributes: { 19680 type: { 19681 type: "string", 19682 "default": "text" 19683 }, 19684 name: { 19685 type: "string" 19686 }, 19687 label: { 19688 type: "rich-text", 19689 "default": "Label", 19690 selector: ".wp-block-form-input__label-content", 19691 source: "rich-text", 19692 role: "content" 19693 }, 19694 inlineLabel: { 19695 type: "boolean", 19696 "default": false 19697 }, 19698 required: { 19699 type: "boolean", 19700 "default": false, 19701 selector: ".wp-block-form-input__input", 19702 source: "attribute", 19703 attribute: "required" 19704 }, 19705 placeholder: { 19706 type: "string", 19707 selector: ".wp-block-form-input__input", 19708 source: "attribute", 19709 attribute: "placeholder", 19710 role: "content" 19711 }, 19712 value: { 19713 type: "string", 19714 "default": "", 19715 selector: "input", 19716 source: "attribute", 19717 attribute: "value" 19718 }, 19719 visibilityPermissions: { 19720 type: "string", 19721 "default": "all" 19722 } 19723 }, 19724 supports: { 19725 anchor: true, 19726 reusable: false, 19727 spacing: { 19728 margin: ["top", "bottom"] 19729 }, 19730 __experimentalBorder: { 19731 radius: true, 19732 __experimentalSkipSerialization: true, 19733 __experimentalDefaultControls: { 19734 radius: true 19735 } 19736 } 19737 }, 19738 style: ["wp-block-form-input"] 19739 }; 19740 19741 19742 const { 19743 name: form_input_name 19744 } = form_input_metadata; 19745 19746 const form_input_settings = { 19747 deprecated: form_input_deprecated, 19748 edit: form_input_edit, 19749 save: form_input_save_save, 19750 variations: form_input_variations 19751 }; 19752 const form_input_init = () => initBlock({ 19753 name: form_input_name, 19754 metadata: form_input_metadata, 19755 settings: form_input_settings 19756 }); 19757 19758 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form-submit-button/edit.js 19759 /** 19760 * WordPress dependencies 19761 */ 19762 19763 19764 19765 const form_submit_button_edit_TEMPLATE = [['core/buttons', {}, [['core/button', { 19766 text: (0,external_wp_i18n_namespaceObject.__)('Submit'), 19767 tagName: 'button', 19768 type: 'submit' 19769 }]]]]; 19770 const form_submit_button_edit_Edit = () => { 19771 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 19772 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 19773 template: form_submit_button_edit_TEMPLATE, 19774 templateLock: 'all' 19775 }); 19776 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 19777 className: "wp-block-form-submit-wrapper", 19778 ...innerBlocksProps 19779 }); 19780 }; 19781 /* harmony default export */ const form_submit_button_edit = (form_submit_button_edit_Edit); 19782 19783 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form-submit-button/save.js 19784 /** 19785 * WordPress dependencies 19786 */ 19787 19788 19789 function form_submit_button_save_save() { 19790 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save(); 19791 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 19792 className: "wp-block-form-submit-wrapper", 19793 ...blockProps, 19794 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 19795 }); 19796 } 19797 19798 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form-submit-button/index.js 19799 /** 19800 * Internal dependencies 19801 */ 19802 19803 19804 const form_submit_button_metadata = { 19805 $schema: "https://schemas.wp.org/trunk/block.json", 19806 apiVersion: 3, 19807 __experimental: true, 19808 name: "core/form-submit-button", 19809 title: "Form Submit Button", 19810 category: "common", 19811 icon: "button", 19812 ancestor: ["core/form"], 19813 allowedBlocks: ["core/buttons", "core/button"], 19814 description: "A submission button for forms.", 19815 keywords: ["submit", "button", "form"], 19816 textdomain: "default", 19817 style: ["wp-block-form-submit-button"] 19818 }; 19819 19820 const { 19821 name: form_submit_button_name 19822 } = form_submit_button_metadata; 19823 19824 const form_submit_button_settings = { 19825 edit: form_submit_button_edit, 19826 save: form_submit_button_save_save 19827 }; 19828 const form_submit_button_init = () => initBlock({ 19829 name: form_submit_button_name, 19830 metadata: form_submit_button_metadata, 19831 settings: form_submit_button_settings 19832 }); 19833 19834 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/group.js 19835 /** 19836 * WordPress dependencies 19837 */ 19838 19839 19840 const group = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 19841 viewBox: "0 0 24 24", 19842 xmlns: "http://www.w3.org/2000/svg", 19843 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 19844 d: "M18 4h-7c-1.1 0-2 .9-2 2v3H6c-1.1 0-2 .9-2 2v7c0 1.1.9 2 2 2h7c1.1 0 2-.9 2-2v-3h3c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-4.5 14c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5v-7c0-.3.2-.5.5-.5h3V13c0 1.1.9 2 2 2h2.5v3zm0-4.5H11c-.3 0-.5-.2-.5-.5v-2.5H13c.3 0 .5.2.5.5v2.5zm5-.5c0 .3-.2.5-.5.5h-3V11c0-1.1-.9-2-2-2h-2.5V6c0-.3.2-.5.5-.5h7c.3 0 .5.2.5.5v7z" 19845 }) 19846 }); 19847 /* harmony default export */ const library_group = (group); 19848 19849 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form-submission-notification/edit.js 19850 /** 19851 * WordPress dependencies 19852 */ 19853 19854 19855 19856 19857 /** 19858 * External dependencies 19859 */ 19860 19861 19862 const form_submission_notification_edit_TEMPLATE = [['core/paragraph', { 19863 content: (0,external_wp_i18n_namespaceObject.__)("Enter the message you wish displayed for form submission error/success, and select the type of the message (success/error) from the block's options.") 19864 }]]; 19865 const form_submission_notification_edit_Edit = ({ 19866 attributes, 19867 clientId 19868 }) => { 19869 const { 19870 type 19871 } = attributes; 19872 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 19873 className: dist_clsx('wp-block-form-submission-notification', { 19874 [`form-notification-type-$type}`]: type 19875 }) 19876 }); 19877 const { 19878 hasInnerBlocks 19879 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 19880 const { 19881 getBlock 19882 } = select(external_wp_blockEditor_namespaceObject.store); 19883 const block = getBlock(clientId); 19884 return { 19885 hasInnerBlocks: !!(block && block.innerBlocks.length) 19886 }; 19887 }, [clientId]); 19888 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 19889 template: form_submission_notification_edit_TEMPLATE, 19890 renderAppender: hasInnerBlocks ? undefined : external_wp_blockEditor_namespaceObject.InnerBlocks.ButtonBlockAppender 19891 }); 19892 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 19893 ...innerBlocksProps, 19894 "data-message-success": (0,external_wp_i18n_namespaceObject.__)('Submission success notification'), 19895 "data-message-error": (0,external_wp_i18n_namespaceObject.__)('Submission error notification') 19896 }); 19897 }; 19898 /* harmony default export */ const form_submission_notification_edit = (form_submission_notification_edit_Edit); 19899 19900 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form-submission-notification/save.js 19901 /** 19902 * WordPress dependencies 19903 */ 19904 19905 19906 /** 19907 * External dependencies 19908 */ 19909 19910 19911 function form_submission_notification_save_save({ 19912 attributes 19913 }) { 19914 const { 19915 type 19916 } = attributes; 19917 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 19918 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(external_wp_blockEditor_namespaceObject.useBlockProps.save({ 19919 className: dist_clsx('wp-block-form-submission-notification', { 19920 [`form-notification-type-$type}`]: type 19921 }) 19922 })) 19923 }); 19924 } 19925 19926 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form-submission-notification/variations.js 19927 /** 19928 * WordPress dependencies 19929 */ 19930 19931 const form_submission_notification_variations_variations = [{ 19932 name: 'form-submission-success', 19933 title: (0,external_wp_i18n_namespaceObject.__)('Form Submission Success'), 19934 description: (0,external_wp_i18n_namespaceObject.__)('Success message for form submissions.'), 19935 attributes: { 19936 type: 'success' 19937 }, 19938 isDefault: true, 19939 innerBlocks: [['core/paragraph', { 19940 content: (0,external_wp_i18n_namespaceObject.__)('Your form has been submitted successfully.'), 19941 backgroundColor: '#00D084', 19942 textColor: '#000000', 19943 style: { 19944 elements: { 19945 link: { 19946 color: { 19947 text: '#000000' 19948 } 19949 } 19950 } 19951 } 19952 }]], 19953 scope: ['inserter', 'transform'], 19954 isActive: blockAttributes => !blockAttributes?.type || blockAttributes?.type === 'success' 19955 }, { 19956 name: 'form-submission-error', 19957 title: (0,external_wp_i18n_namespaceObject.__)('Form Submission Error'), 19958 description: (0,external_wp_i18n_namespaceObject.__)('Error/failure message for form submissions.'), 19959 attributes: { 19960 type: 'error' 19961 }, 19962 isDefault: false, 19963 innerBlocks: [['core/paragraph', { 19964 content: (0,external_wp_i18n_namespaceObject.__)('There was an error submitting your form.'), 19965 backgroundColor: '#CF2E2E', 19966 textColor: '#FFFFFF', 19967 style: { 19968 elements: { 19969 link: { 19970 color: { 19971 text: '#FFFFFF' 19972 } 19973 } 19974 } 19975 } 19976 }]], 19977 scope: ['inserter', 'transform'], 19978 isActive: blockAttributes => !blockAttributes?.type || blockAttributes?.type === 'error' 19979 }]; 19980 /* harmony default export */ const form_submission_notification_variations = (form_submission_notification_variations_variations); 19981 19982 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/form-submission-notification/index.js 19983 /** 19984 * WordPress dependencies 19985 */ 19986 19987 19988 /** 19989 * Internal dependencies 19990 */ 19991 19992 19993 const form_submission_notification_metadata = { 19994 $schema: "https://schemas.wp.org/trunk/block.json", 19995 apiVersion: 3, 19996 __experimental: true, 19997 name: "core/form-submission-notification", 19998 title: "Form Submission Notification", 19999 category: "common", 20000 ancestor: ["core/form"], 20001 description: "Provide a notification message after the form has been submitted.", 20002 keywords: ["form", "feedback", "notification", "message"], 20003 textdomain: "default", 20004 icon: "feedback", 20005 attributes: { 20006 type: { 20007 type: "string", 20008 "default": "success" 20009 } 20010 } 20011 }; 20012 20013 20014 const { 20015 name: form_submission_notification_name 20016 } = form_submission_notification_metadata; 20017 20018 const form_submission_notification_settings = { 20019 icon: library_group, 20020 edit: form_submission_notification_edit, 20021 save: form_submission_notification_save_save, 20022 variations: form_submission_notification_variations 20023 }; 20024 const form_submission_notification_init = () => initBlock({ 20025 name: form_submission_notification_name, 20026 metadata: form_submission_notification_metadata, 20027 settings: form_submission_notification_settings 20028 }); 20029 20030 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/gallery.js 20031 /** 20032 * WordPress dependencies 20033 */ 20034 20035 20036 const gallery = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 20037 viewBox: "0 0 24 24", 20038 xmlns: "http://www.w3.org/2000/svg", 20039 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 20040 d: "M16.375 4.5H4.625a.125.125 0 0 0-.125.125v8.254l2.859-1.54a.75.75 0 0 1 .68-.016l2.384 1.142 2.89-2.074a.75.75 0 0 1 .874 0l2.313 1.66V4.625a.125.125 0 0 0-.125-.125Zm.125 9.398-2.75-1.975-2.813 2.02a.75.75 0 0 1-.76.067l-2.444-1.17L4.5 14.583v1.792c0 .069.056.125.125.125h11.75a.125.125 0 0 0 .125-.125v-2.477ZM4.625 3C3.728 3 3 3.728 3 4.625v11.75C3 17.273 3.728 18 4.625 18h11.75c.898 0 1.625-.727 1.625-1.625V4.625C18 3.728 17.273 3 16.375 3H4.625ZM20 8v11c0 .69-.31 1-.999 1H6v1.5h13.001c1.52 0 2.499-.982 2.499-2.5V8H20Z", 20041 fillRule: "evenodd", 20042 clipRule: "evenodd" 20043 }) 20044 }); 20045 /* harmony default export */ const library_gallery = (gallery); 20046 20047 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/constants.js 20048 const LINK_DESTINATION_NONE = 'none'; 20049 const LINK_DESTINATION_MEDIA = 'media'; 20050 const LINK_DESTINATION_ATTACHMENT = 'attachment'; 20051 const LINK_DESTINATION_MEDIA_WP_CORE = 'file'; 20052 const LINK_DESTINATION_ATTACHMENT_WP_CORE = 'post'; 20053 20054 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/deprecated.js 20055 /** 20056 * External dependencies 20057 */ 20058 20059 20060 /** 20061 * WordPress dependencies 20062 */ 20063 20064 20065 20066 /** 20067 * Internal dependencies 20068 */ 20069 20070 20071 20072 const DEPRECATED_LINK_DESTINATION_MEDIA = 'file'; 20073 const DEPRECATED_LINK_DESTINATION_ATTACHMENT = 'post'; 20074 20075 /** 20076 * Original function to determine default number of columns from a block's 20077 * attributes. 20078 * 20079 * Used in deprecations: v1-6, for versions of the gallery block that didn't use inner blocks. 20080 * 20081 * @param {Object} attributes Block attributes. 20082 * @return {number} Default number of columns for the gallery. 20083 */ 20084 function defaultColumnsNumberV1(attributes) { 20085 return Math.min(3, attributes?.images?.length); 20086 } 20087 20088 /** 20089 * Original function to determine new href and linkDestination values for an image block from the 20090 * supplied Gallery link destination. 20091 * 20092 * Used in deprecations: v1-6. 20093 * 20094 * @param {Object} image Gallery image. 20095 * @param {string} destination Gallery's selected link destination. 20096 * @return {Object} New attributes to assign to image block. 20097 */ 20098 function getHrefAndDestination(image, destination) { 20099 // Need to determine the URL that the selected destination maps to. 20100 // Gutenberg and WordPress use different constants so the new link 20101 // destination also needs to be tweaked. 20102 switch (destination) { 20103 case DEPRECATED_LINK_DESTINATION_MEDIA: 20104 return { 20105 href: image?.source_url || image?.url, 20106 // eslint-disable-line camelcase 20107 linkDestination: LINK_DESTINATION_MEDIA 20108 }; 20109 case DEPRECATED_LINK_DESTINATION_ATTACHMENT: 20110 return { 20111 href: image?.link, 20112 linkDestination: LINK_DESTINATION_ATTACHMENT 20113 }; 20114 case LINK_DESTINATION_MEDIA: 20115 return { 20116 href: image?.source_url || image?.url, 20117 // eslint-disable-line camelcase 20118 linkDestination: LINK_DESTINATION_MEDIA 20119 }; 20120 case LINK_DESTINATION_ATTACHMENT: 20121 return { 20122 href: image?.link, 20123 linkDestination: LINK_DESTINATION_ATTACHMENT 20124 }; 20125 case LINK_DESTINATION_NONE: 20126 return { 20127 href: undefined, 20128 linkDestination: LINK_DESTINATION_NONE 20129 }; 20130 } 20131 return {}; 20132 } 20133 function runV2Migration(attributes) { 20134 let linkTo = attributes.linkTo ? attributes.linkTo : 'none'; 20135 if (linkTo === 'post') { 20136 linkTo = 'attachment'; 20137 } else if (linkTo === 'file') { 20138 linkTo = 'media'; 20139 } 20140 const imageBlocks = attributes.images.map(image => { 20141 return getImageBlock(image, attributes.sizeSlug, linkTo); 20142 }); 20143 const { 20144 images, 20145 ids, 20146 ...restAttributes 20147 } = attributes; 20148 return [{ 20149 ...restAttributes, 20150 linkTo, 20151 allowResize: false 20152 }, imageBlocks]; 20153 } 20154 /** 20155 * Gets an Image block from gallery image data 20156 * 20157 * Used to migrate Galleries to nested Image InnerBlocks. 20158 * 20159 * @param {Object} image Image properties. 20160 * @param {string} sizeSlug Gallery sizeSlug attribute. 20161 * @param {string} linkTo Gallery linkTo attribute. 20162 * @return {Object} Image block. 20163 */ 20164 function getImageBlock(image, sizeSlug, linkTo) { 20165 return (0,external_wp_blocks_namespaceObject.createBlock)('core/image', { 20166 ...(image.id && { 20167 id: parseInt(image.id) 20168 }), 20169 url: image.url, 20170 alt: image.alt, 20171 caption: image.caption, 20172 sizeSlug, 20173 ...getHrefAndDestination(image, linkTo) 20174 }); 20175 } 20176 20177 // In #41140 support was added to global styles for caption elements which added a `wp-element-caption` classname 20178 // to the gallery figcaption element. 20179 const deprecated_v7 = { 20180 attributes: { 20181 images: { 20182 type: 'array', 20183 default: [], 20184 source: 'query', 20185 selector: '.blocks-gallery-item', 20186 query: { 20187 url: { 20188 type: 'string', 20189 source: 'attribute', 20190 selector: 'img', 20191 attribute: 'src' 20192 }, 20193 fullUrl: { 20194 type: 'string', 20195 source: 'attribute', 20196 selector: 'img', 20197 attribute: 'data-full-url' 20198 }, 20199 link: { 20200 type: 'string', 20201 source: 'attribute', 20202 selector: 'img', 20203 attribute: 'data-link' 20204 }, 20205 alt: { 20206 type: 'string', 20207 source: 'attribute', 20208 selector: 'img', 20209 attribute: 'alt', 20210 default: '' 20211 }, 20212 id: { 20213 type: 'string', 20214 source: 'attribute', 20215 selector: 'img', 20216 attribute: 'data-id' 20217 }, 20218 caption: { 20219 type: 'string', 20220 source: 'html', 20221 selector: '.blocks-gallery-item__caption' 20222 } 20223 } 20224 }, 20225 ids: { 20226 type: 'array', 20227 items: { 20228 type: 'number' 20229 }, 20230 default: [] 20231 }, 20232 shortCodeTransforms: { 20233 type: 'array', 20234 default: [], 20235 items: { 20236 type: 'object' 20237 } 20238 }, 20239 columns: { 20240 type: 'number', 20241 minimum: 1, 20242 maximum: 8 20243 }, 20244 caption: { 20245 type: 'string', 20246 source: 'html', 20247 selector: '.blocks-gallery-caption' 20248 }, 20249 imageCrop: { 20250 type: 'boolean', 20251 default: true 20252 }, 20253 fixedHeight: { 20254 type: 'boolean', 20255 default: true 20256 }, 20257 linkTarget: { 20258 type: 'string' 20259 }, 20260 linkTo: { 20261 type: 'string' 20262 }, 20263 sizeSlug: { 20264 type: 'string', 20265 default: 'large' 20266 }, 20267 allowResize: { 20268 type: 'boolean', 20269 default: false 20270 } 20271 }, 20272 save({ 20273 attributes 20274 }) { 20275 const { 20276 caption, 20277 columns, 20278 imageCrop 20279 } = attributes; 20280 const className = dist_clsx('has-nested-images', { 20281 [`columns-$columns}`]: columns !== undefined, 20282 [`columns-default`]: columns === undefined, 20283 'is-cropped': imageCrop 20284 }); 20285 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save({ 20286 className 20287 }); 20288 const innerBlocksProps = external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(blockProps); 20289 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 20290 ...innerBlocksProps, 20291 children: [innerBlocksProps.children, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 20292 tagName: "figcaption", 20293 className: "blocks-gallery-caption", 20294 value: caption 20295 })] 20296 }); 20297 } 20298 }; 20299 const deprecated_v6 = { 20300 attributes: { 20301 images: { 20302 type: 'array', 20303 default: [], 20304 source: 'query', 20305 selector: '.blocks-gallery-item', 20306 query: { 20307 url: { 20308 type: 'string', 20309 source: 'attribute', 20310 selector: 'img', 20311 attribute: 'src' 20312 }, 20313 fullUrl: { 20314 type: 'string', 20315 source: 'attribute', 20316 selector: 'img', 20317 attribute: 'data-full-url' 20318 }, 20319 link: { 20320 type: 'string', 20321 source: 'attribute', 20322 selector: 'img', 20323 attribute: 'data-link' 20324 }, 20325 alt: { 20326 type: 'string', 20327 source: 'attribute', 20328 selector: 'img', 20329 attribute: 'alt', 20330 default: '' 20331 }, 20332 id: { 20333 type: 'string', 20334 source: 'attribute', 20335 selector: 'img', 20336 attribute: 'data-id' 20337 }, 20338 caption: { 20339 type: 'string', 20340 source: 'html', 20341 selector: '.blocks-gallery-item__caption' 20342 } 20343 } 20344 }, 20345 ids: { 20346 type: 'array', 20347 items: { 20348 type: 'number' 20349 }, 20350 default: [] 20351 }, 20352 columns: { 20353 type: 'number', 20354 minimum: 1, 20355 maximum: 8 20356 }, 20357 caption: { 20358 type: 'string', 20359 source: 'html', 20360 selector: '.blocks-gallery-caption' 20361 }, 20362 imageCrop: { 20363 type: 'boolean', 20364 default: true 20365 }, 20366 fixedHeight: { 20367 type: 'boolean', 20368 default: true 20369 }, 20370 linkTo: { 20371 type: 'string' 20372 }, 20373 sizeSlug: { 20374 type: 'string', 20375 default: 'large' 20376 } 20377 }, 20378 supports: { 20379 anchor: true, 20380 align: true 20381 }, 20382 save({ 20383 attributes 20384 }) { 20385 const { 20386 images, 20387 columns = defaultColumnsNumberV1(attributes), 20388 imageCrop, 20389 caption, 20390 linkTo 20391 } = attributes; 20392 const className = `columns-$columns} $imageCrop ? 'is-cropped' : ''}`; 20393 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 20394 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 20395 className 20396 }), 20397 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 20398 className: "blocks-gallery-grid", 20399 children: images.map(image => { 20400 let href; 20401 switch (linkTo) { 20402 case DEPRECATED_LINK_DESTINATION_MEDIA: 20403 href = image.fullUrl || image.url; 20404 break; 20405 case DEPRECATED_LINK_DESTINATION_ATTACHMENT: 20406 href = image.link; 20407 break; 20408 } 20409 const img = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 20410 src: image.url, 20411 alt: image.alt, 20412 "data-id": image.id, 20413 "data-full-url": image.fullUrl, 20414 "data-link": image.link, 20415 className: image.id ? `wp-image-$image.id}` : null 20416 }); 20417 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", { 20418 className: "blocks-gallery-item", 20419 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 20420 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 20421 href: href, 20422 children: img 20423 }) : img, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(image.caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 20424 tagName: "figcaption", 20425 className: "blocks-gallery-item__caption", 20426 value: image.caption 20427 })] 20428 }) 20429 }, image.id || image.url); 20430 }) 20431 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 20432 tagName: "figcaption", 20433 className: "blocks-gallery-caption", 20434 value: caption 20435 })] 20436 }); 20437 }, 20438 migrate(attributes) { 20439 return runV2Migration(attributes); 20440 } 20441 }; 20442 const deprecated_v5 = { 20443 attributes: { 20444 images: { 20445 type: 'array', 20446 default: [], 20447 source: 'query', 20448 selector: '.blocks-gallery-item', 20449 query: { 20450 url: { 20451 type: 'string', 20452 source: 'attribute', 20453 selector: 'img', 20454 attribute: 'src' 20455 }, 20456 fullUrl: { 20457 type: 'string', 20458 source: 'attribute', 20459 selector: 'img', 20460 attribute: 'data-full-url' 20461 }, 20462 link: { 20463 type: 'string', 20464 source: 'attribute', 20465 selector: 'img', 20466 attribute: 'data-link' 20467 }, 20468 alt: { 20469 type: 'string', 20470 source: 'attribute', 20471 selector: 'img', 20472 attribute: 'alt', 20473 default: '' 20474 }, 20475 id: { 20476 type: 'string', 20477 source: 'attribute', 20478 selector: 'img', 20479 attribute: 'data-id' 20480 }, 20481 caption: { 20482 type: 'string', 20483 source: 'html', 20484 selector: '.blocks-gallery-item__caption' 20485 } 20486 } 20487 }, 20488 ids: { 20489 type: 'array', 20490 items: { 20491 type: 'number' 20492 }, 20493 default: [] 20494 }, 20495 columns: { 20496 type: 'number', 20497 minimum: 1, 20498 maximum: 8 20499 }, 20500 caption: { 20501 type: 'string', 20502 source: 'html', 20503 selector: '.blocks-gallery-caption' 20504 }, 20505 imageCrop: { 20506 type: 'boolean', 20507 default: true 20508 }, 20509 linkTo: { 20510 type: 'string', 20511 default: 'none' 20512 }, 20513 sizeSlug: { 20514 type: 'string', 20515 default: 'large' 20516 } 20517 }, 20518 supports: { 20519 align: true 20520 }, 20521 isEligible({ 20522 linkTo 20523 }) { 20524 return !linkTo || linkTo === 'attachment' || linkTo === 'media'; 20525 }, 20526 migrate(attributes) { 20527 return runV2Migration(attributes); 20528 }, 20529 save({ 20530 attributes 20531 }) { 20532 const { 20533 images, 20534 columns = defaultColumnsNumberV1(attributes), 20535 imageCrop, 20536 caption, 20537 linkTo 20538 } = attributes; 20539 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 20540 className: `columns-$columns} $imageCrop ? 'is-cropped' : ''}`, 20541 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 20542 className: "blocks-gallery-grid", 20543 children: images.map(image => { 20544 let href; 20545 switch (linkTo) { 20546 case 'media': 20547 href = image.fullUrl || image.url; 20548 break; 20549 case 'attachment': 20550 href = image.link; 20551 break; 20552 } 20553 const img = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 20554 src: image.url, 20555 alt: image.alt, 20556 "data-id": image.id, 20557 "data-full-url": image.fullUrl, 20558 "data-link": image.link, 20559 className: image.id ? `wp-image-$image.id}` : null 20560 }); 20561 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", { 20562 className: "blocks-gallery-item", 20563 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 20564 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 20565 href: href, 20566 children: img 20567 }) : img, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(image.caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 20568 tagName: "figcaption", 20569 className: "blocks-gallery-item__caption", 20570 value: image.caption 20571 })] 20572 }) 20573 }, image.id || image.url); 20574 }) 20575 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 20576 tagName: "figcaption", 20577 className: "blocks-gallery-caption", 20578 value: caption 20579 })] 20580 }); 20581 } 20582 }; 20583 const deprecated_v4 = { 20584 attributes: { 20585 images: { 20586 type: 'array', 20587 default: [], 20588 source: 'query', 20589 selector: '.blocks-gallery-item', 20590 query: { 20591 url: { 20592 source: 'attribute', 20593 selector: 'img', 20594 attribute: 'src' 20595 }, 20596 fullUrl: { 20597 source: 'attribute', 20598 selector: 'img', 20599 attribute: 'data-full-url' 20600 }, 20601 link: { 20602 source: 'attribute', 20603 selector: 'img', 20604 attribute: 'data-link' 20605 }, 20606 alt: { 20607 source: 'attribute', 20608 selector: 'img', 20609 attribute: 'alt', 20610 default: '' 20611 }, 20612 id: { 20613 source: 'attribute', 20614 selector: 'img', 20615 attribute: 'data-id' 20616 }, 20617 caption: { 20618 type: 'string', 20619 source: 'html', 20620 selector: '.blocks-gallery-item__caption' 20621 } 20622 } 20623 }, 20624 ids: { 20625 type: 'array', 20626 default: [] 20627 }, 20628 columns: { 20629 type: 'number' 20630 }, 20631 caption: { 20632 type: 'string', 20633 source: 'html', 20634 selector: '.blocks-gallery-caption' 20635 }, 20636 imageCrop: { 20637 type: 'boolean', 20638 default: true 20639 }, 20640 linkTo: { 20641 type: 'string', 20642 default: 'none' 20643 } 20644 }, 20645 supports: { 20646 align: true 20647 }, 20648 isEligible({ 20649 ids 20650 }) { 20651 return ids && ids.some(id => typeof id === 'string'); 20652 }, 20653 migrate(attributes) { 20654 return runV2Migration(attributes); 20655 }, 20656 save({ 20657 attributes 20658 }) { 20659 const { 20660 images, 20661 columns = defaultColumnsNumberV1(attributes), 20662 imageCrop, 20663 caption, 20664 linkTo 20665 } = attributes; 20666 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 20667 className: `columns-$columns} $imageCrop ? 'is-cropped' : ''}`, 20668 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 20669 className: "blocks-gallery-grid", 20670 children: images.map(image => { 20671 let href; 20672 switch (linkTo) { 20673 case 'media': 20674 href = image.fullUrl || image.url; 20675 break; 20676 case 'attachment': 20677 href = image.link; 20678 break; 20679 } 20680 const img = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 20681 src: image.url, 20682 alt: image.alt, 20683 "data-id": image.id, 20684 "data-full-url": image.fullUrl, 20685 "data-link": image.link, 20686 className: image.id ? `wp-image-$image.id}` : null 20687 }); 20688 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", { 20689 className: "blocks-gallery-item", 20690 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 20691 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 20692 href: href, 20693 children: img 20694 }) : img, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(image.caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 20695 tagName: "figcaption", 20696 className: "blocks-gallery-item__caption", 20697 value: image.caption 20698 })] 20699 }) 20700 }, image.id || image.url); 20701 }) 20702 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 20703 tagName: "figcaption", 20704 className: "blocks-gallery-caption", 20705 value: caption 20706 })] 20707 }); 20708 } 20709 }; 20710 const gallery_deprecated_v3 = { 20711 attributes: { 20712 images: { 20713 type: 'array', 20714 default: [], 20715 source: 'query', 20716 selector: 'ul.wp-block-gallery .blocks-gallery-item', 20717 query: { 20718 url: { 20719 source: 'attribute', 20720 selector: 'img', 20721 attribute: 'src' 20722 }, 20723 fullUrl: { 20724 source: 'attribute', 20725 selector: 'img', 20726 attribute: 'data-full-url' 20727 }, 20728 alt: { 20729 source: 'attribute', 20730 selector: 'img', 20731 attribute: 'alt', 20732 default: '' 20733 }, 20734 id: { 20735 source: 'attribute', 20736 selector: 'img', 20737 attribute: 'data-id' 20738 }, 20739 link: { 20740 source: 'attribute', 20741 selector: 'img', 20742 attribute: 'data-link' 20743 }, 20744 caption: { 20745 type: 'string', 20746 source: 'html', 20747 selector: 'figcaption' 20748 } 20749 } 20750 }, 20751 ids: { 20752 type: 'array', 20753 default: [] 20754 }, 20755 columns: { 20756 type: 'number' 20757 }, 20758 imageCrop: { 20759 type: 'boolean', 20760 default: true 20761 }, 20762 linkTo: { 20763 type: 'string', 20764 default: 'none' 20765 } 20766 }, 20767 supports: { 20768 align: true 20769 }, 20770 save({ 20771 attributes 20772 }) { 20773 const { 20774 images, 20775 columns = defaultColumnsNumberV1(attributes), 20776 imageCrop, 20777 linkTo 20778 } = attributes; 20779 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 20780 className: `columns-$columns} $imageCrop ? 'is-cropped' : ''}`, 20781 children: images.map(image => { 20782 let href; 20783 switch (linkTo) { 20784 case 'media': 20785 href = image.fullUrl || image.url; 20786 break; 20787 case 'attachment': 20788 href = image.link; 20789 break; 20790 } 20791 const img = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 20792 src: image.url, 20793 alt: image.alt, 20794 "data-id": image.id, 20795 "data-full-url": image.fullUrl, 20796 "data-link": image.link, 20797 className: image.id ? `wp-image-$image.id}` : null 20798 }); 20799 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", { 20800 className: "blocks-gallery-item", 20801 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 20802 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 20803 href: href, 20804 children: img 20805 }) : img, image.caption && image.caption.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 20806 tagName: "figcaption", 20807 value: image.caption 20808 })] 20809 }) 20810 }, image.id || image.url); 20811 }) 20812 }); 20813 }, 20814 migrate(attributes) { 20815 return runV2Migration(attributes); 20816 } 20817 }; 20818 const gallery_deprecated_v2 = { 20819 attributes: { 20820 images: { 20821 type: 'array', 20822 default: [], 20823 source: 'query', 20824 selector: 'ul.wp-block-gallery .blocks-gallery-item', 20825 query: { 20826 url: { 20827 source: 'attribute', 20828 selector: 'img', 20829 attribute: 'src' 20830 }, 20831 alt: { 20832 source: 'attribute', 20833 selector: 'img', 20834 attribute: 'alt', 20835 default: '' 20836 }, 20837 id: { 20838 source: 'attribute', 20839 selector: 'img', 20840 attribute: 'data-id' 20841 }, 20842 link: { 20843 source: 'attribute', 20844 selector: 'img', 20845 attribute: 'data-link' 20846 }, 20847 caption: { 20848 type: 'string', 20849 source: 'html', 20850 selector: 'figcaption' 20851 } 20852 } 20853 }, 20854 columns: { 20855 type: 'number' 20856 }, 20857 imageCrop: { 20858 type: 'boolean', 20859 default: true 20860 }, 20861 linkTo: { 20862 type: 'string', 20863 default: 'none' 20864 } 20865 }, 20866 isEligible({ 20867 images, 20868 ids 20869 }) { 20870 return images && images.length > 0 && (!ids && images || ids && images && ids.length !== images.length || images.some((id, index) => { 20871 if (!id && ids[index] !== null) { 20872 return true; 20873 } 20874 return parseInt(id, 10) !== ids[index]; 20875 })); 20876 }, 20877 migrate(attributes) { 20878 return runV2Migration(attributes); 20879 }, 20880 supports: { 20881 align: true 20882 }, 20883 save({ 20884 attributes 20885 }) { 20886 const { 20887 images, 20888 columns = defaultColumnsNumberV1(attributes), 20889 imageCrop, 20890 linkTo 20891 } = attributes; 20892 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 20893 className: `columns-$columns} $imageCrop ? 'is-cropped' : ''}`, 20894 children: images.map(image => { 20895 let href; 20896 switch (linkTo) { 20897 case 'media': 20898 href = image.url; 20899 break; 20900 case 'attachment': 20901 href = image.link; 20902 break; 20903 } 20904 const img = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 20905 src: image.url, 20906 alt: image.alt, 20907 "data-id": image.id, 20908 "data-link": image.link, 20909 className: image.id ? `wp-image-$image.id}` : null 20910 }); 20911 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", { 20912 className: "blocks-gallery-item", 20913 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 20914 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 20915 href: href, 20916 children: img 20917 }) : img, image.caption && image.caption.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 20918 tagName: "figcaption", 20919 value: image.caption 20920 })] 20921 }) 20922 }, image.id || image.url); 20923 }) 20924 }); 20925 } 20926 }; 20927 const gallery_deprecated_v1 = { 20928 attributes: { 20929 images: { 20930 type: 'array', 20931 default: [], 20932 source: 'query', 20933 selector: 'div.wp-block-gallery figure.blocks-gallery-image img', 20934 query: { 20935 url: { 20936 source: 'attribute', 20937 attribute: 'src' 20938 }, 20939 alt: { 20940 source: 'attribute', 20941 attribute: 'alt', 20942 default: '' 20943 }, 20944 id: { 20945 source: 'attribute', 20946 attribute: 'data-id' 20947 } 20948 } 20949 }, 20950 columns: { 20951 type: 'number' 20952 }, 20953 imageCrop: { 20954 type: 'boolean', 20955 default: true 20956 }, 20957 linkTo: { 20958 type: 'string', 20959 default: 'none' 20960 }, 20961 align: { 20962 type: 'string', 20963 default: 'none' 20964 } 20965 }, 20966 supports: { 20967 align: true 20968 }, 20969 save({ 20970 attributes 20971 }) { 20972 const { 20973 images, 20974 columns = defaultColumnsNumberV1(attributes), 20975 align, 20976 imageCrop, 20977 linkTo 20978 } = attributes; 20979 const className = dist_clsx(`columns-$columns}`, { 20980 alignnone: align === 'none', 20981 'is-cropped': imageCrop 20982 }); 20983 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 20984 className: className, 20985 children: images.map(image => { 20986 let href; 20987 switch (linkTo) { 20988 case 'media': 20989 href = image.url; 20990 break; 20991 case 'attachment': 20992 href = image.link; 20993 break; 20994 } 20995 const img = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 20996 src: image.url, 20997 alt: image.alt, 20998 "data-id": image.id 20999 }); 21000 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 21001 className: "blocks-gallery-image", 21002 children: href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 21003 href: href, 21004 children: img 21005 }) : img 21006 }, image.id || image.url); 21007 }) 21008 }); 21009 }, 21010 migrate(attributes) { 21011 return runV2Migration(attributes); 21012 } 21013 }; 21014 /* harmony default export */ const gallery_deprecated = ([deprecated_v7, deprecated_v6, deprecated_v5, deprecated_v4, gallery_deprecated_v3, gallery_deprecated_v2, gallery_deprecated_v1]); 21015 21016 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/custom-link.js 21017 /** 21018 * WordPress dependencies 21019 */ 21020 21021 21022 const customLink = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 21023 xmlns: "http://www.w3.org/2000/svg", 21024 viewBox: "0 0 24 24", 21025 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 21026 d: "M12.5 14.5h-1V16h1c2.2 0 4-1.8 4-4s-1.8-4-4-4h-1v1.5h1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5zm-4 1.5v-1.5h-1C6.1 14.5 5 13.4 5 12s1.1-2.5 2.5-2.5h1V8h-1c-2.2 0-4 1.8-4 4s1.8 4 4 4h1zm-1-3.2h5v-1.5h-5v1.5zM18 4H9c-1.1 0-2 .9-2 2v.5h1.5V6c0-.3.2-.5.5-.5h9c.3 0 .5.2.5.5v12c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5v-.5H7v.5c0 1.1.9 2 2 2h9c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2z" 21027 }) 21028 }); 21029 /* harmony default export */ const custom_link = (customLink); 21030 21031 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/image.js 21032 /** 21033 * WordPress dependencies 21034 */ 21035 21036 21037 const image_image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 21038 viewBox: "0 0 24 24", 21039 xmlns: "http://www.w3.org/2000/svg", 21040 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 21041 d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v8.4l-3-2.9c-.3-.3-.8-.3-1 0L11.9 14 9 12c-.3-.2-.6-.2-.8 0l-3.6 2.6V5c-.1-.3.1-.5.4-.5zm14 15H5c-.3 0-.5-.2-.5-.5v-2.4l4.1-3 3 1.9c.3.2.7.2.9-.1L16 12l3.5 3.4V19c0 .3-.2.5-.5.5z" 21042 }) 21043 }); 21044 /* harmony default export */ const library_image = (image_image); 21045 21046 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/shared-icon.js 21047 /** 21048 * WordPress dependencies 21049 */ 21050 21051 21052 21053 const sharedIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 21054 icon: library_gallery 21055 }); 21056 21057 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/shared.js 21058 function defaultColumnsNumber(imageCount) { 21059 return imageCount ? Math.min(3, imageCount) : 3; 21060 } 21061 const pickRelevantMediaFiles = (image, sizeSlug = 'large') => { 21062 const imageProps = Object.fromEntries(Object.entries(image !== null && image !== void 0 ? image : {}).filter(([key]) => ['alt', 'id', 'link'].includes(key))); 21063 imageProps.url = image?.sizes?.[sizeSlug]?.url || image?.media_details?.sizes?.[sizeSlug]?.source_url || image?.url || image?.source_url; 21064 const fullUrl = image?.sizes?.full?.url || image?.media_details?.sizes?.full?.source_url; 21065 if (fullUrl) { 21066 imageProps.fullUrl = fullUrl; 21067 } 21068 return imageProps; 21069 }; 21070 21071 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/image/constants.js 21072 const constants_MIN_SIZE = 20; 21073 const constants_LINK_DESTINATION_NONE = 'none'; 21074 const constants_LINK_DESTINATION_MEDIA = 'media'; 21075 const constants_LINK_DESTINATION_ATTACHMENT = 'attachment'; 21076 const LINK_DESTINATION_CUSTOM = 'custom'; 21077 const constants_NEW_TAB_REL = ['noreferrer', 'noopener']; 21078 const constants_ALLOWED_MEDIA_TYPES = ['image']; 21079 const MEDIA_ID_NO_FEATURED_IMAGE_SET = 0; 21080 21081 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/utils.js 21082 /** 21083 * Internal dependencies 21084 */ 21085 21086 21087 21088 /** 21089 * Determines new href and linkDestination values for an Image block from the 21090 * supplied Gallery link destination, or falls back to the Image blocks link. 21091 * 21092 * @param {Object} image Gallery image. 21093 * @param {string} galleryDestination Gallery's selected link destination. 21094 * @param {Object} imageDestination Image blocks attributes. 21095 * @return {Object} New attributes to assign to image block. 21096 */ 21097 function utils_getHrefAndDestination(image, galleryDestination, imageDestination) { 21098 // Gutenberg and WordPress use different constants so if image_default_link_type 21099 // option is set we need to map from the WP Core values. 21100 switch (imageDestination ? imageDestination : galleryDestination) { 21101 case LINK_DESTINATION_MEDIA_WP_CORE: 21102 case LINK_DESTINATION_MEDIA: 21103 return { 21104 href: image?.source_url || image?.url, 21105 // eslint-disable-line camelcase 21106 linkDestination: constants_LINK_DESTINATION_MEDIA 21107 }; 21108 case LINK_DESTINATION_ATTACHMENT_WP_CORE: 21109 case LINK_DESTINATION_ATTACHMENT: 21110 return { 21111 href: image?.link, 21112 linkDestination: constants_LINK_DESTINATION_ATTACHMENT 21113 }; 21114 case LINK_DESTINATION_NONE: 21115 return { 21116 href: undefined, 21117 linkDestination: constants_LINK_DESTINATION_NONE 21118 }; 21119 } 21120 return {}; 21121 } 21122 21123 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/image/utils.js 21124 /** 21125 * Internal dependencies 21126 */ 21127 21128 21129 /** 21130 * Evaluates a CSS aspect-ratio property value as a number. 21131 * 21132 * Degenerate or invalid ratios behave as 'auto'. And 'auto' ratios return NaN. 21133 * 21134 * @see https://drafts.csswg.org/css-sizing-4/#aspect-ratio 21135 * 21136 * @param {string} value CSS aspect-ratio property value. 21137 * @return {number} Numerical aspect ratio or NaN if invalid. 21138 */ 21139 function evalAspectRatio(value) { 21140 const [width, height = 1] = value.split('/').map(Number); 21141 const aspectRatio = width / height; 21142 return aspectRatio === Infinity || aspectRatio === 0 ? NaN : aspectRatio; 21143 } 21144 function removeNewTabRel(currentRel) { 21145 let newRel = currentRel; 21146 if (currentRel !== undefined && newRel) { 21147 constants_NEW_TAB_REL.forEach(relVal => { 21148 const regExp = new RegExp('\\b' + relVal + '\\b', 'gi'); 21149 newRel = newRel.replace(regExp, ''); 21150 }); 21151 21152 // Only trim if NEW_TAB_REL values was replaced. 21153 if (newRel !== currentRel) { 21154 newRel = newRel.trim(); 21155 } 21156 if (!newRel) { 21157 newRel = undefined; 21158 } 21159 } 21160 return newRel; 21161 } 21162 21163 /** 21164 * Helper to get the link target settings to be stored. 21165 * 21166 * @param {boolean} value The new link target value. 21167 * @param {Object} attributes Block attributes. 21168 * @param {Object} attributes.rel Image block's rel attribute. 21169 * 21170 * @return {Object} Updated link target settings. 21171 */ 21172 function getUpdatedLinkTargetSettings(value, { 21173 rel 21174 }) { 21175 const linkTarget = value ? '_blank' : undefined; 21176 let updatedRel; 21177 if (!linkTarget && !rel) { 21178 updatedRel = undefined; 21179 } else { 21180 updatedRel = removeNewTabRel(rel); 21181 } 21182 return { 21183 linkTarget, 21184 rel: updatedRel 21185 }; 21186 } 21187 21188 /** 21189 * Determines new Image block attributes size selection. 21190 * 21191 * @param {Object} image Media file object for gallery image. 21192 * @param {string} size Selected size slug to apply. 21193 */ 21194 function getImageSizeAttributes(image, size) { 21195 const url = image?.media_details?.sizes?.[size]?.source_url; 21196 if (url) { 21197 return { 21198 url, 21199 width: undefined, 21200 height: undefined, 21201 sizeSlug: size 21202 }; 21203 } 21204 return {}; 21205 } 21206 21207 /** 21208 * Checks if the file has a valid file type. 21209 * 21210 * @param {File} file - The file to check. 21211 * @return {boolean} - Returns true if the file has a valid file type, otherwise false. 21212 */ 21213 function isValidFileType(file) { 21214 return constants_ALLOWED_MEDIA_TYPES.some(mediaType => file.type.indexOf(mediaType) === 0); 21215 } 21216 21217 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/gallery.js 21218 /** 21219 * External dependencies 21220 */ 21221 21222 21223 /** 21224 * WordPress dependencies 21225 */ 21226 21227 21228 21229 /** 21230 * Internal dependencies 21231 */ 21232 21233 21234 21235 function Gallery(props) { 21236 const { 21237 attributes, 21238 isSelected, 21239 setAttributes, 21240 mediaPlaceholder, 21241 insertBlocksAfter, 21242 blockProps, 21243 __unstableLayoutClassNames: layoutClassNames, 21244 isContentLocked, 21245 multiGallerySelection 21246 } = props; 21247 const { 21248 align, 21249 columns, 21250 imageCrop 21251 } = attributes; 21252 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 21253 ...blockProps, 21254 className: dist_clsx(blockProps.className, layoutClassNames, 'blocks-gallery-grid', { 21255 [`align$align}`]: align, 21256 [`columns-$columns}`]: columns !== undefined, 21257 [`columns-default`]: columns === undefined, 21258 'is-cropped': imageCrop 21259 }), 21260 children: [blockProps.children, isSelected && !blockProps.children && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.View, { 21261 className: "blocks-gallery-media-placeholder-wrapper", 21262 children: mediaPlaceholder 21263 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Caption, { 21264 attributes: attributes, 21265 setAttributes: setAttributes, 21266 isSelected: isSelected, 21267 insertBlocksAfter: insertBlocksAfter, 21268 showToolbarButton: !multiGallerySelection && !isContentLocked, 21269 className: "blocks-gallery-caption", 21270 label: (0,external_wp_i18n_namespaceObject.__)('Gallery caption text'), 21271 placeholder: (0,external_wp_i18n_namespaceObject.__)('Add gallery caption') 21272 })] 21273 }); 21274 } 21275 21276 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/use-image-sizes.js 21277 /** 21278 * WordPress dependencies 21279 */ 21280 21281 21282 /** 21283 * Calculates the image sizes that are available for the current gallery images in order to 21284 * populate the 'Resolution' selector. 21285 * 21286 * @param {Array} images Basic image block data taken from current gallery innerBlock. 21287 * @param {boolean} isSelected Is the block currently selected in the editor. 21288 * @param {Function} getSettings Block editor store selector. 21289 * 21290 * @return {Array} An array of image size options. 21291 */ 21292 function useImageSizes(images, isSelected, getSettings) { 21293 return (0,external_wp_element_namespaceObject.useMemo)(() => getImageSizing(), [images, isSelected]); 21294 function getImageSizing() { 21295 if (!images || images.length === 0) { 21296 return; 21297 } 21298 const { 21299 imageSizes 21300 } = getSettings(); 21301 let resizedImages = {}; 21302 if (isSelected) { 21303 resizedImages = images.reduce((currentResizedImages, img) => { 21304 if (!img.id) { 21305 return currentResizedImages; 21306 } 21307 const sizes = imageSizes.reduce((currentSizes, size) => { 21308 const defaultUrl = img.sizes?.[size.slug]?.url; 21309 const mediaDetailsUrl = img.media_details?.sizes?.[size.slug]?.source_url; 21310 return { 21311 ...currentSizes, 21312 [size.slug]: defaultUrl || mediaDetailsUrl 21313 }; 21314 }, {}); 21315 return { 21316 ...currentResizedImages, 21317 [parseInt(img.id, 10)]: sizes 21318 }; 21319 }, {}); 21320 } 21321 const resizedImageSizes = Object.values(resizedImages); 21322 return imageSizes.filter(({ 21323 slug 21324 }) => resizedImageSizes.some(sizes => sizes[slug])).map(({ 21325 name, 21326 slug 21327 }) => ({ 21328 value: slug, 21329 label: name 21330 })); 21331 } 21332 } 21333 21334 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/use-get-new-images.js 21335 /** 21336 * WordPress dependencies 21337 */ 21338 21339 21340 /** 21341 * Keeps track of images already in the gallery to allow new innerBlocks to be identified. This 21342 * is required so default gallery attributes can be applied without overwriting any custom 21343 * attributes applied to existing images. 21344 * 21345 * @param {Array} images Basic image block data taken from current gallery innerBlock 21346 * @param {Array} imageData The related image data for each of the current gallery images. 21347 * 21348 * @return {Array} An array of any new images that have been added to the gallery. 21349 */ 21350 function useGetNewImages(images, imageData) { 21351 const [currentImages, setCurrentImages] = (0,external_wp_element_namespaceObject.useState)([]); 21352 return (0,external_wp_element_namespaceObject.useMemo)(() => getNewImages(), [images, imageData]); 21353 function getNewImages() { 21354 let imagesUpdated = false; 21355 21356 // First lets check if any images have been deleted. 21357 const newCurrentImages = currentImages.filter(currentImg => images.find(img => { 21358 return currentImg.clientId === img.clientId; 21359 })); 21360 if (newCurrentImages.length < currentImages.length) { 21361 imagesUpdated = true; 21362 } 21363 21364 // Now lets see if we have any images hydrated from saved content and if so 21365 // add them to currentImages state. 21366 images.forEach(image => { 21367 if (image.fromSavedContent && !newCurrentImages.find(currentImage => currentImage.id === image.id)) { 21368 imagesUpdated = true; 21369 newCurrentImages.push(image); 21370 } 21371 }); 21372 21373 // Now check for any new images that have been added to InnerBlocks and for which 21374 // we have the imageData we need for setting default block attributes. 21375 const newImages = images.filter(image => !newCurrentImages.find(currentImage => image.clientId && currentImage.clientId === image.clientId) && imageData?.find(img => img.id === image.id) && !image.fromSavedConent); 21376 if (imagesUpdated || newImages?.length > 0) { 21377 setCurrentImages([...newCurrentImages, ...newImages]); 21378 } 21379 return newImages.length > 0 ? newImages : null; 21380 } 21381 } 21382 21383 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/use-get-media.js 21384 /** 21385 * WordPress dependencies 21386 */ 21387 21388 21389 const EMPTY_IMAGE_MEDIA = []; 21390 21391 /** 21392 * Retrieves the extended media info for each gallery image from the store. This is used to 21393 * determine which image size options are available for the current gallery. 21394 * 21395 * @param {Array} innerBlockImages An array of the innerBlock images currently in the gallery. 21396 * 21397 * @return {Array} An array of media info options for each gallery image. 21398 */ 21399 function useGetMedia(innerBlockImages) { 21400 return (0,external_wp_data_namespaceObject.useSelect)(select => { 21401 var _select$getMediaItems; 21402 const imageIds = innerBlockImages.map(imageBlock => imageBlock.attributes.id).filter(id => id !== undefined); 21403 if (imageIds.length === 0) { 21404 return EMPTY_IMAGE_MEDIA; 21405 } 21406 return (_select$getMediaItems = select(external_wp_coreData_namespaceObject.store).getMediaItems({ 21407 include: imageIds.join(','), 21408 per_page: -1, 21409 orderby: 'include' 21410 })) !== null && _select$getMediaItems !== void 0 ? _select$getMediaItems : EMPTY_IMAGE_MEDIA; 21411 }, [innerBlockImages]); 21412 } 21413 21414 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/gap-styles.js 21415 /** 21416 * WordPress dependencies 21417 */ 21418 21419 function GapStyles({ 21420 blockGap, 21421 clientId 21422 }) { 21423 // --gallery-block--gutter-size is deprecated. --wp--style--gallery-gap-default should be used by themes that want to set a default 21424 // gap on the gallery. 21425 const fallbackValue = `var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )`; 21426 let gapValue = fallbackValue; 21427 let column = fallbackValue; 21428 let row; 21429 21430 // Check for the possibility of split block gap values. See: https://github.com/WordPress/gutenberg/pull/37736 21431 if (!!blockGap) { 21432 row = typeof blockGap === 'string' ? (0,external_wp_blockEditor_namespaceObject.__experimentalGetGapCSSValue)(blockGap) : (0,external_wp_blockEditor_namespaceObject.__experimentalGetGapCSSValue)(blockGap?.top) || fallbackValue; 21433 column = typeof blockGap === 'string' ? (0,external_wp_blockEditor_namespaceObject.__experimentalGetGapCSSValue)(blockGap) : (0,external_wp_blockEditor_namespaceObject.__experimentalGetGapCSSValue)(blockGap?.left) || fallbackValue; 21434 gapValue = row === column ? row : `$row} $column}`; 21435 } 21436 21437 // The unstable gallery gap calculation requires a real value (such as `0px`) and not `0`. 21438 const gap = `#block-$clientId} { 21439 --wp--style--unstable-gallery-gap: $column === '0' ? '0px' : column}; 21440 gap: $gapValue} 21441 }`; 21442 (0,external_wp_blockEditor_namespaceObject.useStyleOverride)({ 21443 css: gap 21444 }); 21445 return null; 21446 } 21447 21448 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/edit.js 21449 /** 21450 * External dependencies 21451 */ 21452 21453 21454 /** 21455 * WordPress dependencies 21456 */ 21457 21458 21459 21460 21461 21462 21463 21464 21465 21466 21467 21468 /** 21469 * Internal dependencies 21470 */ 21471 21472 21473 21474 21475 21476 21477 21478 21479 21480 21481 21482 21483 21484 const MAX_COLUMNS = 8; 21485 const linkOptions = [{ 21486 icon: custom_link, 21487 label: (0,external_wp_i18n_namespaceObject.__)('Link images to attachment pages'), 21488 value: LINK_DESTINATION_ATTACHMENT, 21489 noticeText: (0,external_wp_i18n_namespaceObject.__)('Attachment Pages') 21490 }, { 21491 icon: library_image, 21492 label: (0,external_wp_i18n_namespaceObject.__)('Link images to media files'), 21493 value: LINK_DESTINATION_MEDIA, 21494 noticeText: (0,external_wp_i18n_namespaceObject.__)('Media Files') 21495 }, { 21496 icon: link_off, 21497 label: (0,external_wp_i18n_namespaceObject._x)('None', 'Media item link option'), 21498 value: LINK_DESTINATION_NONE, 21499 noticeText: (0,external_wp_i18n_namespaceObject.__)('None') 21500 }]; 21501 const edit_ALLOWED_MEDIA_TYPES = ['image']; 21502 const PLACEHOLDER_TEXT = external_wp_element_namespaceObject.Platform.isNative ? (0,external_wp_i18n_namespaceObject.__)('Add media') : (0,external_wp_i18n_namespaceObject.__)('Drag images, upload new ones or select files from your library.'); 21503 const MOBILE_CONTROL_PROPS_RANGE_CONTROL = external_wp_element_namespaceObject.Platform.isNative ? { 21504 type: 'stepper' 21505 } : {}; 21506 const gallery_edit_DEFAULT_BLOCK = { 21507 name: 'core/image' 21508 }; 21509 const EMPTY_ARRAY = []; 21510 function GalleryEdit(props) { 21511 const { 21512 setAttributes, 21513 attributes, 21514 className, 21515 clientId, 21516 isSelected, 21517 insertBlocksAfter, 21518 isContentLocked, 21519 onFocus 21520 } = props; 21521 const { 21522 columns, 21523 imageCrop, 21524 randomOrder, 21525 linkTarget, 21526 linkTo, 21527 sizeSlug 21528 } = attributes; 21529 const { 21530 __unstableMarkNextChangeAsNotPersistent, 21531 replaceInnerBlocks, 21532 updateBlockAttributes, 21533 selectBlock 21534 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 21535 const { 21536 createSuccessNotice, 21537 createErrorNotice 21538 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 21539 const { 21540 getBlock, 21541 getSettings, 21542 innerBlockImages, 21543 blockWasJustInserted, 21544 multiGallerySelection 21545 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 21546 var _getBlock$innerBlocks; 21547 const { 21548 getBlockName, 21549 getMultiSelectedBlockClientIds, 21550 getSettings: _getSettings, 21551 getBlock: _getBlock, 21552 wasBlockJustInserted 21553 } = select(external_wp_blockEditor_namespaceObject.store); 21554 const multiSelectedClientIds = getMultiSelectedBlockClientIds(); 21555 return { 21556 getBlock: _getBlock, 21557 getSettings: _getSettings, 21558 innerBlockImages: (_getBlock$innerBlocks = _getBlock(clientId)?.innerBlocks) !== null && _getBlock$innerBlocks !== void 0 ? _getBlock$innerBlocks : EMPTY_ARRAY, 21559 blockWasJustInserted: wasBlockJustInserted(clientId, 'inserter_menu'), 21560 multiGallerySelection: multiSelectedClientIds.length && multiSelectedClientIds.every(_clientId => getBlockName(_clientId) === 'core/gallery') 21561 }; 21562 }, [clientId]); 21563 const images = (0,external_wp_element_namespaceObject.useMemo)(() => innerBlockImages?.map(block => ({ 21564 clientId: block.clientId, 21565 id: block.attributes.id, 21566 url: block.attributes.url, 21567 attributes: block.attributes, 21568 fromSavedContent: Boolean(block.originalContent) 21569 })), [innerBlockImages]); 21570 const imageData = useGetMedia(innerBlockImages); 21571 const newImages = useGetNewImages(images, imageData); 21572 (0,external_wp_element_namespaceObject.useEffect)(() => { 21573 newImages?.forEach(newImage => { 21574 // Update the images data without creating new undo levels. 21575 __unstableMarkNextChangeAsNotPersistent(); 21576 updateBlockAttributes(newImage.clientId, { 21577 ...buildImageAttributes(newImage.attributes), 21578 id: newImage.id, 21579 align: undefined 21580 }); 21581 }); 21582 }, [newImages]); 21583 const imageSizeOptions = useImageSizes(imageData, isSelected, getSettings); 21584 21585 /** 21586 * Determines the image attributes that should be applied to an image block 21587 * after the gallery updates. 21588 * 21589 * The gallery will receive the full collection of images when a new image 21590 * is added. As a result we need to reapply the image's original settings if 21591 * it already existed in the gallery. If the image is in fact new, we need 21592 * to apply the gallery's current settings to the image. 21593 * 21594 * @param {Object} imageAttributes Media object for the actual image. 21595 * @return {Object} Attributes to set on the new image block. 21596 */ 21597 function buildImageAttributes(imageAttributes) { 21598 const image = imageAttributes.id ? imageData.find(({ 21599 id 21600 }) => id === imageAttributes.id) : null; 21601 let newClassName; 21602 if (imageAttributes.className && imageAttributes.className !== '') { 21603 newClassName = imageAttributes.className; 21604 } 21605 let newLinkTarget; 21606 if (imageAttributes.linkTarget || imageAttributes.rel) { 21607 // When transformed from image blocks, the link destination and rel attributes are inherited. 21608 newLinkTarget = { 21609 linkTarget: imageAttributes.linkTarget, 21610 rel: imageAttributes.rel 21611 }; 21612 } else { 21613 // When an image is added, update the link destination and rel attributes according to the gallery settings 21614 newLinkTarget = getUpdatedLinkTargetSettings(linkTarget, attributes); 21615 } 21616 return { 21617 ...pickRelevantMediaFiles(image, sizeSlug), 21618 ...utils_getHrefAndDestination(image, linkTo, imageAttributes?.linkDestination), 21619 ...newLinkTarget, 21620 className: newClassName, 21621 sizeSlug, 21622 caption: imageAttributes.caption || image.caption?.raw, 21623 alt: imageAttributes.alt || image.alt_text 21624 }; 21625 } 21626 function isValidFileType(file) { 21627 // It's necessary to retrieve the media type from the raw image data for already-uploaded images on native. 21628 const nativeFileData = external_wp_element_namespaceObject.Platform.isNative && file.id ? imageData.find(({ 21629 id 21630 }) => id === file.id) : null; 21631 const mediaTypeSelector = nativeFileData ? nativeFileData?.media_type : file.type; 21632 return edit_ALLOWED_MEDIA_TYPES.some(mediaType => mediaTypeSelector?.indexOf(mediaType) === 0) || file.blob; 21633 } 21634 function updateImages(selectedImages) { 21635 const newFileUploads = Object.prototype.toString.call(selectedImages) === '[object FileList]'; 21636 const imageArray = newFileUploads ? Array.from(selectedImages).map(file => { 21637 if (!file.url) { 21638 return { 21639 blob: (0,external_wp_blob_namespaceObject.createBlobURL)(file) 21640 }; 21641 } 21642 return file; 21643 }) : selectedImages; 21644 if (!imageArray.every(isValidFileType)) { 21645 createErrorNotice((0,external_wp_i18n_namespaceObject.__)('If uploading to a gallery all files need to be image formats'), { 21646 id: 'gallery-upload-invalid-file', 21647 type: 'snackbar' 21648 }); 21649 } 21650 const processedImages = imageArray.filter(file => file.url || isValidFileType(file)).map(file => { 21651 if (!file.url) { 21652 return { 21653 blob: file.blob || (0,external_wp_blob_namespaceObject.createBlobURL)(file) 21654 }; 21655 } 21656 return file; 21657 }); 21658 21659 // Because we are reusing existing innerImage blocks any reordering 21660 // done in the media library will be lost so we need to reapply that ordering 21661 // once the new image blocks are merged in with existing. 21662 const newOrderMap = processedImages.reduce((result, image, index) => (result[image.id] = index, result), {}); 21663 const existingImageBlocks = !newFileUploads ? innerBlockImages.filter(block => processedImages.find(img => img.id === block.attributes.id)) : innerBlockImages; 21664 const newImageList = processedImages.filter(img => !existingImageBlocks.find(existingImg => img.id === existingImg.attributes.id)); 21665 const newBlocks = newImageList.map(image => { 21666 return (0,external_wp_blocks_namespaceObject.createBlock)('core/image', { 21667 id: image.id, 21668 blob: image.blob, 21669 url: image.url, 21670 caption: image.caption, 21671 alt: image.alt 21672 }); 21673 }); 21674 replaceInnerBlocks(clientId, existingImageBlocks.concat(newBlocks).sort((a, b) => newOrderMap[a.attributes.id] - newOrderMap[b.attributes.id])); 21675 21676 // Select the first block to scroll into view when new blocks are added. 21677 if (newBlocks?.length > 0) { 21678 selectBlock(newBlocks[0].clientId); 21679 } 21680 } 21681 function onUploadError(message) { 21682 createErrorNotice(message, { 21683 type: 'snackbar' 21684 }); 21685 } 21686 function setLinkTo(value) { 21687 setAttributes({ 21688 linkTo: value 21689 }); 21690 const changedAttributes = {}; 21691 const blocks = []; 21692 getBlock(clientId).innerBlocks.forEach(block => { 21693 blocks.push(block.clientId); 21694 const image = block.attributes.id ? imageData.find(({ 21695 id 21696 }) => id === block.attributes.id) : null; 21697 changedAttributes[block.clientId] = utils_getHrefAndDestination(image, value); 21698 }); 21699 updateBlockAttributes(blocks, changedAttributes, true); 21700 const linkToText = [...linkOptions].find(linkType => linkType.value === value); 21701 createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: image size settings */ 21702 (0,external_wp_i18n_namespaceObject.__)('All gallery image links updated to: %s'), linkToText.noticeText), { 21703 id: 'gallery-attributes-linkTo', 21704 type: 'snackbar' 21705 }); 21706 } 21707 function setColumnsNumber(value) { 21708 setAttributes({ 21709 columns: value 21710 }); 21711 } 21712 function toggleImageCrop() { 21713 setAttributes({ 21714 imageCrop: !imageCrop 21715 }); 21716 } 21717 function toggleRandomOrder() { 21718 setAttributes({ 21719 randomOrder: !randomOrder 21720 }); 21721 } 21722 function toggleOpenInNewTab(openInNewTab) { 21723 const newLinkTarget = openInNewTab ? '_blank' : undefined; 21724 setAttributes({ 21725 linkTarget: newLinkTarget 21726 }); 21727 const changedAttributes = {}; 21728 const blocks = []; 21729 getBlock(clientId).innerBlocks.forEach(block => { 21730 blocks.push(block.clientId); 21731 changedAttributes[block.clientId] = getUpdatedLinkTargetSettings(newLinkTarget, block.attributes); 21732 }); 21733 updateBlockAttributes(blocks, changedAttributes, true); 21734 const noticeText = openInNewTab ? (0,external_wp_i18n_namespaceObject.__)('All gallery images updated to open in new tab') : (0,external_wp_i18n_namespaceObject.__)('All gallery images updated to not open in new tab'); 21735 createSuccessNotice(noticeText, { 21736 id: 'gallery-attributes-openInNewTab', 21737 type: 'snackbar' 21738 }); 21739 } 21740 function updateImagesSize(newSizeSlug) { 21741 setAttributes({ 21742 sizeSlug: newSizeSlug 21743 }); 21744 const changedAttributes = {}; 21745 const blocks = []; 21746 getBlock(clientId).innerBlocks.forEach(block => { 21747 blocks.push(block.clientId); 21748 const image = block.attributes.id ? imageData.find(({ 21749 id 21750 }) => id === block.attributes.id) : null; 21751 changedAttributes[block.clientId] = getImageSizeAttributes(image, newSizeSlug); 21752 }); 21753 updateBlockAttributes(blocks, changedAttributes, true); 21754 const imageSize = imageSizeOptions.find(size => size.value === newSizeSlug); 21755 createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: image size settings */ 21756 (0,external_wp_i18n_namespaceObject.__)('All gallery image sizes updated to: %s'), imageSize.label), { 21757 id: 'gallery-attributes-sizeSlug', 21758 type: 'snackbar' 21759 }); 21760 } 21761 (0,external_wp_element_namespaceObject.useEffect)(() => { 21762 // linkTo attribute must be saved so blocks don't break when changing image_default_link_type in options.php. 21763 if (!linkTo) { 21764 __unstableMarkNextChangeAsNotPersistent(); 21765 setAttributes({ 21766 linkTo: window?.wp?.media?.view?.settings?.defaultProps?.link || LINK_DESTINATION_NONE 21767 }); 21768 } 21769 }, [linkTo]); 21770 const hasImages = !!images.length; 21771 const hasImageIds = hasImages && images.some(image => !!image.id); 21772 const imagesUploading = images.some(img => !external_wp_element_namespaceObject.Platform.isNative ? !img.id && img.url?.indexOf('blob:') === 0 : img.url?.indexOf('file:') === 0); 21773 21774 // MediaPlaceholder props are different between web and native hence, we provide a platform-specific set. 21775 const mediaPlaceholderProps = external_wp_element_namespaceObject.Platform.select({ 21776 web: { 21777 addToGallery: false, 21778 disableMediaButtons: imagesUploading, 21779 value: {} 21780 }, 21781 native: { 21782 addToGallery: hasImageIds, 21783 isAppender: hasImages, 21784 disableMediaButtons: hasImages && !isSelected || imagesUploading, 21785 value: hasImageIds ? images : {}, 21786 autoOpenMediaUpload: !hasImages && isSelected && blockWasJustInserted, 21787 onFocus 21788 } 21789 }); 21790 const mediaPlaceholder = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaPlaceholder, { 21791 handleUpload: false, 21792 icon: sharedIcon, 21793 labels: { 21794 title: (0,external_wp_i18n_namespaceObject.__)('Gallery'), 21795 instructions: PLACEHOLDER_TEXT 21796 }, 21797 onSelect: updateImages, 21798 accept: "image/*", 21799 allowedTypes: edit_ALLOWED_MEDIA_TYPES, 21800 multiple: true, 21801 onError: onUploadError, 21802 ...mediaPlaceholderProps 21803 }); 21804 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 21805 className: dist_clsx(className, 'has-nested-images') 21806 }); 21807 const nativeInnerBlockProps = external_wp_element_namespaceObject.Platform.isNative && { 21808 marginHorizontal: 0, 21809 marginVertical: 0 21810 }; 21811 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 21812 defaultBlock: gallery_edit_DEFAULT_BLOCK, 21813 directInsert: true, 21814 orientation: 'horizontal', 21815 renderAppender: false, 21816 ...nativeInnerBlockProps 21817 }); 21818 if (!hasImages) { 21819 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.View, { 21820 ...innerBlocksProps, 21821 children: [innerBlocksProps.children, mediaPlaceholder] 21822 }); 21823 } 21824 const hasLinkTo = linkTo && linkTo !== 'none'; 21825 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 21826 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 21827 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 21828 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 21829 children: [images.length > 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 21830 __nextHasNoMarginBottom: true, 21831 label: (0,external_wp_i18n_namespaceObject.__)('Columns'), 21832 value: columns ? columns : defaultColumnsNumber(images.length), 21833 onChange: setColumnsNumber, 21834 min: 1, 21835 max: Math.min(MAX_COLUMNS, images.length), 21836 ...MOBILE_CONTROL_PROPS_RANGE_CONTROL, 21837 required: true, 21838 __next40pxDefaultSize: true 21839 }), imageSizeOptions?.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 21840 __nextHasNoMarginBottom: true, 21841 label: (0,external_wp_i18n_namespaceObject.__)('Resolution'), 21842 help: (0,external_wp_i18n_namespaceObject.__)('Select the size of the source images.'), 21843 value: sizeSlug, 21844 options: imageSizeOptions, 21845 onChange: updateImagesSize, 21846 hideCancelButton: true, 21847 size: "__unstable-large" 21848 }), external_wp_element_namespaceObject.Platform.isNative ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 21849 __nextHasNoMarginBottom: true, 21850 label: (0,external_wp_i18n_namespaceObject.__)('Link'), 21851 value: linkTo, 21852 onChange: setLinkTo, 21853 options: linkOptions, 21854 hideCancelButton: true, 21855 size: "__unstable-large" 21856 }) : null, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 21857 __nextHasNoMarginBottom: true, 21858 label: (0,external_wp_i18n_namespaceObject.__)('Crop images to fit'), 21859 checked: !!imageCrop, 21860 onChange: toggleImageCrop 21861 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 21862 __nextHasNoMarginBottom: true, 21863 label: (0,external_wp_i18n_namespaceObject.__)('Randomize order'), 21864 checked: !!randomOrder, 21865 onChange: toggleRandomOrder 21866 }), hasLinkTo && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 21867 __nextHasNoMarginBottom: true, 21868 label: (0,external_wp_i18n_namespaceObject.__)('Open images in new tab'), 21869 checked: linkTarget === '_blank', 21870 onChange: toggleOpenInNewTab 21871 }), external_wp_element_namespaceObject.Platform.isWeb && !imageSizeOptions && hasImageIds && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.BaseControl, { 21872 className: "gallery-image-sizes", 21873 __nextHasNoMarginBottom: true, 21874 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.BaseControl.VisualLabel, { 21875 children: (0,external_wp_i18n_namespaceObject.__)('Resolution') 21876 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.View, { 21877 className: "gallery-image-sizes__loading", 21878 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}), (0,external_wp_i18n_namespaceObject.__)('Loading options…')] 21879 })] 21880 })] 21881 }) 21882 }), external_wp_element_namespaceObject.Platform.isWeb ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 21883 group: "block", 21884 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarDropdownMenu, { 21885 icon: library_link, 21886 label: (0,external_wp_i18n_namespaceObject.__)('Link'), 21887 children: ({ 21888 onClose 21889 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, { 21890 children: linkOptions.map(linkItem => { 21891 const isOptionSelected = linkTo === linkItem.value; 21892 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { 21893 isSelected: isOptionSelected, 21894 className: dist_clsx('components-dropdown-menu__menu-item', { 21895 'is-active': isOptionSelected 21896 }), 21897 iconPosition: "left", 21898 icon: linkItem.icon, 21899 onClick: () => { 21900 setLinkTo(linkItem.value); 21901 onClose(); 21902 }, 21903 role: "menuitemradio", 21904 children: linkItem.label 21905 }, linkItem.value); 21906 }) 21907 }) 21908 }) 21909 }) : null, external_wp_element_namespaceObject.Platform.isWeb && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 21910 children: [!multiGallerySelection && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 21911 group: "other", 21912 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaReplaceFlow, { 21913 allowedTypes: edit_ALLOWED_MEDIA_TYPES, 21914 accept: "image/*", 21915 handleUpload: false, 21916 onSelect: updateImages, 21917 name: (0,external_wp_i18n_namespaceObject.__)('Add'), 21918 multiple: true, 21919 mediaIds: images.filter(image => image.id).map(image => image.id), 21920 addToGallery: hasImageIds 21921 }) 21922 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GapStyles, { 21923 blockGap: attributes.style?.spacing?.blockGap, 21924 clientId: clientId 21925 })] 21926 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Gallery, { 21927 ...props, 21928 isContentLocked: isContentLocked, 21929 images: images, 21930 mediaPlaceholder: !hasImages || external_wp_element_namespaceObject.Platform.isNative ? mediaPlaceholder : undefined, 21931 blockProps: innerBlocksProps, 21932 insertBlocksAfter: insertBlocksAfter, 21933 multiGallerySelection: multiGallerySelection 21934 })] 21935 }); 21936 } 21937 21938 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/save.js 21939 /** 21940 * External dependencies 21941 */ 21942 21943 21944 /** 21945 * WordPress dependencies 21946 */ 21947 21948 21949 21950 function saveWithInnerBlocks({ 21951 attributes 21952 }) { 21953 const { 21954 caption, 21955 columns, 21956 imageCrop 21957 } = attributes; 21958 const className = dist_clsx('has-nested-images', { 21959 [`columns-$columns}`]: columns !== undefined, 21960 [`columns-default`]: columns === undefined, 21961 'is-cropped': imageCrop 21962 }); 21963 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save({ 21964 className 21965 }); 21966 const innerBlocksProps = external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(blockProps); 21967 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 21968 ...innerBlocksProps, 21969 children: [innerBlocksProps.children, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 21970 tagName: "figcaption", 21971 className: dist_clsx('blocks-gallery-caption', (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('caption')), 21972 value: caption 21973 })] 21974 }); 21975 } 21976 21977 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/transforms.js 21978 /** 21979 * WordPress dependencies 21980 */ 21981 21982 21983 21984 21985 /** 21986 * Internal dependencies 21987 */ 21988 21989 const parseShortcodeIds = ids => { 21990 if (!ids) { 21991 return []; 21992 } 21993 return ids.split(',').map(id => parseInt(id, 10)); 21994 }; 21995 21996 /** 21997 * Third party block plugins don't have an easy way to detect if the 21998 * innerBlocks version of the Gallery is running when they run a 21999 * 3rdPartyBlock -> GalleryBlock transform so this tranform filter 22000 * will handle this. Once the innerBlocks version is the default 22001 * in a core release, this could be deprecated and removed after 22002 * plugin authors have been given time to update transforms. 22003 * 22004 * @typedef {Object} Attributes 22005 * @typedef {Object} Block 22006 * @property {Attributes} attributes The attributes of the block. 22007 * @param {Block} block The transformed block. 22008 * @return {Block} The transformed block. 22009 */ 22010 function updateThirdPartyTransformToGallery(block) { 22011 if (block.name === 'core/gallery' && block.attributes?.images.length > 0) { 22012 const innerBlocks = block.attributes.images.map(({ 22013 url, 22014 id, 22015 alt 22016 }) => { 22017 return (0,external_wp_blocks_namespaceObject.createBlock)('core/image', { 22018 url, 22019 id: id ? parseInt(id, 10) : null, 22020 alt, 22021 sizeSlug: block.attributes.sizeSlug, 22022 linkDestination: block.attributes.linkDestination 22023 }); 22024 }); 22025 delete block.attributes.ids; 22026 delete block.attributes.images; 22027 block.innerBlocks = innerBlocks; 22028 } 22029 return block; 22030 } 22031 (0,external_wp_hooks_namespaceObject.addFilter)('blocks.switchToBlockType.transformedBlock', 'core/gallery/update-third-party-transform-to', updateThirdPartyTransformToGallery); 22032 22033 /** 22034 * Third party block plugins don't have an easy way to detect if the 22035 * innerBlocks version of the Gallery is running when they run a 22036 * GalleryBlock -> 3rdPartyBlock transform so this transform filter 22037 * will handle this. Once the innerBlocks version is the default 22038 * in a core release, this could be deprecated and removed after 22039 * plugin authors have been given time to update transforms. 22040 * 22041 * @typedef {Object} Attributes 22042 * @typedef {Object} Block 22043 * @property {Attributes} attributes The attributes of the block. 22044 * @param {Block} toBlock The block to transform to. 22045 * @param {Block[]} fromBlocks The blocks to transform from. 22046 * @return {Block} The transformed block. 22047 */ 22048 function updateThirdPartyTransformFromGallery(toBlock, fromBlocks) { 22049 const from = Array.isArray(fromBlocks) ? fromBlocks : [fromBlocks]; 22050 const galleryBlock = from.find(transformedBlock => transformedBlock.name === 'core/gallery' && transformedBlock.innerBlocks.length > 0 && !transformedBlock.attributes.images?.length > 0 && !toBlock.name.includes('core/')); 22051 if (galleryBlock) { 22052 const images = galleryBlock.innerBlocks.map(({ 22053 attributes: { 22054 url, 22055 id, 22056 alt 22057 } 22058 }) => ({ 22059 url, 22060 id: id ? parseInt(id, 10) : null, 22061 alt 22062 })); 22063 const ids = images.map(({ 22064 id 22065 }) => id); 22066 galleryBlock.attributes.images = images; 22067 galleryBlock.attributes.ids = ids; 22068 } 22069 return toBlock; 22070 } 22071 (0,external_wp_hooks_namespaceObject.addFilter)('blocks.switchToBlockType.transformedBlock', 'core/gallery/update-third-party-transform-from', updateThirdPartyTransformFromGallery); 22072 const gallery_transforms_transforms = { 22073 from: [{ 22074 type: 'block', 22075 isMultiBlock: true, 22076 blocks: ['core/image'], 22077 transform: attributes => { 22078 // Init the align and size from the first item which may be either the placeholder or an image. 22079 let { 22080 align, 22081 sizeSlug 22082 } = attributes[0]; 22083 // Loop through all the images and check if they have the same align and size. 22084 align = attributes.every(attribute => attribute.align === align) ? align : undefined; 22085 sizeSlug = attributes.every(attribute => attribute.sizeSlug === sizeSlug) ? sizeSlug : undefined; 22086 const validImages = attributes.filter(({ 22087 url 22088 }) => url); 22089 const innerBlocks = validImages.map(image => { 22090 // Gallery images can't currently be resized so make sure height and width are undefined. 22091 image.width = undefined; 22092 image.height = undefined; 22093 return (0,external_wp_blocks_namespaceObject.createBlock)('core/image', image); 22094 }); 22095 return (0,external_wp_blocks_namespaceObject.createBlock)('core/gallery', { 22096 align, 22097 sizeSlug 22098 }, innerBlocks); 22099 } 22100 }, { 22101 type: 'shortcode', 22102 tag: 'gallery', 22103 transform({ 22104 named: { 22105 ids, 22106 columns = 3, 22107 link, 22108 orderby 22109 } 22110 }) { 22111 const imageIds = parseShortcodeIds(ids).map(id => parseInt(id, 10)); 22112 let linkTo = LINK_DESTINATION_NONE; 22113 if (link === 'post') { 22114 linkTo = LINK_DESTINATION_ATTACHMENT; 22115 } else if (link === 'file') { 22116 linkTo = LINK_DESTINATION_MEDIA; 22117 } 22118 const galleryBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/gallery', { 22119 columns: parseInt(columns, 10), 22120 linkTo, 22121 randomOrder: orderby === 'rand' 22122 }, imageIds.map(imageId => (0,external_wp_blocks_namespaceObject.createBlock)('core/image', { 22123 id: imageId 22124 }))); 22125 return galleryBlock; 22126 }, 22127 isMatch({ 22128 named 22129 }) { 22130 return undefined !== named.ids; 22131 } 22132 }, { 22133 // When created by drag and dropping multiple files on an insertion point. Because multiple 22134 // files must not be transformed to a gallery when dropped within a gallery there is another transform 22135 // within the image block to handle that case. Therefore this transform has to have priority 1 22136 // set so that it overrrides the image block transformation when mulitple images are dropped outside 22137 // of a gallery block. 22138 type: 'files', 22139 priority: 1, 22140 isMatch(files) { 22141 return files.length !== 1 && files.every(file => file.type.indexOf('image/') === 0); 22142 }, 22143 transform(files) { 22144 const innerBlocks = files.map(file => (0,external_wp_blocks_namespaceObject.createBlock)('core/image', { 22145 blob: (0,external_wp_blob_namespaceObject.createBlobURL)(file) 22146 })); 22147 return (0,external_wp_blocks_namespaceObject.createBlock)('core/gallery', {}, innerBlocks); 22148 } 22149 }], 22150 to: [{ 22151 type: 'block', 22152 blocks: ['core/image'], 22153 transform: ({ 22154 align 22155 }, innerBlocks) => { 22156 if (innerBlocks.length > 0) { 22157 return innerBlocks.map(({ 22158 attributes: { 22159 url, 22160 alt, 22161 caption, 22162 title, 22163 href, 22164 rel, 22165 linkClass, 22166 id, 22167 sizeSlug: imageSizeSlug, 22168 linkDestination, 22169 linkTarget, 22170 anchor, 22171 className 22172 } 22173 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/image', { 22174 align, 22175 url, 22176 alt, 22177 caption, 22178 title, 22179 href, 22180 rel, 22181 linkClass, 22182 id, 22183 sizeSlug: imageSizeSlug, 22184 linkDestination, 22185 linkTarget, 22186 anchor, 22187 className 22188 })); 22189 } 22190 return (0,external_wp_blocks_namespaceObject.createBlock)('core/image', { 22191 align 22192 }); 22193 } 22194 }] 22195 }; 22196 /* harmony default export */ const gallery_transforms = (gallery_transforms_transforms); 22197 22198 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/gallery/index.js 22199 /** 22200 * WordPress dependencies 22201 */ 22202 22203 22204 /** 22205 * Internal dependencies 22206 */ 22207 22208 22209 22210 const gallery_metadata = { 22211 $schema: "https://schemas.wp.org/trunk/block.json", 22212 apiVersion: 3, 22213 name: "core/gallery", 22214 title: "Gallery", 22215 category: "media", 22216 allowedBlocks: ["core/image"], 22217 description: "Display multiple images in a rich gallery.", 22218 keywords: ["images", "photos"], 22219 textdomain: "default", 22220 attributes: { 22221 images: { 22222 type: "array", 22223 "default": [], 22224 source: "query", 22225 selector: ".blocks-gallery-item", 22226 query: { 22227 url: { 22228 type: "string", 22229 source: "attribute", 22230 selector: "img", 22231 attribute: "src" 22232 }, 22233 fullUrl: { 22234 type: "string", 22235 source: "attribute", 22236 selector: "img", 22237 attribute: "data-full-url" 22238 }, 22239 link: { 22240 type: "string", 22241 source: "attribute", 22242 selector: "img", 22243 attribute: "data-link" 22244 }, 22245 alt: { 22246 type: "string", 22247 source: "attribute", 22248 selector: "img", 22249 attribute: "alt", 22250 "default": "" 22251 }, 22252 id: { 22253 type: "string", 22254 source: "attribute", 22255 selector: "img", 22256 attribute: "data-id" 22257 }, 22258 caption: { 22259 type: "rich-text", 22260 source: "rich-text", 22261 selector: ".blocks-gallery-item__caption" 22262 } 22263 } 22264 }, 22265 ids: { 22266 type: "array", 22267 items: { 22268 type: "number" 22269 }, 22270 "default": [] 22271 }, 22272 shortCodeTransforms: { 22273 type: "array", 22274 items: { 22275 type: "object" 22276 }, 22277 "default": [] 22278 }, 22279 columns: { 22280 type: "number", 22281 minimum: 1, 22282 maximum: 8 22283 }, 22284 caption: { 22285 type: "rich-text", 22286 source: "rich-text", 22287 selector: ".blocks-gallery-caption" 22288 }, 22289 imageCrop: { 22290 type: "boolean", 22291 "default": true 22292 }, 22293 randomOrder: { 22294 type: "boolean", 22295 "default": false 22296 }, 22297 fixedHeight: { 22298 type: "boolean", 22299 "default": true 22300 }, 22301 linkTarget: { 22302 type: "string" 22303 }, 22304 linkTo: { 22305 type: "string" 22306 }, 22307 sizeSlug: { 22308 type: "string", 22309 "default": "large" 22310 }, 22311 allowResize: { 22312 type: "boolean", 22313 "default": false 22314 } 22315 }, 22316 providesContext: { 22317 allowResize: "allowResize", 22318 imageCrop: "imageCrop", 22319 fixedHeight: "fixedHeight" 22320 }, 22321 supports: { 22322 anchor: true, 22323 align: true, 22324 __experimentalBorder: { 22325 radius: true, 22326 color: true, 22327 width: true, 22328 style: true, 22329 __experimentalDefaultControls: { 22330 color: true, 22331 radius: true 22332 } 22333 }, 22334 html: false, 22335 units: ["px", "em", "rem", "vh", "vw"], 22336 spacing: { 22337 margin: true, 22338 padding: true, 22339 blockGap: ["horizontal", "vertical"], 22340 __experimentalSkipSerialization: ["blockGap"], 22341 __experimentalDefaultControls: { 22342 blockGap: true, 22343 margin: false, 22344 padding: false 22345 } 22346 }, 22347 color: { 22348 text: false, 22349 background: true, 22350 gradients: true 22351 }, 22352 layout: { 22353 allowSwitching: false, 22354 allowInheriting: false, 22355 allowEditing: false, 22356 "default": { 22357 type: "flex" 22358 } 22359 }, 22360 interactivity: { 22361 clientNavigation: true 22362 } 22363 }, 22364 editorStyle: "wp-block-gallery-editor", 22365 style: "wp-block-gallery" 22366 }; 22367 22368 22369 const { 22370 name: gallery_name 22371 } = gallery_metadata; 22372 22373 const gallery_settings = { 22374 icon: library_gallery, 22375 example: { 22376 attributes: { 22377 columns: 2 22378 }, 22379 innerBlocks: [{ 22380 name: 'core/image', 22381 attributes: { 22382 url: 'https://s.w.org/images/core/5.3/Glacial_lakes%2C_Bhutan.jpg' 22383 } 22384 }, { 22385 name: 'core/image', 22386 attributes: { 22387 url: 'https://s.w.org/images/core/5.3/Sediment_off_the_Yucatan_Peninsula.jpg' 22388 } 22389 }] 22390 }, 22391 transforms: gallery_transforms, 22392 edit: GalleryEdit, 22393 save: saveWithInnerBlocks, 22394 deprecated: gallery_deprecated 22395 }; 22396 const gallery_init = () => initBlock({ 22397 name: gallery_name, 22398 metadata: gallery_metadata, 22399 settings: gallery_settings 22400 }); 22401 22402 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/group/deprecated.js 22403 /** 22404 * External dependencies 22405 */ 22406 22407 22408 /** 22409 * WordPress dependencies 22410 */ 22411 22412 22413 const migrateAttributes = attributes => { 22414 if (!attributes.tagName) { 22415 attributes = { 22416 ...attributes, 22417 tagName: 'div' 22418 }; 22419 } 22420 if (!attributes.customTextColor && !attributes.customBackgroundColor) { 22421 return attributes; 22422 } 22423 const style = { 22424 color: {} 22425 }; 22426 if (attributes.customTextColor) { 22427 style.color.text = attributes.customTextColor; 22428 } 22429 if (attributes.customBackgroundColor) { 22430 style.color.background = attributes.customBackgroundColor; 22431 } 22432 const { 22433 customTextColor, 22434 customBackgroundColor, 22435 ...restAttributes 22436 } = attributes; 22437 return { 22438 ...restAttributes, 22439 style 22440 }; 22441 }; 22442 const group_deprecated_deprecated = [ 22443 // Version with default layout. 22444 { 22445 attributes: { 22446 tagName: { 22447 type: 'string', 22448 default: 'div' 22449 }, 22450 templateLock: { 22451 type: ['string', 'boolean'], 22452 enum: ['all', 'insert', false] 22453 } 22454 }, 22455 supports: { 22456 __experimentalOnEnter: true, 22457 __experimentalSettings: true, 22458 align: ['wide', 'full'], 22459 anchor: true, 22460 ariaLabel: true, 22461 html: false, 22462 color: { 22463 gradients: true, 22464 link: true, 22465 __experimentalDefaultControls: { 22466 background: true, 22467 text: true 22468 } 22469 }, 22470 spacing: { 22471 margin: ['top', 'bottom'], 22472 padding: true, 22473 blockGap: true, 22474 __experimentalDefaultControls: { 22475 padding: true, 22476 blockGap: true 22477 } 22478 }, 22479 __experimentalBorder: { 22480 color: true, 22481 radius: true, 22482 style: true, 22483 width: true, 22484 __experimentalDefaultControls: { 22485 color: true, 22486 radius: true, 22487 style: true, 22488 width: true 22489 } 22490 }, 22491 typography: { 22492 fontSize: true, 22493 lineHeight: true, 22494 __experimentalFontStyle: true, 22495 __experimentalFontWeight: true, 22496 __experimentalLetterSpacing: true, 22497 __experimentalTextTransform: true, 22498 __experimentalDefaultControls: { 22499 fontSize: true 22500 } 22501 }, 22502 layout: true 22503 }, 22504 save({ 22505 attributes: { 22506 tagName: Tag 22507 } 22508 }) { 22509 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 22510 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(external_wp_blockEditor_namespaceObject.useBlockProps.save()) 22511 }); 22512 }, 22513 isEligible: ({ 22514 layout 22515 }) => layout?.inherit || layout?.contentSize && layout?.type !== 'constrained', 22516 migrate: attributes => { 22517 const { 22518 layout = null 22519 } = attributes; 22520 if (layout?.inherit || layout?.contentSize) { 22521 return { 22522 ...attributes, 22523 layout: { 22524 ...layout, 22525 type: 'constrained' 22526 } 22527 }; 22528 } 22529 } 22530 }, 22531 // Version of the block with the double div. 22532 { 22533 attributes: { 22534 tagName: { 22535 type: 'string', 22536 default: 'div' 22537 }, 22538 templateLock: { 22539 type: ['string', 'boolean'], 22540 enum: ['all', 'insert', false] 22541 } 22542 }, 22543 supports: { 22544 align: ['wide', 'full'], 22545 anchor: true, 22546 color: { 22547 gradients: true, 22548 link: true 22549 }, 22550 spacing: { 22551 padding: true 22552 }, 22553 __experimentalBorder: { 22554 radius: true 22555 } 22556 }, 22557 save({ 22558 attributes 22559 }) { 22560 const { 22561 tagName: Tag 22562 } = attributes; 22563 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 22564 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 22565 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 22566 className: "wp-block-group__inner-container", 22567 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 22568 }) 22569 }); 22570 } 22571 }, 22572 // Version of the block without global styles support 22573 { 22574 attributes: { 22575 backgroundColor: { 22576 type: 'string' 22577 }, 22578 customBackgroundColor: { 22579 type: 'string' 22580 }, 22581 textColor: { 22582 type: 'string' 22583 }, 22584 customTextColor: { 22585 type: 'string' 22586 } 22587 }, 22588 supports: { 22589 align: ['wide', 'full'], 22590 anchor: true, 22591 html: false 22592 }, 22593 migrate: migrateAttributes, 22594 save({ 22595 attributes 22596 }) { 22597 const { 22598 backgroundColor, 22599 customBackgroundColor, 22600 textColor, 22601 customTextColor 22602 } = attributes; 22603 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 22604 const textClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 22605 const className = dist_clsx(backgroundClass, textClass, { 22606 'has-text-color': textColor || customTextColor, 22607 'has-background': backgroundColor || customBackgroundColor 22608 }); 22609 const styles = { 22610 backgroundColor: backgroundClass ? undefined : customBackgroundColor, 22611 color: textClass ? undefined : customTextColor 22612 }; 22613 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 22614 className: className, 22615 style: styles, 22616 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 22617 className: "wp-block-group__inner-container", 22618 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 22619 }) 22620 }); 22621 } 22622 }, 22623 // Version of the group block with a bug that made text color class not applied. 22624 { 22625 attributes: { 22626 backgroundColor: { 22627 type: 'string' 22628 }, 22629 customBackgroundColor: { 22630 type: 'string' 22631 }, 22632 textColor: { 22633 type: 'string' 22634 }, 22635 customTextColor: { 22636 type: 'string' 22637 } 22638 }, 22639 migrate: migrateAttributes, 22640 supports: { 22641 align: ['wide', 'full'], 22642 anchor: true, 22643 html: false 22644 }, 22645 save({ 22646 attributes 22647 }) { 22648 const { 22649 backgroundColor, 22650 customBackgroundColor, 22651 textColor, 22652 customTextColor 22653 } = attributes; 22654 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 22655 const textClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 22656 const className = dist_clsx(backgroundClass, { 22657 'has-text-color': textColor || customTextColor, 22658 'has-background': backgroundColor || customBackgroundColor 22659 }); 22660 const styles = { 22661 backgroundColor: backgroundClass ? undefined : customBackgroundColor, 22662 color: textClass ? undefined : customTextColor 22663 }; 22664 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 22665 className: className, 22666 style: styles, 22667 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 22668 className: "wp-block-group__inner-container", 22669 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 22670 }) 22671 }); 22672 } 22673 }, 22674 // v1 of group block. Deprecated to add an inner-container div around `InnerBlocks.Content`. 22675 { 22676 attributes: { 22677 backgroundColor: { 22678 type: 'string' 22679 }, 22680 customBackgroundColor: { 22681 type: 'string' 22682 } 22683 }, 22684 supports: { 22685 align: ['wide', 'full'], 22686 anchor: true, 22687 html: false 22688 }, 22689 migrate: migrateAttributes, 22690 save({ 22691 attributes 22692 }) { 22693 const { 22694 backgroundColor, 22695 customBackgroundColor 22696 } = attributes; 22697 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 22698 const className = dist_clsx(backgroundClass, { 22699 'has-background': backgroundColor || customBackgroundColor 22700 }); 22701 const styles = { 22702 backgroundColor: backgroundClass ? undefined : customBackgroundColor 22703 }; 22704 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 22705 className: className, 22706 style: styles, 22707 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 22708 }); 22709 } 22710 }]; 22711 /* harmony default export */ const group_deprecated = (group_deprecated_deprecated); 22712 22713 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/group/placeholder.js 22714 /** 22715 * WordPress dependencies 22716 */ 22717 22718 22719 22720 22721 22722 22723 22724 /** 22725 * Returns a custom variation icon. 22726 * 22727 * @param {string} name The block variation name. 22728 * 22729 * @return {JSX.Element} The SVG element. 22730 */ 22731 22732 const getGroupPlaceholderIcons = (name = 'group') => { 22733 const icons = { 22734 group: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 22735 xmlns: "http://www.w3.org/2000/svg", 22736 width: "48", 22737 height: "48", 22738 viewBox: "0 0 48 48", 22739 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 22740 d: "M0 10a2 2 0 0 1 2-2h44a2 2 0 0 1 2 2v28a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V10Z" 22741 }) 22742 }), 22743 'group-row': /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 22744 xmlns: "http://www.w3.org/2000/svg", 22745 width: "48", 22746 height: "48", 22747 viewBox: "0 0 48 48", 22748 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 22749 d: "M0 10a2 2 0 0 1 2-2h19a2 2 0 0 1 2 2v28a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V10Zm25 0a2 2 0 0 1 2-2h19a2 2 0 0 1 2 2v28a2 2 0 0 1-2 2H27a2 2 0 0 1-2-2V10Z" 22750 }) 22751 }), 22752 'group-stack': /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 22753 xmlns: "http://www.w3.org/2000/svg", 22754 width: "48", 22755 height: "48", 22756 viewBox: "0 0 48 48", 22757 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 22758 d: "M0 10a2 2 0 0 1 2-2h44a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V10Zm0 17a2 2 0 0 1 2-2h44a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V27Z" 22759 }) 22760 }), 22761 'group-grid': /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 22762 xmlns: "http://www.w3.org/2000/svg", 22763 width: "48", 22764 height: "48", 22765 viewBox: "0 0 48 48", 22766 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 22767 d: "M0 10a2 2 0 0 1 2-2h19a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V10Zm25 0a2 2 0 0 1 2-2h19a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H27a2 2 0 0 1-2-2V10ZM0 27a2 2 0 0 1 2-2h19a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V27Zm25 0a2 2 0 0 1 2-2h19a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H27a2 2 0 0 1-2-2V27Z" 22768 }) 22769 }) 22770 }; 22771 return icons?.[name]; 22772 }; 22773 22774 /** 22775 * A custom hook to tell the Group block whether to show the variation placeholder. 22776 * 22777 * @param {Object} props Arguments to pass to hook. 22778 * @param {Object} [props.attributes] The block's attributes. 22779 * @param {string} [props.usedLayoutType] The block's current layout type. 22780 * @param {boolean} [props.hasInnerBlocks] Whether the block has inner blocks. 22781 * 22782 * @return {[boolean, Function]} A state value and setter function. 22783 */ 22784 function useShouldShowPlaceHolder({ 22785 attributes = { 22786 style: undefined, 22787 backgroundColor: undefined, 22788 textColor: undefined, 22789 fontSize: undefined 22790 }, 22791 usedLayoutType = '', 22792 hasInnerBlocks = false 22793 }) { 22794 const { 22795 style, 22796 backgroundColor, 22797 textColor, 22798 fontSize 22799 } = attributes; 22800 /* 22801 * Shows the placeholder when no known styles are set, 22802 * or when a non-default layout has been selected. 22803 * Should the Group block support more style presets in the 22804 * future, e.g., attributes.spacingSize, we can add them to the 22805 * condition. 22806 */ 22807 const [showPlaceholder, setShowPlaceholder] = (0,external_wp_element_namespaceObject.useState)(!hasInnerBlocks && !backgroundColor && !fontSize && !textColor && !style && usedLayoutType !== 'flex' && usedLayoutType !== 'grid'); 22808 (0,external_wp_element_namespaceObject.useEffect)(() => { 22809 if (!!hasInnerBlocks || !!backgroundColor || !!fontSize || !!textColor || !!style || usedLayoutType === 'flex') { 22810 setShowPlaceholder(false); 22811 } 22812 }, [backgroundColor, fontSize, textColor, style, usedLayoutType, hasInnerBlocks]); 22813 return [showPlaceholder, setShowPlaceholder]; 22814 } 22815 22816 /** 22817 * Display group variations if none is selected. 22818 * 22819 * @param {Object} props Component props. 22820 * @param {string} props.name The block's name. 22821 * @param {Function} props.onSelect Function to set block's attributes. 22822 * 22823 * @return {JSX.Element} The placeholder. 22824 */ 22825 function GroupPlaceHolder({ 22826 name, 22827 onSelect 22828 }) { 22829 const variations = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blocks_namespaceObject.store).getBlockVariations(name, 'block'), [name]); 22830 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 22831 className: 'wp-block-group__placeholder' 22832 }); 22833 (0,external_wp_element_namespaceObject.useEffect)(() => { 22834 if (variations && variations.length === 1) { 22835 onSelect(variations[0]); 22836 } 22837 }, [onSelect, variations]); 22838 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 22839 ...blockProps, 22840 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 22841 instructions: (0,external_wp_i18n_namespaceObject.__)('Group blocks together. Select a layout:'), 22842 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 22843 role: "list", 22844 className: "wp-block-group-placeholder__variations", 22845 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Block variations'), 22846 children: variations.map(variation => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", { 22847 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 22848 __next40pxDefaultSize: true, 22849 variant: "tertiary", 22850 icon: getGroupPlaceholderIcons(variation.name), 22851 iconSize: 48, 22852 onClick: () => onSelect(variation), 22853 className: "wp-block-group-placeholder__variation-button", 22854 label: `$variation.title}: $variation.description}` 22855 }) 22856 }, variation.name)) 22857 }) 22858 }) 22859 }); 22860 } 22861 /* harmony default export */ const placeholder = (GroupPlaceHolder); 22862 22863 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/group/edit.js 22864 /** 22865 * WordPress dependencies 22866 */ 22867 22868 22869 22870 22871 22872 22873 22874 /** 22875 * Internal dependencies 22876 */ 22877 22878 22879 /** 22880 * Render inspector controls for the Group block. 22881 * 22882 * @param {Object} props Component props. 22883 * @param {string} props.tagName The HTML tag name. 22884 * @param {Function} props.onSelectTagName onChange function for the SelectControl. 22885 * 22886 * @return {JSX.Element} The control group. 22887 */ 22888 22889 22890 22891 function GroupEditControls({ 22892 tagName, 22893 onSelectTagName 22894 }) { 22895 const htmlElementMessages = { 22896 header: (0,external_wp_i18n_namespaceObject.__)('The <header> element should represent introductory content, typically a group of introductory or navigational aids.'), 22897 main: (0,external_wp_i18n_namespaceObject.__)('The <main> element should be used for the primary content of your document only.'), 22898 section: (0,external_wp_i18n_namespaceObject.__)("The <section> element should represent a standalone portion of the document that can't be better represented by another element."), 22899 article: (0,external_wp_i18n_namespaceObject.__)('The <article> element should represent a self-contained, syndicatable portion of the document.'), 22900 aside: (0,external_wp_i18n_namespaceObject.__)("The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content."), 22901 footer: (0,external_wp_i18n_namespaceObject.__)('The <footer> element should represent a footer for its nearest sectioning element (e.g.: <section>, <article>, <main> etc.).') 22902 }; 22903 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 22904 group: "advanced", 22905 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 22906 __nextHasNoMarginBottom: true, 22907 __next40pxDefaultSize: true, 22908 label: (0,external_wp_i18n_namespaceObject.__)('HTML element'), 22909 options: [{ 22910 label: (0,external_wp_i18n_namespaceObject.__)('Default (<div>)'), 22911 value: 'div' 22912 }, { 22913 label: '<header>', 22914 value: 'header' 22915 }, { 22916 label: '<main>', 22917 value: 'main' 22918 }, { 22919 label: '<section>', 22920 value: 'section' 22921 }, { 22922 label: '<article>', 22923 value: 'article' 22924 }, { 22925 label: '<aside>', 22926 value: 'aside' 22927 }, { 22928 label: '<footer>', 22929 value: 'footer' 22930 }], 22931 value: tagName, 22932 onChange: onSelectTagName, 22933 help: htmlElementMessages[tagName] 22934 }) 22935 }); 22936 } 22937 function GroupEdit({ 22938 attributes, 22939 name, 22940 setAttributes, 22941 clientId 22942 }) { 22943 const { 22944 hasInnerBlocks, 22945 themeSupportsLayout 22946 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 22947 const { 22948 getBlock, 22949 getSettings 22950 } = select(external_wp_blockEditor_namespaceObject.store); 22951 const block = getBlock(clientId); 22952 return { 22953 hasInnerBlocks: !!(block && block.innerBlocks.length), 22954 themeSupportsLayout: getSettings()?.supportsLayout 22955 }; 22956 }, [clientId]); 22957 const { 22958 tagName: TagName = 'div', 22959 templateLock, 22960 allowedBlocks, 22961 layout = {} 22962 } = attributes; 22963 22964 // Layout settings. 22965 const { 22966 type = 'default' 22967 } = layout; 22968 const layoutSupportEnabled = themeSupportsLayout || type === 'flex' || type === 'grid'; 22969 22970 // Hooks. 22971 const ref = (0,external_wp_element_namespaceObject.useRef)(); 22972 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 22973 ref 22974 }); 22975 const [showPlaceholder, setShowPlaceholder] = useShouldShowPlaceHolder({ 22976 attributes, 22977 usedLayoutType: type, 22978 hasInnerBlocks 22979 }); 22980 22981 // Default to the regular appender being rendered. 22982 let renderAppender; 22983 if (showPlaceholder) { 22984 // In the placeholder state, ensure the appender is not rendered. 22985 // This is needed because `...innerBlocksProps` is used in the placeholder 22986 // state so that blocks can dragged onto the placeholder area 22987 // from both the list view and in the editor canvas. 22988 renderAppender = false; 22989 } else if (!hasInnerBlocks) { 22990 // When there is no placeholder, but the block is also empty, 22991 // use the larger button appender. 22992 renderAppender = external_wp_blockEditor_namespaceObject.InnerBlocks.ButtonBlockAppender; 22993 } 22994 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(layoutSupportEnabled ? blockProps : { 22995 className: 'wp-block-group__inner-container' 22996 }, { 22997 dropZoneElement: ref.current, 22998 templateLock, 22999 allowedBlocks, 23000 renderAppender 23001 }); 23002 const { 23003 selectBlock 23004 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 23005 const selectVariation = nextVariation => { 23006 setAttributes(nextVariation.attributes); 23007 selectBlock(clientId, -1); 23008 setShowPlaceholder(false); 23009 }; 23010 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 23011 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GroupEditControls, { 23012 tagName: TagName, 23013 onSelectTagName: value => setAttributes({ 23014 tagName: value 23015 }) 23016 }), showPlaceholder && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.View, { 23017 children: [innerBlocksProps.children, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(placeholder, { 23018 name: name, 23019 onSelect: selectVariation 23020 })] 23021 }), layoutSupportEnabled && !showPlaceholder && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 23022 ...innerBlocksProps 23023 }), !layoutSupportEnabled && !showPlaceholder && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 23024 ...blockProps, 23025 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 23026 ...innerBlocksProps 23027 }) 23028 })] 23029 }); 23030 } 23031 /* harmony default export */ const group_edit = (GroupEdit); 23032 23033 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/group/save.js 23034 /** 23035 * WordPress dependencies 23036 */ 23037 23038 23039 function group_save_save({ 23040 attributes: { 23041 tagName: Tag 23042 } 23043 }) { 23044 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 23045 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(external_wp_blockEditor_namespaceObject.useBlockProps.save()) 23046 }); 23047 } 23048 23049 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/group/transforms.js 23050 /** 23051 * WordPress dependencies 23052 */ 23053 23054 const group_transforms_transforms = { 23055 from: [{ 23056 type: 'block', 23057 isMultiBlock: true, 23058 blocks: ['*'], 23059 __experimentalConvert(blocks) { 23060 const alignments = ['wide', 'full']; 23061 23062 // Determine the widest setting of all the blocks to be grouped 23063 const widestAlignment = blocks.reduce((accumulator, block) => { 23064 const { 23065 align 23066 } = block.attributes; 23067 return alignments.indexOf(align) > alignments.indexOf(accumulator) ? align : accumulator; 23068 }, undefined); 23069 23070 // Clone the Blocks to be Grouped 23071 // Failing to create new block references causes the original blocks 23072 // to be replaced in the switchToBlockType call thereby meaning they 23073 // are removed both from their original location and within the 23074 // new group block. 23075 const groupInnerBlocks = blocks.map(block => { 23076 return (0,external_wp_blocks_namespaceObject.createBlock)(block.name, block.attributes, block.innerBlocks); 23077 }); 23078 return (0,external_wp_blocks_namespaceObject.createBlock)('core/group', { 23079 align: widestAlignment, 23080 layout: { 23081 type: 'constrained' 23082 } 23083 }, groupInnerBlocks); 23084 } 23085 }] 23086 }; 23087 /* harmony default export */ const group_transforms = (group_transforms_transforms); 23088 23089 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/row.js 23090 /** 23091 * WordPress dependencies 23092 */ 23093 23094 23095 const row = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 23096 xmlns: "http://www.w3.org/2000/svg", 23097 viewBox: "0 0 24 24", 23098 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 23099 d: "M4 6.5h5a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H4V16h5a.5.5 0 0 0 .5-.5v-7A.5.5 0 0 0 9 8H4V6.5Zm16 0h-5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h5V16h-5a.5.5 0 0 1-.5-.5v-7A.5.5 0 0 1 15 8h5V6.5Z" 23100 }) 23101 }); 23102 /* harmony default export */ const library_row = (row); 23103 23104 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/stack.js 23105 /** 23106 * WordPress dependencies 23107 */ 23108 23109 23110 const stack = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 23111 xmlns: "http://www.w3.org/2000/svg", 23112 viewBox: "0 0 24 24", 23113 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 23114 d: "M17.5 4v5a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V4H8v5a.5.5 0 0 0 .5.5h7A.5.5 0 0 0 16 9V4h1.5Zm0 16v-5a2 2 0 0 0-2-2h-7a2 2 0 0 0-2 2v5H8v-5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v5h1.5Z" 23115 }) 23116 }); 23117 /* harmony default export */ const library_stack = (stack); 23118 23119 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/grid.js 23120 /** 23121 * WordPress dependencies 23122 */ 23123 23124 23125 const grid = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 23126 xmlns: "http://www.w3.org/2000/svg", 23127 viewBox: "0 0 24 24", 23128 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 23129 d: "m3 5c0-1.10457.89543-2 2-2h13.5c1.1046 0 2 .89543 2 2v13.5c0 1.1046-.8954 2-2 2h-13.5c-1.10457 0-2-.8954-2-2zm2-.5h6v6.5h-6.5v-6c0-.27614.22386-.5.5-.5zm-.5 8v6c0 .2761.22386.5.5.5h6v-6.5zm8 0v6.5h6c.2761 0 .5-.2239.5-.5v-6zm0-8v6.5h6.5v-6c0-.27614-.2239-.5-.5-.5z", 23130 fillRule: "evenodd", 23131 clipRule: "evenodd" 23132 }) 23133 }); 23134 /* harmony default export */ const library_grid = (grid); 23135 23136 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/group/variations.js 23137 /** 23138 * WordPress dependencies 23139 */ 23140 23141 23142 const example = { 23143 innerBlocks: [{ 23144 name: 'core/paragraph', 23145 attributes: { 23146 customTextColor: '#cf2e2e', 23147 fontSize: 'large', 23148 content: (0,external_wp_i18n_namespaceObject.__)('One.') 23149 } 23150 }, { 23151 name: 'core/paragraph', 23152 attributes: { 23153 customTextColor: '#ff6900', 23154 fontSize: 'large', 23155 content: (0,external_wp_i18n_namespaceObject.__)('Two.') 23156 } 23157 }, { 23158 name: 'core/paragraph', 23159 attributes: { 23160 customTextColor: '#fcb900', 23161 fontSize: 'large', 23162 content: (0,external_wp_i18n_namespaceObject.__)('Three.') 23163 } 23164 }, { 23165 name: 'core/paragraph', 23166 attributes: { 23167 customTextColor: '#00d084', 23168 fontSize: 'large', 23169 content: (0,external_wp_i18n_namespaceObject.__)('Four.') 23170 } 23171 }, { 23172 name: 'core/paragraph', 23173 attributes: { 23174 customTextColor: '#0693e3', 23175 fontSize: 'large', 23176 content: (0,external_wp_i18n_namespaceObject.__)('Five.') 23177 } 23178 }, { 23179 name: 'core/paragraph', 23180 attributes: { 23181 customTextColor: '#9b51e0', 23182 fontSize: 'large', 23183 content: (0,external_wp_i18n_namespaceObject.__)('Six.') 23184 } 23185 }] 23186 }; 23187 const group_variations_variations = [{ 23188 name: 'group', 23189 title: (0,external_wp_i18n_namespaceObject.__)('Group'), 23190 description: (0,external_wp_i18n_namespaceObject.__)('Gather blocks in a container.'), 23191 attributes: { 23192 layout: { 23193 type: 'constrained' 23194 } 23195 }, 23196 isDefault: true, 23197 scope: ['block', 'inserter', 'transform'], 23198 isActive: blockAttributes => !blockAttributes.layout || !blockAttributes.layout?.type || blockAttributes.layout?.type === 'default' || blockAttributes.layout?.type === 'constrained', 23199 icon: library_group 23200 }, { 23201 name: 'group-row', 23202 title: (0,external_wp_i18n_namespaceObject._x)('Row', 'single horizontal line'), 23203 description: (0,external_wp_i18n_namespaceObject.__)('Arrange blocks horizontally.'), 23204 attributes: { 23205 layout: { 23206 type: 'flex', 23207 flexWrap: 'nowrap' 23208 } 23209 }, 23210 scope: ['block', 'inserter', 'transform'], 23211 isActive: blockAttributes => blockAttributes.layout?.type === 'flex' && (!blockAttributes.layout?.orientation || blockAttributes.layout?.orientation === 'horizontal'), 23212 icon: library_row, 23213 example 23214 }, { 23215 name: 'group-stack', 23216 title: (0,external_wp_i18n_namespaceObject.__)('Stack'), 23217 description: (0,external_wp_i18n_namespaceObject.__)('Arrange blocks vertically.'), 23218 attributes: { 23219 layout: { 23220 type: 'flex', 23221 orientation: 'vertical' 23222 } 23223 }, 23224 scope: ['block', 'inserter', 'transform'], 23225 isActive: blockAttributes => blockAttributes.layout?.type === 'flex' && blockAttributes.layout?.orientation === 'vertical', 23226 icon: library_stack, 23227 example 23228 }, { 23229 name: 'group-grid', 23230 title: (0,external_wp_i18n_namespaceObject.__)('Grid'), 23231 description: (0,external_wp_i18n_namespaceObject.__)('Arrange blocks in a grid.'), 23232 attributes: { 23233 layout: { 23234 type: 'grid' 23235 } 23236 }, 23237 scope: ['block', 'inserter', 'transform'], 23238 isActive: blockAttributes => blockAttributes.layout?.type === 'grid', 23239 icon: library_grid, 23240 example 23241 }]; 23242 /* harmony default export */ const group_variations = (group_variations_variations); 23243 23244 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/group/index.js 23245 /** 23246 * WordPress dependencies 23247 */ 23248 23249 23250 23251 /** 23252 * Internal dependencies 23253 */ 23254 23255 23256 23257 const group_metadata = { 23258 $schema: "https://schemas.wp.org/trunk/block.json", 23259 apiVersion: 3, 23260 name: "core/group", 23261 title: "Group", 23262 category: "design", 23263 description: "Gather blocks in a layout container.", 23264 keywords: ["container", "wrapper", "row", "section"], 23265 textdomain: "default", 23266 attributes: { 23267 tagName: { 23268 type: "string", 23269 "default": "div" 23270 }, 23271 templateLock: { 23272 type: ["string", "boolean"], 23273 "enum": ["all", "insert", "contentOnly", false] 23274 }, 23275 allowedBlocks: { 23276 type: "array" 23277 } 23278 }, 23279 supports: { 23280 __experimentalOnEnter: true, 23281 __experimentalOnMerge: true, 23282 __experimentalSettings: true, 23283 align: ["wide", "full"], 23284 anchor: true, 23285 ariaLabel: true, 23286 html: false, 23287 background: { 23288 backgroundImage: true, 23289 backgroundSize: true, 23290 __experimentalDefaultControls: { 23291 backgroundImage: true 23292 } 23293 }, 23294 color: { 23295 gradients: true, 23296 heading: true, 23297 button: true, 23298 link: true, 23299 __experimentalDefaultControls: { 23300 background: true, 23301 text: true 23302 } 23303 }, 23304 shadow: true, 23305 spacing: { 23306 margin: ["top", "bottom"], 23307 padding: true, 23308 blockGap: true, 23309 __experimentalDefaultControls: { 23310 padding: true, 23311 blockGap: true 23312 } 23313 }, 23314 dimensions: { 23315 minHeight: true 23316 }, 23317 __experimentalBorder: { 23318 color: true, 23319 radius: true, 23320 style: true, 23321 width: true, 23322 __experimentalDefaultControls: { 23323 color: true, 23324 radius: true, 23325 style: true, 23326 width: true 23327 } 23328 }, 23329 position: { 23330 sticky: true 23331 }, 23332 typography: { 23333 fontSize: true, 23334 lineHeight: true, 23335 __experimentalFontFamily: true, 23336 __experimentalFontWeight: true, 23337 __experimentalFontStyle: true, 23338 __experimentalTextTransform: true, 23339 __experimentalTextDecoration: true, 23340 __experimentalLetterSpacing: true, 23341 __experimentalDefaultControls: { 23342 fontSize: true 23343 } 23344 }, 23345 layout: { 23346 allowSizingOnChildren: true 23347 }, 23348 interactivity: { 23349 clientNavigation: true 23350 } 23351 }, 23352 editorStyle: "wp-block-group-editor", 23353 style: "wp-block-group" 23354 }; 23355 23356 23357 23358 const { 23359 name: group_name 23360 } = group_metadata; 23361 23362 const group_settings = { 23363 icon: library_group, 23364 example: { 23365 attributes: { 23366 layout: { 23367 type: 'constrained', 23368 justifyContent: 'center' 23369 }, 23370 style: { 23371 spacing: { 23372 padding: { 23373 top: '4em', 23374 right: '3em', 23375 bottom: '4em', 23376 left: '3em' 23377 } 23378 } 23379 } 23380 }, 23381 innerBlocks: [{ 23382 name: 'core/heading', 23383 attributes: { 23384 content: (0,external_wp_i18n_namespaceObject.__)('La Mancha'), 23385 textAlign: 'center' 23386 } 23387 }, { 23388 name: 'core/paragraph', 23389 attributes: { 23390 align: 'center', 23391 content: (0,external_wp_i18n_namespaceObject.__)('In a village of La Mancha, the name of which I have no desire to call to mind, there lived not long since one of those gentlemen that keep a lance in the lance-rack, an old buckler, a lean hack, and a greyhound for coursing.') 23392 } 23393 }, { 23394 name: 'core/spacer', 23395 attributes: { 23396 height: '10px' 23397 } 23398 }, { 23399 name: 'core/button', 23400 attributes: { 23401 text: (0,external_wp_i18n_namespaceObject.__)('Read more') 23402 } 23403 }], 23404 viewportWidth: 600 23405 }, 23406 transforms: group_transforms, 23407 edit: group_edit, 23408 save: group_save_save, 23409 deprecated: group_deprecated, 23410 variations: group_variations 23411 }; 23412 const group_init = () => initBlock({ 23413 name: group_name, 23414 metadata: group_metadata, 23415 settings: group_settings 23416 }); 23417 23418 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/heading.js 23419 /** 23420 * WordPress dependencies 23421 */ 23422 23423 23424 const heading = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 23425 xmlns: "http://www.w3.org/2000/svg", 23426 viewBox: "0 0 24 24", 23427 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 23428 d: "M6 5V18.5911L12 13.8473L18 18.5911V5H6Z" 23429 }) 23430 }); 23431 /* harmony default export */ const library_heading = (heading); 23432 23433 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/heading/deprecated.js 23434 /** 23435 * External dependencies 23436 */ 23437 23438 23439 /** 23440 * WordPress dependencies 23441 */ 23442 23443 23444 const blockSupports = { 23445 className: false, 23446 anchor: true 23447 }; 23448 const heading_deprecated_blockAttributes = { 23449 align: { 23450 type: 'string' 23451 }, 23452 content: { 23453 type: 'string', 23454 source: 'html', 23455 selector: 'h1,h2,h3,h4,h5,h6', 23456 default: '' 23457 }, 23458 level: { 23459 type: 'number', 23460 default: 2 23461 }, 23462 placeholder: { 23463 type: 'string' 23464 } 23465 }; 23466 const deprecated_migrateCustomColors = attributes => { 23467 if (!attributes.customTextColor) { 23468 return attributes; 23469 } 23470 const style = { 23471 color: { 23472 text: attributes.customTextColor 23473 } 23474 }; 23475 const { 23476 customTextColor, 23477 ...restAttributes 23478 } = attributes; 23479 return { 23480 ...restAttributes, 23481 style 23482 }; 23483 }; 23484 const TEXT_ALIGN_OPTIONS = ['left', 'right', 'center']; 23485 const migrateTextAlign = attributes => { 23486 const { 23487 align, 23488 ...rest 23489 } = attributes; 23490 return TEXT_ALIGN_OPTIONS.includes(align) ? { 23491 ...rest, 23492 textAlign: align 23493 } : attributes; 23494 }; 23495 const heading_deprecated_v1 = { 23496 supports: blockSupports, 23497 attributes: { 23498 ...heading_deprecated_blockAttributes, 23499 customTextColor: { 23500 type: 'string' 23501 }, 23502 textColor: { 23503 type: 'string' 23504 } 23505 }, 23506 migrate: attributes => deprecated_migrateCustomColors(migrateTextAlign(attributes)), 23507 save({ 23508 attributes 23509 }) { 23510 const { 23511 align, 23512 level, 23513 content, 23514 textColor, 23515 customTextColor 23516 } = attributes; 23517 const tagName = 'h' + level; 23518 const textClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 23519 const className = dist_clsx({ 23520 [textClass]: textClass 23521 }); 23522 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 23523 className: className ? className : undefined, 23524 tagName: tagName, 23525 style: { 23526 textAlign: align, 23527 color: textClass ? undefined : customTextColor 23528 }, 23529 value: content 23530 }); 23531 } 23532 }; 23533 const heading_deprecated_v2 = { 23534 attributes: { 23535 ...heading_deprecated_blockAttributes, 23536 customTextColor: { 23537 type: 'string' 23538 }, 23539 textColor: { 23540 type: 'string' 23541 } 23542 }, 23543 migrate: attributes => deprecated_migrateCustomColors(migrateTextAlign(attributes)), 23544 save({ 23545 attributes 23546 }) { 23547 const { 23548 align, 23549 content, 23550 customTextColor, 23551 level, 23552 textColor 23553 } = attributes; 23554 const tagName = 'h' + level; 23555 const textClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 23556 const className = dist_clsx({ 23557 [textClass]: textClass, 23558 [`has-text-align-$align}`]: align 23559 }); 23560 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 23561 className: className ? className : undefined, 23562 tagName: tagName, 23563 style: { 23564 color: textClass ? undefined : customTextColor 23565 }, 23566 value: content 23567 }); 23568 }, 23569 supports: blockSupports 23570 }; 23571 const heading_deprecated_v3 = { 23572 supports: blockSupports, 23573 attributes: { 23574 ...heading_deprecated_blockAttributes, 23575 customTextColor: { 23576 type: 'string' 23577 }, 23578 textColor: { 23579 type: 'string' 23580 } 23581 }, 23582 migrate: attributes => deprecated_migrateCustomColors(migrateTextAlign(attributes)), 23583 save({ 23584 attributes 23585 }) { 23586 const { 23587 align, 23588 content, 23589 customTextColor, 23590 level, 23591 textColor 23592 } = attributes; 23593 const tagName = 'h' + level; 23594 const textClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 23595 const className = dist_clsx({ 23596 [textClass]: textClass, 23597 'has-text-color': textColor || customTextColor, 23598 [`has-text-align-$align}`]: align 23599 }); 23600 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 23601 className: className ? className : undefined, 23602 tagName: tagName, 23603 style: { 23604 color: textClass ? undefined : customTextColor 23605 }, 23606 value: content 23607 }); 23608 } 23609 }; 23610 const heading_deprecated_v4 = { 23611 supports: { 23612 align: ['wide', 'full'], 23613 anchor: true, 23614 className: false, 23615 color: { 23616 link: true 23617 }, 23618 fontSize: true, 23619 lineHeight: true, 23620 __experimentalSelector: { 23621 'core/heading/h1': 'h1', 23622 'core/heading/h2': 'h2', 23623 'core/heading/h3': 'h3', 23624 'core/heading/h4': 'h4', 23625 'core/heading/h5': 'h5', 23626 'core/heading/h6': 'h6' 23627 }, 23628 __unstablePasteTextInline: true 23629 }, 23630 attributes: heading_deprecated_blockAttributes, 23631 isEligible: ({ 23632 align 23633 }) => TEXT_ALIGN_OPTIONS.includes(align), 23634 migrate: migrateTextAlign, 23635 save({ 23636 attributes 23637 }) { 23638 const { 23639 align, 23640 content, 23641 level 23642 } = attributes; 23643 const TagName = 'h' + level; 23644 const className = dist_clsx({ 23645 [`has-text-align-$align}`]: align 23646 }); 23647 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 23648 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 23649 className 23650 }), 23651 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 23652 value: content 23653 }) 23654 }); 23655 } 23656 }; 23657 23658 // This deprecation covers the serialization of the `wp-block-heading` class 23659 // into the block's markup after className support was enabled. 23660 const heading_deprecated_v5 = { 23661 supports: { 23662 align: ['wide', 'full'], 23663 anchor: true, 23664 className: false, 23665 color: { 23666 gradients: true, 23667 link: true, 23668 __experimentalDefaultControls: { 23669 background: true, 23670 text: true 23671 } 23672 }, 23673 spacing: { 23674 margin: true, 23675 padding: true 23676 }, 23677 typography: { 23678 fontSize: true, 23679 lineHeight: true, 23680 __experimentalFontFamily: true, 23681 __experimentalFontStyle: true, 23682 __experimentalFontWeight: true, 23683 __experimentalLetterSpacing: true, 23684 __experimentalTextTransform: true, 23685 __experimentalTextDecoration: true, 23686 __experimentalDefaultControls: { 23687 fontSize: true, 23688 fontAppearance: true, 23689 textTransform: true 23690 } 23691 }, 23692 __experimentalSelector: 'h1,h2,h3,h4,h5,h6', 23693 __unstablePasteTextInline: true, 23694 __experimentalSlashInserter: true 23695 }, 23696 attributes: { 23697 textAlign: { 23698 type: 'string' 23699 }, 23700 content: { 23701 type: 'string', 23702 source: 'html', 23703 selector: 'h1,h2,h3,h4,h5,h6', 23704 default: '', 23705 role: 'content' 23706 }, 23707 level: { 23708 type: 'number', 23709 default: 2 23710 }, 23711 placeholder: { 23712 type: 'string' 23713 } 23714 }, 23715 save({ 23716 attributes 23717 }) { 23718 const { 23719 textAlign, 23720 content, 23721 level 23722 } = attributes; 23723 const TagName = 'h' + level; 23724 const className = dist_clsx({ 23725 [`has-text-align-$textAlign}`]: textAlign 23726 }); 23727 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 23728 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 23729 className 23730 }), 23731 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 23732 value: content 23733 }) 23734 }); 23735 } 23736 }; 23737 const heading_deprecated_deprecated = [heading_deprecated_v5, heading_deprecated_v4, heading_deprecated_v3, heading_deprecated_v2, heading_deprecated_v1]; 23738 /* harmony default export */ const heading_deprecated = (heading_deprecated_deprecated); 23739 23740 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/heading/autogenerate-anchors.js 23741 /** 23742 * External dependencies 23743 */ 23744 23745 23746 /** 23747 * Object map tracking anchors. 23748 * 23749 * @type {Record<string, string | null>} 23750 */ 23751 const autogenerate_anchors_anchors = {}; 23752 23753 /** 23754 * Returns the text without markup. 23755 * 23756 * @param {string} text The text. 23757 * 23758 * @return {string} The text without markup. 23759 */ 23760 const getTextWithoutMarkup = text => { 23761 const dummyElement = document.createElement('div'); 23762 dummyElement.innerHTML = text; 23763 return dummyElement.innerText; 23764 }; 23765 23766 /** 23767 * Get the slug from the content. 23768 * 23769 * @param {string} content The block content. 23770 * 23771 * @return {string} Returns the slug. 23772 */ 23773 const getSlug = content => { 23774 // Get the slug. 23775 return remove_accents_default()(getTextWithoutMarkup(content)) 23776 // Convert anything that's not a letter or number to a hyphen. 23777 .replace(/[^\p{L}\p{N}]+/gu, '-') 23778 // Convert to lowercase 23779 .toLowerCase() 23780 // Remove any remaining leading or trailing hyphens. 23781 .replace(/(^-+)|(-+$)/g, ''); 23782 }; 23783 23784 /** 23785 * Generate the anchor for a heading. 23786 * 23787 * @param {string} clientId The block ID. 23788 * @param {string} content The block content. 23789 * 23790 * @return {string|null} Return the heading anchor. 23791 */ 23792 const generateAnchor = (clientId, content) => { 23793 const slug = getSlug(content); 23794 // If slug is empty, then return null. 23795 // Returning null instead of an empty string allows us to check again when the content changes. 23796 if ('' === slug) { 23797 return null; 23798 } 23799 delete autogenerate_anchors_anchors[clientId]; 23800 let anchor = slug; 23801 let i = 0; 23802 23803 // If the anchor already exists in another heading, append -i. 23804 while (Object.values(autogenerate_anchors_anchors).includes(anchor)) { 23805 i += 1; 23806 anchor = slug + '-' + i; 23807 } 23808 return anchor; 23809 }; 23810 23811 /** 23812 * Set the anchor for a heading. 23813 * 23814 * @param {string} clientId The block ID. 23815 * @param {string|null} anchor The block anchor. 23816 */ 23817 const setAnchor = (clientId, anchor) => { 23818 autogenerate_anchors_anchors[clientId] = anchor; 23819 }; 23820 23821 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/heading/edit.js 23822 /** 23823 * External dependencies 23824 */ 23825 23826 23827 /** 23828 * WordPress dependencies 23829 */ 23830 23831 23832 23833 23834 23835 /** 23836 * Internal dependencies 23837 */ 23838 23839 23840 23841 23842 function HeadingEdit({ 23843 attributes, 23844 setAttributes, 23845 mergeBlocks, 23846 onReplace, 23847 style, 23848 clientId 23849 }) { 23850 const { 23851 textAlign, 23852 content, 23853 level, 23854 levelOptions, 23855 placeholder, 23856 anchor 23857 } = attributes; 23858 const tagName = 'h' + level; 23859 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 23860 className: dist_clsx({ 23861 [`has-text-align-$textAlign}`]: textAlign 23862 }), 23863 style 23864 }); 23865 const blockEditingMode = (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)(); 23866 const { 23867 canGenerateAnchors 23868 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 23869 const { 23870 getGlobalBlockCount, 23871 getSettings 23872 } = select(external_wp_blockEditor_namespaceObject.store); 23873 const settings = getSettings(); 23874 return { 23875 canGenerateAnchors: !!settings.generateAnchors || getGlobalBlockCount('core/table-of-contents') > 0 23876 }; 23877 }, []); 23878 const { 23879 __unstableMarkNextChangeAsNotPersistent 23880 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 23881 23882 // Initially set anchor for headings that have content but no anchor set. 23883 // This is used when transforming a block to heading, or for legacy anchors. 23884 (0,external_wp_element_namespaceObject.useEffect)(() => { 23885 if (!canGenerateAnchors) { 23886 return; 23887 } 23888 if (!anchor && content) { 23889 // This side-effect should not create an undo level. 23890 __unstableMarkNextChangeAsNotPersistent(); 23891 setAttributes({ 23892 anchor: generateAnchor(clientId, content) 23893 }); 23894 } 23895 setAnchor(clientId, anchor); 23896 23897 // Remove anchor map when block unmounts. 23898 return () => setAnchor(clientId, null); 23899 }, [anchor, content, clientId, canGenerateAnchors]); 23900 const onContentChange = value => { 23901 const newAttrs = { 23902 content: value 23903 }; 23904 if (canGenerateAnchors && (!anchor || !value || generateAnchor(clientId, content) === anchor)) { 23905 newAttrs.anchor = generateAnchor(clientId, value); 23906 } 23907 setAttributes(newAttrs); 23908 }; 23909 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 23910 children: [blockEditingMode === 'default' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 23911 group: "block", 23912 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.HeadingLevelDropdown, { 23913 value: level, 23914 options: levelOptions, 23915 onChange: newLevel => setAttributes({ 23916 level: newLevel 23917 }) 23918 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 23919 value: textAlign, 23920 onChange: nextAlign => { 23921 setAttributes({ 23922 textAlign: nextAlign 23923 }); 23924 } 23925 })] 23926 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 23927 identifier: "content", 23928 tagName: tagName, 23929 value: content, 23930 onChange: onContentChange, 23931 onMerge: mergeBlocks, 23932 onReplace: onReplace, 23933 onRemove: () => onReplace([]), 23934 placeholder: placeholder || (0,external_wp_i18n_namespaceObject.__)('Heading'), 23935 textAlign: textAlign, 23936 ...(external_wp_element_namespaceObject.Platform.isNative && { 23937 deleteEnter: true 23938 }), 23939 ...blockProps 23940 })] 23941 }); 23942 } 23943 /* harmony default export */ const heading_edit = (HeadingEdit); 23944 23945 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/heading/save.js 23946 /** 23947 * External dependencies 23948 */ 23949 23950 23951 /** 23952 * WordPress dependencies 23953 */ 23954 23955 23956 function heading_save_save({ 23957 attributes 23958 }) { 23959 const { 23960 textAlign, 23961 content, 23962 level 23963 } = attributes; 23964 const TagName = 'h' + level; 23965 const className = dist_clsx({ 23966 [`has-text-align-$textAlign}`]: textAlign 23967 }); 23968 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 23969 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 23970 className 23971 }), 23972 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 23973 value: content 23974 }) 23975 }); 23976 } 23977 23978 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/heading/shared.js 23979 /** 23980 * Given a node name string for a heading node, returns its numeric level. 23981 * 23982 * @param {string} nodeName Heading node name. 23983 * 23984 * @return {number} Heading level. 23985 */ 23986 function getLevelFromHeadingNodeName(nodeName) { 23987 return Number(nodeName.substr(1)); 23988 } 23989 23990 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/heading/transforms.js 23991 /** 23992 * WordPress dependencies 23993 */ 23994 23995 23996 /** 23997 * Internal dependencies 23998 */ 23999 24000 24001 const heading_transforms_transforms = { 24002 from: [{ 24003 type: 'block', 24004 isMultiBlock: true, 24005 blocks: ['core/paragraph'], 24006 transform: attributes => attributes.map(({ 24007 content, 24008 anchor, 24009 align: textAlign, 24010 metadata 24011 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', { 24012 content, 24013 anchor, 24014 textAlign, 24015 metadata: getTransformedMetadata(metadata, 'core/heading', ({ 24016 content: contentBinding 24017 }) => ({ 24018 content: contentBinding 24019 })) 24020 })) 24021 }, { 24022 type: 'raw', 24023 selector: 'h1,h2,h3,h4,h5,h6', 24024 schema: ({ 24025 phrasingContentSchema, 24026 isPaste 24027 }) => { 24028 const schema = { 24029 children: phrasingContentSchema, 24030 attributes: isPaste ? [] : ['style', 'id'] 24031 }; 24032 return { 24033 h1: schema, 24034 h2: schema, 24035 h3: schema, 24036 h4: schema, 24037 h5: schema, 24038 h6: schema 24039 }; 24040 }, 24041 transform(node) { 24042 const attributes = (0,external_wp_blocks_namespaceObject.getBlockAttributes)('core/heading', node.outerHTML); 24043 const { 24044 textAlign 24045 } = node.style || {}; 24046 attributes.level = getLevelFromHeadingNodeName(node.nodeName); 24047 if (textAlign === 'left' || textAlign === 'center' || textAlign === 'right') { 24048 attributes.align = textAlign; 24049 } 24050 return (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', attributes); 24051 } 24052 }, ...[1, 2, 3, 4, 5, 6].map(level => ({ 24053 type: 'prefix', 24054 prefix: Array(level + 1).join('#'), 24055 transform(content) { 24056 return (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', { 24057 level, 24058 content 24059 }); 24060 } 24061 })), ...[1, 2, 3, 4, 5, 6].map(level => ({ 24062 type: 'enter', 24063 regExp: new RegExp(`^/(h|H)$level}$`), 24064 transform: () => (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', { 24065 level 24066 }) 24067 }))], 24068 to: [{ 24069 type: 'block', 24070 isMultiBlock: true, 24071 blocks: ['core/paragraph'], 24072 transform: attributes => attributes.map(({ 24073 content, 24074 textAlign: align, 24075 metadata 24076 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 24077 content, 24078 align, 24079 metadata: getTransformedMetadata(metadata, 'core/paragraph', ({ 24080 content: contentBinding 24081 }) => ({ 24082 content: contentBinding 24083 })) 24084 })) 24085 }] 24086 }; 24087 /* harmony default export */ const heading_transforms = (heading_transforms_transforms); 24088 24089 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/heading/index.js 24090 /** 24091 * WordPress dependencies 24092 */ 24093 24094 24095 24096 /** 24097 * Internal dependencies 24098 */ 24099 24100 24101 24102 const heading_metadata = { 24103 $schema: "https://schemas.wp.org/trunk/block.json", 24104 apiVersion: 3, 24105 name: "core/heading", 24106 title: "Heading", 24107 category: "text", 24108 description: "Introduce new sections and organize content to help visitors (and search engines) understand the structure of your content.", 24109 keywords: ["title", "subtitle"], 24110 textdomain: "default", 24111 attributes: { 24112 textAlign: { 24113 type: "string" 24114 }, 24115 content: { 24116 type: "rich-text", 24117 source: "rich-text", 24118 selector: "h1,h2,h3,h4,h5,h6", 24119 role: "content" 24120 }, 24121 level: { 24122 type: "number", 24123 "default": 2 24124 }, 24125 levelOptions: { 24126 type: "array" 24127 }, 24128 placeholder: { 24129 type: "string" 24130 } 24131 }, 24132 supports: { 24133 align: ["wide", "full"], 24134 anchor: true, 24135 className: true, 24136 splitting: true, 24137 __experimentalBorder: { 24138 color: true, 24139 radius: true, 24140 style: true, 24141 width: true, 24142 __experimentalDefaultControls: { 24143 color: true, 24144 radius: true, 24145 style: true, 24146 width: true 24147 } 24148 }, 24149 color: { 24150 gradients: true, 24151 link: true, 24152 __experimentalDefaultControls: { 24153 background: true, 24154 text: true 24155 } 24156 }, 24157 spacing: { 24158 margin: true, 24159 padding: true, 24160 __experimentalDefaultControls: { 24161 margin: false, 24162 padding: false 24163 } 24164 }, 24165 typography: { 24166 fontSize: true, 24167 lineHeight: true, 24168 __experimentalFontFamily: true, 24169 __experimentalFontStyle: true, 24170 __experimentalFontWeight: true, 24171 __experimentalLetterSpacing: true, 24172 __experimentalTextTransform: true, 24173 __experimentalTextDecoration: true, 24174 __experimentalWritingMode: true, 24175 __experimentalDefaultControls: { 24176 fontSize: true 24177 } 24178 }, 24179 __unstablePasteTextInline: true, 24180 __experimentalSlashInserter: true, 24181 interactivity: { 24182 clientNavigation: true 24183 } 24184 }, 24185 editorStyle: "wp-block-heading-editor", 24186 style: "wp-block-heading" 24187 }; 24188 24189 24190 const { 24191 name: heading_name 24192 } = heading_metadata; 24193 24194 const heading_settings = { 24195 icon: library_heading, 24196 example: { 24197 attributes: { 24198 content: (0,external_wp_i18n_namespaceObject.__)('Code is Poetry'), 24199 level: 2, 24200 textAlign: 'center' 24201 } 24202 }, 24203 __experimentalLabel(attributes, { 24204 context 24205 }) { 24206 const { 24207 content, 24208 level 24209 } = attributes; 24210 const customName = attributes?.metadata?.name; 24211 const hasContent = content?.trim().length > 0; 24212 24213 // In the list view, use the block's content as the label. 24214 // If the content is empty, fall back to the default label. 24215 if (context === 'list-view' && (customName || hasContent)) { 24216 return customName || content; 24217 } 24218 if (context === 'accessibility') { 24219 return !hasContent ? (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: accessibility text. %s: heading level. */ 24220 (0,external_wp_i18n_namespaceObject.__)('Level %s. Empty.'), level) : (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: accessibility text. 1: heading level. 2: heading content. */ 24221 (0,external_wp_i18n_namespaceObject.__)('Level %1$s. %2$s'), level, content); 24222 } 24223 }, 24224 transforms: heading_transforms, 24225 deprecated: heading_deprecated, 24226 merge(attributes, attributesToMerge) { 24227 return { 24228 content: (attributes.content || '') + (attributesToMerge.content || '') 24229 }; 24230 }, 24231 edit: heading_edit, 24232 save: heading_save_save 24233 }; 24234 const heading_init = () => initBlock({ 24235 name: heading_name, 24236 metadata: heading_metadata, 24237 settings: heading_settings 24238 }); 24239 24240 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/home.js 24241 /** 24242 * WordPress dependencies 24243 */ 24244 24245 24246 const home = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 24247 xmlns: "http://www.w3.org/2000/svg", 24248 viewBox: "0 0 24 24", 24249 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 24250 d: "M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z" 24251 }) 24252 }); 24253 /* harmony default export */ const library_home = (home); 24254 24255 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/home-link/edit.js 24256 /** 24257 * External dependencies 24258 */ 24259 24260 24261 /** 24262 * WordPress dependencies 24263 */ 24264 24265 24266 24267 24268 24269 24270 24271 const preventDefault = event => event.preventDefault(); 24272 function HomeEdit({ 24273 attributes, 24274 setAttributes, 24275 context 24276 }) { 24277 const homeUrl = (0,external_wp_data_namespaceObject.useSelect)(select => { 24278 // Site index. 24279 return select(external_wp_coreData_namespaceObject.store).getEntityRecord('root', '__unstableBase')?.home; 24280 }, []); 24281 const { 24282 __unstableMarkNextChangeAsNotPersistent 24283 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 24284 const { 24285 textColor, 24286 backgroundColor, 24287 style 24288 } = context; 24289 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 24290 className: dist_clsx('wp-block-navigation-item', { 24291 'has-text-color': !!textColor || !!style?.color?.text, 24292 [`has-$textColor}-color`]: !!textColor, 24293 'has-background': !!backgroundColor || !!style?.color?.background, 24294 [`has-$backgroundColor}-background-color`]: !!backgroundColor 24295 }), 24296 style: { 24297 color: style?.color?.text, 24298 backgroundColor: style?.color?.background 24299 } 24300 }); 24301 const { 24302 label 24303 } = attributes; 24304 (0,external_wp_element_namespaceObject.useEffect)(() => { 24305 if (label === undefined) { 24306 __unstableMarkNextChangeAsNotPersistent(); 24307 setAttributes({ 24308 label: (0,external_wp_i18n_namespaceObject.__)('Home') 24309 }); 24310 } 24311 }, [label]); 24312 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 24313 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 24314 ...blockProps, 24315 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 24316 className: "wp-block-home-link__content wp-block-navigation-item__content", 24317 href: homeUrl, 24318 onClick: preventDefault, 24319 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 24320 identifier: "label", 24321 className: "wp-block-home-link__label", 24322 value: label, 24323 onChange: labelValue => { 24324 setAttributes({ 24325 label: labelValue 24326 }); 24327 }, 24328 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Home link text'), 24329 placeholder: (0,external_wp_i18n_namespaceObject.__)('Add home link'), 24330 withoutInteractiveFormatting: true, 24331 allowedFormats: ['core/bold', 'core/italic', 'core/image', 'core/strikethrough'] 24332 }) 24333 }) 24334 }) 24335 }); 24336 } 24337 24338 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/home-link/save.js 24339 /** 24340 * WordPress dependencies 24341 */ 24342 24343 24344 function home_link_save_save() { 24345 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 24346 } 24347 24348 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/home-link/index.js 24349 /** 24350 * WordPress dependencies 24351 */ 24352 24353 24354 24355 /** 24356 * Internal dependencies 24357 */ 24358 24359 const home_link_metadata = { 24360 $schema: "https://schemas.wp.org/trunk/block.json", 24361 apiVersion: 3, 24362 name: "core/home-link", 24363 category: "design", 24364 parent: ["core/navigation"], 24365 title: "Home Link", 24366 description: "Create a link that always points to the homepage of the site. Usually not necessary if there is already a site title link present in the header.", 24367 textdomain: "default", 24368 attributes: { 24369 label: { 24370 type: "string" 24371 } 24372 }, 24373 usesContext: ["textColor", "customTextColor", "backgroundColor", "customBackgroundColor", "fontSize", "customFontSize", "style"], 24374 supports: { 24375 reusable: false, 24376 html: false, 24377 typography: { 24378 fontSize: true, 24379 lineHeight: true, 24380 __experimentalFontFamily: true, 24381 __experimentalFontWeight: true, 24382 __experimentalFontStyle: true, 24383 __experimentalTextTransform: true, 24384 __experimentalTextDecoration: true, 24385 __experimentalLetterSpacing: true, 24386 __experimentalDefaultControls: { 24387 fontSize: true 24388 } 24389 }, 24390 interactivity: { 24391 clientNavigation: true 24392 } 24393 }, 24394 editorStyle: "wp-block-home-link-editor", 24395 style: "wp-block-home-link" 24396 }; 24397 24398 24399 const { 24400 name: home_link_name 24401 } = home_link_metadata; 24402 24403 const home_link_settings = { 24404 icon: library_home, 24405 edit: HomeEdit, 24406 save: home_link_save_save, 24407 example: { 24408 attributes: { 24409 label: (0,external_wp_i18n_namespaceObject._x)('Home Link', 'block example') 24410 } 24411 } 24412 }; 24413 const home_link_init = () => initBlock({ 24414 name: home_link_name, 24415 metadata: home_link_metadata, 24416 settings: home_link_settings 24417 }); 24418 24419 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/html.js 24420 /** 24421 * WordPress dependencies 24422 */ 24423 24424 24425 const html = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 24426 viewBox: "0 0 24 24", 24427 xmlns: "http://www.w3.org/2000/svg", 24428 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 24429 d: "M4.8 11.4H2.1V9H1v6h1.1v-2.6h2.7V15h1.1V9H4.8v2.4zm1.9-1.3h1.7V15h1.1v-4.9h1.7V9H6.7v1.1zM16.2 9l-1.5 2.7L13.3 9h-.9l-.8 6h1.1l.5-4 1.5 2.8 1.5-2.8.5 4h1.1L17 9h-.8zm3.8 5V9h-1.1v6h3.6v-1H20z" 24430 }) 24431 }); 24432 /* harmony default export */ const library_html = (html); 24433 24434 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/html/preview.js 24435 /** 24436 * WordPress dependencies 24437 */ 24438 24439 24440 24441 24442 24443 24444 // Default styles used to unset some of the styles 24445 // that might be inherited from the editor style. 24446 24447 24448 24449 const DEFAULT_STYLES = ` 24450 html,body,:root { 24451 margin: 0 !important; 24452 padding: 0 !important; 24453 overflow: visible !important; 24454 min-height: auto !important; 24455 } 24456 `; 24457 function HTMLEditPreview({ 24458 content, 24459 isSelected 24460 }) { 24461 const settingStyles = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings().styles); 24462 const styles = (0,external_wp_element_namespaceObject.useMemo)(() => [DEFAULT_STYLES, ...(0,external_wp_blockEditor_namespaceObject.transformStyles)(settingStyles.filter(style => style.css))], [settingStyles]); 24463 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 24464 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SandBox, { 24465 html: content, 24466 styles: styles, 24467 title: (0,external_wp_i18n_namespaceObject.__)('Custom HTML Preview'), 24468 tabIndex: -1 24469 }), !isSelected && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 24470 className: "block-library-html__preview-overlay" 24471 })] 24472 }); 24473 } 24474 24475 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/html/edit.js 24476 /** 24477 * WordPress dependencies 24478 */ 24479 24480 24481 24482 24483 24484 24485 /** 24486 * Internal dependencies 24487 */ 24488 24489 24490 24491 24492 function HTMLEdit({ 24493 attributes, 24494 setAttributes, 24495 isSelected 24496 }) { 24497 const [isPreview, setIsPreview] = (0,external_wp_element_namespaceObject.useState)(); 24498 const isDisabled = (0,external_wp_element_namespaceObject.useContext)(external_wp_components_namespaceObject.Disabled.Context); 24499 const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(HTMLEdit, 'html-edit-desc'); 24500 function switchToPreview() { 24501 setIsPreview(true); 24502 } 24503 function switchToHTML() { 24504 setIsPreview(false); 24505 } 24506 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 24507 className: 'block-library-html__edit', 24508 'aria-describedby': isPreview ? instanceId : undefined 24509 }); 24510 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 24511 ...blockProps, 24512 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 24513 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.ToolbarGroup, { 24514 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 24515 isPressed: !isPreview, 24516 onClick: switchToHTML, 24517 children: "HTML" 24518 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 24519 isPressed: isPreview, 24520 onClick: switchToPreview, 24521 children: (0,external_wp_i18n_namespaceObject.__)('Preview') 24522 })] 24523 }) 24524 }), isPreview || isDisabled ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 24525 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(HTMLEditPreview, { 24526 content: attributes.content, 24527 isSelected: isSelected 24528 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, { 24529 id: instanceId, 24530 children: (0,external_wp_i18n_namespaceObject.__)('HTML preview is not yet fully accessible. Please switch screen reader to virtualized mode to navigate the below iFrame.') 24531 })] 24532 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.PlainText, { 24533 value: attributes.content, 24534 onChange: content => setAttributes({ 24535 content 24536 }), 24537 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write HTML…'), 24538 "aria-label": (0,external_wp_i18n_namespaceObject.__)('HTML') 24539 })] 24540 }); 24541 } 24542 24543 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/html/save.js 24544 /** 24545 * WordPress dependencies 24546 */ 24547 24548 24549 function html_save_save({ 24550 attributes 24551 }) { 24552 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_element_namespaceObject.RawHTML, { 24553 children: attributes.content 24554 }); 24555 } 24556 24557 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/html/transforms.js 24558 /** 24559 * WordPress dependencies 24560 */ 24561 24562 24563 const html_transforms_transforms = { 24564 from: [{ 24565 type: 'block', 24566 blocks: ['core/code'], 24567 transform: ({ 24568 content: html 24569 }) => { 24570 return (0,external_wp_blocks_namespaceObject.createBlock)('core/html', { 24571 // The code block may output HTML formatting, so convert it 24572 // to plain text. 24573 content: (0,external_wp_richText_namespaceObject.create)({ 24574 html 24575 }).text 24576 }); 24577 } 24578 }] 24579 }; 24580 /* harmony default export */ const html_transforms = (html_transforms_transforms); 24581 24582 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/html/index.js 24583 /** 24584 * WordPress dependencies 24585 */ 24586 24587 24588 24589 /** 24590 * Internal dependencies 24591 */ 24592 24593 24594 const html_metadata = { 24595 $schema: "https://schemas.wp.org/trunk/block.json", 24596 apiVersion: 3, 24597 name: "core/html", 24598 title: "Custom HTML", 24599 category: "widgets", 24600 description: "Add custom HTML code and preview it as you edit.", 24601 keywords: ["embed"], 24602 textdomain: "default", 24603 attributes: { 24604 content: { 24605 type: "string", 24606 source: "raw" 24607 } 24608 }, 24609 supports: { 24610 customClassName: false, 24611 className: false, 24612 html: false, 24613 interactivity: { 24614 clientNavigation: true 24615 } 24616 }, 24617 editorStyle: "wp-block-html-editor" 24618 }; 24619 24620 24621 const { 24622 name: html_name 24623 } = html_metadata; 24624 24625 const html_settings = { 24626 icon: library_html, 24627 example: { 24628 attributes: { 24629 content: '<marquee>' + (0,external_wp_i18n_namespaceObject.__)('Welcome to the wonderful world of blocks…') + '</marquee>' 24630 } 24631 }, 24632 edit: HTMLEdit, 24633 save: html_save_save, 24634 transforms: html_transforms 24635 }; 24636 const html_init = () => initBlock({ 24637 name: html_name, 24638 metadata: html_metadata, 24639 settings: html_settings 24640 }); 24641 24642 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/image/deprecated.js 24643 /** 24644 * External dependencies 24645 */ 24646 24647 24648 /** 24649 * WordPress dependencies 24650 */ 24651 24652 24653 /** 24654 * Deprecation for adding the `wp-image-${id}` class to the image block for 24655 * responsive images. 24656 * 24657 * @see https://github.com/WordPress/gutenberg/pull/4898 24658 */ 24659 24660 24661 24662 const image_deprecated_v1 = { 24663 attributes: { 24664 url: { 24665 type: 'string', 24666 source: 'attribute', 24667 selector: 'img', 24668 attribute: 'src' 24669 }, 24670 alt: { 24671 type: 'string', 24672 source: 'attribute', 24673 selector: 'img', 24674 attribute: 'alt', 24675 default: '' 24676 }, 24677 caption: { 24678 type: 'array', 24679 source: 'children', 24680 selector: 'figcaption' 24681 }, 24682 href: { 24683 type: 'string', 24684 source: 'attribute', 24685 selector: 'a', 24686 attribute: 'href' 24687 }, 24688 id: { 24689 type: 'number' 24690 }, 24691 align: { 24692 type: 'string' 24693 }, 24694 width: { 24695 type: 'number' 24696 }, 24697 height: { 24698 type: 'number' 24699 } 24700 }, 24701 save({ 24702 attributes 24703 }) { 24704 const { 24705 url, 24706 alt, 24707 caption, 24708 align, 24709 href, 24710 width, 24711 height 24712 } = attributes; 24713 const extraImageProps = width || height ? { 24714 width, 24715 height 24716 } : {}; 24717 const image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 24718 src: url, 24719 alt: alt, 24720 ...extraImageProps 24721 }); 24722 let figureStyle = {}; 24723 if (width) { 24724 figureStyle = { 24725 width 24726 }; 24727 } else if (align === 'left' || align === 'right') { 24728 figureStyle = { 24729 maxWidth: '50%' 24730 }; 24731 } 24732 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 24733 className: align ? `align$align}` : null, 24734 style: figureStyle, 24735 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 24736 href: href, 24737 children: image 24738 }) : image, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 24739 tagName: "figcaption", 24740 value: caption 24741 })] 24742 }); 24743 } 24744 }; 24745 24746 /** 24747 * Deprecation for adding the `is-resized` class to the image block to fix 24748 * captions on resized images. 24749 * 24750 * @see https://github.com/WordPress/gutenberg/pull/6496 24751 */ 24752 const image_deprecated_v2 = { 24753 attributes: { 24754 url: { 24755 type: 'string', 24756 source: 'attribute', 24757 selector: 'img', 24758 attribute: 'src' 24759 }, 24760 alt: { 24761 type: 'string', 24762 source: 'attribute', 24763 selector: 'img', 24764 attribute: 'alt', 24765 default: '' 24766 }, 24767 caption: { 24768 type: 'array', 24769 source: 'children', 24770 selector: 'figcaption' 24771 }, 24772 href: { 24773 type: 'string', 24774 source: 'attribute', 24775 selector: 'a', 24776 attribute: 'href' 24777 }, 24778 id: { 24779 type: 'number' 24780 }, 24781 align: { 24782 type: 'string' 24783 }, 24784 width: { 24785 type: 'number' 24786 }, 24787 height: { 24788 type: 'number' 24789 } 24790 }, 24791 save({ 24792 attributes 24793 }) { 24794 const { 24795 url, 24796 alt, 24797 caption, 24798 align, 24799 href, 24800 width, 24801 height, 24802 id 24803 } = attributes; 24804 const image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 24805 src: url, 24806 alt: alt, 24807 className: id ? `wp-image-$id}` : null, 24808 width: width, 24809 height: height 24810 }); 24811 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 24812 className: align ? `align$align}` : null, 24813 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 24814 href: href, 24815 children: image 24816 }) : image, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 24817 tagName: "figcaption", 24818 value: caption 24819 })] 24820 }); 24821 } 24822 }; 24823 24824 /** 24825 * Deprecation for image floats including a wrapping div. 24826 * 24827 * @see https://github.com/WordPress/gutenberg/pull/7721 24828 */ 24829 const image_deprecated_v3 = { 24830 attributes: { 24831 url: { 24832 type: 'string', 24833 source: 'attribute', 24834 selector: 'img', 24835 attribute: 'src' 24836 }, 24837 alt: { 24838 type: 'string', 24839 source: 'attribute', 24840 selector: 'img', 24841 attribute: 'alt', 24842 default: '' 24843 }, 24844 caption: { 24845 type: 'array', 24846 source: 'children', 24847 selector: 'figcaption' 24848 }, 24849 href: { 24850 type: 'string', 24851 source: 'attribute', 24852 selector: 'figure > a', 24853 attribute: 'href' 24854 }, 24855 id: { 24856 type: 'number' 24857 }, 24858 align: { 24859 type: 'string' 24860 }, 24861 width: { 24862 type: 'number' 24863 }, 24864 height: { 24865 type: 'number' 24866 }, 24867 linkDestination: { 24868 type: 'string', 24869 default: 'none' 24870 } 24871 }, 24872 save({ 24873 attributes 24874 }) { 24875 const { 24876 url, 24877 alt, 24878 caption, 24879 align, 24880 href, 24881 width, 24882 height, 24883 id 24884 } = attributes; 24885 const classes = dist_clsx({ 24886 [`align$align}`]: align, 24887 'is-resized': width || height 24888 }); 24889 const image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 24890 src: url, 24891 alt: alt, 24892 className: id ? `wp-image-$id}` : null, 24893 width: width, 24894 height: height 24895 }); 24896 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 24897 className: classes, 24898 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 24899 href: href, 24900 children: image 24901 }) : image, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 24902 tagName: "figcaption", 24903 value: caption 24904 })] 24905 }); 24906 } 24907 }; 24908 24909 /** 24910 * Deprecation for removing the outer div wrapper around aligned images. 24911 * 24912 * @see https://github.com/WordPress/gutenberg/pull/38657 24913 */ 24914 const image_deprecated_v4 = { 24915 attributes: { 24916 align: { 24917 type: 'string' 24918 }, 24919 url: { 24920 type: 'string', 24921 source: 'attribute', 24922 selector: 'img', 24923 attribute: 'src' 24924 }, 24925 alt: { 24926 type: 'string', 24927 source: 'attribute', 24928 selector: 'img', 24929 attribute: 'alt', 24930 default: '' 24931 }, 24932 caption: { 24933 type: 'string', 24934 source: 'html', 24935 selector: 'figcaption' 24936 }, 24937 title: { 24938 type: 'string', 24939 source: 'attribute', 24940 selector: 'img', 24941 attribute: 'title' 24942 }, 24943 href: { 24944 type: 'string', 24945 source: 'attribute', 24946 selector: 'figure > a', 24947 attribute: 'href' 24948 }, 24949 rel: { 24950 type: 'string', 24951 source: 'attribute', 24952 selector: 'figure > a', 24953 attribute: 'rel' 24954 }, 24955 linkClass: { 24956 type: 'string', 24957 source: 'attribute', 24958 selector: 'figure > a', 24959 attribute: 'class' 24960 }, 24961 id: { 24962 type: 'number' 24963 }, 24964 width: { 24965 type: 'number' 24966 }, 24967 height: { 24968 type: 'number' 24969 }, 24970 sizeSlug: { 24971 type: 'string' 24972 }, 24973 linkDestination: { 24974 type: 'string' 24975 }, 24976 linkTarget: { 24977 type: 'string', 24978 source: 'attribute', 24979 selector: 'figure > a', 24980 attribute: 'target' 24981 } 24982 }, 24983 supports: { 24984 anchor: true 24985 }, 24986 save({ 24987 attributes 24988 }) { 24989 const { 24990 url, 24991 alt, 24992 caption, 24993 align, 24994 href, 24995 rel, 24996 linkClass, 24997 width, 24998 height, 24999 id, 25000 linkTarget, 25001 sizeSlug, 25002 title 25003 } = attributes; 25004 const newRel = !rel ? undefined : rel; 25005 const classes = dist_clsx({ 25006 [`align$align}`]: align, 25007 [`size-$sizeSlug}`]: sizeSlug, 25008 'is-resized': width || height 25009 }); 25010 const image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 25011 src: url, 25012 alt: alt, 25013 className: id ? `wp-image-$id}` : null, 25014 width: width, 25015 height: height, 25016 title: title 25017 }); 25018 const figure = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 25019 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 25020 className: linkClass, 25021 href: href, 25022 target: linkTarget, 25023 rel: newRel, 25024 children: image 25025 }) : image, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 25026 tagName: "figcaption", 25027 value: caption 25028 })] 25029 }); 25030 if ('left' === align || 'right' === align || 'center' === align) { 25031 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 25032 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 25033 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 25034 className: classes, 25035 children: figure 25036 }) 25037 }); 25038 } 25039 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 25040 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 25041 className: classes 25042 }), 25043 children: figure 25044 }); 25045 } 25046 }; 25047 25048 /** 25049 * Deprecation for moving existing border radius styles onto the inner img 25050 * element where new border block support styles must be applied. 25051 * It will also add a new `.has-custom-border` class for existing blocks 25052 * with border radii set. This class is required to improve caption position 25053 * and styling when an image within a gallery has a custom border or 25054 * rounded corners. 25055 * 25056 * @see https://github.com/WordPress/gutenberg/pull/31366 25057 */ 25058 const image_deprecated_v5 = { 25059 attributes: { 25060 align: { 25061 type: 'string' 25062 }, 25063 url: { 25064 type: 'string', 25065 source: 'attribute', 25066 selector: 'img', 25067 attribute: 'src' 25068 }, 25069 alt: { 25070 type: 'string', 25071 source: 'attribute', 25072 selector: 'img', 25073 attribute: 'alt', 25074 default: '' 25075 }, 25076 caption: { 25077 type: 'string', 25078 source: 'html', 25079 selector: 'figcaption' 25080 }, 25081 title: { 25082 type: 'string', 25083 source: 'attribute', 25084 selector: 'img', 25085 attribute: 'title' 25086 }, 25087 href: { 25088 type: 'string', 25089 source: 'attribute', 25090 selector: 'figure > a', 25091 attribute: 'href' 25092 }, 25093 rel: { 25094 type: 'string', 25095 source: 'attribute', 25096 selector: 'figure > a', 25097 attribute: 'rel' 25098 }, 25099 linkClass: { 25100 type: 'string', 25101 source: 'attribute', 25102 selector: 'figure > a', 25103 attribute: 'class' 25104 }, 25105 id: { 25106 type: 'number' 25107 }, 25108 width: { 25109 type: 'number' 25110 }, 25111 height: { 25112 type: 'number' 25113 }, 25114 sizeSlug: { 25115 type: 'string' 25116 }, 25117 linkDestination: { 25118 type: 'string' 25119 }, 25120 linkTarget: { 25121 type: 'string', 25122 source: 'attribute', 25123 selector: 'figure > a', 25124 attribute: 'target' 25125 } 25126 }, 25127 supports: { 25128 anchor: true, 25129 color: { 25130 __experimentalDuotone: 'img', 25131 text: false, 25132 background: false 25133 }, 25134 __experimentalBorder: { 25135 radius: true, 25136 __experimentalDefaultControls: { 25137 radius: true 25138 } 25139 }, 25140 __experimentalStyle: { 25141 spacing: { 25142 margin: '0 0 1em 0' 25143 } 25144 } 25145 }, 25146 save({ 25147 attributes 25148 }) { 25149 const { 25150 url, 25151 alt, 25152 caption, 25153 align, 25154 href, 25155 rel, 25156 linkClass, 25157 width, 25158 height, 25159 id, 25160 linkTarget, 25161 sizeSlug, 25162 title 25163 } = attributes; 25164 const newRel = !rel ? undefined : rel; 25165 const classes = dist_clsx({ 25166 [`align$align}`]: align, 25167 [`size-$sizeSlug}`]: sizeSlug, 25168 'is-resized': width || height 25169 }); 25170 const image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 25171 src: url, 25172 alt: alt, 25173 className: id ? `wp-image-$id}` : null, 25174 width: width, 25175 height: height, 25176 title: title 25177 }); 25178 const figure = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 25179 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 25180 className: linkClass, 25181 href: href, 25182 target: linkTarget, 25183 rel: newRel, 25184 children: image 25185 }) : image, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 25186 tagName: "figcaption", 25187 value: caption 25188 })] 25189 }); 25190 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 25191 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 25192 className: classes 25193 }), 25194 children: figure 25195 }); 25196 } 25197 }; 25198 25199 /** 25200 * Deprecation for adding width and height as style rules on the inner img. 25201 * 25202 * @see https://github.com/WordPress/gutenberg/pull/31366 25203 */ 25204 const image_deprecated_v6 = { 25205 attributes: { 25206 align: { 25207 type: 'string' 25208 }, 25209 url: { 25210 type: 'string', 25211 source: 'attribute', 25212 selector: 'img', 25213 attribute: 'src', 25214 role: 'content' 25215 }, 25216 alt: { 25217 type: 'string', 25218 source: 'attribute', 25219 selector: 'img', 25220 attribute: 'alt', 25221 default: '', 25222 role: 'content' 25223 }, 25224 caption: { 25225 type: 'string', 25226 source: 'html', 25227 selector: 'figcaption', 25228 role: 'content' 25229 }, 25230 title: { 25231 type: 'string', 25232 source: 'attribute', 25233 selector: 'img', 25234 attribute: 'title', 25235 role: 'content' 25236 }, 25237 href: { 25238 type: 'string', 25239 source: 'attribute', 25240 selector: 'figure > a', 25241 attribute: 'href', 25242 role: 'content' 25243 }, 25244 rel: { 25245 type: 'string', 25246 source: 'attribute', 25247 selector: 'figure > a', 25248 attribute: 'rel' 25249 }, 25250 linkClass: { 25251 type: 'string', 25252 source: 'attribute', 25253 selector: 'figure > a', 25254 attribute: 'class' 25255 }, 25256 id: { 25257 type: 'number', 25258 role: 'content' 25259 }, 25260 width: { 25261 type: 'number' 25262 }, 25263 height: { 25264 type: 'number' 25265 }, 25266 aspectRatio: { 25267 type: 'string' 25268 }, 25269 scale: { 25270 type: 'string' 25271 }, 25272 sizeSlug: { 25273 type: 'string' 25274 }, 25275 linkDestination: { 25276 type: 'string' 25277 }, 25278 linkTarget: { 25279 type: 'string', 25280 source: 'attribute', 25281 selector: 'figure > a', 25282 attribute: 'target' 25283 } 25284 }, 25285 supports: { 25286 anchor: true, 25287 color: { 25288 text: false, 25289 background: false 25290 }, 25291 filter: { 25292 duotone: true 25293 }, 25294 __experimentalBorder: { 25295 color: true, 25296 radius: true, 25297 width: true, 25298 __experimentalSkipSerialization: true, 25299 __experimentalDefaultControls: { 25300 color: true, 25301 radius: true, 25302 width: true 25303 } 25304 } 25305 }, 25306 migrate(attributes) { 25307 const { 25308 height, 25309 width 25310 } = attributes; 25311 return { 25312 ...attributes, 25313 width: typeof width === 'number' ? `$width}px` : width, 25314 height: typeof height === 'number' ? `$height}px` : height 25315 }; 25316 }, 25317 save({ 25318 attributes 25319 }) { 25320 const { 25321 url, 25322 alt, 25323 caption, 25324 align, 25325 href, 25326 rel, 25327 linkClass, 25328 width, 25329 height, 25330 aspectRatio, 25331 scale, 25332 id, 25333 linkTarget, 25334 sizeSlug, 25335 title 25336 } = attributes; 25337 const newRel = !rel ? undefined : rel; 25338 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetBorderClassesAndStyles)(attributes); 25339 const classes = dist_clsx({ 25340 [`align$align}`]: align, 25341 [`size-$sizeSlug}`]: sizeSlug, 25342 'is-resized': width || height, 25343 'has-custom-border': !!borderProps.className || borderProps.style && Object.keys(borderProps.style).length > 0 25344 }); 25345 const imageClasses = dist_clsx(borderProps.className, { 25346 [`wp-image-$id}`]: !!id 25347 }); 25348 const image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 25349 src: url, 25350 alt: alt, 25351 className: imageClasses || undefined, 25352 style: { 25353 ...borderProps.style, 25354 aspectRatio, 25355 objectFit: scale 25356 }, 25357 width: width, 25358 height: height, 25359 title: title 25360 }); 25361 const figure = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 25362 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 25363 className: linkClass, 25364 href: href, 25365 target: linkTarget, 25366 rel: newRel, 25367 children: image 25368 }) : image, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 25369 className: (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('caption'), 25370 tagName: "figcaption", 25371 value: caption 25372 })] 25373 }); 25374 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 25375 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 25376 className: classes 25377 }), 25378 children: figure 25379 }); 25380 } 25381 }; 25382 25383 /** 25384 * Deprecation for converting to string width and height block attributes and 25385 * removing the width and height img element attributes which are not needed 25386 * as they get added by the TODO hook. 25387 * 25388 * @see https://github.com/WordPress/gutenberg/pull/53274 25389 */ 25390 const image_deprecated_v7 = { 25391 attributes: { 25392 align: { 25393 type: 'string' 25394 }, 25395 url: { 25396 type: 'string', 25397 source: 'attribute', 25398 selector: 'img', 25399 attribute: 'src', 25400 role: 'content' 25401 }, 25402 alt: { 25403 type: 'string', 25404 source: 'attribute', 25405 selector: 'img', 25406 attribute: 'alt', 25407 default: '', 25408 role: 'content' 25409 }, 25410 caption: { 25411 type: 'string', 25412 source: 'html', 25413 selector: 'figcaption', 25414 role: 'content' 25415 }, 25416 title: { 25417 type: 'string', 25418 source: 'attribute', 25419 selector: 'img', 25420 attribute: 'title', 25421 role: 'content' 25422 }, 25423 href: { 25424 type: 'string', 25425 source: 'attribute', 25426 selector: 'figure > a', 25427 attribute: 'href', 25428 role: 'content' 25429 }, 25430 rel: { 25431 type: 'string', 25432 source: 'attribute', 25433 selector: 'figure > a', 25434 attribute: 'rel' 25435 }, 25436 linkClass: { 25437 type: 'string', 25438 source: 'attribute', 25439 selector: 'figure > a', 25440 attribute: 'class' 25441 }, 25442 id: { 25443 type: 'number', 25444 role: 'content' 25445 }, 25446 width: { 25447 type: 'number' 25448 }, 25449 height: { 25450 type: 'number' 25451 }, 25452 aspectRatio: { 25453 type: 'string' 25454 }, 25455 scale: { 25456 type: 'string' 25457 }, 25458 sizeSlug: { 25459 type: 'string' 25460 }, 25461 linkDestination: { 25462 type: 'string' 25463 }, 25464 linkTarget: { 25465 type: 'string', 25466 source: 'attribute', 25467 selector: 'figure > a', 25468 attribute: 'target' 25469 } 25470 }, 25471 supports: { 25472 anchor: true, 25473 color: { 25474 text: false, 25475 background: false 25476 }, 25477 filter: { 25478 duotone: true 25479 }, 25480 __experimentalBorder: { 25481 color: true, 25482 radius: true, 25483 width: true, 25484 __experimentalSkipSerialization: true, 25485 __experimentalDefaultControls: { 25486 color: true, 25487 radius: true, 25488 width: true 25489 } 25490 } 25491 }, 25492 migrate({ 25493 width, 25494 height, 25495 ...attributes 25496 }) { 25497 return { 25498 ...attributes, 25499 width: `$width}px`, 25500 height: `$height}px` 25501 }; 25502 }, 25503 save({ 25504 attributes 25505 }) { 25506 const { 25507 url, 25508 alt, 25509 caption, 25510 align, 25511 href, 25512 rel, 25513 linkClass, 25514 width, 25515 height, 25516 aspectRatio, 25517 scale, 25518 id, 25519 linkTarget, 25520 sizeSlug, 25521 title 25522 } = attributes; 25523 const newRel = !rel ? undefined : rel; 25524 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetBorderClassesAndStyles)(attributes); 25525 const classes = dist_clsx({ 25526 [`align$align}`]: align, 25527 [`size-$sizeSlug}`]: sizeSlug, 25528 'is-resized': width || height, 25529 'has-custom-border': !!borderProps.className || borderProps.style && Object.keys(borderProps.style).length > 0 25530 }); 25531 const imageClasses = dist_clsx(borderProps.className, { 25532 [`wp-image-$id}`]: !!id 25533 }); 25534 const image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 25535 src: url, 25536 alt: alt, 25537 className: imageClasses || undefined, 25538 style: { 25539 ...borderProps.style, 25540 aspectRatio, 25541 objectFit: scale, 25542 width, 25543 height 25544 }, 25545 width: width, 25546 height: height, 25547 title: title 25548 }); 25549 const figure = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 25550 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 25551 className: linkClass, 25552 href: href, 25553 target: linkTarget, 25554 rel: newRel, 25555 children: image 25556 }) : image, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 25557 className: (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('caption'), 25558 tagName: "figcaption", 25559 value: caption 25560 })] 25561 }); 25562 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 25563 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 25564 className: classes 25565 }), 25566 children: figure 25567 }); 25568 } 25569 }; 25570 const deprecated_v8 = { 25571 attributes: { 25572 align: { 25573 type: 'string' 25574 }, 25575 behaviors: { 25576 type: 'object' 25577 }, 25578 url: { 25579 type: 'string', 25580 source: 'attribute', 25581 selector: 'img', 25582 attribute: 'src', 25583 role: 'content' 25584 }, 25585 alt: { 25586 type: 'string', 25587 source: 'attribute', 25588 selector: 'img', 25589 attribute: 'alt', 25590 default: '', 25591 role: 'content' 25592 }, 25593 caption: { 25594 type: 'string', 25595 source: 'html', 25596 selector: 'figcaption', 25597 role: 'content' 25598 }, 25599 title: { 25600 type: 'string', 25601 source: 'attribute', 25602 selector: 'img', 25603 attribute: 'title', 25604 role: 'content' 25605 }, 25606 href: { 25607 type: 'string', 25608 source: 'attribute', 25609 selector: 'figure > a', 25610 attribute: 'href', 25611 role: 'content' 25612 }, 25613 rel: { 25614 type: 'string', 25615 source: 'attribute', 25616 selector: 'figure > a', 25617 attribute: 'rel' 25618 }, 25619 linkClass: { 25620 type: 'string', 25621 source: 'attribute', 25622 selector: 'figure > a', 25623 attribute: 'class' 25624 }, 25625 id: { 25626 type: 'number', 25627 role: 'content' 25628 }, 25629 width: { 25630 type: 'string' 25631 }, 25632 height: { 25633 type: 'string' 25634 }, 25635 aspectRatio: { 25636 type: 'string' 25637 }, 25638 scale: { 25639 type: 'string' 25640 }, 25641 sizeSlug: { 25642 type: 'string' 25643 }, 25644 linkDestination: { 25645 type: 'string' 25646 }, 25647 linkTarget: { 25648 type: 'string', 25649 source: 'attribute', 25650 selector: 'figure > a', 25651 attribute: 'target' 25652 } 25653 }, 25654 supports: { 25655 anchor: true, 25656 color: { 25657 text: false, 25658 background: false 25659 }, 25660 filter: { 25661 duotone: true 25662 }, 25663 __experimentalBorder: { 25664 color: true, 25665 radius: true, 25666 width: true, 25667 __experimentalSkipSerialization: true, 25668 __experimentalDefaultControls: { 25669 color: true, 25670 radius: true, 25671 width: true 25672 } 25673 } 25674 }, 25675 migrate({ 25676 width, 25677 height, 25678 ...attributes 25679 }) { 25680 // We need to perform a check here because in cases 25681 // where attributes are added dynamically to blocks, 25682 // block invalidation overrides the isEligible() method 25683 // and forces the migration to run, so it's not guaranteed 25684 // that `behaviors` or `behaviors.lightbox` will be defined. 25685 if (!attributes.behaviors?.lightbox) { 25686 return attributes; 25687 } 25688 const { 25689 behaviors: { 25690 lightbox: { 25691 enabled 25692 } 25693 } 25694 } = attributes; 25695 const newAttributes = { 25696 ...attributes, 25697 lightbox: { 25698 enabled 25699 } 25700 }; 25701 delete newAttributes.behaviors; 25702 return newAttributes; 25703 }, 25704 isEligible(attributes) { 25705 return !!attributes.behaviors; 25706 }, 25707 save({ 25708 attributes 25709 }) { 25710 const { 25711 url, 25712 alt, 25713 caption, 25714 align, 25715 href, 25716 rel, 25717 linkClass, 25718 width, 25719 height, 25720 aspectRatio, 25721 scale, 25722 id, 25723 linkTarget, 25724 sizeSlug, 25725 title 25726 } = attributes; 25727 const newRel = !rel ? undefined : rel; 25728 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetBorderClassesAndStyles)(attributes); 25729 const classes = dist_clsx({ 25730 [`align$align}`]: align, 25731 [`size-$sizeSlug}`]: sizeSlug, 25732 'is-resized': width || height, 25733 'has-custom-border': !!borderProps.className || borderProps.style && Object.keys(borderProps.style).length > 0 25734 }); 25735 const imageClasses = dist_clsx(borderProps.className, { 25736 [`wp-image-$id}`]: !!id 25737 }); 25738 const image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 25739 src: url, 25740 alt: alt, 25741 className: imageClasses || undefined, 25742 style: { 25743 ...borderProps.style, 25744 aspectRatio, 25745 objectFit: scale, 25746 width, 25747 height 25748 }, 25749 title: title 25750 }); 25751 const figure = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 25752 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 25753 className: linkClass, 25754 href: href, 25755 target: linkTarget, 25756 rel: newRel, 25757 children: image 25758 }) : image, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 25759 className: (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('caption'), 25760 tagName: "figcaption", 25761 value: caption 25762 })] 25763 }); 25764 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 25765 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 25766 className: classes 25767 }), 25768 children: figure 25769 }); 25770 } 25771 }; 25772 /* harmony default export */ const image_deprecated = ([deprecated_v8, image_deprecated_v7, image_deprecated_v6, image_deprecated_v5, image_deprecated_v4, image_deprecated_v3, image_deprecated_v2, image_deprecated_v1]); 25773 25774 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/plugins.js 25775 /** 25776 * WordPress dependencies 25777 */ 25778 25779 25780 const plugins = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 25781 xmlns: "http://www.w3.org/2000/svg", 25782 viewBox: "0 0 24 24", 25783 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 25784 d: "M10.5 4v4h3V4H15v4h1.5a1 1 0 011 1v4l-3 4v2a1 1 0 01-1 1h-3a1 1 0 01-1-1v-2l-3-4V9a1 1 0 011-1H9V4h1.5zm.5 12.5v2h2v-2l3-4v-3H8v3l3 4z" 25785 }) 25786 }); 25787 /* harmony default export */ const library_plugins = (plugins); 25788 25789 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/crop.js 25790 /** 25791 * WordPress dependencies 25792 */ 25793 25794 25795 const crop = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 25796 xmlns: "http://www.w3.org/2000/svg", 25797 viewBox: "0 0 24 24", 25798 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 25799 d: "M18 20v-2h2v-1.5H7.75a.25.25 0 0 1-.25-.25V4H6v2H4v1.5h2v8.75c0 .966.784 1.75 1.75 1.75h8.75v2H18ZM9.273 7.5h6.977a.25.25 0 0 1 .25.25v6.977H18V7.75A1.75 1.75 0 0 0 16.25 6H9.273v1.5Z" 25800 }) 25801 }); 25802 /* harmony default export */ const library_crop = (crop); 25803 25804 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/overlay-text.js 25805 /** 25806 * WordPress dependencies 25807 */ 25808 25809 25810 const overlayText = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 25811 xmlns: "http://www.w3.org/2000/svg", 25812 viewBox: "0 0 24 24", 25813 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 25814 d: "M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12-9.8c.4 0 .8-.3.9-.7l1.1-3h3.6l.5 1.7h1.9L13 9h-2.2l-3.4 9.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v12H20V6c0-1.1-.9-2-2-2zm-6 7l1.4 3.9h-2.7L12 11z" 25815 }) 25816 }); 25817 /* harmony default export */ const overlay_text = (overlayText); 25818 25819 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/upload.js 25820 /** 25821 * WordPress dependencies 25822 */ 25823 25824 25825 const upload = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 25826 xmlns: "http://www.w3.org/2000/svg", 25827 viewBox: "0 0 24 24", 25828 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 25829 d: "M18.5 15v3.5H13V6.7l4.5 4.1 1-1.1-6.2-5.8-5.8 5.8 1 1.1 4-4v11.7h-6V15H4v5h16v-5z" 25830 }) 25831 }); 25832 /* harmony default export */ const library_upload = (upload); 25833 25834 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/image/image.js 25835 /** 25836 * WordPress dependencies 25837 */ 25838 25839 25840 25841 25842 25843 25844 25845 25846 25847 25848 25849 25850 25851 25852 /** 25853 * Internal dependencies 25854 */ 25855 25856 25857 25858 25859 25860 /** 25861 * Module constants 25862 */ 25863 25864 25865 25866 25867 25868 25869 const { 25870 DimensionsTool, 25871 ResolutionTool 25872 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 25873 const scaleOptions = [{ 25874 value: 'cover', 25875 label: (0,external_wp_i18n_namespaceObject._x)('Cover', 'Scale option for dimensions control'), 25876 help: (0,external_wp_i18n_namespaceObject.__)('Image covers the space evenly.') 25877 }, { 25878 value: 'contain', 25879 label: (0,external_wp_i18n_namespaceObject._x)('Contain', 'Scale option for dimensions control'), 25880 help: (0,external_wp_i18n_namespaceObject.__)('Image is contained without distortion.') 25881 }]; 25882 25883 // If the image has a href, wrap in an <a /> tag to trigger any inherited link element styles. 25884 const ImageWrapper = ({ 25885 href, 25886 children 25887 }) => { 25888 if (!href) { 25889 return children; 25890 } 25891 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 25892 href: href, 25893 onClick: event => event.preventDefault(), 25894 "aria-disabled": true, 25895 style: { 25896 // When the Image block is linked, 25897 // it's wrapped with a disabled <a /> tag. 25898 // Restore cursor style so it doesn't appear 'clickable' 25899 // and remove pointer events. Safari needs the display property. 25900 pointerEvents: 'none', 25901 cursor: 'default', 25902 display: 'inline' 25903 }, 25904 children: children 25905 }); 25906 }; 25907 function image_Image({ 25908 temporaryURL, 25909 attributes, 25910 setAttributes, 25911 isSingleSelected, 25912 insertBlocksAfter, 25913 onReplace, 25914 onSelectImage, 25915 onSelectURL, 25916 onUploadError, 25917 context, 25918 clientId, 25919 blockEditingMode, 25920 parentLayoutType, 25921 maxContentWidth 25922 }) { 25923 const { 25924 url = '', 25925 alt, 25926 align, 25927 id, 25928 href, 25929 rel, 25930 linkClass, 25931 linkDestination, 25932 title, 25933 width, 25934 height, 25935 aspectRatio, 25936 scale, 25937 linkTarget, 25938 sizeSlug, 25939 lightbox, 25940 metadata 25941 } = attributes; 25942 25943 // The only supported unit is px, so we can parseInt to strip the px here. 25944 const numericWidth = width ? parseInt(width, 10) : undefined; 25945 const numericHeight = height ? parseInt(height, 10) : undefined; 25946 const imageRef = (0,external_wp_element_namespaceObject.useRef)(); 25947 const { 25948 allowResize = true 25949 } = context; 25950 const { 25951 getBlock, 25952 getSettings 25953 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 25954 const image = (0,external_wp_data_namespaceObject.useSelect)(select => id && isSingleSelected ? select(external_wp_coreData_namespaceObject.store).getMedia(id, { 25955 context: 'view' 25956 }) : null, [id, isSingleSelected]); 25957 const { 25958 canInsertCover, 25959 imageEditing, 25960 imageSizes, 25961 maxWidth 25962 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 25963 const { 25964 getBlockRootClientId, 25965 canInsertBlockType 25966 } = select(external_wp_blockEditor_namespaceObject.store); 25967 const rootClientId = getBlockRootClientId(clientId); 25968 const settings = getSettings(); 25969 return { 25970 imageEditing: settings.imageEditing, 25971 imageSizes: settings.imageSizes, 25972 maxWidth: settings.maxWidth, 25973 canInsertCover: canInsertBlockType('core/cover', rootClientId) 25974 }; 25975 }, [clientId]); 25976 const { 25977 replaceBlocks, 25978 toggleSelection 25979 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 25980 const { 25981 createErrorNotice, 25982 createSuccessNotice 25983 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 25984 const isLargeViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium'); 25985 const isWideAligned = ['wide', 'full'].includes(align); 25986 const [{ 25987 loadedNaturalWidth, 25988 loadedNaturalHeight 25989 }, setLoadedNaturalSize] = (0,external_wp_element_namespaceObject.useState)({}); 25990 const [isEditingImage, setIsEditingImage] = (0,external_wp_element_namespaceObject.useState)(false); 25991 const [externalBlob, setExternalBlob] = (0,external_wp_element_namespaceObject.useState)(); 25992 const [hasImageErrored, setHasImageErrored] = (0,external_wp_element_namespaceObject.useState)(false); 25993 const hasNonContentControls = blockEditingMode === 'default'; 25994 const isContentOnlyMode = blockEditingMode === 'contentOnly'; 25995 const isResizable = allowResize && hasNonContentControls && !isWideAligned && isLargeViewport; 25996 const imageSizeOptions = imageSizes.filter(({ 25997 slug 25998 }) => image?.media_details?.sizes?.[slug]?.source_url).map(({ 25999 name, 26000 slug 26001 }) => ({ 26002 value: slug, 26003 label: name 26004 })); 26005 26006 // If an image is externally hosted, try to fetch the image data. This may 26007 // fail if the image host doesn't allow CORS with the domain. If it works, 26008 // we can enable a button in the toolbar to upload the image. 26009 (0,external_wp_element_namespaceObject.useEffect)(() => { 26010 if (!isExternalImage(id, url) || !isSingleSelected || !getSettings().mediaUpload) { 26011 setExternalBlob(); 26012 return; 26013 } 26014 if (externalBlob) { 26015 return; 26016 } 26017 window 26018 // Avoid cache, which seems to help avoid CORS problems. 26019 .fetch(url.includes('?') ? url : url + '?').then(response => response.blob()).then(blob => setExternalBlob(blob)) 26020 // Do nothing, cannot upload. 26021 .catch(() => {}); 26022 }, [id, url, isSingleSelected, externalBlob]); 26023 26024 // Get naturalWidth and naturalHeight from image ref, and fall back to loaded natural 26025 // width and height. This resolves an issue in Safari where the loaded natural 26026 // width and height is otherwise lost when switching between alignments. 26027 // See: https://github.com/WordPress/gutenberg/pull/37210. 26028 const { 26029 naturalWidth, 26030 naturalHeight 26031 } = (0,external_wp_element_namespaceObject.useMemo)(() => { 26032 return { 26033 naturalWidth: imageRef.current?.naturalWidth || loadedNaturalWidth || undefined, 26034 naturalHeight: imageRef.current?.naturalHeight || loadedNaturalHeight || undefined 26035 }; 26036 }, [loadedNaturalWidth, loadedNaturalHeight, imageRef.current?.complete]); 26037 function onResizeStart() { 26038 toggleSelection(false); 26039 } 26040 function onResizeStop() { 26041 toggleSelection(true); 26042 } 26043 function onImageError() { 26044 setHasImageErrored(true); 26045 26046 // Check if there's an embed block that handles this URL, e.g., instagram URL. 26047 // See: https://github.com/WordPress/gutenberg/pull/11472 26048 const embedBlock = createUpgradedEmbedBlock({ 26049 attributes: { 26050 url 26051 } 26052 }); 26053 if (undefined !== embedBlock) { 26054 onReplace(embedBlock); 26055 } 26056 } 26057 function onImageLoad(event) { 26058 setHasImageErrored(false); 26059 setLoadedNaturalSize({ 26060 loadedNaturalWidth: event.target?.naturalWidth, 26061 loadedNaturalHeight: event.target?.naturalHeight 26062 }); 26063 } 26064 function onSetHref(props) { 26065 setAttributes(props); 26066 } 26067 function onSetLightbox(enable) { 26068 if (enable && !lightboxSetting?.enabled) { 26069 setAttributes({ 26070 lightbox: { 26071 enabled: true 26072 } 26073 }); 26074 } else if (!enable && lightboxSetting?.enabled) { 26075 setAttributes({ 26076 lightbox: { 26077 enabled: false 26078 } 26079 }); 26080 } else { 26081 setAttributes({ 26082 lightbox: undefined 26083 }); 26084 } 26085 } 26086 function resetLightbox() { 26087 // When deleting a link from an image while lightbox settings 26088 // are enabled by default, we should disable the lightbox, 26089 // otherwise the resulting UX looks like a mistake. 26090 // See https://github.com/WordPress/gutenberg/pull/59890/files#r1532286123. 26091 if (lightboxSetting?.enabled && lightboxSetting?.allowEditing) { 26092 setAttributes({ 26093 lightbox: { 26094 enabled: false 26095 } 26096 }); 26097 } else { 26098 setAttributes({ 26099 lightbox: undefined 26100 }); 26101 } 26102 } 26103 function onSetTitle(value) { 26104 // This is the HTML title attribute, separate from the media object 26105 // title. 26106 setAttributes({ 26107 title: value 26108 }); 26109 } 26110 function updateAlt(newAlt) { 26111 setAttributes({ 26112 alt: newAlt 26113 }); 26114 } 26115 function updateImage(newSizeSlug) { 26116 const newUrl = image?.media_details?.sizes?.[newSizeSlug]?.source_url; 26117 if (!newUrl) { 26118 return null; 26119 } 26120 setAttributes({ 26121 url: newUrl, 26122 sizeSlug: newSizeSlug 26123 }); 26124 } 26125 function uploadExternal() { 26126 const { 26127 mediaUpload 26128 } = getSettings(); 26129 if (!mediaUpload) { 26130 return; 26131 } 26132 mediaUpload({ 26133 filesList: [externalBlob], 26134 onFileChange([img]) { 26135 onSelectImage(img); 26136 if ((0,external_wp_blob_namespaceObject.isBlobURL)(img.url)) { 26137 return; 26138 } 26139 setExternalBlob(); 26140 createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Image uploaded.'), { 26141 type: 'snackbar' 26142 }); 26143 }, 26144 allowedTypes: constants_ALLOWED_MEDIA_TYPES, 26145 onError(message) { 26146 createErrorNotice(message, { 26147 type: 'snackbar' 26148 }); 26149 } 26150 }); 26151 } 26152 (0,external_wp_element_namespaceObject.useEffect)(() => { 26153 if (!isSingleSelected) { 26154 setIsEditingImage(false); 26155 } 26156 }, [isSingleSelected]); 26157 const canEditImage = id && naturalWidth && naturalHeight && imageEditing; 26158 const allowCrop = isSingleSelected && canEditImage && !isEditingImage && !isContentOnlyMode; 26159 function switchToCover() { 26160 replaceBlocks(clientId, (0,external_wp_blocks_namespaceObject.switchToBlockType)(getBlock(clientId), 'core/cover')); 26161 } 26162 26163 // TODO: Can allow more units after figuring out how they should interact 26164 // with the ResizableBox and ImageEditor components. Calculations later on 26165 // for those components are currently assuming px units. 26166 const dimensionsUnitsOptions = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({ 26167 availableUnits: ['px'] 26168 }); 26169 const [lightboxSetting] = (0,external_wp_blockEditor_namespaceObject.useSettings)('lightbox'); 26170 const showLightboxSetting = 26171 // If a block-level override is set, we should give users the option to 26172 // remove that override, even if the lightbox UI is disabled in the settings. 26173 !!lightbox && lightbox?.enabled !== lightboxSetting?.enabled || lightboxSetting?.allowEditing; 26174 const lightboxChecked = !!lightbox?.enabled || !lightbox && !!lightboxSetting?.enabled; 26175 const dropdownMenuProps = useToolsPanelDropdownMenuProps(); 26176 const dimensionsControl = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DimensionsTool, { 26177 value: { 26178 width, 26179 height, 26180 scale, 26181 aspectRatio 26182 }, 26183 onChange: ({ 26184 width: newWidth, 26185 height: newHeight, 26186 scale: newScale, 26187 aspectRatio: newAspectRatio 26188 }) => { 26189 // Rebuilding the object forces setting `undefined` 26190 // for values that are removed since setAttributes 26191 // doesn't do anything with keys that aren't set. 26192 setAttributes({ 26193 // CSS includes `height: auto`, but we need 26194 // `width: auto` to fix the aspect ratio when 26195 // only height is set due to the width and 26196 // height attributes set via the server. 26197 width: !newWidth && newHeight ? 'auto' : newWidth, 26198 height: newHeight, 26199 scale: newScale, 26200 aspectRatio: newAspectRatio 26201 }); 26202 }, 26203 defaultScale: "cover", 26204 defaultAspectRatio: "auto", 26205 scaleOptions: scaleOptions, 26206 unitsOptions: dimensionsUnitsOptions 26207 }); 26208 const aspectRatioControl = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DimensionsTool, { 26209 value: { 26210 aspectRatio 26211 }, 26212 onChange: ({ 26213 aspectRatio: newAspectRatio 26214 }) => { 26215 setAttributes({ 26216 aspectRatio: newAspectRatio, 26217 scale: 'cover' 26218 }); 26219 }, 26220 defaultAspectRatio: "auto", 26221 tools: ['aspectRatio'] 26222 }); 26223 const resetAll = () => { 26224 setAttributes({ 26225 alt: undefined, 26226 width: undefined, 26227 height: undefined, 26228 scale: undefined, 26229 aspectRatio: undefined, 26230 lightbox: undefined 26231 }); 26232 }; 26233 const sizeControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 26234 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanel, { 26235 label: (0,external_wp_i18n_namespaceObject.__)('Settings'), 26236 resetAll: resetAll, 26237 dropdownMenuProps: dropdownMenuProps, 26238 children: isResizable && (parentLayoutType === 'grid' ? aspectRatioControl : dimensionsControl) 26239 }) 26240 }); 26241 const arePatternOverridesEnabled = metadata?.bindings?.__default?.source === 'core/pattern-overrides'; 26242 const { 26243 lockUrlControls = false, 26244 lockHrefControls = false, 26245 lockAltControls = false, 26246 lockAltControlsMessage, 26247 lockTitleControls = false, 26248 lockTitleControlsMessage, 26249 lockCaption = false 26250 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 26251 if (!isSingleSelected) { 26252 return {}; 26253 } 26254 const { 26255 url: urlBinding, 26256 alt: altBinding, 26257 title: titleBinding 26258 } = metadata?.bindings || {}; 26259 const hasParentPattern = !!context['pattern/overrides']; 26260 const urlBindingSource = (0,external_wp_blocks_namespaceObject.getBlockBindingsSource)(urlBinding?.source); 26261 const altBindingSource = (0,external_wp_blocks_namespaceObject.getBlockBindingsSource)(altBinding?.source); 26262 const titleBindingSource = (0,external_wp_blocks_namespaceObject.getBlockBindingsSource)(titleBinding?.source); 26263 return { 26264 lockUrlControls: !!urlBinding && !urlBindingSource?.canUserEditValue?.({ 26265 select, 26266 context, 26267 args: urlBinding?.args 26268 }), 26269 lockHrefControls: 26270 // Disable editing the link of the URL if the image is inside a pattern instance. 26271 // This is a temporary solution until we support overriding the link on the frontend. 26272 hasParentPattern || arePatternOverridesEnabled, 26273 lockCaption: 26274 // Disable editing the caption if the image is inside a pattern instance. 26275 // This is a temporary solution until we support overriding the caption on the frontend. 26276 hasParentPattern, 26277 lockAltControls: !!altBinding && !altBindingSource?.canUserEditValue?.({ 26278 select, 26279 context, 26280 args: altBinding?.args 26281 }), 26282 lockAltControlsMessage: altBindingSource?.label ? (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: Label of the bindings source. */ 26283 (0,external_wp_i18n_namespaceObject.__)('Connected to %s'), altBindingSource.label) : (0,external_wp_i18n_namespaceObject.__)('Connected to dynamic data'), 26284 lockTitleControls: !!titleBinding && !titleBindingSource?.canUserEditValue?.({ 26285 select, 26286 context, 26287 args: titleBinding?.args 26288 }), 26289 lockTitleControlsMessage: titleBindingSource?.label ? (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: Label of the bindings source. */ 26290 (0,external_wp_i18n_namespaceObject.__)('Connected to %s'), titleBindingSource.label) : (0,external_wp_i18n_namespaceObject.__)('Connected to dynamic data') 26291 }; 26292 }, [arePatternOverridesEnabled, context, isSingleSelected, metadata?.bindings]); 26293 const showUrlInput = isSingleSelected && !isEditingImage && !lockHrefControls && !lockUrlControls; 26294 const showCoverControls = isSingleSelected && canInsertCover; 26295 const showBlockControls = showUrlInput || allowCrop || showCoverControls; 26296 const mediaReplaceFlow = isSingleSelected && !isEditingImage && !lockUrlControls && 26297 /*#__PURE__*/ 26298 // For contentOnly mode, put this button in its own area so it has borders around it. 26299 (0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 26300 group: isContentOnlyMode ? 'inline' : 'other', 26301 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaReplaceFlow, { 26302 mediaId: id, 26303 mediaURL: url, 26304 allowedTypes: constants_ALLOWED_MEDIA_TYPES, 26305 accept: "image/*", 26306 onSelect: onSelectImage, 26307 onSelectURL: onSelectURL, 26308 onError: onUploadError, 26309 name: !url ? (0,external_wp_i18n_namespaceObject.__)('Add image') : (0,external_wp_i18n_namespaceObject.__)('Replace'), 26310 onReset: () => onSelectImage(undefined) 26311 }) 26312 }); 26313 const controls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 26314 children: [showBlockControls && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 26315 group: "block", 26316 children: [showUrlInput && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalImageURLInputUI, { 26317 url: href || '', 26318 onChangeUrl: onSetHref, 26319 linkDestination: linkDestination, 26320 mediaUrl: image && image.source_url || url, 26321 mediaLink: image && image.link, 26322 linkTarget: linkTarget, 26323 linkClass: linkClass, 26324 rel: rel, 26325 showLightboxSetting: showLightboxSetting, 26326 lightboxEnabled: lightboxChecked, 26327 onSetLightbox: onSetLightbox, 26328 resetLightbox: resetLightbox 26329 }), allowCrop && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 26330 onClick: () => setIsEditingImage(true), 26331 icon: library_crop, 26332 label: (0,external_wp_i18n_namespaceObject.__)('Crop') 26333 }), showCoverControls && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 26334 icon: overlay_text, 26335 label: (0,external_wp_i18n_namespaceObject.__)('Add text over image'), 26336 onClick: switchToCover 26337 })] 26338 }), isSingleSelected && externalBlob && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 26339 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 26340 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 26341 onClick: uploadExternal, 26342 icon: library_upload, 26343 label: (0,external_wp_i18n_namespaceObject.__)('Upload to Media Library') 26344 }) 26345 }) 26346 }), isContentOnlyMode && 26347 /*#__PURE__*/ 26348 // Add some extra controls for content attributes when content only mode is active. 26349 // With content only mode active, the inspector is hidden, so users need another way 26350 // to edit these attributes. 26351 (0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 26352 group: "other", 26353 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Dropdown, { 26354 popoverProps: { 26355 position: 'bottom right' 26356 }, 26357 renderToggle: ({ 26358 isOpen, 26359 onToggle 26360 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 26361 onClick: onToggle, 26362 "aria-haspopup": "true", 26363 "aria-expanded": isOpen, 26364 onKeyDown: event => { 26365 if (!isOpen && event.keyCode === external_wp_keycodes_namespaceObject.DOWN) { 26366 event.preventDefault(); 26367 onToggle(); 26368 } 26369 }, 26370 children: (0,external_wp_i18n_namespaceObject._x)('Alternative text', 'Alternative text for an image. Block toolbar label, a low character count is preferred.') 26371 }), 26372 renderContent: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextareaControl, { 26373 className: "wp-block-image__toolbar_content_textarea", 26374 label: (0,external_wp_i18n_namespaceObject.__)('Alternative text'), 26375 value: alt || '', 26376 onChange: updateAlt, 26377 disabled: lockAltControls, 26378 help: lockAltControls ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 26379 children: lockAltControlsMessage 26380 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 26381 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, { 26382 href: 26383 // translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations. 26384 (0,external_wp_i18n_namespaceObject.__)('https://www.w3.org/WAI/tutorials/images/decision-tree/'), 26385 children: (0,external_wp_i18n_namespaceObject.__)('Describe the purpose of the image.') 26386 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("br", {}), (0,external_wp_i18n_namespaceObject.__)('Leave empty if decorative.')] 26387 }), 26388 __nextHasNoMarginBottom: true 26389 }) 26390 }), title && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Dropdown, { 26391 popoverProps: { 26392 position: 'bottom right' 26393 }, 26394 renderToggle: ({ 26395 isOpen, 26396 onToggle 26397 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 26398 onClick: onToggle, 26399 "aria-haspopup": "true", 26400 "aria-expanded": isOpen, 26401 onKeyDown: event => { 26402 if (!isOpen && event.keyCode === external_wp_keycodes_namespaceObject.DOWN) { 26403 event.preventDefault(); 26404 onToggle(); 26405 } 26406 }, 26407 children: (0,external_wp_i18n_namespaceObject.__)('Title') 26408 }), 26409 renderContent: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 26410 __next40pxDefaultSize: true, 26411 className: "wp-block-image__toolbar_content_textarea", 26412 __nextHasNoMarginBottom: true, 26413 label: (0,external_wp_i18n_namespaceObject.__)('Title attribute'), 26414 value: title || '', 26415 onChange: onSetTitle, 26416 disabled: lockTitleControls, 26417 help: lockTitleControls ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 26418 children: lockTitleControlsMessage 26419 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 26420 children: [(0,external_wp_i18n_namespaceObject.__)('Describe the role of this image on the page.'), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, { 26421 href: "https://www.w3.org/TR/html52/dom.html#the-title-attribute", 26422 children: (0,external_wp_i18n_namespaceObject.__)('(Note: many devices and browsers do not display this text.)') 26423 })] 26424 }) 26425 }) 26426 })] 26427 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 26428 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToolsPanel, { 26429 label: (0,external_wp_i18n_namespaceObject.__)('Settings'), 26430 resetAll: resetAll, 26431 dropdownMenuProps: dropdownMenuProps, 26432 children: [isSingleSelected && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 26433 label: (0,external_wp_i18n_namespaceObject.__)('Alternative text'), 26434 isShownByDefault: true, 26435 hasValue: () => !!alt, 26436 onDeselect: () => setAttributes({ 26437 alt: undefined 26438 }), 26439 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextareaControl, { 26440 label: (0,external_wp_i18n_namespaceObject.__)('Alternative text'), 26441 value: alt || '', 26442 onChange: updateAlt, 26443 readOnly: lockAltControls, 26444 help: lockAltControls ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 26445 children: lockAltControlsMessage 26446 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 26447 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, { 26448 href: 26449 // translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations. 26450 (0,external_wp_i18n_namespaceObject.__)('https://www.w3.org/WAI/tutorials/images/decision-tree/'), 26451 children: (0,external_wp_i18n_namespaceObject.__)('Describe the purpose of the image.') 26452 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("br", {}), (0,external_wp_i18n_namespaceObject.__)('Leave empty if decorative.')] 26453 }), 26454 __nextHasNoMarginBottom: true 26455 }) 26456 }), isResizable && (parentLayoutType === 'grid' ? aspectRatioControl : dimensionsControl), !!imageSizeOptions.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResolutionTool, { 26457 value: sizeSlug, 26458 onChange: updateImage, 26459 options: imageSizeOptions 26460 })] 26461 }) 26462 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 26463 group: "advanced", 26464 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 26465 __nextHasNoMarginBottom: true, 26466 __next40pxDefaultSize: true, 26467 label: (0,external_wp_i18n_namespaceObject.__)('Title attribute'), 26468 value: title || '', 26469 onChange: onSetTitle, 26470 readOnly: lockTitleControls, 26471 help: lockTitleControls ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 26472 children: lockTitleControlsMessage 26473 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 26474 children: [(0,external_wp_i18n_namespaceObject.__)('Describe the role of this image on the page.'), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, { 26475 href: "https://www.w3.org/TR/html52/dom.html#the-title-attribute", 26476 children: (0,external_wp_i18n_namespaceObject.__)('(Note: many devices and browsers do not display this text.)') 26477 })] 26478 }) 26479 }) 26480 })] 26481 }); 26482 const filename = (0,external_wp_url_namespaceObject.getFilename)(url); 26483 let defaultedAlt; 26484 if (alt) { 26485 defaultedAlt = alt; 26486 } else if (filename) { 26487 defaultedAlt = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: file name */ 26488 (0,external_wp_i18n_namespaceObject.__)('This image has an empty alt attribute; its file name is %s'), filename); 26489 } else { 26490 defaultedAlt = (0,external_wp_i18n_namespaceObject.__)('This image has an empty alt attribute'); 26491 } 26492 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseBorderProps)(attributes); 26493 const shadowProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetShadowClassesAndStyles)(attributes); 26494 const isRounded = attributes.className?.includes('is-style-rounded'); 26495 let img = temporaryURL && hasImageErrored ? 26496 /*#__PURE__*/ 26497 // Show a placeholder during upload when the blob URL can't be loaded. This can 26498 // happen when the user uploads a HEIC image in a browser that doesn't support them. 26499 (0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 26500 className: "wp-block-image__placeholder", 26501 withIllustration: true, 26502 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) 26503 }) : 26504 /*#__PURE__*/ 26505 // Disable reason: Image itself is not meant to be interactive, but 26506 // should direct focus to block. 26507 /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */ 26508 (0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 26509 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 26510 src: temporaryURL || url, 26511 alt: defaultedAlt, 26512 onError: onImageError, 26513 onLoad: onImageLoad, 26514 ref: imageRef, 26515 className: borderProps.className, 26516 style: { 26517 width: width && height || aspectRatio ? '100%' : undefined, 26518 height: width && height || aspectRatio ? '100%' : undefined, 26519 objectFit: scale, 26520 ...borderProps.style, 26521 ...shadowProps.style 26522 } 26523 }), temporaryURL && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {})] 26524 }) 26525 /* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */; 26526 if (canEditImage && isEditingImage) { 26527 img = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ImageWrapper, { 26528 href: href, 26529 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalImageEditor, { 26530 id: id, 26531 url: url, 26532 width: numericWidth, 26533 height: numericHeight, 26534 naturalHeight: naturalHeight, 26535 naturalWidth: naturalWidth, 26536 onSaveImage: imageAttributes => setAttributes(imageAttributes), 26537 onFinishEditing: () => { 26538 setIsEditingImage(false); 26539 }, 26540 borderProps: isRounded ? undefined : borderProps 26541 }) 26542 }); 26543 } else if (!isResizable || parentLayoutType === 'grid') { 26544 img = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 26545 style: { 26546 width, 26547 height, 26548 aspectRatio 26549 }, 26550 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ImageWrapper, { 26551 href: href, 26552 children: img 26553 }) 26554 }); 26555 } else { 26556 const numericRatio = aspectRatio && evalAspectRatio(aspectRatio); 26557 const customRatio = numericWidth / numericHeight; 26558 const naturalRatio = naturalWidth / naturalHeight; 26559 const ratio = numericRatio || customRatio || naturalRatio || 1; 26560 const currentWidth = !numericWidth && numericHeight ? numericHeight * ratio : numericWidth; 26561 const currentHeight = !numericHeight && numericWidth ? numericWidth / ratio : numericHeight; 26562 const minWidth = naturalWidth < naturalHeight ? constants_MIN_SIZE : constants_MIN_SIZE * ratio; 26563 const minHeight = naturalHeight < naturalWidth ? constants_MIN_SIZE : constants_MIN_SIZE / ratio; 26564 26565 // With the current implementation of ResizableBox, an image needs an 26566 // explicit pixel value for the max-width. In absence of being able to 26567 // set the content-width, this max-width is currently dictated by the 26568 // vanilla editor style. The following variable adds a buffer to this 26569 // vanilla style, so 3rd party themes have some wiggleroom. This does, 26570 // in most cases, allow you to scale the image beyond the width of the 26571 // main column, though not infinitely. 26572 // @todo It would be good to revisit this once a content-width variable 26573 // becomes available. 26574 const maxWidthBuffer = maxWidth * 2.5; 26575 const maxResizeWidth = maxContentWidth || maxWidthBuffer; 26576 let showRightHandle = false; 26577 let showLeftHandle = false; 26578 26579 /* eslint-disable no-lonely-if */ 26580 // See https://github.com/WordPress/gutenberg/issues/7584. 26581 if (align === 'center') { 26582 // When the image is centered, show both handles. 26583 showRightHandle = true; 26584 showLeftHandle = true; 26585 } else if ((0,external_wp_i18n_namespaceObject.isRTL)()) { 26586 // In RTL mode the image is on the right by default. 26587 // Show the right handle and hide the left handle only when it is 26588 // aligned left. Otherwise always show the left handle. 26589 if (align === 'left') { 26590 showRightHandle = true; 26591 } else { 26592 showLeftHandle = true; 26593 } 26594 } else { 26595 // Show the left handle and hide the right handle only when the 26596 // image is aligned right. Otherwise always show the right handle. 26597 if (align === 'right') { 26598 showLeftHandle = true; 26599 } else { 26600 showRightHandle = true; 26601 } 26602 } 26603 /* eslint-enable no-lonely-if */ 26604 img = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ResizableBox, { 26605 style: { 26606 display: 'block', 26607 objectFit: scale, 26608 aspectRatio: !width && !height && aspectRatio ? aspectRatio : undefined 26609 }, 26610 size: { 26611 width: currentWidth !== null && currentWidth !== void 0 ? currentWidth : 'auto', 26612 height: currentHeight !== null && currentHeight !== void 0 ? currentHeight : 'auto' 26613 }, 26614 showHandle: isSingleSelected, 26615 minWidth: minWidth, 26616 maxWidth: maxResizeWidth, 26617 minHeight: minHeight, 26618 maxHeight: maxResizeWidth / ratio, 26619 lockAspectRatio: ratio, 26620 enable: { 26621 top: false, 26622 right: showRightHandle, 26623 bottom: true, 26624 left: showLeftHandle 26625 }, 26626 onResizeStart: onResizeStart, 26627 onResizeStop: (event, direction, elt) => { 26628 onResizeStop(); 26629 26630 // Clear hardcoded width if the resized width is close to the max-content width. 26631 if (maxContentWidth && 26632 // Only do this if the image is bigger than the container to prevent it from being squished. 26633 // TODO: Remove this check if the image support setting 100% width. 26634 naturalWidth >= maxContentWidth && Math.abs(elt.offsetWidth - maxContentWidth) < 10) { 26635 setAttributes({ 26636 width: undefined, 26637 height: undefined 26638 }); 26639 return; 26640 } 26641 26642 // Since the aspect ratio is locked when resizing, we can 26643 // use the width of the resized element to calculate the 26644 // height in CSS to prevent stretching when the max-width 26645 // is reached. 26646 setAttributes({ 26647 width: `$elt.offsetWidth}px`, 26648 height: 'auto', 26649 aspectRatio: ratio === naturalRatio ? undefined : String(ratio) 26650 }); 26651 }, 26652 resizeRatio: align === 'center' ? 2 : 1, 26653 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ImageWrapper, { 26654 href: href, 26655 children: img 26656 }) 26657 }); 26658 } 26659 if (!url && !temporaryURL) { 26660 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 26661 children: [mediaReplaceFlow, metadata?.bindings ? controls : sizeControls] 26662 }); 26663 } 26664 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 26665 children: [mediaReplaceFlow, controls, img, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Caption, { 26666 attributes: attributes, 26667 setAttributes: setAttributes, 26668 isSelected: isSingleSelected, 26669 insertBlocksAfter: insertBlocksAfter, 26670 label: (0,external_wp_i18n_namespaceObject.__)('Image caption text'), 26671 showToolbarButton: isSingleSelected && hasNonContentControls && !arePatternOverridesEnabled, 26672 readOnly: lockCaption 26673 })] 26674 }); 26675 } 26676 26677 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/image/use-max-width-observer.js 26678 /** 26679 * WordPress dependencies 26680 */ 26681 26682 26683 26684 function useMaxWidthObserver() { 26685 const [contentResizeListener, { 26686 width 26687 }] = (0,external_wp_compose_namespaceObject.useResizeObserver)(); 26688 const observerRef = (0,external_wp_element_namespaceObject.useRef)(); 26689 const maxWidthObserver = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 26690 // Some themes set max-width on blocks. 26691 className: "wp-block", 26692 "aria-hidden": "true", 26693 style: { 26694 position: 'absolute', 26695 inset: 0, 26696 width: '100%', 26697 height: 0, 26698 margin: 0 26699 }, 26700 ref: observerRef, 26701 children: contentResizeListener 26702 }); 26703 return [maxWidthObserver, width]; 26704 } 26705 26706 26707 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/image/edit.js 26708 /** 26709 * External dependencies 26710 */ 26711 26712 26713 /** 26714 * WordPress dependencies 26715 */ 26716 26717 26718 26719 26720 26721 26722 26723 26724 26725 26726 26727 /** 26728 * Internal dependencies 26729 */ 26730 26731 26732 26733 26734 26735 /** 26736 * Module constants 26737 */ 26738 26739 26740 26741 26742 const edit_pickRelevantMediaFiles = (image, size) => { 26743 const imageProps = Object.fromEntries(Object.entries(image !== null && image !== void 0 ? image : {}).filter(([key]) => ['alt', 'id', 'link', 'caption'].includes(key))); 26744 imageProps.url = image?.sizes?.[size]?.url || image?.media_details?.sizes?.[size]?.source_url || image.url; 26745 return imageProps; 26746 }; 26747 26748 /** 26749 * Is the url for the image hosted externally. An externally hosted image has no 26750 * id and is not a blob url. 26751 * 26752 * @param {number=} id The id of the image. 26753 * @param {string=} url The url of the image. 26754 * 26755 * @return {boolean} Is the url an externally hosted url? 26756 */ 26757 const isExternalImage = (id, url) => url && !id && !(0,external_wp_blob_namespaceObject.isBlobURL)(url); 26758 26759 /** 26760 * Checks if WP generated the specified image size. Size generation is skipped 26761 * when the image is smaller than the said size. 26762 * 26763 * @param {Object} image 26764 * @param {string} size 26765 * 26766 * @return {boolean} Whether or not it has default image size. 26767 */ 26768 function hasSize(image, size) { 26769 var _image$sizes$size, _image$media_details$; 26770 return 'url' in ((_image$sizes$size = image?.sizes?.[size]) !== null && _image$sizes$size !== void 0 ? _image$sizes$size : {}) || 'source_url' in ((_image$media_details$ = image?.media_details?.sizes?.[size]) !== null && _image$media_details$ !== void 0 ? _image$media_details$ : {}); 26771 } 26772 function ImageEdit({ 26773 attributes, 26774 setAttributes, 26775 isSelected: isSingleSelected, 26776 className, 26777 insertBlocksAfter, 26778 onReplace, 26779 context, 26780 clientId, 26781 __unstableParentLayout: parentLayout 26782 }) { 26783 const { 26784 url = '', 26785 alt, 26786 caption, 26787 id, 26788 width, 26789 height, 26790 sizeSlug, 26791 aspectRatio, 26792 scale, 26793 align, 26794 metadata 26795 } = attributes; 26796 const [temporaryURL, setTemporaryURL] = (0,external_wp_element_namespaceObject.useState)(attributes.blob); 26797 const containerRef = (0,external_wp_element_namespaceObject.useRef)(); 26798 // Only observe the max width from the parent container when the parent layout is not flex nor grid. 26799 // This won't work for them because the container width changes with the image. 26800 // TODO: Find a way to observe the container width for flex and grid layouts. 26801 const isMaxWidthContainerWidth = !parentLayout || parentLayout.type !== 'flex' && parentLayout.type !== 'grid'; 26802 const [maxWidthObserver, maxContentWidth] = useMaxWidthObserver(); 26803 const [placeholderResizeListener, { 26804 width: placeholderWidth 26805 }] = (0,external_wp_compose_namespaceObject.useResizeObserver)(); 26806 const isSmallContainer = placeholderWidth && placeholderWidth < 160; 26807 const altRef = (0,external_wp_element_namespaceObject.useRef)(); 26808 (0,external_wp_element_namespaceObject.useEffect)(() => { 26809 altRef.current = alt; 26810 }, [alt]); 26811 const captionRef = (0,external_wp_element_namespaceObject.useRef)(); 26812 (0,external_wp_element_namespaceObject.useEffect)(() => { 26813 captionRef.current = caption; 26814 }, [caption]); 26815 const { 26816 __unstableMarkNextChangeAsNotPersistent, 26817 replaceBlock 26818 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 26819 (0,external_wp_element_namespaceObject.useEffect)(() => { 26820 if (['wide', 'full'].includes(align)) { 26821 __unstableMarkNextChangeAsNotPersistent(); 26822 setAttributes({ 26823 width: undefined, 26824 height: undefined, 26825 aspectRatio: undefined, 26826 scale: undefined 26827 }); 26828 } 26829 }, [__unstableMarkNextChangeAsNotPersistent, align, setAttributes]); 26830 const { 26831 getSettings, 26832 getBlockRootClientId, 26833 getBlockName, 26834 canInsertBlockType 26835 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 26836 const blockEditingMode = (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)(); 26837 const { 26838 createErrorNotice 26839 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 26840 function onUploadError(message) { 26841 createErrorNotice(message, { 26842 type: 'snackbar' 26843 }); 26844 setAttributes({ 26845 src: undefined, 26846 id: undefined, 26847 url: undefined, 26848 blob: undefined 26849 }); 26850 } 26851 function onSelectImagesList(images) { 26852 const win = containerRef.current?.ownerDocument.defaultView; 26853 if (images.every(file => file instanceof win.File)) { 26854 /** @type {File[]} */ 26855 const files = images; 26856 const rootClientId = getBlockRootClientId(clientId); 26857 if (files.some(file => !isValidFileType(file))) { 26858 // Copied from the same notice in the gallery block. 26859 createErrorNotice((0,external_wp_i18n_namespaceObject.__)('If uploading to a gallery all files need to be image formats'), { 26860 id: 'gallery-upload-invalid-file', 26861 type: 'snackbar' 26862 }); 26863 } 26864 const imageBlocks = files.filter(file => isValidFileType(file)).map(file => (0,external_wp_blocks_namespaceObject.createBlock)('core/image', { 26865 blob: (0,external_wp_blob_namespaceObject.createBlobURL)(file) 26866 })); 26867 if (getBlockName(rootClientId) === 'core/gallery') { 26868 replaceBlock(clientId, imageBlocks); 26869 } else if (canInsertBlockType('core/gallery', rootClientId)) { 26870 const galleryBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/gallery', {}, imageBlocks); 26871 replaceBlock(clientId, galleryBlock); 26872 } 26873 } 26874 } 26875 function onSelectImage(media) { 26876 if (Array.isArray(media)) { 26877 onSelectImagesList(media); 26878 return; 26879 } 26880 if (!media || !media.url) { 26881 setAttributes({ 26882 url: undefined, 26883 alt: undefined, 26884 id: undefined, 26885 title: undefined, 26886 caption: undefined, 26887 blob: undefined 26888 }); 26889 setTemporaryURL(); 26890 return; 26891 } 26892 if ((0,external_wp_blob_namespaceObject.isBlobURL)(media.url)) { 26893 setTemporaryURL(media.url); 26894 return; 26895 } 26896 const { 26897 imageDefaultSize 26898 } = getSettings(); 26899 26900 // Try to use the previous selected image size if its available 26901 // otherwise try the default image size or fallback to "full" 26902 let newSize = 'full'; 26903 if (sizeSlug && hasSize(media, sizeSlug)) { 26904 newSize = sizeSlug; 26905 } else if (hasSize(media, imageDefaultSize)) { 26906 newSize = imageDefaultSize; 26907 } 26908 let mediaAttributes = edit_pickRelevantMediaFiles(media, newSize); 26909 26910 // If a caption text was meanwhile written by the user, 26911 // make sure the text is not overwritten by empty captions. 26912 if (captionRef.current && !mediaAttributes.caption) { 26913 const { 26914 caption: omittedCaption, 26915 ...restMediaAttributes 26916 } = mediaAttributes; 26917 mediaAttributes = restMediaAttributes; 26918 } 26919 let additionalAttributes; 26920 // Reset the dimension attributes if changing to a different image. 26921 if (!media.id || media.id !== id) { 26922 additionalAttributes = { 26923 sizeSlug: newSize 26924 }; 26925 } else { 26926 // Keep the same url when selecting the same file, so "Resolution" 26927 // option is not changed. 26928 additionalAttributes = { 26929 url 26930 }; 26931 } 26932 26933 // Check if default link setting should be used. 26934 let linkDestination = attributes.linkDestination; 26935 if (!linkDestination) { 26936 // Use the WordPress option to determine the proper default. 26937 // The constants used in Gutenberg do not match WP options so a little more complicated than ideal. 26938 // TODO: fix this in a follow up PR, requires updating media-text and ui component. 26939 switch (window?.wp?.media?.view?.settings?.defaultProps?.link || constants_LINK_DESTINATION_NONE) { 26940 case 'file': 26941 case constants_LINK_DESTINATION_MEDIA: 26942 linkDestination = constants_LINK_DESTINATION_MEDIA; 26943 break; 26944 case 'post': 26945 case constants_LINK_DESTINATION_ATTACHMENT: 26946 linkDestination = constants_LINK_DESTINATION_ATTACHMENT; 26947 break; 26948 case LINK_DESTINATION_CUSTOM: 26949 linkDestination = LINK_DESTINATION_CUSTOM; 26950 break; 26951 case constants_LINK_DESTINATION_NONE: 26952 linkDestination = constants_LINK_DESTINATION_NONE; 26953 break; 26954 } 26955 } 26956 26957 // Check if the image is linked to it's media. 26958 let href; 26959 switch (linkDestination) { 26960 case constants_LINK_DESTINATION_MEDIA: 26961 href = media.url; 26962 break; 26963 case constants_LINK_DESTINATION_ATTACHMENT: 26964 href = media.link; 26965 break; 26966 } 26967 mediaAttributes.href = href; 26968 setAttributes({ 26969 blob: undefined, 26970 ...mediaAttributes, 26971 ...additionalAttributes, 26972 linkDestination 26973 }); 26974 setTemporaryURL(); 26975 } 26976 function onSelectURL(newURL) { 26977 if (newURL !== url) { 26978 setAttributes({ 26979 blob: undefined, 26980 url: newURL, 26981 id: undefined, 26982 sizeSlug: getSettings().imageDefaultSize 26983 }); 26984 setTemporaryURL(); 26985 } 26986 } 26987 useUploadMediaFromBlobURL({ 26988 url: temporaryURL, 26989 allowedTypes: constants_ALLOWED_MEDIA_TYPES, 26990 onChange: onSelectImage, 26991 onError: onUploadError 26992 }); 26993 const isExternal = isExternalImage(id, url); 26994 const src = isExternal ? url : undefined; 26995 const mediaPreview = !!url && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 26996 alt: (0,external_wp_i18n_namespaceObject.__)('Edit image'), 26997 title: (0,external_wp_i18n_namespaceObject.__)('Edit image'), 26998 className: "edit-image-preview", 26999 src: url 27000 }); 27001 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseBorderProps)(attributes); 27002 const shadowProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetShadowClassesAndStyles)(attributes); 27003 const classes = dist_clsx(className, { 27004 'is-transient': !!temporaryURL, 27005 'is-resized': !!width || !!height, 27006 [`size-$sizeSlug}`]: sizeSlug, 27007 'has-custom-border': !!borderProps.className || borderProps.style && Object.keys(borderProps.style).length > 0 27008 }); 27009 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 27010 ref: containerRef, 27011 className: classes 27012 }); 27013 27014 // Much of this description is duplicated from MediaPlaceholder. 27015 const { 27016 lockUrlControls = false, 27017 lockUrlControlsMessage 27018 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 27019 if (!isSingleSelected) { 27020 return {}; 27021 } 27022 const blockBindingsSource = (0,external_wp_blocks_namespaceObject.getBlockBindingsSource)(metadata?.bindings?.url?.source); 27023 return { 27024 lockUrlControls: !!metadata?.bindings?.url && !blockBindingsSource?.canUserEditValue?.({ 27025 select, 27026 context, 27027 args: metadata?.bindings?.url?.args 27028 }), 27029 lockUrlControlsMessage: blockBindingsSource?.label ? (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: Label of the bindings source. */ 27030 (0,external_wp_i18n_namespaceObject.__)('Connected to %s'), blockBindingsSource.label) : (0,external_wp_i18n_namespaceObject.__)('Connected to dynamic data') 27031 }; 27032 }, [context, isSingleSelected, metadata?.bindings?.url]); 27033 const placeholder = content => { 27034 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Placeholder, { 27035 className: dist_clsx('block-editor-media-placeholder', { 27036 [borderProps.className]: !!borderProps.className && !isSingleSelected 27037 }), 27038 icon: !isSmallContainer && (lockUrlControls ? library_plugins : library_image), 27039 withIllustration: !isSingleSelected || isSmallContainer, 27040 label: !isSmallContainer && (0,external_wp_i18n_namespaceObject.__)('Image'), 27041 instructions: !lockUrlControls && !isSmallContainer && (0,external_wp_i18n_namespaceObject.__)('Upload or drag an image file here, or pick one from your library.'), 27042 style: { 27043 aspectRatio: !(width && height) && aspectRatio ? aspectRatio : undefined, 27044 width: height && aspectRatio ? '100%' : width, 27045 height: width && aspectRatio ? '100%' : height, 27046 objectFit: scale, 27047 ...borderProps.style, 27048 ...shadowProps.style 27049 }, 27050 children: [lockUrlControls && !isSmallContainer && lockUrlControlsMessage, !lockUrlControls && !isSmallContainer && content, placeholderResizeListener] 27051 }); 27052 }; 27053 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 27054 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 27055 ...blockProps, 27056 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(image_Image, { 27057 temporaryURL: temporaryURL, 27058 attributes: attributes, 27059 setAttributes: setAttributes, 27060 isSingleSelected: isSingleSelected, 27061 insertBlocksAfter: insertBlocksAfter, 27062 onReplace: onReplace, 27063 onSelectImage: onSelectImage, 27064 onSelectURL: onSelectURL, 27065 onUploadError: onUploadError, 27066 context: context, 27067 clientId: clientId, 27068 blockEditingMode: blockEditingMode, 27069 parentLayoutType: parentLayout?.type, 27070 maxContentWidth: maxContentWidth 27071 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaPlaceholder, { 27072 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 27073 icon: library_image 27074 }), 27075 onSelect: onSelectImage, 27076 onSelectURL: onSelectURL, 27077 onError: onUploadError, 27078 placeholder: placeholder, 27079 accept: "image/*", 27080 allowedTypes: constants_ALLOWED_MEDIA_TYPES, 27081 handleUpload: files => files.length === 1, 27082 value: { 27083 id, 27084 src 27085 }, 27086 mediaPreview: mediaPreview, 27087 disableMediaButtons: temporaryURL || url 27088 })] 27089 }), 27090 // The listener cannot be placed as the first element as it will break the in-between inserter. 27091 // See https://github.com/WordPress/gutenberg/blob/71134165868298fc15e22896d0c28b41b3755ff7/packages/block-editor/src/components/block-list/use-in-between-inserter.js#L120 27092 isSingleSelected && isMaxWidthContainerWidth && maxWidthObserver] 27093 }); 27094 } 27095 /* harmony default export */ const image_edit = (ImageEdit); 27096 27097 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/image/save.js 27098 /** 27099 * External dependencies 27100 */ 27101 27102 27103 /** 27104 * WordPress dependencies 27105 */ 27106 27107 27108 27109 27110 function image_save_save({ 27111 attributes 27112 }) { 27113 const { 27114 url, 27115 alt, 27116 caption, 27117 align, 27118 href, 27119 rel, 27120 linkClass, 27121 width, 27122 height, 27123 aspectRatio, 27124 scale, 27125 id, 27126 linkTarget, 27127 sizeSlug, 27128 title 27129 } = attributes; 27130 const newRel = !rel ? undefined : rel; 27131 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetBorderClassesAndStyles)(attributes); 27132 const shadowProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetShadowClassesAndStyles)(attributes); 27133 const classes = dist_clsx({ 27134 // All other align classes are handled by block supports. 27135 // `{ align: 'none' }` is unique to transforms for the image block. 27136 alignnone: 'none' === align, 27137 [`size-$sizeSlug}`]: sizeSlug, 27138 'is-resized': width || height, 27139 'has-custom-border': !!borderProps.className || borderProps.style && Object.keys(borderProps.style).length > 0 27140 }); 27141 const imageClasses = dist_clsx(borderProps.className, { 27142 [`wp-image-$id}`]: !!id 27143 }); 27144 const image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 27145 src: url, 27146 alt: alt, 27147 className: imageClasses || undefined, 27148 style: { 27149 ...borderProps.style, 27150 ...shadowProps.style, 27151 aspectRatio, 27152 objectFit: scale, 27153 width, 27154 height 27155 }, 27156 title: title 27157 }); 27158 const figure = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 27159 children: [href ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 27160 className: linkClass, 27161 href: href, 27162 target: linkTarget, 27163 rel: newRel, 27164 children: image 27165 }) : image, !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 27166 className: (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('caption'), 27167 tagName: "figcaption", 27168 value: caption 27169 })] 27170 }); 27171 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 27172 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 27173 className: classes 27174 }), 27175 children: figure 27176 }); 27177 } 27178 27179 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/image/transforms.js 27180 /** 27181 * WordPress dependencies 27182 */ 27183 27184 27185 function stripFirstImage(attributes, { 27186 shortcode 27187 }) { 27188 const { 27189 body 27190 } = document.implementation.createHTMLDocument(''); 27191 body.innerHTML = shortcode.content; 27192 let nodeToRemove = body.querySelector('img'); 27193 27194 // If an image has parents, find the topmost node to remove. 27195 while (nodeToRemove && nodeToRemove.parentNode && nodeToRemove.parentNode !== body) { 27196 nodeToRemove = nodeToRemove.parentNode; 27197 } 27198 if (nodeToRemove) { 27199 nodeToRemove.parentNode.removeChild(nodeToRemove); 27200 } 27201 return body.innerHTML.trim(); 27202 } 27203 function getFirstAnchorAttributeFormHTML(html, attributeName) { 27204 const { 27205 body 27206 } = document.implementation.createHTMLDocument(''); 27207 body.innerHTML = html; 27208 const { 27209 firstElementChild 27210 } = body; 27211 if (firstElementChild && firstElementChild.nodeName === 'A') { 27212 return firstElementChild.getAttribute(attributeName) || undefined; 27213 } 27214 } 27215 const imageSchema = { 27216 img: { 27217 attributes: ['src', 'alt', 'title'], 27218 classes: ['alignleft', 'aligncenter', 'alignright', 'alignnone', /^wp-image-\d+$/] 27219 } 27220 }; 27221 const schema = ({ 27222 phrasingContentSchema 27223 }) => ({ 27224 figure: { 27225 require: ['img'], 27226 children: { 27227 ...imageSchema, 27228 a: { 27229 attributes: ['href', 'rel', 'target'], 27230 children: imageSchema 27231 }, 27232 figcaption: { 27233 children: phrasingContentSchema 27234 } 27235 } 27236 } 27237 }); 27238 const image_transforms_transforms = { 27239 from: [{ 27240 type: 'raw', 27241 isMatch: node => node.nodeName === 'FIGURE' && !!node.querySelector('img'), 27242 schema, 27243 transform: node => { 27244 // Search both figure and image classes. Alignment could be 27245 // set on either. ID is set on the image. 27246 const className = node.className + ' ' + node.querySelector('img').className; 27247 const alignMatches = /(?:^|\s)align(left|center|right)(?:$|\s)/.exec(className); 27248 const anchor = node.id === '' ? undefined : node.id; 27249 const align = alignMatches ? alignMatches[1] : undefined; 27250 const idMatches = /(?:^|\s)wp-image-(\d+)(?:$|\s)/.exec(className); 27251 const id = idMatches ? Number(idMatches[1]) : undefined; 27252 const anchorElement = node.querySelector('a'); 27253 const linkDestination = anchorElement && anchorElement.href ? 'custom' : undefined; 27254 const href = anchorElement && anchorElement.href ? anchorElement.href : undefined; 27255 const rel = anchorElement && anchorElement.rel ? anchorElement.rel : undefined; 27256 const linkClass = anchorElement && anchorElement.className ? anchorElement.className : undefined; 27257 const attributes = (0,external_wp_blocks_namespaceObject.getBlockAttributes)('core/image', node.outerHTML, { 27258 align, 27259 id, 27260 linkDestination, 27261 href, 27262 rel, 27263 linkClass, 27264 anchor 27265 }); 27266 if ((0,external_wp_blob_namespaceObject.isBlobURL)(attributes.url)) { 27267 attributes.blob = attributes.url; 27268 delete attributes.url; 27269 } 27270 return (0,external_wp_blocks_namespaceObject.createBlock)('core/image', attributes); 27271 } 27272 }, { 27273 // Note: when dragging and dropping multiple files onto a gallery this overrides the 27274 // gallery transform in order to add new images to the gallery instead of 27275 // creating a new gallery. 27276 type: 'files', 27277 isMatch(files) { 27278 return files.every(file => file.type.indexOf('image/') === 0); 27279 }, 27280 transform(files) { 27281 const blocks = files.map(file => { 27282 return (0,external_wp_blocks_namespaceObject.createBlock)('core/image', { 27283 blob: (0,external_wp_blob_namespaceObject.createBlobURL)(file) 27284 }); 27285 }); 27286 return blocks; 27287 } 27288 }, { 27289 type: 'shortcode', 27290 tag: 'caption', 27291 attributes: { 27292 url: { 27293 type: 'string', 27294 source: 'attribute', 27295 attribute: 'src', 27296 selector: 'img' 27297 }, 27298 alt: { 27299 type: 'string', 27300 source: 'attribute', 27301 attribute: 'alt', 27302 selector: 'img' 27303 }, 27304 caption: { 27305 shortcode: stripFirstImage 27306 }, 27307 href: { 27308 shortcode: (attributes, { 27309 shortcode 27310 }) => { 27311 return getFirstAnchorAttributeFormHTML(shortcode.content, 'href'); 27312 } 27313 }, 27314 rel: { 27315 shortcode: (attributes, { 27316 shortcode 27317 }) => { 27318 return getFirstAnchorAttributeFormHTML(shortcode.content, 'rel'); 27319 } 27320 }, 27321 linkClass: { 27322 shortcode: (attributes, { 27323 shortcode 27324 }) => { 27325 return getFirstAnchorAttributeFormHTML(shortcode.content, 'class'); 27326 } 27327 }, 27328 id: { 27329 type: 'number', 27330 shortcode: ({ 27331 named: { 27332 id 27333 } 27334 }) => { 27335 if (!id) { 27336 return; 27337 } 27338 return parseInt(id.replace('attachment_', ''), 10); 27339 } 27340 }, 27341 align: { 27342 type: 'string', 27343 shortcode: ({ 27344 named: { 27345 align = 'alignnone' 27346 } 27347 }) => { 27348 return align.replace('align', ''); 27349 } 27350 } 27351 } 27352 }] 27353 }; 27354 /* harmony default export */ const image_transforms = (image_transforms_transforms); 27355 27356 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/image/index.js 27357 /** 27358 * WordPress dependencies 27359 */ 27360 27361 27362 27363 /** 27364 * Internal dependencies 27365 */ 27366 27367 27368 27369 const image_metadata = { 27370 $schema: "https://schemas.wp.org/trunk/block.json", 27371 apiVersion: 3, 27372 name: "core/image", 27373 title: "Image", 27374 category: "media", 27375 usesContext: ["allowResize", "imageCrop", "fixedHeight"], 27376 description: "Insert an image to make a visual statement.", 27377 keywords: ["img", "photo", "picture"], 27378 textdomain: "default", 27379 attributes: { 27380 blob: { 27381 type: "string", 27382 role: "local" 27383 }, 27384 url: { 27385 type: "string", 27386 source: "attribute", 27387 selector: "img", 27388 attribute: "src", 27389 role: "content" 27390 }, 27391 alt: { 27392 type: "string", 27393 source: "attribute", 27394 selector: "img", 27395 attribute: "alt", 27396 "default": "", 27397 role: "content" 27398 }, 27399 caption: { 27400 type: "rich-text", 27401 source: "rich-text", 27402 selector: "figcaption", 27403 role: "content" 27404 }, 27405 lightbox: { 27406 type: "object", 27407 enabled: { 27408 type: "boolean" 27409 } 27410 }, 27411 title: { 27412 type: "string", 27413 source: "attribute", 27414 selector: "img", 27415 attribute: "title", 27416 role: "content" 27417 }, 27418 href: { 27419 type: "string", 27420 source: "attribute", 27421 selector: "figure > a", 27422 attribute: "href", 27423 role: "content" 27424 }, 27425 rel: { 27426 type: "string", 27427 source: "attribute", 27428 selector: "figure > a", 27429 attribute: "rel" 27430 }, 27431 linkClass: { 27432 type: "string", 27433 source: "attribute", 27434 selector: "figure > a", 27435 attribute: "class" 27436 }, 27437 id: { 27438 type: "number", 27439 role: "content" 27440 }, 27441 width: { 27442 type: "string" 27443 }, 27444 height: { 27445 type: "string" 27446 }, 27447 aspectRatio: { 27448 type: "string" 27449 }, 27450 scale: { 27451 type: "string" 27452 }, 27453 sizeSlug: { 27454 type: "string" 27455 }, 27456 linkDestination: { 27457 type: "string" 27458 }, 27459 linkTarget: { 27460 type: "string", 27461 source: "attribute", 27462 selector: "figure > a", 27463 attribute: "target" 27464 } 27465 }, 27466 supports: { 27467 interactivity: true, 27468 align: ["left", "center", "right", "wide", "full"], 27469 anchor: true, 27470 color: { 27471 text: false, 27472 background: false 27473 }, 27474 filter: { 27475 duotone: true 27476 }, 27477 spacing: { 27478 margin: true 27479 }, 27480 __experimentalBorder: { 27481 color: true, 27482 radius: true, 27483 width: true, 27484 __experimentalSkipSerialization: true, 27485 __experimentalDefaultControls: { 27486 color: true, 27487 radius: true, 27488 width: true 27489 } 27490 }, 27491 shadow: { 27492 __experimentalSkipSerialization: true 27493 } 27494 }, 27495 selectors: { 27496 border: ".wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder", 27497 shadow: ".wp-block-image img, .wp-block-image .wp-block-image__crop-area, .wp-block-image .components-placeholder", 27498 filter: { 27499 duotone: ".wp-block-image img, .wp-block-image .components-placeholder" 27500 } 27501 }, 27502 styles: [{ 27503 name: "default", 27504 label: "Default", 27505 isDefault: true 27506 }, { 27507 name: "rounded", 27508 label: "Rounded" 27509 }], 27510 editorStyle: "wp-block-image-editor", 27511 style: "wp-block-image" 27512 }; 27513 27514 27515 const { 27516 name: image_name 27517 } = image_metadata; 27518 27519 const image_settings = { 27520 icon: library_image, 27521 example: { 27522 attributes: { 27523 sizeSlug: 'large', 27524 url: 'https://s.w.org/images/core/5.3/MtBlanc1.jpg', 27525 // translators: Caption accompanying an image of the Mont Blanc, which serves as an example for the Image block. 27526 caption: (0,external_wp_i18n_namespaceObject.__)('Mont Blanc appears—still, snowy, and serene.') 27527 } 27528 }, 27529 __experimentalLabel(attributes, { 27530 context 27531 }) { 27532 const customName = attributes?.metadata?.name; 27533 if (context === 'list-view' && customName) { 27534 return customName; 27535 } 27536 if (context === 'accessibility') { 27537 const { 27538 caption, 27539 alt, 27540 url 27541 } = attributes; 27542 if (!url) { 27543 return (0,external_wp_i18n_namespaceObject.__)('Empty'); 27544 } 27545 if (!alt) { 27546 return caption || ''; 27547 } 27548 27549 // This is intended to be read by a screen reader. 27550 // A period simply means a pause, no need to translate it. 27551 return alt + (caption ? '. ' + caption : ''); 27552 } 27553 }, 27554 getEditWrapperProps(attributes) { 27555 return { 27556 'data-align': attributes.align 27557 }; 27558 }, 27559 transforms: image_transforms, 27560 edit: image_edit, 27561 save: image_save_save, 27562 deprecated: image_deprecated 27563 }; 27564 const image_init = () => initBlock({ 27565 name: image_name, 27566 metadata: image_metadata, 27567 settings: image_settings 27568 }); 27569 27570 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/comment.js 27571 /** 27572 * WordPress dependencies 27573 */ 27574 27575 27576 const comment = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 27577 viewBox: "0 0 24 24", 27578 xmlns: "http://www.w3.org/2000/svg", 27579 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 27580 d: "M18 4H6c-1.1 0-2 .9-2 2v12.9c0 .6.5 1.1 1.1 1.1.3 0 .5-.1.8-.3L8.5 17H18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 11c0 .3-.2.5-.5.5H7.9l-2.4 2.4V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v9z" 27581 }) 27582 }); 27583 /* harmony default export */ const library_comment = (comment); 27584 27585 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/latest-comments/edit.js 27586 /** 27587 * WordPress dependencies 27588 */ 27589 27590 27591 27592 27593 27594 /** 27595 * Minimum number of comments a user can show using this block. 27596 * 27597 * @type {number} 27598 */ 27599 27600 27601 const MIN_COMMENTS = 1; 27602 /** 27603 * Maximum number of comments a user can show using this block. 27604 * 27605 * @type {number} 27606 */ 27607 const MAX_COMMENTS = 100; 27608 function LatestComments({ 27609 attributes, 27610 setAttributes 27611 }) { 27612 const { 27613 commentsToShow, 27614 displayAvatar, 27615 displayDate, 27616 displayExcerpt 27617 } = attributes; 27618 const serverSideAttributes = { 27619 ...attributes, 27620 style: { 27621 ...attributes?.style, 27622 spacing: undefined 27623 } 27624 }; 27625 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 27626 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)(), 27627 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 27628 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 27629 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 27630 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 27631 __nextHasNoMarginBottom: true, 27632 label: (0,external_wp_i18n_namespaceObject.__)('Display avatar'), 27633 checked: displayAvatar, 27634 onChange: () => setAttributes({ 27635 displayAvatar: !displayAvatar 27636 }) 27637 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 27638 __nextHasNoMarginBottom: true, 27639 label: (0,external_wp_i18n_namespaceObject.__)('Display date'), 27640 checked: displayDate, 27641 onChange: () => setAttributes({ 27642 displayDate: !displayDate 27643 }) 27644 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 27645 __nextHasNoMarginBottom: true, 27646 label: (0,external_wp_i18n_namespaceObject.__)('Display excerpt'), 27647 checked: displayExcerpt, 27648 onChange: () => setAttributes({ 27649 displayExcerpt: !displayExcerpt 27650 }) 27651 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 27652 __nextHasNoMarginBottom: true, 27653 __next40pxDefaultSize: true, 27654 label: (0,external_wp_i18n_namespaceObject.__)('Number of comments'), 27655 value: commentsToShow, 27656 onChange: value => setAttributes({ 27657 commentsToShow: value 27658 }), 27659 min: MIN_COMMENTS, 27660 max: MAX_COMMENTS, 27661 required: true 27662 })] 27663 }) 27664 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, { 27665 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)((external_wp_serverSideRender_default()), { 27666 block: "core/latest-comments", 27667 attributes: serverSideAttributes 27668 // The preview uses the site's locale to make it more true to how 27669 // the block appears on the frontend. Setting the locale 27670 // explicitly prevents any middleware from setting it to 'user'. 27671 , 27672 urlQueryArgs: { 27673 _locale: 'site' 27674 } 27675 }) 27676 })] 27677 }); 27678 } 27679 27680 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/latest-comments/index.js 27681 /** 27682 * WordPress dependencies 27683 */ 27684 27685 27686 /** 27687 * Internal dependencies 27688 */ 27689 27690 const latest_comments_metadata = { 27691 $schema: "https://schemas.wp.org/trunk/block.json", 27692 apiVersion: 3, 27693 name: "core/latest-comments", 27694 title: "Latest Comments", 27695 category: "widgets", 27696 description: "Display a list of your most recent comments.", 27697 keywords: ["recent comments"], 27698 textdomain: "default", 27699 attributes: { 27700 commentsToShow: { 27701 type: "number", 27702 "default": 5, 27703 minimum: 1, 27704 maximum: 100 27705 }, 27706 displayAvatar: { 27707 type: "boolean", 27708 "default": true 27709 }, 27710 displayDate: { 27711 type: "boolean", 27712 "default": true 27713 }, 27714 displayExcerpt: { 27715 type: "boolean", 27716 "default": true 27717 } 27718 }, 27719 supports: { 27720 align: true, 27721 color: { 27722 gradients: true, 27723 link: true, 27724 __experimentalDefaultControls: { 27725 background: true, 27726 text: true, 27727 link: true 27728 } 27729 }, 27730 html: false, 27731 spacing: { 27732 margin: true, 27733 padding: true 27734 }, 27735 typography: { 27736 fontSize: true, 27737 lineHeight: true, 27738 __experimentalFontFamily: true, 27739 __experimentalFontWeight: true, 27740 __experimentalFontStyle: true, 27741 __experimentalTextTransform: true, 27742 __experimentalTextDecoration: true, 27743 __experimentalLetterSpacing: true, 27744 __experimentalDefaultControls: { 27745 fontSize: true 27746 } 27747 }, 27748 interactivity: { 27749 clientNavigation: true 27750 } 27751 }, 27752 editorStyle: "wp-block-latest-comments-editor", 27753 style: "wp-block-latest-comments" 27754 }; 27755 27756 const { 27757 name: latest_comments_name 27758 } = latest_comments_metadata; 27759 27760 const latest_comments_settings = { 27761 icon: library_comment, 27762 example: {}, 27763 edit: LatestComments 27764 }; 27765 const latest_comments_init = () => initBlock({ 27766 name: latest_comments_name, 27767 metadata: latest_comments_metadata, 27768 settings: latest_comments_settings 27769 }); 27770 27771 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-list.js 27772 /** 27773 * WordPress dependencies 27774 */ 27775 27776 27777 const postList = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 27778 viewBox: "0 0 24 24", 27779 xmlns: "http://www.w3.org/2000/svg", 27780 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 27781 d: "M18 5.5H6a.5.5 0 0 0-.5.5v12a.5.5 0 0 0 .5.5h12a.5.5 0 0 0 .5-.5V6a.5.5 0 0 0-.5-.5ZM6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Zm1 5h1.5v1.5H7V9Zm1.5 4.5H7V15h1.5v-1.5ZM10 9h7v1.5h-7V9Zm7 4.5h-7V15h7v-1.5Z" 27782 }) 27783 }); 27784 /* harmony default export */ const post_list = (postList); 27785 27786 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/latest-posts/deprecated.js 27787 /** 27788 * Internal dependencies 27789 */ 27790 const latest_posts_deprecated_metadata = { 27791 $schema: "https://schemas.wp.org/trunk/block.json", 27792 apiVersion: 3, 27793 name: "core/latest-posts", 27794 title: "Latest Posts", 27795 category: "widgets", 27796 description: "Display a list of your most recent posts.", 27797 keywords: ["recent posts"], 27798 textdomain: "default", 27799 attributes: { 27800 categories: { 27801 type: "array", 27802 items: { 27803 type: "object" 27804 } 27805 }, 27806 selectedAuthor: { 27807 type: "number" 27808 }, 27809 postsToShow: { 27810 type: "number", 27811 "default": 5 27812 }, 27813 displayPostContent: { 27814 type: "boolean", 27815 "default": false 27816 }, 27817 displayPostContentRadio: { 27818 type: "string", 27819 "default": "excerpt" 27820 }, 27821 excerptLength: { 27822 type: "number", 27823 "default": 55 27824 }, 27825 displayAuthor: { 27826 type: "boolean", 27827 "default": false 27828 }, 27829 displayPostDate: { 27830 type: "boolean", 27831 "default": false 27832 }, 27833 postLayout: { 27834 type: "string", 27835 "default": "list" 27836 }, 27837 columns: { 27838 type: "number", 27839 "default": 3 27840 }, 27841 order: { 27842 type: "string", 27843 "default": "desc" 27844 }, 27845 orderBy: { 27846 type: "string", 27847 "default": "date" 27848 }, 27849 displayFeaturedImage: { 27850 type: "boolean", 27851 "default": false 27852 }, 27853 featuredImageAlign: { 27854 type: "string", 27855 "enum": ["left", "center", "right"] 27856 }, 27857 featuredImageSizeSlug: { 27858 type: "string", 27859 "default": "thumbnail" 27860 }, 27861 featuredImageSizeWidth: { 27862 type: "number", 27863 "default": null 27864 }, 27865 featuredImageSizeHeight: { 27866 type: "number", 27867 "default": null 27868 }, 27869 addLinkToFeaturedImage: { 27870 type: "boolean", 27871 "default": false 27872 } 27873 }, 27874 supports: { 27875 align: true, 27876 html: false, 27877 color: { 27878 gradients: true, 27879 link: true, 27880 __experimentalDefaultControls: { 27881 background: true, 27882 text: true, 27883 link: true 27884 } 27885 }, 27886 spacing: { 27887 margin: true, 27888 padding: true 27889 }, 27890 typography: { 27891 fontSize: true, 27892 lineHeight: true, 27893 __experimentalFontFamily: true, 27894 __experimentalFontWeight: true, 27895 __experimentalFontStyle: true, 27896 __experimentalTextTransform: true, 27897 __experimentalTextDecoration: true, 27898 __experimentalLetterSpacing: true, 27899 __experimentalDefaultControls: { 27900 fontSize: true 27901 } 27902 }, 27903 interactivity: { 27904 clientNavigation: true 27905 } 27906 }, 27907 editorStyle: "wp-block-latest-posts-editor", 27908 style: "wp-block-latest-posts" 27909 }; 27910 const { 27911 attributes: deprecated_attributes 27912 } = latest_posts_deprecated_metadata; 27913 /* harmony default export */ const latest_posts_deprecated = ([{ 27914 attributes: { 27915 ...deprecated_attributes, 27916 categories: { 27917 type: 'string' 27918 } 27919 }, 27920 supports: { 27921 align: true, 27922 html: false 27923 }, 27924 migrate: oldAttributes => { 27925 // This needs the full category object, not just the ID. 27926 return { 27927 ...oldAttributes, 27928 categories: [{ 27929 id: Number(oldAttributes.categories) 27930 }] 27931 }; 27932 }, 27933 isEligible: ({ 27934 categories 27935 }) => categories && 'string' === typeof categories, 27936 save: () => null 27937 }]); 27938 27939 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/align-none.js 27940 /** 27941 * WordPress dependencies 27942 */ 27943 27944 27945 const alignNone = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 27946 xmlns: "http://www.w3.org/2000/svg", 27947 viewBox: "0 0 24 24", 27948 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 27949 d: "M19 5.5H5V4h14v1.5ZM19 20H5v-1.5h14V20ZM5 9h14v6H5V9Z" 27950 }) 27951 }); 27952 /* harmony default export */ const align_none = (alignNone); 27953 27954 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/position-left.js 27955 /** 27956 * WordPress dependencies 27957 */ 27958 27959 27960 const positionLeft = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 27961 xmlns: "http://www.w3.org/2000/svg", 27962 viewBox: "0 0 24 24", 27963 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 27964 d: "M5 5.5h8V4H5v1.5ZM5 20h8v-1.5H5V20ZM19 9H5v6h14V9Z" 27965 }) 27966 }); 27967 /* harmony default export */ const position_left = (positionLeft); 27968 27969 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/position-center.js 27970 /** 27971 * WordPress dependencies 27972 */ 27973 27974 27975 const positionCenter = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 27976 xmlns: "http://www.w3.org/2000/svg", 27977 viewBox: "0 0 24 24", 27978 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 27979 d: "M19 5.5H5V4h14v1.5ZM19 20H5v-1.5h14V20ZM7 9h10v6H7V9Z" 27980 }) 27981 }); 27982 /* harmony default export */ const position_center = (positionCenter); 27983 27984 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/position-right.js 27985 /** 27986 * WordPress dependencies 27987 */ 27988 27989 27990 const positionRight = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 27991 xmlns: "http://www.w3.org/2000/svg", 27992 viewBox: "0 0 24 24", 27993 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 27994 d: "M19 5.5h-8V4h8v1.5ZM19 20h-8v-1.5h8V20ZM5 9h14v6H5V9Z" 27995 }) 27996 }); 27997 /* harmony default export */ const position_right = (positionRight); 27998 27999 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/list.js 28000 /** 28001 * WordPress dependencies 28002 */ 28003 28004 28005 const list = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 28006 viewBox: "0 0 24 24", 28007 xmlns: "http://www.w3.org/2000/svg", 28008 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 28009 d: "M4 4v1.5h16V4H4zm8 8.5h8V11h-8v1.5zM4 20h16v-1.5H4V20zm4-8c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2z" 28010 }) 28011 }); 28012 /* harmony default export */ const library_list = (list); 28013 28014 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/latest-posts/constants.js 28015 const MIN_EXCERPT_LENGTH = 10; 28016 const MAX_EXCERPT_LENGTH = 100; 28017 const MAX_POSTS_COLUMNS = 6; 28018 28019 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/latest-posts/edit.js 28020 /** 28021 * External dependencies 28022 */ 28023 28024 28025 /** 28026 * WordPress dependencies 28027 */ 28028 28029 28030 28031 28032 28033 28034 28035 28036 28037 28038 28039 /** 28040 * Internal dependencies 28041 */ 28042 28043 28044 /** 28045 * Module Constants 28046 */ 28047 28048 28049 28050 const CATEGORIES_LIST_QUERY = { 28051 per_page: -1, 28052 context: 'view' 28053 }; 28054 const USERS_LIST_QUERY = { 28055 per_page: -1, 28056 has_published_posts: ['post'], 28057 context: 'view' 28058 }; 28059 function getFeaturedImageDetails(post, size) { 28060 var _image$media_details$; 28061 const image = post._embedded?.['wp:featuredmedia']?.['0']; 28062 return { 28063 url: (_image$media_details$ = image?.media_details?.sizes?.[size]?.source_url) !== null && _image$media_details$ !== void 0 ? _image$media_details$ : image?.source_url, 28064 alt: image?.alt_text 28065 }; 28066 } 28067 function LatestPostsEdit({ 28068 attributes, 28069 setAttributes 28070 }) { 28071 var _categoriesList$reduc; 28072 const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(LatestPostsEdit); 28073 const { 28074 postsToShow, 28075 order, 28076 orderBy, 28077 categories, 28078 selectedAuthor, 28079 displayFeaturedImage, 28080 displayPostContentRadio, 28081 displayPostContent, 28082 displayPostDate, 28083 displayAuthor, 28084 postLayout, 28085 columns, 28086 excerptLength, 28087 featuredImageAlign, 28088 featuredImageSizeSlug, 28089 featuredImageSizeWidth, 28090 featuredImageSizeHeight, 28091 addLinkToFeaturedImage 28092 } = attributes; 28093 const { 28094 imageSizes, 28095 latestPosts, 28096 defaultImageWidth, 28097 defaultImageHeight, 28098 categoriesList, 28099 authorList 28100 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 28101 var _settings$imageDimens, _settings$imageDimens2; 28102 const { 28103 getEntityRecords, 28104 getUsers 28105 } = select(external_wp_coreData_namespaceObject.store); 28106 const settings = select(external_wp_blockEditor_namespaceObject.store).getSettings(); 28107 const catIds = categories && categories.length > 0 ? categories.map(cat => cat.id) : []; 28108 const latestPostsQuery = Object.fromEntries(Object.entries({ 28109 categories: catIds, 28110 author: selectedAuthor, 28111 order, 28112 orderby: orderBy, 28113 per_page: postsToShow, 28114 _embed: 'wp:featuredmedia' 28115 }).filter(([, value]) => typeof value !== 'undefined')); 28116 return { 28117 defaultImageWidth: (_settings$imageDimens = settings.imageDimensions?.[featuredImageSizeSlug]?.width) !== null && _settings$imageDimens !== void 0 ? _settings$imageDimens : 0, 28118 defaultImageHeight: (_settings$imageDimens2 = settings.imageDimensions?.[featuredImageSizeSlug]?.height) !== null && _settings$imageDimens2 !== void 0 ? _settings$imageDimens2 : 0, 28119 imageSizes: settings.imageSizes, 28120 latestPosts: getEntityRecords('postType', 'post', latestPostsQuery), 28121 categoriesList: getEntityRecords('taxonomy', 'category', CATEGORIES_LIST_QUERY), 28122 authorList: getUsers(USERS_LIST_QUERY) 28123 }; 28124 }, [featuredImageSizeSlug, postsToShow, order, orderBy, categories, selectedAuthor]); 28125 28126 // If a user clicks to a link prevent redirection and show a warning. 28127 const { 28128 createWarningNotice, 28129 removeNotice 28130 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 28131 let noticeId; 28132 const showRedirectionPreventedNotice = event => { 28133 event.preventDefault(); 28134 // Remove previous warning if any, to show one at a time per block. 28135 removeNotice(noticeId); 28136 noticeId = `block-library/core/latest-posts/redirection-prevented/$instanceId}`; 28137 createWarningNotice((0,external_wp_i18n_namespaceObject.__)('Links are disabled in the editor.'), { 28138 id: noticeId, 28139 type: 'snackbar' 28140 }); 28141 }; 28142 const imageSizeOptions = imageSizes.filter(({ 28143 slug 28144 }) => slug !== 'full').map(({ 28145 name, 28146 slug 28147 }) => ({ 28148 value: slug, 28149 label: name 28150 })); 28151 const categorySuggestions = (_categoriesList$reduc = categoriesList?.reduce((accumulator, category) => ({ 28152 ...accumulator, 28153 [category.name]: category 28154 }), {})) !== null && _categoriesList$reduc !== void 0 ? _categoriesList$reduc : {}; 28155 const selectCategories = tokens => { 28156 const hasNoSuggestion = tokens.some(token => typeof token === 'string' && !categorySuggestions[token]); 28157 if (hasNoSuggestion) { 28158 return; 28159 } 28160 // Categories that are already will be objects, while new additions will be strings (the name). 28161 // allCategories nomalizes the array so that they are all objects. 28162 const allCategories = tokens.map(token => { 28163 return typeof token === 'string' ? categorySuggestions[token] : token; 28164 }); 28165 // We do nothing if the category is not selected 28166 // from suggestions. 28167 if (allCategories.includes(null)) { 28168 return false; 28169 } 28170 setAttributes({ 28171 categories: allCategories 28172 }); 28173 }; 28174 const imageAlignmentOptions = [{ 28175 value: 'none', 28176 icon: align_none, 28177 label: (0,external_wp_i18n_namespaceObject.__)('None') 28178 }, { 28179 value: 'left', 28180 icon: position_left, 28181 label: (0,external_wp_i18n_namespaceObject.__)('Left') 28182 }, { 28183 value: 'center', 28184 icon: position_center, 28185 label: (0,external_wp_i18n_namespaceObject.__)('Center') 28186 }, { 28187 value: 'right', 28188 icon: position_right, 28189 label: (0,external_wp_i18n_namespaceObject.__)('Right') 28190 }]; 28191 const hasPosts = !!latestPosts?.length; 28192 const inspectorControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.InspectorControls, { 28193 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 28194 title: (0,external_wp_i18n_namespaceObject.__)('Post content'), 28195 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 28196 __nextHasNoMarginBottom: true, 28197 label: (0,external_wp_i18n_namespaceObject.__)('Post content'), 28198 checked: displayPostContent, 28199 onChange: value => setAttributes({ 28200 displayPostContent: value 28201 }) 28202 }), displayPostContent && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RadioControl, { 28203 label: (0,external_wp_i18n_namespaceObject.__)('Show'), 28204 selected: displayPostContentRadio, 28205 options: [{ 28206 label: (0,external_wp_i18n_namespaceObject.__)('Excerpt'), 28207 value: 'excerpt' 28208 }, { 28209 label: (0,external_wp_i18n_namespaceObject.__)('Full post'), 28210 value: 'full_post' 28211 }], 28212 onChange: value => setAttributes({ 28213 displayPostContentRadio: value 28214 }) 28215 }), displayPostContent && displayPostContentRadio === 'excerpt' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 28216 __nextHasNoMarginBottom: true, 28217 __next40pxDefaultSize: true, 28218 label: (0,external_wp_i18n_namespaceObject.__)('Max number of words'), 28219 value: excerptLength, 28220 onChange: value => setAttributes({ 28221 excerptLength: value 28222 }), 28223 min: MIN_EXCERPT_LENGTH, 28224 max: MAX_EXCERPT_LENGTH 28225 })] 28226 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 28227 title: (0,external_wp_i18n_namespaceObject.__)('Post meta'), 28228 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 28229 __nextHasNoMarginBottom: true, 28230 label: (0,external_wp_i18n_namespaceObject.__)('Display author name'), 28231 checked: displayAuthor, 28232 onChange: value => setAttributes({ 28233 displayAuthor: value 28234 }) 28235 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 28236 __nextHasNoMarginBottom: true, 28237 label: (0,external_wp_i18n_namespaceObject.__)('Display post date'), 28238 checked: displayPostDate, 28239 onChange: value => setAttributes({ 28240 displayPostDate: value 28241 }) 28242 })] 28243 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 28244 title: (0,external_wp_i18n_namespaceObject.__)('Featured image'), 28245 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 28246 __nextHasNoMarginBottom: true, 28247 label: (0,external_wp_i18n_namespaceObject.__)('Display featured image'), 28248 checked: displayFeaturedImage, 28249 onChange: value => setAttributes({ 28250 displayFeaturedImage: value 28251 }) 28252 }), displayFeaturedImage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 28253 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalImageSizeControl, { 28254 onChange: value => { 28255 const newAttrs = {}; 28256 if (value.hasOwnProperty('width')) { 28257 newAttrs.featuredImageSizeWidth = value.width; 28258 } 28259 if (value.hasOwnProperty('height')) { 28260 newAttrs.featuredImageSizeHeight = value.height; 28261 } 28262 setAttributes(newAttrs); 28263 }, 28264 slug: featuredImageSizeSlug, 28265 width: featuredImageSizeWidth, 28266 height: featuredImageSizeHeight, 28267 imageWidth: defaultImageWidth, 28268 imageHeight: defaultImageHeight, 28269 imageSizeOptions: imageSizeOptions, 28270 imageSizeHelp: (0,external_wp_i18n_namespaceObject.__)('Select the size of the source image.'), 28271 onChangeImage: value => setAttributes({ 28272 featuredImageSizeSlug: value, 28273 featuredImageSizeWidth: undefined, 28274 featuredImageSizeHeight: undefined 28275 }) 28276 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, { 28277 className: "editor-latest-posts-image-alignment-control", 28278 __nextHasNoMarginBottom: true, 28279 __next40pxDefaultSize: true, 28280 label: (0,external_wp_i18n_namespaceObject.__)('Image alignment'), 28281 value: featuredImageAlign || 'none', 28282 onChange: value => setAttributes({ 28283 featuredImageAlign: value !== 'none' ? value : undefined 28284 }), 28285 children: imageAlignmentOptions.map(({ 28286 value, 28287 icon, 28288 label 28289 }) => { 28290 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOptionIcon, { 28291 value: value, 28292 icon: icon, 28293 label: label 28294 }, value); 28295 }) 28296 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 28297 __nextHasNoMarginBottom: true, 28298 label: (0,external_wp_i18n_namespaceObject.__)('Add link to featured image'), 28299 checked: addLinkToFeaturedImage, 28300 onChange: value => setAttributes({ 28301 addLinkToFeaturedImage: value 28302 }) 28303 })] 28304 })] 28305 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 28306 title: (0,external_wp_i18n_namespaceObject.__)('Sorting and filtering'), 28307 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.QueryControls, { 28308 order, 28309 orderBy, 28310 numberOfItems: postsToShow, 28311 onOrderChange: value => setAttributes({ 28312 order: value 28313 }), 28314 onOrderByChange: value => setAttributes({ 28315 orderBy: value 28316 }), 28317 onNumberOfItemsChange: value => setAttributes({ 28318 postsToShow: value 28319 }), 28320 categorySuggestions: categorySuggestions, 28321 onCategoryChange: selectCategories, 28322 selectedCategories: categories, 28323 onAuthorChange: value => setAttributes({ 28324 selectedAuthor: '' !== value ? Number(value) : undefined 28325 }), 28326 authorList: authorList !== null && authorList !== void 0 ? authorList : [], 28327 selectedAuthorId: selectedAuthor 28328 }), postLayout === 'grid' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 28329 __nextHasNoMarginBottom: true, 28330 __next40pxDefaultSize: true, 28331 label: (0,external_wp_i18n_namespaceObject.__)('Columns'), 28332 value: columns, 28333 onChange: value => setAttributes({ 28334 columns: value 28335 }), 28336 min: 2, 28337 max: !hasPosts ? MAX_POSTS_COLUMNS : Math.min(MAX_POSTS_COLUMNS, latestPosts.length), 28338 required: true 28339 })] 28340 })] 28341 }); 28342 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 28343 className: dist_clsx({ 28344 'wp-block-latest-posts__list': true, 28345 'is-grid': postLayout === 'grid', 28346 'has-dates': displayPostDate, 28347 'has-author': displayAuthor, 28348 [`columns-$columns}`]: postLayout === 'grid' 28349 }) 28350 }); 28351 if (!hasPosts) { 28352 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 28353 ...blockProps, 28354 children: [inspectorControls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 28355 icon: library_pin, 28356 label: (0,external_wp_i18n_namespaceObject.__)('Latest Posts'), 28357 children: !Array.isArray(latestPosts) ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) : (0,external_wp_i18n_namespaceObject.__)('No posts found.') 28358 })] 28359 }); 28360 } 28361 28362 // Removing posts from display should be instant. 28363 const displayPosts = latestPosts.length > postsToShow ? latestPosts.slice(0, postsToShow) : latestPosts; 28364 const layoutControls = [{ 28365 icon: library_list, 28366 title: (0,external_wp_i18n_namespaceObject._x)('List view', 'Latest posts block display setting'), 28367 onClick: () => setAttributes({ 28368 postLayout: 'list' 28369 }), 28370 isActive: postLayout === 'list' 28371 }, { 28372 icon: library_grid, 28373 title: (0,external_wp_i18n_namespaceObject._x)('Grid view', 'Latest posts block display setting'), 28374 onClick: () => setAttributes({ 28375 postLayout: 'grid' 28376 }), 28377 isActive: postLayout === 'grid' 28378 }]; 28379 const dateFormat = (0,external_wp_date_namespaceObject.getSettings)().formats.date; 28380 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 28381 children: [inspectorControls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 28382 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 28383 controls: layoutControls 28384 }) 28385 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 28386 ...blockProps, 28387 children: displayPosts.map(post => { 28388 const titleTrimmed = post.title.rendered.trim(); 28389 let excerpt = post.excerpt.rendered; 28390 const currentAuthor = authorList?.find(author => author.id === post.author); 28391 const excerptElement = document.createElement('div'); 28392 excerptElement.innerHTML = excerpt; 28393 excerpt = excerptElement.textContent || excerptElement.innerText || ''; 28394 const { 28395 url: imageSourceUrl, 28396 alt: featuredImageAlt 28397 } = getFeaturedImageDetails(post, featuredImageSizeSlug); 28398 const imageClasses = dist_clsx({ 28399 'wp-block-latest-posts__featured-image': true, 28400 [`align$featuredImageAlign}`]: !!featuredImageAlign 28401 }); 28402 const renderFeaturedImage = displayFeaturedImage && imageSourceUrl; 28403 const featuredImage = renderFeaturedImage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 28404 src: imageSourceUrl, 28405 alt: featuredImageAlt, 28406 style: { 28407 maxWidth: featuredImageSizeWidth, 28408 maxHeight: featuredImageSizeHeight 28409 } 28410 }); 28411 const needsReadMore = excerptLength < excerpt.trim().split(' ').length && post.excerpt.raw === ''; 28412 const postExcerpt = needsReadMore ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 28413 children: [excerpt.trim().split(' ', excerptLength).join(' '), (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Hidden accessibility text: Post title */ 28414 (0,external_wp_i18n_namespaceObject.__)('… <a>Read more<span>: %1$s</span></a>'), titleTrimmed || (0,external_wp_i18n_namespaceObject.__)('(no title)')), { 28415 a: 28416 /*#__PURE__*/ 28417 // eslint-disable-next-line jsx-a11y/anchor-has-content 28418 (0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 28419 className: "wp-block-latest-posts__read-more", 28420 href: post.link, 28421 rel: "noopener noreferrer", 28422 onClick: showRedirectionPreventedNotice 28423 }), 28424 span: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 28425 className: "screen-reader-text" 28426 }) 28427 })] 28428 }) : excerpt; 28429 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("li", { 28430 children: [renderFeaturedImage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 28431 className: imageClasses, 28432 children: addLinkToFeaturedImage ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 28433 href: post.link, 28434 rel: "noreferrer noopener", 28435 onClick: showRedirectionPreventedNotice, 28436 children: featuredImage 28437 }) : featuredImage 28438 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 28439 className: "wp-block-latest-posts__post-title", 28440 href: post.link, 28441 rel: "noreferrer noopener", 28442 dangerouslySetInnerHTML: !!titleTrimmed ? { 28443 __html: titleTrimmed 28444 } : undefined, 28445 onClick: showRedirectionPreventedNotice, 28446 children: !titleTrimmed ? (0,external_wp_i18n_namespaceObject.__)('(no title)') : null 28447 }), displayAuthor && currentAuthor && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 28448 className: "wp-block-latest-posts__post-author", 28449 children: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: byline. %s: author. */ 28450 (0,external_wp_i18n_namespaceObject.__)('by %s'), currentAuthor.name) 28451 }), displayPostDate && post.date_gmt && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", { 28452 dateTime: (0,external_wp_date_namespaceObject.format)('c', post.date_gmt), 28453 className: "wp-block-latest-posts__post-date", 28454 children: (0,external_wp_date_namespaceObject.dateI18n)(dateFormat, post.date_gmt) 28455 }), displayPostContent && displayPostContentRadio === 'excerpt' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 28456 className: "wp-block-latest-posts__post-excerpt", 28457 children: postExcerpt 28458 }), displayPostContent && displayPostContentRadio === 'full_post' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 28459 className: "wp-block-latest-posts__post-full-content", 28460 dangerouslySetInnerHTML: { 28461 __html: post.content.raw.trim() 28462 } 28463 })] 28464 }, post.id); 28465 }) 28466 })] 28467 }); 28468 } 28469 28470 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/latest-posts/index.js 28471 /** 28472 * WordPress dependencies 28473 */ 28474 28475 28476 /** 28477 * Internal dependencies 28478 */ 28479 28480 28481 28482 const latest_posts_metadata = { 28483 $schema: "https://schemas.wp.org/trunk/block.json", 28484 apiVersion: 3, 28485 name: "core/latest-posts", 28486 title: "Latest Posts", 28487 category: "widgets", 28488 description: "Display a list of your most recent posts.", 28489 keywords: ["recent posts"], 28490 textdomain: "default", 28491 attributes: { 28492 categories: { 28493 type: "array", 28494 items: { 28495 type: "object" 28496 } 28497 }, 28498 selectedAuthor: { 28499 type: "number" 28500 }, 28501 postsToShow: { 28502 type: "number", 28503 "default": 5 28504 }, 28505 displayPostContent: { 28506 type: "boolean", 28507 "default": false 28508 }, 28509 displayPostContentRadio: { 28510 type: "string", 28511 "default": "excerpt" 28512 }, 28513 excerptLength: { 28514 type: "number", 28515 "default": 55 28516 }, 28517 displayAuthor: { 28518 type: "boolean", 28519 "default": false 28520 }, 28521 displayPostDate: { 28522 type: "boolean", 28523 "default": false 28524 }, 28525 postLayout: { 28526 type: "string", 28527 "default": "list" 28528 }, 28529 columns: { 28530 type: "number", 28531 "default": 3 28532 }, 28533 order: { 28534 type: "string", 28535 "default": "desc" 28536 }, 28537 orderBy: { 28538 type: "string", 28539 "default": "date" 28540 }, 28541 displayFeaturedImage: { 28542 type: "boolean", 28543 "default": false 28544 }, 28545 featuredImageAlign: { 28546 type: "string", 28547 "enum": ["left", "center", "right"] 28548 }, 28549 featuredImageSizeSlug: { 28550 type: "string", 28551 "default": "thumbnail" 28552 }, 28553 featuredImageSizeWidth: { 28554 type: "number", 28555 "default": null 28556 }, 28557 featuredImageSizeHeight: { 28558 type: "number", 28559 "default": null 28560 }, 28561 addLinkToFeaturedImage: { 28562 type: "boolean", 28563 "default": false 28564 } 28565 }, 28566 supports: { 28567 align: true, 28568 html: false, 28569 color: { 28570 gradients: true, 28571 link: true, 28572 __experimentalDefaultControls: { 28573 background: true, 28574 text: true, 28575 link: true 28576 } 28577 }, 28578 spacing: { 28579 margin: true, 28580 padding: true 28581 }, 28582 typography: { 28583 fontSize: true, 28584 lineHeight: true, 28585 __experimentalFontFamily: true, 28586 __experimentalFontWeight: true, 28587 __experimentalFontStyle: true, 28588 __experimentalTextTransform: true, 28589 __experimentalTextDecoration: true, 28590 __experimentalLetterSpacing: true, 28591 __experimentalDefaultControls: { 28592 fontSize: true 28593 } 28594 }, 28595 interactivity: { 28596 clientNavigation: true 28597 } 28598 }, 28599 editorStyle: "wp-block-latest-posts-editor", 28600 style: "wp-block-latest-posts" 28601 }; 28602 const { 28603 name: latest_posts_name 28604 } = latest_posts_metadata; 28605 28606 const latest_posts_settings = { 28607 icon: post_list, 28608 example: {}, 28609 edit: LatestPostsEdit, 28610 deprecated: latest_posts_deprecated 28611 }; 28612 const latest_posts_init = () => initBlock({ 28613 name: latest_posts_name, 28614 metadata: latest_posts_metadata, 28615 settings: latest_posts_settings 28616 }); 28617 28618 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list/utils.js 28619 /** 28620 * WordPress dependencies 28621 */ 28622 28623 const LIST_STYLES = { 28624 A: 'upper-alpha', 28625 a: 'lower-alpha', 28626 I: 'upper-roman', 28627 i: 'lower-roman' 28628 }; 28629 function createListBlockFromDOMElement(listElement) { 28630 const type = listElement.getAttribute('type'); 28631 const listAttributes = { 28632 ordered: 'OL' === listElement.tagName, 28633 anchor: listElement.id === '' ? undefined : listElement.id, 28634 start: listElement.getAttribute('start') ? parseInt(listElement.getAttribute('start'), 10) : undefined, 28635 reversed: listElement.hasAttribute('reversed') ? true : undefined, 28636 type: type && LIST_STYLES[type] ? LIST_STYLES[type] : undefined 28637 }; 28638 const innerBlocks = Array.from(listElement.children).map(listItem => { 28639 const children = Array.from(listItem.childNodes).filter(node => node.nodeType !== node.TEXT_NODE || node.textContent.trim().length !== 0); 28640 children.reverse(); 28641 const [nestedList, ...nodes] = children; 28642 const hasNestedList = nestedList?.tagName === 'UL' || nestedList?.tagName === 'OL'; 28643 if (!hasNestedList) { 28644 return (0,external_wp_blocks_namespaceObject.createBlock)('core/list-item', { 28645 content: listItem.innerHTML 28646 }); 28647 } 28648 const htmlNodes = nodes.map(node => { 28649 if (node.nodeType === node.TEXT_NODE) { 28650 return node.textContent; 28651 } 28652 return node.outerHTML; 28653 }); 28654 htmlNodes.reverse(); 28655 const childAttributes = { 28656 content: htmlNodes.join('').trim() 28657 }; 28658 const childInnerBlocks = [createListBlockFromDOMElement(nestedList)]; 28659 return (0,external_wp_blocks_namespaceObject.createBlock)('core/list-item', childAttributes, childInnerBlocks); 28660 }); 28661 return (0,external_wp_blocks_namespaceObject.createBlock)('core/list', listAttributes, innerBlocks); 28662 } 28663 function migrateToListV2(attributes) { 28664 const { 28665 values, 28666 start, 28667 reversed, 28668 ordered, 28669 type, 28670 ...otherAttributes 28671 } = attributes; 28672 const list = document.createElement(ordered ? 'ol' : 'ul'); 28673 list.innerHTML = values; 28674 if (start) { 28675 list.setAttribute('start', start); 28676 } 28677 if (reversed) { 28678 list.setAttribute('reversed', true); 28679 } 28680 if (type) { 28681 list.setAttribute('type', type); 28682 } 28683 const [listBlock] = (0,external_wp_blocks_namespaceObject.rawHandler)({ 28684 HTML: list.outerHTML 28685 }); 28686 return [{ 28687 ...otherAttributes, 28688 ...listBlock.attributes 28689 }, listBlock.innerBlocks]; 28690 } 28691 function migrateTypeToInlineStyle(attributes) { 28692 const { 28693 type 28694 } = attributes; 28695 if (type && LIST_STYLES[type]) { 28696 return { 28697 ...attributes, 28698 type: LIST_STYLES[type] 28699 }; 28700 } 28701 return attributes; 28702 } 28703 28704 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list/deprecated.js 28705 /** 28706 * WordPress dependencies 28707 */ 28708 28709 28710 /** 28711 * Internal dependencies 28712 */ 28713 28714 28715 28716 const v0 = { 28717 attributes: { 28718 ordered: { 28719 type: 'boolean', 28720 default: false, 28721 role: 'content' 28722 }, 28723 values: { 28724 type: 'string', 28725 source: 'html', 28726 selector: 'ol,ul', 28727 multiline: 'li', 28728 __unstableMultilineWrapperTags: ['ol', 'ul'], 28729 default: '', 28730 role: 'content' 28731 }, 28732 type: { 28733 type: 'string' 28734 }, 28735 start: { 28736 type: 'number' 28737 }, 28738 reversed: { 28739 type: 'boolean' 28740 }, 28741 placeholder: { 28742 type: 'string' 28743 } 28744 }, 28745 supports: { 28746 anchor: true, 28747 className: false, 28748 typography: { 28749 fontSize: true, 28750 __experimentalFontFamily: true 28751 }, 28752 color: { 28753 gradients: true, 28754 link: true 28755 }, 28756 __unstablePasteTextInline: true, 28757 __experimentalSelector: 'ol,ul', 28758 __experimentalSlashInserter: true 28759 }, 28760 save({ 28761 attributes 28762 }) { 28763 const { 28764 ordered, 28765 values, 28766 type, 28767 reversed, 28768 start 28769 } = attributes; 28770 const TagName = ordered ? 'ol' : 'ul'; 28771 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 28772 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 28773 type, 28774 reversed, 28775 start 28776 }), 28777 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 28778 value: values, 28779 multiline: "li" 28780 }) 28781 }); 28782 }, 28783 migrate: migrate_font_family, 28784 isEligible({ 28785 style 28786 }) { 28787 return style?.typography?.fontFamily; 28788 } 28789 }; 28790 const list_deprecated_v1 = { 28791 attributes: { 28792 ordered: { 28793 type: 'boolean', 28794 default: false, 28795 role: 'content' 28796 }, 28797 values: { 28798 type: 'string', 28799 source: 'html', 28800 selector: 'ol,ul', 28801 multiline: 'li', 28802 __unstableMultilineWrapperTags: ['ol', 'ul'], 28803 default: '', 28804 role: 'content' 28805 }, 28806 type: { 28807 type: 'string' 28808 }, 28809 start: { 28810 type: 'number' 28811 }, 28812 reversed: { 28813 type: 'boolean' 28814 }, 28815 placeholder: { 28816 type: 'string' 28817 } 28818 }, 28819 supports: { 28820 anchor: true, 28821 className: false, 28822 typography: { 28823 fontSize: true, 28824 __experimentalFontFamily: true, 28825 lineHeight: true, 28826 __experimentalFontStyle: true, 28827 __experimentalFontWeight: true, 28828 __experimentalLetterSpacing: true, 28829 __experimentalTextTransform: true, 28830 __experimentalDefaultControls: { 28831 fontSize: true 28832 } 28833 }, 28834 color: { 28835 gradients: true, 28836 link: true, 28837 __experimentalDefaultControls: { 28838 background: true, 28839 text: true 28840 } 28841 }, 28842 __unstablePasteTextInline: true, 28843 __experimentalSelector: 'ol,ul', 28844 __experimentalSlashInserter: true 28845 }, 28846 save({ 28847 attributes 28848 }) { 28849 const { 28850 ordered, 28851 values, 28852 type, 28853 reversed, 28854 start 28855 } = attributes; 28856 const TagName = ordered ? 'ol' : 'ul'; 28857 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 28858 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 28859 type, 28860 reversed, 28861 start 28862 }), 28863 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 28864 value: values, 28865 multiline: "li" 28866 }) 28867 }); 28868 }, 28869 migrate: migrateToListV2 28870 }; 28871 28872 // In #53301 changed to use the inline style instead of type attribute. 28873 const list_deprecated_v2 = { 28874 attributes: { 28875 ordered: { 28876 type: 'boolean', 28877 default: false, 28878 role: 'content' 28879 }, 28880 values: { 28881 type: 'string', 28882 source: 'html', 28883 selector: 'ol,ul', 28884 multiline: 'li', 28885 __unstableMultilineWrapperTags: ['ol', 'ul'], 28886 default: '', 28887 role: 'content' 28888 }, 28889 type: { 28890 type: 'string' 28891 }, 28892 start: { 28893 type: 'number' 28894 }, 28895 reversed: { 28896 type: 'boolean' 28897 }, 28898 placeholder: { 28899 type: 'string' 28900 } 28901 }, 28902 supports: { 28903 anchor: true, 28904 className: false, 28905 typography: { 28906 fontSize: true, 28907 lineHeight: true, 28908 __experimentalFontFamily: true, 28909 __experimentalFontWeight: true, 28910 __experimentalFontStyle: true, 28911 __experimentalTextTransform: true, 28912 __experimentalTextDecoration: true, 28913 __experimentalLetterSpacing: true, 28914 __experimentalDefaultControls: { 28915 fontSize: true 28916 } 28917 }, 28918 color: { 28919 gradients: true, 28920 link: true, 28921 __experimentalDefaultControls: { 28922 background: true, 28923 text: true 28924 } 28925 }, 28926 spacing: { 28927 margin: true, 28928 padding: true, 28929 __experimentalDefaultControls: { 28930 margin: false, 28931 padding: false 28932 } 28933 }, 28934 __unstablePasteTextInline: true, 28935 __experimentalSelector: 'ol,ul', 28936 __experimentalSlashInserter: true 28937 }, 28938 isEligible({ 28939 type 28940 }) { 28941 return !!type; 28942 }, 28943 save({ 28944 attributes 28945 }) { 28946 const { 28947 ordered, 28948 type, 28949 reversed, 28950 start 28951 } = attributes; 28952 const TagName = ordered ? 'ol' : 'ul'; 28953 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 28954 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 28955 type, 28956 reversed, 28957 start 28958 }), 28959 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 28960 }); 28961 }, 28962 migrate: migrateTypeToInlineStyle 28963 }; 28964 28965 // Version without block support 'className: true'. 28966 const list_deprecated_v3 = { 28967 attributes: { 28968 ordered: { 28969 type: 'boolean', 28970 default: false, 28971 role: 'content' 28972 }, 28973 values: { 28974 type: 'string', 28975 source: 'html', 28976 selector: 'ol,ul', 28977 multiline: 'li', 28978 __unstableMultilineWrapperTags: ['ol', 'ul'], 28979 default: '', 28980 role: 'content' 28981 }, 28982 type: { 28983 type: 'string' 28984 }, 28985 start: { 28986 type: 'number' 28987 }, 28988 reversed: { 28989 type: 'boolean' 28990 }, 28991 placeholder: { 28992 type: 'string' 28993 } 28994 }, 28995 supports: { 28996 anchor: true, 28997 className: false, 28998 typography: { 28999 fontSize: true, 29000 lineHeight: true, 29001 __experimentalFontFamily: true, 29002 __experimentalFontWeight: true, 29003 __experimentalFontStyle: true, 29004 __experimentalTextTransform: true, 29005 __experimentalTextDecoration: true, 29006 __experimentalLetterSpacing: true, 29007 __experimentalDefaultControls: { 29008 fontSize: true 29009 } 29010 }, 29011 color: { 29012 gradients: true, 29013 link: true, 29014 __experimentalDefaultControls: { 29015 background: true, 29016 text: true 29017 } 29018 }, 29019 spacing: { 29020 margin: true, 29021 padding: true, 29022 __experimentalDefaultControls: { 29023 margin: false, 29024 padding: false 29025 } 29026 }, 29027 __unstablePasteTextInline: true, 29028 __experimentalSelector: 'ol,ul', 29029 __experimentalOnMerge: 'true', 29030 __experimentalSlashInserter: true 29031 }, 29032 save({ 29033 attributes 29034 }) { 29035 const { 29036 ordered, 29037 type, 29038 reversed, 29039 start 29040 } = attributes; 29041 const TagName = ordered ? 'ol' : 'ul'; 29042 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 29043 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 29044 reversed, 29045 start, 29046 style: { 29047 listStyleType: ordered && type !== 'decimal' ? type : undefined 29048 } 29049 }), 29050 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 29051 }); 29052 } 29053 }; 29054 29055 /** 29056 * New deprecations need to be placed first 29057 * for them to have higher priority. 29058 * 29059 * Old deprecations may need to be updated as well. 29060 * 29061 * See block-deprecation.md 29062 */ 29063 /* harmony default export */ const list_deprecated = ([list_deprecated_v3, list_deprecated_v2, list_deprecated_v1, v0]); 29064 29065 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/format-outdent-rtl.js 29066 /** 29067 * WordPress dependencies 29068 */ 29069 29070 29071 const formatOutdentRTL = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 29072 xmlns: "http://www.w3.org/2000/svg", 29073 viewBox: "0 0 24 24", 29074 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 29075 d: "M20 5.5H4V4H20V5.5ZM12 12.5H4V11H12V12.5ZM20 20V18.5H4V20H20ZM15.4697 14.9697L18.4393 12L15.4697 9.03033L16.5303 7.96967L20.0303 11.4697L20.5607 12L20.0303 12.5303L16.5303 16.0303L15.4697 14.9697Z" 29076 }) 29077 }); 29078 /* harmony default export */ const format_outdent_rtl = (formatOutdentRTL); 29079 29080 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/format-outdent.js 29081 /** 29082 * WordPress dependencies 29083 */ 29084 29085 29086 const formatOutdent = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 29087 xmlns: "http://www.w3.org/2000/svg", 29088 viewBox: "0 0 24 24", 29089 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 29090 d: "M4 7.2v1.5h16V7.2H4zm8 8.6h8v-1.5h-8v1.5zm-4-4.6l-4 4 4 4 1-1-3-3 3-3-1-1z" 29091 }) 29092 }); 29093 /* harmony default export */ const format_outdent = (formatOutdent); 29094 29095 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/format-list-bullets-rtl.js 29096 /** 29097 * WordPress dependencies 29098 */ 29099 29100 29101 const formatListBulletsRTL = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 29102 xmlns: "http://www.w3.org/2000/svg", 29103 viewBox: "0 0 24 24", 29104 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 29105 d: "M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z" 29106 }) 29107 }); 29108 /* harmony default export */ const format_list_bullets_rtl = (formatListBulletsRTL); 29109 29110 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/format-list-bullets.js 29111 /** 29112 * WordPress dependencies 29113 */ 29114 29115 29116 const formatListBullets = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 29117 xmlns: "http://www.w3.org/2000/svg", 29118 viewBox: "0 0 24 24", 29119 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 29120 d: "M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" 29121 }) 29122 }); 29123 /* harmony default export */ const format_list_bullets = (formatListBullets); 29124 29125 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/format-list-numbered-rtl.js 29126 /** 29127 * WordPress dependencies 29128 */ 29129 29130 29131 const formatListNumberedRTL = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 29132 xmlns: "http://www.w3.org/2000/svg", 29133 viewBox: "0 0 24 24", 29134 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 29135 d: "M3.8 15.8h8.9v-1.5H3.8v1.5zm0-7h8.9V7.2H3.8v1.6zm14.7-2.1V10h1V5.3l-2.2.7.3 1 .9-.3zm1.2 6.1c-.5-.6-1.2-.5-1.7-.4-.3.1-.5.2-.7.3l.1 1.1c.2-.2.5-.4.8-.5.3-.1.6 0 .7.1.2.3 0 .8-.2 1.1-.5.8-.9 1.6-1.4 2.5H20v-1h-.9c.3-.6.8-1.4.9-2.1 0-.3 0-.8-.3-1.1z" 29136 }) 29137 }); 29138 /* harmony default export */ const format_list_numbered_rtl = (formatListNumberedRTL); 29139 29140 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/format-list-numbered.js 29141 /** 29142 * WordPress dependencies 29143 */ 29144 29145 29146 const formatListNumbered = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 29147 xmlns: "http://www.w3.org/2000/svg", 29148 viewBox: "0 0 24 24", 29149 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 29150 d: "M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM5 6.7V10h1V5.3L3.8 6l.4 1 .8-.3zm-.4 5.7c-.3.1-.5.2-.7.3l.1 1.1c.2-.2.5-.4.8-.5.3-.1.6 0 .7.1.2.3 0 .8-.2 1.1-.5.8-.9 1.6-1.4 2.5h2.7v-1h-1c.3-.6.8-1.4.9-2.1.1-.3 0-.8-.2-1.1-.5-.6-1.3-.5-1.7-.4z" 29151 }) 29152 }); 29153 /* harmony default export */ const format_list_numbered = (formatListNumbered); 29154 29155 ;// CONCATENATED MODULE: external ["wp","deprecated"] 29156 const external_wp_deprecated_namespaceObject = window["wp"]["deprecated"]; 29157 var external_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_wp_deprecated_namespaceObject); 29158 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list/ordered-list-settings.js 29159 /** 29160 * WordPress dependencies 29161 */ 29162 29163 29164 29165 29166 29167 const OrderedListSettings = ({ 29168 setAttributes, 29169 reversed, 29170 start, 29171 type 29172 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 29173 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 29174 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 29175 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 29176 __next40pxDefaultSize: true, 29177 __nextHasNoMarginBottom: true, 29178 label: (0,external_wp_i18n_namespaceObject.__)('List style'), 29179 options: [{ 29180 label: (0,external_wp_i18n_namespaceObject.__)('Numbers'), 29181 value: 'decimal' 29182 }, { 29183 label: (0,external_wp_i18n_namespaceObject.__)('Uppercase letters'), 29184 value: 'upper-alpha' 29185 }, { 29186 label: (0,external_wp_i18n_namespaceObject.__)('Lowercase letters'), 29187 value: 'lower-alpha' 29188 }, { 29189 label: (0,external_wp_i18n_namespaceObject.__)('Uppercase Roman numerals'), 29190 value: 'upper-roman' 29191 }, { 29192 label: (0,external_wp_i18n_namespaceObject.__)('Lowercase Roman numerals'), 29193 value: 'lower-roman' 29194 }], 29195 value: type, 29196 onChange: newValue => setAttributes({ 29197 type: newValue 29198 }) 29199 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 29200 __next40pxDefaultSize: true, 29201 __nextHasNoMarginBottom: true, 29202 label: (0,external_wp_i18n_namespaceObject.__)('Start value'), 29203 type: "number", 29204 onChange: value => { 29205 const int = parseInt(value, 10); 29206 setAttributes({ 29207 // It should be possible to unset the value, 29208 // e.g. with an empty string. 29209 start: isNaN(int) ? undefined : int 29210 }); 29211 }, 29212 value: Number.isInteger(start) ? start.toString(10) : '', 29213 step: "1" 29214 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 29215 __nextHasNoMarginBottom: true, 29216 label: (0,external_wp_i18n_namespaceObject.__)('Reverse order'), 29217 checked: reversed || false, 29218 onChange: value => { 29219 setAttributes({ 29220 // Unset the attribute if not reversed. 29221 reversed: value || undefined 29222 }); 29223 } 29224 })] 29225 }) 29226 }); 29227 /* harmony default export */ const ordered_list_settings = (OrderedListSettings); 29228 29229 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list/tag-name.js 29230 /** 29231 * WordPress dependencies 29232 */ 29233 29234 29235 function TagName(props, ref) { 29236 const { 29237 ordered, 29238 ...extraProps 29239 } = props; 29240 const Tag = ordered ? 'ol' : 'ul'; 29241 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 29242 ref: ref, 29243 ...extraProps 29244 }); 29245 } 29246 /* harmony default export */ const tag_name = ((0,external_wp_element_namespaceObject.forwardRef)(TagName)); 29247 29248 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list/edit.js 29249 /** 29250 * WordPress dependencies 29251 */ 29252 29253 29254 29255 29256 29257 29258 29259 29260 29261 /** 29262 * Internal dependencies 29263 */ 29264 29265 29266 29267 29268 29269 29270 const list_edit_DEFAULT_BLOCK = { 29271 name: 'core/list-item' 29272 }; 29273 const list_edit_TEMPLATE = [['core/list-item']]; 29274 const NATIVE_MARGIN_SPACING = 8; 29275 29276 /** 29277 * At the moment, deprecations don't handle create blocks from attributes 29278 * (like when using CPT templates). For this reason, this hook is necessary 29279 * to avoid breaking templates using the old list block format. 29280 * 29281 * @param {Object} attributes Block attributes. 29282 * @param {string} clientId Block client ID. 29283 */ 29284 function useMigrateOnLoad(attributes, clientId) { 29285 const registry = (0,external_wp_data_namespaceObject.useRegistry)(); 29286 const { 29287 updateBlockAttributes, 29288 replaceInnerBlocks 29289 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 29290 (0,external_wp_element_namespaceObject.useEffect)(() => { 29291 // As soon as the block is loaded, migrate it to the new version. 29292 29293 if (!attributes.values) { 29294 return; 29295 } 29296 const [newAttributes, newInnerBlocks] = migrateToListV2(attributes); 29297 external_wp_deprecated_default()('Value attribute on the list block', { 29298 since: '6.0', 29299 version: '6.5', 29300 alternative: 'inner blocks' 29301 }); 29302 registry.batch(() => { 29303 updateBlockAttributes(clientId, newAttributes); 29304 replaceInnerBlocks(clientId, newInnerBlocks); 29305 }); 29306 }, [attributes.values]); 29307 } 29308 function useOutdentList(clientId) { 29309 const { 29310 replaceBlocks, 29311 selectionChange 29312 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 29313 const { 29314 getBlockRootClientId, 29315 getBlockAttributes, 29316 getBlock 29317 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 29318 return (0,external_wp_element_namespaceObject.useCallback)(() => { 29319 const parentBlockId = getBlockRootClientId(clientId); 29320 const parentBlockAttributes = getBlockAttributes(parentBlockId); 29321 // Create a new parent block without the inner blocks. 29322 const newParentBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/list-item', parentBlockAttributes); 29323 const { 29324 innerBlocks 29325 } = getBlock(clientId); 29326 // Replace the parent block with a new parent block without inner blocks, 29327 // and make the inner blocks siblings of the parent. 29328 replaceBlocks([parentBlockId], [newParentBlock, ...innerBlocks]); 29329 // Select the last child of the list being outdent. 29330 selectionChange(innerBlocks[innerBlocks.length - 1].clientId); 29331 }, [clientId]); 29332 } 29333 function IndentUI({ 29334 clientId 29335 }) { 29336 const outdentList = useOutdentList(clientId); 29337 const canOutdent = (0,external_wp_data_namespaceObject.useSelect)(select => { 29338 const { 29339 getBlockRootClientId, 29340 getBlockName 29341 } = select(external_wp_blockEditor_namespaceObject.store); 29342 return getBlockName(getBlockRootClientId(clientId)) === 'core/list-item'; 29343 }, [clientId]); 29344 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 29345 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 29346 icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? format_outdent_rtl : format_outdent, 29347 title: (0,external_wp_i18n_namespaceObject.__)('Outdent'), 29348 description: (0,external_wp_i18n_namespaceObject.__)('Outdent list item'), 29349 disabled: !canOutdent, 29350 onClick: outdentList 29351 }) 29352 }); 29353 } 29354 function list_edit_Edit({ 29355 attributes, 29356 setAttributes, 29357 clientId, 29358 style 29359 }) { 29360 const { 29361 ordered, 29362 type, 29363 reversed, 29364 start 29365 } = attributes; 29366 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 29367 style: { 29368 ...(external_wp_element_namespaceObject.Platform.isNative && style), 29369 listStyleType: ordered && type !== 'decimal' ? type : undefined 29370 } 29371 }); 29372 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 29373 defaultBlock: list_edit_DEFAULT_BLOCK, 29374 directInsert: true, 29375 template: list_edit_TEMPLATE, 29376 templateLock: false, 29377 templateInsertUpdatesSelection: true, 29378 ...(external_wp_element_namespaceObject.Platform.isNative && { 29379 marginVertical: NATIVE_MARGIN_SPACING, 29380 marginHorizontal: NATIVE_MARGIN_SPACING, 29381 renderAppender: false 29382 }), 29383 __experimentalCaptureToolbars: true 29384 }); 29385 useMigrateOnLoad(attributes, clientId); 29386 const controls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 29387 group: "block", 29388 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 29389 icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? format_list_bullets_rtl : format_list_bullets, 29390 title: (0,external_wp_i18n_namespaceObject.__)('Unordered'), 29391 description: (0,external_wp_i18n_namespaceObject.__)('Convert to unordered list'), 29392 isActive: ordered === false, 29393 onClick: () => { 29394 setAttributes({ 29395 ordered: false 29396 }); 29397 } 29398 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 29399 icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? format_list_numbered_rtl : format_list_numbered, 29400 title: (0,external_wp_i18n_namespaceObject.__)('Ordered'), 29401 description: (0,external_wp_i18n_namespaceObject.__)('Convert to ordered list'), 29402 isActive: ordered === true, 29403 onClick: () => { 29404 setAttributes({ 29405 ordered: true 29406 }); 29407 } 29408 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(IndentUI, { 29409 clientId: clientId 29410 })] 29411 }); 29412 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 29413 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(tag_name, { 29414 ordered: ordered, 29415 reversed: reversed, 29416 start: start, 29417 ...innerBlocksProps 29418 }), controls, ordered && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ordered_list_settings, { 29419 setAttributes, 29420 reversed, 29421 start, 29422 type 29423 })] 29424 }); 29425 } 29426 29427 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list/save.js 29428 /** 29429 * WordPress dependencies 29430 */ 29431 29432 29433 function list_save_save({ 29434 attributes 29435 }) { 29436 const { 29437 ordered, 29438 type, 29439 reversed, 29440 start 29441 } = attributes; 29442 const TagName = ordered ? 'ol' : 'ul'; 29443 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 29444 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 29445 reversed, 29446 start, 29447 style: { 29448 listStyleType: ordered && type !== 'decimal' ? type : undefined 29449 } 29450 }), 29451 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 29452 }); 29453 } 29454 29455 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list/transforms.js 29456 /** 29457 * WordPress dependencies 29458 */ 29459 29460 29461 29462 /** 29463 * Internal dependencies 29464 */ 29465 29466 function getListContentSchema({ 29467 phrasingContentSchema 29468 }) { 29469 const listContentSchema = { 29470 ...phrasingContentSchema, 29471 ul: {}, 29472 ol: { 29473 attributes: ['type', 'start', 'reversed'] 29474 } 29475 }; 29476 29477 // Recursion is needed. 29478 // Possible: ul > li > ul. 29479 // Impossible: ul > ul. 29480 ['ul', 'ol'].forEach(tag => { 29481 listContentSchema[tag].children = { 29482 li: { 29483 children: listContentSchema 29484 } 29485 }; 29486 }); 29487 return listContentSchema; 29488 } 29489 function getListContentFlat(blocks) { 29490 return blocks.flatMap(({ 29491 name, 29492 attributes, 29493 innerBlocks = [] 29494 }) => { 29495 if (name === 'core/list-item') { 29496 return [attributes.content, ...getListContentFlat(innerBlocks)]; 29497 } 29498 return getListContentFlat(innerBlocks); 29499 }); 29500 } 29501 const list_transforms_transforms = { 29502 from: [{ 29503 type: 'block', 29504 isMultiBlock: true, 29505 blocks: ['core/paragraph', 'core/heading'], 29506 transform: blockAttributes => { 29507 let childBlocks = []; 29508 if (blockAttributes.length > 1) { 29509 childBlocks = blockAttributes.map(({ 29510 content 29511 }) => { 29512 return (0,external_wp_blocks_namespaceObject.createBlock)('core/list-item', { 29513 content 29514 }); 29515 }); 29516 } else if (blockAttributes.length === 1) { 29517 const value = (0,external_wp_richText_namespaceObject.create)({ 29518 html: blockAttributes[0].content 29519 }); 29520 childBlocks = (0,external_wp_richText_namespaceObject.split)(value, '\n').map(result => { 29521 return (0,external_wp_blocks_namespaceObject.createBlock)('core/list-item', { 29522 content: (0,external_wp_richText_namespaceObject.toHTMLString)({ 29523 value: result 29524 }) 29525 }); 29526 }); 29527 } 29528 return (0,external_wp_blocks_namespaceObject.createBlock)('core/list', { 29529 anchor: blockAttributes.anchor 29530 }, childBlocks); 29531 } 29532 }, { 29533 type: 'raw', 29534 selector: 'ol,ul', 29535 schema: args => ({ 29536 ol: getListContentSchema(args).ol, 29537 ul: getListContentSchema(args).ul 29538 }), 29539 transform: createListBlockFromDOMElement 29540 }, ...['*', '-'].map(prefix => ({ 29541 type: 'prefix', 29542 prefix, 29543 transform(content) { 29544 return (0,external_wp_blocks_namespaceObject.createBlock)('core/list', {}, [(0,external_wp_blocks_namespaceObject.createBlock)('core/list-item', { 29545 content 29546 })]); 29547 } 29548 })), ...['1.', '1)'].map(prefix => ({ 29549 type: 'prefix', 29550 prefix, 29551 transform(content) { 29552 return (0,external_wp_blocks_namespaceObject.createBlock)('core/list', { 29553 ordered: true 29554 }, [(0,external_wp_blocks_namespaceObject.createBlock)('core/list-item', { 29555 content 29556 })]); 29557 } 29558 }))], 29559 to: [...['core/paragraph', 'core/heading'].map(block => ({ 29560 type: 'block', 29561 blocks: [block], 29562 transform: (_attributes, childBlocks) => { 29563 return getListContentFlat(childBlocks).map(content => (0,external_wp_blocks_namespaceObject.createBlock)(block, { 29564 content 29565 })); 29566 } 29567 }))] 29568 }; 29569 /* harmony default export */ const list_transforms = (list_transforms_transforms); 29570 29571 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list/index.js 29572 /** 29573 * WordPress dependencies 29574 */ 29575 29576 29577 29578 /** 29579 * Internal dependencies 29580 */ 29581 29582 29583 29584 const list_metadata = { 29585 $schema: "https://schemas.wp.org/trunk/block.json", 29586 apiVersion: 3, 29587 name: "core/list", 29588 title: "List", 29589 category: "text", 29590 allowedBlocks: ["core/list-item"], 29591 description: "An organized collection of items displayed in a specific order.", 29592 keywords: ["bullet list", "ordered list", "numbered list"], 29593 textdomain: "default", 29594 attributes: { 29595 ordered: { 29596 type: "boolean", 29597 "default": false, 29598 role: "content" 29599 }, 29600 values: { 29601 type: "string", 29602 source: "html", 29603 selector: "ol,ul", 29604 multiline: "li", 29605 __unstableMultilineWrapperTags: ["ol", "ul"], 29606 "default": "", 29607 role: "content" 29608 }, 29609 type: { 29610 type: "string" 29611 }, 29612 start: { 29613 type: "number" 29614 }, 29615 reversed: { 29616 type: "boolean" 29617 }, 29618 placeholder: { 29619 type: "string" 29620 } 29621 }, 29622 supports: { 29623 anchor: true, 29624 html: false, 29625 __experimentalBorder: { 29626 color: true, 29627 radius: true, 29628 style: true, 29629 width: true 29630 }, 29631 typography: { 29632 fontSize: true, 29633 lineHeight: true, 29634 __experimentalFontFamily: true, 29635 __experimentalFontWeight: true, 29636 __experimentalFontStyle: true, 29637 __experimentalTextTransform: true, 29638 __experimentalTextDecoration: true, 29639 __experimentalLetterSpacing: true, 29640 __experimentalDefaultControls: { 29641 fontSize: true 29642 } 29643 }, 29644 color: { 29645 gradients: true, 29646 link: true, 29647 __experimentalDefaultControls: { 29648 background: true, 29649 text: true 29650 } 29651 }, 29652 spacing: { 29653 margin: true, 29654 padding: true, 29655 __experimentalDefaultControls: { 29656 margin: false, 29657 padding: false 29658 } 29659 }, 29660 __unstablePasteTextInline: true, 29661 __experimentalOnMerge: true, 29662 __experimentalSlashInserter: true, 29663 interactivity: { 29664 clientNavigation: true 29665 } 29666 }, 29667 selectors: { 29668 border: ".wp-block-list:not(.wp-block-list .wp-block-list)" 29669 }, 29670 editorStyle: "wp-block-list-editor", 29671 style: "wp-block-list" 29672 }; 29673 29674 29675 const { 29676 name: list_name 29677 } = list_metadata; 29678 29679 const list_settings = { 29680 icon: library_list, 29681 example: { 29682 innerBlocks: [{ 29683 name: 'core/list-item', 29684 attributes: { 29685 content: (0,external_wp_i18n_namespaceObject.__)('Alice.') 29686 } 29687 }, { 29688 name: 'core/list-item', 29689 attributes: { 29690 content: (0,external_wp_i18n_namespaceObject.__)('The White Rabbit.') 29691 } 29692 }, { 29693 name: 'core/list-item', 29694 attributes: { 29695 content: (0,external_wp_i18n_namespaceObject.__)('The Cheshire Cat.') 29696 } 29697 }, { 29698 name: 'core/list-item', 29699 attributes: { 29700 content: (0,external_wp_i18n_namespaceObject.__)('The Mad Hatter.') 29701 } 29702 }, { 29703 name: 'core/list-item', 29704 attributes: { 29705 content: (0,external_wp_i18n_namespaceObject.__)('The Queen of Hearts.') 29706 } 29707 }] 29708 }, 29709 transforms: list_transforms, 29710 edit: list_edit_Edit, 29711 save: list_save_save, 29712 deprecated: list_deprecated 29713 }; 29714 29715 const list_init = () => initBlock({ 29716 name: list_name, 29717 metadata: list_metadata, 29718 settings: list_settings 29719 }); 29720 29721 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/list-item.js 29722 /** 29723 * WordPress dependencies 29724 */ 29725 29726 29727 const listItem = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 29728 xmlns: "http://www.w3.org/2000/svg", 29729 viewBox: "0 0 24 24", 29730 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 29731 d: "M12 11v1.5h8V11h-8zm-6-1c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" 29732 }) 29733 }); 29734 /* harmony default export */ const list_item = (listItem); 29735 29736 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/format-indent-rtl.js 29737 /** 29738 * WordPress dependencies 29739 */ 29740 29741 29742 const formatIndentRTL = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 29743 xmlns: "http://www.w3.org/2000/svg", 29744 viewBox: "0 0 24 24", 29745 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 29746 d: "M20 5.5H4V4H20V5.5ZM12 12.5H4V11H12V12.5ZM20 20V18.5H4V20H20ZM20.0303 9.03033L17.0607 12L20.0303 14.9697L18.9697 16.0303L15.4697 12.5303L14.9393 12L15.4697 11.4697L18.9697 7.96967L20.0303 9.03033Z" 29747 }) 29748 }); 29749 /* harmony default export */ const format_indent_rtl = (formatIndentRTL); 29750 29751 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/format-indent.js 29752 /** 29753 * WordPress dependencies 29754 */ 29755 29756 29757 const formatIndent = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 29758 xmlns: "http://www.w3.org/2000/svg", 29759 viewBox: "0 0 24 24", 29760 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 29761 d: "M4 7.2v1.5h16V7.2H4zm8 8.6h8v-1.5h-8v1.5zm-8-3.5l3 3-3 3 1 1 4-4-4-4-1 1z" 29762 }) 29763 }); 29764 /* harmony default export */ const format_indent = (formatIndent); 29765 29766 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list-item/hooks/use-indent-list-item.js 29767 /** 29768 * WordPress dependencies 29769 */ 29770 29771 29772 29773 29774 function useIndentListItem(clientId) { 29775 const { 29776 replaceBlocks, 29777 selectionChange, 29778 multiSelect 29779 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 29780 const { 29781 getBlock, 29782 getPreviousBlockClientId, 29783 getSelectionStart, 29784 getSelectionEnd, 29785 hasMultiSelection, 29786 getMultiSelectedBlockClientIds 29787 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 29788 return (0,external_wp_element_namespaceObject.useCallback)(() => { 29789 const _hasMultiSelection = hasMultiSelection(); 29790 const clientIds = _hasMultiSelection ? getMultiSelectedBlockClientIds() : [clientId]; 29791 const clonedBlocks = clientIds.map(_clientId => (0,external_wp_blocks_namespaceObject.cloneBlock)(getBlock(_clientId))); 29792 const previousSiblingId = getPreviousBlockClientId(clientId); 29793 const newListItem = (0,external_wp_blocks_namespaceObject.cloneBlock)(getBlock(previousSiblingId)); 29794 // If the sibling has no innerBlocks, create a new `list` block. 29795 if (!newListItem.innerBlocks?.length) { 29796 newListItem.innerBlocks = [(0,external_wp_blocks_namespaceObject.createBlock)('core/list')]; 29797 } 29798 // A list item usually has one `list`, but it's possible to have 29799 // more. So we need to preserve the previous `list` blocks and 29800 // merge the new blocks to the last `list`. 29801 newListItem.innerBlocks[newListItem.innerBlocks.length - 1].innerBlocks.push(...clonedBlocks); 29802 29803 // We get the selection start/end here, because when 29804 // we replace blocks, the selection is updated too. 29805 const selectionStart = getSelectionStart(); 29806 const selectionEnd = getSelectionEnd(); 29807 // Replace the previous sibling of the block being indented and the indented blocks, 29808 // with a new block whose attributes are equal to the ones of the previous sibling and 29809 // whose descendants are the children of the previous sibling, followed by the indented blocks. 29810 replaceBlocks([previousSiblingId, ...clientIds], [newListItem]); 29811 if (!_hasMultiSelection) { 29812 selectionChange(clonedBlocks[0].clientId, selectionEnd.attributeKey, selectionEnd.clientId === selectionStart.clientId ? selectionStart.offset : selectionEnd.offset, selectionEnd.offset); 29813 } else { 29814 multiSelect(clonedBlocks[0].clientId, clonedBlocks[clonedBlocks.length - 1].clientId); 29815 } 29816 return true; 29817 }, [clientId]); 29818 } 29819 29820 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list-item/hooks/use-outdent-list-item.js 29821 /** 29822 * WordPress dependencies 29823 */ 29824 29825 29826 29827 29828 function useOutdentListItem() { 29829 const registry = (0,external_wp_data_namespaceObject.useRegistry)(); 29830 const { 29831 moveBlocksToPosition, 29832 removeBlock, 29833 insertBlock, 29834 updateBlockListSettings 29835 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 29836 const { 29837 getBlockRootClientId, 29838 getBlockName, 29839 getBlockOrder, 29840 getBlockIndex, 29841 getSelectedBlockClientIds, 29842 getBlock, 29843 getBlockListSettings 29844 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 29845 function getParentListItemId(id) { 29846 const listId = getBlockRootClientId(id); 29847 const parentListItemId = getBlockRootClientId(listId); 29848 if (!parentListItemId) { 29849 return; 29850 } 29851 if (getBlockName(parentListItemId) !== 'core/list-item') { 29852 return; 29853 } 29854 return parentListItemId; 29855 } 29856 return (0,external_wp_element_namespaceObject.useCallback)((clientIds = getSelectedBlockClientIds()) => { 29857 if (!Array.isArray(clientIds)) { 29858 clientIds = [clientIds]; 29859 } 29860 if (!clientIds.length) { 29861 return; 29862 } 29863 const firstClientId = clientIds[0]; 29864 29865 // Can't outdent if it's not a list item. 29866 if (getBlockName(firstClientId) !== 'core/list-item') { 29867 return; 29868 } 29869 const parentListItemId = getParentListItemId(firstClientId); 29870 29871 // Can't outdent if it's at the top level. 29872 if (!parentListItemId) { 29873 return; 29874 } 29875 const parentListId = getBlockRootClientId(firstClientId); 29876 const lastClientId = clientIds[clientIds.length - 1]; 29877 const order = getBlockOrder(parentListId); 29878 const followingListItems = order.slice(getBlockIndex(lastClientId) + 1); 29879 registry.batch(() => { 29880 if (followingListItems.length) { 29881 let nestedListId = getBlockOrder(firstClientId)[0]; 29882 if (!nestedListId) { 29883 const nestedListBlock = (0,external_wp_blocks_namespaceObject.cloneBlock)(getBlock(parentListId), {}, []); 29884 nestedListId = nestedListBlock.clientId; 29885 insertBlock(nestedListBlock, 0, firstClientId, false); 29886 // Immediately update the block list settings, otherwise 29887 // blocks can't be moved here due to canInsert checks. 29888 updateBlockListSettings(nestedListId, getBlockListSettings(parentListId)); 29889 } 29890 moveBlocksToPosition(followingListItems, parentListId, nestedListId); 29891 } 29892 moveBlocksToPosition(clientIds, parentListId, getBlockRootClientId(parentListItemId), getBlockIndex(parentListItemId) + 1); 29893 if (!getBlockOrder(parentListId).length) { 29894 const shouldSelectParent = false; 29895 removeBlock(parentListId, shouldSelectParent); 29896 } 29897 }); 29898 return true; 29899 }, []); 29900 } 29901 29902 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list-item/hooks/use-enter.js 29903 /** 29904 * WordPress dependencies 29905 */ 29906 29907 29908 29909 29910 29911 29912 29913 /** 29914 * Internal dependencies 29915 */ 29916 29917 function use_enter_useEnter(props) { 29918 const { 29919 replaceBlocks, 29920 selectionChange 29921 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 29922 const { 29923 getBlock, 29924 getBlockRootClientId, 29925 getBlockIndex, 29926 getBlockName 29927 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 29928 const propsRef = (0,external_wp_element_namespaceObject.useRef)(props); 29929 propsRef.current = props; 29930 const outdentListItem = useOutdentListItem(); 29931 return (0,external_wp_compose_namespaceObject.useRefEffect)(element => { 29932 function onKeyDown(event) { 29933 if (event.defaultPrevented || event.keyCode !== external_wp_keycodes_namespaceObject.ENTER) { 29934 return; 29935 } 29936 const { 29937 content, 29938 clientId 29939 } = propsRef.current; 29940 if (content.length) { 29941 return; 29942 } 29943 event.preventDefault(); 29944 const canOutdent = getBlockName(getBlockRootClientId(getBlockRootClientId(propsRef.current.clientId))) === 'core/list-item'; 29945 if (canOutdent) { 29946 outdentListItem(); 29947 return; 29948 } 29949 // Here we are in top level list so we need to split. 29950 const topParentListBlock = getBlock(getBlockRootClientId(clientId)); 29951 const blockIndex = getBlockIndex(clientId); 29952 const head = (0,external_wp_blocks_namespaceObject.cloneBlock)({ 29953 ...topParentListBlock, 29954 innerBlocks: topParentListBlock.innerBlocks.slice(0, blockIndex) 29955 }); 29956 const middle = (0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getDefaultBlockName)()); 29957 // Last list item might contain a `list` block innerBlock 29958 // In that case append remaining innerBlocks blocks. 29959 const after = [...(topParentListBlock.innerBlocks[blockIndex].innerBlocks[0]?.innerBlocks || []), ...topParentListBlock.innerBlocks.slice(blockIndex + 1)]; 29960 const tail = after.length ? [(0,external_wp_blocks_namespaceObject.cloneBlock)({ 29961 ...topParentListBlock, 29962 innerBlocks: after 29963 })] : []; 29964 replaceBlocks(topParentListBlock.clientId, [head, middle, ...tail], 1); 29965 // We manually change the selection here because we are replacing 29966 // a different block than the selected one. 29967 selectionChange(middle.clientId); 29968 } 29969 element.addEventListener('keydown', onKeyDown); 29970 return () => { 29971 element.removeEventListener('keydown', onKeyDown); 29972 }; 29973 }, []); 29974 } 29975 29976 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list-item/hooks/use-space.js 29977 /** 29978 * WordPress dependencies 29979 */ 29980 29981 29982 29983 29984 29985 /** 29986 * Internal dependencies 29987 */ 29988 29989 29990 function useSpace(clientId) { 29991 const { 29992 getSelectionStart, 29993 getSelectionEnd, 29994 getBlockIndex 29995 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 29996 const indentListItem = useIndentListItem(clientId); 29997 const outdentListItem = useOutdentListItem(); 29998 return (0,external_wp_compose_namespaceObject.useRefEffect)(element => { 29999 function onKeyDown(event) { 30000 const { 30001 keyCode, 30002 shiftKey, 30003 altKey, 30004 metaKey, 30005 ctrlKey 30006 } = event; 30007 if (event.defaultPrevented || keyCode !== external_wp_keycodes_namespaceObject.SPACE && keyCode !== external_wp_keycodes_namespaceObject.TAB || 30008 // Only override when no modifiers are pressed. 30009 altKey || metaKey || ctrlKey) { 30010 return; 30011 } 30012 const selectionStart = getSelectionStart(); 30013 const selectionEnd = getSelectionEnd(); 30014 if (selectionStart.offset === 0 && selectionEnd.offset === 0) { 30015 if (shiftKey) { 30016 // Note that backspace behaviour in defined in onMerge. 30017 if (keyCode === external_wp_keycodes_namespaceObject.TAB) { 30018 if (outdentListItem()) { 30019 event.preventDefault(); 30020 } 30021 } 30022 } else if (getBlockIndex(clientId) !== 0) { 30023 if (indentListItem()) { 30024 event.preventDefault(); 30025 } 30026 } 30027 } 30028 } 30029 element.addEventListener('keydown', onKeyDown); 30030 return () => { 30031 element.removeEventListener('keydown', onKeyDown); 30032 }; 30033 }, [clientId, indentListItem]); 30034 } 30035 30036 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list-item/hooks/use-merge.js 30037 /** 30038 * WordPress dependencies 30039 */ 30040 30041 30042 30043 /** 30044 * Internal dependencies 30045 */ 30046 30047 function useMerge(clientId, onMerge) { 30048 const registry = (0,external_wp_data_namespaceObject.useRegistry)(); 30049 const { 30050 getPreviousBlockClientId, 30051 getNextBlockClientId, 30052 getBlockOrder, 30053 getBlockRootClientId, 30054 getBlockName 30055 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 30056 const { 30057 mergeBlocks, 30058 moveBlocksToPosition 30059 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 30060 const outdentListItem = useOutdentListItem(); 30061 function getTrailingId(id) { 30062 const order = getBlockOrder(id); 30063 if (!order.length) { 30064 return id; 30065 } 30066 return getTrailingId(order[order.length - 1]); 30067 } 30068 function getParentListItemId(id) { 30069 const listId = getBlockRootClientId(id); 30070 const parentListItemId = getBlockRootClientId(listId); 30071 if (!parentListItemId) { 30072 return; 30073 } 30074 if (getBlockName(parentListItemId) !== 'core/list-item') { 30075 return; 30076 } 30077 return parentListItemId; 30078 } 30079 30080 /** 30081 * Return the next list item with respect to the given list item. If none, 30082 * return the next list item of the parent list item if it exists. 30083 * 30084 * @param {string} id A list item client ID. 30085 * @return {string?} The client ID of the next list item. 30086 */ 30087 function _getNextId(id) { 30088 const next = getNextBlockClientId(id); 30089 if (next) { 30090 return next; 30091 } 30092 const parentListItemId = getParentListItemId(id); 30093 if (!parentListItemId) { 30094 return; 30095 } 30096 return _getNextId(parentListItemId); 30097 } 30098 30099 /** 30100 * Given a client ID, return the client ID of the list item on the next 30101 * line, regardless of indentation level. 30102 * 30103 * @param {string} id The client ID of the current list item. 30104 * @return {string?} The client ID of the next list item. 30105 */ 30106 function getNextId(id) { 30107 const order = getBlockOrder(id); 30108 30109 // If the list item does not have a nested list, return the next list 30110 // item. 30111 if (!order.length) { 30112 return _getNextId(id); 30113 } 30114 30115 // Get the first list item in the nested list. 30116 return getBlockOrder(order[0])[0]; 30117 } 30118 return forward => { 30119 function mergeWithNested(clientIdA, clientIdB) { 30120 registry.batch(() => { 30121 // When merging a sub list item with a higher next list item, we 30122 // also need to move any nested list items. Check if there's a 30123 // listed list, and append its nested list items to the current 30124 // list. 30125 const [nestedListClientId] = getBlockOrder(clientIdB); 30126 if (nestedListClientId) { 30127 // If we are merging with the previous list item, and the 30128 // previous list item does not have nested list, move the 30129 // nested list to the previous list item. 30130 if (getPreviousBlockClientId(clientIdB) === clientIdA && !getBlockOrder(clientIdA).length) { 30131 moveBlocksToPosition([nestedListClientId], clientIdB, clientIdA); 30132 } else { 30133 moveBlocksToPosition(getBlockOrder(nestedListClientId), nestedListClientId, getBlockRootClientId(clientIdA)); 30134 } 30135 } 30136 mergeBlocks(clientIdA, clientIdB); 30137 }); 30138 } 30139 if (forward) { 30140 const nextBlockClientId = getNextId(clientId); 30141 if (!nextBlockClientId) { 30142 onMerge(forward); 30143 return; 30144 } 30145 if (getParentListItemId(nextBlockClientId)) { 30146 outdentListItem(nextBlockClientId); 30147 } else { 30148 mergeWithNested(clientId, nextBlockClientId); 30149 } 30150 } else { 30151 // Merging is only done from the top level. For lowel levels, the 30152 // list item is outdented instead. 30153 const previousBlockClientId = getPreviousBlockClientId(clientId); 30154 if (getParentListItemId(clientId)) { 30155 outdentListItem(clientId); 30156 } else if (previousBlockClientId) { 30157 const trailingId = getTrailingId(previousBlockClientId); 30158 mergeWithNested(trailingId, clientId); 30159 } else { 30160 onMerge(forward); 30161 } 30162 } 30163 }; 30164 } 30165 30166 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list-item/edit.js 30167 /** 30168 * WordPress dependencies 30169 */ 30170 30171 30172 30173 30174 30175 30176 30177 /** 30178 * Internal dependencies 30179 */ 30180 30181 30182 30183 30184 function edit_IndentUI({ 30185 clientId 30186 }) { 30187 const indentListItem = useIndentListItem(clientId); 30188 const outdentListItem = useOutdentListItem(); 30189 const { 30190 canIndent, 30191 canOutdent 30192 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 30193 const { 30194 getBlockIndex, 30195 getBlockRootClientId, 30196 getBlockName 30197 } = select(external_wp_blockEditor_namespaceObject.store); 30198 return { 30199 canIndent: getBlockIndex(clientId) > 0, 30200 canOutdent: getBlockName(getBlockRootClientId(getBlockRootClientId(clientId))) === 'core/list-item' 30201 }; 30202 }, [clientId]); 30203 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 30204 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 30205 icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? format_outdent_rtl : format_outdent, 30206 title: (0,external_wp_i18n_namespaceObject.__)('Outdent'), 30207 description: (0,external_wp_i18n_namespaceObject.__)('Outdent list item'), 30208 disabled: !canOutdent, 30209 onClick: () => outdentListItem() 30210 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 30211 icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? format_indent_rtl : format_indent, 30212 title: (0,external_wp_i18n_namespaceObject.__)('Indent'), 30213 description: (0,external_wp_i18n_namespaceObject.__)('Indent list item'), 30214 disabled: !canIndent, 30215 onClick: () => indentListItem() 30216 })] 30217 }); 30218 } 30219 function ListItemEdit({ 30220 attributes, 30221 setAttributes, 30222 clientId, 30223 mergeBlocks 30224 }) { 30225 const { 30226 placeholder, 30227 content 30228 } = attributes; 30229 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 30230 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 30231 renderAppender: false, 30232 __unstableDisableDropZone: true 30233 }); 30234 const useEnterRef = use_enter_useEnter({ 30235 content, 30236 clientId 30237 }); 30238 const useSpaceRef = useSpace(clientId); 30239 const onMerge = useMerge(clientId, mergeBlocks); 30240 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 30241 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("li", { 30242 ...innerBlocksProps, 30243 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 30244 ref: (0,external_wp_compose_namespaceObject.useMergeRefs)([useEnterRef, useSpaceRef]), 30245 identifier: "content", 30246 tagName: "div", 30247 onChange: nextContent => setAttributes({ 30248 content: nextContent 30249 }), 30250 value: content, 30251 "aria-label": (0,external_wp_i18n_namespaceObject.__)('List text'), 30252 placeholder: placeholder || (0,external_wp_i18n_namespaceObject.__)('List'), 30253 onMerge: onMerge 30254 }), innerBlocksProps.children] 30255 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 30256 group: "block", 30257 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(edit_IndentUI, { 30258 clientId: clientId 30259 }) 30260 })] 30261 }); 30262 } 30263 30264 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list-item/save.js 30265 /** 30266 * WordPress dependencies 30267 */ 30268 30269 30270 30271 function list_item_save_save({ 30272 attributes 30273 }) { 30274 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("li", { 30275 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 30276 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 30277 value: attributes.content 30278 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {})] 30279 }); 30280 } 30281 30282 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list-item/transforms.js 30283 /** 30284 * WordPress dependencies 30285 */ 30286 30287 const list_item_transforms_transforms = { 30288 to: [{ 30289 type: 'block', 30290 blocks: ['core/paragraph'], 30291 transform: (attributes, innerBlocks = []) => [(0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', attributes), ...innerBlocks.map(block => (0,external_wp_blocks_namespaceObject.cloneBlock)(block))] 30292 }] 30293 }; 30294 /* harmony default export */ const list_item_transforms = (list_item_transforms_transforms); 30295 30296 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/list-item/index.js 30297 /** 30298 * WordPress dependencies 30299 */ 30300 30301 30302 30303 /** 30304 * Internal dependencies 30305 */ 30306 30307 const list_item_metadata = { 30308 $schema: "https://schemas.wp.org/trunk/block.json", 30309 apiVersion: 3, 30310 name: "core/list-item", 30311 title: "List item", 30312 category: "text", 30313 parent: ["core/list"], 30314 allowedBlocks: ["core/list"], 30315 description: "An individual item within a list.", 30316 textdomain: "default", 30317 attributes: { 30318 placeholder: { 30319 type: "string" 30320 }, 30321 content: { 30322 type: "rich-text", 30323 source: "rich-text", 30324 selector: "li", 30325 role: "content" 30326 } 30327 }, 30328 supports: { 30329 anchor: true, 30330 className: false, 30331 splitting: true, 30332 __experimentalBorder: { 30333 color: true, 30334 radius: true, 30335 style: true, 30336 width: true 30337 }, 30338 color: { 30339 gradients: true, 30340 link: true, 30341 background: true, 30342 __experimentalDefaultControls: { 30343 text: true 30344 } 30345 }, 30346 spacing: { 30347 margin: true, 30348 padding: true, 30349 __experimentalDefaultControls: { 30350 margin: false, 30351 padding: false 30352 } 30353 }, 30354 typography: { 30355 fontSize: true, 30356 lineHeight: true, 30357 __experimentalFontFamily: true, 30358 __experimentalFontWeight: true, 30359 __experimentalFontStyle: true, 30360 __experimentalTextTransform: true, 30361 __experimentalTextDecoration: true, 30362 __experimentalLetterSpacing: true, 30363 __experimentalDefaultControls: { 30364 fontSize: true 30365 } 30366 }, 30367 interactivity: { 30368 clientNavigation: true 30369 } 30370 }, 30371 selectors: { 30372 root: ".wp-block-list > li", 30373 border: ".wp-block-list:not(.wp-block-list .wp-block-list) > li" 30374 } 30375 }; 30376 30377 30378 30379 30380 const { 30381 name: list_item_name 30382 } = list_item_metadata; 30383 30384 const list_item_settings = { 30385 icon: list_item, 30386 edit: ListItemEdit, 30387 save: list_item_save_save, 30388 merge(attributes, attributesToMerge) { 30389 return { 30390 ...attributes, 30391 content: attributes.content + attributesToMerge.content 30392 }; 30393 }, 30394 transforms: list_item_transforms, 30395 [unlock(external_wp_blockEditor_namespaceObject.privateApis).requiresWrapperOnCopy]: true 30396 }; 30397 const list_item_init = () => initBlock({ 30398 name: list_item_name, 30399 metadata: list_item_metadata, 30400 settings: list_item_settings 30401 }); 30402 30403 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/login.js 30404 /** 30405 * WordPress dependencies 30406 */ 30407 30408 30409 const login = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 30410 xmlns: "http://www.w3.org/2000/svg", 30411 viewBox: "0 0 24 24", 30412 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 30413 d: "M11 14.5l1.1 1.1 3-3 .5-.5-.6-.6-3-3-1 1 1.7 1.7H5v1.5h7.7L11 14.5zM16.8 5h-7c-1.1 0-2 .9-2 2v1.5h1.5V7c0-.3.2-.5.5-.5h7c.3 0 .5.2.5.5v10c0 .3-.2.5-.5.5h-7c-.3 0-.5-.2-.5-.5v-1.5H7.8V17c0 1.1.9 2 2 2h7c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2z" 30414 }) 30415 }); 30416 /* harmony default export */ const library_login = (login); 30417 30418 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/loginout/edit.js 30419 /** 30420 * WordPress dependencies 30421 */ 30422 30423 30424 30425 30426 30427 30428 function LoginOutEdit({ 30429 attributes, 30430 setAttributes 30431 }) { 30432 const { 30433 displayLoginAsForm, 30434 redirectToCurrent 30435 } = attributes; 30436 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 30437 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 30438 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 30439 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 30440 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 30441 __nextHasNoMarginBottom: true, 30442 label: (0,external_wp_i18n_namespaceObject.__)('Display login as form'), 30443 checked: displayLoginAsForm, 30444 onChange: () => setAttributes({ 30445 displayLoginAsForm: !displayLoginAsForm 30446 }) 30447 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 30448 __nextHasNoMarginBottom: true, 30449 label: (0,external_wp_i18n_namespaceObject.__)('Redirect to current URL'), 30450 checked: redirectToCurrent, 30451 onChange: () => setAttributes({ 30452 redirectToCurrent: !redirectToCurrent 30453 }) 30454 })] 30455 }) 30456 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 30457 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 30458 className: 'logged-in' 30459 }), 30460 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 30461 href: "#login-pseudo-link", 30462 children: (0,external_wp_i18n_namespaceObject.__)('Log out') 30463 }) 30464 })] 30465 }); 30466 } 30467 30468 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/loginout/index.js 30469 /** 30470 * WordPress dependencies 30471 */ 30472 30473 30474 /** 30475 * Internal dependencies 30476 */ 30477 30478 30479 const loginout_metadata = { 30480 $schema: "https://schemas.wp.org/trunk/block.json", 30481 apiVersion: 3, 30482 name: "core/loginout", 30483 title: "Login/out", 30484 category: "theme", 30485 description: "Show login & logout links.", 30486 keywords: ["login", "logout", "form"], 30487 textdomain: "default", 30488 attributes: { 30489 displayLoginAsForm: { 30490 type: "boolean", 30491 "default": false 30492 }, 30493 redirectToCurrent: { 30494 type: "boolean", 30495 "default": true 30496 } 30497 }, 30498 example: { 30499 viewportWidth: 350 30500 }, 30501 supports: { 30502 className: true, 30503 color: { 30504 background: true, 30505 text: false, 30506 gradients: true, 30507 link: true 30508 }, 30509 spacing: { 30510 margin: true, 30511 padding: true, 30512 __experimentalDefaultControls: { 30513 margin: false, 30514 padding: false 30515 } 30516 }, 30517 typography: { 30518 fontSize: true, 30519 lineHeight: true, 30520 __experimentalFontFamily: true, 30521 __experimentalFontWeight: true, 30522 __experimentalFontStyle: true, 30523 __experimentalTextTransform: true, 30524 __experimentalTextDecoration: true, 30525 __experimentalLetterSpacing: true, 30526 __experimentalDefaultControls: { 30527 fontSize: true 30528 } 30529 }, 30530 __experimentalBorder: { 30531 radius: true, 30532 color: true, 30533 width: true, 30534 style: true 30535 }, 30536 interactivity: { 30537 clientNavigation: true 30538 } 30539 }, 30540 style: "wp-block-loginout" 30541 }; 30542 const { 30543 name: loginout_name 30544 } = loginout_metadata; 30545 30546 const loginout_settings = { 30547 icon: library_login, 30548 edit: LoginOutEdit 30549 }; 30550 const loginout_init = () => initBlock({ 30551 name: loginout_name, 30552 metadata: loginout_metadata, 30553 settings: loginout_settings 30554 }); 30555 30556 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/media-and-text.js 30557 /** 30558 * WordPress dependencies 30559 */ 30560 30561 30562 const mediaAndText = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 30563 xmlns: "http://www.w3.org/2000/svg", 30564 viewBox: "0 0 24 24", 30565 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 30566 d: "M3 6v11.5h8V6H3Zm11 3h7V7.5h-7V9Zm7 3.5h-7V11h7v1.5ZM14 16h7v-1.5h-7V16Z" 30567 }) 30568 }); 30569 /* harmony default export */ const media_and_text = (mediaAndText); 30570 30571 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/media-text/constants.js 30572 /** 30573 * WordPress dependencies 30574 */ 30575 30576 const DEFAULT_MEDIA_SIZE_SLUG = 'full'; 30577 const WIDTH_CONSTRAINT_PERCENTAGE = 15; 30578 const media_text_constants_LINK_DESTINATION_MEDIA = 'media'; 30579 const media_text_constants_LINK_DESTINATION_ATTACHMENT = 'attachment'; 30580 const constants_TEMPLATE = [['core/paragraph', { 30581 placeholder: (0,external_wp_i18n_namespaceObject._x)('Content…', 'content placeholder') 30582 }]]; 30583 30584 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/media-text/deprecated.js 30585 /** 30586 * External dependencies 30587 */ 30588 30589 30590 /** 30591 * WordPress dependencies 30592 */ 30593 30594 30595 30596 /** 30597 * Internal dependencies 30598 */ 30599 30600 30601 30602 const v1ToV5ImageFillStyles = (url, focalPoint) => { 30603 return url ? { 30604 backgroundImage: `url($url})`, 30605 backgroundPosition: focalPoint ? `$focalPoint.x * 100}% $focalPoint.y * 100}%` : `50% 50%` 30606 } : {}; 30607 }; 30608 const v6ToV7ImageFillStyles = (url, focalPoint) => { 30609 return url ? { 30610 backgroundImage: `url($url})`, 30611 backgroundPosition: focalPoint ? `$Math.round(focalPoint.x * 100)}% $Math.round(focalPoint.y * 100)}%` : `50% 50%` 30612 } : {}; 30613 }; 30614 const DEFAULT_MEDIA_WIDTH = 50; 30615 const noop = () => {}; 30616 const media_text_deprecated_migrateCustomColors = attributes => { 30617 if (!attributes.customBackgroundColor) { 30618 return attributes; 30619 } 30620 const style = { 30621 color: { 30622 background: attributes.customBackgroundColor 30623 } 30624 }; 30625 const { 30626 customBackgroundColor, 30627 ...restAttributes 30628 } = attributes; 30629 return { 30630 ...restAttributes, 30631 style 30632 }; 30633 }; 30634 30635 // After align attribute's default was updated this function explicitly sets 30636 // the align value for deprecated blocks to the `wide` value which was default 30637 // for their versions of this block. 30638 const migrateDefaultAlign = attributes => { 30639 if (attributes.align) { 30640 return attributes; 30641 } 30642 return { 30643 ...attributes, 30644 align: 'wide' 30645 }; 30646 }; 30647 const v0Attributes = { 30648 align: { 30649 type: 'string', 30650 default: 'wide' 30651 }, 30652 mediaAlt: { 30653 type: 'string', 30654 source: 'attribute', 30655 selector: 'figure img', 30656 attribute: 'alt', 30657 default: '' 30658 }, 30659 mediaPosition: { 30660 type: 'string', 30661 default: 'left' 30662 }, 30663 mediaId: { 30664 type: 'number' 30665 }, 30666 mediaType: { 30667 type: 'string' 30668 }, 30669 mediaWidth: { 30670 type: 'number', 30671 default: 50 30672 }, 30673 isStackedOnMobile: { 30674 type: 'boolean', 30675 default: false 30676 } 30677 }; 30678 const v4ToV5BlockAttributes = { 30679 ...v0Attributes, 30680 isStackedOnMobile: { 30681 type: 'boolean', 30682 default: true 30683 }, 30684 mediaUrl: { 30685 type: 'string', 30686 source: 'attribute', 30687 selector: 'figure video,figure img', 30688 attribute: 'src' 30689 }, 30690 mediaLink: { 30691 type: 'string' 30692 }, 30693 linkDestination: { 30694 type: 'string' 30695 }, 30696 linkTarget: { 30697 type: 'string', 30698 source: 'attribute', 30699 selector: 'figure a', 30700 attribute: 'target' 30701 }, 30702 href: { 30703 type: 'string', 30704 source: 'attribute', 30705 selector: 'figure a', 30706 attribute: 'href' 30707 }, 30708 rel: { 30709 type: 'string', 30710 source: 'attribute', 30711 selector: 'figure a', 30712 attribute: 'rel' 30713 }, 30714 linkClass: { 30715 type: 'string', 30716 source: 'attribute', 30717 selector: 'figure a', 30718 attribute: 'class' 30719 }, 30720 mediaSizeSlug: { 30721 type: 'string' 30722 }, 30723 verticalAlignment: { 30724 type: 'string' 30725 }, 30726 imageFill: { 30727 type: 'boolean' 30728 }, 30729 focalPoint: { 30730 type: 'object' 30731 } 30732 }; 30733 const v6Attributes = { 30734 ...v4ToV5BlockAttributes, 30735 mediaAlt: { 30736 type: 'string', 30737 source: 'attribute', 30738 selector: 'figure img', 30739 attribute: 'alt', 30740 default: '', 30741 role: 'content' 30742 }, 30743 mediaId: { 30744 type: 'number', 30745 role: 'content' 30746 }, 30747 mediaUrl: { 30748 type: 'string', 30749 source: 'attribute', 30750 selector: 'figure video,figure img', 30751 attribute: 'src', 30752 role: 'content' 30753 }, 30754 href: { 30755 type: 'string', 30756 source: 'attribute', 30757 selector: 'figure a', 30758 attribute: 'href', 30759 role: 'content' 30760 }, 30761 mediaType: { 30762 type: 'string', 30763 role: 'content' 30764 } 30765 }; 30766 const v7Attributes = { 30767 ...v6Attributes, 30768 align: { 30769 type: 'string', 30770 // v7 changed the default for the `align` attribute. 30771 default: 'none' 30772 }, 30773 // New attribute. 30774 useFeaturedImage: { 30775 type: 'boolean', 30776 default: false 30777 } 30778 }; 30779 const v4ToV5Supports = { 30780 anchor: true, 30781 align: ['wide', 'full'], 30782 html: false, 30783 color: { 30784 gradients: true, 30785 link: true 30786 } 30787 }; 30788 const v6Supports = { 30789 ...v4ToV5Supports, 30790 color: { 30791 gradients: true, 30792 link: true, 30793 __experimentalDefaultControls: { 30794 background: true, 30795 text: true 30796 } 30797 }, 30798 spacing: { 30799 margin: true, 30800 padding: true 30801 }, 30802 typography: { 30803 fontSize: true, 30804 lineHeight: true, 30805 __experimentalFontFamily: true, 30806 __experimentalFontWeight: true, 30807 __experimentalFontStyle: true, 30808 __experimentalTextTransform: true, 30809 __experimentalTextDecoration: true, 30810 __experimentalLetterSpacing: true, 30811 __experimentalDefaultControls: { 30812 fontSize: true 30813 } 30814 } 30815 }; 30816 const v7Supports = { 30817 ...v6Supports, 30818 __experimentalBorder: { 30819 color: true, 30820 radius: true, 30821 style: true, 30822 width: true, 30823 __experimentalDefaultControls: { 30824 color: true, 30825 radius: true, 30826 style: true, 30827 width: true 30828 } 30829 }, 30830 color: { 30831 gradients: true, 30832 heading: true, 30833 link: true, 30834 __experimentalDefaultControls: { 30835 background: true, 30836 text: true 30837 } 30838 }, 30839 interactivity: { 30840 clientNavigation: true 30841 } 30842 }; 30843 30844 // Version with 'none' as the default alignment. 30845 // See: https://github.com/WordPress/gutenberg/pull/64981 30846 const media_text_deprecated_v7 = { 30847 attributes: v7Attributes, 30848 supports: v7Supports, 30849 usesContext: ['postId', 'postType'], 30850 save({ 30851 attributes 30852 }) { 30853 const { 30854 isStackedOnMobile, 30855 mediaAlt, 30856 mediaPosition, 30857 mediaType, 30858 mediaUrl, 30859 mediaWidth, 30860 mediaId, 30861 verticalAlignment, 30862 imageFill, 30863 focalPoint, 30864 linkClass, 30865 href, 30866 linkTarget, 30867 rel 30868 } = attributes; 30869 const mediaSizeSlug = attributes.mediaSizeSlug || DEFAULT_MEDIA_SIZE_SLUG; 30870 const newRel = !rel ? undefined : rel; 30871 const imageClasses = dist_clsx({ 30872 [`wp-image-$mediaId}`]: mediaId && mediaType === 'image', 30873 [`size-$mediaSizeSlug}`]: mediaId && mediaType === 'image' 30874 }); 30875 let image = mediaUrl ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 30876 src: mediaUrl, 30877 alt: mediaAlt, 30878 className: imageClasses || null 30879 }) : null; 30880 if (href) { 30881 image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 30882 className: linkClass, 30883 href: href, 30884 target: linkTarget, 30885 rel: newRel, 30886 children: image 30887 }); 30888 } 30889 const mediaTypeRenders = { 30890 image: () => image, 30891 video: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 30892 controls: true, 30893 src: mediaUrl 30894 }) 30895 }; 30896 const className = dist_clsx({ 30897 'has-media-on-the-right': 'right' === mediaPosition, 30898 'is-stacked-on-mobile': isStackedOnMobile, 30899 [`is-vertically-aligned-$verticalAlignment}`]: verticalAlignment, 30900 'is-image-fill': imageFill 30901 }); 30902 const backgroundStyles = imageFill ? v6ToV7ImageFillStyles(mediaUrl, focalPoint) : {}; 30903 let gridTemplateColumns; 30904 if (mediaWidth !== DEFAULT_MEDIA_WIDTH) { 30905 gridTemplateColumns = 'right' === mediaPosition ? `auto $mediaWidth}%` : `$mediaWidth}% auto`; 30906 } 30907 const style = { 30908 gridTemplateColumns 30909 }; 30910 if ('right' === mediaPosition) { 30911 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 30912 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 30913 className, 30914 style 30915 }), 30916 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 30917 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 30918 className: 'wp-block-media-text__content' 30919 }) 30920 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 30921 className: "wp-block-media-text__media", 30922 style: backgroundStyles, 30923 children: (mediaTypeRenders[mediaType] || noop)() 30924 })] 30925 }); 30926 } 30927 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 30928 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 30929 className, 30930 style 30931 }), 30932 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 30933 className: "wp-block-media-text__media", 30934 style: backgroundStyles, 30935 children: (mediaTypeRenders[mediaType] || noop)() 30936 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 30937 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 30938 className: 'wp-block-media-text__content' 30939 }) 30940 })] 30941 }); 30942 } 30943 }; 30944 30945 // Version with wide as the default alignment. 30946 // See: https://github.com/WordPress/gutenberg/pull/48404 30947 const media_text_deprecated_v6 = { 30948 attributes: v6Attributes, 30949 supports: v6Supports, 30950 save({ 30951 attributes 30952 }) { 30953 const { 30954 isStackedOnMobile, 30955 mediaAlt, 30956 mediaPosition, 30957 mediaType, 30958 mediaUrl, 30959 mediaWidth, 30960 mediaId, 30961 verticalAlignment, 30962 imageFill, 30963 focalPoint, 30964 linkClass, 30965 href, 30966 linkTarget, 30967 rel 30968 } = attributes; 30969 const mediaSizeSlug = attributes.mediaSizeSlug || DEFAULT_MEDIA_SIZE_SLUG; 30970 const newRel = !rel ? undefined : rel; 30971 const imageClasses = dist_clsx({ 30972 [`wp-image-$mediaId}`]: mediaId && mediaType === 'image', 30973 [`size-$mediaSizeSlug}`]: mediaId && mediaType === 'image' 30974 }); 30975 let image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 30976 src: mediaUrl, 30977 alt: mediaAlt, 30978 className: imageClasses || null 30979 }); 30980 if (href) { 30981 image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 30982 className: linkClass, 30983 href: href, 30984 target: linkTarget, 30985 rel: newRel, 30986 children: image 30987 }); 30988 } 30989 const mediaTypeRenders = { 30990 image: () => image, 30991 video: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 30992 controls: true, 30993 src: mediaUrl 30994 }) 30995 }; 30996 const className = dist_clsx({ 30997 'has-media-on-the-right': 'right' === mediaPosition, 30998 'is-stacked-on-mobile': isStackedOnMobile, 30999 [`is-vertically-aligned-$verticalAlignment}`]: verticalAlignment, 31000 'is-image-fill': imageFill 31001 }); 31002 const backgroundStyles = imageFill ? v6ToV7ImageFillStyles(mediaUrl, focalPoint) : {}; 31003 let gridTemplateColumns; 31004 if (mediaWidth !== DEFAULT_MEDIA_WIDTH) { 31005 gridTemplateColumns = 'right' === mediaPosition ? `auto $mediaWidth}%` : `$mediaWidth}% auto`; 31006 } 31007 const style = { 31008 gridTemplateColumns 31009 }; 31010 if ('right' === mediaPosition) { 31011 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 31012 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 31013 className, 31014 style 31015 }), 31016 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 31017 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 31018 className: 'wp-block-media-text__content' 31019 }) 31020 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 31021 className: "wp-block-media-text__media", 31022 style: backgroundStyles, 31023 children: (mediaTypeRenders[mediaType] || noop)() 31024 })] 31025 }); 31026 } 31027 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 31028 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 31029 className, 31030 style 31031 }), 31032 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 31033 className: "wp-block-media-text__media", 31034 style: backgroundStyles, 31035 children: (mediaTypeRenders[mediaType] || noop)() 31036 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 31037 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 31038 className: 'wp-block-media-text__content' 31039 }) 31040 })] 31041 }); 31042 }, 31043 migrate: migrateDefaultAlign, 31044 isEligible(attributes, innerBlocks, { 31045 block 31046 }) { 31047 const { 31048 attributes: finalizedAttributes 31049 } = block; 31050 // When the align attribute defaults to none, valid block markup should 31051 // not contain any alignment CSS class. Unfortunately, this 31052 // deprecation's version of the block won't be invalidated due to the 31053 // alignwide class still being in the markup. That is because the custom 31054 // CSS classname support picks it up and adds it to the className 31055 // attribute. At the time of parsing, the className attribute won't 31056 // contain the alignwide class, hence the need to check the finalized 31057 // block attributes. 31058 return attributes.align === undefined && !!finalizedAttributes.className?.includes('alignwide'); 31059 } 31060 }; 31061 31062 // Version with non-rounded background position attribute for focal point. 31063 // See: https://github.com/WordPress/gutenberg/pull/33915 31064 const media_text_deprecated_v5 = { 31065 attributes: v4ToV5BlockAttributes, 31066 supports: v4ToV5Supports, 31067 save({ 31068 attributes 31069 }) { 31070 const { 31071 isStackedOnMobile, 31072 mediaAlt, 31073 mediaPosition, 31074 mediaType, 31075 mediaUrl, 31076 mediaWidth, 31077 mediaId, 31078 verticalAlignment, 31079 imageFill, 31080 focalPoint, 31081 linkClass, 31082 href, 31083 linkTarget, 31084 rel 31085 } = attributes; 31086 const mediaSizeSlug = attributes.mediaSizeSlug || DEFAULT_MEDIA_SIZE_SLUG; 31087 const newRel = !rel ? undefined : rel; 31088 const imageClasses = dist_clsx({ 31089 [`wp-image-$mediaId}`]: mediaId && mediaType === 'image', 31090 [`size-$mediaSizeSlug}`]: mediaId && mediaType === 'image' 31091 }); 31092 let image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 31093 src: mediaUrl, 31094 alt: mediaAlt, 31095 className: imageClasses || null 31096 }); 31097 if (href) { 31098 image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 31099 className: linkClass, 31100 href: href, 31101 target: linkTarget, 31102 rel: newRel, 31103 children: image 31104 }); 31105 } 31106 const mediaTypeRenders = { 31107 image: () => image, 31108 video: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 31109 controls: true, 31110 src: mediaUrl 31111 }) 31112 }; 31113 const className = dist_clsx({ 31114 'has-media-on-the-right': 'right' === mediaPosition, 31115 'is-stacked-on-mobile': isStackedOnMobile, 31116 [`is-vertically-aligned-$verticalAlignment}`]: verticalAlignment, 31117 'is-image-fill': imageFill 31118 }); 31119 const backgroundStyles = imageFill ? v1ToV5ImageFillStyles(mediaUrl, focalPoint) : {}; 31120 let gridTemplateColumns; 31121 if (mediaWidth !== DEFAULT_MEDIA_WIDTH) { 31122 gridTemplateColumns = 'right' === mediaPosition ? `auto $mediaWidth}%` : `$mediaWidth}% auto`; 31123 } 31124 const style = { 31125 gridTemplateColumns 31126 }; 31127 if ('right' === mediaPosition) { 31128 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 31129 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 31130 className, 31131 style 31132 }), 31133 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 31134 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 31135 className: 'wp-block-media-text__content' 31136 }) 31137 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 31138 className: "wp-block-media-text__media", 31139 style: backgroundStyles, 31140 children: (mediaTypeRenders[mediaType] || noop)() 31141 })] 31142 }); 31143 } 31144 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 31145 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 31146 className, 31147 style 31148 }), 31149 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 31150 className: "wp-block-media-text__media", 31151 style: backgroundStyles, 31152 children: (mediaTypeRenders[mediaType] || noop)() 31153 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 31154 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 31155 className: 'wp-block-media-text__content' 31156 }) 31157 })] 31158 }); 31159 }, 31160 migrate: migrateDefaultAlign 31161 }; 31162 31163 // Version with CSS grid 31164 // See: https://github.com/WordPress/gutenberg/pull/40806 31165 const media_text_deprecated_v4 = { 31166 attributes: v4ToV5BlockAttributes, 31167 supports: v4ToV5Supports, 31168 save({ 31169 attributes 31170 }) { 31171 const { 31172 isStackedOnMobile, 31173 mediaAlt, 31174 mediaPosition, 31175 mediaType, 31176 mediaUrl, 31177 mediaWidth, 31178 mediaId, 31179 verticalAlignment, 31180 imageFill, 31181 focalPoint, 31182 linkClass, 31183 href, 31184 linkTarget, 31185 rel 31186 } = attributes; 31187 const mediaSizeSlug = attributes.mediaSizeSlug || DEFAULT_MEDIA_SIZE_SLUG; 31188 const newRel = !rel ? undefined : rel; 31189 const imageClasses = dist_clsx({ 31190 [`wp-image-$mediaId}`]: mediaId && mediaType === 'image', 31191 [`size-$mediaSizeSlug}`]: mediaId && mediaType === 'image' 31192 }); 31193 let image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 31194 src: mediaUrl, 31195 alt: mediaAlt, 31196 className: imageClasses || null 31197 }); 31198 if (href) { 31199 image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 31200 className: linkClass, 31201 href: href, 31202 target: linkTarget, 31203 rel: newRel, 31204 children: image 31205 }); 31206 } 31207 const mediaTypeRenders = { 31208 image: () => image, 31209 video: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 31210 controls: true, 31211 src: mediaUrl 31212 }) 31213 }; 31214 const className = dist_clsx({ 31215 'has-media-on-the-right': 'right' === mediaPosition, 31216 'is-stacked-on-mobile': isStackedOnMobile, 31217 [`is-vertically-aligned-$verticalAlignment}`]: verticalAlignment, 31218 'is-image-fill': imageFill 31219 }); 31220 const backgroundStyles = imageFill ? v1ToV5ImageFillStyles(mediaUrl, focalPoint) : {}; 31221 let gridTemplateColumns; 31222 if (mediaWidth !== DEFAULT_MEDIA_WIDTH) { 31223 gridTemplateColumns = 'right' === mediaPosition ? `auto $mediaWidth}%` : `$mediaWidth}% auto`; 31224 } 31225 const style = { 31226 gridTemplateColumns 31227 }; 31228 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 31229 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 31230 className, 31231 style 31232 }), 31233 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 31234 className: "wp-block-media-text__media", 31235 style: backgroundStyles, 31236 children: (mediaTypeRenders[mediaType] || noop)() 31237 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 31238 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 31239 className: 'wp-block-media-text__content' 31240 }) 31241 })] 31242 }); 31243 }, 31244 migrate: migrateDefaultAlign 31245 }; 31246 31247 // Version with ad-hoc color attributes 31248 // See: https://github.com/WordPress/gutenberg/pull/21169 31249 const media_text_deprecated_v3 = { 31250 attributes: { 31251 ...v0Attributes, 31252 isStackedOnMobile: { 31253 type: 'boolean', 31254 default: true 31255 }, 31256 backgroundColor: { 31257 type: 'string' 31258 }, 31259 customBackgroundColor: { 31260 type: 'string' 31261 }, 31262 mediaLink: { 31263 type: 'string' 31264 }, 31265 linkDestination: { 31266 type: 'string' 31267 }, 31268 linkTarget: { 31269 type: 'string', 31270 source: 'attribute', 31271 selector: 'figure a', 31272 attribute: 'target' 31273 }, 31274 href: { 31275 type: 'string', 31276 source: 'attribute', 31277 selector: 'figure a', 31278 attribute: 'href' 31279 }, 31280 rel: { 31281 type: 'string', 31282 source: 'attribute', 31283 selector: 'figure a', 31284 attribute: 'rel' 31285 }, 31286 linkClass: { 31287 type: 'string', 31288 source: 'attribute', 31289 selector: 'figure a', 31290 attribute: 'class' 31291 }, 31292 verticalAlignment: { 31293 type: 'string' 31294 }, 31295 imageFill: { 31296 type: 'boolean' 31297 }, 31298 focalPoint: { 31299 type: 'object' 31300 } 31301 }, 31302 migrate: (0,external_wp_compose_namespaceObject.compose)(media_text_deprecated_migrateCustomColors, migrateDefaultAlign), 31303 save({ 31304 attributes 31305 }) { 31306 const { 31307 backgroundColor, 31308 customBackgroundColor, 31309 isStackedOnMobile, 31310 mediaAlt, 31311 mediaPosition, 31312 mediaType, 31313 mediaUrl, 31314 mediaWidth, 31315 mediaId, 31316 verticalAlignment, 31317 imageFill, 31318 focalPoint, 31319 linkClass, 31320 href, 31321 linkTarget, 31322 rel 31323 } = attributes; 31324 const newRel = !rel ? undefined : rel; 31325 let image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 31326 src: mediaUrl, 31327 alt: mediaAlt, 31328 className: mediaId && mediaType === 'image' ? `wp-image-$mediaId}` : null 31329 }); 31330 if (href) { 31331 image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 31332 className: linkClass, 31333 href: href, 31334 target: linkTarget, 31335 rel: newRel, 31336 children: image 31337 }); 31338 } 31339 const mediaTypeRenders = { 31340 image: () => image, 31341 video: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 31342 controls: true, 31343 src: mediaUrl 31344 }) 31345 }; 31346 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 31347 const className = dist_clsx({ 31348 'has-media-on-the-right': 'right' === mediaPosition, 31349 'has-background': backgroundClass || customBackgroundColor, 31350 [backgroundClass]: backgroundClass, 31351 'is-stacked-on-mobile': isStackedOnMobile, 31352 [`is-vertically-aligned-$verticalAlignment}`]: verticalAlignment, 31353 'is-image-fill': imageFill 31354 }); 31355 const backgroundStyles = imageFill ? v1ToV5ImageFillStyles(mediaUrl, focalPoint) : {}; 31356 let gridTemplateColumns; 31357 if (mediaWidth !== DEFAULT_MEDIA_WIDTH) { 31358 gridTemplateColumns = 'right' === mediaPosition ? `auto $mediaWidth}%` : `$mediaWidth}% auto`; 31359 } 31360 const style = { 31361 backgroundColor: backgroundClass ? undefined : customBackgroundColor, 31362 gridTemplateColumns 31363 }; 31364 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 31365 className: className, 31366 style: style, 31367 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 31368 className: "wp-block-media-text__media", 31369 style: backgroundStyles, 31370 children: (mediaTypeRenders[mediaType] || noop)() 31371 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 31372 className: "wp-block-media-text__content", 31373 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 31374 })] 31375 }); 31376 } 31377 }; 31378 31379 // Version with stack on mobile off by default 31380 // See: https://github.com/WordPress/gutenberg/pull/14364 31381 const media_text_deprecated_v2 = { 31382 attributes: { 31383 ...v0Attributes, 31384 backgroundColor: { 31385 type: 'string' 31386 }, 31387 customBackgroundColor: { 31388 type: 'string' 31389 }, 31390 mediaUrl: { 31391 type: 'string', 31392 source: 'attribute', 31393 selector: 'figure video,figure img', 31394 attribute: 'src' 31395 }, 31396 verticalAlignment: { 31397 type: 'string' 31398 }, 31399 imageFill: { 31400 type: 'boolean' 31401 }, 31402 focalPoint: { 31403 type: 'object' 31404 } 31405 }, 31406 migrate: (0,external_wp_compose_namespaceObject.compose)(media_text_deprecated_migrateCustomColors, migrateDefaultAlign), 31407 save({ 31408 attributes 31409 }) { 31410 const { 31411 backgroundColor, 31412 customBackgroundColor, 31413 isStackedOnMobile, 31414 mediaAlt, 31415 mediaPosition, 31416 mediaType, 31417 mediaUrl, 31418 mediaWidth, 31419 mediaId, 31420 verticalAlignment, 31421 imageFill, 31422 focalPoint 31423 } = attributes; 31424 const mediaTypeRenders = { 31425 image: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 31426 src: mediaUrl, 31427 alt: mediaAlt, 31428 className: mediaId && mediaType === 'image' ? `wp-image-$mediaId}` : null 31429 }), 31430 video: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 31431 controls: true, 31432 src: mediaUrl 31433 }) 31434 }; 31435 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 31436 const className = dist_clsx({ 31437 'has-media-on-the-right': 'right' === mediaPosition, 31438 [backgroundClass]: backgroundClass, 31439 'is-stacked-on-mobile': isStackedOnMobile, 31440 [`is-vertically-aligned-$verticalAlignment}`]: verticalAlignment, 31441 'is-image-fill': imageFill 31442 }); 31443 const backgroundStyles = imageFill ? v1ToV5ImageFillStyles(mediaUrl, focalPoint) : {}; 31444 let gridTemplateColumns; 31445 if (mediaWidth !== DEFAULT_MEDIA_WIDTH) { 31446 gridTemplateColumns = 'right' === mediaPosition ? `auto $mediaWidth}%` : `$mediaWidth}% auto`; 31447 } 31448 const style = { 31449 backgroundColor: backgroundClass ? undefined : customBackgroundColor, 31450 gridTemplateColumns 31451 }; 31452 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 31453 className: className, 31454 style: style, 31455 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 31456 className: "wp-block-media-text__media", 31457 style: backgroundStyles, 31458 children: (mediaTypeRenders[mediaType] || noop)() 31459 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 31460 className: "wp-block-media-text__content", 31461 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 31462 })] 31463 }); 31464 } 31465 }; 31466 31467 // Version without the wp-image-#### class on image 31468 // See: https://github.com/WordPress/gutenberg/pull/11922 31469 const media_text_deprecated_v1 = { 31470 attributes: { 31471 ...v0Attributes, 31472 backgroundColor: { 31473 type: 'string' 31474 }, 31475 customBackgroundColor: { 31476 type: 'string' 31477 }, 31478 mediaUrl: { 31479 type: 'string', 31480 source: 'attribute', 31481 selector: 'figure video,figure img', 31482 attribute: 'src' 31483 } 31484 }, 31485 migrate: migrateDefaultAlign, 31486 save({ 31487 attributes 31488 }) { 31489 const { 31490 backgroundColor, 31491 customBackgroundColor, 31492 isStackedOnMobile, 31493 mediaAlt, 31494 mediaPosition, 31495 mediaType, 31496 mediaUrl, 31497 mediaWidth 31498 } = attributes; 31499 const mediaTypeRenders = { 31500 image: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 31501 src: mediaUrl, 31502 alt: mediaAlt 31503 }), 31504 video: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 31505 controls: true, 31506 src: mediaUrl 31507 }) 31508 }; 31509 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 31510 const className = dist_clsx({ 31511 'has-media-on-the-right': 'right' === mediaPosition, 31512 [backgroundClass]: backgroundClass, 31513 'is-stacked-on-mobile': isStackedOnMobile 31514 }); 31515 let gridTemplateColumns; 31516 if (mediaWidth !== DEFAULT_MEDIA_WIDTH) { 31517 gridTemplateColumns = 'right' === mediaPosition ? `auto $mediaWidth}%` : `$mediaWidth}% auto`; 31518 } 31519 const style = { 31520 backgroundColor: backgroundClass ? undefined : customBackgroundColor, 31521 gridTemplateColumns 31522 }; 31523 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 31524 className: className, 31525 style: style, 31526 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 31527 className: "wp-block-media-text__media", 31528 children: (mediaTypeRenders[mediaType] || noop)() 31529 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 31530 className: "wp-block-media-text__content", 31531 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 31532 })] 31533 }); 31534 } 31535 }; 31536 /* harmony default export */ const media_text_deprecated = ([media_text_deprecated_v7, media_text_deprecated_v6, media_text_deprecated_v5, media_text_deprecated_v4, media_text_deprecated_v3, media_text_deprecated_v2, media_text_deprecated_v1]); 31537 31538 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pull-left.js 31539 /** 31540 * WordPress dependencies 31541 */ 31542 31543 31544 const pullLeft = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 31545 xmlns: "http://www.w3.org/2000/svg", 31546 viewBox: "0 0 24 24", 31547 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 31548 d: "M4 18h6V6H4v12zm9-9.5V10h7V8.5h-7zm0 7h7V14h-7v1.5z" 31549 }) 31550 }); 31551 /* harmony default export */ const pull_left = (pullLeft); 31552 31553 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pull-right.js 31554 /** 31555 * WordPress dependencies 31556 */ 31557 31558 31559 const pullRight = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 31560 xmlns: "http://www.w3.org/2000/svg", 31561 viewBox: "0 0 24 24", 31562 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 31563 d: "M14 6v12h6V6h-6zM4 10h7V8.5H4V10zm0 5.5h7V14H4v1.5z" 31564 }) 31565 }); 31566 /* harmony default export */ const pull_right = (pullRight); 31567 31568 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/media.js 31569 /** 31570 * WordPress dependencies 31571 */ 31572 31573 31574 31575 const media = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, { 31576 xmlns: "http://www.w3.org/2000/svg", 31577 viewBox: "0 0 24 24", 31578 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 31579 d: "m7 6.5 4 2.5-4 2.5z" 31580 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 31581 fillRule: "evenodd", 31582 clipRule: "evenodd", 31583 d: "m5 3c-1.10457 0-2 .89543-2 2v14c0 1.1046.89543 2 2 2h14c1.1046 0 2-.8954 2-2v-14c0-1.10457-.8954-2-2-2zm14 1.5h-14c-.27614 0-.5.22386-.5.5v10.7072l3.62953-2.6465c.25108-.1831.58905-.1924.84981-.0234l2.92666 1.8969 3.5712-3.4719c.2911-.2831.7545-.2831 1.0456 0l2.9772 2.8945v-9.3568c0-.27614-.2239-.5-.5-.5zm-14.5 14.5v-1.4364l4.09643-2.987 2.99567 1.9417c.2936.1903.6798.1523.9307-.0917l3.4772-3.3806 3.4772 3.3806.0228-.0234v2.5968c0 .2761-.2239.5-.5.5h-14c-.27614 0-.5-.2239-.5-.5z" 31584 })] 31585 }); 31586 /* harmony default export */ const library_media = (media); 31587 31588 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/media-text/image-fill.js 31589 function imageFillStyles(url, focalPoint) { 31590 return url ? { 31591 objectPosition: focalPoint ? `$Math.round(focalPoint.x * 100)}% $Math.round(focalPoint.y * 100)}%` : `50% 50%` 31592 } : {}; 31593 } 31594 31595 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/media-text/media-container.js 31596 /** 31597 * External dependencies 31598 */ 31599 31600 31601 /** 31602 * WordPress dependencies 31603 */ 31604 31605 31606 31607 31608 31609 31610 31611 31612 31613 31614 /** 31615 * Internal dependencies 31616 */ 31617 31618 31619 /** 31620 * Constants 31621 */ 31622 31623 31624 const media_container_ALLOWED_MEDIA_TYPES = ['image', 'video']; 31625 const media_container_noop = () => {}; 31626 const ResizableBoxContainer = (0,external_wp_element_namespaceObject.forwardRef)(({ 31627 isSelected, 31628 isStackedOnMobile, 31629 ...props 31630 }, ref) => { 31631 const isMobile = (0,external_wp_compose_namespaceObject.useViewportMatch)('small', '<'); 31632 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ResizableBox, { 31633 ref: ref, 31634 showHandle: isSelected && (!isMobile || !isStackedOnMobile), 31635 ...props 31636 }); 31637 }); 31638 function ToolbarEditButton({ 31639 mediaId, 31640 mediaUrl, 31641 onSelectMedia, 31642 toggleUseFeaturedImage, 31643 useFeaturedImage 31644 }) { 31645 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 31646 group: "other", 31647 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaReplaceFlow, { 31648 mediaId: mediaId, 31649 mediaURL: mediaUrl, 31650 allowedTypes: media_container_ALLOWED_MEDIA_TYPES, 31651 accept: "image/*,video/*", 31652 onSelect: onSelectMedia, 31653 onToggleFeaturedImage: toggleUseFeaturedImage, 31654 useFeaturedImage: useFeaturedImage, 31655 onReset: () => onSelectMedia(undefined) 31656 }) 31657 }); 31658 } 31659 function PlaceholderContainer({ 31660 className, 31661 mediaUrl, 31662 onSelectMedia, 31663 toggleUseFeaturedImage 31664 }) { 31665 const { 31666 createErrorNotice 31667 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 31668 const onUploadError = message => { 31669 createErrorNotice(message, { 31670 type: 'snackbar' 31671 }); 31672 }; 31673 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaPlaceholder, { 31674 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 31675 icon: library_media 31676 }), 31677 labels: { 31678 title: (0,external_wp_i18n_namespaceObject.__)('Media area') 31679 }, 31680 className: className, 31681 onSelect: onSelectMedia, 31682 accept: "image/*,video/*", 31683 onToggleFeaturedImage: toggleUseFeaturedImage, 31684 allowedTypes: media_container_ALLOWED_MEDIA_TYPES, 31685 onError: onUploadError, 31686 disableMediaButtons: mediaUrl 31687 }); 31688 } 31689 function MediaContainer(props, ref) { 31690 const { 31691 className, 31692 commitWidthChange, 31693 focalPoint, 31694 imageFill, 31695 isSelected, 31696 isStackedOnMobile, 31697 mediaAlt, 31698 mediaId, 31699 mediaPosition, 31700 mediaType, 31701 mediaUrl, 31702 mediaWidth, 31703 onSelectMedia, 31704 onWidthChange, 31705 enableResize, 31706 toggleUseFeaturedImage, 31707 useFeaturedImage, 31708 featuredImageURL, 31709 featuredImageAlt, 31710 refMedia 31711 } = props; 31712 const isTemporaryMedia = !mediaId && (0,external_wp_blob_namespaceObject.isBlobURL)(mediaUrl); 31713 const { 31714 toggleSelection 31715 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 31716 if (mediaUrl || featuredImageURL || useFeaturedImage) { 31717 const onResizeStart = () => { 31718 toggleSelection(false); 31719 }; 31720 const onResize = (event, direction, elt) => { 31721 onWidthChange(parseInt(elt.style.width)); 31722 }; 31723 const onResizeStop = (event, direction, elt) => { 31724 toggleSelection(true); 31725 commitWidthChange(parseInt(elt.style.width)); 31726 }; 31727 const enablePositions = { 31728 right: enableResize && mediaPosition === 'left', 31729 left: enableResize && mediaPosition === 'right' 31730 }; 31731 const positionStyles = mediaType === 'image' && imageFill ? imageFillStyles(mediaUrl || featuredImageURL, focalPoint) : {}; 31732 const mediaTypeRenderers = { 31733 image: () => useFeaturedImage && featuredImageURL ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 31734 ref: refMedia, 31735 src: featuredImageURL, 31736 alt: featuredImageAlt, 31737 style: positionStyles 31738 }) : mediaUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 31739 ref: refMedia, 31740 src: mediaUrl, 31741 alt: mediaAlt, 31742 style: positionStyles 31743 }), 31744 video: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 31745 controls: true, 31746 ref: refMedia, 31747 src: mediaUrl 31748 }) 31749 }; 31750 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ResizableBoxContainer, { 31751 as: "figure", 31752 className: dist_clsx(className, 'editor-media-container__resizer', { 31753 'is-transient': isTemporaryMedia 31754 }), 31755 size: { 31756 width: mediaWidth + '%' 31757 }, 31758 minWidth: "10%", 31759 maxWidth: "100%", 31760 enable: enablePositions, 31761 onResizeStart: onResizeStart, 31762 onResize: onResize, 31763 onResizeStop: onResizeStop, 31764 axis: "x", 31765 isSelected: isSelected, 31766 isStackedOnMobile: isStackedOnMobile, 31767 ref: ref, 31768 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ToolbarEditButton, { 31769 onSelectMedia: onSelectMedia, 31770 mediaUrl: useFeaturedImage && featuredImageURL ? featuredImageURL : mediaUrl, 31771 mediaId: mediaId, 31772 toggleUseFeaturedImage: toggleUseFeaturedImage 31773 }), (mediaTypeRenderers[mediaType] || media_container_noop)(), isTemporaryMedia && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}), !useFeaturedImage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PlaceholderContainer, { 31774 ...props 31775 }), !featuredImageURL && useFeaturedImage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 31776 className: "wp-block-media-text--placeholder-image", 31777 style: positionStyles, 31778 withIllustration: true 31779 })] 31780 }); 31781 } 31782 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PlaceholderContainer, { 31783 ...props 31784 }); 31785 } 31786 /* harmony default export */ const media_container = ((0,external_wp_element_namespaceObject.forwardRef)(MediaContainer)); 31787 31788 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/media-text/edit.js 31789 /** 31790 * External dependencies 31791 */ 31792 31793 31794 /** 31795 * WordPress dependencies 31796 */ 31797 31798 31799 31800 31801 31802 31803 31804 31805 31806 /** 31807 * Internal dependencies 31808 */ 31809 31810 31811 31812 31813 31814 31815 31816 const { 31817 ResolutionTool: edit_ResolutionTool 31818 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 31819 31820 // this limits the resize to a safe zone to avoid making broken layouts 31821 const applyWidthConstraints = width => Math.max(WIDTH_CONSTRAINT_PERCENTAGE, Math.min(width, 100 - WIDTH_CONSTRAINT_PERCENTAGE)); 31822 function getImageSourceUrlBySizeSlug(image, slug) { 31823 // eslint-disable-next-line camelcase 31824 return image?.media_details?.sizes?.[slug]?.source_url; 31825 } 31826 function edit_attributesFromMedia({ 31827 attributes: { 31828 linkDestination, 31829 href 31830 }, 31831 setAttributes 31832 }) { 31833 return media => { 31834 if (!media || !media.url) { 31835 setAttributes({ 31836 mediaAlt: undefined, 31837 mediaId: undefined, 31838 mediaType: undefined, 31839 mediaUrl: undefined, 31840 mediaLink: undefined, 31841 href: undefined, 31842 focalPoint: undefined 31843 }); 31844 return; 31845 } 31846 if ((0,external_wp_blob_namespaceObject.isBlobURL)(media.url)) { 31847 media.type = (0,external_wp_blob_namespaceObject.getBlobTypeByURL)(media.url); 31848 } 31849 let mediaType; 31850 let src; 31851 // For media selections originated from a file upload. 31852 if (media.media_type) { 31853 if (media.media_type === 'image') { 31854 mediaType = 'image'; 31855 } else { 31856 // only images and videos are accepted so if the media_type is not an image we can assume it is a video. 31857 // video contain the media type of 'file' in the object returned from the rest api. 31858 mediaType = 'video'; 31859 } 31860 } else { 31861 // For media selections originated from existing files in the media library. 31862 mediaType = media.type; 31863 } 31864 if (mediaType === 'image') { 31865 // Try the "large" size URL, falling back to the "full" size URL below. 31866 src = media.sizes?.large?.url || 31867 // eslint-disable-next-line camelcase 31868 media.media_details?.sizes?.large?.source_url; 31869 } 31870 let newHref = href; 31871 if (linkDestination === media_text_constants_LINK_DESTINATION_MEDIA) { 31872 // Update the media link. 31873 newHref = media.url; 31874 } 31875 31876 // Check if the image is linked to the attachment page. 31877 if (linkDestination === media_text_constants_LINK_DESTINATION_ATTACHMENT) { 31878 // Update the media link. 31879 newHref = media.link; 31880 } 31881 setAttributes({ 31882 mediaAlt: media.alt, 31883 mediaId: media.id, 31884 mediaType, 31885 mediaUrl: src || media.url, 31886 mediaLink: media.link || undefined, 31887 href: newHref, 31888 focalPoint: undefined 31889 }); 31890 }; 31891 } 31892 function MediaTextEdit({ 31893 attributes, 31894 isSelected, 31895 setAttributes, 31896 context: { 31897 postId, 31898 postType 31899 } 31900 }) { 31901 const { 31902 focalPoint, 31903 href, 31904 imageFill, 31905 isStackedOnMobile, 31906 linkClass, 31907 linkDestination, 31908 linkTarget, 31909 mediaAlt, 31910 mediaId, 31911 mediaPosition, 31912 mediaType, 31913 mediaUrl, 31914 mediaWidth, 31915 rel, 31916 verticalAlignment, 31917 allowedBlocks, 31918 useFeaturedImage 31919 } = attributes; 31920 const mediaSizeSlug = attributes.mediaSizeSlug || DEFAULT_MEDIA_SIZE_SLUG; 31921 const [featuredImage] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postType, 'featured_media', postId); 31922 const featuredImageMedia = (0,external_wp_data_namespaceObject.useSelect)(select => featuredImage && select(external_wp_coreData_namespaceObject.store).getMedia(featuredImage, { 31923 context: 'view' 31924 }), [featuredImage]); 31925 const featuredImageURL = useFeaturedImage ? featuredImageMedia?.source_url : ''; 31926 const featuredImageAlt = useFeaturedImage ? featuredImageMedia?.alt_text : ''; 31927 const toggleUseFeaturedImage = () => { 31928 setAttributes({ 31929 imageFill: false, 31930 mediaType: 'image', 31931 mediaId: undefined, 31932 mediaUrl: undefined, 31933 mediaAlt: undefined, 31934 mediaLink: undefined, 31935 linkDestination: undefined, 31936 linkTarget: undefined, 31937 linkClass: undefined, 31938 rel: undefined, 31939 href: undefined, 31940 useFeaturedImage: !useFeaturedImage 31941 }); 31942 }; 31943 const { 31944 imageSizes, 31945 image 31946 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 31947 const { 31948 getSettings 31949 } = select(external_wp_blockEditor_namespaceObject.store); 31950 return { 31951 image: mediaId && isSelected ? select(external_wp_coreData_namespaceObject.store).getMedia(mediaId, { 31952 context: 'view' 31953 }) : null, 31954 imageSizes: getSettings()?.imageSizes 31955 }; 31956 }, [isSelected, mediaId]); 31957 const refMedia = (0,external_wp_element_namespaceObject.useRef)(); 31958 const imperativeFocalPointPreview = value => { 31959 const { 31960 style 31961 } = refMedia.current; 31962 const { 31963 x, 31964 y 31965 } = value; 31966 style.objectPosition = `$x * 100}% $y * 100}%`; 31967 }; 31968 const [temporaryMediaWidth, setTemporaryMediaWidth] = (0,external_wp_element_namespaceObject.useState)(null); 31969 const onSelectMedia = edit_attributesFromMedia({ 31970 attributes, 31971 setAttributes 31972 }); 31973 const onSetHref = props => { 31974 setAttributes(props); 31975 }; 31976 const onWidthChange = width => { 31977 setTemporaryMediaWidth(applyWidthConstraints(width)); 31978 }; 31979 const commitWidthChange = width => { 31980 setAttributes({ 31981 mediaWidth: applyWidthConstraints(width) 31982 }); 31983 setTemporaryMediaWidth(null); 31984 }; 31985 const classNames = dist_clsx({ 31986 'has-media-on-the-right': 'right' === mediaPosition, 31987 'is-selected': isSelected, 31988 'is-stacked-on-mobile': isStackedOnMobile, 31989 [`is-vertically-aligned-$verticalAlignment}`]: verticalAlignment, 31990 'is-image-fill-element': imageFill 31991 }); 31992 const widthString = `$temporaryMediaWidth || mediaWidth}%`; 31993 const gridTemplateColumns = 'right' === mediaPosition ? `1fr $widthString}` : `$widthString} 1fr`; 31994 const style = { 31995 gridTemplateColumns, 31996 msGridColumns: gridTemplateColumns 31997 }; 31998 const onMediaAltChange = newMediaAlt => { 31999 setAttributes({ 32000 mediaAlt: newMediaAlt 32001 }); 32002 }; 32003 const onVerticalAlignmentChange = alignment => { 32004 setAttributes({ 32005 verticalAlignment: alignment 32006 }); 32007 }; 32008 const imageSizeOptions = imageSizes.filter(({ 32009 slug 32010 }) => getImageSourceUrlBySizeSlug(image, slug)).map(({ 32011 name, 32012 slug 32013 }) => ({ 32014 value: slug, 32015 label: name 32016 })); 32017 const updateImage = newMediaSizeSlug => { 32018 const newUrl = getImageSourceUrlBySizeSlug(image, newMediaSizeSlug); 32019 if (!newUrl) { 32020 return null; 32021 } 32022 setAttributes({ 32023 mediaUrl: newUrl, 32024 mediaSizeSlug: newMediaSizeSlug 32025 }); 32026 }; 32027 const dropdownMenuProps = useToolsPanelDropdownMenuProps(); 32028 const mediaTextGeneralSettings = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToolsPanel, { 32029 label: (0,external_wp_i18n_namespaceObject.__)('Settings'), 32030 resetAll: () => { 32031 setAttributes({ 32032 isStackedOnMobile: true, 32033 imageFill: false, 32034 mediaAlt: '', 32035 focalPoint: undefined, 32036 mediaWidth: 50, 32037 mediaSizeSlug: undefined 32038 }); 32039 }, 32040 dropdownMenuProps: dropdownMenuProps, 32041 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 32042 label: (0,external_wp_i18n_namespaceObject.__)('Media width'), 32043 isShownByDefault: true, 32044 hasValue: () => mediaWidth !== 50, 32045 onDeselect: () => setAttributes({ 32046 mediaWidth: 50 32047 }), 32048 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 32049 __nextHasNoMarginBottom: true, 32050 __next40pxDefaultSize: true, 32051 label: (0,external_wp_i18n_namespaceObject.__)('Media width'), 32052 value: temporaryMediaWidth || mediaWidth, 32053 onChange: commitWidthChange, 32054 min: WIDTH_CONSTRAINT_PERCENTAGE, 32055 max: 100 - WIDTH_CONSTRAINT_PERCENTAGE 32056 }) 32057 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 32058 label: (0,external_wp_i18n_namespaceObject.__)('Stack on mobile'), 32059 isShownByDefault: true, 32060 hasValue: () => !isStackedOnMobile, 32061 onDeselect: () => setAttributes({ 32062 isStackedOnMobile: true 32063 }), 32064 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 32065 __nextHasNoMarginBottom: true, 32066 label: (0,external_wp_i18n_namespaceObject.__)('Stack on mobile'), 32067 checked: isStackedOnMobile, 32068 onChange: () => setAttributes({ 32069 isStackedOnMobile: !isStackedOnMobile 32070 }) 32071 }) 32072 }), mediaType === 'image' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 32073 label: (0,external_wp_i18n_namespaceObject.__)('Crop image to fill'), 32074 isShownByDefault: true, 32075 hasValue: () => !!imageFill, 32076 onDeselect: () => setAttributes({ 32077 imageFill: false 32078 }), 32079 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 32080 __nextHasNoMarginBottom: true, 32081 label: (0,external_wp_i18n_namespaceObject.__)('Crop image to fill'), 32082 checked: !!imageFill, 32083 onChange: () => setAttributes({ 32084 imageFill: !imageFill 32085 }) 32086 }) 32087 }), imageFill && (mediaUrl || featuredImageURL) && mediaType === 'image' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 32088 label: (0,external_wp_i18n_namespaceObject.__)('Focal point'), 32089 isShownByDefault: true, 32090 hasValue: () => !!focalPoint, 32091 onDeselect: () => setAttributes({ 32092 focalPoint: undefined 32093 }), 32094 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FocalPointPicker, { 32095 __nextHasNoMarginBottom: true, 32096 label: (0,external_wp_i18n_namespaceObject.__)('Focal point'), 32097 url: useFeaturedImage && featuredImageURL ? featuredImageURL : mediaUrl, 32098 value: focalPoint, 32099 onChange: value => setAttributes({ 32100 focalPoint: value 32101 }), 32102 onDragStart: imperativeFocalPointPreview, 32103 onDrag: imperativeFocalPointPreview 32104 }) 32105 }), mediaType === 'image' && mediaUrl && !useFeaturedImage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 32106 label: (0,external_wp_i18n_namespaceObject.__)('Alternative text'), 32107 isShownByDefault: true, 32108 hasValue: () => !!mediaAlt, 32109 onDeselect: () => setAttributes({ 32110 mediaAlt: '' 32111 }), 32112 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextareaControl, { 32113 __nextHasNoMarginBottom: true, 32114 label: (0,external_wp_i18n_namespaceObject.__)('Alternative text'), 32115 value: mediaAlt, 32116 onChange: onMediaAltChange, 32117 help: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 32118 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, { 32119 href: 32120 // translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations. 32121 (0,external_wp_i18n_namespaceObject.__)('https://www.w3.org/WAI/tutorials/images/decision-tree/'), 32122 children: (0,external_wp_i18n_namespaceObject.__)('Describe the purpose of the image.') 32123 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("br", {}), (0,external_wp_i18n_namespaceObject.__)('Leave empty if decorative.')] 32124 }) 32125 }) 32126 }), mediaType === 'image' && !useFeaturedImage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(edit_ResolutionTool, { 32127 value: mediaSizeSlug, 32128 options: imageSizeOptions, 32129 onChange: updateImage 32130 })] 32131 }); 32132 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 32133 className: classNames, 32134 style 32135 }); 32136 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)({ 32137 className: 'wp-block-media-text__content' 32138 }, { 32139 template: constants_TEMPLATE, 32140 allowedBlocks 32141 }); 32142 const blockEditingMode = (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)(); 32143 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 32144 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 32145 children: mediaTextGeneralSettings 32146 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 32147 group: "block", 32148 children: [blockEditingMode === 'default' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 32149 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockVerticalAlignmentControl, { 32150 onChange: onVerticalAlignmentChange, 32151 value: verticalAlignment 32152 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 32153 icon: pull_left, 32154 title: (0,external_wp_i18n_namespaceObject.__)('Show media on left'), 32155 isActive: mediaPosition === 'left', 32156 onClick: () => setAttributes({ 32157 mediaPosition: 'left' 32158 }) 32159 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 32160 icon: pull_right, 32161 title: (0,external_wp_i18n_namespaceObject.__)('Show media on right'), 32162 isActive: mediaPosition === 'right', 32163 onClick: () => setAttributes({ 32164 mediaPosition: 'right' 32165 }) 32166 })] 32167 }), mediaType === 'image' && !useFeaturedImage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalImageURLInputUI, { 32168 url: href || '', 32169 onChangeUrl: onSetHref, 32170 linkDestination: linkDestination, 32171 mediaType: mediaType, 32172 mediaUrl: image && image.source_url, 32173 mediaLink: image && image.link, 32174 linkTarget: linkTarget, 32175 linkClass: linkClass, 32176 rel: rel 32177 })] 32178 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 32179 ...blockProps, 32180 children: [mediaPosition === 'right' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 32181 ...innerBlocksProps 32182 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(media_container, { 32183 className: "wp-block-media-text__media", 32184 onSelectMedia: onSelectMedia, 32185 onWidthChange: onWidthChange, 32186 commitWidthChange: commitWidthChange, 32187 refMedia: refMedia, 32188 enableResize: blockEditingMode === 'default', 32189 toggleUseFeaturedImage: toggleUseFeaturedImage, 32190 focalPoint, 32191 imageFill, 32192 isSelected, 32193 isStackedOnMobile, 32194 mediaAlt, 32195 mediaId, 32196 mediaPosition, 32197 mediaType, 32198 mediaUrl, 32199 mediaWidth, 32200 useFeaturedImage, 32201 featuredImageURL, 32202 featuredImageAlt 32203 }), mediaPosition !== 'right' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 32204 ...innerBlocksProps 32205 })] 32206 })] 32207 }); 32208 } 32209 /* harmony default export */ const media_text_edit = (MediaTextEdit); 32210 32211 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/media-text/save.js 32212 /** 32213 * External dependencies 32214 */ 32215 32216 32217 /** 32218 * WordPress dependencies 32219 */ 32220 32221 32222 /** 32223 * Internal dependencies 32224 */ 32225 32226 32227 32228 32229 const save_DEFAULT_MEDIA_WIDTH = 50; 32230 const save_noop = () => {}; 32231 function media_text_save_save({ 32232 attributes 32233 }) { 32234 const { 32235 isStackedOnMobile, 32236 mediaAlt, 32237 mediaPosition, 32238 mediaType, 32239 mediaUrl, 32240 mediaWidth, 32241 mediaId, 32242 verticalAlignment, 32243 imageFill, 32244 focalPoint, 32245 linkClass, 32246 href, 32247 linkTarget, 32248 rel 32249 } = attributes; 32250 const mediaSizeSlug = attributes.mediaSizeSlug || DEFAULT_MEDIA_SIZE_SLUG; 32251 const newRel = !rel ? undefined : rel; 32252 const imageClasses = dist_clsx({ 32253 [`wp-image-$mediaId}`]: mediaId && mediaType === 'image', 32254 [`size-$mediaSizeSlug}`]: mediaId && mediaType === 'image' 32255 }); 32256 const positionStyles = imageFill ? imageFillStyles(mediaUrl, focalPoint) : {}; 32257 let image = mediaUrl ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 32258 src: mediaUrl, 32259 alt: mediaAlt, 32260 className: imageClasses || null, 32261 style: positionStyles 32262 }) : null; 32263 if (href) { 32264 image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 32265 className: linkClass, 32266 href: href, 32267 target: linkTarget, 32268 rel: newRel, 32269 children: image 32270 }); 32271 } 32272 const mediaTypeRenders = { 32273 image: () => image, 32274 video: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 32275 controls: true, 32276 src: mediaUrl 32277 }) 32278 }; 32279 const className = dist_clsx({ 32280 'has-media-on-the-right': 'right' === mediaPosition, 32281 'is-stacked-on-mobile': isStackedOnMobile, 32282 [`is-vertically-aligned-$verticalAlignment}`]: verticalAlignment, 32283 'is-image-fill-element': imageFill 32284 }); 32285 let gridTemplateColumns; 32286 if (mediaWidth !== save_DEFAULT_MEDIA_WIDTH) { 32287 gridTemplateColumns = 'right' === mediaPosition ? `auto $mediaWidth}%` : `$mediaWidth}% auto`; 32288 } 32289 const style = { 32290 gridTemplateColumns 32291 }; 32292 if ('right' === mediaPosition) { 32293 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 32294 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 32295 className, 32296 style 32297 }), 32298 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 32299 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 32300 className: 'wp-block-media-text__content' 32301 }) 32302 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 32303 className: "wp-block-media-text__media", 32304 children: (mediaTypeRenders[mediaType] || save_noop)() 32305 })] 32306 }); 32307 } 32308 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 32309 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 32310 className, 32311 style 32312 }), 32313 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 32314 className: "wp-block-media-text__media", 32315 children: (mediaTypeRenders[mediaType] || save_noop)() 32316 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 32317 ...external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save({ 32318 className: 'wp-block-media-text__content' 32319 }) 32320 })] 32321 }); 32322 } 32323 32324 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/media-text/transforms.js 32325 /** 32326 * WordPress dependencies 32327 */ 32328 32329 const media_text_transforms_transforms = { 32330 from: [{ 32331 type: 'block', 32332 blocks: ['core/image'], 32333 transform: ({ 32334 alt, 32335 url, 32336 id, 32337 anchor 32338 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/media-text', { 32339 mediaAlt: alt, 32340 mediaId: id, 32341 mediaUrl: url, 32342 mediaType: 'image', 32343 anchor 32344 }) 32345 }, { 32346 type: 'block', 32347 blocks: ['core/video'], 32348 transform: ({ 32349 src, 32350 id, 32351 anchor 32352 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/media-text', { 32353 mediaId: id, 32354 mediaUrl: src, 32355 mediaType: 'video', 32356 anchor 32357 }) 32358 }, { 32359 type: 'block', 32360 blocks: ['core/cover'], 32361 transform: ({ 32362 align, 32363 alt, 32364 anchor, 32365 backgroundType, 32366 customGradient, 32367 customOverlayColor, 32368 gradient, 32369 id, 32370 overlayColor, 32371 style, 32372 textColor, 32373 url 32374 }, innerBlocks) => { 32375 let additionalAttributes = {}; 32376 if (customGradient) { 32377 additionalAttributes = { 32378 style: { 32379 color: { 32380 gradient: customGradient 32381 } 32382 } 32383 }; 32384 } else if (customOverlayColor) { 32385 additionalAttributes = { 32386 style: { 32387 color: { 32388 background: customOverlayColor 32389 } 32390 } 32391 }; 32392 } 32393 32394 // Maintain custom text color block support value. 32395 if (style?.color?.text) { 32396 additionalAttributes.style = { 32397 color: { 32398 ...additionalAttributes.style?.color, 32399 text: style.color.text 32400 } 32401 }; 32402 } 32403 return (0,external_wp_blocks_namespaceObject.createBlock)('core/media-text', { 32404 align, 32405 anchor, 32406 backgroundColor: overlayColor, 32407 gradient, 32408 mediaAlt: alt, 32409 mediaId: id, 32410 mediaType: backgroundType, 32411 mediaUrl: url, 32412 textColor, 32413 ...additionalAttributes 32414 }, innerBlocks); 32415 } 32416 }], 32417 to: [{ 32418 type: 'block', 32419 blocks: ['core/image'], 32420 isMatch: ({ 32421 mediaType, 32422 mediaUrl 32423 }) => { 32424 return !mediaUrl || mediaType === 'image'; 32425 }, 32426 transform: ({ 32427 mediaAlt, 32428 mediaId, 32429 mediaUrl, 32430 anchor 32431 }) => { 32432 return (0,external_wp_blocks_namespaceObject.createBlock)('core/image', { 32433 alt: mediaAlt, 32434 id: mediaId, 32435 url: mediaUrl, 32436 anchor 32437 }); 32438 } 32439 }, { 32440 type: 'block', 32441 blocks: ['core/video'], 32442 isMatch: ({ 32443 mediaType, 32444 mediaUrl 32445 }) => { 32446 return !mediaUrl || mediaType === 'video'; 32447 }, 32448 transform: ({ 32449 mediaId, 32450 mediaUrl, 32451 anchor 32452 }) => { 32453 return (0,external_wp_blocks_namespaceObject.createBlock)('core/video', { 32454 id: mediaId, 32455 src: mediaUrl, 32456 anchor 32457 }); 32458 } 32459 }, { 32460 type: 'block', 32461 blocks: ['core/cover'], 32462 transform: ({ 32463 align, 32464 anchor, 32465 backgroundColor, 32466 focalPoint, 32467 gradient, 32468 mediaAlt, 32469 mediaId, 32470 mediaType, 32471 mediaUrl, 32472 style, 32473 textColor 32474 }, innerBlocks) => { 32475 const additionalAttributes = {}; 32476 32477 // Migrate the background styles or gradient to Cover's custom 32478 // gradient and overlay properties. 32479 if (style?.color?.gradient) { 32480 additionalAttributes.customGradient = style.color.gradient; 32481 } else if (style?.color?.background) { 32482 additionalAttributes.customOverlayColor = style.color.background; 32483 } 32484 32485 // Maintain custom text color support style. 32486 if (style?.color?.text) { 32487 additionalAttributes.style = { 32488 color: { 32489 text: style.color.text 32490 } 32491 }; 32492 } 32493 const coverAttributes = { 32494 align, 32495 alt: mediaAlt, 32496 anchor, 32497 backgroundType: mediaType, 32498 dimRatio: !!mediaUrl ? 50 : 100, 32499 focalPoint, 32500 gradient, 32501 id: mediaId, 32502 overlayColor: backgroundColor, 32503 textColor, 32504 url: mediaUrl, 32505 ...additionalAttributes 32506 }; 32507 return (0,external_wp_blocks_namespaceObject.createBlock)('core/cover', coverAttributes, innerBlocks); 32508 } 32509 }] 32510 }; 32511 /* harmony default export */ const media_text_transforms = (media_text_transforms_transforms); 32512 32513 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/media-text/index.js 32514 /** 32515 * WordPress dependencies 32516 */ 32517 32518 32519 32520 /** 32521 * Internal dependencies 32522 */ 32523 32524 32525 32526 const media_text_metadata = { 32527 $schema: "https://schemas.wp.org/trunk/block.json", 32528 apiVersion: 3, 32529 name: "core/media-text", 32530 title: "Media & Text", 32531 category: "media", 32532 description: "Set media and words side-by-side for a richer layout.", 32533 keywords: ["image", "video"], 32534 textdomain: "default", 32535 attributes: { 32536 align: { 32537 type: "string", 32538 "default": "none" 32539 }, 32540 mediaAlt: { 32541 type: "string", 32542 source: "attribute", 32543 selector: "figure img", 32544 attribute: "alt", 32545 "default": "", 32546 role: "content" 32547 }, 32548 mediaPosition: { 32549 type: "string", 32550 "default": "left" 32551 }, 32552 mediaId: { 32553 type: "number", 32554 role: "content" 32555 }, 32556 mediaUrl: { 32557 type: "string", 32558 source: "attribute", 32559 selector: "figure video,figure img", 32560 attribute: "src", 32561 role: "content" 32562 }, 32563 mediaLink: { 32564 type: "string" 32565 }, 32566 linkDestination: { 32567 type: "string" 32568 }, 32569 linkTarget: { 32570 type: "string", 32571 source: "attribute", 32572 selector: "figure a", 32573 attribute: "target" 32574 }, 32575 href: { 32576 type: "string", 32577 source: "attribute", 32578 selector: "figure a", 32579 attribute: "href", 32580 role: "content" 32581 }, 32582 rel: { 32583 type: "string", 32584 source: "attribute", 32585 selector: "figure a", 32586 attribute: "rel" 32587 }, 32588 linkClass: { 32589 type: "string", 32590 source: "attribute", 32591 selector: "figure a", 32592 attribute: "class" 32593 }, 32594 mediaType: { 32595 type: "string", 32596 role: "content" 32597 }, 32598 mediaWidth: { 32599 type: "number", 32600 "default": 50 32601 }, 32602 mediaSizeSlug: { 32603 type: "string" 32604 }, 32605 isStackedOnMobile: { 32606 type: "boolean", 32607 "default": true 32608 }, 32609 verticalAlignment: { 32610 type: "string" 32611 }, 32612 imageFill: { 32613 type: "boolean" 32614 }, 32615 focalPoint: { 32616 type: "object" 32617 }, 32618 allowedBlocks: { 32619 type: "array" 32620 }, 32621 useFeaturedImage: { 32622 type: "boolean", 32623 "default": false 32624 } 32625 }, 32626 usesContext: ["postId", "postType"], 32627 supports: { 32628 anchor: true, 32629 align: ["wide", "full"], 32630 html: false, 32631 __experimentalBorder: { 32632 color: true, 32633 radius: true, 32634 style: true, 32635 width: true, 32636 __experimentalDefaultControls: { 32637 color: true, 32638 radius: true, 32639 style: true, 32640 width: true 32641 } 32642 }, 32643 color: { 32644 gradients: true, 32645 heading: true, 32646 link: true, 32647 __experimentalDefaultControls: { 32648 background: true, 32649 text: true 32650 } 32651 }, 32652 spacing: { 32653 margin: true, 32654 padding: true 32655 }, 32656 typography: { 32657 fontSize: true, 32658 lineHeight: true, 32659 __experimentalFontFamily: true, 32660 __experimentalFontWeight: true, 32661 __experimentalFontStyle: true, 32662 __experimentalTextTransform: true, 32663 __experimentalTextDecoration: true, 32664 __experimentalLetterSpacing: true, 32665 __experimentalDefaultControls: { 32666 fontSize: true 32667 } 32668 }, 32669 interactivity: { 32670 clientNavigation: true 32671 } 32672 }, 32673 editorStyle: "wp-block-media-text-editor", 32674 style: "wp-block-media-text" 32675 }; 32676 32677 32678 const { 32679 name: media_text_name 32680 } = media_text_metadata; 32681 32682 const media_text_settings = { 32683 icon: media_and_text, 32684 example: { 32685 viewportWidth: 601, 32686 // Columns collapse "@media (max-width: 600px)". 32687 attributes: { 32688 mediaType: 'image', 32689 mediaUrl: 'https://s.w.org/images/core/5.3/Biologia_Centrali-Americana_-_Cantorchilus_semibadius_1902.jpg' 32690 }, 32691 innerBlocks: [{ 32692 name: 'core/paragraph', 32693 attributes: { 32694 content: (0,external_wp_i18n_namespaceObject.__)('The wren<br>Earns his living<br>Noiselessly.') 32695 } 32696 }, { 32697 name: 'core/paragraph', 32698 attributes: { 32699 content: (0,external_wp_i18n_namespaceObject.__)('— Kobayashi Issa (一茶)') 32700 } 32701 }] 32702 }, 32703 transforms: media_text_transforms, 32704 edit: media_text_edit, 32705 save: media_text_save_save, 32706 deprecated: media_text_deprecated 32707 }; 32708 const media_text_init = () => initBlock({ 32709 name: media_text_name, 32710 metadata: media_text_metadata, 32711 settings: media_text_settings 32712 }); 32713 32714 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/missing/edit.js 32715 /** 32716 * WordPress dependencies 32717 */ 32718 32719 32720 32721 32722 32723 32724 32725 32726 32727 function MissingEdit({ 32728 attributes, 32729 clientId 32730 }) { 32731 const { 32732 originalName, 32733 originalUndelimitedContent 32734 } = attributes; 32735 const hasContent = !!originalUndelimitedContent; 32736 const { 32737 hasFreeformBlock, 32738 hasHTMLBlock 32739 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 32740 const { 32741 canInsertBlockType, 32742 getBlockRootClientId 32743 } = select(external_wp_blockEditor_namespaceObject.store); 32744 return { 32745 hasFreeformBlock: canInsertBlockType('core/freeform', getBlockRootClientId(clientId)), 32746 hasHTMLBlock: canInsertBlockType('core/html', getBlockRootClientId(clientId)) 32747 }; 32748 }, [clientId]); 32749 const { 32750 replaceBlock 32751 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 32752 function convertToHTML() { 32753 replaceBlock(clientId, (0,external_wp_blocks_namespaceObject.createBlock)('core/html', { 32754 content: originalUndelimitedContent 32755 })); 32756 } 32757 const actions = []; 32758 let messageHTML; 32759 const convertToHtmlButton = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 32760 __next40pxDefaultSize: true, 32761 onClick: convertToHTML, 32762 variant: "primary", 32763 children: (0,external_wp_i18n_namespaceObject.__)('Keep as HTML') 32764 }, "convert"); 32765 if (hasContent && !hasFreeformBlock && !originalName) { 32766 if (hasHTMLBlock) { 32767 messageHTML = (0,external_wp_i18n_namespaceObject.__)('It appears you are trying to use the deprecated Classic block. You can leave this block intact, convert its content to a Custom HTML block, or remove it entirely. Alternatively, you can refresh the page to use the Classic block.'); 32768 actions.push(convertToHtmlButton); 32769 } else { 32770 messageHTML = (0,external_wp_i18n_namespaceObject.__)('It appears you are trying to use the deprecated Classic block. You can leave this block intact, or remove it entirely. Alternatively, you can refresh the page to use the Classic block.'); 32771 } 32772 } else if (hasContent && hasHTMLBlock) { 32773 messageHTML = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: block name */ 32774 (0,external_wp_i18n_namespaceObject.__)('Your site doesn’t include support for the "%s" block. You can leave it as-is, convert it to custom HTML, or remove it.'), originalName); 32775 actions.push(convertToHtmlButton); 32776 } else { 32777 messageHTML = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: block name */ 32778 (0,external_wp_i18n_namespaceObject.__)('Your site doesn’t include support for the "%s" block. You can leave it as-is or remove it.'), originalName); 32779 } 32780 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 32781 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 32782 className: 'has-warning' 32783 }), 32784 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 32785 actions: actions, 32786 children: messageHTML 32787 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_element_namespaceObject.RawHTML, { 32788 children: (0,external_wp_dom_namespaceObject.safeHTML)(originalUndelimitedContent) 32789 })] 32790 }); 32791 } 32792 32793 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/missing/save.js 32794 /** 32795 * WordPress dependencies 32796 */ 32797 32798 32799 function missing_save_save({ 32800 attributes 32801 }) { 32802 // Preserve the missing block's content. 32803 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_element_namespaceObject.RawHTML, { 32804 children: attributes.originalContent 32805 }); 32806 } 32807 32808 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/missing/index.js 32809 /** 32810 * WordPress dependencies 32811 */ 32812 32813 32814 /** 32815 * Internal dependencies 32816 */ 32817 32818 32819 const missing_metadata = { 32820 $schema: "https://schemas.wp.org/trunk/block.json", 32821 apiVersion: 3, 32822 name: "core/missing", 32823 title: "Unsupported", 32824 category: "text", 32825 description: "Your site doesn\u2019t include support for this block.", 32826 textdomain: "default", 32827 attributes: { 32828 originalName: { 32829 type: "string" 32830 }, 32831 originalUndelimitedContent: { 32832 type: "string" 32833 }, 32834 originalContent: { 32835 type: "string", 32836 source: "raw" 32837 } 32838 }, 32839 supports: { 32840 className: false, 32841 customClassName: false, 32842 inserter: false, 32843 html: false, 32844 reusable: false, 32845 interactivity: { 32846 clientNavigation: true 32847 } 32848 } 32849 }; 32850 32851 const { 32852 name: missing_name 32853 } = missing_metadata; 32854 32855 const missing_settings = { 32856 name: missing_name, 32857 __experimentalLabel(attributes, { 32858 context 32859 }) { 32860 if (context === 'accessibility') { 32861 const { 32862 originalName 32863 } = attributes; 32864 const originalBlockType = originalName ? (0,external_wp_blocks_namespaceObject.getBlockType)(originalName) : undefined; 32865 if (originalBlockType) { 32866 return originalBlockType.settings.title || originalName; 32867 } 32868 return ''; 32869 } 32870 }, 32871 edit: MissingEdit, 32872 save: missing_save_save 32873 }; 32874 const missing_init = () => initBlock({ 32875 name: missing_name, 32876 metadata: missing_metadata, 32877 settings: missing_settings 32878 }); 32879 32880 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/more.js 32881 /** 32882 * WordPress dependencies 32883 */ 32884 32885 32886 const more = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 32887 viewBox: "0 0 24 24", 32888 xmlns: "http://www.w3.org/2000/svg", 32889 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 32890 d: "M4 9v1.5h16V9H4zm12 5.5h4V13h-4v1.5zm-6 0h4V13h-4v1.5zm-6 0h4V13H4v1.5z" 32891 }) 32892 }); 32893 /* harmony default export */ const library_more = (more); 32894 32895 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/more/edit.js 32896 /** 32897 * WordPress dependencies 32898 */ 32899 32900 32901 32902 32903 32904 32905 32906 32907 const DEFAULT_TEXT = (0,external_wp_i18n_namespaceObject.__)('Read more'); 32908 function MoreEdit({ 32909 attributes: { 32910 customText, 32911 noTeaser 32912 }, 32913 insertBlocksAfter, 32914 setAttributes 32915 }) { 32916 const onChangeInput = event => { 32917 setAttributes({ 32918 customText: event.target.value 32919 }); 32920 }; 32921 const onKeyDown = ({ 32922 keyCode 32923 }) => { 32924 if (keyCode === external_wp_keycodes_namespaceObject.ENTER) { 32925 insertBlocksAfter([(0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getDefaultBlockName)())]); 32926 } 32927 }; 32928 const getHideExcerptHelp = checked => checked ? (0,external_wp_i18n_namespaceObject.__)('The excerpt is hidden.') : (0,external_wp_i18n_namespaceObject.__)('The excerpt is visible.'); 32929 const toggleHideExcerpt = () => setAttributes({ 32930 noTeaser: !noTeaser 32931 }); 32932 const style = { 32933 width: `${(customText ? customText : DEFAULT_TEXT).length + 1.2}em` 32934 }; 32935 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 32936 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 32937 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 32938 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 32939 __nextHasNoMarginBottom: true, 32940 label: (0,external_wp_i18n_namespaceObject.__)('Hide the excerpt on the full content page'), 32941 checked: !!noTeaser, 32942 onChange: toggleHideExcerpt, 32943 help: getHideExcerptHelp 32944 }) 32945 }) 32946 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 32947 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)(), 32948 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("input", { 32949 "aria-label": (0,external_wp_i18n_namespaceObject.__)('“Read more” link text'), 32950 type: "text", 32951 value: customText, 32952 placeholder: DEFAULT_TEXT, 32953 onChange: onChangeInput, 32954 onKeyDown: onKeyDown, 32955 style: style 32956 }) 32957 })] 32958 }); 32959 } 32960 32961 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/more/save.js 32962 /** 32963 * WordPress dependencies 32964 */ 32965 32966 32967 function more_save_save({ 32968 attributes: { 32969 customText, 32970 noTeaser 32971 } 32972 }) { 32973 const moreTag = customText ? `<!--more $customText}-->` : '<!--more-->'; 32974 const noTeaserTag = noTeaser ? '<!--noteaser-->' : ''; 32975 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_element_namespaceObject.RawHTML, { 32976 children: [moreTag, noTeaserTag].filter(Boolean).join('\n') 32977 }); 32978 } 32979 32980 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/more/transforms.js 32981 /** 32982 * WordPress dependencies 32983 */ 32984 32985 const more_transforms_transforms = { 32986 from: [{ 32987 type: 'raw', 32988 schema: { 32989 'wp-block': { 32990 attributes: ['data-block'] 32991 } 32992 }, 32993 isMatch: node => node.dataset && node.dataset.block === 'core/more', 32994 transform(node) { 32995 const { 32996 customText, 32997 noTeaser 32998 } = node.dataset; 32999 const attrs = {}; 33000 // Don't copy unless defined and not an empty string. 33001 if (customText) { 33002 attrs.customText = customText; 33003 } 33004 // Special handling for boolean. 33005 if (noTeaser === '') { 33006 attrs.noTeaser = true; 33007 } 33008 return (0,external_wp_blocks_namespaceObject.createBlock)('core/more', attrs); 33009 } 33010 }] 33011 }; 33012 /* harmony default export */ const more_transforms = (more_transforms_transforms); 33013 33014 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/more/index.js 33015 /** 33016 * WordPress dependencies 33017 */ 33018 33019 33020 /** 33021 * Internal dependencies 33022 */ 33023 33024 33025 const more_metadata = { 33026 $schema: "https://schemas.wp.org/trunk/block.json", 33027 apiVersion: 3, 33028 name: "core/more", 33029 title: "More", 33030 category: "design", 33031 description: "Content before this block will be shown in the excerpt on your archives page.", 33032 keywords: ["read more"], 33033 textdomain: "default", 33034 attributes: { 33035 customText: { 33036 type: "string", 33037 "default": "" 33038 }, 33039 noTeaser: { 33040 type: "boolean", 33041 "default": false 33042 } 33043 }, 33044 supports: { 33045 customClassName: false, 33046 className: false, 33047 html: false, 33048 multiple: false, 33049 interactivity: { 33050 clientNavigation: true 33051 } 33052 }, 33053 editorStyle: "wp-block-more-editor" 33054 }; 33055 33056 33057 const { 33058 name: more_name 33059 } = more_metadata; 33060 33061 const more_settings = { 33062 icon: library_more, 33063 example: {}, 33064 __experimentalLabel(attributes, { 33065 context 33066 }) { 33067 const customName = attributes?.metadata?.name; 33068 if (context === 'list-view' && customName) { 33069 return customName; 33070 } 33071 if (context === 'accessibility') { 33072 return attributes.customText; 33073 } 33074 }, 33075 transforms: more_transforms, 33076 edit: MoreEdit, 33077 save: more_save_save 33078 }; 33079 const more_init = () => initBlock({ 33080 name: more_name, 33081 metadata: more_metadata, 33082 settings: more_settings 33083 }); 33084 33085 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/navigation.js 33086 /** 33087 * WordPress dependencies 33088 */ 33089 33090 33091 const navigation = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 33092 viewBox: "0 0 24 24", 33093 xmlns: "http://www.w3.org/2000/svg", 33094 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 33095 d: "M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14.5c-3.6 0-6.5-2.9-6.5-6.5S8.4 5.5 12 5.5s6.5 2.9 6.5 6.5-2.9 6.5-6.5 6.5zM9 16l4.5-3L15 8.4l-4.5 3L9 16z" 33096 }) 33097 }); 33098 /* harmony default export */ const library_navigation = (navigation); 33099 33100 ;// CONCATENATED MODULE: external ["wp","a11y"] 33101 const external_wp_a11y_namespaceObject = window["wp"]["a11y"]; 33102 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/icon/index.js 33103 /** 33104 * WordPress dependencies 33105 */ 33106 33107 33108 /** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */ 33109 33110 /** 33111 * Return an SVG icon. 33112 * 33113 * @param {IconProps} props icon is the SVG component to render 33114 * size is a number specifiying the icon size in pixels 33115 * Other props will be passed to wrapped SVG component 33116 * @param {import('react').ForwardedRef<HTMLElement>} ref The forwarded ref to the SVG element. 33117 * 33118 * @return {JSX.Element} Icon component 33119 */ 33120 function Icon({ 33121 icon, 33122 size = 24, 33123 ...props 33124 }, ref) { 33125 return (0,external_wp_element_namespaceObject.cloneElement)(icon, { 33126 width: size, 33127 height: size, 33128 ...props, 33129 ref 33130 }); 33131 } 33132 /* harmony default export */ const build_module_icon = ((0,external_wp_element_namespaceObject.forwardRef)(Icon)); 33133 33134 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/close.js 33135 /** 33136 * WordPress dependencies 33137 */ 33138 33139 33140 const close_close = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 33141 xmlns: "http://www.w3.org/2000/svg", 33142 viewBox: "0 0 24 24", 33143 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 33144 d: "m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z" 33145 }) 33146 }); 33147 /* harmony default export */ const library_close = (close_close); 33148 33149 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/constants.js 33150 const constants_DEFAULT_BLOCK = { 33151 name: 'core/navigation-link' 33152 }; 33153 const PRIORITIZED_INSERTER_BLOCKS = ['core/navigation-link/page', 'core/navigation-link']; 33154 33155 // These parameters must be kept aligned with those in 33156 // lib/compat/wordpress-6.3/navigation-block-preloading.php 33157 // and 33158 // edit-site/src/components/sidebar-navigation-screen-navigation-menus/constants.js 33159 const PRELOADED_NAVIGATION_MENUS_QUERY = { 33160 per_page: 100, 33161 status: ['publish', 'draft'], 33162 order: 'desc', 33163 orderby: 'date' 33164 }; 33165 const SELECT_NAVIGATION_MENUS_ARGS = ['postType', 'wp_navigation', PRELOADED_NAVIGATION_MENUS_QUERY]; 33166 33167 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/use-navigation-menu.js 33168 /** 33169 * WordPress dependencies 33170 */ 33171 33172 33173 33174 /** 33175 * Internal dependencies 33176 */ 33177 33178 function useNavigationMenu(ref) { 33179 const permissions = (0,external_wp_coreData_namespaceObject.useResourcePermissions)({ 33180 kind: 'postType', 33181 name: 'wp_navigation', 33182 id: ref 33183 }); 33184 const { 33185 navigationMenu, 33186 isNavigationMenuResolved, 33187 isNavigationMenuMissing 33188 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 33189 return selectExistingMenu(select, ref); 33190 }, [ref]); 33191 const { 33192 // Can the user create navigation menus? 33193 canCreate: canCreateNavigationMenus, 33194 // Can the user update the specific navigation menu with the given post ID? 33195 canUpdate: canUpdateNavigationMenu, 33196 // Can the user delete the specific navigation menu with the given post ID? 33197 canDelete: canDeleteNavigationMenu, 33198 isResolving: isResolvingPermissions, 33199 hasResolved: hasResolvedPermissions 33200 } = permissions; 33201 const { 33202 records: navigationMenus, 33203 isResolving: isResolvingNavigationMenus, 33204 hasResolved: hasResolvedNavigationMenus 33205 } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', `wp_navigation`, PRELOADED_NAVIGATION_MENUS_QUERY); 33206 const canSwitchNavigationMenu = ref ? navigationMenus?.length > 1 : navigationMenus?.length > 0; 33207 return { 33208 navigationMenu, 33209 isNavigationMenuResolved, 33210 isNavigationMenuMissing, 33211 navigationMenus, 33212 isResolvingNavigationMenus, 33213 hasResolvedNavigationMenus, 33214 canSwitchNavigationMenu, 33215 canUserCreateNavigationMenus: canCreateNavigationMenus, 33216 isResolvingCanUserCreateNavigationMenus: isResolvingPermissions, 33217 hasResolvedCanUserCreateNavigationMenus: hasResolvedPermissions, 33218 canUserUpdateNavigationMenu: canUpdateNavigationMenu, 33219 hasResolvedCanUserUpdateNavigationMenu: ref ? hasResolvedPermissions : undefined, 33220 canUserDeleteNavigationMenu: canDeleteNavigationMenu, 33221 hasResolvedCanUserDeleteNavigationMenu: ref ? hasResolvedPermissions : undefined 33222 }; 33223 } 33224 function selectExistingMenu(select, ref) { 33225 if (!ref) { 33226 return { 33227 isNavigationMenuResolved: false, 33228 isNavigationMenuMissing: true 33229 }; 33230 } 33231 const { 33232 getEntityRecord, 33233 getEditedEntityRecord, 33234 hasFinishedResolution 33235 } = select(external_wp_coreData_namespaceObject.store); 33236 const args = ['postType', 'wp_navigation', ref]; 33237 const navigationMenu = getEntityRecord(...args); 33238 const editedNavigationMenu = getEditedEntityRecord(...args); 33239 const hasResolvedNavigationMenu = hasFinishedResolution('getEditedEntityRecord', args); 33240 33241 // Only published Navigation posts are considered valid. 33242 // Draft Navigation posts are valid only on the editor, 33243 // requiring a post update to publish to show in frontend. 33244 // To achieve that, index.php must reflect this validation only for published. 33245 const isNavigationMenuPublishedOrDraft = editedNavigationMenu.status === 'publish' || editedNavigationMenu.status === 'draft'; 33246 return { 33247 isNavigationMenuResolved: hasResolvedNavigationMenu, 33248 isNavigationMenuMissing: hasResolvedNavigationMenu && (!navigationMenu || !isNavigationMenuPublishedOrDraft), 33249 // getEditedEntityRecord will return the post regardless of status. 33250 // Therefore if the found post is not published then we should ignore it. 33251 navigationMenu: isNavigationMenuPublishedOrDraft ? editedNavigationMenu : null 33252 }; 33253 } 33254 33255 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/use-navigation-entities.js 33256 /** 33257 * WordPress dependencies 33258 */ 33259 33260 33261 /** 33262 * @typedef {Object} NavigationEntitiesData 33263 * @property {Array|undefined} pages - a collection of WP Post entity objects of post type "Page". 33264 * @property {boolean} isResolvingPages - indicates whether the request to fetch pages is currently resolving. 33265 * @property {boolean} hasResolvedPages - indicates whether the request to fetch pages has finished resolving. 33266 * @property {Array|undefined} menus - a collection of Menu entity objects. 33267 * @property {boolean} isResolvingMenus - indicates whether the request to fetch menus is currently resolving. 33268 * @property {boolean} hasResolvedMenus - indicates whether the request to fetch menus has finished resolving. 33269 * @property {Array|undefined} menusItems - a collection of Menu Item entity objects for the current menuId. 33270 * @property {boolean} hasResolvedMenuItems - indicates whether the request to fetch menuItems has finished resolving. 33271 * @property {boolean} hasPages - indicates whether there is currently any data for pages. 33272 * @property {boolean} hasMenus - indicates whether there is currently any data for menus. 33273 */ 33274 33275 /** 33276 * Manages fetching and resolution state for all entities required 33277 * for the Navigation block. 33278 * 33279 * @param {number} menuId the menu for which to retrieve menuItem data. 33280 * @return { NavigationEntitiesData } the entity data. 33281 */ 33282 function useNavigationEntities(menuId) { 33283 const { 33284 records: menus, 33285 isResolving: isResolvingMenus, 33286 hasResolved: hasResolvedMenus 33287 } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('root', 'menu', { 33288 per_page: -1, 33289 context: 'view' 33290 }); 33291 const { 33292 records: pages, 33293 isResolving: isResolvingPages, 33294 hasResolved: hasResolvedPages 33295 } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', 'page', { 33296 parent: 0, 33297 order: 'asc', 33298 orderby: 'id', 33299 per_page: -1, 33300 context: 'view' 33301 }); 33302 const { 33303 records: menuItems, 33304 hasResolved: hasResolvedMenuItems 33305 } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('root', 'menuItem', { 33306 menus: menuId, 33307 per_page: -1, 33308 context: 'view' 33309 }, { 33310 enabled: !!menuId 33311 }); 33312 return { 33313 pages, 33314 isResolvingPages, 33315 hasResolvedPages, 33316 hasPages: !!(hasResolvedPages && pages?.length), 33317 menus, 33318 isResolvingMenus, 33319 hasResolvedMenus, 33320 hasMenus: !!(hasResolvedMenus && menus?.length), 33321 menuItems, 33322 hasResolvedMenuItems 33323 }; 33324 } 33325 33326 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/placeholder/placeholder-preview.js 33327 /** 33328 * WordPress dependencies 33329 */ 33330 33331 33332 33333 33334 const PlaceholderPreview = ({ 33335 isVisible = true 33336 }) => { 33337 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 33338 "aria-hidden": !isVisible ? true : undefined, 33339 className: "wp-block-navigation-placeholder__preview", 33340 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 33341 className: "wp-block-navigation-placeholder__actions__indicator", 33342 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, { 33343 icon: library_navigation 33344 }), (0,external_wp_i18n_namespaceObject.__)('Navigation')] 33345 }) 33346 }); 33347 }; 33348 /* harmony default export */ const placeholder_preview = (PlaceholderPreview); 33349 33350 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/more-vertical.js 33351 /** 33352 * WordPress dependencies 33353 */ 33354 33355 33356 const moreVertical = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 33357 xmlns: "http://www.w3.org/2000/svg", 33358 viewBox: "0 0 24 24", 33359 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 33360 d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" 33361 }) 33362 }); 33363 /* harmony default export */ const more_vertical = (moreVertical); 33364 33365 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/navigation-menu-selector.js 33366 /** 33367 * WordPress dependencies 33368 */ 33369 33370 33371 33372 33373 33374 33375 33376 /** 33377 * Internal dependencies 33378 */ 33379 33380 33381 33382 33383 33384 function buildMenuLabel(title, id, status) { 33385 if (!title) { 33386 /* translators: %s: the index of the menu in the list of menus. */ 33387 return (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('(no title %s)'), id); 33388 } 33389 if (status === 'publish') { 33390 return (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title); 33391 } 33392 return (0,external_wp_i18n_namespaceObject.sprintf)( 33393 // translators: 1: title of the menu. 2: status of the menu (draft, pending, etc.). 33394 (0,external_wp_i18n_namespaceObject.__)('%1$s (%2$s)'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title), status); 33395 } 33396 function NavigationMenuSelector({ 33397 currentMenuId, 33398 onSelectNavigationMenu, 33399 onSelectClassicMenu, 33400 onCreateNew, 33401 actionLabel, 33402 createNavigationMenuIsSuccess, 33403 createNavigationMenuIsError 33404 }) { 33405 /* translators: %s: The name of a menu. */ 33406 const createActionLabel = (0,external_wp_i18n_namespaceObject.__)("Create from '%s'"); 33407 const [isUpdatingMenuRef, setIsUpdatingMenuRef] = (0,external_wp_element_namespaceObject.useState)(false); 33408 actionLabel = actionLabel || createActionLabel; 33409 const { 33410 menus: classicMenus 33411 } = useNavigationEntities(); 33412 const { 33413 navigationMenus, 33414 isResolvingNavigationMenus, 33415 hasResolvedNavigationMenus, 33416 canUserCreateNavigationMenus, 33417 canSwitchNavigationMenu 33418 } = useNavigationMenu(); 33419 const [currentTitle] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', 'wp_navigation', 'title'); 33420 const menuChoices = (0,external_wp_element_namespaceObject.useMemo)(() => { 33421 return navigationMenus?.map(({ 33422 id, 33423 title, 33424 status 33425 }, index) => { 33426 const label = buildMenuLabel(title?.rendered, index + 1, status); 33427 return { 33428 value: id, 33429 label, 33430 ariaLabel: (0,external_wp_i18n_namespaceObject.sprintf)(actionLabel, label), 33431 disabled: isUpdatingMenuRef || isResolvingNavigationMenus || !hasResolvedNavigationMenus 33432 }; 33433 }) || []; 33434 }, [navigationMenus, actionLabel, isResolvingNavigationMenus, hasResolvedNavigationMenus, isUpdatingMenuRef]); 33435 const hasNavigationMenus = !!navigationMenus?.length; 33436 const hasClassicMenus = !!classicMenus?.length; 33437 const showNavigationMenus = !!canSwitchNavigationMenu; 33438 const showClassicMenus = !!canUserCreateNavigationMenus; 33439 const noMenuSelected = hasNavigationMenus && !currentMenuId; 33440 const noBlockMenus = !hasNavigationMenus && hasResolvedNavigationMenus; 33441 const menuUnavailable = hasResolvedNavigationMenus && currentMenuId === null; 33442 let selectorLabel = ''; 33443 if (isResolvingNavigationMenus) { 33444 selectorLabel = (0,external_wp_i18n_namespaceObject.__)('Loading…'); 33445 } else if (noMenuSelected || noBlockMenus || menuUnavailable) { 33446 // Note: classic Menus may be available. 33447 selectorLabel = (0,external_wp_i18n_namespaceObject.__)('Choose or create a Navigation Menu'); 33448 } else { 33449 // Current Menu's title. 33450 selectorLabel = currentTitle; 33451 } 33452 (0,external_wp_element_namespaceObject.useEffect)(() => { 33453 if (isUpdatingMenuRef && (createNavigationMenuIsSuccess || createNavigationMenuIsError)) { 33454 setIsUpdatingMenuRef(false); 33455 } 33456 }, [hasResolvedNavigationMenus, createNavigationMenuIsSuccess, canUserCreateNavigationMenus, createNavigationMenuIsError, isUpdatingMenuRef, menuUnavailable, noBlockMenus, noMenuSelected]); 33457 const NavigationMenuSelectorDropdown = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, { 33458 label: selectorLabel, 33459 icon: more_vertical, 33460 toggleProps: { 33461 size: 'small' 33462 }, 33463 children: ({ 33464 onClose 33465 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 33466 children: [showNavigationMenus && hasNavigationMenus && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, { 33467 label: (0,external_wp_i18n_namespaceObject.__)('Menus'), 33468 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItemsChoice, { 33469 value: currentMenuId, 33470 onSelect: menuId => { 33471 onSelectNavigationMenu(menuId); 33472 onClose(); 33473 }, 33474 choices: menuChoices 33475 }) 33476 }), showClassicMenus && hasClassicMenus && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, { 33477 label: (0,external_wp_i18n_namespaceObject.__)('Import Classic Menus'), 33478 children: classicMenus?.map(menu => { 33479 const label = (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(menu.name); 33480 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { 33481 onClick: async () => { 33482 setIsUpdatingMenuRef(true); 33483 await onSelectClassicMenu(menu); 33484 setIsUpdatingMenuRef(false); 33485 onClose(); 33486 }, 33487 "aria-label": (0,external_wp_i18n_namespaceObject.sprintf)(createActionLabel, label), 33488 disabled: isUpdatingMenuRef || isResolvingNavigationMenus || !hasResolvedNavigationMenus, 33489 children: label 33490 }, menu.id); 33491 }) 33492 }), canUserCreateNavigationMenus && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, { 33493 label: (0,external_wp_i18n_namespaceObject.__)('Tools'), 33494 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { 33495 onClick: async () => { 33496 setIsUpdatingMenuRef(true); 33497 await onCreateNew(); 33498 setIsUpdatingMenuRef(false); 33499 onClose(); 33500 }, 33501 disabled: isUpdatingMenuRef || isResolvingNavigationMenus || !hasResolvedNavigationMenus, 33502 children: (0,external_wp_i18n_namespaceObject.__)('Create new Menu') 33503 }) 33504 })] 33505 }) 33506 }); 33507 return NavigationMenuSelectorDropdown; 33508 } 33509 /* harmony default export */ const navigation_menu_selector = (NavigationMenuSelector); 33510 33511 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/placeholder/index.js 33512 /** 33513 * WordPress dependencies 33514 */ 33515 33516 33517 33518 33519 33520 33521 /** 33522 * Internal dependencies 33523 */ 33524 33525 33526 33527 33528 33529 33530 function NavigationPlaceholder({ 33531 isSelected, 33532 currentMenuId, 33533 clientId, 33534 canUserCreateNavigationMenus = false, 33535 isResolvingCanUserCreateNavigationMenus, 33536 onSelectNavigationMenu, 33537 onSelectClassicMenu, 33538 onCreateEmpty 33539 }) { 33540 const { 33541 isResolvingMenus, 33542 hasResolvedMenus 33543 } = useNavigationEntities(); 33544 (0,external_wp_element_namespaceObject.useEffect)(() => { 33545 if (!isSelected) { 33546 return; 33547 } 33548 if (isResolvingMenus) { 33549 (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Loading navigation block setup options…')); 33550 } 33551 if (hasResolvedMenus) { 33552 (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Navigation block setup options ready.')); 33553 } 33554 }, [hasResolvedMenus, isResolvingMenus, isSelected]); 33555 const isResolvingActions = isResolvingMenus && isResolvingCanUserCreateNavigationMenus; 33556 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 33557 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Placeholder, { 33558 className: "wp-block-navigation-placeholder", 33559 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(placeholder_preview, { 33560 isVisible: !isSelected 33561 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 33562 "aria-hidden": !isSelected ? true : undefined, 33563 className: "wp-block-navigation-placeholder__controls", 33564 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 33565 className: "wp-block-navigation-placeholder__actions", 33566 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 33567 className: "wp-block-navigation-placeholder__actions__indicator", 33568 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, { 33569 icon: library_navigation 33570 }), " ", (0,external_wp_i18n_namespaceObject.__)('Navigation')] 33571 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("hr", {}), isResolvingActions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(navigation_menu_selector, { 33572 currentMenuId: currentMenuId, 33573 clientId: clientId, 33574 onSelectNavigationMenu: onSelectNavigationMenu, 33575 onSelectClassicMenu: onSelectClassicMenu 33576 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("hr", {}), canUserCreateNavigationMenus && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 33577 __next40pxDefaultSize: true, 33578 variant: "tertiary", 33579 onClick: onCreateEmpty, 33580 children: (0,external_wp_i18n_namespaceObject.__)('Start empty') 33581 })] 33582 }) 33583 })] 33584 }) 33585 }); 33586 } 33587 33588 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/menu.js 33589 /** 33590 * WordPress dependencies 33591 */ 33592 33593 33594 const menu = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 33595 xmlns: "http://www.w3.org/2000/svg", 33596 viewBox: "0 0 24 24", 33597 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 33598 d: "M5 5v1.5h14V5H5zm0 7.8h14v-1.5H5v1.5zM5 19h14v-1.5H5V19z" 33599 }) 33600 }); 33601 /* harmony default export */ const library_menu = (menu); 33602 33603 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/overlay-menu-icon.js 33604 /** 33605 * WordPress dependencies 33606 */ 33607 33608 33609 33610 33611 function OverlayMenuIcon({ 33612 icon 33613 }) { 33614 if (icon === 'menu') { 33615 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, { 33616 icon: library_menu 33617 }); 33618 } 33619 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, { 33620 xmlns: "http://www.w3.org/2000/svg", 33621 viewBox: "0 0 24 24", 33622 width: "24", 33623 height: "24", 33624 "aria-hidden": "true", 33625 focusable: "false", 33626 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Rect, { 33627 x: "4", 33628 y: "7.5", 33629 width: "16", 33630 height: "1.5" 33631 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Rect, { 33632 x: "4", 33633 y: "15", 33634 width: "16", 33635 height: "1.5" 33636 })] 33637 }); 33638 } 33639 33640 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/responsive-wrapper.js 33641 /** 33642 * External dependencies 33643 */ 33644 33645 33646 /** 33647 * WordPress dependencies 33648 */ 33649 33650 33651 33652 33653 33654 /** 33655 * Internal dependencies 33656 */ 33657 33658 33659 33660 33661 function ResponsiveWrapper({ 33662 children, 33663 id, 33664 isOpen, 33665 isResponsive, 33666 onToggle, 33667 isHiddenByDefault, 33668 overlayBackgroundColor, 33669 overlayTextColor, 33670 hasIcon, 33671 icon 33672 }) { 33673 if (!isResponsive) { 33674 return children; 33675 } 33676 const responsiveContainerClasses = dist_clsx('wp-block-navigation__responsive-container', { 33677 'has-text-color': !!overlayTextColor.color || !!overlayTextColor?.class, 33678 [(0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', overlayTextColor?.slug)]: !!overlayTextColor?.slug, 33679 'has-background': !!overlayBackgroundColor.color || overlayBackgroundColor?.class, 33680 [(0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', overlayBackgroundColor?.slug)]: !!overlayBackgroundColor?.slug, 33681 'is-menu-open': isOpen, 33682 'hidden-by-default': isHiddenByDefault 33683 }); 33684 const styles = { 33685 color: !overlayTextColor?.slug && overlayTextColor?.color, 33686 backgroundColor: !overlayBackgroundColor?.slug && overlayBackgroundColor?.color && overlayBackgroundColor.color 33687 }; 33688 const openButtonClasses = dist_clsx('wp-block-navigation__responsive-container-open', { 33689 'always-shown': isHiddenByDefault 33690 }); 33691 const modalId = `$id}-modal`; 33692 const dialogProps = { 33693 className: 'wp-block-navigation__responsive-dialog', 33694 ...(isOpen && { 33695 role: 'dialog', 33696 'aria-modal': true, 33697 'aria-label': (0,external_wp_i18n_namespaceObject.__)('Menu') 33698 }) 33699 }; 33700 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 33701 children: [!isOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Button, { 33702 __next40pxDefaultSize: true, 33703 "aria-haspopup": "true", 33704 "aria-label": hasIcon && (0,external_wp_i18n_namespaceObject.__)('Open menu'), 33705 className: openButtonClasses, 33706 onClick: () => onToggle(true), 33707 children: [hasIcon && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(OverlayMenuIcon, { 33708 icon: icon 33709 }), !hasIcon && (0,external_wp_i18n_namespaceObject.__)('Menu')] 33710 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 33711 className: responsiveContainerClasses, 33712 style: styles, 33713 id: modalId, 33714 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 33715 className: "wp-block-navigation__responsive-close", 33716 tabIndex: "-1", 33717 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 33718 ...dialogProps, 33719 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Button, { 33720 __next40pxDefaultSize: true, 33721 className: "wp-block-navigation__responsive-container-close", 33722 "aria-label": hasIcon && (0,external_wp_i18n_namespaceObject.__)('Close menu'), 33723 onClick: () => onToggle(false), 33724 children: [hasIcon && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, { 33725 icon: library_close 33726 }), !hasIcon && (0,external_wp_i18n_namespaceObject.__)('Close')] 33727 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 33728 className: "wp-block-navigation__responsive-container-content", 33729 id: `$modalId}-content`, 33730 children: children 33731 })] 33732 }) 33733 }) 33734 })] 33735 }); 33736 } 33737 33738 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/inner-blocks.js 33739 /** 33740 * WordPress dependencies 33741 */ 33742 33743 33744 33745 33746 33747 /** 33748 * Internal dependencies 33749 */ 33750 33751 33752 33753 function NavigationInnerBlocks({ 33754 clientId, 33755 hasCustomPlaceholder, 33756 orientation, 33757 templateLock 33758 }) { 33759 const { 33760 isImmediateParentOfSelectedBlock, 33761 selectedBlockHasChildren, 33762 isSelected 33763 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 33764 const { 33765 getBlockCount, 33766 hasSelectedInnerBlock, 33767 getSelectedBlockClientId 33768 } = select(external_wp_blockEditor_namespaceObject.store); 33769 const selectedBlockId = getSelectedBlockClientId(); 33770 return { 33771 isImmediateParentOfSelectedBlock: hasSelectedInnerBlock(clientId, false), 33772 selectedBlockHasChildren: !!getBlockCount(selectedBlockId), 33773 // This prop is already available but computing it here ensures it's 33774 // fresh compared to isImmediateParentOfSelectedBlock. 33775 isSelected: selectedBlockId === clientId 33776 }; 33777 }, [clientId]); 33778 const [blocks, onInput, onChange] = (0,external_wp_coreData_namespaceObject.useEntityBlockEditor)('postType', 'wp_navigation'); 33779 33780 // When the block is selected itself or has a top level item selected that 33781 // doesn't itself have children, show the standard appender. Else show no 33782 // appender. 33783 const parentOrChildHasSelection = isSelected || isImmediateParentOfSelectedBlock && !selectedBlockHasChildren; 33784 const placeholder = (0,external_wp_element_namespaceObject.useMemo)(() => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(placeholder_preview, {}), []); 33785 const hasMenuItems = !!blocks?.length; 33786 33787 // If there is a `ref` attribute pointing to a `wp_navigation` but 33788 // that menu has no **items** (i.e. empty) then show a placeholder. 33789 // The block must also be selected else the placeholder will display 33790 // alongside the appender. 33791 const showPlaceholder = !hasCustomPlaceholder && !hasMenuItems && !isSelected; 33792 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)({ 33793 className: 'wp-block-navigation__container' 33794 }, { 33795 value: blocks, 33796 onInput, 33797 onChange, 33798 prioritizedInserterBlocks: PRIORITIZED_INSERTER_BLOCKS, 33799 defaultBlock: constants_DEFAULT_BLOCK, 33800 directInsert: true, 33801 orientation, 33802 templateLock, 33803 // As an exception to other blocks which feature nesting, show 33804 // the block appender even when a child block is selected. 33805 // This should be a temporary fix, to be replaced by improvements to 33806 // the sibling inserter. 33807 // See https://github.com/WordPress/gutenberg/issues/37572. 33808 renderAppender: isSelected || isImmediateParentOfSelectedBlock && !selectedBlockHasChildren || 33809 // Show the appender while dragging to allow inserting element between item and the appender. 33810 parentOrChildHasSelection ? external_wp_blockEditor_namespaceObject.InnerBlocks.ButtonBlockAppender : false, 33811 placeholder: showPlaceholder ? placeholder : undefined, 33812 __experimentalCaptureToolbars: true, 33813 __unstableDisableLayoutClassNames: true 33814 }); 33815 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 33816 ...innerBlocksProps 33817 }); 33818 } 33819 33820 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/navigation-menu-name-control.js 33821 /** 33822 * WordPress dependencies 33823 */ 33824 33825 33826 33827 33828 function NavigationMenuNameControl() { 33829 const [title, updateTitle] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', 'wp_navigation', 'title'); 33830 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 33831 __next40pxDefaultSize: true, 33832 __nextHasNoMarginBottom: true, 33833 label: (0,external_wp_i18n_namespaceObject.__)('Menu name'), 33834 value: title, 33835 onChange: updateTitle 33836 }); 33837 } 33838 33839 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/are-blocks-dirty.js 33840 function areBlocksDirty(originalBlocks, blocks) { 33841 return !isDeepEqual(originalBlocks, blocks, (prop, x) => { 33842 // Skip inner blocks of page list during comparison as they 33843 // are **always** controlled and may be updated async due to 33844 // syncing with entity records. Left unchecked this would 33845 // inadvertently trigger the dirty state. 33846 if (x?.name === 'core/page-list' && prop === 'innerBlocks') { 33847 return true; 33848 } 33849 }); 33850 } 33851 33852 /** 33853 * Conditionally compares two candidates for deep equality. 33854 * Provides an option to skip a given property of an object during comparison. 33855 * 33856 * @param {*} x 1st candidate for comparison 33857 * @param {*} y 2nd candidate for comparison 33858 * @param {Function|undefined} shouldSkip a function which can be used to skip a given property of an object. 33859 * @return {boolean} whether the two candidates are deeply equal. 33860 */ 33861 const isDeepEqual = (x, y, shouldSkip) => { 33862 if (x === y) { 33863 return true; 33864 } else if (typeof x === 'object' && x !== null && x !== undefined && typeof y === 'object' && y !== null && y !== undefined) { 33865 if (Object.keys(x).length !== Object.keys(y).length) { 33866 return false; 33867 } 33868 for (const prop in x) { 33869 if (y.hasOwnProperty(prop)) { 33870 // Afford skipping a given property of an object. 33871 if (shouldSkip && shouldSkip(prop, x)) { 33872 return true; 33873 } 33874 if (!isDeepEqual(x[prop], y[prop], shouldSkip)) { 33875 return false; 33876 } 33877 } else { 33878 return false; 33879 } 33880 } 33881 return true; 33882 } 33883 return false; 33884 }; 33885 33886 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/unsaved-inner-blocks.js 33887 /** 33888 * WordPress dependencies 33889 */ 33890 33891 33892 33893 33894 33895 33896 /** 33897 * Internal dependencies 33898 */ 33899 33900 33901 33902 const EMPTY_OBJECT = {}; 33903 function UnsavedInnerBlocks({ 33904 blocks, 33905 createNavigationMenu, 33906 hasSelection 33907 }) { 33908 const originalBlocksRef = (0,external_wp_element_namespaceObject.useRef)(); 33909 (0,external_wp_element_namespaceObject.useEffect)(() => { 33910 // Initially store the uncontrolled inner blocks for 33911 // dirty state comparison. 33912 if (!originalBlocksRef?.current) { 33913 originalBlocksRef.current = blocks; 33914 } 33915 }, [blocks]); 33916 33917 // If the current inner blocks are different from the original inner blocks 33918 // from the post content then the user has made changes to the inner blocks. 33919 // At this point the inner blocks can be considered "dirty". 33920 // Note: referential equality is not sufficient for comparison as the inner blocks 33921 // of the page list are controlled and may be updated async due to syncing with 33922 // entity records. As a result we need to perform a deep equality check skipping 33923 // the page list's inner blocks. 33924 const innerBlocksAreDirty = areBlocksDirty(originalBlocksRef?.current, blocks); 33925 33926 // The block will be disabled in a block preview, use this as a way of 33927 // avoiding the side-effects of this component for block previews. 33928 const isDisabled = (0,external_wp_element_namespaceObject.useContext)(external_wp_components_namespaceObject.Disabled.Context); 33929 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)({ 33930 className: 'wp-block-navigation__container' 33931 }, { 33932 renderAppender: hasSelection ? undefined : false, 33933 defaultBlock: constants_DEFAULT_BLOCK, 33934 directInsert: true 33935 }); 33936 const { 33937 isSaving, 33938 hasResolvedAllNavigationMenus 33939 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 33940 if (isDisabled) { 33941 return EMPTY_OBJECT; 33942 } 33943 const { 33944 hasFinishedResolution, 33945 isSavingEntityRecord 33946 } = select(external_wp_coreData_namespaceObject.store); 33947 return { 33948 isSaving: isSavingEntityRecord('postType', 'wp_navigation'), 33949 hasResolvedAllNavigationMenus: hasFinishedResolution('getEntityRecords', SELECT_NAVIGATION_MENUS_ARGS) 33950 }; 33951 }, [isDisabled]); 33952 33953 // Automatically save the uncontrolled blocks. 33954 (0,external_wp_element_namespaceObject.useEffect)(() => { 33955 // The block will be disabled when used in a BlockPreview. 33956 // In this case avoid automatic creation of a wp_navigation post. 33957 // Otherwise the user will be spammed with lots of menus! 33958 // 33959 // Also ensure other navigation menus have loaded so an 33960 // accurate name can be created. 33961 // 33962 // Don't try saving when another save is already 33963 // in progress. 33964 // 33965 // And finally only create the menu when the block is selected, 33966 // which is an indication they want to start editing. 33967 if (isDisabled || isSaving || !hasResolvedAllNavigationMenus || !hasSelection || !innerBlocksAreDirty) { 33968 return; 33969 } 33970 createNavigationMenu(null, blocks); 33971 }, [blocks, createNavigationMenu, isDisabled, isSaving, hasResolvedAllNavigationMenus, innerBlocksAreDirty, hasSelection]); 33972 const Wrapper = isSaving ? external_wp_components_namespaceObject.Disabled : 'div'; 33973 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Wrapper, { 33974 ...innerBlocksProps 33975 }); 33976 } 33977 33978 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/navigation-menu-delete-control.js 33979 /** 33980 * WordPress dependencies 33981 */ 33982 33983 33984 33985 33986 33987 33988 33989 33990 function NavigationMenuDeleteControl({ 33991 onDelete 33992 }) { 33993 const [isConfirmDialogVisible, setIsConfirmDialogVisible] = (0,external_wp_element_namespaceObject.useState)(false); 33994 const id = (0,external_wp_coreData_namespaceObject.useEntityId)('postType', 'wp_navigation'); 33995 const { 33996 deleteEntityRecord 33997 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 33998 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 33999 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 34000 __next40pxDefaultSize: true, 34001 className: "wp-block-navigation-delete-menu-button", 34002 variant: "secondary", 34003 isDestructive: true, 34004 onClick: () => { 34005 setIsConfirmDialogVisible(true); 34006 }, 34007 children: (0,external_wp_i18n_namespaceObject.__)('Delete menu') 34008 }), isConfirmDialogVisible && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, { 34009 isOpen: true, 34010 onConfirm: () => { 34011 deleteEntityRecord('postType', 'wp_navigation', id, { 34012 force: true 34013 }); 34014 onDelete(); 34015 }, 34016 onCancel: () => { 34017 setIsConfirmDialogVisible(false); 34018 }, 34019 confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Delete'), 34020 size: "medium", 34021 children: (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to delete this Navigation Menu?') 34022 })] 34023 }); 34024 } 34025 34026 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/use-navigation-notice.js 34027 /** 34028 * WordPress dependencies 34029 */ 34030 34031 34032 34033 function useNavigationNotice({ 34034 name, 34035 message = '' 34036 } = {}) { 34037 const noticeRef = (0,external_wp_element_namespaceObject.useRef)(); 34038 const { 34039 createWarningNotice, 34040 removeNotice 34041 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 34042 const showNotice = (0,external_wp_element_namespaceObject.useCallback)(customMsg => { 34043 if (noticeRef.current) { 34044 return; 34045 } 34046 noticeRef.current = name; 34047 createWarningNotice(customMsg || message, { 34048 id: noticeRef.current, 34049 type: 'snackbar' 34050 }); 34051 }, [noticeRef, createWarningNotice, message, name]); 34052 const hideNotice = (0,external_wp_element_namespaceObject.useCallback)(() => { 34053 if (!noticeRef.current) { 34054 return; 34055 } 34056 removeNotice(noticeRef.current); 34057 noticeRef.current = null; 34058 }, [noticeRef, removeNotice]); 34059 return [showNotice, hideNotice]; 34060 } 34061 /* harmony default export */ const use_navigation_notice = (useNavigationNotice); 34062 34063 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/overlay-menu-preview.js 34064 /** 34065 * WordPress dependencies 34066 */ 34067 34068 34069 34070 /** 34071 * Internal dependencies 34072 */ 34073 34074 34075 34076 34077 function OverlayMenuPreview({ 34078 setAttributes, 34079 hasIcon, 34080 icon 34081 }) { 34082 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 34083 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 34084 __nextHasNoMarginBottom: true, 34085 label: (0,external_wp_i18n_namespaceObject.__)('Show icon button'), 34086 help: (0,external_wp_i18n_namespaceObject.__)('Configure the visual appearance of the button that toggles the overlay menu.'), 34087 onChange: value => setAttributes({ 34088 hasIcon: value 34089 }), 34090 checked: hasIcon 34091 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, { 34092 __next40pxDefaultSize: true, 34093 __nextHasNoMarginBottom: true, 34094 className: "wp-block-navigation__overlay-menu-icon-toggle-group", 34095 label: (0,external_wp_i18n_namespaceObject.__)('Icon'), 34096 value: icon, 34097 onChange: value => setAttributes({ 34098 icon: value 34099 }), 34100 isBlock: true, 34101 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 34102 value: "handle", 34103 "aria-label": (0,external_wp_i18n_namespaceObject.__)('handle'), 34104 label: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(OverlayMenuIcon, { 34105 icon: "handle" 34106 }) 34107 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 34108 value: "menu", 34109 "aria-label": (0,external_wp_i18n_namespaceObject.__)('menu'), 34110 label: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(OverlayMenuIcon, { 34111 icon: "menu" 34112 }) 34113 })] 34114 })] 34115 }); 34116 } 34117 34118 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/menu-items-to-blocks.js 34119 /** 34120 * WordPress dependencies 34121 */ 34122 34123 34124 34125 /** 34126 * Convert a flat menu item structure to a nested blocks structure. 34127 * 34128 * @param {Object[]} menuItems An array of menu items. 34129 * 34130 * @return {WPBlock[]} An array of blocks. 34131 */ 34132 function menuItemsToBlocks(menuItems) { 34133 if (!menuItems) { 34134 return null; 34135 } 34136 const menuTree = createDataTree(menuItems); 34137 const blocks = mapMenuItemsToBlocks(menuTree); 34138 return (0,external_wp_hooks_namespaceObject.applyFilters)('blocks.navigation.__unstableMenuItemsToBlocks', blocks, menuItems); 34139 } 34140 34141 /** 34142 * A recursive function that maps menu item nodes to blocks. 34143 * 34144 * @param {WPNavMenuItem[]} menuItems An array of WPNavMenuItem items. 34145 * @param {number} level An integer representing the nesting level. 34146 * @return {Object} Object containing innerBlocks and mapping. 34147 */ 34148 function mapMenuItemsToBlocks(menuItems, level = 0) { 34149 let mapping = {}; 34150 34151 // The menuItem should be in menu_order sort order. 34152 const sortedItems = [...menuItems].sort((a, b) => a.menu_order - b.menu_order); 34153 const innerBlocks = sortedItems.map(menuItem => { 34154 if (menuItem.type === 'block') { 34155 const [block] = (0,external_wp_blocks_namespaceObject.parse)(menuItem.content.raw); 34156 if (!block) { 34157 return (0,external_wp_blocks_namespaceObject.createBlock)('core/freeform', { 34158 content: menuItem.content 34159 }); 34160 } 34161 return block; 34162 } 34163 const blockType = menuItem.children?.length ? 'core/navigation-submenu' : 'core/navigation-link'; 34164 const attributes = menuItemToBlockAttributes(menuItem, blockType, level); 34165 34166 // If there are children recurse to build those nested blocks. 34167 const { 34168 innerBlocks: nestedBlocks = [], 34169 // alias to avoid shadowing 34170 mapping: nestedMapping = {} // alias to avoid shadowing 34171 } = menuItem.children?.length ? mapMenuItemsToBlocks(menuItem.children, level + 1) : {}; 34172 34173 // Update parent mapping with nested mapping. 34174 mapping = { 34175 ...mapping, 34176 ...nestedMapping 34177 }; 34178 34179 // Create block with nested "innerBlocks". 34180 const block = (0,external_wp_blocks_namespaceObject.createBlock)(blockType, attributes, nestedBlocks); 34181 34182 // Create mapping for menuItem -> block. 34183 mapping[menuItem.id] = block.clientId; 34184 return block; 34185 }); 34186 return { 34187 innerBlocks, 34188 mapping 34189 }; 34190 } 34191 34192 /** 34193 * A WP nav_menu_item object. 34194 * For more documentation on the individual fields present on a menu item please see: 34195 * https://core.trac.wordpress.org/browser/tags/5.7.1/src/wp-includes/nav-menu.php#L789 34196 * 34197 * @typedef WPNavMenuItem 34198 * 34199 * @property {Object} title stores the raw and rendered versions of the title/label for this menu item. 34200 * @property {Array} xfn the XFN relationships expressed in the link of this menu item. 34201 * @property {Array} classes the HTML class attributes for this menu item. 34202 * @property {string} attr_title the HTML title attribute for this menu item. 34203 * @property {string} object The type of object originally represented, such as 'category', 'post', or 'attachment'. 34204 * @property {string} object_id The DB ID of the original object this menu item represents, e.g. ID for posts and term_id for categories. 34205 * @property {string} description The description of this menu item. 34206 * @property {string} url The URL to which this menu item points. 34207 * @property {string} type The family of objects originally represented, such as 'post_type' or 'taxonomy'. 34208 * @property {string} target The target attribute of the link element for this menu item. 34209 */ 34210 34211 /** 34212 * Convert block attributes to menu item. 34213 * 34214 * @param {WPNavMenuItem} menuItem the menu item to be converted to block attributes. 34215 * @param {string} blockType The block type. 34216 * @param {number} level An integer representing the nesting level. 34217 * @return {Object} the block attributes converted from the WPNavMenuItem item. 34218 */ 34219 function menuItemToBlockAttributes({ 34220 title: menuItemTitleField, 34221 xfn, 34222 classes, 34223 // eslint-disable-next-line camelcase 34224 attr_title, 34225 object, 34226 // eslint-disable-next-line camelcase 34227 object_id, 34228 description, 34229 url, 34230 type: menuItemTypeField, 34231 target 34232 }, blockType, level) { 34233 // For historical reasons, the `core/navigation-link` variation type is `tag` 34234 // whereas WP Core expects `post_tag` as the `object` type. 34235 // To avoid writing a block migration we perform a conversion here. 34236 // See also inverse equivalent in `blockAttributesToMenuItem`. 34237 if (object && object === 'post_tag') { 34238 object = 'tag'; 34239 } 34240 return { 34241 label: menuItemTitleField?.rendered || '', 34242 ...(object?.length && { 34243 type: object 34244 }), 34245 kind: menuItemTypeField?.replace('_', '-') || 'custom', 34246 url: url || '', 34247 ...(xfn?.length && xfn.join(' ').trim() && { 34248 rel: xfn.join(' ').trim() 34249 }), 34250 ...(classes?.length && classes.join(' ').trim() && { 34251 className: classes.join(' ').trim() 34252 }), 34253 /* eslint-disable camelcase */ 34254 ...(attr_title?.length && { 34255 title: attr_title 34256 }), 34257 ...(object_id && 'custom' !== object && { 34258 id: object_id 34259 }), 34260 /* eslint-enable camelcase */ 34261 ...(description?.length && { 34262 description 34263 }), 34264 ...(target === '_blank' && { 34265 opensInNewTab: true 34266 }), 34267 ...(blockType === 'core/navigation-submenu' && { 34268 isTopLevelItem: level === 0 34269 }), 34270 ...(blockType === 'core/navigation-link' && { 34271 isTopLevelLink: level === 0 34272 }) 34273 }; 34274 } 34275 34276 /** 34277 * Creates a nested, hierarchical tree representation from unstructured data that 34278 * has an inherent relationship defined between individual items. 34279 * 34280 * For example, by default, each element in the dataset should have an `id` and 34281 * `parent` property where the `parent` property indicates a relationship between 34282 * the current item and another item with a matching `id` properties. 34283 * 34284 * This is useful for building linked lists of data from flat data structures. 34285 * 34286 * @param {Array} dataset linked data to be rearranged into a hierarchical tree based on relational fields. 34287 * @param {string} id the property which uniquely identifies each entry within the array. 34288 * @param {*} relation the property which identifies how the current item is related to other items in the data (if at all). 34289 * @return {Array} a nested array of parent/child relationships 34290 */ 34291 function createDataTree(dataset, id = 'id', relation = 'parent') { 34292 const hashTable = Object.create(null); 34293 const dataTree = []; 34294 for (const data of dataset) { 34295 hashTable[data[id]] = { 34296 ...data, 34297 children: [] 34298 }; 34299 if (data[relation]) { 34300 hashTable[data[relation]] = hashTable[data[relation]] || {}; 34301 hashTable[data[relation]].children = hashTable[data[relation]].children || []; 34302 hashTable[data[relation]].children.push(hashTable[data[id]]); 34303 } else { 34304 dataTree.push(hashTable[data[id]]); 34305 } 34306 } 34307 return dataTree; 34308 } 34309 34310 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js 34311 /** 34312 * WordPress dependencies 34313 */ 34314 34315 34316 34317 34318 34319 /** 34320 * Internal dependencies 34321 */ 34322 34323 const CLASSIC_MENU_CONVERSION_SUCCESS = 'success'; 34324 const CLASSIC_MENU_CONVERSION_ERROR = 'error'; 34325 const CLASSIC_MENU_CONVERSION_PENDING = 'pending'; 34326 const CLASSIC_MENU_CONVERSION_IDLE = 'idle'; 34327 34328 // This is needed to ensure that multiple components using this hook 34329 // do not import the same classic menu twice. 34330 let classicMenuBeingConvertedId = null; 34331 function useConvertClassicToBlockMenu(createNavigationMenu, { 34332 throwOnError = false 34333 } = {}) { 34334 const registry = (0,external_wp_data_namespaceObject.useRegistry)(); 34335 const { 34336 editEntityRecord 34337 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 34338 const [status, setStatus] = (0,external_wp_element_namespaceObject.useState)(CLASSIC_MENU_CONVERSION_IDLE); 34339 const [error, setError] = (0,external_wp_element_namespaceObject.useState)(null); 34340 const convertClassicMenuToBlockMenu = (0,external_wp_element_namespaceObject.useCallback)(async (menuId, menuName, postStatus = 'publish') => { 34341 let navigationMenu; 34342 let classicMenuItems; 34343 34344 // 1. Fetch the classic Menu items. 34345 try { 34346 classicMenuItems = await registry.resolveSelect(external_wp_coreData_namespaceObject.store).getMenuItems({ 34347 menus: menuId, 34348 per_page: -1, 34349 context: 'view' 34350 }); 34351 } catch (err) { 34352 throw new Error((0,external_wp_i18n_namespaceObject.sprintf)( 34353 // translators: %s: the name of a menu (e.g. Header navigation). 34354 (0,external_wp_i18n_namespaceObject.__)(`Unable to fetch classic menu "%s" from API.`), menuName), { 34355 cause: err 34356 }); 34357 } 34358 34359 // Handle offline response which resolves to `null`. 34360 if (classicMenuItems === null) { 34361 throw new Error((0,external_wp_i18n_namespaceObject.sprintf)( 34362 // translators: %s: the name of a menu (e.g. Header navigation). 34363 (0,external_wp_i18n_namespaceObject.__)(`Unable to fetch classic menu "%s" from API.`), menuName)); 34364 } 34365 34366 // 2. Convert the classic items into blocks. 34367 const { 34368 innerBlocks 34369 } = menuItemsToBlocks(classicMenuItems); 34370 34371 // 3. Create the `wp_navigation` Post with the blocks. 34372 try { 34373 navigationMenu = await createNavigationMenu(menuName, innerBlocks, postStatus); 34374 34375 /** 34376 * Immediately trigger editEntityRecord to change the wp_navigation post status to 'publish'. 34377 * This status change causes the menu to be displayed on the front of the site and sets the post state to be "dirty". 34378 * The problem being solved is if saveEditedEntityRecord was used here, the menu would be updated on the frontend and the editor _automatically_, 34379 * without user interaction. 34380 * If the user abandons the site editor without saving, there would still be a wp_navigation post created as draft. 34381 */ 34382 await editEntityRecord('postType', 'wp_navigation', navigationMenu.id, { 34383 status: 'publish' 34384 }, { 34385 throwOnError: true 34386 }); 34387 } catch (err) { 34388 throw new Error((0,external_wp_i18n_namespaceObject.sprintf)( 34389 // translators: %s: the name of a menu (e.g. Header navigation). 34390 (0,external_wp_i18n_namespaceObject.__)(`Unable to create Navigation Menu "%s".`), menuName), { 34391 cause: err 34392 }); 34393 } 34394 return navigationMenu; 34395 }, [createNavigationMenu, editEntityRecord, registry]); 34396 const convert = (0,external_wp_element_namespaceObject.useCallback)(async (menuId, menuName, postStatus) => { 34397 // Check whether this classic menu is being imported already. 34398 if (classicMenuBeingConvertedId === menuId) { 34399 return; 34400 } 34401 34402 // Set the ID for the currently importing classic menu. 34403 classicMenuBeingConvertedId = menuId; 34404 if (!menuId || !menuName) { 34405 setError('Unable to convert menu. Missing menu details.'); 34406 setStatus(CLASSIC_MENU_CONVERSION_ERROR); 34407 return; 34408 } 34409 setStatus(CLASSIC_MENU_CONVERSION_PENDING); 34410 setError(null); 34411 return await convertClassicMenuToBlockMenu(menuId, menuName, postStatus).then(navigationMenu => { 34412 setStatus(CLASSIC_MENU_CONVERSION_SUCCESS); 34413 // Reset the ID for the currently importing classic menu. 34414 classicMenuBeingConvertedId = null; 34415 return navigationMenu; 34416 }).catch(err => { 34417 setError(err?.message); 34418 // Reset the ID for the currently importing classic menu. 34419 setStatus(CLASSIC_MENU_CONVERSION_ERROR); 34420 34421 // Reset the ID for the currently importing classic menu. 34422 classicMenuBeingConvertedId = null; 34423 34424 // Rethrow error for debugging. 34425 if (throwOnError) { 34426 throw new Error((0,external_wp_i18n_namespaceObject.sprintf)( 34427 // translators: %s: the name of a menu (e.g. Header navigation). 34428 (0,external_wp_i18n_namespaceObject.__)(`Unable to create Navigation Menu "%s".`), menuName), { 34429 cause: err 34430 }); 34431 } 34432 }); 34433 }, [convertClassicMenuToBlockMenu, throwOnError]); 34434 return { 34435 convert, 34436 status, 34437 error 34438 }; 34439 } 34440 /* harmony default export */ const use_convert_classic_menu_to_block_menu = (useConvertClassicToBlockMenu); 34441 34442 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/template-part/edit/utils/create-template-part-id.js 34443 /** 34444 * Generates a template part Id based on slug and theme inputs. 34445 * 34446 * @param {string} theme the template part's theme. 34447 * @param {string} slug the template part's slug 34448 * @return {string|null} the template part's Id. 34449 */ 34450 function createTemplatePartId(theme, slug) { 34451 return theme && slug ? theme + '//' + slug : null; 34452 } 34453 34454 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/use-template-part-area-label.js 34455 /** 34456 * WordPress dependencies 34457 */ 34458 34459 34460 34461 34462 /** 34463 * Internal dependencies 34464 */ 34465 34466 // TODO: this util should perhaps be refactored somewhere like core-data. 34467 34468 function useTemplatePartAreaLabel(clientId) { 34469 return (0,external_wp_data_namespaceObject.useSelect)(select => { 34470 // Use the lack of a clientId as an opportunity to bypass the rest 34471 // of this hook. 34472 if (!clientId) { 34473 return; 34474 } 34475 const { 34476 getBlock, 34477 getBlockParentsByBlockName 34478 } = select(external_wp_blockEditor_namespaceObject.store); 34479 const withAscendingResults = true; 34480 const parentTemplatePartClientIds = getBlockParentsByBlockName(clientId, 'core/template-part', withAscendingResults); 34481 if (!parentTemplatePartClientIds?.length) { 34482 return; 34483 } 34484 34485 // FIXME: @wordpress/block-library should not depend on @wordpress/editor. 34486 // Blocks can be loaded into a *non-post* block editor. 34487 // This code is lifted from this file: 34488 // packages/block-library/src/template-part/edit/advanced-controls.js 34489 /* eslint-disable @wordpress/data-no-store-string-literals */ 34490 const definedAreas = select('core/editor').__experimentalGetDefaultTemplatePartAreas(); 34491 /* eslint-enable @wordpress/data-no-store-string-literals */ 34492 const { 34493 getCurrentTheme, 34494 getEditedEntityRecord 34495 } = select(external_wp_coreData_namespaceObject.store); 34496 for (const templatePartClientId of parentTemplatePartClientIds) { 34497 const templatePartBlock = getBlock(templatePartClientId); 34498 34499 // The 'area' usually isn't stored on the block, but instead 34500 // on the entity. 34501 const { 34502 theme = getCurrentTheme()?.stylesheet, 34503 slug 34504 } = templatePartBlock.attributes; 34505 const templatePartEntityId = createTemplatePartId(theme, slug); 34506 const templatePartEntity = getEditedEntityRecord('postType', 'wp_template_part', templatePartEntityId); 34507 34508 // Look up the `label` for the area in the defined areas so 34509 // that an internationalized label can be used. 34510 if (templatePartEntity?.area) { 34511 return definedAreas.find(definedArea => definedArea.area !== 'uncategorized' && definedArea.area === templatePartEntity.area)?.label; 34512 } 34513 } 34514 }, [clientId]); 34515 } 34516 34517 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/use-generate-default-navigation-title.js 34518 /** 34519 * WordPress dependencies 34520 */ 34521 34522 34523 34524 34525 34526 34527 /** 34528 * Internal dependencies 34529 */ 34530 34531 const DRAFT_MENU_PARAMS = ['postType', 'wp_navigation', { 34532 status: 'draft', 34533 per_page: -1 34534 }]; 34535 const PUBLISHED_MENU_PARAMS = ['postType', 'wp_navigation', { 34536 per_page: -1, 34537 status: 'publish' 34538 }]; 34539 function useGenerateDefaultNavigationTitle(clientId) { 34540 // The block will be disabled in a block preview, use this as a way of 34541 // avoiding the side-effects of this component for block previews. 34542 const isDisabled = (0,external_wp_element_namespaceObject.useContext)(external_wp_components_namespaceObject.Disabled.Context); 34543 34544 // Because we can't conditionally call hooks, pass an undefined client id 34545 // arg to bypass the expensive `useTemplateArea` code. The hook will return 34546 // early. 34547 const area = useTemplatePartAreaLabel(isDisabled ? undefined : clientId); 34548 const registry = (0,external_wp_data_namespaceObject.useRegistry)(); 34549 return (0,external_wp_element_namespaceObject.useCallback)(async () => { 34550 // Ensure other navigation menus have loaded so an 34551 // accurate name can be created. 34552 if (isDisabled) { 34553 return ''; 34554 } 34555 const { 34556 getEntityRecords 34557 } = registry.resolveSelect(external_wp_coreData_namespaceObject.store); 34558 const [draftNavigationMenus, navigationMenus] = await Promise.all([getEntityRecords(...DRAFT_MENU_PARAMS), getEntityRecords(...PUBLISHED_MENU_PARAMS)]); 34559 const title = area ? (0,external_wp_i18n_namespaceObject.sprintf)( 34560 // translators: %s: the name of a menu (e.g. Header navigation). 34561 (0,external_wp_i18n_namespaceObject.__)('%s navigation'), area) : 34562 // translators: 'navigation' as in website navigation. 34563 (0,external_wp_i18n_namespaceObject.__)('Navigation'); 34564 34565 // Determine how many menus start with the automatic title. 34566 const matchingMenuTitleCount = [...draftNavigationMenus, ...navigationMenus].reduce((count, menu) => menu?.title?.raw?.startsWith(title) ? count + 1 : count, 0); 34567 34568 // Append a number to the end of the title if a menu with 34569 // the same name exists. 34570 const titleWithCount = matchingMenuTitleCount > 0 ? `$title} $matchingMenuTitleCount + 1}` : title; 34571 return titleWithCount || ''; 34572 }, [isDisabled, area, registry]); 34573 } 34574 34575 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/use-create-navigation-menu.js 34576 /** 34577 * WordPress dependencies 34578 */ 34579 34580 34581 34582 34583 34584 /** 34585 * Internal dependencies 34586 */ 34587 34588 const CREATE_NAVIGATION_MENU_SUCCESS = 'success'; 34589 const CREATE_NAVIGATION_MENU_ERROR = 'error'; 34590 const CREATE_NAVIGATION_MENU_PENDING = 'pending'; 34591 const CREATE_NAVIGATION_MENU_IDLE = 'idle'; 34592 function useCreateNavigationMenu(clientId) { 34593 const [status, setStatus] = (0,external_wp_element_namespaceObject.useState)(CREATE_NAVIGATION_MENU_IDLE); 34594 const [value, setValue] = (0,external_wp_element_namespaceObject.useState)(null); 34595 const [error, setError] = (0,external_wp_element_namespaceObject.useState)(null); 34596 const { 34597 saveEntityRecord, 34598 editEntityRecord 34599 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 34600 const generateDefaultTitle = useGenerateDefaultNavigationTitle(clientId); 34601 34602 // This callback uses data from the two placeholder steps and only creates 34603 // a new navigation menu when the user completes the final step. 34604 const create = (0,external_wp_element_namespaceObject.useCallback)(async (title = null, blocks = [], postStatus) => { 34605 // Guard against creating Navigations without a title. 34606 // Note you can pass no title, but if one is passed it must be 34607 // a string otherwise the title may end up being empty. 34608 if (title && typeof title !== 'string') { 34609 setError('Invalid title supplied when creating Navigation Menu.'); 34610 setStatus(CREATE_NAVIGATION_MENU_ERROR); 34611 throw new Error(`Value of supplied title argument was not a string.`); 34612 } 34613 setStatus(CREATE_NAVIGATION_MENU_PENDING); 34614 setValue(null); 34615 setError(null); 34616 if (!title) { 34617 title = await generateDefaultTitle().catch(err => { 34618 setError(err?.message); 34619 setStatus(CREATE_NAVIGATION_MENU_ERROR); 34620 throw new Error('Failed to create title when saving new Navigation Menu.', { 34621 cause: err 34622 }); 34623 }); 34624 } 34625 const record = { 34626 title, 34627 content: (0,external_wp_blocks_namespaceObject.serialize)(blocks), 34628 status: postStatus 34629 }; 34630 34631 // Return affords ability to await on this function directly 34632 return saveEntityRecord('postType', 'wp_navigation', record).then(response => { 34633 setValue(response); 34634 setStatus(CREATE_NAVIGATION_MENU_SUCCESS); 34635 34636 // Set the status to publish so that the Navigation block 34637 // shows up in the multi entity save flow. 34638 if (postStatus !== 'publish') { 34639 editEntityRecord('postType', 'wp_navigation', response.id, { 34640 status: 'publish' 34641 }); 34642 } 34643 return response; 34644 }).catch(err => { 34645 setError(err?.message); 34646 setStatus(CREATE_NAVIGATION_MENU_ERROR); 34647 throw new Error('Unable to save new Navigation Menu', { 34648 cause: err 34649 }); 34650 }); 34651 }, [saveEntityRecord, editEntityRecord, generateDefaultTitle]); 34652 return { 34653 create, 34654 status, 34655 value, 34656 error, 34657 isIdle: status === CREATE_NAVIGATION_MENU_IDLE, 34658 isPending: status === CREATE_NAVIGATION_MENU_PENDING, 34659 isSuccess: status === CREATE_NAVIGATION_MENU_SUCCESS, 34660 isError: status === CREATE_NAVIGATION_MENU_ERROR 34661 }; 34662 } 34663 34664 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/use-inner-blocks.js 34665 /** 34666 * WordPress dependencies 34667 */ 34668 34669 34670 const use_inner_blocks_EMPTY_ARRAY = []; 34671 function useInnerBlocks(clientId) { 34672 return (0,external_wp_data_namespaceObject.useSelect)(select => { 34673 const { 34674 getBlock, 34675 getBlocks, 34676 hasSelectedInnerBlock 34677 } = select(external_wp_blockEditor_namespaceObject.store); 34678 34679 // This relies on the fact that `getBlock` won't return controlled 34680 // inner blocks, while `getBlocks` does. It might be more stable to 34681 // introduce a selector like `getUncontrolledInnerBlocks`, just in 34682 // case `getBlock` is fixed. 34683 const _uncontrolledInnerBlocks = getBlock(clientId).innerBlocks; 34684 const _hasUncontrolledInnerBlocks = !!_uncontrolledInnerBlocks?.length; 34685 const _controlledInnerBlocks = _hasUncontrolledInnerBlocks ? use_inner_blocks_EMPTY_ARRAY : getBlocks(clientId); 34686 return { 34687 innerBlocks: _hasUncontrolledInnerBlocks ? _uncontrolledInnerBlocks : _controlledInnerBlocks, 34688 hasUncontrolledInnerBlocks: _hasUncontrolledInnerBlocks, 34689 uncontrolledInnerBlocks: _uncontrolledInnerBlocks, 34690 controlledInnerBlocks: _controlledInnerBlocks, 34691 isInnerBlockSelected: hasSelectedInnerBlock(clientId, true) 34692 }; 34693 }, [clientId]); 34694 } 34695 34696 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/utils.js 34697 /** 34698 * External dependencies 34699 */ 34700 34701 function getComputedStyle(node) { 34702 return node.ownerDocument.defaultView.getComputedStyle(node); 34703 } 34704 function detectColors(colorsDetectionElement, setColor, setBackground) { 34705 if (!colorsDetectionElement) { 34706 return; 34707 } 34708 setColor(getComputedStyle(colorsDetectionElement).color); 34709 let backgroundColorNode = colorsDetectionElement; 34710 let backgroundColor = getComputedStyle(backgroundColorNode).backgroundColor; 34711 while (backgroundColor === 'rgba(0, 0, 0, 0)' && backgroundColorNode.parentNode && backgroundColorNode.parentNode.nodeType === backgroundColorNode.parentNode.ELEMENT_NODE) { 34712 backgroundColorNode = backgroundColorNode.parentNode; 34713 backgroundColor = getComputedStyle(backgroundColorNode).backgroundColor; 34714 } 34715 setBackground(backgroundColor); 34716 } 34717 34718 /** 34719 * Determine the colors for a menu. 34720 * 34721 * Order of priority is: 34722 * 1: Overlay custom colors (if submenu) 34723 * 2: Overlay theme colors (if submenu) 34724 * 3: Custom colors 34725 * 4: Theme colors 34726 * 5: Global styles 34727 * 34728 * @param {Object} context 34729 * @param {boolean} isSubMenu 34730 */ 34731 function getColors(context, isSubMenu) { 34732 const { 34733 textColor, 34734 customTextColor, 34735 backgroundColor, 34736 customBackgroundColor, 34737 overlayTextColor, 34738 customOverlayTextColor, 34739 overlayBackgroundColor, 34740 customOverlayBackgroundColor, 34741 style 34742 } = context; 34743 const colors = {}; 34744 if (isSubMenu && !!customOverlayTextColor) { 34745 colors.customTextColor = customOverlayTextColor; 34746 } else if (isSubMenu && !!overlayTextColor) { 34747 colors.textColor = overlayTextColor; 34748 } else if (!!customTextColor) { 34749 colors.customTextColor = customTextColor; 34750 } else if (!!textColor) { 34751 colors.textColor = textColor; 34752 } else if (!!style?.color?.text) { 34753 colors.customTextColor = style.color.text; 34754 } 34755 if (isSubMenu && !!customOverlayBackgroundColor) { 34756 colors.customBackgroundColor = customOverlayBackgroundColor; 34757 } else if (isSubMenu && !!overlayBackgroundColor) { 34758 colors.backgroundColor = overlayBackgroundColor; 34759 } else if (!!customBackgroundColor) { 34760 colors.customBackgroundColor = customBackgroundColor; 34761 } else if (!!backgroundColor) { 34762 colors.backgroundColor = backgroundColor; 34763 } else if (!!style?.color?.background) { 34764 colors.customTextColor = style.color.background; 34765 } 34766 return colors; 34767 } 34768 function getNavigationChildBlockProps(innerBlocksColors) { 34769 return { 34770 className: dist_clsx('wp-block-navigation__submenu-container', { 34771 'has-text-color': !!(innerBlocksColors.textColor || innerBlocksColors.customTextColor), 34772 [`has-$innerBlocksColors.textColor}-color`]: !!innerBlocksColors.textColor, 34773 'has-background': !!(innerBlocksColors.backgroundColor || innerBlocksColors.customBackgroundColor), 34774 [`has-$innerBlocksColors.backgroundColor}-background-color`]: !!innerBlocksColors.backgroundColor 34775 }), 34776 style: { 34777 color: innerBlocksColors.customTextColor, 34778 backgroundColor: innerBlocksColors.customBackgroundColor 34779 } 34780 }; 34781 } 34782 34783 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/manage-menus-button.js 34784 /** 34785 * WordPress dependencies 34786 */ 34787 34788 34789 34790 34791 const ManageMenusButton = ({ 34792 className = '', 34793 disabled, 34794 isMenuItem = false 34795 }) => { 34796 let ComponentName = external_wp_components_namespaceObject.Button; 34797 if (isMenuItem) { 34798 ComponentName = external_wp_components_namespaceObject.MenuItem; 34799 } 34800 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ComponentName, { 34801 variant: "link", 34802 disabled: disabled, 34803 className: className, 34804 href: (0,external_wp_url_namespaceObject.addQueryArgs)('edit.php', { 34805 post_type: 'wp_navigation' 34806 }), 34807 children: (0,external_wp_i18n_namespaceObject.__)('Manage menus') 34808 }); 34809 }; 34810 /* harmony default export */ const manage_menus_button = (ManageMenusButton); 34811 34812 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/deleted-navigation-warning.js 34813 /** 34814 * WordPress dependencies 34815 */ 34816 34817 34818 34819 34820 34821 function DeletedNavigationWarning({ 34822 onCreateNew, 34823 isNotice = false 34824 }) { 34825 const message = (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.__)('Navigation Menu has been deleted or is unavailable. <button>Create a new Menu?</button>'), { 34826 button: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 34827 __next40pxDefaultSize: true, 34828 onClick: onCreateNew, 34829 variant: "link" 34830 }) 34831 }); 34832 return isNotice ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, { 34833 status: "warning", 34834 isDismissible: false, 34835 children: message 34836 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 34837 children: message 34838 }); 34839 } 34840 /* harmony default export */ const deleted_navigation_warning = (DeletedNavigationWarning); 34841 34842 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/add-submenu.js 34843 /** 34844 * WordPress dependencies 34845 */ 34846 34847 34848 const addSubmenu = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 34849 xmlns: "http://www.w3.org/2000/svg", 34850 viewBox: "0 0 24 24", 34851 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 34852 d: "M2 12c0 3.6 2.4 5.5 6 5.5h.5V19l3-2.5-3-2.5v2H8c-2.5 0-4.5-1.5-4.5-4s2-4.5 4.5-4.5h3.5V6H8c-3.6 0-6 2.4-6 6zm19.5-1h-8v1.5h8V11zm0 5h-8v1.5h8V16zm0-10h-8v1.5h8V6z" 34853 }) 34854 }); 34855 /* harmony default export */ const add_submenu = (addSubmenu); 34856 34857 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-up.js 34858 /** 34859 * WordPress dependencies 34860 */ 34861 34862 34863 const chevronUp = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 34864 viewBox: "0 0 24 24", 34865 xmlns: "http://www.w3.org/2000/svg", 34866 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 34867 d: "M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z" 34868 }) 34869 }); 34870 /* harmony default export */ const chevron_up = (chevronUp); 34871 34872 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-down.js 34873 /** 34874 * WordPress dependencies 34875 */ 34876 34877 34878 const chevronDown = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 34879 viewBox: "0 0 24 24", 34880 xmlns: "http://www.w3.org/2000/svg", 34881 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 34882 d: "M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z" 34883 }) 34884 }); 34885 /* harmony default export */ const chevron_down = (chevronDown); 34886 34887 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/leaf-more-menu.js 34888 /** 34889 * WordPress dependencies 34890 */ 34891 34892 34893 34894 34895 34896 34897 34898 34899 34900 const POPOVER_PROPS = { 34901 className: 'block-editor-block-settings-menu__popover', 34902 placement: 'bottom-start' 34903 }; 34904 const BLOCKS_THAT_CAN_BE_CONVERTED_TO_SUBMENU = ['core/navigation-link', 'core/navigation-submenu']; 34905 function AddSubmenuItem({ 34906 block, 34907 onClose, 34908 expandedState, 34909 expand, 34910 setInsertedBlock 34911 }) { 34912 const { 34913 insertBlock, 34914 replaceBlock, 34915 replaceInnerBlocks 34916 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 34917 const clientId = block.clientId; 34918 const isDisabled = !BLOCKS_THAT_CAN_BE_CONVERTED_TO_SUBMENU.includes(block.name); 34919 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { 34920 icon: add_submenu, 34921 disabled: isDisabled, 34922 onClick: () => { 34923 const updateSelectionOnInsert = false; 34924 const newLink = (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link'); 34925 if (block.name === 'core/navigation-submenu') { 34926 insertBlock(newLink, block.innerBlocks.length, clientId, updateSelectionOnInsert); 34927 } else { 34928 // Convert to a submenu if the block currently isn't one. 34929 const newSubmenu = (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-submenu', block.attributes, block.innerBlocks); 34930 34931 // The following must happen as two independent actions. 34932 // Why? Because the offcanvas editor relies on the getLastInsertedBlocksClientIds 34933 // selector to determine which block is "active". As the UX needs the newLink to be 34934 // the "active" block it must be the last block to be inserted. 34935 // Therefore the Submenu is first created and **then** the newLink is inserted 34936 // thus ensuring it is the last inserted block. 34937 replaceBlock(clientId, newSubmenu); 34938 replaceInnerBlocks(newSubmenu.clientId, [newLink], updateSelectionOnInsert); 34939 } 34940 34941 // This call sets the local List View state for the "last inserted block". 34942 // This is required for the Nav Block to determine whether or not to display 34943 // the Link UI for this new block. 34944 setInsertedBlock(newLink); 34945 if (!expandedState[block.clientId]) { 34946 expand(block.clientId); 34947 } 34948 onClose(); 34949 }, 34950 children: (0,external_wp_i18n_namespaceObject.__)('Add submenu link') 34951 }); 34952 } 34953 function LeafMoreMenu(props) { 34954 const { 34955 block 34956 } = props; 34957 const { 34958 clientId 34959 } = block; 34960 const { 34961 moveBlocksDown, 34962 moveBlocksUp, 34963 removeBlocks 34964 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 34965 const removeLabel = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: block name */ 34966 (0,external_wp_i18n_namespaceObject.__)('Remove %s'), (0,external_wp_blockEditor_namespaceObject.BlockTitle)({ 34967 clientId, 34968 maximumLength: 25 34969 })); 34970 const rootClientId = (0,external_wp_data_namespaceObject.useSelect)(select => { 34971 const { 34972 getBlockRootClientId 34973 } = select(external_wp_blockEditor_namespaceObject.store); 34974 return getBlockRootClientId(clientId); 34975 }, [clientId]); 34976 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, { 34977 icon: more_vertical, 34978 label: (0,external_wp_i18n_namespaceObject.__)('Options'), 34979 className: "block-editor-block-settings-menu", 34980 popoverProps: POPOVER_PROPS, 34981 noIcons: true, 34982 ...props, 34983 children: ({ 34984 onClose 34985 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 34986 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, { 34987 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { 34988 icon: chevron_up, 34989 onClick: () => { 34990 moveBlocksUp([clientId], rootClientId); 34991 onClose(); 34992 }, 34993 children: (0,external_wp_i18n_namespaceObject.__)('Move up') 34994 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { 34995 icon: chevron_down, 34996 onClick: () => { 34997 moveBlocksDown([clientId], rootClientId); 34998 onClose(); 34999 }, 35000 children: (0,external_wp_i18n_namespaceObject.__)('Move down') 35001 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AddSubmenuItem, { 35002 block: block, 35003 onClose: onClose, 35004 expanded: true, 35005 expandedState: props.expandedState, 35006 expand: props.expand, 35007 setInsertedBlock: props.setInsertedBlock 35008 })] 35009 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, { 35010 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { 35011 onClick: () => { 35012 removeBlocks([clientId], false); 35013 onClose(); 35014 }, 35015 children: removeLabel 35016 }) 35017 })] 35018 }) 35019 }); 35020 } 35021 35022 ;// CONCATENATED MODULE: external ["wp","escapeHtml"] 35023 const external_wp_escapeHtml_namespaceObject = window["wp"]["escapeHtml"]; 35024 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation-link/update-attributes.js 35025 /** 35026 * WordPress dependencies 35027 */ 35028 35029 35030 35031 /** 35032 * @typedef {'post-type'|'custom'|'taxonomy'|'post-type-archive'} WPNavigationLinkKind 35033 */ 35034 /** 35035 * Navigation Link Block Attributes 35036 * 35037 * @typedef {Object} WPNavigationLinkBlockAttributes 35038 * 35039 * @property {string} [label] Link text. 35040 * @property {WPNavigationLinkKind} [kind] Kind is used to differentiate between term and post ids to check post draft status. 35041 * @property {string} [type] The type such as post, page, tag, category and other custom types. 35042 * @property {string} [rel] The relationship of the linked URL. 35043 * @property {number} [id] A post or term id. 35044 * @property {boolean} [opensInNewTab] Sets link target to _blank when true. 35045 * @property {string} [url] Link href. 35046 * @property {string} [title] Link title attribute. 35047 */ 35048 /** 35049 * Link Control onChange handler that updates block attributes when a setting is changed. 35050 * 35051 * @param {Object} updatedValue New block attributes to update. 35052 * @param {Function} setAttributes Block attribute update function. 35053 * @param {WPNavigationLinkBlockAttributes} blockAttributes Current block attributes. 35054 */ 35055 35056 const updateAttributes = (updatedValue = {}, setAttributes, blockAttributes = {}) => { 35057 const { 35058 label: originalLabel = '', 35059 kind: originalKind = '', 35060 type: originalType = '' 35061 } = blockAttributes; 35062 const { 35063 title: newLabel = '', 35064 // the title of any provided Post. 35065 url: newUrl = '', 35066 opensInNewTab, 35067 id, 35068 kind: newKind = originalKind, 35069 type: newType = originalType 35070 } = updatedValue; 35071 const newLabelWithoutHttp = newLabel.replace(/http(s?):\/\//gi, ''); 35072 const newUrlWithoutHttp = newUrl.replace(/http(s?):\/\//gi, ''); 35073 const useNewLabel = newLabel && newLabel !== originalLabel && 35074 // LinkControl without the title field relies 35075 // on the check below. Specifically, it assumes that 35076 // the URL is the same as a title. 35077 // This logic a) looks suspicious and b) should really 35078 // live in the LinkControl and not here. It's a great 35079 // candidate for future refactoring. 35080 newLabelWithoutHttp !== newUrlWithoutHttp; 35081 35082 // Unfortunately this causes the escaping model to be inverted. 35083 // The escaped content is stored in the block attributes (and ultimately in the database), 35084 // and then the raw data is "recovered" when outputting into the DOM. 35085 // It would be preferable to store the **raw** data in the block attributes and escape it in JS. 35086 // Why? Because there isn't one way to escape data. Depending on the context, you need to do 35087 // different transforms. It doesn't make sense to me to choose one of them for the purposes of storage. 35088 // See also: 35089 // - https://github.com/WordPress/gutenberg/pull/41063 35090 // - https://github.com/WordPress/gutenberg/pull/18617. 35091 const label = useNewLabel ? (0,external_wp_escapeHtml_namespaceObject.escapeHTML)(newLabel) : originalLabel || (0,external_wp_escapeHtml_namespaceObject.escapeHTML)(newUrlWithoutHttp); 35092 35093 // In https://github.com/WordPress/gutenberg/pull/24670 we decided to use "tag" in favor of "post_tag" 35094 const type = newType === 'post_tag' ? 'tag' : newType.replace('-', '_'); 35095 const isBuiltInType = ['post', 'page', 'tag', 'category'].indexOf(type) > -1; 35096 const isCustomLink = !newKind && !isBuiltInType || newKind === 'custom'; 35097 const kind = isCustomLink ? 'custom' : newKind; 35098 setAttributes({ 35099 // Passed `url` may already be encoded. To prevent double encoding, decodeURI is executed to revert to the original string. 35100 ...(newUrl && { 35101 url: encodeURI((0,external_wp_url_namespaceObject.safeDecodeURI)(newUrl)) 35102 }), 35103 ...(label && { 35104 label 35105 }), 35106 ...(undefined !== opensInNewTab && { 35107 opensInNewTab 35108 }), 35109 ...(id && Number.isInteger(id) && { 35110 id 35111 }), 35112 ...(kind && { 35113 kind 35114 }), 35115 ...(type && type !== 'URL' && { 35116 type 35117 }) 35118 }); 35119 }; 35120 35121 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-right-small.js 35122 /** 35123 * WordPress dependencies 35124 */ 35125 35126 35127 const chevronRightSmall = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 35128 xmlns: "http://www.w3.org/2000/svg", 35129 viewBox: "0 0 24 24", 35130 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 35131 d: "M10.8622 8.04053L14.2805 12.0286L10.8622 16.0167L9.72327 15.0405L12.3049 12.0286L9.72327 9.01672L10.8622 8.04053Z" 35132 }) 35133 }); 35134 /* harmony default export */ const chevron_right_small = (chevronRightSmall); 35135 35136 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/chevron-left-small.js 35137 /** 35138 * WordPress dependencies 35139 */ 35140 35141 35142 const chevronLeftSmall = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 35143 xmlns: "http://www.w3.org/2000/svg", 35144 viewBox: "0 0 24 24", 35145 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 35146 d: "m13.1 16-3.4-4 3.4-4 1.1 1-2.6 3 2.6 3-1.1 1z" 35147 }) 35148 }); 35149 /* harmony default export */ const chevron_left_small = (chevronLeftSmall); 35150 35151 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/plus.js 35152 /** 35153 * WordPress dependencies 35154 */ 35155 35156 35157 const plus = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 35158 xmlns: "http://www.w3.org/2000/svg", 35159 viewBox: "0 0 24 24", 35160 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 35161 d: "M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z" 35162 }) 35163 }); 35164 /* harmony default export */ const library_plus = (plus); 35165 35166 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation-link/link-ui.js 35167 /** 35168 * WordPress dependencies 35169 */ 35170 35171 35172 35173 35174 35175 35176 35177 35178 35179 35180 35181 /** 35182 * Internal dependencies 35183 */ 35184 35185 35186 35187 const { 35188 PrivateQuickInserter: QuickInserter 35189 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 35190 35191 /** 35192 * Given the Link block's type attribute, return the query params to give to 35193 * /wp/v2/search. 35194 * 35195 * @param {string} type Link block's type attribute. 35196 * @param {string} kind Link block's entity of kind (post-type|taxonomy) 35197 * @return {{ type?: string, subtype?: string }} Search query params. 35198 */ 35199 function getSuggestionsQuery(type, kind) { 35200 switch (type) { 35201 case 'post': 35202 case 'page': 35203 return { 35204 type: 'post', 35205 subtype: type 35206 }; 35207 case 'category': 35208 return { 35209 type: 'term', 35210 subtype: 'category' 35211 }; 35212 case 'tag': 35213 return { 35214 type: 'term', 35215 subtype: 'post_tag' 35216 }; 35217 case 'post_format': 35218 return { 35219 type: 'post-format' 35220 }; 35221 default: 35222 if (kind === 'taxonomy') { 35223 return { 35224 type: 'term', 35225 subtype: type 35226 }; 35227 } 35228 if (kind === 'post-type') { 35229 return { 35230 type: 'post', 35231 subtype: type 35232 }; 35233 } 35234 return { 35235 // for custom link which has no type 35236 // always show pages as initial suggestions 35237 initialSuggestionsSearchOptions: { 35238 type: 'post', 35239 subtype: 'page', 35240 perPage: 20 35241 } 35242 }; 35243 } 35244 } 35245 function LinkUIBlockInserter({ 35246 clientId, 35247 onBack, 35248 onSelectBlock 35249 }) { 35250 const { 35251 rootBlockClientId 35252 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 35253 const { 35254 getBlockRootClientId 35255 } = select(external_wp_blockEditor_namespaceObject.store); 35256 return { 35257 rootBlockClientId: getBlockRootClientId(clientId) 35258 }; 35259 }, [clientId]); 35260 const focusOnMountRef = (0,external_wp_compose_namespaceObject.useFocusOnMount)('firstElement'); 35261 const dialogTitleId = (0,external_wp_compose_namespaceObject.useInstanceId)(external_wp_blockEditor_namespaceObject.__experimentalLinkControl, `link-ui-block-inserter__title`); 35262 const dialogDescritionId = (0,external_wp_compose_namespaceObject.useInstanceId)(external_wp_blockEditor_namespaceObject.__experimentalLinkControl, `link-ui-block-inserter__description`); 35263 if (!clientId) { 35264 return null; 35265 } 35266 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 35267 className: "link-ui-block-inserter", 35268 role: "dialog", 35269 "aria-labelledby": dialogTitleId, 35270 "aria-describedby": dialogDescritionId, 35271 ref: focusOnMountRef, 35272 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.VisuallyHidden, { 35273 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h2", { 35274 id: dialogTitleId, 35275 children: (0,external_wp_i18n_namespaceObject.__)('Add block') 35276 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 35277 id: dialogDescritionId, 35278 children: (0,external_wp_i18n_namespaceObject.__)('Choose a block to add to your Navigation.') 35279 })] 35280 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 35281 className: "link-ui-block-inserter__back", 35282 icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_right_small : chevron_left_small, 35283 onClick: e => { 35284 e.preventDefault(); 35285 onBack(); 35286 }, 35287 size: "small", 35288 children: (0,external_wp_i18n_namespaceObject.__)('Back') 35289 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(QuickInserter, { 35290 rootClientId: rootBlockClientId, 35291 clientId: clientId, 35292 isAppender: false, 35293 prioritizePatterns: false, 35294 selectBlockOnInsert: true, 35295 hasSearch: false, 35296 onSelect: onSelectBlock 35297 })] 35298 }); 35299 } 35300 function UnforwardedLinkUI(props, ref) { 35301 const { 35302 label, 35303 url, 35304 opensInNewTab, 35305 type, 35306 kind 35307 } = props.link; 35308 const postType = type || 'page'; 35309 const [addingBlock, setAddingBlock] = (0,external_wp_element_namespaceObject.useState)(false); 35310 const [focusAddBlockButton, setFocusAddBlockButton] = (0,external_wp_element_namespaceObject.useState)(false); 35311 const { 35312 saveEntityRecord 35313 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 35314 const permissions = (0,external_wp_coreData_namespaceObject.useResourcePermissions)({ 35315 kind: 'postType', 35316 name: postType 35317 }); 35318 async function handleCreate(pageTitle) { 35319 const page = await saveEntityRecord('postType', postType, { 35320 title: pageTitle, 35321 status: 'draft' 35322 }); 35323 return { 35324 id: page.id, 35325 type: postType, 35326 // Make `title` property consistent with that in `fetchLinkSuggestions` where the `rendered` title (containing HTML entities) 35327 // is also being decoded. By being consistent in both locations we avoid having to branch in the rendering output code. 35328 // Ideally in the future we will update both APIs to utilise the "raw" form of the title which is better suited to edit contexts. 35329 // e.g. 35330 // - title.raw = "Yes & No" 35331 // - title.rendered = "Yes & No" 35332 // - decodeEntities( title.rendered ) = "Yes & No" 35333 // See: 35334 // - https://github.com/WordPress/gutenberg/pull/41063 35335 // - https://github.com/WordPress/gutenberg/blob/a1e1fdc0e6278457e9f4fc0b31ac6d2095f5450b/packages/core-data/src/fetch/__experimental-fetch-link-suggestions.js#L212-L218 35336 title: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(page.title.rendered), 35337 url: page.link, 35338 kind: 'post-type' 35339 }; 35340 } 35341 35342 // Memoize link value to avoid overriding the LinkControl's internal state. 35343 // This is a temporary fix. See https://github.com/WordPress/gutenberg/issues/50976#issuecomment-1568226407. 35344 const link = (0,external_wp_element_namespaceObject.useMemo)(() => ({ 35345 url, 35346 opensInNewTab, 35347 title: label && (0,external_wp_dom_namespaceObject.__unstableStripHTML)(label) 35348 }), [label, opensInNewTab, url]); 35349 const dialogTitleId = (0,external_wp_compose_namespaceObject.useInstanceId)(LinkUI, `link-ui-link-control__title`); 35350 const dialogDescritionId = (0,external_wp_compose_namespaceObject.useInstanceId)(LinkUI, `link-ui-link-control__description`); 35351 35352 // Selecting a block should close the popover and also remove the (previously) automatically inserted 35353 // link block so that the newly selected block can be inserted in its place. 35354 const { 35355 onClose: onSelectBlock 35356 } = props; 35357 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Popover, { 35358 ref: ref, 35359 placement: "bottom", 35360 onClose: props.onClose, 35361 anchor: props.anchor, 35362 shift: true, 35363 children: [!addingBlock && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 35364 role: "dialog", 35365 "aria-labelledby": dialogTitleId, 35366 "aria-describedby": dialogDescritionId, 35367 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.VisuallyHidden, { 35368 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h2", { 35369 id: dialogTitleId, 35370 children: (0,external_wp_i18n_namespaceObject.__)('Add link') 35371 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 35372 id: dialogDescritionId, 35373 children: (0,external_wp_i18n_namespaceObject.__)('Search for and add a link to your Navigation.') 35374 })] 35375 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalLinkControl, { 35376 hasTextControl: true, 35377 hasRichPreviews: true, 35378 value: link, 35379 showInitialSuggestions: true, 35380 withCreateSuggestion: permissions.canCreate, 35381 createSuggestion: handleCreate, 35382 createSuggestionButtonText: searchTerm => { 35383 let format; 35384 if (type === 'post') { 35385 /* translators: %s: search term. */ 35386 format = (0,external_wp_i18n_namespaceObject.__)('Create draft post: <mark>%s</mark>'); 35387 } else { 35388 /* translators: %s: search term. */ 35389 format = (0,external_wp_i18n_namespaceObject.__)('Create draft page: <mark>%s</mark>'); 35390 } 35391 return (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)(format, searchTerm), { 35392 mark: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("mark", {}) 35393 }); 35394 }, 35395 noDirectEntry: !!type, 35396 noURLSuggestion: !!type, 35397 suggestionsQuery: getSuggestionsQuery(type, kind), 35398 onChange: props.onChange, 35399 onRemove: props.onRemove, 35400 onCancel: props.onCancel, 35401 renderControlBottom: () => !link?.url?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(LinkUITools, { 35402 focusAddBlockButton: focusAddBlockButton, 35403 setAddingBlock: () => { 35404 setAddingBlock(true); 35405 setFocusAddBlockButton(false); 35406 } 35407 }) 35408 })] 35409 }), addingBlock && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(LinkUIBlockInserter, { 35410 clientId: props.clientId, 35411 onBack: () => { 35412 setAddingBlock(false); 35413 setFocusAddBlockButton(true); 35414 }, 35415 onSelectBlock: onSelectBlock 35416 })] 35417 }); 35418 } 35419 const LinkUI = (0,external_wp_element_namespaceObject.forwardRef)(UnforwardedLinkUI); 35420 const LinkUITools = ({ 35421 setAddingBlock, 35422 focusAddBlockButton 35423 }) => { 35424 const blockInserterAriaRole = 'listbox'; 35425 const addBlockButtonRef = (0,external_wp_element_namespaceObject.useRef)(); 35426 35427 // Focus the add block button when the popover is opened. 35428 (0,external_wp_element_namespaceObject.useEffect)(() => { 35429 if (focusAddBlockButton) { 35430 addBlockButtonRef.current?.focus(); 35431 } 35432 }, [focusAddBlockButton]); 35433 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, { 35434 className: "link-ui-tools", 35435 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 35436 __next40pxDefaultSize: true, 35437 ref: addBlockButtonRef, 35438 icon: library_plus, 35439 onClick: e => { 35440 e.preventDefault(); 35441 setAddingBlock(true); 35442 }, 35443 "aria-haspopup": blockInserterAriaRole, 35444 children: (0,external_wp_i18n_namespaceObject.__)('Add block') 35445 }) 35446 }); 35447 }; 35448 /* harmony default export */ const link_ui = ((/* unused pure expression or super */ null && (LinkUITools))); 35449 35450 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/menu-inspector-controls.js 35451 /** 35452 * WordPress dependencies 35453 */ 35454 35455 35456 35457 35458 35459 /** 35460 * Internal dependencies 35461 */ 35462 35463 35464 35465 35466 35467 35468 35469 35470 35471 const actionLabel = /* translators: %s: The name of a menu. */(0,external_wp_i18n_namespaceObject.__)("Switch to '%s'"); 35472 const BLOCKS_WITH_LINK_UI_SUPPORT = ['core/navigation-link', 'core/navigation-submenu']; 35473 const { 35474 PrivateListView 35475 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 35476 function AdditionalBlockContent({ 35477 block, 35478 insertedBlock, 35479 setInsertedBlock 35480 }) { 35481 const { 35482 updateBlockAttributes 35483 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 35484 const supportsLinkControls = BLOCKS_WITH_LINK_UI_SUPPORT?.includes(insertedBlock?.name); 35485 const blockWasJustInserted = insertedBlock?.clientId === block.clientId; 35486 const showLinkControls = supportsLinkControls && blockWasJustInserted; 35487 if (!showLinkControls) { 35488 return null; 35489 } 35490 const setInsertedBlockAttributes = _insertedBlockClientId => _updatedAttributes => { 35491 if (!_insertedBlockClientId) { 35492 return; 35493 } 35494 updateBlockAttributes(_insertedBlockClientId, _updatedAttributes); 35495 }; 35496 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(LinkUI, { 35497 clientId: insertedBlock?.clientId, 35498 link: insertedBlock?.attributes, 35499 onClose: () => { 35500 setInsertedBlock(null); 35501 }, 35502 onChange: updatedValue => { 35503 updateAttributes(updatedValue, setInsertedBlockAttributes(insertedBlock?.clientId), insertedBlock?.attributes); 35504 setInsertedBlock(null); 35505 }, 35506 onCancel: () => { 35507 setInsertedBlock(null); 35508 } 35509 }); 35510 } 35511 const MainContent = ({ 35512 clientId, 35513 currentMenuId, 35514 isLoading, 35515 isNavigationMenuMissing, 35516 onCreateNew 35517 }) => { 35518 const hasChildren = (0,external_wp_data_namespaceObject.useSelect)(select => { 35519 return !!select(external_wp_blockEditor_namespaceObject.store).getBlockCount(clientId); 35520 }, [clientId]); 35521 const { 35522 navigationMenu 35523 } = useNavigationMenu(currentMenuId); 35524 if (currentMenuId && isNavigationMenuMissing) { 35525 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(deleted_navigation_warning, { 35526 onCreateNew: onCreateNew, 35527 isNotice: true 35528 }); 35529 } 35530 if (isLoading) { 35531 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}); 35532 } 35533 const description = navigationMenu ? (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: The name of a menu. */ 35534 (0,external_wp_i18n_namespaceObject.__)('Structure for Navigation Menu: %s'), navigationMenu?.title || (0,external_wp_i18n_namespaceObject.__)('Untitled menu')) : (0,external_wp_i18n_namespaceObject.__)('You have not yet created any menus. Displaying a list of your Pages'); 35535 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 35536 className: "wp-block-navigation__menu-inspector-controls", 35537 children: [!hasChildren && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 35538 className: "wp-block-navigation__menu-inspector-controls__empty-message", 35539 children: (0,external_wp_i18n_namespaceObject.__)('This Navigation Menu is empty.') 35540 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PrivateListView, { 35541 rootClientId: clientId, 35542 isExpanded: true, 35543 description: description, 35544 showAppender: true, 35545 blockSettingsMenu: LeafMoreMenu, 35546 additionalBlockContent: AdditionalBlockContent 35547 })] 35548 }); 35549 }; 35550 const MenuInspectorControls = props => { 35551 const { 35552 createNavigationMenuIsSuccess, 35553 createNavigationMenuIsError, 35554 currentMenuId = null, 35555 onCreateNew, 35556 onSelectClassicMenu, 35557 onSelectNavigationMenu, 35558 isManageMenusButtonDisabled, 35559 blockEditingMode 35560 } = props; 35561 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 35562 group: "list", 35563 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 35564 title: null, 35565 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { 35566 className: "wp-block-navigation-off-canvas-editor__header", 35567 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, { 35568 className: "wp-block-navigation-off-canvas-editor__title", 35569 level: 2, 35570 children: (0,external_wp_i18n_namespaceObject.__)('Menu') 35571 }), blockEditingMode === 'default' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(navigation_menu_selector, { 35572 currentMenuId: currentMenuId, 35573 onSelectClassicMenu: onSelectClassicMenu, 35574 onSelectNavigationMenu: onSelectNavigationMenu, 35575 onCreateNew: onCreateNew, 35576 createNavigationMenuIsSuccess: createNavigationMenuIsSuccess, 35577 createNavigationMenuIsError: createNavigationMenuIsError, 35578 actionLabel: actionLabel, 35579 isManageMenusButtonDisabled: isManageMenusButtonDisabled 35580 })] 35581 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MainContent, { 35582 ...props 35583 })] 35584 }) 35585 }); 35586 }; 35587 /* harmony default export */ const menu_inspector_controls = (MenuInspectorControls); 35588 35589 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/accessible-description.js 35590 /** 35591 * WordPress dependencies 35592 */ 35593 35594 35595 function AccessibleDescription({ 35596 id, 35597 children 35598 }) { 35599 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, { 35600 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 35601 id: id, 35602 className: "wp-block-navigation__description", 35603 children: children 35604 }) 35605 }); 35606 } 35607 35608 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/accessible-menu-description.js 35609 /** 35610 * WordPress dependencies 35611 */ 35612 35613 35614 35615 /** 35616 * Internal dependencies 35617 */ 35618 35619 35620 function AccessibleMenuDescription({ 35621 id 35622 }) { 35623 const [menuTitle] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', 'wp_navigation', 'title'); 35624 /* translators: %s: Title of a Navigation Menu post. */ 35625 const description = (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)(`Navigation Menu: "%s"`), menuTitle); 35626 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AccessibleDescription, { 35627 id: id, 35628 children: description 35629 }); 35630 } 35631 35632 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/edit/index.js 35633 /** 35634 * External dependencies 35635 */ 35636 35637 35638 /** 35639 * WordPress dependencies 35640 */ 35641 35642 35643 35644 35645 35646 35647 35648 35649 35650 35651 /** 35652 * Internal dependencies 35653 */ 35654 35655 35656 35657 35658 35659 35660 35661 35662 35663 35664 35665 35666 35667 35668 35669 35670 35671 35672 35673 35674 35675 35676 35677 35678 function useResponsiveMenu(navRef) { 35679 const [isResponsiveMenuOpen, setResponsiveMenuVisibility] = (0,external_wp_element_namespaceObject.useState)(false); 35680 (0,external_wp_element_namespaceObject.useEffect)(() => { 35681 if (!navRef.current) { 35682 return; 35683 } 35684 const htmlElement = navRef.current.ownerDocument.documentElement; 35685 35686 // Add a `has-modal-open` class to the <html> when the responsive 35687 // menu is open. This reproduces the same behavior of the frontend. 35688 if (isResponsiveMenuOpen) { 35689 htmlElement.classList.add('has-modal-open'); 35690 } else { 35691 htmlElement.classList.remove('has-modal-open'); 35692 } 35693 return () => { 35694 htmlElement?.classList.remove('has-modal-open'); 35695 }; 35696 }, [navRef, isResponsiveMenuOpen]); 35697 return [isResponsiveMenuOpen, setResponsiveMenuVisibility]; 35698 } 35699 function ColorTools({ 35700 textColor, 35701 setTextColor, 35702 backgroundColor, 35703 setBackgroundColor, 35704 overlayTextColor, 35705 setOverlayTextColor, 35706 overlayBackgroundColor, 35707 setOverlayBackgroundColor, 35708 clientId, 35709 navRef 35710 }) { 35711 const [detectedBackgroundColor, setDetectedBackgroundColor] = (0,external_wp_element_namespaceObject.useState)(); 35712 const [detectedColor, setDetectedColor] = (0,external_wp_element_namespaceObject.useState)(); 35713 const [detectedOverlayBackgroundColor, setDetectedOverlayBackgroundColor] = (0,external_wp_element_namespaceObject.useState)(); 35714 const [detectedOverlayColor, setDetectedOverlayColor] = (0,external_wp_element_namespaceObject.useState)(); 35715 // Turn on contrast checker for web only since it's not supported on mobile yet. 35716 const enableContrastChecking = external_wp_element_namespaceObject.Platform.OS === 'web'; 35717 (0,external_wp_element_namespaceObject.useEffect)(() => { 35718 if (!enableContrastChecking) { 35719 return; 35720 } 35721 detectColors(navRef.current, setDetectedColor, setDetectedBackgroundColor); 35722 const subMenuElement = navRef.current?.querySelector('[data-type="core/navigation-submenu"] [data-type="core/navigation-link"]'); 35723 if (!subMenuElement) { 35724 return; 35725 } 35726 35727 // Only detect submenu overlay colors if they have previously been explicitly set. 35728 // This avoids the contrast checker from reporting on inherited submenu colors and 35729 // showing the contrast warning twice. 35730 if (overlayTextColor.color || overlayBackgroundColor.color) { 35731 detectColors(subMenuElement, setDetectedOverlayColor, setDetectedOverlayBackgroundColor); 35732 } 35733 }, [enableContrastChecking, overlayTextColor.color, overlayBackgroundColor.color, navRef]); 35734 const colorGradientSettings = (0,external_wp_blockEditor_namespaceObject.__experimentalUseMultipleOriginColorsAndGradients)(); 35735 if (!colorGradientSettings.hasColorsOrGradients) { 35736 return null; 35737 } 35738 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 35739 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientSettingsDropdown, { 35740 __experimentalIsRenderedInSidebar: true, 35741 settings: [{ 35742 colorValue: textColor.color, 35743 label: (0,external_wp_i18n_namespaceObject.__)('Text'), 35744 onColorChange: setTextColor, 35745 resetAllFilter: () => setTextColor() 35746 }, { 35747 colorValue: backgroundColor.color, 35748 label: (0,external_wp_i18n_namespaceObject.__)('Background'), 35749 onColorChange: setBackgroundColor, 35750 resetAllFilter: () => setBackgroundColor() 35751 }, { 35752 colorValue: overlayTextColor.color, 35753 label: (0,external_wp_i18n_namespaceObject.__)('Submenu & overlay text'), 35754 onColorChange: setOverlayTextColor, 35755 resetAllFilter: () => setOverlayTextColor() 35756 }, { 35757 colorValue: overlayBackgroundColor.color, 35758 label: (0,external_wp_i18n_namespaceObject.__)('Submenu & overlay background'), 35759 onColorChange: setOverlayBackgroundColor, 35760 resetAllFilter: () => setOverlayBackgroundColor() 35761 }], 35762 panelId: clientId, 35763 ...colorGradientSettings, 35764 gradients: [], 35765 disableCustomGradients: true 35766 }), enableContrastChecking && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 35767 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.ContrastChecker, { 35768 backgroundColor: detectedBackgroundColor, 35769 textColor: detectedColor 35770 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.ContrastChecker, { 35771 backgroundColor: detectedOverlayBackgroundColor, 35772 textColor: detectedOverlayColor 35773 })] 35774 })] 35775 }); 35776 } 35777 function Navigation({ 35778 attributes, 35779 setAttributes, 35780 clientId, 35781 isSelected, 35782 className, 35783 backgroundColor, 35784 setBackgroundColor, 35785 textColor, 35786 setTextColor, 35787 overlayBackgroundColor, 35788 setOverlayBackgroundColor, 35789 overlayTextColor, 35790 setOverlayTextColor, 35791 // These props are used by the navigation editor to override specific 35792 // navigation block settings. 35793 hasSubmenuIndicatorSetting = true, 35794 customPlaceholder: CustomPlaceholder = null, 35795 __unstableLayoutClassNames: layoutClassNames 35796 }) { 35797 const { 35798 openSubmenusOnClick, 35799 overlayMenu, 35800 showSubmenuIcon, 35801 templateLock, 35802 layout: { 35803 justifyContent, 35804 orientation = 'horizontal', 35805 flexWrap = 'wrap' 35806 } = {}, 35807 hasIcon, 35808 icon = 'handle' 35809 } = attributes; 35810 const ref = attributes.ref; 35811 const setRef = (0,external_wp_element_namespaceObject.useCallback)(postId => { 35812 setAttributes({ 35813 ref: postId 35814 }); 35815 }, [setAttributes]); 35816 const recursionId = `navigationMenu/$ref}`; 35817 const hasAlreadyRendered = (0,external_wp_blockEditor_namespaceObject.useHasRecursion)(recursionId); 35818 const blockEditingMode = (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)(); 35819 35820 // Preload classic menus, so that they don't suddenly pop-in when viewing 35821 // the Select Menu dropdown. 35822 const { 35823 menus: classicMenus 35824 } = useNavigationEntities(); 35825 const [showNavigationMenuStatusNotice, hideNavigationMenuStatusNotice] = use_navigation_notice({ 35826 name: 'block-library/core/navigation/status' 35827 }); 35828 const [showClassicMenuConversionNotice, hideClassicMenuConversionNotice] = use_navigation_notice({ 35829 name: 'block-library/core/navigation/classic-menu-conversion' 35830 }); 35831 const [showNavigationMenuPermissionsNotice, hideNavigationMenuPermissionsNotice] = use_navigation_notice({ 35832 name: 'block-library/core/navigation/permissions/update' 35833 }); 35834 const { 35835 create: createNavigationMenu, 35836 status: createNavigationMenuStatus, 35837 error: createNavigationMenuError, 35838 value: createNavigationMenuPost, 35839 isPending: isCreatingNavigationMenu, 35840 isSuccess: createNavigationMenuIsSuccess, 35841 isError: createNavigationMenuIsError 35842 } = useCreateNavigationMenu(clientId); 35843 const createUntitledEmptyNavigationMenu = async () => { 35844 await createNavigationMenu(''); 35845 }; 35846 const { 35847 hasUncontrolledInnerBlocks, 35848 uncontrolledInnerBlocks, 35849 isInnerBlockSelected, 35850 innerBlocks 35851 } = useInnerBlocks(clientId); 35852 const hasSubmenus = !!innerBlocks.find(block => block.name === 'core/navigation-submenu'); 35853 const { 35854 replaceInnerBlocks, 35855 selectBlock, 35856 __unstableMarkNextChangeAsNotPersistent 35857 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 35858 const navRef = (0,external_wp_element_namespaceObject.useRef)(); 35859 const [isResponsiveMenuOpen, setResponsiveMenuVisibility] = useResponsiveMenu(navRef); 35860 const [overlayMenuPreview, setOverlayMenuPreview] = (0,external_wp_element_namespaceObject.useState)(false); 35861 const { 35862 hasResolvedNavigationMenus, 35863 isNavigationMenuResolved, 35864 isNavigationMenuMissing, 35865 canUserUpdateNavigationMenu, 35866 hasResolvedCanUserUpdateNavigationMenu, 35867 canUserDeleteNavigationMenu, 35868 hasResolvedCanUserDeleteNavigationMenu, 35869 canUserCreateNavigationMenus, 35870 isResolvingCanUserCreateNavigationMenus, 35871 hasResolvedCanUserCreateNavigationMenus 35872 } = useNavigationMenu(ref); 35873 const navMenuResolvedButMissing = hasResolvedNavigationMenus && isNavigationMenuMissing; 35874 const { 35875 convert: convertClassicMenu, 35876 status: classicMenuConversionStatus, 35877 error: classicMenuConversionError 35878 } = use_convert_classic_menu_to_block_menu(createNavigationMenu); 35879 const isConvertingClassicMenu = classicMenuConversionStatus === CLASSIC_MENU_CONVERSION_PENDING; 35880 const handleUpdateMenu = (0,external_wp_element_namespaceObject.useCallback)((menuId, options = { 35881 focusNavigationBlock: false 35882 }) => { 35883 const { 35884 focusNavigationBlock 35885 } = options; 35886 setRef(menuId); 35887 if (focusNavigationBlock) { 35888 selectBlock(clientId); 35889 } 35890 }, [selectBlock, clientId, setRef]); 35891 const isEntityAvailable = !isNavigationMenuMissing && isNavigationMenuResolved; 35892 35893 // If the block has inner blocks, but no menu id, then these blocks are either: 35894 // - inserted via a pattern. 35895 // - inserted directly via Code View (or otherwise). 35896 // - from an older version of navigation block added before the block used a wp_navigation entity. 35897 // Consider this state as 'unsaved' and offer an uncontrolled version of inner blocks, 35898 // that automatically saves the menu as an entity when changes are made to the inner blocks. 35899 const hasUnsavedBlocks = hasUncontrolledInnerBlocks && !isEntityAvailable; 35900 const { 35901 getNavigationFallbackId 35902 } = unlock((0,external_wp_data_namespaceObject.useSelect)(external_wp_coreData_namespaceObject.store)); 35903 const navigationFallbackId = !(ref || hasUnsavedBlocks) ? getNavigationFallbackId() : null; 35904 (0,external_wp_element_namespaceObject.useEffect)(() => { 35905 // If: 35906 // - there is an existing menu, OR 35907 // - there are existing (uncontrolled) inner blocks 35908 // ...then don't request a fallback menu. 35909 if (ref || hasUnsavedBlocks || !navigationFallbackId) { 35910 return; 35911 } 35912 35913 /** 35914 * This fallback displays (both in editor and on front) 35915 * The fallback should not request a save (entity dirty state) 35916 * nor to be undoable, hence why it is marked as non persistent 35917 */ 35918 35919 __unstableMarkNextChangeAsNotPersistent(); 35920 setRef(navigationFallbackId); 35921 }, [ref, setRef, hasUnsavedBlocks, navigationFallbackId, __unstableMarkNextChangeAsNotPersistent]); 35922 35923 // The standard HTML5 tag for the block wrapper. 35924 const TagName = 'nav'; 35925 35926 // "placeholder" shown if: 35927 // - there is no ref attribute pointing to a Navigation Post. 35928 // - there is no classic menu conversion process in progress. 35929 // - there is no menu creation process in progress. 35930 // - there are no uncontrolled blocks. 35931 const isPlaceholder = !ref && !isCreatingNavigationMenu && !isConvertingClassicMenu && hasResolvedNavigationMenus && classicMenus?.length === 0 && !hasUncontrolledInnerBlocks; 35932 35933 // "loading" state: 35934 // - there is a menu creation process in progress. 35935 // - there is a classic menu conversion process in progress. 35936 // OR: 35937 // - there is a ref attribute pointing to a Navigation Post 35938 // - the Navigation Post isn't available (hasn't resolved) yet. 35939 const isLoading = !hasResolvedNavigationMenus || isCreatingNavigationMenu || isConvertingClassicMenu || !!(ref && !isEntityAvailable && !isConvertingClassicMenu); 35940 const textDecoration = attributes.style?.typography?.textDecoration; 35941 const hasBlockOverlay = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).__unstableHasActiveBlockOverlayActive(clientId), [clientId]); 35942 const isResponsive = 'never' !== overlayMenu; 35943 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 35944 ref: navRef, 35945 className: dist_clsx(className, { 35946 'items-justified-right': justifyContent === 'right', 35947 'items-justified-space-between': justifyContent === 'space-between', 35948 'items-justified-left': justifyContent === 'left', 35949 'items-justified-center': justifyContent === 'center', 35950 'is-vertical': orientation === 'vertical', 35951 'no-wrap': flexWrap === 'nowrap', 35952 'is-responsive': isResponsive, 35953 'has-text-color': !!textColor.color || !!textColor?.class, 35954 [(0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor?.slug)]: !!textColor?.slug, 35955 'has-background': !!backgroundColor.color || backgroundColor.class, 35956 [(0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor?.slug)]: !!backgroundColor?.slug, 35957 [`has-text-decoration-$textDecoration}`]: textDecoration, 35958 'block-editor-block-content-overlay': hasBlockOverlay 35959 }, layoutClassNames), 35960 style: { 35961 color: !textColor?.slug && textColor?.color, 35962 backgroundColor: !backgroundColor?.slug && backgroundColor?.color 35963 } 35964 }); 35965 const onSelectClassicMenu = async classicMenu => { 35966 return convertClassicMenu(classicMenu.id, classicMenu.name, 'draft'); 35967 }; 35968 const onSelectNavigationMenu = menuId => { 35969 handleUpdateMenu(menuId); 35970 }; 35971 (0,external_wp_element_namespaceObject.useEffect)(() => { 35972 hideNavigationMenuStatusNotice(); 35973 if (isCreatingNavigationMenu) { 35974 (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)(`Creating Navigation Menu.`)); 35975 } 35976 if (createNavigationMenuIsSuccess) { 35977 handleUpdateMenu(createNavigationMenuPost?.id, { 35978 focusNavigationBlock: true 35979 }); 35980 showNavigationMenuStatusNotice((0,external_wp_i18n_namespaceObject.__)(`Navigation Menu successfully created.`)); 35981 } 35982 if (createNavigationMenuIsError) { 35983 showNavigationMenuStatusNotice((0,external_wp_i18n_namespaceObject.__)('Failed to create Navigation Menu.')); 35984 } 35985 }, [createNavigationMenuStatus, createNavigationMenuError, createNavigationMenuPost?.id, createNavigationMenuIsError, createNavigationMenuIsSuccess, isCreatingNavigationMenu, handleUpdateMenu, hideNavigationMenuStatusNotice, showNavigationMenuStatusNotice]); 35986 (0,external_wp_element_namespaceObject.useEffect)(() => { 35987 hideClassicMenuConversionNotice(); 35988 if (classicMenuConversionStatus === CLASSIC_MENU_CONVERSION_PENDING) { 35989 (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Classic menu importing.')); 35990 } 35991 if (classicMenuConversionStatus === CLASSIC_MENU_CONVERSION_SUCCESS) { 35992 showClassicMenuConversionNotice((0,external_wp_i18n_namespaceObject.__)('Classic menu imported successfully.')); 35993 handleUpdateMenu(createNavigationMenuPost?.id, { 35994 focusNavigationBlock: true 35995 }); 35996 } 35997 if (classicMenuConversionStatus === CLASSIC_MENU_CONVERSION_ERROR) { 35998 showClassicMenuConversionNotice((0,external_wp_i18n_namespaceObject.__)('Classic menu import failed.')); 35999 } 36000 }, [classicMenuConversionStatus, classicMenuConversionError, hideClassicMenuConversionNotice, showClassicMenuConversionNotice, createNavigationMenuPost?.id, handleUpdateMenu]); 36001 (0,external_wp_element_namespaceObject.useEffect)(() => { 36002 if (!isSelected && !isInnerBlockSelected) { 36003 hideNavigationMenuPermissionsNotice(); 36004 } 36005 if (isSelected || isInnerBlockSelected) { 36006 if (ref && !navMenuResolvedButMissing && hasResolvedCanUserUpdateNavigationMenu && !canUserUpdateNavigationMenu) { 36007 showNavigationMenuPermissionsNotice((0,external_wp_i18n_namespaceObject.__)('You do not have permission to edit this Menu. Any changes made will not be saved.')); 36008 } 36009 if (!ref && hasResolvedCanUserCreateNavigationMenus && !canUserCreateNavigationMenus) { 36010 showNavigationMenuPermissionsNotice((0,external_wp_i18n_namespaceObject.__)('You do not have permission to create Navigation Menus.')); 36011 } 36012 } 36013 }, [isSelected, isInnerBlockSelected, canUserUpdateNavigationMenu, hasResolvedCanUserUpdateNavigationMenu, canUserCreateNavigationMenus, hasResolvedCanUserCreateNavigationMenus, ref, hideNavigationMenuPermissionsNotice, showNavigationMenuPermissionsNotice, navMenuResolvedButMissing]); 36014 const hasManagePermissions = canUserCreateNavigationMenus || canUserUpdateNavigationMenu; 36015 const overlayMenuPreviewClasses = dist_clsx('wp-block-navigation__overlay-menu-preview', { 36016 open: overlayMenuPreview 36017 }); 36018 const submenuAccessibilityNotice = !showSubmenuIcon && !openSubmenusOnClick ? (0,external_wp_i18n_namespaceObject.__)('The current menu options offer reduced accessibility for users and are not recommended. Enabling either "Open on Click" or "Show arrow" offers enhanced accessibility by allowing keyboard users to browse submenus selectively.') : ''; 36019 const isFirstRender = (0,external_wp_element_namespaceObject.useRef)(true); // Don't speak on first render. 36020 (0,external_wp_element_namespaceObject.useEffect)(() => { 36021 if (!isFirstRender.current && submenuAccessibilityNotice) { 36022 (0,external_wp_a11y_namespaceObject.speak)(submenuAccessibilityNotice); 36023 } 36024 isFirstRender.current = false; 36025 }, [submenuAccessibilityNotice]); 36026 const overlayMenuPreviewId = (0,external_wp_compose_namespaceObject.useInstanceId)(OverlayMenuPreview, `overlay-menu-preview`); 36027 const stylingInspectorControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 36028 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 36029 children: hasSubmenuIndicatorSetting && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 36030 title: (0,external_wp_i18n_namespaceObject.__)('Display'), 36031 children: [isResponsive && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 36032 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Button, { 36033 __next40pxDefaultSize: true, 36034 className: overlayMenuPreviewClasses, 36035 onClick: () => { 36036 setOverlayMenuPreview(!overlayMenuPreview); 36037 }, 36038 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Overlay menu controls'), 36039 "aria-controls": overlayMenuPreviewId, 36040 "aria-expanded": overlayMenuPreview, 36041 children: [hasIcon && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 36042 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(OverlayMenuIcon, { 36043 icon: icon 36044 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, { 36045 icon: library_close 36046 })] 36047 }), !hasIcon && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 36048 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 36049 children: (0,external_wp_i18n_namespaceObject.__)('Menu') 36050 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 36051 children: (0,external_wp_i18n_namespaceObject.__)('Close') 36052 })] 36053 })] 36054 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 36055 id: overlayMenuPreviewId, 36056 children: overlayMenuPreview && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(OverlayMenuPreview, { 36057 setAttributes: setAttributes, 36058 hasIcon: hasIcon, 36059 icon: icon, 36060 hidden: !overlayMenuPreview 36061 }) 36062 })] 36063 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, { 36064 __next40pxDefaultSize: true, 36065 __nextHasNoMarginBottom: true, 36066 label: (0,external_wp_i18n_namespaceObject.__)('Overlay Menu'), 36067 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Configure overlay menu'), 36068 value: overlayMenu, 36069 help: (0,external_wp_i18n_namespaceObject.__)('Collapses the navigation options in a menu icon opening an overlay.'), 36070 onChange: value => setAttributes({ 36071 overlayMenu: value 36072 }), 36073 isBlock: true, 36074 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 36075 value: "never", 36076 label: (0,external_wp_i18n_namespaceObject.__)('Off') 36077 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 36078 value: "mobile", 36079 label: (0,external_wp_i18n_namespaceObject.__)('Mobile') 36080 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 36081 value: "always", 36082 label: (0,external_wp_i18n_namespaceObject.__)('Always') 36083 })] 36084 }), hasSubmenus && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 36085 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h3", { 36086 children: (0,external_wp_i18n_namespaceObject.__)('Submenus') 36087 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 36088 __nextHasNoMarginBottom: true, 36089 checked: openSubmenusOnClick, 36090 onChange: value => { 36091 setAttributes({ 36092 openSubmenusOnClick: value, 36093 ...(value && { 36094 showSubmenuIcon: true 36095 }) // Make sure arrows are shown when we toggle this on. 36096 }); 36097 }, 36098 label: (0,external_wp_i18n_namespaceObject.__)('Open on click') 36099 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 36100 __nextHasNoMarginBottom: true, 36101 checked: showSubmenuIcon, 36102 onChange: value => { 36103 setAttributes({ 36104 showSubmenuIcon: value 36105 }); 36106 }, 36107 disabled: attributes.openSubmenusOnClick, 36108 label: (0,external_wp_i18n_namespaceObject.__)('Show arrow') 36109 }), submenuAccessibilityNotice && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 36110 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, { 36111 spokenMessage: null, 36112 status: "warning", 36113 isDismissible: false, 36114 children: submenuAccessibilityNotice 36115 }) 36116 })] 36117 })] 36118 }) 36119 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 36120 group: "color", 36121 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ColorTools, { 36122 textColor: textColor, 36123 setTextColor: setTextColor, 36124 backgroundColor: backgroundColor, 36125 setBackgroundColor: setBackgroundColor, 36126 overlayTextColor: overlayTextColor, 36127 setOverlayTextColor: setOverlayTextColor, 36128 overlayBackgroundColor: overlayBackgroundColor, 36129 setOverlayBackgroundColor: setOverlayBackgroundColor, 36130 clientId: clientId, 36131 navRef: navRef 36132 }) 36133 })] 36134 }); 36135 const accessibleDescriptionId = `$clientId}-desc`; 36136 const isHiddenByDefault = 'always' === overlayMenu; 36137 const isManageMenusButtonDisabled = !hasManagePermissions || !hasResolvedNavigationMenus; 36138 if (hasUnsavedBlocks && !isCreatingNavigationMenu) { 36139 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(TagName, { 36140 ...blockProps, 36141 "aria-describedby": !isPlaceholder ? accessibleDescriptionId : undefined, 36142 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AccessibleDescription, { 36143 id: accessibleDescriptionId, 36144 children: (0,external_wp_i18n_namespaceObject.__)('Unsaved Navigation Menu.') 36145 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(menu_inspector_controls, { 36146 clientId: clientId, 36147 createNavigationMenuIsSuccess: createNavigationMenuIsSuccess, 36148 createNavigationMenuIsError: createNavigationMenuIsError, 36149 currentMenuId: ref, 36150 isNavigationMenuMissing: isNavigationMenuMissing, 36151 isManageMenusButtonDisabled: isManageMenusButtonDisabled, 36152 onCreateNew: createUntitledEmptyNavigationMenu, 36153 onSelectClassicMenu: onSelectClassicMenu, 36154 onSelectNavigationMenu: onSelectNavigationMenu, 36155 isLoading: isLoading, 36156 blockEditingMode: blockEditingMode 36157 }), blockEditingMode === 'default' && stylingInspectorControls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResponsiveWrapper, { 36158 id: clientId, 36159 onToggle: setResponsiveMenuVisibility, 36160 isOpen: isResponsiveMenuOpen, 36161 hasIcon: hasIcon, 36162 icon: icon, 36163 isResponsive: isResponsive, 36164 isHiddenByDefault: isHiddenByDefault, 36165 overlayBackgroundColor: overlayBackgroundColor, 36166 overlayTextColor: overlayTextColor, 36167 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(UnsavedInnerBlocks, { 36168 createNavigationMenu: createNavigationMenu, 36169 blocks: uncontrolledInnerBlocks, 36170 hasSelection: isSelected || isInnerBlockSelected 36171 }) 36172 })] 36173 }); 36174 } 36175 36176 // Show a warning if the selected menu is no longer available. 36177 // TODO - the user should be able to select a new one? 36178 if (ref && isNavigationMenuMissing) { 36179 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(TagName, { 36180 ...blockProps, 36181 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(menu_inspector_controls, { 36182 clientId: clientId, 36183 createNavigationMenuIsSuccess: createNavigationMenuIsSuccess, 36184 createNavigationMenuIsError: createNavigationMenuIsError, 36185 currentMenuId: ref, 36186 isNavigationMenuMissing: isNavigationMenuMissing, 36187 isManageMenusButtonDisabled: isManageMenusButtonDisabled, 36188 onCreateNew: createUntitledEmptyNavigationMenu, 36189 onSelectClassicMenu: onSelectClassicMenu, 36190 onSelectNavigationMenu: onSelectNavigationMenu, 36191 isLoading: isLoading, 36192 blockEditingMode: blockEditingMode 36193 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(deleted_navigation_warning, { 36194 onCreateNew: createUntitledEmptyNavigationMenu 36195 })] 36196 }); 36197 } 36198 if (isEntityAvailable && hasAlreadyRendered) { 36199 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 36200 ...blockProps, 36201 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 36202 children: (0,external_wp_i18n_namespaceObject.__)('Block cannot be rendered inside itself.') 36203 }) 36204 }); 36205 } 36206 const PlaceholderComponent = CustomPlaceholder ? CustomPlaceholder : NavigationPlaceholder; 36207 36208 /** 36209 * Historically the navigation block has supported custom placeholders. 36210 * Even though the current UX tries as hard as possible not to 36211 * end up in a placeholder state, the block continues to support 36212 * this extensibility point, via a CustomPlaceholder. 36213 * When CustomPlaceholder is present it becomes the default fallback 36214 * for an empty navigation block, instead of the default fallbacks. 36215 * 36216 */ 36217 36218 if (isPlaceholder && CustomPlaceholder) { 36219 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 36220 ...blockProps, 36221 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PlaceholderComponent, { 36222 isSelected: isSelected, 36223 currentMenuId: ref, 36224 clientId: clientId, 36225 canUserCreateNavigationMenus: canUserCreateNavigationMenus, 36226 isResolvingCanUserCreateNavigationMenus: isResolvingCanUserCreateNavigationMenus, 36227 onSelectNavigationMenu: onSelectNavigationMenu, 36228 onSelectClassicMenu: onSelectClassicMenu, 36229 onCreateEmpty: createUntitledEmptyNavigationMenu 36230 }) 36231 }); 36232 } 36233 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_coreData_namespaceObject.EntityProvider, { 36234 kind: "postType", 36235 type: "wp_navigation", 36236 id: ref, 36237 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.RecursionProvider, { 36238 uniqueId: recursionId, 36239 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(menu_inspector_controls, { 36240 clientId: clientId, 36241 createNavigationMenuIsSuccess: createNavigationMenuIsSuccess, 36242 createNavigationMenuIsError: createNavigationMenuIsError, 36243 currentMenuId: ref, 36244 isNavigationMenuMissing: isNavigationMenuMissing, 36245 isManageMenusButtonDisabled: isManageMenusButtonDisabled, 36246 onCreateNew: createUntitledEmptyNavigationMenu, 36247 onSelectClassicMenu: onSelectClassicMenu, 36248 onSelectNavigationMenu: onSelectNavigationMenu, 36249 isLoading: isLoading, 36250 blockEditingMode: blockEditingMode 36251 }), blockEditingMode === 'default' && stylingInspectorControls, blockEditingMode === 'default' && isEntityAvailable && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.InspectorControls, { 36252 group: "advanced", 36253 children: [hasResolvedCanUserUpdateNavigationMenu && canUserUpdateNavigationMenu && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationMenuNameControl, {}), hasResolvedCanUserDeleteNavigationMenu && canUserDeleteNavigationMenu && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationMenuDeleteControl, { 36254 onDelete: () => { 36255 replaceInnerBlocks(clientId, []); 36256 showNavigationMenuStatusNotice((0,external_wp_i18n_namespaceObject.__)('Navigation Menu successfully deleted.')); 36257 } 36258 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(manage_menus_button, { 36259 disabled: isManageMenusButtonDisabled, 36260 className: "wp-block-navigation-manage-menus-button" 36261 })] 36262 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(TagName, { 36263 ...blockProps, 36264 "aria-describedby": !isPlaceholder && !isLoading ? accessibleDescriptionId : undefined, 36265 children: [isLoading && !isHiddenByDefault && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 36266 className: "wp-block-navigation__loading-indicator-container", 36267 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, { 36268 className: "wp-block-navigation__loading-indicator" 36269 }) 36270 }), (!isLoading || isHiddenByDefault) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 36271 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(AccessibleMenuDescription, { 36272 id: accessibleDescriptionId 36273 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResponsiveWrapper, { 36274 id: clientId, 36275 onToggle: setResponsiveMenuVisibility, 36276 hasIcon: hasIcon, 36277 icon: icon, 36278 isOpen: isResponsiveMenuOpen, 36279 isResponsive: isResponsive, 36280 isHiddenByDefault: isHiddenByDefault, 36281 overlayBackgroundColor: overlayBackgroundColor, 36282 overlayTextColor: overlayTextColor, 36283 children: isEntityAvailable && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationInnerBlocks, { 36284 clientId: clientId, 36285 hasCustomPlaceholder: !!CustomPlaceholder, 36286 templateLock: templateLock, 36287 orientation: orientation 36288 }) 36289 })] 36290 })] 36291 })] 36292 }) 36293 }); 36294 } 36295 /* harmony default export */ const navigation_edit = ((0,external_wp_blockEditor_namespaceObject.withColors)({ 36296 textColor: 'color' 36297 }, { 36298 backgroundColor: 'color' 36299 }, { 36300 overlayBackgroundColor: 'color' 36301 }, { 36302 overlayTextColor: 'color' 36303 })(Navigation)); 36304 36305 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/save.js 36306 /** 36307 * WordPress dependencies 36308 */ 36309 36310 36311 function navigation_save_save({ 36312 attributes 36313 }) { 36314 if (attributes.ref) { 36315 // Avoid rendering inner blocks when a ref is defined. 36316 // When this id is defined the inner blocks are loaded from the 36317 // `wp_navigation` entity rather than the hard-coded block html. 36318 return; 36319 } 36320 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 36321 } 36322 36323 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/deprecated.js 36324 /** 36325 * WordPress dependencies 36326 */ 36327 36328 36329 36330 /** 36331 * Internal dependencies 36332 */ 36333 36334 36335 const TYPOGRAPHY_PRESET_DEPRECATION_MAP = { 36336 fontStyle: 'var:preset|font-style|', 36337 fontWeight: 'var:preset|font-weight|', 36338 textDecoration: 'var:preset|text-decoration|', 36339 textTransform: 'var:preset|text-transform|' 36340 }; 36341 const migrateIdToRef = ({ 36342 navigationMenuId, 36343 ...attributes 36344 }) => { 36345 return { 36346 ...attributes, 36347 ref: navigationMenuId 36348 }; 36349 }; 36350 const deprecated_migrateWithLayout = attributes => { 36351 if (!!attributes.layout) { 36352 return attributes; 36353 } 36354 const { 36355 itemsJustification, 36356 orientation, 36357 ...updatedAttributes 36358 } = attributes; 36359 if (itemsJustification || orientation) { 36360 Object.assign(updatedAttributes, { 36361 layout: { 36362 type: 'flex', 36363 ...(itemsJustification && { 36364 justifyContent: itemsJustification 36365 }), 36366 ...(orientation && { 36367 orientation 36368 }) 36369 } 36370 }); 36371 } 36372 return updatedAttributes; 36373 }; 36374 const navigation_deprecated_v6 = { 36375 attributes: { 36376 navigationMenuId: { 36377 type: 'number' 36378 }, 36379 textColor: { 36380 type: 'string' 36381 }, 36382 customTextColor: { 36383 type: 'string' 36384 }, 36385 rgbTextColor: { 36386 type: 'string' 36387 }, 36388 backgroundColor: { 36389 type: 'string' 36390 }, 36391 customBackgroundColor: { 36392 type: 'string' 36393 }, 36394 rgbBackgroundColor: { 36395 type: 'string' 36396 }, 36397 showSubmenuIcon: { 36398 type: 'boolean', 36399 default: true 36400 }, 36401 openSubmenusOnClick: { 36402 type: 'boolean', 36403 default: false 36404 }, 36405 overlayMenu: { 36406 type: 'string', 36407 default: 'mobile' 36408 }, 36409 __unstableLocation: { 36410 type: 'string' 36411 }, 36412 overlayBackgroundColor: { 36413 type: 'string' 36414 }, 36415 customOverlayBackgroundColor: { 36416 type: 'string' 36417 }, 36418 overlayTextColor: { 36419 type: 'string' 36420 }, 36421 customOverlayTextColor: { 36422 type: 'string' 36423 } 36424 }, 36425 supports: { 36426 align: ['wide', 'full'], 36427 anchor: true, 36428 html: false, 36429 inserter: true, 36430 typography: { 36431 fontSize: true, 36432 lineHeight: true, 36433 __experimentalFontStyle: true, 36434 __experimentalFontWeight: true, 36435 __experimentalTextTransform: true, 36436 __experimentalFontFamily: true, 36437 __experimentalTextDecoration: true, 36438 __experimentalDefaultControls: { 36439 fontSize: true 36440 } 36441 }, 36442 spacing: { 36443 blockGap: true, 36444 units: ['px', 'em', 'rem', 'vh', 'vw'], 36445 __experimentalDefaultControls: { 36446 blockGap: true 36447 } 36448 }, 36449 layout: { 36450 allowSwitching: false, 36451 allowInheriting: false, 36452 default: { 36453 type: 'flex' 36454 } 36455 } 36456 }, 36457 save() { 36458 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 36459 }, 36460 isEligible: ({ 36461 navigationMenuId 36462 }) => !!navigationMenuId, 36463 migrate: migrateIdToRef 36464 }; 36465 const navigation_deprecated_v5 = { 36466 attributes: { 36467 navigationMenuId: { 36468 type: 'number' 36469 }, 36470 orientation: { 36471 type: 'string', 36472 default: 'horizontal' 36473 }, 36474 textColor: { 36475 type: 'string' 36476 }, 36477 customTextColor: { 36478 type: 'string' 36479 }, 36480 rgbTextColor: { 36481 type: 'string' 36482 }, 36483 backgroundColor: { 36484 type: 'string' 36485 }, 36486 customBackgroundColor: { 36487 type: 'string' 36488 }, 36489 rgbBackgroundColor: { 36490 type: 'string' 36491 }, 36492 itemsJustification: { 36493 type: 'string' 36494 }, 36495 showSubmenuIcon: { 36496 type: 'boolean', 36497 default: true 36498 }, 36499 openSubmenusOnClick: { 36500 type: 'boolean', 36501 default: false 36502 }, 36503 overlayMenu: { 36504 type: 'string', 36505 default: 'never' 36506 }, 36507 __unstableLocation: { 36508 type: 'string' 36509 }, 36510 overlayBackgroundColor: { 36511 type: 'string' 36512 }, 36513 customOverlayBackgroundColor: { 36514 type: 'string' 36515 }, 36516 overlayTextColor: { 36517 type: 'string' 36518 }, 36519 customOverlayTextColor: { 36520 type: 'string' 36521 } 36522 }, 36523 supports: { 36524 align: ['wide', 'full'], 36525 anchor: true, 36526 html: false, 36527 inserter: true, 36528 typography: { 36529 fontSize: true, 36530 lineHeight: true, 36531 __experimentalFontStyle: true, 36532 __experimentalFontWeight: true, 36533 __experimentalTextTransform: true, 36534 __experimentalFontFamily: true, 36535 __experimentalTextDecoration: true, 36536 __experimentalDefaultControls: { 36537 fontSize: true 36538 } 36539 }, 36540 spacing: { 36541 blockGap: true, 36542 units: ['px', 'em', 'rem', 'vh', 'vw'], 36543 __experimentalDefaultControls: { 36544 blockGap: true 36545 } 36546 } 36547 }, 36548 save() { 36549 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 36550 }, 36551 isEligible: ({ 36552 itemsJustification, 36553 orientation 36554 }) => !!itemsJustification || !!orientation, 36555 migrate: (0,external_wp_compose_namespaceObject.compose)(migrateIdToRef, deprecated_migrateWithLayout) 36556 }; 36557 const navigation_deprecated_v4 = { 36558 attributes: { 36559 orientation: { 36560 type: 'string', 36561 default: 'horizontal' 36562 }, 36563 textColor: { 36564 type: 'string' 36565 }, 36566 customTextColor: { 36567 type: 'string' 36568 }, 36569 rgbTextColor: { 36570 type: 'string' 36571 }, 36572 backgroundColor: { 36573 type: 'string' 36574 }, 36575 customBackgroundColor: { 36576 type: 'string' 36577 }, 36578 rgbBackgroundColor: { 36579 type: 'string' 36580 }, 36581 itemsJustification: { 36582 type: 'string' 36583 }, 36584 showSubmenuIcon: { 36585 type: 'boolean', 36586 default: true 36587 }, 36588 openSubmenusOnClick: { 36589 type: 'boolean', 36590 default: false 36591 }, 36592 overlayMenu: { 36593 type: 'string', 36594 default: 'never' 36595 }, 36596 __unstableLocation: { 36597 type: 'string' 36598 }, 36599 overlayBackgroundColor: { 36600 type: 'string' 36601 }, 36602 customOverlayBackgroundColor: { 36603 type: 'string' 36604 }, 36605 overlayTextColor: { 36606 type: 'string' 36607 }, 36608 customOverlayTextColor: { 36609 type: 'string' 36610 } 36611 }, 36612 supports: { 36613 align: ['wide', 'full'], 36614 anchor: true, 36615 html: false, 36616 inserter: true, 36617 typography: { 36618 fontSize: true, 36619 lineHeight: true, 36620 __experimentalFontStyle: true, 36621 __experimentalFontWeight: true, 36622 __experimentalTextTransform: true, 36623 __experimentalFontFamily: true, 36624 __experimentalTextDecoration: true 36625 }, 36626 spacing: { 36627 blockGap: true, 36628 units: ['px', 'em', 'rem', 'vh', 'vw'], 36629 __experimentalDefaultControls: { 36630 blockGap: true 36631 } 36632 } 36633 }, 36634 save() { 36635 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 36636 }, 36637 migrate: (0,external_wp_compose_namespaceObject.compose)(migrateIdToRef, deprecated_migrateWithLayout, migrate_font_family), 36638 isEligible({ 36639 style 36640 }) { 36641 return style?.typography?.fontFamily; 36642 } 36643 }; 36644 const migrateIsResponsive = function (attributes) { 36645 delete attributes.isResponsive; 36646 return { 36647 ...attributes, 36648 overlayMenu: 'mobile' 36649 }; 36650 }; 36651 const migrateTypographyPresets = function (attributes) { 36652 var _attributes$style$typ; 36653 return { 36654 ...attributes, 36655 style: { 36656 ...attributes.style, 36657 typography: Object.fromEntries(Object.entries((_attributes$style$typ = attributes.style.typography) !== null && _attributes$style$typ !== void 0 ? _attributes$style$typ : {}).map(([key, value]) => { 36658 const prefix = TYPOGRAPHY_PRESET_DEPRECATION_MAP[key]; 36659 if (prefix && value.startsWith(prefix)) { 36660 const newValue = value.slice(prefix.length); 36661 if ('textDecoration' === key && 'strikethrough' === newValue) { 36662 return [key, 'line-through']; 36663 } 36664 return [key, newValue]; 36665 } 36666 return [key, value]; 36667 })) 36668 } 36669 }; 36670 }; 36671 const navigation_deprecated_deprecated = [navigation_deprecated_v6, navigation_deprecated_v5, navigation_deprecated_v4, 36672 // Remove `isResponsive` attribute. 36673 { 36674 attributes: { 36675 orientation: { 36676 type: 'string', 36677 default: 'horizontal' 36678 }, 36679 textColor: { 36680 type: 'string' 36681 }, 36682 customTextColor: { 36683 type: 'string' 36684 }, 36685 rgbTextColor: { 36686 type: 'string' 36687 }, 36688 backgroundColor: { 36689 type: 'string' 36690 }, 36691 customBackgroundColor: { 36692 type: 'string' 36693 }, 36694 rgbBackgroundColor: { 36695 type: 'string' 36696 }, 36697 itemsJustification: { 36698 type: 'string' 36699 }, 36700 showSubmenuIcon: { 36701 type: 'boolean', 36702 default: true 36703 }, 36704 openSubmenusOnClick: { 36705 type: 'boolean', 36706 default: false 36707 }, 36708 isResponsive: { 36709 type: 'boolean', 36710 default: 'false' 36711 }, 36712 __unstableLocation: { 36713 type: 'string' 36714 }, 36715 overlayBackgroundColor: { 36716 type: 'string' 36717 }, 36718 customOverlayBackgroundColor: { 36719 type: 'string' 36720 }, 36721 overlayTextColor: { 36722 type: 'string' 36723 }, 36724 customOverlayTextColor: { 36725 type: 'string' 36726 } 36727 }, 36728 supports: { 36729 align: ['wide', 'full'], 36730 anchor: true, 36731 html: false, 36732 inserter: true, 36733 typography: { 36734 fontSize: true, 36735 lineHeight: true, 36736 __experimentalFontStyle: true, 36737 __experimentalFontWeight: true, 36738 __experimentalTextTransform: true, 36739 __experimentalFontFamily: true, 36740 __experimentalTextDecoration: true 36741 } 36742 }, 36743 isEligible(attributes) { 36744 return attributes.isResponsive; 36745 }, 36746 migrate: (0,external_wp_compose_namespaceObject.compose)(migrateIdToRef, deprecated_migrateWithLayout, migrate_font_family, migrateIsResponsive), 36747 save() { 36748 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 36749 } 36750 }, { 36751 attributes: { 36752 orientation: { 36753 type: 'string' 36754 }, 36755 textColor: { 36756 type: 'string' 36757 }, 36758 customTextColor: { 36759 type: 'string' 36760 }, 36761 rgbTextColor: { 36762 type: 'string' 36763 }, 36764 backgroundColor: { 36765 type: 'string' 36766 }, 36767 customBackgroundColor: { 36768 type: 'string' 36769 }, 36770 rgbBackgroundColor: { 36771 type: 'string' 36772 }, 36773 itemsJustification: { 36774 type: 'string' 36775 }, 36776 showSubmenuIcon: { 36777 type: 'boolean', 36778 default: true 36779 } 36780 }, 36781 supports: { 36782 align: ['wide', 'full'], 36783 anchor: true, 36784 html: false, 36785 inserter: true, 36786 fontSize: true, 36787 __experimentalFontStyle: true, 36788 __experimentalFontWeight: true, 36789 __experimentalTextTransform: true, 36790 color: true, 36791 __experimentalFontFamily: true, 36792 __experimentalTextDecoration: true 36793 }, 36794 save() { 36795 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 36796 }, 36797 isEligible(attributes) { 36798 if (!attributes.style || !attributes.style.typography) { 36799 return false; 36800 } 36801 for (const styleAttribute in TYPOGRAPHY_PRESET_DEPRECATION_MAP) { 36802 const attributeValue = attributes.style.typography[styleAttribute]; 36803 if (attributeValue && attributeValue.startsWith(TYPOGRAPHY_PRESET_DEPRECATION_MAP[styleAttribute])) { 36804 return true; 36805 } 36806 } 36807 return false; 36808 }, 36809 migrate: (0,external_wp_compose_namespaceObject.compose)(migrateIdToRef, deprecated_migrateWithLayout, migrate_font_family, migrateTypographyPresets) 36810 }, { 36811 attributes: { 36812 className: { 36813 type: 'string' 36814 }, 36815 textColor: { 36816 type: 'string' 36817 }, 36818 rgbTextColor: { 36819 type: 'string' 36820 }, 36821 backgroundColor: { 36822 type: 'string' 36823 }, 36824 rgbBackgroundColor: { 36825 type: 'string' 36826 }, 36827 fontSize: { 36828 type: 'string' 36829 }, 36830 customFontSize: { 36831 type: 'number' 36832 }, 36833 itemsJustification: { 36834 type: 'string' 36835 }, 36836 showSubmenuIcon: { 36837 type: 'boolean' 36838 } 36839 }, 36840 isEligible(attribute) { 36841 return attribute.rgbTextColor || attribute.rgbBackgroundColor; 36842 }, 36843 supports: { 36844 align: ['wide', 'full'], 36845 anchor: true, 36846 html: false, 36847 inserter: true 36848 }, 36849 migrate: (0,external_wp_compose_namespaceObject.compose)(migrateIdToRef, attributes => { 36850 const { 36851 rgbTextColor, 36852 rgbBackgroundColor, 36853 ...restAttributes 36854 } = attributes; 36855 return { 36856 ...restAttributes, 36857 customTextColor: attributes.textColor ? undefined : attributes.rgbTextColor, 36858 customBackgroundColor: attributes.backgroundColor ? undefined : attributes.rgbBackgroundColor 36859 }; 36860 }), 36861 save() { 36862 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 36863 } 36864 }]; 36865 /* harmony default export */ const navigation_deprecated = (navigation_deprecated_deprecated); 36866 36867 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/index.js 36868 /** 36869 * WordPress dependencies 36870 */ 36871 36872 36873 36874 /** 36875 * Internal dependencies 36876 */ 36877 36878 const navigation_metadata = { 36879 $schema: "https://schemas.wp.org/trunk/block.json", 36880 apiVersion: 3, 36881 name: "core/navigation", 36882 title: "Navigation", 36883 category: "theme", 36884 allowedBlocks: ["core/navigation-link", "core/search", "core/social-links", "core/page-list", "core/spacer", "core/home-link", "core/site-title", "core/site-logo", "core/navigation-submenu", "core/loginout", "core/buttons"], 36885 description: "A collection of blocks that allow visitors to get around your site.", 36886 keywords: ["menu", "navigation", "links"], 36887 textdomain: "default", 36888 attributes: { 36889 ref: { 36890 type: "number" 36891 }, 36892 textColor: { 36893 type: "string" 36894 }, 36895 customTextColor: { 36896 type: "string" 36897 }, 36898 rgbTextColor: { 36899 type: "string" 36900 }, 36901 backgroundColor: { 36902 type: "string" 36903 }, 36904 customBackgroundColor: { 36905 type: "string" 36906 }, 36907 rgbBackgroundColor: { 36908 type: "string" 36909 }, 36910 showSubmenuIcon: { 36911 type: "boolean", 36912 "default": true 36913 }, 36914 openSubmenusOnClick: { 36915 type: "boolean", 36916 "default": false 36917 }, 36918 overlayMenu: { 36919 type: "string", 36920 "default": "mobile" 36921 }, 36922 icon: { 36923 type: "string", 36924 "default": "handle" 36925 }, 36926 hasIcon: { 36927 type: "boolean", 36928 "default": true 36929 }, 36930 __unstableLocation: { 36931 type: "string" 36932 }, 36933 overlayBackgroundColor: { 36934 type: "string" 36935 }, 36936 customOverlayBackgroundColor: { 36937 type: "string" 36938 }, 36939 overlayTextColor: { 36940 type: "string" 36941 }, 36942 customOverlayTextColor: { 36943 type: "string" 36944 }, 36945 maxNestingLevel: { 36946 type: "number", 36947 "default": 5 36948 }, 36949 templateLock: { 36950 type: ["string", "boolean"], 36951 "enum": ["all", "insert", "contentOnly", false] 36952 } 36953 }, 36954 providesContext: { 36955 textColor: "textColor", 36956 customTextColor: "customTextColor", 36957 backgroundColor: "backgroundColor", 36958 customBackgroundColor: "customBackgroundColor", 36959 overlayTextColor: "overlayTextColor", 36960 customOverlayTextColor: "customOverlayTextColor", 36961 overlayBackgroundColor: "overlayBackgroundColor", 36962 customOverlayBackgroundColor: "customOverlayBackgroundColor", 36963 fontSize: "fontSize", 36964 customFontSize: "customFontSize", 36965 showSubmenuIcon: "showSubmenuIcon", 36966 openSubmenusOnClick: "openSubmenusOnClick", 36967 style: "style", 36968 maxNestingLevel: "maxNestingLevel" 36969 }, 36970 supports: { 36971 align: ["wide", "full"], 36972 ariaLabel: true, 36973 html: false, 36974 inserter: true, 36975 typography: { 36976 fontSize: true, 36977 lineHeight: true, 36978 __experimentalFontStyle: true, 36979 __experimentalFontWeight: true, 36980 __experimentalTextTransform: true, 36981 __experimentalFontFamily: true, 36982 __experimentalLetterSpacing: true, 36983 __experimentalTextDecoration: true, 36984 __experimentalSkipSerialization: ["textDecoration"], 36985 __experimentalDefaultControls: { 36986 fontSize: true 36987 } 36988 }, 36989 spacing: { 36990 blockGap: true, 36991 units: ["px", "em", "rem", "vh", "vw"], 36992 __experimentalDefaultControls: { 36993 blockGap: true 36994 } 36995 }, 36996 layout: { 36997 allowSwitching: false, 36998 allowInheriting: false, 36999 allowVerticalAlignment: false, 37000 allowSizingOnChildren: true, 37001 "default": { 37002 type: "flex" 37003 } 37004 }, 37005 interactivity: true, 37006 renaming: false 37007 }, 37008 editorStyle: "wp-block-navigation-editor", 37009 style: "wp-block-navigation" 37010 }; 37011 37012 37013 37014 const { 37015 name: navigation_name 37016 } = navigation_metadata; 37017 37018 const navigation_settings = { 37019 icon: library_navigation, 37020 example: { 37021 attributes: { 37022 overlayMenu: 'never' 37023 }, 37024 innerBlocks: [{ 37025 name: 'core/navigation-link', 37026 attributes: { 37027 // translators: 'Home' as in a website's home page. 37028 label: (0,external_wp_i18n_namespaceObject.__)('Home'), 37029 url: 'https://make.wordpress.org/' 37030 } 37031 }, { 37032 name: 'core/navigation-link', 37033 attributes: { 37034 // translators: 'About' as in a website's about page. 37035 label: (0,external_wp_i18n_namespaceObject.__)('About'), 37036 url: 'https://make.wordpress.org/' 37037 } 37038 }, { 37039 name: 'core/navigation-link', 37040 attributes: { 37041 // translators: 'Contact' as in a website's contact page. 37042 label: (0,external_wp_i18n_namespaceObject.__)('Contact'), 37043 url: 'https://make.wordpress.org/' 37044 } 37045 }] 37046 }, 37047 edit: navigation_edit, 37048 save: navigation_save_save, 37049 deprecated: navigation_deprecated 37050 }; 37051 const navigation_init = () => initBlock({ 37052 name: navigation_name, 37053 metadata: navigation_metadata, 37054 settings: navigation_settings 37055 }); 37056 37057 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation-link/edit.js 37058 /** 37059 * External dependencies 37060 */ 37061 37062 37063 /** 37064 * WordPress dependencies 37065 */ 37066 37067 37068 37069 37070 37071 37072 37073 37074 37075 37076 37077 37078 37079 37080 /** 37081 * Internal dependencies 37082 */ 37083 37084 37085 37086 37087 37088 37089 const navigation_link_edit_DEFAULT_BLOCK = { 37090 name: 'core/navigation-link' 37091 }; 37092 37093 /** 37094 * A React hook to determine if it's dragging within the target element. 37095 * 37096 * @typedef {import('@wordpress/element').RefObject} RefObject 37097 * 37098 * @param {RefObject<HTMLElement>} elementRef The target elementRef object. 37099 * 37100 * @return {boolean} Is dragging within the target element. 37101 */ 37102 const useIsDraggingWithin = elementRef => { 37103 const [isDraggingWithin, setIsDraggingWithin] = (0,external_wp_element_namespaceObject.useState)(false); 37104 (0,external_wp_element_namespaceObject.useEffect)(() => { 37105 const { 37106 ownerDocument 37107 } = elementRef.current; 37108 function handleDragStart(event) { 37109 // Check the first time when the dragging starts. 37110 handleDragEnter(event); 37111 } 37112 37113 // Set to false whenever the user cancel the drag event by either releasing the mouse or press Escape. 37114 function handleDragEnd() { 37115 setIsDraggingWithin(false); 37116 } 37117 function handleDragEnter(event) { 37118 // Check if the current target is inside the item element. 37119 if (elementRef.current.contains(event.target)) { 37120 setIsDraggingWithin(true); 37121 } else { 37122 setIsDraggingWithin(false); 37123 } 37124 } 37125 37126 // Bind these events to the document to catch all drag events. 37127 // Ideally, we can also use `event.relatedTarget`, but sadly that 37128 // doesn't work in Safari. 37129 ownerDocument.addEventListener('dragstart', handleDragStart); 37130 ownerDocument.addEventListener('dragend', handleDragEnd); 37131 ownerDocument.addEventListener('dragenter', handleDragEnter); 37132 return () => { 37133 ownerDocument.removeEventListener('dragstart', handleDragStart); 37134 ownerDocument.removeEventListener('dragend', handleDragEnd); 37135 ownerDocument.removeEventListener('dragenter', handleDragEnter); 37136 }; 37137 }, [elementRef]); 37138 return isDraggingWithin; 37139 }; 37140 const useIsInvalidLink = (kind, type, id) => { 37141 const isPostType = kind === 'post-type' || type === 'post' || type === 'page'; 37142 const hasId = Number.isInteger(id); 37143 const postStatus = (0,external_wp_data_namespaceObject.useSelect)(select => { 37144 if (!isPostType) { 37145 return null; 37146 } 37147 const { 37148 getEntityRecord 37149 } = select(external_wp_coreData_namespaceObject.store); 37150 return getEntityRecord('postType', type, id)?.status; 37151 }, [isPostType, type, id]); 37152 37153 // Check Navigation Link validity if: 37154 // 1. Link is 'post-type'. 37155 // 2. It has an id. 37156 // 3. It's neither null, nor undefined, as valid items might be either of those while loading. 37157 // If those conditions are met, check if 37158 // 1. The post status is published. 37159 // 2. The Navigation Link item has no label. 37160 // If either of those is true, invalidate. 37161 const isInvalid = isPostType && hasId && postStatus && 'trash' === postStatus; 37162 const isDraft = 'draft' === postStatus; 37163 return [isInvalid, isDraft]; 37164 }; 37165 function getMissingText(type) { 37166 let missingText = ''; 37167 switch (type) { 37168 case 'post': 37169 /* translators: label for missing post in navigation link block */ 37170 missingText = (0,external_wp_i18n_namespaceObject.__)('Select post'); 37171 break; 37172 case 'page': 37173 /* translators: label for missing page in navigation link block */ 37174 missingText = (0,external_wp_i18n_namespaceObject.__)('Select page'); 37175 break; 37176 case 'category': 37177 /* translators: label for missing category in navigation link block */ 37178 missingText = (0,external_wp_i18n_namespaceObject.__)('Select category'); 37179 break; 37180 case 'tag': 37181 /* translators: label for missing tag in navigation link block */ 37182 missingText = (0,external_wp_i18n_namespaceObject.__)('Select tag'); 37183 break; 37184 default: 37185 /* translators: label for missing values in navigation link block */ 37186 missingText = (0,external_wp_i18n_namespaceObject.__)('Add link'); 37187 } 37188 return missingText; 37189 } 37190 37191 /* 37192 * Warning, this duplicated in 37193 * packages/block-library/src/navigation-submenu/edit.js 37194 * Consider reuseing this components for both blocks. 37195 */ 37196 function Controls({ 37197 attributes, 37198 setAttributes, 37199 setIsLabelFieldFocused 37200 }) { 37201 const { 37202 label, 37203 url, 37204 description, 37205 title, 37206 rel 37207 } = attributes; 37208 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 37209 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 37210 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 37211 __nextHasNoMarginBottom: true, 37212 __next40pxDefaultSize: true, 37213 value: label ? (0,external_wp_dom_namespaceObject.__unstableStripHTML)(label) : '', 37214 onChange: labelValue => { 37215 setAttributes({ 37216 label: labelValue 37217 }); 37218 }, 37219 label: (0,external_wp_i18n_namespaceObject.__)('Text'), 37220 autoComplete: "off", 37221 onFocus: () => setIsLabelFieldFocused(true), 37222 onBlur: () => setIsLabelFieldFocused(false) 37223 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 37224 __nextHasNoMarginBottom: true, 37225 __next40pxDefaultSize: true, 37226 value: url ? (0,external_wp_url_namespaceObject.safeDecodeURI)(url) : '', 37227 onChange: urlValue => { 37228 updateAttributes({ 37229 url: urlValue 37230 }, setAttributes, attributes); 37231 }, 37232 label: (0,external_wp_i18n_namespaceObject.__)('Link'), 37233 autoComplete: "off" 37234 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextareaControl, { 37235 __nextHasNoMarginBottom: true, 37236 value: description || '', 37237 onChange: descriptionValue => { 37238 setAttributes({ 37239 description: descriptionValue 37240 }); 37241 }, 37242 label: (0,external_wp_i18n_namespaceObject.__)('Description'), 37243 help: (0,external_wp_i18n_namespaceObject.__)('The description will be displayed in the menu if the current theme supports it.') 37244 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 37245 __nextHasNoMarginBottom: true, 37246 __next40pxDefaultSize: true, 37247 value: title || '', 37248 onChange: titleValue => { 37249 setAttributes({ 37250 title: titleValue 37251 }); 37252 }, 37253 label: (0,external_wp_i18n_namespaceObject.__)('Title attribute'), 37254 autoComplete: "off", 37255 help: (0,external_wp_i18n_namespaceObject.__)('Additional information to help clarify the purpose of the link.') 37256 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 37257 __nextHasNoMarginBottom: true, 37258 __next40pxDefaultSize: true, 37259 value: rel || '', 37260 onChange: relValue => { 37261 setAttributes({ 37262 rel: relValue 37263 }); 37264 }, 37265 label: (0,external_wp_i18n_namespaceObject.__)('Rel attribute'), 37266 autoComplete: "off", 37267 help: (0,external_wp_i18n_namespaceObject.__)('The relationship of the linked URL as space-separated link types.') 37268 })] 37269 }); 37270 } 37271 function NavigationLinkEdit({ 37272 attributes, 37273 isSelected, 37274 setAttributes, 37275 insertBlocksAfter, 37276 mergeBlocks, 37277 onReplace, 37278 context, 37279 clientId 37280 }) { 37281 const { 37282 id, 37283 label, 37284 type, 37285 url, 37286 description, 37287 kind 37288 } = attributes; 37289 const [isInvalid, isDraft] = useIsInvalidLink(kind, type, id); 37290 const { 37291 maxNestingLevel 37292 } = context; 37293 const { 37294 replaceBlock, 37295 __unstableMarkNextChangeAsNotPersistent, 37296 selectBlock, 37297 selectPreviousBlock 37298 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 37299 // Have the link editing ui open on mount when lacking a url and selected. 37300 const [isLinkOpen, setIsLinkOpen] = (0,external_wp_element_namespaceObject.useState)(isSelected && !url); 37301 // Store what element opened the popover, so we know where to return focus to (toolbar button vs navigation link text) 37302 const [openedBy, setOpenedBy] = (0,external_wp_element_namespaceObject.useState)(null); 37303 // Use internal state instead of a ref to make sure that the component 37304 // re-renders when the popover's anchor updates. 37305 const [popoverAnchor, setPopoverAnchor] = (0,external_wp_element_namespaceObject.useState)(null); 37306 const listItemRef = (0,external_wp_element_namespaceObject.useRef)(null); 37307 const isDraggingWithin = useIsDraggingWithin(listItemRef); 37308 const itemLabelPlaceholder = (0,external_wp_i18n_namespaceObject.__)('Add label…'); 37309 const ref = (0,external_wp_element_namespaceObject.useRef)(); 37310 const linkUIref = (0,external_wp_element_namespaceObject.useRef)(); 37311 const prevUrl = (0,external_wp_compose_namespaceObject.usePrevious)(url); 37312 37313 // Change the label using inspector causes rich text to change focus on firefox. 37314 // This is a workaround to keep the focus on the label field when label filed is focused we don't render the rich text. 37315 const [isLabelFieldFocused, setIsLabelFieldFocused] = (0,external_wp_element_namespaceObject.useState)(false); 37316 const { 37317 isAtMaxNesting, 37318 isTopLevelLink, 37319 isParentOfSelectedBlock, 37320 hasChildren 37321 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 37322 const { 37323 getBlockCount, 37324 getBlockName, 37325 getBlockRootClientId, 37326 hasSelectedInnerBlock, 37327 getBlockParentsByBlockName 37328 } = select(external_wp_blockEditor_namespaceObject.store); 37329 return { 37330 isAtMaxNesting: getBlockParentsByBlockName(clientId, ['core/navigation-link', 'core/navigation-submenu']).length >= maxNestingLevel, 37331 isTopLevelLink: getBlockName(getBlockRootClientId(clientId)) === 'core/navigation', 37332 isParentOfSelectedBlock: hasSelectedInnerBlock(clientId, true), 37333 hasChildren: !!getBlockCount(clientId) 37334 }; 37335 }, [clientId, maxNestingLevel]); 37336 const { 37337 getBlocks 37338 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 37339 37340 /** 37341 * Transform to submenu block. 37342 */ 37343 const transformToSubmenu = () => { 37344 let innerBlocks = getBlocks(clientId); 37345 if (innerBlocks.length === 0) { 37346 innerBlocks = [(0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link')]; 37347 selectBlock(innerBlocks[0].clientId); 37348 } 37349 const newSubmenu = (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-submenu', attributes, innerBlocks); 37350 replaceBlock(clientId, newSubmenu); 37351 }; 37352 (0,external_wp_element_namespaceObject.useEffect)(() => { 37353 // If block has inner blocks, transform to Submenu. 37354 if (hasChildren) { 37355 // This side-effect should not create an undo level as those should 37356 // only be created via user interactions. 37357 __unstableMarkNextChangeAsNotPersistent(); 37358 transformToSubmenu(); 37359 } 37360 }, [hasChildren]); 37361 37362 // If the LinkControl popover is open and the URL has changed, close the LinkControl and focus the label text. 37363 (0,external_wp_element_namespaceObject.useEffect)(() => { 37364 // We only want to do this when the URL has gone from nothing to a new URL AND the label looks like a URL 37365 if (!prevUrl && url && isLinkOpen && (0,external_wp_url_namespaceObject.isURL)((0,external_wp_url_namespaceObject.prependHTTP)(label)) && /^.+\.[a-z]+/.test(label)) { 37366 // Focus and select the label text. 37367 selectLabelText(); 37368 } 37369 }, [prevUrl, url, isLinkOpen, label]); 37370 37371 /** 37372 * Focus the Link label text and select it. 37373 */ 37374 function selectLabelText() { 37375 ref.current.focus(); 37376 const { 37377 ownerDocument 37378 } = ref.current; 37379 const { 37380 defaultView 37381 } = ownerDocument; 37382 const selection = defaultView.getSelection(); 37383 const range = ownerDocument.createRange(); 37384 // Get the range of the current ref contents so we can add this range to the selection. 37385 range.selectNodeContents(ref.current); 37386 selection.removeAllRanges(); 37387 selection.addRange(range); 37388 } 37389 37390 /** 37391 * Removes the current link if set. 37392 */ 37393 function removeLink() { 37394 // Reset all attributes that comprise the link. 37395 // It is critical that all attributes are reset 37396 // to their default values otherwise this may 37397 // in advertently trigger side effects because 37398 // the values will have "changed". 37399 setAttributes({ 37400 url: undefined, 37401 label: undefined, 37402 id: undefined, 37403 kind: undefined, 37404 type: undefined, 37405 opensInNewTab: false 37406 }); 37407 37408 // Close the link editing UI. 37409 setIsLinkOpen(false); 37410 } 37411 const { 37412 textColor, 37413 customTextColor, 37414 backgroundColor, 37415 customBackgroundColor 37416 } = getColors(context, !isTopLevelLink); 37417 function onKeyDown(event) { 37418 if (external_wp_keycodes_namespaceObject.isKeyboardEvent.primary(event, 'k')) { 37419 // Required to prevent the command center from opening, 37420 // as it shares the CMD+K shortcut. 37421 // See https://github.com/WordPress/gutenberg/pull/59845. 37422 event.preventDefault(); 37423 // If this link is a child of a parent submenu item, the parent submenu item event will also open, closing this popover 37424 event.stopPropagation(); 37425 setIsLinkOpen(true); 37426 setOpenedBy(ref.current); 37427 } 37428 } 37429 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 37430 ref: (0,external_wp_compose_namespaceObject.useMergeRefs)([setPopoverAnchor, listItemRef]), 37431 className: dist_clsx('wp-block-navigation-item', { 37432 'is-editing': isSelected || isParentOfSelectedBlock, 37433 'is-dragging-within': isDraggingWithin, 37434 'has-link': !!url, 37435 'has-child': hasChildren, 37436 'has-text-color': !!textColor || !!customTextColor, 37437 [(0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor)]: !!textColor, 37438 'has-background': !!backgroundColor || customBackgroundColor, 37439 [(0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor)]: !!backgroundColor 37440 }), 37441 style: { 37442 color: !textColor && customTextColor, 37443 backgroundColor: !backgroundColor && customBackgroundColor 37444 }, 37445 onKeyDown 37446 }); 37447 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)({ 37448 ...blockProps, 37449 className: 'remove-outline' // Remove the outline from the inner blocks container. 37450 }, { 37451 defaultBlock: navigation_link_edit_DEFAULT_BLOCK, 37452 directInsert: true, 37453 renderAppender: false 37454 }); 37455 if (!url || isInvalid || isDraft) { 37456 blockProps.onClick = () => { 37457 setIsLinkOpen(true); 37458 setOpenedBy(ref.current); 37459 }; 37460 } 37461 const classes = dist_clsx('wp-block-navigation-item__content', { 37462 'wp-block-navigation-link__placeholder': !url || isInvalid || isDraft 37463 }); 37464 const missingText = getMissingText(type); 37465 /* translators: Whether the navigation link is Invalid or a Draft. */ 37466 const placeholderText = `($isInvalid ? (0,external_wp_i18n_namespaceObject.__)('Invalid') : (0,external_wp_i18n_namespaceObject.__)('Draft')})`; 37467 const tooltipText = isInvalid || isDraft ? (0,external_wp_i18n_namespaceObject.__)('This item has been deleted, or is a draft') : (0,external_wp_i18n_namespaceObject.__)('This item is missing a link'); 37468 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 37469 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 37470 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.ToolbarGroup, { 37471 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 37472 name: "link", 37473 icon: library_link, 37474 title: (0,external_wp_i18n_namespaceObject.__)('Link'), 37475 shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primary('k'), 37476 onClick: event => { 37477 setIsLinkOpen(true); 37478 setOpenedBy(event.currentTarget); 37479 } 37480 }), !isAtMaxNesting && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 37481 name: "submenu", 37482 icon: add_submenu, 37483 title: (0,external_wp_i18n_namespaceObject.__)('Add submenu'), 37484 onClick: transformToSubmenu 37485 })] 37486 }) 37487 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 37488 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Controls, { 37489 attributes: attributes, 37490 setAttributes: setAttributes, 37491 setIsLabelFieldFocused: setIsLabelFieldFocused 37492 }) 37493 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 37494 ...blockProps, 37495 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("a", { 37496 className: classes, 37497 children: [!url ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 37498 className: "wp-block-navigation-link__placeholder-text", 37499 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Tooltip, { 37500 text: tooltipText, 37501 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 37502 children: missingText 37503 }) 37504 }) 37505 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 37506 children: [!isInvalid && !isDraft && !isLabelFieldFocused && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 37507 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 37508 ref: ref, 37509 identifier: "label", 37510 className: "wp-block-navigation-item__label", 37511 value: label, 37512 onChange: labelValue => setAttributes({ 37513 label: labelValue 37514 }), 37515 onMerge: mergeBlocks, 37516 onReplace: onReplace, 37517 __unstableOnSplitAtEnd: () => insertBlocksAfter((0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link')), 37518 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Navigation link text'), 37519 placeholder: itemLabelPlaceholder, 37520 withoutInteractiveFormatting: true, 37521 allowedFormats: ['core/bold', 'core/italic', 'core/image', 'core/strikethrough'] 37522 }), description && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 37523 className: "wp-block-navigation-item__description", 37524 children: description 37525 })] 37526 }), (isInvalid || isDraft || isLabelFieldFocused) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 37527 className: "wp-block-navigation-link__placeholder-text wp-block-navigation-link__label", 37528 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Tooltip, { 37529 text: tooltipText, 37530 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 37531 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Navigation link text'), 37532 children: 37533 // Some attributes are stored in an escaped form. It's a legacy issue. 37534 // Ideally they would be stored in a raw, unescaped form. 37535 // Unescape is used here to "recover" the escaped characters 37536 // so they display without encoding. 37537 // See `updateAttributes` for more details. 37538 `${(0,external_wp_htmlEntities_namespaceObject.decodeEntities)(label)} $isInvalid || isDraft ? placeholderText : ''}`.trim() 37539 }) 37540 }) 37541 })] 37542 }), isLinkOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(LinkUI, { 37543 ref: linkUIref, 37544 clientId: clientId, 37545 link: attributes, 37546 onClose: () => { 37547 // If there is no link then remove the auto-inserted block. 37548 // This avoids empty blocks which can provided a poor UX. 37549 if (!url) { 37550 // Fixes https://github.com/WordPress/gutenberg/issues/61361 37551 // There's a chance we're closing due to the user selecting the browse all button. 37552 // Only move focus if the focus is still within the popover ui. If it's not within 37553 // the popover, it's because something has taken the focus from the popover, and 37554 // we don't want to steal it back. 37555 if (linkUIref.current.contains(window.document.activeElement)) { 37556 // Select the previous block to keep focus nearby 37557 selectPreviousBlock(clientId, true); 37558 } 37559 37560 // Remove the link. 37561 onReplace([]); 37562 return; 37563 } 37564 setIsLinkOpen(false); 37565 if (openedBy) { 37566 openedBy.focus(); 37567 setOpenedBy(null); 37568 } else if (ref.current) { 37569 // select the ref when adding a new link 37570 ref.current.focus(); 37571 } else { 37572 // Fallback 37573 selectPreviousBlock(clientId, true); 37574 } 37575 }, 37576 anchor: popoverAnchor, 37577 onRemove: removeLink, 37578 onChange: updatedValue => { 37579 updateAttributes(updatedValue, setAttributes, attributes); 37580 } 37581 })] 37582 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 37583 ...innerBlocksProps 37584 })] 37585 })] 37586 }); 37587 } 37588 37589 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation-link/save.js 37590 /** 37591 * WordPress dependencies 37592 */ 37593 37594 37595 function navigation_link_save_save() { 37596 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 37597 } 37598 37599 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/page.js 37600 /** 37601 * WordPress dependencies 37602 */ 37603 37604 37605 37606 const page = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, { 37607 xmlns: "http://www.w3.org/2000/svg", 37608 viewBox: "0 0 24 24", 37609 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 37610 d: "M15.5 7.5h-7V9h7V7.5Zm-7 3.5h7v1.5h-7V11Zm7 3.5h-7V16h7v-1.5Z" 37611 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 37612 d: "M17 4H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2ZM7 5.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5Z" 37613 })] 37614 }); 37615 /* harmony default export */ const library_page = (page); 37616 37617 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/tag.js 37618 /** 37619 * WordPress dependencies 37620 */ 37621 37622 37623 const tag = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 37624 xmlns: "http://www.w3.org/2000/svg", 37625 viewBox: "0 0 24 24", 37626 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 37627 d: "M4.75 4a.75.75 0 0 0-.75.75v7.826c0 .2.08.39.22.53l6.72 6.716a2.313 2.313 0 0 0 3.276-.001l5.61-5.611-.531-.53.532.528a2.315 2.315 0 0 0 0-3.264L13.104 4.22a.75.75 0 0 0-.53-.22H4.75ZM19 12.576a.815.815 0 0 1-.236.574l-5.61 5.611a.814.814 0 0 1-1.153 0L5.5 12.264V5.5h6.763l6.5 6.502a.816.816 0 0 1 .237.574ZM8.75 9.75a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" 37628 }) 37629 }); 37630 /* harmony default export */ const library_tag = (tag); 37631 37632 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/custom-post-type.js 37633 /** 37634 * WordPress dependencies 37635 */ 37636 37637 37638 const customPostType = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 37639 xmlns: "http://www.w3.org/2000/svg", 37640 viewBox: "0 0 24 24", 37641 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 37642 d: "M4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4zm.8-4l.7.7 2-2V12h1V9.2l2 2 .7-.7-2-2H12v-1H9.2l2-2-.7-.7-2 2V4h-1v2.8l-2-2-.7.7 2 2H4v1h2.8l-2 2z" 37643 }) 37644 }); 37645 /* harmony default export */ const custom_post_type = (customPostType); 37646 37647 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation-link/hooks.js 37648 /** 37649 * WordPress dependencies 37650 */ 37651 37652 function getIcon(variationName) { 37653 switch (variationName) { 37654 case 'post': 37655 return post_list; 37656 case 'page': 37657 return library_page; 37658 case 'tag': 37659 return library_tag; 37660 case 'category': 37661 return library_category; 37662 default: 37663 return custom_post_type; 37664 } 37665 } 37666 function enhanceNavigationLinkVariations(settings, name) { 37667 if (name !== 'core/navigation-link') { 37668 return settings; 37669 } 37670 37671 // Otherwise decorate server passed variations with an icon and isActive function. 37672 if (settings.variations) { 37673 const isActive = (blockAttributes, variationAttributes) => { 37674 return blockAttributes.type === variationAttributes.type; 37675 }; 37676 const variations = settings.variations.map(variation => { 37677 return { 37678 ...variation, 37679 ...(!variation.icon && { 37680 icon: getIcon(variation.name) 37681 }), 37682 ...(!variation.isActive && { 37683 isActive 37684 }) 37685 }; 37686 }); 37687 return { 37688 ...settings, 37689 variations 37690 }; 37691 } 37692 return settings; 37693 } 37694 37695 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation-link/transforms.js 37696 /** 37697 * WordPress dependencies 37698 */ 37699 37700 const navigation_link_transforms_transforms = { 37701 from: [{ 37702 type: 'block', 37703 blocks: ['core/site-logo'], 37704 transform: () => { 37705 return (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link'); 37706 } 37707 }, { 37708 type: 'block', 37709 blocks: ['core/spacer'], 37710 transform: () => { 37711 return (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link'); 37712 } 37713 }, { 37714 type: 'block', 37715 blocks: ['core/home-link'], 37716 transform: () => { 37717 return (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link'); 37718 } 37719 }, { 37720 type: 'block', 37721 blocks: ['core/social-links'], 37722 transform: () => { 37723 return (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link'); 37724 } 37725 }, { 37726 type: 'block', 37727 blocks: ['core/search'], 37728 transform: () => { 37729 return (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link'); 37730 } 37731 }, { 37732 type: 'block', 37733 blocks: ['core/page-list'], 37734 transform: () => { 37735 return (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link'); 37736 } 37737 }, { 37738 type: 'block', 37739 blocks: ['core/buttons'], 37740 transform: () => { 37741 return (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link'); 37742 } 37743 }], 37744 to: [{ 37745 type: 'block', 37746 blocks: ['core/navigation-submenu'], 37747 transform: (attributes, innerBlocks) => (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-submenu', attributes, innerBlocks) 37748 }, { 37749 type: 'block', 37750 blocks: ['core/spacer'], 37751 transform: () => { 37752 return (0,external_wp_blocks_namespaceObject.createBlock)('core/spacer'); 37753 } 37754 }, { 37755 type: 'block', 37756 blocks: ['core/site-logo'], 37757 transform: () => { 37758 return (0,external_wp_blocks_namespaceObject.createBlock)('core/site-logo'); 37759 } 37760 }, { 37761 type: 'block', 37762 blocks: ['core/home-link'], 37763 transform: () => { 37764 return (0,external_wp_blocks_namespaceObject.createBlock)('core/home-link'); 37765 } 37766 }, { 37767 type: 'block', 37768 blocks: ['core/social-links'], 37769 transform: () => { 37770 return (0,external_wp_blocks_namespaceObject.createBlock)('core/social-links'); 37771 } 37772 }, { 37773 type: 'block', 37774 blocks: ['core/search'], 37775 transform: () => { 37776 return (0,external_wp_blocks_namespaceObject.createBlock)('core/search', { 37777 showLabel: false, 37778 buttonUseIcon: true, 37779 buttonPosition: 'button-inside' 37780 }); 37781 } 37782 }, { 37783 type: 'block', 37784 blocks: ['core/page-list'], 37785 transform: () => { 37786 return (0,external_wp_blocks_namespaceObject.createBlock)('core/page-list'); 37787 } 37788 }, { 37789 type: 'block', 37790 blocks: ['core/buttons'], 37791 transform: ({ 37792 label, 37793 url, 37794 rel, 37795 title, 37796 opensInNewTab 37797 }) => { 37798 return (0,external_wp_blocks_namespaceObject.createBlock)('core/buttons', {}, [(0,external_wp_blocks_namespaceObject.createBlock)('core/button', { 37799 text: label, 37800 url, 37801 rel, 37802 title, 37803 linkTarget: opensInNewTab ? '_blank' : undefined 37804 })]); 37805 } 37806 }] 37807 }; 37808 /* harmony default export */ const navigation_link_transforms = (navigation_link_transforms_transforms); 37809 37810 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation-link/index.js 37811 /** 37812 * WordPress dependencies 37813 */ 37814 37815 37816 37817 37818 37819 /** 37820 * Internal dependencies 37821 */ 37822 37823 const navigation_link_metadata = { 37824 $schema: "https://schemas.wp.org/trunk/block.json", 37825 apiVersion: 3, 37826 name: "core/navigation-link", 37827 title: "Custom Link", 37828 category: "design", 37829 parent: ["core/navigation"], 37830 allowedBlocks: ["core/navigation-link", "core/navigation-submenu", "core/page-list"], 37831 description: "Add a page, link, or another item to your navigation.", 37832 textdomain: "default", 37833 attributes: { 37834 label: { 37835 type: "string" 37836 }, 37837 type: { 37838 type: "string" 37839 }, 37840 description: { 37841 type: "string" 37842 }, 37843 rel: { 37844 type: "string" 37845 }, 37846 id: { 37847 type: "number" 37848 }, 37849 opensInNewTab: { 37850 type: "boolean", 37851 "default": false 37852 }, 37853 url: { 37854 type: "string" 37855 }, 37856 title: { 37857 type: "string" 37858 }, 37859 kind: { 37860 type: "string" 37861 }, 37862 isTopLevelLink: { 37863 type: "boolean" 37864 } 37865 }, 37866 usesContext: ["textColor", "customTextColor", "backgroundColor", "customBackgroundColor", "overlayTextColor", "customOverlayTextColor", "overlayBackgroundColor", "customOverlayBackgroundColor", "fontSize", "customFontSize", "showSubmenuIcon", "maxNestingLevel", "style"], 37867 supports: { 37868 reusable: false, 37869 html: false, 37870 __experimentalSlashInserter: true, 37871 typography: { 37872 fontSize: true, 37873 lineHeight: true, 37874 __experimentalFontFamily: true, 37875 __experimentalFontWeight: true, 37876 __experimentalFontStyle: true, 37877 __experimentalTextTransform: true, 37878 __experimentalTextDecoration: true, 37879 __experimentalLetterSpacing: true, 37880 __experimentalDefaultControls: { 37881 fontSize: true 37882 } 37883 }, 37884 renaming: false, 37885 interactivity: { 37886 clientNavigation: true 37887 } 37888 }, 37889 editorStyle: "wp-block-navigation-link-editor", 37890 style: "wp-block-navigation-link" 37891 }; 37892 37893 37894 37895 37896 37897 const { 37898 name: navigation_link_name 37899 } = navigation_link_metadata; 37900 37901 const navigation_link_settings = { 37902 icon: custom_link, 37903 __experimentalLabel: ({ 37904 label 37905 }) => label, 37906 merge(leftAttributes, { 37907 label: rightLabel = '' 37908 }) { 37909 return { 37910 ...leftAttributes, 37911 label: leftAttributes.label + rightLabel 37912 }; 37913 }, 37914 edit: NavigationLinkEdit, 37915 save: navigation_link_save_save, 37916 example: { 37917 attributes: { 37918 label: (0,external_wp_i18n_namespaceObject._x)('Example Link', 'navigation link preview example'), 37919 url: 'https://example.com' 37920 } 37921 }, 37922 deprecated: [{ 37923 isEligible(attributes) { 37924 return attributes.nofollow; 37925 }, 37926 attributes: { 37927 label: { 37928 type: 'string' 37929 }, 37930 type: { 37931 type: 'string' 37932 }, 37933 nofollow: { 37934 type: 'boolean' 37935 }, 37936 description: { 37937 type: 'string' 37938 }, 37939 id: { 37940 type: 'number' 37941 }, 37942 opensInNewTab: { 37943 type: 'boolean', 37944 default: false 37945 }, 37946 url: { 37947 type: 'string' 37948 } 37949 }, 37950 migrate({ 37951 nofollow, 37952 ...rest 37953 }) { 37954 return { 37955 rel: nofollow ? 'nofollow' : '', 37956 ...rest 37957 }; 37958 }, 37959 save() { 37960 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 37961 } 37962 }], 37963 transforms: navigation_link_transforms 37964 }; 37965 const navigation_link_init = () => { 37966 (0,external_wp_hooks_namespaceObject.addFilter)('blocks.registerBlockType', 'core/navigation-link', enhanceNavigationLinkVariations); 37967 return initBlock({ 37968 name: navigation_link_name, 37969 metadata: navigation_link_metadata, 37970 settings: navigation_link_settings 37971 }); 37972 }; 37973 37974 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/remove-submenu.js 37975 /** 37976 * WordPress dependencies 37977 */ 37978 37979 37980 const removeSubmenu = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 37981 xmlns: "http://www.w3.org/2000/svg", 37982 viewBox: "0 0 24 24", 37983 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 37984 fillRule: "evenodd", 37985 clipRule: "evenodd", 37986 d: "m13.955 20.748 8-17.5-.91-.416L19.597 6H13.5v1.5h5.411l-1.6 3.5H13.5v1.5h3.126l-1.6 3.5H13.5l.028 1.5h.812l-1.295 2.832.91.416ZM17.675 16l-.686 1.5h4.539L21.5 16h-3.825Zm2.286-5-.686 1.5H21.5V11h-1.54ZM2 12c0 3.58 2.42 5.5 6 5.5h.5V19l3-2.5-3-2.5v2H8c-2.48 0-4.5-1.52-4.5-4S5.52 7.5 8 7.5h3.5V6H8c-3.58 0-6 2.42-6 6Z" 37987 }) 37988 }); 37989 /* harmony default export */ const remove_submenu = (removeSubmenu); 37990 37991 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation-submenu/icons.js 37992 /** 37993 * WordPress dependencies 37994 */ 37995 37996 37997 const ItemSubmenuIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 37998 xmlns: "http://www.w3.org/2000/svg", 37999 width: "12", 38000 height: "12", 38001 viewBox: "0 0 12 12", 38002 fill: "none", 38003 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 38004 d: "M1.50002 4L6.00002 8L10.5 4", 38005 strokeWidth: "1.5" 38006 }) 38007 }); 38008 38009 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation-submenu/edit.js 38010 /** 38011 * External dependencies 38012 */ 38013 38014 38015 /** 38016 * WordPress dependencies 38017 */ 38018 38019 38020 38021 38022 38023 38024 38025 38026 38027 38028 38029 38030 /** 38031 * Internal dependencies 38032 */ 38033 38034 38035 38036 38037 38038 38039 38040 const ALLOWED_BLOCKS = ['core/navigation-link', 'core/navigation-submenu', 'core/page-list']; 38041 const navigation_submenu_edit_DEFAULT_BLOCK = { 38042 name: 'core/navigation-link' 38043 }; 38044 38045 /** 38046 * A React hook to determine if it's dragging within the target element. 38047 * 38048 * @typedef {import('@wordpress/element').RefObject} RefObject 38049 * 38050 * @param {RefObject<HTMLElement>} elementRef The target elementRef object. 38051 * 38052 * @return {boolean} Is dragging within the target element. 38053 */ 38054 const edit_useIsDraggingWithin = elementRef => { 38055 const [isDraggingWithin, setIsDraggingWithin] = (0,external_wp_element_namespaceObject.useState)(false); 38056 (0,external_wp_element_namespaceObject.useEffect)(() => { 38057 const { 38058 ownerDocument 38059 } = elementRef.current; 38060 function handleDragStart(event) { 38061 // Check the first time when the dragging starts. 38062 handleDragEnter(event); 38063 } 38064 38065 // Set to false whenever the user cancel the drag event by either releasing the mouse or press Escape. 38066 function handleDragEnd() { 38067 setIsDraggingWithin(false); 38068 } 38069 function handleDragEnter(event) { 38070 // Check if the current target is inside the item element. 38071 if (elementRef.current.contains(event.target)) { 38072 setIsDraggingWithin(true); 38073 } else { 38074 setIsDraggingWithin(false); 38075 } 38076 } 38077 38078 // Bind these events to the document to catch all drag events. 38079 // Ideally, we can also use `event.relatedTarget`, but sadly that 38080 // doesn't work in Safari. 38081 ownerDocument.addEventListener('dragstart', handleDragStart); 38082 ownerDocument.addEventListener('dragend', handleDragEnd); 38083 ownerDocument.addEventListener('dragenter', handleDragEnter); 38084 return () => { 38085 ownerDocument.removeEventListener('dragstart', handleDragStart); 38086 ownerDocument.removeEventListener('dragend', handleDragEnd); 38087 ownerDocument.removeEventListener('dragenter', handleDragEnter); 38088 }; 38089 }, []); 38090 return isDraggingWithin; 38091 }; 38092 38093 /** 38094 * @typedef {'post-type'|'custom'|'taxonomy'|'post-type-archive'} WPNavigationLinkKind 38095 */ 38096 38097 /** 38098 * Navigation Link Block Attributes 38099 * 38100 * @typedef {Object} WPNavigationLinkBlockAttributes 38101 * 38102 * @property {string} [label] Link text. 38103 * @property {WPNavigationLinkKind} [kind] Kind is used to differentiate between term and post ids to check post draft status. 38104 * @property {string} [type] The type such as post, page, tag, category and other custom types. 38105 * @property {string} [rel] The relationship of the linked URL. 38106 * @property {number} [id] A post or term id. 38107 * @property {boolean} [opensInNewTab] Sets link target to _blank when true. 38108 * @property {string} [url] Link href. 38109 * @property {string} [title] Link title attribute. 38110 */ 38111 38112 function NavigationSubmenuEdit({ 38113 attributes, 38114 isSelected, 38115 setAttributes, 38116 mergeBlocks, 38117 onReplace, 38118 context, 38119 clientId 38120 }) { 38121 const { 38122 label, 38123 url, 38124 description, 38125 rel, 38126 title 38127 } = attributes; 38128 const { 38129 showSubmenuIcon, 38130 maxNestingLevel, 38131 openSubmenusOnClick 38132 } = context; 38133 const { 38134 __unstableMarkNextChangeAsNotPersistent, 38135 replaceBlock, 38136 selectBlock 38137 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 38138 const [isLinkOpen, setIsLinkOpen] = (0,external_wp_element_namespaceObject.useState)(false); 38139 // Store what element opened the popover, so we know where to return focus to (toolbar button vs navigation link text) 38140 const [openedBy, setOpenedBy] = (0,external_wp_element_namespaceObject.useState)(null); 38141 // Use internal state instead of a ref to make sure that the component 38142 // re-renders when the popover's anchor updates. 38143 const [popoverAnchor, setPopoverAnchor] = (0,external_wp_element_namespaceObject.useState)(null); 38144 const listItemRef = (0,external_wp_element_namespaceObject.useRef)(null); 38145 const isDraggingWithin = edit_useIsDraggingWithin(listItemRef); 38146 const itemLabelPlaceholder = (0,external_wp_i18n_namespaceObject.__)('Add text…'); 38147 const ref = (0,external_wp_element_namespaceObject.useRef)(); 38148 const { 38149 parentCount, 38150 isParentOfSelectedBlock, 38151 isImmediateParentOfSelectedBlock, 38152 hasChildren, 38153 selectedBlockHasChildren, 38154 onlyDescendantIsEmptyLink 38155 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 38156 const { 38157 hasSelectedInnerBlock, 38158 getSelectedBlockClientId, 38159 getBlockParentsByBlockName, 38160 getBlock, 38161 getBlockCount, 38162 getBlockOrder 38163 } = select(external_wp_blockEditor_namespaceObject.store); 38164 let _onlyDescendantIsEmptyLink; 38165 const selectedBlockId = getSelectedBlockClientId(); 38166 const selectedBlockChildren = getBlockOrder(selectedBlockId); 38167 38168 // Check for a single descendant in the submenu. If that block 38169 // is a link block in a "placeholder" state with no label then 38170 // we can consider as an "empty" link. 38171 if (selectedBlockChildren?.length === 1) { 38172 const singleBlock = getBlock(selectedBlockChildren[0]); 38173 _onlyDescendantIsEmptyLink = singleBlock?.name === 'core/navigation-link' && !singleBlock?.attributes?.label; 38174 } 38175 return { 38176 parentCount: getBlockParentsByBlockName(clientId, 'core/navigation-submenu').length, 38177 isParentOfSelectedBlock: hasSelectedInnerBlock(clientId, true), 38178 isImmediateParentOfSelectedBlock: hasSelectedInnerBlock(clientId, false), 38179 hasChildren: !!getBlockCount(clientId), 38180 selectedBlockHasChildren: !!selectedBlockChildren?.length, 38181 onlyDescendantIsEmptyLink: _onlyDescendantIsEmptyLink 38182 }; 38183 }, [clientId]); 38184 const prevHasChildren = (0,external_wp_compose_namespaceObject.usePrevious)(hasChildren); 38185 38186 // Show the LinkControl on mount if the URL is empty 38187 // ( When adding a new menu item) 38188 // This can't be done in the useState call because it conflicts 38189 // with the autofocus behavior of the BlockListBlock component. 38190 (0,external_wp_element_namespaceObject.useEffect)(() => { 38191 if (!openSubmenusOnClick && !url) { 38192 setIsLinkOpen(true); 38193 } 38194 }, []); 38195 38196 /** 38197 * The hook shouldn't be necessary but due to a focus loss happening 38198 * when selecting a suggestion in the link popover, we force close on block unselection. 38199 */ 38200 (0,external_wp_element_namespaceObject.useEffect)(() => { 38201 if (!isSelected) { 38202 setIsLinkOpen(false); 38203 } 38204 }, [isSelected]); 38205 38206 // If the LinkControl popover is open and the URL has changed, close the LinkControl and focus the label text. 38207 (0,external_wp_element_namespaceObject.useEffect)(() => { 38208 if (isLinkOpen && url) { 38209 // Does this look like a URL and have something TLD-ish? 38210 if ((0,external_wp_url_namespaceObject.isURL)((0,external_wp_url_namespaceObject.prependHTTP)(label)) && /^.+\.[a-z]+/.test(label)) { 38211 // Focus and select the label text. 38212 selectLabelText(); 38213 } 38214 } 38215 }, [url]); 38216 38217 /** 38218 * Focus the Link label text and select it. 38219 */ 38220 function selectLabelText() { 38221 ref.current.focus(); 38222 const { 38223 ownerDocument 38224 } = ref.current; 38225 const { 38226 defaultView 38227 } = ownerDocument; 38228 const selection = defaultView.getSelection(); 38229 const range = ownerDocument.createRange(); 38230 // Get the range of the current ref contents so we can add this range to the selection. 38231 range.selectNodeContents(ref.current); 38232 selection.removeAllRanges(); 38233 selection.addRange(range); 38234 } 38235 const { 38236 textColor, 38237 customTextColor, 38238 backgroundColor, 38239 customBackgroundColor 38240 } = getColors(context, parentCount > 0); 38241 function onKeyDown(event) { 38242 if (external_wp_keycodes_namespaceObject.isKeyboardEvent.primary(event, 'k')) { 38243 // Required to prevent the command center from opening, 38244 // as it shares the CMD+K shortcut. 38245 // See https://github.com/WordPress/gutenberg/pull/59845. 38246 event.preventDefault(); 38247 // If we don't stop propogation, this event bubbles up to the parent submenu item 38248 event.stopPropagation(); 38249 setIsLinkOpen(true); 38250 setOpenedBy(ref.current); 38251 } 38252 } 38253 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 38254 ref: (0,external_wp_compose_namespaceObject.useMergeRefs)([setPopoverAnchor, listItemRef]), 38255 className: dist_clsx('wp-block-navigation-item', { 38256 'is-editing': isSelected || isParentOfSelectedBlock, 38257 'is-dragging-within': isDraggingWithin, 38258 'has-link': !!url, 38259 'has-child': hasChildren, 38260 'has-text-color': !!textColor || !!customTextColor, 38261 [(0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor)]: !!textColor, 38262 'has-background': !!backgroundColor || customBackgroundColor, 38263 [(0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor)]: !!backgroundColor, 38264 'open-on-click': openSubmenusOnClick 38265 }), 38266 style: { 38267 color: !textColor && customTextColor, 38268 backgroundColor: !backgroundColor && customBackgroundColor 38269 }, 38270 onKeyDown 38271 }); 38272 38273 // Always use overlay colors for submenus. 38274 const innerBlocksColors = getColors(context, true); 38275 const allowedBlocks = parentCount >= maxNestingLevel ? ALLOWED_BLOCKS.filter(blockName => blockName !== 'core/navigation-submenu') : ALLOWED_BLOCKS; 38276 const navigationChildBlockProps = getNavigationChildBlockProps(innerBlocksColors); 38277 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(navigationChildBlockProps, { 38278 allowedBlocks, 38279 defaultBlock: navigation_submenu_edit_DEFAULT_BLOCK, 38280 directInsert: true, 38281 // Ensure block toolbar is not too far removed from item 38282 // being edited. 38283 // see: https://github.com/WordPress/gutenberg/pull/34615. 38284 __experimentalCaptureToolbars: true, 38285 renderAppender: isSelected || isImmediateParentOfSelectedBlock && !selectedBlockHasChildren || 38286 // Show the appender while dragging to allow inserting element between item and the appender. 38287 hasChildren ? external_wp_blockEditor_namespaceObject.InnerBlocks.ButtonBlockAppender : false 38288 }); 38289 const ParentElement = openSubmenusOnClick ? 'button' : 'a'; 38290 function transformToLink() { 38291 const newLinkBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link', attributes); 38292 replaceBlock(clientId, newLinkBlock); 38293 } 38294 (0,external_wp_element_namespaceObject.useEffect)(() => { 38295 // If block becomes empty, transform to Navigation Link. 38296 if (!hasChildren && prevHasChildren) { 38297 // This side-effect should not create an undo level as those should 38298 // only be created via user interactions. 38299 __unstableMarkNextChangeAsNotPersistent(); 38300 transformToLink(); 38301 } 38302 }, [hasChildren, prevHasChildren]); 38303 const canConvertToLink = !selectedBlockHasChildren || onlyDescendantIsEmptyLink; 38304 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 38305 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 38306 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.ToolbarGroup, { 38307 children: [!openSubmenusOnClick && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 38308 name: "link", 38309 icon: library_link, 38310 title: (0,external_wp_i18n_namespaceObject.__)('Link'), 38311 shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primary('k'), 38312 onClick: event => { 38313 setIsLinkOpen(true); 38314 setOpenedBy(event.currentTarget); 38315 } 38316 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 38317 name: "revert", 38318 icon: remove_submenu, 38319 title: (0,external_wp_i18n_namespaceObject.__)('Convert to Link'), 38320 onClick: transformToLink, 38321 className: "wp-block-navigation__submenu__revert", 38322 disabled: !canConvertToLink 38323 })] 38324 }) 38325 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 38326 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 38327 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 38328 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 38329 __nextHasNoMarginBottom: true, 38330 __next40pxDefaultSize: true, 38331 value: label || '', 38332 onChange: labelValue => { 38333 setAttributes({ 38334 label: labelValue 38335 }); 38336 }, 38337 label: (0,external_wp_i18n_namespaceObject.__)('Text'), 38338 autoComplete: "off" 38339 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 38340 __nextHasNoMarginBottom: true, 38341 __next40pxDefaultSize: true, 38342 value: url || '', 38343 onChange: urlValue => { 38344 setAttributes({ 38345 url: urlValue 38346 }); 38347 }, 38348 label: (0,external_wp_i18n_namespaceObject.__)('Link'), 38349 autoComplete: "off" 38350 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextareaControl, { 38351 __nextHasNoMarginBottom: true, 38352 value: description || '', 38353 onChange: descriptionValue => { 38354 setAttributes({ 38355 description: descriptionValue 38356 }); 38357 }, 38358 label: (0,external_wp_i18n_namespaceObject.__)('Description'), 38359 help: (0,external_wp_i18n_namespaceObject.__)('The description will be displayed in the menu if the current theme supports it.') 38360 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 38361 __nextHasNoMarginBottom: true, 38362 __next40pxDefaultSize: true, 38363 value: title || '', 38364 onChange: titleValue => { 38365 setAttributes({ 38366 title: titleValue 38367 }); 38368 }, 38369 label: (0,external_wp_i18n_namespaceObject.__)('Title attribute'), 38370 autoComplete: "off", 38371 help: (0,external_wp_i18n_namespaceObject.__)('Additional information to help clarify the purpose of the link.') 38372 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 38373 __nextHasNoMarginBottom: true, 38374 __next40pxDefaultSize: true, 38375 value: rel || '', 38376 onChange: relValue => { 38377 setAttributes({ 38378 rel: relValue 38379 }); 38380 }, 38381 label: (0,external_wp_i18n_namespaceObject.__)('Rel attribute'), 38382 autoComplete: "off", 38383 help: (0,external_wp_i18n_namespaceObject.__)('The relationship of the linked URL as space-separated link types.') 38384 })] 38385 }) 38386 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 38387 ...blockProps, 38388 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ParentElement, { 38389 className: "wp-block-navigation-item__content", 38390 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 38391 ref: ref, 38392 identifier: "label", 38393 className: "wp-block-navigation-item__label", 38394 value: label, 38395 onChange: labelValue => setAttributes({ 38396 label: labelValue 38397 }), 38398 onMerge: mergeBlocks, 38399 onReplace: onReplace, 38400 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Navigation link text'), 38401 placeholder: itemLabelPlaceholder, 38402 withoutInteractiveFormatting: true, 38403 allowedFormats: ['core/bold', 'core/italic', 'core/image', 'core/strikethrough'], 38404 onClick: () => { 38405 if (!openSubmenusOnClick && !url) { 38406 setIsLinkOpen(true); 38407 setOpenedBy(ref.current); 38408 } 38409 } 38410 }), !openSubmenusOnClick && isLinkOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(LinkUI, { 38411 clientId: clientId, 38412 link: attributes, 38413 onClose: () => { 38414 setIsLinkOpen(false); 38415 if (openedBy) { 38416 openedBy.focus(); 38417 setOpenedBy(null); 38418 } else { 38419 selectBlock(clientId); 38420 } 38421 }, 38422 anchor: popoverAnchor, 38423 onRemove: () => { 38424 setAttributes({ 38425 url: '' 38426 }); 38427 (0,external_wp_a11y_namespaceObject.speak)((0,external_wp_i18n_namespaceObject.__)('Link removed.'), 'assertive'); 38428 }, 38429 onChange: updatedValue => { 38430 updateAttributes(updatedValue, setAttributes, attributes); 38431 } 38432 })] 38433 }), (showSubmenuIcon || openSubmenusOnClick) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 38434 className: "wp-block-navigation__submenu-icon", 38435 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ItemSubmenuIcon, {}) 38436 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 38437 ...innerBlocksProps 38438 })] 38439 })] 38440 }); 38441 } 38442 38443 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation-submenu/save.js 38444 /** 38445 * WordPress dependencies 38446 */ 38447 38448 38449 function navigation_submenu_save_save() { 38450 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 38451 } 38452 38453 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation-submenu/transforms.js 38454 /** 38455 * WordPress dependencies 38456 */ 38457 38458 const navigation_submenu_transforms_transforms = { 38459 to: [{ 38460 type: 'block', 38461 blocks: ['core/navigation-link'], 38462 isMatch: (attributes, block) => block?.innerBlocks?.length === 0, 38463 transform: attributes => (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link', attributes) 38464 }, { 38465 type: 'block', 38466 blocks: ['core/spacer'], 38467 isMatch: (attributes, block) => block?.innerBlocks?.length === 0, 38468 transform: () => { 38469 return (0,external_wp_blocks_namespaceObject.createBlock)('core/spacer'); 38470 } 38471 }, { 38472 type: 'block', 38473 blocks: ['core/site-logo'], 38474 isMatch: (attributes, block) => block?.innerBlocks?.length === 0, 38475 transform: () => { 38476 return (0,external_wp_blocks_namespaceObject.createBlock)('core/site-logo'); 38477 } 38478 }, { 38479 type: 'block', 38480 blocks: ['core/home-link'], 38481 isMatch: (attributes, block) => block?.innerBlocks?.length === 0, 38482 transform: () => { 38483 return (0,external_wp_blocks_namespaceObject.createBlock)('core/home-link'); 38484 } 38485 }, { 38486 type: 'block', 38487 blocks: ['core/social-links'], 38488 isMatch: (attributes, block) => block?.innerBlocks?.length === 0, 38489 transform: () => { 38490 return (0,external_wp_blocks_namespaceObject.createBlock)('core/social-links'); 38491 } 38492 }, { 38493 type: 'block', 38494 blocks: ['core/search'], 38495 isMatch: (attributes, block) => block?.innerBlocks?.length === 0, 38496 transform: () => { 38497 return (0,external_wp_blocks_namespaceObject.createBlock)('core/search'); 38498 } 38499 }] 38500 }; 38501 /* harmony default export */ const navigation_submenu_transforms = (navigation_submenu_transforms_transforms); 38502 38503 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation-submenu/index.js 38504 /** 38505 * WordPress dependencies 38506 */ 38507 38508 38509 /** 38510 * Internal dependencies 38511 */ 38512 38513 const navigation_submenu_metadata = { 38514 $schema: "https://schemas.wp.org/trunk/block.json", 38515 apiVersion: 3, 38516 name: "core/navigation-submenu", 38517 title: "Submenu", 38518 category: "design", 38519 parent: ["core/navigation"], 38520 description: "Add a submenu to your navigation.", 38521 textdomain: "default", 38522 attributes: { 38523 label: { 38524 type: "string" 38525 }, 38526 type: { 38527 type: "string" 38528 }, 38529 description: { 38530 type: "string" 38531 }, 38532 rel: { 38533 type: "string" 38534 }, 38535 id: { 38536 type: "number" 38537 }, 38538 opensInNewTab: { 38539 type: "boolean", 38540 "default": false 38541 }, 38542 url: { 38543 type: "string" 38544 }, 38545 title: { 38546 type: "string" 38547 }, 38548 kind: { 38549 type: "string" 38550 }, 38551 isTopLevelItem: { 38552 type: "boolean" 38553 } 38554 }, 38555 usesContext: ["textColor", "customTextColor", "backgroundColor", "customBackgroundColor", "overlayTextColor", "customOverlayTextColor", "overlayBackgroundColor", "customOverlayBackgroundColor", "fontSize", "customFontSize", "showSubmenuIcon", "maxNestingLevel", "openSubmenusOnClick", "style"], 38556 supports: { 38557 reusable: false, 38558 html: false, 38559 typography: { 38560 fontSize: true, 38561 lineHeight: true, 38562 __experimentalFontFamily: true, 38563 __experimentalFontWeight: true, 38564 __experimentalFontStyle: true, 38565 __experimentalTextTransform: true, 38566 __experimentalTextDecoration: true, 38567 __experimentalLetterSpacing: true, 38568 __experimentalDefaultControls: { 38569 fontSize: true 38570 } 38571 }, 38572 interactivity: { 38573 clientNavigation: true 38574 } 38575 }, 38576 editorStyle: "wp-block-navigation-submenu-editor", 38577 style: "wp-block-navigation-submenu" 38578 }; 38579 38580 38581 38582 const { 38583 name: navigation_submenu_name 38584 } = navigation_submenu_metadata; 38585 38586 const navigation_submenu_settings = { 38587 icon: ({ 38588 context 38589 }) => { 38590 if (context === 'list-view') { 38591 return library_page; 38592 } 38593 return add_submenu; 38594 }, 38595 __experimentalLabel(attributes, { 38596 context 38597 }) { 38598 const { 38599 label 38600 } = attributes; 38601 const customName = attributes?.metadata?.name; 38602 38603 // In the list view, use the block's menu label as the label. 38604 // If the menu label is empty, fall back to the default label. 38605 if (context === 'list-view' && (customName || label)) { 38606 return attributes?.metadata?.name || label; 38607 } 38608 return label; 38609 }, 38610 edit: NavigationSubmenuEdit, 38611 save: navigation_submenu_save_save, 38612 transforms: navigation_submenu_transforms 38613 }; 38614 const navigation_submenu_init = () => initBlock({ 38615 name: navigation_submenu_name, 38616 metadata: navigation_submenu_metadata, 38617 settings: navigation_submenu_settings 38618 }); 38619 38620 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/page-break.js 38621 /** 38622 * WordPress dependencies 38623 */ 38624 38625 38626 const pageBreak = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 38627 xmlns: "http://www.w3.org/2000/svg", 38628 viewBox: "0 0 24 24", 38629 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 38630 d: "M17.5 9V6a2 2 0 0 0-2-2h-7a2 2 0 0 0-2 2v3H8V6a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v3h1.5Zm0 6.5V18a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2v-2.5H8V18a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5v-2.5h1.5ZM4 13h16v-1.5H4V13Z" 38631 }) 38632 }); 38633 /* harmony default export */ const page_break = (pageBreak); 38634 38635 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/nextpage/edit.js 38636 /** 38637 * WordPress dependencies 38638 */ 38639 38640 38641 38642 function NextPageEdit() { 38643 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 38644 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)(), 38645 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 38646 children: (0,external_wp_i18n_namespaceObject.__)('Page break') 38647 }) 38648 }); 38649 } 38650 38651 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/nextpage/save.js 38652 /** 38653 * WordPress dependencies 38654 */ 38655 38656 38657 function nextpage_save_save() { 38658 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_element_namespaceObject.RawHTML, { 38659 children: '<!--nextpage-->' 38660 }); 38661 } 38662 38663 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/nextpage/transforms.js 38664 /** 38665 * WordPress dependencies 38666 */ 38667 38668 const nextpage_transforms_transforms = { 38669 from: [{ 38670 type: 'raw', 38671 schema: { 38672 'wp-block': { 38673 attributes: ['data-block'] 38674 } 38675 }, 38676 isMatch: node => node.dataset && node.dataset.block === 'core/nextpage', 38677 transform() { 38678 return (0,external_wp_blocks_namespaceObject.createBlock)('core/nextpage', {}); 38679 } 38680 }] 38681 }; 38682 /* harmony default export */ const nextpage_transforms = (nextpage_transforms_transforms); 38683 38684 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/nextpage/index.js 38685 /** 38686 * WordPress dependencies 38687 */ 38688 38689 38690 /** 38691 * Internal dependencies 38692 */ 38693 38694 38695 const nextpage_metadata = { 38696 $schema: "https://schemas.wp.org/trunk/block.json", 38697 apiVersion: 3, 38698 name: "core/nextpage", 38699 title: "Page Break", 38700 category: "design", 38701 description: "Separate your content into a multi-page experience.", 38702 keywords: ["next page", "pagination"], 38703 parent: ["core/post-content"], 38704 textdomain: "default", 38705 supports: { 38706 customClassName: false, 38707 className: false, 38708 html: false, 38709 interactivity: { 38710 clientNavigation: true 38711 } 38712 }, 38713 editorStyle: "wp-block-nextpage-editor" 38714 }; 38715 38716 38717 const { 38718 name: nextpage_name 38719 } = nextpage_metadata; 38720 38721 const nextpage_settings = { 38722 icon: page_break, 38723 example: {}, 38724 transforms: nextpage_transforms, 38725 edit: NextPageEdit, 38726 save: nextpage_save_save 38727 }; 38728 const nextpage_init = () => initBlock({ 38729 name: nextpage_name, 38730 metadata: nextpage_metadata, 38731 settings: nextpage_settings 38732 }); 38733 38734 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/pattern/recursion-detector.js 38735 /** 38736 * THIS MODULE IS INTENTIONALLY KEPT WITHIN THE PATTERN BLOCK'S SOURCE. 38737 * 38738 * This is because this approach for preventing infinite loops due to 38739 * recursively rendering blocks is specific to the way that the `core/pattern` 38740 * block behaves in the editor. Any other block types that deal with recursion 38741 * SHOULD USE THE STANDARD METHOD for avoiding loops: 38742 * 38743 * @see https://github.com/WordPress/gutenberg/pull/31455 38744 * @see packages/block-editor/src/components/recursion-provider/README.md 38745 */ 38746 38747 /** 38748 * WordPress dependencies 38749 */ 38750 38751 38752 /** 38753 * Naming is hard. 38754 * 38755 * @see useParsePatternDependencies 38756 * 38757 * @type {WeakMap<Object, Function>} 38758 */ 38759 const cachedParsers = new WeakMap(); 38760 38761 /** 38762 * Hook used by PatternEdit to parse block patterns. It returns a function that 38763 * takes a pattern and returns nothing but throws an error if the pattern is 38764 * recursive. 38765 * 38766 * @example 38767 * ```js 38768 * const parsePatternDependencies = useParsePatternDependencies(); 38769 * parsePatternDependencies( selectedPattern ); 38770 * ``` 38771 * 38772 * @see parsePatternDependencies 38773 * 38774 * @return {Function} A function to parse block patterns. 38775 */ 38776 function useParsePatternDependencies() { 38777 const registry = (0,external_wp_data_namespaceObject.useRegistry)(); 38778 38779 // Instead of caching maps, go straight to the point and cache bound 38780 // functions. Each of those functions is bound to a different Map that will 38781 // keep track of patterns in the context of the given registry. 38782 if (!cachedParsers.has(registry)) { 38783 const deps = new Map(); 38784 cachedParsers.set(registry, parsePatternDependencies.bind(null, deps)); 38785 } 38786 return cachedParsers.get(registry); 38787 } 38788 38789 /** 38790 * Parse a given pattern and traverse its contents to detect any subsequent 38791 * patterns on which it may depend. Such occurrences will be added to an 38792 * internal dependency graph. If a circular dependency is detected, an 38793 * error will be thrown. 38794 * 38795 * EXPORTED FOR TESTING PURPOSES ONLY. 38796 * 38797 * @param {Map<string, Set<string>>} deps Map of pattern dependencies. 38798 * @param {Object} pattern Pattern. 38799 * @param {string} pattern.name Pattern name. 38800 * @param {Array} pattern.blocks Pattern's block list. 38801 * 38802 * @throws {Error} If a circular dependency is detected. 38803 */ 38804 function parsePatternDependencies(deps, { 38805 name, 38806 blocks 38807 }) { 38808 const queue = [...blocks]; 38809 while (queue.length) { 38810 const block = queue.shift(); 38811 for (const innerBlock of (_block$innerBlocks = block.innerBlocks) !== null && _block$innerBlocks !== void 0 ? _block$innerBlocks : []) { 38812 var _block$innerBlocks; 38813 queue.unshift(innerBlock); 38814 } 38815 if (block.name === 'core/pattern') { 38816 registerDependency(deps, name, block.attributes.slug); 38817 } 38818 } 38819 } 38820 38821 /** 38822 * Declare that pattern `a` depends on pattern `b`. If a circular 38823 * dependency is detected, an error will be thrown. 38824 * 38825 * EXPORTED FOR TESTING PURPOSES ONLY. 38826 * 38827 * @param {Map<string, Set<string>>} deps Map of pattern dependencies. 38828 * @param {string} a Slug for pattern A. 38829 * @param {string} b Slug for pattern B. 38830 * 38831 * @throws {Error} If a circular dependency is detected. 38832 */ 38833 function registerDependency(deps, a, b) { 38834 if (!deps.has(a)) { 38835 deps.set(a, new Set()); 38836 } 38837 deps.get(a).add(b); 38838 if (hasCycle(deps, a)) { 38839 throw new TypeError(`Pattern $a} has a circular dependency and cannot be rendered.`); 38840 } 38841 } 38842 38843 /** 38844 * Determine if a given pattern has circular dependencies on other patterns. 38845 * This will be determined by running a depth-first search on the current state 38846 * of the graph represented by `patternDependencies`. 38847 * 38848 * @param {Map<string, Set<string>>} deps Map of pattern dependencies. 38849 * @param {string} slug Pattern slug. 38850 * @param {Set<string>} [visitedNodes] Set to track visited nodes in the graph. 38851 * @param {Set<string>} [currentPath] Set to track and backtrack graph paths. 38852 * @return {boolean} Whether any cycle was found. 38853 */ 38854 function hasCycle(deps, slug, visitedNodes = new Set(), currentPath = new Set()) { 38855 var _deps$get; 38856 visitedNodes.add(slug); 38857 currentPath.add(slug); 38858 const dependencies = (_deps$get = deps.get(slug)) !== null && _deps$get !== void 0 ? _deps$get : new Set(); 38859 for (const dependency of dependencies) { 38860 if (!visitedNodes.has(dependency)) { 38861 if (hasCycle(deps, dependency, visitedNodes, currentPath)) { 38862 return true; 38863 } 38864 } else if (currentPath.has(dependency)) { 38865 return true; 38866 } 38867 } 38868 38869 // Remove the current node from the current path when backtracking 38870 currentPath.delete(slug); 38871 return false; 38872 } 38873 38874 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/pattern/edit.js 38875 /** 38876 * WordPress dependencies 38877 */ 38878 38879 38880 38881 38882 38883 38884 38885 /** 38886 * Internal dependencies 38887 */ 38888 38889 38890 const PatternEdit = ({ 38891 attributes, 38892 clientId 38893 }) => { 38894 const registry = (0,external_wp_data_namespaceObject.useRegistry)(); 38895 const selectedPattern = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).__experimentalGetParsedPattern(attributes.slug), [attributes.slug]); 38896 const currentThemeStylesheet = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getCurrentTheme()?.stylesheet, []); 38897 const { 38898 replaceBlocks, 38899 setBlockEditingMode, 38900 __unstableMarkNextChangeAsNotPersistent 38901 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 38902 const { 38903 getBlockRootClientId, 38904 getBlockEditingMode 38905 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 38906 const [hasRecursionError, setHasRecursionError] = (0,external_wp_element_namespaceObject.useState)(false); 38907 const parsePatternDependencies = useParsePatternDependencies(); 38908 38909 // Duplicated in packages/editor/src/components/start-template-options/index.js. 38910 function injectThemeAttributeInBlockTemplateContent(block) { 38911 if (block.innerBlocks.find(innerBlock => innerBlock.name === 'core/template-part')) { 38912 block.innerBlocks = block.innerBlocks.map(innerBlock => { 38913 if (innerBlock.name === 'core/template-part' && innerBlock.attributes.theme === undefined) { 38914 innerBlock.attributes.theme = currentThemeStylesheet; 38915 } 38916 return innerBlock; 38917 }); 38918 } 38919 if (block.name === 'core/template-part' && block.attributes.theme === undefined) { 38920 block.attributes.theme = currentThemeStylesheet; 38921 } 38922 return block; 38923 } 38924 38925 // Run this effect when the component loads. 38926 // This adds the Pattern's contents to the post. 38927 // This change won't be saved. 38928 // It will continue to pull from the pattern file unless changes are made to its respective template part. 38929 (0,external_wp_element_namespaceObject.useEffect)(() => { 38930 if (!hasRecursionError && selectedPattern?.blocks) { 38931 try { 38932 parsePatternDependencies(selectedPattern); 38933 } catch (error) { 38934 setHasRecursionError(true); 38935 return; 38936 } 38937 38938 // We batch updates to block list settings to avoid triggering cascading renders 38939 // for each container block included in a tree and optimize initial render. 38940 // Since the above uses microtasks, we need to use a microtask here as well, 38941 // because nested pattern blocks cannot be inserted if the parent block supports 38942 // inner blocks but doesn't have blockSettings in the state. 38943 window.queueMicrotask(() => { 38944 const rootClientId = getBlockRootClientId(clientId); 38945 // Clone blocks from the pattern before insertion to ensure they receive 38946 // distinct client ids. See https://github.com/WordPress/gutenberg/issues/50628. 38947 const clonedBlocks = selectedPattern.blocks.map(block => (0,external_wp_blocks_namespaceObject.cloneBlock)(injectThemeAttributeInBlockTemplateContent(block))); 38948 // If the pattern has a single block and categories, we should add the 38949 // categories of the pattern to the block's metadata. 38950 if (clonedBlocks.length === 1 && selectedPattern.categories?.length > 0) { 38951 clonedBlocks[0].attributes = { 38952 ...clonedBlocks[0].attributes, 38953 metadata: { 38954 ...clonedBlocks[0].attributes.metadata, 38955 categories: selectedPattern.categories, 38956 patternName: selectedPattern.name, 38957 name: clonedBlocks[0].attributes.metadata.name || selectedPattern.title 38958 } 38959 }; 38960 } 38961 const rootEditingMode = getBlockEditingMode(rootClientId); 38962 registry.batch(() => { 38963 // Temporarily set the root block to default mode to allow replacing the pattern. 38964 // This could happen when the page is disabling edits of non-content blocks. 38965 __unstableMarkNextChangeAsNotPersistent(); 38966 setBlockEditingMode(rootClientId, 'default'); 38967 __unstableMarkNextChangeAsNotPersistent(); 38968 replaceBlocks(clientId, clonedBlocks); 38969 // Restore the root block's original mode. 38970 __unstableMarkNextChangeAsNotPersistent(); 38971 setBlockEditingMode(rootClientId, rootEditingMode); 38972 }); 38973 }); 38974 } 38975 }, [clientId, hasRecursionError, selectedPattern, __unstableMarkNextChangeAsNotPersistent, replaceBlocks, getBlockEditingMode, setBlockEditingMode, getBlockRootClientId]); 38976 const props = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 38977 if (hasRecursionError) { 38978 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 38979 ...props, 38980 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 38981 children: (0,external_wp_i18n_namespaceObject.sprintf)( 38982 // translators: A warning in which %s is the name of a pattern. 38983 (0,external_wp_i18n_namespaceObject.__)('Pattern "%s" cannot be rendered inside itself.'), selectedPattern?.name) 38984 }) 38985 }); 38986 } 38987 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 38988 ...props 38989 }); 38990 }; 38991 /* harmony default export */ const pattern_edit = (PatternEdit); 38992 38993 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/pattern/index.js 38994 /** 38995 * Internal dependencies 38996 */ 38997 38998 const pattern_metadata = { 38999 $schema: "https://schemas.wp.org/trunk/block.json", 39000 apiVersion: 3, 39001 name: "core/pattern", 39002 title: "Pattern placeholder", 39003 category: "theme", 39004 description: "Show a block pattern.", 39005 supports: { 39006 html: false, 39007 inserter: false, 39008 renaming: false, 39009 interactivity: { 39010 clientNavigation: true 39011 } 39012 }, 39013 textdomain: "default", 39014 attributes: { 39015 slug: { 39016 type: "string" 39017 } 39018 } 39019 }; 39020 39021 const { 39022 name: pattern_name 39023 } = pattern_metadata; 39024 39025 const pattern_settings = { 39026 edit: pattern_edit 39027 }; 39028 const pattern_init = () => initBlock({ 39029 name: pattern_name, 39030 metadata: pattern_metadata, 39031 settings: pattern_settings 39032 }); 39033 39034 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pages.js 39035 /** 39036 * WordPress dependencies 39037 */ 39038 39039 39040 39041 const pages = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, { 39042 xmlns: "http://www.w3.org/2000/svg", 39043 viewBox: "0 0 24 24", 39044 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 39045 d: "M14.5 5.5h-7V7h7V5.5ZM7.5 9h7v1.5h-7V9Zm7 3.5h-7V14h7v-1.5Z" 39046 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 39047 d: "M16 2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2ZM6 3.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5V4a.5.5 0 0 1 .5-.5Z" 39048 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 39049 d: "M20 8v11c0 .69-.31 1-.999 1H6v1.5h13.001c1.52 0 2.499-.982 2.499-2.5V8H20Z" 39050 })] 39051 }); 39052 /* harmony default export */ const library_pages = (pages); 39053 39054 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/page-list/use-convert-to-navigation-links.js 39055 /** 39056 * WordPress dependencies 39057 */ 39058 39059 39060 39061 39062 /** 39063 * Converts an array of pages into a nested array of navigation link blocks. 39064 * 39065 * @param {Array} pages An array of pages. 39066 * 39067 * @return {Array} A nested array of navigation link blocks. 39068 */ 39069 function createNavigationLinks(pages = []) { 39070 const linkMap = {}; 39071 const navigationLinks = []; 39072 pages.forEach(({ 39073 id, 39074 title, 39075 link: url, 39076 type, 39077 parent 39078 }) => { 39079 var _linkMap$id$innerBloc; 39080 // See if a placeholder exists. This is created if children appear before parents in list. 39081 const innerBlocks = (_linkMap$id$innerBloc = linkMap[id]?.innerBlocks) !== null && _linkMap$id$innerBloc !== void 0 ? _linkMap$id$innerBloc : []; 39082 linkMap[id] = (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-link', { 39083 id, 39084 label: title.rendered, 39085 url, 39086 type, 39087 kind: 'post-type' 39088 }, innerBlocks); 39089 if (!parent) { 39090 navigationLinks.push(linkMap[id]); 39091 } else { 39092 if (!linkMap[parent]) { 39093 // Use a placeholder if the child appears before parent in list. 39094 linkMap[parent] = { 39095 innerBlocks: [] 39096 }; 39097 } 39098 // Although these variables are not referenced, they are needed to store the innerBlocks in memory. 39099 const parentLinkInnerBlocks = linkMap[parent].innerBlocks; 39100 parentLinkInnerBlocks.push(linkMap[id]); 39101 } 39102 }); 39103 return navigationLinks; 39104 } 39105 39106 /** 39107 * Finds a navigation link block by id, recursively. 39108 * It might be possible to make this a more generic helper function. 39109 * 39110 * @param {Array} navigationLinks An array of navigation link blocks. 39111 * @param {number} id The id of the navigation link to find. 39112 * 39113 * @return {Object|null} The navigation link block with the given id. 39114 */ 39115 function findNavigationLinkById(navigationLinks, id) { 39116 for (const navigationLink of navigationLinks) { 39117 // Is this the link we're looking for? 39118 if (navigationLink.attributes.id === id) { 39119 return navigationLink; 39120 } 39121 39122 // If not does it have innerBlocks? 39123 if (navigationLink.innerBlocks && navigationLink.innerBlocks.length) { 39124 const foundNavigationLink = findNavigationLinkById(navigationLink.innerBlocks, id); 39125 if (foundNavigationLink) { 39126 return foundNavigationLink; 39127 } 39128 } 39129 } 39130 return null; 39131 } 39132 function convertToNavigationLinks(pages = [], parentPageID = null) { 39133 let navigationLinks = createNavigationLinks(pages); 39134 39135 // If a parent page ID is provided, only return the children of that page. 39136 if (parentPageID) { 39137 const parentPage = findNavigationLinkById(navigationLinks, parentPageID); 39138 if (parentPage && parentPage.innerBlocks) { 39139 navigationLinks = parentPage.innerBlocks; 39140 } 39141 } 39142 39143 // Transform all links with innerBlocks into Submenus. This can't be done 39144 // sooner because page objects have no information on their children. 39145 const transformSubmenus = listOfLinks => { 39146 listOfLinks.forEach((block, index, listOfLinksArray) => { 39147 const { 39148 attributes, 39149 innerBlocks 39150 } = block; 39151 if (innerBlocks.length !== 0) { 39152 transformSubmenus(innerBlocks); 39153 const transformedBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/navigation-submenu', attributes, innerBlocks); 39154 listOfLinksArray[index] = transformedBlock; 39155 } 39156 }); 39157 }; 39158 transformSubmenus(navigationLinks); 39159 return navigationLinks; 39160 } 39161 function useConvertToNavigationLinks({ 39162 clientId, 39163 pages, 39164 parentClientId, 39165 parentPageID 39166 }) { 39167 const { 39168 replaceBlock, 39169 selectBlock 39170 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 39171 return () => { 39172 const navigationLinks = convertToNavigationLinks(pages, parentPageID); 39173 39174 // Replace the Page List block with the Navigation Links. 39175 replaceBlock(clientId, navigationLinks); 39176 39177 // Select the Navigation block to reveal the changes. 39178 selectBlock(parentClientId); 39179 }; 39180 } 39181 39182 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/page-list/convert-to-links-modal.js 39183 /** 39184 * WordPress dependencies 39185 */ 39186 39187 39188 39189 39190 39191 const convertDescription = (0,external_wp_i18n_namespaceObject.__)("This Navigation Menu displays your website's pages. Editing it will enable you to add, delete, or reorder pages. However, new pages will no longer be added automatically."); 39192 function ConvertToLinksModal({ 39193 onClick, 39194 onClose, 39195 disabled 39196 }) { 39197 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Modal, { 39198 onRequestClose: onClose, 39199 title: (0,external_wp_i18n_namespaceObject.__)('Edit Page List'), 39200 className: "wp-block-page-list-modal", 39201 aria: { 39202 describedby: (0,external_wp_compose_namespaceObject.useInstanceId)(ConvertToLinksModal, 'wp-block-page-list-modal__description') 39203 }, 39204 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 39205 id: (0,external_wp_compose_namespaceObject.useInstanceId)(ConvertToLinksModal, 'wp-block-page-list-modal__description'), 39206 children: convertDescription 39207 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 39208 className: "wp-block-page-list-modal-buttons", 39209 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 39210 __next40pxDefaultSize: true, 39211 variant: "tertiary", 39212 onClick: onClose, 39213 children: (0,external_wp_i18n_namespaceObject.__)('Cancel') 39214 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 39215 __next40pxDefaultSize: true, 39216 variant: "primary", 39217 accessibleWhenDisabled: true, 39218 disabled: disabled, 39219 onClick: onClick, 39220 children: (0,external_wp_i18n_namespaceObject.__)('Edit') 39221 })] 39222 })] 39223 }); 39224 } 39225 39226 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/page-list/edit.js 39227 /** 39228 * External dependencies 39229 */ 39230 39231 39232 /** 39233 * WordPress dependencies 39234 */ 39235 39236 39237 39238 39239 39240 39241 39242 39243 /** 39244 * Internal dependencies 39245 */ 39246 39247 39248 39249 // We only show the edit option when page count is <= MAX_PAGE_COUNT 39250 // Performance of Navigation Links is not good past this value. 39251 39252 39253 39254 const MAX_PAGE_COUNT = 100; 39255 const NOOP = () => {}; 39256 function BlockContent({ 39257 blockProps, 39258 innerBlocksProps, 39259 hasResolvedPages, 39260 blockList, 39261 pages, 39262 parentPageID 39263 }) { 39264 if (!hasResolvedPages) { 39265 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 39266 ...blockProps, 39267 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 39268 className: "wp-block-page-list__loading-indicator-container", 39269 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, { 39270 className: "wp-block-page-list__loading-indicator" 39271 }) 39272 }) 39273 }); 39274 } 39275 if (pages === null) { 39276 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 39277 ...blockProps, 39278 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, { 39279 status: "warning", 39280 isDismissible: false, 39281 children: (0,external_wp_i18n_namespaceObject.__)('Page List: Cannot retrieve Pages.') 39282 }) 39283 }); 39284 } 39285 if (pages.length === 0) { 39286 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 39287 ...blockProps, 39288 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, { 39289 status: "info", 39290 isDismissible: false, 39291 children: (0,external_wp_i18n_namespaceObject.__)('Page List: Cannot retrieve Pages.') 39292 }) 39293 }); 39294 } 39295 if (blockList.length === 0) { 39296 const parentPageDetails = pages.find(page => page.id === parentPageID); 39297 if (parentPageDetails?.title?.rendered) { 39298 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 39299 ...blockProps, 39300 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 39301 children: (0,external_wp_i18n_namespaceObject.sprintf)( 39302 // translators: %s: Page title. 39303 (0,external_wp_i18n_namespaceObject.__)('Page List: "%s" page has no children.'), parentPageDetails.title.rendered) 39304 }) 39305 }); 39306 } 39307 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 39308 ...blockProps, 39309 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, { 39310 status: "warning", 39311 isDismissible: false, 39312 children: (0,external_wp_i18n_namespaceObject.__)('Page List: Cannot retrieve Pages.') 39313 }) 39314 }); 39315 } 39316 if (pages.length > 0) { 39317 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 39318 ...innerBlocksProps 39319 }); 39320 } 39321 } 39322 function PageListEdit({ 39323 context, 39324 clientId, 39325 attributes, 39326 setAttributes 39327 }) { 39328 const { 39329 parentPageID 39330 } = attributes; 39331 const [isOpen, setOpen] = (0,external_wp_element_namespaceObject.useState)(false); 39332 const openModal = (0,external_wp_element_namespaceObject.useCallback)(() => setOpen(true), []); 39333 const closeModal = () => setOpen(false); 39334 const { 39335 records: pages, 39336 hasResolved: hasResolvedPages 39337 } = (0,external_wp_coreData_namespaceObject.useEntityRecords)('postType', 'page', { 39338 per_page: MAX_PAGE_COUNT, 39339 _fields: ['id', 'link', 'menu_order', 'parent', 'title', 'type'], 39340 // TODO: When https://core.trac.wordpress.org/ticket/39037 REST API support for multiple orderby 39341 // values is resolved, update 'orderby' to [ 'menu_order', 'post_title' ] to provide a consistent 39342 // sort. 39343 orderby: 'menu_order', 39344 order: 'asc' 39345 }); 39346 const allowConvertToLinks = 'showSubmenuIcon' in context && pages?.length > 0 && pages?.length <= MAX_PAGE_COUNT; 39347 const pagesByParentId = (0,external_wp_element_namespaceObject.useMemo)(() => { 39348 if (pages === null) { 39349 return new Map(); 39350 } 39351 39352 // TODO: Once the REST API supports passing multiple values to 39353 // 'orderby', this can be removed. 39354 // https://core.trac.wordpress.org/ticket/39037 39355 const sortedPages = pages.sort((a, b) => { 39356 if (a.menu_order === b.menu_order) { 39357 return a.title.rendered.localeCompare(b.title.rendered); 39358 } 39359 return a.menu_order - b.menu_order; 39360 }); 39361 return sortedPages.reduce((accumulator, page) => { 39362 const { 39363 parent 39364 } = page; 39365 if (accumulator.has(parent)) { 39366 accumulator.get(parent).push(page); 39367 } else { 39368 accumulator.set(parent, [page]); 39369 } 39370 return accumulator; 39371 }, new Map()); 39372 }, [pages]); 39373 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 39374 className: dist_clsx('wp-block-page-list', { 39375 'has-text-color': !!context.textColor, 39376 [(0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', context.textColor)]: !!context.textColor, 39377 'has-background': !!context.backgroundColor, 39378 [(0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', context.backgroundColor)]: !!context.backgroundColor 39379 }), 39380 style: { 39381 ...context.style?.color 39382 } 39383 }); 39384 const pagesTree = (0,external_wp_element_namespaceObject.useMemo)(function makePagesTree(parentId = 0, level = 0) { 39385 const childPages = pagesByParentId.get(parentId); 39386 if (!childPages?.length) { 39387 return []; 39388 } 39389 return childPages.reduce((tree, page) => { 39390 const hasChildren = pagesByParentId.has(page.id); 39391 const item = { 39392 value: page.id, 39393 label: '— '.repeat(level) + page.title.rendered, 39394 rawName: page.title.rendered 39395 }; 39396 tree.push(item); 39397 if (hasChildren) { 39398 tree.push(...makePagesTree(page.id, level + 1)); 39399 } 39400 return tree; 39401 }, []); 39402 }, [pagesByParentId]); 39403 const blockList = (0,external_wp_element_namespaceObject.useMemo)(function getBlockList(parentId = parentPageID) { 39404 const childPages = pagesByParentId.get(parentId); 39405 if (!childPages?.length) { 39406 return []; 39407 } 39408 return childPages.reduce((template, page) => { 39409 const hasChildren = pagesByParentId.has(page.id); 39410 const pageProps = { 39411 id: page.id, 39412 label: 39413 // translators: displayed when a page has an empty title. 39414 page.title?.rendered?.trim() !== '' ? page.title?.rendered : (0,external_wp_i18n_namespaceObject.__)('(no title)'), 39415 title: 39416 // translators: displayed when a page has an empty title. 39417 page.title?.rendered?.trim() !== '' ? page.title?.rendered : (0,external_wp_i18n_namespaceObject.__)('(no title)'), 39418 link: page.url, 39419 hasChildren 39420 }; 39421 let item = null; 39422 const children = getBlockList(page.id); 39423 item = (0,external_wp_blocks_namespaceObject.createBlock)('core/page-list-item', pageProps, children); 39424 template.push(item); 39425 return template; 39426 }, []); 39427 }, [pagesByParentId, parentPageID]); 39428 const { 39429 isNested, 39430 hasSelectedChild, 39431 parentClientId, 39432 hasDraggedChild, 39433 isChildOfNavigation 39434 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 39435 const { 39436 getBlockParentsByBlockName, 39437 hasSelectedInnerBlock, 39438 hasDraggedInnerBlock 39439 } = select(external_wp_blockEditor_namespaceObject.store); 39440 const blockParents = getBlockParentsByBlockName(clientId, 'core/navigation-submenu', true); 39441 const navigationBlockParents = getBlockParentsByBlockName(clientId, 'core/navigation', true); 39442 return { 39443 isNested: blockParents.length > 0, 39444 isChildOfNavigation: navigationBlockParents.length > 0, 39445 hasSelectedChild: hasSelectedInnerBlock(clientId, true), 39446 hasDraggedChild: hasDraggedInnerBlock(clientId, true), 39447 parentClientId: navigationBlockParents[0] 39448 }; 39449 }, [clientId]); 39450 const convertToNavigationLinks = useConvertToNavigationLinks({ 39451 clientId, 39452 pages, 39453 parentClientId, 39454 parentPageID 39455 }); 39456 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 39457 renderAppender: false, 39458 __unstableDisableDropZone: true, 39459 templateLock: isChildOfNavigation ? false : 'all', 39460 onInput: NOOP, 39461 onChange: NOOP, 39462 value: blockList 39463 }); 39464 const { 39465 selectBlock 39466 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 39467 (0,external_wp_element_namespaceObject.useEffect)(() => { 39468 if (hasSelectedChild || hasDraggedChild) { 39469 openModal(); 39470 selectBlock(parentClientId); 39471 } 39472 }, [hasSelectedChild, hasDraggedChild, parentClientId, selectBlock, openModal]); 39473 (0,external_wp_element_namespaceObject.useEffect)(() => { 39474 setAttributes({ 39475 isNested 39476 }); 39477 }, [isNested, setAttributes]); 39478 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 39479 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.InspectorControls, { 39480 children: [pagesTree.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 39481 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ComboboxControl, { 39482 __nextHasNoMarginBottom: true, 39483 __next40pxDefaultSize: true, 39484 className: "editor-page-attributes__parent", 39485 label: (0,external_wp_i18n_namespaceObject.__)('Parent'), 39486 value: parentPageID, 39487 options: pagesTree, 39488 onChange: value => setAttributes({ 39489 parentPageID: value !== null && value !== void 0 ? value : 0 39490 }), 39491 help: (0,external_wp_i18n_namespaceObject.__)('Choose a page to show only its subpages.') 39492 }) 39493 }), allowConvertToLinks && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 39494 title: (0,external_wp_i18n_namespaceObject.__)('Edit this menu'), 39495 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 39496 children: convertDescription 39497 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 39498 __next40pxDefaultSize: true, 39499 variant: "primary", 39500 accessibleWhenDisabled: true, 39501 disabled: !hasResolvedPages, 39502 onClick: convertToNavigationLinks, 39503 children: (0,external_wp_i18n_namespaceObject.__)('Edit') 39504 })] 39505 })] 39506 }), allowConvertToLinks && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 39507 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 39508 group: "other", 39509 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 39510 title: (0,external_wp_i18n_namespaceObject.__)('Edit'), 39511 onClick: openModal, 39512 children: (0,external_wp_i18n_namespaceObject.__)('Edit') 39513 }) 39514 }), isOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ConvertToLinksModal, { 39515 onClick: convertToNavigationLinks, 39516 onClose: closeModal, 39517 disabled: !hasResolvedPages 39518 })] 39519 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockContent, { 39520 blockProps: blockProps, 39521 innerBlocksProps: innerBlocksProps, 39522 hasResolvedPages: hasResolvedPages, 39523 blockList: blockList, 39524 pages: pages, 39525 parentPageID: parentPageID 39526 })] 39527 }); 39528 } 39529 39530 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/page-list/index.js 39531 /** 39532 * WordPress dependencies 39533 */ 39534 39535 39536 /** 39537 * Internal dependencies 39538 */ 39539 39540 const page_list_metadata = { 39541 $schema: "https://schemas.wp.org/trunk/block.json", 39542 apiVersion: 3, 39543 name: "core/page-list", 39544 title: "Page List", 39545 category: "widgets", 39546 allowedBlocks: ["core/page-list-item"], 39547 description: "Display a list of all pages.", 39548 keywords: ["menu", "navigation"], 39549 textdomain: "default", 39550 attributes: { 39551 parentPageID: { 39552 type: "integer", 39553 "default": 0 39554 }, 39555 isNested: { 39556 type: "boolean", 39557 "default": false 39558 } 39559 }, 39560 usesContext: ["textColor", "customTextColor", "backgroundColor", "customBackgroundColor", "overlayTextColor", "customOverlayTextColor", "overlayBackgroundColor", "customOverlayBackgroundColor", "fontSize", "customFontSize", "showSubmenuIcon", "style", "openSubmenusOnClick"], 39561 supports: { 39562 reusable: false, 39563 html: false, 39564 typography: { 39565 fontSize: true, 39566 lineHeight: true, 39567 __experimentalFontFamily: true, 39568 __experimentalFontWeight: true, 39569 __experimentalFontStyle: true, 39570 __experimentalTextTransform: true, 39571 __experimentalTextDecoration: true, 39572 __experimentalLetterSpacing: true, 39573 __experimentalDefaultControls: { 39574 fontSize: true 39575 } 39576 }, 39577 interactivity: { 39578 clientNavigation: true 39579 } 39580 }, 39581 editorStyle: "wp-block-page-list-editor", 39582 style: "wp-block-page-list" 39583 }; 39584 39585 const { 39586 name: page_list_name 39587 } = page_list_metadata; 39588 39589 const page_list_settings = { 39590 icon: library_pages, 39591 example: {}, 39592 edit: PageListEdit 39593 }; 39594 const page_list_init = () => initBlock({ 39595 name: page_list_name, 39596 metadata: page_list_metadata, 39597 settings: page_list_settings 39598 }); 39599 39600 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation-link/icons.js 39601 /** 39602 * WordPress dependencies 39603 */ 39604 39605 39606 const icons_ItemSubmenuIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 39607 xmlns: "http://www.w3.org/2000/svg", 39608 width: "12", 39609 height: "12", 39610 viewBox: "0 0 12 12", 39611 fill: "none", 39612 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 39613 d: "M1.50002 4L6.00002 8L10.5 4", 39614 strokeWidth: "1.5" 39615 }) 39616 }); 39617 39618 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/page-list-item/edit.js 39619 /** 39620 * External dependencies 39621 */ 39622 39623 /** 39624 * WordPress dependencies 39625 */ 39626 39627 39628 39629 39630 39631 /** 39632 * Internal dependencies 39633 */ 39634 39635 39636 39637 39638 39639 function useFrontPageId() { 39640 return (0,external_wp_data_namespaceObject.useSelect)(select => { 39641 const canReadSettings = select(external_wp_coreData_namespaceObject.store).canUser('read', { 39642 kind: 'root', 39643 name: 'site' 39644 }); 39645 if (!canReadSettings) { 39646 return undefined; 39647 } 39648 const site = select(external_wp_coreData_namespaceObject.store).getEntityRecord('root', 'site'); 39649 return site?.show_on_front === 'page' && site?.page_on_front; 39650 }, []); 39651 } 39652 function PageListItemEdit({ 39653 context, 39654 attributes 39655 }) { 39656 const { 39657 id, 39658 label, 39659 link, 39660 hasChildren, 39661 title 39662 } = attributes; 39663 const isNavigationChild = ('showSubmenuIcon' in context); 39664 const frontPageId = useFrontPageId(); 39665 const innerBlocksColors = getColors(context, true); 39666 const navigationChildBlockProps = getNavigationChildBlockProps(innerBlocksColors); 39667 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(navigationChildBlockProps, { 39668 className: 'wp-block-pages-list__item' 39669 }); 39670 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps); 39671 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("li", { 39672 className: dist_clsx('wp-block-pages-list__item', { 39673 'has-child': hasChildren, 39674 'wp-block-navigation-item': isNavigationChild, 39675 'open-on-click': context.openSubmenusOnClick, 39676 'open-on-hover-click': !context.openSubmenusOnClick && context.showSubmenuIcon, 39677 'menu-item-home': id === frontPageId 39678 }), 39679 children: [hasChildren && context.openSubmenusOnClick ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 39680 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("button", { 39681 type: "button", 39682 className: "wp-block-navigation-item__content wp-block-navigation-submenu__toggle", 39683 "aria-expanded": "false", 39684 children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(label) 39685 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 39686 className: "wp-block-page-list__submenu-icon wp-block-navigation__submenu-icon", 39687 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(icons_ItemSubmenuIcon, {}) 39688 })] 39689 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 39690 className: dist_clsx('wp-block-pages-list__item__link', { 39691 'wp-block-navigation-item__content': isNavigationChild 39692 }), 39693 href: link, 39694 children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title) 39695 }), hasChildren && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 39696 children: [!context.openSubmenusOnClick && context.showSubmenuIcon && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("button", { 39697 className: "wp-block-navigation-item__content wp-block-navigation-submenu__toggle wp-block-page-list__submenu-icon wp-block-navigation__submenu-icon", 39698 "aria-expanded": "false", 39699 type: "button", 39700 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(icons_ItemSubmenuIcon, {}) 39701 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 39702 ...innerBlocksProps 39703 })] 39704 })] 39705 }, id); 39706 } 39707 39708 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/page-list-item/index.js 39709 /** 39710 * WordPress dependencies 39711 */ 39712 39713 39714 /** 39715 * Internal dependencies 39716 */ 39717 39718 const page_list_item_metadata = { 39719 $schema: "https://schemas.wp.org/trunk/block.json", 39720 apiVersion: 3, 39721 name: "core/page-list-item", 39722 title: "Page List Item", 39723 category: "widgets", 39724 parent: ["core/page-list"], 39725 description: "Displays a page inside a list of all pages.", 39726 keywords: ["page", "menu", "navigation"], 39727 textdomain: "default", 39728 attributes: { 39729 id: { 39730 type: "number" 39731 }, 39732 label: { 39733 type: "string" 39734 }, 39735 title: { 39736 type: "string" 39737 }, 39738 link: { 39739 type: "string" 39740 }, 39741 hasChildren: { 39742 type: "boolean" 39743 } 39744 }, 39745 usesContext: ["textColor", "customTextColor", "backgroundColor", "customBackgroundColor", "overlayTextColor", "customOverlayTextColor", "overlayBackgroundColor", "customOverlayBackgroundColor", "fontSize", "customFontSize", "showSubmenuIcon", "style", "openSubmenusOnClick"], 39746 supports: { 39747 reusable: false, 39748 html: false, 39749 lock: false, 39750 inserter: false, 39751 __experimentalToolbar: false, 39752 interactivity: { 39753 clientNavigation: true 39754 } 39755 }, 39756 editorStyle: "wp-block-page-list-editor", 39757 style: "wp-block-page-list" 39758 }; 39759 39760 const { 39761 name: page_list_item_name 39762 } = page_list_item_metadata; 39763 39764 const page_list_item_settings = { 39765 __experimentalLabel: ({ 39766 label 39767 }) => label, 39768 icon: library_page, 39769 example: {}, 39770 edit: PageListItemEdit 39771 }; 39772 const page_list_item_init = () => initBlock({ 39773 name: page_list_item_name, 39774 metadata: page_list_item_metadata, 39775 settings: page_list_item_settings 39776 }); 39777 39778 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/paragraph.js 39779 /** 39780 * WordPress dependencies 39781 */ 39782 39783 39784 const paragraph = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 39785 xmlns: "http://www.w3.org/2000/svg", 39786 viewBox: "0 0 24 24", 39787 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 39788 d: "m9.99609 14v-.2251l.00391.0001v6.225h1.5v-14.5h2.5v14.5h1.5v-14.5h3v-1.5h-8.50391c-2.76142 0-5 2.23858-5 5 0 2.7614 2.23858 5 5 5z" 39789 }) 39790 }); 39791 /* harmony default export */ const library_paragraph = (paragraph); 39792 39793 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/paragraph/deprecated.js 39794 /** 39795 * External dependencies 39796 */ 39797 39798 39799 /** 39800 * WordPress dependencies 39801 */ 39802 39803 39804 39805 39806 const deprecated_supports = { 39807 className: false 39808 }; 39809 const paragraph_deprecated_blockAttributes = { 39810 align: { 39811 type: 'string' 39812 }, 39813 content: { 39814 type: 'string', 39815 source: 'html', 39816 selector: 'p', 39817 default: '' 39818 }, 39819 dropCap: { 39820 type: 'boolean', 39821 default: false 39822 }, 39823 placeholder: { 39824 type: 'string' 39825 }, 39826 textColor: { 39827 type: 'string' 39828 }, 39829 backgroundColor: { 39830 type: 'string' 39831 }, 39832 fontSize: { 39833 type: 'string' 39834 }, 39835 direction: { 39836 type: 'string', 39837 enum: ['ltr', 'rtl'] 39838 }, 39839 style: { 39840 type: 'object' 39841 } 39842 }; 39843 const migrateCustomColorsAndFontSizes = attributes => { 39844 if (!attributes.customTextColor && !attributes.customBackgroundColor && !attributes.customFontSize) { 39845 return attributes; 39846 } 39847 const style = {}; 39848 if (attributes.customTextColor || attributes.customBackgroundColor) { 39849 style.color = {}; 39850 } 39851 if (attributes.customTextColor) { 39852 style.color.text = attributes.customTextColor; 39853 } 39854 if (attributes.customBackgroundColor) { 39855 style.color.background = attributes.customBackgroundColor; 39856 } 39857 if (attributes.customFontSize) { 39858 style.typography = { 39859 fontSize: attributes.customFontSize 39860 }; 39861 } 39862 const { 39863 customTextColor, 39864 customBackgroundColor, 39865 customFontSize, 39866 ...restAttributes 39867 } = attributes; 39868 return { 39869 ...restAttributes, 39870 style 39871 }; 39872 }; 39873 const { 39874 style, 39875 ...restBlockAttributes 39876 } = paragraph_deprecated_blockAttributes; 39877 const paragraph_deprecated_deprecated = [ 39878 // Version without drop cap on aligned text. 39879 { 39880 supports: deprecated_supports, 39881 attributes: { 39882 ...restBlockAttributes, 39883 customTextColor: { 39884 type: 'string' 39885 }, 39886 customBackgroundColor: { 39887 type: 'string' 39888 }, 39889 customFontSize: { 39890 type: 'number' 39891 } 39892 }, 39893 save({ 39894 attributes 39895 }) { 39896 const { 39897 align, 39898 content, 39899 dropCap, 39900 direction 39901 } = attributes; 39902 const className = dist_clsx({ 39903 'has-drop-cap': align === ((0,external_wp_i18n_namespaceObject.isRTL)() ? 'left' : 'right') || align === 'center' ? false : dropCap, 39904 [`has-text-align-$align}`]: align 39905 }); 39906 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 39907 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 39908 className, 39909 dir: direction 39910 }), 39911 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 39912 value: content 39913 }) 39914 }); 39915 } 39916 }, { 39917 supports: deprecated_supports, 39918 attributes: { 39919 ...restBlockAttributes, 39920 customTextColor: { 39921 type: 'string' 39922 }, 39923 customBackgroundColor: { 39924 type: 'string' 39925 }, 39926 customFontSize: { 39927 type: 'number' 39928 } 39929 }, 39930 migrate: migrateCustomColorsAndFontSizes, 39931 save({ 39932 attributes 39933 }) { 39934 const { 39935 align, 39936 content, 39937 dropCap, 39938 backgroundColor, 39939 textColor, 39940 customBackgroundColor, 39941 customTextColor, 39942 fontSize, 39943 customFontSize, 39944 direction 39945 } = attributes; 39946 const textClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 39947 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 39948 const fontSizeClass = (0,external_wp_blockEditor_namespaceObject.getFontSizeClass)(fontSize); 39949 const className = dist_clsx({ 39950 'has-text-color': textColor || customTextColor, 39951 'has-background': backgroundColor || customBackgroundColor, 39952 'has-drop-cap': dropCap, 39953 [`has-text-align-$align}`]: align, 39954 [fontSizeClass]: fontSizeClass, 39955 [textClass]: textClass, 39956 [backgroundClass]: backgroundClass 39957 }); 39958 const styles = { 39959 backgroundColor: backgroundClass ? undefined : customBackgroundColor, 39960 color: textClass ? undefined : customTextColor, 39961 fontSize: fontSizeClass ? undefined : customFontSize 39962 }; 39963 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 39964 tagName: "p", 39965 style: styles, 39966 className: className ? className : undefined, 39967 value: content, 39968 dir: direction 39969 }); 39970 } 39971 }, { 39972 supports: deprecated_supports, 39973 attributes: { 39974 ...restBlockAttributes, 39975 customTextColor: { 39976 type: 'string' 39977 }, 39978 customBackgroundColor: { 39979 type: 'string' 39980 }, 39981 customFontSize: { 39982 type: 'number' 39983 } 39984 }, 39985 migrate: migrateCustomColorsAndFontSizes, 39986 save({ 39987 attributes 39988 }) { 39989 const { 39990 align, 39991 content, 39992 dropCap, 39993 backgroundColor, 39994 textColor, 39995 customBackgroundColor, 39996 customTextColor, 39997 fontSize, 39998 customFontSize, 39999 direction 40000 } = attributes; 40001 const textClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 40002 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 40003 const fontSizeClass = (0,external_wp_blockEditor_namespaceObject.getFontSizeClass)(fontSize); 40004 const className = dist_clsx({ 40005 'has-text-color': textColor || customTextColor, 40006 'has-background': backgroundColor || customBackgroundColor, 40007 'has-drop-cap': dropCap, 40008 [fontSizeClass]: fontSizeClass, 40009 [textClass]: textClass, 40010 [backgroundClass]: backgroundClass 40011 }); 40012 const styles = { 40013 backgroundColor: backgroundClass ? undefined : customBackgroundColor, 40014 color: textClass ? undefined : customTextColor, 40015 fontSize: fontSizeClass ? undefined : customFontSize, 40016 textAlign: align 40017 }; 40018 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 40019 tagName: "p", 40020 style: styles, 40021 className: className ? className : undefined, 40022 value: content, 40023 dir: direction 40024 }); 40025 } 40026 }, { 40027 supports: deprecated_supports, 40028 attributes: { 40029 ...restBlockAttributes, 40030 customTextColor: { 40031 type: 'string' 40032 }, 40033 customBackgroundColor: { 40034 type: 'string' 40035 }, 40036 customFontSize: { 40037 type: 'number' 40038 }, 40039 width: { 40040 type: 'string' 40041 } 40042 }, 40043 migrate: migrateCustomColorsAndFontSizes, 40044 save({ 40045 attributes 40046 }) { 40047 const { 40048 width, 40049 align, 40050 content, 40051 dropCap, 40052 backgroundColor, 40053 textColor, 40054 customBackgroundColor, 40055 customTextColor, 40056 fontSize, 40057 customFontSize 40058 } = attributes; 40059 const textClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 40060 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 40061 const fontSizeClass = fontSize && `is-$fontSize}-text`; 40062 const className = dist_clsx({ 40063 [`align$width}`]: width, 40064 'has-background': backgroundColor || customBackgroundColor, 40065 'has-drop-cap': dropCap, 40066 [fontSizeClass]: fontSizeClass, 40067 [textClass]: textClass, 40068 [backgroundClass]: backgroundClass 40069 }); 40070 const styles = { 40071 backgroundColor: backgroundClass ? undefined : customBackgroundColor, 40072 color: textClass ? undefined : customTextColor, 40073 fontSize: fontSizeClass ? undefined : customFontSize, 40074 textAlign: align 40075 }; 40076 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 40077 tagName: "p", 40078 style: styles, 40079 className: className ? className : undefined, 40080 value: content 40081 }); 40082 } 40083 }, { 40084 supports: deprecated_supports, 40085 attributes: { 40086 ...restBlockAttributes, 40087 fontSize: { 40088 type: 'number' 40089 } 40090 }, 40091 save({ 40092 attributes 40093 }) { 40094 const { 40095 width, 40096 align, 40097 content, 40098 dropCap, 40099 backgroundColor, 40100 textColor, 40101 fontSize 40102 } = attributes; 40103 const className = dist_clsx({ 40104 [`align$width}`]: width, 40105 'has-background': backgroundColor, 40106 'has-drop-cap': dropCap 40107 }); 40108 const styles = { 40109 backgroundColor, 40110 color: textColor, 40111 fontSize, 40112 textAlign: align 40113 }; 40114 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 40115 style: styles, 40116 className: className ? className : undefined, 40117 children: content 40118 }); 40119 }, 40120 migrate(attributes) { 40121 return migrateCustomColorsAndFontSizes({ 40122 ...attributes, 40123 customFontSize: Number.isFinite(attributes.fontSize) ? attributes.fontSize : undefined, 40124 customTextColor: attributes.textColor && '#' === attributes.textColor[0] ? attributes.textColor : undefined, 40125 customBackgroundColor: attributes.backgroundColor && '#' === attributes.backgroundColor[0] ? attributes.backgroundColor : undefined 40126 }); 40127 } 40128 }, { 40129 supports: deprecated_supports, 40130 attributes: { 40131 ...paragraph_deprecated_blockAttributes, 40132 content: { 40133 type: 'string', 40134 source: 'html', 40135 default: '' 40136 } 40137 }, 40138 save({ 40139 attributes 40140 }) { 40141 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_element_namespaceObject.RawHTML, { 40142 children: attributes.content 40143 }); 40144 }, 40145 migrate(attributes) { 40146 return attributes; 40147 } 40148 }]; 40149 /* harmony default export */ const paragraph_deprecated = (paragraph_deprecated_deprecated); 40150 40151 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/format-ltr.js 40152 /** 40153 * WordPress dependencies 40154 */ 40155 40156 40157 const formatLtr = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 40158 xmlns: "http://www.w3.org/2000/svg", 40159 viewBox: "-2 -2 24 24", 40160 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 40161 d: "M5.52 2h7.43c.55 0 1 .45 1 1s-.45 1-1 1h-1v13c0 .55-.45 1-1 1s-1-.45-1-1V5c0-.55-.45-1-1-1s-1 .45-1 1v12c0 .55-.45 1-1 1s-1-.45-1-1v-5.96h-.43C3.02 11.04 1 9.02 1 6.52S3.02 2 5.52 2zM14 14l5-4-5-4v8z" 40162 }) 40163 }); 40164 /* harmony default export */ const format_ltr = (formatLtr); 40165 40166 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/paragraph/use-enter.js 40167 /** 40168 * WordPress dependencies 40169 */ 40170 40171 40172 40173 40174 40175 40176 function useOnEnter(props) { 40177 const { 40178 batch 40179 } = (0,external_wp_data_namespaceObject.useRegistry)(); 40180 const { 40181 moveBlocksToPosition, 40182 replaceInnerBlocks, 40183 duplicateBlocks, 40184 insertBlock 40185 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 40186 const { 40187 getBlockRootClientId, 40188 getBlockIndex, 40189 getBlockOrder, 40190 getBlockName, 40191 getBlock, 40192 getNextBlockClientId, 40193 canInsertBlockType 40194 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 40195 const propsRef = (0,external_wp_element_namespaceObject.useRef)(props); 40196 propsRef.current = props; 40197 return (0,external_wp_compose_namespaceObject.useRefEffect)(element => { 40198 function onKeyDown(event) { 40199 if (event.defaultPrevented) { 40200 return; 40201 } 40202 if (event.keyCode !== external_wp_keycodes_namespaceObject.ENTER) { 40203 return; 40204 } 40205 const { 40206 content, 40207 clientId 40208 } = propsRef.current; 40209 40210 // The paragraph should be empty. 40211 if (content.length) { 40212 return; 40213 } 40214 const wrapperClientId = getBlockRootClientId(clientId); 40215 if (!(0,external_wp_blocks_namespaceObject.hasBlockSupport)(getBlockName(wrapperClientId), '__experimentalOnEnter', false)) { 40216 return; 40217 } 40218 const order = getBlockOrder(wrapperClientId); 40219 const position = order.indexOf(clientId); 40220 40221 // If it is the last block, exit. 40222 if (position === order.length - 1) { 40223 let newWrapperClientId = wrapperClientId; 40224 while (!canInsertBlockType(getBlockName(clientId), getBlockRootClientId(newWrapperClientId))) { 40225 newWrapperClientId = getBlockRootClientId(newWrapperClientId); 40226 } 40227 if (typeof newWrapperClientId === 'string') { 40228 event.preventDefault(); 40229 moveBlocksToPosition([clientId], wrapperClientId, getBlockRootClientId(newWrapperClientId), getBlockIndex(newWrapperClientId) + 1); 40230 } 40231 return; 40232 } 40233 const defaultBlockName = (0,external_wp_blocks_namespaceObject.getDefaultBlockName)(); 40234 if (!canInsertBlockType(defaultBlockName, getBlockRootClientId(wrapperClientId))) { 40235 return; 40236 } 40237 event.preventDefault(); 40238 40239 // If it is in the middle, split the block in two. 40240 const wrapperBlock = getBlock(wrapperClientId); 40241 batch(() => { 40242 duplicateBlocks([wrapperClientId]); 40243 const blockIndex = getBlockIndex(wrapperClientId); 40244 replaceInnerBlocks(wrapperClientId, wrapperBlock.innerBlocks.slice(0, position)); 40245 replaceInnerBlocks(getNextBlockClientId(wrapperClientId), wrapperBlock.innerBlocks.slice(position + 1)); 40246 insertBlock((0,external_wp_blocks_namespaceObject.createBlock)(defaultBlockName), blockIndex + 1, getBlockRootClientId(wrapperClientId), true); 40247 }); 40248 } 40249 element.addEventListener('keydown', onKeyDown); 40250 return () => { 40251 element.removeEventListener('keydown', onKeyDown); 40252 }; 40253 }, []); 40254 } 40255 40256 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/paragraph/edit.js 40257 /** 40258 * External dependencies 40259 */ 40260 40261 40262 /** 40263 * WordPress dependencies 40264 */ 40265 40266 40267 40268 40269 40270 /** 40271 * Internal dependencies 40272 */ 40273 40274 40275 40276 40277 function ParagraphRTLControl({ 40278 direction, 40279 setDirection 40280 }) { 40281 return (0,external_wp_i18n_namespaceObject.isRTL)() && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 40282 icon: format_ltr, 40283 title: (0,external_wp_i18n_namespaceObject._x)('Left to right', 'editor button'), 40284 isActive: direction === 'ltr', 40285 onClick: () => { 40286 setDirection(direction === 'ltr' ? undefined : 'ltr'); 40287 } 40288 }); 40289 } 40290 function hasDropCapDisabled(align) { 40291 return align === ((0,external_wp_i18n_namespaceObject.isRTL)() ? 'left' : 'right') || align === 'center'; 40292 } 40293 function DropCapControl({ 40294 clientId, 40295 attributes, 40296 setAttributes 40297 }) { 40298 // Please do not add a useSelect call to the paragraph block unconditionally. 40299 // Every useSelect added to a (frequently used) block will degrade load 40300 // and type performance. By moving it within InspectorControls, the subscription is 40301 // now only added for the selected block(s). 40302 const [isDropCapFeatureEnabled] = (0,external_wp_blockEditor_namespaceObject.useSettings)('typography.dropCap'); 40303 if (!isDropCapFeatureEnabled) { 40304 return null; 40305 } 40306 const { 40307 align, 40308 dropCap 40309 } = attributes; 40310 let helpText; 40311 if (hasDropCapDisabled(align)) { 40312 helpText = (0,external_wp_i18n_namespaceObject.__)('Not available for aligned text.'); 40313 } else if (dropCap) { 40314 helpText = (0,external_wp_i18n_namespaceObject.__)('Showing large initial letter.'); 40315 } else { 40316 helpText = (0,external_wp_i18n_namespaceObject.__)('Toggle to show a large initial letter.'); 40317 } 40318 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 40319 hasValue: () => !!dropCap, 40320 label: (0,external_wp_i18n_namespaceObject.__)('Drop cap'), 40321 onDeselect: () => setAttributes({ 40322 dropCap: undefined 40323 }), 40324 resetAllFilter: () => ({ 40325 dropCap: undefined 40326 }), 40327 panelId: clientId, 40328 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 40329 __nextHasNoMarginBottom: true, 40330 label: (0,external_wp_i18n_namespaceObject.__)('Drop cap'), 40331 checked: !!dropCap, 40332 onChange: () => setAttributes({ 40333 dropCap: !dropCap 40334 }), 40335 help: helpText, 40336 disabled: hasDropCapDisabled(align) ? true : false 40337 }) 40338 }); 40339 } 40340 function ParagraphBlock({ 40341 attributes, 40342 mergeBlocks, 40343 onReplace, 40344 onRemove, 40345 setAttributes, 40346 clientId 40347 }) { 40348 const { 40349 align, 40350 content, 40351 direction, 40352 dropCap, 40353 placeholder 40354 } = attributes; 40355 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 40356 ref: useOnEnter({ 40357 clientId, 40358 content 40359 }), 40360 className: dist_clsx({ 40361 'has-drop-cap': hasDropCapDisabled(align) ? false : dropCap, 40362 [`has-text-align-$align}`]: align 40363 }), 40364 style: { 40365 direction 40366 } 40367 }); 40368 const blockEditingMode = (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)(); 40369 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 40370 children: [blockEditingMode === 'default' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 40371 group: "block", 40372 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 40373 value: align, 40374 onChange: newAlign => setAttributes({ 40375 align: newAlign, 40376 dropCap: hasDropCapDisabled(newAlign) ? false : dropCap 40377 }) 40378 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ParagraphRTLControl, { 40379 direction: direction, 40380 setDirection: newDirection => setAttributes({ 40381 direction: newDirection 40382 }) 40383 })] 40384 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 40385 group: "typography", 40386 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropCapControl, { 40387 clientId: clientId, 40388 attributes: attributes, 40389 setAttributes: setAttributes 40390 }) 40391 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 40392 identifier: "content", 40393 tagName: "p", 40394 ...blockProps, 40395 value: content, 40396 onChange: newContent => setAttributes({ 40397 content: newContent 40398 }), 40399 onMerge: mergeBlocks, 40400 onReplace: onReplace, 40401 onRemove: onRemove, 40402 "aria-label": external_wp_blockEditor_namespaceObject.RichText.isEmpty(content) ? (0,external_wp_i18n_namespaceObject.__)('Empty block; start writing or type forward slash to choose a block') : (0,external_wp_i18n_namespaceObject.__)('Block: Paragraph'), 40403 "data-empty": external_wp_blockEditor_namespaceObject.RichText.isEmpty(content), 40404 placeholder: placeholder || (0,external_wp_i18n_namespaceObject.__)('Type / to choose a block'), 40405 "data-custom-placeholder": placeholder ? true : undefined, 40406 __unstableEmbedURLOnPaste: true, 40407 __unstableAllowPrefixTransformations: true 40408 })] 40409 }); 40410 } 40411 /* harmony default export */ const paragraph_edit = (ParagraphBlock); 40412 40413 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/paragraph/save.js 40414 /** 40415 * External dependencies 40416 */ 40417 40418 40419 /** 40420 * WordPress dependencies 40421 */ 40422 40423 40424 40425 function paragraph_save_save({ 40426 attributes 40427 }) { 40428 const { 40429 align, 40430 content, 40431 dropCap, 40432 direction 40433 } = attributes; 40434 const className = dist_clsx({ 40435 'has-drop-cap': align === ((0,external_wp_i18n_namespaceObject.isRTL)() ? 'left' : 'right') || align === 'center' ? false : dropCap, 40436 [`has-text-align-$align}`]: align 40437 }); 40438 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 40439 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 40440 className, 40441 dir: direction 40442 }), 40443 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 40444 value: content 40445 }) 40446 }); 40447 } 40448 40449 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/paragraph/transforms.js 40450 /** 40451 * WordPress dependencies 40452 */ 40453 40454 40455 /** 40456 * Internal dependencies 40457 */ 40458 const { 40459 name: transforms_name 40460 } = { 40461 $schema: "https://schemas.wp.org/trunk/block.json", 40462 apiVersion: 3, 40463 name: "core/paragraph", 40464 title: "Paragraph", 40465 category: "text", 40466 description: "Start with the basic building block of all narrative.", 40467 keywords: ["text"], 40468 textdomain: "default", 40469 attributes: { 40470 align: { 40471 type: "string" 40472 }, 40473 content: { 40474 type: "rich-text", 40475 source: "rich-text", 40476 selector: "p", 40477 role: "content" 40478 }, 40479 dropCap: { 40480 type: "boolean", 40481 "default": false 40482 }, 40483 placeholder: { 40484 type: "string" 40485 }, 40486 direction: { 40487 type: "string", 40488 "enum": ["ltr", "rtl"] 40489 } 40490 }, 40491 supports: { 40492 splitting: true, 40493 anchor: true, 40494 className: false, 40495 __experimentalBorder: { 40496 color: true, 40497 radius: true, 40498 style: true, 40499 width: true 40500 }, 40501 color: { 40502 gradients: true, 40503 link: true, 40504 __experimentalDefaultControls: { 40505 background: true, 40506 text: true 40507 } 40508 }, 40509 spacing: { 40510 margin: true, 40511 padding: true, 40512 __experimentalDefaultControls: { 40513 margin: false, 40514 padding: false 40515 } 40516 }, 40517 typography: { 40518 fontSize: true, 40519 lineHeight: true, 40520 __experimentalFontFamily: true, 40521 __experimentalTextDecoration: true, 40522 __experimentalFontStyle: true, 40523 __experimentalFontWeight: true, 40524 __experimentalLetterSpacing: true, 40525 __experimentalTextTransform: true, 40526 __experimentalWritingMode: true, 40527 __experimentalDefaultControls: { 40528 fontSize: true 40529 } 40530 }, 40531 __experimentalSelector: "p", 40532 __unstablePasteTextInline: true, 40533 interactivity: { 40534 clientNavigation: true 40535 } 40536 }, 40537 editorStyle: "wp-block-paragraph-editor", 40538 style: "wp-block-paragraph" 40539 }; 40540 const paragraph_transforms_transforms = { 40541 from: [{ 40542 type: 'raw', 40543 // Paragraph is a fallback and should be matched last. 40544 priority: 20, 40545 selector: 'p', 40546 schema: ({ 40547 phrasingContentSchema, 40548 isPaste 40549 }) => ({ 40550 p: { 40551 children: phrasingContentSchema, 40552 attributes: isPaste ? [] : ['style', 'id'] 40553 } 40554 }), 40555 transform(node) { 40556 const attributes = (0,external_wp_blocks_namespaceObject.getBlockAttributes)(transforms_name, node.outerHTML); 40557 const { 40558 textAlign 40559 } = node.style || {}; 40560 if (textAlign === 'left' || textAlign === 'center' || textAlign === 'right') { 40561 attributes.align = textAlign; 40562 } 40563 return (0,external_wp_blocks_namespaceObject.createBlock)(transforms_name, attributes); 40564 } 40565 }] 40566 }; 40567 /* harmony default export */ const paragraph_transforms = (paragraph_transforms_transforms); 40568 40569 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/paragraph/index.js 40570 /** 40571 * WordPress dependencies 40572 */ 40573 40574 40575 40576 /** 40577 * Internal dependencies 40578 */ 40579 40580 40581 40582 const paragraph_metadata = { 40583 $schema: "https://schemas.wp.org/trunk/block.json", 40584 apiVersion: 3, 40585 name: "core/paragraph", 40586 title: "Paragraph", 40587 category: "text", 40588 description: "Start with the basic building block of all narrative.", 40589 keywords: ["text"], 40590 textdomain: "default", 40591 attributes: { 40592 align: { 40593 type: "string" 40594 }, 40595 content: { 40596 type: "rich-text", 40597 source: "rich-text", 40598 selector: "p", 40599 role: "content" 40600 }, 40601 dropCap: { 40602 type: "boolean", 40603 "default": false 40604 }, 40605 placeholder: { 40606 type: "string" 40607 }, 40608 direction: { 40609 type: "string", 40610 "enum": ["ltr", "rtl"] 40611 } 40612 }, 40613 supports: { 40614 splitting: true, 40615 anchor: true, 40616 className: false, 40617 __experimentalBorder: { 40618 color: true, 40619 radius: true, 40620 style: true, 40621 width: true 40622 }, 40623 color: { 40624 gradients: true, 40625 link: true, 40626 __experimentalDefaultControls: { 40627 background: true, 40628 text: true 40629 } 40630 }, 40631 spacing: { 40632 margin: true, 40633 padding: true, 40634 __experimentalDefaultControls: { 40635 margin: false, 40636 padding: false 40637 } 40638 }, 40639 typography: { 40640 fontSize: true, 40641 lineHeight: true, 40642 __experimentalFontFamily: true, 40643 __experimentalTextDecoration: true, 40644 __experimentalFontStyle: true, 40645 __experimentalFontWeight: true, 40646 __experimentalLetterSpacing: true, 40647 __experimentalTextTransform: true, 40648 __experimentalWritingMode: true, 40649 __experimentalDefaultControls: { 40650 fontSize: true 40651 } 40652 }, 40653 __experimentalSelector: "p", 40654 __unstablePasteTextInline: true, 40655 interactivity: { 40656 clientNavigation: true 40657 } 40658 }, 40659 editorStyle: "wp-block-paragraph-editor", 40660 style: "wp-block-paragraph" 40661 }; 40662 40663 40664 const { 40665 name: paragraph_name 40666 } = paragraph_metadata; 40667 40668 const paragraph_settings = { 40669 icon: library_paragraph, 40670 example: { 40671 attributes: { 40672 content: (0,external_wp_i18n_namespaceObject.__)('In a village of La Mancha, the name of which I have no desire to call to mind, there lived not long since one of those gentlemen that keep a lance in the lance-rack, an old buckler, a lean hack, and a greyhound for coursing.') 40673 } 40674 }, 40675 __experimentalLabel(attributes, { 40676 context 40677 }) { 40678 const customName = attributes?.metadata?.name; 40679 if (context === 'list-view' && customName) { 40680 return customName; 40681 } 40682 if (context === 'accessibility') { 40683 if (customName) { 40684 return customName; 40685 } 40686 const { 40687 content 40688 } = attributes; 40689 return !content || content.length === 0 ? (0,external_wp_i18n_namespaceObject.__)('Empty') : content; 40690 } 40691 }, 40692 transforms: paragraph_transforms, 40693 deprecated: paragraph_deprecated, 40694 merge(attributes, attributesToMerge) { 40695 return { 40696 content: (attributes.content || '') + (attributesToMerge.content || '') 40697 }; 40698 }, 40699 edit: paragraph_edit, 40700 save: paragraph_save_save 40701 }; 40702 const paragraph_init = () => initBlock({ 40703 name: paragraph_name, 40704 metadata: paragraph_metadata, 40705 settings: paragraph_settings 40706 }); 40707 40708 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-author.js 40709 /** 40710 * WordPress dependencies 40711 */ 40712 40713 40714 const postAuthor = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 40715 viewBox: "0 0 24 24", 40716 xmlns: "http://www.w3.org/2000/svg", 40717 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 40718 d: "M10 4.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zm2.25 7.5v-1A2.75 2.75 0 0011 8.25H7A2.75 2.75 0 004.25 11v1h1.5v-1c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v1h1.5zM4 20h9v-1.5H4V20zm16-4H4v-1.5h16V16z", 40719 fillRule: "evenodd", 40720 clipRule: "evenodd" 40721 }) 40722 }); 40723 /* harmony default export */ const post_author = (postAuthor); 40724 40725 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-author/edit.js 40726 /** 40727 * External dependencies 40728 */ 40729 40730 40731 /** 40732 * WordPress dependencies 40733 */ 40734 40735 40736 40737 40738 40739 40740 40741 40742 const minimumUsersForCombobox = 25; 40743 const edit_AUTHORS_QUERY = { 40744 who: 'authors', 40745 per_page: 100 40746 }; 40747 function PostAuthorEdit({ 40748 isSelected, 40749 context: { 40750 postType, 40751 postId, 40752 queryId 40753 }, 40754 attributes, 40755 setAttributes 40756 }) { 40757 const isDescendentOfQueryLoop = Number.isFinite(queryId); 40758 const { 40759 authorId, 40760 authorDetails, 40761 authors 40762 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 40763 const { 40764 getEditedEntityRecord, 40765 getUser, 40766 getUsers 40767 } = select(external_wp_coreData_namespaceObject.store); 40768 const _authorId = getEditedEntityRecord('postType', postType, postId)?.author; 40769 return { 40770 authorId: _authorId, 40771 authorDetails: _authorId ? getUser(_authorId) : null, 40772 authors: getUsers(edit_AUTHORS_QUERY) 40773 }; 40774 }, [postType, postId]); 40775 const { 40776 editEntityRecord 40777 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 40778 const { 40779 textAlign, 40780 showAvatar, 40781 showBio, 40782 byline, 40783 isLink, 40784 linkTarget 40785 } = attributes; 40786 const avatarSizes = []; 40787 const authorName = authorDetails?.name || (0,external_wp_i18n_namespaceObject.__)('Post Author'); 40788 if (authorDetails?.avatar_urls) { 40789 Object.keys(authorDetails.avatar_urls).forEach(size => { 40790 avatarSizes.push({ 40791 value: size, 40792 label: `$size} x $size}` 40793 }); 40794 }); 40795 } 40796 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 40797 className: dist_clsx({ 40798 [`has-text-align-$textAlign}`]: textAlign 40799 }) 40800 }); 40801 const authorOptions = authors?.length ? authors.map(({ 40802 id, 40803 name 40804 }) => { 40805 return { 40806 value: id, 40807 label: name 40808 }; 40809 }) : []; 40810 const handleSelect = nextAuthorId => { 40811 editEntityRecord('postType', postType, postId, { 40812 author: nextAuthorId 40813 }); 40814 }; 40815 const showCombobox = authorOptions.length >= minimumUsersForCombobox; 40816 const showAuthorControl = !!postId && !isDescendentOfQueryLoop && authorOptions.length > 0; 40817 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 40818 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 40819 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 40820 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 40821 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { 40822 spacing: 4, 40823 className: "wp-block-post-author__inspector-settings", 40824 children: [showAuthorControl && (showCombobox && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ComboboxControl, { 40825 __next40pxDefaultSize: true, 40826 __nextHasNoMarginBottom: true, 40827 label: (0,external_wp_i18n_namespaceObject.__)('Author'), 40828 options: authorOptions, 40829 value: authorId, 40830 onChange: handleSelect, 40831 allowReset: false 40832 }) || /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 40833 __next40pxDefaultSize: true, 40834 __nextHasNoMarginBottom: true, 40835 label: (0,external_wp_i18n_namespaceObject.__)('Author'), 40836 value: authorId, 40837 options: authorOptions, 40838 onChange: handleSelect 40839 })), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 40840 __nextHasNoMarginBottom: true, 40841 label: (0,external_wp_i18n_namespaceObject.__)('Show avatar'), 40842 checked: showAvatar, 40843 onChange: () => setAttributes({ 40844 showAvatar: !showAvatar 40845 }) 40846 }), showAvatar && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 40847 __next40pxDefaultSize: true, 40848 __nextHasNoMarginBottom: true, 40849 label: (0,external_wp_i18n_namespaceObject.__)('Avatar size'), 40850 value: attributes.avatarSize, 40851 options: avatarSizes, 40852 onChange: size => { 40853 setAttributes({ 40854 avatarSize: Number(size) 40855 }); 40856 } 40857 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 40858 __nextHasNoMarginBottom: true, 40859 label: (0,external_wp_i18n_namespaceObject.__)('Show bio'), 40860 checked: showBio, 40861 onChange: () => setAttributes({ 40862 showBio: !showBio 40863 }) 40864 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 40865 __nextHasNoMarginBottom: true, 40866 label: (0,external_wp_i18n_namespaceObject.__)('Link author name to author page'), 40867 checked: isLink, 40868 onChange: () => setAttributes({ 40869 isLink: !isLink 40870 }) 40871 }), isLink && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 40872 __nextHasNoMarginBottom: true, 40873 label: (0,external_wp_i18n_namespaceObject.__)('Open in new tab'), 40874 onChange: value => setAttributes({ 40875 linkTarget: value ? '_blank' : '_self' 40876 }), 40877 checked: linkTarget === '_blank' 40878 })] 40879 }) 40880 }) 40881 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 40882 group: "block", 40883 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 40884 value: textAlign, 40885 onChange: nextAlign => { 40886 setAttributes({ 40887 textAlign: nextAlign 40888 }); 40889 } 40890 }) 40891 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 40892 ...blockProps, 40893 children: [showAvatar && authorDetails?.avatar_urls && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 40894 className: "wp-block-post-author__avatar", 40895 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 40896 width: attributes.avatarSize, 40897 src: authorDetails.avatar_urls[attributes.avatarSize], 40898 alt: authorDetails.name 40899 }) 40900 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 40901 className: "wp-block-post-author__content", 40902 children: [(!external_wp_blockEditor_namespaceObject.RichText.isEmpty(byline) || isSelected) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 40903 identifier: "byline", 40904 className: "wp-block-post-author__byline", 40905 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Post author byline text'), 40906 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write byline…'), 40907 value: byline, 40908 onChange: value => setAttributes({ 40909 byline: value 40910 }) 40911 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 40912 className: "wp-block-post-author__name", 40913 children: isLink ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 40914 href: "#post-author-pseudo-link", 40915 onClick: event => event.preventDefault(), 40916 children: authorName 40917 }) : authorName 40918 }), showBio && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 40919 className: "wp-block-post-author__bio", 40920 dangerouslySetInnerHTML: { 40921 __html: authorDetails?.description 40922 } 40923 })] 40924 })] 40925 })] 40926 }); 40927 } 40928 /* harmony default export */ const post_author_edit = (PostAuthorEdit); 40929 40930 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-author/index.js 40931 /** 40932 * WordPress dependencies 40933 */ 40934 40935 40936 40937 /** 40938 * Internal dependencies 40939 */ 40940 40941 const post_author_metadata = { 40942 $schema: "https://schemas.wp.org/trunk/block.json", 40943 apiVersion: 3, 40944 name: "core/post-author", 40945 title: "Author", 40946 category: "theme", 40947 description: "Display post author details such as name, avatar, and bio.", 40948 textdomain: "default", 40949 attributes: { 40950 textAlign: { 40951 type: "string" 40952 }, 40953 avatarSize: { 40954 type: "number", 40955 "default": 48 40956 }, 40957 showAvatar: { 40958 type: "boolean", 40959 "default": true 40960 }, 40961 showBio: { 40962 type: "boolean" 40963 }, 40964 byline: { 40965 type: "string" 40966 }, 40967 isLink: { 40968 type: "boolean", 40969 "default": false 40970 }, 40971 linkTarget: { 40972 type: "string", 40973 "default": "_self" 40974 } 40975 }, 40976 usesContext: ["postType", "postId", "queryId"], 40977 supports: { 40978 html: false, 40979 spacing: { 40980 margin: true, 40981 padding: true 40982 }, 40983 typography: { 40984 fontSize: true, 40985 lineHeight: true, 40986 __experimentalFontFamily: true, 40987 __experimentalFontWeight: true, 40988 __experimentalFontStyle: true, 40989 __experimentalTextTransform: true, 40990 __experimentalTextDecoration: true, 40991 __experimentalLetterSpacing: true, 40992 __experimentalDefaultControls: { 40993 fontSize: true 40994 } 40995 }, 40996 color: { 40997 gradients: true, 40998 link: true, 40999 __experimentalDuotone: ".wp-block-post-author__avatar img", 41000 __experimentalDefaultControls: { 41001 background: true, 41002 text: true 41003 } 41004 }, 41005 interactivity: { 41006 clientNavigation: true 41007 }, 41008 __experimentalBorder: { 41009 radius: true, 41010 color: true, 41011 width: true, 41012 style: true, 41013 __experimentalDefaultControls: { 41014 radius: true, 41015 color: true, 41016 width: true, 41017 style: true 41018 } 41019 } 41020 }, 41021 editorStyle: "wp-block-post-author-editor", 41022 style: "wp-block-post-author" 41023 }; 41024 41025 const { 41026 name: post_author_name 41027 } = post_author_metadata; 41028 41029 const post_author_settings = { 41030 icon: post_author, 41031 example: { 41032 viewportWidth: 350, 41033 attributes: { 41034 showBio: true, 41035 byline: (0,external_wp_i18n_namespaceObject.__)('Posted by') 41036 } 41037 }, 41038 edit: post_author_edit 41039 }; 41040 const post_author_init = () => initBlock({ 41041 name: post_author_name, 41042 metadata: post_author_metadata, 41043 settings: post_author_settings 41044 }); 41045 41046 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-author-name/edit.js 41047 /** 41048 * External dependencies 41049 */ 41050 41051 41052 /** 41053 * WordPress dependencies 41054 */ 41055 41056 41057 41058 41059 41060 41061 41062 41063 function PostAuthorNameEdit({ 41064 context: { 41065 postType, 41066 postId 41067 }, 41068 attributes: { 41069 textAlign, 41070 isLink, 41071 linkTarget 41072 }, 41073 setAttributes 41074 }) { 41075 const { 41076 authorName 41077 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 41078 const { 41079 getEditedEntityRecord, 41080 getUser 41081 } = select(external_wp_coreData_namespaceObject.store); 41082 const _authorId = getEditedEntityRecord('postType', postType, postId)?.author; 41083 return { 41084 authorName: _authorId ? getUser(_authorId) : null 41085 }; 41086 }, [postType, postId]); 41087 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 41088 className: dist_clsx({ 41089 [`has-text-align-$textAlign}`]: textAlign 41090 }) 41091 }); 41092 const displayName = authorName?.name || (0,external_wp_i18n_namespaceObject.__)('Author Name'); 41093 const displayAuthor = isLink ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 41094 href: "#author-pseudo-link", 41095 onClick: event => event.preventDefault(), 41096 className: "wp-block-post-author-name__link", 41097 children: displayName 41098 }) : displayName; 41099 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 41100 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 41101 group: "block", 41102 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 41103 value: textAlign, 41104 onChange: nextAlign => { 41105 setAttributes({ 41106 textAlign: nextAlign 41107 }); 41108 } 41109 }) 41110 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 41111 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 41112 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 41113 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 41114 __nextHasNoMarginBottom: true, 41115 label: (0,external_wp_i18n_namespaceObject.__)('Link to author archive'), 41116 onChange: () => setAttributes({ 41117 isLink: !isLink 41118 }), 41119 checked: isLink 41120 }), isLink && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 41121 __nextHasNoMarginBottom: true, 41122 label: (0,external_wp_i18n_namespaceObject.__)('Open in new tab'), 41123 onChange: value => setAttributes({ 41124 linkTarget: value ? '_blank' : '_self' 41125 }), 41126 checked: linkTarget === '_blank' 41127 })] 41128 }) 41129 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 41130 ...blockProps, 41131 children: [" ", displayAuthor, " "] 41132 })] 41133 }); 41134 } 41135 /* harmony default export */ const post_author_name_edit = (PostAuthorNameEdit); 41136 41137 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-author-name/transforms.js 41138 /** 41139 * WordPress dependencies 41140 */ 41141 41142 const post_author_name_transforms_transforms = { 41143 from: [{ 41144 type: 'block', 41145 blocks: ['core/post-author'], 41146 transform: ({ 41147 textAlign 41148 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/post-author-name', { 41149 textAlign 41150 }) 41151 }], 41152 to: [{ 41153 type: 'block', 41154 blocks: ['core/post-author'], 41155 transform: ({ 41156 textAlign 41157 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/post-author', { 41158 textAlign 41159 }) 41160 }] 41161 }; 41162 /* harmony default export */ const post_author_name_transforms = (post_author_name_transforms_transforms); 41163 41164 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-author-name/index.js 41165 /** 41166 * WordPress dependencies 41167 */ 41168 41169 41170 /** 41171 * Internal dependencies 41172 */ 41173 41174 const post_author_name_metadata = { 41175 $schema: "https://schemas.wp.org/trunk/block.json", 41176 apiVersion: 3, 41177 name: "core/post-author-name", 41178 title: "Author Name", 41179 category: "theme", 41180 description: "The author name.", 41181 textdomain: "default", 41182 attributes: { 41183 textAlign: { 41184 type: "string" 41185 }, 41186 isLink: { 41187 type: "boolean", 41188 "default": false 41189 }, 41190 linkTarget: { 41191 type: "string", 41192 "default": "_self" 41193 } 41194 }, 41195 usesContext: ["postType", "postId"], 41196 example: { 41197 viewportWidth: 350 41198 }, 41199 supports: { 41200 html: false, 41201 spacing: { 41202 margin: true, 41203 padding: true 41204 }, 41205 color: { 41206 gradients: true, 41207 link: true, 41208 __experimentalDefaultControls: { 41209 background: true, 41210 text: true, 41211 link: true 41212 } 41213 }, 41214 typography: { 41215 fontSize: true, 41216 lineHeight: true, 41217 __experimentalFontFamily: true, 41218 __experimentalFontWeight: true, 41219 __experimentalFontStyle: true, 41220 __experimentalTextTransform: true, 41221 __experimentalTextDecoration: true, 41222 __experimentalLetterSpacing: true, 41223 __experimentalDefaultControls: { 41224 fontSize: true 41225 } 41226 }, 41227 interactivity: { 41228 clientNavigation: true 41229 }, 41230 __experimentalBorder: { 41231 radius: true, 41232 color: true, 41233 width: true, 41234 style: true, 41235 __experimentalDefaultControls: { 41236 radius: true, 41237 color: true, 41238 width: true, 41239 style: true 41240 } 41241 } 41242 }, 41243 style: "wp-block-post-author-name" 41244 }; 41245 41246 41247 const { 41248 name: post_author_name_name 41249 } = post_author_name_metadata; 41250 41251 const post_author_name_settings = { 41252 icon: post_author, 41253 transforms: post_author_name_transforms, 41254 edit: post_author_name_edit 41255 }; 41256 const post_author_name_init = () => initBlock({ 41257 name: post_author_name_name, 41258 metadata: post_author_name_metadata, 41259 settings: post_author_name_settings 41260 }); 41261 41262 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-author-biography/edit.js 41263 /** 41264 * External dependencies 41265 */ 41266 41267 41268 /** 41269 * WordPress dependencies 41270 */ 41271 41272 41273 41274 41275 41276 41277 41278 function PostAuthorBiographyEdit({ 41279 context: { 41280 postType, 41281 postId 41282 }, 41283 attributes: { 41284 textAlign 41285 }, 41286 setAttributes 41287 }) { 41288 const { 41289 authorDetails 41290 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 41291 const { 41292 getEditedEntityRecord, 41293 getUser 41294 } = select(external_wp_coreData_namespaceObject.store); 41295 const _authorId = getEditedEntityRecord('postType', postType, postId)?.author; 41296 return { 41297 authorDetails: _authorId ? getUser(_authorId) : null 41298 }; 41299 }, [postType, postId]); 41300 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 41301 className: dist_clsx({ 41302 [`has-text-align-$textAlign}`]: textAlign 41303 }) 41304 }); 41305 const displayAuthorBiography = authorDetails?.description || (0,external_wp_i18n_namespaceObject.__)('Author Biography'); 41306 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 41307 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 41308 group: "block", 41309 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 41310 value: textAlign, 41311 onChange: nextAlign => { 41312 setAttributes({ 41313 textAlign: nextAlign 41314 }); 41315 } 41316 }) 41317 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 41318 ...blockProps, 41319 dangerouslySetInnerHTML: { 41320 __html: displayAuthorBiography 41321 } 41322 })] 41323 }); 41324 } 41325 /* harmony default export */ const post_author_biography_edit = (PostAuthorBiographyEdit); 41326 41327 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-author-biography/index.js 41328 /** 41329 * WordPress dependencies 41330 */ 41331 41332 41333 /** 41334 * Internal dependencies 41335 */ 41336 41337 const post_author_biography_metadata = { 41338 $schema: "https://schemas.wp.org/trunk/block.json", 41339 apiVersion: 3, 41340 name: "core/post-author-biography", 41341 title: "Author Biography", 41342 category: "theme", 41343 description: "The author biography.", 41344 textdomain: "default", 41345 attributes: { 41346 textAlign: { 41347 type: "string" 41348 } 41349 }, 41350 usesContext: ["postType", "postId"], 41351 example: { 41352 viewportWidth: 350 41353 }, 41354 supports: { 41355 spacing: { 41356 margin: true, 41357 padding: true 41358 }, 41359 color: { 41360 gradients: true, 41361 link: true, 41362 __experimentalDefaultControls: { 41363 background: true, 41364 text: true 41365 } 41366 }, 41367 typography: { 41368 fontSize: true, 41369 lineHeight: true, 41370 __experimentalFontFamily: true, 41371 __experimentalFontWeight: true, 41372 __experimentalFontStyle: true, 41373 __experimentalTextTransform: true, 41374 __experimentalTextDecoration: true, 41375 __experimentalLetterSpacing: true, 41376 __experimentalDefaultControls: { 41377 fontSize: true 41378 } 41379 }, 41380 interactivity: { 41381 clientNavigation: true 41382 }, 41383 __experimentalBorder: { 41384 radius: true, 41385 color: true, 41386 width: true, 41387 style: true, 41388 __experimentalDefaultControls: { 41389 radius: true, 41390 color: true, 41391 width: true, 41392 style: true 41393 } 41394 } 41395 }, 41396 style: "wp-block-post-author-biography" 41397 }; 41398 41399 const { 41400 name: post_author_biography_name 41401 } = post_author_biography_metadata; 41402 41403 const post_author_biography_settings = { 41404 icon: post_author, 41405 edit: post_author_biography_edit 41406 }; 41407 const post_author_biography_init = () => initBlock({ 41408 name: post_author_biography_name, 41409 metadata: post_author_biography_metadata, 41410 settings: post_author_biography_settings 41411 }); 41412 41413 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/block-default.js 41414 /** 41415 * WordPress dependencies 41416 */ 41417 41418 41419 const blockDefault = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 41420 xmlns: "http://www.w3.org/2000/svg", 41421 viewBox: "0 0 24 24", 41422 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 41423 d: "M19 8h-1V6h-5v2h-2V6H6v2H5c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2zm.5 10c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5v-8c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v8z" 41424 }) 41425 }); 41426 /* harmony default export */ const block_default = (blockDefault); 41427 41428 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-comment/edit.js 41429 /** 41430 * WordPress dependencies 41431 */ 41432 41433 41434 41435 41436 41437 41438 41439 const post_comment_edit_TEMPLATE = [['core/avatar'], ['core/comment-author-name'], ['core/comment-date'], ['core/comment-content'], ['core/comment-reply-link'], ['core/comment-edit-link']]; 41440 function post_comment_edit_Edit({ 41441 attributes: { 41442 commentId 41443 }, 41444 setAttributes 41445 }) { 41446 const [commentIdInput, setCommentIdInput] = (0,external_wp_element_namespaceObject.useState)(commentId); 41447 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 41448 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 41449 template: post_comment_edit_TEMPLATE 41450 }); 41451 if (!commentId) { 41452 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 41453 ...blockProps, 41454 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Placeholder, { 41455 icon: block_default, 41456 label: (0,external_wp_i18n_namespaceObject._x)('Post Comment', 'block title'), 41457 instructions: (0,external_wp_i18n_namespaceObject.__)('To show a comment, input the comment ID.'), 41458 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 41459 __next40pxDefaultSize: true, 41460 __nextHasNoMarginBottom: true, 41461 value: commentId, 41462 onChange: val => setCommentIdInput(parseInt(val)) 41463 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 41464 __next40pxDefaultSize: true, 41465 variant: "primary", 41466 onClick: () => { 41467 setAttributes({ 41468 commentId: commentIdInput 41469 }); 41470 }, 41471 children: (0,external_wp_i18n_namespaceObject.__)('Save') 41472 })] 41473 }) 41474 }); 41475 } 41476 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 41477 ...innerBlocksProps 41478 }); 41479 } 41480 41481 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-comment/save.js 41482 /** 41483 * WordPress dependencies 41484 */ 41485 41486 41487 function post_comment_save_save() { 41488 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save(); 41489 const innerBlocksProps = external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(blockProps); 41490 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 41491 ...innerBlocksProps 41492 }); 41493 } 41494 41495 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-comment/index.js 41496 /** 41497 * WordPress dependencies 41498 */ 41499 41500 41501 /** 41502 * Internal dependencies 41503 */ 41504 41505 const post_comment_metadata = { 41506 $schema: "https://schemas.wp.org/trunk/block.json", 41507 apiVersion: 3, 41508 __experimental: "fse", 41509 name: "core/post-comment", 41510 title: "Comment (deprecated)", 41511 category: "theme", 41512 allowedBlocks: ["core/avatar", "core/comment-author-name", "core/comment-content", "core/comment-date", "core/comment-edit-link", "core/comment-reply-link"], 41513 description: "This block is deprecated. Please use the Comments block instead.", 41514 textdomain: "default", 41515 attributes: { 41516 commentId: { 41517 type: "number" 41518 } 41519 }, 41520 providesContext: { 41521 commentId: "commentId" 41522 }, 41523 supports: { 41524 html: false, 41525 inserter: false, 41526 interactivity: { 41527 clientNavigation: true 41528 } 41529 } 41530 }; 41531 41532 41533 const { 41534 name: post_comment_name 41535 } = post_comment_metadata; 41536 41537 const post_comment_settings = { 41538 icon: library_comment, 41539 edit: post_comment_edit_Edit, 41540 save: post_comment_save_save 41541 }; 41542 const post_comment_init = () => initBlock({ 41543 name: post_comment_name, 41544 metadata: post_comment_metadata, 41545 settings: post_comment_settings 41546 }); 41547 41548 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-comments-count.js 41549 /** 41550 * WordPress dependencies 41551 */ 41552 41553 41554 const postCommentsCount = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 41555 xmlns: "http://www.w3.org/2000/svg", 41556 viewBox: "0 0 24 24", 41557 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 41558 d: "M13 8H4v1.5h9V8zM4 4v1.5h16V4H4zm9 8H5c-.6 0-1 .4-1 1v8.3c0 .3.2.7.6.8.1.1.2.1.3.1.2 0 .5-.1.6-.3l1.8-1.8H13c.6 0 1-.4 1-1V13c0-.6-.4-1-1-1zm-2.2 6.6H7l1.6-2.2c.3-.4.5-.7.6-.9.1-.2.2-.4.2-.5 0-.2-.1-.3-.1-.4-.1-.1-.2-.1-.4-.1s-.4 0-.6.1c-.3.1-.5.3-.7.4l-.2.2-.2-1.2.1-.1c.3-.2.5-.3.8-.4.3-.1.6-.1.9-.1.3 0 .6.1.9.2.2.1.4.3.6.5.1.2.2.5.2.7 0 .3-.1.6-.2.9-.1.3-.4.7-.7 1.1l-.5.6h1.6v1.2z" 41559 }) 41560 }); 41561 /* harmony default export */ const post_comments_count = (postCommentsCount); 41562 41563 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-comments-count/edit.js 41564 /** 41565 * External dependencies 41566 */ 41567 41568 41569 /** 41570 * WordPress dependencies 41571 */ 41572 41573 41574 41575 41576 41577 41578 41579 41580 function PostCommentsCountEdit({ 41581 attributes, 41582 context, 41583 setAttributes 41584 }) { 41585 const { 41586 textAlign 41587 } = attributes; 41588 const { 41589 postId 41590 } = context; 41591 const [commentsCount, setCommentsCount] = (0,external_wp_element_namespaceObject.useState)(); 41592 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 41593 className: dist_clsx({ 41594 [`has-text-align-$textAlign}`]: textAlign 41595 }) 41596 }); 41597 (0,external_wp_element_namespaceObject.useEffect)(() => { 41598 if (!postId) { 41599 return; 41600 } 41601 const currentPostId = postId; 41602 external_wp_apiFetch_default()({ 41603 path: (0,external_wp_url_namespaceObject.addQueryArgs)('/wp/v2/comments', { 41604 post: postId 41605 }), 41606 parse: false 41607 }).then(res => { 41608 // Stale requests will have the `currentPostId` of an older closure. 41609 if (currentPostId === postId) { 41610 setCommentsCount(res.headers.get('X-WP-Total')); 41611 } 41612 }); 41613 }, [postId]); 41614 const hasPostAndComments = postId && commentsCount !== undefined; 41615 const blockStyles = { 41616 ...blockProps.style, 41617 textDecoration: hasPostAndComments ? blockProps.style?.textDecoration : undefined 41618 }; 41619 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 41620 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 41621 group: "block", 41622 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 41623 value: textAlign, 41624 onChange: nextAlign => { 41625 setAttributes({ 41626 textAlign: nextAlign 41627 }); 41628 } 41629 }) 41630 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 41631 ...blockProps, 41632 style: blockStyles, 41633 children: hasPostAndComments ? commentsCount : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 41634 children: (0,external_wp_i18n_namespaceObject.__)('Post Comments Count block: post not found.') 41635 }) 41636 })] 41637 }); 41638 } 41639 41640 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-comments-count/index.js 41641 /** 41642 * WordPress dependencies 41643 */ 41644 41645 41646 /** 41647 * Internal dependencies 41648 */ 41649 41650 const post_comments_count_metadata = { 41651 $schema: "https://schemas.wp.org/trunk/block.json", 41652 apiVersion: 3, 41653 __experimental: "fse", 41654 name: "core/post-comments-count", 41655 title: "Comments Count", 41656 category: "theme", 41657 description: "Display a post's comments count.", 41658 textdomain: "default", 41659 attributes: { 41660 textAlign: { 41661 type: "string" 41662 } 41663 }, 41664 usesContext: ["postId"], 41665 supports: { 41666 html: false, 41667 color: { 41668 gradients: true, 41669 __experimentalDefaultControls: { 41670 background: true, 41671 text: true 41672 } 41673 }, 41674 spacing: { 41675 margin: true, 41676 padding: true 41677 }, 41678 typography: { 41679 fontSize: true, 41680 lineHeight: true, 41681 __experimentalFontFamily: true, 41682 __experimentalFontWeight: true, 41683 __experimentalFontStyle: true, 41684 __experimentalTextTransform: true, 41685 __experimentalTextDecoration: true, 41686 __experimentalLetterSpacing: true, 41687 __experimentalDefaultControls: { 41688 fontSize: true 41689 } 41690 }, 41691 interactivity: { 41692 clientNavigation: true 41693 } 41694 } 41695 }; 41696 41697 const { 41698 name: post_comments_count_name 41699 } = post_comments_count_metadata; 41700 41701 const post_comments_count_settings = { 41702 icon: post_comments_count, 41703 edit: PostCommentsCountEdit 41704 }; 41705 const post_comments_count_init = () => initBlock({ 41706 name: post_comments_count_name, 41707 metadata: post_comments_count_metadata, 41708 settings: post_comments_count_settings 41709 }); 41710 41711 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-comments-form.js 41712 /** 41713 * WordPress dependencies 41714 */ 41715 41716 41717 const postCommentsForm = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 41718 xmlns: "http://www.w3.org/2000/svg", 41719 viewBox: "0 0 24 24", 41720 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 41721 d: "M13 8H4v1.5h9V8zM4 4v1.5h16V4H4zm9 8H5c-.6 0-1 .4-1 1v8.3c0 .3.2.7.6.8.1.1.2.1.3.1.2 0 .5-.1.6-.3l1.8-1.8H13c.6 0 1-.4 1-1V13c0-.6-.4-1-1-1zm-.5 6.6H6.7l-1.2 1.2v-6.3h7v5.1z" 41722 }) 41723 }); 41724 /* harmony default export */ const post_comments_form = (postCommentsForm); 41725 41726 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-comments-form/edit.js 41727 /** 41728 * External dependencies 41729 */ 41730 41731 41732 /** 41733 * WordPress dependencies 41734 */ 41735 41736 41737 41738 41739 41740 /** 41741 * Internal dependencies 41742 */ 41743 41744 41745 41746 41747 function PostCommentsFormEdit({ 41748 attributes, 41749 context, 41750 setAttributes 41751 }) { 41752 const { 41753 textAlign 41754 } = attributes; 41755 const { 41756 postId, 41757 postType 41758 } = context; 41759 const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(PostCommentsFormEdit); 41760 const instanceIdDesc = (0,external_wp_i18n_namespaceObject.sprintf)('comments-form-edit-%d-desc', instanceId); 41761 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 41762 className: dist_clsx({ 41763 [`has-text-align-$textAlign}`]: textAlign 41764 }), 41765 'aria-describedby': instanceIdDesc 41766 }); 41767 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 41768 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 41769 group: "block", 41770 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 41771 value: textAlign, 41772 onChange: nextAlign => { 41773 setAttributes({ 41774 textAlign: nextAlign 41775 }); 41776 } 41777 }) 41778 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 41779 ...blockProps, 41780 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(post_comments_form_form, { 41781 postId: postId, 41782 postType: postType 41783 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, { 41784 id: instanceIdDesc, 41785 children: (0,external_wp_i18n_namespaceObject.__)('Comments form disabled in editor.') 41786 })] 41787 })] 41788 }); 41789 } 41790 41791 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-comments-form/index.js 41792 /** 41793 * WordPress dependencies 41794 */ 41795 41796 41797 /** 41798 * Internal dependencies 41799 */ 41800 41801 const post_comments_form_metadata = { 41802 $schema: "https://schemas.wp.org/trunk/block.json", 41803 apiVersion: 3, 41804 name: "core/post-comments-form", 41805 title: "Comments Form", 41806 category: "theme", 41807 description: "Display a post's comments form.", 41808 textdomain: "default", 41809 attributes: { 41810 textAlign: { 41811 type: "string" 41812 } 41813 }, 41814 usesContext: ["postId", "postType"], 41815 supports: { 41816 html: false, 41817 color: { 41818 gradients: true, 41819 heading: true, 41820 link: true, 41821 __experimentalDefaultControls: { 41822 background: true, 41823 text: true 41824 } 41825 }, 41826 spacing: { 41827 margin: true, 41828 padding: true 41829 }, 41830 typography: { 41831 fontSize: true, 41832 lineHeight: true, 41833 __experimentalFontStyle: true, 41834 __experimentalFontWeight: true, 41835 __experimentalLetterSpacing: true, 41836 __experimentalTextTransform: true, 41837 __experimentalDefaultControls: { 41838 fontSize: true 41839 } 41840 }, 41841 __experimentalBorder: { 41842 radius: true, 41843 color: true, 41844 width: true, 41845 style: true, 41846 __experimentalDefaultControls: { 41847 radius: true, 41848 color: true, 41849 width: true, 41850 style: true 41851 } 41852 } 41853 }, 41854 editorStyle: "wp-block-post-comments-form-editor", 41855 style: ["wp-block-post-comments-form", "wp-block-buttons", "wp-block-button"] 41856 }; 41857 41858 const { 41859 name: post_comments_form_name 41860 } = post_comments_form_metadata; 41861 41862 const post_comments_form_settings = { 41863 icon: post_comments_form, 41864 edit: PostCommentsFormEdit 41865 }; 41866 const post_comments_form_init = () => initBlock({ 41867 name: post_comments_form_name, 41868 metadata: post_comments_form_metadata, 41869 settings: post_comments_form_settings 41870 }); 41871 41872 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-comments-link/edit.js 41873 /** 41874 * External dependencies 41875 */ 41876 41877 41878 /** 41879 * WordPress dependencies 41880 */ 41881 41882 41883 41884 41885 41886 41887 41888 41889 41890 41891 function PostCommentsLinkEdit({ 41892 context, 41893 attributes, 41894 setAttributes 41895 }) { 41896 const { 41897 textAlign 41898 } = attributes; 41899 const { 41900 postType, 41901 postId 41902 } = context; 41903 const [commentsCount, setCommentsCount] = (0,external_wp_element_namespaceObject.useState)(); 41904 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 41905 className: dist_clsx({ 41906 [`has-text-align-$textAlign}`]: textAlign 41907 }) 41908 }); 41909 (0,external_wp_element_namespaceObject.useEffect)(() => { 41910 if (!postId) { 41911 return; 41912 } 41913 const currentPostId = postId; 41914 external_wp_apiFetch_default()({ 41915 path: (0,external_wp_url_namespaceObject.addQueryArgs)('/wp/v2/comments', { 41916 post: postId 41917 }), 41918 parse: false 41919 }).then(res => { 41920 // Stale requests will have the `currentPostId` of an older closure. 41921 if (currentPostId === postId) { 41922 setCommentsCount(res.headers.get('X-WP-Total')); 41923 } 41924 }); 41925 }, [postId]); 41926 const post = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('postType', postType, postId), [postType, postId]); 41927 if (!post) { 41928 return null; 41929 } 41930 const { 41931 link 41932 } = post; 41933 let commentsText; 41934 if (commentsCount !== undefined) { 41935 const commentsNumber = parseInt(commentsCount); 41936 if (commentsNumber === 0) { 41937 commentsText = (0,external_wp_i18n_namespaceObject.__)('No comments'); 41938 } else { 41939 commentsText = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: Number of comments */ 41940 (0,external_wp_i18n_namespaceObject._n)('%s comment', '%s comments', commentsNumber), commentsNumber.toLocaleString()); 41941 } 41942 } 41943 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 41944 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 41945 group: "block", 41946 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 41947 value: textAlign, 41948 onChange: nextAlign => { 41949 setAttributes({ 41950 textAlign: nextAlign 41951 }); 41952 } 41953 }) 41954 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 41955 ...blockProps, 41956 children: link && commentsText !== undefined ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 41957 href: link + '#comments', 41958 onClick: event => event.preventDefault(), 41959 children: commentsText 41960 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 41961 children: (0,external_wp_i18n_namespaceObject.__)('Post Comments Link block: post not found.') 41962 }) 41963 })] 41964 }); 41965 } 41966 /* harmony default export */ const post_comments_link_edit = (PostCommentsLinkEdit); 41967 41968 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-comments-link/index.js 41969 /** 41970 * WordPress dependencies 41971 */ 41972 41973 41974 /** 41975 * Internal dependencies 41976 */ 41977 41978 const post_comments_link_metadata = { 41979 $schema: "https://schemas.wp.org/trunk/block.json", 41980 apiVersion: 3, 41981 __experimental: "fse", 41982 name: "core/post-comments-link", 41983 title: "Comments Link", 41984 category: "theme", 41985 description: "Displays the link to the current post comments.", 41986 textdomain: "default", 41987 usesContext: ["postType", "postId"], 41988 attributes: { 41989 textAlign: { 41990 type: "string" 41991 } 41992 }, 41993 supports: { 41994 html: false, 41995 color: { 41996 link: true, 41997 text: false, 41998 __experimentalDefaultControls: { 41999 background: true, 42000 link: true 42001 } 42002 }, 42003 spacing: { 42004 margin: true, 42005 padding: true 42006 }, 42007 typography: { 42008 fontSize: true, 42009 lineHeight: true, 42010 __experimentalFontFamily: true, 42011 __experimentalFontWeight: true, 42012 __experimentalFontStyle: true, 42013 __experimentalTextTransform: true, 42014 __experimentalTextDecoration: true, 42015 __experimentalLetterSpacing: true, 42016 __experimentalDefaultControls: { 42017 fontSize: true 42018 } 42019 }, 42020 interactivity: { 42021 clientNavigation: true 42022 } 42023 } 42024 }; 42025 42026 const { 42027 name: post_comments_link_name 42028 } = post_comments_link_metadata; 42029 42030 const post_comments_link_settings = { 42031 edit: post_comments_link_edit, 42032 icon: post_comments_count 42033 }; 42034 const post_comments_link_init = () => initBlock({ 42035 name: post_comments_link_name, 42036 metadata: post_comments_link_metadata, 42037 settings: post_comments_link_settings 42038 }); 42039 42040 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-content.js 42041 /** 42042 * WordPress dependencies 42043 */ 42044 42045 42046 const postContent = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 42047 xmlns: "http://www.w3.org/2000/svg", 42048 viewBox: "0 0 24 24", 42049 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 42050 d: "M4 6h12V4.5H4V6Zm16 4.5H4V9h16v1.5ZM4 15h16v-1.5H4V15Zm0 4.5h16V18H4v1.5Z" 42051 }) 42052 }); 42053 /* harmony default export */ const post_content = (postContent); 42054 42055 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-content/edit.js 42056 /** 42057 * WordPress dependencies 42058 */ 42059 42060 42061 42062 42063 42064 42065 42066 /** 42067 * Internal dependencies 42068 */ 42069 42070 42071 42072 function ReadOnlyContent({ 42073 parentLayout, 42074 layoutClassNames, 42075 userCanEdit, 42076 postType, 42077 postId 42078 }) { 42079 const [,, content] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postType, 'content', postId); 42080 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 42081 className: layoutClassNames 42082 }); 42083 const blocks = (0,external_wp_element_namespaceObject.useMemo)(() => { 42084 return content?.raw ? (0,external_wp_blocks_namespaceObject.parse)(content.raw) : []; 42085 }, [content?.raw]); 42086 const blockPreviewProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseBlockPreview)({ 42087 blocks, 42088 props: blockProps, 42089 layout: parentLayout 42090 }); 42091 if (userCanEdit) { 42092 /* 42093 * Rendering the block preview using the raw content blocks allows for 42094 * block support styles to be generated and applied by the editor. 42095 * 42096 * The preview using the raw blocks can only be presented to users with 42097 * edit permissions for the post to prevent potential exposure of private 42098 * block content. 42099 */ 42100 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 42101 ...blockPreviewProps 42102 }); 42103 } 42104 return content?.protected ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 42105 ...blockProps, 42106 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 42107 children: (0,external_wp_i18n_namespaceObject.__)('This content is password protected.') 42108 }) 42109 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 42110 ...blockProps, 42111 dangerouslySetInnerHTML: { 42112 __html: content?.rendered 42113 } 42114 }); 42115 } 42116 function EditableContent({ 42117 context = {} 42118 }) { 42119 const { 42120 postType, 42121 postId 42122 } = context; 42123 const [blocks, onInput, onChange] = (0,external_wp_coreData_namespaceObject.useEntityBlockEditor)('postType', postType, { 42124 id: postId 42125 }); 42126 const entityRecord = (0,external_wp_data_namespaceObject.useSelect)(select => { 42127 return select(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', postType, postId); 42128 }, [postType, postId]); 42129 const hasInnerBlocks = !!entityRecord?.content?.raw || blocks?.length; 42130 const initialInnerBlocks = [['core/paragraph']]; 42131 const props = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)((0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 42132 className: 'entry-content' 42133 }), { 42134 value: blocks, 42135 onInput, 42136 onChange, 42137 template: !hasInnerBlocks ? initialInnerBlocks : undefined 42138 }); 42139 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 42140 ...props 42141 }); 42142 } 42143 function Content(props) { 42144 const { 42145 context: { 42146 queryId, 42147 postType, 42148 postId 42149 } = {}, 42150 layoutClassNames 42151 } = props; 42152 const userCanEdit = useCanEditEntity('postType', postType, postId); 42153 if (userCanEdit === undefined) { 42154 return null; 42155 } 42156 const isDescendentOfQueryLoop = Number.isFinite(queryId); 42157 const isEditable = userCanEdit && !isDescendentOfQueryLoop; 42158 return isEditable ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditableContent, { 42159 ...props 42160 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ReadOnlyContent, { 42161 parentLayout: props.parentLayout, 42162 layoutClassNames: layoutClassNames, 42163 userCanEdit: userCanEdit, 42164 postType: postType, 42165 postId: postId 42166 }); 42167 } 42168 function edit_Placeholder({ 42169 layoutClassNames 42170 }) { 42171 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 42172 className: layoutClassNames 42173 }); 42174 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 42175 ...blockProps, 42176 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 42177 children: (0,external_wp_i18n_namespaceObject.__)('This is the Content block, it will display all the blocks in any single post or page.') 42178 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 42179 children: (0,external_wp_i18n_namespaceObject.__)('That might be a simple arrangement like consecutive paragraphs in a blog post, or a more elaborate composition that includes image galleries, videos, tables, columns, and any other block types.') 42180 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 42181 children: (0,external_wp_i18n_namespaceObject.__)('If there are any Custom Post Types registered at your site, the Content block can display the contents of those entries as well.') 42182 })] 42183 }); 42184 } 42185 function RecursionError() { 42186 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 42187 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 42188 ...blockProps, 42189 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 42190 children: (0,external_wp_i18n_namespaceObject.__)('Block cannot be rendered inside itself.') 42191 }) 42192 }); 42193 } 42194 function PostContentEdit({ 42195 context, 42196 __unstableLayoutClassNames: layoutClassNames, 42197 __unstableParentLayout: parentLayout 42198 }) { 42199 const { 42200 postId: contextPostId, 42201 postType: contextPostType 42202 } = context; 42203 const hasAlreadyRendered = (0,external_wp_blockEditor_namespaceObject.useHasRecursion)(contextPostId); 42204 if (contextPostId && contextPostType && hasAlreadyRendered) { 42205 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RecursionError, {}); 42206 } 42207 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RecursionProvider, { 42208 uniqueId: contextPostId, 42209 children: contextPostId && contextPostType ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Content, { 42210 context: context, 42211 parentLayout: parentLayout, 42212 layoutClassNames: layoutClassNames 42213 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(edit_Placeholder, { 42214 layoutClassNames: layoutClassNames 42215 }) 42216 }); 42217 } 42218 42219 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-content/index.js 42220 /** 42221 * WordPress dependencies 42222 */ 42223 42224 42225 /** 42226 * Internal dependencies 42227 */ 42228 42229 const post_content_metadata = { 42230 $schema: "https://schemas.wp.org/trunk/block.json", 42231 apiVersion: 3, 42232 name: "core/post-content", 42233 title: "Content", 42234 category: "theme", 42235 description: "Displays the contents of a post or page.", 42236 textdomain: "default", 42237 usesContext: ["postId", "postType", "queryId"], 42238 example: { 42239 viewportWidth: 350 42240 }, 42241 supports: { 42242 align: ["wide", "full"], 42243 html: false, 42244 layout: true, 42245 background: { 42246 backgroundImage: true, 42247 backgroundSize: true, 42248 __experimentalDefaultControls: { 42249 backgroundImage: true 42250 } 42251 }, 42252 dimensions: { 42253 minHeight: true 42254 }, 42255 spacing: { 42256 blockGap: true, 42257 padding: true, 42258 __experimentalDefaultControls: { 42259 margin: false, 42260 padding: false 42261 } 42262 }, 42263 color: { 42264 gradients: true, 42265 link: true, 42266 __experimentalDefaultControls: { 42267 background: false, 42268 text: false 42269 } 42270 }, 42271 typography: { 42272 fontSize: true, 42273 lineHeight: true, 42274 __experimentalFontFamily: true, 42275 __experimentalFontWeight: true, 42276 __experimentalFontStyle: true, 42277 __experimentalTextTransform: true, 42278 __experimentalTextDecoration: true, 42279 __experimentalLetterSpacing: true, 42280 __experimentalDefaultControls: { 42281 fontSize: true 42282 } 42283 } 42284 }, 42285 style: "wp-block-post-content", 42286 editorStyle: "wp-block-post-content-editor" 42287 }; 42288 42289 const { 42290 name: post_content_name 42291 } = post_content_metadata; 42292 42293 const post_content_settings = { 42294 icon: post_content, 42295 edit: PostContentEdit 42296 }; 42297 const post_content_init = () => initBlock({ 42298 name: post_content_name, 42299 metadata: post_content_metadata, 42300 settings: post_content_settings 42301 }); 42302 42303 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-date/edit.js 42304 /** 42305 * External dependencies 42306 */ 42307 42308 42309 /** 42310 * WordPress dependencies 42311 */ 42312 42313 42314 42315 42316 42317 42318 42319 42320 42321 42322 42323 42324 function PostDateEdit({ 42325 attributes: { 42326 textAlign, 42327 format, 42328 isLink, 42329 displayType 42330 }, 42331 context: { 42332 postId, 42333 postType: postTypeSlug, 42334 queryId 42335 }, 42336 setAttributes 42337 }) { 42338 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 42339 className: dist_clsx({ 42340 [`has-text-align-$textAlign}`]: textAlign, 42341 [`wp-block-post-date__modified-date`]: displayType === 'modified' 42342 }) 42343 }); 42344 42345 // Use internal state instead of a ref to make sure that the component 42346 // re-renders when the popover's anchor updates. 42347 const [popoverAnchor, setPopoverAnchor] = (0,external_wp_element_namespaceObject.useState)(null); 42348 // Memoize popoverProps to avoid returning a new object every time. 42349 const popoverProps = (0,external_wp_element_namespaceObject.useMemo)(() => ({ 42350 anchor: popoverAnchor 42351 }), [popoverAnchor]); 42352 const isDescendentOfQueryLoop = Number.isFinite(queryId); 42353 const dateSettings = (0,external_wp_date_namespaceObject.getSettings)(); 42354 const [siteFormat = dateSettings.formats.date] = (0,external_wp_coreData_namespaceObject.useEntityProp)('root', 'site', 'date_format'); 42355 const [siteTimeFormat = dateSettings.formats.time] = (0,external_wp_coreData_namespaceObject.useEntityProp)('root', 'site', 'time_format'); 42356 const [date, setDate] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postTypeSlug, displayType, postId); 42357 const postType = (0,external_wp_data_namespaceObject.useSelect)(select => postTypeSlug ? select(external_wp_coreData_namespaceObject.store).getPostType(postTypeSlug) : null, [postTypeSlug]); 42358 const dateLabel = displayType === 'date' ? (0,external_wp_i18n_namespaceObject.__)('Post Date') : (0,external_wp_i18n_namespaceObject.__)('Post Modified Date'); 42359 let postDate = date ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", { 42360 dateTime: (0,external_wp_date_namespaceObject.dateI18n)('c', date), 42361 ref: setPopoverAnchor, 42362 children: format === 'human-diff' ? (0,external_wp_date_namespaceObject.humanTimeDiff)(date) : (0,external_wp_date_namespaceObject.dateI18n)(format || siteFormat, date) 42363 }) : dateLabel; 42364 if (isLink && date) { 42365 postDate = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 42366 href: "#post-date-pseudo-link", 42367 onClick: event => event.preventDefault(), 42368 children: postDate 42369 }); 42370 } 42371 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 42372 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 42373 group: "block", 42374 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 42375 value: textAlign, 42376 onChange: nextAlign => { 42377 setAttributes({ 42378 textAlign: nextAlign 42379 }); 42380 } 42381 }), date && displayType === 'date' && !isDescendentOfQueryLoop && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 42382 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Dropdown, { 42383 popoverProps: popoverProps, 42384 renderContent: ({ 42385 onClose 42386 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalPublishDateTimePicker, { 42387 currentDate: date, 42388 onChange: setDate, 42389 is12Hour: is12HourFormat(siteTimeFormat), 42390 onClose: onClose, 42391 dateOrder: /* translators: Order of day, month, and year. Available formats are 'dmy', 'mdy', and 'ymd'. */ 42392 (0,external_wp_i18n_namespaceObject._x)('dmy', 'date order') 42393 }), 42394 renderToggle: ({ 42395 isOpen, 42396 onToggle 42397 }) => { 42398 const openOnArrowDown = event => { 42399 if (!isOpen && event.keyCode === external_wp_keycodes_namespaceObject.DOWN) { 42400 event.preventDefault(); 42401 onToggle(); 42402 } 42403 }; 42404 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 42405 "aria-expanded": isOpen, 42406 icon: library_edit, 42407 title: (0,external_wp_i18n_namespaceObject.__)('Change Date'), 42408 onClick: onToggle, 42409 onKeyDown: openOnArrowDown 42410 }); 42411 } 42412 }) 42413 })] 42414 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 42415 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 42416 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 42417 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalDateFormatPicker, { 42418 format: format, 42419 defaultFormat: siteFormat, 42420 onChange: nextFormat => setAttributes({ 42421 format: nextFormat 42422 }) 42423 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 42424 __nextHasNoMarginBottom: true, 42425 label: postType?.labels.singular_name ? (0,external_wp_i18n_namespaceObject.sprintf)( 42426 // translators: %s: Name of the post type e.g: "post". 42427 (0,external_wp_i18n_namespaceObject.__)('Link to %s'), postType.labels.singular_name.toLowerCase()) : (0,external_wp_i18n_namespaceObject.__)('Link to post'), 42428 onChange: () => setAttributes({ 42429 isLink: !isLink 42430 }), 42431 checked: isLink 42432 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 42433 __nextHasNoMarginBottom: true, 42434 label: (0,external_wp_i18n_namespaceObject.__)('Display last modified date'), 42435 onChange: value => setAttributes({ 42436 displayType: value ? 'modified' : 'date' 42437 }), 42438 checked: displayType === 'modified', 42439 help: (0,external_wp_i18n_namespaceObject.__)('Only shows if the post has been modified') 42440 })] 42441 }) 42442 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 42443 ...blockProps, 42444 children: postDate 42445 })] 42446 }); 42447 } 42448 function is12HourFormat(format) { 42449 // To know if the time format is a 12 hour time, look for any of the 12 hour 42450 // format characters: 'a', 'A', 'g', and 'h'. The character must be 42451 // unescaped, i.e. not preceded by a '\'. Coincidentally, 'aAgh' is how I 42452 // feel when working with regular expressions. 42453 // https://www.php.net/manual/en/datetime.format.php 42454 return /(?:^|[^\\])[aAgh]/.test(format); 42455 } 42456 42457 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-date/deprecated.js 42458 /** 42459 * Internal dependencies 42460 */ 42461 42462 const post_date_deprecated_v1 = { 42463 attributes: { 42464 textAlign: { 42465 type: 'string' 42466 }, 42467 format: { 42468 type: 'string' 42469 }, 42470 isLink: { 42471 type: 'boolean', 42472 default: false 42473 } 42474 }, 42475 supports: { 42476 html: false, 42477 color: { 42478 gradients: true, 42479 link: true 42480 }, 42481 typography: { 42482 fontSize: true, 42483 lineHeight: true, 42484 __experimentalFontFamily: true, 42485 __experimentalFontWeight: true, 42486 __experimentalFontStyle: true, 42487 __experimentalTextTransform: true, 42488 __experimentalLetterSpacing: true 42489 } 42490 }, 42491 save() { 42492 return null; 42493 }, 42494 migrate: migrate_font_family, 42495 isEligible({ 42496 style 42497 }) { 42498 return style?.typography?.fontFamily; 42499 } 42500 }; 42501 42502 /** 42503 * New deprecations need to be placed first 42504 * for them to have higher priority. 42505 * 42506 * Old deprecations may need to be updated as well. 42507 * 42508 * See block-deprecation.md 42509 */ 42510 /* harmony default export */ const post_date_deprecated = ([post_date_deprecated_v1]); 42511 42512 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-date/variations.js 42513 /** 42514 * WordPress dependencies 42515 */ 42516 42517 42518 const post_date_variations_variations = [{ 42519 name: 'post-date-modified', 42520 title: (0,external_wp_i18n_namespaceObject.__)('Modified Date'), 42521 description: (0,external_wp_i18n_namespaceObject.__)("Display a post's last updated date."), 42522 attributes: { 42523 displayType: 'modified' 42524 }, 42525 scope: ['block', 'inserter'], 42526 isActive: blockAttributes => blockAttributes.displayType === 'modified', 42527 icon: post_date 42528 }]; 42529 /* harmony default export */ const post_date_variations = (post_date_variations_variations); 42530 42531 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-date/index.js 42532 /** 42533 * WordPress dependencies 42534 */ 42535 42536 42537 /** 42538 * Internal dependencies 42539 */ 42540 42541 const post_date_metadata = { 42542 $schema: "https://schemas.wp.org/trunk/block.json", 42543 apiVersion: 3, 42544 name: "core/post-date", 42545 title: "Date", 42546 category: "theme", 42547 description: "Display the publish date for an entry such as a post or page.", 42548 textdomain: "default", 42549 attributes: { 42550 textAlign: { 42551 type: "string" 42552 }, 42553 format: { 42554 type: "string" 42555 }, 42556 isLink: { 42557 type: "boolean", 42558 "default": false 42559 }, 42560 displayType: { 42561 type: "string", 42562 "default": "date" 42563 } 42564 }, 42565 usesContext: ["postId", "postType", "queryId"], 42566 example: { 42567 viewportWidth: 350 42568 }, 42569 supports: { 42570 html: false, 42571 color: { 42572 gradients: true, 42573 link: true, 42574 __experimentalDefaultControls: { 42575 background: true, 42576 text: true, 42577 link: true 42578 } 42579 }, 42580 spacing: { 42581 margin: true, 42582 padding: true 42583 }, 42584 typography: { 42585 fontSize: true, 42586 lineHeight: true, 42587 __experimentalFontFamily: true, 42588 __experimentalFontWeight: true, 42589 __experimentalFontStyle: true, 42590 __experimentalTextTransform: true, 42591 __experimentalTextDecoration: true, 42592 __experimentalLetterSpacing: true, 42593 __experimentalDefaultControls: { 42594 fontSize: true 42595 } 42596 }, 42597 interactivity: { 42598 clientNavigation: true 42599 }, 42600 __experimentalBorder: { 42601 radius: true, 42602 color: true, 42603 width: true, 42604 style: true, 42605 __experimentalDefaultControls: { 42606 radius: true, 42607 color: true, 42608 width: true, 42609 style: true 42610 } 42611 } 42612 } 42613 }; 42614 42615 42616 42617 const { 42618 name: post_date_name 42619 } = post_date_metadata; 42620 42621 const post_date_settings = { 42622 icon: post_date, 42623 edit: PostDateEdit, 42624 deprecated: post_date_deprecated, 42625 variations: post_date_variations 42626 }; 42627 const post_date_init = () => initBlock({ 42628 name: post_date_name, 42629 metadata: post_date_metadata, 42630 settings: post_date_settings 42631 }); 42632 42633 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-excerpt.js 42634 /** 42635 * WordPress dependencies 42636 */ 42637 42638 42639 const postExcerpt = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 42640 xmlns: "http://www.w3.org/2000/svg", 42641 viewBox: "0 0 24 24", 42642 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 42643 d: "M8.001 3.984V9.47c0 1.518-.98 2.5-2.499 2.5h-.5v-1.5h.5c.69 0 1-.31 1-1V6.984H4v-3h4.001ZM4 20h9v-1.5H4V20Zm16-4H4v-1.5h16V16ZM13.001 3.984V9.47c0 1.518-.98 2.5-2.499 2.5h-.5v-1.5h.5c.69 0 1-.31 1-1V6.984H9v-3h4.001Z" 42644 }) 42645 }); 42646 /* harmony default export */ const post_excerpt = (postExcerpt); 42647 42648 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-excerpt/edit.js 42649 /** 42650 * External dependencies 42651 */ 42652 42653 42654 /** 42655 * WordPress dependencies 42656 */ 42657 42658 42659 42660 42661 42662 42663 42664 /** 42665 * Internal dependencies 42666 */ 42667 42668 42669 42670 42671 const ELLIPSIS = '…'; 42672 function PostExcerptEditor({ 42673 attributes: { 42674 textAlign, 42675 moreText, 42676 showMoreOnNewLine, 42677 excerptLength 42678 }, 42679 setAttributes, 42680 isSelected, 42681 context: { 42682 postId, 42683 postType, 42684 queryId 42685 } 42686 }) { 42687 const isDescendentOfQueryLoop = Number.isFinite(queryId); 42688 const userCanEdit = useCanEditEntity('postType', postType, postId); 42689 const [rawExcerpt, setExcerpt, { 42690 rendered: renderedExcerpt, 42691 protected: isProtected 42692 } = {}] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postType, 'excerpt', postId); 42693 42694 /** 42695 * Check if the post type supports excerpts. 42696 * Add an exception and return early for the "page" post type, 42697 * which is registered without support for the excerpt UI, 42698 * but supports saving the excerpt to the database. 42699 * See: https://core.trac.wordpress.org/browser/branches/6.1/src/wp-includes/post.php#L65 42700 * Without this exception, users that have excerpts saved to the database will 42701 * not be able to edit the excerpts. 42702 */ 42703 const postTypeSupportsExcerpts = (0,external_wp_data_namespaceObject.useSelect)(select => { 42704 if (postType === 'page') { 42705 return true; 42706 } 42707 return !!select(external_wp_coreData_namespaceObject.store).getPostType(postType)?.supports?.excerpt; 42708 }, [postType]); 42709 42710 /** 42711 * The excerpt is editable if: 42712 * - The user can edit the post 42713 * - It is not a descendent of a Query Loop block 42714 * - The post type supports excerpts 42715 */ 42716 const isEditable = userCanEdit && !isDescendentOfQueryLoop && postTypeSupportsExcerpts; 42717 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 42718 className: dist_clsx({ 42719 [`has-text-align-$textAlign}`]: textAlign 42720 }) 42721 }); 42722 42723 /** 42724 * translators: If your word count is based on single characters (e.g. East Asian characters), 42725 * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'. 42726 * Do not translate into your own language. 42727 */ 42728 const wordCountType = (0,external_wp_i18n_namespaceObject._x)('words', 'Word count type. Do not translate!'); 42729 42730 /** 42731 * When excerpt is editable, strip the html tags from 42732 * rendered excerpt. This will be used if the entity's 42733 * excerpt has been produced from the content. 42734 */ 42735 const strippedRenderedExcerpt = (0,external_wp_element_namespaceObject.useMemo)(() => { 42736 if (!renderedExcerpt) { 42737 return ''; 42738 } 42739 const document = new window.DOMParser().parseFromString(renderedExcerpt, 'text/html'); 42740 return document.body.textContent || document.body.innerText || ''; 42741 }, [renderedExcerpt]); 42742 if (!postType || !postId) { 42743 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 42744 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 42745 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentToolbar, { 42746 value: textAlign, 42747 onChange: newAlign => setAttributes({ 42748 textAlign: newAlign 42749 }) 42750 }) 42751 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 42752 ...blockProps, 42753 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 42754 children: (0,external_wp_i18n_namespaceObject.__)('This block will display the excerpt.') 42755 }) 42756 })] 42757 }); 42758 } 42759 if (isProtected && !userCanEdit) { 42760 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 42761 ...blockProps, 42762 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 42763 children: (0,external_wp_i18n_namespaceObject.__)('The content is currently protected and does not have the available excerpt.') 42764 }) 42765 }); 42766 } 42767 const readMoreLink = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 42768 identifier: "moreText", 42769 className: "wp-block-post-excerpt__more-link", 42770 tagName: "a", 42771 "aria-label": (0,external_wp_i18n_namespaceObject.__)('“Read more” link text'), 42772 placeholder: (0,external_wp_i18n_namespaceObject.__)('Add "read more" link text'), 42773 value: moreText, 42774 onChange: newMoreText => setAttributes({ 42775 moreText: newMoreText 42776 }), 42777 withoutInteractiveFormatting: true 42778 }); 42779 const excerptClassName = dist_clsx('wp-block-post-excerpt__excerpt', { 42780 'is-inline': !showMoreOnNewLine 42781 }); 42782 42783 /** 42784 * The excerpt length setting needs to be applied to both 42785 * the raw and the rendered excerpt depending on which is being used. 42786 */ 42787 const rawOrRenderedExcerpt = (rawExcerpt || strippedRenderedExcerpt).trim(); 42788 let trimmedExcerpt = ''; 42789 if (wordCountType === 'words') { 42790 trimmedExcerpt = rawOrRenderedExcerpt.split(' ', excerptLength).join(' '); 42791 } else if (wordCountType === 'characters_excluding_spaces') { 42792 /* 42793 * 1. Split the excerpt at the character limit, 42794 * then join the substrings back into one string. 42795 * 2. Count the number of spaces in the excerpt 42796 * by comparing the lengths of the string with and without spaces. 42797 * 3. Add the number to the length of the visible excerpt, 42798 * so that the spaces are excluded from the word count. 42799 */ 42800 const excerptWithSpaces = rawOrRenderedExcerpt.split('', excerptLength).join(''); 42801 const numberOfSpaces = excerptWithSpaces.length - excerptWithSpaces.replaceAll(' ', '').length; 42802 trimmedExcerpt = rawOrRenderedExcerpt.split('', excerptLength + numberOfSpaces).join(''); 42803 } else if (wordCountType === 'characters_including_spaces') { 42804 trimmedExcerpt = rawOrRenderedExcerpt.split('', excerptLength).join(''); 42805 } 42806 const isTrimmed = trimmedExcerpt !== rawOrRenderedExcerpt; 42807 const excerptContent = isEditable ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 42808 className: excerptClassName, 42809 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Excerpt text'), 42810 value: isSelected ? rawOrRenderedExcerpt : (!isTrimmed ? rawOrRenderedExcerpt : trimmedExcerpt + ELLIPSIS) || (0,external_wp_i18n_namespaceObject.__)('No excerpt found'), 42811 onChange: setExcerpt, 42812 tagName: "p" 42813 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 42814 className: excerptClassName, 42815 children: !isTrimmed ? rawOrRenderedExcerpt || (0,external_wp_i18n_namespaceObject.__)('No excerpt found') : trimmedExcerpt + ELLIPSIS 42816 }); 42817 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 42818 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 42819 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentToolbar, { 42820 value: textAlign, 42821 onChange: newAlign => setAttributes({ 42822 textAlign: newAlign 42823 }) 42824 }) 42825 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 42826 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 42827 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 42828 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 42829 __nextHasNoMarginBottom: true, 42830 label: (0,external_wp_i18n_namespaceObject.__)('Show link on new line'), 42831 checked: showMoreOnNewLine, 42832 onChange: newShowMoreOnNewLine => setAttributes({ 42833 showMoreOnNewLine: newShowMoreOnNewLine 42834 }) 42835 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 42836 __next40pxDefaultSize: true, 42837 __nextHasNoMarginBottom: true, 42838 label: (0,external_wp_i18n_namespaceObject.__)('Max number of words'), 42839 value: excerptLength, 42840 onChange: value => { 42841 setAttributes({ 42842 excerptLength: value 42843 }); 42844 }, 42845 min: "10", 42846 max: "100" 42847 })] 42848 }) 42849 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 42850 ...blockProps, 42851 children: [excerptContent, !showMoreOnNewLine && ' ', showMoreOnNewLine ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 42852 className: "wp-block-post-excerpt__more-text", 42853 children: readMoreLink 42854 }) : readMoreLink] 42855 })] 42856 }); 42857 } 42858 42859 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-excerpt/transforms.js 42860 /** 42861 * WordPress dependencies 42862 */ 42863 42864 const post_excerpt_transforms_transforms = { 42865 from: [{ 42866 type: 'block', 42867 blocks: ['core/post-content'], 42868 transform: () => (0,external_wp_blocks_namespaceObject.createBlock)('core/post-excerpt') 42869 }], 42870 to: [{ 42871 type: 'block', 42872 blocks: ['core/post-content'], 42873 transform: () => (0,external_wp_blocks_namespaceObject.createBlock)('core/post-content') 42874 }] 42875 }; 42876 /* harmony default export */ const post_excerpt_transforms = (post_excerpt_transforms_transforms); 42877 42878 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-excerpt/index.js 42879 /** 42880 * WordPress dependencies 42881 */ 42882 42883 42884 /** 42885 * Internal dependencies 42886 */ 42887 42888 const post_excerpt_metadata = { 42889 $schema: "https://schemas.wp.org/trunk/block.json", 42890 apiVersion: 3, 42891 name: "core/post-excerpt", 42892 title: "Excerpt", 42893 category: "theme", 42894 description: "Display the excerpt.", 42895 textdomain: "default", 42896 attributes: { 42897 textAlign: { 42898 type: "string" 42899 }, 42900 moreText: { 42901 type: "string" 42902 }, 42903 showMoreOnNewLine: { 42904 type: "boolean", 42905 "default": true 42906 }, 42907 excerptLength: { 42908 type: "number", 42909 "default": 55 42910 } 42911 }, 42912 usesContext: ["postId", "postType", "queryId"], 42913 example: { 42914 viewportWidth: 350 42915 }, 42916 supports: { 42917 html: false, 42918 color: { 42919 gradients: true, 42920 link: true, 42921 __experimentalDefaultControls: { 42922 background: true, 42923 text: true, 42924 link: true 42925 } 42926 }, 42927 spacing: { 42928 margin: true, 42929 padding: true 42930 }, 42931 typography: { 42932 fontSize: true, 42933 lineHeight: true, 42934 __experimentalFontFamily: true, 42935 __experimentalFontWeight: true, 42936 __experimentalFontStyle: true, 42937 __experimentalTextTransform: true, 42938 __experimentalTextDecoration: true, 42939 __experimentalLetterSpacing: true, 42940 __experimentalDefaultControls: { 42941 fontSize: true 42942 } 42943 }, 42944 interactivity: { 42945 clientNavigation: true 42946 }, 42947 __experimentalBorder: { 42948 radius: true, 42949 color: true, 42950 width: true, 42951 style: true, 42952 __experimentalDefaultControls: { 42953 radius: true, 42954 color: true, 42955 width: true, 42956 style: true 42957 } 42958 } 42959 }, 42960 editorStyle: "wp-block-post-excerpt-editor", 42961 style: "wp-block-post-excerpt" 42962 }; 42963 42964 42965 const { 42966 name: post_excerpt_name 42967 } = post_excerpt_metadata; 42968 42969 const post_excerpt_settings = { 42970 icon: post_excerpt, 42971 transforms: post_excerpt_transforms, 42972 edit: PostExcerptEditor 42973 }; 42974 const post_excerpt_init = () => initBlock({ 42975 name: post_excerpt_name, 42976 metadata: post_excerpt_metadata, 42977 settings: post_excerpt_settings 42978 }); 42979 42980 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-featured-image.js 42981 /** 42982 * WordPress dependencies 42983 */ 42984 42985 42986 const postFeaturedImage = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 42987 xmlns: "http://www.w3.org/2000/svg", 42988 viewBox: "0 0 24 24", 42989 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 42990 d: "M19 3H5c-.6 0-1 .4-1 1v7c0 .5.4 1 1 1h14c.5 0 1-.4 1-1V4c0-.6-.4-1-1-1zM5.5 10.5v-.4l1.8-1.3 1.3.8c.3.2.7.2.9-.1L11 8.1l2.4 2.4H5.5zm13 0h-2.9l-4-4c-.3-.3-.8-.3-1.1 0L8.9 8l-1.2-.8c-.3-.2-.6-.2-.9 0l-1.3 1V4.5h13v6zM4 20h9v-1.5H4V20zm0-4h16v-1.5H4V16z" 42991 }) 42992 }); 42993 /* harmony default export */ const post_featured_image = (postFeaturedImage); 42994 42995 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-featured-image/dimension-controls.js 42996 /** 42997 * WordPress dependencies 42998 */ 42999 43000 43001 43002 43003 43004 43005 43006 const SCALE_OPTIONS = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 43007 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 43008 value: "cover", 43009 label: (0,external_wp_i18n_namespaceObject._x)('Cover', 'Scale option for Image dimension control') 43010 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 43011 value: "contain", 43012 label: (0,external_wp_i18n_namespaceObject._x)('Contain', 'Scale option for Image dimension control') 43013 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 43014 value: "fill", 43015 label: (0,external_wp_i18n_namespaceObject._x)('Fill', 'Scale option for Image dimension control') 43016 })] 43017 }); 43018 const DEFAULT_SCALE = 'cover'; 43019 const DEFAULT_SIZE = 'full'; 43020 const scaleHelp = { 43021 cover: (0,external_wp_i18n_namespaceObject.__)('Image is scaled and cropped to fill the entire space without being distorted.'), 43022 contain: (0,external_wp_i18n_namespaceObject.__)('Image is scaled to fill the space without clipping nor distorting.'), 43023 fill: (0,external_wp_i18n_namespaceObject.__)('Image will be stretched and distorted to completely fill the space.') 43024 }; 43025 const DimensionControls = ({ 43026 clientId, 43027 attributes: { 43028 aspectRatio, 43029 width, 43030 height, 43031 scale, 43032 sizeSlug 43033 }, 43034 setAttributes, 43035 media 43036 }) => { 43037 const [availableUnits, defaultRatios, themeRatios, showDefaultRatios] = (0,external_wp_blockEditor_namespaceObject.useSettings)('spacing.units', 'dimensions.aspectRatios.default', 'dimensions.aspectRatios.theme', 'dimensions.defaultAspectRatios'); 43038 const units = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({ 43039 availableUnits: availableUnits || ['px', '%', 'vw', 'em', 'rem'] 43040 }); 43041 const imageSizes = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings().imageSizes, []); 43042 const imageSizeOptions = imageSizes.filter(({ 43043 slug 43044 }) => { 43045 return media?.media_details?.sizes?.[slug]?.source_url; 43046 }).map(({ 43047 name, 43048 slug 43049 }) => ({ 43050 value: slug, 43051 label: name 43052 })); 43053 const onDimensionChange = (dimension, nextValue) => { 43054 const parsedValue = parseFloat(nextValue); 43055 /** 43056 * If we have no value set and we change the unit, 43057 * we don't want to set the attribute, as it would 43058 * end up having the unit as value without any number. 43059 */ 43060 if (isNaN(parsedValue) && nextValue) { 43061 return; 43062 } 43063 setAttributes({ 43064 [dimension]: parsedValue < 0 ? '0' : nextValue 43065 }); 43066 }; 43067 const scaleLabel = (0,external_wp_i18n_namespaceObject._x)('Scale', 'Image scaling options'); 43068 const showScaleControl = height || aspectRatio && aspectRatio !== 'auto'; 43069 const themeOptions = themeRatios?.map(({ 43070 name, 43071 ratio 43072 }) => ({ 43073 label: name, 43074 value: ratio 43075 })); 43076 const defaultOptions = defaultRatios?.map(({ 43077 name, 43078 ratio 43079 }) => ({ 43080 label: name, 43081 value: ratio 43082 })); 43083 const aspectRatioOptions = [{ 43084 label: (0,external_wp_i18n_namespaceObject._x)('Original', 'Aspect ratio option for dimensions control'), 43085 value: 'auto' 43086 }, ...(showDefaultRatios ? defaultOptions : []), ...(themeOptions ? themeOptions : [])]; 43087 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 43088 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 43089 hasValue: () => !!aspectRatio, 43090 label: (0,external_wp_i18n_namespaceObject.__)('Aspect ratio'), 43091 onDeselect: () => setAttributes({ 43092 aspectRatio: undefined 43093 }), 43094 resetAllFilter: () => ({ 43095 aspectRatio: undefined 43096 }), 43097 isShownByDefault: true, 43098 panelId: clientId, 43099 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 43100 __next40pxDefaultSize: true, 43101 __nextHasNoMarginBottom: true, 43102 label: (0,external_wp_i18n_namespaceObject.__)('Aspect ratio'), 43103 value: aspectRatio, 43104 options: aspectRatioOptions, 43105 onChange: nextAspectRatio => setAttributes({ 43106 aspectRatio: nextAspectRatio 43107 }) 43108 }) 43109 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 43110 className: "single-column", 43111 hasValue: () => !!height, 43112 label: (0,external_wp_i18n_namespaceObject.__)('Height'), 43113 onDeselect: () => setAttributes({ 43114 height: undefined 43115 }), 43116 resetAllFilter: () => ({ 43117 height: undefined 43118 }), 43119 isShownByDefault: true, 43120 panelId: clientId, 43121 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalUnitControl, { 43122 __next40pxDefaultSize: true, 43123 label: (0,external_wp_i18n_namespaceObject.__)('Height'), 43124 labelPosition: "top", 43125 value: height || '', 43126 min: 0, 43127 onChange: nextHeight => onDimensionChange('height', nextHeight), 43128 units: units 43129 }) 43130 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 43131 className: "single-column", 43132 hasValue: () => !!width, 43133 label: (0,external_wp_i18n_namespaceObject.__)('Width'), 43134 onDeselect: () => setAttributes({ 43135 width: undefined 43136 }), 43137 resetAllFilter: () => ({ 43138 width: undefined 43139 }), 43140 isShownByDefault: true, 43141 panelId: clientId, 43142 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalUnitControl, { 43143 __next40pxDefaultSize: true, 43144 label: (0,external_wp_i18n_namespaceObject.__)('Width'), 43145 labelPosition: "top", 43146 value: width || '', 43147 min: 0, 43148 onChange: nextWidth => onDimensionChange('width', nextWidth), 43149 units: units 43150 }) 43151 }), showScaleControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 43152 hasValue: () => !!scale && scale !== DEFAULT_SCALE, 43153 label: scaleLabel, 43154 onDeselect: () => setAttributes({ 43155 scale: DEFAULT_SCALE 43156 }), 43157 resetAllFilter: () => ({ 43158 scale: DEFAULT_SCALE 43159 }), 43160 isShownByDefault: true, 43161 panelId: clientId, 43162 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, { 43163 __next40pxDefaultSize: true, 43164 __nextHasNoMarginBottom: true, 43165 label: scaleLabel, 43166 value: scale, 43167 help: scaleHelp[scale], 43168 onChange: value => setAttributes({ 43169 scale: value 43170 }), 43171 isBlock: true, 43172 children: SCALE_OPTIONS 43173 }) 43174 }), !!imageSizeOptions.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 43175 hasValue: () => !!sizeSlug, 43176 label: (0,external_wp_i18n_namespaceObject.__)('Resolution'), 43177 onDeselect: () => setAttributes({ 43178 sizeSlug: undefined 43179 }), 43180 resetAllFilter: () => ({ 43181 sizeSlug: undefined 43182 }), 43183 isShownByDefault: false, 43184 panelId: clientId, 43185 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 43186 __next40pxDefaultSize: true, 43187 __nextHasNoMarginBottom: true, 43188 label: (0,external_wp_i18n_namespaceObject.__)('Resolution'), 43189 value: sizeSlug || DEFAULT_SIZE, 43190 options: imageSizeOptions, 43191 onChange: nextSizeSlug => setAttributes({ 43192 sizeSlug: nextSizeSlug 43193 }), 43194 help: (0,external_wp_i18n_namespaceObject.__)('Select the size of the source image.') 43195 }) 43196 })] 43197 }); 43198 }; 43199 /* harmony default export */ const dimension_controls = (DimensionControls); 43200 43201 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-featured-image/overlay-controls.js 43202 /** 43203 * WordPress dependencies 43204 */ 43205 43206 43207 43208 43209 43210 43211 43212 const Overlay = ({ 43213 clientId, 43214 attributes, 43215 setAttributes, 43216 overlayColor, 43217 setOverlayColor 43218 }) => { 43219 const { 43220 dimRatio 43221 } = attributes; 43222 const { 43223 gradientValue, 43224 setGradient 43225 } = (0,external_wp_blockEditor_namespaceObject.__experimentalUseGradient)(); 43226 const colorGradientSettings = (0,external_wp_blockEditor_namespaceObject.__experimentalUseMultipleOriginColorsAndGradients)(); 43227 if (!colorGradientSettings.hasColorsOrGradients) { 43228 return null; 43229 } 43230 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 43231 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientSettingsDropdown, { 43232 __experimentalIsRenderedInSidebar: true, 43233 settings: [{ 43234 colorValue: overlayColor.color, 43235 gradientValue, 43236 label: (0,external_wp_i18n_namespaceObject.__)('Overlay'), 43237 onColorChange: setOverlayColor, 43238 onGradientChange: setGradient, 43239 isShownByDefault: true, 43240 resetAllFilter: () => ({ 43241 overlayColor: undefined, 43242 customOverlayColor: undefined, 43243 gradient: undefined, 43244 customGradient: undefined 43245 }) 43246 }], 43247 panelId: clientId, 43248 ...colorGradientSettings 43249 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 43250 hasValue: () => dimRatio !== undefined, 43251 label: (0,external_wp_i18n_namespaceObject.__)('Overlay opacity'), 43252 onDeselect: () => setAttributes({ 43253 dimRatio: 0 43254 }), 43255 resetAllFilter: () => ({ 43256 dimRatio: 0 43257 }), 43258 isShownByDefault: true, 43259 panelId: clientId, 43260 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 43261 __nextHasNoMarginBottom: true, 43262 label: (0,external_wp_i18n_namespaceObject.__)('Overlay opacity'), 43263 value: dimRatio, 43264 onChange: newDimRatio => setAttributes({ 43265 dimRatio: newDimRatio 43266 }), 43267 min: 0, 43268 max: 100, 43269 step: 10, 43270 required: true, 43271 __next40pxDefaultSize: true 43272 }) 43273 })] 43274 }); 43275 }; 43276 /* harmony default export */ const overlay_controls = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_blockEditor_namespaceObject.withColors)({ 43277 overlayColor: 'background-color' 43278 })])(Overlay)); 43279 43280 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-featured-image/utils.js 43281 /** 43282 * Generates the opacity/dim class based on given number. 43283 * 43284 * @param {number} ratio Dim/opacity number. 43285 * 43286 * @return {string} Generated class. 43287 */ 43288 function utils_dimRatioToClass(ratio) { 43289 return ratio === undefined ? null : 'has-background-dim-' + 10 * Math.round(ratio / 10); 43290 } 43291 43292 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-featured-image/overlay.js 43293 /** 43294 * External dependencies 43295 */ 43296 43297 43298 /** 43299 * WordPress dependencies 43300 */ 43301 43302 43303 43304 /** 43305 * Internal dependencies 43306 */ 43307 43308 43309 const overlay_Overlay = ({ 43310 attributes, 43311 overlayColor 43312 }) => { 43313 const { 43314 dimRatio 43315 } = attributes; 43316 const { 43317 gradientClass, 43318 gradientValue 43319 } = (0,external_wp_blockEditor_namespaceObject.__experimentalUseGradient)(); 43320 const colorGradientSettings = (0,external_wp_blockEditor_namespaceObject.__experimentalUseMultipleOriginColorsAndGradients)(); 43321 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseBorderProps)(attributes); 43322 const overlayStyles = { 43323 backgroundColor: overlayColor.color, 43324 backgroundImage: gradientValue, 43325 ...borderProps.style 43326 }; 43327 if (!colorGradientSettings.hasColorsOrGradients || !dimRatio) { 43328 return null; 43329 } 43330 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 43331 "aria-hidden": "true", 43332 className: dist_clsx('wp-block-post-featured-image__overlay', utils_dimRatioToClass(dimRatio), { 43333 [overlayColor.class]: overlayColor.class, 43334 'has-background-dim': dimRatio !== undefined, 43335 'has-background-gradient': gradientValue, 43336 [gradientClass]: gradientClass 43337 }, borderProps.className), 43338 style: overlayStyles 43339 }); 43340 }; 43341 /* harmony default export */ const overlay = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_blockEditor_namespaceObject.withColors)({ 43342 overlayColor: 'background-color' 43343 })])(overlay_Overlay)); 43344 43345 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-featured-image/edit.js 43346 /** 43347 * External dependencies 43348 */ 43349 43350 43351 /** 43352 * WordPress dependencies 43353 */ 43354 43355 43356 43357 43358 43359 43360 43361 43362 43363 43364 /** 43365 * Internal dependencies 43366 */ 43367 43368 43369 43370 43371 43372 43373 const post_featured_image_edit_ALLOWED_MEDIA_TYPES = ['image']; 43374 function getMediaSourceUrlBySizeSlug(media, slug) { 43375 return media?.media_details?.sizes?.[slug]?.source_url || media?.source_url; 43376 } 43377 const disabledClickProps = { 43378 onClick: event => event.preventDefault(), 43379 'aria-disabled': true 43380 }; 43381 function PostFeaturedImageEdit({ 43382 clientId, 43383 attributes, 43384 setAttributes, 43385 context: { 43386 postId, 43387 postType: postTypeSlug, 43388 queryId 43389 } 43390 }) { 43391 const isDescendentOfQueryLoop = Number.isFinite(queryId); 43392 const { 43393 isLink, 43394 aspectRatio, 43395 height, 43396 width, 43397 scale, 43398 sizeSlug, 43399 rel, 43400 linkTarget, 43401 useFirstImageFromPost 43402 } = attributes; 43403 const [temporaryURL, setTemporaryURL] = (0,external_wp_element_namespaceObject.useState)(); 43404 const [storedFeaturedImage, setFeaturedImage] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postTypeSlug, 'featured_media', postId); 43405 43406 // Fallback to post content if no featured image is set. 43407 // This is needed for the "Use first image from post" option. 43408 const [postContent] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postTypeSlug, 'content', postId); 43409 const featuredImage = (0,external_wp_element_namespaceObject.useMemo)(() => { 43410 if (storedFeaturedImage) { 43411 return storedFeaturedImage; 43412 } 43413 if (!useFirstImageFromPost) { 43414 return; 43415 } 43416 const imageOpener = /<!--\s+wp:(?:core\/)?image\s+(?<attrs>{(?:(?:[^}]+|}+(?=})|(?!}\s+\/?-->).)*)?}\s+)?-->/.exec(postContent); 43417 const imageId = imageOpener?.groups?.attrs && JSON.parse(imageOpener.groups.attrs)?.id; 43418 return imageId; 43419 }, [storedFeaturedImage, useFirstImageFromPost, postContent]); 43420 const { 43421 media, 43422 postType, 43423 postPermalink 43424 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 43425 const { 43426 getMedia, 43427 getPostType, 43428 getEditedEntityRecord 43429 } = select(external_wp_coreData_namespaceObject.store); 43430 return { 43431 media: featuredImage && getMedia(featuredImage, { 43432 context: 'view' 43433 }), 43434 postType: postTypeSlug && getPostType(postTypeSlug), 43435 postPermalink: getEditedEntityRecord('postType', postTypeSlug, postId)?.link 43436 }; 43437 }, [featuredImage, postTypeSlug, postId]); 43438 const mediaUrl = getMediaSourceUrlBySizeSlug(media, sizeSlug); 43439 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 43440 style: { 43441 width, 43442 height, 43443 aspectRatio 43444 }, 43445 className: dist_clsx({ 43446 'is-transient': temporaryURL 43447 }) 43448 }); 43449 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseBorderProps)(attributes); 43450 const shadowProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetShadowClassesAndStyles)(attributes); 43451 const blockEditingMode = (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)(); 43452 const placeholder = content => { 43453 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 43454 className: dist_clsx('block-editor-media-placeholder', borderProps.className), 43455 withIllustration: true, 43456 style: { 43457 height: !!aspectRatio && '100%', 43458 width: !!aspectRatio && '100%', 43459 ...borderProps.style, 43460 ...shadowProps.style 43461 }, 43462 children: content 43463 }); 43464 }; 43465 const onSelectImage = value => { 43466 if (value?.id) { 43467 setFeaturedImage(value.id); 43468 } 43469 if (value?.url && (0,external_wp_blob_namespaceObject.isBlobURL)(value.url)) { 43470 setTemporaryURL(value.url); 43471 } 43472 }; 43473 43474 // Reset temporary url when media is available. 43475 (0,external_wp_element_namespaceObject.useEffect)(() => { 43476 if (mediaUrl && temporaryURL) { 43477 setTemporaryURL(); 43478 } 43479 }, [mediaUrl, temporaryURL]); 43480 const { 43481 createErrorNotice 43482 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 43483 const onUploadError = message => { 43484 createErrorNotice(message, { 43485 type: 'snackbar' 43486 }); 43487 setTemporaryURL(); 43488 }; 43489 const controls = blockEditingMode === 'default' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 43490 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 43491 group: "color", 43492 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(overlay_controls, { 43493 attributes: attributes, 43494 setAttributes: setAttributes, 43495 clientId: clientId 43496 }) 43497 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 43498 group: "dimensions", 43499 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dimension_controls, { 43500 clientId: clientId, 43501 attributes: attributes, 43502 setAttributes: setAttributes, 43503 media: media 43504 }) 43505 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 43506 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 43507 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 43508 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 43509 __nextHasNoMarginBottom: true, 43510 label: postType?.labels.singular_name ? (0,external_wp_i18n_namespaceObject.sprintf)( 43511 // translators: %s: Name of the post type e.g: "post". 43512 (0,external_wp_i18n_namespaceObject.__)('Link to %s'), postType.labels.singular_name) : (0,external_wp_i18n_namespaceObject.__)('Link to post'), 43513 onChange: () => setAttributes({ 43514 isLink: !isLink 43515 }), 43516 checked: isLink 43517 }), isLink && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 43518 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 43519 __nextHasNoMarginBottom: true, 43520 label: (0,external_wp_i18n_namespaceObject.__)('Open in new tab'), 43521 onChange: value => setAttributes({ 43522 linkTarget: value ? '_blank' : '_self' 43523 }), 43524 checked: linkTarget === '_blank' 43525 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 43526 __next40pxDefaultSize: true, 43527 __nextHasNoMarginBottom: true, 43528 label: (0,external_wp_i18n_namespaceObject.__)('Link rel'), 43529 value: rel, 43530 onChange: newRel => setAttributes({ 43531 rel: newRel 43532 }) 43533 })] 43534 })] 43535 }) 43536 })] 43537 }); 43538 let image; 43539 43540 /** 43541 * A Post Featured Image block should not have image replacement 43542 * or upload options in the following cases: 43543 * - Is placed in a Query Loop. This is a conscious decision to 43544 * prevent content editing of different posts in Query Loop, and 43545 * this could change in the future. 43546 * - Is in a context where it does not have a postId (for example 43547 * in a template or template part). 43548 */ 43549 if (!featuredImage && (isDescendentOfQueryLoop || !postId)) { 43550 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 43551 children: [controls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 43552 ...blockProps, 43553 children: [!!isLink ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 43554 href: postPermalink, 43555 target: linkTarget, 43556 ...disabledClickProps, 43557 children: placeholder() 43558 }) : placeholder(), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(overlay, { 43559 attributes: attributes, 43560 setAttributes: setAttributes, 43561 clientId: clientId 43562 })] 43563 })] 43564 }); 43565 } 43566 const label = (0,external_wp_i18n_namespaceObject.__)('Add a featured image'); 43567 const imageStyles = { 43568 ...borderProps.style, 43569 ...shadowProps.style, 43570 height: aspectRatio ? '100%' : height, 43571 width: !!aspectRatio && '100%', 43572 objectFit: !!(height || aspectRatio) && scale 43573 }; 43574 43575 /** 43576 * When the post featured image block is placed in a context where: 43577 * - It has a postId (for example in a single post) 43578 * - It is not inside a query loop 43579 * - It has no image assigned yet 43580 * Then display the placeholder with the image upload option. 43581 */ 43582 if (!featuredImage && !temporaryURL) { 43583 image = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaPlaceholder, { 43584 onSelect: onSelectImage, 43585 accept: "image/*", 43586 allowedTypes: post_featured_image_edit_ALLOWED_MEDIA_TYPES, 43587 onError: onUploadError, 43588 placeholder: placeholder, 43589 mediaLibraryButton: ({ 43590 open 43591 }) => { 43592 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 43593 __next40pxDefaultSize: true, 43594 icon: library_upload, 43595 variant: "primary", 43596 label: label, 43597 showTooltip: true, 43598 tooltipPosition: "top center", 43599 onClick: () => { 43600 open(); 43601 } 43602 }); 43603 } 43604 }); 43605 } else { 43606 // We have a Featured image so show a Placeholder if is loading. 43607 image = !media && !temporaryURL ? placeholder() : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 43608 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 43609 className: borderProps.className, 43610 src: temporaryURL || mediaUrl, 43611 alt: media && media?.alt_text ? (0,external_wp_i18n_namespaceObject.sprintf)( 43612 // translators: %s: The image's alt text. 43613 (0,external_wp_i18n_namespaceObject.__)('Featured image: %s'), media.alt_text) : (0,external_wp_i18n_namespaceObject.__)('Featured image'), 43614 style: imageStyles 43615 }), temporaryURL && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {})] 43616 }); 43617 } 43618 43619 /** 43620 * When the post featured image block: 43621 * - Has an image assigned 43622 * - Is not inside a query loop 43623 * Then display the image and the image replacement option. 43624 */ 43625 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 43626 children: [!temporaryURL && controls, !!media && !isDescendentOfQueryLoop && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 43627 group: "other", 43628 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaReplaceFlow, { 43629 mediaId: featuredImage, 43630 mediaURL: mediaUrl, 43631 allowedTypes: post_featured_image_edit_ALLOWED_MEDIA_TYPES, 43632 accept: "image/*", 43633 onSelect: onSelectImage, 43634 onError: onUploadError, 43635 onReset: () => setFeaturedImage(0) 43636 }) 43637 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 43638 ...blockProps, 43639 children: [!!isLink ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 43640 href: postPermalink, 43641 target: linkTarget, 43642 ...disabledClickProps, 43643 children: image 43644 }) : image, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(overlay, { 43645 attributes: attributes, 43646 setAttributes: setAttributes, 43647 clientId: clientId 43648 })] 43649 })] 43650 }); 43651 } 43652 43653 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-featured-image/index.js 43654 /** 43655 * WordPress dependencies 43656 */ 43657 43658 43659 /** 43660 * Internal dependencies 43661 */ 43662 43663 const post_featured_image_metadata = { 43664 $schema: "https://schemas.wp.org/trunk/block.json", 43665 apiVersion: 3, 43666 name: "core/post-featured-image", 43667 title: "Featured Image", 43668 category: "theme", 43669 description: "Display a post's featured image.", 43670 textdomain: "default", 43671 attributes: { 43672 isLink: { 43673 type: "boolean", 43674 "default": false 43675 }, 43676 aspectRatio: { 43677 type: "string" 43678 }, 43679 width: { 43680 type: "string" 43681 }, 43682 height: { 43683 type: "string" 43684 }, 43685 scale: { 43686 type: "string", 43687 "default": "cover" 43688 }, 43689 sizeSlug: { 43690 type: "string" 43691 }, 43692 rel: { 43693 type: "string", 43694 attribute: "rel", 43695 "default": "" 43696 }, 43697 linkTarget: { 43698 type: "string", 43699 "default": "_self" 43700 }, 43701 overlayColor: { 43702 type: "string" 43703 }, 43704 customOverlayColor: { 43705 type: "string" 43706 }, 43707 dimRatio: { 43708 type: "number", 43709 "default": 0 43710 }, 43711 gradient: { 43712 type: "string" 43713 }, 43714 customGradient: { 43715 type: "string" 43716 }, 43717 useFirstImageFromPost: { 43718 type: "boolean", 43719 "default": false 43720 } 43721 }, 43722 usesContext: ["postId", "postType", "queryId"], 43723 example: { 43724 viewportWidth: 350 43725 }, 43726 supports: { 43727 align: ["left", "right", "center", "wide", "full"], 43728 color: { 43729 text: false, 43730 background: false 43731 }, 43732 __experimentalBorder: { 43733 color: true, 43734 radius: true, 43735 width: true, 43736 __experimentalSkipSerialization: true, 43737 __experimentalDefaultControls: { 43738 color: true, 43739 radius: true, 43740 width: true 43741 } 43742 }, 43743 filter: { 43744 duotone: true 43745 }, 43746 shadow: { 43747 __experimentalSkipSerialization: true 43748 }, 43749 html: false, 43750 spacing: { 43751 margin: true, 43752 padding: true 43753 }, 43754 interactivity: { 43755 clientNavigation: true 43756 } 43757 }, 43758 selectors: { 43759 border: ".wp-block-post-featured-image img, .wp-block-post-featured-image .block-editor-media-placeholder, .wp-block-post-featured-image .wp-block-post-featured-image__overlay", 43760 shadow: ".wp-block-post-featured-image img, .wp-block-post-featured-image .components-placeholder", 43761 filter: { 43762 duotone: ".wp-block-post-featured-image img, .wp-block-post-featured-image .wp-block-post-featured-image__placeholder, .wp-block-post-featured-image .components-placeholder__illustration, .wp-block-post-featured-image .components-placeholder::before" 43763 } 43764 }, 43765 editorStyle: "wp-block-post-featured-image-editor", 43766 style: "wp-block-post-featured-image" 43767 }; 43768 43769 const { 43770 name: post_featured_image_name 43771 } = post_featured_image_metadata; 43772 43773 const post_featured_image_settings = { 43774 icon: post_featured_image, 43775 edit: PostFeaturedImageEdit 43776 }; 43777 const post_featured_image_init = () => initBlock({ 43778 name: post_featured_image_name, 43779 metadata: post_featured_image_metadata, 43780 settings: post_featured_image_settings 43781 }); 43782 43783 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-navigation-link/edit.js 43784 /** 43785 * External dependencies 43786 */ 43787 43788 43789 /** 43790 * WordPress dependencies 43791 */ 43792 43793 43794 43795 43796 43797 43798 43799 43800 function PostNavigationLinkEdit({ 43801 context: { 43802 postType 43803 }, 43804 attributes: { 43805 type, 43806 label, 43807 showTitle, 43808 textAlign, 43809 linkLabel, 43810 arrow, 43811 taxonomy 43812 }, 43813 setAttributes 43814 }) { 43815 const isNext = type === 'next'; 43816 let placeholder = isNext ? (0,external_wp_i18n_namespaceObject.__)('Next') : (0,external_wp_i18n_namespaceObject.__)('Previous'); 43817 const arrowMap = { 43818 none: '', 43819 arrow: isNext ? '→' : '←', 43820 chevron: isNext ? '»' : '«' 43821 }; 43822 const displayArrow = arrowMap[arrow]; 43823 if (showTitle) { 43824 placeholder = isNext ? /* translators: Label before for next and previous post. There is a space after the colon. */ 43825 (0,external_wp_i18n_namespaceObject.__)('Next: ') // eslint-disable-line @wordpress/i18n-no-flanking-whitespace 43826 : /* translators: Label before for next and previous post. There is a space after the colon. */ 43827 (0,external_wp_i18n_namespaceObject.__)('Previous: '); // eslint-disable-line @wordpress/i18n-no-flanking-whitespace 43828 } 43829 const ariaLabel = isNext ? (0,external_wp_i18n_namespaceObject.__)('Next post') : (0,external_wp_i18n_namespaceObject.__)('Previous post'); 43830 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 43831 className: dist_clsx({ 43832 [`has-text-align-$textAlign}`]: textAlign 43833 }) 43834 }); 43835 const taxonomies = (0,external_wp_data_namespaceObject.useSelect)(select => { 43836 const { 43837 getTaxonomies 43838 } = select(external_wp_coreData_namespaceObject.store); 43839 const filteredTaxonomies = getTaxonomies({ 43840 type: postType, 43841 per_page: -1 43842 }); 43843 return filteredTaxonomies; 43844 }, [postType]); 43845 const getTaxonomyOptions = () => { 43846 const selectOption = { 43847 label: (0,external_wp_i18n_namespaceObject.__)('Unfiltered'), 43848 value: '' 43849 }; 43850 const taxonomyOptions = (taxonomies !== null && taxonomies !== void 0 ? taxonomies : []).filter(({ 43851 visibility 43852 }) => !!visibility?.publicly_queryable).map(item => { 43853 return { 43854 value: item.slug, 43855 label: item.name 43856 }; 43857 }); 43858 return [selectOption, ...taxonomyOptions]; 43859 }; 43860 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 43861 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 43862 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 43863 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 43864 __nextHasNoMarginBottom: true, 43865 label: (0,external_wp_i18n_namespaceObject.__)('Display the title as a link'), 43866 help: (0,external_wp_i18n_namespaceObject.__)('If you have entered a custom label, it will be prepended before the title.'), 43867 checked: !!showTitle, 43868 onChange: () => setAttributes({ 43869 showTitle: !showTitle 43870 }) 43871 }), showTitle && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 43872 __nextHasNoMarginBottom: true, 43873 label: (0,external_wp_i18n_namespaceObject.__)('Include the label as part of the link'), 43874 checked: !!linkLabel, 43875 onChange: () => setAttributes({ 43876 linkLabel: !linkLabel 43877 }) 43878 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, { 43879 __next40pxDefaultSize: true, 43880 __nextHasNoMarginBottom: true, 43881 label: (0,external_wp_i18n_namespaceObject.__)('Arrow'), 43882 value: arrow, 43883 onChange: value => { 43884 setAttributes({ 43885 arrow: value 43886 }); 43887 }, 43888 help: (0,external_wp_i18n_namespaceObject.__)('A decorative arrow for the next and previous link.'), 43889 isBlock: true, 43890 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 43891 value: "none", 43892 label: (0,external_wp_i18n_namespaceObject._x)('None', 'Arrow option for Next/Previous link') 43893 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 43894 value: "arrow", 43895 label: (0,external_wp_i18n_namespaceObject._x)('Arrow', 'Arrow option for Next/Previous link') 43896 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 43897 value: "chevron", 43898 label: (0,external_wp_i18n_namespaceObject._x)('Chevron', 'Arrow option for Next/Previous link') 43899 })] 43900 })] 43901 }) 43902 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 43903 group: "advanced", 43904 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 43905 __next40pxDefaultSize: true, 43906 __nextHasNoMarginBottom: true, 43907 label: (0,external_wp_i18n_namespaceObject.__)('Filter by taxonomy'), 43908 value: taxonomy, 43909 options: getTaxonomyOptions(), 43910 onChange: value => setAttributes({ 43911 taxonomy: value 43912 }), 43913 help: (0,external_wp_i18n_namespaceObject.__)('Only link to posts that have the same taxonomy terms as the current post. For example the same tags or categories.') 43914 }) 43915 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 43916 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentToolbar, { 43917 value: textAlign, 43918 onChange: nextAlign => { 43919 setAttributes({ 43920 textAlign: nextAlign 43921 }); 43922 } 43923 }) 43924 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 43925 ...blockProps, 43926 children: [!isNext && displayArrow && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 43927 className: `wp-block-post-navigation-link__arrow-previous is-arrow-$arrow}`, 43928 children: displayArrow 43929 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 43930 tagName: "a", 43931 identifier: "label", 43932 "aria-label": ariaLabel, 43933 placeholder: placeholder, 43934 value: label, 43935 allowedFormats: ['core/bold', 'core/italic'], 43936 onChange: newLabel => setAttributes({ 43937 label: newLabel 43938 }) 43939 }), showTitle && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 43940 href: "#post-navigation-pseudo-link", 43941 onClick: event => event.preventDefault(), 43942 children: (0,external_wp_i18n_namespaceObject.__)('An example title') 43943 }), isNext && displayArrow && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 43944 className: `wp-block-post-navigation-link__arrow-next is-arrow-$arrow}`, 43945 "aria-hidden": true, 43946 children: displayArrow 43947 })] 43948 })] 43949 }); 43950 } 43951 43952 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/next.js 43953 /** 43954 * WordPress dependencies 43955 */ 43956 43957 43958 const next = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 43959 xmlns: "http://www.w3.org/2000/svg", 43960 viewBox: "0 0 24 24", 43961 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 43962 d: "M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z" 43963 }) 43964 }); 43965 /* harmony default export */ const library_next = (next); 43966 43967 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/previous.js 43968 /** 43969 * WordPress dependencies 43970 */ 43971 43972 43973 const previous = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 43974 xmlns: "http://www.w3.org/2000/svg", 43975 viewBox: "0 0 24 24", 43976 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 43977 d: "M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z" 43978 }) 43979 }); 43980 /* harmony default export */ const library_previous = (previous); 43981 43982 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-navigation-link/variations.js 43983 /** 43984 * WordPress dependencies 43985 */ 43986 43987 43988 const post_navigation_link_variations_variations = [{ 43989 isDefault: true, 43990 name: 'post-next', 43991 title: (0,external_wp_i18n_namespaceObject.__)('Next post'), 43992 description: (0,external_wp_i18n_namespaceObject.__)('Displays the post link that follows the current post.'), 43993 icon: library_next, 43994 attributes: { 43995 type: 'next' 43996 }, 43997 scope: ['inserter', 'transform'] 43998 }, { 43999 name: 'post-previous', 44000 title: (0,external_wp_i18n_namespaceObject.__)('Previous post'), 44001 description: (0,external_wp_i18n_namespaceObject.__)('Displays the post link that precedes the current post.'), 44002 icon: library_previous, 44003 attributes: { 44004 type: 'previous' 44005 }, 44006 scope: ['inserter', 'transform'] 44007 }]; 44008 44009 /** 44010 * Add `isActive` function to all `post-navigation-link` variations, if not defined. 44011 * `isActive` function is used to find a variation match from a created 44012 * Block by providing its attributes. 44013 */ 44014 post_navigation_link_variations_variations.forEach(variation => { 44015 if (variation.isActive) { 44016 return; 44017 } 44018 variation.isActive = (blockAttributes, variationAttributes) => blockAttributes.type === variationAttributes.type; 44019 }); 44020 /* harmony default export */ const post_navigation_link_variations = (post_navigation_link_variations_variations); 44021 44022 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-navigation-link/index.js 44023 /** 44024 * Internal dependencies 44025 */ 44026 44027 const post_navigation_link_metadata = { 44028 $schema: "https://schemas.wp.org/trunk/block.json", 44029 apiVersion: 3, 44030 name: "core/post-navigation-link", 44031 title: "Post Navigation Link", 44032 category: "theme", 44033 description: "Displays the next or previous post link that is adjacent to the current post.", 44034 textdomain: "default", 44035 attributes: { 44036 textAlign: { 44037 type: "string" 44038 }, 44039 type: { 44040 type: "string", 44041 "default": "next" 44042 }, 44043 label: { 44044 type: "string" 44045 }, 44046 showTitle: { 44047 type: "boolean", 44048 "default": false 44049 }, 44050 linkLabel: { 44051 type: "boolean", 44052 "default": false 44053 }, 44054 arrow: { 44055 type: "string", 44056 "default": "none" 44057 }, 44058 taxonomy: { 44059 type: "string", 44060 "default": "" 44061 } 44062 }, 44063 usesContext: ["postType"], 44064 supports: { 44065 reusable: false, 44066 html: false, 44067 color: { 44068 link: true 44069 }, 44070 typography: { 44071 fontSize: true, 44072 lineHeight: true, 44073 __experimentalFontFamily: true, 44074 __experimentalFontWeight: true, 44075 __experimentalFontStyle: true, 44076 __experimentalTextTransform: true, 44077 __experimentalTextDecoration: true, 44078 __experimentalLetterSpacing: true, 44079 __experimentalWritingMode: true, 44080 __experimentalDefaultControls: { 44081 fontSize: true 44082 } 44083 }, 44084 interactivity: { 44085 clientNavigation: true 44086 } 44087 }, 44088 style: "wp-block-post-navigation-link" 44089 }; 44090 44091 44092 const { 44093 name: post_navigation_link_name 44094 } = post_navigation_link_metadata; 44095 44096 const post_navigation_link_settings = { 44097 edit: PostNavigationLinkEdit, 44098 variations: post_navigation_link_variations 44099 }; 44100 const post_navigation_link_init = () => initBlock({ 44101 name: post_navigation_link_name, 44102 metadata: post_navigation_link_metadata, 44103 settings: post_navigation_link_settings 44104 }); 44105 44106 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-template/edit.js 44107 /** 44108 * External dependencies 44109 */ 44110 44111 44112 /** 44113 * WordPress dependencies 44114 */ 44115 44116 44117 44118 44119 44120 44121 44122 44123 44124 44125 const post_template_edit_TEMPLATE = [['core/post-title'], ['core/post-date'], ['core/post-excerpt']]; 44126 function PostTemplateInnerBlocks({ 44127 classList 44128 }) { 44129 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)({ 44130 className: dist_clsx('wp-block-post', classList) 44131 }, { 44132 template: post_template_edit_TEMPLATE, 44133 __unstableDisableLayoutClassNames: true 44134 }); 44135 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", { 44136 ...innerBlocksProps 44137 }); 44138 } 44139 function PostTemplateBlockPreview({ 44140 blocks, 44141 blockContextId, 44142 classList, 44143 isHidden, 44144 setActiveBlockContextId 44145 }) { 44146 const blockPreviewProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseBlockPreview)({ 44147 blocks, 44148 props: { 44149 className: dist_clsx('wp-block-post', classList) 44150 } 44151 }); 44152 const handleOnClick = () => { 44153 setActiveBlockContextId(blockContextId); 44154 }; 44155 const style = { 44156 display: isHidden ? 'none' : undefined 44157 }; 44158 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", { 44159 ...blockPreviewProps, 44160 tabIndex: 0 44161 // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role 44162 , 44163 role: "button", 44164 onClick: handleOnClick, 44165 onKeyPress: handleOnClick, 44166 style: style 44167 }); 44168 } 44169 const MemoizedPostTemplateBlockPreview = (0,external_wp_element_namespaceObject.memo)(PostTemplateBlockPreview); 44170 function PostTemplateEdit({ 44171 setAttributes, 44172 clientId, 44173 context: { 44174 query: { 44175 perPage, 44176 offset = 0, 44177 postType, 44178 order, 44179 orderBy, 44180 author, 44181 search, 44182 exclude, 44183 sticky, 44184 inherit, 44185 taxQuery, 44186 parents, 44187 pages, 44188 format, 44189 // We gather extra query args to pass to the REST API call. 44190 // This way extenders of Query Loop can add their own query args, 44191 // and have accurate previews in the editor. 44192 // Noting though that these args should either be supported by the 44193 // REST API or be handled by custom REST filters like `rest_{$this->post_type}_query`. 44194 ...restQueryArgs 44195 } = {}, 44196 templateSlug, 44197 previewPostType 44198 }, 44199 attributes: { 44200 layout 44201 }, 44202 __unstableLayoutClassNames 44203 }) { 44204 const { 44205 type: layoutType, 44206 columnCount = 3 44207 } = layout || {}; 44208 const [activeBlockContextId, setActiveBlockContextId] = (0,external_wp_element_namespaceObject.useState)(); 44209 const { 44210 posts, 44211 blocks 44212 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 44213 const { 44214 getEntityRecords, 44215 getTaxonomies 44216 } = select(external_wp_coreData_namespaceObject.store); 44217 const { 44218 getBlocks 44219 } = select(external_wp_blockEditor_namespaceObject.store); 44220 const templateCategory = inherit && templateSlug?.startsWith('category-') && getEntityRecords('taxonomy', 'category', { 44221 context: 'view', 44222 per_page: 1, 44223 _fields: ['id'], 44224 slug: templateSlug.replace('category-', '') 44225 }); 44226 const query = { 44227 offset: offset || 0, 44228 order, 44229 orderby: orderBy 44230 }; 44231 // There is no need to build the taxQuery if we inherit. 44232 if (taxQuery && !inherit) { 44233 const taxonomies = getTaxonomies({ 44234 type: postType, 44235 per_page: -1, 44236 context: 'view' 44237 }); 44238 // We have to build the tax query for the REST API and use as 44239 // keys the taxonomies `rest_base` with the `term ids` as values. 44240 const builtTaxQuery = Object.entries(taxQuery).reduce((accumulator, [taxonomySlug, terms]) => { 44241 const taxonomy = taxonomies?.find(({ 44242 slug 44243 }) => slug === taxonomySlug); 44244 if (taxonomy?.rest_base) { 44245 accumulator[taxonomy?.rest_base] = terms; 44246 } 44247 return accumulator; 44248 }, {}); 44249 if (!!Object.keys(builtTaxQuery).length) { 44250 Object.assign(query, builtTaxQuery); 44251 } 44252 } 44253 if (perPage) { 44254 query.per_page = perPage; 44255 } 44256 if (author) { 44257 query.author = author; 44258 } 44259 if (search) { 44260 query.search = search; 44261 } 44262 if (exclude?.length) { 44263 query.exclude = exclude; 44264 } 44265 if (parents?.length) { 44266 query.parent = parents; 44267 } 44268 if (format?.length) { 44269 query.format = format; 44270 } 44271 44272 // If sticky is not set, it will return all posts in the results. 44273 // If sticky is set to `only`, it will limit the results to sticky posts only. 44274 // If it is anything else, it will exclude sticky posts from results. For the record the value stored is `exclude`. 44275 if (sticky) { 44276 query.sticky = sticky === 'only'; 44277 } 44278 // If `inherit` is truthy, adjust conditionally the query to create a better preview. 44279 if (inherit) { 44280 // Change the post-type if needed. 44281 if (templateSlug?.startsWith('archive-')) { 44282 query.postType = templateSlug.replace('archive-', ''); 44283 postType = query.postType; 44284 } else if (templateCategory) { 44285 query.categories = templateCategory[0]?.id; 44286 } 44287 } 44288 // When we preview Query Loop blocks we should prefer the current 44289 // block's postType, which is passed through block context. 44290 const usedPostType = previewPostType || postType; 44291 return { 44292 posts: getEntityRecords('postType', usedPostType, { 44293 ...query, 44294 ...restQueryArgs 44295 }), 44296 blocks: getBlocks(clientId) 44297 }; 44298 }, [perPage, offset, order, orderBy, clientId, author, search, postType, exclude, sticky, inherit, templateSlug, taxQuery, parents, format, restQueryArgs, previewPostType]); 44299 const blockContexts = (0,external_wp_element_namespaceObject.useMemo)(() => posts?.map(post => { 44300 var _post$class_list; 44301 return { 44302 postType: post.type, 44303 postId: post.id, 44304 classList: (_post$class_list = post.class_list) !== null && _post$class_list !== void 0 ? _post$class_list : '' 44305 }; 44306 }), [posts]); 44307 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 44308 className: dist_clsx(__unstableLayoutClassNames, { 44309 [`columns-$columnCount}`]: layoutType === 'grid' && columnCount // Ensure column count is flagged via classname for backwards compatibility. 44310 }) 44311 }); 44312 if (!posts) { 44313 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 44314 ...blockProps, 44315 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) 44316 }); 44317 } 44318 if (!posts.length) { 44319 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("p", { 44320 ...blockProps, 44321 children: [" ", (0,external_wp_i18n_namespaceObject.__)('No results found.')] 44322 }); 44323 } 44324 const setDisplayLayout = newDisplayLayout => setAttributes({ 44325 layout: { 44326 ...layout, 44327 ...newDisplayLayout 44328 } 44329 }); 44330 const displayLayoutControls = [{ 44331 icon: library_list, 44332 title: (0,external_wp_i18n_namespaceObject._x)('List view', 'Post template block display setting'), 44333 onClick: () => setDisplayLayout({ 44334 type: 'default' 44335 }), 44336 isActive: layoutType === 'default' || layoutType === 'constrained' 44337 }, { 44338 icon: library_grid, 44339 title: (0,external_wp_i18n_namespaceObject._x)('Grid view', 'Post template block display setting'), 44340 onClick: () => setDisplayLayout({ 44341 type: 'grid', 44342 columnCount 44343 }), 44344 isActive: layoutType === 'grid' 44345 }]; 44346 44347 // To avoid flicker when switching active block contexts, a preview is rendered 44348 // for each block context, but the preview for the active block context is hidden. 44349 // This ensures that when it is displayed again, the cached rendering of the 44350 // block preview is used, instead of having to re-render the preview from scratch. 44351 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 44352 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 44353 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 44354 controls: displayLayoutControls 44355 }) 44356 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 44357 ...blockProps, 44358 children: blockContexts && blockContexts.map(blockContext => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockContextProvider, { 44359 value: blockContext, 44360 children: [blockContext.postId === (activeBlockContextId || blockContexts[0]?.postId) ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PostTemplateInnerBlocks, { 44361 classList: blockContext.classList 44362 }) : null, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MemoizedPostTemplateBlockPreview, { 44363 blocks: blocks, 44364 blockContextId: blockContext.postId, 44365 classList: blockContext.classList, 44366 setActiveBlockContextId: setActiveBlockContextId, 44367 isHidden: blockContext.postId === (activeBlockContextId || blockContexts[0]?.postId) 44368 })] 44369 }, blockContext.postId)) 44370 })] 44371 }); 44372 } 44373 44374 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-template/save.js 44375 /** 44376 * WordPress dependencies 44377 */ 44378 44379 44380 function PostTemplateSave() { 44381 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 44382 } 44383 44384 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-template/index.js 44385 /** 44386 * WordPress dependencies 44387 */ 44388 44389 44390 /** 44391 * Internal dependencies 44392 */ 44393 44394 const post_template_metadata = { 44395 $schema: "https://schemas.wp.org/trunk/block.json", 44396 apiVersion: 3, 44397 name: "core/post-template", 44398 title: "Post Template", 44399 category: "theme", 44400 parent: ["core/query"], 44401 description: "Contains the block elements used to render a post, like the title, date, featured image, content or excerpt, and more.", 44402 textdomain: "default", 44403 usesContext: ["queryId", "query", "displayLayout", "templateSlug", "previewPostType", "enhancedPagination"], 44404 supports: { 44405 reusable: false, 44406 html: false, 44407 align: ["wide", "full"], 44408 layout: true, 44409 color: { 44410 gradients: true, 44411 link: true, 44412 __experimentalDefaultControls: { 44413 background: true, 44414 text: true 44415 } 44416 }, 44417 typography: { 44418 fontSize: true, 44419 lineHeight: true, 44420 __experimentalFontFamily: true, 44421 __experimentalFontWeight: true, 44422 __experimentalFontStyle: true, 44423 __experimentalTextTransform: true, 44424 __experimentalTextDecoration: true, 44425 __experimentalLetterSpacing: true, 44426 __experimentalDefaultControls: { 44427 fontSize: true 44428 } 44429 }, 44430 spacing: { 44431 blockGap: { 44432 __experimentalDefault: "1.25em" 44433 }, 44434 __experimentalDefaultControls: { 44435 blockGap: true 44436 } 44437 }, 44438 interactivity: { 44439 clientNavigation: true 44440 } 44441 }, 44442 style: "wp-block-post-template", 44443 editorStyle: "wp-block-post-template-editor" 44444 }; 44445 44446 44447 const { 44448 name: post_template_name 44449 } = post_template_metadata; 44450 44451 const post_template_settings = { 44452 icon: library_layout, 44453 edit: PostTemplateEdit, 44454 save: PostTemplateSave 44455 }; 44456 const post_template_init = () => initBlock({ 44457 name: post_template_name, 44458 metadata: post_template_metadata, 44459 settings: post_template_settings 44460 }); 44461 44462 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-categories.js 44463 /** 44464 * WordPress dependencies 44465 */ 44466 44467 44468 const postCategories = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 44469 viewBox: "0 0 24 24", 44470 xmlns: "http://www.w3.org/2000/svg", 44471 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 44472 d: "M20 4H4v1.5h16V4zm-2 9h-3c-1.1 0-2 .9-2 2v3c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2zm.5 5c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3zM4 9.5h9V8H4v1.5zM9 13H6c-1.1 0-2 .9-2 2v3c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2zm.5 5c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3z", 44473 fillRule: "evenodd", 44474 clipRule: "evenodd" 44475 }) 44476 }); 44477 /* harmony default export */ const post_categories = (postCategories); 44478 44479 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-terms/use-post-terms.js 44480 /** 44481 * WordPress dependencies 44482 */ 44483 44484 44485 const use_post_terms_EMPTY_ARRAY = []; 44486 function usePostTerms({ 44487 postId, 44488 term 44489 }) { 44490 const { 44491 slug 44492 } = term; 44493 return (0,external_wp_data_namespaceObject.useSelect)(select => { 44494 const visible = term?.visibility?.publicly_queryable; 44495 if (!visible) { 44496 return { 44497 postTerms: use_post_terms_EMPTY_ARRAY, 44498 isLoading: false, 44499 hasPostTerms: false 44500 }; 44501 } 44502 const { 44503 getEntityRecords, 44504 isResolving 44505 } = select(external_wp_coreData_namespaceObject.store); 44506 const taxonomyArgs = ['taxonomy', slug, { 44507 post: postId, 44508 per_page: -1, 44509 context: 'view' 44510 }]; 44511 const terms = getEntityRecords(...taxonomyArgs); 44512 return { 44513 postTerms: terms, 44514 isLoading: isResolving('getEntityRecords', taxonomyArgs), 44515 hasPostTerms: !!terms?.length 44516 }; 44517 }, [postId, term?.visibility?.publicly_queryable, slug]); 44518 } 44519 44520 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-terms/edit.js 44521 /** 44522 * External dependencies 44523 */ 44524 44525 44526 /** 44527 * WordPress dependencies 44528 */ 44529 44530 44531 44532 44533 44534 44535 44536 44537 /** 44538 * Internal dependencies 44539 */ 44540 44541 44542 // Allowed formats for the prefix and suffix fields. 44543 44544 44545 44546 const ALLOWED_FORMATS = ['core/bold', 'core/image', 'core/italic', 'core/link', 'core/strikethrough', 'core/text-color']; 44547 function PostTermsEdit({ 44548 attributes, 44549 clientId, 44550 context, 44551 isSelected, 44552 setAttributes, 44553 insertBlocksAfter 44554 }) { 44555 const { 44556 term, 44557 textAlign, 44558 separator, 44559 prefix, 44560 suffix 44561 } = attributes; 44562 const { 44563 postId, 44564 postType 44565 } = context; 44566 const selectedTerm = (0,external_wp_data_namespaceObject.useSelect)(select => { 44567 if (!term) { 44568 return {}; 44569 } 44570 const { 44571 getTaxonomy 44572 } = select(external_wp_coreData_namespaceObject.store); 44573 const taxonomy = getTaxonomy(term); 44574 return taxonomy?.visibility?.publicly_queryable ? taxonomy : {}; 44575 }, [term]); 44576 const { 44577 postTerms, 44578 hasPostTerms, 44579 isLoading 44580 } = usePostTerms({ 44581 postId, 44582 term: selectedTerm 44583 }); 44584 const hasPost = postId && postType; 44585 const blockInformation = (0,external_wp_blockEditor_namespaceObject.useBlockDisplayInformation)(clientId); 44586 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 44587 className: dist_clsx({ 44588 [`has-text-align-$textAlign}`]: textAlign, 44589 [`taxonomy-$term}`]: term 44590 }) 44591 }); 44592 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 44593 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 44594 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentToolbar, { 44595 value: textAlign, 44596 onChange: nextAlign => { 44597 setAttributes({ 44598 textAlign: nextAlign 44599 }); 44600 } 44601 }) 44602 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 44603 group: "advanced", 44604 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 44605 __next40pxDefaultSize: true, 44606 __nextHasNoMarginBottom: true, 44607 autoComplete: "off", 44608 label: (0,external_wp_i18n_namespaceObject.__)('Separator'), 44609 value: separator || '', 44610 onChange: nextValue => { 44611 setAttributes({ 44612 separator: nextValue 44613 }); 44614 }, 44615 help: (0,external_wp_i18n_namespaceObject.__)('Enter character(s) used to separate terms.') 44616 }) 44617 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 44618 ...blockProps, 44619 children: [isLoading && hasPost && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}), !isLoading && (isSelected || prefix) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 44620 identifier: "prefix", 44621 allowedFormats: ALLOWED_FORMATS, 44622 className: "wp-block-post-terms__prefix", 44623 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Prefix'), 44624 placeholder: (0,external_wp_i18n_namespaceObject.__)('Prefix') + ' ', 44625 value: prefix, 44626 onChange: value => setAttributes({ 44627 prefix: value 44628 }), 44629 tagName: "span" 44630 }), (!hasPost || !term) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 44631 children: blockInformation.title 44632 }), hasPost && !isLoading && hasPostTerms && postTerms.map(postTerm => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 44633 href: postTerm.link, 44634 onClick: event => event.preventDefault(), 44635 children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(postTerm.name) 44636 }, postTerm.id)).reduce((prev, curr) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 44637 children: [prev, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 44638 className: "wp-block-post-terms__separator", 44639 children: separator || ' ' 44640 }), curr] 44641 })), hasPost && !isLoading && !hasPostTerms && (selectedTerm?.labels?.no_terms || (0,external_wp_i18n_namespaceObject.__)('Term items not found.')), !isLoading && (isSelected || suffix) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 44642 identifier: "suffix", 44643 allowedFormats: ALLOWED_FORMATS, 44644 className: "wp-block-post-terms__suffix", 44645 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Suffix'), 44646 placeholder: ' ' + (0,external_wp_i18n_namespaceObject.__)('Suffix'), 44647 value: suffix, 44648 onChange: value => setAttributes({ 44649 suffix: value 44650 }), 44651 tagName: "span", 44652 __unstableOnSplitAtEnd: () => insertBlocksAfter((0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getDefaultBlockName)())) 44653 })] 44654 })] 44655 }); 44656 } 44657 44658 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/post-terms.js 44659 /** 44660 * WordPress dependencies 44661 */ 44662 44663 44664 const postTerms = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 44665 viewBox: "0 0 24 24", 44666 xmlns: "http://www.w3.org/2000/svg", 44667 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 44668 d: "M8.1 12.3c.1.1.3.3.5.3.2.1.4.1.6.1.2 0 .4 0 .6-.1.2-.1.4-.2.5-.3l3-3c.3-.3.5-.7.5-1.1 0-.4-.2-.8-.5-1.1L9.7 3.5c-.1-.2-.3-.3-.5-.3H5c-.4 0-.8.4-.8.8v4.2c0 .2.1.4.2.5l3.7 3.6zM5.8 4.8h3.1l3.4 3.4v.1l-3 3 .5.5-.7-.5-3.3-3.4V4.8zM4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4z" 44669 }) 44670 }); 44671 /* harmony default export */ const post_terms = (postTerms); 44672 44673 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-terms/hooks.js 44674 /** 44675 * WordPress dependencies 44676 */ 44677 44678 const variationIconMap = { 44679 category: post_categories, 44680 post_tag: post_terms 44681 }; 44682 44683 // We add `icons` to categories and tags. The remaining ones use 44684 // the block's default icon. 44685 function enhanceVariations(settings, name) { 44686 if (name !== 'core/post-terms') { 44687 return settings; 44688 } 44689 const variations = settings.variations.map(variation => { 44690 var _variationIconMap$var; 44691 return { 44692 ...variation, 44693 ...{ 44694 icon: (_variationIconMap$var = variationIconMap[variation.name]) !== null && _variationIconMap$var !== void 0 ? _variationIconMap$var : post_categories 44695 } 44696 }; 44697 }); 44698 return { 44699 ...settings, 44700 variations 44701 }; 44702 } 44703 44704 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-terms/index.js 44705 /** 44706 * WordPress dependencies 44707 */ 44708 44709 44710 44711 /** 44712 * Internal dependencies 44713 */ 44714 44715 const post_terms_metadata = { 44716 $schema: "https://schemas.wp.org/trunk/block.json", 44717 apiVersion: 3, 44718 name: "core/post-terms", 44719 title: "Post Terms", 44720 category: "theme", 44721 description: "Post terms.", 44722 textdomain: "default", 44723 attributes: { 44724 term: { 44725 type: "string" 44726 }, 44727 textAlign: { 44728 type: "string" 44729 }, 44730 separator: { 44731 type: "string", 44732 "default": ", " 44733 }, 44734 prefix: { 44735 type: "string", 44736 "default": "" 44737 }, 44738 suffix: { 44739 type: "string", 44740 "default": "" 44741 } 44742 }, 44743 usesContext: ["postId", "postType"], 44744 example: { 44745 viewportWidth: 350 44746 }, 44747 supports: { 44748 html: false, 44749 color: { 44750 gradients: true, 44751 link: true, 44752 __experimentalDefaultControls: { 44753 background: true, 44754 text: true, 44755 link: true 44756 } 44757 }, 44758 spacing: { 44759 margin: true, 44760 padding: true 44761 }, 44762 typography: { 44763 fontSize: true, 44764 lineHeight: true, 44765 __experimentalFontFamily: true, 44766 __experimentalFontWeight: true, 44767 __experimentalFontStyle: true, 44768 __experimentalTextTransform: true, 44769 __experimentalTextDecoration: true, 44770 __experimentalLetterSpacing: true, 44771 __experimentalDefaultControls: { 44772 fontSize: true 44773 } 44774 }, 44775 interactivity: { 44776 clientNavigation: true 44777 }, 44778 __experimentalBorder: { 44779 radius: true, 44780 color: true, 44781 width: true, 44782 style: true, 44783 __experimentalDefaultControls: { 44784 radius: true, 44785 color: true, 44786 width: true, 44787 style: true 44788 } 44789 } 44790 }, 44791 style: "wp-block-post-terms" 44792 }; 44793 44794 44795 const { 44796 name: post_terms_name 44797 } = post_terms_metadata; 44798 44799 const post_terms_settings = { 44800 icon: post_categories, 44801 edit: PostTermsEdit 44802 }; 44803 const post_terms_init = () => { 44804 (0,external_wp_hooks_namespaceObject.addFilter)('blocks.registerBlockType', 'core/template-part', enhanceVariations); 44805 return initBlock({ 44806 name: post_terms_name, 44807 metadata: post_terms_metadata, 44808 settings: post_terms_settings 44809 }); 44810 }; 44811 44812 ;// CONCATENATED MODULE: external ["wp","wordcount"] 44813 const external_wp_wordcount_namespaceObject = window["wp"]["wordcount"]; 44814 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-time-to-read/edit.js 44815 /** 44816 * External dependencies 44817 */ 44818 44819 44820 /** 44821 * WordPress dependencies 44822 */ 44823 44824 44825 44826 44827 44828 44829 44830 /** 44831 * Average reading rate - based on average taken from 44832 * https://irisreading.com/average-reading-speed-in-various-languages/ 44833 * (Characters/minute used for Chinese rather than words). 44834 */ 44835 44836 44837 44838 const AVERAGE_READING_RATE = 189; 44839 function PostTimeToReadEdit({ 44840 attributes, 44841 setAttributes, 44842 context 44843 }) { 44844 const { 44845 textAlign 44846 } = attributes; 44847 const { 44848 postId, 44849 postType 44850 } = context; 44851 const [contentStructure] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postType, 'content', postId); 44852 const [blocks] = (0,external_wp_coreData_namespaceObject.useEntityBlockEditor)('postType', postType, { 44853 id: postId 44854 }); 44855 const minutesToReadString = (0,external_wp_element_namespaceObject.useMemo)(() => { 44856 // Replicates the logic found in getEditedPostContent(). 44857 let content; 44858 if (contentStructure instanceof Function) { 44859 content = contentStructure({ 44860 blocks 44861 }); 44862 } else if (blocks) { 44863 // If we have parsed blocks already, they should be our source of truth. 44864 // Parsing applies block deprecations and legacy block conversions that 44865 // unparsed content will not have. 44866 content = (0,external_wp_blocks_namespaceObject.__unstableSerializeAndClean)(blocks); 44867 } else { 44868 content = contentStructure; 44869 } 44870 44871 /* 44872 * translators: If your word count is based on single characters (e.g. East Asian characters), 44873 * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'. 44874 * Do not translate into your own language. 44875 */ 44876 const wordCountType = (0,external_wp_i18n_namespaceObject._x)('words', 'Word count type. Do not translate!'); 44877 const minutesToRead = Math.max(1, Math.round((0,external_wp_wordcount_namespaceObject.count)(content || '', wordCountType) / AVERAGE_READING_RATE)); 44878 return (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: the number of minutes to read the post. */ 44879 (0,external_wp_i18n_namespaceObject._n)('%s minute', '%s minutes', minutesToRead), minutesToRead); 44880 }, [contentStructure, blocks]); 44881 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 44882 className: dist_clsx({ 44883 [`has-text-align-$textAlign}`]: textAlign 44884 }) 44885 }); 44886 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 44887 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 44888 group: "block", 44889 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 44890 value: textAlign, 44891 onChange: nextAlign => { 44892 setAttributes({ 44893 textAlign: nextAlign 44894 }); 44895 } 44896 }) 44897 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 44898 ...blockProps, 44899 children: minutesToReadString 44900 })] 44901 }); 44902 } 44903 /* harmony default export */ const post_time_to_read_edit = (PostTimeToReadEdit); 44904 44905 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-time-to-read/icon.js 44906 /** 44907 * WordPress dependencies 44908 */ 44909 44910 44911 /* harmony default export */ const icon = (/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 44912 xmlns: "http://www.w3.org/2000/svg", 44913 width: "24", 44914 height: "24", 44915 viewBox: "0 0 24 24", 44916 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 44917 d: "M12 3c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 16.5c-4.1 0-7.5-3.4-7.5-7.5S7.9 4.5 12 4.5s7.5 3.4 7.5 7.5-3.4 7.5-7.5 7.5zM12 7l-1 5c0 .3.2.6.4.8l4.2 2.8-2.7-4.1L12 7z" 44918 }) 44919 })); 44920 44921 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-time-to-read/index.js 44922 /** 44923 * Internal dependencies 44924 */ 44925 44926 const post_time_to_read_metadata = { 44927 $schema: "https://schemas.wp.org/trunk/block.json", 44928 apiVersion: 3, 44929 __experimental: true, 44930 name: "core/post-time-to-read", 44931 title: "Time To Read", 44932 category: "theme", 44933 description: "Show minutes required to finish reading the post.", 44934 textdomain: "default", 44935 usesContext: ["postId", "postType"], 44936 attributes: { 44937 textAlign: { 44938 type: "string" 44939 } 44940 }, 44941 supports: { 44942 color: { 44943 gradients: true, 44944 __experimentalDefaultControls: { 44945 background: true, 44946 text: true 44947 } 44948 }, 44949 html: false, 44950 spacing: { 44951 margin: true, 44952 padding: true, 44953 __experimentalDefaultControls: { 44954 margin: false, 44955 padding: false 44956 } 44957 }, 44958 typography: { 44959 fontSize: true, 44960 lineHeight: true, 44961 __experimentalFontFamily: true, 44962 __experimentalFontWeight: true, 44963 __experimentalFontStyle: true, 44964 __experimentalTextTransform: true, 44965 __experimentalTextDecoration: true, 44966 __experimentalLetterSpacing: true, 44967 __experimentalDefaultControls: { 44968 fontSize: true 44969 } 44970 }, 44971 interactivity: { 44972 clientNavigation: true 44973 }, 44974 __experimentalBorder: { 44975 radius: true, 44976 color: true, 44977 width: true, 44978 style: true 44979 } 44980 } 44981 }; 44982 44983 44984 const { 44985 name: post_time_to_read_name 44986 } = post_time_to_read_metadata; 44987 44988 const post_time_to_read_settings = { 44989 icon: icon, 44990 edit: post_time_to_read_edit 44991 }; 44992 const post_time_to_read_init = () => initBlock({ 44993 name: post_time_to_read_name, 44994 metadata: post_time_to_read_metadata, 44995 settings: post_time_to_read_settings 44996 }); 44997 44998 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-title/edit.js 44999 /** 45000 * External dependencies 45001 */ 45002 45003 45004 /** 45005 * WordPress dependencies 45006 */ 45007 45008 45009 45010 45011 45012 45013 45014 45015 45016 function PostTitleEdit({ 45017 attributes: { 45018 level, 45019 levelOptions, 45020 textAlign, 45021 isLink, 45022 rel, 45023 linkTarget 45024 }, 45025 setAttributes, 45026 context: { 45027 postType, 45028 postId, 45029 queryId 45030 }, 45031 insertBlocksAfter 45032 }) { 45033 const TagName = level === 0 ? 'p' : `h$level}`; 45034 const isDescendentOfQueryLoop = Number.isFinite(queryId); 45035 const userCanEdit = (0,external_wp_data_namespaceObject.useSelect)(select => { 45036 /** 45037 * useCanEditEntity may trigger an OPTIONS request to the REST API 45038 * via the canUser resolver. However, when the Post Title is a 45039 * descendant of a Query Loop block, the title cannot be edited. In 45040 * order to avoid these unnecessary requests, we call the hook 45041 * without the proper data, resulting in returning early without 45042 * making them. 45043 */ 45044 if (isDescendentOfQueryLoop) { 45045 return false; 45046 } 45047 return select(external_wp_coreData_namespaceObject.store).canUser('update', { 45048 kind: 'postType', 45049 name: postType, 45050 id: postId 45051 }); 45052 }, [isDescendentOfQueryLoop, postType, postId]); 45053 const [rawTitle = '', setTitle, fullTitle] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postType, 'title', postId); 45054 const [link] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postType, 'link', postId); 45055 const onSplitAtEnd = () => { 45056 insertBlocksAfter((0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getDefaultBlockName)())); 45057 }; 45058 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 45059 className: dist_clsx({ 45060 [`has-text-align-$textAlign}`]: textAlign 45061 }) 45062 }); 45063 const blockEditingMode = (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)(); 45064 let titleElement = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 45065 ...blockProps, 45066 children: (0,external_wp_i18n_namespaceObject.__)('Title') 45067 }); 45068 if (postType && postId) { 45069 titleElement = userCanEdit ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.PlainText, { 45070 tagName: TagName, 45071 placeholder: (0,external_wp_i18n_namespaceObject.__)('No title'), 45072 value: rawTitle, 45073 onChange: setTitle, 45074 __experimentalVersion: 2, 45075 __unstableOnSplitAtEnd: onSplitAtEnd, 45076 ...blockProps 45077 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 45078 ...blockProps, 45079 dangerouslySetInnerHTML: { 45080 __html: fullTitle?.rendered 45081 } 45082 }); 45083 } 45084 if (isLink && postType && postId) { 45085 titleElement = userCanEdit ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 45086 ...blockProps, 45087 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.PlainText, { 45088 tagName: "a", 45089 href: link, 45090 target: linkTarget, 45091 rel: rel, 45092 placeholder: !rawTitle.length ? (0,external_wp_i18n_namespaceObject.__)('No title') : null, 45093 value: rawTitle, 45094 onChange: setTitle, 45095 __experimentalVersion: 2, 45096 __unstableOnSplitAtEnd: onSplitAtEnd 45097 }) 45098 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 45099 ...blockProps, 45100 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 45101 href: link, 45102 target: linkTarget, 45103 rel: rel, 45104 onClick: event => event.preventDefault(), 45105 dangerouslySetInnerHTML: { 45106 __html: fullTitle?.rendered 45107 } 45108 }) 45109 }); 45110 } 45111 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 45112 children: [blockEditingMode === 'default' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 45113 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 45114 group: "block", 45115 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.HeadingLevelDropdown, { 45116 value: level, 45117 options: levelOptions, 45118 onChange: newLevel => setAttributes({ 45119 level: newLevel 45120 }) 45121 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 45122 value: textAlign, 45123 onChange: nextAlign => { 45124 setAttributes({ 45125 textAlign: nextAlign 45126 }); 45127 } 45128 })] 45129 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 45130 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 45131 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 45132 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 45133 __nextHasNoMarginBottom: true, 45134 label: (0,external_wp_i18n_namespaceObject.__)('Make title a link'), 45135 onChange: () => setAttributes({ 45136 isLink: !isLink 45137 }), 45138 checked: isLink 45139 }), isLink && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 45140 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 45141 __nextHasNoMarginBottom: true, 45142 label: (0,external_wp_i18n_namespaceObject.__)('Open in new tab'), 45143 onChange: value => setAttributes({ 45144 linkTarget: value ? '_blank' : '_self' 45145 }), 45146 checked: linkTarget === '_blank' 45147 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 45148 __next40pxDefaultSize: true, 45149 __nextHasNoMarginBottom: true, 45150 label: (0,external_wp_i18n_namespaceObject.__)('Link rel'), 45151 value: rel, 45152 onChange: newRel => setAttributes({ 45153 rel: newRel 45154 }) 45155 })] 45156 })] 45157 }) 45158 })] 45159 }), titleElement] 45160 }); 45161 } 45162 45163 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-title/deprecated.js 45164 /** 45165 * Internal dependencies 45166 */ 45167 45168 const post_title_deprecated_v1 = { 45169 attributes: { 45170 textAlign: { 45171 type: 'string' 45172 }, 45173 level: { 45174 type: 'number', 45175 default: 2 45176 }, 45177 isLink: { 45178 type: 'boolean', 45179 default: false 45180 }, 45181 rel: { 45182 type: 'string', 45183 attribute: 'rel', 45184 default: '' 45185 }, 45186 linkTarget: { 45187 type: 'string', 45188 default: '_self' 45189 } 45190 }, 45191 supports: { 45192 align: ['wide', 'full'], 45193 html: false, 45194 color: { 45195 gradients: true, 45196 link: true 45197 }, 45198 spacing: { 45199 margin: true 45200 }, 45201 typography: { 45202 fontSize: true, 45203 lineHeight: true, 45204 __experimentalFontFamily: true, 45205 __experimentalFontWeight: true, 45206 __experimentalFontStyle: true, 45207 __experimentalTextTransform: true 45208 } 45209 }, 45210 save() { 45211 return null; 45212 }, 45213 migrate: migrate_font_family, 45214 isEligible({ 45215 style 45216 }) { 45217 return style?.typography?.fontFamily; 45218 } 45219 }; 45220 45221 /** 45222 * New deprecations need to be placed first 45223 * for them to have higher priority. 45224 * 45225 * Old deprecations may need to be updated as well. 45226 * 45227 * See block-deprecation.md 45228 */ 45229 /* harmony default export */ const post_title_deprecated = ([post_title_deprecated_v1]); 45230 45231 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/post-title/index.js 45232 /** 45233 * WordPress dependencies 45234 */ 45235 45236 45237 /** 45238 * Internal dependencies 45239 */ 45240 45241 const post_title_metadata = { 45242 $schema: "https://schemas.wp.org/trunk/block.json", 45243 apiVersion: 3, 45244 name: "core/post-title", 45245 title: "Title", 45246 category: "theme", 45247 description: "Displays the title of a post, page, or any other content-type.", 45248 textdomain: "default", 45249 usesContext: ["postId", "postType", "queryId"], 45250 attributes: { 45251 textAlign: { 45252 type: "string" 45253 }, 45254 level: { 45255 type: "number", 45256 "default": 2 45257 }, 45258 levelOptions: { 45259 type: "array" 45260 }, 45261 isLink: { 45262 type: "boolean", 45263 "default": false 45264 }, 45265 rel: { 45266 type: "string", 45267 attribute: "rel", 45268 "default": "" 45269 }, 45270 linkTarget: { 45271 type: "string", 45272 "default": "_self" 45273 } 45274 }, 45275 example: { 45276 viewportWidth: 350 45277 }, 45278 supports: { 45279 align: ["wide", "full"], 45280 html: false, 45281 color: { 45282 gradients: true, 45283 link: true, 45284 __experimentalDefaultControls: { 45285 background: true, 45286 text: true, 45287 link: true 45288 } 45289 }, 45290 spacing: { 45291 margin: true, 45292 padding: true 45293 }, 45294 typography: { 45295 fontSize: true, 45296 lineHeight: true, 45297 __experimentalFontFamily: true, 45298 __experimentalFontWeight: true, 45299 __experimentalFontStyle: true, 45300 __experimentalTextTransform: true, 45301 __experimentalTextDecoration: true, 45302 __experimentalLetterSpacing: true, 45303 __experimentalDefaultControls: { 45304 fontSize: true 45305 } 45306 }, 45307 interactivity: { 45308 clientNavigation: true 45309 }, 45310 __experimentalBorder: { 45311 radius: true, 45312 color: true, 45313 width: true, 45314 style: true, 45315 __experimentalDefaultControls: { 45316 radius: true, 45317 color: true, 45318 width: true, 45319 style: true 45320 } 45321 } 45322 }, 45323 style: "wp-block-post-title" 45324 }; 45325 45326 45327 const { 45328 name: post_title_name 45329 } = post_title_metadata; 45330 45331 const post_title_settings = { 45332 icon: library_title, 45333 edit: PostTitleEdit, 45334 deprecated: post_title_deprecated 45335 }; 45336 const post_title_init = () => initBlock({ 45337 name: post_title_name, 45338 metadata: post_title_metadata, 45339 settings: post_title_settings 45340 }); 45341 45342 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/preformatted.js 45343 /** 45344 * WordPress dependencies 45345 */ 45346 45347 45348 const preformatted = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 45349 viewBox: "0 0 24 24", 45350 xmlns: "http://www.w3.org/2000/svg", 45351 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 45352 d: "M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v12zM7 16.5h6V15H7v1.5zm4-4h6V11h-6v1.5zM9 11H7v1.5h2V11zm6 5.5h2V15h-2v1.5z" 45353 }) 45354 }); 45355 /* harmony default export */ const library_preformatted = (preformatted); 45356 45357 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/preformatted/edit.js 45358 /** 45359 * WordPress dependencies 45360 */ 45361 45362 45363 45364 45365 function PreformattedEdit({ 45366 attributes, 45367 mergeBlocks, 45368 setAttributes, 45369 onRemove, 45370 insertBlocksAfter, 45371 style 45372 }) { 45373 const { 45374 content 45375 } = attributes; 45376 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 45377 style 45378 }); 45379 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 45380 tagName: "pre", 45381 identifier: "content", 45382 preserveWhiteSpace: true, 45383 value: content, 45384 onChange: nextContent => { 45385 setAttributes({ 45386 content: nextContent 45387 }); 45388 }, 45389 onRemove: onRemove, 45390 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Preformatted text'), 45391 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write preformatted text…'), 45392 onMerge: mergeBlocks, 45393 ...blockProps, 45394 __unstablePastePlainText: true, 45395 __unstableOnSplitAtDoubleLineEnd: () => insertBlocksAfter((0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getDefaultBlockName)())) 45396 }); 45397 } 45398 45399 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/preformatted/save.js 45400 /** 45401 * WordPress dependencies 45402 */ 45403 45404 45405 function preformatted_save_save({ 45406 attributes 45407 }) { 45408 const { 45409 content 45410 } = attributes; 45411 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("pre", { 45412 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 45413 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 45414 value: content 45415 }) 45416 }); 45417 } 45418 45419 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/preformatted/transforms.js 45420 /** 45421 * WordPress dependencies 45422 */ 45423 45424 const preformatted_transforms_transforms = { 45425 from: [{ 45426 type: 'block', 45427 blocks: ['core/code', 'core/paragraph'], 45428 transform: ({ 45429 content, 45430 anchor 45431 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/preformatted', { 45432 content, 45433 anchor 45434 }) 45435 }, { 45436 type: 'raw', 45437 isMatch: node => node.nodeName === 'PRE' && !(node.children.length === 1 && node.firstChild.nodeName === 'CODE'), 45438 schema: ({ 45439 phrasingContentSchema 45440 }) => ({ 45441 pre: { 45442 children: phrasingContentSchema 45443 } 45444 }) 45445 }], 45446 to: [{ 45447 type: 'block', 45448 blocks: ['core/paragraph'], 45449 transform: attributes => (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', attributes) 45450 }, { 45451 type: 'block', 45452 blocks: ['core/code'], 45453 transform: attributes => (0,external_wp_blocks_namespaceObject.createBlock)('core/code', attributes) 45454 }] 45455 }; 45456 /* harmony default export */ const preformatted_transforms = (preformatted_transforms_transforms); 45457 45458 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/preformatted/index.js 45459 /** 45460 * WordPress dependencies 45461 */ 45462 45463 45464 45465 /** 45466 * Internal dependencies 45467 */ 45468 45469 45470 const preformatted_metadata = { 45471 $schema: "https://schemas.wp.org/trunk/block.json", 45472 apiVersion: 3, 45473 name: "core/preformatted", 45474 title: "Preformatted", 45475 category: "text", 45476 description: "Add text that respects your spacing and tabs, and also allows styling.", 45477 textdomain: "default", 45478 attributes: { 45479 content: { 45480 type: "rich-text", 45481 source: "rich-text", 45482 selector: "pre", 45483 __unstablePreserveWhiteSpace: true, 45484 role: "content" 45485 } 45486 }, 45487 supports: { 45488 anchor: true, 45489 color: { 45490 gradients: true, 45491 __experimentalDefaultControls: { 45492 background: true, 45493 text: true 45494 } 45495 }, 45496 spacing: { 45497 padding: true, 45498 margin: true 45499 }, 45500 typography: { 45501 fontSize: true, 45502 lineHeight: true, 45503 __experimentalFontFamily: true, 45504 __experimentalFontWeight: true, 45505 __experimentalFontStyle: true, 45506 __experimentalTextTransform: true, 45507 __experimentalTextDecoration: true, 45508 __experimentalLetterSpacing: true, 45509 __experimentalDefaultControls: { 45510 fontSize: true 45511 } 45512 }, 45513 interactivity: { 45514 clientNavigation: true 45515 }, 45516 __experimentalBorder: { 45517 radius: true, 45518 color: true, 45519 width: true, 45520 style: true, 45521 __experimentalDefaultControls: { 45522 radius: true, 45523 color: true, 45524 width: true, 45525 style: true 45526 } 45527 } 45528 }, 45529 style: "wp-block-preformatted" 45530 }; 45531 45532 45533 const { 45534 name: preformatted_name 45535 } = preformatted_metadata; 45536 45537 const preformatted_settings = { 45538 icon: library_preformatted, 45539 example: { 45540 attributes: { 45541 /* eslint-disable @wordpress/i18n-no-collapsible-whitespace */ 45542 // translators: Sample content for the Preformatted block. Can be replaced with a more locale-adequate work. 45543 content: (0,external_wp_i18n_namespaceObject.__)('EXT. XANADU - FAINT DAWN - 1940 (MINIATURE)\nWindow, very small in the distance, illuminated.\nAll around this is an almost totally black screen. Now, as the camera moves slowly towards the window which is almost a postage stamp in the frame, other forms appear;') 45544 /* eslint-enable @wordpress/i18n-no-collapsible-whitespace */ 45545 } 45546 }, 45547 transforms: preformatted_transforms, 45548 edit: PreformattedEdit, 45549 save: preformatted_save_save, 45550 merge(attributes, attributesToMerge) { 45551 return { 45552 content: attributes.content + '\n\n' + attributesToMerge.content 45553 }; 45554 } 45555 }; 45556 const preformatted_init = () => initBlock({ 45557 name: preformatted_name, 45558 metadata: preformatted_metadata, 45559 settings: preformatted_settings 45560 }); 45561 45562 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/pullquote.js 45563 /** 45564 * WordPress dependencies 45565 */ 45566 45567 45568 const pullquote = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 45569 viewBox: "0 0 24 24", 45570 xmlns: "http://www.w3.org/2000/svg", 45571 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 45572 d: "M18 8H6c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2zm.5 6c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5v-4c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v4zM4 4v1.5h16V4H4zm0 16h16v-1.5H4V20z" 45573 }) 45574 }); 45575 /* harmony default export */ const library_pullquote = (pullquote); 45576 45577 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/pullquote/shared.js 45578 const SOLID_COLOR_CLASS = `is-style-solid-color`; 45579 45580 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/pullquote/deprecated.js 45581 /** 45582 * External dependencies 45583 */ 45584 45585 45586 /** 45587 * WordPress dependencies 45588 */ 45589 45590 45591 45592 /** 45593 * Internal dependencies 45594 */ 45595 45596 45597 45598 const pullquote_deprecated_blockAttributes = { 45599 value: { 45600 type: 'string', 45601 source: 'html', 45602 selector: 'blockquote', 45603 multiline: 'p' 45604 }, 45605 citation: { 45606 type: 'string', 45607 source: 'html', 45608 selector: 'cite', 45609 default: '' 45610 }, 45611 mainColor: { 45612 type: 'string' 45613 }, 45614 customMainColor: { 45615 type: 'string' 45616 }, 45617 textColor: { 45618 type: 'string' 45619 }, 45620 customTextColor: { 45621 type: 'string' 45622 } 45623 }; 45624 function parseBorderColor(styleString) { 45625 if (!styleString) { 45626 return; 45627 } 45628 const matches = styleString.match(/border-color:([^;]+)[;]?/); 45629 if (matches && matches[1]) { 45630 return matches[1]; 45631 } 45632 } 45633 function multilineToInline(value) { 45634 value = value || `<p></p>`; 45635 const padded = `</p>$value}<p>`; 45636 const values = padded.split(`</p><p>`); 45637 values.shift(); 45638 values.pop(); 45639 return values.join('<br>'); 45640 } 45641 const pullquote_deprecated_v5 = { 45642 attributes: { 45643 value: { 45644 type: 'string', 45645 source: 'html', 45646 selector: 'blockquote', 45647 multiline: 'p', 45648 role: 'content' 45649 }, 45650 citation: { 45651 type: 'string', 45652 source: 'html', 45653 selector: 'cite', 45654 default: '', 45655 role: 'content' 45656 }, 45657 textAlign: { 45658 type: 'string' 45659 } 45660 }, 45661 save({ 45662 attributes 45663 }) { 45664 const { 45665 textAlign, 45666 citation, 45667 value 45668 } = attributes; 45669 const shouldShowCitation = !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation); 45670 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 45671 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 45672 className: dist_clsx({ 45673 [`has-text-align-$textAlign}`]: textAlign 45674 }) 45675 }), 45676 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("blockquote", { 45677 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 45678 value: value, 45679 multiline: true 45680 }), shouldShowCitation && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 45681 tagName: "cite", 45682 value: citation 45683 })] 45684 }) 45685 }); 45686 }, 45687 migrate({ 45688 value, 45689 ...attributes 45690 }) { 45691 return { 45692 value: multilineToInline(value), 45693 ...attributes 45694 }; 45695 } 45696 }; 45697 45698 // TODO: this is ripe for a bit of a clean up according to the example in https://developer.wordpress.org/block-editor/reference-guides/block-api/block-deprecation/#example 45699 45700 const pullquote_deprecated_v4 = { 45701 attributes: { 45702 ...pullquote_deprecated_blockAttributes 45703 }, 45704 save({ 45705 attributes 45706 }) { 45707 const { 45708 mainColor, 45709 customMainColor, 45710 customTextColor, 45711 textColor, 45712 value, 45713 citation, 45714 className 45715 } = attributes; 45716 const isSolidColorStyle = className?.includes(SOLID_COLOR_CLASS); 45717 let figureClasses, figureStyles; 45718 45719 // Is solid color style 45720 if (isSolidColorStyle) { 45721 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', mainColor); 45722 figureClasses = dist_clsx({ 45723 'has-background': backgroundClass || customMainColor, 45724 [backgroundClass]: backgroundClass 45725 }); 45726 figureStyles = { 45727 backgroundColor: backgroundClass ? undefined : customMainColor 45728 }; 45729 // Is normal style and a custom color is being used ( we can set a style directly with its value) 45730 } else if (customMainColor) { 45731 figureStyles = { 45732 borderColor: customMainColor 45733 }; 45734 } 45735 const blockquoteTextColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 45736 const blockquoteClasses = dist_clsx({ 45737 'has-text-color': textColor || customTextColor, 45738 [blockquoteTextColorClass]: blockquoteTextColorClass 45739 }); 45740 const blockquoteStyles = blockquoteTextColorClass ? undefined : { 45741 color: customTextColor 45742 }; 45743 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 45744 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 45745 className: figureClasses, 45746 style: figureStyles 45747 }), 45748 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("blockquote", { 45749 className: blockquoteClasses, 45750 style: blockquoteStyles, 45751 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 45752 value: value, 45753 multiline: true 45754 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 45755 tagName: "cite", 45756 value: citation 45757 })] 45758 }) 45759 }); 45760 }, 45761 migrate({ 45762 value, 45763 className, 45764 mainColor, 45765 customMainColor, 45766 customTextColor, 45767 ...attributes 45768 }) { 45769 const isSolidColorStyle = className?.includes(SOLID_COLOR_CLASS); 45770 let style; 45771 if (customMainColor) { 45772 if (!isSolidColorStyle) { 45773 // Block supports: Set style.border.color if a deprecated block has a default style and a `customMainColor` attribute. 45774 style = { 45775 border: { 45776 color: customMainColor 45777 } 45778 }; 45779 } else { 45780 // Block supports: Set style.color.background if a deprecated block has a solid style and a `customMainColor` attribute. 45781 style = { 45782 color: { 45783 background: customMainColor 45784 } 45785 }; 45786 } 45787 } 45788 45789 // Block supports: Set style.color.text if a deprecated block has a `customTextColor` attribute. 45790 if (customTextColor && style) { 45791 style.color = { 45792 ...style.color, 45793 text: customTextColor 45794 }; 45795 } 45796 return { 45797 value: multilineToInline(value), 45798 className, 45799 backgroundColor: isSolidColorStyle ? mainColor : undefined, 45800 borderColor: isSolidColorStyle ? undefined : mainColor, 45801 textAlign: isSolidColorStyle ? 'left' : undefined, 45802 style, 45803 ...attributes 45804 }; 45805 } 45806 }; 45807 const pullquote_deprecated_v3 = { 45808 attributes: { 45809 ...pullquote_deprecated_blockAttributes, 45810 // figureStyle is an attribute that never existed. 45811 // We are using it as a way to access the styles previously applied to the figure. 45812 figureStyle: { 45813 source: 'attribute', 45814 selector: 'figure', 45815 attribute: 'style' 45816 } 45817 }, 45818 save({ 45819 attributes 45820 }) { 45821 const { 45822 mainColor, 45823 customMainColor, 45824 textColor, 45825 customTextColor, 45826 value, 45827 citation, 45828 className, 45829 figureStyle 45830 } = attributes; 45831 const isSolidColorStyle = className?.includes(SOLID_COLOR_CLASS); 45832 let figureClasses, figureStyles; 45833 45834 // Is solid color style 45835 if (isSolidColorStyle) { 45836 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', mainColor); 45837 figureClasses = dist_clsx({ 45838 'has-background': backgroundClass || customMainColor, 45839 [backgroundClass]: backgroundClass 45840 }); 45841 figureStyles = { 45842 backgroundColor: backgroundClass ? undefined : customMainColor 45843 }; 45844 // Is normal style and a custom color is being used ( we can set a style directly with its value) 45845 } else if (customMainColor) { 45846 figureStyles = { 45847 borderColor: customMainColor 45848 }; 45849 // If normal style and a named color are being used, we need to retrieve the color value to set the style, 45850 // as there is no expectation that themes create classes that set border colors. 45851 } else if (mainColor) { 45852 // Previously here we queried the color settings to know the color value 45853 // of a named color. This made the save function impure and the block was refactored, 45854 // because meanwhile a change in the editor made it impossible to query color settings in the save function. 45855 // Here instead of querying the color settings to know the color value, we retrieve the value 45856 // directly from the style previously serialized. 45857 const borderColor = parseBorderColor(figureStyle); 45858 figureStyles = { 45859 borderColor 45860 }; 45861 } 45862 const blockquoteTextColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 45863 const blockquoteClasses = (textColor || customTextColor) && dist_clsx('has-text-color', { 45864 [blockquoteTextColorClass]: blockquoteTextColorClass 45865 }); 45866 const blockquoteStyles = blockquoteTextColorClass ? undefined : { 45867 color: customTextColor 45868 }; 45869 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 45870 className: figureClasses, 45871 style: figureStyles, 45872 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("blockquote", { 45873 className: blockquoteClasses, 45874 style: blockquoteStyles, 45875 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 45876 value: value, 45877 multiline: true 45878 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 45879 tagName: "cite", 45880 value: citation 45881 })] 45882 }) 45883 }); 45884 }, 45885 migrate({ 45886 value, 45887 className, 45888 figureStyle, 45889 mainColor, 45890 customMainColor, 45891 customTextColor, 45892 ...attributes 45893 }) { 45894 const isSolidColorStyle = className?.includes(SOLID_COLOR_CLASS); 45895 let style; 45896 if (customMainColor) { 45897 if (!isSolidColorStyle) { 45898 // Block supports: Set style.border.color if a deprecated block has a default style and a `customMainColor` attribute. 45899 style = { 45900 border: { 45901 color: customMainColor 45902 } 45903 }; 45904 } else { 45905 // Block supports: Set style.color.background if a deprecated block has a solid style and a `customMainColor` attribute. 45906 style = { 45907 color: { 45908 background: customMainColor 45909 } 45910 }; 45911 } 45912 } 45913 45914 // Block supports: Set style.color.text if a deprecated block has a `customTextColor` attribute. 45915 if (customTextColor && style) { 45916 style.color = { 45917 ...style.color, 45918 text: customTextColor 45919 }; 45920 } 45921 // If is the default style, and a main color is set, 45922 // migrate the main color value into a custom border color. 45923 // The custom border color value is retrieved by parsing the figure styles. 45924 if (!isSolidColorStyle && mainColor && figureStyle) { 45925 const borderColor = parseBorderColor(figureStyle); 45926 if (borderColor) { 45927 return { 45928 value: multilineToInline(value), 45929 ...attributes, 45930 className, 45931 // Block supports: Set style.border.color if a deprecated block has `mainColor`, inline border CSS and is not a solid color style. 45932 style: { 45933 border: { 45934 color: borderColor 45935 } 45936 } 45937 }; 45938 } 45939 } 45940 return { 45941 value: multilineToInline(value), 45942 className, 45943 backgroundColor: isSolidColorStyle ? mainColor : undefined, 45944 borderColor: isSolidColorStyle ? undefined : mainColor, 45945 textAlign: isSolidColorStyle ? 'left' : undefined, 45946 style, 45947 ...attributes 45948 }; 45949 } 45950 }; 45951 const pullquote_deprecated_v2 = { 45952 attributes: pullquote_deprecated_blockAttributes, 45953 save({ 45954 attributes 45955 }) { 45956 const { 45957 mainColor, 45958 customMainColor, 45959 textColor, 45960 customTextColor, 45961 value, 45962 citation, 45963 className 45964 } = attributes; 45965 const isSolidColorStyle = className?.includes(SOLID_COLOR_CLASS); 45966 let figureClass, figureStyles; 45967 // Is solid color style 45968 if (isSolidColorStyle) { 45969 figureClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', mainColor); 45970 if (!figureClass) { 45971 figureStyles = { 45972 backgroundColor: customMainColor 45973 }; 45974 } 45975 // Is normal style and a custom color is being used ( we can set a style directly with its value) 45976 } else if (customMainColor) { 45977 figureStyles = { 45978 borderColor: customMainColor 45979 }; 45980 // Is normal style and a named color is being used, we need to retrieve the color value to set the style, 45981 // as there is no expectation that themes create classes that set border colors. 45982 } else if (mainColor) { 45983 var _select$getSettings$c; 45984 const colors = (_select$getSettings$c = (0,external_wp_data_namespaceObject.select)(external_wp_blockEditor_namespaceObject.store).getSettings().colors) !== null && _select$getSettings$c !== void 0 ? _select$getSettings$c : []; 45985 const colorObject = (0,external_wp_blockEditor_namespaceObject.getColorObjectByAttributeValues)(colors, mainColor); 45986 figureStyles = { 45987 borderColor: colorObject.color 45988 }; 45989 } 45990 const blockquoteTextColorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', textColor); 45991 const blockquoteClasses = textColor || customTextColor ? dist_clsx('has-text-color', { 45992 [blockquoteTextColorClass]: blockquoteTextColorClass 45993 }) : undefined; 45994 const blockquoteStyle = blockquoteTextColorClass ? undefined : { 45995 color: customTextColor 45996 }; 45997 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 45998 className: figureClass, 45999 style: figureStyles, 46000 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("blockquote", { 46001 className: blockquoteClasses, 46002 style: blockquoteStyle, 46003 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 46004 value: value, 46005 multiline: true 46006 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 46007 tagName: "cite", 46008 value: citation 46009 })] 46010 }) 46011 }); 46012 }, 46013 migrate({ 46014 value, 46015 className, 46016 mainColor, 46017 customMainColor, 46018 customTextColor, 46019 ...attributes 46020 }) { 46021 const isSolidColorStyle = className?.includes(SOLID_COLOR_CLASS); 46022 let style = {}; 46023 if (customMainColor) { 46024 if (!isSolidColorStyle) { 46025 // Block supports: Set style.border.color if a deprecated block has a default style and a `customMainColor` attribute. 46026 style = { 46027 border: { 46028 color: customMainColor 46029 } 46030 }; 46031 } else { 46032 // Block supports: Set style.color.background if a deprecated block has a solid style and a `customMainColor` attribute. 46033 style = { 46034 color: { 46035 background: customMainColor 46036 } 46037 }; 46038 } 46039 } 46040 46041 // Block supports: Set style.color.text if a deprecated block has a `customTextColor` attribute. 46042 if (customTextColor && style) { 46043 style.color = { 46044 ...style.color, 46045 text: customTextColor 46046 }; 46047 } 46048 return { 46049 value: multilineToInline(value), 46050 className, 46051 backgroundColor: isSolidColorStyle ? mainColor : undefined, 46052 borderColor: isSolidColorStyle ? undefined : mainColor, 46053 textAlign: isSolidColorStyle ? 'left' : undefined, 46054 style, 46055 ...attributes 46056 }; 46057 } 46058 }; 46059 const pullquote_deprecated_v1 = { 46060 attributes: { 46061 ...pullquote_deprecated_blockAttributes 46062 }, 46063 save({ 46064 attributes 46065 }) { 46066 const { 46067 value, 46068 citation 46069 } = attributes; 46070 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("blockquote", { 46071 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 46072 value: value, 46073 multiline: true 46074 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 46075 tagName: "cite", 46076 value: citation 46077 })] 46078 }); 46079 }, 46080 migrate({ 46081 value, 46082 ...attributes 46083 }) { 46084 return { 46085 value: multilineToInline(value), 46086 ...attributes 46087 }; 46088 } 46089 }; 46090 const deprecated_v0 = { 46091 attributes: { 46092 ...pullquote_deprecated_blockAttributes, 46093 citation: { 46094 type: 'string', 46095 source: 'html', 46096 selector: 'footer' 46097 }, 46098 align: { 46099 type: 'string', 46100 default: 'none' 46101 } 46102 }, 46103 save({ 46104 attributes 46105 }) { 46106 const { 46107 value, 46108 citation, 46109 align 46110 } = attributes; 46111 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("blockquote", { 46112 className: `align$align}`, 46113 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 46114 value: value, 46115 multiline: true 46116 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 46117 tagName: "footer", 46118 value: citation 46119 })] 46120 }); 46121 }, 46122 migrate({ 46123 value, 46124 ...attributes 46125 }) { 46126 return { 46127 value: multilineToInline(value), 46128 ...attributes 46129 }; 46130 } 46131 }; 46132 46133 /** 46134 * New deprecations need to be placed first 46135 * for them to have higher priority. 46136 * 46137 * Old deprecations may need to be updated as well. 46138 * 46139 * See block-deprecation.md 46140 */ 46141 /* harmony default export */ const pullquote_deprecated = ([pullquote_deprecated_v5, pullquote_deprecated_v4, pullquote_deprecated_v3, pullquote_deprecated_v2, pullquote_deprecated_v1, deprecated_v0]); 46142 46143 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/pullquote/figure.js 46144 const Figure = 'figure'; 46145 46146 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/pullquote/blockquote.js 46147 const BlockQuote = 'blockquote'; 46148 46149 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/pullquote/edit.js 46150 /** 46151 * External dependencies 46152 */ 46153 46154 46155 /** 46156 * WordPress dependencies 46157 */ 46158 46159 46160 46161 46162 46163 /** 46164 * Internal dependencies 46165 */ 46166 46167 46168 46169 46170 46171 const isWebPlatform = external_wp_element_namespaceObject.Platform.OS === 'web'; 46172 function PullQuoteEdit({ 46173 attributes, 46174 setAttributes, 46175 isSelected, 46176 insertBlocksAfter 46177 }) { 46178 const { 46179 textAlign, 46180 citation, 46181 value 46182 } = attributes; 46183 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 46184 className: dist_clsx({ 46185 [`has-text-align-$textAlign}`]: textAlign 46186 }) 46187 }); 46188 const shouldShowCitation = !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) || isSelected; 46189 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 46190 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 46191 group: "block", 46192 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 46193 value: textAlign, 46194 onChange: nextAlign => { 46195 setAttributes({ 46196 textAlign: nextAlign 46197 }); 46198 } 46199 }) 46200 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Figure, { 46201 ...blockProps, 46202 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(BlockQuote, { 46203 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 46204 identifier: "value", 46205 tagName: "p", 46206 value: value, 46207 onChange: nextValue => setAttributes({ 46208 value: nextValue 46209 }), 46210 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Pullquote text'), 46211 placeholder: 46212 // translators: placeholder text used for the quote 46213 (0,external_wp_i18n_namespaceObject.__)('Add quote'), 46214 textAlign: "center" 46215 }), shouldShowCitation && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 46216 identifier: "citation", 46217 tagName: isWebPlatform ? 'cite' : undefined, 46218 style: { 46219 display: 'block' 46220 }, 46221 value: citation, 46222 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Pullquote citation text'), 46223 placeholder: 46224 // translators: placeholder text used for the citation 46225 (0,external_wp_i18n_namespaceObject.__)('Add citation'), 46226 onChange: nextCitation => setAttributes({ 46227 citation: nextCitation 46228 }), 46229 className: "wp-block-pullquote__citation", 46230 __unstableMobileNoFocusOnMount: true, 46231 textAlign: "center", 46232 __unstableOnSplitAtEnd: () => insertBlocksAfter((0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getDefaultBlockName)())) 46233 })] 46234 }) 46235 })] 46236 }); 46237 } 46238 /* harmony default export */ const pullquote_edit = (PullQuoteEdit); 46239 46240 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/pullquote/save.js 46241 /** 46242 * External dependencies 46243 */ 46244 46245 46246 /** 46247 * WordPress dependencies 46248 */ 46249 46250 46251 46252 function pullquote_save_save({ 46253 attributes 46254 }) { 46255 const { 46256 textAlign, 46257 citation, 46258 value 46259 } = attributes; 46260 const shouldShowCitation = !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation); 46261 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("figure", { 46262 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 46263 className: dist_clsx({ 46264 [`has-text-align-$textAlign}`]: textAlign 46265 }) 46266 }), 46267 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("blockquote", { 46268 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 46269 tagName: "p", 46270 value: value 46271 }), shouldShowCitation && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 46272 tagName: "cite", 46273 value: citation 46274 })] 46275 }) 46276 }); 46277 } 46278 46279 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/pullquote/transforms.js 46280 /** 46281 * WordPress dependencies 46282 */ 46283 46284 46285 const pullquote_transforms_transforms = { 46286 from: [{ 46287 type: 'block', 46288 isMultiBlock: true, 46289 blocks: ['core/paragraph'], 46290 transform: attributes => { 46291 return (0,external_wp_blocks_namespaceObject.createBlock)('core/pullquote', { 46292 value: (0,external_wp_richText_namespaceObject.toHTMLString)({ 46293 value: (0,external_wp_richText_namespaceObject.join)(attributes.map(({ 46294 content 46295 }) => (0,external_wp_richText_namespaceObject.create)({ 46296 html: content 46297 })), '\n') 46298 }), 46299 anchor: attributes.anchor 46300 }); 46301 } 46302 }, { 46303 type: 'block', 46304 blocks: ['core/heading'], 46305 transform: ({ 46306 content, 46307 anchor 46308 }) => { 46309 return (0,external_wp_blocks_namespaceObject.createBlock)('core/pullquote', { 46310 value: content, 46311 anchor 46312 }); 46313 } 46314 }], 46315 to: [{ 46316 type: 'block', 46317 blocks: ['core/paragraph'], 46318 transform: ({ 46319 value, 46320 citation 46321 }) => { 46322 const paragraphs = []; 46323 if (value) { 46324 paragraphs.push((0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 46325 content: value 46326 })); 46327 } 46328 if (citation) { 46329 paragraphs.push((0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 46330 content: citation 46331 })); 46332 } 46333 if (paragraphs.length === 0) { 46334 return (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 46335 content: '' 46336 }); 46337 } 46338 return paragraphs; 46339 } 46340 }, { 46341 type: 'block', 46342 blocks: ['core/heading'], 46343 transform: ({ 46344 value, 46345 citation 46346 }) => { 46347 // If there is no pullquote content, use the citation as the 46348 // content of the resulting heading. A nonexistent citation 46349 // will result in an empty heading. 46350 if (!value) { 46351 return (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', { 46352 content: citation 46353 }); 46354 } 46355 const headingBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', { 46356 content: value 46357 }); 46358 if (!citation) { 46359 return headingBlock; 46360 } 46361 return [headingBlock, (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', { 46362 content: citation 46363 })]; 46364 } 46365 }] 46366 }; 46367 /* harmony default export */ const pullquote_transforms = (pullquote_transforms_transforms); 46368 46369 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/pullquote/index.js 46370 /** 46371 * WordPress dependencies 46372 */ 46373 46374 46375 46376 /** 46377 * Internal dependencies 46378 */ 46379 46380 46381 46382 const pullquote_metadata = { 46383 $schema: "https://schemas.wp.org/trunk/block.json", 46384 apiVersion: 3, 46385 name: "core/pullquote", 46386 title: "Pullquote", 46387 category: "text", 46388 description: "Give special visual emphasis to a quote from your text.", 46389 textdomain: "default", 46390 attributes: { 46391 value: { 46392 type: "rich-text", 46393 source: "rich-text", 46394 selector: "p", 46395 role: "content" 46396 }, 46397 citation: { 46398 type: "rich-text", 46399 source: "rich-text", 46400 selector: "cite", 46401 role: "content" 46402 }, 46403 textAlign: { 46404 type: "string" 46405 } 46406 }, 46407 supports: { 46408 anchor: true, 46409 align: ["left", "right", "wide", "full"], 46410 background: { 46411 backgroundImage: true, 46412 backgroundSize: true, 46413 __experimentalDefaultControls: { 46414 backgroundImage: true 46415 } 46416 }, 46417 color: { 46418 gradients: true, 46419 background: true, 46420 link: true, 46421 __experimentalDefaultControls: { 46422 background: true, 46423 text: true 46424 } 46425 }, 46426 dimensions: { 46427 minHeight: true, 46428 __experimentalDefaultControls: { 46429 minHeight: false 46430 } 46431 }, 46432 spacing: { 46433 margin: true, 46434 padding: true 46435 }, 46436 typography: { 46437 fontSize: true, 46438 lineHeight: true, 46439 __experimentalFontFamily: true, 46440 __experimentalFontWeight: true, 46441 __experimentalFontStyle: true, 46442 __experimentalTextTransform: true, 46443 __experimentalTextDecoration: true, 46444 __experimentalLetterSpacing: true, 46445 __experimentalDefaultControls: { 46446 fontSize: true 46447 } 46448 }, 46449 __experimentalBorder: { 46450 color: true, 46451 radius: true, 46452 style: true, 46453 width: true, 46454 __experimentalDefaultControls: { 46455 color: true, 46456 radius: true, 46457 style: true, 46458 width: true 46459 } 46460 }, 46461 __experimentalStyle: { 46462 typography: { 46463 fontSize: "1.5em", 46464 lineHeight: "1.6" 46465 } 46466 }, 46467 interactivity: { 46468 clientNavigation: true 46469 } 46470 }, 46471 editorStyle: "wp-block-pullquote-editor", 46472 style: "wp-block-pullquote" 46473 }; 46474 46475 46476 const { 46477 name: pullquote_name 46478 } = pullquote_metadata; 46479 46480 const pullquote_settings = { 46481 icon: library_pullquote, 46482 example: { 46483 attributes: { 46484 value: 46485 // translators: Quote serving as example for the Pullquote block. Attributed to Matt Mullenweg. 46486 (0,external_wp_i18n_namespaceObject.__)('One of the hardest things to do in technology is disrupt yourself.'), 46487 citation: (0,external_wp_i18n_namespaceObject.__)('Matt Mullenweg') 46488 } 46489 }, 46490 transforms: pullquote_transforms, 46491 edit: pullquote_edit, 46492 save: pullquote_save_save, 46493 deprecated: pullquote_deprecated 46494 }; 46495 const pullquote_init = () => initBlock({ 46496 name: pullquote_name, 46497 metadata: pullquote_metadata, 46498 settings: pullquote_settings 46499 }); 46500 46501 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/loop.js 46502 /** 46503 * WordPress dependencies 46504 */ 46505 46506 46507 const loop = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 46508 viewBox: "0 0 24 24", 46509 xmlns: "http://www.w3.org/2000/svg", 46510 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 46511 d: "M18.1823 11.6392C18.1823 13.0804 17.0139 14.2487 15.5727 14.2487C14.3579 14.2487 13.335 13.4179 13.0453 12.2922L13.0377 12.2625L13.0278 12.2335L12.3985 10.377L12.3942 10.3785C11.8571 8.64997 10.246 7.39405 8.33961 7.39405C5.99509 7.39405 4.09448 9.29465 4.09448 11.6392C4.09448 13.9837 5.99509 15.8843 8.33961 15.8843C8.88499 15.8843 9.40822 15.781 9.88943 15.5923L9.29212 14.0697C8.99812 14.185 8.67729 14.2487 8.33961 14.2487C6.89838 14.2487 5.73003 13.0804 5.73003 11.6392C5.73003 10.1979 6.89838 9.02959 8.33961 9.02959C9.55444 9.02959 10.5773 9.86046 10.867 10.9862L10.8772 10.9836L11.4695 12.7311C11.9515 14.546 13.6048 15.8843 15.5727 15.8843C17.9172 15.8843 19.8178 13.9837 19.8178 11.6392C19.8178 9.29465 17.9172 7.39404 15.5727 7.39404C15.0287 7.39404 14.5066 7.4968 14.0264 7.6847L14.6223 9.20781C14.9158 9.093 15.2358 9.02959 15.5727 9.02959C17.0139 9.02959 18.1823 10.1979 18.1823 11.6392Z" 46512 }) 46513 }); 46514 /* harmony default export */ const library_loop = (loop); 46515 46516 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/utils.js 46517 /** 46518 * WordPress dependencies 46519 */ 46520 46521 46522 46523 46524 46525 46526 46527 /** @typedef {import('@wordpress/blocks').WPBlockVariation} WPBlockVariation */ 46528 46529 /** 46530 * @typedef IHasNameAndId 46531 * @property {string|number} id The entity's id. 46532 * @property {string} name The entity's name. 46533 */ 46534 46535 /** 46536 * The object used in Query block that contains info and helper mappings 46537 * from an array of IHasNameAndId objects. 46538 * 46539 * @typedef {Object} QueryEntitiesInfo 46540 * @property {IHasNameAndId[]} entities The array of entities. 46541 * @property {Object<string, IHasNameAndId>} mapById Object mapping with the id as key and the entity as value. 46542 * @property {Object<string, IHasNameAndId>} mapByName Object mapping with the name as key and the entity as value. 46543 * @property {string[]} names Array with the entities' names. 46544 */ 46545 46546 /** 46547 * Returns a helper object with mapping from Objects that implement 46548 * the `IHasNameAndId` interface. The returned object is used for 46549 * integration with `FormTokenField` component. 46550 * 46551 * @param {IHasNameAndId[]} entities The entities to extract of helper object. 46552 * @return {QueryEntitiesInfo} The object with the entities information. 46553 */ 46554 const getEntitiesInfo = entities => { 46555 const mapping = entities?.reduce((accumulator, entity) => { 46556 const { 46557 mapById, 46558 mapByName, 46559 names 46560 } = accumulator; 46561 mapById[entity.id] = entity; 46562 mapByName[entity.name] = entity; 46563 names.push(entity.name); 46564 return accumulator; 46565 }, { 46566 mapById: {}, 46567 mapByName: {}, 46568 names: [] 46569 }); 46570 return { 46571 entities, 46572 ...mapping 46573 }; 46574 }; 46575 46576 /** 46577 * Helper util to return a value from a certain path of the object. 46578 * Path is specified as a string of properties, separated by dots, 46579 * for example: "parent.child". 46580 * 46581 * @param {Object} object Input object. 46582 * @param {string} path Path to the object property. 46583 * @return {*} Value of the object property at the specified path. 46584 */ 46585 const getValueFromObjectPath = (object, path) => { 46586 const normalizedPath = path.split('.'); 46587 let value = object; 46588 normalizedPath.forEach(fieldName => { 46589 value = value?.[fieldName]; 46590 }); 46591 return value; 46592 }; 46593 46594 /** 46595 * Helper util to map records to add a `name` prop from a 46596 * provided path, in order to handle all entities in the same 46597 * fashion(implementing`IHasNameAndId` interface). 46598 * 46599 * @param {Object[]} entities The array of entities. 46600 * @param {string} path The path to map a `name` property from the entity. 46601 * @return {IHasNameAndId[]} An array of enitities that now implement the `IHasNameAndId` interface. 46602 */ 46603 const mapToIHasNameAndId = (entities, path) => { 46604 return (entities || []).map(entity => ({ 46605 ...entity, 46606 name: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(getValueFromObjectPath(entity, path)) 46607 })); 46608 }; 46609 46610 /** 46611 * Returns a helper object that contains: 46612 * 1. An `options` object from the available post types, to be passed to a `SelectControl`. 46613 * 2. A helper map with available taxonomies per post type. 46614 * 3. A helper map with post format support per post type. 46615 * 46616 * @return {Object} The helper object related to post types. 46617 */ 46618 const usePostTypes = () => { 46619 const postTypes = (0,external_wp_data_namespaceObject.useSelect)(select => { 46620 const { 46621 getPostTypes 46622 } = select(external_wp_coreData_namespaceObject.store); 46623 const excludedPostTypes = ['attachment']; 46624 const filteredPostTypes = getPostTypes({ 46625 per_page: -1 46626 })?.filter(({ 46627 viewable, 46628 slug 46629 }) => viewable && !excludedPostTypes.includes(slug)); 46630 return filteredPostTypes; 46631 }, []); 46632 const postTypesTaxonomiesMap = (0,external_wp_element_namespaceObject.useMemo)(() => { 46633 if (!postTypes?.length) { 46634 return; 46635 } 46636 return postTypes.reduce((accumulator, type) => { 46637 accumulator[type.slug] = type.taxonomies; 46638 return accumulator; 46639 }, {}); 46640 }, [postTypes]); 46641 const postTypesSelectOptions = (0,external_wp_element_namespaceObject.useMemo)(() => (postTypes || []).map(({ 46642 labels, 46643 slug 46644 }) => ({ 46645 label: labels.singular_name, 46646 value: slug 46647 })), [postTypes]); 46648 const postTypeFormatSupportMap = (0,external_wp_element_namespaceObject.useMemo)(() => { 46649 if (!postTypes?.length) { 46650 return {}; 46651 } 46652 return postTypes.reduce((accumulator, type) => { 46653 accumulator[type.slug] = type.supports?.['post-formats'] || false; 46654 return accumulator; 46655 }, {}); 46656 }, [postTypes]); 46657 return { 46658 postTypesTaxonomiesMap, 46659 postTypesSelectOptions, 46660 postTypeFormatSupportMap 46661 }; 46662 }; 46663 46664 /** 46665 * Hook that returns the taxonomies associated with a specific post type. 46666 * 46667 * @param {string} postType The post type from which to retrieve the associated taxonomies. 46668 * @return {Object[]} An array of the associated taxonomies. 46669 */ 46670 const useTaxonomies = postType => { 46671 const taxonomies = (0,external_wp_data_namespaceObject.useSelect)(select => { 46672 const { 46673 getTaxonomies, 46674 getPostType 46675 } = select(external_wp_coreData_namespaceObject.store); 46676 // Does the post type have taxonomies? 46677 if (getPostType(postType)?.taxonomies?.length > 0) { 46678 return getTaxonomies({ 46679 type: postType, 46680 per_page: -1 46681 }); 46682 } 46683 return []; 46684 }, [postType]); 46685 return (0,external_wp_element_namespaceObject.useMemo)(() => { 46686 return taxonomies?.filter(({ 46687 visibility 46688 }) => !!visibility?.publicly_queryable); 46689 }, [taxonomies]); 46690 }; 46691 46692 /** 46693 * Hook that returns whether a specific post type is hierarchical. 46694 * 46695 * @param {string} postType The post type to check. 46696 * @return {boolean} Whether a specific post type is hierarchical. 46697 */ 46698 function useIsPostTypeHierarchical(postType) { 46699 return (0,external_wp_data_namespaceObject.useSelect)(select => { 46700 const type = select(external_wp_coreData_namespaceObject.store).getPostType(postType); 46701 return type?.viewable && type?.hierarchical; 46702 }, [postType]); 46703 } 46704 46705 /** 46706 * Hook that returns the query properties' names defined by the active 46707 * block variation, to determine which block's filters to show. 46708 * 46709 * @param {Object} attributes Block attributes. 46710 * @return {string[]} An array of the query attributes. 46711 */ 46712 function useAllowedControls(attributes) { 46713 return (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blocks_namespaceObject.store).getActiveBlockVariation('core/query', attributes)?.allowedControls, [attributes]); 46714 } 46715 function isControlAllowed(allowedControls, key) { 46716 // Every controls is allowed if the list is not defined. 46717 if (!allowedControls) { 46718 return true; 46719 } 46720 return allowedControls.includes(key); 46721 } 46722 46723 /** 46724 * Clones a pattern's blocks and then recurses over that list of blocks, 46725 * transforming them to retain some `query` attribute properties. 46726 * For now we retain the `postType` and `inherit` properties as they are 46727 * fundamental for the expected functionality of the block and don't affect 46728 * its design and presentation. 46729 * 46730 * Returns the cloned/transformed blocks and array of existing Query Loop 46731 * client ids for further manipulation, in order to avoid multiple recursions. 46732 * 46733 * @param {WPBlock[]} blocks The list of blocks to look through and transform(mutate). 46734 * @param {Record<string,*>} queryBlockAttributes The existing Query Loop's attributes. 46735 * @return {{ newBlocks: WPBlock[], queryClientIds: string[] }} An object with the cloned/transformed blocks and all the Query Loop clients from these blocks. 46736 */ 46737 const getTransformedBlocksFromPattern = (blocks, queryBlockAttributes) => { 46738 const { 46739 query: { 46740 postType, 46741 inherit 46742 }, 46743 namespace 46744 } = queryBlockAttributes; 46745 const clonedBlocks = blocks.map(block => (0,external_wp_blocks_namespaceObject.cloneBlock)(block)); 46746 const queryClientIds = []; 46747 const blocksQueue = [...clonedBlocks]; 46748 while (blocksQueue.length > 0) { 46749 const block = blocksQueue.shift(); 46750 if (block.name === 'core/query') { 46751 block.attributes.query = { 46752 ...block.attributes.query, 46753 postType, 46754 inherit 46755 }; 46756 if (namespace) { 46757 block.attributes.namespace = namespace; 46758 } 46759 queryClientIds.push(block.clientId); 46760 } 46761 block.innerBlocks?.forEach(innerBlock => { 46762 blocksQueue.push(innerBlock); 46763 }); 46764 } 46765 return { 46766 newBlocks: clonedBlocks, 46767 queryClientIds 46768 }; 46769 }; 46770 46771 /** 46772 * Helper hook that determines if there is an active variation of the block 46773 * and if there are available specific patterns for this variation. 46774 * If there are, these patterns are going to be the only ones suggested to 46775 * the user in setup and replace flow, without including the default ones 46776 * for Query Loop. 46777 * 46778 * If there are no such patterns, the default ones for Query Loop are going 46779 * to be suggested. 46780 * 46781 * @param {string} clientId The block's client ID. 46782 * @param {Object} attributes The block's attributes. 46783 * @return {string} The block name to be used in the patterns suggestions. 46784 */ 46785 function useBlockNameForPatterns(clientId, attributes) { 46786 const activeVariationName = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blocks_namespaceObject.store).getActiveBlockVariation('core/query', attributes)?.name, [attributes]); 46787 const blockName = `core/query/$activeVariationName}`; 46788 const hasActiveVariationPatterns = (0,external_wp_data_namespaceObject.useSelect)(select => { 46789 if (!activeVariationName) { 46790 return false; 46791 } 46792 const { 46793 getBlockRootClientId, 46794 getPatternsByBlockTypes 46795 } = select(external_wp_blockEditor_namespaceObject.store); 46796 const rootClientId = getBlockRootClientId(clientId); 46797 const activePatterns = getPatternsByBlockTypes(blockName, rootClientId); 46798 return activePatterns.length > 0; 46799 }, [clientId, activeVariationName, blockName]); 46800 return hasActiveVariationPatterns ? blockName : 'core/query'; 46801 } 46802 46803 /** 46804 * Helper hook that determines if there is an active variation of the block 46805 * and if there are available specific scoped `block` variations connected with 46806 * this variation. 46807 * 46808 * If there are, these variations are going to be the only ones suggested 46809 * to the user in setup flow when clicking to `start blank`, without including 46810 * the default ones for Query Loop. 46811 * 46812 * If there are no such scoped `block` variations, the default ones for Query 46813 * Loop are going to be suggested. 46814 * 46815 * The way we determine such variations is with the convention that they have the `namespace` 46816 * attribute defined as an array. This array should contain the names(`name` property) of any 46817 * variations they want to be connected to. 46818 * For example, if we have a `Query Loop` scoped `inserter` variation with the name `products`, 46819 * we can connect a scoped `block` variation by setting its `namespace` attribute to `['products']`. 46820 * If the user selects this variation, the `namespace` attribute will be overridden by the 46821 * main `inserter` variation. 46822 * 46823 * @param {Object} attributes The block's attributes. 46824 * @return {WPBlockVariation[]} The block variations to be suggested in setup flow, when clicking to `start blank`. 46825 */ 46826 function useScopedBlockVariations(attributes) { 46827 const { 46828 activeVariationName, 46829 blockVariations 46830 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 46831 const { 46832 getActiveBlockVariation, 46833 getBlockVariations 46834 } = select(external_wp_blocks_namespaceObject.store); 46835 return { 46836 activeVariationName: getActiveBlockVariation('core/query', attributes)?.name, 46837 blockVariations: getBlockVariations('core/query', 'block') 46838 }; 46839 }, [attributes]); 46840 const variations = (0,external_wp_element_namespaceObject.useMemo)(() => { 46841 // Filter out the variations that have defined a `namespace` attribute, 46842 // which means they are 'connected' to specific variations of the block. 46843 const isNotConnected = variation => !variation.attributes?.namespace; 46844 if (!activeVariationName) { 46845 return blockVariations.filter(isNotConnected); 46846 } 46847 const connectedVariations = blockVariations.filter(variation => variation.attributes?.namespace?.includes(activeVariationName)); 46848 if (!!connectedVariations.length) { 46849 return connectedVariations; 46850 } 46851 return blockVariations.filter(isNotConnected); 46852 }, [activeVariationName, blockVariations]); 46853 return variations; 46854 } 46855 46856 /** 46857 * Hook that returns the block patterns for a specific block type. 46858 * 46859 * @param {string} clientId The block's client ID. 46860 * @param {string} name The block type name. 46861 * @return {Object[]} An array of valid block patterns. 46862 */ 46863 const usePatterns = (clientId, name) => { 46864 return (0,external_wp_data_namespaceObject.useSelect)(select => { 46865 const { 46866 getBlockRootClientId, 46867 getPatternsByBlockTypes 46868 } = select(external_wp_blockEditor_namespaceObject.store); 46869 const rootClientId = getBlockRootClientId(clientId); 46870 return getPatternsByBlockTypes(name, rootClientId); 46871 }, [name, clientId]); 46872 }; 46873 46874 /** 46875 * The object returned by useUnsupportedBlocks with info about the type of 46876 * unsupported blocks present inside the Query block. 46877 * 46878 * @typedef {Object} UnsupportedBlocksInfo 46879 * @property {boolean} hasBlocksFromPlugins True if blocks from plugins are present. 46880 * @property {boolean} hasPostContentBlock True if a 'core/post-content' block is present. 46881 * @property {boolean} hasUnsupportedBlocks True if there are any unsupported blocks. 46882 */ 46883 46884 /** 46885 * Hook that returns an object with information about the unsupported blocks 46886 * present inside a Query Loop with the given `clientId`. The returned object 46887 * contains props that are true when a certain type of unsupported block is 46888 * present. 46889 * 46890 * @param {string} clientId The block's client ID. 46891 * @return {UnsupportedBlocksInfo} The object containing the information. 46892 */ 46893 const useUnsupportedBlocks = clientId => { 46894 return (0,external_wp_data_namespaceObject.useSelect)(select => { 46895 const { 46896 getClientIdsOfDescendants, 46897 getBlockName 46898 } = select(external_wp_blockEditor_namespaceObject.store); 46899 const blocks = {}; 46900 getClientIdsOfDescendants(clientId).forEach(descendantClientId => { 46901 const blockName = getBlockName(descendantClientId); 46902 /* 46903 * Client side navigation can be true in two states: 46904 * - supports.interactivity = true; 46905 * - supports.interactivity.clientNavigation = true; 46906 */ 46907 const blockSupportsInteractivity = Object.is((0,external_wp_blocks_namespaceObject.getBlockSupport)(blockName, 'interactivity'), true); 46908 const blockSupportsInteractivityClientNavigation = (0,external_wp_blocks_namespaceObject.getBlockSupport)(blockName, 'interactivity.clientNavigation'); 46909 const blockInteractivity = blockSupportsInteractivity || blockSupportsInteractivityClientNavigation; 46910 if (!blockInteractivity) { 46911 blocks.hasBlocksFromPlugins = true; 46912 } else if (blockName === 'core/post-content') { 46913 blocks.hasPostContentBlock = true; 46914 } 46915 }); 46916 blocks.hasUnsupportedBlocks = blocks.hasBlocksFromPlugins || blocks.hasPostContentBlock; 46917 return blocks; 46918 }, [clientId]); 46919 }; 46920 46921 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/inspector-controls/enhanced-pagination-control.js 46922 /** 46923 * WordPress dependencies 46924 */ 46925 46926 46927 46928 /** 46929 * Internal dependencies 46930 */ 46931 46932 46933 46934 function EnhancedPaginationControl({ 46935 enhancedPagination, 46936 setAttributes, 46937 clientId 46938 }) { 46939 const { 46940 hasUnsupportedBlocks 46941 } = useUnsupportedBlocks(clientId); 46942 const fullPageClientSideNavigation = window.__experimentalFullPageClientSideNavigation; 46943 let help = (0,external_wp_i18n_namespaceObject.__)('Browsing between pages requires a full page reload.'); 46944 if (fullPageClientSideNavigation) { 46945 help = (0,external_wp_i18n_namespaceObject.__)('Experimental full-page client-side navigation setting enabled.'); 46946 } else if (enhancedPagination) { 46947 help = (0,external_wp_i18n_namespaceObject.__)('Reload the full page—instead of just the posts list—when visitors navigate between pages.'); 46948 } else if (hasUnsupportedBlocks) { 46949 help = (0,external_wp_i18n_namespaceObject.__)('Enhancement disabled because there are non-compatible blocks inside the Query block.'); 46950 } 46951 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 46952 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 46953 __nextHasNoMarginBottom: true, 46954 label: (0,external_wp_i18n_namespaceObject.__)('Reload full page'), 46955 help: help, 46956 checked: !enhancedPagination && !fullPageClientSideNavigation, 46957 disabled: hasUnsupportedBlocks || fullPageClientSideNavigation, 46958 onChange: value => { 46959 setAttributes({ 46960 enhancedPagination: !value 46961 }); 46962 } 46963 }) 46964 }); 46965 } 46966 46967 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/query-toolbar.js 46968 /** 46969 * WordPress dependencies 46970 */ 46971 46972 46973 46974 /** 46975 * Internal dependencies 46976 */ 46977 46978 46979 46980 function QueryToolbar({ 46981 openPatternSelectionModal, 46982 name, 46983 clientId 46984 }) { 46985 const hasPatterns = !!usePatterns(clientId, name).length; 46986 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 46987 children: hasPatterns && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 46988 className: "wp-block-template-part__block-control-group", 46989 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 46990 onClick: openPatternSelectionModal, 46991 children: (0,external_wp_i18n_namespaceObject.__)('Replace') 46992 }) 46993 }) 46994 }); 46995 } 46996 46997 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/inspector-controls/order-control.js 46998 /** 46999 * WordPress dependencies 47000 */ 47001 47002 47003 47004 const orderOptions = [{ 47005 label: (0,external_wp_i18n_namespaceObject.__)('Newest to oldest'), 47006 value: 'date/desc' 47007 }, { 47008 label: (0,external_wp_i18n_namespaceObject.__)('Oldest to newest'), 47009 value: 'date/asc' 47010 }, { 47011 /* translators: Label for ordering posts by title in ascending order. */ 47012 label: (0,external_wp_i18n_namespaceObject.__)('A → Z'), 47013 value: 'title/asc' 47014 }, { 47015 /* translators: Label for ordering posts by title in descending order. */ 47016 label: (0,external_wp_i18n_namespaceObject.__)('Z → A'), 47017 value: 'title/desc' 47018 }]; 47019 function OrderControl({ 47020 order, 47021 orderBy, 47022 onChange 47023 }) { 47024 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 47025 __nextHasNoMarginBottom: true, 47026 __next40pxDefaultSize: true, 47027 label: (0,external_wp_i18n_namespaceObject.__)('Order by'), 47028 value: `$orderBy}/$order}`, 47029 options: orderOptions, 47030 onChange: value => { 47031 const [newOrderBy, newOrder] = value.split('/'); 47032 onChange({ 47033 order: newOrder, 47034 orderBy: newOrderBy 47035 }); 47036 } 47037 }); 47038 } 47039 /* harmony default export */ const order_control = (OrderControl); 47040 47041 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/inspector-controls/author-control.js 47042 /** 47043 * WordPress dependencies 47044 */ 47045 47046 47047 47048 47049 47050 /** 47051 * Internal dependencies 47052 */ 47053 47054 47055 const author_control_AUTHORS_QUERY = { 47056 who: 'authors', 47057 per_page: -1, 47058 _fields: 'id,name', 47059 context: 'view' 47060 }; 47061 function AuthorControl({ 47062 value, 47063 onChange 47064 }) { 47065 const authorsList = (0,external_wp_data_namespaceObject.useSelect)(select => { 47066 const { 47067 getUsers 47068 } = select(external_wp_coreData_namespaceObject.store); 47069 return getUsers(author_control_AUTHORS_QUERY); 47070 }, []); 47071 if (!authorsList) { 47072 return null; 47073 } 47074 const authorsInfo = getEntitiesInfo(authorsList); 47075 /** 47076 * We need to normalize the value because the block operates on a 47077 * comma(`,`) separated string value and `FormTokenFiels` needs an 47078 * array. 47079 */ 47080 const normalizedValue = !value ? [] : value.toString().split(','); 47081 // Returns only the existing authors ids. This prevents the component 47082 // from crashing in the editor, when non existing ids are provided. 47083 const sanitizedValue = normalizedValue.reduce((accumulator, authorId) => { 47084 const author = authorsInfo.mapById[authorId]; 47085 if (author) { 47086 accumulator.push({ 47087 id: authorId, 47088 value: author.name 47089 }); 47090 } 47091 return accumulator; 47092 }, []); 47093 const getIdByValue = (entitiesMappedByName, authorValue) => { 47094 const id = authorValue?.id || entitiesMappedByName[authorValue]?.id; 47095 if (id) { 47096 return id; 47097 } 47098 }; 47099 const onAuthorChange = newValue => { 47100 const ids = Array.from(newValue.reduce((accumulator, author) => { 47101 // Verify that new values point to existing entities. 47102 const id = getIdByValue(authorsInfo.mapByName, author); 47103 if (id) { 47104 accumulator.add(id); 47105 } 47106 return accumulator; 47107 }, new Set())); 47108 onChange({ 47109 author: ids.join(',') 47110 }); 47111 }; 47112 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FormTokenField, { 47113 label: (0,external_wp_i18n_namespaceObject.__)('Authors'), 47114 value: sanitizedValue, 47115 suggestions: authorsInfo.names, 47116 onChange: onAuthorChange, 47117 __experimentalShowHowTo: false, 47118 __nextHasNoMarginBottom: true, 47119 __next40pxDefaultSize: true 47120 }); 47121 } 47122 /* harmony default export */ const author_control = (AuthorControl); 47123 47124 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/inspector-controls/parent-control.js 47125 /** 47126 * WordPress dependencies 47127 */ 47128 47129 47130 47131 47132 47133 47134 47135 /** 47136 * Internal dependencies 47137 */ 47138 47139 47140 const parent_control_EMPTY_ARRAY = []; 47141 const BASE_QUERY = { 47142 order: 'asc', 47143 _fields: 'id,title', 47144 context: 'view' 47145 }; 47146 function ParentControl({ 47147 parents, 47148 postType, 47149 onChange 47150 }) { 47151 const [search, setSearch] = (0,external_wp_element_namespaceObject.useState)(''); 47152 const [value, setValue] = (0,external_wp_element_namespaceObject.useState)(parent_control_EMPTY_ARRAY); 47153 const [suggestions, setSuggestions] = (0,external_wp_element_namespaceObject.useState)(parent_control_EMPTY_ARRAY); 47154 const debouncedSearch = (0,external_wp_compose_namespaceObject.useDebounce)(setSearch, 250); 47155 const { 47156 searchResults, 47157 searchHasResolved 47158 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 47159 if (!search) { 47160 return { 47161 searchResults: parent_control_EMPTY_ARRAY, 47162 searchHasResolved: true 47163 }; 47164 } 47165 const { 47166 getEntityRecords, 47167 hasFinishedResolution 47168 } = select(external_wp_coreData_namespaceObject.store); 47169 const selectorArgs = ['postType', postType, { 47170 ...BASE_QUERY, 47171 search, 47172 orderby: 'relevance', 47173 exclude: parents, 47174 per_page: 20 47175 }]; 47176 return { 47177 searchResults: getEntityRecords(...selectorArgs), 47178 searchHasResolved: hasFinishedResolution('getEntityRecords', selectorArgs) 47179 }; 47180 }, [search, parents]); 47181 const currentParents = (0,external_wp_data_namespaceObject.useSelect)(select => { 47182 if (!parents?.length) { 47183 return parent_control_EMPTY_ARRAY; 47184 } 47185 const { 47186 getEntityRecords 47187 } = select(external_wp_coreData_namespaceObject.store); 47188 return getEntityRecords('postType', postType, { 47189 ...BASE_QUERY, 47190 include: parents, 47191 per_page: parents.length 47192 }); 47193 }, [parents]); 47194 // Update the `value` state only after the selectors are resolved 47195 // to avoid emptying the input when we're changing parents. 47196 (0,external_wp_element_namespaceObject.useEffect)(() => { 47197 if (!parents?.length) { 47198 setValue(parent_control_EMPTY_ARRAY); 47199 } 47200 if (!currentParents?.length) { 47201 return; 47202 } 47203 const currentParentsInfo = getEntitiesInfo(mapToIHasNameAndId(currentParents, 'title.rendered')); 47204 // Returns only the existing entity ids. This prevents the component 47205 // from crashing in the editor, when non existing ids are provided. 47206 const sanitizedValue = parents.reduce((accumulator, id) => { 47207 const entity = currentParentsInfo.mapById[id]; 47208 if (entity) { 47209 accumulator.push({ 47210 id, 47211 value: entity.name 47212 }); 47213 } 47214 return accumulator; 47215 }, []); 47216 setValue(sanitizedValue); 47217 }, [parents, currentParents]); 47218 const entitiesInfo = (0,external_wp_element_namespaceObject.useMemo)(() => { 47219 if (!searchResults?.length) { 47220 return parent_control_EMPTY_ARRAY; 47221 } 47222 return getEntitiesInfo(mapToIHasNameAndId(searchResults, 'title.rendered')); 47223 }, [searchResults]); 47224 // Update suggestions only when the query has resolved. 47225 (0,external_wp_element_namespaceObject.useEffect)(() => { 47226 if (!searchHasResolved) { 47227 return; 47228 } 47229 setSuggestions(entitiesInfo.names); 47230 }, [entitiesInfo.names, searchHasResolved]); 47231 const getIdByValue = (entitiesMappedByName, entity) => { 47232 const id = entity?.id || entitiesMappedByName?.[entity]?.id; 47233 if (id) { 47234 return id; 47235 } 47236 }; 47237 const onParentChange = newValue => { 47238 const ids = Array.from(newValue.reduce((accumulator, entity) => { 47239 // Verify that new values point to existing entities. 47240 const id = getIdByValue(entitiesInfo.mapByName, entity); 47241 if (id) { 47242 accumulator.add(id); 47243 } 47244 return accumulator; 47245 }, new Set())); 47246 setSuggestions(parent_control_EMPTY_ARRAY); 47247 onChange({ 47248 parents: ids 47249 }); 47250 }; 47251 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FormTokenField, { 47252 __next40pxDefaultSize: true, 47253 label: (0,external_wp_i18n_namespaceObject.__)('Parents'), 47254 value: value, 47255 onInputChange: debouncedSearch, 47256 suggestions: suggestions, 47257 onChange: onParentChange, 47258 __experimentalShowHowTo: false, 47259 __nextHasNoMarginBottom: true 47260 }); 47261 } 47262 /* harmony default export */ const parent_control = (ParentControl); 47263 47264 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/inspector-controls/taxonomy-controls.js 47265 /** 47266 * WordPress dependencies 47267 */ 47268 47269 47270 47271 47272 47273 47274 47275 /** 47276 * Internal dependencies 47277 */ 47278 47279 47280 const taxonomy_controls_EMPTY_ARRAY = []; 47281 const taxonomy_controls_BASE_QUERY = { 47282 order: 'asc', 47283 _fields: 'id,name', 47284 context: 'view' 47285 }; 47286 47287 // Helper function to get the term id based on user input in terms `FormTokenField`. 47288 const getTermIdByTermValue = (terms, termValue) => { 47289 // First we check for exact match by `term.id` or case sensitive `term.name` match. 47290 const termId = termValue?.id || terms?.find(term => term.name === termValue)?.id; 47291 if (termId) { 47292 return termId; 47293 } 47294 47295 /** 47296 * Here we make an extra check for entered terms in a non case sensitive way, 47297 * to match user expectations, due to `FormTokenField` behaviour that shows 47298 * suggestions which are case insensitive. 47299 * 47300 * Although WP tries to discourage users to add terms with the same name (case insensitive), 47301 * it's still possible if you manually change the name, as long as the terms have different slugs. 47302 * In this edge case we always apply the first match from the terms list. 47303 */ 47304 const termValueLower = termValue.toLocaleLowerCase(); 47305 return terms?.find(term => term.name.toLocaleLowerCase() === termValueLower)?.id; 47306 }; 47307 function TaxonomyControls({ 47308 onChange, 47309 query 47310 }) { 47311 const { 47312 postType, 47313 taxQuery 47314 } = query; 47315 const taxonomies = useTaxonomies(postType); 47316 if (!taxonomies || taxonomies.length === 0) { 47317 return null; 47318 } 47319 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, { 47320 spacing: 4, 47321 children: taxonomies.map(taxonomy => { 47322 const termIds = taxQuery?.[taxonomy.slug] || []; 47323 const handleChange = newTermIds => onChange({ 47324 taxQuery: { 47325 ...taxQuery, 47326 [taxonomy.slug]: newTermIds 47327 } 47328 }); 47329 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TaxonomyItem, { 47330 taxonomy: taxonomy, 47331 termIds: termIds, 47332 onChange: handleChange 47333 }, taxonomy.slug); 47334 }) 47335 }); 47336 } 47337 47338 /** 47339 * Renders a `FormTokenField` for a given taxonomy. 47340 * 47341 * @param {Object} props The props for the component. 47342 * @param {Object} props.taxonomy The taxonomy object. 47343 * @param {number[]} props.termIds An array with the block's term ids for the given taxonomy. 47344 * @param {Function} props.onChange Callback `onChange` function. 47345 * @return {JSX.Element} The rendered component. 47346 */ 47347 function TaxonomyItem({ 47348 taxonomy, 47349 termIds, 47350 onChange 47351 }) { 47352 const [search, setSearch] = (0,external_wp_element_namespaceObject.useState)(''); 47353 const [value, setValue] = (0,external_wp_element_namespaceObject.useState)(taxonomy_controls_EMPTY_ARRAY); 47354 const [suggestions, setSuggestions] = (0,external_wp_element_namespaceObject.useState)(taxonomy_controls_EMPTY_ARRAY); 47355 const debouncedSearch = (0,external_wp_compose_namespaceObject.useDebounce)(setSearch, 250); 47356 const { 47357 searchResults, 47358 searchHasResolved 47359 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 47360 if (!search) { 47361 return { 47362 searchResults: taxonomy_controls_EMPTY_ARRAY, 47363 searchHasResolved: true 47364 }; 47365 } 47366 const { 47367 getEntityRecords, 47368 hasFinishedResolution 47369 } = select(external_wp_coreData_namespaceObject.store); 47370 const selectorArgs = ['taxonomy', taxonomy.slug, { 47371 ...taxonomy_controls_BASE_QUERY, 47372 search, 47373 orderby: 'name', 47374 exclude: termIds, 47375 per_page: 20 47376 }]; 47377 return { 47378 searchResults: getEntityRecords(...selectorArgs), 47379 searchHasResolved: hasFinishedResolution('getEntityRecords', selectorArgs) 47380 }; 47381 }, [search, termIds]); 47382 // `existingTerms` are the ones fetched from the API and their type is `{ id: number; name: string }`. 47383 // They are used to extract the terms' names to populate the `FormTokenField` properly 47384 // and to sanitize the provided `termIds`, by setting only the ones that exist. 47385 const existingTerms = (0,external_wp_data_namespaceObject.useSelect)(select => { 47386 if (!termIds?.length) { 47387 return taxonomy_controls_EMPTY_ARRAY; 47388 } 47389 const { 47390 getEntityRecords 47391 } = select(external_wp_coreData_namespaceObject.store); 47392 return getEntityRecords('taxonomy', taxonomy.slug, { 47393 ...taxonomy_controls_BASE_QUERY, 47394 include: termIds, 47395 per_page: termIds.length 47396 }); 47397 }, [termIds]); 47398 // Update the `value` state only after the selectors are resolved 47399 // to avoid emptying the input when we're changing terms. 47400 (0,external_wp_element_namespaceObject.useEffect)(() => { 47401 if (!termIds?.length) { 47402 setValue(taxonomy_controls_EMPTY_ARRAY); 47403 } 47404 if (!existingTerms?.length) { 47405 return; 47406 } 47407 // Returns only the existing entity ids. This prevents the component 47408 // from crashing in the editor, when non existing ids are provided. 47409 const sanitizedValue = termIds.reduce((accumulator, id) => { 47410 const entity = existingTerms.find(term => term.id === id); 47411 if (entity) { 47412 accumulator.push({ 47413 id, 47414 value: entity.name 47415 }); 47416 } 47417 return accumulator; 47418 }, []); 47419 setValue(sanitizedValue); 47420 }, [termIds, existingTerms]); 47421 // Update suggestions only when the query has resolved. 47422 (0,external_wp_element_namespaceObject.useEffect)(() => { 47423 if (!searchHasResolved) { 47424 return; 47425 } 47426 setSuggestions(searchResults.map(result => result.name)); 47427 }, [searchResults, searchHasResolved]); 47428 const onTermsChange = newTermValues => { 47429 const newTermIds = new Set(); 47430 for (const termValue of newTermValues) { 47431 const termId = getTermIdByTermValue(searchResults, termValue); 47432 if (termId) { 47433 newTermIds.add(termId); 47434 } 47435 } 47436 setSuggestions(taxonomy_controls_EMPTY_ARRAY); 47437 onChange(Array.from(newTermIds)); 47438 }; 47439 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 47440 className: "block-library-query-inspector__taxonomy-control", 47441 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FormTokenField, { 47442 label: taxonomy.name, 47443 value: value, 47444 onInputChange: debouncedSearch, 47445 suggestions: suggestions, 47446 displayTransform: external_wp_htmlEntities_namespaceObject.decodeEntities, 47447 onChange: onTermsChange, 47448 __experimentalShowHowTo: false, 47449 __nextHasNoMarginBottom: true, 47450 __next40pxDefaultSize: true 47451 }) 47452 }); 47453 } 47454 47455 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/inspector-controls/format-controls.js 47456 /** 47457 * WordPress dependencies 47458 */ 47459 47460 47461 47462 47463 47464 // All WP post formats, sorted alphabetically by translated name. 47465 // Value is the post format slug. Label is the name. 47466 47467 const POST_FORMATS = [{ 47468 value: 'aside', 47469 label: (0,external_wp_i18n_namespaceObject.__)('Aside') 47470 }, { 47471 value: 'audio', 47472 label: (0,external_wp_i18n_namespaceObject.__)('Audio') 47473 }, { 47474 value: 'chat', 47475 label: (0,external_wp_i18n_namespaceObject.__)('Chat') 47476 }, { 47477 value: 'gallery', 47478 label: (0,external_wp_i18n_namespaceObject.__)('Gallery') 47479 }, { 47480 value: 'image', 47481 label: (0,external_wp_i18n_namespaceObject.__)('Image') 47482 }, { 47483 value: 'link', 47484 label: (0,external_wp_i18n_namespaceObject.__)('Link') 47485 }, { 47486 value: 'quote', 47487 label: (0,external_wp_i18n_namespaceObject.__)('Quote') 47488 }, { 47489 value: 'standard', 47490 label: (0,external_wp_i18n_namespaceObject.__)('Standard') 47491 }, { 47492 value: 'status', 47493 label: (0,external_wp_i18n_namespaceObject.__)('Status') 47494 }, { 47495 value: 'video', 47496 label: (0,external_wp_i18n_namespaceObject.__)('Video') 47497 }].sort((a, b) => { 47498 const normalizedA = a.label.toUpperCase(); 47499 const normalizedB = b.label.toUpperCase(); 47500 if (normalizedA < normalizedB) { 47501 return -1; 47502 } 47503 if (normalizedA > normalizedB) { 47504 return 1; 47505 } 47506 return 0; 47507 }); 47508 47509 // A helper function to convert translatable post format names into their static values. 47510 function formatNamesToValues(names, formats) { 47511 return names.map(name => { 47512 return formats.find(item => item.label.toLocaleLowerCase() === name.toLocaleLowerCase())?.value; 47513 }).filter(Boolean); 47514 } 47515 function FormatControls({ 47516 onChange, 47517 query: { 47518 format 47519 } 47520 }) { 47521 // 'format' is expected to be an array. If it is not an array, for example 47522 // if a user has manually entered an invalid value in the block markup, 47523 // convert it to an array to prevent JavaScript errors. 47524 const normalizedFormats = Array.isArray(format) ? format : [format]; 47525 const { 47526 supportedFormats 47527 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 47528 const themeSupports = select(external_wp_coreData_namespaceObject.store).getThemeSupports(); 47529 return { 47530 supportedFormats: themeSupports.formats 47531 }; 47532 }, []); 47533 const formats = POST_FORMATS.filter(item => supportedFormats.includes(item.value)); 47534 const values = normalizedFormats.map(name => formats.find(item => item.value === name)?.label).filter(Boolean); 47535 const suggestions = formats.filter(item => !normalizedFormats.includes(item.value)).map(item => item.label); 47536 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FormTokenField, { 47537 label: (0,external_wp_i18n_namespaceObject.__)('Formats'), 47538 value: values, 47539 suggestions: suggestions, 47540 onChange: newValues => { 47541 onChange({ 47542 format: formatNamesToValues(newValues, formats) 47543 }); 47544 }, 47545 __experimentalShowHowTo: false, 47546 __experimentalExpandOnFocus: true, 47547 __nextHasNoMarginBottom: true, 47548 __next40pxDefaultSize: true 47549 }); 47550 } 47551 47552 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/inspector-controls/sticky-control.js 47553 /** 47554 * WordPress dependencies 47555 */ 47556 47557 47558 47559 const stickyOptions = [{ 47560 label: (0,external_wp_i18n_namespaceObject.__)('Include'), 47561 value: '' 47562 }, { 47563 label: (0,external_wp_i18n_namespaceObject.__)('Exclude'), 47564 value: 'exclude' 47565 }, { 47566 label: (0,external_wp_i18n_namespaceObject.__)('Only'), 47567 value: 'only' 47568 }]; 47569 function StickyControl({ 47570 value, 47571 onChange 47572 }) { 47573 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 47574 __nextHasNoMarginBottom: true, 47575 __next40pxDefaultSize: true, 47576 label: (0,external_wp_i18n_namespaceObject.__)('Sticky posts'), 47577 options: stickyOptions, 47578 value: value, 47579 onChange: onChange, 47580 help: (0,external_wp_i18n_namespaceObject.__)('Sticky posts always appear first, regardless of their publish date.') 47581 }); 47582 } 47583 47584 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/inspector-controls/create-new-post-link.js 47585 /** 47586 * WordPress dependencies 47587 */ 47588 47589 47590 47591 47592 47593 const CreateNewPostLink = ({ 47594 postType 47595 }) => { 47596 const newPostUrl = (0,external_wp_url_namespaceObject.addQueryArgs)('post-new.php', { 47597 post_type: postType 47598 }); 47599 const addNewItemLabel = (0,external_wp_data_namespaceObject.useSelect)(select => { 47600 const { 47601 getPostType 47602 } = select(external_wp_coreData_namespaceObject.store); 47603 return getPostType(postType)?.labels?.add_new_item; 47604 }, [postType]); 47605 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 47606 className: "wp-block-query__create-new-link", 47607 children: (0,external_wp_element_namespaceObject.createInterpolateElement)('<a>' + addNewItemLabel + '</a>', 47608 // eslint-disable-next-line jsx-a11y/anchor-has-content 47609 { 47610 a: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 47611 href: newPostUrl 47612 }) 47613 }) 47614 }); 47615 }; 47616 /* harmony default export */ const create_new_post_link = (CreateNewPostLink); 47617 47618 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/inspector-controls/per-page-control.js 47619 /** 47620 * WordPress dependencies 47621 */ 47622 47623 47624 47625 const MIN_POSTS_PER_PAGE = 1; 47626 const MAX_POSTS_PER_PAGE = 100; 47627 const PerPageControl = ({ 47628 perPage, 47629 offset = 0, 47630 onChange 47631 }) => { 47632 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 47633 __next40pxDefaultSize: true, 47634 __nextHasNoMarginBottom: true, 47635 label: (0,external_wp_i18n_namespaceObject.__)('Posts per page'), 47636 min: MIN_POSTS_PER_PAGE, 47637 max: MAX_POSTS_PER_PAGE, 47638 onChange: newPerPage => { 47639 if (isNaN(newPerPage) || newPerPage < MIN_POSTS_PER_PAGE || newPerPage > MAX_POSTS_PER_PAGE) { 47640 return; 47641 } 47642 onChange({ 47643 perPage: newPerPage, 47644 offset 47645 }); 47646 }, 47647 value: parseInt(perPage, 10) 47648 }); 47649 }; 47650 /* harmony default export */ const per_page_control = (PerPageControl); 47651 47652 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/inspector-controls/offset-controls.js 47653 /** 47654 * WordPress dependencies 47655 */ 47656 47657 47658 47659 const MIN_OFFSET = 0; 47660 const MAX_OFFSET = 100; 47661 const OffsetControl = ({ 47662 offset = 0, 47663 onChange 47664 }) => { 47665 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalNumberControl, { 47666 __next40pxDefaultSize: true, 47667 label: (0,external_wp_i18n_namespaceObject.__)('Offset'), 47668 value: offset, 47669 min: MIN_OFFSET, 47670 onChange: newOffset => { 47671 if (isNaN(newOffset) || newOffset < MIN_OFFSET || newOffset > MAX_OFFSET) { 47672 return; 47673 } 47674 onChange({ 47675 offset: newOffset 47676 }); 47677 } 47678 }); 47679 }; 47680 /* harmony default export */ const offset_controls = (OffsetControl); 47681 47682 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/inspector-controls/pages-control.js 47683 /** 47684 * WordPress dependencies 47685 */ 47686 47687 47688 47689 const PagesControl = ({ 47690 pages, 47691 onChange 47692 }) => { 47693 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalNumberControl, { 47694 __next40pxDefaultSize: true, 47695 label: (0,external_wp_i18n_namespaceObject.__)('Max pages'), 47696 value: pages, 47697 min: 0, 47698 onChange: newPages => { 47699 if (isNaN(newPages) || newPages < 0) { 47700 return; 47701 } 47702 onChange({ 47703 pages: newPages 47704 }); 47705 }, 47706 help: (0,external_wp_i18n_namespaceObject.__)('Limit the pages you want to show, even if the query has more results. To show all pages use 0 (zero).') 47707 }); 47708 }; 47709 /* harmony default export */ const pages_control = (PagesControl); 47710 47711 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/inspector-controls/index.js 47712 /** 47713 * WordPress dependencies 47714 */ 47715 47716 47717 47718 47719 47720 47721 47722 47723 /** 47724 * Internal dependencies 47725 */ 47726 47727 47728 47729 47730 47731 47732 47733 47734 47735 47736 47737 47738 47739 47740 47741 47742 const { 47743 BlockInfo 47744 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 47745 function QueryInspectorControls(props) { 47746 const { 47747 attributes, 47748 setQuery, 47749 setDisplayLayout, 47750 isTemplate 47751 } = props; 47752 const { 47753 query, 47754 displayLayout 47755 } = attributes; 47756 const { 47757 order, 47758 orderBy, 47759 author: authorIds, 47760 pages, 47761 postType, 47762 perPage, 47763 offset, 47764 sticky, 47765 inherit, 47766 taxQuery, 47767 parents, 47768 format 47769 } = query; 47770 const allowedControls = useAllowedControls(attributes); 47771 const [showSticky, setShowSticky] = (0,external_wp_element_namespaceObject.useState)(postType === 'post'); 47772 const { 47773 postTypesTaxonomiesMap, 47774 postTypesSelectOptions, 47775 postTypeFormatSupportMap 47776 } = usePostTypes(); 47777 const taxonomies = useTaxonomies(postType); 47778 const isPostTypeHierarchical = useIsPostTypeHierarchical(postType); 47779 (0,external_wp_element_namespaceObject.useEffect)(() => { 47780 setShowSticky(postType === 'post'); 47781 }, [postType]); 47782 const onPostTypeChange = newValue => { 47783 const updateQuery = { 47784 postType: newValue 47785 }; 47786 // We need to dynamically update the `taxQuery` property, 47787 // by removing any not supported taxonomy from the query. 47788 const supportedTaxonomies = postTypesTaxonomiesMap[newValue]; 47789 const updatedTaxQuery = Object.entries(taxQuery || {}).reduce((accumulator, [taxonomySlug, terms]) => { 47790 if (supportedTaxonomies.includes(taxonomySlug)) { 47791 accumulator[taxonomySlug] = terms; 47792 } 47793 return accumulator; 47794 }, {}); 47795 updateQuery.taxQuery = !!Object.keys(updatedTaxQuery).length ? updatedTaxQuery : undefined; 47796 if (newValue !== 'post') { 47797 updateQuery.sticky = ''; 47798 } 47799 // We need to reset `parents` because they are tied to each post type. 47800 updateQuery.parents = []; 47801 // Post types can register post format support with `add_post_type_support`. 47802 // But we need to reset the `format` property when switching to post types 47803 // that do not support post formats. 47804 const hasFormatSupport = postTypeFormatSupportMap[newValue]; 47805 if (!hasFormatSupport) { 47806 updateQuery.format = []; 47807 } 47808 setQuery(updateQuery); 47809 }; 47810 const [querySearch, setQuerySearch] = (0,external_wp_element_namespaceObject.useState)(query.search); 47811 const onChangeDebounced = (0,external_wp_element_namespaceObject.useCallback)((0,external_wp_compose_namespaceObject.debounce)(() => { 47812 if (query.search !== querySearch) { 47813 setQuery({ 47814 search: querySearch 47815 }); 47816 } 47817 }, 250), [querySearch, query.search]); 47818 (0,external_wp_element_namespaceObject.useEffect)(() => { 47819 onChangeDebounced(); 47820 return onChangeDebounced.cancel; 47821 }, [querySearch, onChangeDebounced]); 47822 const showInheritControl = isTemplate && isControlAllowed(allowedControls, 'inherit'); 47823 const showPostTypeControl = !inherit && isControlAllowed(allowedControls, 'postType'); 47824 const postTypeControlLabel = (0,external_wp_i18n_namespaceObject.__)('Post type'); 47825 const postTypeControlHelp = (0,external_wp_i18n_namespaceObject.__)('Select the type of content to display: posts, pages, or custom post types.'); 47826 const showColumnsControl = false; 47827 const showOrderControl = !inherit && isControlAllowed(allowedControls, 'order'); 47828 const showStickyControl = !inherit && showSticky && isControlAllowed(allowedControls, 'sticky'); 47829 const showSettingsPanel = showInheritControl || showPostTypeControl || showColumnsControl || showOrderControl || showStickyControl; 47830 const showTaxControl = !!taxonomies?.length && isControlAllowed(allowedControls, 'taxQuery'); 47831 const showAuthorControl = isControlAllowed(allowedControls, 'author'); 47832 const showSearchControl = isControlAllowed(allowedControls, 'search'); 47833 const showParentControl = isControlAllowed(allowedControls, 'parents') && isPostTypeHierarchical; 47834 const postTypeHasFormatSupport = postTypeFormatSupportMap[postType]; 47835 const showFormatControl = (0,external_wp_data_namespaceObject.useSelect)(select => { 47836 // Check if the post type supports post formats and if the control is allowed. 47837 if (!postTypeHasFormatSupport || !isControlAllowed(allowedControls, 'format')) { 47838 return false; 47839 } 47840 const themeSupports = select(external_wp_coreData_namespaceObject.store).getThemeSupports(); 47841 47842 // If there are no supported formats, getThemeSupports still includes the default 'standard' format, 47843 // and in this case the control should not be shown since the user has no other formats to choose from. 47844 return themeSupports.formats && themeSupports.formats.length > 0 && themeSupports.formats.some(type => type !== 'standard'); 47845 }, [allowedControls, postTypeHasFormatSupport]); 47846 const showFiltersPanel = showTaxControl || showAuthorControl || showSearchControl || showParentControl || showFormatControl; 47847 const dropdownMenuProps = useToolsPanelDropdownMenuProps(); 47848 const showPostCountControl = isControlAllowed(allowedControls, 'postCount'); 47849 const showOffSetControl = isControlAllowed(allowedControls, 'offset'); 47850 const showPagesControl = isControlAllowed(allowedControls, 'pages'); 47851 const showDisplayPanel = showPostCountControl || showOffSetControl || showPagesControl; 47852 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 47853 children: [!!postType && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockInfo, { 47854 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(create_new_post_link, { 47855 postType: postType 47856 }) 47857 }), showSettingsPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 47858 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 47859 children: [showInheritControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, { 47860 __next40pxDefaultSize: true, 47861 __nextHasNoMarginBottom: true, 47862 label: (0,external_wp_i18n_namespaceObject.__)('Query type'), 47863 isBlock: true, 47864 onChange: value => { 47865 setQuery({ 47866 inherit: !!value 47867 }); 47868 }, 47869 help: inherit ? (0,external_wp_i18n_namespaceObject.__)('Display a list of posts or custom post types based on the current template.') : (0,external_wp_i18n_namespaceObject.__)('Display a list of posts or custom post types based on specific criteria.'), 47870 value: !!inherit, 47871 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 47872 value: true, 47873 label: (0,external_wp_i18n_namespaceObject.__)('Default') 47874 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 47875 value: false, 47876 label: (0,external_wp_i18n_namespaceObject.__)('Custom') 47877 })] 47878 }), showPostTypeControl && (postTypesSelectOptions.length > 2 ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 47879 __nextHasNoMarginBottom: true, 47880 __next40pxDefaultSize: true, 47881 options: postTypesSelectOptions, 47882 value: postType, 47883 label: postTypeControlLabel, 47884 onChange: onPostTypeChange, 47885 help: postTypeControlHelp 47886 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, { 47887 __nextHasNoMarginBottom: true, 47888 __next40pxDefaultSize: true, 47889 isBlock: true, 47890 value: postType, 47891 label: postTypeControlLabel, 47892 onChange: onPostTypeChange, 47893 help: postTypeControlHelp, 47894 children: postTypesSelectOptions.map(option => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 47895 value: option.value, 47896 label: option.label 47897 }, option.value)) 47898 })), showColumnsControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 47899 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 47900 __nextHasNoMarginBottom: true, 47901 __next40pxDefaultSize: true, 47902 label: (0,external_wp_i18n_namespaceObject.__)('Columns'), 47903 value: displayLayout.columns, 47904 onChange: value => setDisplayLayout({ 47905 columns: value 47906 }), 47907 min: 2, 47908 max: Math.max(6, displayLayout.columns) 47909 }), displayLayout.columns > 6 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Notice, { 47910 status: "warning", 47911 isDismissible: false, 47912 children: (0,external_wp_i18n_namespaceObject.__)('This column count exceeds the recommended amount and may cause visual breakage.') 47913 })] 47914 }), showOrderControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(order_control, { 47915 order, 47916 orderBy, 47917 onChange: setQuery 47918 }), showStickyControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StickyControl, { 47919 value: sticky, 47920 onChange: value => setQuery({ 47921 sticky: value 47922 }) 47923 })] 47924 }), !inherit && showDisplayPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToolsPanel, { 47925 className: "block-library-query-toolspanel__display", 47926 label: (0,external_wp_i18n_namespaceObject.__)('Display'), 47927 resetAll: () => { 47928 setQuery({ 47929 offset: 0, 47930 pages: 0 47931 }); 47932 }, 47933 dropdownMenuProps: dropdownMenuProps, 47934 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 47935 label: (0,external_wp_i18n_namespaceObject.__)('Items'), 47936 hasValue: () => perPage > 0, 47937 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(per_page_control, { 47938 perPage: perPage, 47939 offset: offset, 47940 onChange: setQuery 47941 }) 47942 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 47943 label: (0,external_wp_i18n_namespaceObject.__)('Offset'), 47944 hasValue: () => offset > 0, 47945 onDeselect: () => setQuery({ 47946 offset: 0 47947 }), 47948 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(offset_controls, { 47949 offset: offset, 47950 onChange: setQuery 47951 }) 47952 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 47953 label: (0,external_wp_i18n_namespaceObject.__)('Max Pages to Show'), 47954 hasValue: () => pages > 0, 47955 onDeselect: () => setQuery({ 47956 pages: 0 47957 }), 47958 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(pages_control, { 47959 pages: pages, 47960 onChange: setQuery 47961 }) 47962 })] 47963 }), !inherit && showFiltersPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToolsPanel, { 47964 className: "block-library-query-toolspanel__filters" // unused but kept for backward compatibility 47965 , 47966 label: (0,external_wp_i18n_namespaceObject.__)('Filters'), 47967 resetAll: () => { 47968 setQuery({ 47969 author: '', 47970 parents: [], 47971 search: '', 47972 taxQuery: null, 47973 format: [] 47974 }); 47975 setQuerySearch(''); 47976 }, 47977 dropdownMenuProps: dropdownMenuProps, 47978 children: [showTaxControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 47979 label: (0,external_wp_i18n_namespaceObject.__)('Taxonomies'), 47980 hasValue: () => Object.values(taxQuery || {}).some(terms => !!terms.length), 47981 onDeselect: () => setQuery({ 47982 taxQuery: null 47983 }), 47984 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TaxonomyControls, { 47985 onChange: setQuery, 47986 query: query 47987 }) 47988 }), showAuthorControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 47989 hasValue: () => !!authorIds, 47990 label: (0,external_wp_i18n_namespaceObject.__)('Authors'), 47991 onDeselect: () => setQuery({ 47992 author: '' 47993 }), 47994 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(author_control, { 47995 value: authorIds, 47996 onChange: setQuery 47997 }) 47998 }), showSearchControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 47999 hasValue: () => !!querySearch, 48000 label: (0,external_wp_i18n_namespaceObject.__)('Keyword'), 48001 onDeselect: () => setQuerySearch(''), 48002 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 48003 __nextHasNoMarginBottom: true, 48004 __next40pxDefaultSize: true, 48005 label: (0,external_wp_i18n_namespaceObject.__)('Keyword'), 48006 value: querySearch, 48007 onChange: setQuerySearch 48008 }) 48009 }), showParentControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 48010 hasValue: () => !!parents?.length, 48011 label: (0,external_wp_i18n_namespaceObject.__)('Parents'), 48012 onDeselect: () => setQuery({ 48013 parents: [] 48014 }), 48015 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(parent_control, { 48016 parents: parents, 48017 postType: postType, 48018 onChange: setQuery 48019 }) 48020 }), showFormatControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, { 48021 hasValue: () => !!format?.length, 48022 label: (0,external_wp_i18n_namespaceObject.__)('Formats'), 48023 onDeselect: () => setQuery({ 48024 format: [] 48025 }), 48026 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FormatControls, { 48027 onChange: setQuery, 48028 query: query 48029 }) 48030 })] 48031 })] 48032 }); 48033 } 48034 48035 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/enhanced-pagination-modal.js 48036 /** 48037 * WordPress dependencies 48038 */ 48039 48040 48041 48042 48043 /** 48044 * Internal dependencies 48045 */ 48046 48047 48048 48049 const modalDescriptionId = 'wp-block-query-enhanced-pagination-modal__description'; 48050 function EnhancedPaginationModal({ 48051 clientId, 48052 attributes: { 48053 enhancedPagination 48054 }, 48055 setAttributes 48056 }) { 48057 const [isOpen, setOpen] = (0,external_wp_element_namespaceObject.useState)(false); 48058 const { 48059 hasBlocksFromPlugins, 48060 hasPostContentBlock, 48061 hasUnsupportedBlocks 48062 } = useUnsupportedBlocks(clientId); 48063 (0,external_wp_element_namespaceObject.useEffect)(() => { 48064 if (enhancedPagination && hasUnsupportedBlocks && !window.__experimentalFullPageClientSideNavigation) { 48065 setAttributes({ 48066 enhancedPagination: false 48067 }); 48068 setOpen(true); 48069 } 48070 }, [enhancedPagination, hasUnsupportedBlocks, setAttributes]); 48071 const closeModal = () => { 48072 setOpen(false); 48073 }; 48074 let notice = (0,external_wp_i18n_namespaceObject.__)('If you still want to prevent full page reloads, remove that block, then disable "Reload full page" again in the Query Block settings.'); 48075 if (hasBlocksFromPlugins) { 48076 notice = (0,external_wp_i18n_namespaceObject.__)('Currently, avoiding full page reloads is not possible when non-interactive or non-client Navigation compatible blocks from plugins are present inside the Query block.') + ' ' + notice; 48077 } else if (hasPostContentBlock) { 48078 notice = (0,external_wp_i18n_namespaceObject.__)('Currently, avoiding full page reloads is not possible when a Content block is present inside the Query block.') + ' ' + notice; 48079 } 48080 return isOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, { 48081 title: (0,external_wp_i18n_namespaceObject.__)('Query block: Reload full page enabled'), 48082 className: "wp-block-query__enhanced-pagination-modal", 48083 aria: { 48084 describedby: modalDescriptionId 48085 }, 48086 role: "alertdialog", 48087 focusOnMount: "firstElement", 48088 isDismissible: false, 48089 onRequestClose: closeModal, 48090 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { 48091 alignment: "right", 48092 spacing: 5, 48093 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 48094 id: modalDescriptionId, 48095 children: notice 48096 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 48097 __next40pxDefaultSize: true, 48098 variant: "primary", 48099 onClick: closeModal, 48100 children: (0,external_wp_i18n_namespaceObject.__)('OK') 48101 })] 48102 }) 48103 }); 48104 } 48105 48106 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/query-content.js 48107 /** 48108 * WordPress dependencies 48109 */ 48110 48111 48112 48113 48114 48115 48116 48117 48118 /** 48119 * Internal dependencies 48120 */ 48121 48122 48123 48124 48125 48126 48127 48128 const DEFAULTS_POSTS_PER_PAGE = 3; 48129 const query_content_TEMPLATE = [['core/post-template']]; 48130 function QueryContent({ 48131 attributes, 48132 setAttributes, 48133 openPatternSelectionModal, 48134 name, 48135 clientId, 48136 context 48137 }) { 48138 const { 48139 queryId, 48140 query, 48141 displayLayout, 48142 enhancedPagination, 48143 tagName: TagName = 'div', 48144 query: { 48145 inherit 48146 } = {} 48147 } = attributes; 48148 const { 48149 postType 48150 } = context; 48151 const { 48152 __unstableMarkNextChangeAsNotPersistent 48153 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 48154 const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(QueryContent); 48155 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 48156 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 48157 template: query_content_TEMPLATE 48158 }); 48159 const isTemplate = (0,external_wp_data_namespaceObject.useSelect)(select => { 48160 const currentTemplate = select(external_wp_coreData_namespaceObject.store).__experimentalGetTemplateForLink()?.type; 48161 const isInTemplate = 'wp_template' === currentTemplate; 48162 const isInSingularContent = postType !== undefined; 48163 return isInTemplate && !isInSingularContent; 48164 }, [postType]); 48165 const { 48166 postsPerPage 48167 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 48168 const { 48169 getSettings 48170 } = select(external_wp_blockEditor_namespaceObject.store); 48171 const { 48172 getEntityRecord, 48173 getEntityRecordEdits, 48174 canUser 48175 } = select(external_wp_coreData_namespaceObject.store); 48176 const settingPerPage = canUser('read', { 48177 kind: 'root', 48178 name: 'site' 48179 }) ? +getEntityRecord('root', 'site')?.posts_per_page : +getSettings().postsPerPage; 48180 48181 // Gets changes made via the template area posts per page setting. These won't be saved 48182 // until the page is saved, but we should reflect this setting within the query loops 48183 // that inherit it. 48184 const editedSettingPerPage = +getEntityRecordEdits('root', 'site')?.posts_per_page; 48185 return { 48186 postsPerPage: editedSettingPerPage || settingPerPage || DEFAULTS_POSTS_PER_PAGE 48187 }; 48188 }, []); 48189 // There are some effects running where some initialization logic is 48190 // happening and setting some values to some attributes (ex. queryId). 48191 // These updates can cause an `undo trap` where undoing will result in 48192 // resetting again, so we need to mark these changes as not persistent 48193 // with `__unstableMarkNextChangeAsNotPersistent`. 48194 48195 // Changes in query property (which is an object) need to be in the same callback, 48196 // because updates are batched after the render and changes in different query properties 48197 // would cause to override previous wanted changes. 48198 const updateQuery = (0,external_wp_element_namespaceObject.useCallback)(newQuery => setAttributes({ 48199 query: { 48200 ...query, 48201 ...newQuery 48202 } 48203 }), [query, setAttributes]); 48204 (0,external_wp_element_namespaceObject.useEffect)(() => { 48205 const newQuery = {}; 48206 // When we inherit from global query always need to set the `perPage` 48207 // based on the reading settings. 48208 if (inherit && query.perPage !== postsPerPage) { 48209 newQuery.perPage = postsPerPage; 48210 } else if (!query.perPage && postsPerPage) { 48211 newQuery.perPage = postsPerPage; 48212 } 48213 // We need to reset the `inherit` value if not in a template, as queries 48214 // are not inherited when outside a template (e.g. when in singular content). 48215 if (!isTemplate && query.inherit) { 48216 newQuery.inherit = false; 48217 } 48218 if (!!Object.keys(newQuery).length) { 48219 __unstableMarkNextChangeAsNotPersistent(); 48220 updateQuery(newQuery); 48221 } 48222 }, [query.perPage, postsPerPage, inherit, isTemplate, query.inherit, __unstableMarkNextChangeAsNotPersistent, updateQuery]); 48223 // We need this for multi-query block pagination. 48224 // Query parameters for each block are scoped to their ID. 48225 (0,external_wp_element_namespaceObject.useEffect)(() => { 48226 if (!Number.isFinite(queryId)) { 48227 __unstableMarkNextChangeAsNotPersistent(); 48228 setAttributes({ 48229 queryId: instanceId 48230 }); 48231 } 48232 }, [queryId, instanceId, __unstableMarkNextChangeAsNotPersistent, setAttributes]); 48233 const updateDisplayLayout = newDisplayLayout => setAttributes({ 48234 displayLayout: { 48235 ...displayLayout, 48236 ...newDisplayLayout 48237 } 48238 }); 48239 const htmlElementMessages = { 48240 main: (0,external_wp_i18n_namespaceObject.__)('The <main> element should be used for the primary content of your document only.'), 48241 section: (0,external_wp_i18n_namespaceObject.__)("The <section> element should represent a standalone portion of the document that can't be better represented by another element."), 48242 aside: (0,external_wp_i18n_namespaceObject.__)("The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content.") 48243 }; 48244 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 48245 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EnhancedPaginationModal, { 48246 attributes: attributes, 48247 setAttributes: setAttributes, 48248 clientId: clientId 48249 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 48250 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(QueryInspectorControls, { 48251 attributes: attributes, 48252 setQuery: updateQuery, 48253 setDisplayLayout: updateDisplayLayout, 48254 setAttributes: setAttributes, 48255 clientId: clientId, 48256 isTemplate: isTemplate 48257 }) 48258 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 48259 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(QueryToolbar, { 48260 name: name, 48261 clientId: clientId, 48262 attributes: attributes, 48263 setQuery: updateQuery, 48264 openPatternSelectionModal: openPatternSelectionModal 48265 }) 48266 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.InspectorControls, { 48267 group: "advanced", 48268 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 48269 __nextHasNoMarginBottom: true, 48270 __next40pxDefaultSize: true, 48271 label: (0,external_wp_i18n_namespaceObject.__)('HTML element'), 48272 options: [{ 48273 label: (0,external_wp_i18n_namespaceObject.__)('Default (<div>)'), 48274 value: 'div' 48275 }, { 48276 label: '<main>', 48277 value: 'main' 48278 }, { 48279 label: '<section>', 48280 value: 'section' 48281 }, { 48282 label: '<aside>', 48283 value: 'aside' 48284 }], 48285 value: TagName, 48286 onChange: value => setAttributes({ 48287 tagName: value 48288 }), 48289 help: htmlElementMessages[TagName] 48290 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EnhancedPaginationControl, { 48291 enhancedPagination: enhancedPagination, 48292 setAttributes: setAttributes, 48293 clientId: clientId 48294 })] 48295 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 48296 ...innerBlocksProps 48297 })] 48298 }); 48299 } 48300 48301 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/query-placeholder.js 48302 /** 48303 * WordPress dependencies 48304 */ 48305 48306 48307 48308 48309 48310 48311 48312 /** 48313 * Internal dependencies 48314 */ 48315 48316 48317 48318 function QueryPlaceholder({ 48319 attributes, 48320 clientId, 48321 name, 48322 openPatternSelectionModal 48323 }) { 48324 const [isStartingBlank, setIsStartingBlank] = (0,external_wp_element_namespaceObject.useState)(false); 48325 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 48326 const blockNameForPatterns = useBlockNameForPatterns(clientId, attributes); 48327 const { 48328 blockType, 48329 activeBlockVariation, 48330 hasPatterns 48331 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 48332 const { 48333 getActiveBlockVariation, 48334 getBlockType 48335 } = select(external_wp_blocks_namespaceObject.store); 48336 const { 48337 getBlockRootClientId, 48338 getPatternsByBlockTypes 48339 } = select(external_wp_blockEditor_namespaceObject.store); 48340 const rootClientId = getBlockRootClientId(clientId); 48341 return { 48342 blockType: getBlockType(name), 48343 activeBlockVariation: getActiveBlockVariation(name, attributes), 48344 hasPatterns: !!getPatternsByBlockTypes(blockNameForPatterns, rootClientId).length 48345 }; 48346 }, [name, blockNameForPatterns, clientId, attributes]); 48347 const icon = activeBlockVariation?.icon?.src || activeBlockVariation?.icon || blockType?.icon?.src; 48348 const label = activeBlockVariation?.title || blockType?.title; 48349 if (isStartingBlank) { 48350 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(QueryVariationPicker, { 48351 clientId: clientId, 48352 attributes: attributes, 48353 icon: icon, 48354 label: label 48355 }); 48356 } 48357 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 48358 ...blockProps, 48359 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Placeholder, { 48360 icon: icon, 48361 label: label, 48362 instructions: (0,external_wp_i18n_namespaceObject.__)('Choose a pattern for the query loop or start blank.'), 48363 children: [!!hasPatterns && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 48364 __next40pxDefaultSize: true, 48365 variant: "primary", 48366 onClick: openPatternSelectionModal, 48367 children: (0,external_wp_i18n_namespaceObject.__)('Choose') 48368 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 48369 __next40pxDefaultSize: true, 48370 variant: "secondary", 48371 onClick: () => { 48372 setIsStartingBlank(true); 48373 }, 48374 children: (0,external_wp_i18n_namespaceObject.__)('Start blank') 48375 })] 48376 }) 48377 }); 48378 } 48379 function QueryVariationPicker({ 48380 clientId, 48381 attributes, 48382 icon, 48383 label 48384 }) { 48385 const scopeVariations = useScopedBlockVariations(attributes); 48386 const { 48387 replaceInnerBlocks 48388 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 48389 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 48390 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 48391 ...blockProps, 48392 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalBlockVariationPicker, { 48393 icon: icon, 48394 label: label, 48395 variations: scopeVariations, 48396 onSelect: variation => { 48397 if (variation.innerBlocks) { 48398 replaceInnerBlocks(clientId, (0,external_wp_blocks_namespaceObject.createBlocksFromInnerBlocksTemplate)(variation.innerBlocks), false); 48399 } 48400 } 48401 }) 48402 }); 48403 } 48404 48405 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/utils/search-patterns.js 48406 /** 48407 * External dependencies 48408 */ 48409 48410 48411 /** 48412 * Sanitizes the search input string. 48413 * 48414 * @param {string} input The search input to normalize. 48415 * 48416 * @return {string} The normalized search input. 48417 */ 48418 function normalizeSearchInput(input = '') { 48419 // Disregard diacritics. 48420 input = remove_accents_default()(input); 48421 48422 // Trim & Lowercase. 48423 input = input.trim().toLowerCase(); 48424 return input; 48425 } 48426 48427 /** 48428 * Get the search rank for a given pattern and a specific search term. 48429 * 48430 * @param {Object} pattern Pattern to rank 48431 * @param {string} searchValue Search term 48432 * @return {number} A pattern search rank 48433 */ 48434 function getPatternSearchRank(pattern, searchValue) { 48435 const normalizedSearchValue = normalizeSearchInput(searchValue); 48436 const normalizedTitle = normalizeSearchInput(pattern.title); 48437 let rank = 0; 48438 if (normalizedSearchValue === normalizedTitle) { 48439 rank += 30; 48440 } else if (normalizedTitle.startsWith(normalizedSearchValue)) { 48441 rank += 20; 48442 } else { 48443 const searchTerms = normalizedSearchValue.split(' '); 48444 const hasMatchedTerms = searchTerms.every(searchTerm => normalizedTitle.includes(searchTerm)); 48445 48446 // Prefer pattern with every search word in the title. 48447 if (hasMatchedTerms) { 48448 rank += 10; 48449 } 48450 } 48451 return rank; 48452 } 48453 48454 /** 48455 * Filters an pattern list given a search term. 48456 * 48457 * @param {Array} patterns Item list 48458 * @param {string} searchValue Search input. 48459 * 48460 * @return {Array} Filtered pattern list. 48461 */ 48462 function searchPatterns(patterns = [], searchValue = '') { 48463 if (!searchValue) { 48464 return patterns; 48465 } 48466 const rankedPatterns = patterns.map(pattern => { 48467 return [pattern, getPatternSearchRank(pattern, searchValue)]; 48468 }).filter(([, rank]) => rank > 0); 48469 rankedPatterns.sort(([, rank1], [, rank2]) => rank2 - rank1); 48470 return rankedPatterns.map(([pattern]) => pattern); 48471 } 48472 48473 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/pattern-selection-modal.js 48474 /** 48475 * WordPress dependencies 48476 */ 48477 48478 48479 48480 48481 48482 48483 48484 /** 48485 * Internal dependencies 48486 */ 48487 48488 48489 48490 48491 function PatternSelectionModal({ 48492 clientId, 48493 attributes, 48494 setIsPatternSelectionModalOpen 48495 }) { 48496 const [searchValue, setSearchValue] = (0,external_wp_element_namespaceObject.useState)(''); 48497 const { 48498 replaceBlock, 48499 selectBlock 48500 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 48501 const onBlockPatternSelect = (pattern, blocks) => { 48502 const { 48503 newBlocks, 48504 queryClientIds 48505 } = getTransformedBlocksFromPattern(blocks, attributes); 48506 replaceBlock(clientId, newBlocks); 48507 if (queryClientIds[0]) { 48508 selectBlock(queryClientIds[0]); 48509 } 48510 }; 48511 // When we preview Query Loop blocks we should prefer the current 48512 // block's postType, which is passed through block context. 48513 const blockPreviewContext = (0,external_wp_element_namespaceObject.useMemo)(() => ({ 48514 previewPostType: attributes.query.postType 48515 }), [attributes.query.postType]); 48516 const blockNameForPatterns = useBlockNameForPatterns(clientId, attributes); 48517 const blockPatterns = usePatterns(clientId, blockNameForPatterns); 48518 const filteredBlockPatterns = (0,external_wp_element_namespaceObject.useMemo)(() => { 48519 return searchPatterns(blockPatterns, searchValue); 48520 }, [blockPatterns, searchValue]); 48521 const shownBlockPatterns = (0,external_wp_compose_namespaceObject.useAsyncList)(filteredBlockPatterns); 48522 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, { 48523 overlayClassName: "block-library-query-pattern__selection-modal", 48524 title: (0,external_wp_i18n_namespaceObject.__)('Choose a pattern'), 48525 onRequestClose: () => setIsPatternSelectionModalOpen(false), 48526 isFullScreen: true, 48527 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 48528 className: "block-library-query-pattern__selection-content", 48529 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 48530 className: "block-library-query-pattern__selection-search", 48531 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SearchControl, { 48532 __nextHasNoMarginBottom: true, 48533 onChange: setSearchValue, 48534 value: searchValue, 48535 label: (0,external_wp_i18n_namespaceObject.__)('Search for patterns'), 48536 placeholder: (0,external_wp_i18n_namespaceObject.__)('Search') 48537 }) 48538 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockContextProvider, { 48539 value: blockPreviewContext, 48540 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalBlockPatternsList, { 48541 blockPatterns: filteredBlockPatterns, 48542 shownPatterns: shownBlockPatterns, 48543 onClickPattern: onBlockPatternSelect 48544 }) 48545 })] 48546 }) 48547 }); 48548 } 48549 48550 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/edit/index.js 48551 /** 48552 * WordPress dependencies 48553 */ 48554 48555 48556 48557 48558 /** 48559 * Internal dependencies 48560 */ 48561 48562 48563 48564 48565 48566 48567 const QueryEdit = props => { 48568 const { 48569 clientId, 48570 attributes 48571 } = props; 48572 const [isPatternSelectionModalOpen, setIsPatternSelectionModalOpen] = (0,external_wp_element_namespaceObject.useState)(false); 48573 const hasInnerBlocks = (0,external_wp_data_namespaceObject.useSelect)(select => !!select(external_wp_blockEditor_namespaceObject.store).getBlocks(clientId).length, [clientId]); 48574 const Component = hasInnerBlocks ? QueryContent : QueryPlaceholder; 48575 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 48576 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Component, { 48577 ...props, 48578 openPatternSelectionModal: () => setIsPatternSelectionModalOpen(true) 48579 }), isPatternSelectionModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PatternSelectionModal, { 48580 clientId: clientId, 48581 attributes: attributes, 48582 setIsPatternSelectionModalOpen: setIsPatternSelectionModalOpen 48583 })] 48584 }); 48585 }; 48586 /* harmony default export */ const query_edit = (QueryEdit); 48587 48588 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/save.js 48589 /** 48590 * WordPress dependencies 48591 */ 48592 48593 48594 function query_save_save({ 48595 attributes: { 48596 tagName: Tag = 'div' 48597 } 48598 }) { 48599 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save(); 48600 const innerBlocksProps = external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(blockProps); 48601 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 48602 ...innerBlocksProps 48603 }); 48604 } 48605 48606 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/icons.js 48607 /** 48608 * WordPress dependencies 48609 */ 48610 48611 48612 const titleDate = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 48613 xmlns: "http://www.w3.org/2000/svg", 48614 viewBox: "0 0 48 48", 48615 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 48616 d: "M41 9H7v3h34V9zm-22 5H7v1h12v-1zM7 26h12v1H7v-1zm34-5H7v3h34v-3zM7 38h12v1H7v-1zm34-5H7v3h34v-3z" 48617 }) 48618 }); 48619 const titleExcerpt = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 48620 xmlns: "http://www.w3.org/2000/svg", 48621 viewBox: "0 0 48 48", 48622 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 48623 d: "M41 9H7v3h34V9zm-4 5H7v1h30v-1zm4 3H7v1h34v-1zM7 20h30v1H7v-1zm0 12h30v1H7v-1zm34 3H7v1h34v-1zM7 38h30v1H7v-1zm34-11H7v3h34v-3z" 48624 }) 48625 }); 48626 const titleDateExcerpt = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 48627 xmlns: "http://www.w3.org/2000/svg", 48628 viewBox: "0 0 48 48", 48629 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 48630 d: "M41 9H7v3h34V9zm-22 5H7v1h12v-1zm22 3H7v1h34v-1zM7 20h34v1H7v-1zm0 12h12v1H7v-1zm34 3H7v1h34v-1zM7 38h34v1H7v-1zm34-11H7v3h34v-3z" 48631 }) 48632 }); 48633 const imageDateTitle = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 48634 xmlns: "http://www.w3.org/2000/svg", 48635 viewBox: "0 0 48 48", 48636 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 48637 d: "M7 9h34v6H7V9zm12 8H7v1h12v-1zm18 3H7v1h30v-1zm0 18H7v1h30v-1zM7 35h12v1H7v-1zm34-8H7v6h34v-6z" 48638 }) 48639 }); 48640 48641 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/variations.js 48642 /** 48643 * WordPress dependencies 48644 */ 48645 48646 48647 /** 48648 * Internal dependencies 48649 */ 48650 48651 const query_variations_variations = [{ 48652 name: 'title-date', 48653 title: (0,external_wp_i18n_namespaceObject.__)('Title & Date'), 48654 icon: titleDate, 48655 attributes: {}, 48656 innerBlocks: [['core/post-template', {}, [['core/post-title'], ['core/post-date']]], ['core/query-pagination'], ['core/query-no-results']], 48657 scope: ['block'] 48658 }, { 48659 name: 'title-excerpt', 48660 title: (0,external_wp_i18n_namespaceObject.__)('Title & Excerpt'), 48661 icon: titleExcerpt, 48662 attributes: {}, 48663 innerBlocks: [['core/post-template', {}, [['core/post-title'], ['core/post-excerpt']]], ['core/query-pagination'], ['core/query-no-results']], 48664 scope: ['block'] 48665 }, { 48666 name: 'title-date-excerpt', 48667 title: (0,external_wp_i18n_namespaceObject.__)('Title, Date, & Excerpt'), 48668 icon: titleDateExcerpt, 48669 attributes: {}, 48670 innerBlocks: [['core/post-template', {}, [['core/post-title'], ['core/post-date'], ['core/post-excerpt']]], ['core/query-pagination'], ['core/query-no-results']], 48671 scope: ['block'] 48672 }, { 48673 name: 'image-date-title', 48674 title: (0,external_wp_i18n_namespaceObject.__)('Image, Date, & Title'), 48675 icon: imageDateTitle, 48676 attributes: {}, 48677 innerBlocks: [['core/post-template', {}, [['core/post-featured-image'], ['core/post-date'], ['core/post-title']]], ['core/query-pagination'], ['core/query-no-results']], 48678 scope: ['block'] 48679 }]; 48680 /* harmony default export */ const query_variations = (query_variations_variations); 48681 48682 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/deprecated.js 48683 /** 48684 * WordPress dependencies 48685 */ 48686 48687 48688 48689 /** 48690 * Internal dependencies 48691 */ 48692 48693 48694 const { 48695 cleanEmptyObject: deprecated_cleanEmptyObject 48696 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 48697 const migrateToTaxQuery = attributes => { 48698 const { 48699 query 48700 } = attributes; 48701 const { 48702 categoryIds, 48703 tagIds, 48704 ...newQuery 48705 } = query; 48706 if (query.categoryIds?.length || query.tagIds?.length) { 48707 newQuery.taxQuery = { 48708 category: !!query.categoryIds?.length ? query.categoryIds : undefined, 48709 post_tag: !!query.tagIds?.length ? query.tagIds : undefined 48710 }; 48711 } 48712 return { 48713 ...attributes, 48714 query: newQuery 48715 }; 48716 }; 48717 const migrateColors = (attributes, innerBlocks) => { 48718 // Remove color style attributes from the Query block. 48719 const { 48720 style, 48721 backgroundColor, 48722 gradient, 48723 textColor, 48724 ...newAttributes 48725 } = attributes; 48726 const hasColorStyles = backgroundColor || gradient || textColor || style?.color || style?.elements?.link; 48727 48728 // If the query block doesn't currently have any color styles, 48729 // nothing needs migrating. 48730 if (!hasColorStyles) { 48731 return [attributes, innerBlocks]; 48732 } 48733 48734 // Clean color values from style attribute object. 48735 if (style) { 48736 newAttributes.style = deprecated_cleanEmptyObject({ 48737 ...style, 48738 color: undefined, 48739 elements: { 48740 ...style.elements, 48741 link: undefined 48742 } 48743 }); 48744 } 48745 48746 // If the inner blocks are already wrapped in a single group 48747 // block, add the color support styles to that group block. 48748 if (hasSingleInnerGroupBlock(innerBlocks)) { 48749 const groupBlock = innerBlocks[0]; 48750 48751 // Create new styles for the group block. 48752 const hasStyles = style?.color || style?.elements?.link || groupBlock.attributes.style; 48753 const newStyles = hasStyles ? deprecated_cleanEmptyObject({ 48754 ...groupBlock.attributes.style, 48755 color: style?.color, 48756 elements: style?.elements?.link ? { 48757 link: style?.elements?.link 48758 } : undefined 48759 }) : undefined; 48760 48761 // Create a new Group block from the original. 48762 const updatedGroupBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/group', { 48763 ...groupBlock.attributes, 48764 backgroundColor, 48765 gradient, 48766 textColor, 48767 style: newStyles 48768 }, groupBlock.innerBlocks); 48769 return [newAttributes, [updatedGroupBlock]]; 48770 } 48771 48772 // When we don't have a single wrapping group block for the inner 48773 // blocks, wrap the current inner blocks in a group applying the 48774 // color styles to that. 48775 const newGroupBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/group', { 48776 backgroundColor, 48777 gradient, 48778 textColor, 48779 style: deprecated_cleanEmptyObject({ 48780 color: style?.color, 48781 elements: style?.elements?.link ? { 48782 link: style?.elements?.link 48783 } : undefined 48784 }) 48785 }, innerBlocks); 48786 return [newAttributes, [newGroupBlock]]; 48787 }; 48788 const hasSingleInnerGroupBlock = (innerBlocks = []) => innerBlocks.length === 1 && innerBlocks[0].name === 'core/group'; 48789 const migrateToConstrainedLayout = attributes => { 48790 const { 48791 layout = null 48792 } = attributes; 48793 if (!layout) { 48794 return attributes; 48795 } 48796 const { 48797 inherit = null, 48798 contentSize = null, 48799 ...newLayout 48800 } = layout; 48801 if (inherit || contentSize) { 48802 return { 48803 ...attributes, 48804 layout: { 48805 ...newLayout, 48806 contentSize, 48807 type: 'constrained' 48808 } 48809 }; 48810 } 48811 return attributes; 48812 }; 48813 const findPostTemplateBlock = (innerBlocks = []) => { 48814 let foundBlock = null; 48815 for (const block of innerBlocks) { 48816 if (block.name === 'core/post-template') { 48817 foundBlock = block; 48818 break; 48819 } else if (block.innerBlocks.length) { 48820 foundBlock = findPostTemplateBlock(block.innerBlocks); 48821 } 48822 } 48823 return foundBlock; 48824 }; 48825 const replacePostTemplateBlock = (innerBlocks = [], replacementBlock) => { 48826 innerBlocks.forEach((block, index) => { 48827 if (block.name === 'core/post-template') { 48828 innerBlocks.splice(index, 1, replacementBlock); 48829 } else if (block.innerBlocks.length) { 48830 block.innerBlocks = replacePostTemplateBlock(block.innerBlocks, replacementBlock); 48831 } 48832 }); 48833 return innerBlocks; 48834 }; 48835 const migrateDisplayLayout = (attributes, innerBlocks) => { 48836 const { 48837 displayLayout = null, 48838 ...newAttributes 48839 } = attributes; 48840 if (!displayLayout) { 48841 return [attributes, innerBlocks]; 48842 } 48843 const postTemplateBlock = findPostTemplateBlock(innerBlocks); 48844 if (!postTemplateBlock) { 48845 return [attributes, innerBlocks]; 48846 } 48847 const { 48848 type, 48849 columns 48850 } = displayLayout; 48851 48852 // Convert custom displayLayout values to canonical layout types. 48853 const updatedLayoutType = type === 'flex' ? 'grid' : 'default'; 48854 const newPostTemplateBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/post-template', { 48855 ...postTemplateBlock.attributes, 48856 layout: { 48857 type: updatedLayoutType, 48858 ...(columns && { 48859 columnCount: columns 48860 }) 48861 } 48862 }, postTemplateBlock.innerBlocks); 48863 return [newAttributes, replacePostTemplateBlock(innerBlocks, newPostTemplateBlock)]; 48864 }; 48865 48866 // Version with NO wrapper `div` element. 48867 const query_deprecated_v1 = { 48868 attributes: { 48869 queryId: { 48870 type: 'number' 48871 }, 48872 query: { 48873 type: 'object', 48874 default: { 48875 perPage: null, 48876 pages: 0, 48877 offset: 0, 48878 postType: 'post', 48879 categoryIds: [], 48880 tagIds: [], 48881 order: 'desc', 48882 orderBy: 'date', 48883 author: '', 48884 search: '', 48885 exclude: [], 48886 sticky: '', 48887 inherit: true 48888 } 48889 }, 48890 layout: { 48891 type: 'object', 48892 default: { 48893 type: 'list' 48894 } 48895 } 48896 }, 48897 supports: { 48898 html: false 48899 }, 48900 migrate(attributes, innerBlocks) { 48901 const withTaxQuery = migrateToTaxQuery(attributes); 48902 const { 48903 layout, 48904 ...restWithTaxQuery 48905 } = withTaxQuery; 48906 const newAttributes = { 48907 ...restWithTaxQuery, 48908 displayLayout: withTaxQuery.layout 48909 }; 48910 return migrateDisplayLayout(newAttributes, innerBlocks); 48911 }, 48912 save() { 48913 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 48914 } 48915 }; 48916 48917 // Version with `categoryIds and tagIds`. 48918 const query_deprecated_v2 = { 48919 attributes: { 48920 queryId: { 48921 type: 'number' 48922 }, 48923 query: { 48924 type: 'object', 48925 default: { 48926 perPage: null, 48927 pages: 0, 48928 offset: 0, 48929 postType: 'post', 48930 categoryIds: [], 48931 tagIds: [], 48932 order: 'desc', 48933 orderBy: 'date', 48934 author: '', 48935 search: '', 48936 exclude: [], 48937 sticky: '', 48938 inherit: true 48939 } 48940 }, 48941 tagName: { 48942 type: 'string', 48943 default: 'div' 48944 }, 48945 displayLayout: { 48946 type: 'object', 48947 default: { 48948 type: 'list' 48949 } 48950 } 48951 }, 48952 supports: { 48953 align: ['wide', 'full'], 48954 html: false, 48955 color: { 48956 gradients: true, 48957 link: true 48958 }, 48959 layout: true 48960 }, 48961 isEligible: ({ 48962 query: { 48963 categoryIds, 48964 tagIds 48965 } = {} 48966 }) => categoryIds || tagIds, 48967 migrate(attributes, innerBlocks) { 48968 const withTaxQuery = migrateToTaxQuery(attributes); 48969 const [withColorAttributes, withColorInnerBlocks] = migrateColors(withTaxQuery, innerBlocks); 48970 const withConstrainedLayoutAttributes = migrateToConstrainedLayout(withColorAttributes); 48971 return migrateDisplayLayout(withConstrainedLayoutAttributes, withColorInnerBlocks); 48972 }, 48973 save({ 48974 attributes: { 48975 tagName: Tag = 'div' 48976 } 48977 }) { 48978 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save(); 48979 const innerBlocksProps = external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(blockProps); 48980 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 48981 ...innerBlocksProps 48982 }); 48983 } 48984 }; 48985 48986 // Version with color support prior to moving it to the PostTemplate block. 48987 const query_deprecated_v3 = { 48988 attributes: { 48989 queryId: { 48990 type: 'number' 48991 }, 48992 query: { 48993 type: 'object', 48994 default: { 48995 perPage: null, 48996 pages: 0, 48997 offset: 0, 48998 postType: 'post', 48999 order: 'desc', 49000 orderBy: 'date', 49001 author: '', 49002 search: '', 49003 exclude: [], 49004 sticky: '', 49005 inherit: true, 49006 taxQuery: null, 49007 parents: [] 49008 } 49009 }, 49010 tagName: { 49011 type: 'string', 49012 default: 'div' 49013 }, 49014 displayLayout: { 49015 type: 'object', 49016 default: { 49017 type: 'list' 49018 } 49019 }, 49020 namespace: { 49021 type: 'string' 49022 } 49023 }, 49024 supports: { 49025 align: ['wide', 'full'], 49026 html: false, 49027 color: { 49028 gradients: true, 49029 link: true, 49030 __experimentalDefaultControls: { 49031 background: true, 49032 text: true 49033 } 49034 }, 49035 layout: true 49036 }, 49037 isEligible(attributes) { 49038 const { 49039 style, 49040 backgroundColor, 49041 gradient, 49042 textColor 49043 } = attributes; 49044 return backgroundColor || gradient || textColor || style?.color || style?.elements?.link; 49045 }, 49046 migrate(attributes, innerBlocks) { 49047 const [withColorAttributes, withColorInnerBlocks] = migrateColors(attributes, innerBlocks); 49048 const withConstrainedLayoutAttributes = migrateToConstrainedLayout(withColorAttributes); 49049 return migrateDisplayLayout(withConstrainedLayoutAttributes, withColorInnerBlocks); 49050 }, 49051 save({ 49052 attributes: { 49053 tagName: Tag = 'div' 49054 } 49055 }) { 49056 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save(); 49057 const innerBlocksProps = external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(blockProps); 49058 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 49059 ...innerBlocksProps 49060 }); 49061 } 49062 }; 49063 const query_deprecated_v4 = { 49064 attributes: { 49065 queryId: { 49066 type: 'number' 49067 }, 49068 query: { 49069 type: 'object', 49070 default: { 49071 perPage: null, 49072 pages: 0, 49073 offset: 0, 49074 postType: 'post', 49075 order: 'desc', 49076 orderBy: 'date', 49077 author: '', 49078 search: '', 49079 exclude: [], 49080 sticky: '', 49081 inherit: true, 49082 taxQuery: null, 49083 parents: [] 49084 } 49085 }, 49086 tagName: { 49087 type: 'string', 49088 default: 'div' 49089 }, 49090 displayLayout: { 49091 type: 'object', 49092 default: { 49093 type: 'list' 49094 } 49095 }, 49096 namespace: { 49097 type: 'string' 49098 } 49099 }, 49100 supports: { 49101 align: ['wide', 'full'], 49102 html: false, 49103 color: { 49104 gradients: true, 49105 link: true, 49106 __experimentalDefaultControls: { 49107 background: true, 49108 text: true 49109 } 49110 }, 49111 layout: true 49112 }, 49113 save({ 49114 attributes: { 49115 tagName: Tag = 'div' 49116 } 49117 }) { 49118 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save(); 49119 const innerBlocksProps = external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(blockProps); 49120 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 49121 ...innerBlocksProps 49122 }); 49123 }, 49124 isEligible: ({ 49125 layout 49126 }) => layout?.inherit || layout?.contentSize && layout?.type !== 'constrained', 49127 migrate(attributes, innerBlocks) { 49128 const withConstrainedLayoutAttributes = migrateToConstrainedLayout(attributes); 49129 return migrateDisplayLayout(withConstrainedLayoutAttributes, innerBlocks); 49130 } 49131 }; 49132 const query_deprecated_v5 = { 49133 attributes: { 49134 queryId: { 49135 type: 'number' 49136 }, 49137 query: { 49138 type: 'object', 49139 default: { 49140 perPage: null, 49141 pages: 0, 49142 offset: 0, 49143 postType: 'post', 49144 order: 'desc', 49145 orderBy: 'date', 49146 author: '', 49147 search: '', 49148 exclude: [], 49149 sticky: '', 49150 inherit: true, 49151 taxQuery: null, 49152 parents: [] 49153 } 49154 }, 49155 tagName: { 49156 type: 'string', 49157 default: 'div' 49158 }, 49159 displayLayout: { 49160 type: 'object', 49161 default: { 49162 type: 'list' 49163 } 49164 }, 49165 namespace: { 49166 type: 'string' 49167 } 49168 }, 49169 supports: { 49170 align: ['wide', 'full'], 49171 anchor: true, 49172 html: false, 49173 layout: true 49174 }, 49175 save({ 49176 attributes: { 49177 tagName: Tag = 'div' 49178 } 49179 }) { 49180 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save(); 49181 const innerBlocksProps = external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(blockProps); 49182 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 49183 ...innerBlocksProps 49184 }); 49185 }, 49186 isEligible: ({ 49187 displayLayout 49188 }) => { 49189 return !!displayLayout; 49190 }, 49191 migrate: migrateDisplayLayout 49192 }; 49193 const query_deprecated_deprecated = [query_deprecated_v5, query_deprecated_v4, query_deprecated_v3, query_deprecated_v2, query_deprecated_v1]; 49194 /* harmony default export */ const query_deprecated = (query_deprecated_deprecated); 49195 49196 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query/index.js 49197 /** 49198 * WordPress dependencies 49199 */ 49200 49201 49202 /** 49203 * Internal dependencies 49204 */ 49205 49206 const query_metadata = { 49207 $schema: "https://schemas.wp.org/trunk/block.json", 49208 apiVersion: 3, 49209 name: "core/query", 49210 title: "Query Loop", 49211 category: "theme", 49212 description: "An advanced block that allows displaying post types based on different query parameters and visual configurations.", 49213 textdomain: "default", 49214 attributes: { 49215 queryId: { 49216 type: "number" 49217 }, 49218 query: { 49219 type: "object", 49220 "default": { 49221 perPage: null, 49222 pages: 0, 49223 offset: 0, 49224 postType: "post", 49225 order: "desc", 49226 orderBy: "date", 49227 author: "", 49228 search: "", 49229 exclude: [], 49230 sticky: "", 49231 inherit: true, 49232 taxQuery: null, 49233 parents: [], 49234 format: [] 49235 } 49236 }, 49237 tagName: { 49238 type: "string", 49239 "default": "div" 49240 }, 49241 namespace: { 49242 type: "string" 49243 }, 49244 enhancedPagination: { 49245 type: "boolean", 49246 "default": false 49247 } 49248 }, 49249 usesContext: ["postType"], 49250 providesContext: { 49251 queryId: "queryId", 49252 query: "query", 49253 displayLayout: "displayLayout", 49254 enhancedPagination: "enhancedPagination" 49255 }, 49256 supports: { 49257 align: ["wide", "full"], 49258 html: false, 49259 layout: true, 49260 interactivity: true 49261 }, 49262 editorStyle: "wp-block-query-editor" 49263 }; 49264 49265 49266 49267 49268 const { 49269 name: query_name 49270 } = query_metadata; 49271 49272 const query_settings = { 49273 icon: library_loop, 49274 edit: query_edit, 49275 example: { 49276 viewportWidth: 650, 49277 attributes: { 49278 namespace: 'core/posts-list', 49279 query: { 49280 perPage: 4, 49281 pages: 1, 49282 offset: 0, 49283 postType: 'post', 49284 order: 'desc', 49285 orderBy: 'date', 49286 author: '', 49287 search: '', 49288 sticky: 'exclude', 49289 inherit: false 49290 } 49291 }, 49292 innerBlocks: [{ 49293 name: 'core/post-template', 49294 attributes: { 49295 layout: { 49296 type: 'grid', 49297 columnCount: 2 49298 } 49299 }, 49300 innerBlocks: [{ 49301 name: 'core/post-title' 49302 }, { 49303 name: 'core/post-date' 49304 }, { 49305 name: 'core/post-excerpt' 49306 }] 49307 }] 49308 }, 49309 save: query_save_save, 49310 variations: query_variations, 49311 deprecated: query_deprecated 49312 }; 49313 const query_init = () => initBlock({ 49314 name: query_name, 49315 metadata: query_metadata, 49316 settings: query_settings 49317 }); 49318 49319 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-no-results/edit.js 49320 /** 49321 * WordPress dependencies 49322 */ 49323 49324 49325 49326 const query_no_results_edit_TEMPLATE = [['core/paragraph', { 49327 placeholder: (0,external_wp_i18n_namespaceObject.__)('Add text or blocks that will display when a query returns no results.') 49328 }]]; 49329 function QueryNoResultsEdit() { 49330 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 49331 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 49332 template: query_no_results_edit_TEMPLATE 49333 }); 49334 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 49335 ...innerBlocksProps 49336 }); 49337 } 49338 49339 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-no-results/save.js 49340 /** 49341 * WordPress dependencies 49342 */ 49343 49344 49345 function query_no_results_save_save() { 49346 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 49347 } 49348 49349 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-no-results/index.js 49350 /** 49351 * WordPress dependencies 49352 */ 49353 49354 49355 /** 49356 * Internal dependencies 49357 */ 49358 49359 const query_no_results_metadata = { 49360 $schema: "https://schemas.wp.org/trunk/block.json", 49361 apiVersion: 3, 49362 name: "core/query-no-results", 49363 title: "No results", 49364 category: "theme", 49365 description: "Contains the block elements used to render content when no query results are found.", 49366 parent: ["core/query"], 49367 textdomain: "default", 49368 usesContext: ["queryId", "query"], 49369 supports: { 49370 align: true, 49371 reusable: false, 49372 html: false, 49373 color: { 49374 gradients: true, 49375 link: true 49376 }, 49377 typography: { 49378 fontSize: true, 49379 lineHeight: true, 49380 __experimentalFontFamily: true, 49381 __experimentalFontWeight: true, 49382 __experimentalFontStyle: true, 49383 __experimentalTextTransform: true, 49384 __experimentalTextDecoration: true, 49385 __experimentalLetterSpacing: true, 49386 __experimentalDefaultControls: { 49387 fontSize: true 49388 } 49389 }, 49390 interactivity: { 49391 clientNavigation: true 49392 } 49393 } 49394 }; 49395 49396 49397 const { 49398 name: query_no_results_name 49399 } = query_no_results_metadata; 49400 49401 const query_no_results_settings = { 49402 icon: library_loop, 49403 edit: QueryNoResultsEdit, 49404 save: query_no_results_save_save 49405 }; 49406 const query_no_results_init = () => initBlock({ 49407 name: query_no_results_name, 49408 metadata: query_no_results_metadata, 49409 settings: query_no_results_settings 49410 }); 49411 49412 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-pagination/query-pagination-arrow-controls.js 49413 /** 49414 * WordPress dependencies 49415 */ 49416 49417 49418 49419 49420 function QueryPaginationArrowControls({ 49421 value, 49422 onChange 49423 }) { 49424 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, { 49425 __next40pxDefaultSize: true, 49426 __nextHasNoMarginBottom: true, 49427 label: (0,external_wp_i18n_namespaceObject.__)('Arrow'), 49428 value: value, 49429 onChange: onChange, 49430 help: (0,external_wp_i18n_namespaceObject.__)('A decorative arrow appended to the next and previous page link.'), 49431 isBlock: true, 49432 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 49433 value: "none", 49434 label: (0,external_wp_i18n_namespaceObject._x)('None', 'Arrow option for Query Pagination Next/Previous blocks') 49435 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 49436 value: "arrow", 49437 label: (0,external_wp_i18n_namespaceObject._x)('Arrow', 'Arrow option for Query Pagination Next/Previous blocks') 49438 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 49439 value: "chevron", 49440 label: (0,external_wp_i18n_namespaceObject._x)('Chevron', 'Arrow option for Query Pagination Next/Previous blocks') 49441 })] 49442 }); 49443 } 49444 49445 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-pagination/query-pagination-label-control.js 49446 /** 49447 * WordPress dependencies 49448 */ 49449 49450 49451 49452 function QueryPaginationLabelControl({ 49453 value, 49454 onChange 49455 }) { 49456 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 49457 __nextHasNoMarginBottom: true, 49458 label: (0,external_wp_i18n_namespaceObject.__)('Show label text'), 49459 help: (0,external_wp_i18n_namespaceObject.__)('Toggle off to hide the label text, e.g. "Next Page".'), 49460 onChange: onChange, 49461 checked: value === true 49462 }); 49463 } 49464 49465 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-pagination/edit.js 49466 /** 49467 * WordPress dependencies 49468 */ 49469 49470 49471 49472 49473 49474 49475 /** 49476 * Internal dependencies 49477 */ 49478 49479 49480 49481 49482 49483 const query_pagination_edit_TEMPLATE = [['core/query-pagination-previous'], ['core/query-pagination-numbers'], ['core/query-pagination-next']]; 49484 function edit_QueryPaginationEdit({ 49485 attributes: { 49486 paginationArrow, 49487 showLabel 49488 }, 49489 setAttributes, 49490 clientId 49491 }) { 49492 const hasNextPreviousBlocks = (0,external_wp_data_namespaceObject.useSelect)(select => { 49493 const { 49494 getBlocks 49495 } = select(external_wp_blockEditor_namespaceObject.store); 49496 const innerBlocks = getBlocks(clientId); 49497 /** 49498 * Show the `paginationArrow` and `showLabel` controls only if a 49499 * `QueryPaginationNext/Previous` block exists. 49500 */ 49501 return innerBlocks?.find(innerBlock => { 49502 return ['core/query-pagination-next', 'core/query-pagination-previous'].includes(innerBlock.name); 49503 }); 49504 }, [clientId]); 49505 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 49506 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 49507 template: query_pagination_edit_TEMPLATE 49508 }); 49509 // Always show label text if paginationArrow is set to 'none'. 49510 (0,external_wp_element_namespaceObject.useEffect)(() => { 49511 if (paginationArrow === 'none' && !showLabel) { 49512 setAttributes({ 49513 showLabel: true 49514 }); 49515 } 49516 }, [paginationArrow, setAttributes, showLabel]); 49517 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 49518 children: [hasNextPreviousBlocks && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 49519 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 49520 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 49521 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(QueryPaginationArrowControls, { 49522 value: paginationArrow, 49523 onChange: value => { 49524 setAttributes({ 49525 paginationArrow: value 49526 }); 49527 } 49528 }), paginationArrow !== 'none' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(QueryPaginationLabelControl, { 49529 value: showLabel, 49530 onChange: value => { 49531 setAttributes({ 49532 showLabel: value 49533 }); 49534 } 49535 })] 49536 }) 49537 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("nav", { 49538 ...innerBlocksProps 49539 })] 49540 }); 49541 } 49542 49543 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-pagination/save.js 49544 /** 49545 * WordPress dependencies 49546 */ 49547 49548 49549 function query_pagination_save_save() { 49550 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}); 49551 } 49552 49553 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-pagination/deprecated.js 49554 /** 49555 * WordPress dependencies 49556 */ 49557 49558 49559 const query_pagination_deprecated_deprecated = [ 49560 // Version with wrapper `div` element. 49561 { 49562 save() { 49563 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 49564 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 49565 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 49566 }); 49567 } 49568 }]; 49569 /* harmony default export */ const query_pagination_deprecated = (query_pagination_deprecated_deprecated); 49570 49571 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-pagination/index.js 49572 /** 49573 * WordPress dependencies 49574 */ 49575 49576 49577 /** 49578 * Internal dependencies 49579 */ 49580 49581 const query_pagination_metadata = { 49582 $schema: "https://schemas.wp.org/trunk/block.json", 49583 apiVersion: 3, 49584 name: "core/query-pagination", 49585 title: "Pagination", 49586 category: "theme", 49587 ancestor: ["core/query"], 49588 allowedBlocks: ["core/query-pagination-previous", "core/query-pagination-numbers", "core/query-pagination-next"], 49589 description: "Displays a paginated navigation to next/previous set of posts, when applicable.", 49590 textdomain: "default", 49591 attributes: { 49592 paginationArrow: { 49593 type: "string", 49594 "default": "none" 49595 }, 49596 showLabel: { 49597 type: "boolean", 49598 "default": true 49599 } 49600 }, 49601 usesContext: ["queryId", "query"], 49602 providesContext: { 49603 paginationArrow: "paginationArrow", 49604 showLabel: "showLabel" 49605 }, 49606 supports: { 49607 align: true, 49608 reusable: false, 49609 html: false, 49610 color: { 49611 gradients: true, 49612 link: true, 49613 __experimentalDefaultControls: { 49614 background: true, 49615 text: true, 49616 link: true 49617 } 49618 }, 49619 layout: { 49620 allowSwitching: false, 49621 allowInheriting: false, 49622 "default": { 49623 type: "flex" 49624 } 49625 }, 49626 typography: { 49627 fontSize: true, 49628 lineHeight: true, 49629 __experimentalFontFamily: true, 49630 __experimentalFontWeight: true, 49631 __experimentalFontStyle: true, 49632 __experimentalTextTransform: true, 49633 __experimentalTextDecoration: true, 49634 __experimentalLetterSpacing: true, 49635 __experimentalDefaultControls: { 49636 fontSize: true 49637 } 49638 }, 49639 interactivity: { 49640 clientNavigation: true 49641 } 49642 }, 49643 editorStyle: "wp-block-query-pagination-editor", 49644 style: "wp-block-query-pagination" 49645 }; 49646 49647 49648 49649 const { 49650 name: query_pagination_name 49651 } = query_pagination_metadata; 49652 49653 const query_pagination_settings = { 49654 icon: query_pagination, 49655 edit: edit_QueryPaginationEdit, 49656 save: query_pagination_save_save, 49657 deprecated: query_pagination_deprecated 49658 }; 49659 const query_pagination_init = () => initBlock({ 49660 name: query_pagination_name, 49661 metadata: query_pagination_metadata, 49662 settings: query_pagination_settings 49663 }); 49664 49665 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-pagination-next/edit.js 49666 /** 49667 * WordPress dependencies 49668 */ 49669 49670 49671 49672 49673 const query_pagination_next_edit_arrowMap = { 49674 none: '', 49675 arrow: '→', 49676 chevron: '»' 49677 }; 49678 function QueryPaginationNextEdit({ 49679 attributes: { 49680 label 49681 }, 49682 setAttributes, 49683 context: { 49684 paginationArrow, 49685 showLabel 49686 } 49687 }) { 49688 const displayArrow = query_pagination_next_edit_arrowMap[paginationArrow]; 49689 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("a", { 49690 href: "#pagination-next-pseudo-link", 49691 onClick: event => event.preventDefault(), 49692 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)(), 49693 children: [showLabel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.PlainText, { 49694 __experimentalVersion: 2, 49695 tagName: "span", 49696 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Next page link'), 49697 placeholder: (0,external_wp_i18n_namespaceObject.__)('Next Page'), 49698 value: label, 49699 onChange: newLabel => setAttributes({ 49700 label: newLabel 49701 }) 49702 }), displayArrow && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 49703 className: `wp-block-query-pagination-next-arrow is-arrow-$paginationArrow}`, 49704 "aria-hidden": true, 49705 children: displayArrow 49706 })] 49707 }); 49708 } 49709 49710 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-pagination-next/index.js 49711 /** 49712 * WordPress dependencies 49713 */ 49714 49715 49716 /** 49717 * Internal dependencies 49718 */ 49719 49720 const query_pagination_next_metadata = { 49721 $schema: "https://schemas.wp.org/trunk/block.json", 49722 apiVersion: 3, 49723 name: "core/query-pagination-next", 49724 title: "Next Page", 49725 category: "theme", 49726 parent: ["core/query-pagination"], 49727 description: "Displays the next posts page link.", 49728 textdomain: "default", 49729 attributes: { 49730 label: { 49731 type: "string" 49732 } 49733 }, 49734 usesContext: ["queryId", "query", "paginationArrow", "showLabel", "enhancedPagination"], 49735 supports: { 49736 reusable: false, 49737 html: false, 49738 color: { 49739 gradients: true, 49740 text: false, 49741 __experimentalDefaultControls: { 49742 background: true 49743 } 49744 }, 49745 typography: { 49746 fontSize: true, 49747 lineHeight: true, 49748 __experimentalFontFamily: true, 49749 __experimentalFontWeight: true, 49750 __experimentalFontStyle: true, 49751 __experimentalTextTransform: true, 49752 __experimentalTextDecoration: true, 49753 __experimentalLetterSpacing: true, 49754 __experimentalDefaultControls: { 49755 fontSize: true 49756 } 49757 }, 49758 interactivity: { 49759 clientNavigation: true 49760 } 49761 } 49762 }; 49763 49764 const { 49765 name: query_pagination_next_name 49766 } = query_pagination_next_metadata; 49767 49768 const query_pagination_next_settings = { 49769 icon: query_pagination_next, 49770 edit: QueryPaginationNextEdit 49771 }; 49772 const query_pagination_next_init = () => initBlock({ 49773 name: query_pagination_next_name, 49774 metadata: query_pagination_next_metadata, 49775 settings: query_pagination_next_settings 49776 }); 49777 49778 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-pagination-numbers/edit.js 49779 /** 49780 * WordPress dependencies 49781 */ 49782 49783 49784 49785 49786 49787 49788 const createPaginationItem = (content, Tag = 'a', extraClass = '') => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 49789 className: `page-numbers $extraClass}`, 49790 children: content 49791 }, content); 49792 const previewPaginationNumbers = midSize => { 49793 const paginationItems = []; 49794 49795 // First set of pagination items. 49796 for (let i = 1; i <= midSize; i++) { 49797 paginationItems.push(createPaginationItem(i)); 49798 } 49799 49800 // Current pagination item. 49801 paginationItems.push(createPaginationItem(midSize + 1, 'span', 'current')); 49802 49803 // Second set of pagination items. 49804 for (let i = 1; i <= midSize; i++) { 49805 paginationItems.push(createPaginationItem(midSize + 1 + i)); 49806 } 49807 49808 // Dots. 49809 paginationItems.push(createPaginationItem('...', 'span', 'dots')); 49810 49811 // Last pagination item. 49812 paginationItems.push(createPaginationItem(midSize * 2 + 3)); 49813 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 49814 children: paginationItems 49815 }); 49816 }; 49817 function QueryPaginationNumbersEdit({ 49818 attributes, 49819 setAttributes 49820 }) { 49821 const { 49822 midSize 49823 } = attributes; 49824 const paginationNumbers = previewPaginationNumbers(parseInt(midSize, 10)); 49825 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 49826 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 49827 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 49828 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 49829 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 49830 __next40pxDefaultSize: true, 49831 __nextHasNoMarginBottom: true, 49832 label: (0,external_wp_i18n_namespaceObject.__)('Number of links'), 49833 help: (0,external_wp_i18n_namespaceObject.__)('Specify how many links can appear before and after the current page number. Links to the first, current and last page are always visible.'), 49834 value: midSize, 49835 onChange: value => { 49836 setAttributes({ 49837 midSize: parseInt(value, 10) 49838 }); 49839 }, 49840 min: 0, 49841 max: 5, 49842 withInputField: false 49843 }) 49844 }) 49845 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 49846 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)(), 49847 children: paginationNumbers 49848 })] 49849 }); 49850 } 49851 49852 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-pagination-numbers/index.js 49853 /** 49854 * WordPress dependencies 49855 */ 49856 49857 49858 /** 49859 * Internal dependencies 49860 */ 49861 49862 const query_pagination_numbers_metadata = { 49863 $schema: "https://schemas.wp.org/trunk/block.json", 49864 apiVersion: 3, 49865 name: "core/query-pagination-numbers", 49866 title: "Page Numbers", 49867 category: "theme", 49868 parent: ["core/query-pagination"], 49869 description: "Displays a list of page numbers for pagination.", 49870 textdomain: "default", 49871 attributes: { 49872 midSize: { 49873 type: "number", 49874 "default": 2 49875 } 49876 }, 49877 usesContext: ["queryId", "query", "enhancedPagination"], 49878 supports: { 49879 reusable: false, 49880 html: false, 49881 color: { 49882 gradients: true, 49883 text: false, 49884 __experimentalDefaultControls: { 49885 background: true 49886 } 49887 }, 49888 typography: { 49889 fontSize: true, 49890 lineHeight: true, 49891 __experimentalFontFamily: true, 49892 __experimentalFontWeight: true, 49893 __experimentalFontStyle: true, 49894 __experimentalTextTransform: true, 49895 __experimentalTextDecoration: true, 49896 __experimentalLetterSpacing: true, 49897 __experimentalDefaultControls: { 49898 fontSize: true 49899 } 49900 }, 49901 interactivity: { 49902 clientNavigation: true 49903 } 49904 }, 49905 editorStyle: "wp-block-query-pagination-numbers-editor" 49906 }; 49907 49908 const { 49909 name: query_pagination_numbers_name 49910 } = query_pagination_numbers_metadata; 49911 49912 const query_pagination_numbers_settings = { 49913 icon: query_pagination_numbers, 49914 edit: QueryPaginationNumbersEdit 49915 }; 49916 const query_pagination_numbers_init = () => initBlock({ 49917 name: query_pagination_numbers_name, 49918 metadata: query_pagination_numbers_metadata, 49919 settings: query_pagination_numbers_settings 49920 }); 49921 49922 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-pagination-previous/edit.js 49923 /** 49924 * WordPress dependencies 49925 */ 49926 49927 49928 49929 49930 const query_pagination_previous_edit_arrowMap = { 49931 none: '', 49932 arrow: '←', 49933 chevron: '«' 49934 }; 49935 function QueryPaginationPreviousEdit({ 49936 attributes: { 49937 label 49938 }, 49939 setAttributes, 49940 context: { 49941 paginationArrow, 49942 showLabel 49943 } 49944 }) { 49945 const displayArrow = query_pagination_previous_edit_arrowMap[paginationArrow]; 49946 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("a", { 49947 href: "#pagination-previous-pseudo-link", 49948 onClick: event => event.preventDefault(), 49949 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)(), 49950 children: [displayArrow && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 49951 className: `wp-block-query-pagination-previous-arrow is-arrow-$paginationArrow}`, 49952 "aria-hidden": true, 49953 children: displayArrow 49954 }), showLabel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.PlainText, { 49955 __experimentalVersion: 2, 49956 tagName: "span", 49957 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Previous page link'), 49958 placeholder: (0,external_wp_i18n_namespaceObject.__)('Previous Page'), 49959 value: label, 49960 onChange: newLabel => setAttributes({ 49961 label: newLabel 49962 }) 49963 })] 49964 }); 49965 } 49966 49967 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-pagination-previous/index.js 49968 /** 49969 * WordPress dependencies 49970 */ 49971 49972 49973 /** 49974 * Internal dependencies 49975 */ 49976 49977 const query_pagination_previous_metadata = { 49978 $schema: "https://schemas.wp.org/trunk/block.json", 49979 apiVersion: 3, 49980 name: "core/query-pagination-previous", 49981 title: "Previous Page", 49982 category: "theme", 49983 parent: ["core/query-pagination"], 49984 description: "Displays the previous posts page link.", 49985 textdomain: "default", 49986 attributes: { 49987 label: { 49988 type: "string" 49989 } 49990 }, 49991 usesContext: ["queryId", "query", "paginationArrow", "showLabel", "enhancedPagination"], 49992 supports: { 49993 reusable: false, 49994 html: false, 49995 color: { 49996 gradients: true, 49997 text: false, 49998 __experimentalDefaultControls: { 49999 background: true 50000 } 50001 }, 50002 typography: { 50003 fontSize: true, 50004 lineHeight: true, 50005 __experimentalFontFamily: true, 50006 __experimentalFontWeight: true, 50007 __experimentalFontStyle: true, 50008 __experimentalTextTransform: true, 50009 __experimentalTextDecoration: true, 50010 __experimentalLetterSpacing: true, 50011 __experimentalDefaultControls: { 50012 fontSize: true 50013 } 50014 }, 50015 interactivity: { 50016 clientNavigation: true 50017 } 50018 } 50019 }; 50020 50021 const { 50022 name: query_pagination_previous_name 50023 } = query_pagination_previous_metadata; 50024 50025 const query_pagination_previous_settings = { 50026 icon: query_pagination_previous, 50027 edit: QueryPaginationPreviousEdit 50028 }; 50029 const query_pagination_previous_init = () => initBlock({ 50030 name: query_pagination_previous_name, 50031 metadata: query_pagination_previous_metadata, 50032 settings: query_pagination_previous_settings 50033 }); 50034 50035 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-title/use-archive-label.js 50036 /** 50037 * WordPress dependencies 50038 */ 50039 50040 50041 function useArchiveLabel() { 50042 const templateSlug = (0,external_wp_data_namespaceObject.useSelect)(select => { 50043 // @wordpress/block-library should not depend on @wordpress/editor. 50044 // Blocks can be loaded into a *non-post* block editor, so to avoid 50045 // declaring @wordpress/editor as a dependency, we must access its 50046 // store by string. 50047 // The solution here is to split WP specific blocks from generic blocks. 50048 // eslint-disable-next-line @wordpress/data-no-store-string-literals 50049 const { 50050 getCurrentPostId, 50051 getCurrentPostType, 50052 getCurrentTemplateId 50053 } = select('core/editor'); 50054 const currentPostType = getCurrentPostType(); 50055 const templateId = getCurrentTemplateId() || (currentPostType === 'wp_template' ? getCurrentPostId() : null); 50056 return templateId ? select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('postType', 'wp_template', templateId)?.slug : null; 50057 }, []); 50058 const taxonomyMatches = templateSlug?.match(/^(category|tag|taxonomy-([^-]+))$|^(((category|tag)|taxonomy-([^-]+))-(.+))$/); 50059 let taxonomy; 50060 let term; 50061 let isAuthor = false; 50062 let authorSlug; 50063 if (taxonomyMatches) { 50064 // If is for a all taxonomies of a type 50065 if (taxonomyMatches[1]) { 50066 taxonomy = taxonomyMatches[2] ? taxonomyMatches[2] : taxonomyMatches[1]; 50067 } 50068 // If is for a all taxonomies of a type 50069 else if (taxonomyMatches[3]) { 50070 taxonomy = taxonomyMatches[6] ? taxonomyMatches[6] : taxonomyMatches[4]; 50071 term = taxonomyMatches[7]; 50072 } 50073 taxonomy = taxonomy === 'tag' ? 'post_tag' : taxonomy; 50074 50075 //getTaxonomy( 'category' ); 50076 //wp.data.select('core').getEntityRecords( 'taxonomy', 'category', {slug: 'newcat'} ); 50077 } else { 50078 const authorMatches = templateSlug?.match(/^(author)$|^author-(.+)$/); 50079 if (authorMatches) { 50080 isAuthor = true; 50081 if (authorMatches[2]) { 50082 authorSlug = authorMatches[2]; 50083 } 50084 } 50085 } 50086 return (0,external_wp_data_namespaceObject.useSelect)(select => { 50087 const { 50088 getEntityRecords, 50089 getTaxonomy, 50090 getAuthors 50091 } = select(external_wp_coreData_namespaceObject.store); 50092 let archiveTypeLabel; 50093 let archiveNameLabel; 50094 if (taxonomy) { 50095 archiveTypeLabel = getTaxonomy(taxonomy)?.labels?.singular_name; 50096 } 50097 if (term) { 50098 const records = getEntityRecords('taxonomy', taxonomy, { 50099 slug: term, 50100 per_page: 1 50101 }); 50102 if (records && records[0]) { 50103 archiveNameLabel = records[0].name; 50104 } 50105 } 50106 if (isAuthor) { 50107 archiveTypeLabel = 'Author'; 50108 if (authorSlug) { 50109 const authorRecords = getAuthors({ 50110 slug: authorSlug 50111 }); 50112 if (authorRecords && authorRecords[0]) { 50113 archiveNameLabel = authorRecords[0].name; 50114 } 50115 } 50116 } 50117 return { 50118 archiveTypeLabel, 50119 archiveNameLabel 50120 }; 50121 }, [authorSlug, isAuthor, taxonomy, term]); 50122 } 50123 50124 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-title/edit.js 50125 /** 50126 * External dependencies 50127 */ 50128 50129 50130 /** 50131 * WordPress dependencies 50132 */ 50133 50134 50135 50136 50137 /** 50138 * Internal dependencies 50139 */ 50140 50141 50142 50143 50144 const SUPPORTED_TYPES = ['archive', 'search']; 50145 function QueryTitleEdit({ 50146 attributes: { 50147 type, 50148 level, 50149 levelOptions, 50150 textAlign, 50151 showPrefix, 50152 showSearchTerm 50153 }, 50154 setAttributes 50155 }) { 50156 const { 50157 archiveTypeLabel, 50158 archiveNameLabel 50159 } = useArchiveLabel(); 50160 const TagName = `h$level}`; 50161 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 50162 className: dist_clsx('wp-block-query-title__placeholder', { 50163 [`has-text-align-$textAlign}`]: textAlign 50164 }) 50165 }); 50166 if (!SUPPORTED_TYPES.includes(type)) { 50167 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 50168 ...blockProps, 50169 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 50170 children: (0,external_wp_i18n_namespaceObject.__)('Provided type is not supported.') 50171 }) 50172 }); 50173 } 50174 let titleElement; 50175 if (type === 'archive') { 50176 let title; 50177 if (archiveTypeLabel) { 50178 if (showPrefix) { 50179 if (archiveNameLabel) { 50180 title = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: 1: Archive type title e.g: "Category", 2: Label of the archive e.g: "Shoes" */ 50181 (0,external_wp_i18n_namespaceObject._x)('%1$s: %2$s', 'archive label'), archiveTypeLabel, archiveNameLabel); 50182 } else { 50183 title = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: Archive type title e.g: "Category", "Tag"... */ 50184 (0,external_wp_i18n_namespaceObject.__)('%s: Name'), archiveTypeLabel); 50185 } 50186 } else if (archiveNameLabel) { 50187 title = archiveNameLabel; 50188 } else { 50189 title = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: Archive type title e.g: "Category", "Tag"... */ 50190 (0,external_wp_i18n_namespaceObject.__)('%s name'), archiveTypeLabel); 50191 } 50192 } else { 50193 title = showPrefix ? (0,external_wp_i18n_namespaceObject.__)('Archive type: Name') : (0,external_wp_i18n_namespaceObject.__)('Archive title'); 50194 } 50195 titleElement = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 50196 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 50197 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 50198 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 50199 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 50200 __nextHasNoMarginBottom: true, 50201 label: (0,external_wp_i18n_namespaceObject.__)('Show archive type in title'), 50202 onChange: () => setAttributes({ 50203 showPrefix: !showPrefix 50204 }), 50205 checked: showPrefix 50206 }) 50207 }) 50208 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 50209 ...blockProps, 50210 children: title 50211 })] 50212 }); 50213 } 50214 if (type === 'search') { 50215 titleElement = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 50216 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 50217 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 50218 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 50219 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 50220 __nextHasNoMarginBottom: true, 50221 label: (0,external_wp_i18n_namespaceObject.__)('Show search term in title'), 50222 onChange: () => setAttributes({ 50223 showSearchTerm: !showSearchTerm 50224 }), 50225 checked: showSearchTerm 50226 }) 50227 }) 50228 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 50229 ...blockProps, 50230 children: showSearchTerm ? (0,external_wp_i18n_namespaceObject.__)('Search results for: “search term”') : (0,external_wp_i18n_namespaceObject.__)('Search results') 50231 })] 50232 }); 50233 } 50234 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 50235 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 50236 group: "block", 50237 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.HeadingLevelDropdown, { 50238 value: level, 50239 options: levelOptions, 50240 onChange: newLevel => setAttributes({ 50241 level: newLevel 50242 }) 50243 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 50244 value: textAlign, 50245 onChange: nextAlign => { 50246 setAttributes({ 50247 textAlign: nextAlign 50248 }); 50249 } 50250 })] 50251 }), titleElement] 50252 }); 50253 } 50254 50255 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-title/variations.js 50256 /** 50257 * WordPress dependencies 50258 */ 50259 50260 50261 const query_title_variations_variations = [{ 50262 isDefault: true, 50263 name: 'archive-title', 50264 title: (0,external_wp_i18n_namespaceObject.__)('Archive Title'), 50265 description: (0,external_wp_i18n_namespaceObject.__)('Display the archive title based on the queried object.'), 50266 icon: library_title, 50267 attributes: { 50268 type: 'archive' 50269 }, 50270 scope: ['inserter'] 50271 }, { 50272 isDefault: false, 50273 name: 'search-title', 50274 title: (0,external_wp_i18n_namespaceObject.__)('Search Results Title'), 50275 description: (0,external_wp_i18n_namespaceObject.__)('Display the search results title based on the queried object.'), 50276 icon: library_title, 50277 attributes: { 50278 type: 'search' 50279 }, 50280 scope: ['inserter'] 50281 }]; 50282 50283 /** 50284 * Add `isActive` function to all `query-title` variations, if not defined. 50285 * `isActive` function is used to find a variation match from a created 50286 * Block by providing its attributes. 50287 */ 50288 query_title_variations_variations.forEach(variation => { 50289 if (variation.isActive) { 50290 return; 50291 } 50292 variation.isActive = (blockAttributes, variationAttributes) => blockAttributes.type === variationAttributes.type; 50293 }); 50294 /* harmony default export */ const query_title_variations = (query_title_variations_variations); 50295 50296 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-title/deprecated.js 50297 /** 50298 * Internal dependencies 50299 */ 50300 50301 const query_title_deprecated_v1 = { 50302 attributes: { 50303 type: { 50304 type: 'string' 50305 }, 50306 textAlign: { 50307 type: 'string' 50308 }, 50309 level: { 50310 type: 'number', 50311 default: 1 50312 } 50313 }, 50314 supports: { 50315 align: ['wide', 'full'], 50316 html: false, 50317 color: { 50318 gradients: true 50319 }, 50320 spacing: { 50321 margin: true 50322 }, 50323 typography: { 50324 fontSize: true, 50325 lineHeight: true, 50326 __experimentalFontFamily: true 50327 } 50328 }, 50329 save() { 50330 return null; 50331 }, 50332 migrate: migrate_font_family, 50333 isEligible({ 50334 style 50335 }) { 50336 return style?.typography?.fontFamily; 50337 } 50338 }; 50339 50340 /** 50341 * New deprecations need to be placed first 50342 * for them to have higher priority. 50343 * 50344 * Old deprecations may need to be updated as well. 50345 * 50346 * See block-deprecation.md 50347 */ 50348 /* harmony default export */ const query_title_deprecated = ([query_title_deprecated_v1]); 50349 50350 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/query-title/index.js 50351 /** 50352 * WordPress dependencies 50353 */ 50354 50355 50356 /** 50357 * Internal dependencies 50358 */ 50359 50360 const query_title_metadata = { 50361 $schema: "https://schemas.wp.org/trunk/block.json", 50362 apiVersion: 3, 50363 name: "core/query-title", 50364 title: "Query Title", 50365 category: "theme", 50366 description: "Display the query title.", 50367 textdomain: "default", 50368 attributes: { 50369 type: { 50370 type: "string" 50371 }, 50372 textAlign: { 50373 type: "string" 50374 }, 50375 level: { 50376 type: "number", 50377 "default": 1 50378 }, 50379 levelOptions: { 50380 type: "array" 50381 }, 50382 showPrefix: { 50383 type: "boolean", 50384 "default": true 50385 }, 50386 showSearchTerm: { 50387 type: "boolean", 50388 "default": true 50389 } 50390 }, 50391 supports: { 50392 align: ["wide", "full"], 50393 html: false, 50394 color: { 50395 gradients: true, 50396 __experimentalDefaultControls: { 50397 background: true, 50398 text: true 50399 } 50400 }, 50401 spacing: { 50402 margin: true, 50403 padding: true 50404 }, 50405 typography: { 50406 fontSize: true, 50407 lineHeight: true, 50408 __experimentalFontFamily: true, 50409 __experimentalFontStyle: true, 50410 __experimentalFontWeight: true, 50411 __experimentalLetterSpacing: true, 50412 __experimentalTextTransform: true, 50413 __experimentalTextDecoration: true, 50414 __experimentalDefaultControls: { 50415 fontSize: true 50416 } 50417 }, 50418 interactivity: { 50419 clientNavigation: true 50420 }, 50421 __experimentalBorder: { 50422 radius: true, 50423 color: true, 50424 width: true, 50425 style: true, 50426 __experimentalDefaultControls: { 50427 radius: true, 50428 color: true, 50429 width: true, 50430 style: true 50431 } 50432 } 50433 }, 50434 style: "wp-block-query-title" 50435 }; 50436 50437 50438 50439 const { 50440 name: query_title_name 50441 } = query_title_metadata; 50442 50443 const query_title_settings = { 50444 icon: library_title, 50445 edit: QueryTitleEdit, 50446 variations: query_title_variations, 50447 deprecated: query_title_deprecated 50448 }; 50449 const query_title_init = () => initBlock({ 50450 name: query_title_name, 50451 metadata: query_title_metadata, 50452 settings: query_title_settings 50453 }); 50454 50455 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/quote.js 50456 /** 50457 * WordPress dependencies 50458 */ 50459 50460 50461 const quote = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 50462 viewBox: "0 0 24 24", 50463 xmlns: "http://www.w3.org/2000/svg", 50464 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 50465 d: "M13 6v6h5.2v4c0 .8-.2 1.4-.5 1.7-.6.6-1.6.6-2.5.5h-.3v1.5h.5c1 0 2.3-.1 3.3-1 .6-.6 1-1.6 1-2.8V6H13zm-9 6h5.2v4c0 .8-.2 1.4-.5 1.7-.6.6-1.6.6-2.5.5h-.3v1.5h.5c1 0 2.3-.1 3.3-1 .6-.6 1-1.6 1-2.8V6H4v6z" 50466 }) 50467 }); 50468 /* harmony default export */ const library_quote = (quote); 50469 50470 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/quote/deprecated.js 50471 /** 50472 * External dependencies 50473 */ 50474 50475 50476 /** 50477 * WordPress dependencies 50478 */ 50479 50480 50481 50482 50483 const migrateToQuoteV2 = attributes => { 50484 const { 50485 value, 50486 ...restAttributes 50487 } = attributes; 50488 return [{ 50489 ...restAttributes 50490 }, value ? (0,external_wp_blocks_namespaceObject.parseWithAttributeSchema)(value, { 50491 type: 'array', 50492 source: 'query', 50493 selector: 'p', 50494 query: { 50495 content: { 50496 type: 'string', 50497 source: 'html' 50498 } 50499 } 50500 }).map(({ 50501 content 50502 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 50503 content 50504 })) : (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph')]; 50505 }; 50506 const deprecated_TEXT_ALIGN_OPTIONS = ['left', 'right', 'center']; 50507 50508 // Migrate existing text alignment settings to the renamed attribute. 50509 const deprecated_migrateTextAlign = (attributes, innerBlocks) => { 50510 const { 50511 align, 50512 ...rest 50513 } = attributes; 50514 // Check if there are valid alignments stored in the old attribute 50515 // and assign them to the new attribute name. 50516 const migratedAttributes = deprecated_TEXT_ALIGN_OPTIONS.includes(align) ? { 50517 ...rest, 50518 textAlign: align 50519 } : attributes; 50520 return [migratedAttributes, innerBlocks]; 50521 }; 50522 50523 // Migrate the v2 blocks with style === `2`; 50524 const migrateLargeStyle = (attributes, innerBlocks) => { 50525 return [{ 50526 ...attributes, 50527 className: attributes.className ? attributes.className + ' is-style-large' : 'is-style-large' 50528 }, innerBlocks]; 50529 }; 50530 50531 // Version before the 'align' attribute was replaced with 'textAlign'. 50532 const quote_deprecated_v4 = { 50533 attributes: { 50534 value: { 50535 type: 'string', 50536 source: 'html', 50537 selector: 'blockquote', 50538 multiline: 'p', 50539 default: '', 50540 role: 'content' 50541 }, 50542 citation: { 50543 type: 'string', 50544 source: 'html', 50545 selector: 'cite', 50546 default: '', 50547 role: 'content' 50548 }, 50549 align: { 50550 type: 'string' 50551 } 50552 }, 50553 supports: { 50554 anchor: true, 50555 html: false, 50556 __experimentalOnEnter: true, 50557 __experimentalOnMerge: true, 50558 typography: { 50559 fontSize: true, 50560 lineHeight: true, 50561 __experimentalFontFamily: true, 50562 __experimentalFontWeight: true, 50563 __experimentalFontStyle: true, 50564 __experimentalTextTransform: true, 50565 __experimentalTextDecoration: true, 50566 __experimentalLetterSpacing: true, 50567 __experimentalDefaultControls: { 50568 fontSize: true, 50569 fontAppearance: true 50570 } 50571 }, 50572 color: { 50573 gradients: true, 50574 heading: true, 50575 link: true, 50576 __experimentalDefaultControls: { 50577 background: true, 50578 text: true 50579 } 50580 } 50581 }, 50582 isEligible: ({ 50583 align 50584 }) => deprecated_TEXT_ALIGN_OPTIONS.includes(align), 50585 save({ 50586 attributes 50587 }) { 50588 const { 50589 align, 50590 citation 50591 } = attributes; 50592 const className = dist_clsx({ 50593 [`has-text-align-$align}`]: align 50594 }); 50595 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("blockquote", { 50596 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 50597 className 50598 }), 50599 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 50600 tagName: "cite", 50601 value: citation 50602 })] 50603 }); 50604 }, 50605 migrate: deprecated_migrateTextAlign 50606 }; 50607 const quote_deprecated_v3 = { 50608 attributes: { 50609 value: { 50610 type: 'string', 50611 source: 'html', 50612 selector: 'blockquote', 50613 multiline: 'p', 50614 default: '', 50615 role: 'content' 50616 }, 50617 citation: { 50618 type: 'string', 50619 source: 'html', 50620 selector: 'cite', 50621 default: '', 50622 role: 'content' 50623 }, 50624 align: { 50625 type: 'string' 50626 } 50627 }, 50628 supports: { 50629 anchor: true, 50630 __experimentalSlashInserter: true, 50631 typography: { 50632 fontSize: true, 50633 lineHeight: true, 50634 __experimentalFontStyle: true, 50635 __experimentalFontWeight: true, 50636 __experimentalLetterSpacing: true, 50637 __experimentalTextTransform: true, 50638 __experimentalDefaultControls: { 50639 fontSize: true, 50640 fontAppearance: true 50641 } 50642 } 50643 }, 50644 save({ 50645 attributes 50646 }) { 50647 const { 50648 align, 50649 value, 50650 citation 50651 } = attributes; 50652 const className = dist_clsx({ 50653 [`has-text-align-$align}`]: align 50654 }); 50655 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("blockquote", { 50656 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 50657 className 50658 }), 50659 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 50660 multiline: true, 50661 value: value 50662 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 50663 tagName: "cite", 50664 value: citation 50665 })] 50666 }); 50667 }, 50668 migrate(attributes) { 50669 return deprecated_migrateTextAlign(...migrateToQuoteV2(attributes)); 50670 } 50671 }; 50672 const quote_deprecated_v2 = { 50673 attributes: { 50674 value: { 50675 type: 'string', 50676 source: 'html', 50677 selector: 'blockquote', 50678 multiline: 'p', 50679 default: '' 50680 }, 50681 citation: { 50682 type: 'string', 50683 source: 'html', 50684 selector: 'cite', 50685 default: '' 50686 }, 50687 align: { 50688 type: 'string' 50689 } 50690 }, 50691 migrate(attributes) { 50692 return deprecated_migrateTextAlign(...migrateToQuoteV2(attributes)); 50693 }, 50694 save({ 50695 attributes 50696 }) { 50697 const { 50698 align, 50699 value, 50700 citation 50701 } = attributes; 50702 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("blockquote", { 50703 style: { 50704 textAlign: align ? align : null 50705 }, 50706 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 50707 multiline: true, 50708 value: value 50709 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 50710 tagName: "cite", 50711 value: citation 50712 })] 50713 }); 50714 } 50715 }; 50716 const quote_deprecated_v1 = { 50717 attributes: { 50718 value: { 50719 type: 'string', 50720 source: 'html', 50721 selector: 'blockquote', 50722 multiline: 'p', 50723 default: '' 50724 }, 50725 citation: { 50726 type: 'string', 50727 source: 'html', 50728 selector: 'cite', 50729 default: '' 50730 }, 50731 align: { 50732 type: 'string' 50733 }, 50734 style: { 50735 type: 'number', 50736 default: 1 50737 } 50738 }, 50739 migrate(attributes) { 50740 if (attributes.style === 2) { 50741 const { 50742 style, 50743 ...restAttributes 50744 } = attributes; 50745 return deprecated_migrateTextAlign(...migrateLargeStyle(...migrateToQuoteV2(restAttributes))); 50746 } 50747 return deprecated_migrateTextAlign(...migrateToQuoteV2(attributes)); 50748 }, 50749 save({ 50750 attributes 50751 }) { 50752 const { 50753 align, 50754 value, 50755 citation, 50756 style 50757 } = attributes; 50758 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("blockquote", { 50759 className: style === 2 ? 'is-large' : '', 50760 style: { 50761 textAlign: align ? align : null 50762 }, 50763 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 50764 multiline: true, 50765 value: value 50766 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 50767 tagName: "cite", 50768 value: citation 50769 })] 50770 }); 50771 } 50772 }; 50773 const quote_deprecated_v0 = { 50774 attributes: { 50775 value: { 50776 type: 'string', 50777 source: 'html', 50778 selector: 'blockquote', 50779 multiline: 'p', 50780 default: '' 50781 }, 50782 citation: { 50783 type: 'string', 50784 source: 'html', 50785 selector: 'footer', 50786 default: '' 50787 }, 50788 align: { 50789 type: 'string' 50790 }, 50791 style: { 50792 type: 'number', 50793 default: 1 50794 } 50795 }, 50796 migrate(attributes) { 50797 if (!isNaN(parseInt(attributes.style))) { 50798 const { 50799 style, 50800 ...restAttributes 50801 } = attributes; 50802 return deprecated_migrateTextAlign(...migrateToQuoteV2(restAttributes)); 50803 } 50804 return deprecated_migrateTextAlign(...migrateToQuoteV2(attributes)); 50805 }, 50806 save({ 50807 attributes 50808 }) { 50809 const { 50810 align, 50811 value, 50812 citation, 50813 style 50814 } = attributes; 50815 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("blockquote", { 50816 className: `blocks-quote-style-$style}`, 50817 style: { 50818 textAlign: align ? align : null 50819 }, 50820 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 50821 multiline: true, 50822 value: value 50823 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 50824 tagName: "footer", 50825 value: citation 50826 })] 50827 }); 50828 } 50829 }; 50830 50831 /** 50832 * New deprecations need to be placed first 50833 * for them to have higher priority. 50834 * 50835 * Old deprecations may need to be updated as well. 50836 * 50837 * See block-deprecation.md 50838 */ 50839 /* harmony default export */ const quote_deprecated = ([quote_deprecated_v4, quote_deprecated_v3, quote_deprecated_v2, quote_deprecated_v1, quote_deprecated_v0]); 50840 50841 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/verse.js 50842 /** 50843 * WordPress dependencies 50844 */ 50845 50846 50847 const verse = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 50848 viewBox: "0 0 24 24", 50849 xmlns: "http://www.w3.org/2000/svg", 50850 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 50851 d: "M17.8 2l-.9.3c-.1 0-3.6 1-5.2 2.1C10 5.5 9.3 6.5 8.9 7.1c-.6.9-1.7 4.7-1.7 6.3l-.9 2.3c-.2.4 0 .8.4 1 .1 0 .2.1.3.1.3 0 .6-.2.7-.5l.6-1.5c.3 0 .7-.1 1.2-.2.7-.1 1.4-.3 2.2-.5.8-.2 1.6-.5 2.4-.8.7-.3 1.4-.7 1.9-1.2s.8-1.2 1-1.9c.2-.7.3-1.6.4-2.4.1-.8.1-1.7.2-2.5 0-.8.1-1.5.2-2.1V2zm-1.9 5.6c-.1.8-.2 1.5-.3 2.1-.2.6-.4 1-.6 1.3-.3.3-.8.6-1.4.9-.7.3-1.4.5-2.2.8-.6.2-1.3.3-1.8.4L15 7.5c.3-.3.6-.7 1-1.1 0 .4 0 .8-.1 1.2zM6 20h8v-1.5H6V20z" 50852 }) 50853 }); 50854 /* harmony default export */ const library_verse = (verse); 50855 50856 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/quote/edit.js 50857 /** 50858 * External dependencies 50859 */ 50860 50861 50862 /** 50863 * WordPress dependencies 50864 */ 50865 50866 50867 50868 50869 50870 50871 50872 50873 /** 50874 * Internal dependencies 50875 */ 50876 50877 50878 50879 50880 50881 const edit_isWebPlatform = external_wp_element_namespaceObject.Platform.OS === 'web'; 50882 const quote_edit_TEMPLATE = [['core/paragraph', {}]]; 50883 50884 /** 50885 * At the moment, deprecations don't handle create blocks from attributes 50886 * (like when using CPT templates). For this reason, this hook is necessary 50887 * to avoid breaking templates using the old quote block format. 50888 * 50889 * @param {Object} attributes Block attributes. 50890 * @param {string} clientId Block client ID. 50891 */ 50892 const edit_useMigrateOnLoad = (attributes, clientId) => { 50893 const registry = (0,external_wp_data_namespaceObject.useRegistry)(); 50894 const { 50895 updateBlockAttributes, 50896 replaceInnerBlocks 50897 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 50898 (0,external_wp_element_namespaceObject.useEffect)(() => { 50899 // As soon as the block is loaded, migrate it to the new version. 50900 50901 if (!attributes.value) { 50902 // No need to migrate if it doesn't have the value attribute. 50903 return; 50904 } 50905 const [newAttributes, newInnerBlocks] = migrateToQuoteV2(attributes); 50906 external_wp_deprecated_default()('Value attribute on the quote block', { 50907 since: '6.0', 50908 version: '6.5', 50909 alternative: 'inner blocks' 50910 }); 50911 registry.batch(() => { 50912 updateBlockAttributes(clientId, newAttributes); 50913 replaceInnerBlocks(clientId, newInnerBlocks); 50914 }); 50915 }, [attributes.value]); 50916 }; 50917 function QuoteEdit({ 50918 attributes, 50919 setAttributes, 50920 insertBlocksAfter, 50921 clientId, 50922 className, 50923 style, 50924 isSelected 50925 }) { 50926 const { 50927 textAlign 50928 } = attributes; 50929 edit_useMigrateOnLoad(attributes, clientId); 50930 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 50931 className: dist_clsx(className, { 50932 [`has-text-align-$textAlign}`]: textAlign 50933 }), 50934 ...(!edit_isWebPlatform && { 50935 style 50936 }) 50937 }); 50938 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 50939 template: quote_edit_TEMPLATE, 50940 templateInsertUpdatesSelection: true, 50941 __experimentalCaptureToolbars: true, 50942 renderAppender: false 50943 }); 50944 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 50945 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 50946 group: "block", 50947 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 50948 value: textAlign, 50949 onChange: nextAlign => { 50950 setAttributes({ 50951 textAlign: nextAlign 50952 }); 50953 } 50954 }) 50955 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.BlockQuotation, { 50956 ...innerBlocksProps, 50957 children: [innerBlocksProps.children, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Caption, { 50958 attributeKey: "citation", 50959 tagName: edit_isWebPlatform ? 'cite' : 'p', 50960 style: edit_isWebPlatform && { 50961 display: 'block' 50962 }, 50963 isSelected: isSelected, 50964 attributes: attributes, 50965 setAttributes: setAttributes, 50966 __unstableMobileNoFocusOnMount: true, 50967 icon: library_verse, 50968 label: (0,external_wp_i18n_namespaceObject.__)('Quote citation'), 50969 placeholder: 50970 // translators: placeholder text used for the 50971 // citation 50972 (0,external_wp_i18n_namespaceObject.__)('Add citation'), 50973 addLabel: (0,external_wp_i18n_namespaceObject.__)('Add citation'), 50974 removeLabel: (0,external_wp_i18n_namespaceObject.__)('Remove citation'), 50975 excludeElementClassName: true, 50976 className: "wp-block-quote__citation", 50977 insertBlocksAfter: insertBlocksAfter, 50978 ...(!edit_isWebPlatform ? { 50979 textAlign 50980 } : {}) 50981 })] 50982 })] 50983 }); 50984 } 50985 50986 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/quote/save.js 50987 /** 50988 * External dependencies 50989 */ 50990 50991 50992 /** 50993 * WordPress dependencies 50994 */ 50995 50996 50997 50998 function quote_save_save({ 50999 attributes 51000 }) { 51001 const { 51002 textAlign, 51003 citation 51004 } = attributes; 51005 const className = dist_clsx({ 51006 [`has-text-align-$textAlign}`]: textAlign 51007 }); 51008 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("blockquote", { 51009 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 51010 className 51011 }), 51012 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 51013 tagName: "cite", 51014 value: citation 51015 })] 51016 }); 51017 } 51018 51019 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/quote/transforms.js 51020 /** 51021 * WordPress dependencies 51022 */ 51023 51024 51025 const quote_transforms_transforms = { 51026 from: [{ 51027 type: 'block', 51028 blocks: ['core/pullquote'], 51029 transform: ({ 51030 value, 51031 align, 51032 citation, 51033 anchor, 51034 fontSize, 51035 style 51036 }) => { 51037 return (0,external_wp_blocks_namespaceObject.createBlock)('core/quote', { 51038 align, 51039 citation, 51040 anchor, 51041 fontSize, 51042 style 51043 }, [(0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 51044 content: value 51045 })]); 51046 } 51047 }, { 51048 type: 'prefix', 51049 prefix: '>', 51050 transform: content => (0,external_wp_blocks_namespaceObject.createBlock)('core/quote', {}, [(0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 51051 content 51052 })]) 51053 }, { 51054 type: 'raw', 51055 schema: () => ({ 51056 blockquote: { 51057 children: '*' 51058 } 51059 }), 51060 selector: 'blockquote', 51061 transform: (node, handler) => { 51062 return (0,external_wp_blocks_namespaceObject.createBlock)('core/quote', 51063 // Don't try to parse any `cite` out of this content. 51064 // * There may be more than one cite. 51065 // * There may be more attribution text than just the cite. 51066 // * If the cite is nested in the quoted text, it's wrong to 51067 // remove it. 51068 {}, handler({ 51069 HTML: node.innerHTML, 51070 mode: 'BLOCKS' 51071 })); 51072 } 51073 }, { 51074 type: 'block', 51075 isMultiBlock: true, 51076 blocks: ['*'], 51077 isMatch: ({}, blocks) => { 51078 // When a single block is selected make the tranformation 51079 // available only to specific blocks that make sense. 51080 if (blocks.length === 1) { 51081 return ['core/paragraph', 'core/heading', 'core/list', 'core/pullquote'].includes(blocks[0].name); 51082 } 51083 return !blocks.some(({ 51084 name 51085 }) => name === 'core/quote'); 51086 }, 51087 __experimentalConvert: blocks => (0,external_wp_blocks_namespaceObject.createBlock)('core/quote', {}, blocks.map(block => (0,external_wp_blocks_namespaceObject.createBlock)(block.name, block.attributes, block.innerBlocks))) 51088 }], 51089 to: [{ 51090 type: 'block', 51091 blocks: ['core/pullquote'], 51092 isMatch: ({}, block) => { 51093 return block.innerBlocks.every(({ 51094 name 51095 }) => name === 'core/paragraph'); 51096 }, 51097 transform: ({ 51098 align, 51099 citation, 51100 anchor, 51101 fontSize, 51102 style 51103 }, innerBlocks) => { 51104 const value = innerBlocks.map(({ 51105 attributes 51106 }) => `$attributes.content}`).join('<br>'); 51107 return (0,external_wp_blocks_namespaceObject.createBlock)('core/pullquote', { 51108 value, 51109 align, 51110 citation, 51111 anchor, 51112 fontSize, 51113 style 51114 }); 51115 } 51116 }, { 51117 type: 'block', 51118 blocks: ['core/paragraph'], 51119 transform: ({ 51120 citation 51121 }, innerBlocks) => external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) ? innerBlocks : [...innerBlocks, (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 51122 content: citation 51123 })] 51124 }, { 51125 type: 'block', 51126 blocks: ['core/group'], 51127 transform: ({ 51128 citation, 51129 anchor 51130 }, innerBlocks) => (0,external_wp_blocks_namespaceObject.createBlock)('core/group', { 51131 anchor 51132 }, external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) ? innerBlocks : [...innerBlocks, (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 51133 content: citation 51134 })]) 51135 }], 51136 ungroup: ({ 51137 citation 51138 }, innerBlocks) => external_wp_blockEditor_namespaceObject.RichText.isEmpty(citation) ? innerBlocks : [...innerBlocks, (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 51139 content: citation 51140 })] 51141 }; 51142 /* harmony default export */ const quote_transforms = (quote_transforms_transforms); 51143 51144 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/quote/index.js 51145 /** 51146 * WordPress dependencies 51147 */ 51148 51149 51150 51151 /** 51152 * Internal dependencies 51153 */ 51154 51155 51156 51157 const quote_metadata = { 51158 $schema: "https://schemas.wp.org/trunk/block.json", 51159 apiVersion: 3, 51160 name: "core/quote", 51161 title: "Quote", 51162 category: "text", 51163 description: "Give quoted text visual emphasis. \"In quoting others, we cite ourselves.\" \u2014 Julio Cort\xE1zar", 51164 keywords: ["blockquote", "cite"], 51165 textdomain: "default", 51166 attributes: { 51167 value: { 51168 type: "string", 51169 source: "html", 51170 selector: "blockquote", 51171 multiline: "p", 51172 "default": "", 51173 role: "content" 51174 }, 51175 citation: { 51176 type: "rich-text", 51177 source: "rich-text", 51178 selector: "cite", 51179 role: "content" 51180 }, 51181 textAlign: { 51182 type: "string" 51183 } 51184 }, 51185 supports: { 51186 anchor: true, 51187 align: ["left", "right", "wide", "full"], 51188 html: false, 51189 background: { 51190 backgroundImage: true, 51191 backgroundSize: true, 51192 __experimentalDefaultControls: { 51193 backgroundImage: true 51194 } 51195 }, 51196 __experimentalBorder: { 51197 color: true, 51198 radius: true, 51199 style: true, 51200 width: true, 51201 __experimentalDefaultControls: { 51202 color: true, 51203 radius: true, 51204 style: true, 51205 width: true 51206 } 51207 }, 51208 dimensions: { 51209 minHeight: true, 51210 __experimentalDefaultControls: { 51211 minHeight: false 51212 } 51213 }, 51214 __experimentalOnEnter: true, 51215 __experimentalOnMerge: true, 51216 typography: { 51217 fontSize: true, 51218 lineHeight: true, 51219 __experimentalFontFamily: true, 51220 __experimentalFontWeight: true, 51221 __experimentalFontStyle: true, 51222 __experimentalTextTransform: true, 51223 __experimentalTextDecoration: true, 51224 __experimentalLetterSpacing: true, 51225 __experimentalDefaultControls: { 51226 fontSize: true 51227 } 51228 }, 51229 color: { 51230 gradients: true, 51231 heading: true, 51232 link: true, 51233 __experimentalDefaultControls: { 51234 background: true, 51235 text: true 51236 } 51237 }, 51238 layout: { 51239 allowEditing: false 51240 }, 51241 spacing: { 51242 blockGap: true, 51243 padding: true, 51244 margin: true 51245 }, 51246 interactivity: { 51247 clientNavigation: true 51248 } 51249 }, 51250 styles: [{ 51251 name: "default", 51252 label: "Default", 51253 isDefault: true 51254 }, { 51255 name: "plain", 51256 label: "Plain" 51257 }], 51258 editorStyle: "wp-block-quote-editor", 51259 style: "wp-block-quote" 51260 }; 51261 51262 51263 const { 51264 name: quote_name 51265 } = quote_metadata; 51266 51267 const quote_settings = { 51268 icon: library_quote, 51269 example: { 51270 attributes: { 51271 citation: 'Julio Cortázar' 51272 }, 51273 innerBlocks: [{ 51274 name: 'core/paragraph', 51275 attributes: { 51276 content: (0,external_wp_i18n_namespaceObject.__)('In quoting others, we cite ourselves.') 51277 } 51278 }] 51279 }, 51280 transforms: quote_transforms, 51281 edit: QuoteEdit, 51282 save: quote_save_save, 51283 deprecated: quote_deprecated 51284 }; 51285 const quote_init = () => initBlock({ 51286 name: quote_name, 51287 metadata: quote_metadata, 51288 settings: quote_settings 51289 }); 51290 51291 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/symbol.js 51292 /** 51293 * WordPress dependencies 51294 */ 51295 51296 51297 const symbol = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 51298 xmlns: "http://www.w3.org/2000/svg", 51299 viewBox: "0 0 24 24", 51300 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 51301 d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-1 1.4l-5.6 5.6c-.1.1-.3.1-.4 0l-5.6-5.6c-.1-.1-.1-.3 0-.4l5.6-5.6s.1-.1.2-.1.1 0 .2.1l5.6 5.6c.1.1.1.3 0 .4zm-16.6-.4L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z" 51302 }) 51303 }); 51304 /* harmony default export */ const library_symbol = (symbol); 51305 51306 ;// CONCATENATED MODULE: external ["wp","patterns"] 51307 const external_wp_patterns_namespaceObject = window["wp"]["patterns"]; 51308 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/block/edit.js 51309 /** 51310 * External dependencies 51311 */ 51312 51313 51314 /** 51315 * WordPress dependencies 51316 */ 51317 51318 51319 51320 51321 51322 51323 51324 51325 51326 /** 51327 * Internal dependencies 51328 */ 51329 51330 51331 51332 51333 51334 const { 51335 useLayoutClasses 51336 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 51337 const { 51338 isOverridableBlock, 51339 hasOverridableBlocks 51340 } = unlock(external_wp_patterns_namespaceObject.privateApis); 51341 const fullAlignments = ['full', 'wide', 'left', 'right']; 51342 const useInferredLayout = (blocks, parentLayout) => { 51343 const initialInferredAlignmentRef = (0,external_wp_element_namespaceObject.useRef)(); 51344 return (0,external_wp_element_namespaceObject.useMemo)(() => { 51345 // Exit early if the pattern's blocks haven't loaded yet. 51346 if (!blocks?.length) { 51347 return {}; 51348 } 51349 let alignment = initialInferredAlignmentRef.current; 51350 51351 // Only track the initial alignment so that temporarily removed 51352 // alignments can be reapplied. 51353 if (alignment === undefined) { 51354 const isConstrained = parentLayout?.type === 'constrained'; 51355 const hasFullAlignment = blocks.some(block => fullAlignments.includes(block.attributes.align)); 51356 alignment = isConstrained && hasFullAlignment ? 'full' : null; 51357 initialInferredAlignmentRef.current = alignment; 51358 } 51359 const layout = alignment ? parentLayout : undefined; 51360 return { 51361 alignment, 51362 layout 51363 }; 51364 }, [blocks, parentLayout]); 51365 }; 51366 function setBlockEditMode(setEditMode, blocks, mode) { 51367 blocks.forEach(block => { 51368 const editMode = mode || (isOverridableBlock(block) ? 'contentOnly' : 'disabled'); 51369 setEditMode(block.clientId, editMode); 51370 setBlockEditMode(setEditMode, block.innerBlocks, 51371 // Disable editing for nested patterns. 51372 block.name === block_name ? 'disabled' : mode); 51373 }); 51374 } 51375 function RecursionWarning() { 51376 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 51377 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 51378 ...blockProps, 51379 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 51380 children: (0,external_wp_i18n_namespaceObject.__)('Block cannot be rendered inside itself.') 51381 }) 51382 }); 51383 } 51384 const edit_NOOP = () => {}; 51385 51386 // Wrap the main Edit function for the pattern block with a recursion wrapper 51387 // that allows short-circuiting rendering as early as possible, before any 51388 // of the other effects in the block edit have run. 51389 function ReusableBlockEditRecursionWrapper(props) { 51390 const { 51391 ref 51392 } = props.attributes; 51393 const hasAlreadyRendered = (0,external_wp_blockEditor_namespaceObject.useHasRecursion)(ref); 51394 if (hasAlreadyRendered) { 51395 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RecursionWarning, {}); 51396 } 51397 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RecursionProvider, { 51398 uniqueId: ref, 51399 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ReusableBlockEdit, { 51400 ...props 51401 }) 51402 }); 51403 } 51404 function ReusableBlockControl({ 51405 recordId, 51406 canOverrideBlocks, 51407 hasContent, 51408 handleEditOriginal, 51409 resetContent 51410 }) { 51411 const canUserEdit = (0,external_wp_data_namespaceObject.useSelect)(select => !!select(external_wp_coreData_namespaceObject.store).canUser('update', { 51412 kind: 'postType', 51413 name: 'wp_block', 51414 id: recordId 51415 }), [recordId]); 51416 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 51417 children: [canUserEdit && !!handleEditOriginal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 51418 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 51419 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 51420 onClick: handleEditOriginal, 51421 children: (0,external_wp_i18n_namespaceObject.__)('Edit original') 51422 }) 51423 }) 51424 }), canOverrideBlocks && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 51425 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 51426 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 51427 onClick: resetContent, 51428 disabled: !hasContent, 51429 children: (0,external_wp_i18n_namespaceObject.__)('Reset') 51430 }) 51431 }) 51432 })] 51433 }); 51434 } 51435 function ReusableBlockEdit({ 51436 name, 51437 attributes: { 51438 ref, 51439 content 51440 }, 51441 __unstableParentLayout: parentLayout, 51442 clientId: patternClientId, 51443 setAttributes 51444 }) { 51445 const { 51446 record, 51447 hasResolved 51448 } = (0,external_wp_coreData_namespaceObject.useEntityRecord)('postType', 'wp_block', ref); 51449 const [blocks] = (0,external_wp_coreData_namespaceObject.useEntityBlockEditor)('postType', 'wp_block', { 51450 id: ref 51451 }); 51452 const isMissing = hasResolved && !record; 51453 const { 51454 setBlockEditingMode, 51455 __unstableMarkLastChangeAsPersistent 51456 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 51457 const { 51458 innerBlocks, 51459 onNavigateToEntityRecord, 51460 editingMode, 51461 hasPatternOverridesSource 51462 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 51463 const { 51464 getBlocks, 51465 getSettings, 51466 getBlockEditingMode 51467 } = select(external_wp_blockEditor_namespaceObject.store); 51468 // For editing link to the site editor if the theme and user permissions support it. 51469 return { 51470 innerBlocks: getBlocks(patternClientId), 51471 onNavigateToEntityRecord: getSettings().onNavigateToEntityRecord, 51472 editingMode: getBlockEditingMode(patternClientId), 51473 hasPatternOverridesSource: !!(0,external_wp_blocks_namespaceObject.getBlockBindingsSource)('core/pattern-overrides') 51474 }; 51475 }, [patternClientId]); 51476 51477 // Sync the editing mode of the pattern block with the inner blocks. 51478 (0,external_wp_element_namespaceObject.useEffect)(() => { 51479 setBlockEditMode(setBlockEditingMode, innerBlocks, 51480 // Disable editing if the pattern itself is disabled. 51481 editingMode === 'disabled' || !hasPatternOverridesSource ? 'disabled' : undefined); 51482 }, [editingMode, innerBlocks, setBlockEditingMode, hasPatternOverridesSource]); 51483 const canOverrideBlocks = (0,external_wp_element_namespaceObject.useMemo)(() => hasPatternOverridesSource && hasOverridableBlocks(blocks), [hasPatternOverridesSource, blocks]); 51484 const { 51485 alignment, 51486 layout 51487 } = useInferredLayout(blocks, parentLayout); 51488 const layoutClasses = useLayoutClasses({ 51489 layout 51490 }, name); 51491 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 51492 className: dist_clsx('block-library-block__reusable-block-container', layout && layoutClasses, { 51493 [`align$alignment}`]: alignment 51494 }) 51495 }); 51496 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 51497 templateLock: 'all', 51498 layout, 51499 value: blocks, 51500 onInput: edit_NOOP, 51501 onChange: edit_NOOP, 51502 renderAppender: blocks?.length ? undefined : external_wp_blockEditor_namespaceObject.InnerBlocks.ButtonBlockAppender 51503 }); 51504 const handleEditOriginal = () => { 51505 onNavigateToEntityRecord({ 51506 postId: ref, 51507 postType: 'wp_block' 51508 }); 51509 }; 51510 const resetContent = () => { 51511 if (content) { 51512 // Make sure any previous changes are persisted before resetting. 51513 __unstableMarkLastChangeAsPersistent(); 51514 setAttributes({ 51515 content: undefined 51516 }); 51517 } 51518 }; 51519 let children = null; 51520 if (isMissing) { 51521 children = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 51522 children: (0,external_wp_i18n_namespaceObject.__)('Block has been deleted or is unavailable.') 51523 }); 51524 } 51525 if (!hasResolved) { 51526 children = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 51527 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) 51528 }); 51529 } 51530 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 51531 children: [hasResolved && !isMissing && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ReusableBlockControl, { 51532 recordId: ref, 51533 canOverrideBlocks: canOverrideBlocks, 51534 hasContent: !!content, 51535 handleEditOriginal: onNavigateToEntityRecord ? handleEditOriginal : undefined, 51536 resetContent: resetContent 51537 }), children === null ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 51538 ...innerBlocksProps 51539 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 51540 ...blockProps, 51541 children: children 51542 })] 51543 }); 51544 } 51545 51546 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/block/deprecated.js 51547 const isObject = obj => typeof obj === 'object' && !Array.isArray(obj) && obj !== null; 51548 51549 // v2: Migrate to a more condensed version of the 'content' attribute attribute. 51550 const block_deprecated_v2 = { 51551 attributes: { 51552 ref: { 51553 type: 'number' 51554 }, 51555 content: { 51556 type: 'object' 51557 } 51558 }, 51559 supports: { 51560 customClassName: false, 51561 html: false, 51562 inserter: false, 51563 renaming: false 51564 }, 51565 // Force this deprecation to run whenever there's a values sub-property that's an object. 51566 // 51567 // This could fail in the future if a block ever has binding to a `values` attribute. 51568 // Some extra protection is added to ensure `values` is an object, but this only reduces 51569 // the likelihood, it doesn't solve it completely. 51570 isEligible({ 51571 content 51572 }) { 51573 return !!content && Object.keys(content).every(contentKey => content[contentKey].values && isObject(content[contentKey].values)); 51574 }, 51575 /* 51576 * Old attribute format: 51577 * content: { 51578 * "V98q_x": { 51579 * // The attribute values are now stored as a 'values' sub-property. 51580 * values: { content: 'My content value' }, 51581 * // ... additional metadata, like the block name can be stored here. 51582 * } 51583 * } 51584 * 51585 * New attribute format: 51586 * content: { 51587 * "V98q_x": { 51588 * content: 'My content value', 51589 * } 51590 * } 51591 */ 51592 migrate(attributes) { 51593 const { 51594 content, 51595 ...retainedAttributes 51596 } = attributes; 51597 if (content && Object.keys(content).length) { 51598 const updatedContent = { 51599 ...content 51600 }; 51601 for (const contentKey in content) { 51602 updatedContent[contentKey] = content[contentKey].values; 51603 } 51604 return { 51605 ...retainedAttributes, 51606 content: updatedContent 51607 }; 51608 } 51609 return attributes; 51610 } 51611 }; 51612 51613 // v1: Rename the `overrides` attribute to the `content` attribute. 51614 const block_deprecated_v1 = { 51615 attributes: { 51616 ref: { 51617 type: 'number' 51618 }, 51619 overrides: { 51620 type: 'object' 51621 } 51622 }, 51623 supports: { 51624 customClassName: false, 51625 html: false, 51626 inserter: false, 51627 renaming: false 51628 }, 51629 // Force this deprecation to run whenever there's an `overrides` object. 51630 isEligible({ 51631 overrides 51632 }) { 51633 return !!overrides; 51634 }, 51635 /* 51636 * Old attribute format: 51637 * overrides: { 51638 * // An key is an id that represents a block. 51639 * // The values are the attribute values of the block. 51640 * "V98q_x": { content: 'My content value' } 51641 * } 51642 * 51643 * New attribute format: 51644 * content: { 51645 * "V98q_x": { content: 'My content value' } 51646 * } 51647 * 51648 */ 51649 migrate(attributes) { 51650 const { 51651 overrides, 51652 ...retainedAttributes 51653 } = attributes; 51654 const content = {}; 51655 Object.keys(overrides).forEach(id => { 51656 content[id] = overrides[id]; 51657 }); 51658 return { 51659 ...retainedAttributes, 51660 content 51661 }; 51662 } 51663 }; 51664 /* harmony default export */ const block_deprecated = ([block_deprecated_v2, block_deprecated_v1]); 51665 51666 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/block/index.js 51667 /** 51668 * WordPress dependencies 51669 */ 51670 51671 51672 51673 51674 51675 /** 51676 * Internal dependencies 51677 */ 51678 51679 const block_metadata = { 51680 $schema: "https://schemas.wp.org/trunk/block.json", 51681 apiVersion: 3, 51682 name: "core/block", 51683 title: "Pattern", 51684 category: "reusable", 51685 description: "Reuse this design across your site.", 51686 keywords: ["reusable"], 51687 textdomain: "default", 51688 attributes: { 51689 ref: { 51690 type: "number" 51691 }, 51692 content: { 51693 type: "object", 51694 "default": {} 51695 } 51696 }, 51697 providesContext: { 51698 "pattern/overrides": "content" 51699 }, 51700 supports: { 51701 customClassName: false, 51702 html: false, 51703 inserter: false, 51704 renaming: false, 51705 interactivity: { 51706 clientNavigation: true 51707 } 51708 } 51709 }; 51710 51711 51712 const { 51713 name: block_name 51714 } = block_metadata; 51715 51716 const block_settings = { 51717 deprecated: block_deprecated, 51718 edit: ReusableBlockEditRecursionWrapper, 51719 icon: library_symbol, 51720 __experimentalLabel: ({ 51721 ref 51722 }) => { 51723 if (!ref) { 51724 return; 51725 } 51726 const entity = (0,external_wp_data_namespaceObject.select)(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('postType', 'wp_block', ref); 51727 if (!entity?.title) { 51728 return; 51729 } 51730 return (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(entity.title); 51731 } 51732 }; 51733 const block_init = () => initBlock({ 51734 name: block_name, 51735 metadata: block_metadata, 51736 settings: block_settings 51737 }); 51738 51739 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/read-more/edit.js 51740 /** 51741 * WordPress dependencies 51742 */ 51743 51744 51745 51746 51747 51748 51749 51750 function ReadMore({ 51751 attributes: { 51752 content, 51753 linkTarget 51754 }, 51755 setAttributes, 51756 insertBlocksAfter 51757 }) { 51758 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 51759 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 51760 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 51761 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 51762 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 51763 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 51764 __nextHasNoMarginBottom: true, 51765 label: (0,external_wp_i18n_namespaceObject.__)('Open in new tab'), 51766 onChange: value => setAttributes({ 51767 linkTarget: value ? '_blank' : '_self' 51768 }), 51769 checked: linkTarget === '_blank' 51770 }) 51771 }) 51772 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 51773 identifier: "content", 51774 tagName: "a", 51775 "aria-label": (0,external_wp_i18n_namespaceObject.__)('“Read more” link text'), 51776 placeholder: (0,external_wp_i18n_namespaceObject.__)('Read more'), 51777 value: content, 51778 onChange: newValue => setAttributes({ 51779 content: newValue 51780 }), 51781 __unstableOnSplitAtEnd: () => insertBlocksAfter((0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getDefaultBlockName)())), 51782 withoutInteractiveFormatting: true, 51783 ...blockProps 51784 })] 51785 }); 51786 } 51787 51788 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/read-more/index.js 51789 /** 51790 * WordPress dependencies 51791 */ 51792 51793 51794 /** 51795 * Internal dependencies 51796 */ 51797 51798 const read_more_metadata = { 51799 $schema: "https://schemas.wp.org/trunk/block.json", 51800 apiVersion: 3, 51801 name: "core/read-more", 51802 title: "Read More", 51803 category: "theme", 51804 description: "Displays the link of a post, page, or any other content-type.", 51805 textdomain: "default", 51806 attributes: { 51807 content: { 51808 type: "string" 51809 }, 51810 linkTarget: { 51811 type: "string", 51812 "default": "_self" 51813 } 51814 }, 51815 usesContext: ["postId"], 51816 supports: { 51817 html: false, 51818 color: { 51819 gradients: true, 51820 text: true 51821 }, 51822 typography: { 51823 fontSize: true, 51824 lineHeight: true, 51825 __experimentalFontFamily: true, 51826 __experimentalFontWeight: true, 51827 __experimentalFontStyle: true, 51828 __experimentalTextTransform: true, 51829 __experimentalLetterSpacing: true, 51830 __experimentalTextDecoration: true, 51831 __experimentalDefaultControls: { 51832 fontSize: true, 51833 textDecoration: true 51834 } 51835 }, 51836 spacing: { 51837 margin: ["top", "bottom"], 51838 padding: true, 51839 __experimentalDefaultControls: { 51840 padding: true 51841 } 51842 }, 51843 __experimentalBorder: { 51844 color: true, 51845 radius: true, 51846 width: true, 51847 __experimentalDefaultControls: { 51848 width: true 51849 } 51850 }, 51851 interactivity: { 51852 clientNavigation: true 51853 } 51854 }, 51855 style: "wp-block-read-more" 51856 }; 51857 51858 const { 51859 name: read_more_name 51860 } = read_more_metadata; 51861 51862 const read_more_settings = { 51863 icon: library_link, 51864 edit: ReadMore 51865 }; 51866 const read_more_init = () => initBlock({ 51867 name: read_more_name, 51868 metadata: read_more_metadata, 51869 settings: read_more_settings 51870 }); 51871 51872 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/rss.js 51873 /** 51874 * WordPress dependencies 51875 */ 51876 51877 51878 const rss = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 51879 xmlns: "http://www.w3.org/2000/svg", 51880 viewBox: "0 0 24 24", 51881 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 51882 d: "M5 10.2h-.8v1.5H5c1.9 0 3.8.8 5.1 2.1 1.4 1.4 2.1 3.2 2.1 5.1v.8h1.5V19c0-2.3-.9-4.5-2.6-6.2-1.6-1.6-3.8-2.6-6.1-2.6zm10.4-1.6C12.6 5.8 8.9 4.2 5 4.2h-.8v1.5H5c3.5 0 6.9 1.4 9.4 3.9s3.9 5.8 3.9 9.4v.8h1.5V19c0-3.9-1.6-7.6-4.4-10.4zM4 20h3v-3H4v3z" 51883 }) 51884 }); 51885 /* harmony default export */ const library_rss = (rss); 51886 51887 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/rss/edit.js 51888 /** 51889 * WordPress dependencies 51890 */ 51891 51892 51893 51894 51895 51896 51897 51898 51899 51900 51901 const DEFAULT_MIN_ITEMS = 1; 51902 const DEFAULT_MAX_ITEMS = 20; 51903 function RSSEdit({ 51904 attributes, 51905 setAttributes 51906 }) { 51907 const [isEditing, setIsEditing] = (0,external_wp_element_namespaceObject.useState)(!attributes.feedURL); 51908 const { 51909 blockLayout, 51910 columns, 51911 displayAuthor, 51912 displayDate, 51913 displayExcerpt, 51914 excerptLength, 51915 feedURL, 51916 itemsToShow 51917 } = attributes; 51918 function toggleAttribute(propName) { 51919 return () => { 51920 const value = attributes[propName]; 51921 setAttributes({ 51922 [propName]: !value 51923 }); 51924 }; 51925 } 51926 function onSubmitURL(event) { 51927 event.preventDefault(); 51928 if (feedURL) { 51929 setAttributes({ 51930 feedURL: (0,external_wp_url_namespaceObject.prependHTTP)(feedURL) 51931 }); 51932 setIsEditing(false); 51933 } 51934 } 51935 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 51936 const label = (0,external_wp_i18n_namespaceObject.__)('RSS URL'); 51937 if (isEditing) { 51938 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 51939 ...blockProps, 51940 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 51941 icon: library_rss, 51942 label: label, 51943 instructions: (0,external_wp_i18n_namespaceObject.__)('Display entries from any RSS or Atom feed.'), 51944 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("form", { 51945 onSubmit: onSubmitURL, 51946 className: "wp-block-rss__placeholder-form", 51947 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalInputControl, { 51948 __next40pxDefaultSize: true, 51949 label: label, 51950 hideLabelFromVision: true, 51951 placeholder: (0,external_wp_i18n_namespaceObject.__)('Enter URL here…'), 51952 value: feedURL, 51953 onChange: value => setAttributes({ 51954 feedURL: value 51955 }), 51956 className: "wp-block-rss__placeholder-input" 51957 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 51958 __next40pxDefaultSize: true, 51959 variant: "primary", 51960 type: "submit", 51961 children: (0,external_wp_i18n_namespaceObject.__)('Apply') 51962 })] 51963 }) 51964 }) 51965 }); 51966 } 51967 const toolbarControls = [{ 51968 icon: library_edit, 51969 title: (0,external_wp_i18n_namespaceObject.__)('Edit RSS URL'), 51970 onClick: () => setIsEditing(true) 51971 }, { 51972 icon: library_list, 51973 title: (0,external_wp_i18n_namespaceObject._x)('List view', 'RSS block display setting'), 51974 onClick: () => setAttributes({ 51975 blockLayout: 'list' 51976 }), 51977 isActive: blockLayout === 'list' 51978 }, { 51979 icon: library_grid, 51980 title: (0,external_wp_i18n_namespaceObject._x)('Grid view', 'RSS block display setting'), 51981 onClick: () => setAttributes({ 51982 blockLayout: 'grid' 51983 }), 51984 isActive: blockLayout === 'grid' 51985 }]; 51986 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 51987 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 51988 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 51989 controls: toolbarControls 51990 }) 51991 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 51992 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 51993 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 51994 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 51995 __nextHasNoMarginBottom: true, 51996 __next40pxDefaultSize: true, 51997 label: (0,external_wp_i18n_namespaceObject.__)('Number of items'), 51998 value: itemsToShow, 51999 onChange: value => setAttributes({ 52000 itemsToShow: value 52001 }), 52002 min: DEFAULT_MIN_ITEMS, 52003 max: DEFAULT_MAX_ITEMS, 52004 required: true 52005 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 52006 __nextHasNoMarginBottom: true, 52007 label: (0,external_wp_i18n_namespaceObject.__)('Display author'), 52008 checked: displayAuthor, 52009 onChange: toggleAttribute('displayAuthor') 52010 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 52011 __nextHasNoMarginBottom: true, 52012 label: (0,external_wp_i18n_namespaceObject.__)('Display date'), 52013 checked: displayDate, 52014 onChange: toggleAttribute('displayDate') 52015 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 52016 __nextHasNoMarginBottom: true, 52017 label: (0,external_wp_i18n_namespaceObject.__)('Display excerpt'), 52018 checked: displayExcerpt, 52019 onChange: toggleAttribute('displayExcerpt') 52020 }), displayExcerpt && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 52021 __nextHasNoMarginBottom: true, 52022 __next40pxDefaultSize: true, 52023 label: (0,external_wp_i18n_namespaceObject.__)('Max number of words in excerpt'), 52024 value: excerptLength, 52025 onChange: value => setAttributes({ 52026 excerptLength: value 52027 }), 52028 min: 10, 52029 max: 100, 52030 required: true 52031 }), blockLayout === 'grid' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 52032 __nextHasNoMarginBottom: true, 52033 __next40pxDefaultSize: true, 52034 label: (0,external_wp_i18n_namespaceObject.__)('Columns'), 52035 value: columns, 52036 onChange: value => setAttributes({ 52037 columns: value 52038 }), 52039 min: 2, 52040 max: 6, 52041 required: true 52042 })] 52043 }) 52044 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 52045 ...blockProps, 52046 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, { 52047 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)((external_wp_serverSideRender_default()), { 52048 block: "core/rss", 52049 attributes: attributes 52050 }) 52051 }) 52052 })] 52053 }); 52054 } 52055 52056 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/rss/index.js 52057 /** 52058 * WordPress dependencies 52059 */ 52060 52061 52062 /** 52063 * Internal dependencies 52064 */ 52065 52066 const rss_metadata = { 52067 $schema: "https://schemas.wp.org/trunk/block.json", 52068 apiVersion: 3, 52069 name: "core/rss", 52070 title: "RSS", 52071 category: "widgets", 52072 description: "Display entries from any RSS or Atom feed.", 52073 keywords: ["atom", "feed"], 52074 textdomain: "default", 52075 attributes: { 52076 columns: { 52077 type: "number", 52078 "default": 2 52079 }, 52080 blockLayout: { 52081 type: "string", 52082 "default": "list" 52083 }, 52084 feedURL: { 52085 type: "string", 52086 "default": "" 52087 }, 52088 itemsToShow: { 52089 type: "number", 52090 "default": 5 52091 }, 52092 displayExcerpt: { 52093 type: "boolean", 52094 "default": false 52095 }, 52096 displayAuthor: { 52097 type: "boolean", 52098 "default": false 52099 }, 52100 displayDate: { 52101 type: "boolean", 52102 "default": false 52103 }, 52104 excerptLength: { 52105 type: "number", 52106 "default": 55 52107 } 52108 }, 52109 supports: { 52110 align: true, 52111 html: false, 52112 interactivity: { 52113 clientNavigation: true 52114 } 52115 }, 52116 editorStyle: "wp-block-rss-editor", 52117 style: "wp-block-rss" 52118 }; 52119 52120 const { 52121 name: rss_name 52122 } = rss_metadata; 52123 52124 const rss_settings = { 52125 icon: library_rss, 52126 example: { 52127 attributes: { 52128 feedURL: 'https://wordpress.org' 52129 } 52130 }, 52131 edit: RSSEdit 52132 }; 52133 const rss_init = () => initBlock({ 52134 name: rss_name, 52135 metadata: rss_metadata, 52136 settings: rss_settings 52137 }); 52138 52139 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/search.js 52140 /** 52141 * WordPress dependencies 52142 */ 52143 52144 52145 const search = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 52146 xmlns: "http://www.w3.org/2000/svg", 52147 viewBox: "0 0 24 24", 52148 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 52149 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" 52150 }) 52151 }); 52152 /* harmony default export */ const library_search = (search); 52153 52154 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/search/icons.js 52155 /** 52156 * WordPress dependencies 52157 */ 52158 52159 52160 52161 const buttonOnly = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 52162 xmlns: "http://www.w3.org/2000/svg", 52163 viewBox: "0 0 24 24", 52164 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Rect, { 52165 x: "7", 52166 y: "10", 52167 width: "10", 52168 height: "4", 52169 rx: "1", 52170 fill: "currentColor" 52171 }) 52172 }); 52173 const buttonOutside = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.SVG, { 52174 xmlns: "http://www.w3.org/2000/svg", 52175 viewBox: "0 0 24 24", 52176 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Rect, { 52177 x: "4.75", 52178 y: "15.25", 52179 width: "6.5", 52180 height: "9.5", 52181 transform: "rotate(-90 4.75 15.25)", 52182 stroke: "currentColor", 52183 strokeWidth: "1.5", 52184 fill: "none" 52185 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Rect, { 52186 x: "16", 52187 y: "10", 52188 width: "4", 52189 height: "4", 52190 rx: "1", 52191 fill: "currentColor" 52192 })] 52193 }); 52194 const buttonInside = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.SVG, { 52195 xmlns: "http://www.w3.org/2000/svg", 52196 viewBox: "0 0 24 24", 52197 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Rect, { 52198 x: "4.75", 52199 y: "15.25", 52200 width: "6.5", 52201 height: "14.5", 52202 transform: "rotate(-90 4.75 15.25)", 52203 stroke: "currentColor", 52204 strokeWidth: "1.5", 52205 fill: "none" 52206 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Rect, { 52207 x: "14", 52208 y: "10", 52209 width: "4", 52210 height: "4", 52211 rx: "1", 52212 fill: "currentColor" 52213 })] 52214 }); 52215 const noButton = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 52216 xmlns: "http://www.w3.org/2000/svg", 52217 viewBox: "0 0 24 24", 52218 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Rect, { 52219 x: "4.75", 52220 y: "15.25", 52221 width: "6.5", 52222 height: "14.5", 52223 transform: "rotate(-90 4.75 15.25)", 52224 stroke: "currentColor", 52225 fill: "none", 52226 strokeWidth: "1.5" 52227 }) 52228 }); 52229 const buttonWithIcon = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.SVG, { 52230 xmlns: "http://www.w3.org/2000/svg", 52231 viewBox: "0 0 24 24", 52232 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Rect, { 52233 x: "4.75", 52234 y: "7.75", 52235 width: "14.5", 52236 height: "8.5", 52237 rx: "1.25", 52238 stroke: "currentColor", 52239 fill: "none", 52240 strokeWidth: "1.5" 52241 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Rect, { 52242 x: "8", 52243 y: "11", 52244 width: "8", 52245 height: "2", 52246 fill: "currentColor" 52247 })] 52248 }); 52249 const toggleLabel = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.SVG, { 52250 xmlns: "http://www.w3.org/2000/svg", 52251 viewBox: "0 0 24 24", 52252 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Rect, { 52253 x: "4.75", 52254 y: "17.25", 52255 width: "5.5", 52256 height: "14.5", 52257 transform: "rotate(-90 4.75 17.25)", 52258 stroke: "currentColor", 52259 fill: "none", 52260 strokeWidth: "1.5" 52261 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Rect, { 52262 x: "4", 52263 y: "7", 52264 width: "10", 52265 height: "2", 52266 fill: "currentColor" 52267 })] 52268 }); 52269 52270 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/search/utils.js 52271 /** 52272 * Constants 52273 */ 52274 const PC_WIDTH_DEFAULT = 50; 52275 const PX_WIDTH_DEFAULT = 350; 52276 const MIN_WIDTH = 220; 52277 52278 /** 52279 * Returns a boolean whether passed unit is percentage 52280 * 52281 * @param {string} unit Block width unit. 52282 * 52283 * @return {boolean} Whether unit is '%'. 52284 */ 52285 function utils_isPercentageUnit(unit) { 52286 return unit === '%'; 52287 } 52288 52289 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/search/edit.js 52290 /** 52291 * External dependencies 52292 */ 52293 52294 52295 /** 52296 * WordPress dependencies 52297 */ 52298 52299 52300 52301 52302 52303 52304 52305 52306 52307 /** 52308 * Internal dependencies 52309 */ 52310 52311 52312 52313 // Used to calculate border radius adjustment to avoid "fat" corners when 52314 // button is placed inside wrapper. 52315 52316 52317 52318 const DEFAULT_INNER_PADDING = '4px'; 52319 const PERCENTAGE_WIDTHS = [25, 50, 75, 100]; 52320 function SearchEdit({ 52321 className, 52322 attributes, 52323 setAttributes, 52324 toggleSelection, 52325 isSelected, 52326 clientId 52327 }) { 52328 const { 52329 label, 52330 showLabel, 52331 placeholder, 52332 width, 52333 widthUnit, 52334 align, 52335 buttonText, 52336 buttonPosition, 52337 buttonUseIcon, 52338 isSearchFieldHidden, 52339 style 52340 } = attributes; 52341 const wasJustInsertedIntoNavigationBlock = (0,external_wp_data_namespaceObject.useSelect)(select => { 52342 const { 52343 getBlockParentsByBlockName, 52344 wasBlockJustInserted 52345 } = select(external_wp_blockEditor_namespaceObject.store); 52346 return !!getBlockParentsByBlockName(clientId, 'core/navigation')?.length && wasBlockJustInserted(clientId); 52347 }, [clientId]); 52348 const { 52349 __unstableMarkNextChangeAsNotPersistent 52350 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 52351 (0,external_wp_element_namespaceObject.useEffect)(() => { 52352 if (wasJustInsertedIntoNavigationBlock) { 52353 // This side-effect should not create an undo level. 52354 __unstableMarkNextChangeAsNotPersistent(); 52355 setAttributes({ 52356 showLabel: false, 52357 buttonUseIcon: true, 52358 buttonPosition: 'button-inside' 52359 }); 52360 } 52361 }, [__unstableMarkNextChangeAsNotPersistent, wasJustInsertedIntoNavigationBlock, setAttributes]); 52362 const borderRadius = style?.border?.radius; 52363 let borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseBorderProps)(attributes); 52364 52365 // Check for old deprecated numerical border radius. Done as a separate 52366 // check so that a borderRadius style won't overwrite the longhand 52367 // per-corner styles. 52368 if (typeof borderRadius === 'number') { 52369 borderProps = { 52370 ...borderProps, 52371 style: { 52372 ...borderProps.style, 52373 borderRadius: `$borderRadius}px` 52374 } 52375 }; 52376 } 52377 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseColorProps)(attributes); 52378 const [fluidTypographySettings, layout] = (0,external_wp_blockEditor_namespaceObject.useSettings)('typography.fluid', 'layout'); 52379 const typographyProps = (0,external_wp_blockEditor_namespaceObject.getTypographyClassesAndStyles)(attributes, { 52380 typography: { 52381 fluid: fluidTypographySettings 52382 }, 52383 layout: { 52384 wideSize: layout?.wideSize 52385 } 52386 }); 52387 const unitControlInstanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(external_wp_components_namespaceObject.__experimentalUnitControl); 52388 const unitControlInputId = `wp-block-search__width-$unitControlInstanceId}`; 52389 const isButtonPositionInside = 'button-inside' === buttonPosition; 52390 const isButtonPositionOutside = 'button-outside' === buttonPosition; 52391 const hasNoButton = 'no-button' === buttonPosition; 52392 const hasOnlyButton = 'button-only' === buttonPosition; 52393 const searchFieldRef = (0,external_wp_element_namespaceObject.useRef)(); 52394 const buttonRef = (0,external_wp_element_namespaceObject.useRef)(); 52395 const units = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({ 52396 availableUnits: ['%', 'px'], 52397 defaultValues: { 52398 '%': PC_WIDTH_DEFAULT, 52399 px: PX_WIDTH_DEFAULT 52400 } 52401 }); 52402 (0,external_wp_element_namespaceObject.useEffect)(() => { 52403 if (hasOnlyButton && !isSelected) { 52404 setAttributes({ 52405 isSearchFieldHidden: true 52406 }); 52407 } 52408 }, [hasOnlyButton, isSelected, setAttributes]); 52409 52410 // Show the search field when width changes. 52411 (0,external_wp_element_namespaceObject.useEffect)(() => { 52412 if (!hasOnlyButton || !isSelected) { 52413 return; 52414 } 52415 setAttributes({ 52416 isSearchFieldHidden: false 52417 }); 52418 }, [hasOnlyButton, isSelected, setAttributes, width]); 52419 const getBlockClassNames = () => { 52420 return dist_clsx(className, isButtonPositionInside ? 'wp-block-search__button-inside' : undefined, isButtonPositionOutside ? 'wp-block-search__button-outside' : undefined, hasNoButton ? 'wp-block-search__no-button' : undefined, hasOnlyButton ? 'wp-block-search__button-only' : undefined, !buttonUseIcon && !hasNoButton ? 'wp-block-search__text-button' : undefined, buttonUseIcon && !hasNoButton ? 'wp-block-search__icon-button' : undefined, hasOnlyButton && isSearchFieldHidden ? 'wp-block-search__searchfield-hidden' : undefined); 52421 }; 52422 const buttonPositionControls = [{ 52423 role: 'menuitemradio', 52424 title: (0,external_wp_i18n_namespaceObject.__)('Button outside'), 52425 isActive: buttonPosition === 'button-outside', 52426 icon: buttonOutside, 52427 onClick: () => { 52428 setAttributes({ 52429 buttonPosition: 'button-outside', 52430 isSearchFieldHidden: false 52431 }); 52432 } 52433 }, { 52434 role: 'menuitemradio', 52435 title: (0,external_wp_i18n_namespaceObject.__)('Button inside'), 52436 isActive: buttonPosition === 'button-inside', 52437 icon: buttonInside, 52438 onClick: () => { 52439 setAttributes({ 52440 buttonPosition: 'button-inside', 52441 isSearchFieldHidden: false 52442 }); 52443 } 52444 }, { 52445 role: 'menuitemradio', 52446 title: (0,external_wp_i18n_namespaceObject.__)('No button'), 52447 isActive: buttonPosition === 'no-button', 52448 icon: noButton, 52449 onClick: () => { 52450 setAttributes({ 52451 buttonPosition: 'no-button', 52452 isSearchFieldHidden: false 52453 }); 52454 } 52455 }, { 52456 role: 'menuitemradio', 52457 title: (0,external_wp_i18n_namespaceObject.__)('Button only'), 52458 isActive: buttonPosition === 'button-only', 52459 icon: buttonOnly, 52460 onClick: () => { 52461 setAttributes({ 52462 buttonPosition: 'button-only', 52463 isSearchFieldHidden: true 52464 }); 52465 } 52466 }]; 52467 const getButtonPositionIcon = () => { 52468 switch (buttonPosition) { 52469 case 'button-inside': 52470 return buttonInside; 52471 case 'button-outside': 52472 return buttonOutside; 52473 case 'no-button': 52474 return noButton; 52475 case 'button-only': 52476 return buttonOnly; 52477 } 52478 }; 52479 const getResizableSides = () => { 52480 if (hasOnlyButton) { 52481 return {}; 52482 } 52483 return { 52484 right: align !== 'right', 52485 left: align === 'right' 52486 }; 52487 }; 52488 const renderTextField = () => { 52489 // If the input is inside the wrapper, the wrapper gets the border color styles/classes, not the input control. 52490 const textFieldClasses = dist_clsx('wp-block-search__input', isButtonPositionInside ? undefined : borderProps.className, typographyProps.className); 52491 const textFieldStyles = { 52492 ...(isButtonPositionInside ? { 52493 borderRadius 52494 } : borderProps.style), 52495 ...typographyProps.style, 52496 textDecoration: undefined 52497 }; 52498 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("input", { 52499 type: "search", 52500 className: textFieldClasses, 52501 style: textFieldStyles, 52502 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Optional placeholder text') 52503 // We hide the placeholder field's placeholder when there is a value. This 52504 // stops screen readers from reading the placeholder field's placeholder 52505 // which is confusing. 52506 , 52507 placeholder: placeholder ? undefined : (0,external_wp_i18n_namespaceObject.__)('Optional placeholder…'), 52508 value: placeholder, 52509 onChange: event => setAttributes({ 52510 placeholder: event.target.value 52511 }), 52512 ref: searchFieldRef 52513 }); 52514 }; 52515 const renderButton = () => { 52516 // If the button is inside the wrapper, the wrapper gets the border color styles/classes, not the button. 52517 const buttonClasses = dist_clsx('wp-block-search__button', colorProps.className, typographyProps.className, isButtonPositionInside ? undefined : borderProps.className, buttonUseIcon ? 'has-icon' : undefined, (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('button')); 52518 const buttonStyles = { 52519 ...colorProps.style, 52520 ...typographyProps.style, 52521 ...(isButtonPositionInside ? { 52522 borderRadius 52523 } : borderProps.style) 52524 }; 52525 const handleButtonClick = () => { 52526 if (hasOnlyButton) { 52527 setAttributes({ 52528 isSearchFieldHidden: !isSearchFieldHidden 52529 }); 52530 } 52531 }; 52532 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 52533 children: [buttonUseIcon && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("button", { 52534 type: "button", 52535 className: buttonClasses, 52536 style: buttonStyles, 52537 "aria-label": buttonText ? (0,external_wp_dom_namespaceObject.__unstableStripHTML)(buttonText) : (0,external_wp_i18n_namespaceObject.__)('Search'), 52538 onClick: handleButtonClick, 52539 ref: buttonRef, 52540 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, { 52541 icon: library_search 52542 }) 52543 }), !buttonUseIcon && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 52544 identifier: "buttonText", 52545 className: buttonClasses, 52546 style: buttonStyles, 52547 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Button text'), 52548 placeholder: (0,external_wp_i18n_namespaceObject.__)('Add button text…'), 52549 withoutInteractiveFormatting: true, 52550 value: buttonText, 52551 onChange: html => setAttributes({ 52552 buttonText: html 52553 }), 52554 onClick: handleButtonClick 52555 })] 52556 }); 52557 }; 52558 const controls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 52559 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 52560 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.ToolbarGroup, { 52561 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 52562 title: (0,external_wp_i18n_namespaceObject.__)('Toggle search label'), 52563 icon: toggleLabel, 52564 onClick: () => { 52565 setAttributes({ 52566 showLabel: !showLabel 52567 }); 52568 }, 52569 className: showLabel ? 'is-pressed' : undefined 52570 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarDropdownMenu, { 52571 icon: getButtonPositionIcon(), 52572 label: (0,external_wp_i18n_namespaceObject.__)('Change button position'), 52573 controls: buttonPositionControls 52574 }), !hasNoButton && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 52575 title: (0,external_wp_i18n_namespaceObject.__)('Use button with icon'), 52576 icon: buttonWithIcon, 52577 onClick: () => { 52578 setAttributes({ 52579 buttonUseIcon: !buttonUseIcon 52580 }); 52581 }, 52582 className: buttonUseIcon ? 'is-pressed' : undefined 52583 })] 52584 }) 52585 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 52586 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 52587 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 52588 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { 52589 className: "wp-block-search__inspector-controls", 52590 spacing: 4, 52591 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalUnitControl, { 52592 __next40pxDefaultSize: true, 52593 label: (0,external_wp_i18n_namespaceObject.__)('Width'), 52594 id: unitControlInputId // unused, kept for backwards compatibility 52595 , 52596 min: utils_isPercentageUnit(widthUnit) ? 0 : MIN_WIDTH, 52597 max: utils_isPercentageUnit(widthUnit) ? 100 : undefined, 52598 step: 1, 52599 onChange: newWidth => { 52600 const parsedNewWidth = newWidth === '' ? undefined : parseInt(newWidth, 10); 52601 setAttributes({ 52602 width: parsedNewWidth 52603 }); 52604 }, 52605 onUnitChange: newUnit => { 52606 setAttributes({ 52607 width: '%' === newUnit ? PC_WIDTH_DEFAULT : PX_WIDTH_DEFAULT, 52608 widthUnit: newUnit 52609 }); 52610 }, 52611 __unstableInputWidth: "80px", 52612 value: `$width}$widthUnit}`, 52613 units: units 52614 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, { 52615 label: (0,external_wp_i18n_namespaceObject.__)('Percentage Width'), 52616 value: PERCENTAGE_WIDTHS.includes(width) && widthUnit === '%' ? width : undefined, 52617 hideLabelFromVision: true, 52618 onChange: newWidth => { 52619 setAttributes({ 52620 width: newWidth, 52621 widthUnit: '%' 52622 }); 52623 }, 52624 isBlock: true, 52625 __next40pxDefaultSize: true, 52626 __nextHasNoMarginBottom: true, 52627 children: PERCENTAGE_WIDTHS.map(widthValue => { 52628 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { 52629 value: widthValue, 52630 label: `$widthValue}%` 52631 }, widthValue); 52632 }) 52633 })] 52634 }) 52635 }) 52636 })] 52637 }); 52638 const padBorderRadius = radius => radius ? `calc($radius} + $DEFAULT_INNER_PADDING})` : undefined; 52639 const getWrapperStyles = () => { 52640 const styles = isButtonPositionInside ? borderProps.style : { 52641 borderRadius: borderProps.style?.borderRadius, 52642 borderTopLeftRadius: borderProps.style?.borderTopLeftRadius, 52643 borderTopRightRadius: borderProps.style?.borderTopRightRadius, 52644 borderBottomLeftRadius: borderProps.style?.borderBottomLeftRadius, 52645 borderBottomRightRadius: borderProps.style?.borderBottomRightRadius 52646 }; 52647 const isNonZeroBorderRadius = borderRadius !== undefined && parseInt(borderRadius, 10) !== 0; 52648 if (isButtonPositionInside && isNonZeroBorderRadius) { 52649 // We have button inside wrapper and a border radius value to apply. 52650 // Add default padding so we don't get "fat" corners. 52651 // 52652 // CSS calc() is used here to support non-pixel units. The inline 52653 // style using calc() will only apply if both values have units. 52654 52655 if (typeof borderRadius === 'object') { 52656 // Individual corner border radii present. 52657 const { 52658 topLeft, 52659 topRight, 52660 bottomLeft, 52661 bottomRight 52662 } = borderRadius; 52663 return { 52664 ...styles, 52665 borderTopLeftRadius: padBorderRadius(topLeft), 52666 borderTopRightRadius: padBorderRadius(topRight), 52667 borderBottomLeftRadius: padBorderRadius(bottomLeft), 52668 borderBottomRightRadius: padBorderRadius(bottomRight) 52669 }; 52670 } 52671 52672 // The inline style using calc() will only apply if both values 52673 // supplied to calc() have units. Deprecated block's may have 52674 // unitless integer. 52675 const radius = Number.isInteger(borderRadius) ? `$borderRadius}px` : borderRadius; 52676 styles.borderRadius = `calc($radius} + $DEFAULT_INNER_PADDING})`; 52677 } 52678 return styles; 52679 }; 52680 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 52681 className: getBlockClassNames(), 52682 style: { 52683 ...typographyProps.style, 52684 // Input opts out of text decoration. 52685 textDecoration: undefined 52686 } 52687 }); 52688 const labelClassnames = dist_clsx('wp-block-search__label', typographyProps.className); 52689 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 52690 ...blockProps, 52691 children: [controls, showLabel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 52692 identifier: "label", 52693 className: labelClassnames, 52694 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Label text'), 52695 placeholder: (0,external_wp_i18n_namespaceObject.__)('Add label…'), 52696 withoutInteractiveFormatting: true, 52697 value: label, 52698 onChange: html => setAttributes({ 52699 label: html 52700 }), 52701 style: typographyProps.style 52702 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.ResizableBox, { 52703 size: { 52704 width: width === undefined ? 'auto' : `$width}$widthUnit}`, 52705 height: 'auto' 52706 }, 52707 className: dist_clsx('wp-block-search__inside-wrapper', isButtonPositionInside ? borderProps.className : undefined), 52708 style: getWrapperStyles(), 52709 minWidth: MIN_WIDTH, 52710 enable: getResizableSides(), 52711 onResizeStart: (event, direction, elt) => { 52712 setAttributes({ 52713 width: parseInt(elt.offsetWidth, 10), 52714 widthUnit: 'px' 52715 }); 52716 toggleSelection(false); 52717 }, 52718 onResizeStop: (event, direction, elt, delta) => { 52719 setAttributes({ 52720 width: parseInt(width + delta.width, 10) 52721 }); 52722 toggleSelection(true); 52723 }, 52724 showHandle: isSelected, 52725 children: [(isButtonPositionInside || isButtonPositionOutside || hasOnlyButton) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 52726 children: [renderTextField(), renderButton()] 52727 }), hasNoButton && renderTextField()] 52728 })] 52729 }); 52730 } 52731 52732 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/search/variations.js 52733 /** 52734 * WordPress dependencies 52735 */ 52736 52737 const search_variations_variations = [{ 52738 name: 'default', 52739 isDefault: true, 52740 attributes: { 52741 buttonText: (0,external_wp_i18n_namespaceObject.__)('Search'), 52742 label: (0,external_wp_i18n_namespaceObject.__)('Search') 52743 } 52744 }]; 52745 /* harmony default export */ const search_variations = (search_variations_variations); 52746 52747 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/search/index.js 52748 /** 52749 * WordPress dependencies 52750 */ 52751 52752 52753 52754 /** 52755 * Internal dependencies 52756 */ 52757 52758 const search_metadata = { 52759 $schema: "https://schemas.wp.org/trunk/block.json", 52760 apiVersion: 3, 52761 name: "core/search", 52762 title: "Search", 52763 category: "widgets", 52764 description: "Help visitors find your content.", 52765 keywords: ["find"], 52766 textdomain: "default", 52767 attributes: { 52768 label: { 52769 type: "string", 52770 role: "content" 52771 }, 52772 showLabel: { 52773 type: "boolean", 52774 "default": true 52775 }, 52776 placeholder: { 52777 type: "string", 52778 "default": "", 52779 role: "content" 52780 }, 52781 width: { 52782 type: "number" 52783 }, 52784 widthUnit: { 52785 type: "string" 52786 }, 52787 buttonText: { 52788 type: "string", 52789 role: "content" 52790 }, 52791 buttonPosition: { 52792 type: "string", 52793 "default": "button-outside" 52794 }, 52795 buttonUseIcon: { 52796 type: "boolean", 52797 "default": false 52798 }, 52799 query: { 52800 type: "object", 52801 "default": {} 52802 }, 52803 isSearchFieldHidden: { 52804 type: "boolean", 52805 "default": false 52806 } 52807 }, 52808 supports: { 52809 align: ["left", "center", "right"], 52810 color: { 52811 gradients: true, 52812 __experimentalSkipSerialization: true, 52813 __experimentalDefaultControls: { 52814 background: true, 52815 text: true 52816 } 52817 }, 52818 interactivity: true, 52819 typography: { 52820 __experimentalSkipSerialization: true, 52821 __experimentalSelector: ".wp-block-search__label, .wp-block-search__input, .wp-block-search__button", 52822 fontSize: true, 52823 lineHeight: true, 52824 __experimentalFontFamily: true, 52825 __experimentalFontWeight: true, 52826 __experimentalFontStyle: true, 52827 __experimentalTextTransform: true, 52828 __experimentalTextDecoration: true, 52829 __experimentalLetterSpacing: true, 52830 __experimentalDefaultControls: { 52831 fontSize: true 52832 } 52833 }, 52834 __experimentalBorder: { 52835 color: true, 52836 radius: true, 52837 width: true, 52838 __experimentalSkipSerialization: true, 52839 __experimentalDefaultControls: { 52840 color: true, 52841 radius: true, 52842 width: true 52843 } 52844 }, 52845 spacing: { 52846 margin: true 52847 }, 52848 html: false 52849 }, 52850 editorStyle: "wp-block-search-editor", 52851 style: "wp-block-search" 52852 }; 52853 52854 52855 const { 52856 name: search_name 52857 } = search_metadata; 52858 52859 const search_settings = { 52860 icon: library_search, 52861 example: { 52862 attributes: { 52863 buttonText: (0,external_wp_i18n_namespaceObject.__)('Search'), 52864 label: (0,external_wp_i18n_namespaceObject.__)('Search') 52865 }, 52866 viewportWidth: 400 52867 }, 52868 variations: search_variations, 52869 edit: SearchEdit 52870 }; 52871 const search_init = () => initBlock({ 52872 name: search_name, 52873 metadata: search_metadata, 52874 settings: search_settings 52875 }); 52876 52877 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/separator.js 52878 /** 52879 * WordPress dependencies 52880 */ 52881 52882 52883 const separator = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 52884 viewBox: "0 0 24 24", 52885 xmlns: "http://www.w3.org/2000/svg", 52886 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 52887 d: "M4.5 12.5v4H3V7h1.5v3.987h15V7H21v9.5h-1.5v-4h-15Z" 52888 }) 52889 }); 52890 /* harmony default export */ const library_separator = (separator); 52891 52892 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/separator/use-deprecated-opacity.js 52893 /** 52894 * WordPress dependencies 52895 */ 52896 52897 52898 function useDeprecatedOpacity(opacity, currentColor, setAttributes) { 52899 const [deprecatedOpacityWithNoColor, setDeprecatedOpacityWithNoColor] = (0,external_wp_element_namespaceObject.useState)(false); 52900 const previousColor = (0,external_wp_compose_namespaceObject.usePrevious)(currentColor); 52901 52902 // A separator with no color set will always have previousColor set to undefined, 52903 // and we need to differentiate these from those with color set that will return 52904 // previousColor as undefined on the first render. 52905 (0,external_wp_element_namespaceObject.useEffect)(() => { 52906 if (opacity === 'css' && !currentColor && !previousColor) { 52907 setDeprecatedOpacityWithNoColor(true); 52908 } 52909 }, [currentColor, previousColor, opacity]); 52910 52911 // For deprecated blocks, that have a default 0.4 css opacity set, we 52912 // need to remove this if the current color is changed, or a color is added. 52913 // In these instances the opacity attribute is set back to the default of 52914 // alpha-channel which allows a new custom opacity to be set via the color picker. 52915 (0,external_wp_element_namespaceObject.useEffect)(() => { 52916 if (opacity === 'css' && (deprecatedOpacityWithNoColor && currentColor || previousColor && currentColor !== previousColor)) { 52917 setAttributes({ 52918 opacity: 'alpha-channel' 52919 }); 52920 setDeprecatedOpacityWithNoColor(false); 52921 } 52922 }, [deprecatedOpacityWithNoColor, currentColor, previousColor]); 52923 } 52924 52925 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/separator/edit.js 52926 /** 52927 * External dependencies 52928 */ 52929 52930 52931 /** 52932 * WordPress dependencies 52933 */ 52934 52935 52936 52937 /** 52938 * Internal dependencies 52939 */ 52940 52941 52942 52943 function SeparatorEdit({ 52944 attributes, 52945 setAttributes 52946 }) { 52947 const { 52948 backgroundColor, 52949 opacity, 52950 style 52951 } = attributes; 52952 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseColorProps)(attributes); 52953 const currentColor = colorProps?.style?.backgroundColor; 52954 const hasCustomColor = !!style?.color?.background; 52955 useDeprecatedOpacity(opacity, currentColor, setAttributes); 52956 52957 // The dots styles uses text for the dots, to change those dots color is 52958 // using color, not backgroundColor. 52959 const colorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', backgroundColor); 52960 const className = dist_clsx({ 52961 'has-text-color': backgroundColor || currentColor, 52962 [colorClass]: colorClass, 52963 'has-css-opacity': opacity === 'css', 52964 'has-alpha-channel-opacity': opacity === 'alpha-channel' 52965 }, colorProps.className); 52966 const styles = { 52967 color: currentColor, 52968 backgroundColor: currentColor 52969 }; 52970 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 52971 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.HorizontalRule, { 52972 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 52973 className, 52974 style: hasCustomColor ? styles : undefined 52975 }) 52976 }) 52977 }); 52978 } 52979 52980 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/separator/save.js 52981 /** 52982 * External dependencies 52983 */ 52984 52985 52986 /** 52987 * WordPress dependencies 52988 */ 52989 52990 52991 function separatorSave({ 52992 attributes 52993 }) { 52994 const { 52995 backgroundColor, 52996 style, 52997 opacity 52998 } = attributes; 52999 const customColor = style?.color?.background; 53000 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetColorClassesAndStyles)(attributes); 53001 // The hr support changing color using border-color, since border-color 53002 // is not yet supported in the color palette, we use background-color. 53003 53004 // The dots styles uses text for the dots, to change those dots color is 53005 // using color, not backgroundColor. 53006 const colorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', backgroundColor); 53007 const className = dist_clsx({ 53008 'has-text-color': backgroundColor || customColor, 53009 [colorClass]: colorClass, 53010 'has-css-opacity': opacity === 'css', 53011 'has-alpha-channel-opacity': opacity === 'alpha-channel' 53012 }, colorProps.className); 53013 const styles = { 53014 backgroundColor: colorProps?.style?.backgroundColor, 53015 color: colorClass ? undefined : customColor 53016 }; 53017 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("hr", { 53018 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 53019 className, 53020 style: styles 53021 }) 53022 }); 53023 } 53024 53025 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/separator/transforms.js 53026 /** 53027 * WordPress dependencies 53028 */ 53029 53030 const separator_transforms_transforms = { 53031 from: [{ 53032 type: 'enter', 53033 regExp: /^-{3,}$/, 53034 transform: () => (0,external_wp_blocks_namespaceObject.createBlock)('core/separator') 53035 }, { 53036 type: 'raw', 53037 selector: 'hr', 53038 schema: { 53039 hr: {} 53040 } 53041 }] 53042 }; 53043 /* harmony default export */ const separator_transforms = (separator_transforms_transforms); 53044 53045 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/separator/deprecated.js 53046 /** 53047 * External dependencies 53048 */ 53049 53050 53051 /** 53052 * WordPress dependencies 53053 */ 53054 53055 53056 const separator_deprecated_v1 = { 53057 attributes: { 53058 color: { 53059 type: 'string' 53060 }, 53061 customColor: { 53062 type: 'string' 53063 } 53064 }, 53065 save({ 53066 attributes 53067 }) { 53068 const { 53069 color, 53070 customColor 53071 } = attributes; 53072 53073 // the hr support changing color using border-color, since border-color 53074 // is not yet supported in the color palette, we use background-color 53075 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', color); 53076 // the dots styles uses text for the dots, to change those dots color is 53077 // using color, not backgroundColor 53078 const colorClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('color', color); 53079 const className = dist_clsx({ 53080 'has-text-color has-background': color || customColor, 53081 [backgroundClass]: backgroundClass, 53082 [colorClass]: colorClass 53083 }); 53084 const style = { 53085 backgroundColor: backgroundClass ? undefined : customColor, 53086 color: colorClass ? undefined : customColor 53087 }; 53088 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("hr", { 53089 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 53090 className, 53091 style 53092 }) 53093 }); 53094 }, 53095 migrate(attributes) { 53096 const { 53097 color, 53098 customColor, 53099 ...restAttributes 53100 } = attributes; 53101 return { 53102 ...restAttributes, 53103 backgroundColor: color ? color : undefined, 53104 opacity: 'css', 53105 style: customColor ? { 53106 color: { 53107 background: customColor 53108 } 53109 } : undefined 53110 }; 53111 } 53112 }; 53113 /* harmony default export */ const separator_deprecated = ([separator_deprecated_v1]); 53114 53115 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/separator/index.js 53116 /** 53117 * WordPress dependencies 53118 */ 53119 53120 53121 /** 53122 * Internal dependencies 53123 */ 53124 53125 53126 const separator_metadata = { 53127 $schema: "https://schemas.wp.org/trunk/block.json", 53128 apiVersion: 3, 53129 name: "core/separator", 53130 title: "Separator", 53131 category: "design", 53132 description: "Create a break between ideas or sections with a horizontal separator.", 53133 keywords: ["horizontal-line", "hr", "divider"], 53134 textdomain: "default", 53135 attributes: { 53136 opacity: { 53137 type: "string", 53138 "default": "alpha-channel" 53139 } 53140 }, 53141 supports: { 53142 anchor: true, 53143 align: ["center", "wide", "full"], 53144 color: { 53145 enableContrastChecker: false, 53146 __experimentalSkipSerialization: true, 53147 gradients: true, 53148 background: true, 53149 text: false, 53150 __experimentalDefaultControls: { 53151 background: true 53152 } 53153 }, 53154 spacing: { 53155 margin: ["top", "bottom"] 53156 }, 53157 interactivity: { 53158 clientNavigation: true 53159 } 53160 }, 53161 styles: [{ 53162 name: "default", 53163 label: "Default", 53164 isDefault: true 53165 }, { 53166 name: "wide", 53167 label: "Wide Line" 53168 }, { 53169 name: "dots", 53170 label: "Dots" 53171 }], 53172 editorStyle: "wp-block-separator-editor", 53173 style: "wp-block-separator" 53174 }; 53175 53176 53177 53178 const { 53179 name: separator_name 53180 } = separator_metadata; 53181 53182 const separator_settings = { 53183 icon: library_separator, 53184 example: { 53185 attributes: { 53186 customColor: '#065174', 53187 className: 'is-style-wide' 53188 } 53189 }, 53190 transforms: separator_transforms, 53191 edit: SeparatorEdit, 53192 save: separatorSave, 53193 deprecated: separator_deprecated 53194 }; 53195 const separator_init = () => initBlock({ 53196 name: separator_name, 53197 metadata: separator_metadata, 53198 settings: separator_settings 53199 }); 53200 53201 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/shortcode.js 53202 /** 53203 * WordPress dependencies 53204 */ 53205 53206 53207 const shortcode = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 53208 viewBox: "0 0 24 24", 53209 xmlns: "http://www.w3.org/2000/svg", 53210 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 53211 d: "M16 4.2v1.5h2.5v12.5H16v1.5h4V4.2h-4zM4.2 19.8h4v-1.5H5.8V5.8h2.5V4.2h-4l-.1 15.6zm5.1-3.1l1.4.6 4-10-1.4-.6-4 10z" 53212 }) 53213 }); 53214 /* harmony default export */ const library_shortcode = (shortcode); 53215 53216 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/shortcode/edit.js 53217 /** 53218 * WordPress dependencies 53219 */ 53220 53221 53222 53223 53224 53225 53226 function ShortcodeEdit({ 53227 attributes, 53228 setAttributes 53229 }) { 53230 const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(ShortcodeEdit); 53231 const inputId = `blocks-shortcode-input-$instanceId}`; 53232 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 53233 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)(), 53234 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 53235 icon: library_shortcode, 53236 label: (0,external_wp_i18n_namespaceObject.__)('Shortcode'), 53237 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.PlainText, { 53238 className: "blocks-shortcode__textarea", 53239 id: inputId, 53240 value: attributes.text, 53241 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Shortcode text'), 53242 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write shortcode here…'), 53243 onChange: text => setAttributes({ 53244 text 53245 }) 53246 }) 53247 }) 53248 }); 53249 } 53250 53251 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/shortcode/save.js 53252 /** 53253 * WordPress dependencies 53254 */ 53255 53256 53257 function shortcode_save_save({ 53258 attributes 53259 }) { 53260 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_element_namespaceObject.RawHTML, { 53261 children: attributes.text 53262 }); 53263 } 53264 53265 ;// CONCATENATED MODULE: external ["wp","autop"] 53266 const external_wp_autop_namespaceObject = window["wp"]["autop"]; 53267 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/shortcode/transforms.js 53268 /** 53269 * WordPress dependencies 53270 */ 53271 53272 const shortcode_transforms_transforms = { 53273 from: [{ 53274 type: 'shortcode', 53275 // Per "Shortcode names should be all lowercase and use all 53276 // letters, but numbers and underscores should work fine too. 53277 // Be wary of using hyphens (dashes), you'll be better off not 53278 // using them." in https://codex.wordpress.org/Shortcode_API 53279 // Require that the first character be a letter. This notably 53280 // prevents footnote markings ([1]) from being caught as 53281 // shortcodes. 53282 tag: '[a-z][a-z0-9_-]*', 53283 attributes: { 53284 text: { 53285 type: 'string', 53286 shortcode: (attrs, { 53287 content 53288 }) => { 53289 return (0,external_wp_autop_namespaceObject.removep)((0,external_wp_autop_namespaceObject.autop)(content)); 53290 } 53291 } 53292 }, 53293 priority: 20 53294 }] 53295 }; 53296 /* harmony default export */ const shortcode_transforms = (shortcode_transforms_transforms); 53297 53298 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/shortcode/index.js 53299 /** 53300 * WordPress dependencies 53301 */ 53302 53303 53304 /** 53305 * Internal dependencies 53306 */ 53307 53308 53309 53310 53311 const shortcode_metadata = { 53312 $schema: "https://schemas.wp.org/trunk/block.json", 53313 apiVersion: 3, 53314 name: "core/shortcode", 53315 title: "Shortcode", 53316 category: "widgets", 53317 description: "Insert additional custom elements with a WordPress shortcode.", 53318 textdomain: "default", 53319 attributes: { 53320 text: { 53321 type: "string", 53322 source: "raw" 53323 } 53324 }, 53325 supports: { 53326 className: false, 53327 customClassName: false, 53328 html: false 53329 }, 53330 editorStyle: "wp-block-shortcode-editor" 53331 }; 53332 const { 53333 name: shortcode_name 53334 } = shortcode_metadata; 53335 53336 const shortcode_settings = { 53337 icon: library_shortcode, 53338 transforms: shortcode_transforms, 53339 edit: ShortcodeEdit, 53340 save: shortcode_save_save 53341 }; 53342 const shortcode_init = () => initBlock({ 53343 name: shortcode_name, 53344 metadata: shortcode_metadata, 53345 settings: shortcode_settings 53346 }); 53347 53348 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/site-logo.js 53349 /** 53350 * WordPress dependencies 53351 */ 53352 53353 53354 const siteLogo = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 53355 xmlns: "http://www.w3.org/2000/svg", 53356 viewBox: "0 0 24 24", 53357 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 53358 d: "M12 3c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 1.5c4.1 0 7.5 3.4 7.5 7.5v.1c-1.4-.8-3.3-1.7-3.4-1.8-.2-.1-.5-.1-.8.1l-2.9 2.1L9 11.3c-.2-.1-.4 0-.6.1l-3.7 2.2c-.1-.5-.2-1-.2-1.5 0-4.2 3.4-7.6 7.5-7.6zm0 15c-3.1 0-5.7-1.9-6.9-4.5l3.7-2.2 3.5 1.2c.2.1.5 0 .7-.1l2.9-2.1c.8.4 2.5 1.2 3.5 1.9-.9 3.3-3.9 5.8-7.4 5.8z" 53359 }) 53360 }); 53361 /* harmony default export */ const site_logo = (siteLogo); 53362 53363 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/site-logo/edit.js 53364 /** 53365 * External dependencies 53366 */ 53367 53368 53369 /** 53370 * WordPress dependencies 53371 */ 53372 53373 53374 53375 53376 53377 53378 53379 53380 53381 53382 53383 /** 53384 * Internal dependencies 53385 */ 53386 53387 53388 53389 53390 const site_logo_edit_ALLOWED_MEDIA_TYPES = ['image']; 53391 const ACCEPT_MEDIA_STRING = 'image/*'; 53392 const SiteLogo = ({ 53393 alt, 53394 attributes: { 53395 align, 53396 width, 53397 height, 53398 isLink, 53399 linkTarget, 53400 shouldSyncIcon 53401 }, 53402 isSelected, 53403 setAttributes, 53404 setLogo, 53405 logoUrl, 53406 siteUrl, 53407 logoId, 53408 iconId, 53409 setIcon, 53410 canUserEdit 53411 }) => { 53412 const isLargeViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium'); 53413 const isWideAligned = ['wide', 'full'].includes(align); 53414 const isResizable = !isWideAligned && isLargeViewport; 53415 const [{ 53416 naturalWidth, 53417 naturalHeight 53418 }, setNaturalSize] = (0,external_wp_element_namespaceObject.useState)({}); 53419 const [isEditingImage, setIsEditingImage] = (0,external_wp_element_namespaceObject.useState)(false); 53420 const { 53421 toggleSelection 53422 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 53423 const { 53424 imageEditing, 53425 maxWidth, 53426 title 53427 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 53428 const settings = select(external_wp_blockEditor_namespaceObject.store).getSettings(); 53429 const siteEntities = select(external_wp_coreData_namespaceObject.store).getEntityRecord('root', '__unstableBase'); 53430 return { 53431 title: siteEntities?.name, 53432 imageEditing: settings.imageEditing, 53433 maxWidth: settings.maxWidth 53434 }; 53435 }, []); 53436 (0,external_wp_element_namespaceObject.useEffect)(() => { 53437 // Turn the `Use as site icon` toggle off if it is on but the logo and icon have 53438 // fallen out of sync. This can happen if the toggle is saved in the `on` position, 53439 // but changes are later made to the site icon in the Customizer. 53440 if (shouldSyncIcon && logoId !== iconId) { 53441 setAttributes({ 53442 shouldSyncIcon: false 53443 }); 53444 } 53445 }, []); 53446 (0,external_wp_element_namespaceObject.useEffect)(() => { 53447 if (!isSelected) { 53448 setIsEditingImage(false); 53449 } 53450 }, [isSelected]); 53451 function onResizeStart() { 53452 toggleSelection(false); 53453 } 53454 function onResizeStop() { 53455 toggleSelection(true); 53456 } 53457 const img = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 53458 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 53459 className: "custom-logo", 53460 src: logoUrl, 53461 alt: alt, 53462 onLoad: event => { 53463 setNaturalSize({ 53464 naturalWidth: event.target.naturalWidth, 53465 naturalHeight: event.target.naturalHeight 53466 }); 53467 } 53468 }), (0,external_wp_blob_namespaceObject.isBlobURL)(logoUrl) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {})] 53469 }); 53470 let imgWrapper = img; 53471 53472 // Disable reason: Image itself is not meant to be interactive, but 53473 // should direct focus to block. 53474 if (isLink) { 53475 imgWrapper = 53476 /*#__PURE__*/ 53477 /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */ 53478 (0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 53479 href: siteUrl, 53480 className: "custom-logo-link", 53481 rel: "home", 53482 title: title, 53483 onClick: event => event.preventDefault(), 53484 children: img 53485 }) 53486 /* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */; 53487 } 53488 if (!isResizable || !naturalWidth || !naturalHeight) { 53489 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 53490 style: { 53491 width, 53492 height 53493 }, 53494 children: imgWrapper 53495 }); 53496 } 53497 53498 // Set the default width to a responsible size. 53499 // Note that this width is also set in the attached frontend CSS file. 53500 const defaultWidth = 120; 53501 const currentWidth = width || defaultWidth; 53502 const ratio = naturalWidth / naturalHeight; 53503 const currentHeight = currentWidth / ratio; 53504 const minWidth = naturalWidth < naturalHeight ? constants_MIN_SIZE : Math.ceil(constants_MIN_SIZE * ratio); 53505 const minHeight = naturalHeight < naturalWidth ? constants_MIN_SIZE : Math.ceil(constants_MIN_SIZE / ratio); 53506 53507 // With the current implementation of ResizableBox, an image needs an 53508 // explicit pixel value for the max-width. In absence of being able to 53509 // set the content-width, this max-width is currently dictated by the 53510 // vanilla editor style. The following variable adds a buffer to this 53511 // vanilla style, so 3rd party themes have some wiggleroom. This does, 53512 // in most cases, allow you to scale the image beyond the width of the 53513 // main column, though not infinitely. 53514 // @todo It would be good to revisit this once a content-width variable 53515 // becomes available. 53516 const maxWidthBuffer = maxWidth * 2.5; 53517 let showRightHandle = false; 53518 let showLeftHandle = false; 53519 53520 /* eslint-disable no-lonely-if */ 53521 // See https://github.com/WordPress/gutenberg/issues/7584. 53522 if (align === 'center') { 53523 // When the image is centered, show both handles. 53524 showRightHandle = true; 53525 showLeftHandle = true; 53526 } else if ((0,external_wp_i18n_namespaceObject.isRTL)()) { 53527 // In RTL mode the image is on the right by default. 53528 // Show the right handle and hide the left handle only when it is 53529 // aligned left. Otherwise always show the left handle. 53530 if (align === 'left') { 53531 showRightHandle = true; 53532 } else { 53533 showLeftHandle = true; 53534 } 53535 } else { 53536 // Show the left handle and hide the right handle only when the 53537 // image is aligned right. Otherwise always show the right handle. 53538 if (align === 'right') { 53539 showLeftHandle = true; 53540 } else { 53541 showRightHandle = true; 53542 } 53543 } 53544 /* eslint-enable no-lonely-if */ 53545 53546 const canEditImage = logoId && naturalWidth && naturalHeight && imageEditing; 53547 const imgEdit = canEditImage && isEditingImage ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalImageEditor, { 53548 id: logoId, 53549 url: logoUrl, 53550 width: currentWidth, 53551 height: currentHeight, 53552 naturalHeight: naturalHeight, 53553 naturalWidth: naturalWidth, 53554 onSaveImage: imageAttributes => { 53555 setLogo(imageAttributes.id); 53556 }, 53557 onFinishEditing: () => { 53558 setIsEditingImage(false); 53559 } 53560 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ResizableBox, { 53561 size: { 53562 width: currentWidth, 53563 height: currentHeight 53564 }, 53565 showHandle: isSelected, 53566 minWidth: minWidth, 53567 maxWidth: maxWidthBuffer, 53568 minHeight: minHeight, 53569 maxHeight: maxWidthBuffer / ratio, 53570 lockAspectRatio: true, 53571 enable: { 53572 top: false, 53573 right: showRightHandle, 53574 bottom: true, 53575 left: showLeftHandle 53576 }, 53577 onResizeStart: onResizeStart, 53578 onResizeStop: (event, direction, elt, delta) => { 53579 onResizeStop(); 53580 setAttributes({ 53581 width: parseInt(currentWidth + delta.width, 10), 53582 height: parseInt(currentHeight + delta.height, 10) 53583 }); 53584 }, 53585 children: imgWrapper 53586 }); 53587 53588 // Support the previous location for the Site Icon settings. To be removed 53589 // when the required WP core version for Gutenberg is >= 6.5.0. 53590 const shouldUseNewUrl = !window?.__experimentalUseCustomizerSiteLogoUrl; 53591 const siteIconSettingsUrl = shouldUseNewUrl ? siteUrl + '/wp-admin/options-general.php' : siteUrl + '/wp-admin/customize.php?autofocus[section]=title_tagline'; 53592 const syncSiteIconHelpText = (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.__)('Site Icons are what you see in browser tabs, bookmark bars, and within the WordPress mobile apps. To use a custom icon that is different from your site logo, use the <a>Site Icon settings</a>.'), { 53593 a: 53594 /*#__PURE__*/ 53595 // eslint-disable-next-line jsx-a11y/anchor-has-content 53596 (0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 53597 href: siteIconSettingsUrl, 53598 target: "_blank", 53599 rel: "noopener noreferrer" 53600 }) 53601 }); 53602 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 53603 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 53604 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 53605 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 53606 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 53607 __nextHasNoMarginBottom: true, 53608 __next40pxDefaultSize: true, 53609 label: (0,external_wp_i18n_namespaceObject.__)('Image width'), 53610 onChange: newWidth => setAttributes({ 53611 width: newWidth 53612 }), 53613 min: minWidth, 53614 max: maxWidthBuffer, 53615 initialPosition: Math.min(defaultWidth, maxWidthBuffer), 53616 value: width || '', 53617 disabled: !isResizable 53618 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 53619 __nextHasNoMarginBottom: true, 53620 label: (0,external_wp_i18n_namespaceObject.__)('Link image to home'), 53621 onChange: () => setAttributes({ 53622 isLink: !isLink 53623 }), 53624 checked: isLink 53625 }), isLink && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 53626 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 53627 __nextHasNoMarginBottom: true, 53628 label: (0,external_wp_i18n_namespaceObject.__)('Open in new tab'), 53629 onChange: value => setAttributes({ 53630 linkTarget: value ? '_blank' : '_self' 53631 }), 53632 checked: linkTarget === '_blank' 53633 }) 53634 }), canUserEdit && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 53635 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 53636 __nextHasNoMarginBottom: true, 53637 label: (0,external_wp_i18n_namespaceObject.__)('Use as Site Icon'), 53638 onChange: value => { 53639 setAttributes({ 53640 shouldSyncIcon: value 53641 }); 53642 setIcon(value ? logoId : undefined); 53643 }, 53644 checked: !!shouldSyncIcon, 53645 help: syncSiteIconHelpText 53646 }) 53647 })] 53648 }) 53649 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 53650 group: "block", 53651 children: canEditImage && !isEditingImage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 53652 onClick: () => setIsEditingImage(true), 53653 icon: library_crop, 53654 label: (0,external_wp_i18n_namespaceObject.__)('Crop') 53655 }) 53656 }), imgEdit] 53657 }); 53658 }; 53659 53660 // This is a light wrapper around MediaReplaceFlow because the block has two 53661 // different MediaReplaceFlows, one for the inspector and one for the toolbar. 53662 function SiteLogoReplaceFlow({ 53663 mediaURL, 53664 onRemoveLogo, 53665 ...mediaReplaceProps 53666 }) { 53667 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaReplaceFlow, { 53668 ...mediaReplaceProps, 53669 mediaURL: mediaURL, 53670 allowedTypes: site_logo_edit_ALLOWED_MEDIA_TYPES, 53671 accept: ACCEPT_MEDIA_STRING, 53672 onReset: onRemoveLogo 53673 }); 53674 } 53675 const InspectorLogoPreview = ({ 53676 mediaItemData = {}, 53677 itemGroupProps 53678 }) => { 53679 const { 53680 alt_text: alt, 53681 source_url: logoUrl, 53682 slug: logoSlug, 53683 media_details: logoMediaDetails 53684 } = mediaItemData; 53685 const logoLabel = logoMediaDetails?.sizes?.full?.file || logoSlug; 53686 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, { 53687 ...itemGroupProps, 53688 as: "span", 53689 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { 53690 justify: "flex-start", 53691 as: "span", 53692 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { 53693 src: logoUrl, 53694 alt: alt 53695 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { 53696 as: "span", 53697 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalTruncate, { 53698 numberOfLines: 1, 53699 className: "block-library-site-logo__inspector-media-replace-title", 53700 children: logoLabel 53701 }) 53702 })] 53703 }) 53704 }); 53705 }; 53706 function LogoEdit({ 53707 attributes, 53708 className, 53709 setAttributes, 53710 isSelected 53711 }) { 53712 const { 53713 width, 53714 shouldSyncIcon 53715 } = attributes; 53716 const { 53717 siteLogoId, 53718 canUserEdit, 53719 url, 53720 siteIconId, 53721 mediaItemData, 53722 isRequestingMediaItem 53723 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 53724 const { 53725 canUser, 53726 getEntityRecord, 53727 getEditedEntityRecord 53728 } = select(external_wp_coreData_namespaceObject.store); 53729 const _canUserEdit = canUser('update', { 53730 kind: 'root', 53731 name: 'site' 53732 }); 53733 const siteSettings = _canUserEdit ? getEditedEntityRecord('root', 'site') : undefined; 53734 const siteData = getEntityRecord('root', '__unstableBase'); 53735 const _siteLogoId = _canUserEdit ? siteSettings?.site_logo : siteData?.site_logo; 53736 const _siteIconId = siteSettings?.site_icon; 53737 const mediaItem = _siteLogoId && select(external_wp_coreData_namespaceObject.store).getMedia(_siteLogoId, { 53738 context: 'view' 53739 }); 53740 const _isRequestingMediaItem = !!_siteLogoId && !select(external_wp_coreData_namespaceObject.store).hasFinishedResolution('getMedia', [_siteLogoId, { 53741 context: 'view' 53742 }]); 53743 return { 53744 siteLogoId: _siteLogoId, 53745 canUserEdit: _canUserEdit, 53746 url: siteData?.home, 53747 mediaItemData: mediaItem, 53748 isRequestingMediaItem: _isRequestingMediaItem, 53749 siteIconId: _siteIconId 53750 }; 53751 }, []); 53752 const { 53753 getSettings 53754 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 53755 const [temporaryURL, setTemporaryURL] = (0,external_wp_element_namespaceObject.useState)(); 53756 const { 53757 editEntityRecord 53758 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 53759 const setLogo = (newValue, shouldForceSync = false) => { 53760 // `shouldForceSync` is used to force syncing when the attribute 53761 // may not have updated yet. 53762 if (shouldSyncIcon || shouldForceSync) { 53763 setIcon(newValue); 53764 } 53765 editEntityRecord('root', 'site', undefined, { 53766 site_logo: newValue 53767 }); 53768 }; 53769 const setIcon = newValue => 53770 // The new value needs to be `null` to reset the Site Icon. 53771 editEntityRecord('root', 'site', undefined, { 53772 site_icon: newValue !== null && newValue !== void 0 ? newValue : null 53773 }); 53774 const { 53775 alt_text: alt, 53776 source_url: logoUrl 53777 } = mediaItemData !== null && mediaItemData !== void 0 ? mediaItemData : {}; 53778 const onInitialSelectLogo = media => { 53779 // Initialize the syncSiteIcon toggle. If we currently have no Site logo and no 53780 // site icon, automatically sync the logo to the icon. 53781 if (shouldSyncIcon === undefined) { 53782 const shouldForceSync = !siteIconId; 53783 setAttributes({ 53784 shouldSyncIcon: shouldForceSync 53785 }); 53786 53787 // Because we cannot rely on the `shouldSyncIcon` attribute to have updated by 53788 // the time `setLogo` is called, pass an argument to force the syncing. 53789 onSelectLogo(media, shouldForceSync); 53790 return; 53791 } 53792 onSelectLogo(media); 53793 }; 53794 const onSelectLogo = (media, shouldForceSync = false) => { 53795 if (!media) { 53796 return; 53797 } 53798 if (!media.id && media.url) { 53799 // This is a temporary blob image. 53800 setTemporaryURL(media.url); 53801 setLogo(undefined); 53802 return; 53803 } 53804 setLogo(media.id, shouldForceSync); 53805 }; 53806 const onRemoveLogo = () => { 53807 setLogo(null); 53808 setAttributes({ 53809 width: undefined 53810 }); 53811 }; 53812 const { 53813 createErrorNotice 53814 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 53815 const onUploadError = message => { 53816 createErrorNotice(message, { 53817 type: 'snackbar' 53818 }); 53819 setTemporaryURL(); 53820 }; 53821 const onFilesDrop = filesList => { 53822 getSettings().mediaUpload({ 53823 allowedTypes: site_logo_edit_ALLOWED_MEDIA_TYPES, 53824 filesList, 53825 onFileChange([image]) { 53826 if ((0,external_wp_blob_namespaceObject.isBlobURL)(image?.url)) { 53827 setTemporaryURL(image.url); 53828 return; 53829 } 53830 onInitialSelectLogo(image); 53831 }, 53832 onError: onUploadError, 53833 onRemoveLogo 53834 }); 53835 }; 53836 const mediaReplaceFlowProps = { 53837 mediaURL: logoUrl, 53838 name: !logoUrl ? (0,external_wp_i18n_namespaceObject.__)('Choose logo') : (0,external_wp_i18n_namespaceObject.__)('Replace'), 53839 onSelect: onSelectLogo, 53840 onError: onUploadError, 53841 onRemoveLogo 53842 }; 53843 const controls = canUserEdit && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 53844 group: "other", 53845 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SiteLogoReplaceFlow, { 53846 ...mediaReplaceFlowProps 53847 }) 53848 }); 53849 let logoImage; 53850 const isLoading = siteLogoId === undefined || isRequestingMediaItem; 53851 if (isLoading) { 53852 logoImage = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}); 53853 } 53854 53855 // Reset temporary url when logoUrl is available. 53856 (0,external_wp_element_namespaceObject.useEffect)(() => { 53857 if (logoUrl && temporaryURL) { 53858 setTemporaryURL(); 53859 } 53860 }, [logoUrl, temporaryURL]); 53861 if (!!logoUrl || !!temporaryURL) { 53862 logoImage = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 53863 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SiteLogo, { 53864 alt: alt, 53865 attributes: attributes, 53866 className: className, 53867 isSelected: isSelected, 53868 setAttributes: setAttributes, 53869 logoUrl: temporaryURL || logoUrl, 53870 setLogo: setLogo, 53871 logoId: mediaItemData?.id || siteLogoId, 53872 siteUrl: url, 53873 setIcon: setIcon, 53874 iconId: siteIconId, 53875 canUserEdit: canUserEdit 53876 }) 53877 }); 53878 } 53879 const placeholder = content => { 53880 const placeholderClassName = dist_clsx('block-editor-media-placeholder', className); 53881 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 53882 className: placeholderClassName, 53883 preview: logoImage, 53884 withIllustration: true, 53885 style: { 53886 width 53887 }, 53888 children: content 53889 }); 53890 }; 53891 const classes = dist_clsx(className, { 53892 'is-default-size': !width, 53893 'is-transient': temporaryURL 53894 }); 53895 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 53896 className: classes 53897 }); 53898 const mediaInspectorPanel = (canUserEdit || logoUrl) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 53899 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 53900 title: (0,external_wp_i18n_namespaceObject.__)('Media'), 53901 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 53902 className: "block-library-site-logo__inspector-media-replace-container", 53903 children: [!canUserEdit && !!logoUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(InspectorLogoPreview, { 53904 mediaItemData: mediaItemData, 53905 itemGroupProps: { 53906 isBordered: true, 53907 className: 'block-library-site-logo__inspector-readonly-logo-preview' 53908 } 53909 }), canUserEdit && !!logoUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SiteLogoReplaceFlow, { 53910 ...mediaReplaceFlowProps, 53911 name: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(InspectorLogoPreview, { 53912 mediaItemData: mediaItemData 53913 }), 53914 popoverProps: {} 53915 }), canUserEdit && !logoUrl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaUploadCheck, { 53916 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaUpload, { 53917 onSelect: onInitialSelectLogo, 53918 allowedTypes: site_logo_edit_ALLOWED_MEDIA_TYPES, 53919 render: ({ 53920 open 53921 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 53922 className: "block-library-site-logo__inspector-upload-container", 53923 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 53924 __next40pxDefaultSize: true, 53925 onClick: open, 53926 variant: "secondary", 53927 children: isLoading ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) : (0,external_wp_i18n_namespaceObject.__)('Choose logo') 53928 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropZone, { 53929 onFilesDrop: onFilesDrop 53930 })] 53931 }) 53932 }) 53933 })] 53934 }) 53935 }) 53936 }); 53937 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 53938 ...blockProps, 53939 children: [controls, mediaInspectorPanel, (!!logoUrl || !!temporaryURL) && logoImage, (isLoading || !temporaryURL && !logoUrl && !canUserEdit) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 53940 className: "site-logo_placeholder", 53941 withIllustration: true, 53942 children: isLoading && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 53943 className: "components-placeholder__preview", 53944 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) 53945 }) 53946 }), !isLoading && !temporaryURL && !logoUrl && canUserEdit && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaPlaceholder, { 53947 onSelect: onInitialSelectLogo, 53948 accept: ACCEPT_MEDIA_STRING, 53949 allowedTypes: site_logo_edit_ALLOWED_MEDIA_TYPES, 53950 onError: onUploadError, 53951 placeholder: placeholder, 53952 mediaLibraryButton: ({ 53953 open 53954 }) => { 53955 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 53956 __next40pxDefaultSize: true, 53957 icon: library_upload, 53958 variant: "primary", 53959 label: (0,external_wp_i18n_namespaceObject.__)('Choose logo'), 53960 showTooltip: true, 53961 tooltipPosition: "middle right", 53962 onClick: () => { 53963 open(); 53964 } 53965 }); 53966 } 53967 })] 53968 }); 53969 } 53970 53971 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/site-logo/transforms.js 53972 /** 53973 * WordPress dependencies 53974 */ 53975 53976 const site_logo_transforms_transforms = { 53977 to: [{ 53978 type: 'block', 53979 blocks: ['core/site-title'], 53980 transform: ({ 53981 isLink, 53982 linkTarget 53983 }) => { 53984 return (0,external_wp_blocks_namespaceObject.createBlock)('core/site-title', { 53985 isLink, 53986 linkTarget 53987 }); 53988 } 53989 }] 53990 }; 53991 /* harmony default export */ const site_logo_transforms = (site_logo_transforms_transforms); 53992 53993 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/site-logo/index.js 53994 /** 53995 * WordPress dependencies 53996 */ 53997 53998 53999 /** 54000 * Internal dependencies 54001 */ 54002 54003 const site_logo_metadata = { 54004 $schema: "https://schemas.wp.org/trunk/block.json", 54005 apiVersion: 3, 54006 name: "core/site-logo", 54007 title: "Site Logo", 54008 category: "theme", 54009 description: "Display an image to represent this site. Update this block and the changes apply everywhere.", 54010 textdomain: "default", 54011 attributes: { 54012 width: { 54013 type: "number" 54014 }, 54015 isLink: { 54016 type: "boolean", 54017 "default": true 54018 }, 54019 linkTarget: { 54020 type: "string", 54021 "default": "_self" 54022 }, 54023 shouldSyncIcon: { 54024 type: "boolean" 54025 } 54026 }, 54027 example: { 54028 viewportWidth: 500, 54029 attributes: { 54030 width: 350, 54031 className: "block-editor-block-types-list__site-logo-example" 54032 } 54033 }, 54034 supports: { 54035 html: false, 54036 align: true, 54037 alignWide: false, 54038 color: { 54039 __experimentalDuotone: "img, .components-placeholder__illustration, .components-placeholder::before", 54040 text: false, 54041 background: false 54042 }, 54043 spacing: { 54044 margin: true, 54045 padding: true, 54046 __experimentalDefaultControls: { 54047 margin: false, 54048 padding: false 54049 } 54050 }, 54051 interactivity: { 54052 clientNavigation: true 54053 } 54054 }, 54055 styles: [{ 54056 name: "default", 54057 label: "Default", 54058 isDefault: true 54059 }, { 54060 name: "rounded", 54061 label: "Rounded" 54062 }], 54063 editorStyle: "wp-block-site-logo-editor", 54064 style: "wp-block-site-logo" 54065 }; 54066 54067 54068 const { 54069 name: site_logo_name 54070 } = site_logo_metadata; 54071 54072 const site_logo_settings = { 54073 icon: site_logo, 54074 example: {}, 54075 edit: LogoEdit, 54076 transforms: site_logo_transforms 54077 }; 54078 const site_logo_init = () => initBlock({ 54079 name: site_logo_name, 54080 metadata: site_logo_metadata, 54081 settings: site_logo_settings 54082 }); 54083 54084 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/site-tagline/edit.js 54085 /** 54086 * External dependencies 54087 */ 54088 54089 54090 /** 54091 * WordPress dependencies 54092 */ 54093 54094 54095 54096 54097 54098 54099 54100 54101 function SiteTaglineEdit({ 54102 attributes, 54103 setAttributes, 54104 insertBlocksAfter 54105 }) { 54106 const { 54107 textAlign, 54108 level, 54109 levelOptions 54110 } = attributes; 54111 const { 54112 canUserEdit, 54113 tagline 54114 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 54115 const { 54116 canUser, 54117 getEntityRecord, 54118 getEditedEntityRecord 54119 } = select(external_wp_coreData_namespaceObject.store); 54120 const canEdit = canUser('update', { 54121 kind: 'root', 54122 name: 'site' 54123 }); 54124 const settings = canEdit ? getEditedEntityRecord('root', 'site') : {}; 54125 const readOnlySettings = getEntityRecord('root', '__unstableBase'); 54126 return { 54127 canUserEdit: canEdit, 54128 tagline: canEdit ? settings?.description : readOnlySettings?.description 54129 }; 54130 }, []); 54131 const TagName = level === 0 ? 'p' : `h$level}`; 54132 const { 54133 editEntityRecord 54134 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 54135 function setTagline(newTagline) { 54136 editEntityRecord('root', 'site', undefined, { 54137 description: newTagline 54138 }); 54139 } 54140 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 54141 className: dist_clsx({ 54142 [`has-text-align-$textAlign}`]: textAlign, 54143 'wp-block-site-tagline__placeholder': !canUserEdit && !tagline 54144 }) 54145 }); 54146 const siteTaglineContent = canUserEdit ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 54147 allowedFormats: [], 54148 onChange: setTagline, 54149 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Site tagline text'), 54150 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write site tagline…'), 54151 tagName: TagName, 54152 value: tagline, 54153 disableLineBreaks: true, 54154 __unstableOnSplitAtEnd: () => insertBlocksAfter((0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getDefaultBlockName)())), 54155 ...blockProps 54156 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 54157 ...blockProps, 54158 children: tagline || (0,external_wp_i18n_namespaceObject.__)('Site Tagline placeholder') 54159 }); 54160 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 54161 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 54162 group: "block", 54163 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.HeadingLevelDropdown, { 54164 value: level, 54165 options: levelOptions, 54166 onChange: newLevel => setAttributes({ 54167 level: newLevel 54168 }) 54169 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 54170 onChange: newAlign => setAttributes({ 54171 textAlign: newAlign 54172 }), 54173 value: textAlign 54174 })] 54175 }), siteTaglineContent] 54176 }); 54177 } 54178 54179 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/site-tagline/icon.js 54180 /** 54181 * WordPress dependencies 54182 */ 54183 54184 54185 /* harmony default export */ const site_tagline_icon = (/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SVG, { 54186 xmlns: "http://www.w3.org/2000/svg", 54187 width: "24", 54188 height: "24", 54189 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Path, { 54190 d: "M4 10.5h16V9H4v1.5ZM4 15h9v-1.5H4V15Z" 54191 }) 54192 })); 54193 54194 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/site-tagline/deprecated.js 54195 /** 54196 * Internal dependencies 54197 */ 54198 54199 const site_tagline_deprecated_v1 = { 54200 attributes: { 54201 textAlign: { 54202 type: 'string' 54203 } 54204 }, 54205 supports: { 54206 align: ['wide', 'full'], 54207 html: false, 54208 color: { 54209 gradients: true 54210 }, 54211 spacing: { 54212 margin: true, 54213 padding: true 54214 }, 54215 typography: { 54216 fontSize: true, 54217 lineHeight: true, 54218 __experimentalFontFamily: true, 54219 __experimentalTextTransform: true, 54220 __experimentalFontStyle: true, 54221 __experimentalFontWeight: true, 54222 __experimentalLetterSpacing: true 54223 } 54224 }, 54225 save() { 54226 return null; 54227 }, 54228 migrate: migrate_font_family, 54229 isEligible({ 54230 style 54231 }) { 54232 return style?.typography?.fontFamily; 54233 } 54234 }; 54235 54236 /** 54237 * New deprecations need to be placed first 54238 * for them to have higher priority. 54239 * 54240 * Old deprecations may need to be updated as well. 54241 * 54242 * See block-deprecation.md 54243 */ 54244 /* harmony default export */ const site_tagline_deprecated = ([site_tagline_deprecated_v1]); 54245 54246 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/site-tagline/index.js 54247 /** 54248 * Internal dependencies 54249 */ 54250 54251 const site_tagline_metadata = { 54252 $schema: "https://schemas.wp.org/trunk/block.json", 54253 apiVersion: 3, 54254 name: "core/site-tagline", 54255 title: "Site Tagline", 54256 category: "theme", 54257 description: "Describe in a few words what the site is about. The tagline can be used in search results or when sharing on social networks even if it\u2019s not displayed in the theme design.", 54258 keywords: ["description"], 54259 textdomain: "default", 54260 attributes: { 54261 textAlign: { 54262 type: "string" 54263 }, 54264 level: { 54265 type: "number", 54266 "default": 0 54267 }, 54268 levelOptions: { 54269 type: "array", 54270 "default": [0, 1, 2, 3, 4, 5, 6] 54271 } 54272 }, 54273 example: { 54274 viewportWidth: 350, 54275 attributes: { 54276 textAlign: "center" 54277 } 54278 }, 54279 supports: { 54280 align: ["wide", "full"], 54281 html: false, 54282 color: { 54283 gradients: true, 54284 __experimentalDefaultControls: { 54285 background: true, 54286 text: true 54287 } 54288 }, 54289 spacing: { 54290 margin: true, 54291 padding: true, 54292 __experimentalDefaultControls: { 54293 margin: false, 54294 padding: false 54295 } 54296 }, 54297 typography: { 54298 fontSize: true, 54299 lineHeight: true, 54300 __experimentalFontFamily: true, 54301 __experimentalTextTransform: true, 54302 __experimentalTextDecoration: true, 54303 __experimentalFontStyle: true, 54304 __experimentalFontWeight: true, 54305 __experimentalLetterSpacing: true, 54306 __experimentalWritingMode: true, 54307 __experimentalDefaultControls: { 54308 fontSize: true 54309 } 54310 }, 54311 interactivity: { 54312 clientNavigation: true 54313 }, 54314 __experimentalBorder: { 54315 radius: true, 54316 color: true, 54317 width: true, 54318 style: true 54319 } 54320 }, 54321 editorStyle: "wp-block-site-tagline-editor", 54322 style: "wp-block-site-tagline" 54323 }; 54324 54325 54326 54327 const { 54328 name: site_tagline_name 54329 } = site_tagline_metadata; 54330 54331 const site_tagline_settings = { 54332 icon: site_tagline_icon, 54333 edit: SiteTaglineEdit, 54334 deprecated: site_tagline_deprecated 54335 }; 54336 const site_tagline_init = () => initBlock({ 54337 name: site_tagline_name, 54338 metadata: site_tagline_metadata, 54339 settings: site_tagline_settings 54340 }); 54341 54342 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/map-marker.js 54343 /** 54344 * WordPress dependencies 54345 */ 54346 54347 54348 const mapMarker = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54349 xmlns: "http://www.w3.org/2000/svg", 54350 viewBox: "0 0 24 24", 54351 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54352 d: "M12 9c-.8 0-1.5.7-1.5 1.5S11.2 12 12 12s1.5-.7 1.5-1.5S12.8 9 12 9zm0-5c-3.6 0-6.5 2.8-6.5 6.2 0 .8.3 1.8.9 3.1.5 1.1 1.2 2.3 2 3.6.7 1 3 3.8 3.2 3.9l.4.5.4-.5c.2-.2 2.6-2.9 3.2-3.9.8-1.2 1.5-2.5 2-3.6.6-1.3.9-2.3.9-3.1C18.5 6.8 15.6 4 12 4zm4.3 8.7c-.5 1-1.1 2.2-1.9 3.4-.5.7-1.7 2.2-2.4 3-.7-.8-1.9-2.3-2.4-3-.8-1.2-1.4-2.3-1.9-3.3-.6-1.4-.7-2.2-.7-2.5 0-2.6 2.2-4.7 5-4.7s5 2.1 5 4.7c0 .2-.1 1-.7 2.4z" 54353 }) 54354 }); 54355 /* harmony default export */ const map_marker = (mapMarker); 54356 54357 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/site-title/edit.js 54358 /** 54359 * External dependencies 54360 */ 54361 54362 54363 /** 54364 * WordPress dependencies 54365 */ 54366 54367 54368 54369 54370 54371 54372 54373 54374 54375 54376 function SiteTitleEdit({ 54377 attributes, 54378 setAttributes, 54379 insertBlocksAfter 54380 }) { 54381 const { 54382 level, 54383 levelOptions, 54384 textAlign, 54385 isLink, 54386 linkTarget 54387 } = attributes; 54388 const { 54389 canUserEdit, 54390 title 54391 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 54392 const { 54393 canUser, 54394 getEntityRecord, 54395 getEditedEntityRecord 54396 } = select(external_wp_coreData_namespaceObject.store); 54397 const canEdit = canUser('update', { 54398 kind: 'root', 54399 name: 'site' 54400 }); 54401 const settings = canEdit ? getEditedEntityRecord('root', 'site') : {}; 54402 const readOnlySettings = getEntityRecord('root', '__unstableBase'); 54403 return { 54404 canUserEdit: canEdit, 54405 title: canEdit ? settings?.title : readOnlySettings?.name 54406 }; 54407 }, []); 54408 const { 54409 editEntityRecord 54410 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 54411 function setTitle(newTitle) { 54412 editEntityRecord('root', 'site', undefined, { 54413 title: newTitle 54414 }); 54415 } 54416 const TagName = level === 0 ? 'p' : `h$level}`; 54417 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 54418 className: dist_clsx({ 54419 [`has-text-align-$textAlign}`]: textAlign, 54420 'wp-block-site-title__placeholder': !canUserEdit && !title 54421 }) 54422 }); 54423 const siteTitleContent = canUserEdit ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 54424 ...blockProps, 54425 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 54426 tagName: isLink ? 'a' : 'span', 54427 href: isLink ? '#site-title-pseudo-link' : undefined, 54428 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Site title text'), 54429 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write site title…'), 54430 value: title, 54431 onChange: setTitle, 54432 allowedFormats: [], 54433 disableLineBreaks: true, 54434 __unstableOnSplitAtEnd: () => insertBlocksAfter((0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getDefaultBlockName)())) 54435 }) 54436 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 54437 ...blockProps, 54438 children: isLink ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 54439 href: "#site-title-pseudo-link", 54440 onClick: event => event.preventDefault(), 54441 children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title) || (0,external_wp_i18n_namespaceObject.__)('Site Title placeholder') 54442 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 54443 children: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title) || (0,external_wp_i18n_namespaceObject.__)('Site Title placeholder') 54444 }) 54445 }); 54446 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 54447 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.BlockControls, { 54448 group: "block", 54449 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.HeadingLevelDropdown, { 54450 value: level, 54451 options: levelOptions, 54452 onChange: newLevel => setAttributes({ 54453 level: newLevel 54454 }) 54455 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 54456 value: textAlign, 54457 onChange: nextAlign => { 54458 setAttributes({ 54459 textAlign: nextAlign 54460 }); 54461 } 54462 })] 54463 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 54464 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 54465 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 54466 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 54467 __nextHasNoMarginBottom: true, 54468 label: (0,external_wp_i18n_namespaceObject.__)('Make title link to home'), 54469 onChange: () => setAttributes({ 54470 isLink: !isLink 54471 }), 54472 checked: isLink 54473 }), isLink && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 54474 __nextHasNoMarginBottom: true, 54475 label: (0,external_wp_i18n_namespaceObject.__)('Open in new tab'), 54476 onChange: value => setAttributes({ 54477 linkTarget: value ? '_blank' : '_self' 54478 }), 54479 checked: linkTarget === '_blank' 54480 })] 54481 }) 54482 }), siteTitleContent] 54483 }); 54484 } 54485 54486 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/site-title/deprecated.js 54487 /** 54488 * Internal dependencies 54489 */ 54490 54491 const site_title_deprecated_v1 = { 54492 attributes: { 54493 level: { 54494 type: 'number', 54495 default: 1 54496 }, 54497 textAlign: { 54498 type: 'string' 54499 }, 54500 isLink: { 54501 type: 'boolean', 54502 default: true 54503 }, 54504 linkTarget: { 54505 type: 'string', 54506 default: '_self' 54507 } 54508 }, 54509 supports: { 54510 align: ['wide', 'full'], 54511 html: false, 54512 color: { 54513 gradients: true, 54514 link: true 54515 }, 54516 spacing: { 54517 padding: true, 54518 margin: true 54519 }, 54520 typography: { 54521 fontSize: true, 54522 lineHeight: true, 54523 __experimentalFontFamily: true, 54524 __experimentalTextTransform: true, 54525 __experimentalFontStyle: true, 54526 __experimentalFontWeight: true, 54527 __experimentalLetterSpacing: true 54528 } 54529 }, 54530 save() { 54531 return null; 54532 }, 54533 migrate: migrate_font_family, 54534 isEligible({ 54535 style 54536 }) { 54537 return style?.typography?.fontFamily; 54538 } 54539 }; 54540 54541 /** 54542 * New deprecations need to be placed first 54543 * for them to have higher priority. 54544 * 54545 * Old deprecations may need to be updated as well. 54546 * 54547 * See block-deprecation.md 54548 */ 54549 /* harmony default export */ const site_title_deprecated = ([site_title_deprecated_v1]); 54550 54551 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/site-title/transforms.js 54552 /** 54553 * WordPress dependencies 54554 */ 54555 54556 const site_title_transforms_transforms = { 54557 to: [{ 54558 type: 'block', 54559 blocks: ['core/site-logo'], 54560 transform: ({ 54561 isLink, 54562 linkTarget 54563 }) => { 54564 return (0,external_wp_blocks_namespaceObject.createBlock)('core/site-logo', { 54565 isLink, 54566 linkTarget 54567 }); 54568 } 54569 }] 54570 }; 54571 /* harmony default export */ const site_title_transforms = (site_title_transforms_transforms); 54572 54573 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/site-title/index.js 54574 /** 54575 * WordPress dependencies 54576 */ 54577 54578 54579 /** 54580 * Internal dependencies 54581 */ 54582 54583 const site_title_metadata = { 54584 $schema: "https://schemas.wp.org/trunk/block.json", 54585 apiVersion: 3, 54586 name: "core/site-title", 54587 title: "Site Title", 54588 category: "theme", 54589 description: "Displays the name of this site. Update the block, and the changes apply everywhere it\u2019s used. This will also appear in the browser title bar and in search results.", 54590 textdomain: "default", 54591 attributes: { 54592 level: { 54593 type: "number", 54594 "default": 1 54595 }, 54596 levelOptions: { 54597 type: "array", 54598 "default": [0, 1, 2, 3, 4, 5, 6] 54599 }, 54600 textAlign: { 54601 type: "string" 54602 }, 54603 isLink: { 54604 type: "boolean", 54605 "default": true 54606 }, 54607 linkTarget: { 54608 type: "string", 54609 "default": "_self" 54610 } 54611 }, 54612 example: { 54613 viewportWidth: 500 54614 }, 54615 supports: { 54616 align: ["wide", "full"], 54617 html: false, 54618 color: { 54619 gradients: true, 54620 link: true, 54621 __experimentalDefaultControls: { 54622 background: true, 54623 text: true, 54624 link: true 54625 } 54626 }, 54627 spacing: { 54628 padding: true, 54629 margin: true, 54630 __experimentalDefaultControls: { 54631 margin: false, 54632 padding: false 54633 } 54634 }, 54635 typography: { 54636 fontSize: true, 54637 lineHeight: true, 54638 __experimentalFontFamily: true, 54639 __experimentalTextTransform: true, 54640 __experimentalTextDecoration: true, 54641 __experimentalFontStyle: true, 54642 __experimentalFontWeight: true, 54643 __experimentalLetterSpacing: true, 54644 __experimentalWritingMode: true, 54645 __experimentalDefaultControls: { 54646 fontSize: true 54647 } 54648 }, 54649 interactivity: { 54650 clientNavigation: true 54651 }, 54652 __experimentalBorder: { 54653 radius: true, 54654 color: true, 54655 width: true, 54656 style: true 54657 } 54658 }, 54659 editorStyle: "wp-block-site-title-editor", 54660 style: "wp-block-site-title" 54661 }; 54662 54663 54664 54665 const { 54666 name: site_title_name 54667 } = site_title_metadata; 54668 54669 const site_title_settings = { 54670 icon: map_marker, 54671 example: { 54672 viewportWidth: 350, 54673 attributes: { 54674 textAlign: 'center' 54675 } 54676 }, 54677 edit: SiteTitleEdit, 54678 transforms: site_title_transforms, 54679 deprecated: site_title_deprecated 54680 }; 54681 const site_title_init = () => initBlock({ 54682 name: site_title_name, 54683 metadata: site_title_metadata, 54684 settings: site_title_settings 54685 }); 54686 54687 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/share.js 54688 /** 54689 * WordPress dependencies 54690 */ 54691 54692 54693 const share = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54694 viewBox: "0 0 24 24", 54695 xmlns: "http://www.w3.org/2000/svg", 54696 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54697 d: "M9 11.8l6.1-4.5c.1.4.4.7.9.7h2c.6 0 1-.4 1-1V5c0-.6-.4-1-1-1h-2c-.6 0-1 .4-1 1v.4l-6.4 4.8c-.2-.1-.4-.2-.6-.2H6c-.6 0-1 .4-1 1v2c0 .6.4 1 1 1h2c.2 0 .4-.1.6-.2l6.4 4.8v.4c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-2c0-.6-.4-1-1-1h-2c-.5 0-.8.3-.9.7L9 12.2v-.4z" 54698 }) 54699 }); 54700 /* harmony default export */ const library_share = (share); 54701 54702 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/keyboard-return.js 54703 /** 54704 * WordPress dependencies 54705 */ 54706 54707 54708 const keyboardReturn = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54709 xmlns: "http://www.w3.org/2000/svg", 54710 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54711 d: "m6.734 16.106 2.176-2.38-1.093-1.028-3.846 4.158 3.846 4.158 1.093-1.028-2.176-2.38h2.811c1.125 0 2.25.03 3.374 0 1.428-.001 3.362-.25 4.963-1.277 1.66-1.065 2.868-2.906 2.868-5.859 0-2.479-1.327-4.896-3.65-5.93-1.82-.813-3.044-.8-4.806-.788l-.567.002v1.5c.184 0 .368 0 .553-.002 1.82-.007 2.704-.014 4.21.657 1.854.827 2.76 2.657 2.76 4.561 0 2.472-.973 3.824-2.178 4.596-1.258.807-2.864 1.04-4.163 1.04h-.02c-1.115.03-2.229 0-3.344 0H6.734Z" 54712 }) 54713 }); 54714 /* harmony default export */ const keyboard_return = (keyboardReturn); 54715 54716 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/wordpress.js 54717 /** 54718 * WordPress dependencies 54719 */ 54720 54721 54722 const WordPressIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54723 width: "24", 54724 height: "24", 54725 viewBox: "0 0 24 24", 54726 version: "1.1", 54727 xmlns: "http://www.w3.org/2000/svg", 54728 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54729 d: "M12.158,12.786L9.46,20.625c0.806,0.237,1.657,0.366,2.54,0.366c1.047,0,2.051-0.181,2.986-0.51 c-0.024-0.038-0.046-0.079-0.065-0.124L12.158,12.786z M3.009,12c0,3.559,2.068,6.634,5.067,8.092L3.788,8.341 C3.289,9.459,3.009,10.696,3.009,12z M18.069,11.546c0-1.112-0.399-1.881-0.741-2.48c-0.456-0.741-0.883-1.368-0.883-2.109 c0-0.826,0.627-1.596,1.51-1.596c0.04,0,0.078,0.005,0.116,0.007C16.472,3.904,14.34,3.009,12,3.009 c-3.141,0-5.904,1.612-7.512,4.052c0.211,0.007,0.41,0.011,0.579,0.011c0.94,0,2.396-0.114,2.396-0.114 C7.947,6.93,8.004,7.642,7.52,7.699c0,0-0.487,0.057-1.029,0.085l3.274,9.739l1.968-5.901l-1.401-3.838 C9.848,7.756,9.389,7.699,9.389,7.699C8.904,7.67,8.961,6.93,9.446,6.958c0,0,1.484,0.114,2.368,0.114 c0.94,0,2.397-0.114,2.397-0.114c0.485-0.028,0.542,0.684,0.057,0.741c0,0-0.488,0.057-1.029,0.085l3.249,9.665l0.897-2.996 C17.841,13.284,18.069,12.316,18.069,11.546z M19.889,7.686c0.039,0.286,0.06,0.593,0.06,0.924c0,0.912-0.171,1.938-0.684,3.22 l-2.746,7.94c2.673-1.558,4.47-4.454,4.47-7.771C20.991,10.436,20.591,8.967,19.889,7.686z M12,22C6.486,22,2,17.514,2,12 C2,6.486,6.486,2,12,2c5.514,0,10,4.486,10,10C22,17.514,17.514,22,12,22z" 54730 }) 54731 }); 54732 54733 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/fivehundredpx.js 54734 /** 54735 * WordPress dependencies 54736 */ 54737 54738 54739 const FivehundredpxIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54740 width: "24", 54741 height: "24", 54742 viewBox: "0 0 24 24", 54743 version: "1.1", 54744 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54745 d: "M6.94026,15.1412c.00437.01213.108.29862.168.44064a6.55008,6.55008,0,1,0,6.03191-9.09557,6.68654,6.68654,0,0,0-2.58357.51467A8.53914,8.53914,0,0,0,8.21268,8.61344L8.209,8.61725V3.22948l9.0504-.00008c.32934-.0036.32934-.46353.32934-.61466s0-.61091-.33035-.61467L7.47248,2a.43.43,0,0,0-.43131.42692v7.58355c0,.24466.30476.42131.58793.4819.553.11812.68074-.05864.81617-.2457l.018-.02481A10.52673,10.52673,0,0,1,9.32258,9.258a5.35268,5.35268,0,1,1,7.58985,7.54976,5.417,5.417,0,0,1-3.80867,1.56365,5.17483,5.17483,0,0,1-2.69822-.74478l.00342-4.61111a2.79372,2.79372,0,0,1,.71372-1.78792,2.61611,2.61611,0,0,1,1.98282-.89477,2.75683,2.75683,0,0,1,1.95525.79477,2.66867,2.66867,0,0,1,.79656,1.909,2.724,2.724,0,0,1-2.75849,2.748,4.94651,4.94651,0,0,1-.86254-.13719c-.31234-.093-.44519.34058-.48892.48349-.16811.54966.08453.65862.13687.67489a3.75751,3.75751,0,0,0,1.25234.18375,3.94634,3.94634,0,1,0-2.82444-6.742,3.67478,3.67478,0,0,0-1.13028,2.584l-.00041.02323c-.0035.11667-.00579,2.881-.00644,3.78811l-.00407-.00451a6.18521,6.18521,0,0,1-1.0851-1.86092c-.10544-.27856-.34358-.22925-.66857-.12917-.14192.04372-.57386.17677-.47833.489Zm4.65165-1.08338a.51346.51346,0,0,0,.19513.31818l.02276.022a.52945.52945,0,0,0,.3517.18416.24242.24242,0,0,0,.16577-.0611c.05473-.05082.67382-.67812.73287-.738l.69041.68819a.28978.28978,0,0,0,.21437.11032.53239.53239,0,0,0,.35708-.19486c.29792-.30419.14885-.46821.07676-.54751l-.69954-.69975.72952-.73469c.16-.17311.01874-.35708-.12218-.498-.20461-.20461-.402-.25742-.52855-.14083l-.7254.72665-.73354-.73375a.20128.20128,0,0,0-.14179-.05695.54135.54135,0,0,0-.34379.19648c-.22561.22555-.274.38149-.15656.5059l.73374.7315-.72942.73072A.26589.26589,0,0,0,11.59191,14.05782Zm1.59866-9.915A8.86081,8.86081,0,0,0,9.854,4.776a.26169.26169,0,0,0-.16938.22759.92978.92978,0,0,0,.08619.42094c.05682.14524.20779.531.50006.41955a8.40969,8.40969,0,0,1,2.91968-.55484,7.87875,7.87875,0,0,1,3.086.62286,8.61817,8.61817,0,0,1,2.30562,1.49315.2781.2781,0,0,0,.18318.07586c.15529,0,.30425-.15253.43167-.29551.21268-.23861.35873-.4369.1492-.63538a8.50425,8.50425,0,0,0-2.62312-1.694A9.0177,9.0177,0,0,0,13.19058,4.14283ZM19.50945,18.6236h0a.93171.93171,0,0,0-.36642-.25406.26589.26589,0,0,0-.27613.06613l-.06943.06929A7.90606,7.90606,0,0,1,7.60639,18.505a7.57284,7.57284,0,0,1-1.696-2.51537,8.58715,8.58715,0,0,1-.5147-1.77754l-.00871-.04864c-.04939-.25873-.28755-.27684-.62981-.22448-.14234.02178-.5755.088-.53426.39969l.001.00712a9.08807,9.08807,0,0,0,15.406,4.99094c.00193-.00192.04753-.04718.0725-.07436C19.79425,19.16234,19.87422,18.98728,19.50945,18.6236Z" 54746 }) 54747 }); 54748 54749 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/amazon.js 54750 /** 54751 * WordPress dependencies 54752 */ 54753 54754 54755 const AmazonIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54756 width: "24", 54757 height: "24", 54758 viewBox: "0 0 24 24", 54759 version: "1.1", 54760 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54761 d: "M13.582,8.182C11.934,8.367,9.78,8.49,8.238,9.166c-1.781,0.769-3.03,2.337-3.03,4.644 c0,2.953,1.86,4.429,4.253,4.429c2.02,0,3.125-0.477,4.685-2.065c0.516,0.747,0.685,1.109,1.629,1.894 c0.212,0.114,0.483,0.103,0.672-0.066l0.006,0.006c0.567-0.505,1.599-1.401,2.18-1.888c0.231-0.188,0.19-0.496,0.009-0.754 c-0.52-0.718-1.072-1.303-1.072-2.634V8.305c0-1.876,0.133-3.599-1.249-4.891C15.23,2.369,13.422,2,12.04,2 C9.336,2,6.318,3.01,5.686,6.351C5.618,6.706,5.877,6.893,6.109,6.945l2.754,0.298C9.121,7.23,9.308,6.977,9.357,6.72 c0.236-1.151,1.2-1.706,2.284-1.706c0.584,0,1.249,0.215,1.595,0.738c0.398,0.584,0.346,1.384,0.346,2.061V8.182z M13.049,14.088 c-0.451,0.8-1.169,1.291-1.967,1.291c-1.09,0-1.728-0.83-1.728-2.061c0-2.42,2.171-2.86,4.227-2.86v0.615 C13.582,12.181,13.608,13.104,13.049,14.088z M20.683,19.339C18.329,21.076,14.917,22,11.979,22c-4.118,0-7.826-1.522-10.632-4.057 c-0.22-0.199-0.024-0.471,0.241-0.317c3.027,1.762,6.771,2.823,10.639,2.823c2.608,0,5.476-0.541,8.115-1.66 C20.739,18.62,21.072,19.051,20.683,19.339z M21.336,21.043c-0.194,0.163-0.379,0.076-0.293-0.139 c0.284-0.71,0.92-2.298,0.619-2.684c-0.301-0.386-1.99-0.183-2.749-0.092c-0.23,0.027-0.266-0.173-0.059-0.319 c1.348-0.946,3.555-0.673,3.811-0.356C22.925,17.773,22.599,19.986,21.336,21.043z" 54762 }) 54763 }); 54764 54765 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/bandcamp.js 54766 /** 54767 * WordPress dependencies 54768 */ 54769 54770 54771 54772 const BandcampIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54773 width: "24", 54774 height: "24", 54775 viewBox: "0 0 24 24", 54776 version: "1.1", 54777 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54778 d: "M15.27 17.289 3 17.289 8.73 6.711 21 6.711 15.27 17.289" 54779 }) 54780 }); 54781 54782 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/behance.js 54783 /** 54784 * WordPress dependencies 54785 */ 54786 54787 54788 const BehanceIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54789 width: "24", 54790 height: "24", 54791 viewBox: "0 0 24 24", 54792 version: "1.1", 54793 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54794 d: "M7.799,5.698c0.589,0,1.12,0.051,1.606,0.156c0.482,0.102,0.894,0.273,1.241,0.507c0.344,0.235,0.612,0.546,0.804,0.938 c0.188,0.387,0.281,0.871,0.281,1.443c0,0.619-0.141,1.137-0.421,1.551c-0.284,0.413-0.7,0.751-1.255,1.014 c0.756,0.218,1.317,0.601,1.689,1.146c0.374,0.549,0.557,1.205,0.557,1.975c0,0.623-0.12,1.161-0.359,1.612 c-0.241,0.457-0.569,0.828-0.973,1.114c-0.408,0.288-0.876,0.5-1.399,0.637C9.052,17.931,8.514,18,7.963,18H2V5.698H7.799 M7.449,10.668c0.481,0,0.878-0.114,1.192-0.345c0.311-0.228,0.463-0.603,0.463-1.119c0-0.286-0.051-0.523-0.152-0.707 C8.848,8.315,8.711,8.171,8.536,8.07C8.362,7.966,8.166,7.894,7.94,7.854c-0.224-0.044-0.457-0.06-0.697-0.06H4.709v2.874H7.449z M7.6,15.905c0.267,0,0.521-0.024,0.759-0.077c0.243-0.053,0.457-0.137,0.637-0.261c0.182-0.12,0.332-0.283,0.441-0.491 C9.547,14.87,9.6,14.602,9.6,14.278c0-0.633-0.18-1.084-0.533-1.357c-0.356-0.27-0.83-0.404-1.413-0.404H4.709v3.388L7.6,15.905z M16.162,15.864c0.367,0.358,0.897,0.538,1.583,0.538c0.493,0,0.92-0.125,1.277-0.374c0.354-0.248,0.571-0.514,0.654-0.79h2.155 c-0.347,1.072-0.872,1.838-1.589,2.299C19.534,18,18.67,18.23,17.662,18.23c-0.701,0-1.332-0.113-1.899-0.337 c-0.567-0.227-1.041-0.544-1.439-0.958c-0.389-0.415-0.689-0.907-0.904-1.484c-0.213-0.574-0.32-1.21-0.32-1.899 c0-0.666,0.11-1.288,0.329-1.863c0.222-0.577,0.529-1.075,0.933-1.492c0.406-0.42,0.885-0.751,1.444-0.994 c0.558-0.241,1.175-0.363,1.857-0.363c0.754,0,1.414,0.145,1.98,0.44c0.563,0.291,1.026,0.686,1.389,1.181 c0.363,0.493,0.622,1.057,0.783,1.69c0.16,0.632,0.217,1.292,0.171,1.983h-6.428C15.557,14.84,15.795,15.506,16.162,15.864 M18.973,11.184c-0.291-0.321-0.783-0.496-1.384-0.496c-0.39,0-0.714,0.066-0.973,0.2c-0.254,0.132-0.461,0.297-0.621,0.491 c-0.157,0.197-0.265,0.405-0.328,0.628c-0.063,0.217-0.101,0.413-0.111,0.587h3.98C19.478,11.969,19.265,11.509,18.973,11.184z M15.057,7.738h4.985V6.524h-4.985L15.057,7.738z" 54795 }) 54796 }); 54797 54798 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/bluesky.js 54799 /** 54800 * WordPress dependencies 54801 */ 54802 54803 54804 const BlueskyIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54805 width: "24", 54806 height: "24", 54807 viewBox: "0 0 24 24", 54808 version: "1.1", 54809 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54810 d: "M6.3,4.2c2.3,1.7,4.8,5.3,5.7,7.2.9-1.9,3.4-5.4,5.7-7.2,1.7-1.3,4.3-2.2,4.3.9s-.4,5.2-.6,5.9c-.7,2.6-3.3,3.2-5.6,2.8,4,.7,5.1,3,2.9,5.3-5,5.2-6.7-2.8-6.7-2.8,0,0-1.7,8-6.7,2.8-2.2-2.3-1.2-4.6,2.9-5.3-2.3.4-4.9-.3-5.6-2.8-.2-.7-.6-5.3-.6-5.9,0-3.1,2.7-2.1,4.3-.9h0Z" 54811 }) 54812 }); 54813 54814 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/chain.js 54815 /** 54816 * WordPress dependencies 54817 */ 54818 54819 54820 const ChainIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54821 width: "24", 54822 height: "24", 54823 viewBox: "0 0 24 24", 54824 version: "1.1", 54825 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54826 d: "M15.6 7.2H14v1.5h1.6c2 0 3.7 1.7 3.7 3.7s-1.7 3.7-3.7 3.7H14v1.5h1.6c2.8 0 5.2-2.3 5.2-5.2 0-2.9-2.3-5.2-5.2-5.2zM4.7 12.4c0-2 1.7-3.7 3.7-3.7H10V7.2H8.4c-2.9 0-5.2 2.3-5.2 5.2 0 2.9 2.3 5.2 5.2 5.2H10v-1.5H8.4c-2 0-3.7-1.7-3.7-3.7zm4.6.9h5.3v-1.5H9.3v1.5z" 54827 }) 54828 }); 54829 54830 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/codepen.js 54831 /** 54832 * WordPress dependencies 54833 */ 54834 54835 54836 const CodepenIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54837 width: "24", 54838 height: "24", 54839 viewBox: "0 0 24 24", 54840 version: "1.1", 54841 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54842 d: "M22.016,8.84c-0.002-0.013-0.005-0.025-0.007-0.037c-0.005-0.025-0.008-0.048-0.015-0.072 c-0.003-0.015-0.01-0.028-0.013-0.042c-0.008-0.02-0.015-0.04-0.023-0.062c-0.007-0.015-0.013-0.028-0.02-0.042 c-0.008-0.02-0.018-0.037-0.03-0.057c-0.007-0.013-0.017-0.027-0.025-0.038c-0.012-0.018-0.023-0.035-0.035-0.052 c-0.01-0.013-0.02-0.025-0.03-0.037c-0.015-0.017-0.028-0.032-0.043-0.045c-0.01-0.012-0.022-0.023-0.035-0.035 c-0.015-0.015-0.032-0.028-0.048-0.04c-0.012-0.01-0.025-0.02-0.037-0.03c-0.005-0.003-0.01-0.008-0.015-0.012l-9.161-6.096 c-0.289-0.192-0.666-0.192-0.955,0L2.359,8.237C2.354,8.24,2.349,8.245,2.344,8.249L2.306,8.277 c-0.017,0.013-0.033,0.027-0.048,0.04C2.246,8.331,2.234,8.342,2.222,8.352c-0.015,0.015-0.028,0.03-0.042,0.047 c-0.012,0.013-0.022,0.023-0.03,0.037C2.139,8.453,2.125,8.471,2.115,8.488C2.107,8.501,2.099,8.514,2.09,8.526 C2.079,8.548,2.069,8.565,2.06,8.585C2.054,8.6,2.047,8.613,2.04,8.626C2.032,8.648,2.025,8.67,2.019,8.69 c-0.005,0.013-0.01,0.027-0.013,0.042C1.999,8.755,1.995,8.778,1.99,8.803C1.989,8.817,1.985,8.828,1.984,8.84 C1.978,8.879,1.975,8.915,1.975,8.954v6.093c0,0.037,0.003,0.075,0.008,0.112c0.002,0.012,0.005,0.025,0.007,0.038 c0.005,0.023,0.008,0.047,0.015,0.072c0.003,0.015,0.008,0.028,0.013,0.04c0.007,0.022,0.013,0.042,0.022,0.063 c0.007,0.015,0.013,0.028,0.02,0.04c0.008,0.02,0.018,0.038,0.03,0.058c0.007,0.013,0.015,0.027,0.025,0.038 c0.012,0.018,0.023,0.035,0.035,0.052c0.01,0.013,0.02,0.025,0.03,0.037c0.013,0.015,0.028,0.032,0.042,0.045 c0.012,0.012,0.023,0.023,0.035,0.035c0.015,0.013,0.032,0.028,0.048,0.04l0.038,0.03c0.005,0.003,0.01,0.007,0.013,0.01 l9.163,6.095C11.668,21.953,11.833,22,12,22c0.167,0,0.332-0.047,0.478-0.144l9.163-6.095l0.015-0.01 c0.013-0.01,0.027-0.02,0.037-0.03c0.018-0.013,0.035-0.028,0.048-0.04c0.013-0.012,0.025-0.023,0.035-0.035 c0.017-0.015,0.03-0.032,0.043-0.045c0.01-0.013,0.02-0.025,0.03-0.037c0.013-0.018,0.025-0.035,0.035-0.052 c0.008-0.013,0.018-0.027,0.025-0.038c0.012-0.02,0.022-0.038,0.03-0.058c0.007-0.013,0.013-0.027,0.02-0.04 c0.008-0.022,0.015-0.042,0.023-0.063c0.003-0.013,0.01-0.027,0.013-0.04c0.007-0.025,0.01-0.048,0.015-0.072 c0.002-0.013,0.005-0.027,0.007-0.037c0.003-0.042,0.007-0.079,0.007-0.117V8.954C22.025,8.915,22.022,8.879,22.016,8.84z M12.862,4.464l6.751,4.49l-3.016,2.013l-3.735-2.492V4.464z M11.138,4.464v4.009l-3.735,2.494L4.389,8.954L11.138,4.464z M3.699,10.562L5.853,12l-2.155,1.438V10.562z M11.138,19.536l-6.749-4.491l3.015-2.011l3.735,2.492V19.536z M12,14.035L8.953,12 L12,9.966L15.047,12L12,14.035z M12.862,19.536v-4.009l3.735-2.492l3.016,2.011L12.862,19.536z M20.303,13.438L18.147,12 l2.156-1.438L20.303,13.438z" 54843 }) 54844 }); 54845 54846 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/deviantart.js 54847 /** 54848 * WordPress dependencies 54849 */ 54850 54851 54852 const DeviantArtIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54853 width: "24", 54854 height: "24", 54855 viewBox: "0 0 24 24", 54856 version: "1.1", 54857 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54858 d: "M 18.19 5.636 18.19 2 18.188 2 14.553 2 14.19 2.366 12.474 5.636 11.935 6 5.81 6 5.81 10.994 9.177 10.994 9.477 11.357 5.81 18.363 5.81 22 5.811 22 9.447 22 9.81 21.634 11.526 18.364 12.065 18 18.19 18 18.19 13.006 14.823 13.006 14.523 12.641 18.19 5.636z" 54859 }) 54860 }); 54861 54862 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/dribbble.js 54863 /** 54864 * WordPress dependencies 54865 */ 54866 54867 54868 const DribbbleIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54869 width: "24", 54870 height: "24", 54871 viewBox: "0 0 24 24", 54872 version: "1.1", 54873 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54874 d: "M12,22C6.486,22,2,17.514,2,12S6.486,2,12,2c5.514,0,10,4.486,10,10S17.514,22,12,22z M20.434,13.369 c-0.292-0.092-2.644-0.794-5.32-0.365c1.117,3.07,1.572,5.57,1.659,6.09C18.689,17.798,20.053,15.745,20.434,13.369z M15.336,19.876c-0.127-0.749-0.623-3.361-1.822-6.477c-0.019,0.006-0.038,0.013-0.056,0.019c-4.818,1.679-6.547,5.02-6.701,5.334 c1.448,1.129,3.268,1.803,5.243,1.803C13.183,20.555,14.311,20.313,15.336,19.876z M5.654,17.724 c0.193-0.331,2.538-4.213,6.943-5.637c0.111-0.036,0.224-0.07,0.337-0.102c-0.214-0.485-0.448-0.971-0.692-1.45 c-4.266,1.277-8.405,1.223-8.778,1.216c-0.003,0.087-0.004,0.174-0.004,0.261C3.458,14.207,4.29,16.21,5.654,17.724z M3.639,10.264 c0.382,0.005,3.901,0.02,7.897-1.041c-1.415-2.516-2.942-4.631-3.167-4.94C5.979,5.41,4.193,7.613,3.639,10.264z M9.998,3.709 c0.236,0.316,1.787,2.429,3.187,5c3.037-1.138,4.323-2.867,4.477-3.085C16.154,4.286,14.17,3.471,12,3.471 C11.311,3.471,10.641,3.554,9.998,3.709z M18.612,6.612C18.432,6.855,17,8.69,13.842,9.979c0.199,0.407,0.389,0.821,0.567,1.237 c0.063,0.148,0.124,0.295,0.184,0.441c2.842-0.357,5.666,0.215,5.948,0.275C20.522,9.916,19.801,8.065,18.612,6.612z" 54875 }) 54876 }); 54877 54878 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/dropbox.js 54879 /** 54880 * WordPress dependencies 54881 */ 54882 54883 54884 const DropboxIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54885 width: "24", 54886 height: "24", 54887 viewBox: "0 0 24 24", 54888 version: "1.1", 54889 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54890 d: "M12,6.134L6.069,9.797L2,6.54l5.883-3.843L12,6.134z M2,13.054l5.883,3.843L12,13.459L6.069,9.797L2,13.054z M12,13.459 l4.116,3.439L22,13.054l-4.069-3.257L12,13.459z M22,6.54l-5.884-3.843L12,6.134l5.931,3.663L22,6.54z M12.011,14.2l-4.129,3.426 l-1.767-1.153v1.291l5.896,3.539l5.897-3.539v-1.291l-1.769,1.153L12.011,14.2z" 54891 }) 54892 }); 54893 54894 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/etsy.js 54895 /** 54896 * WordPress dependencies 54897 */ 54898 54899 54900 const EtsyIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54901 width: "24", 54902 height: "24", 54903 viewBox: "0 0 24 24", 54904 version: "1.1", 54905 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54906 d: "M9.16033,4.038c0-.27174.02717-.43478.48913-.43478h6.22283c1.087,0,1.68478.92391,2.11957,2.663l.35326,1.38587h1.05978C19.59511,3.712,19.75815,2,19.75815,2s-2.663.29891-4.23913.29891h-7.962L3.29076,2.163v1.1413L4.731,3.57609c1.00543.19022,1.25.40761,1.33152,1.33152,0,0,.08152,2.71739.08152,7.20109s-.08152,7.17391-.08152,7.17391c0,.81522-.32609,1.11413-1.33152,1.30435l-1.44022.27174V22l4.2663-.13587h7.11957c1.60326,0,5.32609.13587,5.32609.13587.08152-.97826.625-5.40761.70652-5.89674H19.7038L18.644,18.52174c-.84239,1.90217-2.06522,2.038-3.42391,2.038H11.1712c-1.3587,0-2.01087-.54348-2.01087-1.712V12.65217s3.0163,0,3.99457.08152c.76087.05435,1.22283.27174,1.46739,1.33152l.32609,1.413h1.16848l-.08152-3.55978.163-3.587H15.02989l-.38043,1.57609c-.24457,1.03261-.40761,1.22283-1.46739,1.33152-1.38587.13587-4.02174.1087-4.02174.1087Z" 54907 }) 54908 }); 54909 54910 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/facebook.js 54911 /** 54912 * WordPress dependencies 54913 */ 54914 54915 54916 const FacebookIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54917 width: "24", 54918 height: "24", 54919 viewBox: "0 0 24 24", 54920 version: "1.1", 54921 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54922 d: "M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z" 54923 }) 54924 }); 54925 54926 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/feed.js 54927 /** 54928 * WordPress dependencies 54929 */ 54930 54931 54932 const FeedIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54933 width: "24", 54934 height: "24", 54935 viewBox: "0 0 24 24", 54936 version: "1.1", 54937 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54938 d: "M2,8.667V12c5.515,0,10,4.485,10,10h3.333C15.333,14.637,9.363,8.667,2,8.667z M2,2v3.333 c9.19,0,16.667,7.477,16.667,16.667H22C22,10.955,13.045,2,2,2z M4.5,17C3.118,17,2,18.12,2,19.5S3.118,22,4.5,22S7,20.88,7,19.5 S5.882,17,4.5,17z" 54939 }) 54940 }); 54941 54942 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/flickr.js 54943 /** 54944 * WordPress dependencies 54945 */ 54946 54947 54948 const FlickrIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54949 width: "24", 54950 height: "24", 54951 viewBox: "0 0 24 24", 54952 version: "1.1", 54953 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54954 d: "M6.5,7c-2.75,0-5,2.25-5,5s2.25,5,5,5s5-2.25,5-5S9.25,7,6.5,7z M17.5,7c-2.75,0-5,2.25-5,5s2.25,5,5,5s5-2.25,5-5 S20.25,7,17.5,7z" 54955 }) 54956 }); 54957 54958 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/foursquare.js 54959 /** 54960 * WordPress dependencies 54961 */ 54962 54963 54964 const FoursquareIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54965 width: "24", 54966 height: "24", 54967 viewBox: "0 0 24 24", 54968 version: "1.1", 54969 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54970 d: "M17.573,2c0,0-9.197,0-10.668,0S5,3.107,5,3.805s0,16.948,0,16.948c0,0.785,0.422,1.077,0.66,1.172 c0.238,0.097,0.892,0.177,1.285-0.275c0,0,5.035-5.843,5.122-5.93c0.132-0.132,0.132-0.132,0.262-0.132h3.26 c1.368,0,1.588-0.977,1.732-1.552c0.078-0.318,0.692-3.428,1.225-6.122l0.675-3.368C19.56,2.893,19.14,2,17.573,2z M16.495,7.22 c-0.053,0.252-0.372,0.518-0.665,0.518c-0.293,0-4.157,0-4.157,0c-0.467,0-0.802,0.318-0.802,0.787v0.508 c0,0.467,0.337,0.798,0.805,0.798c0,0,3.197,0,3.528,0s0.655,0.362,0.583,0.715c-0.072,0.353-0.407,2.102-0.448,2.295 c-0.04,0.193-0.262,0.523-0.655,0.523c-0.33,0-2.88,0-2.88,0c-0.523,0-0.683,0.068-1.033,0.503 c-0.35,0.437-3.505,4.223-3.505,4.223c-0.032,0.035-0.063,0.027-0.063-0.015V4.852c0-0.298,0.26-0.648,0.648-0.648 c0,0,8.228,0,8.562,0c0.315,0,0.61,0.297,0.528,0.683L16.495,7.22z" 54971 }) 54972 }); 54973 54974 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/goodreads.js 54975 /** 54976 * WordPress dependencies 54977 */ 54978 54979 54980 const GoodreadsIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54981 width: "24", 54982 height: "24", 54983 viewBox: "0 0 24 24", 54984 version: "1.1", 54985 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 54986 d: "M17.3,17.5c-0.2,0.8-0.5,1.4-1,1.9c-0.4,0.5-1,0.9-1.7,1.2C13.9,20.9,13.1,21,12,21c-0.6,0-1.3-0.1-1.9-0.2 c-0.6-0.1-1.1-0.4-1.6-0.7c-0.5-0.3-0.9-0.7-1.2-1.2c-0.3-0.5-0.5-1.1-0.5-1.7h1.5c0.1,0.5,0.2,0.9,0.5,1.2 c0.2,0.3,0.5,0.6,0.9,0.8c0.3,0.2,0.7,0.3,1.1,0.4c0.4,0.1,0.8,0.1,1.2,0.1c1.4,0,2.5-0.4,3.1-1.2c0.6-0.8,1-2,1-3.5v-1.7h0 c-0.4,0.8-0.9,1.4-1.6,1.9c-0.7,0.5-1.5,0.7-2.4,0.7c-1,0-1.9-0.2-2.6-0.5C8.7,15,8.1,14.5,7.7,14c-0.5-0.6-0.8-1.3-1-2.1 c-0.2-0.8-0.3-1.6-0.3-2.5c0-0.9,0.1-1.7,0.4-2.5c0.3-0.8,0.6-1.5,1.1-2c0.5-0.6,1.1-1,1.8-1.4C10.3,3.2,11.1,3,12,3 c0.5,0,0.9,0.1,1.3,0.2c0.4,0.1,0.8,0.3,1.1,0.5c0.3,0.2,0.6,0.5,0.9,0.8c0.3,0.3,0.5,0.6,0.6,1h0V3.4h1.5V15 C17.6,15.9,17.5,16.7,17.3,17.5z M13.8,14.1c0.5-0.3,0.9-0.7,1.3-1.1c0.3-0.5,0.6-1,0.8-1.6c0.2-0.6,0.3-1.2,0.3-1.9 c0-0.6-0.1-1.2-0.2-1.9c-0.1-0.6-0.4-1.2-0.7-1.7c-0.3-0.5-0.7-0.9-1.3-1.2c-0.5-0.3-1.1-0.5-1.9-0.5s-1.4,0.2-1.9,0.5 c-0.5,0.3-1,0.7-1.3,1.2C8.5,6.4,8.3,7,8.1,7.6C8,8.2,7.9,8.9,7.9,9.5c0,0.6,0.1,1.3,0.2,1.9C8.3,12,8.6,12.5,8.9,13 c0.3,0.5,0.8,0.8,1.3,1.1c0.5,0.3,1.1,0.4,1.9,0.4C12.7,14.5,13.3,14.4,13.8,14.1z" 54987 }) 54988 }); 54989 54990 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/google.js 54991 /** 54992 * WordPress dependencies 54993 */ 54994 54995 54996 const GoogleIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 54997 width: "24", 54998 height: "24", 54999 viewBox: "0 0 24 24", 55000 version: "1.1", 55001 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55002 d: "M12.02,10.18v3.72v0.01h5.51c-0.26,1.57-1.67,4.22-5.5,4.22c-3.31,0-6.01-2.75-6.01-6.12s2.7-6.12,6.01-6.12 c1.87,0,3.13,0.8,3.85,1.48l2.84-2.76C16.99,2.99,14.73,2,12.03,2c-5.52,0-10,4.48-10,10s4.48,10,10,10c5.77,0,9.6-4.06,9.6-9.77 c0-0.83-0.11-1.42-0.25-2.05H12.02z" 55003 }) 55004 }); 55005 55006 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/github.js 55007 /** 55008 * WordPress dependencies 55009 */ 55010 55011 55012 const GitHubIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55013 width: "24", 55014 height: "24", 55015 viewBox: "0 0 24 24", 55016 version: "1.1", 55017 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55018 d: "M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z" 55019 }) 55020 }); 55021 55022 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/gravatar.js 55023 /** 55024 * WordPress dependencies 55025 */ 55026 55027 55028 const GravatarIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55029 width: "24", 55030 height: "24", 55031 viewBox: "0 0 24 24", 55032 version: "1.1", 55033 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55034 d: "M10.8001 4.69937V10.6494C10.8001 11.1001 10.9791 11.5323 11.2978 11.851C11.6165 12.1697 12.0487 12.3487 12.4994 12.3487C12.9501 12.3487 13.3824 12.1697 13.7011 11.851C14.0198 11.5323 14.1988 11.1001 14.1988 10.6494V6.69089C15.2418 7.05861 16.1371 7.75537 16.7496 8.67617C17.3622 9.59698 17.6589 10.6919 17.595 11.796C17.5311 12.9001 17.1101 13.9535 16.3954 14.7975C15.6807 15.6415 14.711 16.2303 13.6325 16.4753C12.5541 16.7202 11.4252 16.608 10.4161 16.1555C9.40691 15.703 8.57217 14.9348 8.03763 13.9667C7.50308 12.9985 7.29769 11.8828 7.45242 10.7877C7.60714 9.69266 8.11359 8.67755 8.89545 7.89537C9.20904 7.57521 9.38364 7.14426 9.38132 6.69611C9.37899 6.24797 9.19994 5.81884 8.88305 5.50195C8.56616 5.18506 8.13704 5.00601 7.68889 5.00369C7.24075 5.00137 6.80979 5.17597 6.48964 5.48956C5.09907 6.8801 4.23369 8.7098 4.04094 10.6669C3.84819 12.624 4.34 14.5873 5.43257 16.2224C6.52515 17.8575 8.15088 19.0632 10.0328 19.634C11.9146 20.2049 13.9362 20.1055 15.753 19.3529C17.5699 18.6003 19.0695 17.241 19.9965 15.5066C20.9234 13.7722 21.2203 11.7701 20.8366 9.84133C20.4528 7.91259 19.4122 6.17658 17.892 4.92911C16.3717 3.68163 14.466 2.99987 12.4994 3C12.0487 3 11.6165 3.17904 11.2978 3.49773C10.9791 3.81643 10.8001 4.24867 10.8001 4.69937Z" 55035 }) 55036 }); 55037 55038 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/instagram.js 55039 /** 55040 * WordPress dependencies 55041 */ 55042 55043 55044 const InstagramIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55045 width: "24", 55046 height: "24", 55047 viewBox: "0 0 24 24", 55048 version: "1.1", 55049 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55050 d: "M12,4.622c2.403,0,2.688,0.009,3.637,0.052c0.877,0.04,1.354,0.187,1.671,0.31c0.42,0.163,0.72,0.358,1.035,0.673 c0.315,0.315,0.51,0.615,0.673,1.035c0.123,0.317,0.27,0.794,0.31,1.671c0.043,0.949,0.052,1.234,0.052,3.637 s-0.009,2.688-0.052,3.637c-0.04,0.877-0.187,1.354-0.31,1.671c-0.163,0.42-0.358,0.72-0.673,1.035 c-0.315,0.315-0.615,0.51-1.035,0.673c-0.317,0.123-0.794,0.27-1.671,0.31c-0.949,0.043-1.233,0.052-3.637,0.052 s-2.688-0.009-3.637-0.052c-0.877-0.04-1.354-0.187-1.671-0.31c-0.42-0.163-0.72-0.358-1.035-0.673 c-0.315-0.315-0.51-0.615-0.673-1.035c-0.123-0.317-0.27-0.794-0.31-1.671C4.631,14.688,4.622,14.403,4.622,12 s0.009-2.688,0.052-3.637c0.04-0.877,0.187-1.354,0.31-1.671c0.163-0.42,0.358-0.72,0.673-1.035 c0.315-0.315,0.615-0.51,1.035-0.673c0.317-0.123,0.794-0.27,1.671-0.31C9.312,4.631,9.597,4.622,12,4.622 M12,3 C9.556,3,9.249,3.01,8.289,3.054C7.331,3.098,6.677,3.25,6.105,3.472C5.513,3.702,5.011,4.01,4.511,4.511 c-0.5,0.5-0.808,1.002-1.038,1.594C3.25,6.677,3.098,7.331,3.054,8.289C3.01,9.249,3,9.556,3,12c0,2.444,0.01,2.751,0.054,3.711 c0.044,0.958,0.196,1.612,0.418,2.185c0.23,0.592,0.538,1.094,1.038,1.594c0.5,0.5,1.002,0.808,1.594,1.038 c0.572,0.222,1.227,0.375,2.185,0.418C9.249,20.99,9.556,21,12,21s2.751-0.01,3.711-0.054c0.958-0.044,1.612-0.196,2.185-0.418 c0.592-0.23,1.094-0.538,1.594-1.038c0.5-0.5,0.808-1.002,1.038-1.594c0.222-0.572,0.375-1.227,0.418-2.185 C20.99,14.751,21,14.444,21,12s-0.01-2.751-0.054-3.711c-0.044-0.958-0.196-1.612-0.418-2.185c-0.23-0.592-0.538-1.094-1.038-1.594 c-0.5-0.5-1.002-0.808-1.594-1.038c-0.572-0.222-1.227-0.375-2.185-0.418C14.751,3.01,14.444,3,12,3L12,3z M12,7.378 c-2.552,0-4.622,2.069-4.622,4.622S9.448,16.622,12,16.622s4.622-2.069,4.622-4.622S14.552,7.378,12,7.378z M12,15 c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3S13.657,15,12,15z M16.804,6.116c-0.596,0-1.08,0.484-1.08,1.08 s0.484,1.08,1.08,1.08c0.596,0,1.08-0.484,1.08-1.08S17.401,6.116,16.804,6.116z" 55051 }) 55052 }); 55053 55054 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/lastfm.js 55055 /** 55056 * WordPress dependencies 55057 */ 55058 55059 55060 const LastfmIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55061 width: "24", 55062 height: "24", 55063 viewBox: "0 0 24 24", 55064 version: "1.1", 55065 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55066 d: "M 12.0002 1.5 C 6.2006 1.5 1.5 6.2011 1.5 11.9998 C 1.5 17.799 6.2006 22.5 12.0002 22.5 C 17.799 22.5 22.5 17.799 22.5 11.9998 C 22.5 6.2011 17.799 1.5 12.0002 1.5 Z M 16.1974 16.2204 C 14.8164 16.2152 13.9346 15.587 13.3345 14.1859 L 13.1816 13.8451 L 11.8541 10.8101 C 11.4271 9.7688 10.3526 9.0712 9.1801 9.0712 C 7.5695 9.0712 6.2593 10.3851 6.2593 12.001 C 6.2593 13.6165 7.5695 14.9303 9.1801 14.9303 C 10.272 14.9303 11.2651 14.3275 11.772 13.3567 C 11.7893 13.3235 11.8239 13.302 11.863 13.3038 C 11.9007 13.3054 11.9353 13.3288 11.9504 13.3632 L 12.4865 14.6046 C 12.5016 14.639 12.4956 14.6778 12.4723 14.7069 C 11.6605 15.6995 10.4602 16.2683 9.1801 16.2683 C 6.8331 16.2683 4.9234 14.3536 4.9234 12.001 C 4.9234 9.6468 6.833 7.732 9.1801 7.732 C 10.9572 7.732 12.3909 8.6907 13.1138 10.3636 C 13.1206 10.3802 13.8412 12.0708 14.4744 13.5191 C 14.8486 14.374 15.1462 14.896 16.1288 14.9292 C 17.0663 14.9613 17.7538 14.4122 17.7538 13.6485 C 17.7538 12.9691 17.3321 12.8004 16.3803 12.4822 C 14.7365 11.9398 13.845 11.3861 13.845 10.0182 C 13.845 8.6809 14.7667 7.8162 16.192 7.8162 C 17.1288 7.8162 17.8155 8.2287 18.2921 9.0768 C 18.305 9.1006 18.3079 9.1281 18.3004 9.1542 C 18.2929 9.1803 18.2748 9.2021 18.2507 9.2138 L 17.3614 9.669 C 17.3178 9.692 17.2643 9.6781 17.2356 9.6385 C 16.9329 9.2135 16.5956 9.0251 16.1423 9.0251 C 15.5512 9.0251 15.122 9.429 15.122 9.9865 C 15.122 10.6738 15.6529 10.8414 16.5339 11.1192 C 16.6491 11.1558 16.7696 11.194 16.8939 11.2343 C 18.2763 11.6865 19.0768 12.2311 19.0768 13.6836 C 19.0769 15.1297 17.8389 16.2204 16.1974 16.2204 Z" 55067 }) 55068 }); 55069 55070 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/linkedin.js 55071 /** 55072 * WordPress dependencies 55073 */ 55074 55075 55076 const LinkedInIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55077 width: "24", 55078 height: "24", 55079 viewBox: "0 0 24 24", 55080 version: "1.1", 55081 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55082 d: "M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z" 55083 }) 55084 }); 55085 55086 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/mail.js 55087 /** 55088 * WordPress dependencies 55089 */ 55090 55091 55092 const MailIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55093 width: "24", 55094 height: "24", 55095 viewBox: "0 0 24 24", 55096 version: "1.1", 55097 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55098 d: "M19 5H5c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm.5 12c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V9.8l7.5 5.6 7.5-5.6V17zm0-9.1L12 13.6 4.5 7.9V7c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v.9z" 55099 }) 55100 }); 55101 55102 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/mastodon.js 55103 /** 55104 * WordPress dependencies 55105 */ 55106 55107 55108 const MastodonIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55109 width: "24", 55110 height: "24", 55111 viewBox: "0 0 24 24", 55112 version: "1.1", 55113 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55114 d: "M23.193 7.879c0-5.206-3.411-6.732-3.411-6.732C18.062.357 15.108.025 12.041 0h-.076c-3.068.025-6.02.357-7.74 1.147 0 0-3.411 1.526-3.411 6.732 0 1.192-.023 2.618.015 4.129.124 5.092.934 10.109 5.641 11.355 2.17.574 4.034.695 5.535.612 2.722-.15 4.25-.972 4.25-.972l-.09-1.975s-1.945.613-4.129.539c-2.165-.074-4.449-.233-4.799-2.891a5.499 5.499 0 0 1-.048-.745s2.125.52 4.817.643c1.646.075 3.19-.097 4.758-.283 3.007-.359 5.625-2.212 5.954-3.905.517-2.665.475-6.507.475-6.507zm-4.024 6.709h-2.497V8.469c0-1.29-.543-1.944-1.628-1.944-1.2 0-1.802.776-1.802 2.312v3.349h-2.483v-3.35c0-1.536-.602-2.312-1.802-2.312-1.085 0-1.628.655-1.628 1.944v6.119H4.832V8.284c0-1.289.328-2.313.987-3.07.68-.758 1.569-1.146 2.674-1.146 1.278 0 2.246.491 2.886 1.474L12 6.585l.622-1.043c.64-.983 1.608-1.474 2.886-1.474 1.104 0 1.994.388 2.674 1.146.658.757.986 1.781.986 3.07v6.304z" 55115 }) 55116 }); 55117 55118 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/meetup.js 55119 /** 55120 * WordPress dependencies 55121 */ 55122 55123 55124 const MeetupIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55125 width: "24", 55126 height: "24", 55127 viewBox: "0 0 24 24", 55128 version: "1.1", 55129 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55130 d: "M19.24775,14.722a3.57032,3.57032,0,0,1-2.94457,3.52073,3.61886,3.61886,0,0,1-.64652.05634c-.07314-.0008-.10187.02846-.12507.09547A2.38881,2.38881,0,0,1,13.49453,20.094a2.33092,2.33092,0,0,1-1.827-.50716.13635.13635,0,0,0-.19878-.00408,3.191,3.191,0,0,1-2.104.60248,3.26309,3.26309,0,0,1-3.00324-2.71993,2.19076,2.19076,0,0,1-.03512-.30865c-.00156-.08579-.03413-.1189-.11608-.13493a2.86421,2.86421,0,0,1-1.23189-.56111,2.945,2.945,0,0,1-1.166-2.05749,2.97484,2.97484,0,0,1,.87524-2.50774.112.112,0,0,0,.02091-.16107,2.7213,2.7213,0,0,1-.36648-1.48A2.81256,2.81256,0,0,1,6.57673,7.58838a.35764.35764,0,0,0,.28869-.22819,4.2208,4.2208,0,0,1,6.02892-1.90111.25161.25161,0,0,0,.22023.0243,3.65608,3.65608,0,0,1,3.76031.90678A3.57244,3.57244,0,0,1,17.95918,8.626a2.97339,2.97339,0,0,1,.01829.57356.10637.10637,0,0,0,.0853.12792,1.97669,1.97669,0,0,1,1.27939,1.33733,2.00266,2.00266,0,0,1-.57112,2.12652c-.05284.05166-.04168.08328-.01173.13489A3.51189,3.51189,0,0,1,19.24775,14.722Zm-6.35959-.27836a1.6984,1.6984,0,0,0,1.14556,1.61113,3.82039,3.82039,0,0,0,1.036.17935,1.46888,1.46888,0,0,0,.73509-.12255.44082.44082,0,0,0,.26057-.44274.45312.45312,0,0,0-.29211-.43375.97191.97191,0,0,0-.20678-.063c-.21326-.03806-.42754-.0701-.63973-.11215a.54787.54787,0,0,1-.50172-.60926,2.75864,2.75864,0,0,1,.1773-.901c.1763-.535.414-1.045.64183-1.55913A12.686,12.686,0,0,0,15.85,10.47863a1.58461,1.58461,0,0,0,.04861-.87208,1.04531,1.04531,0,0,0-.85432-.83981,1.60658,1.60658,0,0,0-1.23654.16594.27593.27593,0,0,1-.36286-.03413c-.085-.0747-.16594-.15379-.24918-.23055a.98682.98682,0,0,0-1.33577-.04933,6.1468,6.1468,0,0,1-.4989.41615.47762.47762,0,0,1-.51535.03566c-.17448-.09307-.35512-.175-.53531-.25665a1.74949,1.74949,0,0,0-.56476-.2016,1.69943,1.69943,0,0,0-1.61654.91787,8.05815,8.05815,0,0,0-.32952.80126c-.45471,1.2557-.82507,2.53825-1.20838,3.81639a1.24151,1.24151,0,0,0,.51532,1.44389,1.42659,1.42659,0,0,0,1.22008.17166,1.09728,1.09728,0,0,0,.66994-.69764c.44145-1.04111.839-2.09989,1.25981-3.14926.11581-.28876.22792-.57874.35078-.86438a.44548.44548,0,0,1,.69189-.19539.50521.50521,0,0,1,.15044.43836,1.75625,1.75625,0,0,1-.14731.50453c-.27379.69219-.55265,1.38236-.82766,2.074a2.0836,2.0836,0,0,0-.14038.42876.50719.50719,0,0,0,.27082.57722.87236.87236,0,0,0,.66145.02739.99137.99137,0,0,0,.53406-.532q.61571-1.20914,1.228-2.42031.28423-.55863.57585-1.1133a.87189.87189,0,0,1,.29055-.35253.34987.34987,0,0,1,.37634-.01265.30291.30291,0,0,1,.12434.31459.56716.56716,0,0,1-.04655.1915c-.05318.12739-.10286.25669-.16183.38156-.34118.71775-.68754,1.43273-1.02568,2.152A2.00213,2.00213,0,0,0,12.88816,14.44366Zm4.78568,5.28972a.88573.88573,0,0,0-1.77139.00465.8857.8857,0,0,0,1.77139-.00465Zm-14.83838-7.296a.84329.84329,0,1,0,.00827-1.68655.8433.8433,0,0,0-.00827,1.68655Zm10.366-9.43673a.83506.83506,0,1,0-.0091,1.67.83505.83505,0,0,0,.0091-1.67Zm6.85014,5.22a.71651.71651,0,0,0-1.433.0093.71656.71656,0,0,0,1.433-.0093ZM5.37528,6.17908A.63823.63823,0,1,0,6.015,5.54483.62292.62292,0,0,0,5.37528,6.17908Zm6.68214,14.80843a.54949.54949,0,1,0-.55052.541A.54556.54556,0,0,0,12.05742,20.98752Zm8.53235-8.49689a.54777.54777,0,0,0-.54027.54023.53327.53327,0,0,0,.532.52293.51548.51548,0,0,0,.53272-.5237A.53187.53187,0,0,0,20.58977,12.49063ZM7.82846,2.4715a.44927.44927,0,1,0,.44484.44766A.43821.43821,0,0,0,7.82846,2.4715Zm13.775,7.60492a.41186.41186,0,0,0-.40065.39623.40178.40178,0,0,0,.40168.40168A.38994.38994,0,0,0,22,10.48172.39946.39946,0,0,0,21.60349,10.07642ZM5.79193,17.96207a.40469.40469,0,0,0-.397-.39646.399.399,0,0,0-.396.405.39234.39234,0,0,0,.39939.389A.39857.39857,0,0,0,5.79193,17.96207Z" 55131 }) 55132 }); 55133 55134 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/medium.js 55135 /** 55136 * WordPress dependencies 55137 */ 55138 55139 55140 const MediumIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55141 width: "24", 55142 height: "24", 55143 viewBox: "0 0 24 24", 55144 version: "1.1", 55145 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55146 d: "M13.2,12c0,3-2.4,5.4-5.3,5.4S2.6,15,2.6,12s2.4-5.4,5.3-5.4S13.2,9,13.2,12 M19.1,12c0,2.8-1.2,5-2.7,5s-2.7-2.3-2.7-5s1.2-5,2.7-5C17.9,7,19.1,9.2,19.1,12 M21.4,12c0,2.5-0.4,4.5-0.9,4.5c-0.5,0-0.9-2-0.9-4.5s0.4-4.5,0.9-4.5C21,7.5,21.4,9.5,21.4,12" 55147 }) 55148 }); 55149 55150 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/patreon.js 55151 /** 55152 * WordPress dependencies 55153 */ 55154 55155 55156 const PatreonIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55157 width: "24", 55158 height: "24", 55159 viewBox: "0 0 24 24", 55160 version: "1.1", 55161 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55162 d: "M20 8.40755C19.9969 6.10922 18.2543 4.22555 16.2097 3.54588C13.6708 2.70188 10.3222 2.82421 7.89775 3.99921C4.95932 5.42355 4.03626 8.54355 4.00186 11.6552C3.97363 14.2136 4.2222 20.9517 7.92225 20.9997C10.6715 21.0356 11.0809 17.3967 12.3529 15.6442C13.258 14.3974 14.4233 14.0452 15.8578 13.6806C18.3233 13.0537 20.0036 11.0551 20 8.40755Z" 55163 }) 55164 }); 55165 55166 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/pinterest.js 55167 /** 55168 * WordPress dependencies 55169 */ 55170 55171 55172 const PinterestIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55173 width: "24", 55174 height: "24", 55175 viewBox: "0 0 24 24", 55176 version: "1.1", 55177 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55178 d: "M12.289,2C6.617,2,3.606,5.648,3.606,9.622c0,1.846,1.025,4.146,2.666,4.878c0.25,0.111,0.381,0.063,0.439-0.169 c0.044-0.175,0.267-1.029,0.365-1.428c0.032-0.128,0.017-0.237-0.091-0.362C6.445,11.911,6.01,10.75,6.01,9.668 c0-2.777,2.194-5.464,5.933-5.464c3.23,0,5.49,2.108,5.49,5.122c0,3.407-1.794,5.768-4.13,5.768c-1.291,0-2.257-1.021-1.948-2.277 c0.372-1.495,1.089-3.112,1.089-4.191c0-0.967-0.542-1.775-1.663-1.775c-1.319,0-2.379,1.309-2.379,3.059 c0,1.115,0.394,1.869,0.394,1.869s-1.302,5.279-1.54,6.261c-0.405,1.666,0.053,4.368,0.094,4.604 c0.021,0.126,0.167,0.169,0.25,0.063c0.129-0.165,1.699-2.419,2.142-4.051c0.158-0.59,0.817-2.995,0.817-2.995 c0.43,0.784,1.681,1.446,3.013,1.446c3.963,0,6.822-3.494,6.822-7.833C20.394,5.112,16.849,2,12.289,2" 55179 }) 55180 }); 55181 55182 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/pocket.js 55183 /** 55184 * WordPress dependencies 55185 */ 55186 55187 55188 const PocketIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55189 width: "24", 55190 height: "24", 55191 viewBox: "0 0 24 24", 55192 version: "1.1", 55193 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55194 d: "M21.927,4.194C21.667,3.48,20.982,3,20.222,3h-0.01h-1.721H3.839C3.092,3,2.411,3.47,2.145,4.17 C2.066,4.378,2.026,4.594,2.026,4.814v6.035l0.069,1.2c0.29,2.73,1.707,5.115,3.899,6.778c0.039,0.03,0.079,0.059,0.119,0.089 l0.025,0.018c1.175,0.859,2.491,1.441,3.91,1.727c0.655,0.132,1.325,0.2,1.991,0.2c0.615,0,1.232-0.057,1.839-0.17 c0.073-0.014,0.145-0.028,0.219-0.044c0.02-0.004,0.042-0.012,0.064-0.023c1.359-0.297,2.621-0.864,3.753-1.691l0.025-0.018 c0.04-0.029,0.08-0.058,0.119-0.089c2.192-1.664,3.609-4.049,3.898-6.778l0.069-1.2V4.814C22.026,4.605,22,4.398,21.927,4.194z M17.692,10.481l-4.704,4.512c-0.266,0.254-0.608,0.382-0.949,0.382c-0.342,0-0.684-0.128-0.949-0.382l-4.705-4.512 C5.838,9.957,5.82,9.089,6.344,8.542c0.524-0.547,1.392-0.565,1.939-0.04l3.756,3.601l3.755-3.601 c0.547-0.524,1.415-0.506,1.939,0.04C18.256,9.089,18.238,9.956,17.692,10.481z" 55195 }) 55196 }); 55197 55198 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/reddit.js 55199 /** 55200 * WordPress dependencies 55201 */ 55202 55203 55204 const RedditIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55205 width: "24", 55206 height: "24", 55207 viewBox: "0 0 24 24", 55208 version: "1.1", 55209 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55210 d: "M5.27 9.221A2.775 2.775 0 0 0 2.498 11.993a2.785 2.785 0 0 0 1.6 2.511 5.337 5.337 0 0 0 2.374 4.11 9.386 9.386 0 0 0 5.539 1.7 9.386 9.386 0 0 0 5.541-1.7 5.331 5.331 0 0 0 2.372-4.114 2.787 2.787 0 0 0 1.583-2.5 2.775 2.775 0 0 0-2.772-2.772 2.742 2.742 0 0 0-1.688.574 9.482 9.482 0 0 0-4.637-1.348v-.008a2.349 2.349 0 0 1 2.011-2.316 1.97 1.97 0 0 0 1.926 1.521 1.98 1.98 0 0 0 1.978-1.978 1.98 1.98 0 0 0-1.978-1.978 1.985 1.985 0 0 0-1.938 1.578 3.183 3.183 0 0 0-2.849 3.172v.011a9.463 9.463 0 0 0-4.59 1.35 2.741 2.741 0 0 0-1.688-.574Zm6.736 9.1a3.162 3.162 0 0 1-2.921-1.944.215.215 0 0 1 .014-.2.219.219 0 0 1 .168-.106 27.327 27.327 0 0 1 2.74-.133 27.357 27.357 0 0 1 2.74.133.219.219 0 0 1 .168.106.215.215 0 0 1 .014.2 3.158 3.158 0 0 1-2.921 1.944Zm3.743-3.157a1.265 1.265 0 0 1-1.4-1.371 1.954 1.954 0 0 1 .482-1.442 1.15 1.15 0 0 1 .842-.379 1.7 1.7 0 0 1 1.49 1.777 1.323 1.323 0 0 1-.325 1.015 1.476 1.476 0 0 1-1.089.4Zm-7.485 0a1.476 1.476 0 0 1-1.086-.4 1.323 1.323 0 0 1-.325-1.016 1.7 1.7 0 0 1 1.49-1.777 1.151 1.151 0 0 1 .843.379 1.951 1.951 0 0 1 .481 1.441 1.276 1.276 0 0 1-1.403 1.373Z" 55211 }) 55212 }); 55213 55214 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/skype.js 55215 /** 55216 * WordPress dependencies 55217 */ 55218 55219 55220 const SkypeIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55221 width: "24", 55222 height: "24", 55223 viewBox: "0 0 24 24", 55224 version: "1.1", 55225 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55226 d: "M10.113,2.699c0.033-0.006,0.067-0.013,0.1-0.02c0.033,0.017,0.066,0.033,0.098,0.051L10.113,2.699z M2.72,10.223 c-0.006,0.034-0.011,0.069-0.017,0.103c0.018,0.032,0.033,0.064,0.051,0.095L2.72,10.223z M21.275,13.771 c0.007-0.035,0.011-0.071,0.018-0.106c-0.018-0.031-0.033-0.064-0.052-0.095L21.275,13.771z M13.563,21.199 c0.032,0.019,0.065,0.035,0.096,0.053c0.036-0.006,0.071-0.011,0.105-0.017L13.563,21.199z M22,16.386 c0,1.494-0.581,2.898-1.637,3.953c-1.056,1.057-2.459,1.637-3.953,1.637c-0.967,0-1.914-0.251-2.75-0.725 c0.036-0.006,0.071-0.011,0.105-0.017l-0.202-0.035c0.032,0.019,0.065,0.035,0.096,0.053c-0.543,0.096-1.099,0.147-1.654,0.147 c-1.275,0-2.512-0.25-3.676-0.743c-1.125-0.474-2.135-1.156-3.002-2.023c-0.867-0.867-1.548-1.877-2.023-3.002 c-0.493-1.164-0.743-2.401-0.743-3.676c0-0.546,0.049-1.093,0.142-1.628c0.018,0.032,0.033,0.064,0.051,0.095L2.72,10.223 c-0.006,0.034-0.011,0.069-0.017,0.103C2.244,9.5,2,8.566,2,7.615c0-1.493,0.582-2.898,1.637-3.953 c1.056-1.056,2.46-1.638,3.953-1.638c0.915,0,1.818,0.228,2.622,0.655c-0.033,0.007-0.067,0.013-0.1,0.02l0.199,0.031 c-0.032-0.018-0.066-0.034-0.098-0.051c0.002,0,0.003-0.001,0.004-0.001c0.586-0.112,1.187-0.169,1.788-0.169 c1.275,0,2.512,0.249,3.676,0.742c1.124,0.476,2.135,1.156,3.002,2.024c0.868,0.867,1.548,1.877,2.024,3.002 c0.493,1.164,0.743,2.401,0.743,3.676c0,0.575-0.054,1.15-0.157,1.712c-0.018-0.031-0.033-0.064-0.052-0.095l0.034,0.201 c0.007-0.035,0.011-0.071,0.018-0.106C21.754,14.494,22,15.432,22,16.386z M16.817,14.138c0-1.331-0.613-2.743-3.033-3.282 l-2.209-0.49c-0.84-0.192-1.807-0.444-1.807-1.237c0-0.794,0.679-1.348,1.903-1.348c2.468,0,2.243,1.696,3.468,1.696 c0.645,0,1.209-0.379,1.209-1.031c0-1.521-2.435-2.663-4.5-2.663c-2.242,0-4.63,0.952-4.63,3.488c0,1.221,0.436,2.521,2.839,3.123 l2.984,0.745c0.903,0.223,1.129,0.731,1.129,1.189c0,0.762-0.758,1.507-2.129,1.507c-2.679,0-2.307-2.062-3.743-2.062 c-0.645,0-1.113,0.444-1.113,1.078c0,1.236,1.501,2.886,4.856,2.886C15.236,17.737,16.817,16.199,16.817,14.138z" 55227 }) 55228 }); 55229 55230 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/snapchat.js 55231 /** 55232 * WordPress dependencies 55233 */ 55234 55235 55236 const SnapchatIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55237 width: "24", 55238 height: "24", 55239 viewBox: "0 0 24 24", 55240 version: "1.1", 55241 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55242 d: "M12.065,2a5.526,5.526,0,0,1,3.132.892A5.854,5.854,0,0,1,17.326,5.4a5.821,5.821,0,0,1,.351,2.33q0,.612-.117,2.487a.809.809,0,0,0,.365.091,1.93,1.93,0,0,0,.664-.176,1.93,1.93,0,0,1,.664-.176,1.3,1.3,0,0,1,.729.234.7.7,0,0,1,.351.6.839.839,0,0,1-.41.7,2.732,2.732,0,0,1-.9.41,3.192,3.192,0,0,0-.9.378.728.728,0,0,0-.41.618,1.575,1.575,0,0,0,.156.56,6.9,6.9,0,0,0,1.334,1.953,5.6,5.6,0,0,0,1.881,1.315,5.875,5.875,0,0,0,1.042.3.42.42,0,0,1,.365.456q0,.911-2.852,1.341a1.379,1.379,0,0,0-.143.507,1.8,1.8,0,0,1-.182.605.451.451,0,0,1-.429.241,5.878,5.878,0,0,1-.807-.085,5.917,5.917,0,0,0-.833-.085,4.217,4.217,0,0,0-.807.065,2.42,2.42,0,0,0-.82.293,6.682,6.682,0,0,0-.755.5q-.351.267-.755.527a3.886,3.886,0,0,1-.989.436A4.471,4.471,0,0,1,11.831,22a4.307,4.307,0,0,1-1.256-.176,3.784,3.784,0,0,1-.976-.436q-.4-.26-.749-.527a6.682,6.682,0,0,0-.755-.5,2.422,2.422,0,0,0-.807-.293,4.432,4.432,0,0,0-.82-.065,5.089,5.089,0,0,0-.853.1,5,5,0,0,1-.762.1.474.474,0,0,1-.456-.241,1.819,1.819,0,0,1-.182-.618,1.411,1.411,0,0,0-.143-.521q-2.852-.429-2.852-1.341a.42.42,0,0,1,.365-.456,5.793,5.793,0,0,0,1.042-.3,5.524,5.524,0,0,0,1.881-1.315,6.789,6.789,0,0,0,1.334-1.953A1.575,1.575,0,0,0,6,12.9a.728.728,0,0,0-.41-.618,3.323,3.323,0,0,0-.9-.384,2.912,2.912,0,0,1-.9-.41.814.814,0,0,1-.41-.684.71.71,0,0,1,.338-.593,1.208,1.208,0,0,1,.716-.241,1.976,1.976,0,0,1,.625.169,2.008,2.008,0,0,0,.69.169.919.919,0,0,0,.416-.091q-.117-1.849-.117-2.474A5.861,5.861,0,0,1,6.385,5.4,5.516,5.516,0,0,1,8.625,2.819,7.075,7.075,0,0,1,12.062,2Z" 55243 }) 55244 }); 55245 55246 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/soundcloud.js 55247 /** 55248 * WordPress dependencies 55249 */ 55250 55251 55252 const SoundCloudIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55253 width: "24", 55254 height: "24", 55255 viewBox: "0 0 24 24", 55256 version: "1.1", 55257 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55258 d: "M23.994 14.552a3.36 3.36 0 01-3.401 3.171h-8.176a.685.685 0 01-.679-.681V8.238a.749.749 0 01.452-.716S12.942 7 14.526 7a5.357 5.357 0 012.748.755 5.44 5.44 0 012.56 3.546c.282-.08.574-.12.868-.119a3.273 3.273 0 013.292 3.37zM10.718 8.795a.266.266 0 10-.528 0c-.224 2.96-.397 5.735 0 8.685a.265.265 0 00.528 0c.425-2.976.246-5.7 0-8.685zM9.066 9.82a.278.278 0 00-.553 0 33.183 33.183 0 000 7.663.278.278 0 00.55 0c.33-2.544.332-5.12.003-7.664zM7.406 9.56a.269.269 0 00-.535 0c-.253 2.7-.38 5.222 0 7.917a.266.266 0 10.531 0c.394-2.73.272-5.181.004-7.917zM5.754 10.331a.275.275 0 10-.55 0 28.035 28.035 0 000 7.155.272.272 0 00.54 0c.332-2.373.335-4.78.01-7.155zM4.087 12.12a.272.272 0 00-.544 0c-.393 1.843-.208 3.52.016 5.386a.26.26 0 00.512 0c.247-1.892.435-3.53.016-5.386zM2.433 11.838a.282.282 0 00-.56 0c-.349 1.882-.234 3.54.01 5.418.025.285.508.282.54 0 .269-1.907.394-3.517.01-5.418zM.762 12.76a.282.282 0 00-.56 0c-.32 1.264-.22 2.31.023 3.578a.262.262 0 00.521 0c.282-1.293.42-2.317.016-3.578z" 55259 }) 55260 }); 55261 55262 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/spotify.js 55263 /** 55264 * WordPress dependencies 55265 */ 55266 55267 55268 const SpotifyIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55269 width: "24", 55270 height: "24", 55271 viewBox: "0 0 24 24", 55272 version: "1.1", 55273 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55274 d: "M12,2C6.477,2,2,6.477,2,12c0,5.523,4.477,10,10,10c5.523,0,10-4.477,10-10C22,6.477,17.523,2,12,2 M16.586,16.424 c-0.18,0.295-0.563,0.387-0.857,0.207c-2.348-1.435-5.304-1.76-8.785-0.964c-0.335,0.077-0.67-0.133-0.746-0.469 c-0.077-0.335,0.132-0.67,0.469-0.746c3.809-0.871,7.077-0.496,9.713,1.115C16.673,15.746,16.766,16.13,16.586,16.424 M17.81,13.7 c-0.226,0.367-0.706,0.482-1.072,0.257c-2.687-1.652-6.785-2.131-9.965-1.166C6.36,12.917,5.925,12.684,5.8,12.273 C5.675,11.86,5.908,11.425,6.32,11.3c3.632-1.102,8.147-0.568,11.234,1.328C17.92,12.854,18.035,13.335,17.81,13.7 M17.915,10.865 c-3.223-1.914-8.54-2.09-11.618-1.156C5.804,9.859,5.281,9.58,5.131,9.086C4.982,8.591,5.26,8.069,5.755,7.919 c3.532-1.072,9.404-0.865,13.115,1.338c0.445,0.264,0.59,0.838,0.327,1.282C18.933,10.983,18.359,11.129,17.915,10.865" 55275 }) 55276 }); 55277 55278 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/telegram.js 55279 /** 55280 * WordPress dependencies 55281 */ 55282 55283 55284 const TelegramIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55285 width: "24", 55286 height: "24", 55287 viewBox: "0 0 128 128", 55288 version: "1.1", 55289 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55290 d: "M28.9700376,63.3244248 C47.6273373,55.1957357 60.0684594,49.8368063 66.2934036,47.2476366 C84.0668845,39.855031 87.7600616,38.5708563 90.1672227,38.528 C90.6966555,38.5191258 91.8804274,38.6503351 92.6472251,39.2725385 C93.294694,39.7979149 93.4728387,40.5076237 93.5580865,41.0057381 C93.6433345,41.5038525 93.7494885,42.63857 93.6651041,43.5252052 C92.7019529,53.6451182 88.5344133,78.2034783 86.4142057,89.5379542 C85.5170662,94.3339958 83.750571,95.9420841 82.0403991,96.0994568 C78.3237996,96.4414641 75.5015827,93.6432685 71.9018743,91.2836143 C66.2690414,87.5912212 63.0868492,85.2926952 57.6192095,81.6896017 C51.3004058,77.5256038 55.3966232,75.2369981 58.9976911,71.4967761 C59.9401076,70.5179421 76.3155302,55.6232293 76.6324771,54.2720454 C76.6721165,54.1030573 76.7089039,53.4731496 76.3346867,53.1405352 C75.9604695,52.8079208 75.4081573,52.921662 75.0095933,53.0121213 C74.444641,53.1403447 65.4461175,59.0880351 48.0140228,70.8551922 C45.4598218,72.6091037 43.1463059,73.4636682 41.0734751,73.4188859 C38.7883453,73.3695169 34.3926725,72.1268388 31.1249416,71.0646282 C27.1169366,69.7617838 23.931454,69.0729605 24.208838,66.8603276 C24.3533167,65.7078514 25.9403832,64.5292172 28.9700376,63.3244248 Z" 55291 }) 55292 }); 55293 55294 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/threads.js 55295 /** 55296 * WordPress dependencies 55297 */ 55298 55299 55300 const ThreadsIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55301 width: "24", 55302 height: "24", 55303 viewBox: "0 0 24 24", 55304 version: "1.1", 55305 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55306 d: "M16.3 11.3c-.1 0-.2-.1-.2-.1-.1-2.6-1.5-4-3.9-4-1.4 0-2.6.6-3.3 1.7l1.3.9c.5-.8 1.4-1 2-1 .8 0 1.4.2 1.7.7.3.3.5.8.5 1.3-.7-.1-1.4-.2-2.2-.1-2.2.1-3.7 1.4-3.6 3.2 0 .9.5 1.7 1.3 2.2.7.4 1.5.6 2.4.6 1.2-.1 2.1-.5 2.7-1.3.5-.6.8-1.4.9-2.4.6.3 1 .8 1.2 1.3.4.9.4 2.4-.8 3.6-1.1 1.1-2.3 1.5-4.3 1.5-2.1 0-3.8-.7-4.8-2S5.7 14.3 5.7 12c0-2.3.5-4.1 1.5-5.4 1.1-1.3 2.7-2 4.8-2 2.2 0 3.8.7 4.9 2 .5.7.9 1.5 1.2 2.5l1.5-.4c-.3-1.2-.8-2.2-1.5-3.1-1.3-1.7-3.3-2.6-6-2.6-2.6 0-4.7.9-6 2.6C4.9 7.2 4.3 9.3 4.3 12s.6 4.8 1.9 6.4c1.4 1.7 3.4 2.6 6 2.6 2.3 0 4-.6 5.3-2 1.8-1.8 1.7-4 1.1-5.4-.4-.9-1.2-1.7-2.3-2.3zm-4 3.8c-1 .1-2-.4-2-1.3 0-.7.5-1.5 2.1-1.6h.5c.6 0 1.1.1 1.6.2-.2 2.3-1.3 2.7-2.2 2.7z" 55307 }) 55308 }); 55309 55310 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/tiktok.js 55311 /** 55312 * WordPress dependencies 55313 */ 55314 55315 55316 const TiktokIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55317 width: "24", 55318 height: "24", 55319 viewBox: "0 0 32 32", 55320 version: "1.1", 55321 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55322 d: "M16.708 0.027c1.745-0.027 3.48-0.011 5.213-0.027 0.105 2.041 0.839 4.12 2.333 5.563 1.491 1.479 3.6 2.156 5.652 2.385v5.369c-1.923-0.063-3.855-0.463-5.6-1.291-0.76-0.344-1.468-0.787-2.161-1.24-0.009 3.896 0.016 7.787-0.025 11.667-0.104 1.864-0.719 3.719-1.803 5.255-1.744 2.557-4.771 4.224-7.88 4.276-1.907 0.109-3.812-0.411-5.437-1.369-2.693-1.588-4.588-4.495-4.864-7.615-0.032-0.667-0.043-1.333-0.016-1.984 0.24-2.537 1.495-4.964 3.443-6.615 2.208-1.923 5.301-2.839 8.197-2.297 0.027 1.975-0.052 3.948-0.052 5.923-1.323-0.428-2.869-0.308-4.025 0.495-0.844 0.547-1.485 1.385-1.819 2.333-0.276 0.676-0.197 1.427-0.181 2.145 0.317 2.188 2.421 4.027 4.667 3.828 1.489-0.016 2.916-0.88 3.692-2.145 0.251-0.443 0.532-0.896 0.547-1.417 0.131-2.385 0.079-4.76 0.095-7.145 0.011-5.375-0.016-10.735 0.025-16.093z" 55323 }) 55324 }); 55325 55326 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/tumblr.js 55327 /** 55328 * WordPress dependencies 55329 */ 55330 55331 55332 const TumblrIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55333 width: "24", 55334 height: "24", 55335 viewBox: "0 0 24 24", 55336 version: "1.1", 55337 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55338 d: "M17.04 21.28h-3.28c-2.84 0-4.94-1.37-4.94-5.02v-5.67H6.08V7.5c2.93-.73 4.11-3.3 4.3-5.48h3.01v4.93h3.47v3.65H13.4v4.93c0 1.47.73 2.01 1.92 2.01h1.73v3.75z" 55339 }) 55340 }); 55341 55342 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/twitch.js 55343 /** 55344 * WordPress dependencies 55345 */ 55346 55347 55348 const TwitchIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55349 width: "24", 55350 height: "24", 55351 viewBox: "0 0 24 24", 55352 version: "1.1", 55353 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55354 d: "M16.499,8.089h-1.636v4.91h1.636V8.089z M12,8.089h-1.637v4.91H12V8.089z M4.228,3.178L3,6.451v13.092h4.499V22h2.456 l2.454-2.456h3.681L21,14.636V3.178H4.228z M19.364,13.816l-2.864,2.865H12l-2.453,2.453V16.68H5.863V4.814h13.501V13.816z" 55355 }) 55356 }); 55357 55358 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/twitter.js 55359 /** 55360 * WordPress dependencies 55361 */ 55362 55363 55364 const TwitterIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55365 width: "24", 55366 height: "24", 55367 viewBox: "0 0 24 24", 55368 version: "1.1", 55369 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55370 d: "M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z" 55371 }) 55372 }); 55373 55374 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/vimeo.js 55375 /** 55376 * WordPress dependencies 55377 */ 55378 55379 55380 const VimeoIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55381 width: "24", 55382 height: "24", 55383 viewBox: "0 0 24 24", 55384 version: "1.1", 55385 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55386 d: "M22.396,7.164c-0.093,2.026-1.507,4.799-4.245,8.32C15.322,19.161,12.928,21,10.97,21c-1.214,0-2.24-1.119-3.079-3.359 c-0.56-2.053-1.119-4.106-1.68-6.159C5.588,9.243,4.921,8.122,4.206,8.122c-0.156,0-0.701,0.328-1.634,0.98L1.594,7.841 c1.027-0.902,2.04-1.805,3.037-2.708C6.001,3.95,7.03,3.327,7.715,3.264c1.619-0.156,2.616,0.951,2.99,3.321 c0.404,2.557,0.685,4.147,0.841,4.769c0.467,2.121,0.981,3.181,1.542,3.181c0.435,0,1.09-0.688,1.963-2.065 c0.871-1.376,1.338-2.422,1.401-3.142c0.125-1.187-0.343-1.782-1.401-1.782c-0.498,0-1.012,0.115-1.541,0.341 c1.023-3.35,2.977-4.977,5.862-4.884C21.511,3.066,22.52,4.453,22.396,7.164z" 55387 }) 55388 }); 55389 55390 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/vk.js 55391 /** 55392 * WordPress dependencies 55393 */ 55394 55395 55396 const VkIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55397 width: "24", 55398 height: "24", 55399 viewBox: "0 0 24 24", 55400 version: "1.1", 55401 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55402 d: "M22,7.1c0.2,0.4-0.4,1.5-1.6,3.1c-0.2,0.2-0.4,0.5-0.7,0.9c-0.5,0.7-0.9,1.1-0.9,1.4c-0.1,0.3-0.1,0.6,0.1,0.8 c0.1,0.1,0.4,0.4,0.8,0.9h0l0,0c1,0.9,1.6,1.7,2,2.3c0,0,0,0.1,0.1,0.1c0,0.1,0,0.1,0.1,0.3c0,0.1,0,0.2,0,0.4 c0,0.1-0.1,0.2-0.3,0.3c-0.1,0.1-0.4,0.1-0.6,0.1l-2.7,0c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.4-0.1-0.5-0.2l-0.2-0.1 c-0.2-0.1-0.5-0.4-0.7-0.7s-0.5-0.6-0.7-0.8c-0.2-0.2-0.4-0.4-0.6-0.6C14.8,15,14.6,15,14.4,15c0,0,0,0-0.1,0c0,0-0.1,0.1-0.2,0.2 c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.1-0.1,0.3-0.2,0.5c-0.1,0.2-0.1,0.5-0.1,0.8c0,0.1,0,0.2,0,0.3c0,0.1-0.1,0.2-0.1,0.2l0,0.1 c-0.1,0.1-0.3,0.2-0.6,0.2h-1.2c-0.5,0-1,0-1.5-0.2c-0.5-0.1-1-0.3-1.4-0.6s-0.7-0.5-1.1-0.7s-0.6-0.4-0.7-0.6l-0.3-0.3 c-0.1-0.1-0.2-0.2-0.3-0.3s-0.4-0.5-0.7-0.9s-0.7-1-1.1-1.6c-0.4-0.6-0.8-1.3-1.3-2.2C2.9,9.4,2.5,8.5,2.1,7.5C2,7.4,2,7.3,2,7.2 c0-0.1,0-0.1,0-0.2l0-0.1c0.1-0.1,0.3-0.2,0.6-0.2l2.9,0c0.1,0,0.2,0,0.2,0.1S5.9,6.9,5.9,7L6,7c0.1,0.1,0.2,0.2,0.3,0.3 C6.4,7.7,6.5,8,6.7,8.4C6.9,8.8,7,9,7.1,9.2l0.2,0.3c0.2,0.4,0.4,0.8,0.6,1.1c0.2,0.3,0.4,0.5,0.5,0.7s0.3,0.3,0.4,0.4 c0.1,0.1,0.3,0.1,0.4,0.1c0.1,0,0.2,0,0.3-0.1c0,0,0,0,0.1-0.1c0,0,0.1-0.1,0.1-0.2c0.1-0.1,0.1-0.3,0.1-0.5c0-0.2,0.1-0.5,0.1-0.8 c0-0.4,0-0.8,0-1.3c0-0.3,0-0.5-0.1-0.8c0-0.2-0.1-0.4-0.1-0.5L9.6,7.6C9.4,7.3,9.1,7.2,8.7,7.1C8.6,7.1,8.6,7,8.7,6.9 C8.9,6.7,9,6.6,9.1,6.5c0.4-0.2,1.2-0.3,2.5-0.3c0.6,0,1,0.1,1.4,0.1c0.1,0,0.3,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.2,0.3 c0,0.1,0.1,0.2,0.1,0.3s0,0.3,0,0.5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.7c0,0.3,0,0.6,0,0.9c0,0.1,0,0.2,0,0.4c0,0.2,0,0.4,0,0.5 c0,0.1,0,0.3,0,0.4s0.1,0.3,0.1,0.4c0.1,0.1,0.1,0.2,0.2,0.3c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.2-0.2,0.4-0.4 s0.3-0.4,0.5-0.7c0.2-0.3,0.5-0.7,0.7-1.1c0.4-0.7,0.8-1.5,1.1-2.3c0-0.1,0.1-0.1,0.1-0.2c0-0.1,0.1-0.1,0.1-0.1l0,0l0.1,0 c0,0,0,0,0.1,0s0.2,0,0.2,0l3,0c0.3,0,0.5,0,0.7,0S21.9,7,21.9,7L22,7.1z" 55403 }) 55404 }); 55405 55406 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/whatsapp.js 55407 /** 55408 * WordPress dependencies 55409 */ 55410 55411 55412 const WhatsAppIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55413 width: "24", 55414 height: "24", 55415 viewBox: "0 0 24 24", 55416 version: "1.1", 55417 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55418 d: "M 12.011719 2 C 6.5057187 2 2.0234844 6.478375 2.0214844 11.984375 C 2.0204844 13.744375 2.4814687 15.462563 3.3554688 16.976562 L 2 22 L 7.2324219 20.763672 C 8.6914219 21.559672 10.333859 21.977516 12.005859 21.978516 L 12.009766 21.978516 C 17.514766 21.978516 21.995047 17.499141 21.998047 11.994141 C 22.000047 9.3251406 20.962172 6.8157344 19.076172 4.9277344 C 17.190172 3.0407344 14.683719 2.001 12.011719 2 z M 12.009766 4 C 14.145766 4.001 16.153109 4.8337969 17.662109 6.3417969 C 19.171109 7.8517969 20.000047 9.8581875 19.998047 11.992188 C 19.996047 16.396187 16.413812 19.978516 12.007812 19.978516 C 10.674812 19.977516 9.3544062 19.642812 8.1914062 19.007812 L 7.5175781 18.640625 L 6.7734375 18.816406 L 4.8046875 19.28125 L 5.2851562 17.496094 L 5.5019531 16.695312 L 5.0878906 15.976562 C 4.3898906 14.768562 4.0204844 13.387375 4.0214844 11.984375 C 4.0234844 7.582375 7.6067656 4 12.009766 4 z M 8.4765625 7.375 C 8.3095625 7.375 8.0395469 7.4375 7.8105469 7.6875 C 7.5815469 7.9365 6.9355469 8.5395781 6.9355469 9.7675781 C 6.9355469 10.995578 7.8300781 12.182609 7.9550781 12.349609 C 8.0790781 12.515609 9.68175 15.115234 12.21875 16.115234 C 14.32675 16.946234 14.754891 16.782234 15.212891 16.740234 C 15.670891 16.699234 16.690438 16.137687 16.898438 15.554688 C 17.106437 14.971687 17.106922 14.470187 17.044922 14.367188 C 16.982922 14.263188 16.816406 14.201172 16.566406 14.076172 C 16.317406 13.951172 15.090328 13.348625 14.861328 13.265625 C 14.632328 13.182625 14.464828 13.140625 14.298828 13.390625 C 14.132828 13.640625 13.655766 14.201187 13.509766 14.367188 C 13.363766 14.534188 13.21875 14.556641 12.96875 14.431641 C 12.71875 14.305641 11.914938 14.041406 10.960938 13.191406 C 10.218937 12.530406 9.7182656 11.714844 9.5722656 11.464844 C 9.4272656 11.215844 9.5585938 11.079078 9.6835938 10.955078 C 9.7955938 10.843078 9.9316406 10.663578 10.056641 10.517578 C 10.180641 10.371578 10.223641 10.267562 10.306641 10.101562 C 10.389641 9.9355625 10.347156 9.7890625 10.285156 9.6640625 C 10.223156 9.5390625 9.737625 8.3065 9.515625 7.8125 C 9.328625 7.3975 9.131125 7.3878594 8.953125 7.3808594 C 8.808125 7.3748594 8.6425625 7.375 8.4765625 7.375 z" 55419 }) 55420 }); 55421 55422 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/x.js 55423 /** 55424 * WordPress dependencies 55425 */ 55426 55427 55428 const XIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55429 width: "24", 55430 height: "24", 55431 viewBox: "0 0 24 24", 55432 version: "1.1", 55433 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55434 d: "M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" 55435 }) 55436 }); 55437 55438 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/yelp.js 55439 /** 55440 * WordPress dependencies 55441 */ 55442 55443 55444 const YelpIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55445 width: "24", 55446 height: "24", 55447 viewBox: "0 0 24 24", 55448 version: "1.1", 55449 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55450 d: "M12.271,16.718v1.417q-.011,3.257-.067,3.4a.707.707,0,0,1-.569.446,4.637,4.637,0,0,1-2.024-.424A4.609,4.609,0,0,1,7.8,20.565a.844.844,0,0,1-.19-.4.692.692,0,0,1,.044-.29,3.181,3.181,0,0,1,.379-.524q.335-.412,2.019-2.409.011,0,.669-.781a.757.757,0,0,1,.44-.274.965.965,0,0,1,.552.039.945.945,0,0,1,.418.324.732.732,0,0,1,.139.468Zm-1.662-2.8a.783.783,0,0,1-.58.781l-1.339.435q-3.067.981-3.257.981a.711.711,0,0,1-.6-.4,2.636,2.636,0,0,1-.19-.836,9.134,9.134,0,0,1,.011-1.857,3.559,3.559,0,0,1,.335-1.389.659.659,0,0,1,.625-.357,22.629,22.629,0,0,1,2.253.859q.781.324,1.283.524l.937.379a.771.771,0,0,1,.4.34A.982.982,0,0,1,10.609,13.917Zm9.213,3.313a4.467,4.467,0,0,1-1.021,1.8,4.559,4.559,0,0,1-1.512,1.417.671.671,0,0,1-.7-.078q-.156-.112-2.052-3.2l-.524-.859a.761.761,0,0,1-.128-.513.957.957,0,0,1,.217-.513.774.774,0,0,1,.926-.29q.011.011,1.327.446,2.264.736,2.7.887a2.082,2.082,0,0,1,.524.229.673.673,0,0,1,.245.68Zm-7.5-7.049q.056,1.137-.6,1.361-.647.19-1.272-.792L6.237,4.08a.7.7,0,0,1,.212-.691,5.788,5.788,0,0,1,2.314-1,5.928,5.928,0,0,1,2.5-.352.681.681,0,0,1,.547.5q.034.2.245,3.407T12.327,10.181Zm7.384,1.2a.679.679,0,0,1-.29.658q-.167.112-3.67.959-.747.167-1.015.257l.011-.022a.769.769,0,0,1-.513-.044.914.914,0,0,1-.413-.357.786.786,0,0,1,0-.971q.011-.011.836-1.137,1.394-1.908,1.673-2.275a2.423,2.423,0,0,1,.379-.435A.7.7,0,0,1,17.435,8a4.482,4.482,0,0,1,1.372,1.489,4.81,4.81,0,0,1,.9,1.868v.034Z" 55451 }) 55452 }); 55453 55454 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/icons/youtube.js 55455 /** 55456 * WordPress dependencies 55457 */ 55458 55459 55460 const YouTubeIcon = () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 55461 width: "24", 55462 height: "24", 55463 viewBox: "0 0 24 24", 55464 version: "1.1", 55465 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 55466 d: "M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z" 55467 }) 55468 }); 55469 55470 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/variations.js 55471 /** 55472 * Internal dependencies 55473 */ 55474 55475 const social_link_variations_variations = [{ 55476 isDefault: true, 55477 name: 'wordpress', 55478 attributes: { 55479 service: 'wordpress' 55480 }, 55481 title: 'WordPress', 55482 icon: WordPressIcon 55483 }, { 55484 name: 'fivehundredpx', 55485 attributes: { 55486 service: 'fivehundredpx' 55487 }, 55488 title: '500px', 55489 icon: FivehundredpxIcon 55490 }, { 55491 name: 'amazon', 55492 attributes: { 55493 service: 'amazon' 55494 }, 55495 title: 'Amazon', 55496 icon: AmazonIcon 55497 }, { 55498 name: 'bandcamp', 55499 attributes: { 55500 service: 'bandcamp' 55501 }, 55502 title: 'Bandcamp', 55503 icon: BandcampIcon 55504 }, { 55505 name: 'behance', 55506 attributes: { 55507 service: 'behance' 55508 }, 55509 title: 'Behance', 55510 icon: BehanceIcon 55511 }, { 55512 name: 'bluesky', 55513 attributes: { 55514 service: 'bluesky' 55515 }, 55516 title: 'Bluesky', 55517 icon: BlueskyIcon 55518 }, { 55519 name: 'chain', 55520 attributes: { 55521 service: 'chain' 55522 }, 55523 title: 'Link', 55524 icon: ChainIcon 55525 }, { 55526 name: 'codepen', 55527 attributes: { 55528 service: 'codepen' 55529 }, 55530 title: 'CodePen', 55531 icon: CodepenIcon 55532 }, { 55533 name: 'deviantart', 55534 attributes: { 55535 service: 'deviantart' 55536 }, 55537 title: 'DeviantArt', 55538 icon: DeviantArtIcon 55539 }, { 55540 name: 'dribbble', 55541 attributes: { 55542 service: 'dribbble' 55543 }, 55544 title: 'Dribbble', 55545 icon: DribbbleIcon 55546 }, { 55547 name: 'dropbox', 55548 attributes: { 55549 service: 'dropbox' 55550 }, 55551 title: 'Dropbox', 55552 icon: DropboxIcon 55553 }, { 55554 name: 'etsy', 55555 attributes: { 55556 service: 'etsy' 55557 }, 55558 title: 'Etsy', 55559 icon: EtsyIcon 55560 }, { 55561 name: 'facebook', 55562 attributes: { 55563 service: 'facebook' 55564 }, 55565 title: 'Facebook', 55566 icon: FacebookIcon 55567 }, { 55568 name: 'feed', 55569 attributes: { 55570 service: 'feed' 55571 }, 55572 title: 'RSS Feed', 55573 icon: FeedIcon 55574 }, { 55575 name: 'flickr', 55576 attributes: { 55577 service: 'flickr' 55578 }, 55579 title: 'Flickr', 55580 icon: FlickrIcon 55581 }, { 55582 name: 'foursquare', 55583 attributes: { 55584 service: 'foursquare' 55585 }, 55586 title: 'Foursquare', 55587 icon: FoursquareIcon 55588 }, { 55589 name: 'goodreads', 55590 attributes: { 55591 service: 'goodreads' 55592 }, 55593 title: 'Goodreads', 55594 icon: GoodreadsIcon 55595 }, { 55596 name: 'google', 55597 attributes: { 55598 service: 'google' 55599 }, 55600 title: 'Google', 55601 icon: GoogleIcon 55602 }, { 55603 name: 'github', 55604 attributes: { 55605 service: 'github' 55606 }, 55607 title: 'GitHub', 55608 icon: GitHubIcon 55609 }, { 55610 name: 'gravatar', 55611 attributes: { 55612 service: 'gravatar' 55613 }, 55614 title: 'Gravatar', 55615 icon: GravatarIcon 55616 }, { 55617 name: 'instagram', 55618 attributes: { 55619 service: 'instagram' 55620 }, 55621 title: 'Instagram', 55622 icon: InstagramIcon 55623 }, { 55624 name: 'lastfm', 55625 attributes: { 55626 service: 'lastfm' 55627 }, 55628 title: 'Last.fm', 55629 icon: LastfmIcon 55630 }, { 55631 name: 'linkedin', 55632 attributes: { 55633 service: 'linkedin' 55634 }, 55635 title: 'LinkedIn', 55636 icon: LinkedInIcon 55637 }, { 55638 name: 'mail', 55639 attributes: { 55640 service: 'mail' 55641 }, 55642 title: 'Mail', 55643 keywords: ['email', 'e-mail'], 55644 icon: MailIcon 55645 }, { 55646 name: 'mastodon', 55647 attributes: { 55648 service: 'mastodon' 55649 }, 55650 title: 'Mastodon', 55651 icon: MastodonIcon 55652 }, { 55653 name: 'meetup', 55654 attributes: { 55655 service: 'meetup' 55656 }, 55657 title: 'Meetup', 55658 icon: MeetupIcon 55659 }, { 55660 name: 'medium', 55661 attributes: { 55662 service: 'medium' 55663 }, 55664 title: 'Medium', 55665 icon: MediumIcon 55666 }, { 55667 name: 'patreon', 55668 attributes: { 55669 service: 'patreon' 55670 }, 55671 title: 'Patreon', 55672 icon: PatreonIcon 55673 }, { 55674 name: 'pinterest', 55675 attributes: { 55676 service: 'pinterest' 55677 }, 55678 title: 'Pinterest', 55679 icon: PinterestIcon 55680 }, { 55681 name: 'pocket', 55682 attributes: { 55683 service: 'pocket' 55684 }, 55685 title: 'Pocket', 55686 icon: PocketIcon 55687 }, { 55688 name: 'reddit', 55689 attributes: { 55690 service: 'reddit' 55691 }, 55692 title: 'Reddit', 55693 icon: RedditIcon 55694 }, { 55695 name: 'skype', 55696 attributes: { 55697 service: 'skype' 55698 }, 55699 title: 'Skype', 55700 icon: SkypeIcon 55701 }, { 55702 name: 'snapchat', 55703 attributes: { 55704 service: 'snapchat' 55705 }, 55706 title: 'Snapchat', 55707 icon: SnapchatIcon 55708 }, { 55709 name: 'soundcloud', 55710 attributes: { 55711 service: 'soundcloud' 55712 }, 55713 title: 'SoundCloud', 55714 icon: SoundCloudIcon 55715 }, { 55716 name: 'spotify', 55717 attributes: { 55718 service: 'spotify' 55719 }, 55720 title: 'Spotify', 55721 icon: SpotifyIcon 55722 }, { 55723 name: 'telegram', 55724 attributes: { 55725 service: 'telegram' 55726 }, 55727 title: 'Telegram', 55728 icon: TelegramIcon 55729 }, { 55730 name: 'threads', 55731 attributes: { 55732 service: 'threads' 55733 }, 55734 title: 'Threads', 55735 icon: ThreadsIcon 55736 }, { 55737 name: 'tiktok', 55738 attributes: { 55739 service: 'tiktok' 55740 }, 55741 title: 'TikTok', 55742 icon: TiktokIcon 55743 }, { 55744 name: 'tumblr', 55745 attributes: { 55746 service: 'tumblr' 55747 }, 55748 title: 'Tumblr', 55749 icon: TumblrIcon 55750 }, { 55751 name: 'twitch', 55752 attributes: { 55753 service: 'twitch' 55754 }, 55755 title: 'Twitch', 55756 icon: TwitchIcon 55757 }, { 55758 name: 'twitter', 55759 attributes: { 55760 service: 'twitter' 55761 }, 55762 title: 'Twitter', 55763 icon: TwitterIcon 55764 }, { 55765 name: 'vimeo', 55766 attributes: { 55767 service: 'vimeo' 55768 }, 55769 title: 'Vimeo', 55770 icon: VimeoIcon 55771 }, { 55772 name: 'vk', 55773 attributes: { 55774 service: 'vk' 55775 }, 55776 title: 'VK', 55777 icon: VkIcon 55778 }, { 55779 name: 'whatsapp', 55780 attributes: { 55781 service: 'whatsapp' 55782 }, 55783 title: 'WhatsApp', 55784 icon: WhatsAppIcon 55785 }, { 55786 name: 'x', 55787 attributes: { 55788 service: 'x' 55789 }, 55790 keywords: ['twitter'], 55791 title: 'X', 55792 icon: XIcon 55793 }, { 55794 name: 'yelp', 55795 attributes: { 55796 service: 'yelp' 55797 }, 55798 title: 'Yelp', 55799 icon: YelpIcon 55800 }, { 55801 name: 'youtube', 55802 attributes: { 55803 service: 'youtube' 55804 }, 55805 title: 'YouTube', 55806 icon: YouTubeIcon 55807 }]; 55808 55809 /** 55810 * Add `isActive` function to all `social link` variations, if not defined. 55811 * `isActive` function is used to find a variation match from a created 55812 * Block by providing its attributes. 55813 */ 55814 social_link_variations_variations.forEach(variation => { 55815 if (variation.isActive) { 55816 return; 55817 } 55818 variation.isActive = (blockAttributes, variationAttributes) => blockAttributes.service === variationAttributes.service; 55819 }); 55820 /* harmony default export */ const social_link_variations = (social_link_variations_variations); 55821 55822 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/social-list.js 55823 /** 55824 * WordPress dependencies 55825 */ 55826 55827 55828 /** 55829 * Internal dependencies 55830 */ 55831 55832 55833 55834 /** 55835 * Retrieves the social service's icon component. 55836 * 55837 * @param {string} name key for a social service (lowercase slug) 55838 * 55839 * @return {Component} Icon component for social service. 55840 */ 55841 const getIconBySite = name => { 55842 const variation = social_link_variations.find(v => v.name === name); 55843 return variation ? variation.icon : ChainIcon; 55844 }; 55845 55846 /** 55847 * Retrieves the display name for the social service. 55848 * 55849 * @param {string} name key for a social service (lowercase slug) 55850 * 55851 * @return {string} Display name for social service 55852 */ 55853 const getNameBySite = name => { 55854 const variation = social_link_variations.find(v => v.name === name); 55855 return variation ? variation.title : (0,external_wp_i18n_namespaceObject.__)('Social Icon'); 55856 }; 55857 55858 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/edit.js 55859 /** 55860 * External dependencies 55861 */ 55862 55863 55864 /** 55865 * WordPress dependencies 55866 */ 55867 55868 55869 55870 55871 55872 55873 55874 55875 /** 55876 * Internal dependencies 55877 */ 55878 55879 55880 55881 55882 const SocialLinkURLPopover = ({ 55883 url, 55884 setAttributes, 55885 setPopover, 55886 popoverAnchor, 55887 clientId 55888 }) => { 55889 const { 55890 removeBlock 55891 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 55892 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.URLPopover, { 55893 anchor: popoverAnchor, 55894 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Edit social link'), 55895 onClose: () => { 55896 setPopover(false); 55897 popoverAnchor?.focus(); 55898 }, 55899 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", { 55900 className: "block-editor-url-popover__link-editor", 55901 onSubmit: event => { 55902 event.preventDefault(); 55903 setPopover(false); 55904 popoverAnchor?.focus(); 55905 }, 55906 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 55907 className: "block-editor-url-input", 55908 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.URLInput, { 55909 value: url, 55910 onChange: nextURL => setAttributes({ 55911 url: nextURL 55912 }), 55913 placeholder: (0,external_wp_i18n_namespaceObject.__)('Enter social link'), 55914 label: (0,external_wp_i18n_namespaceObject.__)('Enter social link'), 55915 hideLabelFromVision: true, 55916 disableSuggestions: true, 55917 onKeyDown: event => { 55918 if (!!url || event.defaultPrevented || ![external_wp_keycodes_namespaceObject.BACKSPACE, external_wp_keycodes_namespaceObject.DELETE].includes(event.keyCode)) { 55919 return; 55920 } 55921 removeBlock(clientId); 55922 }, 55923 suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalInputControlSuffixWrapper, { 55924 variant: "control", 55925 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 55926 icon: keyboard_return, 55927 label: (0,external_wp_i18n_namespaceObject.__)('Apply'), 55928 type: "submit", 55929 size: "small" 55930 }) 55931 }) 55932 }) 55933 }) 55934 }) 55935 }); 55936 }; 55937 const SocialLinkEdit = ({ 55938 attributes, 55939 context, 55940 isSelected, 55941 setAttributes, 55942 clientId 55943 }) => { 55944 const { 55945 url, 55946 service, 55947 label = '', 55948 rel 55949 } = attributes; 55950 const { 55951 showLabels, 55952 iconColor, 55953 iconColorValue, 55954 iconBackgroundColor, 55955 iconBackgroundColorValue 55956 } = context; 55957 const [showURLPopover, setPopover] = (0,external_wp_element_namespaceObject.useState)(false); 55958 const classes = dist_clsx('wp-social-link', 'wp-social-link-' + service, { 55959 'wp-social-link__is-incomplete': !url, 55960 [`has-$iconColor}-color`]: iconColor, 55961 [`has-$iconBackgroundColor}-background-color`]: iconBackgroundColor 55962 }); 55963 55964 // Use internal state instead of a ref to make sure that the component 55965 // re-renders when the popover's anchor updates. 55966 const [popoverAnchor, setPopoverAnchor] = (0,external_wp_element_namespaceObject.useState)(null); 55967 const IconComponent = getIconBySite(service); 55968 const socialLinkName = getNameBySite(service); 55969 // The initial label (ie. the link text) is an empty string. 55970 // We want to prevent empty links so that the link text always fallbacks to 55971 // the social name, even when users enter and save an empty string or only 55972 // spaces. The PHP render callback fallbacks to the social name as well. 55973 const socialLinkText = label.trim() === '' ? socialLinkName : label; 55974 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 55975 className: classes, 55976 style: { 55977 color: iconColorValue, 55978 backgroundColor: iconBackgroundColorValue 55979 } 55980 }); 55981 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 55982 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 55983 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 55984 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 55985 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelRow, { 55986 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 55987 __next40pxDefaultSize: true, 55988 __nextHasNoMarginBottom: true, 55989 label: (0,external_wp_i18n_namespaceObject.__)('Text'), 55990 help: (0,external_wp_i18n_namespaceObject.__)('The text is visible when enabled from the parent Social Icons block.'), 55991 value: label, 55992 onChange: value => setAttributes({ 55993 label: value 55994 }), 55995 placeholder: socialLinkName 55996 }) 55997 }) 55998 }) 55999 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 56000 group: "advanced", 56001 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 56002 __next40pxDefaultSize: true, 56003 __nextHasNoMarginBottom: true, 56004 label: (0,external_wp_i18n_namespaceObject.__)('Link rel'), 56005 value: rel || '', 56006 onChange: value => setAttributes({ 56007 rel: value 56008 }) 56009 }) 56010 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("li", { 56011 ...blockProps, 56012 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("button", { 56013 className: "wp-block-social-link-anchor", 56014 ref: setPopoverAnchor, 56015 onClick: () => setPopover(true), 56016 "aria-haspopup": "dialog", 56017 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(IconComponent, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 56018 className: dist_clsx('wp-block-social-link-label', { 56019 'screen-reader-text': !showLabels 56020 }), 56021 children: socialLinkText 56022 })] 56023 }), isSelected && showURLPopover && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SocialLinkURLPopover, { 56024 url: url, 56025 setAttributes: setAttributes, 56026 setPopover: setPopover, 56027 popoverAnchor: popoverAnchor, 56028 clientId: clientId 56029 })] 56030 })] 56031 }); 56032 }; 56033 /* harmony default export */ const social_link_edit = (SocialLinkEdit); 56034 56035 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-link/index.js 56036 /** 56037 * WordPress dependencies 56038 */ 56039 56040 56041 /** 56042 * Internal dependencies 56043 */ 56044 56045 56046 const social_link_metadata = { 56047 $schema: "https://schemas.wp.org/trunk/block.json", 56048 apiVersion: 3, 56049 name: "core/social-link", 56050 title: "Social Icon", 56051 category: "widgets", 56052 parent: ["core/social-links"], 56053 description: "Display an icon linking to a social profile or site.", 56054 textdomain: "default", 56055 attributes: { 56056 url: { 56057 type: "string" 56058 }, 56059 service: { 56060 type: "string" 56061 }, 56062 label: { 56063 type: "string" 56064 }, 56065 rel: { 56066 type: "string" 56067 } 56068 }, 56069 usesContext: ["openInNewTab", "showLabels", "iconColor", "iconColorValue", "iconBackgroundColor", "iconBackgroundColorValue"], 56070 supports: { 56071 reusable: false, 56072 html: false, 56073 interactivity: { 56074 clientNavigation: true 56075 } 56076 }, 56077 editorStyle: "wp-block-social-link-editor" 56078 }; 56079 56080 const { 56081 name: social_link_name 56082 } = social_link_metadata; 56083 56084 const social_link_settings = { 56085 icon: library_share, 56086 edit: social_link_edit, 56087 variations: social_link_variations 56088 }; 56089 const social_link_init = () => initBlock({ 56090 name: social_link_name, 56091 metadata: social_link_metadata, 56092 settings: social_link_settings 56093 }); 56094 56095 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-links/deprecated.js 56096 /** 56097 * External dependencies 56098 */ 56099 56100 56101 /** 56102 * WordPress dependencies 56103 */ 56104 56105 56106 /** 56107 * The specific handling by `className` below is needed because `itemsJustification` 56108 * was introduced in https://github.com/WordPress/gutenberg/pull/28980/files and wasn't 56109 * declared in block.json. 56110 * 56111 * @param {Object} attributes Block's attributes. 56112 */ 56113 56114 const social_links_deprecated_migrateWithLayout = attributes => { 56115 if (!!attributes.layout) { 56116 return attributes; 56117 } 56118 const { 56119 className 56120 } = attributes; 56121 // Matches classes with `items-justified-` prefix. 56122 const prefix = `items-justified-`; 56123 const justifiedItemsRegex = new RegExp(`\\b$prefix}[^ ]*[ ]?\\b`, 'g'); 56124 const newAttributes = { 56125 ...attributes, 56126 className: className?.replace(justifiedItemsRegex, '').trim() 56127 }; 56128 /** 56129 * Add `layout` prop only if `justifyContent` is defined, for backwards 56130 * compatibility. In other cases the block's default layout will be used. 56131 * Also noting that due to the missing attribute, it's possible for a block 56132 * to have more than one of `justified` classes. 56133 */ 56134 const justifyContent = className?.match(justifiedItemsRegex)?.[0]?.trim(); 56135 if (justifyContent) { 56136 Object.assign(newAttributes, { 56137 layout: { 56138 type: 'flex', 56139 justifyContent: justifyContent.slice(prefix.length) 56140 } 56141 }); 56142 } 56143 return newAttributes; 56144 }; 56145 56146 // Social Links block deprecations. 56147 const social_links_deprecated_deprecated = [ 56148 // V1. Remove CSS variable use for colors. 56149 { 56150 attributes: { 56151 iconColor: { 56152 type: 'string' 56153 }, 56154 customIconColor: { 56155 type: 'string' 56156 }, 56157 iconColorValue: { 56158 type: 'string' 56159 }, 56160 iconBackgroundColor: { 56161 type: 'string' 56162 }, 56163 customIconBackgroundColor: { 56164 type: 'string' 56165 }, 56166 iconBackgroundColorValue: { 56167 type: 'string' 56168 }, 56169 openInNewTab: { 56170 type: 'boolean', 56171 default: false 56172 }, 56173 size: { 56174 type: 'string' 56175 } 56176 }, 56177 providesContext: { 56178 openInNewTab: 'openInNewTab' 56179 }, 56180 supports: { 56181 align: ['left', 'center', 'right'], 56182 anchor: true 56183 }, 56184 migrate: social_links_deprecated_migrateWithLayout, 56185 save: props => { 56186 const { 56187 attributes: { 56188 iconBackgroundColorValue, 56189 iconColorValue, 56190 itemsJustification, 56191 size 56192 } 56193 } = props; 56194 const className = dist_clsx(size, { 56195 'has-icon-color': iconColorValue, 56196 'has-icon-background-color': iconBackgroundColorValue, 56197 [`items-justified-$itemsJustification}`]: itemsJustification 56198 }); 56199 const style = { 56200 '--wp--social-links--icon-color': iconColorValue, 56201 '--wp--social-links--icon-background-color': iconBackgroundColorValue 56202 }; 56203 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 56204 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 56205 className, 56206 style 56207 }), 56208 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 56209 }); 56210 } 56211 }]; 56212 /* harmony default export */ const social_links_deprecated = (social_links_deprecated_deprecated); 56213 56214 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/check.js 56215 /** 56216 * WordPress dependencies 56217 */ 56218 56219 56220 const check = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 56221 xmlns: "http://www.w3.org/2000/svg", 56222 viewBox: "0 0 24 24", 56223 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 56224 d: "M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z" 56225 }) 56226 }); 56227 /* harmony default export */ const library_check = (check); 56228 56229 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-links/edit.js 56230 /** 56231 * External dependencies 56232 */ 56233 56234 56235 /** 56236 * WordPress dependencies 56237 */ 56238 56239 56240 56241 56242 56243 56244 56245 56246 56247 const sizeOptions = [{ 56248 name: (0,external_wp_i18n_namespaceObject.__)('Small'), 56249 value: 'has-small-icon-size' 56250 }, { 56251 name: (0,external_wp_i18n_namespaceObject.__)('Normal'), 56252 value: 'has-normal-icon-size' 56253 }, { 56254 name: (0,external_wp_i18n_namespaceObject.__)('Large'), 56255 value: 'has-large-icon-size' 56256 }, { 56257 name: (0,external_wp_i18n_namespaceObject.__)('Huge'), 56258 value: 'has-huge-icon-size' 56259 }]; 56260 function SocialLinksEdit(props) { 56261 var _attributes$layout$or; 56262 const { 56263 clientId, 56264 attributes, 56265 iconBackgroundColor, 56266 iconColor, 56267 isSelected, 56268 setAttributes, 56269 setIconBackgroundColor, 56270 setIconColor 56271 } = props; 56272 const { 56273 iconBackgroundColorValue, 56274 customIconBackgroundColor, 56275 iconColorValue, 56276 openInNewTab, 56277 showLabels, 56278 size 56279 } = attributes; 56280 const hasSelectedChild = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).hasSelectedInnerBlock(clientId), [clientId]); 56281 const hasAnySelected = isSelected || hasSelectedChild; 56282 const logosOnly = attributes.className?.includes('is-style-logos-only'); 56283 56284 // Remove icon background color when logos only style is selected or 56285 // restore it when any other style is selected. 56286 const backgroundBackupRef = (0,external_wp_element_namespaceObject.useRef)({}); 56287 (0,external_wp_element_namespaceObject.useEffect)(() => { 56288 if (logosOnly) { 56289 backgroundBackupRef.current = { 56290 iconBackgroundColor, 56291 iconBackgroundColorValue, 56292 customIconBackgroundColor 56293 }; 56294 setAttributes({ 56295 iconBackgroundColor: undefined, 56296 customIconBackgroundColor: undefined, 56297 iconBackgroundColorValue: undefined 56298 }); 56299 } else { 56300 setAttributes({ 56301 ...backgroundBackupRef.current 56302 }); 56303 } 56304 // eslint-disable-next-line react-hooks/exhaustive-deps 56305 }, [logosOnly]); 56306 const SocialPlaceholder = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", { 56307 className: "wp-block-social-links__social-placeholder", 56308 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 56309 className: "wp-block-social-links__social-placeholder-icons", 56310 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 56311 className: "wp-social-link wp-social-link-twitter" 56312 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 56313 className: "wp-social-link wp-social-link-facebook" 56314 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 56315 className: "wp-social-link wp-social-link-instagram" 56316 })] 56317 }) 56318 }); 56319 56320 // Fallback color values are used maintain selections in case switching 56321 // themes and named colors in palette do not match. 56322 const className = dist_clsx(size, { 56323 'has-visible-labels': showLabels, 56324 'has-icon-color': iconColor.color || iconColorValue, 56325 'has-icon-background-color': iconBackgroundColor.color || iconBackgroundColorValue 56326 }); 56327 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 56328 className 56329 }); 56330 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 56331 placeholder: !isSelected && SocialPlaceholder, 56332 templateLock: false, 56333 orientation: (_attributes$layout$or = attributes.layout?.orientation) !== null && _attributes$layout$or !== void 0 ? _attributes$layout$or : 'horizontal', 56334 __experimentalAppenderTagName: 'li', 56335 renderAppender: hasAnySelected && external_wp_blockEditor_namespaceObject.InnerBlocks.ButtonBlockAppender 56336 }); 56337 const POPOVER_PROPS = { 56338 position: 'bottom right' 56339 }; 56340 const colorSettings = [{ 56341 // Use custom attribute as fallback to prevent loss of named color selection when 56342 // switching themes to a new theme that does not have a matching named color. 56343 value: iconColor.color || iconColorValue, 56344 onChange: colorValue => { 56345 setIconColor(colorValue); 56346 setAttributes({ 56347 iconColorValue: colorValue 56348 }); 56349 }, 56350 label: (0,external_wp_i18n_namespaceObject.__)('Icon color'), 56351 resetAllFilter: () => { 56352 setIconColor(undefined); 56353 setAttributes({ 56354 iconColorValue: undefined 56355 }); 56356 } 56357 }]; 56358 if (!logosOnly) { 56359 colorSettings.push({ 56360 // Use custom attribute as fallback to prevent loss of named color selection when 56361 // switching themes to a new theme that does not have a matching named color. 56362 value: iconBackgroundColor.color || iconBackgroundColorValue, 56363 onChange: colorValue => { 56364 setIconBackgroundColor(colorValue); 56365 setAttributes({ 56366 iconBackgroundColorValue: colorValue 56367 }); 56368 }, 56369 label: (0,external_wp_i18n_namespaceObject.__)('Icon background'), 56370 resetAllFilter: () => { 56371 setIconBackgroundColor(undefined); 56372 setAttributes({ 56373 iconBackgroundColorValue: undefined 56374 }); 56375 } 56376 }); 56377 } 56378 const colorGradientSettings = (0,external_wp_blockEditor_namespaceObject.__experimentalUseMultipleOriginColorsAndGradients)(); 56379 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 56380 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 56381 group: "other", 56382 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarDropdownMenu, { 56383 label: (0,external_wp_i18n_namespaceObject.__)('Size'), 56384 text: (0,external_wp_i18n_namespaceObject.__)('Size'), 56385 icon: null, 56386 popoverProps: POPOVER_PROPS, 56387 children: ({ 56388 onClose 56389 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, { 56390 children: sizeOptions.map(entry => { 56391 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { 56392 icon: (size === entry.value || !size && entry.value === 'has-normal-icon-size') && library_check, 56393 isSelected: size === entry.value, 56394 onClick: () => { 56395 setAttributes({ 56396 size: entry.value 56397 }); 56398 }, 56399 onClose: onClose, 56400 role: "menuitemradio", 56401 children: entry.name 56402 }, entry.value); 56403 }) 56404 }) 56405 }) 56406 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 56407 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 56408 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 56409 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 56410 __nextHasNoMarginBottom: true, 56411 label: (0,external_wp_i18n_namespaceObject.__)('Open links in new tab'), 56412 checked: openInNewTab, 56413 onChange: () => setAttributes({ 56414 openInNewTab: !openInNewTab 56415 }) 56416 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 56417 __nextHasNoMarginBottom: true, 56418 label: (0,external_wp_i18n_namespaceObject.__)('Show text'), 56419 checked: showLabels, 56420 onChange: () => setAttributes({ 56421 showLabels: !showLabels 56422 }) 56423 })] 56424 }) 56425 }), colorGradientSettings.hasColorsOrGradients && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.InspectorControls, { 56426 group: "color", 56427 children: [colorSettings.map(({ 56428 onChange, 56429 label, 56430 value, 56431 resetAllFilter 56432 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalColorGradientSettingsDropdown, { 56433 __experimentalIsRenderedInSidebar: true, 56434 settings: [{ 56435 colorValue: value, 56436 label, 56437 onColorChange: onChange, 56438 isShownByDefault: true, 56439 resetAllFilter, 56440 enableAlpha: true 56441 }], 56442 panelId: clientId, 56443 ...colorGradientSettings 56444 }, `social-links-color-$label}`)), !logosOnly && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.ContrastChecker, { 56445 textColor: iconColorValue, 56446 backgroundColor: iconBackgroundColorValue, 56447 isLargeText: false 56448 })] 56449 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 56450 ...innerBlocksProps 56451 })] 56452 }); 56453 } 56454 const iconColorAttributes = { 56455 iconColor: 'icon-color', 56456 iconBackgroundColor: 'icon-background-color' 56457 }; 56458 /* harmony default export */ const social_links_edit = ((0,external_wp_blockEditor_namespaceObject.withColors)(iconColorAttributes)(SocialLinksEdit)); 56459 56460 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-links/save.js 56461 /** 56462 * External dependencies 56463 */ 56464 56465 56466 /** 56467 * WordPress dependencies 56468 */ 56469 56470 56471 function social_links_save_save(props) { 56472 const { 56473 attributes: { 56474 iconBackgroundColorValue, 56475 iconColorValue, 56476 showLabels, 56477 size 56478 } 56479 } = props; 56480 const className = dist_clsx(size, { 56481 'has-visible-labels': showLabels, 56482 'has-icon-color': iconColorValue, 56483 'has-icon-background-color': iconBackgroundColorValue 56484 }); 56485 const blockProps = external_wp_blockEditor_namespaceObject.useBlockProps.save({ 56486 className 56487 }); 56488 const innerBlocksProps = external_wp_blockEditor_namespaceObject.useInnerBlocksProps.save(blockProps); 56489 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { 56490 ...innerBlocksProps 56491 }); 56492 } 56493 56494 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/social-links/index.js 56495 /** 56496 * WordPress dependencies 56497 */ 56498 56499 56500 /** 56501 * Internal dependencies 56502 */ 56503 56504 56505 56506 const social_links_metadata = { 56507 $schema: "https://schemas.wp.org/trunk/block.json", 56508 apiVersion: 3, 56509 name: "core/social-links", 56510 title: "Social Icons", 56511 category: "widgets", 56512 allowedBlocks: ["core/social-link"], 56513 description: "Display icons linking to your social profiles or sites.", 56514 keywords: ["links"], 56515 textdomain: "default", 56516 attributes: { 56517 iconColor: { 56518 type: "string" 56519 }, 56520 customIconColor: { 56521 type: "string" 56522 }, 56523 iconColorValue: { 56524 type: "string" 56525 }, 56526 iconBackgroundColor: { 56527 type: "string" 56528 }, 56529 customIconBackgroundColor: { 56530 type: "string" 56531 }, 56532 iconBackgroundColorValue: { 56533 type: "string" 56534 }, 56535 openInNewTab: { 56536 type: "boolean", 56537 "default": false 56538 }, 56539 showLabels: { 56540 type: "boolean", 56541 "default": false 56542 }, 56543 size: { 56544 type: "string" 56545 } 56546 }, 56547 providesContext: { 56548 openInNewTab: "openInNewTab", 56549 showLabels: "showLabels", 56550 iconColor: "iconColor", 56551 iconColorValue: "iconColorValue", 56552 iconBackgroundColor: "iconBackgroundColor", 56553 iconBackgroundColorValue: "iconBackgroundColorValue" 56554 }, 56555 supports: { 56556 align: ["left", "center", "right"], 56557 anchor: true, 56558 __experimentalExposeControlsToChildren: true, 56559 layout: { 56560 allowSwitching: false, 56561 allowInheriting: false, 56562 allowVerticalAlignment: false, 56563 "default": { 56564 type: "flex" 56565 } 56566 }, 56567 color: { 56568 enableContrastChecker: false, 56569 background: true, 56570 gradients: true, 56571 text: false, 56572 __experimentalDefaultControls: { 56573 background: false 56574 } 56575 }, 56576 spacing: { 56577 blockGap: ["horizontal", "vertical"], 56578 margin: true, 56579 padding: true, 56580 units: ["px", "em", "rem", "vh", "vw"], 56581 __experimentalDefaultControls: { 56582 blockGap: true, 56583 margin: true, 56584 padding: false 56585 } 56586 }, 56587 interactivity: { 56588 clientNavigation: true 56589 }, 56590 __experimentalBorder: { 56591 radius: true, 56592 color: true, 56593 width: true, 56594 style: true, 56595 __experimentalDefaultControls: { 56596 radius: true, 56597 color: true, 56598 width: true, 56599 style: true 56600 } 56601 } 56602 }, 56603 styles: [{ 56604 name: "default", 56605 label: "Default", 56606 isDefault: true 56607 }, { 56608 name: "logos-only", 56609 label: "Logos Only" 56610 }, { 56611 name: "pill-shape", 56612 label: "Pill Shape" 56613 }], 56614 editorStyle: "wp-block-social-links-editor", 56615 style: "wp-block-social-links" 56616 }; 56617 56618 const { 56619 name: social_links_name 56620 } = social_links_metadata; 56621 56622 const social_links_settings = { 56623 example: { 56624 innerBlocks: [{ 56625 name: 'core/social-link', 56626 attributes: { 56627 service: 'wordpress', 56628 url: 'https://wordpress.org' 56629 } 56630 }, { 56631 name: 'core/social-link', 56632 attributes: { 56633 service: 'facebook', 56634 url: 'https://www.facebook.com/WordPress/' 56635 } 56636 }, { 56637 name: 'core/social-link', 56638 attributes: { 56639 service: 'twitter', 56640 url: 'https://twitter.com/WordPress' 56641 } 56642 }] 56643 }, 56644 icon: library_share, 56645 edit: social_links_edit, 56646 save: social_links_save_save, 56647 deprecated: social_links_deprecated 56648 }; 56649 const social_links_init = () => initBlock({ 56650 name: social_links_name, 56651 metadata: social_links_metadata, 56652 settings: social_links_settings 56653 }); 56654 56655 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/resize-corner-n-e.js 56656 /** 56657 * WordPress dependencies 56658 */ 56659 56660 56661 const resizeCornerNE = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 56662 viewBox: "0 0 24 24", 56663 xmlns: "http://www.w3.org/2000/svg", 56664 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 56665 d: "M7 18h4.5v1.5h-7v-7H6V17L17 6h-4.5V4.5h7v7H18V7L7 18Z" 56666 }) 56667 }); 56668 /* harmony default export */ const resize_corner_n_e = (resizeCornerNE); 56669 56670 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/spacer/deprecated.js 56671 /** 56672 * WordPress dependencies 56673 */ 56674 56675 56676 const spacer_deprecated_deprecated = [{ 56677 attributes: { 56678 height: { 56679 type: 'number', 56680 default: 100 56681 }, 56682 width: { 56683 type: 'number' 56684 } 56685 }, 56686 migrate(attributes) { 56687 const { 56688 height, 56689 width 56690 } = attributes; 56691 return { 56692 ...attributes, 56693 width: width !== undefined ? `$width}px` : undefined, 56694 height: height !== undefined ? `$height}px` : undefined 56695 }; 56696 }, 56697 save({ 56698 attributes 56699 }) { 56700 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 56701 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 56702 style: { 56703 height: attributes.height, 56704 width: attributes.width 56705 }, 56706 'aria-hidden': true 56707 }) 56708 }); 56709 } 56710 }]; 56711 /* harmony default export */ const spacer_deprecated = (spacer_deprecated_deprecated); 56712 56713 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/spacer/constants.js 56714 const MIN_SPACER_SIZE = 0; 56715 56716 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/spacer/controls.js 56717 /** 56718 * WordPress dependencies 56719 */ 56720 56721 56722 56723 56724 56725 56726 /** 56727 * Internal dependencies 56728 */ 56729 56730 56731 56732 56733 56734 const { 56735 useSpacingSizes 56736 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 56737 function DimensionInput({ 56738 label, 56739 onChange, 56740 isResizing, 56741 value = '' 56742 }) { 56743 const inputId = (0,external_wp_compose_namespaceObject.useInstanceId)(external_wp_components_namespaceObject.__experimentalUnitControl, 'block-spacer-height-input'); 56744 const spacingSizes = useSpacingSizes(); 56745 const [spacingUnits] = (0,external_wp_blockEditor_namespaceObject.useSettings)('spacing.units'); 56746 // In most contexts the spacer size cannot meaningfully be set to a 56747 // percentage, since this is relative to the parent container. This 56748 // unit is disabled from the UI. 56749 const availableUnits = spacingUnits ? spacingUnits.filter(unit => unit !== '%') : ['px', 'em', 'rem', 'vw', 'vh']; 56750 const units = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({ 56751 availableUnits, 56752 defaultValues: { 56753 px: 100, 56754 em: 10, 56755 rem: 10, 56756 vw: 10, 56757 vh: 25 56758 } 56759 }); 56760 const handleOnChange = unprocessedValue => { 56761 onChange(unprocessedValue.all); 56762 }; 56763 56764 // Force the unit to update to `px` when the Spacer is being resized. 56765 const [parsedQuantity, parsedUnit] = (0,external_wp_components_namespaceObject.__experimentalParseQuantityAndUnitFromRawValue)(value); 56766 const computedValue = (0,external_wp_blockEditor_namespaceObject.isValueSpacingPreset)(value) ? value : [parsedQuantity, isResizing ? 'px' : parsedUnit].join(''); 56767 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 56768 children: [(!spacingSizes || spacingSizes?.length === 0) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalUnitControl, { 56769 id: inputId, 56770 isResetValueOnUnitChange: true, 56771 min: MIN_SPACER_SIZE, 56772 onChange: handleOnChange, 56773 value: computedValue, 56774 units: units, 56775 label: label, 56776 __next40pxDefaultSize: true 56777 }), spacingSizes?.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.View, { 56778 className: "tools-panel-item-spacing", 56779 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalSpacingSizesControl, { 56780 values: { 56781 all: computedValue 56782 }, 56783 onChange: handleOnChange, 56784 label: label, 56785 sides: ['all'], 56786 units: units, 56787 allowReset: false, 56788 splitOnAxis: false, 56789 showSideInLabel: false 56790 }) 56791 })] 56792 }); 56793 } 56794 function SpacerControls({ 56795 setAttributes, 56796 orientation, 56797 height, 56798 width, 56799 isResizing 56800 }) { 56801 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 56802 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 56803 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 56804 children: [orientation === 'horizontal' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DimensionInput, { 56805 label: (0,external_wp_i18n_namespaceObject.__)('Width'), 56806 value: width, 56807 onChange: nextWidth => setAttributes({ 56808 width: nextWidth 56809 }), 56810 isResizing: isResizing 56811 }), orientation !== 'horizontal' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DimensionInput, { 56812 label: (0,external_wp_i18n_namespaceObject.__)('Height'), 56813 value: height, 56814 onChange: nextHeight => setAttributes({ 56815 height: nextHeight 56816 }), 56817 isResizing: isResizing 56818 })] 56819 }) 56820 }); 56821 } 56822 56823 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/spacer/edit.js 56824 /** 56825 * External dependencies 56826 */ 56827 56828 56829 /** 56830 * WordPress dependencies 56831 */ 56832 56833 56834 56835 56836 56837 56838 /** 56839 * Internal dependencies 56840 */ 56841 56842 56843 56844 56845 56846 56847 const { 56848 useSpacingSizes: edit_useSpacingSizes 56849 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 56850 const ResizableSpacer = ({ 56851 orientation, 56852 onResizeStart, 56853 onResize, 56854 onResizeStop, 56855 isSelected, 56856 isResizing, 56857 setIsResizing, 56858 ...props 56859 }) => { 56860 const getCurrentSize = elt => { 56861 return orientation === 'horizontal' ? elt.clientWidth : elt.clientHeight; 56862 }; 56863 const getNextVal = elt => { 56864 return `$getCurrentSize(elt)}px`; 56865 }; 56866 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ResizableBox, { 56867 className: dist_clsx('block-library-spacer__resize-container', { 56868 'resize-horizontal': orientation === 'horizontal', 56869 'is-resizing': isResizing, 56870 'is-selected': isSelected 56871 }), 56872 onResizeStart: (_event, _direction, elt) => { 56873 const nextVal = getNextVal(elt); 56874 onResizeStart(nextVal); 56875 onResize(nextVal); 56876 }, 56877 onResize: (_event, _direction, elt) => { 56878 onResize(getNextVal(elt)); 56879 if (!isResizing) { 56880 setIsResizing(true); 56881 } 56882 }, 56883 onResizeStop: (_event, _direction, elt) => { 56884 const nextVal = getCurrentSize(elt); 56885 onResizeStop(`$nextVal}px`); 56886 setIsResizing(false); 56887 }, 56888 __experimentalShowTooltip: true, 56889 __experimentalTooltipProps: { 56890 axis: orientation === 'horizontal' ? 'x' : 'y', 56891 position: 'corner', 56892 isVisible: isResizing 56893 }, 56894 showHandle: isSelected, 56895 ...props 56896 }); 56897 }; 56898 const SpacerEdit = ({ 56899 attributes, 56900 isSelected, 56901 setAttributes, 56902 toggleSelection, 56903 context, 56904 __unstableParentLayout: parentLayout, 56905 className 56906 }) => { 56907 const disableCustomSpacingSizes = (0,external_wp_data_namespaceObject.useSelect)(select => { 56908 const editorSettings = select(external_wp_blockEditor_namespaceObject.store).getSettings(); 56909 return editorSettings?.disableCustomSpacingSizes; 56910 }); 56911 const { 56912 orientation 56913 } = context; 56914 const { 56915 orientation: parentOrientation, 56916 type, 56917 default: { 56918 type: defaultType 56919 } = {} 56920 } = parentLayout || {}; 56921 // Check if the spacer is inside a flex container. 56922 const isFlexLayout = type === 'flex' || !type && defaultType === 'flex'; 56923 // If the spacer is inside a flex container, it should either inherit the orientation 56924 // of the parent or use the flex default orientation. 56925 const inheritedOrientation = !parentOrientation && isFlexLayout ? 'horizontal' : parentOrientation || orientation; 56926 const { 56927 height, 56928 width, 56929 style: blockStyle = {} 56930 } = attributes; 56931 const { 56932 layout = {} 56933 } = blockStyle; 56934 const { 56935 selfStretch, 56936 flexSize 56937 } = layout; 56938 const spacingSizes = edit_useSpacingSizes(); 56939 const [isResizing, setIsResizing] = (0,external_wp_element_namespaceObject.useState)(false); 56940 const [temporaryHeight, setTemporaryHeight] = (0,external_wp_element_namespaceObject.useState)(null); 56941 const [temporaryWidth, setTemporaryWidth] = (0,external_wp_element_namespaceObject.useState)(null); 56942 const onResizeStart = () => toggleSelection(false); 56943 const onResizeStop = () => toggleSelection(true); 56944 const handleOnVerticalResizeStop = newHeight => { 56945 onResizeStop(); 56946 if (isFlexLayout) { 56947 setAttributes({ 56948 style: { 56949 ...blockStyle, 56950 layout: { 56951 ...layout, 56952 flexSize: newHeight, 56953 selfStretch: 'fixed' 56954 } 56955 } 56956 }); 56957 } 56958 setAttributes({ 56959 height: newHeight 56960 }); 56961 setTemporaryHeight(null); 56962 }; 56963 const handleOnHorizontalResizeStop = newWidth => { 56964 onResizeStop(); 56965 if (isFlexLayout) { 56966 setAttributes({ 56967 style: { 56968 ...blockStyle, 56969 layout: { 56970 ...layout, 56971 flexSize: newWidth, 56972 selfStretch: 'fixed' 56973 } 56974 } 56975 }); 56976 } 56977 setAttributes({ 56978 width: newWidth 56979 }); 56980 setTemporaryWidth(null); 56981 }; 56982 const getHeightForVerticalBlocks = () => { 56983 if (isFlexLayout) { 56984 return undefined; 56985 } 56986 return temporaryHeight || (0,external_wp_blockEditor_namespaceObject.getSpacingPresetCssVar)(height) || undefined; 56987 }; 56988 const getWidthForHorizontalBlocks = () => { 56989 if (isFlexLayout) { 56990 return undefined; 56991 } 56992 return temporaryWidth || (0,external_wp_blockEditor_namespaceObject.getSpacingPresetCssVar)(width) || undefined; 56993 }; 56994 const sizeConditionalOnOrientation = inheritedOrientation === 'horizontal' ? temporaryWidth || flexSize : temporaryHeight || flexSize; 56995 const style = { 56996 height: inheritedOrientation === 'horizontal' ? 24 : getHeightForVerticalBlocks(), 56997 width: inheritedOrientation === 'horizontal' ? getWidthForHorizontalBlocks() : undefined, 56998 // In vertical flex containers, the spacer shrinks to nothing without a minimum width. 56999 minWidth: inheritedOrientation === 'vertical' && isFlexLayout ? 48 : undefined, 57000 // Add flex-basis so temporary sizes are respected. 57001 flexBasis: isFlexLayout ? sizeConditionalOnOrientation : undefined, 57002 // Remove flex-grow when resizing. 57003 flexGrow: isFlexLayout && isResizing ? 0 : undefined 57004 }; 57005 const resizableBoxWithOrientation = blockOrientation => { 57006 if (blockOrientation === 'horizontal') { 57007 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResizableSpacer, { 57008 minWidth: MIN_SPACER_SIZE, 57009 enable: { 57010 top: false, 57011 right: true, 57012 bottom: false, 57013 left: false, 57014 topRight: false, 57015 bottomRight: false, 57016 bottomLeft: false, 57017 topLeft: false 57018 }, 57019 orientation: blockOrientation, 57020 onResizeStart: onResizeStart, 57021 onResize: setTemporaryWidth, 57022 onResizeStop: handleOnHorizontalResizeStop, 57023 isSelected: isSelected, 57024 isResizing: isResizing, 57025 setIsResizing: setIsResizing 57026 }); 57027 } 57028 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 57029 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResizableSpacer, { 57030 minHeight: MIN_SPACER_SIZE, 57031 enable: { 57032 top: false, 57033 right: false, 57034 bottom: true, 57035 left: false, 57036 topRight: false, 57037 bottomRight: false, 57038 bottomLeft: false, 57039 topLeft: false 57040 }, 57041 orientation: blockOrientation, 57042 onResizeStart: onResizeStart, 57043 onResize: setTemporaryHeight, 57044 onResizeStop: handleOnVerticalResizeStop, 57045 isSelected: isSelected, 57046 isResizing: isResizing, 57047 setIsResizing: setIsResizing 57048 }) 57049 }); 57050 }; 57051 (0,external_wp_element_namespaceObject.useEffect)(() => { 57052 if (isFlexLayout && selfStretch !== 'fill' && selfStretch !== 'fit' && !flexSize) { 57053 if (inheritedOrientation === 'horizontal') { 57054 // If spacer is moving from a vertical container to a horizontal container, 57055 // it might not have width but have height instead. 57056 const newSize = (0,external_wp_blockEditor_namespaceObject.getCustomValueFromPreset)(width, spacingSizes) || (0,external_wp_blockEditor_namespaceObject.getCustomValueFromPreset)(height, spacingSizes) || '100px'; 57057 setAttributes({ 57058 width: '0px', 57059 style: { 57060 ...blockStyle, 57061 layout: { 57062 ...layout, 57063 flexSize: newSize, 57064 selfStretch: 'fixed' 57065 } 57066 } 57067 }); 57068 } else { 57069 const newSize = (0,external_wp_blockEditor_namespaceObject.getCustomValueFromPreset)(height, spacingSizes) || (0,external_wp_blockEditor_namespaceObject.getCustomValueFromPreset)(width, spacingSizes) || '100px'; 57070 setAttributes({ 57071 height: '0px', 57072 style: { 57073 ...blockStyle, 57074 layout: { 57075 ...layout, 57076 flexSize: newSize, 57077 selfStretch: 'fixed' 57078 } 57079 } 57080 }); 57081 } 57082 } else if (isFlexLayout && (selfStretch === 'fill' || selfStretch === 'fit')) { 57083 if (inheritedOrientation === 'horizontal') { 57084 setAttributes({ 57085 width: undefined 57086 }); 57087 } else { 57088 setAttributes({ 57089 height: undefined 57090 }); 57091 } 57092 } else if (!isFlexLayout && (selfStretch || flexSize)) { 57093 if (inheritedOrientation === 'horizontal') { 57094 setAttributes({ 57095 width: flexSize 57096 }); 57097 } else { 57098 setAttributes({ 57099 height: flexSize 57100 }); 57101 } 57102 setAttributes({ 57103 style: { 57104 ...blockStyle, 57105 layout: { 57106 ...layout, 57107 flexSize: undefined, 57108 selfStretch: undefined 57109 } 57110 } 57111 }); 57112 } 57113 }, [blockStyle, flexSize, height, inheritedOrientation, isFlexLayout, layout, selfStretch, setAttributes, spacingSizes, width]); 57114 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 57115 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.View, { 57116 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 57117 style, 57118 className: dist_clsx(className, { 57119 'custom-sizes-disabled': disableCustomSpacingSizes 57120 }) 57121 }), 57122 children: resizableBoxWithOrientation(inheritedOrientation) 57123 }), !isFlexLayout && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SpacerControls, { 57124 setAttributes: setAttributes, 57125 height: temporaryHeight || height, 57126 width: temporaryWidth || width, 57127 orientation: inheritedOrientation, 57128 isResizing: isResizing 57129 })] 57130 }); 57131 }; 57132 /* harmony default export */ const spacer_edit = (SpacerEdit); 57133 57134 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/spacer/save.js 57135 /** 57136 * WordPress dependencies 57137 */ 57138 57139 57140 function spacer_save_save({ 57141 attributes 57142 }) { 57143 const { 57144 height, 57145 width, 57146 style 57147 } = attributes; 57148 const { 57149 layout: { 57150 selfStretch 57151 } = {} 57152 } = style || {}; 57153 // If selfStretch is set to 'fill' or 'fit', don't set default height. 57154 const finalHeight = selfStretch === 'fill' || selfStretch === 'fit' ? undefined : height; 57155 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 57156 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 57157 style: { 57158 height: (0,external_wp_blockEditor_namespaceObject.getSpacingPresetCssVar)(finalHeight), 57159 width: (0,external_wp_blockEditor_namespaceObject.getSpacingPresetCssVar)(width) 57160 }, 57161 'aria-hidden': true 57162 }) 57163 }); 57164 } 57165 57166 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/spacer/index.js 57167 /** 57168 * WordPress dependencies 57169 */ 57170 57171 57172 /** 57173 * Internal dependencies 57174 */ 57175 57176 57177 57178 const spacer_metadata = { 57179 $schema: "https://schemas.wp.org/trunk/block.json", 57180 apiVersion: 3, 57181 name: "core/spacer", 57182 title: "Spacer", 57183 category: "design", 57184 description: "Add white space between blocks and customize its height.", 57185 textdomain: "default", 57186 attributes: { 57187 height: { 57188 type: "string", 57189 "default": "100px" 57190 }, 57191 width: { 57192 type: "string" 57193 } 57194 }, 57195 usesContext: ["orientation"], 57196 supports: { 57197 anchor: true, 57198 spacing: { 57199 margin: ["top", "bottom"], 57200 __experimentalDefaultControls: { 57201 margin: true 57202 } 57203 }, 57204 interactivity: { 57205 clientNavigation: true 57206 } 57207 }, 57208 editorStyle: "wp-block-spacer-editor", 57209 style: "wp-block-spacer" 57210 }; 57211 57212 const { 57213 name: spacer_name 57214 } = spacer_metadata; 57215 57216 const spacer_settings = { 57217 icon: resize_corner_n_e, 57218 edit: spacer_edit, 57219 save: spacer_save_save, 57220 deprecated: spacer_deprecated 57221 }; 57222 const spacer_init = () => initBlock({ 57223 name: spacer_name, 57224 metadata: spacer_metadata, 57225 settings: spacer_settings 57226 }); 57227 57228 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/block-table.js 57229 /** 57230 * WordPress dependencies 57231 */ 57232 57233 57234 const blockTable = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 57235 viewBox: "0 0 24 24", 57236 xmlns: "http://www.w3.org/2000/svg", 57237 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 57238 d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z" 57239 }) 57240 }); 57241 /* harmony default export */ const block_table = (blockTable); 57242 57243 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/table/deprecated.js 57244 /** 57245 * External dependencies 57246 */ 57247 57248 57249 /** 57250 * WordPress dependencies 57251 */ 57252 57253 57254 // As the previous arbitrary colors won't match theme color palettes, the hex 57255 // value will be mapped to the style.color.background attribute as if it was 57256 // a custom color selection. 57257 57258 57259 const oldColors = { 57260 'subtle-light-gray': '#f3f4f5', 57261 'subtle-pale-green': '#e9fbe5', 57262 'subtle-pale-blue': '#e7f5fe', 57263 'subtle-pale-pink': '#fcf0ef' 57264 }; 57265 57266 // Fixed width table cells on by default. 57267 const v4Query = { 57268 content: { 57269 type: 'rich-text', 57270 source: 'rich-text' 57271 }, 57272 tag: { 57273 type: 'string', 57274 default: 'td', 57275 source: 'tag' 57276 }, 57277 scope: { 57278 type: 'string', 57279 source: 'attribute', 57280 attribute: 'scope' 57281 }, 57282 align: { 57283 type: 'string', 57284 source: 'attribute', 57285 attribute: 'data-align' 57286 }, 57287 colspan: { 57288 type: 'string', 57289 source: 'attribute', 57290 attribute: 'colspan' 57291 }, 57292 rowspan: { 57293 type: 'string', 57294 source: 'attribute', 57295 attribute: 'rowspan' 57296 } 57297 }; 57298 const table_deprecated_v4 = { 57299 attributes: { 57300 hasFixedLayout: { 57301 type: 'boolean', 57302 default: false 57303 }, 57304 caption: { 57305 type: 'rich-text', 57306 source: 'rich-text', 57307 selector: 'figcaption' 57308 }, 57309 head: { 57310 type: 'array', 57311 default: [], 57312 source: 'query', 57313 selector: 'thead tr', 57314 query: { 57315 cells: { 57316 type: 'array', 57317 default: [], 57318 source: 'query', 57319 selector: 'td,th', 57320 query: v4Query 57321 } 57322 } 57323 }, 57324 body: { 57325 type: 'array', 57326 default: [], 57327 source: 'query', 57328 selector: 'tbody tr', 57329 query: { 57330 cells: { 57331 type: 'array', 57332 default: [], 57333 source: 'query', 57334 selector: 'td,th', 57335 query: v4Query 57336 } 57337 } 57338 }, 57339 foot: { 57340 type: 'array', 57341 default: [], 57342 source: 'query', 57343 selector: 'tfoot tr', 57344 query: { 57345 cells: { 57346 type: 'array', 57347 default: [], 57348 source: 'query', 57349 selector: 'td,th', 57350 query: v4Query 57351 } 57352 } 57353 } 57354 }, 57355 supports: { 57356 anchor: true, 57357 align: true, 57358 color: { 57359 __experimentalSkipSerialization: true, 57360 gradients: true, 57361 __experimentalDefaultControls: { 57362 background: true, 57363 text: true 57364 } 57365 }, 57366 spacing: { 57367 margin: true, 57368 padding: true, 57369 __experimentalDefaultControls: { 57370 margin: false, 57371 padding: false 57372 } 57373 }, 57374 typography: { 57375 fontSize: true, 57376 lineHeight: true, 57377 __experimentalFontFamily: true, 57378 __experimentalFontStyle: true, 57379 __experimentalFontWeight: true, 57380 __experimentalLetterSpacing: true, 57381 __experimentalTextTransform: true, 57382 __experimentalTextDecoration: true, 57383 __experimentalDefaultControls: { 57384 fontSize: true 57385 } 57386 }, 57387 __experimentalBorder: { 57388 __experimentalSkipSerialization: true, 57389 color: true, 57390 style: true, 57391 width: true, 57392 __experimentalDefaultControls: { 57393 color: true, 57394 style: true, 57395 width: true 57396 } 57397 }, 57398 __experimentalSelector: '.wp-block-table > table', 57399 interactivity: { 57400 clientNavigation: true 57401 } 57402 }, 57403 save({ 57404 attributes 57405 }) { 57406 const { 57407 hasFixedLayout, 57408 head, 57409 body, 57410 foot, 57411 caption 57412 } = attributes; 57413 const isEmpty = !head.length && !body.length && !foot.length; 57414 if (isEmpty) { 57415 return null; 57416 } 57417 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetColorClassesAndStyles)(attributes); 57418 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetBorderClassesAndStyles)(attributes); 57419 const classes = dist_clsx(colorProps.className, borderProps.className, { 57420 'has-fixed-layout': hasFixedLayout 57421 }); 57422 const hasCaption = !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption); 57423 const Section = ({ 57424 type, 57425 rows 57426 }) => { 57427 if (!rows.length) { 57428 return null; 57429 } 57430 const Tag = `t$type}`; 57431 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 57432 children: rows.map(({ 57433 cells 57434 }, rowIndex) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("tr", { 57435 children: cells.map(({ 57436 content, 57437 tag, 57438 scope, 57439 align, 57440 colspan, 57441 rowspan 57442 }, cellIndex) => { 57443 const cellClasses = dist_clsx({ 57444 [`has-text-align-$align}`]: align 57445 }); 57446 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 57447 className: cellClasses ? cellClasses : undefined, 57448 "data-align": align, 57449 tagName: tag, 57450 value: content, 57451 scope: tag === 'th' ? scope : undefined, 57452 colSpan: colspan, 57453 rowSpan: rowspan 57454 }, cellIndex); 57455 }) 57456 }, rowIndex)) 57457 }); 57458 }; 57459 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 57460 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 57461 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("table", { 57462 className: classes === '' ? undefined : classes, 57463 style: { 57464 ...colorProps.style, 57465 ...borderProps.style 57466 }, 57467 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 57468 type: "head", 57469 rows: head 57470 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 57471 type: "body", 57472 rows: body 57473 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 57474 type: "foot", 57475 rows: foot 57476 })] 57477 }), hasCaption && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 57478 tagName: "figcaption", 57479 value: caption, 57480 className: (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('caption') 57481 })] 57482 }); 57483 } 57484 }; 57485 57486 // In #41140 support was added to global styles for caption elements which 57487 // added a `wp-element-caption` classname to the embed figcaption element. 57488 const v3Query = { 57489 content: { 57490 type: 'string', 57491 source: 'html' 57492 }, 57493 tag: { 57494 type: 'string', 57495 default: 'td', 57496 source: 'tag' 57497 }, 57498 scope: { 57499 type: 'string', 57500 source: 'attribute', 57501 attribute: 'scope' 57502 }, 57503 align: { 57504 type: 'string', 57505 source: 'attribute', 57506 attribute: 'data-align' 57507 } 57508 }; 57509 const table_deprecated_v3 = { 57510 attributes: { 57511 hasFixedLayout: { 57512 type: 'boolean', 57513 default: false 57514 }, 57515 caption: { 57516 type: 'string', 57517 source: 'html', 57518 selector: 'figcaption', 57519 default: '' 57520 }, 57521 head: { 57522 type: 'array', 57523 default: [], 57524 source: 'query', 57525 selector: 'thead tr', 57526 query: { 57527 cells: { 57528 type: 'array', 57529 default: [], 57530 source: 'query', 57531 selector: 'td,th', 57532 query: v3Query 57533 } 57534 } 57535 }, 57536 body: { 57537 type: 'array', 57538 default: [], 57539 source: 'query', 57540 selector: 'tbody tr', 57541 query: { 57542 cells: { 57543 type: 'array', 57544 default: [], 57545 source: 'query', 57546 selector: 'td,th', 57547 query: v3Query 57548 } 57549 } 57550 }, 57551 foot: { 57552 type: 'array', 57553 default: [], 57554 source: 'query', 57555 selector: 'tfoot tr', 57556 query: { 57557 cells: { 57558 type: 'array', 57559 default: [], 57560 source: 'query', 57561 selector: 'td,th', 57562 query: v3Query 57563 } 57564 } 57565 } 57566 }, 57567 supports: { 57568 anchor: true, 57569 align: true, 57570 color: { 57571 __experimentalSkipSerialization: true, 57572 gradients: true, 57573 __experimentalDefaultControls: { 57574 background: true, 57575 text: true 57576 } 57577 }, 57578 spacing: { 57579 margin: true, 57580 padding: true 57581 }, 57582 typography: { 57583 fontSize: true, 57584 lineHeight: true, 57585 __experimentalFontFamily: true, 57586 __experimentalFontStyle: true, 57587 __experimentalFontWeight: true, 57588 __experimentalLetterSpacing: true, 57589 __experimentalTextTransform: true, 57590 __experimentalTextDecoration: true, 57591 __experimentalDefaultControls: { 57592 fontSize: true 57593 } 57594 }, 57595 __experimentalBorder: { 57596 __experimentalSkipSerialization: true, 57597 color: true, 57598 style: true, 57599 width: true, 57600 __experimentalDefaultControls: { 57601 color: true, 57602 style: true, 57603 width: true 57604 } 57605 }, 57606 __experimentalSelector: '.wp-block-table > table' 57607 }, 57608 save({ 57609 attributes 57610 }) { 57611 const { 57612 hasFixedLayout, 57613 head, 57614 body, 57615 foot, 57616 caption 57617 } = attributes; 57618 const isEmpty = !head.length && !body.length && !foot.length; 57619 if (isEmpty) { 57620 return null; 57621 } 57622 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetColorClassesAndStyles)(attributes); 57623 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetBorderClassesAndStyles)(attributes); 57624 const classes = dist_clsx(colorProps.className, borderProps.className, { 57625 'has-fixed-layout': hasFixedLayout 57626 }); 57627 const hasCaption = !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption); 57628 const Section = ({ 57629 type, 57630 rows 57631 }) => { 57632 if (!rows.length) { 57633 return null; 57634 } 57635 const Tag = `t$type}`; 57636 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 57637 children: rows.map(({ 57638 cells 57639 }, rowIndex) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("tr", { 57640 children: cells.map(({ 57641 content, 57642 tag, 57643 scope, 57644 align 57645 }, cellIndex) => { 57646 const cellClasses = dist_clsx({ 57647 [`has-text-align-$align}`]: align 57648 }); 57649 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 57650 className: cellClasses ? cellClasses : undefined, 57651 "data-align": align, 57652 tagName: tag, 57653 value: content, 57654 scope: tag === 'th' ? scope : undefined 57655 }, cellIndex); 57656 }) 57657 }, rowIndex)) 57658 }); 57659 }; 57660 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 57661 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 57662 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("table", { 57663 className: classes === '' ? undefined : classes, 57664 style: { 57665 ...colorProps.style, 57666 ...borderProps.style 57667 }, 57668 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 57669 type: "head", 57670 rows: head 57671 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 57672 type: "body", 57673 rows: body 57674 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 57675 type: "foot", 57676 rows: foot 57677 })] 57678 }), hasCaption && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 57679 tagName: "figcaption", 57680 value: caption 57681 })] 57682 }); 57683 } 57684 }; 57685 57686 // Deprecation migrating table block to use colors block support feature. 57687 const v2Query = { 57688 content: { 57689 type: 'string', 57690 source: 'html' 57691 }, 57692 tag: { 57693 type: 'string', 57694 default: 'td', 57695 source: 'tag' 57696 }, 57697 scope: { 57698 type: 'string', 57699 source: 'attribute', 57700 attribute: 'scope' 57701 }, 57702 align: { 57703 type: 'string', 57704 source: 'attribute', 57705 attribute: 'data-align' 57706 } 57707 }; 57708 const table_deprecated_v2 = { 57709 attributes: { 57710 hasFixedLayout: { 57711 type: 'boolean', 57712 default: false 57713 }, 57714 backgroundColor: { 57715 type: 'string' 57716 }, 57717 caption: { 57718 type: 'string', 57719 source: 'html', 57720 selector: 'figcaption', 57721 default: '' 57722 }, 57723 head: { 57724 type: 'array', 57725 default: [], 57726 source: 'query', 57727 selector: 'thead tr', 57728 query: { 57729 cells: { 57730 type: 'array', 57731 default: [], 57732 source: 'query', 57733 selector: 'td,th', 57734 query: v2Query 57735 } 57736 } 57737 }, 57738 body: { 57739 type: 'array', 57740 default: [], 57741 source: 'query', 57742 selector: 'tbody tr', 57743 query: { 57744 cells: { 57745 type: 'array', 57746 default: [], 57747 source: 'query', 57748 selector: 'td,th', 57749 query: v2Query 57750 } 57751 } 57752 }, 57753 foot: { 57754 type: 'array', 57755 default: [], 57756 source: 'query', 57757 selector: 'tfoot tr', 57758 query: { 57759 cells: { 57760 type: 'array', 57761 default: [], 57762 source: 'query', 57763 selector: 'td,th', 57764 query: v2Query 57765 } 57766 } 57767 } 57768 }, 57769 supports: { 57770 anchor: true, 57771 align: true, 57772 __experimentalSelector: '.wp-block-table > table' 57773 }, 57774 save: ({ 57775 attributes 57776 }) => { 57777 const { 57778 hasFixedLayout, 57779 head, 57780 body, 57781 foot, 57782 backgroundColor, 57783 caption 57784 } = attributes; 57785 const isEmpty = !head.length && !body.length && !foot.length; 57786 if (isEmpty) { 57787 return null; 57788 } 57789 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 57790 const classes = dist_clsx(backgroundClass, { 57791 'has-fixed-layout': hasFixedLayout, 57792 'has-background': !!backgroundClass 57793 }); 57794 const hasCaption = !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption); 57795 const Section = ({ 57796 type, 57797 rows 57798 }) => { 57799 if (!rows.length) { 57800 return null; 57801 } 57802 const Tag = `t$type}`; 57803 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 57804 children: rows.map(({ 57805 cells 57806 }, rowIndex) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("tr", { 57807 children: cells.map(({ 57808 content, 57809 tag, 57810 scope, 57811 align 57812 }, cellIndex) => { 57813 const cellClasses = dist_clsx({ 57814 [`has-text-align-$align}`]: align 57815 }); 57816 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 57817 className: cellClasses ? cellClasses : undefined, 57818 "data-align": align, 57819 tagName: tag, 57820 value: content, 57821 scope: tag === 'th' ? scope : undefined 57822 }, cellIndex); 57823 }) 57824 }, rowIndex)) 57825 }); 57826 }; 57827 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 57828 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 57829 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("table", { 57830 className: classes === '' ? undefined : classes, 57831 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 57832 type: "head", 57833 rows: head 57834 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 57835 type: "body", 57836 rows: body 57837 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 57838 type: "foot", 57839 rows: foot 57840 })] 57841 }), hasCaption && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 57842 tagName: "figcaption", 57843 value: caption 57844 })] 57845 }); 57846 }, 57847 isEligible: attributes => { 57848 return attributes.backgroundColor && attributes.backgroundColor in oldColors && !attributes.style; 57849 }, 57850 // This version is the first to introduce the style attribute to the 57851 // table block. As a result, we'll explicitly override that. 57852 migrate: attributes => { 57853 return { 57854 ...attributes, 57855 backgroundColor: undefined, 57856 style: { 57857 color: { 57858 background: oldColors[attributes.backgroundColor] 57859 } 57860 } 57861 }; 57862 } 57863 }; 57864 const v1Query = { 57865 content: { 57866 type: 'string', 57867 source: 'html' 57868 }, 57869 tag: { 57870 type: 'string', 57871 default: 'td', 57872 source: 'tag' 57873 }, 57874 scope: { 57875 type: 'string', 57876 source: 'attribute', 57877 attribute: 'scope' 57878 } 57879 }; 57880 const table_deprecated_v1 = { 57881 attributes: { 57882 hasFixedLayout: { 57883 type: 'boolean', 57884 default: false 57885 }, 57886 backgroundColor: { 57887 type: 'string' 57888 }, 57889 head: { 57890 type: 'array', 57891 default: [], 57892 source: 'query', 57893 selector: 'thead tr', 57894 query: { 57895 cells: { 57896 type: 'array', 57897 default: [], 57898 source: 'query', 57899 selector: 'td,th', 57900 query: v1Query 57901 } 57902 } 57903 }, 57904 body: { 57905 type: 'array', 57906 default: [], 57907 source: 'query', 57908 selector: 'tbody tr', 57909 query: { 57910 cells: { 57911 type: 'array', 57912 default: [], 57913 source: 'query', 57914 selector: 'td,th', 57915 query: v1Query 57916 } 57917 } 57918 }, 57919 foot: { 57920 type: 'array', 57921 default: [], 57922 source: 'query', 57923 selector: 'tfoot tr', 57924 query: { 57925 cells: { 57926 type: 'array', 57927 default: [], 57928 source: 'query', 57929 selector: 'td,th', 57930 query: v1Query 57931 } 57932 } 57933 } 57934 }, 57935 supports: { 57936 align: true 57937 }, 57938 save({ 57939 attributes 57940 }) { 57941 const { 57942 hasFixedLayout, 57943 head, 57944 body, 57945 foot, 57946 backgroundColor 57947 } = attributes; 57948 const isEmpty = !head.length && !body.length && !foot.length; 57949 if (isEmpty) { 57950 return null; 57951 } 57952 const backgroundClass = (0,external_wp_blockEditor_namespaceObject.getColorClassName)('background-color', backgroundColor); 57953 const classes = dist_clsx(backgroundClass, { 57954 'has-fixed-layout': hasFixedLayout, 57955 'has-background': !!backgroundClass 57956 }); 57957 const Section = ({ 57958 type, 57959 rows 57960 }) => { 57961 if (!rows.length) { 57962 return null; 57963 } 57964 const Tag = `t$type}`; 57965 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 57966 children: rows.map(({ 57967 cells 57968 }, rowIndex) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("tr", { 57969 children: cells.map(({ 57970 content, 57971 tag, 57972 scope 57973 }, cellIndex) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 57974 tagName: tag, 57975 value: content, 57976 scope: tag === 'th' ? scope : undefined 57977 }, cellIndex)) 57978 }, rowIndex)) 57979 }); 57980 }; 57981 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("table", { 57982 className: classes, 57983 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 57984 type: "head", 57985 rows: head 57986 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 57987 type: "body", 57988 rows: body 57989 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 57990 type: "foot", 57991 rows: foot 57992 })] 57993 }); 57994 } 57995 }; 57996 57997 /** 57998 * New deprecations need to be placed first 57999 * for them to have higher priority. 58000 * 58001 * Old deprecations may need to be updated as well. 58002 * 58003 * See block-deprecation.md 58004 */ 58005 /* harmony default export */ const table_deprecated = ([table_deprecated_v4, table_deprecated_v3, table_deprecated_v2, table_deprecated_v1]); 58006 58007 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/align-left.js 58008 /** 58009 * WordPress dependencies 58010 */ 58011 58012 58013 const alignLeft = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 58014 xmlns: "http://www.w3.org/2000/svg", 58015 viewBox: "0 0 24 24", 58016 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 58017 d: "M13 5.5H4V4h9v1.5Zm7 7H4V11h16v1.5Zm-7 7H4V18h9v1.5Z" 58018 }) 58019 }); 58020 /* harmony default export */ const align_left = (alignLeft); 58021 58022 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/align-center.js 58023 /** 58024 * WordPress dependencies 58025 */ 58026 58027 58028 const alignCenter = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 58029 xmlns: "http://www.w3.org/2000/svg", 58030 viewBox: "0 0 24 24", 58031 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 58032 d: "M7.5 5.5h9V4h-9v1.5Zm-3.5 7h16V11H4v1.5Zm3.5 7h9V18h-9v1.5Z" 58033 }) 58034 }); 58035 /* harmony default export */ const align_center = (alignCenter); 58036 58037 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/align-right.js 58038 /** 58039 * WordPress dependencies 58040 */ 58041 58042 58043 const alignRight = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 58044 xmlns: "http://www.w3.org/2000/svg", 58045 viewBox: "0 0 24 24", 58046 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 58047 d: "M11.111 5.5H20V4h-8.889v1.5ZM4 12.5h16V11H4v1.5Zm7.111 7H20V18h-8.889v1.5Z" 58048 }) 58049 }); 58050 /* harmony default export */ const align_right = (alignRight); 58051 58052 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/table-row-before.js 58053 /** 58054 * WordPress dependencies 58055 */ 58056 58057 58058 const tableRowBefore = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 58059 xmlns: "http://www.w3.org/2000/svg", 58060 viewBox: "-2 -2 24 24", 58061 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 58062 d: "M6.656 6.464h2.88v2.88h1.408v-2.88h2.88V5.12h-2.88V2.24H9.536v2.88h-2.88zM0 17.92V0h20.48v17.92H0zm7.68-2.56h5.12v-3.84H7.68v3.84zm-6.4 0H6.4v-3.84H1.28v3.84zM19.2 1.28H1.28v9.024H19.2V1.28zm0 10.24h-5.12v3.84h5.12v-3.84zM6.656 6.464h2.88v2.88h1.408v-2.88h2.88V5.12h-2.88V2.24H9.536v2.88h-2.88zM0 17.92V0h20.48v17.92H0zm7.68-2.56h5.12v-3.84H7.68v3.84zm-6.4 0H6.4v-3.84H1.28v3.84zM19.2 1.28H1.28v9.024H19.2V1.28zm0 10.24h-5.12v3.84h5.12v-3.84z" 58063 }) 58064 }); 58065 /* harmony default export */ const table_row_before = (tableRowBefore); 58066 58067 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/table-row-after.js 58068 /** 58069 * WordPress dependencies 58070 */ 58071 58072 58073 const tableRowAfter = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 58074 xmlns: "http://www.w3.org/2000/svg", 58075 viewBox: "-2 -2 24 24", 58076 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 58077 d: "M13.824 10.176h-2.88v-2.88H9.536v2.88h-2.88v1.344h2.88v2.88h1.408v-2.88h2.88zM0 17.92V0h20.48v17.92H0zM6.4 1.28H1.28v3.84H6.4V1.28zm6.4 0H7.68v3.84h5.12V1.28zm6.4 0h-5.12v3.84h5.12V1.28zm0 5.056H1.28v9.024H19.2V6.336z" 58078 }) 58079 }); 58080 /* harmony default export */ const table_row_after = (tableRowAfter); 58081 58082 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/table-row-delete.js 58083 /** 58084 * WordPress dependencies 58085 */ 58086 58087 58088 const tableRowDelete = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 58089 xmlns: "http://www.w3.org/2000/svg", 58090 viewBox: "-2 -2 24 24", 58091 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 58092 d: "M17.728 11.456L14.592 8.32l3.2-3.2-1.536-1.536-3.2 3.2L9.92 3.648 8.384 5.12l3.2 3.2-3.264 3.264 1.536 1.536 3.264-3.264 3.136 3.136 1.472-1.536zM0 17.92V0h20.48v17.92H0zm19.2-6.4h-.448l-1.28-1.28H19.2V6.4h-1.792l1.28-1.28h.512V1.28H1.28v3.84h6.208l1.28 1.28H1.28v3.84h7.424l-1.28 1.28H1.28v3.84H19.2v-3.84z" 58093 }) 58094 }); 58095 /* harmony default export */ const table_row_delete = (tableRowDelete); 58096 58097 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/table-column-before.js 58098 /** 58099 * WordPress dependencies 58100 */ 58101 58102 58103 const tableColumnBefore = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 58104 xmlns: "http://www.w3.org/2000/svg", 58105 viewBox: "-2 -2 24 24", 58106 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 58107 d: "M6.4 3.776v3.648H2.752v1.792H6.4v3.648h1.728V9.216h3.712V7.424H8.128V3.776zM0 17.92V0h20.48v17.92H0zM12.8 1.28H1.28v14.08H12.8V1.28zm6.4 0h-5.12v3.84h5.12V1.28zm0 5.12h-5.12v3.84h5.12V6.4zm0 5.12h-5.12v3.84h5.12v-3.84z" 58108 }) 58109 }); 58110 /* harmony default export */ const table_column_before = (tableColumnBefore); 58111 58112 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/table-column-after.js 58113 /** 58114 * WordPress dependencies 58115 */ 58116 58117 58118 const tableColumnAfter = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 58119 xmlns: "http://www.w3.org/2000/svg", 58120 viewBox: "-2 -2 24 24", 58121 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 58122 d: "M14.08 12.864V9.216h3.648V7.424H14.08V3.776h-1.728v3.648H8.64v1.792h3.712v3.648zM0 17.92V0h20.48v17.92H0zM6.4 1.28H1.28v3.84H6.4V1.28zm0 5.12H1.28v3.84H6.4V6.4zm0 5.12H1.28v3.84H6.4v-3.84zM19.2 1.28H7.68v14.08H19.2V1.28z" 58123 }) 58124 }); 58125 /* harmony default export */ const table_column_after = (tableColumnAfter); 58126 58127 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/table-column-delete.js 58128 /** 58129 * WordPress dependencies 58130 */ 58131 58132 58133 const tableColumnDelete = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 58134 xmlns: "http://www.w3.org/2000/svg", 58135 viewBox: "-2 -2 24 24", 58136 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 58137 d: "M6.4 9.98L7.68 8.7v-.256L6.4 7.164V9.98zm6.4-1.532l1.28-1.28V9.92L12.8 8.64v-.192zm7.68 9.472V0H0v17.92h20.48zm-1.28-2.56h-5.12v-1.024l-.256.256-1.024-1.024v1.792H7.68v-1.792l-1.024 1.024-.256-.256v1.024H1.28V1.28H6.4v2.368l.704-.704.576.576V1.216h5.12V3.52l.96-.96.32.32V1.216h5.12V15.36zm-5.76-2.112l-3.136-3.136-3.264 3.264-1.536-1.536 3.264-3.264L5.632 5.44l1.536-1.536 3.136 3.136 3.2-3.2 1.536 1.536-3.2 3.2 3.136 3.136-1.536 1.536z" 58138 }) 58139 }); 58140 /* harmony default export */ const table_column_delete = (tableColumnDelete); 58141 58142 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/table.js 58143 /** 58144 * WordPress dependencies 58145 */ 58146 58147 58148 const table = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 58149 xmlns: "http://www.w3.org/2000/svg", 58150 viewBox: "0 0 24 24", 58151 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 58152 d: "M4 6v11.5h16V6H4zm1.5 1.5h6V11h-6V7.5zm0 8.5v-3.5h6V16h-6zm13 0H13v-3.5h5.5V16zM13 11V7.5h5.5V11H13z" 58153 }) 58154 }); 58155 /* harmony default export */ const library_table = (table); 58156 58157 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/table/state.js 58158 const INHERITED_COLUMN_ATTRIBUTES = ['align']; 58159 58160 /** 58161 * Creates a table state. 58162 * 58163 * @param {Object} options 58164 * @param {number} options.rowCount Row count for the table to create. 58165 * @param {number} options.columnCount Column count for the table to create. 58166 * 58167 * @return {Object} New table state. 58168 */ 58169 function createTable({ 58170 rowCount, 58171 columnCount 58172 }) { 58173 return { 58174 body: Array.from({ 58175 length: rowCount 58176 }).map(() => ({ 58177 cells: Array.from({ 58178 length: columnCount 58179 }).map(() => ({ 58180 content: '', 58181 tag: 'td' 58182 })) 58183 })) 58184 }; 58185 } 58186 58187 /** 58188 * Returns the first row in the table. 58189 * 58190 * @param {Object} state Current table state. 58191 * 58192 * @return {Object | undefined} The first table row. 58193 */ 58194 function getFirstRow(state) { 58195 if (!isEmptyTableSection(state.head)) { 58196 return state.head[0]; 58197 } 58198 if (!isEmptyTableSection(state.body)) { 58199 return state.body[0]; 58200 } 58201 if (!isEmptyTableSection(state.foot)) { 58202 return state.foot[0]; 58203 } 58204 } 58205 58206 /** 58207 * Gets an attribute for a cell. 58208 * 58209 * @param {Object} state Current table state. 58210 * @param {Object} cellLocation The location of the cell 58211 * @param {string} attributeName The name of the attribute to get the value of. 58212 * 58213 * @return {*} The attribute value. 58214 */ 58215 function getCellAttribute(state, cellLocation, attributeName) { 58216 const { 58217 sectionName, 58218 rowIndex, 58219 columnIndex 58220 } = cellLocation; 58221 return state[sectionName]?.[rowIndex]?.cells?.[columnIndex]?.[attributeName]; 58222 } 58223 58224 /** 58225 * Returns updated cell attributes after applying the `updateCell` function to the selection. 58226 * 58227 * @param {Object} state The block attributes. 58228 * @param {Object} selection The selection of cells to update. 58229 * @param {Function} updateCell A function to update the selected cell attributes. 58230 * 58231 * @return {Object} New table state including the updated cells. 58232 */ 58233 function updateSelectedCell(state, selection, updateCell) { 58234 if (!selection) { 58235 return state; 58236 } 58237 const tableSections = Object.fromEntries(Object.entries(state).filter(([key]) => ['head', 'body', 'foot'].includes(key))); 58238 const { 58239 sectionName: selectionSectionName, 58240 rowIndex: selectionRowIndex 58241 } = selection; 58242 return Object.fromEntries(Object.entries(tableSections).map(([sectionName, section]) => { 58243 if (selectionSectionName && selectionSectionName !== sectionName) { 58244 return [sectionName, section]; 58245 } 58246 return [sectionName, section.map((row, rowIndex) => { 58247 if (selectionRowIndex && selectionRowIndex !== rowIndex) { 58248 return row; 58249 } 58250 return { 58251 cells: row.cells.map((cellAttributes, columnIndex) => { 58252 const cellLocation = { 58253 sectionName, 58254 columnIndex, 58255 rowIndex 58256 }; 58257 if (!isCellSelected(cellLocation, selection)) { 58258 return cellAttributes; 58259 } 58260 return updateCell(cellAttributes); 58261 }) 58262 }; 58263 })]; 58264 })); 58265 } 58266 58267 /** 58268 * Returns whether the cell at `cellLocation` is included in the selection `selection`. 58269 * 58270 * @param {Object} cellLocation An object containing cell location properties. 58271 * @param {Object} selection An object containing selection properties. 58272 * 58273 * @return {boolean} True if the cell is selected, false otherwise. 58274 */ 58275 function isCellSelected(cellLocation, selection) { 58276 if (!cellLocation || !selection) { 58277 return false; 58278 } 58279 switch (selection.type) { 58280 case 'column': 58281 return selection.type === 'column' && cellLocation.columnIndex === selection.columnIndex; 58282 case 'cell': 58283 return selection.type === 'cell' && cellLocation.sectionName === selection.sectionName && cellLocation.columnIndex === selection.columnIndex && cellLocation.rowIndex === selection.rowIndex; 58284 } 58285 } 58286 58287 /** 58288 * Inserts a row in the table state. 58289 * 58290 * @param {Object} state Current table state. 58291 * @param {Object} options 58292 * @param {string} options.sectionName Section in which to insert the row. 58293 * @param {number} options.rowIndex Row index at which to insert the row. 58294 * @param {number} options.columnCount Column count for the table to create. 58295 * 58296 * @return {Object} New table state. 58297 */ 58298 function insertRow(state, { 58299 sectionName, 58300 rowIndex, 58301 columnCount 58302 }) { 58303 const firstRow = getFirstRow(state); 58304 const cellCount = columnCount === undefined ? firstRow?.cells?.length : columnCount; 58305 58306 // Bail early if the function cannot determine how many cells to add. 58307 if (!cellCount) { 58308 return state; 58309 } 58310 return { 58311 [sectionName]: [...state[sectionName].slice(0, rowIndex), { 58312 cells: Array.from({ 58313 length: cellCount 58314 }).map((_, index) => { 58315 var _firstRow$cells$index; 58316 const firstCellInColumn = (_firstRow$cells$index = firstRow?.cells?.[index]) !== null && _firstRow$cells$index !== void 0 ? _firstRow$cells$index : {}; 58317 const inheritedAttributes = Object.fromEntries(Object.entries(firstCellInColumn).filter(([key]) => INHERITED_COLUMN_ATTRIBUTES.includes(key))); 58318 return { 58319 ...inheritedAttributes, 58320 content: '', 58321 tag: sectionName === 'head' ? 'th' : 'td' 58322 }; 58323 }) 58324 }, ...state[sectionName].slice(rowIndex)] 58325 }; 58326 } 58327 58328 /** 58329 * Deletes a row from the table state. 58330 * 58331 * @param {Object} state Current table state. 58332 * @param {Object} options 58333 * @param {string} options.sectionName Section in which to delete the row. 58334 * @param {number} options.rowIndex Row index to delete. 58335 * 58336 * @return {Object} New table state. 58337 */ 58338 function deleteRow(state, { 58339 sectionName, 58340 rowIndex 58341 }) { 58342 return { 58343 [sectionName]: state[sectionName].filter((row, index) => index !== rowIndex) 58344 }; 58345 } 58346 58347 /** 58348 * Inserts a column in the table state. 58349 * 58350 * @param {Object} state Current table state. 58351 * @param {Object} options 58352 * @param {number} options.columnIndex Column index at which to insert the column. 58353 * 58354 * @return {Object} New table state. 58355 */ 58356 function insertColumn(state, { 58357 columnIndex 58358 }) { 58359 const tableSections = Object.fromEntries(Object.entries(state).filter(([key]) => ['head', 'body', 'foot'].includes(key))); 58360 return Object.fromEntries(Object.entries(tableSections).map(([sectionName, section]) => { 58361 // Bail early if the table section is empty. 58362 if (isEmptyTableSection(section)) { 58363 return [sectionName, section]; 58364 } 58365 return [sectionName, section.map(row => { 58366 // Bail early if the row is empty or it's an attempt to insert past 58367 // the last possible index of the array. 58368 if (isEmptyRow(row) || row.cells.length < columnIndex) { 58369 return row; 58370 } 58371 return { 58372 cells: [...row.cells.slice(0, columnIndex), { 58373 content: '', 58374 tag: sectionName === 'head' ? 'th' : 'td' 58375 }, ...row.cells.slice(columnIndex)] 58376 }; 58377 })]; 58378 })); 58379 } 58380 58381 /** 58382 * Deletes a column from the table state. 58383 * 58384 * @param {Object} state Current table state. 58385 * @param {Object} options 58386 * @param {number} options.columnIndex Column index to delete. 58387 * 58388 * @return {Object} New table state. 58389 */ 58390 function deleteColumn(state, { 58391 columnIndex 58392 }) { 58393 const tableSections = Object.fromEntries(Object.entries(state).filter(([key]) => ['head', 'body', 'foot'].includes(key))); 58394 return Object.fromEntries(Object.entries(tableSections).map(([sectionName, section]) => { 58395 // Bail early if the table section is empty. 58396 if (isEmptyTableSection(section)) { 58397 return [sectionName, section]; 58398 } 58399 return [sectionName, section.map(row => ({ 58400 cells: row.cells.length >= columnIndex ? row.cells.filter((cell, index) => index !== columnIndex) : row.cells 58401 })).filter(row => row.cells.length)]; 58402 })); 58403 } 58404 58405 /** 58406 * Toggles the existence of a section. 58407 * 58408 * @param {Object} state Current table state. 58409 * @param {string} sectionName Name of the section to toggle. 58410 * 58411 * @return {Object} New table state. 58412 */ 58413 function toggleSection(state, sectionName) { 58414 var _state$body$0$cells$l; 58415 // Section exists, replace it with an empty row to remove it. 58416 if (!isEmptyTableSection(state[sectionName])) { 58417 return { 58418 [sectionName]: [] 58419 }; 58420 } 58421 58422 // Get the length of the first row of the body to use when creating the header. 58423 const columnCount = (_state$body$0$cells$l = state.body?.[0]?.cells?.length) !== null && _state$body$0$cells$l !== void 0 ? _state$body$0$cells$l : 1; 58424 58425 // Section doesn't exist, insert an empty row to create the section. 58426 return insertRow(state, { 58427 sectionName, 58428 rowIndex: 0, 58429 columnCount 58430 }); 58431 } 58432 58433 /** 58434 * Determines whether a table section is empty. 58435 * 58436 * @param {Object} section Table section state. 58437 * 58438 * @return {boolean} True if the table section is empty, false otherwise. 58439 */ 58440 function isEmptyTableSection(section) { 58441 return !section || !section.length || section.every(isEmptyRow); 58442 } 58443 58444 /** 58445 * Determines whether a table row is empty. 58446 * 58447 * @param {Object} row Table row state. 58448 * 58449 * @return {boolean} True if the table section is empty, false otherwise. 58450 */ 58451 function isEmptyRow(row) { 58452 return !(row.cells && row.cells.length); 58453 } 58454 58455 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/table/edit.js 58456 /** 58457 * External dependencies 58458 */ 58459 58460 58461 /** 58462 * WordPress dependencies 58463 */ 58464 58465 58466 58467 58468 58469 58470 /** 58471 * Internal dependencies 58472 */ 58473 58474 58475 58476 58477 58478 const ALIGNMENT_CONTROLS = [{ 58479 icon: align_left, 58480 title: (0,external_wp_i18n_namespaceObject.__)('Align column left'), 58481 align: 'left' 58482 }, { 58483 icon: align_center, 58484 title: (0,external_wp_i18n_namespaceObject.__)('Align column center'), 58485 align: 'center' 58486 }, { 58487 icon: align_right, 58488 title: (0,external_wp_i18n_namespaceObject.__)('Align column right'), 58489 align: 'right' 58490 }]; 58491 const cellAriaLabel = { 58492 head: (0,external_wp_i18n_namespaceObject.__)('Header cell text'), 58493 body: (0,external_wp_i18n_namespaceObject.__)('Body cell text'), 58494 foot: (0,external_wp_i18n_namespaceObject.__)('Footer cell text') 58495 }; 58496 const edit_placeholder = { 58497 head: (0,external_wp_i18n_namespaceObject.__)('Header label'), 58498 foot: (0,external_wp_i18n_namespaceObject.__)('Footer label') 58499 }; 58500 function TSection({ 58501 name, 58502 ...props 58503 }) { 58504 const TagName = `t$name}`; 58505 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 58506 ...props 58507 }); 58508 } 58509 function TableEdit({ 58510 attributes, 58511 setAttributes, 58512 insertBlocksAfter, 58513 isSelected: isSingleSelected 58514 }) { 58515 const { 58516 hasFixedLayout, 58517 head, 58518 foot 58519 } = attributes; 58520 const [initialRowCount, setInitialRowCount] = (0,external_wp_element_namespaceObject.useState)(2); 58521 const [initialColumnCount, setInitialColumnCount] = (0,external_wp_element_namespaceObject.useState)(2); 58522 const [selectedCell, setSelectedCell] = (0,external_wp_element_namespaceObject.useState)(); 58523 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseColorProps)(attributes); 58524 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalUseBorderProps)(attributes); 58525 const tableRef = (0,external_wp_element_namespaceObject.useRef)(); 58526 const [hasTableCreated, setHasTableCreated] = (0,external_wp_element_namespaceObject.useState)(false); 58527 58528 /** 58529 * Updates the initial column count used for table creation. 58530 * 58531 * @param {number} count New initial column count. 58532 */ 58533 function onChangeInitialColumnCount(count) { 58534 setInitialColumnCount(count); 58535 } 58536 58537 /** 58538 * Updates the initial row count used for table creation. 58539 * 58540 * @param {number} count New initial row count. 58541 */ 58542 function onChangeInitialRowCount(count) { 58543 setInitialRowCount(count); 58544 } 58545 58546 /** 58547 * Creates a table based on dimensions in local state. 58548 * 58549 * @param {Object} event Form submit event. 58550 */ 58551 function onCreateTable(event) { 58552 event.preventDefault(); 58553 setAttributes(createTable({ 58554 rowCount: parseInt(initialRowCount, 10) || 2, 58555 columnCount: parseInt(initialColumnCount, 10) || 2 58556 })); 58557 setHasTableCreated(true); 58558 } 58559 58560 /** 58561 * Toggles whether the table has a fixed layout or not. 58562 */ 58563 function onChangeFixedLayout() { 58564 setAttributes({ 58565 hasFixedLayout: !hasFixedLayout 58566 }); 58567 } 58568 58569 /** 58570 * Changes the content of the currently selected cell. 58571 * 58572 * @param {Array} content A RichText content value. 58573 */ 58574 function onChange(content) { 58575 if (!selectedCell) { 58576 return; 58577 } 58578 setAttributes(updateSelectedCell(attributes, selectedCell, cellAttributes => ({ 58579 ...cellAttributes, 58580 content 58581 }))); 58582 } 58583 58584 /** 58585 * Align text within the a column. 58586 * 58587 * @param {string} align The new alignment to apply to the column. 58588 */ 58589 function onChangeColumnAlignment(align) { 58590 if (!selectedCell) { 58591 return; 58592 } 58593 58594 // Convert the cell selection to a column selection so that alignment 58595 // is applied to the entire column. 58596 const columnSelection = { 58597 type: 'column', 58598 columnIndex: selectedCell.columnIndex 58599 }; 58600 const newAttributes = updateSelectedCell(attributes, columnSelection, cellAttributes => ({ 58601 ...cellAttributes, 58602 align 58603 })); 58604 setAttributes(newAttributes); 58605 } 58606 58607 /** 58608 * Get the alignment of the currently selected cell. 58609 * 58610 * @return {string | undefined} The new alignment to apply to the column. 58611 */ 58612 function getCellAlignment() { 58613 if (!selectedCell) { 58614 return; 58615 } 58616 return getCellAttribute(attributes, selectedCell, 'align'); 58617 } 58618 58619 /** 58620 * Add or remove a `head` table section. 58621 */ 58622 function onToggleHeaderSection() { 58623 setAttributes(toggleSection(attributes, 'head')); 58624 } 58625 58626 /** 58627 * Add or remove a `foot` table section. 58628 */ 58629 function onToggleFooterSection() { 58630 setAttributes(toggleSection(attributes, 'foot')); 58631 } 58632 58633 /** 58634 * Inserts a row at the currently selected row index, plus `delta`. 58635 * 58636 * @param {number} delta Offset for selected row index at which to insert. 58637 */ 58638 function onInsertRow(delta) { 58639 if (!selectedCell) { 58640 return; 58641 } 58642 const { 58643 sectionName, 58644 rowIndex 58645 } = selectedCell; 58646 const newRowIndex = rowIndex + delta; 58647 setAttributes(insertRow(attributes, { 58648 sectionName, 58649 rowIndex: newRowIndex 58650 })); 58651 // Select the first cell of the new row. 58652 setSelectedCell({ 58653 sectionName, 58654 rowIndex: newRowIndex, 58655 columnIndex: 0, 58656 type: 'cell' 58657 }); 58658 } 58659 58660 /** 58661 * Inserts a row before the currently selected row. 58662 */ 58663 function onInsertRowBefore() { 58664 onInsertRow(0); 58665 } 58666 58667 /** 58668 * Inserts a row after the currently selected row. 58669 */ 58670 function onInsertRowAfter() { 58671 onInsertRow(1); 58672 } 58673 58674 /** 58675 * Deletes the currently selected row. 58676 */ 58677 function onDeleteRow() { 58678 if (!selectedCell) { 58679 return; 58680 } 58681 const { 58682 sectionName, 58683 rowIndex 58684 } = selectedCell; 58685 setSelectedCell(); 58686 setAttributes(deleteRow(attributes, { 58687 sectionName, 58688 rowIndex 58689 })); 58690 } 58691 58692 /** 58693 * Inserts a column at the currently selected column index, plus `delta`. 58694 * 58695 * @param {number} delta Offset for selected column index at which to insert. 58696 */ 58697 function onInsertColumn(delta = 0) { 58698 if (!selectedCell) { 58699 return; 58700 } 58701 const { 58702 columnIndex 58703 } = selectedCell; 58704 const newColumnIndex = columnIndex + delta; 58705 setAttributes(insertColumn(attributes, { 58706 columnIndex: newColumnIndex 58707 })); 58708 // Select the first cell of the new column. 58709 setSelectedCell({ 58710 rowIndex: 0, 58711 columnIndex: newColumnIndex, 58712 type: 'cell' 58713 }); 58714 } 58715 58716 /** 58717 * Inserts a column before the currently selected column. 58718 */ 58719 function onInsertColumnBefore() { 58720 onInsertColumn(0); 58721 } 58722 58723 /** 58724 * Inserts a column after the currently selected column. 58725 */ 58726 function onInsertColumnAfter() { 58727 onInsertColumn(1); 58728 } 58729 58730 /** 58731 * Deletes the currently selected column. 58732 */ 58733 function onDeleteColumn() { 58734 if (!selectedCell) { 58735 return; 58736 } 58737 const { 58738 sectionName, 58739 columnIndex 58740 } = selectedCell; 58741 setSelectedCell(); 58742 setAttributes(deleteColumn(attributes, { 58743 sectionName, 58744 columnIndex 58745 })); 58746 } 58747 (0,external_wp_element_namespaceObject.useEffect)(() => { 58748 if (!isSingleSelected) { 58749 setSelectedCell(); 58750 } 58751 }, [isSingleSelected]); 58752 (0,external_wp_element_namespaceObject.useEffect)(() => { 58753 if (hasTableCreated) { 58754 tableRef?.current?.querySelector('td div[contentEditable="true"]')?.focus(); 58755 setHasTableCreated(false); 58756 } 58757 }, [hasTableCreated]); 58758 const sections = ['head', 'body', 'foot'].filter(name => !isEmptyTableSection(attributes[name])); 58759 const tableControls = [{ 58760 icon: table_row_before, 58761 title: (0,external_wp_i18n_namespaceObject.__)('Insert row before'), 58762 isDisabled: !selectedCell, 58763 onClick: onInsertRowBefore 58764 }, { 58765 icon: table_row_after, 58766 title: (0,external_wp_i18n_namespaceObject.__)('Insert row after'), 58767 isDisabled: !selectedCell, 58768 onClick: onInsertRowAfter 58769 }, { 58770 icon: table_row_delete, 58771 title: (0,external_wp_i18n_namespaceObject.__)('Delete row'), 58772 isDisabled: !selectedCell, 58773 onClick: onDeleteRow 58774 }, { 58775 icon: table_column_before, 58776 title: (0,external_wp_i18n_namespaceObject.__)('Insert column before'), 58777 isDisabled: !selectedCell, 58778 onClick: onInsertColumnBefore 58779 }, { 58780 icon: table_column_after, 58781 title: (0,external_wp_i18n_namespaceObject.__)('Insert column after'), 58782 isDisabled: !selectedCell, 58783 onClick: onInsertColumnAfter 58784 }, { 58785 icon: table_column_delete, 58786 title: (0,external_wp_i18n_namespaceObject.__)('Delete column'), 58787 isDisabled: !selectedCell, 58788 onClick: onDeleteColumn 58789 }]; 58790 const renderedSections = sections.map(name => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TSection, { 58791 name: name, 58792 children: attributes[name].map(({ 58793 cells 58794 }, rowIndex) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("tr", { 58795 children: cells.map(({ 58796 content, 58797 tag: CellTag, 58798 scope, 58799 align, 58800 colspan, 58801 rowspan 58802 }, columnIndex) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CellTag, { 58803 scope: CellTag === 'th' ? scope : undefined, 58804 colSpan: colspan, 58805 rowSpan: rowspan, 58806 className: dist_clsx({ 58807 [`has-text-align-$align}`]: align 58808 }, 'wp-block-table__cell-content'), 58809 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 58810 value: content, 58811 onChange: onChange, 58812 onFocus: () => { 58813 setSelectedCell({ 58814 sectionName: name, 58815 rowIndex, 58816 columnIndex, 58817 type: 'cell' 58818 }); 58819 }, 58820 "aria-label": cellAriaLabel[name], 58821 placeholder: edit_placeholder[name] 58822 }) 58823 }, columnIndex)) 58824 }, rowIndex)) 58825 }, name)); 58826 const isEmpty = !sections.length; 58827 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 58828 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 58829 ref: tableRef 58830 }), 58831 children: [!isEmpty && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 58832 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 58833 group: "block", 58834 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 58835 label: (0,external_wp_i18n_namespaceObject.__)('Change column alignment'), 58836 alignmentControls: ALIGNMENT_CONTROLS, 58837 value: getCellAlignment(), 58838 onChange: nextAlign => onChangeColumnAlignment(nextAlign) 58839 }) 58840 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 58841 group: "other", 58842 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarDropdownMenu, { 58843 hasArrowIndicator: true, 58844 icon: library_table, 58845 label: (0,external_wp_i18n_namespaceObject.__)('Edit table'), 58846 controls: tableControls 58847 }) 58848 })] 58849 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 58850 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 58851 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 58852 className: "blocks-table-settings", 58853 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 58854 __nextHasNoMarginBottom: true, 58855 label: (0,external_wp_i18n_namespaceObject.__)('Fixed width table cells'), 58856 checked: !!hasFixedLayout, 58857 onChange: onChangeFixedLayout 58858 }), !isEmpty && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 58859 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 58860 __nextHasNoMarginBottom: true, 58861 label: (0,external_wp_i18n_namespaceObject.__)('Header section'), 58862 checked: !!(head && head.length), 58863 onChange: onToggleHeaderSection 58864 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 58865 __nextHasNoMarginBottom: true, 58866 label: (0,external_wp_i18n_namespaceObject.__)('Footer section'), 58867 checked: !!(foot && foot.length), 58868 onChange: onToggleFooterSection 58869 })] 58870 })] 58871 }) 58872 }), !isEmpty && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("table", { 58873 className: dist_clsx(colorProps.className, borderProps.className, { 58874 'has-fixed-layout': hasFixedLayout, 58875 // This is required in the editor only to overcome 58876 // the fact the editor rewrites individual border 58877 // widths into a shorthand format. 58878 'has-individual-borders': (0,external_wp_components_namespaceObject.__experimentalHasSplitBorders)(attributes?.style?.border) 58879 }), 58880 style: { 58881 ...colorProps.style, 58882 ...borderProps.style 58883 }, 58884 children: renderedSections 58885 }), isEmpty ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 58886 label: (0,external_wp_i18n_namespaceObject.__)('Table'), 58887 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 58888 icon: block_table, 58889 showColors: true 58890 }), 58891 instructions: (0,external_wp_i18n_namespaceObject.__)('Insert a table for sharing data.'), 58892 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("form", { 58893 className: "blocks-table__placeholder-form", 58894 onSubmit: onCreateTable, 58895 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 58896 __nextHasNoMarginBottom: true, 58897 __next40pxDefaultSize: true, 58898 type: "number", 58899 label: (0,external_wp_i18n_namespaceObject.__)('Column count'), 58900 value: initialColumnCount, 58901 onChange: onChangeInitialColumnCount, 58902 min: "1", 58903 className: "blocks-table__placeholder-input" 58904 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 58905 __nextHasNoMarginBottom: true, 58906 __next40pxDefaultSize: true, 58907 type: "number", 58908 label: (0,external_wp_i18n_namespaceObject.__)('Row count'), 58909 value: initialRowCount, 58910 onChange: onChangeInitialRowCount, 58911 min: "1", 58912 className: "blocks-table__placeholder-input" 58913 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 58914 __next40pxDefaultSize: true, 58915 variant: "primary", 58916 type: "submit", 58917 children: (0,external_wp_i18n_namespaceObject.__)('Create Table') 58918 })] 58919 }) 58920 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Caption, { 58921 attributes: attributes, 58922 setAttributes: setAttributes, 58923 isSelected: isSingleSelected, 58924 insertBlocksAfter: insertBlocksAfter, 58925 label: (0,external_wp_i18n_namespaceObject.__)('Table caption text'), 58926 showToolbarButton: isSingleSelected 58927 })] 58928 }); 58929 } 58930 /* harmony default export */ const table_edit = (TableEdit); 58931 58932 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/table/save.js 58933 /** 58934 * External dependencies 58935 */ 58936 58937 58938 /** 58939 * WordPress dependencies 58940 */ 58941 58942 58943 58944 function table_save_save({ 58945 attributes 58946 }) { 58947 const { 58948 hasFixedLayout, 58949 head, 58950 body, 58951 foot, 58952 caption 58953 } = attributes; 58954 const isEmpty = !head.length && !body.length && !foot.length; 58955 if (isEmpty) { 58956 return null; 58957 } 58958 const colorProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetColorClassesAndStyles)(attributes); 58959 const borderProps = (0,external_wp_blockEditor_namespaceObject.__experimentalGetBorderClassesAndStyles)(attributes); 58960 const classes = dist_clsx(colorProps.className, borderProps.className, { 58961 'has-fixed-layout': hasFixedLayout 58962 }); 58963 const hasCaption = !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption); 58964 const Section = ({ 58965 type, 58966 rows 58967 }) => { 58968 if (!rows.length) { 58969 return null; 58970 } 58971 const Tag = `t$type}`; 58972 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tag, { 58973 children: rows.map(({ 58974 cells 58975 }, rowIndex) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("tr", { 58976 children: cells.map(({ 58977 content, 58978 tag, 58979 scope, 58980 align, 58981 colspan, 58982 rowspan 58983 }, cellIndex) => { 58984 const cellClasses = dist_clsx({ 58985 [`has-text-align-$align}`]: align 58986 }); 58987 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 58988 className: cellClasses ? cellClasses : undefined, 58989 "data-align": align, 58990 tagName: tag, 58991 value: content, 58992 scope: tag === 'th' ? scope : undefined, 58993 colSpan: colspan, 58994 rowSpan: rowspan 58995 }, cellIndex); 58996 }) 58997 }, rowIndex)) 58998 }); 58999 }; 59000 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 59001 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 59002 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("table", { 59003 className: classes === '' ? undefined : classes, 59004 style: { 59005 ...colorProps.style, 59006 ...borderProps.style 59007 }, 59008 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 59009 type: "head", 59010 rows: head 59011 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 59012 type: "body", 59013 rows: body 59014 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Section, { 59015 type: "foot", 59016 rows: foot 59017 })] 59018 }), hasCaption && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 59019 tagName: "figcaption", 59020 value: caption, 59021 className: (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('caption') 59022 })] 59023 }); 59024 } 59025 59026 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/table/utils.js 59027 /** 59028 * Normalize the rowspan/colspan value. 59029 * Returns undefined if the parameter is not a positive number 59030 * or the default value (1) for rowspan/colspan. 59031 * 59032 * @param {number|undefined} rowColSpan rowspan/colspan value. 59033 * 59034 * @return {string|undefined} normalized rowspan/colspan value. 59035 */ 59036 function normalizeRowColSpan(rowColSpan) { 59037 const parsedValue = parseInt(rowColSpan, 10); 59038 if (!Number.isInteger(parsedValue)) { 59039 return undefined; 59040 } 59041 return parsedValue < 0 || parsedValue === 1 ? undefined : parsedValue.toString(); 59042 } 59043 59044 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/table/transforms.js 59045 /** 59046 * WordPress dependencies 59047 */ 59048 59049 59050 /** 59051 * Internal dependencies 59052 */ 59053 59054 const tableContentPasteSchema = ({ 59055 phrasingContentSchema 59056 }) => ({ 59057 tr: { 59058 allowEmpty: true, 59059 children: { 59060 th: { 59061 allowEmpty: true, 59062 children: phrasingContentSchema, 59063 attributes: ['scope', 'colspan', 'rowspan'] 59064 }, 59065 td: { 59066 allowEmpty: true, 59067 children: phrasingContentSchema, 59068 attributes: ['colspan', 'rowspan'] 59069 } 59070 } 59071 } 59072 }); 59073 const tablePasteSchema = args => ({ 59074 table: { 59075 children: { 59076 thead: { 59077 allowEmpty: true, 59078 children: tableContentPasteSchema(args) 59079 }, 59080 tfoot: { 59081 allowEmpty: true, 59082 children: tableContentPasteSchema(args) 59083 }, 59084 tbody: { 59085 allowEmpty: true, 59086 children: tableContentPasteSchema(args) 59087 } 59088 } 59089 } 59090 }); 59091 const table_transforms_transforms = { 59092 from: [{ 59093 type: 'raw', 59094 selector: 'table', 59095 schema: tablePasteSchema, 59096 transform: node => { 59097 const attributes = Array.from(node.children).reduce((sectionAcc, section) => { 59098 if (!section.children.length) { 59099 return sectionAcc; 59100 } 59101 const sectionName = section.nodeName.toLowerCase().slice(1); 59102 const sectionAttributes = Array.from(section.children).reduce((rowAcc, row) => { 59103 if (!row.children.length) { 59104 return rowAcc; 59105 } 59106 const rowAttributes = Array.from(row.children).reduce((colAcc, col) => { 59107 const rowspan = normalizeRowColSpan(col.getAttribute('rowspan')); 59108 const colspan = normalizeRowColSpan(col.getAttribute('colspan')); 59109 colAcc.push({ 59110 tag: col.nodeName.toLowerCase(), 59111 content: col.innerHTML, 59112 rowspan, 59113 colspan 59114 }); 59115 return colAcc; 59116 }, []); 59117 rowAcc.push({ 59118 cells: rowAttributes 59119 }); 59120 return rowAcc; 59121 }, []); 59122 sectionAcc[sectionName] = sectionAttributes; 59123 return sectionAcc; 59124 }, {}); 59125 return (0,external_wp_blocks_namespaceObject.createBlock)('core/table', attributes); 59126 } 59127 }] 59128 }; 59129 /* harmony default export */ const table_transforms = (table_transforms_transforms); 59130 59131 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/table/index.js 59132 /** 59133 * WordPress dependencies 59134 */ 59135 59136 59137 59138 /** 59139 * Internal dependencies 59140 */ 59141 59142 59143 59144 const table_metadata = { 59145 $schema: "https://schemas.wp.org/trunk/block.json", 59146 apiVersion: 3, 59147 name: "core/table", 59148 title: "Table", 59149 category: "text", 59150 description: "Create structured content in rows and columns to display information.", 59151 textdomain: "default", 59152 attributes: { 59153 hasFixedLayout: { 59154 type: "boolean", 59155 "default": true 59156 }, 59157 caption: { 59158 type: "rich-text", 59159 source: "rich-text", 59160 selector: "figcaption" 59161 }, 59162 head: { 59163 type: "array", 59164 "default": [], 59165 source: "query", 59166 selector: "thead tr", 59167 query: { 59168 cells: { 59169 type: "array", 59170 "default": [], 59171 source: "query", 59172 selector: "td,th", 59173 query: { 59174 content: { 59175 type: "rich-text", 59176 source: "rich-text" 59177 }, 59178 tag: { 59179 type: "string", 59180 "default": "td", 59181 source: "tag" 59182 }, 59183 scope: { 59184 type: "string", 59185 source: "attribute", 59186 attribute: "scope" 59187 }, 59188 align: { 59189 type: "string", 59190 source: "attribute", 59191 attribute: "data-align" 59192 }, 59193 colspan: { 59194 type: "string", 59195 source: "attribute", 59196 attribute: "colspan" 59197 }, 59198 rowspan: { 59199 type: "string", 59200 source: "attribute", 59201 attribute: "rowspan" 59202 } 59203 } 59204 } 59205 } 59206 }, 59207 body: { 59208 type: "array", 59209 "default": [], 59210 source: "query", 59211 selector: "tbody tr", 59212 query: { 59213 cells: { 59214 type: "array", 59215 "default": [], 59216 source: "query", 59217 selector: "td,th", 59218 query: { 59219 content: { 59220 type: "rich-text", 59221 source: "rich-text" 59222 }, 59223 tag: { 59224 type: "string", 59225 "default": "td", 59226 source: "tag" 59227 }, 59228 scope: { 59229 type: "string", 59230 source: "attribute", 59231 attribute: "scope" 59232 }, 59233 align: { 59234 type: "string", 59235 source: "attribute", 59236 attribute: "data-align" 59237 }, 59238 colspan: { 59239 type: "string", 59240 source: "attribute", 59241 attribute: "colspan" 59242 }, 59243 rowspan: { 59244 type: "string", 59245 source: "attribute", 59246 attribute: "rowspan" 59247 } 59248 } 59249 } 59250 } 59251 }, 59252 foot: { 59253 type: "array", 59254 "default": [], 59255 source: "query", 59256 selector: "tfoot tr", 59257 query: { 59258 cells: { 59259 type: "array", 59260 "default": [], 59261 source: "query", 59262 selector: "td,th", 59263 query: { 59264 content: { 59265 type: "rich-text", 59266 source: "rich-text" 59267 }, 59268 tag: { 59269 type: "string", 59270 "default": "td", 59271 source: "tag" 59272 }, 59273 scope: { 59274 type: "string", 59275 source: "attribute", 59276 attribute: "scope" 59277 }, 59278 align: { 59279 type: "string", 59280 source: "attribute", 59281 attribute: "data-align" 59282 }, 59283 colspan: { 59284 type: "string", 59285 source: "attribute", 59286 attribute: "colspan" 59287 }, 59288 rowspan: { 59289 type: "string", 59290 source: "attribute", 59291 attribute: "rowspan" 59292 } 59293 } 59294 } 59295 } 59296 } 59297 }, 59298 supports: { 59299 anchor: true, 59300 align: true, 59301 color: { 59302 __experimentalSkipSerialization: true, 59303 gradients: true, 59304 __experimentalDefaultControls: { 59305 background: true, 59306 text: true 59307 } 59308 }, 59309 spacing: { 59310 margin: true, 59311 padding: true, 59312 __experimentalDefaultControls: { 59313 margin: false, 59314 padding: false 59315 } 59316 }, 59317 typography: { 59318 fontSize: true, 59319 lineHeight: true, 59320 __experimentalFontFamily: true, 59321 __experimentalFontStyle: true, 59322 __experimentalFontWeight: true, 59323 __experimentalLetterSpacing: true, 59324 __experimentalTextTransform: true, 59325 __experimentalTextDecoration: true, 59326 __experimentalDefaultControls: { 59327 fontSize: true 59328 } 59329 }, 59330 __experimentalBorder: { 59331 __experimentalSkipSerialization: true, 59332 color: true, 59333 style: true, 59334 width: true, 59335 __experimentalDefaultControls: { 59336 color: true, 59337 style: true, 59338 width: true 59339 } 59340 }, 59341 __experimentalSelector: ".wp-block-table > table", 59342 interactivity: { 59343 clientNavigation: true 59344 } 59345 }, 59346 styles: [{ 59347 name: "regular", 59348 label: "Default", 59349 isDefault: true 59350 }, { 59351 name: "stripes", 59352 label: "Stripes" 59353 }], 59354 editorStyle: "wp-block-table-editor", 59355 style: "wp-block-table" 59356 }; 59357 59358 59359 const { 59360 name: table_name 59361 } = table_metadata; 59362 59363 const table_settings = { 59364 icon: block_table, 59365 example: { 59366 attributes: { 59367 head: [{ 59368 cells: [{ 59369 content: (0,external_wp_i18n_namespaceObject.__)('Version'), 59370 tag: 'th' 59371 }, { 59372 content: (0,external_wp_i18n_namespaceObject.__)('Jazz Musician'), 59373 tag: 'th' 59374 }, { 59375 content: (0,external_wp_i18n_namespaceObject.__)('Release Date'), 59376 tag: 'th' 59377 }] 59378 }], 59379 body: [{ 59380 cells: [{ 59381 content: '5.2', 59382 tag: 'td' 59383 }, { 59384 content: 'Jaco Pastorius', 59385 tag: 'td' 59386 }, { 59387 content: (0,external_wp_i18n_namespaceObject.__)('May 7, 2019'), 59388 tag: 'td' 59389 }] 59390 }, { 59391 cells: [{ 59392 content: '5.1', 59393 tag: 'td' 59394 }, { 59395 content: 'Betty Carter', 59396 tag: 'td' 59397 }, { 59398 content: (0,external_wp_i18n_namespaceObject.__)('February 21, 2019'), 59399 tag: 'td' 59400 }] 59401 }, { 59402 cells: [{ 59403 content: '5.0', 59404 tag: 'td' 59405 }, { 59406 content: 'Bebo Valdés', 59407 tag: 'td' 59408 }, { 59409 content: (0,external_wp_i18n_namespaceObject.__)('December 6, 2018'), 59410 tag: 'td' 59411 }] 59412 }] 59413 }, 59414 viewportWidth: 450 59415 }, 59416 transforms: table_transforms, 59417 edit: table_edit, 59418 save: table_save_save, 59419 deprecated: table_deprecated 59420 }; 59421 const table_init = () => initBlock({ 59422 name: table_name, 59423 metadata: table_metadata, 59424 settings: table_settings 59425 }); 59426 59427 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/table-of-contents.js 59428 /** 59429 * WordPress dependencies 59430 */ 59431 59432 59433 59434 const tableOfContents = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_primitives_namespaceObject.SVG, { 59435 xmlns: "http://www.w3.org/2000/svg", 59436 viewBox: "0 0 24 24", 59437 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 59438 fillRule: "evenodd", 59439 clipRule: "evenodd", 59440 d: "M20 9.484h-8.889v-1.5H20v1.5Zm0 7h-4.889v-1.5H20v1.5Zm-14 .032a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z" 59441 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 59442 d: "M13 15.516a2 2 0 1 1-4 0 2 2 0 0 1 4 0ZM8 8.484a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" 59443 })] 59444 }); 59445 /* harmony default export */ const table_of_contents = (tableOfContents); 59446 59447 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/table-of-contents/list.js 59448 59449 59450 59451 /** 59452 * External dependencies 59453 */ 59454 59455 /** 59456 * Internal dependencies 59457 */ 59458 59459 const ENTRY_CLASS_NAME = 'wp-block-table-of-contents__entry'; 59460 function TableOfContentsList({ 59461 nestedHeadingList, 59462 disableLinkActivation, 59463 onClick 59464 }) { 59465 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 59466 children: nestedHeadingList.map((node, index) => { 59467 const { 59468 content, 59469 link 59470 } = node.heading; 59471 const entry = link ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 59472 className: ENTRY_CLASS_NAME, 59473 href: link, 59474 "aria-disabled": disableLinkActivation || undefined, 59475 onClick: disableLinkActivation && 'function' === typeof onClick ? onClick : undefined, 59476 children: content 59477 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 59478 className: ENTRY_CLASS_NAME, 59479 children: content 59480 }); 59481 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("li", { 59482 children: [entry, node.children ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ol", { 59483 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TableOfContentsList, { 59484 nestedHeadingList: node.children, 59485 disableLinkActivation: disableLinkActivation, 59486 onClick: disableLinkActivation && 'function' === typeof onClick ? onClick : undefined 59487 }) 59488 }) : null] 59489 }, index); 59490 }) 59491 }); 59492 } 59493 59494 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/table-of-contents/utils.js 59495 /** 59496 * Takes a flat list of heading parameters and nests them based on each header's 59497 * immediate parent's level. 59498 * 59499 * @param headingList The flat list of headings to nest. 59500 * 59501 * @return The nested list of headings. 59502 */ 59503 function linearToNestedHeadingList(headingList) { 59504 const nestedHeadingList = []; 59505 headingList.forEach((heading, key) => { 59506 if (heading.content === '') { 59507 return; 59508 } 59509 59510 // Make sure we are only working with the same level as the first iteration in our set. 59511 if (heading.level === headingList[0].level) { 59512 // Check that the next iteration will return a value. 59513 // If it does and the next level is greater than the current level, 59514 // the next iteration becomes a child of the current iteration. 59515 if (headingList[key + 1]?.level > heading.level) { 59516 // We must calculate the last index before the next iteration that 59517 // has the same level (siblings). We then use this index to slice 59518 // the array for use in recursion. This prevents duplicate nodes. 59519 let endOfSlice = headingList.length; 59520 for (let i = key + 1; i < headingList.length; i++) { 59521 if (headingList[i].level === heading.level) { 59522 endOfSlice = i; 59523 break; 59524 } 59525 } 59526 59527 // We found a child node: Push a new node onto the return array 59528 // with children. 59529 nestedHeadingList.push({ 59530 heading, 59531 children: linearToNestedHeadingList(headingList.slice(key + 1, endOfSlice)) 59532 }); 59533 } else { 59534 // No child node: Push a new node onto the return array. 59535 nestedHeadingList.push({ 59536 heading, 59537 children: null 59538 }); 59539 } 59540 } 59541 }); 59542 return nestedHeadingList; 59543 } 59544 59545 // EXTERNAL MODULE: ./node_modules/fast-deep-equal/es6/index.js 59546 var es6 = __webpack_require__(7734); 59547 var es6_default = /*#__PURE__*/__webpack_require__.n(es6); 59548 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/table-of-contents/hooks.js 59549 /** 59550 * External dependencies 59551 */ 59552 59553 59554 /** 59555 * WordPress dependencies 59556 */ 59557 59558 59559 59560 59561 59562 function getLatestHeadings(select, clientId) { 59563 var _select$getPermalink, _getBlockAttributes; 59564 const { 59565 getBlockAttributes, 59566 getBlockName, 59567 getClientIdsWithDescendants, 59568 getBlocksByName 59569 } = select(external_wp_blockEditor_namespaceObject.store); 59570 59571 // FIXME: @wordpress/block-library should not depend on @wordpress/editor. 59572 // Blocks can be loaded into a *non-post* block editor, so to avoid 59573 // declaring @wordpress/editor as a dependency, we must access its 59574 // store by string. When the store is not available, editorSelectors 59575 // will be null, and the block's saved markup will lack permalinks. 59576 // eslint-disable-next-line @wordpress/data-no-store-string-literals 59577 const permalink = (_select$getPermalink = select('core/editor').getPermalink()) !== null && _select$getPermalink !== void 0 ? _select$getPermalink : null; 59578 const isPaginated = getBlocksByName('core/nextpage').length !== 0; 59579 const { 59580 onlyIncludeCurrentPage 59581 } = (_getBlockAttributes = getBlockAttributes(clientId)) !== null && _getBlockAttributes !== void 0 ? _getBlockAttributes : {}; 59582 59583 // Get the client ids of all blocks in the editor. 59584 const allBlockClientIds = getClientIdsWithDescendants(); 59585 59586 // If onlyIncludeCurrentPage is true, calculate the page (of a paginated post) this block is part of, so we know which headings to include; otherwise, skip the calculation. 59587 let tocPage = 1; 59588 if (isPaginated && onlyIncludeCurrentPage) { 59589 // We can't use getBlockIndex because it only returns the index 59590 // relative to sibling blocks. 59591 const tocIndex = allBlockClientIds.indexOf(clientId); 59592 for (const [blockIndex, blockClientId] of allBlockClientIds.entries()) { 59593 // If we've reached blocks after the Table of Contents, we've 59594 // finished calculating which page the block is on. 59595 if (blockIndex >= tocIndex) { 59596 break; 59597 } 59598 if (getBlockName(blockClientId) === 'core/nextpage') { 59599 tocPage++; 59600 } 59601 } 59602 } 59603 const latestHeadings = []; 59604 59605 /** The page (of a paginated post) a heading will be part of. */ 59606 let headingPage = 1; 59607 let headingPageLink = null; 59608 59609 // If the core/editor store is available, we can add permalinks to the 59610 // generated table of contents. 59611 if (typeof permalink === 'string') { 59612 headingPageLink = isPaginated ? (0,external_wp_url_namespaceObject.addQueryArgs)(permalink, { 59613 page: headingPage 59614 }) : permalink; 59615 } 59616 for (const blockClientId of allBlockClientIds) { 59617 const blockName = getBlockName(blockClientId); 59618 if (blockName === 'core/nextpage') { 59619 headingPage++; 59620 59621 // If we're only including headings from the current page (of 59622 // a paginated post), then exit the loop if we've reached the 59623 // pages after the one with the Table of Contents block. 59624 if (onlyIncludeCurrentPage && headingPage > tocPage) { 59625 break; 59626 } 59627 if (typeof permalink === 'string') { 59628 headingPageLink = (0,external_wp_url_namespaceObject.addQueryArgs)((0,external_wp_url_namespaceObject.removeQueryArgs)(permalink, ['page']), { 59629 page: headingPage 59630 }); 59631 } 59632 } 59633 // If we're including all headings or we've reached headings on 59634 // the same page as the Table of Contents block, add them to the 59635 // list. 59636 else if (!onlyIncludeCurrentPage || headingPage === tocPage) { 59637 if (blockName === 'core/heading') { 59638 const headingAttributes = getBlockAttributes(blockClientId); 59639 const canBeLinked = typeof headingPageLink === 'string' && typeof headingAttributes.anchor === 'string' && headingAttributes.anchor !== ''; 59640 latestHeadings.push({ 59641 // Convert line breaks to spaces, and get rid of HTML tags in the headings. 59642 content: (0,external_wp_dom_namespaceObject.__unstableStripHTML)(headingAttributes.content.replace(/(<br *\/?>)+/g, ' ')), 59643 level: headingAttributes.level, 59644 link: canBeLinked ? `$headingPageLink}#${headingAttributes.anchor}` : null 59645 }); 59646 } 59647 } 59648 } 59649 return latestHeadings; 59650 } 59651 function observeCallback(select, dispatch, clientId) { 59652 const { 59653 getBlockAttributes 59654 } = select(external_wp_blockEditor_namespaceObject.store); 59655 const { 59656 updateBlockAttributes, 59657 __unstableMarkNextChangeAsNotPersistent 59658 } = dispatch(external_wp_blockEditor_namespaceObject.store); 59659 59660 /** 59661 * If the block no longer exists in the store, skip the update. 59662 * The "undo" action recreates the block and provides a new `clientId`. 59663 * The hook still might be observing the changes while the old block unmounts. 59664 */ 59665 const attributes = getBlockAttributes(clientId); 59666 if (attributes === null) { 59667 return; 59668 } 59669 const headings = getLatestHeadings(select, clientId); 59670 if (!es6_default()(headings, attributes.headings)) { 59671 __unstableMarkNextChangeAsNotPersistent(); 59672 updateBlockAttributes(clientId, { 59673 headings 59674 }); 59675 } 59676 } 59677 function useObserveHeadings(clientId) { 59678 const registry = (0,external_wp_data_namespaceObject.useRegistry)(); 59679 (0,external_wp_element_namespaceObject.useEffect)(() => { 59680 // Todo: Limit subscription to block editor store when data no longer depends on `getPermalink`. 59681 // See: https://github.com/WordPress/gutenberg/pull/45513 59682 return registry.subscribe(() => observeCallback(registry.select, registry.dispatch, clientId)); 59683 }, [registry, clientId]); 59684 } 59685 59686 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/table-of-contents/edit.js 59687 /** 59688 * WordPress dependencies 59689 */ 59690 59691 59692 59693 59694 59695 59696 59697 59698 59699 59700 /** 59701 * Internal dependencies 59702 */ 59703 59704 59705 59706 59707 /** @typedef {import('./utils').HeadingData} HeadingData */ 59708 59709 /** 59710 * Table of Contents block edit component. 59711 * 59712 * @param {Object} props The props. 59713 * @param {Object} props.attributes The block attributes. 59714 * @param {HeadingData[]} props.attributes.headings A list of data for each heading in the post. 59715 * @param {boolean} props.attributes.onlyIncludeCurrentPage Whether to only include headings from the current page (if the post is paginated). 59716 * @param {string} props.clientId 59717 * @param {(attributes: Object) => void} props.setAttributes 59718 * 59719 * @return {Component} The component. 59720 */ 59721 59722 59723 59724 function TableOfContentsEdit({ 59725 attributes: { 59726 headings = [], 59727 onlyIncludeCurrentPage 59728 }, 59729 clientId, 59730 setAttributes 59731 }) { 59732 useObserveHeadings(clientId); 59733 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 59734 const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(TableOfContentsEdit, 'table-of-contents'); 59735 59736 // If a user clicks to a link prevent redirection and show a warning. 59737 const { 59738 createWarningNotice, 59739 removeNotice 59740 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 59741 let noticeId; 59742 const showRedirectionPreventedNotice = event => { 59743 event.preventDefault(); 59744 // Remove previous warning if any, to show one at a time per block. 59745 removeNotice(noticeId); 59746 noticeId = `block-library/core/table-of-contents/redirection-prevented/$instanceId}`; 59747 createWarningNotice((0,external_wp_i18n_namespaceObject.__)('Links are disabled in the editor.'), { 59748 id: noticeId, 59749 type: 'snackbar' 59750 }); 59751 }; 59752 const canInsertList = (0,external_wp_data_namespaceObject.useSelect)(select => { 59753 const { 59754 getBlockRootClientId, 59755 canInsertBlockType 59756 } = select(external_wp_blockEditor_namespaceObject.store); 59757 const rootClientId = getBlockRootClientId(clientId); 59758 return canInsertBlockType('core/list', rootClientId); 59759 }, [clientId]); 59760 const { 59761 replaceBlocks 59762 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 59763 const headingTree = linearToNestedHeadingList(headings); 59764 const toolbarControls = canInsertList && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 59765 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 59766 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 59767 onClick: () => replaceBlocks(clientId, (0,external_wp_blocks_namespaceObject.createBlock)('core/list', { 59768 ordered: true, 59769 values: (0,external_wp_element_namespaceObject.renderToString)( /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TableOfContentsList, { 59770 nestedHeadingList: headingTree 59771 })) 59772 })), 59773 children: (0,external_wp_i18n_namespaceObject.__)('Convert to static list') 59774 }) 59775 }) 59776 }); 59777 const inspectorControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 59778 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 59779 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 59780 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 59781 __nextHasNoMarginBottom: true, 59782 label: (0,external_wp_i18n_namespaceObject.__)('Only include current page'), 59783 checked: onlyIncludeCurrentPage, 59784 onChange: value => setAttributes({ 59785 onlyIncludeCurrentPage: value 59786 }), 59787 help: onlyIncludeCurrentPage ? (0,external_wp_i18n_namespaceObject.__)('Only including headings from the current page (if the post is paginated).') : (0,external_wp_i18n_namespaceObject.__)('Toggle to only include headings from the current page (if the post is paginated).') 59788 }) 59789 }) 59790 }); 59791 59792 // If there are no headings or the only heading is empty. 59793 // Note that the toolbar controls are intentionally omitted since the 59794 // "Convert to static list" option is useless to the placeholder state. 59795 if (headings.length === 0) { 59796 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 59797 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 59798 ...blockProps, 59799 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 59800 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 59801 icon: table_of_contents 59802 }), 59803 label: (0,external_wp_i18n_namespaceObject.__)('Table of Contents'), 59804 instructions: (0,external_wp_i18n_namespaceObject.__)('Start adding Heading blocks to create a table of contents. Headings with HTML anchors will be linked here.') 59805 }) 59806 }), inspectorControls] 59807 }); 59808 } 59809 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 59810 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("nav", { 59811 ...blockProps, 59812 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ol", { 59813 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TableOfContentsList, { 59814 nestedHeadingList: headingTree, 59815 disableLinkActivation: true, 59816 onClick: showRedirectionPreventedNotice 59817 }) 59818 }) 59819 }), toolbarControls, inspectorControls] 59820 }); 59821 } 59822 59823 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/table-of-contents/save.js 59824 /** 59825 * WordPress dependencies 59826 */ 59827 59828 59829 /** 59830 * Internal dependencies 59831 */ 59832 59833 59834 59835 function table_of_contents_save_save({ 59836 attributes: { 59837 headings = [] 59838 } 59839 }) { 59840 if (headings.length === 0) { 59841 return null; 59842 } 59843 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("nav", { 59844 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 59845 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ol", { 59846 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TableOfContentsList, { 59847 nestedHeadingList: linearToNestedHeadingList(headings) 59848 }) 59849 }) 59850 }); 59851 } 59852 59853 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/table-of-contents/index.js 59854 /** 59855 * WordPress dependencies 59856 */ 59857 59858 59859 /** 59860 * Internal dependencies 59861 */ 59862 59863 const table_of_contents_metadata = { 59864 $schema: "https://schemas.wp.org/trunk/block.json", 59865 apiVersion: 3, 59866 __experimental: true, 59867 name: "core/table-of-contents", 59868 title: "Table of Contents", 59869 category: "design", 59870 description: "Summarize your post with a list of headings. Add HTML anchors to Heading blocks to link them here.", 59871 keywords: ["document outline", "summary"], 59872 textdomain: "default", 59873 attributes: { 59874 headings: { 59875 type: "array", 59876 items: { 59877 type: "object" 59878 }, 59879 "default": [] 59880 }, 59881 onlyIncludeCurrentPage: { 59882 type: "boolean", 59883 "default": false 59884 } 59885 }, 59886 supports: { 59887 html: false, 59888 color: { 59889 text: true, 59890 background: true, 59891 gradients: true, 59892 link: true 59893 }, 59894 spacing: { 59895 margin: true, 59896 padding: true 59897 }, 59898 typography: { 59899 fontSize: true, 59900 lineHeight: true, 59901 __experimentalFontFamily: true, 59902 __experimentalFontWeight: true, 59903 __experimentalFontStyle: true, 59904 __experimentalTextTransform: true, 59905 __experimentalTextDecoration: true, 59906 __experimentalLetterSpacing: true, 59907 __experimentalDefaultControls: { 59908 fontSize: true 59909 } 59910 }, 59911 interactivity: { 59912 clientNavigation: true 59913 }, 59914 __experimentalBorder: { 59915 radius: true, 59916 color: true, 59917 width: true, 59918 style: true, 59919 __experimentalDefaultControls: { 59920 radius: true, 59921 color: true, 59922 width: true, 59923 style: true 59924 } 59925 } 59926 }, 59927 example: {}, 59928 style: "wp-block-table-of-contents" 59929 }; 59930 59931 59932 const { 59933 name: table_of_contents_name 59934 } = table_of_contents_metadata; 59935 59936 const table_of_contents_settings = { 59937 icon: table_of_contents, 59938 edit: TableOfContentsEdit, 59939 save: table_of_contents_save_save 59940 }; 59941 const table_of_contents_init = () => initBlock({ 59942 name: table_of_contents_name, 59943 metadata: table_of_contents_metadata, 59944 settings: table_of_contents_settings 59945 }); 59946 59947 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/tag-cloud/transforms.js 59948 /** 59949 * WordPress dependencies 59950 */ 59951 59952 const tag_cloud_transforms_transforms = { 59953 from: [{ 59954 type: 'block', 59955 blocks: ['core/categories'], 59956 transform: () => (0,external_wp_blocks_namespaceObject.createBlock)('core/tag-cloud') 59957 }], 59958 to: [{ 59959 type: 'block', 59960 blocks: ['core/categories'], 59961 transform: () => (0,external_wp_blocks_namespaceObject.createBlock)('core/categories') 59962 }] 59963 }; 59964 /* harmony default export */ const tag_cloud_transforms = (tag_cloud_transforms_transforms); 59965 59966 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/tag-cloud/edit.js 59967 /** 59968 * WordPress dependencies 59969 */ 59970 59971 59972 59973 59974 59975 59976 59977 /** 59978 * Minimum number of tags a user can show using this block. 59979 * 59980 * @type {number} 59981 */ 59982 59983 59984 59985 const MIN_TAGS = 1; 59986 59987 /** 59988 * Maximum number of tags a user can show using this block. 59989 * 59990 * @type {number} 59991 */ 59992 const MAX_TAGS = 100; 59993 const MIN_FONT_SIZE = 0.1; 59994 const MAX_FONT_SIZE = 100; 59995 function TagCloudEdit({ 59996 attributes, 59997 setAttributes 59998 }) { 59999 const { 60000 taxonomy, 60001 showTagCounts, 60002 numberOfTags, 60003 smallestFontSize, 60004 largestFontSize 60005 } = attributes; 60006 const [availableUnits] = (0,external_wp_blockEditor_namespaceObject.useSettings)('spacing.units'); 60007 60008 // The `pt` unit is used as the default value and is therefore 60009 // always considered an available unit. 60010 const units = (0,external_wp_components_namespaceObject.__experimentalUseCustomUnits)({ 60011 availableUnits: availableUnits ? [...availableUnits, 'pt'] : ['%', 'px', 'em', 'rem', 'pt'] 60012 }); 60013 const taxonomies = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getTaxonomies({ 60014 per_page: -1 60015 }), []); 60016 const getTaxonomyOptions = () => { 60017 const selectOption = { 60018 label: (0,external_wp_i18n_namespaceObject.__)('- Select -'), 60019 value: '', 60020 disabled: true 60021 }; 60022 const taxonomyOptions = (taxonomies !== null && taxonomies !== void 0 ? taxonomies : []).filter(tax => !!tax.show_cloud).map(item => { 60023 return { 60024 value: item.slug, 60025 label: item.name 60026 }; 60027 }); 60028 return [selectOption, ...taxonomyOptions]; 60029 }; 60030 const onFontSizeChange = (fontSizeLabel, newValue) => { 60031 // eslint-disable-next-line @wordpress/no-unused-vars-before-return 60032 const [quantity, newUnit] = (0,external_wp_components_namespaceObject.__experimentalParseQuantityAndUnitFromRawValue)(newValue); 60033 if (!Number.isFinite(quantity)) { 60034 return; 60035 } 60036 const updateObj = { 60037 [fontSizeLabel]: newValue 60038 }; 60039 // We need to keep in sync the `unit` changes to both `smallestFontSize` 60040 // and `largestFontSize` attributes. 60041 Object.entries({ 60042 smallestFontSize, 60043 largestFontSize 60044 }).forEach(([attribute, currentValue]) => { 60045 const [currentQuantity, currentUnit] = (0,external_wp_components_namespaceObject.__experimentalParseQuantityAndUnitFromRawValue)(currentValue); 60046 // Only add an update if the other font size attribute has a different unit. 60047 if (attribute !== fontSizeLabel && currentUnit !== newUnit) { 60048 updateObj[attribute] = `$currentQuantity}$newUnit}`; 60049 } 60050 }); 60051 setAttributes(updateObj); 60052 }; 60053 60054 // Remove border styles from the server-side attributes to prevent duplicate border. 60055 const serverSideAttributes = { 60056 ...attributes, 60057 style: { 60058 ...attributes?.style, 60059 border: undefined 60060 } 60061 }; 60062 const inspectorControls = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 60063 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 60064 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 60065 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { 60066 spacing: 4, 60067 className: "wp-block-tag-cloud__inspector-settings", 60068 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 60069 __nextHasNoMarginBottom: true, 60070 __next40pxDefaultSize: true, 60071 label: (0,external_wp_i18n_namespaceObject.__)('Taxonomy'), 60072 options: getTaxonomyOptions(), 60073 value: taxonomy, 60074 onChange: selectedTaxonomy => setAttributes({ 60075 taxonomy: selectedTaxonomy 60076 }) 60077 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, { 60078 gap: 4, 60079 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { 60080 isBlock: true, 60081 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalUnitControl, { 60082 label: (0,external_wp_i18n_namespaceObject.__)('Smallest size'), 60083 value: smallestFontSize, 60084 onChange: value => { 60085 onFontSizeChange('smallestFontSize', value); 60086 }, 60087 units: units, 60088 min: MIN_FONT_SIZE, 60089 max: MAX_FONT_SIZE, 60090 size: "__unstable-large" 60091 }) 60092 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { 60093 isBlock: true, 60094 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalUnitControl, { 60095 label: (0,external_wp_i18n_namespaceObject.__)('Largest size'), 60096 value: largestFontSize, 60097 onChange: value => { 60098 onFontSizeChange('largestFontSize', value); 60099 }, 60100 units: units, 60101 min: MIN_FONT_SIZE, 60102 max: MAX_FONT_SIZE, 60103 size: "__unstable-large" 60104 }) 60105 })] 60106 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 60107 __nextHasNoMarginBottom: true, 60108 __next40pxDefaultSize: true, 60109 label: (0,external_wp_i18n_namespaceObject.__)('Number of tags'), 60110 value: numberOfTags, 60111 onChange: value => setAttributes({ 60112 numberOfTags: value 60113 }), 60114 min: MIN_TAGS, 60115 max: MAX_TAGS, 60116 required: true 60117 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 60118 __nextHasNoMarginBottom: true, 60119 label: (0,external_wp_i18n_namespaceObject.__)('Show tag counts'), 60120 checked: showTagCounts, 60121 onChange: () => setAttributes({ 60122 showTagCounts: !showTagCounts 60123 }) 60124 })] 60125 }) 60126 }) 60127 }); 60128 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 60129 children: [inspectorControls, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 60130 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)(), 60131 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, { 60132 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)((external_wp_serverSideRender_default()), { 60133 skipBlockSupportAttributes: true, 60134 block: "core/tag-cloud", 60135 attributes: serverSideAttributes 60136 }) 60137 }) 60138 })] 60139 }); 60140 } 60141 /* harmony default export */ const tag_cloud_edit = (TagCloudEdit); 60142 60143 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/tag-cloud/index.js 60144 /** 60145 * WordPress dependencies 60146 */ 60147 60148 60149 /** 60150 * Internal dependencies 60151 */ 60152 60153 60154 const tag_cloud_metadata = { 60155 $schema: "https://schemas.wp.org/trunk/block.json", 60156 apiVersion: 3, 60157 name: "core/tag-cloud", 60158 title: "Tag Cloud", 60159 category: "widgets", 60160 description: "A cloud of popular keywords, each sized by how often it appears.", 60161 textdomain: "default", 60162 attributes: { 60163 numberOfTags: { 60164 type: "number", 60165 "default": 45, 60166 minimum: 1, 60167 maximum: 100 60168 }, 60169 taxonomy: { 60170 type: "string", 60171 "default": "post_tag" 60172 }, 60173 showTagCounts: { 60174 type: "boolean", 60175 "default": false 60176 }, 60177 smallestFontSize: { 60178 type: "string", 60179 "default": "8pt" 60180 }, 60181 largestFontSize: { 60182 type: "string", 60183 "default": "22pt" 60184 } 60185 }, 60186 styles: [{ 60187 name: "default", 60188 label: "Default", 60189 isDefault: true 60190 }, { 60191 name: "outline", 60192 label: "Outline" 60193 }], 60194 supports: { 60195 html: false, 60196 align: true, 60197 spacing: { 60198 margin: true, 60199 padding: true 60200 }, 60201 typography: { 60202 lineHeight: true, 60203 __experimentalFontFamily: true, 60204 __experimentalFontWeight: true, 60205 __experimentalFontStyle: true, 60206 __experimentalTextTransform: true, 60207 __experimentalLetterSpacing: true 60208 }, 60209 interactivity: { 60210 clientNavigation: true 60211 }, 60212 __experimentalBorder: { 60213 radius: true, 60214 color: true, 60215 width: true, 60216 style: true, 60217 __experimentalDefaultControls: { 60218 radius: true, 60219 color: true, 60220 width: true, 60221 style: true 60222 } 60223 } 60224 }, 60225 editorStyle: "wp-block-tag-cloud-editor" 60226 }; 60227 60228 const { 60229 name: tag_cloud_name 60230 } = tag_cloud_metadata; 60231 60232 const tag_cloud_settings = { 60233 icon: library_tag, 60234 example: {}, 60235 edit: tag_cloud_edit, 60236 transforms: tag_cloud_transforms 60237 }; 60238 const tag_cloud_init = () => initBlock({ 60239 name: tag_cloud_name, 60240 metadata: tag_cloud_metadata, 60241 settings: tag_cloud_settings 60242 }); 60243 60244 ;// CONCATENATED MODULE: ./node_modules/tslib/tslib.es6.mjs 60245 /****************************************************************************** 60246 Copyright (c) Microsoft Corporation. 60247 60248 Permission to use, copy, modify, and/or distribute this software for any 60249 purpose with or without fee is hereby granted. 60250 60251 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 60252 REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 60253 AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 60254 INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 60255 LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 60256 OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 60257 PERFORMANCE OF THIS SOFTWARE. 60258 ***************************************************************************** */ 60259 /* global Reflect, Promise, SuppressedError, Symbol, Iterator */ 60260 60261 var extendStatics = function(d, b) { 60262 extendStatics = Object.setPrototypeOf || 60263 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 60264 function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; 60265 return extendStatics(d, b); 60266 }; 60267 60268 function __extends(d, b) { 60269 if (typeof b !== "function" && b !== null) 60270 throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); 60271 extendStatics(d, b); 60272 function __() { this.constructor = d; } 60273 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 60274 } 60275 60276 var __assign = function() { 60277 __assign = Object.assign || function __assign(t) { 60278 for (var s, i = 1, n = arguments.length; i < n; i++) { 60279 s = arguments[i]; 60280 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 60281 } 60282 return t; 60283 } 60284 return __assign.apply(this, arguments); 60285 } 60286 60287 function __rest(s, e) { 60288 var t = {}; 60289 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) 60290 t[p] = s[p]; 60291 if (s != null && typeof Object.getOwnPropertySymbols === "function") 60292 for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { 60293 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) 60294 t[p[i]] = s[p[i]]; 60295 } 60296 return t; 60297 } 60298 60299 function __decorate(decorators, target, key, desc) { 60300 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 60301 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 60302 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 60303 return c > 3 && r && Object.defineProperty(target, key, r), r; 60304 } 60305 60306 function __param(paramIndex, decorator) { 60307 return function (target, key) { decorator(target, key, paramIndex); } 60308 } 60309 60310 function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { 60311 function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } 60312 var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; 60313 var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; 60314 var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); 60315 var _, done = false; 60316 for (var i = decorators.length - 1; i >= 0; i--) { 60317 var context = {}; 60318 for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; 60319 for (var p in contextIn.access) context.access[p] = contextIn.access[p]; 60320 context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; 60321 var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); 60322 if (kind === "accessor") { 60323 if (result === void 0) continue; 60324 if (result === null || typeof result !== "object") throw new TypeError("Object expected"); 60325 if (_ = accept(result.get)) descriptor.get = _; 60326 if (_ = accept(result.set)) descriptor.set = _; 60327 if (_ = accept(result.init)) initializers.unshift(_); 60328 } 60329 else if (_ = accept(result)) { 60330 if (kind === "field") initializers.unshift(_); 60331 else descriptor[key] = _; 60332 } 60333 } 60334 if (target) Object.defineProperty(target, contextIn.name, descriptor); 60335 done = true; 60336 }; 60337 60338 function __runInitializers(thisArg, initializers, value) { 60339 var useValue = arguments.length > 2; 60340 for (var i = 0; i < initializers.length; i++) { 60341 value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); 60342 } 60343 return useValue ? value : void 0; 60344 }; 60345 60346 function __propKey(x) { 60347 return typeof x === "symbol" ? x : "".concat(x); 60348 }; 60349 60350 function __setFunctionName(f, name, prefix) { 60351 if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; 60352 return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); 60353 }; 60354 60355 function __metadata(metadataKey, metadataValue) { 60356 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); 60357 } 60358 60359 function __awaiter(thisArg, _arguments, P, generator) { 60360 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 60361 return new (P || (P = Promise))(function (resolve, reject) { 60362 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 60363 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 60364 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 60365 step((generator = generator.apply(thisArg, _arguments || [])).next()); 60366 }); 60367 } 60368 60369 function __generator(thisArg, body) { 60370 var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); 60371 return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; 60372 function verb(n) { return function (v) { return step([n, v]); }; } 60373 function step(op) { 60374 if (f) throw new TypeError("Generator is already executing."); 60375 while (g && (g = 0, op[0] && (_ = 0)), _) try { 60376 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 60377 if (y = 0, t) op = [op[0] & 2, t.value]; 60378 switch (op[0]) { 60379 case 0: case 1: t = op; break; 60380 case 4: _.label++; return { value: op[1], done: false }; 60381 case 5: _.label++; y = op[1]; op = [0]; continue; 60382 case 7: op = _.ops.pop(); _.trys.pop(); continue; 60383 default: 60384 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } 60385 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } 60386 if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } 60387 if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } 60388 if (t[2]) _.ops.pop(); 60389 _.trys.pop(); continue; 60390 } 60391 op = body.call(thisArg, _); 60392 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } 60393 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; 60394 } 60395 } 60396 60397 var __createBinding = Object.create ? (function(o, m, k, k2) { 60398 if (k2 === undefined) k2 = k; 60399 var desc = Object.getOwnPropertyDescriptor(m, k); 60400 if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 60401 desc = { enumerable: true, get: function() { return m[k]; } }; 60402 } 60403 Object.defineProperty(o, k2, desc); 60404 }) : (function(o, m, k, k2) { 60405 if (k2 === undefined) k2 = k; 60406 o[k2] = m[k]; 60407 }); 60408 60409 function __exportStar(m, o) { 60410 for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); 60411 } 60412 60413 function __values(o) { 60414 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; 60415 if (m) return m.call(o); 60416 if (o && typeof o.length === "number") return { 60417 next: function () { 60418 if (o && i >= o.length) o = void 0; 60419 return { value: o && o[i++], done: !o }; 60420 } 60421 }; 60422 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); 60423 } 60424 60425 function __read(o, n) { 60426 var m = typeof Symbol === "function" && o[Symbol.iterator]; 60427 if (!m) return o; 60428 var i = m.call(o), r, ar = [], e; 60429 try { 60430 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); 60431 } 60432 catch (error) { e = { error: error }; } 60433 finally { 60434 try { 60435 if (r && !r.done && (m = i["return"])) m.call(i); 60436 } 60437 finally { if (e) throw e.error; } 60438 } 60439 return ar; 60440 } 60441 60442 /** @deprecated */ 60443 function __spread() { 60444 for (var ar = [], i = 0; i < arguments.length; i++) 60445 ar = ar.concat(__read(arguments[i])); 60446 return ar; 60447 } 60448 60449 /** @deprecated */ 60450 function __spreadArrays() { 60451 for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; 60452 for (var r = Array(s), k = 0, i = 0; i < il; i++) 60453 for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) 60454 r[k] = a[j]; 60455 return r; 60456 } 60457 60458 function __spreadArray(to, from, pack) { 60459 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 60460 if (ar || !(i in from)) { 60461 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 60462 ar[i] = from[i]; 60463 } 60464 } 60465 return to.concat(ar || Array.prototype.slice.call(from)); 60466 } 60467 60468 function __await(v) { 60469 return this instanceof __await ? (this.v = v, this) : new __await(v); 60470 } 60471 60472 function __asyncGenerator(thisArg, _arguments, generator) { 60473 if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); 60474 var g = generator.apply(thisArg, _arguments || []), i, q = []; 60475 return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; 60476 function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } 60477 function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } 60478 function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } 60479 function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } 60480 function fulfill(value) { resume("next", value); } 60481 function reject(value) { resume("throw", value); } 60482 function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } 60483 } 60484 60485 function __asyncDelegator(o) { 60486 var i, p; 60487 return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; 60488 function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } 60489 } 60490 60491 function __asyncValues(o) { 60492 if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); 60493 var m = o[Symbol.asyncIterator], i; 60494 return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); 60495 function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } 60496 function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } 60497 } 60498 60499 function __makeTemplateObject(cooked, raw) { 60500 if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } 60501 return cooked; 60502 }; 60503 60504 var __setModuleDefault = Object.create ? (function(o, v) { 60505 Object.defineProperty(o, "default", { enumerable: true, value: v }); 60506 }) : function(o, v) { 60507 o["default"] = v; 60508 }; 60509 60510 function __importStar(mod) { 60511 if (mod && mod.__esModule) return mod; 60512 var result = {}; 60513 if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); 60514 __setModuleDefault(result, mod); 60515 return result; 60516 } 60517 60518 function __importDefault(mod) { 60519 return (mod && mod.__esModule) ? mod : { default: mod }; 60520 } 60521 60522 function __classPrivateFieldGet(receiver, state, kind, f) { 60523 if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); 60524 if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); 60525 return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); 60526 } 60527 60528 function __classPrivateFieldSet(receiver, state, value, kind, f) { 60529 if (kind === "m") throw new TypeError("Private method is not writable"); 60530 if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); 60531 if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); 60532 return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; 60533 } 60534 60535 function __classPrivateFieldIn(state, receiver) { 60536 if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); 60537 return typeof state === "function" ? receiver === state : state.has(receiver); 60538 } 60539 60540 function __addDisposableResource(env, value, async) { 60541 if (value !== null && value !== void 0) { 60542 if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); 60543 var dispose, inner; 60544 if (async) { 60545 if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); 60546 dispose = value[Symbol.asyncDispose]; 60547 } 60548 if (dispose === void 0) { 60549 if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); 60550 dispose = value[Symbol.dispose]; 60551 if (async) inner = dispose; 60552 } 60553 if (typeof dispose !== "function") throw new TypeError("Object not disposable."); 60554 if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; 60555 env.stack.push({ value: value, dispose: dispose, async: async }); 60556 } 60557 else if (async) { 60558 env.stack.push({ async: true }); 60559 } 60560 return value; 60561 } 60562 60563 var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { 60564 var e = new Error(message); 60565 return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; 60566 }; 60567 60568 function __disposeResources(env) { 60569 function fail(e) { 60570 env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; 60571 env.hasError = true; 60572 } 60573 var r, s = 0; 60574 function next() { 60575 while (r = env.stack.pop()) { 60576 try { 60577 if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); 60578 if (r.dispose) { 60579 var result = r.dispose.call(r.value); 60580 if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); 60581 } 60582 else s |= 1; 60583 } 60584 catch (e) { 60585 fail(e); 60586 } 60587 } 60588 if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); 60589 if (env.hasError) throw env.error; 60590 } 60591 return next(); 60592 } 60593 60594 /* harmony default export */ const tslib_es6 = ({ 60595 __extends, 60596 __assign, 60597 __rest, 60598 __decorate, 60599 __param, 60600 __metadata, 60601 __awaiter, 60602 __generator, 60603 __createBinding, 60604 __exportStar, 60605 __values, 60606 __read, 60607 __spread, 60608 __spreadArrays, 60609 __spreadArray, 60610 __await, 60611 __asyncGenerator, 60612 __asyncDelegator, 60613 __asyncValues, 60614 __makeTemplateObject, 60615 __importStar, 60616 __importDefault, 60617 __classPrivateFieldGet, 60618 __classPrivateFieldSet, 60619 __classPrivateFieldIn, 60620 __addDisposableResource, 60621 __disposeResources, 60622 }); 60623 60624 ;// CONCATENATED MODULE: ./node_modules/lower-case/dist.es2015/index.js 60625 /** 60626 * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt 60627 */ 60628 var SUPPORTED_LOCALE = { 60629 tr: { 60630 regexp: /\u0130|\u0049|\u0049\u0307/g, 60631 map: { 60632 İ: "\u0069", 60633 I: "\u0131", 60634 İ: "\u0069", 60635 }, 60636 }, 60637 az: { 60638 regexp: /\u0130/g, 60639 map: { 60640 İ: "\u0069", 60641 I: "\u0131", 60642 İ: "\u0069", 60643 }, 60644 }, 60645 lt: { 60646 regexp: /\u0049|\u004A|\u012E|\u00CC|\u00CD|\u0128/g, 60647 map: { 60648 I: "\u0069\u0307", 60649 J: "\u006A\u0307", 60650 Į: "\u012F\u0307", 60651 Ì: "\u0069\u0307\u0300", 60652 Í: "\u0069\u0307\u0301", 60653 Ĩ: "\u0069\u0307\u0303", 60654 }, 60655 }, 60656 }; 60657 /** 60658 * Localized lower case. 60659 */ 60660 function localeLowerCase(str, locale) { 60661 var lang = SUPPORTED_LOCALE[locale.toLowerCase()]; 60662 if (lang) 60663 return lowerCase(str.replace(lang.regexp, function (m) { return lang.map[m]; })); 60664 return lowerCase(str); 60665 } 60666 /** 60667 * Lower case as a function. 60668 */ 60669 function lowerCase(str) { 60670 return str.toLowerCase(); 60671 } 60672 60673 ;// CONCATENATED MODULE: ./node_modules/no-case/dist.es2015/index.js 60674 60675 // Support camel case ("camelCase" -> "camel Case" and "CAMELCase" -> "CAMEL Case"). 60676 var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g]; 60677 // Remove all non-word characters. 60678 var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi; 60679 /** 60680 * Normalize the string into something other libraries can manipulate easier. 60681 */ 60682 function noCase(input, options) { 60683 if (options === void 0) { options = {}; } 60684 var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d; 60685 var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0"); 60686 var start = 0; 60687 var end = result.length; 60688 // Trim the delimiter from around the output string. 60689 while (result.charAt(start) === "\0") 60690 start++; 60691 while (result.charAt(end - 1) === "\0") 60692 end--; 60693 // Transform each token independently. 60694 return result.slice(start, end).split("\0").map(transform).join(delimiter); 60695 } 60696 /** 60697 * Replace `re` in the input string with the replacement value. 60698 */ 60699 function replace(input, re, value) { 60700 if (re instanceof RegExp) 60701 return input.replace(re, value); 60702 return re.reduce(function (input, re) { return input.replace(re, value); }, input); 60703 } 60704 60705 ;// CONCATENATED MODULE: ./node_modules/upper-case-first/dist.es2015/index.js 60706 /** 60707 * Upper case the first character of an input string. 60708 */ 60709 function upperCaseFirst(input) { 60710 return input.charAt(0).toUpperCase() + input.substr(1); 60711 } 60712 60713 ;// CONCATENATED MODULE: ./node_modules/capital-case/dist.es2015/index.js 60714 60715 60716 60717 function capitalCaseTransform(input) { 60718 return upperCaseFirst(input.toLowerCase()); 60719 } 60720 function capitalCase(input, options) { 60721 if (options === void 0) { options = {}; } 60722 return noCase(input, __assign({ delimiter: " ", transform: capitalCaseTransform }, options)); 60723 } 60724 60725 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/symbol-filled.js 60726 /** 60727 * WordPress dependencies 60728 */ 60729 60730 60731 const symbolFilled = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 60732 xmlns: "http://www.w3.org/2000/svg", 60733 viewBox: "0 0 24 24", 60734 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 60735 d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-17.6 1L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z" 60736 }) 60737 }); 60738 /* harmony default export */ const symbol_filled = (symbolFilled); 60739 60740 ;// CONCATENATED MODULE: ./node_modules/dot-case/dist.es2015/index.js 60741 60742 60743 function dotCase(input, options) { 60744 if (options === void 0) { options = {}; } 60745 return noCase(input, __assign({ delimiter: "." }, options)); 60746 } 60747 60748 ;// CONCATENATED MODULE: ./node_modules/param-case/dist.es2015/index.js 60749 60750 60751 function paramCase(input, options) { 60752 if (options === void 0) { options = {}; } 60753 return dotCase(input, __assign({ delimiter: "-" }, options)); 60754 } 60755 60756 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/template-part/edit/utils/hooks.js 60757 /** 60758 * External dependencies 60759 */ 60760 60761 60762 /** 60763 * WordPress dependencies 60764 */ 60765 60766 60767 60768 60769 60770 60771 60772 /** 60773 * Internal dependencies 60774 */ 60775 60776 60777 /** 60778 * Retrieves the available template parts for the given area. 60779 * 60780 * @param {string} area Template part area. 60781 * @param {string} excludedId Template part ID to exclude. 60782 * 60783 * @return {{ templateParts: Array, isResolving: boolean }} array of template parts. 60784 */ 60785 function useAlternativeTemplateParts(area, excludedId) { 60786 const { 60787 templateParts, 60788 isResolving 60789 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 60790 const { 60791 getEntityRecords, 60792 isResolving: _isResolving 60793 } = select(external_wp_coreData_namespaceObject.store); 60794 const query = { 60795 per_page: -1 60796 }; 60797 return { 60798 templateParts: getEntityRecords('postType', 'wp_template_part', query), 60799 isResolving: _isResolving('getEntityRecords', ['postType', 'wp_template_part', query]) 60800 }; 60801 }, []); 60802 const filteredTemplateParts = (0,external_wp_element_namespaceObject.useMemo)(() => { 60803 if (!templateParts) { 60804 return []; 60805 } 60806 return templateParts.filter(templatePart => createTemplatePartId(templatePart.theme, templatePart.slug) !== excludedId && (!area || 'uncategorized' === area || templatePart.area === area)) || []; 60807 }, [templateParts, area, excludedId]); 60808 return { 60809 templateParts: filteredTemplateParts, 60810 isResolving 60811 }; 60812 } 60813 60814 /** 60815 * Retrieves the available block patterns for the given area. 60816 * 60817 * @param {string} area Template part area. 60818 * @param {string} clientId Block Client ID. (The container of the block can impact allowed blocks). 60819 * 60820 * @return {Array} array of block patterns. 60821 */ 60822 function useAlternativeBlockPatterns(area, clientId) { 60823 return (0,external_wp_data_namespaceObject.useSelect)(select => { 60824 const blockNameWithArea = area ? `core/template-part/$area}` : 'core/template-part'; 60825 const { 60826 getBlockRootClientId, 60827 getPatternsByBlockTypes 60828 } = select(external_wp_blockEditor_namespaceObject.store); 60829 const rootClientId = getBlockRootClientId(clientId); 60830 return getPatternsByBlockTypes(blockNameWithArea, rootClientId); 60831 }, [area, clientId]); 60832 } 60833 function useCreateTemplatePartFromBlocks(area, setAttributes) { 60834 const { 60835 saveEntityRecord 60836 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 60837 return async (blocks = [], title = (0,external_wp_i18n_namespaceObject.__)('Untitled Template Part')) => { 60838 // Currently template parts only allow latin chars. 60839 // Fallback slug will receive suffix by default. 60840 const cleanSlug = paramCase(title).replace(/[^\w-]+/g, '') || 'wp-custom-part'; 60841 60842 // If we have `area` set from block attributes, means an exposed 60843 // block variation was inserted. So add this prop to the template 60844 // part entity on creation. Afterwards remove `area` value from 60845 // block attributes. 60846 const record = { 60847 title, 60848 slug: cleanSlug, 60849 content: (0,external_wp_blocks_namespaceObject.serialize)(blocks), 60850 // `area` is filterable on the server and defaults to `UNCATEGORIZED` 60851 // if provided value is not allowed. 60852 area 60853 }; 60854 const templatePart = await saveEntityRecord('postType', 'wp_template_part', record); 60855 setAttributes({ 60856 slug: templatePart.slug, 60857 theme: templatePart.theme, 60858 area: undefined 60859 }); 60860 }; 60861 } 60862 60863 /** 60864 * Retrieves the template part area object. 60865 * 60866 * @param {string} area Template part area identifier. 60867 * 60868 * @return {{icon: Object, label: string, tagName: string}} Template Part area. 60869 */ 60870 function useTemplatePartArea(area) { 60871 return (0,external_wp_data_namespaceObject.useSelect)(select => { 60872 var _selectedArea$area_ta; 60873 // FIXME: @wordpress/block-library should not depend on @wordpress/editor. 60874 // Blocks can be loaded into a *non-post* block editor. 60875 /* eslint-disable @wordpress/data-no-store-string-literals */ 60876 const definedAreas = select('core/editor').__experimentalGetDefaultTemplatePartAreas(); 60877 /* eslint-enable @wordpress/data-no-store-string-literals */ 60878 60879 const selectedArea = definedAreas.find(definedArea => definedArea.area === area); 60880 const defaultArea = definedAreas.find(definedArea => definedArea.area === 'uncategorized'); 60881 return { 60882 icon: selectedArea?.icon || defaultArea?.icon, 60883 label: selectedArea?.label || (0,external_wp_i18n_namespaceObject.__)('Template Part'), 60884 tagName: (_selectedArea$area_ta = selectedArea?.area_tag) !== null && _selectedArea$area_ta !== void 0 ? _selectedArea$area_ta : 'div' 60885 }; 60886 }, [area]); 60887 } 60888 60889 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/template-part/edit/title-modal.js 60890 /** 60891 * WordPress dependencies 60892 */ 60893 60894 60895 60896 60897 60898 function TitleModal({ 60899 areaLabel, 60900 onClose, 60901 onSubmit 60902 }) { 60903 // Restructure onCreate to set the blocks on local state. 60904 // Add modal to confirm title and trigger onCreate. 60905 const [title, setTitle] = (0,external_wp_element_namespaceObject.useState)(''); 60906 const submitForCreation = event => { 60907 event.preventDefault(); 60908 onSubmit(title); 60909 }; 60910 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, { 60911 title: (0,external_wp_i18n_namespaceObject.sprintf)( 60912 // Translators: %s as template part area title ("Header", "Footer", etc.). 60913 (0,external_wp_i18n_namespaceObject.__)('Create new %s'), areaLabel.toLowerCase()), 60914 onRequestClose: onClose, 60915 focusOnMount: "firstContentElement", 60916 size: "small", 60917 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", { 60918 onSubmit: submitForCreation, 60919 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { 60920 spacing: "5", 60921 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 60922 label: (0,external_wp_i18n_namespaceObject.__)('Name'), 60923 value: title, 60924 onChange: setTitle, 60925 placeholder: (0,external_wp_i18n_namespaceObject.__)('Custom Template Part'), 60926 __nextHasNoMarginBottom: true, 60927 __next40pxDefaultSize: true 60928 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { 60929 justify: "right", 60930 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 60931 __next40pxDefaultSize: true, 60932 variant: "tertiary", 60933 onClick: () => { 60934 onClose(); 60935 setTitle(''); 60936 }, 60937 children: (0,external_wp_i18n_namespaceObject.__)('Cancel') 60938 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 60939 variant: "primary", 60940 type: "submit", 60941 accessibleWhenDisabled: true, 60942 disabled: !title.length, 60943 __next40pxDefaultSize: true, 60944 children: (0,external_wp_i18n_namespaceObject.__)('Create') 60945 })] 60946 })] 60947 }) 60948 }) 60949 }); 60950 } 60951 60952 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/template-part/edit/placeholder.js 60953 /** 60954 * WordPress dependencies 60955 */ 60956 60957 60958 60959 60960 60961 60962 /** 60963 * Internal dependencies 60964 */ 60965 60966 60967 60968 60969 function TemplatePartPlaceholder({ 60970 area, 60971 clientId, 60972 templatePartId, 60973 onOpenSelectionModal, 60974 setAttributes 60975 }) { 60976 const { 60977 templateParts, 60978 isResolving 60979 } = useAlternativeTemplateParts(area, templatePartId); 60980 const blockPatterns = useAlternativeBlockPatterns(area, clientId); 60981 const { 60982 isBlockBasedTheme, 60983 canCreateTemplatePart 60984 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 60985 const { 60986 getCurrentTheme, 60987 canUser 60988 } = select(external_wp_coreData_namespaceObject.store); 60989 return { 60990 isBlockBasedTheme: getCurrentTheme()?.is_block_theme, 60991 canCreateTemplatePart: canUser('create', { 60992 kind: 'postType', 60993 name: 'wp_template_part' 60994 }) 60995 }; 60996 }, []); 60997 const [showTitleModal, setShowTitleModal] = (0,external_wp_element_namespaceObject.useState)(false); 60998 const areaObject = useTemplatePartArea(area); 60999 const createFromBlocks = useCreateTemplatePartFromBlocks(area, setAttributes); 61000 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Placeholder, { 61001 icon: areaObject.icon, 61002 label: areaObject.label, 61003 instructions: isBlockBasedTheme ? (0,external_wp_i18n_namespaceObject.sprintf)( 61004 // Translators: %s as template part area title ("Header", "Footer", etc.). 61005 (0,external_wp_i18n_namespaceObject.__)('Choose an existing %s or create a new one.'), areaObject.label.toLowerCase()) : (0,external_wp_i18n_namespaceObject.sprintf)( 61006 // Translators: %s as template part area title ("Header", "Footer", etc.). 61007 (0,external_wp_i18n_namespaceObject.__)('Choose an existing %s.'), areaObject.label.toLowerCase()), 61008 children: [isResolving && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}), !isResolving && !!(templateParts.length || blockPatterns.length) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 61009 __next40pxDefaultSize: true, 61010 variant: "primary", 61011 onClick: onOpenSelectionModal, 61012 children: (0,external_wp_i18n_namespaceObject.__)('Choose') 61013 }), !isResolving && isBlockBasedTheme && canCreateTemplatePart && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 61014 __next40pxDefaultSize: true, 61015 variant: "secondary", 61016 onClick: () => { 61017 setShowTitleModal(true); 61018 }, 61019 children: (0,external_wp_i18n_namespaceObject.__)('Start blank') 61020 }), showTitleModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TitleModal, { 61021 areaLabel: areaObject.label, 61022 onClose: () => setShowTitleModal(false), 61023 onSubmit: title => { 61024 createFromBlocks([], title); 61025 } 61026 })] 61027 }); 61028 } 61029 61030 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js 61031 /** 61032 * WordPress dependencies 61033 */ 61034 61035 61036 /** 61037 * Internal dependencies 61038 */ 61039 61040 61041 /** 61042 * This maps the properties of a template part to those of a block pattern. 61043 * @param {Object} templatePart 61044 * @return {Object} The template part in the shape of block pattern. 61045 */ 61046 function mapTemplatePartToBlockPattern(templatePart) { 61047 return { 61048 name: createTemplatePartId(templatePart.theme, templatePart.slug), 61049 title: templatePart.title.rendered, 61050 blocks: (0,external_wp_blocks_namespaceObject.parse)(templatePart.content.raw), 61051 templatePart 61052 }; 61053 } 61054 61055 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/template-part/edit/selection-modal.js 61056 /** 61057 * WordPress dependencies 61058 */ 61059 61060 61061 61062 61063 61064 61065 61066 61067 /** 61068 * Internal dependencies 61069 */ 61070 61071 61072 61073 61074 61075 function TemplatePartSelectionModal({ 61076 setAttributes, 61077 onClose, 61078 templatePartId = null, 61079 area, 61080 clientId 61081 }) { 61082 const [searchValue, setSearchValue] = (0,external_wp_element_namespaceObject.useState)(''); 61083 const { 61084 templateParts 61085 } = useAlternativeTemplateParts(area, templatePartId); 61086 61087 // We can map template parts to block patters to reuse the BlockPatternsList UI 61088 const filteredTemplateParts = (0,external_wp_element_namespaceObject.useMemo)(() => { 61089 const partsAsPatterns = templateParts.map(templatePart => mapTemplatePartToBlockPattern(templatePart)); 61090 return searchPatterns(partsAsPatterns, searchValue); 61091 }, [templateParts, searchValue]); 61092 const shownTemplateParts = (0,external_wp_compose_namespaceObject.useAsyncList)(filteredTemplateParts); 61093 const blockPatterns = useAlternativeBlockPatterns(area, clientId); 61094 const filteredBlockPatterns = (0,external_wp_element_namespaceObject.useMemo)(() => { 61095 return searchPatterns(blockPatterns, searchValue); 61096 }, [blockPatterns, searchValue]); 61097 const { 61098 createSuccessNotice 61099 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 61100 const onTemplatePartSelect = templatePart => { 61101 setAttributes({ 61102 slug: templatePart.slug, 61103 theme: templatePart.theme, 61104 area: undefined 61105 }); 61106 createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: template part title. */ 61107 (0,external_wp_i18n_namespaceObject.__)('Template Part "%s" inserted.'), templatePart.title?.rendered || templatePart.slug), { 61108 type: 'snackbar' 61109 }); 61110 onClose(); 61111 }; 61112 const hasTemplateParts = !!filteredTemplateParts.length; 61113 const hasBlockPatterns = !!filteredBlockPatterns.length; 61114 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 61115 className: "block-library-template-part__selection-content", 61116 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 61117 className: "block-library-template-part__selection-search", 61118 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SearchControl, { 61119 __nextHasNoMarginBottom: true, 61120 onChange: setSearchValue, 61121 value: searchValue, 61122 label: (0,external_wp_i18n_namespaceObject.__)('Search for replacements'), 61123 placeholder: (0,external_wp_i18n_namespaceObject.__)('Search') 61124 }) 61125 }), hasTemplateParts && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 61126 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h2", { 61127 children: (0,external_wp_i18n_namespaceObject.__)('Existing template parts') 61128 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalBlockPatternsList, { 61129 blockPatterns: filteredTemplateParts, 61130 shownPatterns: shownTemplateParts, 61131 onClickPattern: pattern => { 61132 onTemplatePartSelect(pattern.templatePart); 61133 } 61134 })] 61135 }), !hasTemplateParts && !hasBlockPatterns && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, { 61136 alignment: "center", 61137 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 61138 children: (0,external_wp_i18n_namespaceObject.__)('No results found.') 61139 }) 61140 })] 61141 }); 61142 } 61143 61144 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/template-part/edit/utils/transformers.js 61145 /** 61146 * WordPress dependencies 61147 */ 61148 61149 61150 /** 61151 * Converts a widget entity record into a block. 61152 * 61153 * @param {Object} widget The widget entity record. 61154 * @return {Object} a block (converted from the entity record). 61155 */ 61156 function transformWidgetToBlock(widget) { 61157 if (widget.id_base !== 'block') { 61158 let attributes; 61159 if (widget._embedded.about[0].is_multi) { 61160 attributes = { 61161 idBase: widget.id_base, 61162 instance: widget.instance 61163 }; 61164 } else { 61165 attributes = { 61166 id: widget.id 61167 }; 61168 } 61169 return switchLegacyWidgetType((0,external_wp_blocks_namespaceObject.createBlock)('core/legacy-widget', attributes)); 61170 } 61171 const parsedBlocks = (0,external_wp_blocks_namespaceObject.parse)(widget.instance.raw.content, { 61172 __unstableSkipAutop: true 61173 }); 61174 if (!parsedBlocks.length) { 61175 return undefined; 61176 } 61177 const block = parsedBlocks[0]; 61178 if (block.name === 'core/widget-group') { 61179 return (0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getGroupingBlockName)(), undefined, transformInnerBlocks(block.innerBlocks)); 61180 } 61181 if (block.innerBlocks.length > 0) { 61182 return (0,external_wp_blocks_namespaceObject.cloneBlock)(block, undefined, transformInnerBlocks(block.innerBlocks)); 61183 } 61184 return block; 61185 } 61186 61187 /** 61188 * Switch Legacy Widget to the first matching transformation block. 61189 * 61190 * @param {Object} block Legacy Widget block object 61191 * @return {Object|undefined} a block 61192 */ 61193 function switchLegacyWidgetType(block) { 61194 const transforms = (0,external_wp_blocks_namespaceObject.getPossibleBlockTransformations)([block]).filter(item => { 61195 // The block without any transformations can't be a wildcard. 61196 if (!item.transforms) { 61197 return true; 61198 } 61199 const hasWildCardFrom = item.transforms?.from?.find(from => from.blocks && from.blocks.includes('*')); 61200 const hasWildCardTo = item.transforms?.to?.find(to => to.blocks && to.blocks.includes('*')); 61201 61202 // Skip wildcard transformations. 61203 return !hasWildCardFrom && !hasWildCardTo; 61204 }); 61205 if (!transforms.length) { 61206 return undefined; 61207 } 61208 return (0,external_wp_blocks_namespaceObject.switchToBlockType)(block, transforms[0].name); 61209 } 61210 function transformInnerBlocks(innerBlocks = []) { 61211 return innerBlocks.flatMap(block => { 61212 if (block.name === 'core/legacy-widget') { 61213 return switchLegacyWidgetType(block); 61214 } 61215 return (0,external_wp_blocks_namespaceObject.createBlock)(block.name, block.attributes, transformInnerBlocks(block.innerBlocks)); 61216 }).filter(block => !!block); 61217 } 61218 61219 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/template-part/edit/import-controls.js 61220 /** 61221 * WordPress dependencies 61222 */ 61223 61224 61225 61226 61227 61228 61229 61230 /** 61231 * Internal dependencies 61232 */ 61233 61234 61235 61236 61237 const SIDEBARS_QUERY = { 61238 per_page: -1, 61239 _fields: 'id,name,description,status,widgets' 61240 }; 61241 function TemplatePartImportControls({ 61242 area, 61243 setAttributes 61244 }) { 61245 const [selectedSidebar, setSelectedSidebar] = (0,external_wp_element_namespaceObject.useState)(''); 61246 const [isBusy, setIsBusy] = (0,external_wp_element_namespaceObject.useState)(false); 61247 const registry = (0,external_wp_data_namespaceObject.useRegistry)(); 61248 const { 61249 sidebars, 61250 hasResolved 61251 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 61252 const { 61253 getSidebars, 61254 hasFinishedResolution 61255 } = select(external_wp_coreData_namespaceObject.store); 61256 return { 61257 sidebars: getSidebars(SIDEBARS_QUERY), 61258 hasResolved: hasFinishedResolution('getSidebars', [SIDEBARS_QUERY]) 61259 }; 61260 }, []); 61261 const { 61262 createErrorNotice 61263 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 61264 const createFromBlocks = useCreateTemplatePartFromBlocks(area, setAttributes); 61265 const options = (0,external_wp_element_namespaceObject.useMemo)(() => { 61266 const sidebarOptions = (sidebars !== null && sidebars !== void 0 ? sidebars : []).filter(widgetArea => widgetArea.id !== 'wp_inactive_widgets' && widgetArea.widgets.length > 0).map(widgetArea => { 61267 return { 61268 value: widgetArea.id, 61269 label: widgetArea.name 61270 }; 61271 }); 61272 if (!sidebarOptions.length) { 61273 return []; 61274 } 61275 return [{ 61276 value: '', 61277 label: (0,external_wp_i18n_namespaceObject.__)('Select widget area') 61278 }, ...sidebarOptions]; 61279 }, [sidebars]); 61280 61281 // Render an empty node while data is loading to avoid SlotFill re-positioning bug. 61282 // See: https://github.com/WordPress/gutenberg/issues/15641. 61283 if (!hasResolved) { 61284 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, { 61285 marginBottom: "0" 61286 }); 61287 } 61288 if (hasResolved && !options.length) { 61289 return null; 61290 } 61291 async function createFromWidgets(event) { 61292 event.preventDefault(); 61293 if (isBusy || !selectedSidebar) { 61294 return; 61295 } 61296 setIsBusy(true); 61297 const sidebar = options.find(({ 61298 value 61299 }) => value === selectedSidebar); 61300 const { 61301 getWidgets 61302 } = registry.resolveSelect(external_wp_coreData_namespaceObject.store); 61303 61304 // The widgets API always returns a successful response. 61305 const widgets = await getWidgets({ 61306 sidebar: sidebar.value, 61307 _embed: 'about' 61308 }); 61309 const skippedWidgets = new Set(); 61310 const blocks = widgets.flatMap(widget => { 61311 const block = transformWidgetToBlock(widget); 61312 61313 // Skip the block if we have no matching transformations. 61314 if (!block) { 61315 skippedWidgets.add(widget.id_base); 61316 return []; 61317 } 61318 return block; 61319 }); 61320 await createFromBlocks(blocks, /* translators: %s: name of the widget area */ 61321 (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('Widget area: %s'), sidebar.label)); 61322 if (skippedWidgets.size) { 61323 createErrorNotice((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: the list of widgets */ 61324 (0,external_wp_i18n_namespaceObject.__)('Unable to import the following widgets: %s.'), Array.from(skippedWidgets).join(', ')), { 61325 type: 'snackbar' 61326 }); 61327 } 61328 setIsBusy(false); 61329 } 61330 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, { 61331 marginBottom: "4", 61332 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { 61333 as: "form", 61334 onSubmit: createFromWidgets, 61335 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexBlock, { 61336 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 61337 label: (0,external_wp_i18n_namespaceObject.__)('Import widget area'), 61338 value: selectedSidebar, 61339 options: options, 61340 onChange: value => setSelectedSidebar(value), 61341 disabled: !options.length, 61342 __next40pxDefaultSize: true, 61343 __nextHasNoMarginBottom: true 61344 }) 61345 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { 61346 style: { 61347 marginBottom: '8px', 61348 marginTop: 'auto' 61349 }, 61350 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 61351 __next40pxDefaultSize: true, 61352 variant: "primary", 61353 type: "submit", 61354 isBusy: isBusy, 61355 "aria-disabled": isBusy || !selectedSidebar, 61356 children: (0,external_wp_i18n_namespaceObject._x)('Import', 'button label') 61357 }) 61358 })] 61359 }) 61360 }); 61361 } 61362 61363 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/template-part/edit/advanced-controls.js 61364 /** 61365 * WordPress dependencies 61366 */ 61367 61368 61369 61370 61371 61372 /** 61373 * Internal dependencies 61374 */ 61375 61376 61377 61378 61379 const htmlElementMessages = { 61380 header: (0,external_wp_i18n_namespaceObject.__)('The <header> element should represent introductory content, typically a group of introductory or navigational aids.'), 61381 main: (0,external_wp_i18n_namespaceObject.__)('The <main> element should be used for the primary content of your document only.'), 61382 section: (0,external_wp_i18n_namespaceObject.__)("The <section> element should represent a standalone portion of the document that can't be better represented by another element."), 61383 article: (0,external_wp_i18n_namespaceObject.__)('The <article> element should represent a self-contained, syndicatable portion of the document.'), 61384 aside: (0,external_wp_i18n_namespaceObject.__)("The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content."), 61385 footer: (0,external_wp_i18n_namespaceObject.__)('The <footer> element should represent a footer for its nearest sectioning element (e.g.: <section>, <article>, <main> etc.).') 61386 }; 61387 function TemplatePartAdvancedControls({ 61388 tagName, 61389 setAttributes, 61390 isEntityAvailable, 61391 templatePartId, 61392 defaultWrapper, 61393 hasInnerBlocks 61394 }) { 61395 const [area, setArea] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', 'wp_template_part', 'area', templatePartId); 61396 const [title, setTitle] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', 'wp_template_part', 'title', templatePartId); 61397 const definedAreas = (0,external_wp_data_namespaceObject.useSelect)(select => { 61398 // FIXME: @wordpress/block-library should not depend on @wordpress/editor. 61399 // Blocks can be loaded into a *non-post* block editor. 61400 /* eslint-disable-next-line @wordpress/data-no-store-string-literals */ 61401 return select('core/editor').__experimentalGetDefaultTemplatePartAreas(); 61402 }, []); 61403 const areaOptions = definedAreas.map(({ 61404 label, 61405 area: _area 61406 }) => ({ 61407 label, 61408 value: _area 61409 })); 61410 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 61411 children: [isEntityAvailable && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 61412 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 61413 __next40pxDefaultSize: true, 61414 __nextHasNoMarginBottom: true, 61415 label: (0,external_wp_i18n_namespaceObject.__)('Title'), 61416 value: title, 61417 onChange: value => { 61418 setTitle(value); 61419 }, 61420 onFocus: event => event.target.select() 61421 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 61422 __next40pxDefaultSize: true, 61423 __nextHasNoMarginBottom: true, 61424 label: (0,external_wp_i18n_namespaceObject.__)('Area'), 61425 labelPosition: "top", 61426 options: areaOptions, 61427 value: area, 61428 onChange: setArea 61429 })] 61430 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 61431 __nextHasNoMarginBottom: true, 61432 __next40pxDefaultSize: true, 61433 label: (0,external_wp_i18n_namespaceObject.__)('HTML element'), 61434 options: [{ 61435 label: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: HTML tag based on area. */ 61436 (0,external_wp_i18n_namespaceObject.__)('Default based on area (%s)'), `<$defaultWrapper}>`), 61437 value: '' 61438 }, { 61439 label: '<header>', 61440 value: 'header' 61441 }, { 61442 label: '<main>', 61443 value: 'main' 61444 }, { 61445 label: '<section>', 61446 value: 'section' 61447 }, { 61448 label: '<article>', 61449 value: 'article' 61450 }, { 61451 label: '<aside>', 61452 value: 'aside' 61453 }, { 61454 label: '<footer>', 61455 value: 'footer' 61456 }, { 61457 label: '<div>', 61458 value: 'div' 61459 }], 61460 value: tagName || '', 61461 onChange: value => setAttributes({ 61462 tagName: value 61463 }), 61464 help: htmlElementMessages[tagName] 61465 }), !hasInnerBlocks && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplatePartImportControls, { 61466 area: area, 61467 setAttributes: setAttributes 61468 })] 61469 }); 61470 } 61471 61472 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/template-part/edit/inner-blocks.js 61473 /** 61474 * WordPress dependencies 61475 */ 61476 61477 61478 61479 61480 61481 61482 function useRenderAppender(hasInnerBlocks) { 61483 const blockEditingMode = (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)(); 61484 // Disable appending when the editing mode is 'contentOnly'. This is so that the user can't 61485 // append into a template part when editing a page in the site editor. See 61486 // DisableNonPageContentBlocks. Ideally instead of (mis)using editing mode there would be a 61487 // block editor API for achieving this. 61488 if (blockEditingMode === 'contentOnly') { 61489 return false; 61490 } 61491 if (!hasInnerBlocks) { 61492 return external_wp_blockEditor_namespaceObject.InnerBlocks.ButtonBlockAppender; 61493 } 61494 } 61495 function useLayout(layout) { 61496 const themeSupportsLayout = (0,external_wp_data_namespaceObject.useSelect)(select => { 61497 const { 61498 getSettings 61499 } = select(external_wp_blockEditor_namespaceObject.store); 61500 return getSettings()?.supportsLayout; 61501 }, []); 61502 const [defaultLayout] = (0,external_wp_blockEditor_namespaceObject.useSettings)('layout'); 61503 if (themeSupportsLayout) { 61504 return layout?.inherit ? defaultLayout || {} : layout; 61505 } 61506 } 61507 function NonEditableTemplatePartPreview({ 61508 postId: id, 61509 layout, 61510 tagName: TagName, 61511 blockProps 61512 }) { 61513 (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)('disabled'); 61514 const { 61515 content, 61516 editedBlocks 61517 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 61518 if (!id) { 61519 return {}; 61520 } 61521 const { 61522 getEditedEntityRecord 61523 } = select(external_wp_coreData_namespaceObject.store); 61524 const editedRecord = getEditedEntityRecord('postType', 'wp_template_part', id, { 61525 context: 'view' 61526 }); 61527 return { 61528 editedBlocks: editedRecord.blocks, 61529 content: editedRecord.content 61530 }; 61531 }, [id]); 61532 const blocks = (0,external_wp_element_namespaceObject.useMemo)(() => { 61533 if (!id) { 61534 return undefined; 61535 } 61536 if (editedBlocks) { 61537 return editedBlocks; 61538 } 61539 if (!content || typeof content !== 'string') { 61540 return []; 61541 } 61542 return (0,external_wp_blocks_namespaceObject.parse)(content); 61543 }, [id, editedBlocks, content]); 61544 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 61545 value: blocks, 61546 onInput: () => {}, 61547 onChange: () => {}, 61548 renderAppender: false, 61549 layout: useLayout(layout) 61550 }); 61551 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 61552 ...innerBlocksProps 61553 }); 61554 } 61555 function EditableTemplatePartInnerBlocks({ 61556 postId: id, 61557 hasInnerBlocks, 61558 layout, 61559 tagName: TagName, 61560 blockProps 61561 }) { 61562 const onNavigateToEntityRecord = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings().onNavigateToEntityRecord, []); 61563 const [blocks, onInput, onChange] = (0,external_wp_coreData_namespaceObject.useEntityBlockEditor)('postType', 'wp_template_part', { 61564 id 61565 }); 61566 const innerBlocksProps = (0,external_wp_blockEditor_namespaceObject.useInnerBlocksProps)(blockProps, { 61567 value: blocks, 61568 onInput, 61569 onChange, 61570 renderAppender: useRenderAppender(hasInnerBlocks), 61571 layout: useLayout(layout) 61572 }); 61573 const blockEditingMode = (0,external_wp_blockEditor_namespaceObject.useBlockEditingMode)(); 61574 const customProps = blockEditingMode === 'contentOnly' && onNavigateToEntityRecord ? { 61575 onDoubleClick: () => onNavigateToEntityRecord({ 61576 postId: id, 61577 postType: 'wp_template_part' 61578 }) 61579 } : {}; 61580 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 61581 ...innerBlocksProps, 61582 ...customProps 61583 }); 61584 } 61585 function TemplatePartInnerBlocks({ 61586 postId: id, 61587 hasInnerBlocks, 61588 layout, 61589 tagName: TagName, 61590 blockProps 61591 }) { 61592 const { 61593 canViewTemplatePart, 61594 canEditTemplatePart 61595 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 61596 return { 61597 canViewTemplatePart: !!select(external_wp_coreData_namespaceObject.store).canUser('read', { 61598 kind: 'postType', 61599 name: 'wp_template_part', 61600 id 61601 }), 61602 canEditTemplatePart: !!select(external_wp_coreData_namespaceObject.store).canUser('update', { 61603 kind: 'postType', 61604 name: 'wp_template_part', 61605 id 61606 }) 61607 }; 61608 }, [id]); 61609 if (!canViewTemplatePart) { 61610 return null; 61611 } 61612 const TemplatePartInnerBlocksComponent = canEditTemplatePart ? EditableTemplatePartInnerBlocks : NonEditableTemplatePartPreview; 61613 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplatePartInnerBlocksComponent, { 61614 postId: id, 61615 hasInnerBlocks: hasInnerBlocks, 61616 layout: layout, 61617 tagName: TagName, 61618 blockProps: blockProps 61619 }); 61620 } 61621 61622 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/template-part/edit/index.js 61623 /** 61624 * WordPress dependencies 61625 */ 61626 61627 61628 61629 61630 61631 61632 61633 61634 61635 61636 /** 61637 * Internal dependencies 61638 */ 61639 61640 61641 61642 61643 61644 61645 61646 61647 61648 function ReplaceButton({ 61649 isEntityAvailable, 61650 area, 61651 templatePartId, 61652 isTemplatePartSelectionOpen, 61653 setIsTemplatePartSelectionOpen 61654 }) { 61655 // This hook fetches patterns, so don't run it unconditionally in the main 61656 // edit function! 61657 const { 61658 templateParts 61659 } = useAlternativeTemplateParts(area, templatePartId); 61660 const hasReplacements = !!templateParts.length; 61661 const canReplace = isEntityAvailable && hasReplacements && (area === 'header' || area === 'footer'); 61662 if (!canReplace) { 61663 return null; 61664 } 61665 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { 61666 onClick: () => { 61667 setIsTemplatePartSelectionOpen(true); 61668 }, 61669 "aria-expanded": isTemplatePartSelectionOpen, 61670 "aria-haspopup": "dialog", 61671 children: (0,external_wp_i18n_namespaceObject.__)('Replace') 61672 }); 61673 } 61674 function TemplatesList({ 61675 area, 61676 clientId, 61677 isEntityAvailable, 61678 onSelect 61679 }) { 61680 // This hook fetches patterns, so don't run it unconditionally in the main 61681 // edit function! 61682 const blockPatterns = useAlternativeBlockPatterns(area, clientId); 61683 const canReplace = isEntityAvailable && !!blockPatterns.length && (area === 'header' || area === 'footer'); 61684 const shownTemplates = (0,external_wp_compose_namespaceObject.useAsyncList)(blockPatterns); 61685 if (!canReplace) { 61686 return null; 61687 } 61688 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 61689 title: (0,external_wp_i18n_namespaceObject.__)('Design'), 61690 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalBlockPatternsList, { 61691 label: (0,external_wp_i18n_namespaceObject.__)('Templates'), 61692 blockPatterns: blockPatterns, 61693 shownPatterns: shownTemplates, 61694 onClickPattern: onSelect, 61695 showTitle: false 61696 }) 61697 }); 61698 } 61699 function TemplatePartEdit({ 61700 attributes, 61701 setAttributes, 61702 clientId 61703 }) { 61704 const { 61705 createSuccessNotice 61706 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 61707 const { 61708 editEntityRecord 61709 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); 61710 const currentTheme = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getCurrentTheme()?.stylesheet, []); 61711 const { 61712 slug, 61713 theme = currentTheme, 61714 tagName, 61715 layout = {} 61716 } = attributes; 61717 const templatePartId = createTemplatePartId(theme, slug); 61718 const hasAlreadyRendered = (0,external_wp_blockEditor_namespaceObject.useHasRecursion)(templatePartId); 61719 const [isTemplatePartSelectionOpen, setIsTemplatePartSelectionOpen] = (0,external_wp_element_namespaceObject.useState)(false); 61720 const { 61721 isResolved, 61722 hasInnerBlocks, 61723 isMissing, 61724 area, 61725 onNavigateToEntityRecord, 61726 title, 61727 canUserEdit 61728 } = (0,external_wp_data_namespaceObject.useSelect)(select => { 61729 const { 61730 getEditedEntityRecord, 61731 hasFinishedResolution 61732 } = select(external_wp_coreData_namespaceObject.store); 61733 const { 61734 getBlockCount, 61735 getSettings 61736 } = select(external_wp_blockEditor_namespaceObject.store); 61737 const getEntityArgs = ['postType', 'wp_template_part', templatePartId]; 61738 const entityRecord = templatePartId ? getEditedEntityRecord(...getEntityArgs) : null; 61739 const _area = entityRecord?.area || attributes.area; 61740 const hasResolvedEntity = templatePartId ? hasFinishedResolution('getEditedEntityRecord', getEntityArgs) : false; 61741 const _canUserEdit = hasResolvedEntity ? select(external_wp_coreData_namespaceObject.store).canUser('update', { 61742 kind: 'postType', 61743 name: 'wp_template_part', 61744 id: templatePartId 61745 }) : false; 61746 return { 61747 hasInnerBlocks: getBlockCount(clientId) > 0, 61748 isResolved: hasResolvedEntity, 61749 isMissing: hasResolvedEntity && (!entityRecord || Object.keys(entityRecord).length === 0), 61750 area: _area, 61751 onNavigateToEntityRecord: getSettings().onNavigateToEntityRecord, 61752 title: entityRecord?.title, 61753 canUserEdit: !!_canUserEdit 61754 }; 61755 }, [templatePartId, attributes.area, clientId]); 61756 const areaObject = useTemplatePartArea(area); 61757 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 61758 const isPlaceholder = !slug; 61759 const isEntityAvailable = !isPlaceholder && !isMissing && isResolved; 61760 const TagName = tagName || areaObject.tagName; 61761 const onPatternSelect = async pattern => { 61762 await editEntityRecord('postType', 'wp_template_part', templatePartId, { 61763 blocks: pattern.blocks, 61764 content: (0,external_wp_blocks_namespaceObject.serialize)(pattern.blocks) 61765 }); 61766 createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: template part title. */ 61767 (0,external_wp_i18n_namespaceObject.__)('Template Part "%s" updated.'), title || slug), { 61768 type: 'snackbar' 61769 }); 61770 }; 61771 61772 // We don't want to render a missing state if we have any inner blocks. 61773 // A new template part is automatically created if we have any inner blocks but no entity. 61774 if (!hasInnerBlocks && (slug && !theme || slug && isMissing)) { 61775 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 61776 ...blockProps, 61777 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 61778 children: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: Template part slug. */ 61779 (0,external_wp_i18n_namespaceObject.__)('Template part has been deleted or is unavailable: %s'), slug) 61780 }) 61781 }); 61782 } 61783 if (isEntityAvailable && hasAlreadyRendered) { 61784 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 61785 ...blockProps, 61786 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.Warning, { 61787 children: (0,external_wp_i18n_namespaceObject.__)('Block cannot be rendered inside itself.') 61788 }) 61789 }); 61790 } 61791 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 61792 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.RecursionProvider, { 61793 uniqueId: templatePartId, 61794 children: [isEntityAvailable && onNavigateToEntityRecord && canUserEdit && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 61795 group: "other", 61796 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 61797 onClick: () => onNavigateToEntityRecord({ 61798 postId: templatePartId, 61799 postType: 'wp_template_part' 61800 }), 61801 children: (0,external_wp_i18n_namespaceObject.__)('Edit') 61802 }) 61803 }), canUserEdit && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 61804 group: "advanced", 61805 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplatePartAdvancedControls, { 61806 tagName: tagName, 61807 setAttributes: setAttributes, 61808 isEntityAvailable: isEntityAvailable, 61809 templatePartId: templatePartId, 61810 defaultWrapper: areaObject.tagName, 61811 hasInnerBlocks: hasInnerBlocks 61812 }) 61813 }), isPlaceholder && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 61814 ...blockProps, 61815 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplatePartPlaceholder, { 61816 area: attributes.area, 61817 templatePartId: templatePartId, 61818 clientId: clientId, 61819 setAttributes: setAttributes, 61820 onOpenSelectionModal: () => setIsTemplatePartSelectionOpen(true) 61821 }) 61822 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockSettingsMenuControls, { 61823 children: ({ 61824 selectedClientIds 61825 }) => { 61826 // Only enable for single selection that matches the current block. 61827 // Ensures menu item doesn't render multiple times. 61828 if (!(selectedClientIds.length === 1 && clientId === selectedClientIds[0])) { 61829 return null; 61830 } 61831 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ReplaceButton, { 61832 isEntityAvailable, 61833 area, 61834 clientId, 61835 templatePartId, 61836 isTemplatePartSelectionOpen, 61837 setIsTemplatePartSelectionOpen 61838 }); 61839 } 61840 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 61841 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplatesList, { 61842 area: area, 61843 clientId: clientId, 61844 isEntityAvailable: isEntityAvailable, 61845 onSelect: pattern => onPatternSelect(pattern) 61846 }) 61847 }), isEntityAvailable && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplatePartInnerBlocks, { 61848 tagName: TagName, 61849 blockProps: blockProps, 61850 postId: templatePartId, 61851 hasInnerBlocks: hasInnerBlocks, 61852 layout: layout 61853 }), !isPlaceholder && !isResolved && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TagName, { 61854 ...blockProps, 61855 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) 61856 })] 61857 }), isTemplatePartSelectionOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, { 61858 overlayClassName: "block-editor-template-part__selection-modal", 61859 title: (0,external_wp_i18n_namespaceObject.sprintf)( 61860 // Translators: %s as template part area title ("Header", "Footer", etc.). 61861 (0,external_wp_i18n_namespaceObject.__)('Choose a %s'), areaObject.label.toLowerCase()), 61862 onRequestClose: () => setIsTemplatePartSelectionOpen(false), 61863 isFullScreen: true, 61864 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplatePartSelectionModal, { 61865 templatePartId: templatePartId, 61866 clientId: clientId, 61867 area: area, 61868 setAttributes: setAttributes, 61869 onClose: () => setIsTemplatePartSelectionOpen(false) 61870 }) 61871 })] 61872 }); 61873 } 61874 61875 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/header.js 61876 /** 61877 * WordPress dependencies 61878 */ 61879 61880 61881 const header = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 61882 xmlns: "http://www.w3.org/2000/svg", 61883 viewBox: "0 0 24 24", 61884 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 61885 d: "M18.5 10.5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z" 61886 }) 61887 }); 61888 /* harmony default export */ const library_header = (header); 61889 61890 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/footer.js 61891 /** 61892 * WordPress dependencies 61893 */ 61894 61895 61896 const footer = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 61897 xmlns: "http://www.w3.org/2000/svg", 61898 viewBox: "0 0 24 24", 61899 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 61900 fillRule: "evenodd", 61901 d: "M18 5.5h-8v8h8.5V6a.5.5 0 00-.5-.5zm-9.5 8h-3V6a.5.5 0 01.5-.5h2.5v8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z" 61902 }) 61903 }); 61904 /* harmony default export */ const library_footer = (footer); 61905 61906 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/sidebar.js 61907 /** 61908 * WordPress dependencies 61909 */ 61910 61911 61912 const sidebar = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 61913 xmlns: "http://www.w3.org/2000/svg", 61914 viewBox: "0 0 24 24", 61915 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 61916 d: "M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z" 61917 }) 61918 }); 61919 /* harmony default export */ const library_sidebar = (sidebar); 61920 61921 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/template-part/variations.js 61922 /** 61923 * WordPress dependencies 61924 */ 61925 61926 61927 61928 function getTemplatePartIcon(iconName) { 61929 if ('header' === iconName) { 61930 return library_header; 61931 } else if ('footer' === iconName) { 61932 return library_footer; 61933 } else if ('sidebar' === iconName) { 61934 return library_sidebar; 61935 } 61936 return symbol_filled; 61937 } 61938 function enhanceTemplatePartVariations(settings, name) { 61939 if (name !== 'core/template-part') { 61940 return settings; 61941 } 61942 if (settings.variations) { 61943 const isActive = (blockAttributes, variationAttributes) => { 61944 const { 61945 area, 61946 theme, 61947 slug 61948 } = blockAttributes; 61949 // We first check the `area` block attribute which is set during insertion. 61950 // This property is removed on the creation of a template part. 61951 if (area) { 61952 return area === variationAttributes.area; 61953 } 61954 // Find a matching variation from the created template part 61955 // by checking the entity's `area` property. 61956 if (!slug) { 61957 return false; 61958 } 61959 const { 61960 getCurrentTheme, 61961 getEntityRecord 61962 } = (0,external_wp_data_namespaceObject.select)(external_wp_coreData_namespaceObject.store); 61963 const entity = getEntityRecord('postType', 'wp_template_part', `$theme || getCurrentTheme()?.stylesheet}//${slug}`); 61964 if (entity?.slug) { 61965 return entity.slug === variationAttributes.slug; 61966 } 61967 return entity?.area === variationAttributes.area; 61968 }; 61969 const variations = settings.variations.map(variation => { 61970 return { 61971 ...variation, 61972 ...(!variation.isActive && { 61973 isActive 61974 }), 61975 ...(typeof variation.icon === 'string' && { 61976 icon: getTemplatePartIcon(variation.icon) 61977 }) 61978 }; 61979 }); 61980 return { 61981 ...settings, 61982 variations 61983 }; 61984 } 61985 return settings; 61986 } 61987 61988 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/template-part/index.js 61989 /** 61990 * External dependencies 61991 */ 61992 61993 61994 /** 61995 * WordPress dependencies 61996 */ 61997 61998 61999 62000 62001 62002 62003 /** 62004 * Internal dependencies 62005 */ 62006 62007 const template_part_metadata = { 62008 $schema: "https://schemas.wp.org/trunk/block.json", 62009 apiVersion: 3, 62010 name: "core/template-part", 62011 title: "Template Part", 62012 category: "theme", 62013 description: "Edit the different global regions of your site, like the header, footer, sidebar, or create your own.", 62014 textdomain: "default", 62015 attributes: { 62016 slug: { 62017 type: "string" 62018 }, 62019 theme: { 62020 type: "string" 62021 }, 62022 tagName: { 62023 type: "string" 62024 }, 62025 area: { 62026 type: "string" 62027 } 62028 }, 62029 supports: { 62030 align: true, 62031 html: false, 62032 reusable: false, 62033 renaming: false, 62034 interactivity: { 62035 clientNavigation: true 62036 } 62037 }, 62038 editorStyle: "wp-block-template-part-editor" 62039 }; 62040 62041 62042 const { 62043 name: template_part_name 62044 } = template_part_metadata; 62045 62046 const template_part_settings = { 62047 icon: symbol_filled, 62048 __experimentalLabel: ({ 62049 slug, 62050 theme 62051 }) => { 62052 // Attempt to find entity title if block is a template part. 62053 // Require slug to request, otherwise entity is uncreated and will throw 404. 62054 if (!slug) { 62055 return; 62056 } 62057 const { 62058 getCurrentTheme, 62059 getEditedEntityRecord 62060 } = (0,external_wp_data_namespaceObject.select)(external_wp_coreData_namespaceObject.store); 62061 const entity = getEditedEntityRecord('postType', 'wp_template_part', (theme || getCurrentTheme()?.stylesheet) + '//' + slug); 62062 if (!entity) { 62063 return; 62064 } 62065 return (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(entity.title) || capitalCase(entity.slug || ''); 62066 }, 62067 edit: TemplatePartEdit 62068 }; 62069 const template_part_init = () => { 62070 (0,external_wp_hooks_namespaceObject.addFilter)('blocks.registerBlockType', 'core/template-part', enhanceTemplatePartVariations); 62071 62072 // Prevent adding template parts inside post templates. 62073 const DISALLOWED_PARENTS = ['core/post-template', 'core/post-content']; 62074 (0,external_wp_hooks_namespaceObject.addFilter)('blockEditor.__unstableCanInsertBlockType', 'core/block-library/removeTemplatePartsFromPostTemplates', (canInsert, blockType, rootClientId, { 62075 getBlock, 62076 getBlockParentsByBlockName 62077 }) => { 62078 if (blockType.name !== 'core/template-part') { 62079 return canInsert; 62080 } 62081 for (const disallowedParentType of DISALLOWED_PARENTS) { 62082 const hasDisallowedParent = getBlock(rootClientId)?.name === disallowedParentType || getBlockParentsByBlockName(rootClientId, disallowedParentType).length; 62083 if (hasDisallowedParent) { 62084 return false; 62085 } 62086 } 62087 return true; 62088 }); 62089 return initBlock({ 62090 name: template_part_name, 62091 metadata: template_part_metadata, 62092 settings: template_part_settings 62093 }); 62094 }; 62095 62096 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/term-description.js 62097 /** 62098 * WordPress dependencies 62099 */ 62100 62101 62102 const term_description_tag = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 62103 xmlns: "http://www.w3.org/2000/svg", 62104 viewBox: "0 0 24 24", 62105 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 62106 d: "M6.08 10.103h2.914L9.657 12h1.417L8.23 4H6.846L4 12h1.417l.663-1.897Zm1.463-4.137.994 2.857h-2l1.006-2.857ZM11 16H4v-1.5h7V16Zm1 0h8v-1.5h-8V16Zm-4 4H4v-1.5h4V20Zm7-1.5V20H9v-1.5h6Z" 62107 }) 62108 }); 62109 /* harmony default export */ const term_description = (term_description_tag); 62110 62111 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/term-description/edit.js 62112 /** 62113 * External dependencies 62114 */ 62115 62116 62117 /** 62118 * WordPress dependencies 62119 */ 62120 62121 62122 62123 62124 62125 function TermDescriptionEdit({ 62126 attributes, 62127 setAttributes, 62128 mergedStyle 62129 }) { 62130 const { 62131 textAlign 62132 } = attributes; 62133 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 62134 className: dist_clsx({ 62135 [`has-text-align-$textAlign}`]: textAlign 62136 }), 62137 style: mergedStyle 62138 }); 62139 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 62140 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 62141 group: "block", 62142 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentControl, { 62143 value: textAlign, 62144 onChange: nextAlign => { 62145 setAttributes({ 62146 textAlign: nextAlign 62147 }); 62148 } 62149 }) 62150 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 62151 ...blockProps, 62152 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 62153 className: "wp-block-term-description__placeholder", 62154 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 62155 children: (0,external_wp_i18n_namespaceObject.__)('Term Description') 62156 }) 62157 }) 62158 })] 62159 }); 62160 } 62161 62162 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/term-description/index.js 62163 /** 62164 * WordPress dependencies 62165 */ 62166 62167 62168 /** 62169 * Internal dependencies 62170 */ 62171 62172 const term_description_metadata = { 62173 $schema: "https://schemas.wp.org/trunk/block.json", 62174 apiVersion: 3, 62175 name: "core/term-description", 62176 title: "Term Description", 62177 category: "theme", 62178 description: "Display the description of categories, tags and custom taxonomies when viewing an archive.", 62179 textdomain: "default", 62180 attributes: { 62181 textAlign: { 62182 type: "string" 62183 } 62184 }, 62185 supports: { 62186 align: ["wide", "full"], 62187 html: false, 62188 color: { 62189 link: true, 62190 __experimentalDefaultControls: { 62191 background: true, 62192 text: true 62193 } 62194 }, 62195 spacing: { 62196 padding: true, 62197 margin: true 62198 }, 62199 typography: { 62200 fontSize: true, 62201 lineHeight: true, 62202 __experimentalFontFamily: true, 62203 __experimentalFontWeight: true, 62204 __experimentalFontStyle: true, 62205 __experimentalTextTransform: true, 62206 __experimentalTextDecoration: true, 62207 __experimentalLetterSpacing: true, 62208 __experimentalDefaultControls: { 62209 fontSize: true 62210 } 62211 }, 62212 interactivity: { 62213 clientNavigation: true 62214 }, 62215 __experimentalBorder: { 62216 radius: true, 62217 color: true, 62218 width: true, 62219 style: true, 62220 __experimentalDefaultControls: { 62221 radius: true, 62222 color: true, 62223 width: true, 62224 style: true 62225 } 62226 } 62227 } 62228 }; 62229 62230 const { 62231 name: term_description_name 62232 } = term_description_metadata; 62233 62234 const term_description_settings = { 62235 icon: term_description, 62236 edit: TermDescriptionEdit 62237 }; 62238 const term_description_init = () => initBlock({ 62239 name: term_description_name, 62240 metadata: term_description_metadata, 62241 settings: term_description_settings 62242 }); 62243 62244 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/text-columns/edit.js 62245 /** 62246 * WordPress dependencies 62247 */ 62248 62249 62250 62251 62252 62253 62254 62255 function TextColumnsEdit({ 62256 attributes, 62257 setAttributes 62258 }) { 62259 const { 62260 width, 62261 content, 62262 columns 62263 } = attributes; 62264 external_wp_deprecated_default()('The Text Columns block', { 62265 since: '5.3', 62266 alternative: 'the Columns block' 62267 }); 62268 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 62269 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 62270 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockAlignmentToolbar, { 62271 value: width, 62272 onChange: nextWidth => setAttributes({ 62273 width: nextWidth 62274 }), 62275 controls: ['center', 'wide', 'full'] 62276 }) 62277 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 62278 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelBody, { 62279 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { 62280 __nextHasNoMarginBottom: true, 62281 __next40pxDefaultSize: true, 62282 label: (0,external_wp_i18n_namespaceObject.__)('Columns'), 62283 value: columns, 62284 onChange: value => setAttributes({ 62285 columns: value 62286 }), 62287 min: 2, 62288 max: 4, 62289 required: true 62290 }) 62291 }) 62292 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 62293 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 62294 className: `align$width} columns-$columns}` 62295 }), 62296 children: Array.from({ 62297 length: columns 62298 }).map((_, index) => { 62299 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 62300 className: "wp-block-column", 62301 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 62302 tagName: "p", 62303 value: content?.[index]?.children, 62304 onChange: nextContent => { 62305 setAttributes({ 62306 content: [...content.slice(0, index), { 62307 children: nextContent 62308 }, ...content.slice(index + 1)] 62309 }); 62310 }, 62311 "aria-label": (0,external_wp_i18n_namespaceObject.sprintf)( 62312 // translators: %d: column index (starting with 1) 62313 (0,external_wp_i18n_namespaceObject.__)('Column %d text'), index + 1), 62314 placeholder: (0,external_wp_i18n_namespaceObject.__)('New Column') 62315 }) 62316 }, `column-$index}`); 62317 }) 62318 })] 62319 }); 62320 } 62321 62322 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/text-columns/save.js 62323 /** 62324 * WordPress dependencies 62325 */ 62326 62327 62328 function text_columns_save_save({ 62329 attributes 62330 }) { 62331 const { 62332 width, 62333 content, 62334 columns 62335 } = attributes; 62336 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 62337 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 62338 className: `align$width} columns-$columns}` 62339 }), 62340 children: Array.from({ 62341 length: columns 62342 }).map((_, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 62343 className: "wp-block-column", 62344 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 62345 tagName: "p", 62346 value: content?.[index]?.children 62347 }) 62348 }, `column-$index}`)) 62349 }); 62350 } 62351 62352 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/text-columns/transforms.js 62353 /** 62354 * WordPress dependencies 62355 */ 62356 62357 const text_columns_transforms_transforms = { 62358 to: [{ 62359 type: 'block', 62360 blocks: ['core/columns'], 62361 transform: ({ 62362 className, 62363 columns, 62364 content, 62365 width 62366 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/columns', { 62367 align: 'wide' === width || 'full' === width ? width : undefined, 62368 className, 62369 columns 62370 }, content.map(({ 62371 children 62372 }) => (0,external_wp_blocks_namespaceObject.createBlock)('core/column', {}, [(0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', { 62373 content: children 62374 })]))) 62375 }] 62376 }; 62377 /* harmony default export */ const text_columns_transforms = (text_columns_transforms_transforms); 62378 62379 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/text-columns/index.js 62380 /** 62381 * Internal dependencies 62382 */ 62383 62384 62385 const text_columns_metadata = { 62386 $schema: "https://schemas.wp.org/trunk/block.json", 62387 apiVersion: 3, 62388 name: "core/text-columns", 62389 title: "Text Columns (deprecated)", 62390 icon: "columns", 62391 category: "design", 62392 description: "This block is deprecated. Please use the Columns block instead.", 62393 textdomain: "default", 62394 attributes: { 62395 content: { 62396 type: "array", 62397 source: "query", 62398 selector: "p", 62399 query: { 62400 children: { 62401 type: "string", 62402 source: "html" 62403 } 62404 }, 62405 "default": [{}, {}] 62406 }, 62407 columns: { 62408 type: "number", 62409 "default": 2 62410 }, 62411 width: { 62412 type: "string" 62413 } 62414 }, 62415 supports: { 62416 inserter: false, 62417 interactivity: { 62418 clientNavigation: true 62419 } 62420 }, 62421 editorStyle: "wp-block-text-columns-editor", 62422 style: "wp-block-text-columns" 62423 }; 62424 62425 62426 const { 62427 name: text_columns_name 62428 } = text_columns_metadata; 62429 62430 const text_columns_settings = { 62431 transforms: text_columns_transforms, 62432 getEditWrapperProps(attributes) { 62433 const { 62434 width 62435 } = attributes; 62436 if ('wide' === width || 'full' === width) { 62437 return { 62438 'data-align': width 62439 }; 62440 } 62441 }, 62442 edit: TextColumnsEdit, 62443 save: text_columns_save_save 62444 }; 62445 const text_columns_init = () => initBlock({ 62446 name: text_columns_name, 62447 metadata: text_columns_metadata, 62448 settings: text_columns_settings 62449 }); 62450 62451 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/verse/deprecated.js 62452 /** 62453 * External dependencies 62454 */ 62455 62456 62457 /** 62458 * WordPress dependencies 62459 */ 62460 62461 62462 /** 62463 * Internal dependencies 62464 */ 62465 62466 62467 const verse_deprecated_v1 = { 62468 attributes: { 62469 content: { 62470 type: 'string', 62471 source: 'html', 62472 selector: 'pre', 62473 default: '' 62474 }, 62475 textAlign: { 62476 type: 'string' 62477 } 62478 }, 62479 save({ 62480 attributes 62481 }) { 62482 const { 62483 textAlign, 62484 content 62485 } = attributes; 62486 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 62487 tagName: "pre", 62488 style: { 62489 textAlign 62490 }, 62491 value: content 62492 }); 62493 } 62494 }; 62495 const verse_deprecated_v2 = { 62496 attributes: { 62497 content: { 62498 type: 'string', 62499 source: 'html', 62500 selector: 'pre', 62501 default: '', 62502 __unstablePreserveWhiteSpace: true, 62503 role: 'content' 62504 }, 62505 textAlign: { 62506 type: 'string' 62507 } 62508 }, 62509 supports: { 62510 anchor: true, 62511 color: { 62512 gradients: true, 62513 link: true 62514 }, 62515 typography: { 62516 fontSize: true, 62517 __experimentalFontFamily: true 62518 }, 62519 spacing: { 62520 padding: true 62521 } 62522 }, 62523 save({ 62524 attributes 62525 }) { 62526 const { 62527 textAlign, 62528 content 62529 } = attributes; 62530 const className = dist_clsx({ 62531 [`has-text-align-$textAlign}`]: textAlign 62532 }); 62533 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("pre", { 62534 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 62535 className 62536 }), 62537 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 62538 value: content 62539 }) 62540 }); 62541 }, 62542 migrate: migrate_font_family, 62543 isEligible({ 62544 style 62545 }) { 62546 return style?.typography?.fontFamily; 62547 } 62548 }; 62549 62550 /** 62551 * New deprecations need to be placed first 62552 * for them to have higher priority. 62553 * 62554 * Old deprecations may need to be updated as well. 62555 * 62556 * See block-deprecation.md 62557 */ 62558 /* harmony default export */ const verse_deprecated = ([verse_deprecated_v2, verse_deprecated_v1]); 62559 62560 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/verse/edit.js 62561 /** 62562 * External dependencies 62563 */ 62564 62565 62566 /** 62567 * WordPress dependencies 62568 */ 62569 62570 62571 62572 62573 62574 62575 function VerseEdit({ 62576 attributes, 62577 setAttributes, 62578 mergeBlocks, 62579 onRemove, 62580 insertBlocksAfter, 62581 style 62582 }) { 62583 const { 62584 textAlign, 62585 content 62586 } = attributes; 62587 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 62588 className: dist_clsx({ 62589 [`has-text-align-$textAlign}`]: textAlign 62590 }), 62591 style 62592 }); 62593 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 62594 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 62595 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.AlignmentToolbar, { 62596 value: textAlign, 62597 onChange: nextAlign => { 62598 setAttributes({ 62599 textAlign: nextAlign 62600 }); 62601 } 62602 }) 62603 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 62604 tagName: "pre", 62605 identifier: "content", 62606 preserveWhiteSpace: true, 62607 value: content, 62608 onChange: nextContent => { 62609 setAttributes({ 62610 content: nextContent 62611 }); 62612 }, 62613 "aria-label": (0,external_wp_i18n_namespaceObject.__)('Verse text'), 62614 placeholder: (0,external_wp_i18n_namespaceObject.__)('Write verse…'), 62615 onRemove: onRemove, 62616 onMerge: mergeBlocks, 62617 textAlign: textAlign, 62618 ...blockProps, 62619 __unstablePastePlainText: true, 62620 __unstableOnSplitAtDoubleLineEnd: () => insertBlocksAfter((0,external_wp_blocks_namespaceObject.createBlock)((0,external_wp_blocks_namespaceObject.getDefaultBlockName)())) 62621 })] 62622 }); 62623 } 62624 62625 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/verse/save.js 62626 /** 62627 * External dependencies 62628 */ 62629 62630 62631 /** 62632 * WordPress dependencies 62633 */ 62634 62635 62636 function verse_save_save({ 62637 attributes 62638 }) { 62639 const { 62640 textAlign, 62641 content 62642 } = attributes; 62643 const className = dist_clsx({ 62644 [`has-text-align-$textAlign}`]: textAlign 62645 }); 62646 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("pre", { 62647 ...external_wp_blockEditor_namespaceObject.useBlockProps.save({ 62648 className 62649 }), 62650 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 62651 value: content 62652 }) 62653 }); 62654 } 62655 62656 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/verse/transforms.js 62657 /** 62658 * WordPress dependencies 62659 */ 62660 62661 const verse_transforms_transforms = { 62662 from: [{ 62663 type: 'block', 62664 blocks: ['core/paragraph'], 62665 transform: attributes => (0,external_wp_blocks_namespaceObject.createBlock)('core/verse', attributes) 62666 }], 62667 to: [{ 62668 type: 'block', 62669 blocks: ['core/paragraph'], 62670 transform: attributes => (0,external_wp_blocks_namespaceObject.createBlock)('core/paragraph', attributes) 62671 }] 62672 }; 62673 /* harmony default export */ const verse_transforms = (verse_transforms_transforms); 62674 62675 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/verse/index.js 62676 /** 62677 * WordPress dependencies 62678 */ 62679 62680 62681 62682 /** 62683 * Internal dependencies 62684 */ 62685 62686 62687 62688 const verse_metadata = { 62689 $schema: "https://schemas.wp.org/trunk/block.json", 62690 apiVersion: 3, 62691 name: "core/verse", 62692 title: "Verse", 62693 category: "text", 62694 description: "Insert poetry. Use special spacing formats. Or quote song lyrics.", 62695 keywords: ["poetry", "poem"], 62696 textdomain: "default", 62697 attributes: { 62698 content: { 62699 type: "rich-text", 62700 source: "rich-text", 62701 selector: "pre", 62702 __unstablePreserveWhiteSpace: true, 62703 role: "content" 62704 }, 62705 textAlign: { 62706 type: "string" 62707 } 62708 }, 62709 supports: { 62710 anchor: true, 62711 background: { 62712 backgroundImage: true, 62713 backgroundSize: true, 62714 __experimentalDefaultControls: { 62715 backgroundImage: true 62716 } 62717 }, 62718 color: { 62719 gradients: true, 62720 link: true, 62721 __experimentalDefaultControls: { 62722 background: true, 62723 text: true 62724 } 62725 }, 62726 dimensions: { 62727 minHeight: true, 62728 __experimentalDefaultControls: { 62729 minHeight: false 62730 } 62731 }, 62732 typography: { 62733 fontSize: true, 62734 __experimentalFontFamily: true, 62735 lineHeight: true, 62736 __experimentalFontStyle: true, 62737 __experimentalFontWeight: true, 62738 __experimentalLetterSpacing: true, 62739 __experimentalTextTransform: true, 62740 __experimentalTextDecoration: true, 62741 __experimentalWritingMode: true, 62742 __experimentalDefaultControls: { 62743 fontSize: true 62744 } 62745 }, 62746 spacing: { 62747 margin: true, 62748 padding: true, 62749 __experimentalDefaultControls: { 62750 margin: false, 62751 padding: false 62752 } 62753 }, 62754 __experimentalBorder: { 62755 radius: true, 62756 width: true, 62757 color: true, 62758 style: true 62759 }, 62760 interactivity: { 62761 clientNavigation: true 62762 } 62763 }, 62764 style: "wp-block-verse", 62765 editorStyle: "wp-block-verse-editor" 62766 }; 62767 62768 62769 const { 62770 name: verse_name 62771 } = verse_metadata; 62772 62773 const verse_settings = { 62774 icon: library_verse, 62775 example: { 62776 attributes: { 62777 /* eslint-disable @wordpress/i18n-no-collapsible-whitespace */ 62778 // translators: Sample content for the Verse block. Can be replaced with a more locale-adequate work. 62779 content: (0,external_wp_i18n_namespaceObject.__)('WHAT was he doing, the great god Pan,\n Down in the reeds by the river?\nSpreading ruin and scattering ban,\nSplashing and paddling with hoofs of a goat,\nAnd breaking the golden lilies afloat\n With the dragon-fly on the river.') 62780 /* eslint-enable @wordpress/i18n-no-collapsible-whitespace */ 62781 } 62782 }, 62783 transforms: verse_transforms, 62784 deprecated: verse_deprecated, 62785 merge(attributes, attributesToMerge) { 62786 return { 62787 content: attributes.content + '\n\n' + attributesToMerge.content 62788 }; 62789 }, 62790 edit: VerseEdit, 62791 save: verse_save_save 62792 }; 62793 const verse_init = () => initBlock({ 62794 name: verse_name, 62795 metadata: verse_metadata, 62796 settings: verse_settings 62797 }); 62798 62799 ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/video.js 62800 /** 62801 * WordPress dependencies 62802 */ 62803 62804 62805 const video = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 62806 viewBox: "0 0 24 24", 62807 xmlns: "http://www.w3.org/2000/svg", 62808 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 62809 d: "M18.7 3H5.3C4 3 3 4 3 5.3v13.4C3 20 4 21 5.3 21h13.4c1.3 0 2.3-1 2.3-2.3V5.3C21 4 20 3 18.7 3zm.8 15.7c0 .4-.4.8-.8.8H5.3c-.4 0-.8-.4-.8-.8V5.3c0-.4.4-.8.8-.8h13.4c.4 0 .8.4.8.8v13.4zM10 15l5-3-5-3v6z" 62810 }) 62811 }); 62812 /* harmony default export */ const library_video = (video); 62813 62814 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/video/tracks.js 62815 62816 function Tracks({ 62817 tracks = [] 62818 }) { 62819 return tracks.map(track => { 62820 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("track", { 62821 ...track 62822 }, track.src); 62823 }); 62824 } 62825 62826 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/video/deprecated.js 62827 /** 62828 * WordPress dependencies 62829 */ 62830 62831 62832 /** 62833 * Internal dependencies 62834 */ 62835 const video_deprecated_metadata = { 62836 $schema: "https://schemas.wp.org/trunk/block.json", 62837 apiVersion: 3, 62838 name: "core/video", 62839 title: "Video", 62840 category: "media", 62841 description: "Embed a video from your media library or upload a new one.", 62842 keywords: ["movie"], 62843 textdomain: "default", 62844 attributes: { 62845 autoplay: { 62846 type: "boolean", 62847 source: "attribute", 62848 selector: "video", 62849 attribute: "autoplay" 62850 }, 62851 caption: { 62852 type: "rich-text", 62853 source: "rich-text", 62854 selector: "figcaption", 62855 role: "content" 62856 }, 62857 controls: { 62858 type: "boolean", 62859 source: "attribute", 62860 selector: "video", 62861 attribute: "controls", 62862 "default": true 62863 }, 62864 id: { 62865 type: "number", 62866 role: "content" 62867 }, 62868 loop: { 62869 type: "boolean", 62870 source: "attribute", 62871 selector: "video", 62872 attribute: "loop" 62873 }, 62874 muted: { 62875 type: "boolean", 62876 source: "attribute", 62877 selector: "video", 62878 attribute: "muted" 62879 }, 62880 poster: { 62881 type: "string", 62882 source: "attribute", 62883 selector: "video", 62884 attribute: "poster" 62885 }, 62886 preload: { 62887 type: "string", 62888 source: "attribute", 62889 selector: "video", 62890 attribute: "preload", 62891 "default": "metadata" 62892 }, 62893 blob: { 62894 type: "string", 62895 role: "local" 62896 }, 62897 src: { 62898 type: "string", 62899 source: "attribute", 62900 selector: "video", 62901 attribute: "src", 62902 role: "content" 62903 }, 62904 playsInline: { 62905 type: "boolean", 62906 source: "attribute", 62907 selector: "video", 62908 attribute: "playsinline" 62909 }, 62910 tracks: { 62911 role: "content", 62912 type: "array", 62913 items: { 62914 type: "object" 62915 }, 62916 "default": [] 62917 } 62918 }, 62919 supports: { 62920 anchor: true, 62921 align: true, 62922 spacing: { 62923 margin: true, 62924 padding: true, 62925 __experimentalDefaultControls: { 62926 margin: false, 62927 padding: false 62928 } 62929 }, 62930 interactivity: { 62931 clientNavigation: true 62932 } 62933 }, 62934 editorStyle: "wp-block-video-editor", 62935 style: "wp-block-video" 62936 }; 62937 62938 62939 62940 const { 62941 attributes: video_deprecated_blockAttributes 62942 } = video_deprecated_metadata; 62943 62944 // In #41140 support was added to global styles for caption elements which added a `wp-element-caption` classname 62945 // to the video figcaption element. 62946 const video_deprecated_v1 = { 62947 attributes: video_deprecated_blockAttributes, 62948 save({ 62949 attributes 62950 }) { 62951 const { 62952 autoplay, 62953 caption, 62954 controls, 62955 loop, 62956 muted, 62957 poster, 62958 preload, 62959 src, 62960 playsInline, 62961 tracks 62962 } = attributes; 62963 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 62964 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 62965 children: [src && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 62966 autoPlay: autoplay, 62967 controls: controls, 62968 loop: loop, 62969 muted: muted, 62970 poster: poster, 62971 preload: preload !== 'metadata' ? preload : undefined, 62972 src: src, 62973 playsInline: playsInline, 62974 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tracks, { 62975 tracks: tracks 62976 }) 62977 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 62978 tagName: "figcaption", 62979 value: caption 62980 })] 62981 }); 62982 } 62983 }; 62984 const video_deprecated_deprecated = [video_deprecated_v1]; 62985 /* harmony default export */ const video_deprecated = (video_deprecated_deprecated); 62986 62987 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/video/edit-common-settings.js 62988 /** 62989 * WordPress dependencies 62990 */ 62991 62992 62993 62994 62995 62996 62997 const options = [{ 62998 value: 'auto', 62999 label: (0,external_wp_i18n_namespaceObject.__)('Auto') 63000 }, { 63001 value: 'metadata', 63002 label: (0,external_wp_i18n_namespaceObject.__)('Metadata') 63003 }, { 63004 value: 'none', 63005 label: (0,external_wp_i18n_namespaceObject._x)('None', 'Preload value') 63006 }]; 63007 const VideoSettings = ({ 63008 setAttributes, 63009 attributes 63010 }) => { 63011 const { 63012 autoplay, 63013 controls, 63014 loop, 63015 muted, 63016 playsInline, 63017 preload 63018 } = attributes; 63019 const autoPlayHelpText = (0,external_wp_i18n_namespaceObject.__)('Autoplay may cause usability issues for some users.'); 63020 const getAutoplayHelp = external_wp_element_namespaceObject.Platform.select({ 63021 web: (0,external_wp_element_namespaceObject.useCallback)(checked => { 63022 return checked ? autoPlayHelpText : null; 63023 }, []), 63024 native: autoPlayHelpText 63025 }); 63026 const toggleFactory = (0,external_wp_element_namespaceObject.useMemo)(() => { 63027 const toggleAttribute = attribute => { 63028 return newValue => { 63029 setAttributes({ 63030 [attribute]: newValue 63031 }); 63032 }; 63033 }; 63034 return { 63035 autoplay: toggleAttribute('autoplay'), 63036 loop: toggleAttribute('loop'), 63037 muted: toggleAttribute('muted'), 63038 controls: toggleAttribute('controls'), 63039 playsInline: toggleAttribute('playsInline') 63040 }; 63041 }, []); 63042 const onChangePreload = (0,external_wp_element_namespaceObject.useCallback)(value => { 63043 setAttributes({ 63044 preload: value 63045 }); 63046 }, []); 63047 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 63048 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 63049 __nextHasNoMarginBottom: true, 63050 label: (0,external_wp_i18n_namespaceObject.__)('Autoplay'), 63051 onChange: toggleFactory.autoplay, 63052 checked: !!autoplay, 63053 help: getAutoplayHelp 63054 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 63055 __nextHasNoMarginBottom: true, 63056 label: (0,external_wp_i18n_namespaceObject.__)('Loop'), 63057 onChange: toggleFactory.loop, 63058 checked: !!loop 63059 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 63060 __nextHasNoMarginBottom: true, 63061 label: (0,external_wp_i18n_namespaceObject.__)('Muted'), 63062 onChange: toggleFactory.muted, 63063 checked: !!muted 63064 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 63065 __nextHasNoMarginBottom: true, 63066 label: (0,external_wp_i18n_namespaceObject.__)('Playback controls'), 63067 onChange: toggleFactory.controls, 63068 checked: !!controls 63069 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToggleControl, { 63070 __nextHasNoMarginBottom: true 63071 /* translators: Setting to play videos within the webpage on mobile browsers rather than opening in a fullscreen player. */, 63072 label: (0,external_wp_i18n_namespaceObject.__)('Play inline'), 63073 onChange: toggleFactory.playsInline, 63074 checked: !!playsInline, 63075 help: (0,external_wp_i18n_namespaceObject.__)('When enabled, videos will play directly within the webpage on mobile browsers, instead of opening in a fullscreen player.') 63076 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 63077 __next40pxDefaultSize: true, 63078 __nextHasNoMarginBottom: true, 63079 label: (0,external_wp_i18n_namespaceObject.__)('Preload'), 63080 value: preload, 63081 onChange: onChangePreload, 63082 options: options, 63083 hideCancelButton: true 63084 })] 63085 }); 63086 }; 63087 /* harmony default export */ const edit_common_settings = (VideoSettings); 63088 63089 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/video/tracks-editor.js 63090 /** 63091 * WordPress dependencies 63092 */ 63093 63094 63095 63096 63097 63098 63099 63100 63101 63102 63103 const ALLOWED_TYPES = ['text/vtt']; 63104 const DEFAULT_KIND = 'subtitles'; 63105 const KIND_OPTIONS = [{ 63106 label: (0,external_wp_i18n_namespaceObject.__)('Subtitles'), 63107 value: 'subtitles' 63108 }, { 63109 label: (0,external_wp_i18n_namespaceObject.__)('Captions'), 63110 value: 'captions' 63111 }, { 63112 label: (0,external_wp_i18n_namespaceObject.__)('Descriptions'), 63113 value: 'descriptions' 63114 }, { 63115 label: (0,external_wp_i18n_namespaceObject.__)('Chapters'), 63116 value: 'chapters' 63117 }, { 63118 label: (0,external_wp_i18n_namespaceObject.__)('Metadata'), 63119 value: 'metadata' 63120 }]; 63121 function TrackList({ 63122 tracks, 63123 onEditPress 63124 }) { 63125 let content; 63126 if (tracks.length === 0) { 63127 content = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 63128 className: "block-library-video-tracks-editor__tracks-informative-message", 63129 children: (0,external_wp_i18n_namespaceObject.__)('Tracks can be subtitles, captions, chapters, or descriptions. They help make your content more accessible to a wider range of users.') 63130 }); 63131 } else { 63132 content = tracks.map((track, index) => { 63133 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { 63134 className: "block-library-video-tracks-editor__track-list-track", 63135 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", { 63136 children: [track.label, " "] 63137 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 63138 __next40pxDefaultSize: true, 63139 variant: "tertiary", 63140 onClick: () => onEditPress(index), 63141 "aria-label": (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: Label of the video text track e.g: "French subtitles" */ 63142 (0,external_wp_i18n_namespaceObject._x)('Edit %s', 'text tracks'), track.label), 63143 children: (0,external_wp_i18n_namespaceObject.__)('Edit') 63144 })] 63145 }, index); 63146 }); 63147 } 63148 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, { 63149 label: (0,external_wp_i18n_namespaceObject.__)('Text tracks'), 63150 className: "block-library-video-tracks-editor__track-list", 63151 children: content 63152 }); 63153 } 63154 function SingleTrackEditor({ 63155 track, 63156 onChange, 63157 onClose, 63158 onRemove 63159 }) { 63160 const { 63161 src = '', 63162 label = '', 63163 srcLang = '', 63164 kind = DEFAULT_KIND 63165 } = track; 63166 const fileName = src.startsWith('blob:') ? '' : (0,external_wp_url_namespaceObject.getFilename)(src) || ''; 63167 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.NavigableMenu, { 63168 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { 63169 className: "block-library-video-tracks-editor__single-track-editor", 63170 spacing: "4", 63171 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 63172 className: "block-library-video-tracks-editor__single-track-editor-edit-track-label", 63173 children: (0,external_wp_i18n_namespaceObject.__)('Edit track') 63174 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", { 63175 children: [(0,external_wp_i18n_namespaceObject.__)('File'), ": ", /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("b", { 63176 children: fileName 63177 })] 63178 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalGrid, { 63179 columns: 2, 63180 gap: 4, 63181 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 63182 __next40pxDefaultSize: true, 63183 __nextHasNoMarginBottom: true 63184 /* eslint-disable jsx-a11y/no-autofocus */, 63185 autoFocus: true 63186 /* eslint-enable jsx-a11y/no-autofocus */, 63187 onChange: newLabel => onChange({ 63188 ...track, 63189 label: newLabel 63190 }), 63191 label: (0,external_wp_i18n_namespaceObject.__)('Label'), 63192 value: label, 63193 help: (0,external_wp_i18n_namespaceObject.__)('Title of track') 63194 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextControl, { 63195 __next40pxDefaultSize: true, 63196 __nextHasNoMarginBottom: true, 63197 onChange: newSrcLang => onChange({ 63198 ...track, 63199 srcLang: newSrcLang 63200 }), 63201 label: (0,external_wp_i18n_namespaceObject.__)('Source language'), 63202 value: srcLang, 63203 help: (0,external_wp_i18n_namespaceObject.__)('Language tag (en, fr, etc.)') 63204 })] 63205 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { 63206 spacing: "8", 63207 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 63208 __next40pxDefaultSize: true, 63209 __nextHasNoMarginBottom: true, 63210 className: "block-library-video-tracks-editor__single-track-editor-kind-select", 63211 options: KIND_OPTIONS, 63212 value: kind, 63213 label: (0,external_wp_i18n_namespaceObject.__)('Kind'), 63214 onChange: newKind => { 63215 onChange({ 63216 ...track, 63217 kind: newKind 63218 }); 63219 } 63220 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { 63221 className: "block-library-video-tracks-editor__single-track-editor-buttons-container", 63222 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 63223 __next40pxDefaultSize: true, 63224 variant: "secondary", 63225 onClick: () => { 63226 const changes = {}; 63227 let hasChanges = false; 63228 if (label === '') { 63229 changes.label = (0,external_wp_i18n_namespaceObject.__)('English'); 63230 hasChanges = true; 63231 } 63232 if (srcLang === '') { 63233 changes.srcLang = 'en'; 63234 hasChanges = true; 63235 } 63236 if (track.kind === undefined) { 63237 changes.kind = DEFAULT_KIND; 63238 hasChanges = true; 63239 } 63240 if (hasChanges) { 63241 onChange({ 63242 ...track, 63243 ...changes 63244 }); 63245 } 63246 onClose(); 63247 }, 63248 children: (0,external_wp_i18n_namespaceObject.__)('Close') 63249 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 63250 __next40pxDefaultSize: true, 63251 isDestructive: true, 63252 variant: "link", 63253 onClick: onRemove, 63254 children: (0,external_wp_i18n_namespaceObject.__)('Remove track') 63255 })] 63256 })] 63257 })] 63258 }) 63259 }); 63260 } 63261 function TracksEditor({ 63262 tracks = [], 63263 onChange 63264 }) { 63265 const mediaUpload = (0,external_wp_data_namespaceObject.useSelect)(select => { 63266 return select(external_wp_blockEditor_namespaceObject.store).getSettings().mediaUpload; 63267 }, []); 63268 const [trackBeingEdited, setTrackBeingEdited] = (0,external_wp_element_namespaceObject.useState)(null); 63269 if (!mediaUpload) { 63270 return null; 63271 } 63272 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Dropdown, { 63273 contentClassName: "block-library-video-tracks-editor", 63274 renderToggle: ({ 63275 isOpen, 63276 onToggle 63277 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 63278 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 63279 label: (0,external_wp_i18n_namespaceObject.__)('Text tracks'), 63280 showTooltip: true, 63281 "aria-expanded": isOpen, 63282 "aria-haspopup": "true", 63283 onClick: onToggle, 63284 children: (0,external_wp_i18n_namespaceObject.__)('Text tracks') 63285 }) 63286 }), 63287 renderContent: () => { 63288 if (trackBeingEdited !== null) { 63289 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SingleTrackEditor, { 63290 track: tracks[trackBeingEdited], 63291 onChange: newTrack => { 63292 const newTracks = [...tracks]; 63293 newTracks[trackBeingEdited] = newTrack; 63294 onChange(newTracks); 63295 }, 63296 onClose: () => setTrackBeingEdited(null), 63297 onRemove: () => { 63298 onChange(tracks.filter((_track, index) => index !== trackBeingEdited)); 63299 setTrackBeingEdited(null); 63300 } 63301 }); 63302 } 63303 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_ReactJSXRuntime_namespaceObject.Fragment, { 63304 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.NavigableMenu, { 63305 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TrackList, { 63306 tracks: tracks, 63307 onEditPress: setTrackBeingEdited 63308 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, { 63309 className: "block-library-video-tracks-editor__add-tracks-container", 63310 label: (0,external_wp_i18n_namespaceObject.__)('Add tracks'), 63311 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaUpload, { 63312 onSelect: ({ 63313 url 63314 }) => { 63315 const trackIndex = tracks.length; 63316 onChange([...tracks, { 63317 src: url 63318 }]); 63319 setTrackBeingEdited(trackIndex); 63320 }, 63321 allowedTypes: ALLOWED_TYPES, 63322 render: ({ 63323 open 63324 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { 63325 icon: library_media, 63326 onClick: open, 63327 children: (0,external_wp_i18n_namespaceObject.__)('Open Media Library') 63328 }) 63329 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaUploadCheck, { 63330 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FormFileUpload, { 63331 onChange: event => { 63332 const files = event.target.files; 63333 const trackIndex = tracks.length; 63334 mediaUpload({ 63335 allowedTypes: ALLOWED_TYPES, 63336 filesList: files, 63337 onFileChange: ([{ 63338 url 63339 }]) => { 63340 const newTracks = [...tracks]; 63341 if (!newTracks[trackIndex]) { 63342 newTracks[trackIndex] = {}; 63343 } 63344 newTracks[trackIndex] = { 63345 ...tracks[trackIndex], 63346 src: url 63347 }; 63348 onChange(newTracks); 63349 setTrackBeingEdited(trackIndex); 63350 } 63351 }); 63352 }, 63353 accept: ".vtt,text/vtt", 63354 render: ({ 63355 openFileDialog 63356 }) => { 63357 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { 63358 icon: library_upload, 63359 onClick: () => { 63360 openFileDialog(); 63361 }, 63362 children: (0,external_wp_i18n_namespaceObject.__)('Upload') 63363 }); 63364 } 63365 }) 63366 })] 63367 })] 63368 }) 63369 }); 63370 } 63371 }); 63372 } 63373 63374 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/video/edit.js 63375 /** 63376 * External dependencies 63377 */ 63378 63379 63380 /** 63381 * WordPress dependencies 63382 */ 63383 63384 63385 63386 63387 63388 63389 63390 63391 63392 63393 /** 63394 * Internal dependencies 63395 */ 63396 63397 63398 63399 63400 63401 63402 63403 63404 63405 const video_edit_ALLOWED_MEDIA_TYPES = ['video']; 63406 const VIDEO_POSTER_ALLOWED_MEDIA_TYPES = ['image']; 63407 function VideoEdit({ 63408 isSelected: isSingleSelected, 63409 attributes, 63410 className, 63411 setAttributes, 63412 insertBlocksAfter, 63413 onReplace 63414 }) { 63415 const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(VideoEdit); 63416 const videoPlayer = (0,external_wp_element_namespaceObject.useRef)(); 63417 const posterImageButton = (0,external_wp_element_namespaceObject.useRef)(); 63418 const { 63419 id, 63420 controls, 63421 poster, 63422 src, 63423 tracks 63424 } = attributes; 63425 const [temporaryURL, setTemporaryURL] = (0,external_wp_element_namespaceObject.useState)(attributes.blob); 63426 useUploadMediaFromBlobURL({ 63427 url: temporaryURL, 63428 allowedTypes: video_edit_ALLOWED_MEDIA_TYPES, 63429 onChange: onSelectVideo, 63430 onError: onUploadError 63431 }); 63432 (0,external_wp_element_namespaceObject.useEffect)(() => { 63433 // Placeholder may be rendered. 63434 if (videoPlayer.current) { 63435 videoPlayer.current.load(); 63436 } 63437 }, [poster]); 63438 function onSelectVideo(media) { 63439 if (!media || !media.url) { 63440 // In this case there was an error 63441 // previous attributes should be removed 63442 // because they may be temporary blob urls. 63443 setAttributes({ 63444 src: undefined, 63445 id: undefined, 63446 poster: undefined, 63447 caption: undefined, 63448 blob: undefined 63449 }); 63450 setTemporaryURL(); 63451 return; 63452 } 63453 if ((0,external_wp_blob_namespaceObject.isBlobURL)(media.url)) { 63454 setTemporaryURL(media.url); 63455 return; 63456 } 63457 63458 // Sets the block's attribute and updates the edit component from the 63459 // selected media. 63460 setAttributes({ 63461 blob: undefined, 63462 src: media.url, 63463 id: media.id, 63464 poster: media.image?.src !== media.icon ? media.image?.src : undefined, 63465 caption: media.caption 63466 }); 63467 setTemporaryURL(); 63468 } 63469 function onSelectURL(newSrc) { 63470 if (newSrc !== src) { 63471 // Check if there's an embed block that handles this URL. 63472 const embedBlock = createUpgradedEmbedBlock({ 63473 attributes: { 63474 url: newSrc 63475 } 63476 }); 63477 if (undefined !== embedBlock && onReplace) { 63478 onReplace(embedBlock); 63479 return; 63480 } 63481 setAttributes({ 63482 blob: undefined, 63483 src: newSrc, 63484 id: undefined, 63485 poster: undefined 63486 }); 63487 setTemporaryURL(); 63488 } 63489 } 63490 const { 63491 createErrorNotice 63492 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 63493 function onUploadError(message) { 63494 createErrorNotice(message, { 63495 type: 'snackbar' 63496 }); 63497 } 63498 63499 // Much of this description is duplicated from MediaPlaceholder. 63500 const placeholder = content => { 63501 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 63502 className: "block-editor-media-placeholder", 63503 withIllustration: !isSingleSelected, 63504 icon: library_video, 63505 label: (0,external_wp_i18n_namespaceObject.__)('Video'), 63506 instructions: (0,external_wp_i18n_namespaceObject.__)('Upload a video file, pick one from your media library, or add one with a URL.'), 63507 children: content 63508 }); 63509 }; 63510 const classes = dist_clsx(className, { 63511 'is-transient': !!temporaryURL 63512 }); 63513 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 63514 className: classes 63515 }); 63516 if (!src && !temporaryURL) { 63517 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 63518 ...blockProps, 63519 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaPlaceholder, { 63520 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 63521 icon: library_video 63522 }), 63523 onSelect: onSelectVideo, 63524 onSelectURL: onSelectURL, 63525 accept: "video/*", 63526 allowedTypes: video_edit_ALLOWED_MEDIA_TYPES, 63527 value: attributes, 63528 onError: onUploadError, 63529 placeholder: placeholder 63530 }) 63531 }); 63532 } 63533 function onSelectPoster(image) { 63534 setAttributes({ 63535 poster: image.url 63536 }); 63537 } 63538 function onRemovePoster() { 63539 setAttributes({ 63540 poster: undefined 63541 }); 63542 63543 // Move focus back to the Media Upload button. 63544 posterImageButton.current.focus(); 63545 } 63546 const videoPosterDescription = `video-block__poster-image-description-${instanceId}`; 63547 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 63548 children: [isSingleSelected && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 63549 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 63550 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TracksEditor, { 63551 tracks: tracks, 63552 onChange: newTracks => { 63553 setAttributes({ 63554 tracks: newTracks 63555 }); 63556 } 63557 }) 63558 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 63559 group: "other", 63560 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaReplaceFlow, { 63561 mediaId: id, 63562 mediaURL: src, 63563 allowedTypes: video_edit_ALLOWED_MEDIA_TYPES, 63564 accept: "video/*", 63565 onSelect: onSelectVideo, 63566 onSelectURL: onSelectURL, 63567 onError: onUploadError, 63568 onReset: () => onSelectVideo(undefined) 63569 }) 63570 })] 63571 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 63572 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.PanelBody, { 63573 title: (0,external_wp_i18n_namespaceObject.__)('Settings'), 63574 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(edit_common_settings, { 63575 setAttributes: setAttributes, 63576 attributes: attributes 63577 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaUploadCheck, { 63578 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 63579 className: "editor-video-poster-control", 63580 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.BaseControl.VisualLabel, { 63581 children: (0,external_wp_i18n_namespaceObject.__)('Poster image') 63582 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.MediaUpload, { 63583 title: (0,external_wp_i18n_namespaceObject.__)('Select poster image'), 63584 onSelect: onSelectPoster, 63585 allowedTypes: VIDEO_POSTER_ALLOWED_MEDIA_TYPES, 63586 render: ({ 63587 open 63588 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 63589 __next40pxDefaultSize: true, 63590 variant: "primary", 63591 onClick: open, 63592 ref: posterImageButton, 63593 "aria-describedby": videoPosterDescription, 63594 children: !poster ? (0,external_wp_i18n_namespaceObject.__)('Select') : (0,external_wp_i18n_namespaceObject.__)('Replace') 63595 }) 63596 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 63597 id: videoPosterDescription, 63598 hidden: true, 63599 children: poster ? (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: poster image URL. */ 63600 (0,external_wp_i18n_namespaceObject.__)('The current poster image url is %s'), poster) : (0,external_wp_i18n_namespaceObject.__)('There is no poster image currently selected') 63601 }), !!poster && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { 63602 __next40pxDefaultSize: true, 63603 onClick: onRemovePoster, 63604 variant: "tertiary", 63605 children: (0,external_wp_i18n_namespaceObject.__)('Remove') 63606 })] 63607 }) 63608 })] 63609 }) 63610 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 63611 ...blockProps, 63612 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, { 63613 isDisabled: !isSingleSelected, 63614 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 63615 controls: controls, 63616 poster: poster, 63617 src: src || temporaryURL, 63618 ref: videoPlayer, 63619 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tracks, { 63620 tracks: tracks 63621 }) 63622 }) 63623 }), !!temporaryURL && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Caption, { 63624 attributes: attributes, 63625 setAttributes: setAttributes, 63626 isSelected: isSingleSelected, 63627 insertBlocksAfter: insertBlocksAfter, 63628 label: (0,external_wp_i18n_namespaceObject.__)('Video caption text'), 63629 showToolbarButton: isSingleSelected 63630 })] 63631 })] 63632 }); 63633 } 63634 /* harmony default export */ const video_edit = (VideoEdit); 63635 63636 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/video/save.js 63637 /** 63638 * WordPress dependencies 63639 */ 63640 63641 63642 /** 63643 * Internal dependencies 63644 */ 63645 63646 63647 63648 function video_save_save({ 63649 attributes 63650 }) { 63651 const { 63652 autoplay, 63653 caption, 63654 controls, 63655 loop, 63656 muted, 63657 poster, 63658 preload, 63659 src, 63660 playsInline, 63661 tracks 63662 } = attributes; 63663 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("figure", { 63664 ...external_wp_blockEditor_namespaceObject.useBlockProps.save(), 63665 children: [src && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("video", { 63666 autoPlay: autoplay, 63667 controls: controls, 63668 loop: loop, 63669 muted: muted, 63670 poster: poster, 63671 preload: preload !== 'metadata' ? preload : undefined, 63672 src: src, 63673 playsInline: playsInline, 63674 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Tracks, { 63675 tracks: tracks 63676 }) 63677 }), !external_wp_blockEditor_namespaceObject.RichText.isEmpty(caption) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 63678 className: (0,external_wp_blockEditor_namespaceObject.__experimentalGetElementClassName)('caption'), 63679 tagName: "figcaption", 63680 value: caption 63681 })] 63682 }); 63683 } 63684 63685 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/video/transforms.js 63686 /** 63687 * WordPress dependencies 63688 */ 63689 63690 63691 const video_transforms_transforms = { 63692 from: [{ 63693 type: 'files', 63694 isMatch(files) { 63695 return files.length === 1 && files[0].type.indexOf('video/') === 0; 63696 }, 63697 transform(files) { 63698 const file = files[0]; 63699 // We don't need to upload the media directly here 63700 // It's already done as part of the `componentDidMount` 63701 // in the video block 63702 const block = (0,external_wp_blocks_namespaceObject.createBlock)('core/video', { 63703 blob: (0,external_wp_blob_namespaceObject.createBlobURL)(file) 63704 }); 63705 return block; 63706 } 63707 }, { 63708 type: 'shortcode', 63709 tag: 'video', 63710 attributes: { 63711 src: { 63712 type: 'string', 63713 shortcode: ({ 63714 named: { 63715 src, 63716 mp4, 63717 m4v, 63718 webm, 63719 ogv, 63720 flv 63721 } 63722 }) => { 63723 return src || mp4 || m4v || webm || ogv || flv; 63724 } 63725 }, 63726 poster: { 63727 type: 'string', 63728 shortcode: ({ 63729 named: { 63730 poster 63731 } 63732 }) => { 63733 return poster; 63734 } 63735 }, 63736 loop: { 63737 type: 'string', 63738 shortcode: ({ 63739 named: { 63740 loop 63741 } 63742 }) => { 63743 return loop; 63744 } 63745 }, 63746 autoplay: { 63747 type: 'string', 63748 shortcode: ({ 63749 named: { 63750 autoplay 63751 } 63752 }) => { 63753 return autoplay; 63754 } 63755 }, 63756 preload: { 63757 type: 'string', 63758 shortcode: ({ 63759 named: { 63760 preload 63761 } 63762 }) => { 63763 return preload; 63764 } 63765 } 63766 } 63767 }, { 63768 type: 'raw', 63769 isMatch: node => node.nodeName === 'P' && node.children.length === 1 && node.firstChild.nodeName === 'VIDEO', 63770 transform: node => { 63771 const videoElement = node.firstChild; 63772 const attributes = { 63773 autoplay: videoElement.hasAttribute('autoplay') ? true : undefined, 63774 controls: videoElement.hasAttribute('controls') ? undefined : false, 63775 loop: videoElement.hasAttribute('loop') ? true : undefined, 63776 muted: videoElement.hasAttribute('muted') ? true : undefined, 63777 preload: videoElement.getAttribute('preload') || undefined, 63778 playsInline: videoElement.hasAttribute('playsinline') ? true : undefined, 63779 poster: videoElement.getAttribute('poster') || undefined, 63780 src: videoElement.getAttribute('src') || undefined 63781 }; 63782 if ((0,external_wp_blob_namespaceObject.isBlobURL)(attributes.src)) { 63783 attributes.blob = attributes.src; 63784 delete attributes.src; 63785 } 63786 return (0,external_wp_blocks_namespaceObject.createBlock)('core/video', attributes); 63787 } 63788 }] 63789 }; 63790 /* harmony default export */ const video_transforms = (video_transforms_transforms); 63791 63792 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/video/index.js 63793 /** 63794 * WordPress dependencies 63795 */ 63796 63797 63798 63799 /** 63800 * Internal dependencies 63801 */ 63802 63803 63804 63805 const video_metadata = { 63806 $schema: "https://schemas.wp.org/trunk/block.json", 63807 apiVersion: 3, 63808 name: "core/video", 63809 title: "Video", 63810 category: "media", 63811 description: "Embed a video from your media library or upload a new one.", 63812 keywords: ["movie"], 63813 textdomain: "default", 63814 attributes: { 63815 autoplay: { 63816 type: "boolean", 63817 source: "attribute", 63818 selector: "video", 63819 attribute: "autoplay" 63820 }, 63821 caption: { 63822 type: "rich-text", 63823 source: "rich-text", 63824 selector: "figcaption", 63825 role: "content" 63826 }, 63827 controls: { 63828 type: "boolean", 63829 source: "attribute", 63830 selector: "video", 63831 attribute: "controls", 63832 "default": true 63833 }, 63834 id: { 63835 type: "number", 63836 role: "content" 63837 }, 63838 loop: { 63839 type: "boolean", 63840 source: "attribute", 63841 selector: "video", 63842 attribute: "loop" 63843 }, 63844 muted: { 63845 type: "boolean", 63846 source: "attribute", 63847 selector: "video", 63848 attribute: "muted" 63849 }, 63850 poster: { 63851 type: "string", 63852 source: "attribute", 63853 selector: "video", 63854 attribute: "poster" 63855 }, 63856 preload: { 63857 type: "string", 63858 source: "attribute", 63859 selector: "video", 63860 attribute: "preload", 63861 "default": "metadata" 63862 }, 63863 blob: { 63864 type: "string", 63865 role: "local" 63866 }, 63867 src: { 63868 type: "string", 63869 source: "attribute", 63870 selector: "video", 63871 attribute: "src", 63872 role: "content" 63873 }, 63874 playsInline: { 63875 type: "boolean", 63876 source: "attribute", 63877 selector: "video", 63878 attribute: "playsinline" 63879 }, 63880 tracks: { 63881 role: "content", 63882 type: "array", 63883 items: { 63884 type: "object" 63885 }, 63886 "default": [] 63887 } 63888 }, 63889 supports: { 63890 anchor: true, 63891 align: true, 63892 spacing: { 63893 margin: true, 63894 padding: true, 63895 __experimentalDefaultControls: { 63896 margin: false, 63897 padding: false 63898 } 63899 }, 63900 interactivity: { 63901 clientNavigation: true 63902 } 63903 }, 63904 editorStyle: "wp-block-video-editor", 63905 style: "wp-block-video" 63906 }; 63907 63908 63909 const { 63910 name: video_name 63911 } = video_metadata; 63912 63913 const video_settings = { 63914 icon: library_video, 63915 example: { 63916 attributes: { 63917 src: 'https://upload.wikimedia.org/wikipedia/commons/c/ca/Wood_thrush_in_Central_Park_switch_sides_%2816510%29.webm', 63918 // translators: Caption accompanying a video of the wood thrush singing, which serves as an example for the Video block. 63919 caption: (0,external_wp_i18n_namespaceObject.__)('Wood thrush singing in Central Park, NYC.') 63920 } 63921 }, 63922 transforms: video_transforms, 63923 deprecated: video_deprecated, 63924 edit: video_edit, 63925 save: video_save_save 63926 }; 63927 const video_init = () => initBlock({ 63928 name: video_name, 63929 metadata: video_metadata, 63930 settings: video_settings 63931 }); 63932 63933 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/footnotes/edit.js 63934 /** 63935 * WordPress dependencies 63936 */ 63937 63938 63939 63940 63941 63942 63943 63944 function FootnotesEdit({ 63945 context: { 63946 postType, 63947 postId 63948 } 63949 }) { 63950 const [meta, updateMeta] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postType, 'meta', postId); 63951 const footnotesSupported = 'string' === typeof meta?.footnotes; 63952 const footnotes = meta?.footnotes ? JSON.parse(meta.footnotes) : []; 63953 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)(); 63954 if (!footnotesSupported) { 63955 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 63956 ...blockProps, 63957 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 63958 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 63959 icon: format_list_numbered 63960 }), 63961 label: (0,external_wp_i18n_namespaceObject.__)('Footnotes'), 63962 instructions: (0,external_wp_i18n_namespaceObject.__)('Footnotes are not supported here. Add this block to post or page content.') 63963 }) 63964 }); 63965 } 63966 if (!footnotes.length) { 63967 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 63968 ...blockProps, 63969 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 63970 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 63971 icon: format_list_numbered 63972 }), 63973 label: (0,external_wp_i18n_namespaceObject.__)('Footnotes'), 63974 instructions: (0,external_wp_i18n_namespaceObject.__)('Footnotes found in blocks within this document will be displayed here.') 63975 }) 63976 }); 63977 } 63978 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ol", { 63979 ...blockProps, 63980 children: footnotes.map(({ 63981 id, 63982 content 63983 }) => 63984 /*#__PURE__*/ 63985 /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */ 63986 (0,external_ReactJSXRuntime_namespaceObject.jsxs)("li", { 63987 onMouseDown: event => { 63988 // When clicking on the list item (not on descendants), 63989 // focus the rich text element since it's only 1px wide when 63990 // empty. 63991 if (event.target === event.currentTarget) { 63992 event.target.firstElementChild.focus(); 63993 event.preventDefault(); 63994 } 63995 }, 63996 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 63997 id: id, 63998 tagName: "span", 63999 value: content, 64000 identifier: id 64001 // To do: figure out why the browser is not scrolling 64002 // into view when it receives focus. 64003 , 64004 onFocus: event => { 64005 if (!event.target.textContent.trim()) { 64006 event.target.scrollIntoView(); 64007 } 64008 }, 64009 onChange: nextFootnote => { 64010 updateMeta({ 64011 ...meta, 64012 footnotes: JSON.stringify(footnotes.map(footnote => { 64013 return footnote.id === id ? { 64014 content: nextFootnote, 64015 id 64016 } : footnote; 64017 })) 64018 }); 64019 } 64020 }), ' ', /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("a", { 64021 href: `#$id}-link`, 64022 children: "\u21A9\uFE0E" 64023 })] 64024 }, id)) 64025 }); 64026 } 64027 64028 ;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-browser/native.js 64029 const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto); 64030 /* harmony default export */ const esm_browser_native = ({ 64031 randomUUID 64032 }); 64033 ;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-browser/rng.js 64034 // Unique ID creation requires a high quality random # generator. In the browser we therefore 64035 // require the crypto API and do not support built-in fallback to lower quality random number 64036 // generators (like Math.random()). 64037 let getRandomValues; 64038 const rnds8 = new Uint8Array(16); 64039 function rng() { 64040 // lazy load so that environments that need to polyfill have a chance to do so 64041 if (!getRandomValues) { 64042 // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation. 64043 getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto); 64044 64045 if (!getRandomValues) { 64046 throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported'); 64047 } 64048 } 64049 64050 return getRandomValues(rnds8); 64051 } 64052 ;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-browser/stringify.js 64053 64054 /** 64055 * Convert array of 16 byte values to UUID string format of the form: 64056 * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 64057 */ 64058 64059 const byteToHex = []; 64060 64061 for (let i = 0; i < 256; ++i) { 64062 byteToHex.push((i + 0x100).toString(16).slice(1)); 64063 } 64064 64065 function unsafeStringify(arr, offset = 0) { 64066 // Note: Be careful editing this code! It's been tuned for performance 64067 // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 64068 return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]; 64069 } 64070 64071 function stringify(arr, offset = 0) { 64072 const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one 64073 // of the following: 64074 // - One or more input array values don't map to a hex octet (leading to 64075 // "undefined" in the uuid) 64076 // - Invalid input values for the RFC `version` or `variant` fields 64077 64078 if (!validate(uuid)) { 64079 throw TypeError('Stringified UUID is invalid'); 64080 } 64081 64082 return uuid; 64083 } 64084 64085 /* harmony default export */ const esm_browser_stringify = ((/* unused pure expression or super */ null && (stringify))); 64086 ;// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-browser/v4.js 64087 64088 64089 64090 64091 function v4_v4(options, buf, offset) { 64092 if (esm_browser_native.randomUUID && !buf && !options) { 64093 return esm_browser_native.randomUUID(); 64094 } 64095 64096 options = options || {}; 64097 const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` 64098 64099 rnds[6] = rnds[6] & 0x0f | 0x40; 64100 rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided 64101 64102 if (buf) { 64103 offset = offset || 0; 64104 64105 for (let i = 0; i < 16; ++i) { 64106 buf[offset + i] = rnds[i]; 64107 } 64108 64109 return buf; 64110 } 64111 64112 return unsafeStringify(rnds); 64113 } 64114 64115 /* harmony default export */ const esm_browser_v4 = (v4_v4); 64116 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/footnotes/format.js 64117 /** 64118 * External dependencies 64119 */ 64120 64121 64122 /** 64123 * WordPress dependencies 64124 */ 64125 64126 64127 64128 64129 64130 64131 64132 64133 /** 64134 * Internal dependencies 64135 */ 64136 64137 64138 const { 64139 usesContextKey 64140 } = unlock(external_wp_blockEditor_namespaceObject.privateApis); 64141 const formatName = 'core/footnote'; 64142 const POST_CONTENT_BLOCK_NAME = 'core/post-content'; 64143 const SYNCED_PATTERN_BLOCK_NAME = 'core/block'; 64144 const format = { 64145 title: (0,external_wp_i18n_namespaceObject.__)('Footnote'), 64146 tagName: 'sup', 64147 className: 'fn', 64148 attributes: { 64149 'data-fn': 'data-fn' 64150 }, 64151 interactive: true, 64152 contentEditable: false, 64153 [usesContextKey]: ['postType', 'postId'], 64154 edit: function Edit({ 64155 value, 64156 onChange, 64157 isObjectActive, 64158 context: { 64159 postType, 64160 postId 64161 } 64162 }) { 64163 const registry = (0,external_wp_data_namespaceObject.useRegistry)(); 64164 const { 64165 getSelectedBlockClientId, 64166 getBlocks, 64167 getBlockRootClientId, 64168 getBlockName, 64169 getBlockParentsByBlockName 64170 } = registry.select(external_wp_blockEditor_namespaceObject.store); 64171 const isFootnotesSupported = (0,external_wp_data_namespaceObject.useSelect)(select => { 64172 if (!select(external_wp_blocks_namespaceObject.store).getBlockType('core/footnotes')) { 64173 return false; 64174 } 64175 const allowedBlocks = select(external_wp_blockEditor_namespaceObject.store).getSettings().allowedBlockTypes; 64176 if (allowedBlocks === false || Array.isArray(allowedBlocks) && !allowedBlocks.includes('core/footnotes')) { 64177 return false; 64178 } 64179 const entityRecord = select(external_wp_coreData_namespaceObject.store).getEntityRecord('postType', postType, postId); 64180 if ('string' !== typeof entityRecord?.meta?.footnotes) { 64181 return false; 64182 } 64183 64184 // Checks if the selected block lives within a pattern. 64185 const { 64186 getBlockParentsByBlockName: _getBlockParentsByBlockName, 64187 getSelectedBlockClientId: _getSelectedBlockClientId 64188 } = select(external_wp_blockEditor_namespaceObject.store); 64189 const parentCoreBlocks = _getBlockParentsByBlockName(_getSelectedBlockClientId(), SYNCED_PATTERN_BLOCK_NAME); 64190 return !parentCoreBlocks || parentCoreBlocks.length === 0; 64191 }, [postType, postId]); 64192 const { 64193 selectionChange, 64194 insertBlock 64195 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 64196 if (!isFootnotesSupported) { 64197 return null; 64198 } 64199 function onClick() { 64200 registry.batch(() => { 64201 let id; 64202 if (isObjectActive) { 64203 const object = value.replacements[value.start]; 64204 id = object?.attributes?.['data-fn']; 64205 } else { 64206 id = esm_browser_v4(); 64207 const newValue = (0,external_wp_richText_namespaceObject.insertObject)(value, { 64208 type: formatName, 64209 attributes: { 64210 'data-fn': id 64211 }, 64212 innerHTML: `<a href="#$id}" id="$id}-link">*</a>` 64213 }, value.end, value.end); 64214 newValue.start = newValue.end - 1; 64215 onChange(newValue); 64216 } 64217 const selectedClientId = getSelectedBlockClientId(); 64218 64219 /* 64220 * Attempts to find a common parent post content block. 64221 * This allows for locating blocks within a page edited in the site editor. 64222 */ 64223 const parentPostContent = getBlockParentsByBlockName(selectedClientId, POST_CONTENT_BLOCK_NAME); 64224 64225 // When called with a post content block, getBlocks will return 64226 // the block with controlled inner blocks included. 64227 const blocks = parentPostContent.length ? getBlocks(parentPostContent[0]) : getBlocks(); 64228 64229 // BFS search to find the first footnote block. 64230 let fnBlock = null; 64231 { 64232 const queue = [...blocks]; 64233 while (queue.length) { 64234 const block = queue.shift(); 64235 if (block.name === 'core/footnotes') { 64236 fnBlock = block; 64237 break; 64238 } 64239 queue.push(...block.innerBlocks); 64240 } 64241 } 64242 64243 // Maybe this should all also be moved to the entity provider. 64244 // When there is no footnotes block in the post, create one and 64245 // insert it at the bottom. 64246 if (!fnBlock) { 64247 let rootClientId = getBlockRootClientId(selectedClientId); 64248 while (rootClientId && getBlockName(rootClientId) !== POST_CONTENT_BLOCK_NAME) { 64249 rootClientId = getBlockRootClientId(rootClientId); 64250 } 64251 fnBlock = (0,external_wp_blocks_namespaceObject.createBlock)('core/footnotes'); 64252 insertBlock(fnBlock, undefined, rootClientId); 64253 } 64254 selectionChange(fnBlock.clientId, id, 0, 0); 64255 }); 64256 } 64257 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichTextToolbarButton, { 64258 icon: format_list_numbered, 64259 title: (0,external_wp_i18n_namespaceObject.__)('Footnote'), 64260 onClick: onClick, 64261 isActive: isObjectActive 64262 }); 64263 } 64264 }; 64265 64266 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/footnotes/index.js 64267 /** 64268 * WordPress dependencies 64269 */ 64270 64271 64272 64273 /** 64274 * Internal dependencies 64275 */ 64276 64277 64278 const footnotes_metadata = { 64279 $schema: "https://schemas.wp.org/trunk/block.json", 64280 apiVersion: 3, 64281 name: "core/footnotes", 64282 title: "Footnotes", 64283 category: "text", 64284 description: "Display footnotes added to the page.", 64285 keywords: ["references"], 64286 textdomain: "default", 64287 usesContext: ["postId", "postType"], 64288 supports: { 64289 __experimentalBorder: { 64290 radius: true, 64291 color: true, 64292 width: true, 64293 style: true, 64294 __experimentalDefaultControls: { 64295 radius: false, 64296 color: false, 64297 width: false, 64298 style: false 64299 } 64300 }, 64301 color: { 64302 background: true, 64303 link: true, 64304 text: true, 64305 __experimentalDefaultControls: { 64306 link: true, 64307 text: true 64308 } 64309 }, 64310 html: false, 64311 multiple: false, 64312 reusable: false, 64313 inserter: false, 64314 spacing: { 64315 margin: true, 64316 padding: true, 64317 __experimentalDefaultControls: { 64318 margin: false, 64319 padding: false 64320 } 64321 }, 64322 typography: { 64323 fontSize: true, 64324 lineHeight: true, 64325 __experimentalFontFamily: true, 64326 __experimentalTextDecoration: true, 64327 __experimentalFontStyle: true, 64328 __experimentalFontWeight: true, 64329 __experimentalLetterSpacing: true, 64330 __experimentalTextTransform: true, 64331 __experimentalWritingMode: true, 64332 __experimentalDefaultControls: { 64333 fontSize: true 64334 } 64335 }, 64336 interactivity: { 64337 clientNavigation: true 64338 } 64339 }, 64340 style: "wp-block-footnotes" 64341 }; 64342 64343 const { 64344 name: footnotes_name 64345 } = footnotes_metadata; 64346 64347 const footnotes_settings = { 64348 icon: format_list_numbered, 64349 edit: FootnotesEdit 64350 }; 64351 const footnotes_init = () => { 64352 (0,external_wp_richText_namespaceObject.registerFormatType)(formatName, format); 64353 initBlock({ 64354 name: footnotes_name, 64355 metadata: footnotes_metadata, 64356 settings: footnotes_settings 64357 }); 64358 }; 64359 64360 // EXTERNAL MODULE: ./node_modules/@wordpress/block-library/build-module/utils/is-block-metadata-experimental.js 64361 var is_block_metadata_experimental = __webpack_require__(2321); 64362 var is_block_metadata_experimental_default = /*#__PURE__*/__webpack_require__.n(is_block_metadata_experimental); 64363 ;// CONCATENATED MODULE: external ["wp","keyboardShortcuts"] 64364 const external_wp_keyboardShortcuts_namespaceObject = window["wp"]["keyboardShortcuts"]; 64365 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/block-keyboard-shortcuts/index.js 64366 /** 64367 * WordPress dependencies 64368 */ 64369 64370 64371 64372 64373 64374 64375 function BlockKeyboardShortcuts() { 64376 const { 64377 registerShortcut 64378 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_keyboardShortcuts_namespaceObject.store); 64379 const { 64380 replaceBlocks 64381 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 64382 const { 64383 getBlockName, 64384 getSelectedBlockClientId, 64385 getBlockAttributes 64386 } = (0,external_wp_data_namespaceObject.useSelect)(external_wp_blockEditor_namespaceObject.store); 64387 const handleTransformHeadingAndParagraph = (event, level) => { 64388 event.preventDefault(); 64389 const currentClientId = getSelectedBlockClientId(); 64390 if (currentClientId === null) { 64391 return; 64392 } 64393 const blockName = getBlockName(currentClientId); 64394 const isParagraph = blockName === 'core/paragraph'; 64395 const isHeading = blockName === 'core/heading'; 64396 if (!isParagraph && !isHeading) { 64397 return; 64398 } 64399 const destinationBlockName = level === 0 ? 'core/paragraph' : 'core/heading'; 64400 const attributes = getBlockAttributes(currentClientId); 64401 64402 // Avoid unnecessary block transform when attempting to transform to 64403 // the same block type and/or same level. 64404 if (isParagraph && level === 0 || isHeading && attributes.level === level) { 64405 return; 64406 } 64407 const textAlign = blockName === 'core/paragraph' ? 'align' : 'textAlign'; 64408 const destinationTextAlign = destinationBlockName === 'core/paragraph' ? 'align' : 'textAlign'; 64409 replaceBlocks(currentClientId, (0,external_wp_blocks_namespaceObject.createBlock)(destinationBlockName, { 64410 level, 64411 content: attributes.content, 64412 ...{ 64413 [destinationTextAlign]: attributes[textAlign] 64414 } 64415 })); 64416 }; 64417 (0,external_wp_element_namespaceObject.useEffect)(() => { 64418 registerShortcut({ 64419 name: 'core/block-editor/transform-heading-to-paragraph', 64420 category: 'block-library', 64421 description: (0,external_wp_i18n_namespaceObject.__)('Transform heading to paragraph.'), 64422 keyCombination: { 64423 modifier: 'access', 64424 character: '0' 64425 }, 64426 aliases: [{ 64427 modifier: 'access', 64428 character: '7' 64429 }] 64430 }); 64431 [1, 2, 3, 4, 5, 6].forEach(level => { 64432 registerShortcut({ 64433 name: `core/block-editor/transform-paragraph-to-heading-$level}`, 64434 category: 'block-library', 64435 description: (0,external_wp_i18n_namespaceObject.__)('Transform paragraph to heading.'), 64436 keyCombination: { 64437 modifier: 'access', 64438 character: `$level}` 64439 } 64440 }); 64441 }); 64442 }, []); 64443 (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/block-editor/transform-heading-to-paragraph', event => handleTransformHeadingAndParagraph(event, 0)); 64444 [1, 2, 3, 4, 5, 6].forEach(level => { 64445 //the loop is based off on a constant therefore 64446 //the hook will execute the same way every time 64447 //eslint-disable-next-line react-hooks/rules-of-hooks 64448 (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)(`core/block-editor/transform-paragraph-to-heading-$level}`, event => handleTransformHeadingAndParagraph(event, level)); 64449 }); 64450 return null; 64451 } 64452 /* harmony default export */ const block_keyboard_shortcuts = (BlockKeyboardShortcuts); 64453 64454 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/private-apis.js 64455 /** 64456 * Internal dependencies 64457 */ 64458 64459 64460 64461 /** 64462 * @private 64463 */ 64464 const privateApis = {}; 64465 lock(privateApis, { 64466 BlockKeyboardShortcuts: block_keyboard_shortcuts 64467 }); 64468 64469 ;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/index.js 64470 /* wp:polyfill */ 64471 /** 64472 * WordPress dependencies 64473 */ 64474 64475 64476 /** 64477 * Internal dependencies 64478 */ 64479 // When IS_GUTENBERG_PLUGIN is set to false, imports of experimental blocks 64480 // are transformed by packages/block-library/src/index.js as follows: 64481 // import * as experimentalBlock from './experimental-block' 64482 // becomes 64483 // const experimentalBlock = null; 64484 // This enables webpack to eliminate the experimental blocks code from the 64485 // production build to make the final bundle smaller. 64486 // 64487 // See https://github.com/WordPress/gutenberg/pull/40655 for more context. 64488 64489 64490 64491 64492 64493 64494 64495 64496 64497 64498 64499 64500 64501 64502 64503 64504 64505 64506 64507 64508 64509 64510 64511 64512 64513 64514 64515 64516 64517 64518 64519 64520 64521 64522 64523 64524 64525 64526 64527 64528 64529 64530 64531 64532 64533 64534 64535 64536 64537 64538 64539 64540 64541 64542 64543 64544 64545 64546 64547 64548 64549 64550 64551 64552 64553 64554 64555 64556 64557 64558 64559 64560 64561 64562 64563 64564 64565 64566 64567 64568 64569 64570 64571 64572 64573 64574 64575 64576 64577 64578 64579 64580 64581 64582 64583 64584 64585 64586 64587 64588 64589 64590 64591 /** 64592 * Function to get all the block-library blocks in an array 64593 */ 64594 const getAllBlocks = () => { 64595 const blocks = [ 64596 // Common blocks are grouped at the top to prioritize their display 64597 // in various contexts — like the inserter and auto-complete components. 64598 build_module_paragraph_namespaceObject, build_module_image_namespaceObject, build_module_heading_namespaceObject, build_module_gallery_namespaceObject, build_module_list_namespaceObject, build_module_list_item_namespaceObject, build_module_quote_namespaceObject, 64599 // Register all remaining core blocks. 64600 archives_namespaceObject, build_module_audio_namespaceObject, build_module_button_namespaceObject, build_module_buttons_namespaceObject, build_module_calendar_namespaceObject, categories_namespaceObject, build_module_code_namespaceObject, build_module_column_namespaceObject, build_module_columns_namespaceObject, build_module_comment_author_avatar_namespaceObject, build_module_cover_namespaceObject, build_module_details_namespaceObject, embed_namespaceObject, build_module_file_namespaceObject, build_module_group_namespaceObject, build_module_html_namespaceObject, latest_comments_namespaceObject, latest_posts_namespaceObject, media_text_namespaceObject, missing_namespaceObject, build_module_more_namespaceObject, nextpage_namespaceObject, page_list_namespaceObject, page_list_item_namespaceObject, pattern_namespaceObject, build_module_preformatted_namespaceObject, build_module_pullquote_namespaceObject, block_namespaceObject, build_module_rss_namespaceObject, build_module_search_namespaceObject, build_module_separator_namespaceObject, build_module_shortcode_namespaceObject, social_link_namespaceObject, social_links_namespaceObject, spacer_namespaceObject, build_module_table_namespaceObject, tag_cloud_namespaceObject, text_columns_namespaceObject, build_module_verse_namespaceObject, build_module_video_namespaceObject, footnotes_namespaceObject, 64601 // theme blocks 64602 build_module_navigation_namespaceObject, navigation_link_namespaceObject, navigation_submenu_namespaceObject, build_module_site_logo_namespaceObject, site_title_namespaceObject, site_tagline_namespaceObject, query_namespaceObject, template_part_namespaceObject, avatar_namespaceObject, post_title_namespaceObject, build_module_post_excerpt_namespaceObject, build_module_post_featured_image_namespaceObject, build_module_post_content_namespaceObject, build_module_post_author_namespaceObject, post_author_name_namespaceObject, post_comment_namespaceObject, build_module_post_comments_count_namespaceObject, post_comments_link_namespaceObject, build_module_post_date_namespaceObject, build_module_post_terms_namespaceObject, post_navigation_link_namespaceObject, post_template_namespaceObject, post_time_to_read_namespaceObject, build_module_query_pagination_namespaceObject, build_module_query_pagination_next_namespaceObject, build_module_query_pagination_numbers_namespaceObject, build_module_query_pagination_previous_namespaceObject, query_no_results_namespaceObject, read_more_namespaceObject, comments_namespaceObject, build_module_comment_author_name_namespaceObject, build_module_comment_content_namespaceObject, comment_date_namespaceObject, build_module_comment_edit_link_namespaceObject, build_module_comment_reply_link_namespaceObject, comment_template_namespaceObject, comments_title_namespaceObject, comments_pagination_namespaceObject, comments_pagination_next_namespaceObject, comments_pagination_numbers_namespaceObject, comments_pagination_previous_namespaceObject, build_module_post_comments_form_namespaceObject, build_module_table_of_contents_namespaceObject, home_link_namespaceObject, loginout_namespaceObject, build_module_term_description_namespaceObject, query_title_namespaceObject, post_author_biography_namespaceObject]; 64603 if (window?.__experimentalEnableFormBlocks) { 64604 blocks.push(build_module_form_namespaceObject); 64605 blocks.push(form_input_namespaceObject); 64606 blocks.push(form_submit_button_namespaceObject); 64607 blocks.push(form_submission_notification_namespaceObject); 64608 } 64609 64610 // When in a WordPress context, conditionally 64611 // add the classic block and TinyMCE editor 64612 // under any of the following conditions: 64613 // - the current post contains a classic block 64614 // - the experiment to disable TinyMCE isn't active. 64615 // - a query argument specifies that TinyMCE should be loaded 64616 if (window?.wp?.oldEditor && (window?.wp?.needsClassicBlock || !window?.__experimentalDisableTinymce || !!new URLSearchParams(window?.location?.search).get('requiresTinymce'))) { 64617 blocks.push(freeform_namespaceObject); 64618 } 64619 return blocks.filter(Boolean); 64620 }; 64621 64622 /** 64623 * Function to get all the core blocks in an array. 64624 * 64625 * @example 64626 * ```js 64627 * import { __experimentalGetCoreBlocks } from '@wordpress/block-library'; 64628 * 64629 * const coreBlocks = __experimentalGetCoreBlocks(); 64630 * ``` 64631 */ 64632 const __experimentalGetCoreBlocks = () => getAllBlocks().filter(({ 64633 metadata 64634 }) => !is_block_metadata_experimental_default()(metadata)); 64635 64636 /** 64637 * Function to register core blocks provided by the block editor. 64638 * 64639 * @param {Array} blocks An optional array of the core blocks being registered. 64640 * 64641 * @example 64642 * ```js 64643 * import { registerCoreBlocks } from '@wordpress/block-library'; 64644 * 64645 * registerCoreBlocks(); 64646 * ``` 64647 */ 64648 const registerCoreBlocks = (blocks = __experimentalGetCoreBlocks()) => { 64649 blocks.forEach(({ 64650 init 64651 }) => init()); 64652 (0,external_wp_blocks_namespaceObject.setDefaultBlockName)(paragraph_name); 64653 if (window.wp && window.wp.oldEditor && blocks.some(({ 64654 name 64655 }) => name === freeform_name)) { 64656 (0,external_wp_blocks_namespaceObject.setFreeformContentHandlerName)(freeform_name); 64657 } 64658 (0,external_wp_blocks_namespaceObject.setUnregisteredTypeHandlerName)(missing_name); 64659 (0,external_wp_blocks_namespaceObject.setGroupingBlockName)(group_name); 64660 }; 64661 64662 /** 64663 * Function to register experimental core blocks depending on editor settings. 64664 * 64665 * @param {boolean} enableFSEBlocks Whether to enable the full site editing blocks. 64666 * @example 64667 * ```js 64668 * import { __experimentalRegisterExperimentalCoreBlocks } from '@wordpress/block-library'; 64669 * 64670 * __experimentalRegisterExperimentalCoreBlocks( settings ); 64671 * ``` 64672 */ 64673 const __experimentalRegisterExperimentalCoreBlocks = false ? 0 : undefined; 64674 64675 64676 })(); 64677 64678 (window.wp = window.wp || {}).blockLibrary = __webpack_exports__; 64679 /******/ })() 64680 ;
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated : Thu Nov 21 08:20:01 2024 | Cross-referenced by PHPXref |