[ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 /******/ (() => { // webpackBootstrap 2 /******/ "use strict"; 3 /******/ // The require scope 4 /******/ var __webpack_require__ = {}; 5 /******/ 6 /************************************************************************/ 7 /******/ /* webpack/runtime/compat get default export */ 8 /******/ (() => { 9 /******/ // getDefaultExport function for compatibility with non-harmony modules 10 /******/ __webpack_require__.n = (module) => { 11 /******/ var getter = module && module.__esModule ? 12 /******/ () => (module['default']) : 13 /******/ () => (module); 14 /******/ __webpack_require__.d(getter, { a: getter }); 15 /******/ return getter; 16 /******/ }; 17 /******/ })(); 18 /******/ 19 /******/ /* webpack/runtime/define property getters */ 20 /******/ (() => { 21 /******/ // define getter functions for harmony exports 22 /******/ __webpack_require__.d = (exports, definition) => { 23 /******/ for(var key in definition) { 24 /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 25 /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 26 /******/ } 27 /******/ } 28 /******/ }; 29 /******/ })(); 30 /******/ 31 /******/ /* webpack/runtime/hasOwnProperty shorthand */ 32 /******/ (() => { 33 /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 34 /******/ })(); 35 /******/ 36 /******/ /* webpack/runtime/make namespace object */ 37 /******/ (() => { 38 /******/ // define __esModule on exports 39 /******/ __webpack_require__.r = (exports) => { 40 /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 41 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 42 /******/ } 43 /******/ Object.defineProperty(exports, '__esModule', { value: true }); 44 /******/ }; 45 /******/ })(); 46 /******/ 47 /************************************************************************/ 48 var __webpack_exports__ = {}; 49 // ESM COMPAT FLAG 50 __webpack_require__.r(__webpack_exports__); 51 52 // EXPORTS 53 __webpack_require__.d(__webpack_exports__, { 54 MoveToWidgetArea: () => (/* reexport */ MoveToWidgetArea), 55 addWidgetIdToBlock: () => (/* reexport */ addWidgetIdToBlock), 56 getWidgetIdFromBlock: () => (/* reexport */ getWidgetIdFromBlock), 57 registerLegacyWidgetBlock: () => (/* binding */ registerLegacyWidgetBlock), 58 registerLegacyWidgetVariations: () => (/* reexport */ registerLegacyWidgetVariations), 59 registerWidgetGroupBlock: () => (/* binding */ registerWidgetGroupBlock) 60 }); 61 62 // NAMESPACE OBJECT: ./node_modules/@wordpress/widgets/build-module/blocks/legacy-widget/index.js 63 var legacy_widget_namespaceObject = {}; 64 __webpack_require__.r(legacy_widget_namespaceObject); 65 __webpack_require__.d(legacy_widget_namespaceObject, { 66 yu: () => (metadata), 67 UU: () => (legacy_widget_name), 68 W0: () => (settings) 69 }); 70 71 // NAMESPACE OBJECT: ./node_modules/@wordpress/widgets/build-module/blocks/widget-group/index.js 72 var widget_group_namespaceObject = {}; 73 __webpack_require__.r(widget_group_namespaceObject); 74 __webpack_require__.d(widget_group_namespaceObject, { 75 yu: () => (widget_group_metadata), 76 UU: () => (widget_group_name), 77 W0: () => (widget_group_settings) 78 }); 79 80 ;// external ["wp","blocks"] 81 const external_wp_blocks_namespaceObject = window["wp"]["blocks"]; 82 ;// external ["wp","primitives"] 83 const external_wp_primitives_namespaceObject = window["wp"]["primitives"]; 84 ;// external "ReactJSXRuntime" 85 const external_ReactJSXRuntime_namespaceObject = window["ReactJSXRuntime"]; 86 ;// ./node_modules/@wordpress/icons/build-module/library/widget.js 87 /** 88 * WordPress dependencies 89 */ 90 91 92 const widget = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 93 xmlns: "http://www.w3.org/2000/svg", 94 viewBox: "0 0 24 24", 95 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 96 d: "M6 3H8V5H16V3H18V5C19.1046 5 20 5.89543 20 7V19C20 20.1046 19.1046 21 18 21H6C4.89543 21 4 20.1046 4 19V7C4 5.89543 4.89543 5 6 5V3ZM18 6.5H6C5.72386 6.5 5.5 6.72386 5.5 7V8H18.5V7C18.5 6.72386 18.2761 6.5 18 6.5ZM18.5 9.5H5.5V19C5.5 19.2761 5.72386 19.5 6 19.5H18C18.2761 19.5 18.5 19.2761 18.5 19V9.5ZM11 11H13V13H11V11ZM7 11V13H9V11H7ZM15 13V11H17V13H15Z" 97 }) 98 }); 99 /* harmony default export */ const library_widget = (widget); 100 101 ;// ./node_modules/clsx/dist/clsx.mjs 102 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); 103 ;// external ["wp","blockEditor"] 104 const external_wp_blockEditor_namespaceObject = window["wp"]["blockEditor"]; 105 ;// external ["wp","components"] 106 const external_wp_components_namespaceObject = window["wp"]["components"]; 107 ;// ./node_modules/@wordpress/icons/build-module/library/brush.js 108 /** 109 * WordPress dependencies 110 */ 111 112 113 const brush = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 114 xmlns: "http://www.w3.org/2000/svg", 115 viewBox: "0 0 24 24", 116 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 117 d: "M4 20h8v-1.5H4V20zM18.9 3.5c-.6-.6-1.5-.6-2.1 0l-7.2 7.2c-.4-.1-.7 0-1.1.1-.5.2-1.5.7-1.9 2.2-.4 1.7-.8 2.2-1.1 2.7-.1.1-.2.3-.3.4l-.6 1.1H6c2 0 3.4-.4 4.7-1.4.8-.6 1.2-1.4 1.3-2.3 0-.3 0-.5-.1-.7L19 5.7c.5-.6.5-1.6-.1-2.2zM9.7 14.7c-.7.5-1.5.8-2.4 1 .2-.5.5-1.2.8-2.3.2-.6.4-1 .8-1.1.5-.1 1 .1 1.3.3.2.2.3.5.2.8 0 .3-.1.9-.7 1.3z" 118 }) 119 }); 120 /* harmony default export */ const library_brush = (brush); 121 122 ;// external ["wp","i18n"] 123 const external_wp_i18n_namespaceObject = window["wp"]["i18n"]; 124 ;// external ["wp","element"] 125 const external_wp_element_namespaceObject = window["wp"]["element"]; 126 ;// external ["wp","coreData"] 127 const external_wp_coreData_namespaceObject = window["wp"]["coreData"]; 128 ;// external ["wp","data"] 129 const external_wp_data_namespaceObject = window["wp"]["data"]; 130 ;// ./node_modules/@wordpress/widgets/build-module/blocks/legacy-widget/edit/widget-type-selector.js 131 /* wp:polyfill */ 132 /** 133 * WordPress dependencies 134 */ 135 136 137 138 139 140 141 function WidgetTypeSelector({ 142 selectedId, 143 onSelect 144 }) { 145 const widgetTypes = (0,external_wp_data_namespaceObject.useSelect)(select => { 146 var _select$getSettings$w; 147 const hiddenIds = (_select$getSettings$w = select(external_wp_blockEditor_namespaceObject.store).getSettings()?.widgetTypesToHideFromLegacyWidgetBlock) !== null && _select$getSettings$w !== void 0 ? _select$getSettings$w : []; 148 return select(external_wp_coreData_namespaceObject.store).getWidgetTypes({ 149 per_page: -1 150 })?.filter(widgetType => !hiddenIds.includes(widgetType.id)); 151 }, []); 152 if (!widgetTypes) { 153 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}); 154 } 155 if (widgetTypes.length === 0) { 156 return (0,external_wp_i18n_namespaceObject.__)('There are no widgets available.'); 157 } 158 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { 159 __next40pxDefaultSize: true, 160 __nextHasNoMarginBottom: true, 161 label: (0,external_wp_i18n_namespaceObject.__)('Legacy widget'), 162 value: selectedId !== null && selectedId !== void 0 ? selectedId : '', 163 options: [{ 164 value: '', 165 label: (0,external_wp_i18n_namespaceObject.__)('Select widget') 166 }, ...widgetTypes.map(widgetType => ({ 167 value: widgetType.id, 168 label: widgetType.name 169 }))], 170 onChange: value => { 171 if (value) { 172 const selected = widgetTypes.find(widgetType => widgetType.id === value); 173 onSelect({ 174 selectedId: selected.id, 175 isMulti: selected.is_multi 176 }); 177 } else { 178 onSelect({ 179 selectedId: null 180 }); 181 } 182 } 183 }); 184 } 185 186 ;// ./node_modules/@wordpress/widgets/build-module/blocks/legacy-widget/edit/inspector-card.js 187 188 function InspectorCard({ 189 name, 190 description 191 }) { 192 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 193 className: "wp-block-legacy-widget-inspector-card", 194 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h3", { 195 className: "wp-block-legacy-widget-inspector-card__name", 196 children: name 197 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { 198 children: description 199 })] 200 }); 201 } 202 203 ;// external ["wp","notices"] 204 const external_wp_notices_namespaceObject = window["wp"]["notices"]; 205 ;// external ["wp","compose"] 206 const external_wp_compose_namespaceObject = window["wp"]["compose"]; 207 ;// external ["wp","apiFetch"] 208 const external_wp_apiFetch_namespaceObject = window["wp"]["apiFetch"]; 209 var external_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_wp_apiFetch_namespaceObject); 210 ;// ./node_modules/@wordpress/widgets/build-module/blocks/legacy-widget/edit/control.js 211 /* wp:polyfill */ 212 /** 213 * WordPress dependencies 214 */ 215 216 217 218 219 /** 220 * An API for creating and loading a widget control (a <div class="widget"> 221 * element) that is compatible with most third party widget scripts. By not 222 * using React for this, we ensure that we have complete control over the DOM 223 * and do not accidentally remove any elements that a third party widget script 224 * has attached an event listener to. 225 * 226 * @property {Element} element The control's DOM element. 227 */ 228 class Control { 229 /** 230 * Creates and loads a new control. 231 * 232 * @access public 233 * @param {Object} params 234 * @param {string} params.id 235 * @param {string} params.idBase 236 * @param {Object} params.instance 237 * @param {Function} params.onChangeInstance 238 * @param {Function} params.onChangeHasPreview 239 * @param {Function} params.onError 240 */ 241 constructor({ 242 id, 243 idBase, 244 instance, 245 onChangeInstance, 246 onChangeHasPreview, 247 onError 248 }) { 249 this.id = id; 250 this.idBase = idBase; 251 this._instance = instance; 252 this._hasPreview = null; 253 this.onChangeInstance = onChangeInstance; 254 this.onChangeHasPreview = onChangeHasPreview; 255 this.onError = onError; 256 257 // We can't use the real widget number as this is calculated by the 258 // server and we may not ever *actually* save this widget. Instead, use 259 // a fake but unique number. 260 this.number = ++lastNumber; 261 this.handleFormChange = (0,external_wp_compose_namespaceObject.debounce)(this.handleFormChange.bind(this), 200); 262 this.handleFormSubmit = this.handleFormSubmit.bind(this); 263 this.initDOM(); 264 this.bindEvents(); 265 this.loadContent(); 266 } 267 268 /** 269 * Clean up the control so that it can be garbage collected. 270 * 271 * @access public 272 */ 273 destroy() { 274 this.unbindEvents(); 275 this.element.remove(); 276 // TODO: How do we make third party widget scripts remove their event 277 // listeners? 278 } 279 280 /** 281 * Creates the control's DOM structure. 282 * 283 * @access private 284 */ 285 initDOM() { 286 var _this$id, _this$idBase; 287 this.element = el('div', { 288 class: 'widget open' 289 }, [el('div', { 290 class: 'widget-inside' 291 }, [this.form = el('form', { 292 class: 'form', 293 method: 'post' 294 }, [ 295 // These hidden form inputs are what most widgets' scripts 296 // use to access data about the widget. 297 el('input', { 298 class: 'widget-id', 299 type: 'hidden', 300 name: 'widget-id', 301 value: (_this$id = this.id) !== null && _this$id !== void 0 ? _this$id : `$this.idBase}-$this.number}` 302 }), el('input', { 303 class: 'id_base', 304 type: 'hidden', 305 name: 'id_base', 306 value: (_this$idBase = this.idBase) !== null && _this$idBase !== void 0 ? _this$idBase : this.id 307 }), el('input', { 308 class: 'widget-width', 309 type: 'hidden', 310 name: 'widget-width', 311 value: '250' 312 }), el('input', { 313 class: 'widget-height', 314 type: 'hidden', 315 name: 'widget-height', 316 value: '200' 317 }), el('input', { 318 class: 'widget_number', 319 type: 'hidden', 320 name: 'widget_number', 321 value: this.idBase ? this.number.toString() : '' 322 }), this.content = el('div', { 323 class: 'widget-content' 324 }), 325 // Non-multi widgets can be saved via a Save button. 326 this.id && el('button', { 327 class: 'button is-primary', 328 type: 'submit' 329 }, (0,external_wp_i18n_namespaceObject.__)('Save'))])])]); 330 } 331 332 /** 333 * Adds the control's event listeners. 334 * 335 * @access private 336 */ 337 bindEvents() { 338 // Prefer jQuery 'change' event instead of the native 'change' event 339 // because many widgets use jQuery's event bus to trigger an update. 340 if (window.jQuery) { 341 const { 342 jQuery: $ 343 } = window; 344 $(this.form).on('change', null, this.handleFormChange); 345 $(this.form).on('input', null, this.handleFormChange); 346 $(this.form).on('submit', this.handleFormSubmit); 347 } else { 348 this.form.addEventListener('change', this.handleFormChange); 349 this.form.addEventListener('input', this.handleFormChange); 350 this.form.addEventListener('submit', this.handleFormSubmit); 351 } 352 } 353 354 /** 355 * Removes the control's event listeners. 356 * 357 * @access private 358 */ 359 unbindEvents() { 360 if (window.jQuery) { 361 const { 362 jQuery: $ 363 } = window; 364 $(this.form).off('change', null, this.handleFormChange); 365 $(this.form).off('input', null, this.handleFormChange); 366 $(this.form).off('submit', this.handleFormSubmit); 367 } else { 368 this.form.removeEventListener('change', this.handleFormChange); 369 this.form.removeEventListener('input', this.handleFormChange); 370 this.form.removeEventListener('submit', this.handleFormSubmit); 371 } 372 } 373 374 /** 375 * Fetches the widget's form HTML from the REST API and loads it into the 376 * control's form. 377 * 378 * @access private 379 */ 380 async loadContent() { 381 try { 382 if (this.id) { 383 const { 384 form 385 } = await saveWidget(this.id); 386 this.content.innerHTML = form; 387 } else if (this.idBase) { 388 const { 389 form, 390 preview 391 } = await encodeWidget({ 392 idBase: this.idBase, 393 instance: this.instance, 394 number: this.number 395 }); 396 this.content.innerHTML = form; 397 this.hasPreview = !isEmptyHTML(preview); 398 399 // If we don't have an instance, perform a save right away. This 400 // happens when creating a new Legacy Widget block. 401 if (!this.instance.hash) { 402 const { 403 instance 404 } = await encodeWidget({ 405 idBase: this.idBase, 406 instance: this.instance, 407 number: this.number, 408 formData: serializeForm(this.form) 409 }); 410 this.instance = instance; 411 } 412 } 413 414 // Trigger 'widget-added' when widget is ready. This event is what 415 // widgets' scripts use to initialize, attach events, etc. The event 416 // must be fired using jQuery's event bus as this is what widget 417 // scripts expect. If jQuery is not loaded, do nothing - some 418 // widgets will still work regardless. 419 if (window.jQuery) { 420 const { 421 jQuery: $ 422 } = window; 423 $(document).trigger('widget-added', [$(this.element)]); 424 } 425 } catch (error) { 426 this.onError(error); 427 } 428 } 429 430 /** 431 * Perform a save when a multi widget's form is changed. Non-multi widgets 432 * are saved manually. 433 * 434 * @access private 435 */ 436 handleFormChange() { 437 if (this.idBase) { 438 this.saveForm(); 439 } 440 } 441 442 /** 443 * Perform a save when the control's form is manually submitted. 444 * 445 * @access private 446 * @param {Event} event 447 */ 448 handleFormSubmit(event) { 449 event.preventDefault(); 450 this.saveForm(); 451 } 452 453 /** 454 * Serialize the control's form, send it to the REST API, and update the 455 * instance with the encoded instance that the REST API returns. 456 * 457 * @access private 458 */ 459 async saveForm() { 460 const formData = serializeForm(this.form); 461 try { 462 if (this.id) { 463 const { 464 form 465 } = await saveWidget(this.id, formData); 466 this.content.innerHTML = form; 467 if (window.jQuery) { 468 const { 469 jQuery: $ 470 } = window; 471 $(document).trigger('widget-updated', [$(this.element)]); 472 } 473 } else if (this.idBase) { 474 const { 475 instance, 476 preview 477 } = await encodeWidget({ 478 idBase: this.idBase, 479 instance: this.instance, 480 number: this.number, 481 formData 482 }); 483 this.instance = instance; 484 this.hasPreview = !isEmptyHTML(preview); 485 } 486 } catch (error) { 487 this.onError(error); 488 } 489 } 490 491 /** 492 * The widget's instance object. 493 * 494 * @access private 495 */ 496 get instance() { 497 return this._instance; 498 } 499 500 /** 501 * The widget's instance object. 502 * 503 * @access private 504 */ 505 set instance(instance) { 506 if (this._instance !== instance) { 507 this._instance = instance; 508 this.onChangeInstance(instance); 509 } 510 } 511 512 /** 513 * Whether or not the widget can be previewed. 514 * 515 * @access public 516 */ 517 get hasPreview() { 518 return this._hasPreview; 519 } 520 521 /** 522 * Whether or not the widget can be previewed. 523 * 524 * @access private 525 */ 526 set hasPreview(hasPreview) { 527 if (this._hasPreview !== hasPreview) { 528 this._hasPreview = hasPreview; 529 this.onChangeHasPreview(hasPreview); 530 } 531 } 532 } 533 let lastNumber = 0; 534 function el(tagName, attributes = {}, content = null) { 535 const element = document.createElement(tagName); 536 for (const [attribute, value] of Object.entries(attributes)) { 537 element.setAttribute(attribute, value); 538 } 539 if (Array.isArray(content)) { 540 for (const child of content) { 541 if (child) { 542 element.appendChild(child); 543 } 544 } 545 } else if (typeof content === 'string') { 546 element.innerText = content; 547 } 548 return element; 549 } 550 async function saveWidget(id, formData = null) { 551 let widget; 552 if (formData) { 553 widget = await external_wp_apiFetch_default()({ 554 path: `/wp/v2/widgets/$id}?context=edit`, 555 method: 'PUT', 556 data: { 557 form_data: formData 558 } 559 }); 560 } else { 561 widget = await external_wp_apiFetch_default()({ 562 path: `/wp/v2/widgets/$id}?context=edit`, 563 method: 'GET' 564 }); 565 } 566 return { 567 form: widget.rendered_form 568 }; 569 } 570 async function encodeWidget({ 571 idBase, 572 instance, 573 number, 574 formData = null 575 }) { 576 const response = await external_wp_apiFetch_default()({ 577 path: `/wp/v2/widget-types/$idBase}/encode`, 578 method: 'POST', 579 data: { 580 instance, 581 number, 582 form_data: formData 583 } 584 }); 585 return { 586 instance: response.instance, 587 form: response.form, 588 preview: response.preview 589 }; 590 } 591 function isEmptyHTML(html) { 592 const element = document.createElement('div'); 593 element.innerHTML = html; 594 return isEmptyNode(element); 595 } 596 function isEmptyNode(node) { 597 switch (node.nodeType) { 598 case node.TEXT_NODE: 599 // Text nodes are empty if it's entirely whitespace. 600 return node.nodeValue.trim() === ''; 601 case node.ELEMENT_NODE: 602 // Elements that are "embedded content" are not empty. 603 // https://dev.w3.org/html5/spec-LC/content-models.html#embedded-content-0 604 if (['AUDIO', 'CANVAS', 'EMBED', 'IFRAME', 'IMG', 'MATH', 'OBJECT', 'SVG', 'VIDEO'].includes(node.tagName)) { 605 return false; 606 } 607 // Elements with no children are empty. 608 if (!node.hasChildNodes()) { 609 return true; 610 } 611 // Elements with children are empty if all their children are empty. 612 return Array.from(node.childNodes).every(isEmptyNode); 613 default: 614 return true; 615 } 616 } 617 function serializeForm(form) { 618 return new window.URLSearchParams(Array.from(new window.FormData(form))).toString(); 619 } 620 621 ;// ./node_modules/@wordpress/widgets/build-module/blocks/legacy-widget/edit/form.js 622 /** 623 * External dependencies 624 */ 625 626 /** 627 * WordPress dependencies 628 */ 629 630 631 632 633 634 635 /** 636 * Internal dependencies 637 */ 638 639 640 function Form({ 641 title, 642 isVisible, 643 id, 644 idBase, 645 instance, 646 isWide, 647 onChangeInstance, 648 onChangeHasPreview 649 }) { 650 const ref = (0,external_wp_element_namespaceObject.useRef)(); 651 const isMediumLargeViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('small'); 652 653 // We only want to remount the control when the instance changes 654 // *externally*. For example, if the user performs an undo. To do this, we 655 // keep track of changes made to instance by the control itself and then 656 // ignore those. 657 const outgoingInstances = (0,external_wp_element_namespaceObject.useRef)(new Set()); 658 const incomingInstances = (0,external_wp_element_namespaceObject.useRef)(new Set()); 659 const { 660 createNotice 661 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); 662 (0,external_wp_element_namespaceObject.useEffect)(() => { 663 if (incomingInstances.current.has(instance)) { 664 incomingInstances.current.delete(instance); 665 return; 666 } 667 const control = new Control({ 668 id, 669 idBase, 670 instance, 671 onChangeInstance(nextInstance) { 672 outgoingInstances.current.add(instance); 673 incomingInstances.current.add(nextInstance); 674 onChangeInstance(nextInstance); 675 }, 676 onChangeHasPreview, 677 onError(error) { 678 window.console.error(error); 679 createNotice('error', (0,external_wp_i18n_namespaceObject.sprintf)(/* translators: %s: the name of the affected block. */ 680 (0,external_wp_i18n_namespaceObject.__)('The "%s" block was affected by errors and may not function properly. Check the developer tools for more details.'), idBase || id)); 681 } 682 }); 683 ref.current.appendChild(control.element); 684 return () => { 685 if (outgoingInstances.current.has(instance)) { 686 outgoingInstances.current.delete(instance); 687 return; 688 } 689 control.destroy(); 690 }; 691 }, [id, idBase, instance, onChangeInstance, onChangeHasPreview, isMediumLargeViewport]); 692 if (isWide && isMediumLargeViewport) { 693 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 694 className: dist_clsx({ 695 'wp-block-legacy-widget__container': isVisible 696 }), 697 children: [isVisible && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h3", { 698 className: "wp-block-legacy-widget__edit-form-title", 699 children: title 700 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Popover, { 701 focusOnMount: false, 702 placement: "right", 703 offset: 32, 704 resize: false, 705 flip: false, 706 shift: true, 707 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 708 ref: ref, 709 className: "wp-block-legacy-widget__edit-form", 710 hidden: !isVisible 711 }) 712 })] 713 }); 714 } 715 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 716 ref: ref, 717 className: "wp-block-legacy-widget__edit-form", 718 hidden: !isVisible, 719 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h3", { 720 className: "wp-block-legacy-widget__edit-form-title", 721 children: title 722 }) 723 }); 724 } 725 726 ;// ./node_modules/@wordpress/widgets/build-module/blocks/legacy-widget/edit/preview.js 727 /** 728 * External dependencies 729 */ 730 731 732 /** 733 * WordPress dependencies 734 */ 735 736 737 738 739 740 741 function Preview({ 742 idBase, 743 instance, 744 isVisible 745 }) { 746 const [isLoaded, setIsLoaded] = (0,external_wp_element_namespaceObject.useState)(false); 747 const [srcDoc, setSrcDoc] = (0,external_wp_element_namespaceObject.useState)(''); 748 (0,external_wp_element_namespaceObject.useEffect)(() => { 749 const abortController = typeof window.AbortController === 'undefined' ? undefined : new window.AbortController(); 750 async function fetchPreviewHTML() { 751 const restRoute = `/wp/v2/widget-types/$idBase}/render`; 752 return await external_wp_apiFetch_default()({ 753 path: restRoute, 754 method: 'POST', 755 signal: abortController?.signal, 756 data: instance ? { 757 instance 758 } : {} 759 }); 760 } 761 fetchPreviewHTML().then(response => { 762 setSrcDoc(response.preview); 763 }).catch(error => { 764 if ('AbortError' === error.name) { 765 // We don't want to log aborted requests. 766 return; 767 } 768 throw error; 769 }); 770 return () => abortController?.abort(); 771 }, [idBase, instance]); 772 773 // Resize the iframe on either the load event, or when the iframe becomes visible. 774 const ref = (0,external_wp_compose_namespaceObject.useRefEffect)(iframe => { 775 // Only set height if the iframe is loaded, 776 // or it will grow to an unexpected large height in Safari if it's hidden initially. 777 if (!isLoaded) { 778 return; 779 } 780 // If the preview frame has another origin then this won't work. 781 // One possible solution is to add custom script to call `postMessage` in the preview frame. 782 // Or, better yet, we migrate away from iframe. 783 function setHeight() { 784 var _iframe$contentDocume, _iframe$contentDocume2; 785 // Pick the maximum of these two values to account for margin collapsing. 786 const height = Math.max((_iframe$contentDocume = iframe.contentDocument.documentElement?.offsetHeight) !== null && _iframe$contentDocume !== void 0 ? _iframe$contentDocume : 0, (_iframe$contentDocume2 = iframe.contentDocument.body?.offsetHeight) !== null && _iframe$contentDocume2 !== void 0 ? _iframe$contentDocume2 : 0); 787 788 // Fallback to a height of 100px if the height cannot be determined. 789 // This ensures the block is still selectable. 100px should hopefully 790 // be not so big that it's annoying, and not so small that nothing 791 // can be seen. 792 iframe.style.height = `$height !== 0 ? height : 100}px`; 793 } 794 const { 795 IntersectionObserver 796 } = iframe.ownerDocument.defaultView; 797 798 // Observe for intersections that might cause a change in the height of 799 // the iframe, e.g. a Widget Area becoming expanded. 800 const intersectionObserver = new IntersectionObserver(([entry]) => { 801 if (entry.isIntersecting) { 802 setHeight(); 803 } 804 }, { 805 threshold: 1 806 }); 807 intersectionObserver.observe(iframe); 808 iframe.addEventListener('load', setHeight); 809 return () => { 810 intersectionObserver.disconnect(); 811 iframe.removeEventListener('load', setHeight); 812 }; 813 }, [isLoaded]); 814 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 815 children: [isVisible && !isLoaded && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 816 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) 817 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 818 className: dist_clsx('wp-block-legacy-widget__edit-preview', { 819 'is-offscreen': !isVisible || !isLoaded 820 }), 821 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, { 822 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("iframe", { 823 ref: ref, 824 className: "wp-block-legacy-widget__edit-preview-iframe", 825 tabIndex: "-1", 826 title: (0,external_wp_i18n_namespaceObject.__)('Legacy Widget Preview'), 827 srcDoc: srcDoc, 828 onLoad: event => { 829 // To hide the scrollbars of the preview frame for some edge cases, 830 // such as negative margins in the Gallery Legacy Widget. 831 // It can't be scrolled anyway. 832 // TODO: Ideally, this should be fixed in core. 833 event.target.contentDocument.body.style.overflow = 'hidden'; 834 setIsLoaded(true); 835 }, 836 height: 100 837 }) 838 }) 839 })] 840 }); 841 } 842 843 ;// ./node_modules/@wordpress/widgets/build-module/blocks/legacy-widget/edit/no-preview.js 844 /** 845 * WordPress dependencies 846 */ 847 848 849 function NoPreview({ 850 name 851 }) { 852 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { 853 className: "wp-block-legacy-widget__edit-no-preview", 854 children: [name && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h3", { 855 children: name 856 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { 857 children: (0,external_wp_i18n_namespaceObject.__)('No preview available.') 858 })] 859 }); 860 } 861 862 ;// ./node_modules/@wordpress/widgets/build-module/blocks/legacy-widget/edit/convert-to-blocks-button.js 863 /** 864 * WordPress dependencies 865 */ 866 867 868 869 870 871 872 function ConvertToBlocksButton({ 873 clientId, 874 rawInstance 875 }) { 876 const { 877 replaceBlocks 878 } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store); 879 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarButton, { 880 onClick: () => { 881 if (rawInstance.title) { 882 replaceBlocks(clientId, [(0,external_wp_blocks_namespaceObject.createBlock)('core/heading', { 883 content: rawInstance.title 884 }), ...(0,external_wp_blocks_namespaceObject.rawHandler)({ 885 HTML: rawInstance.text 886 })]); 887 } else { 888 replaceBlocks(clientId, (0,external_wp_blocks_namespaceObject.rawHandler)({ 889 HTML: rawInstance.text 890 })); 891 } 892 }, 893 children: (0,external_wp_i18n_namespaceObject.__)('Convert to blocks') 894 }); 895 } 896 897 ;// ./node_modules/@wordpress/widgets/build-module/blocks/legacy-widget/edit/index.js 898 /** 899 * External dependencies 900 */ 901 902 903 /** 904 * WordPress dependencies 905 */ 906 907 908 909 910 911 912 913 /** 914 * Internal dependencies 915 */ 916 917 918 919 920 921 922 923 function Edit(props) { 924 const { 925 id, 926 idBase 927 } = props.attributes; 928 const { 929 isWide = false 930 } = props; 931 const blockProps = (0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 932 className: dist_clsx({ 933 'is-wide-widget': isWide 934 }) 935 }); 936 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 937 ...blockProps, 938 children: !id && !idBase ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Empty, { 939 ...props 940 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NotEmpty, { 941 ...props 942 }) 943 }); 944 } 945 function Empty({ 946 attributes: { 947 id, 948 idBase 949 }, 950 setAttributes 951 }) { 952 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 953 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 954 icon: library_brush 955 }), 956 label: (0,external_wp_i18n_namespaceObject.__)('Legacy Widget'), 957 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, { 958 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexBlock, { 959 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WidgetTypeSelector, { 960 selectedId: id !== null && id !== void 0 ? id : idBase, 961 onSelect: ({ 962 selectedId, 963 isMulti 964 }) => { 965 if (!selectedId) { 966 setAttributes({ 967 id: null, 968 idBase: null, 969 instance: null 970 }); 971 } else if (isMulti) { 972 setAttributes({ 973 id: null, 974 idBase: selectedId, 975 instance: {} 976 }); 977 } else { 978 setAttributes({ 979 id: selectedId, 980 idBase: null, 981 instance: null 982 }); 983 } 984 } 985 }) 986 }) 987 }) 988 }); 989 } 990 function NotEmpty({ 991 attributes: { 992 id, 993 idBase, 994 instance 995 }, 996 setAttributes, 997 clientId, 998 isSelected, 999 isWide = false 1000 }) { 1001 const [hasPreview, setHasPreview] = (0,external_wp_element_namespaceObject.useState)(null); 1002 const widgetTypeId = id !== null && id !== void 0 ? id : idBase; 1003 const { 1004 record: widgetType, 1005 hasResolved: hasResolvedWidgetType 1006 } = (0,external_wp_coreData_namespaceObject.useEntityRecord)('root', 'widgetType', widgetTypeId); 1007 const setInstance = (0,external_wp_element_namespaceObject.useCallback)(nextInstance => { 1008 setAttributes({ 1009 instance: nextInstance 1010 }); 1011 }, []); 1012 if (!widgetType && hasResolvedWidgetType) { 1013 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 1014 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 1015 icon: library_brush 1016 }), 1017 label: (0,external_wp_i18n_namespaceObject.__)('Legacy Widget'), 1018 children: (0,external_wp_i18n_namespaceObject.__)('Widget is missing.') 1019 }); 1020 } 1021 if (!hasResolvedWidgetType) { 1022 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 1023 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) 1024 }); 1025 } 1026 const mode = idBase && !isSelected ? 'preview' : 'edit'; 1027 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 1028 children: [idBase === 'text' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockControls, { 1029 group: "other", 1030 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ConvertToBlocksButton, { 1031 clientId: clientId, 1032 rawInstance: instance.raw 1033 }) 1034 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InspectorControls, { 1035 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(InspectorCard, { 1036 name: widgetType.name, 1037 description: widgetType.description 1038 }) 1039 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Form, { 1040 title: widgetType.name, 1041 isVisible: mode === 'edit', 1042 id: id, 1043 idBase: idBase, 1044 instance: instance, 1045 isWide: isWide, 1046 onChangeInstance: setInstance, 1047 onChangeHasPreview: setHasPreview 1048 }), idBase && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 1049 children: [hasPreview === null && mode === 'preview' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 1050 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) 1051 }), hasPreview === true && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Preview, { 1052 idBase: idBase, 1053 instance: instance, 1054 isVisible: mode === 'preview' 1055 }), hasPreview === false && mode === 'preview' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NoPreview, { 1056 name: widgetType.name 1057 })] 1058 })] 1059 }); 1060 } 1061 1062 ;// ./node_modules/@wordpress/widgets/build-module/blocks/legacy-widget/transforms.js 1063 /* wp:polyfill */ 1064 /** 1065 * WordPress dependencies 1066 */ 1067 1068 const legacyWidgetTransforms = [{ 1069 block: 'core/calendar', 1070 widget: 'calendar' 1071 }, { 1072 block: 'core/search', 1073 widget: 'search' 1074 }, { 1075 block: 'core/html', 1076 widget: 'custom_html', 1077 transform: ({ 1078 content 1079 }) => ({ 1080 content 1081 }) 1082 }, { 1083 block: 'core/archives', 1084 widget: 'archives', 1085 transform: ({ 1086 count, 1087 dropdown 1088 }) => { 1089 return { 1090 displayAsDropdown: !!dropdown, 1091 showPostCounts: !!count 1092 }; 1093 } 1094 }, { 1095 block: 'core/latest-posts', 1096 widget: 'recent-posts', 1097 transform: ({ 1098 show_date: displayPostDate, 1099 number 1100 }) => { 1101 return { 1102 displayPostDate: !!displayPostDate, 1103 postsToShow: number 1104 }; 1105 } 1106 }, { 1107 block: 'core/latest-comments', 1108 widget: 'recent-comments', 1109 transform: ({ 1110 number 1111 }) => { 1112 return { 1113 commentsToShow: number 1114 }; 1115 } 1116 }, { 1117 block: 'core/tag-cloud', 1118 widget: 'tag_cloud', 1119 transform: ({ 1120 taxonomy, 1121 count 1122 }) => { 1123 return { 1124 showTagCounts: !!count, 1125 taxonomy 1126 }; 1127 } 1128 }, { 1129 block: 'core/categories', 1130 widget: 'categories', 1131 transform: ({ 1132 count, 1133 dropdown, 1134 hierarchical 1135 }) => { 1136 return { 1137 displayAsDropdown: !!dropdown, 1138 showPostCounts: !!count, 1139 showHierarchy: !!hierarchical 1140 }; 1141 } 1142 }, { 1143 block: 'core/audio', 1144 widget: 'media_audio', 1145 transform: ({ 1146 url, 1147 preload, 1148 loop, 1149 attachment_id: id 1150 }) => { 1151 return { 1152 src: url, 1153 id, 1154 preload, 1155 loop 1156 }; 1157 } 1158 }, { 1159 block: 'core/video', 1160 widget: 'media_video', 1161 transform: ({ 1162 url, 1163 preload, 1164 loop, 1165 attachment_id: id 1166 }) => { 1167 return { 1168 src: url, 1169 id, 1170 preload, 1171 loop 1172 }; 1173 } 1174 }, { 1175 block: 'core/image', 1176 widget: 'media_image', 1177 transform: ({ 1178 alt, 1179 attachment_id: id, 1180 caption, 1181 height, 1182 link_classes: linkClass, 1183 link_rel: rel, 1184 link_target_blank: targetBlack, 1185 link_type: linkDestination, 1186 link_url: link, 1187 size: sizeSlug, 1188 url, 1189 width 1190 }) => { 1191 return { 1192 alt, 1193 caption, 1194 height, 1195 id, 1196 link, 1197 linkClass, 1198 linkDestination, 1199 linkTarget: targetBlack ? '_blank' : undefined, 1200 rel, 1201 sizeSlug, 1202 url, 1203 width 1204 }; 1205 } 1206 }, { 1207 block: 'core/gallery', 1208 widget: 'media_gallery', 1209 transform: ({ 1210 ids, 1211 link_type: linkTo, 1212 size, 1213 number 1214 }) => { 1215 return { 1216 ids, 1217 columns: number, 1218 linkTo, 1219 sizeSlug: size, 1220 images: ids.map(id => ({ 1221 id 1222 })) 1223 }; 1224 } 1225 }, { 1226 block: 'core/rss', 1227 widget: 'rss', 1228 transform: ({ 1229 url, 1230 show_author: displayAuthor, 1231 show_date: displayDate, 1232 show_summary: displayExcerpt, 1233 items 1234 }) => { 1235 return { 1236 feedURL: url, 1237 displayAuthor: !!displayAuthor, 1238 displayDate: !!displayDate, 1239 displayExcerpt: !!displayExcerpt, 1240 itemsToShow: items 1241 }; 1242 } 1243 }].map(({ 1244 block, 1245 widget, 1246 transform 1247 }) => { 1248 return { 1249 type: 'block', 1250 blocks: [block], 1251 isMatch: ({ 1252 idBase, 1253 instance 1254 }) => { 1255 return idBase === widget && !!instance?.raw; 1256 }, 1257 transform: ({ 1258 instance 1259 }) => { 1260 const transformedBlock = (0,external_wp_blocks_namespaceObject.createBlock)(block, transform ? transform(instance.raw) : undefined); 1261 if (!instance.raw?.title) { 1262 return transformedBlock; 1263 } 1264 return [(0,external_wp_blocks_namespaceObject.createBlock)('core/heading', { 1265 content: instance.raw.title 1266 }), transformedBlock]; 1267 } 1268 }; 1269 }); 1270 const transforms = { 1271 to: legacyWidgetTransforms 1272 }; 1273 /* harmony default export */ const legacy_widget_transforms = (transforms); 1274 1275 ;// ./node_modules/@wordpress/widgets/build-module/blocks/legacy-widget/index.js 1276 /** 1277 * WordPress dependencies 1278 */ 1279 1280 1281 /** 1282 * Internal dependencies 1283 */ 1284 const metadata = { 1285 $schema: "https://schemas.wp.org/trunk/block.json", 1286 apiVersion: 3, 1287 name: "core/legacy-widget", 1288 title: "Legacy Widget", 1289 category: "widgets", 1290 description: "Display a legacy widget.", 1291 textdomain: "default", 1292 attributes: { 1293 id: { 1294 type: "string", 1295 "default": null 1296 }, 1297 idBase: { 1298 type: "string", 1299 "default": null 1300 }, 1301 instance: { 1302 type: "object", 1303 "default": null 1304 } 1305 }, 1306 supports: { 1307 html: false, 1308 customClassName: false, 1309 reusable: false 1310 }, 1311 editorStyle: "wp-block-legacy-widget-editor" 1312 }; 1313 1314 1315 const { 1316 name: legacy_widget_name 1317 } = metadata; 1318 1319 const settings = { 1320 icon: library_widget, 1321 edit: Edit, 1322 transforms: legacy_widget_transforms 1323 }; 1324 1325 ;// ./node_modules/@wordpress/icons/build-module/library/group.js 1326 /** 1327 * WordPress dependencies 1328 */ 1329 1330 1331 const group = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 1332 viewBox: "0 0 24 24", 1333 xmlns: "http://www.w3.org/2000/svg", 1334 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 1335 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" 1336 }) 1337 }); 1338 /* harmony default export */ const library_group = (group); 1339 1340 ;// ./node_modules/@wordpress/widgets/build-module/blocks/widget-group/edit.js 1341 /** 1342 * WordPress dependencies 1343 */ 1344 1345 1346 1347 1348 1349 1350 function edit_Edit(props) { 1351 const { 1352 clientId 1353 } = props; 1354 const { 1355 innerBlocks 1356 } = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getBlock(clientId), [clientId]); 1357 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 1358 ...(0,external_wp_blockEditor_namespaceObject.useBlockProps)({ 1359 className: 'widget' 1360 }), 1361 children: innerBlocks.length === 0 ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PlaceholderContent, { 1362 ...props 1363 }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreviewContent, { 1364 ...props 1365 }) 1366 }); 1367 } 1368 function PlaceholderContent({ 1369 clientId 1370 }) { 1371 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 1372 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Placeholder, { 1373 className: "wp-block-widget-group__placeholder", 1374 icon: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockIcon, { 1375 icon: library_group 1376 }), 1377 label: (0,external_wp_i18n_namespaceObject.__)('Widget Group'), 1378 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.ButtonBlockAppender, { 1379 rootClientId: clientId 1380 }) 1381 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks, { 1382 renderAppender: false 1383 })] 1384 }); 1385 } 1386 function PreviewContent({ 1387 attributes, 1388 setAttributes 1389 }) { 1390 var _attributes$title; 1391 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 1392 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText, { 1393 tagName: "h2", 1394 identifier: "title", 1395 className: "widget-title", 1396 allowedFormats: [], 1397 placeholder: (0,external_wp_i18n_namespaceObject.__)('Title'), 1398 value: (_attributes$title = attributes.title) !== null && _attributes$title !== void 0 ? _attributes$title : '', 1399 onChange: title => setAttributes({ 1400 title 1401 }) 1402 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks, {})] 1403 }); 1404 } 1405 1406 ;// ./node_modules/@wordpress/widgets/build-module/blocks/widget-group/save.js 1407 /** 1408 * WordPress dependencies 1409 */ 1410 1411 1412 function save({ 1413 attributes 1414 }) { 1415 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 1416 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 1417 tagName: "h2", 1418 className: "widget-title", 1419 value: attributes.title 1420 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { 1421 className: "wp-widget-group__inner-blocks", 1422 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {}) 1423 })] 1424 }); 1425 } 1426 1427 ;// ./node_modules/@wordpress/widgets/build-module/blocks/widget-group/deprecated.js 1428 /** 1429 * WordPress dependencies 1430 */ 1431 1432 1433 const v1 = { 1434 attributes: { 1435 title: { 1436 type: 'string' 1437 } 1438 }, 1439 supports: { 1440 html: false, 1441 inserter: true, 1442 customClassName: true, 1443 reusable: false 1444 }, 1445 save({ 1446 attributes 1447 }) { 1448 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { 1449 children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.RichText.Content, { 1450 tagName: "h2", 1451 className: "widget-title", 1452 value: attributes.title 1453 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.InnerBlocks.Content, {})] 1454 }); 1455 } 1456 }; 1457 /* harmony default export */ const deprecated = ([v1]); 1458 1459 ;// ./node_modules/@wordpress/widgets/build-module/blocks/widget-group/index.js 1460 /* wp:polyfill */ 1461 /** 1462 * WordPress dependencies 1463 */ 1464 1465 1466 1467 1468 /** 1469 * Internal dependencies 1470 */ 1471 const widget_group_metadata = { 1472 $schema: "https://schemas.wp.org/trunk/block.json", 1473 apiVersion: 3, 1474 name: "core/widget-group", 1475 title: "Widget Group", 1476 category: "widgets", 1477 attributes: { 1478 title: { 1479 type: "string" 1480 } 1481 }, 1482 supports: { 1483 html: false, 1484 inserter: true, 1485 customClassName: true, 1486 reusable: false 1487 }, 1488 editorStyle: "wp-block-widget-group-editor", 1489 style: "wp-block-widget-group" 1490 }; 1491 1492 1493 1494 const { 1495 name: widget_group_name 1496 } = widget_group_metadata; 1497 1498 const widget_group_settings = { 1499 title: (0,external_wp_i18n_namespaceObject.__)('Widget Group'), 1500 description: (0,external_wp_i18n_namespaceObject.__)('Create a classic widget layout with a title that’s styled by your theme for your widget areas.'), 1501 icon: library_group, 1502 __experimentalLabel: ({ 1503 name: label 1504 }) => label, 1505 edit: edit_Edit, 1506 save: save, 1507 transforms: { 1508 from: [{ 1509 type: 'block', 1510 isMultiBlock: true, 1511 blocks: ['*'], 1512 isMatch(attributes, blocks) { 1513 // Avoid transforming existing `widget-group` blocks. 1514 return !blocks.some(block => block.name === 'core/widget-group'); 1515 }, 1516 __experimentalConvert(blocks) { 1517 // Put the selected blocks inside the new Widget Group's innerBlocks. 1518 let innerBlocks = [...blocks.map(block => { 1519 return (0,external_wp_blocks_namespaceObject.createBlock)(block.name, block.attributes, block.innerBlocks); 1520 })]; 1521 1522 // If the first block is a heading then assume this is intended 1523 // to be the Widget's "title". 1524 const firstHeadingBlock = innerBlocks[0].name === 'core/heading' ? innerBlocks[0] : null; 1525 1526 // Remove the first heading block as we're copying 1527 // it's content into the Widget Group's title attribute. 1528 innerBlocks = innerBlocks.filter(block => block !== firstHeadingBlock); 1529 return (0,external_wp_blocks_namespaceObject.createBlock)('core/widget-group', { 1530 ...(firstHeadingBlock && { 1531 title: firstHeadingBlock.attributes.content 1532 }) 1533 }, innerBlocks); 1534 } 1535 }] 1536 }, 1537 deprecated: deprecated 1538 }; 1539 1540 ;// ./node_modules/@wordpress/icons/build-module/library/move-to.js 1541 /** 1542 * WordPress dependencies 1543 */ 1544 1545 1546 const moveTo = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { 1547 xmlns: "http://www.w3.org/2000/svg", 1548 viewBox: "0 0 24 24", 1549 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { 1550 d: "M19.75 9c0-1.257-.565-2.197-1.39-2.858-.797-.64-1.827-1.017-2.815-1.247-1.802-.42-3.703-.403-4.383-.396L11 4.5V6l.177-.001c.696-.006 2.416-.02 4.028.356.887.207 1.67.518 2.216.957.52.416.829.945.829 1.688 0 .592-.167.966-.407 1.23-.255.281-.656.508-1.236.674-1.19.34-2.82.346-4.607.346h-.077c-1.692 0-3.527 0-4.942.404-.732.209-1.424.545-1.935 1.108-.526.579-.796 1.33-.796 2.238 0 1.257.565 2.197 1.39 2.858.797.64 1.827 1.017 2.815 1.247 1.802.42 3.703.403 4.383.396L13 19.5h.714V22L18 18.5 13.714 15v3H13l-.177.001c-.696.006-2.416.02-4.028-.356-.887-.207-1.67-.518-2.216-.957-.52-.416-.829-.945-.829-1.688 0-.592.167-.966.407-1.23.255-.281.656-.508 1.237-.674 1.189-.34 2.819-.346 4.606-.346h.077c1.692 0 3.527 0 4.941-.404.732-.209 1.425-.545 1.936-1.108.526-.579.796-1.33.796-2.238z" 1551 }) 1552 }); 1553 /* harmony default export */ const move_to = (moveTo); 1554 1555 ;// ./node_modules/@wordpress/widgets/build-module/components/move-to-widget-area/index.js 1556 /* wp:polyfill */ 1557 /** 1558 * WordPress dependencies 1559 */ 1560 1561 1562 1563 1564 function MoveToWidgetArea({ 1565 currentWidgetAreaId, 1566 widgetAreas, 1567 onSelect 1568 }) { 1569 return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarGroup, { 1570 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ToolbarItem, { 1571 children: toggleProps => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, { 1572 icon: move_to, 1573 label: (0,external_wp_i18n_namespaceObject.__)('Move to widget area'), 1574 toggleProps: toggleProps, 1575 children: ({ 1576 onClose 1577 }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, { 1578 label: (0,external_wp_i18n_namespaceObject.__)('Move to'), 1579 children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItemsChoice, { 1580 choices: widgetAreas.map(widgetArea => ({ 1581 value: widgetArea.id, 1582 label: widgetArea.name, 1583 info: widgetArea.description 1584 })), 1585 value: currentWidgetAreaId, 1586 onSelect: value => { 1587 onSelect(value); 1588 onClose(); 1589 } 1590 }) 1591 }) 1592 }) 1593 }) 1594 }); 1595 } 1596 1597 ;// ./node_modules/@wordpress/widgets/build-module/components/index.js 1598 1599 1600 ;// ./node_modules/@wordpress/widgets/build-module/utils.js 1601 // @ts-check 1602 1603 /** 1604 * Get the internal widget id from block. 1605 * 1606 * @typedef {Object} Attributes 1607 * @property {string} __internalWidgetId The internal widget id. 1608 * @typedef {Object} Block 1609 * @property {Attributes} attributes The attributes of the block. 1610 * 1611 * @param {Block} block The block. 1612 * @return {string} The internal widget id. 1613 */ 1614 function getWidgetIdFromBlock(block) { 1615 return block.attributes.__internalWidgetId; 1616 } 1617 1618 /** 1619 * Add internal widget id to block's attributes. 1620 * 1621 * @param {Block} block The block. 1622 * @param {string} widgetId The widget id. 1623 * @return {Block} The updated block. 1624 */ 1625 function addWidgetIdToBlock(block, widgetId) { 1626 return { 1627 ...block, 1628 attributes: { 1629 ...(block.attributes || {}), 1630 __internalWidgetId: widgetId 1631 } 1632 }; 1633 } 1634 1635 ;// ./node_modules/@wordpress/widgets/build-module/register-legacy-widget-variations.js 1636 /* wp:polyfill */ 1637 /** 1638 * WordPress dependencies 1639 */ 1640 1641 1642 1643 function registerLegacyWidgetVariations(settings) { 1644 const unsubscribe = (0,external_wp_data_namespaceObject.subscribe)(() => { 1645 var _settings$widgetTypes; 1646 const hiddenIds = (_settings$widgetTypes = settings?.widgetTypesToHideFromLegacyWidgetBlock) !== null && _settings$widgetTypes !== void 0 ? _settings$widgetTypes : []; 1647 const widgetTypes = (0,external_wp_data_namespaceObject.select)(external_wp_coreData_namespaceObject.store).getWidgetTypes({ 1648 per_page: -1 1649 })?.filter(widgetType => !hiddenIds.includes(widgetType.id)); 1650 if (widgetTypes) { 1651 unsubscribe(); 1652 (0,external_wp_data_namespaceObject.dispatch)(external_wp_blocks_namespaceObject.store).addBlockVariations('core/legacy-widget', widgetTypes.map(widgetType => ({ 1653 name: widgetType.id, 1654 title: widgetType.name, 1655 description: widgetType.description, 1656 attributes: widgetType.is_multi ? { 1657 idBase: widgetType.id, 1658 instance: {} 1659 } : { 1660 id: widgetType.id 1661 } 1662 }))); 1663 } 1664 }); 1665 } 1666 1667 ;// ./node_modules/@wordpress/widgets/build-module/index.js 1668 /** 1669 * WordPress dependencies 1670 */ 1671 1672 1673 /** 1674 * Internal dependencies 1675 */ 1676 1677 1678 1679 1680 1681 /** 1682 * Registers the Legacy Widget block. 1683 * 1684 * Note that for the block to be useful, any scripts required by a widget must 1685 * be loaded into the page. 1686 * 1687 * @param {Object} supports Block support settings. 1688 * @see https://developer.wordpress.org/block-editor/how-to-guides/widgets/legacy-widget-block/ 1689 */ 1690 function registerLegacyWidgetBlock(supports = {}) { 1691 const { 1692 /* metadata */ "yu": metadata, 1693 /* settings */ "W0": settings, 1694 /* name */ "UU": name 1695 } = legacy_widget_namespaceObject; 1696 (0,external_wp_blocks_namespaceObject.registerBlockType)({ 1697 name, 1698 ...metadata 1699 }, { 1700 ...settings, 1701 supports: { 1702 ...settings.supports, 1703 ...supports 1704 } 1705 }); 1706 } 1707 1708 /** 1709 * Registers the Widget Group block. 1710 * 1711 * @param {Object} supports Block support settings. 1712 */ 1713 function registerWidgetGroupBlock(supports = {}) { 1714 const { 1715 /* metadata */ "yu": metadata, 1716 /* settings */ "W0": settings, 1717 /* name */ "UU": name 1718 } = widget_group_namespaceObject; 1719 (0,external_wp_blocks_namespaceObject.registerBlockType)({ 1720 name, 1721 ...metadata 1722 }, { 1723 ...settings, 1724 supports: { 1725 ...settings.supports, 1726 ...supports 1727 } 1728 }); 1729 } 1730 1731 1732 (window.wp = window.wp || {}).widgets = __webpack_exports__; 1733 /******/ })() 1734 ;
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated : Sat Feb 22 08:20:01 2025 | Cross-referenced by PHPXref |