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