| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 var wp; 2 (wp ||= {}).widgets = (() => { 3 var __create = Object.create; 4 var __defProp = Object.defineProperty; 5 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 6 var __getOwnPropNames = Object.getOwnPropertyNames; 7 var __getProtoOf = Object.getPrototypeOf; 8 var __hasOwnProp = Object.prototype.hasOwnProperty; 9 var __commonJS = (cb, mod) => function __require() { 10 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 11 }; 12 var __export = (target, all) => { 13 for (var name3 in all) 14 __defProp(target, name3, { get: all[name3], enumerable: true }); 15 }; 16 var __copyProps = (to, from, except, desc) => { 17 if (from && typeof from === "object" || typeof from === "function") { 18 for (let key of __getOwnPropNames(from)) 19 if (!__hasOwnProp.call(to, key) && key !== except) 20 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 21 } 22 return to; 23 }; 24 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 25 // If the importer is in node compatibility mode or this is not an ESM 26 // file that has been converted to a CommonJS file using a Babel- 27 // compatible transform (i.e. "__esModule" has not been set), then set 28 // "default" to the CommonJS "module.exports" for node compatibility. 29 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 30 mod 31 )); 32 var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); 33 34 // package-external:@wordpress/blocks 35 var require_blocks = __commonJS({ 36 "package-external:@wordpress/blocks"(exports, module) { 37 module.exports = window.wp.blocks; 38 } 39 }); 40 41 // package-external:@wordpress/element 42 var require_element = __commonJS({ 43 "package-external:@wordpress/element"(exports, module) { 44 module.exports = window.wp.element; 45 } 46 }); 47 48 // package-external:@wordpress/primitives 49 var require_primitives = __commonJS({ 50 "package-external:@wordpress/primitives"(exports, module) { 51 module.exports = window.wp.primitives; 52 } 53 }); 54 55 // vendor-external:react/jsx-runtime 56 var require_jsx_runtime = __commonJS({ 57 "vendor-external:react/jsx-runtime"(exports, module) { 58 module.exports = window.ReactJSXRuntime; 59 } 60 }); 61 62 // package-external:@wordpress/block-editor 63 var require_block_editor = __commonJS({ 64 "package-external:@wordpress/block-editor"(exports, module) { 65 module.exports = window.wp.blockEditor; 66 } 67 }); 68 69 // package-external:@wordpress/components 70 var require_components = __commonJS({ 71 "package-external:@wordpress/components"(exports, module) { 72 module.exports = window.wp.components; 73 } 74 }); 75 76 // package-external:@wordpress/i18n 77 var require_i18n = __commonJS({ 78 "package-external:@wordpress/i18n"(exports, module) { 79 module.exports = window.wp.i18n; 80 } 81 }); 82 83 // package-external:@wordpress/core-data 84 var require_core_data = __commonJS({ 85 "package-external:@wordpress/core-data"(exports, module) { 86 module.exports = window.wp.coreData; 87 } 88 }); 89 90 // package-external:@wordpress/data 91 var require_data = __commonJS({ 92 "package-external:@wordpress/data"(exports, module) { 93 module.exports = window.wp.data; 94 } 95 }); 96 97 // package-external:@wordpress/notices 98 var require_notices = __commonJS({ 99 "package-external:@wordpress/notices"(exports, module) { 100 module.exports = window.wp.notices; 101 } 102 }); 103 104 // package-external:@wordpress/compose 105 var require_compose = __commonJS({ 106 "package-external:@wordpress/compose"(exports, module) { 107 module.exports = window.wp.compose; 108 } 109 }); 110 111 // package-external:@wordpress/api-fetch 112 var require_api_fetch = __commonJS({ 113 "package-external:@wordpress/api-fetch"(exports, module) { 114 module.exports = window.wp.apiFetch; 115 } 116 }); 117 118 // packages/widgets/build-module/index.js 119 var index_exports = {}; 120 __export(index_exports, { 121 MoveToWidgetArea: () => MoveToWidgetArea, 122 addWidgetIdToBlock: () => addWidgetIdToBlock, 123 getWidgetIdFromBlock: () => getWidgetIdFromBlock, 124 registerLegacyWidgetBlock: () => registerLegacyWidgetBlock, 125 registerLegacyWidgetVariations: () => registerLegacyWidgetVariations, 126 registerWidgetGroupBlock: () => registerWidgetGroupBlock 127 }); 128 var import_blocks5 = __toESM(require_blocks()); 129 130 // packages/widgets/build-module/blocks/legacy-widget/index.js 131 var legacy_widget_exports = {}; 132 __export(legacy_widget_exports, { 133 metadata: () => block_default, 134 name: () => name, 135 settings: () => settings 136 }); 137 138 // packages/icons/build-module/library/brush.js 139 var import_primitives = __toESM(require_primitives()); 140 var import_jsx_runtime = __toESM(require_jsx_runtime()); 141 var brush_default = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.Path, { 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" }) }); 142 143 // packages/icons/build-module/library/group.js 144 var import_primitives2 = __toESM(require_primitives()); 145 var import_jsx_runtime2 = __toESM(require_jsx_runtime()); 146 var group_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.Path, { 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" }) }); 147 148 // packages/icons/build-module/library/move-to.js 149 var import_primitives3 = __toESM(require_primitives()); 150 var import_jsx_runtime3 = __toESM(require_jsx_runtime()); 151 var move_to_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.Path, { 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" }) }); 152 153 // packages/icons/build-module/library/widget.js 154 var import_primitives4 = __toESM(require_primitives()); 155 var import_jsx_runtime4 = __toESM(require_jsx_runtime()); 156 var widget_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.Path, { 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" }) }); 157 158 // packages/widgets/build-module/blocks/legacy-widget/block.json 159 var block_default = { 160 $schema: "https://schemas.wp.org/trunk/block.json", 161 apiVersion: 3, 162 name: "core/legacy-widget", 163 title: "Legacy Widget", 164 category: "widgets", 165 description: "Display a legacy widget.", 166 textdomain: "default", 167 attributes: { 168 id: { 169 type: "string", 170 default: null 171 }, 172 idBase: { 173 type: "string", 174 default: null 175 }, 176 instance: { 177 type: "object", 178 default: null 179 } 180 }, 181 supports: { 182 html: false, 183 customClassName: false, 184 reusable: false 185 }, 186 editorStyle: "wp-block-legacy-widget-editor" 187 }; 188 189 // node_modules/clsx/dist/clsx.mjs 190 function r(e) { 191 var t, f, n = ""; 192 if ("string" == typeof e || "number" == typeof e) n += e; 193 else if ("object" == typeof e) if (Array.isArray(e)) { 194 var o = e.length; 195 for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); 196 } else for (f in e) e[f] && (n && (n += " "), n += f); 197 return n; 198 } 199 function clsx() { 200 for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); 201 return n; 202 } 203 var clsx_default = clsx; 204 205 // packages/widgets/build-module/blocks/legacy-widget/edit/index.js 206 var import_block_editor3 = __toESM(require_block_editor()); 207 var import_components5 = __toESM(require_components()); 208 var import_i18n7 = __toESM(require_i18n()); 209 var import_element3 = __toESM(require_element()); 210 var import_core_data2 = __toESM(require_core_data()); 211 212 // packages/widgets/build-module/blocks/legacy-widget/edit/widget-type-selector.js 213 var import_components = __toESM(require_components()); 214 var import_i18n = __toESM(require_i18n()); 215 var import_data = __toESM(require_data()); 216 var import_core_data = __toESM(require_core_data()); 217 var import_block_editor = __toESM(require_block_editor()); 218 var import_jsx_runtime5 = __toESM(require_jsx_runtime()); 219 function WidgetTypeSelector({ selectedId, onSelect }) { 220 const widgetTypes = (0, import_data.useSelect)((select2) => { 221 const hiddenIds = select2(import_block_editor.store).getSettings()?.widgetTypesToHideFromLegacyWidgetBlock ?? []; 222 return select2(import_core_data.store).getWidgetTypes({ per_page: -1 })?.filter((widgetType) => !hiddenIds.includes(widgetType.id)); 223 }, []); 224 if (!widgetTypes) { 225 return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_components.Spinner, {}); 226 } 227 if (widgetTypes.length === 0) { 228 return (0, import_i18n.__)("There are no widgets available."); 229 } 230 return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)( 231 import_components.SelectControl, 232 { 233 __next40pxDefaultSize: true, 234 label: (0, import_i18n.__)("Legacy widget"), 235 value: selectedId ?? "", 236 options: [ 237 { value: "", label: (0, import_i18n.__)("Select widget") }, 238 ...widgetTypes.map((widgetType) => ({ 239 value: widgetType.id, 240 label: widgetType.name 241 })) 242 ], 243 onChange: (value) => { 244 if (value) { 245 const selected = widgetTypes.find( 246 (widgetType) => widgetType.id === value 247 ); 248 onSelect({ 249 selectedId: selected.id, 250 isMulti: selected.is_multi 251 }); 252 } else { 253 onSelect({ selectedId: null }); 254 } 255 } 256 } 257 ); 258 } 259 260 // packages/widgets/build-module/blocks/legacy-widget/edit/inspector-card.js 261 var import_jsx_runtime6 = __toESM(require_jsx_runtime()); 262 function InspectorCard({ name: name3, description }) { 263 return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "wp-block-legacy-widget-inspector-card", children: [ 264 /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { className: "wp-block-legacy-widget-inspector-card__name", children: name3 }), 265 /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: description }) 266 ] }); 267 } 268 269 // packages/widgets/build-module/blocks/legacy-widget/edit/form.js 270 var import_element = __toESM(require_element()); 271 var import_data2 = __toESM(require_data()); 272 var import_notices = __toESM(require_notices()); 273 var import_i18n3 = __toESM(require_i18n()); 274 var import_components2 = __toESM(require_components()); 275 var import_compose2 = __toESM(require_compose()); 276 277 // packages/widgets/build-module/blocks/legacy-widget/edit/control.js 278 var import_api_fetch = __toESM(require_api_fetch()); 279 var import_compose = __toESM(require_compose()); 280 var import_i18n2 = __toESM(require_i18n()); 281 var Control = class { 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; 309 this.number = ++lastNumber; 310 this.handleFormChange = (0, import_compose.debounce)( 311 this.handleFormChange.bind(this), 312 200 313 ); 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 garbage collected. 321 * 322 * @access public 323 */ 324 destroy() { 325 this.unbindEvents(); 326 this.element.remove(); 327 } 328 /** 329 * Creates the control's DOM structure. 330 * 331 * @access private 332 */ 333 initDOM() { 334 this.element = el("div", { class: "widget open" }, [ 335 el("div", { class: "widget-inside" }, [ 336 this.form = el("form", { class: "form", method: "post" }, [ 337 // These hidden form inputs are what most widgets' scripts 338 // use to access data about the widget. 339 el("input", { 340 class: "widget-id", 341 type: "hidden", 342 name: "widget-id", 343 value: this.id ?? `$this.idBase}-$this.number}` 344 }), 345 el("input", { 346 class: "id_base", 347 type: "hidden", 348 name: "id_base", 349 value: this.idBase ?? this.id 350 }), 351 el("input", { 352 class: "widget-width", 353 type: "hidden", 354 name: "widget-width", 355 value: "250" 356 }), 357 el("input", { 358 class: "widget-height", 359 type: "hidden", 360 name: "widget-height", 361 value: "200" 362 }), 363 el("input", { 364 class: "widget_number", 365 type: "hidden", 366 name: "widget_number", 367 value: this.idBase ? this.number.toString() : "" 368 }), 369 this.content = el("div", { class: "widget-content" }), 370 // Non-multi widgets can be saved via a Save button. 371 this.id && el( 372 "button", 373 { 374 class: "button is-primary", 375 type: "submit" 376 }, 377 (0, import_i18n2.__)("Save") 378 ) 379 ]) 380 ]) 381 ]); 382 } 383 /** 384 * Adds the control's event listeners. 385 * 386 * @access private 387 */ 388 bindEvents() { 389 if (window.jQuery) { 390 const { jQuery: $ } = window; 391 $(this.form).on("change", null, this.handleFormChange); 392 $(this.form).on("input", null, this.handleFormChange); 393 $(this.form).on("submit", this.handleFormSubmit); 394 } else { 395 this.form.addEventListener("change", this.handleFormChange); 396 this.form.addEventListener("input", this.handleFormChange); 397 this.form.addEventListener("submit", this.handleFormSubmit); 398 } 399 } 400 /** 401 * Removes the control's event listeners. 402 * 403 * @access private 404 */ 405 unbindEvents() { 406 if (window.jQuery) { 407 const { jQuery: $ } = window; 408 $(this.form).off("change", null, this.handleFormChange); 409 $(this.form).off("input", null, this.handleFormChange); 410 $(this.form).off("submit", this.handleFormSubmit); 411 } else { 412 this.form.removeEventListener("change", this.handleFormChange); 413 this.form.removeEventListener("input", this.handleFormChange); 414 this.form.removeEventListener("submit", this.handleFormSubmit); 415 } 416 } 417 /** 418 * Fetches the widget's form HTML from the REST API and loads it into the 419 * control's form. 420 * 421 * @access private 422 */ 423 async loadContent() { 424 try { 425 if (this.id) { 426 const { form } = await saveWidget(this.id); 427 this.content.innerHTML = form; 428 } else if (this.idBase) { 429 const { form, preview } = await encodeWidget({ 430 idBase: this.idBase, 431 instance: this.instance, 432 number: this.number 433 }); 434 this.content.innerHTML = form; 435 this.hasPreview = !isEmptyHTML(preview); 436 if (!this.instance.hash) { 437 const { instance } = await encodeWidget({ 438 idBase: this.idBase, 439 instance: this.instance, 440 number: this.number, 441 formData: serializeForm(this.form) 442 }); 443 this.instance = instance; 444 } 445 } 446 if (window.jQuery) { 447 const { jQuery: $ } = window; 448 $(document).trigger("widget-added", [$(this.element)]); 449 } 450 } catch (error) { 451 this.onError(error); 452 } 453 } 454 /** 455 * Perform a save when a multi widget's form is changed. Non-multi widgets 456 * are saved manually. 457 * 458 * @access private 459 */ 460 handleFormChange() { 461 if (this.idBase) { 462 this.saveForm(); 463 } 464 } 465 /** 466 * Perform a save when the control's form is manually submitted. 467 * 468 * @access private 469 * @param {Event} event 470 */ 471 handleFormSubmit(event) { 472 event.preventDefault(); 473 this.saveForm(); 474 } 475 /** 476 * Serialize the control's form, send it to the REST API, and update the 477 * instance with the encoded instance that the REST API returns. 478 * 479 * @access private 480 */ 481 async saveForm() { 482 const formData = serializeForm(this.form); 483 try { 484 if (this.id) { 485 const { form } = await saveWidget(this.id, formData); 486 this.content.innerHTML = form; 487 if (window.jQuery) { 488 const { jQuery: $ } = window; 489 $(document).trigger("widget-updated", [ 490 $(this.element) 491 ]); 492 } 493 } else if (this.idBase) { 494 const { instance, preview } = await encodeWidget({ 495 idBase: this.idBase, 496 instance: this.instance, 497 number: this.number, 498 formData 499 }); 500 this.instance = instance; 501 this.hasPreview = !isEmptyHTML(preview); 502 } 503 } catch (error) { 504 this.onError(error); 505 } 506 } 507 /** 508 * The widget's instance object. 509 * 510 * @access private 511 */ 512 get instance() { 513 return this._instance; 514 } 515 /** 516 * The widget's instance object. 517 * 518 * @access private 519 */ 520 set instance(instance) { 521 if (this._instance !== instance) { 522 this._instance = instance; 523 this.onChangeInstance(instance); 524 } 525 } 526 /** 527 * Whether or not the widget can be previewed. 528 * 529 * @access public 530 */ 531 get hasPreview() { 532 return this._hasPreview; 533 } 534 /** 535 * Whether or not the widget can be previewed. 536 * 537 * @access private 538 */ 539 set hasPreview(hasPreview) { 540 if (this._hasPreview !== hasPreview) { 541 this._hasPreview = hasPreview; 542 this.onChangeHasPreview(hasPreview); 543 } 544 } 545 }; 546 var lastNumber = 0; 547 function el(tagName, attributes = {}, content = null) { 548 const element = document.createElement(tagName); 549 for (const [attribute, value] of Object.entries(attributes)) { 550 element.setAttribute(attribute, value); 551 } 552 if (Array.isArray(content)) { 553 for (const child of content) { 554 if (child) { 555 element.appendChild(child); 556 } 557 } 558 } else if (typeof content === "string") { 559 element.innerText = content; 560 } 561 return element; 562 } 563 async function saveWidget(id, formData = null) { 564 let widget; 565 if (formData) { 566 widget = await (0, import_api_fetch.default)({ 567 path: `/wp/v2/widgets/$id}?context=edit`, 568 method: "PUT", 569 data: { 570 form_data: formData 571 } 572 }); 573 } else { 574 widget = await (0, import_api_fetch.default)({ 575 path: `/wp/v2/widgets/$id}?context=edit`, 576 method: "GET" 577 }); 578 } 579 return { form: widget.rendered_form }; 580 } 581 async function encodeWidget({ idBase, instance, number, formData = null }) { 582 const response = await (0, import_api_fetch.default)({ 583 path: `/wp/v2/widget-types/$idBase}/encode`, 584 method: "POST", 585 data: { 586 instance, 587 number, 588 form_data: formData 589 } 590 }); 591 return { 592 instance: response.instance, 593 form: response.form, 594 preview: response.preview 595 }; 596 } 597 function isEmptyHTML(html) { 598 const element = document.createElement("div"); 599 element.innerHTML = html; 600 return isEmptyNode(element); 601 } 602 function isEmptyNode(node) { 603 switch (node.nodeType) { 604 case node.TEXT_NODE: 605 return node.nodeValue.trim() === ""; 606 case node.ELEMENT_NODE: 607 if ([ 608 "AUDIO", 609 "CANVAS", 610 "EMBED", 611 "IFRAME", 612 "IMG", 613 "MATH", 614 "OBJECT", 615 "SVG", 616 "VIDEO" 617 ].includes(node.tagName)) { 618 return false; 619 } 620 if (!node.hasChildNodes()) { 621 return true; 622 } 623 return Array.from(node.childNodes).every(isEmptyNode); 624 default: 625 return true; 626 } 627 } 628 function serializeForm(form) { 629 return new window.URLSearchParams( 630 Array.from(new window.FormData(form)) 631 ).toString(); 632 } 633 634 // packages/widgets/build-module/blocks/legacy-widget/edit/form.js 635 var import_jsx_runtime7 = __toESM(require_jsx_runtime()); 636 function Form({ 637 title, 638 isVisible, 639 id, 640 idBase, 641 instance, 642 isWide, 643 onChangeInstance, 644 onChangeHasPreview 645 }) { 646 const ref = (0, import_element.useRef)(); 647 const isMediumLargeViewport = (0, import_compose2.useViewportMatch)("small"); 648 const outgoingInstances = (0, import_element.useRef)(/* @__PURE__ */ new Set()); 649 const incomingInstances = (0, import_element.useRef)(/* @__PURE__ */ new Set()); 650 const { createNotice } = (0, import_data2.useDispatch)(import_notices.store); 651 (0, import_element.useEffect)(() => { 652 if (incomingInstances.current.has(instance)) { 653 incomingInstances.current.delete(instance); 654 return; 655 } 656 const control = new Control({ 657 id, 658 idBase, 659 instance, 660 onChangeInstance(nextInstance) { 661 outgoingInstances.current.add(instance); 662 incomingInstances.current.add(nextInstance); 663 onChangeInstance(nextInstance); 664 }, 665 onChangeHasPreview, 666 onError(error) { 667 window.console.error(error); 668 createNotice( 669 "error", 670 (0, import_i18n3.sprintf)( 671 /* translators: %s: the name of the affected block. */ 672 (0, import_i18n3.__)( 673 'The "%s" block was affected by errors and may not function properly. Check the developer tools for more details.' 674 ), 675 idBase || id 676 ) 677 ); 678 } 679 }); 680 ref.current.appendChild(control.element); 681 return () => { 682 if (outgoingInstances.current.has(instance)) { 683 outgoingInstances.current.delete(instance); 684 return; 685 } 686 control.destroy(); 687 }; 688 }, [ 689 id, 690 idBase, 691 instance, 692 onChangeInstance, 693 onChangeHasPreview, 694 isMediumLargeViewport 695 ]); 696 if (isWide && isMediumLargeViewport) { 697 return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)( 698 "div", 699 { 700 className: clsx_default({ 701 "wp-block-legacy-widget__container": isVisible 702 }), 703 children: [ 704 isVisible && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h3", { className: "wp-block-legacy-widget__edit-form-title", children: title }), 705 /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( 706 import_components2.Popover, 707 { 708 focusOnMount: false, 709 placement: "right", 710 offset: 32, 711 resize: false, 712 flip: false, 713 shift: true, 714 children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( 715 "div", 716 { 717 ref, 718 className: "wp-block-legacy-widget__edit-form", 719 hidden: !isVisible 720 } 721 ) 722 } 723 ) 724 ] 725 } 726 ); 727 } 728 return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( 729 "div", 730 { 731 ref, 732 className: "wp-block-legacy-widget__edit-form", 733 hidden: !isVisible, 734 children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h3", { className: "wp-block-legacy-widget__edit-form-title", children: title }) 735 } 736 ); 737 } 738 739 // packages/widgets/build-module/blocks/legacy-widget/edit/preview.js 740 var import_compose3 = __toESM(require_compose()); 741 var import_element2 = __toESM(require_element()); 742 var import_components3 = __toESM(require_components()); 743 var import_i18n4 = __toESM(require_i18n()); 744 var import_api_fetch2 = __toESM(require_api_fetch()); 745 var import_jsx_runtime8 = __toESM(require_jsx_runtime()); 746 function Preview({ idBase, instance, isVisible }) { 747 const [isLoaded, setIsLoaded] = (0, import_element2.useState)(false); 748 const [srcDoc, setSrcDoc] = (0, import_element2.useState)(""); 749 (0, import_element2.useEffect)(() => { 750 const abortController = typeof window.AbortController === "undefined" ? void 0 : new window.AbortController(); 751 async function fetchPreviewHTML() { 752 const restRoute = `/wp/v2/widget-types/$idBase}/render`; 753 return await (0, import_api_fetch2.default)({ 754 path: restRoute, 755 method: "POST", 756 signal: abortController?.signal, 757 data: instance ? { instance } : {} 758 }); 759 } 760 fetchPreviewHTML().then((response) => { 761 setSrcDoc(response.preview); 762 }).catch((error) => { 763 if ("AbortError" === error.name) { 764 return; 765 } 766 throw error; 767 }); 768 return () => abortController?.abort(); 769 }, [idBase, instance]); 770 const ref = (0, import_compose3.useRefEffect)( 771 (iframe) => { 772 if (!isLoaded) { 773 return; 774 } 775 function setHeight() { 776 const height = Math.max( 777 iframe.contentDocument.documentElement?.offsetHeight ?? 0, 778 iframe.contentDocument.body?.offsetHeight ?? 0 779 ); 780 iframe.style.height = `$height !== 0 ? height : 100}px`; 781 } 782 const { IntersectionObserver } = iframe.ownerDocument.defaultView; 783 const intersectionObserver = new IntersectionObserver( 784 ([entry]) => { 785 if (entry.isIntersecting) { 786 setHeight(); 787 } 788 }, 789 { 790 threshold: 1 791 } 792 ); 793 intersectionObserver.observe(iframe); 794 iframe.addEventListener("load", setHeight); 795 return () => { 796 intersectionObserver.disconnect(); 797 iframe.removeEventListener("load", setHeight); 798 }; 799 }, 800 [isLoaded] 801 ); 802 return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [ 803 isVisible && !isLoaded && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_components3.Placeholder, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_components3.Spinner, {}) }), 804 /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( 805 "div", 806 { 807 className: clsx_default("wp-block-legacy-widget__edit-preview", { 808 "is-offscreen": !isVisible || !isLoaded 809 }), 810 children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_components3.Disabled, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( 811 "iframe", 812 { 813 ref, 814 className: "wp-block-legacy-widget__edit-preview-iframe", 815 tabIndex: "-1", 816 title: (0, import_i18n4.__)("Legacy Widget Preview"), 817 srcDoc, 818 onLoad: (event) => { 819 event.target.contentDocument.body.style.overflow = "hidden"; 820 setIsLoaded(true); 821 }, 822 height: 100 823 } 824 ) }) 825 } 826 ) 827 ] }); 828 } 829 830 // packages/widgets/build-module/blocks/legacy-widget/edit/no-preview.js 831 var import_i18n5 = __toESM(require_i18n()); 832 var import_jsx_runtime9 = __toESM(require_jsx_runtime()); 833 function NoPreview({ name: name3 }) { 834 return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "wp-block-legacy-widget__edit-no-preview", children: [ 835 name3 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h3", { children: name3 }), 836 /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { children: (0, import_i18n5.__)("No preview available.") }) 837 ] }); 838 } 839 840 // packages/widgets/build-module/blocks/legacy-widget/edit/convert-to-blocks-button.js 841 var import_data3 = __toESM(require_data()); 842 var import_block_editor2 = __toESM(require_block_editor()); 843 var import_components4 = __toESM(require_components()); 844 var import_blocks = __toESM(require_blocks()); 845 var import_i18n6 = __toESM(require_i18n()); 846 var import_jsx_runtime10 = __toESM(require_jsx_runtime()); 847 function ConvertToBlocksButton({ clientId, rawInstance }) { 848 const { replaceBlocks } = (0, import_data3.useDispatch)(import_block_editor2.store); 849 return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 850 import_components4.ToolbarButton, 851 { 852 onClick: () => { 853 if (rawInstance.title) { 854 replaceBlocks(clientId, [ 855 (0, import_blocks.createBlock)("core/heading", { 856 content: rawInstance.title 857 }), 858 ...(0, import_blocks.rawHandler)({ HTML: rawInstance.text }) 859 ]); 860 } else { 861 replaceBlocks( 862 clientId, 863 (0, import_blocks.rawHandler)({ HTML: rawInstance.text }) 864 ); 865 } 866 }, 867 children: (0, import_i18n6.__)("Convert to blocks") 868 } 869 ); 870 } 871 872 // packages/widgets/build-module/blocks/legacy-widget/edit/index.js 873 var import_jsx_runtime11 = __toESM(require_jsx_runtime()); 874 function Edit(props) { 875 const { id, idBase } = props.attributes; 876 const { isWide = false } = props; 877 const blockProps = (0, import_block_editor3.useBlockProps)({ 878 className: clsx_default({ 879 "is-wide-widget": isWide 880 }) 881 }); 882 return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { ...blockProps, children: !id && !idBase ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Empty, { ...props }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(NotEmpty, { ...props }) }); 883 } 884 function Empty({ attributes: { id, idBase }, setAttributes }) { 885 return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( 886 import_components5.Placeholder, 887 { 888 icon: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_block_editor3.BlockIcon, { icon: brush_default }), 889 label: (0, import_i18n7.__)("Legacy Widget"), 890 children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_components5.Flex, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_components5.FlexBlock, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( 891 WidgetTypeSelector, 892 { 893 selectedId: id ?? idBase, 894 onSelect: ({ selectedId, isMulti }) => { 895 if (!selectedId) { 896 setAttributes({ 897 id: null, 898 idBase: null, 899 instance: null 900 }); 901 } else if (isMulti) { 902 setAttributes({ 903 id: null, 904 idBase: selectedId, 905 instance: {} 906 }); 907 } else { 908 setAttributes({ 909 id: selectedId, 910 idBase: null, 911 instance: null 912 }); 913 } 914 } 915 } 916 ) }) }) 917 } 918 ); 919 } 920 function NotEmpty({ 921 attributes: { id, idBase, instance }, 922 setAttributes, 923 clientId, 924 isSelected, 925 isWide = false 926 }) { 927 const [hasPreview, setHasPreview] = (0, import_element3.useState)(null); 928 const widgetTypeId = id ?? idBase; 929 const { record: widgetType, hasResolved: hasResolvedWidgetType } = (0, import_core_data2.useEntityRecord)("root", "widgetType", widgetTypeId); 930 const setInstance = (0, import_element3.useCallback)((nextInstance) => { 931 setAttributes({ instance: nextInstance }); 932 }, []); 933 if (!widgetType && hasResolvedWidgetType) { 934 return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( 935 import_components5.Placeholder, 936 { 937 icon: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_block_editor3.BlockIcon, { icon: brush_default }), 938 label: (0, import_i18n7.__)("Legacy Widget"), 939 children: (0, import_i18n7.__)("Widget is missing.") 940 } 941 ); 942 } 943 if (!hasResolvedWidgetType) { 944 return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_components5.Placeholder, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_components5.Spinner, {}) }); 945 } 946 const mode = idBase && !isSelected ? "preview" : "edit"; 947 return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [ 948 idBase === "text" && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_block_editor3.BlockControls, { group: "other", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( 949 ConvertToBlocksButton, 950 { 951 clientId, 952 rawInstance: instance.raw 953 } 954 ) }), 955 /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_block_editor3.InspectorControls, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( 956 InspectorCard, 957 { 958 name: widgetType.name, 959 description: widgetType.description 960 } 961 ) }), 962 /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( 963 Form, 964 { 965 title: widgetType.name, 966 isVisible: mode === "edit", 967 id, 968 idBase, 969 instance, 970 isWide, 971 onChangeInstance: setInstance, 972 onChangeHasPreview: setHasPreview 973 } 974 ), 975 idBase && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [ 976 hasPreview === null && mode === "preview" && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_components5.Placeholder, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_components5.Spinner, {}) }), 977 hasPreview === true && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( 978 Preview, 979 { 980 idBase, 981 instance, 982 isVisible: mode === "preview" 983 } 984 ), 985 hasPreview === false && mode === "preview" && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(NoPreview, { name: widgetType.name }) 986 ] }) 987 ] }); 988 } 989 990 // packages/widgets/build-module/blocks/legacy-widget/transforms.js 991 var import_blocks2 = __toESM(require_blocks()); 992 var legacyWidgetTransforms = [ 993 { 994 block: "core/calendar", 995 widget: "calendar" 996 }, 997 { 998 block: "core/search", 999 widget: "search" 1000 }, 1001 { 1002 block: "core/html", 1003 widget: "custom_html", 1004 transform: ({ content }) => ({ 1005 content 1006 }) 1007 }, 1008 { 1009 block: "core/archives", 1010 widget: "archives", 1011 transform: ({ count, dropdown }) => { 1012 return { 1013 displayAsDropdown: !!dropdown, 1014 showPostCounts: !!count 1015 }; 1016 } 1017 }, 1018 { 1019 block: "core/latest-posts", 1020 widget: "recent-posts", 1021 transform: ({ show_date: displayPostDate, number }) => { 1022 return { 1023 displayPostDate: !!displayPostDate, 1024 postsToShow: number 1025 }; 1026 } 1027 }, 1028 { 1029 block: "core/latest-comments", 1030 widget: "recent-comments", 1031 transform: ({ number }) => { 1032 return { 1033 commentsToShow: number 1034 }; 1035 } 1036 }, 1037 { 1038 block: "core/tag-cloud", 1039 widget: "tag_cloud", 1040 transform: ({ taxonomy, count }) => { 1041 return { 1042 showTagCounts: !!count, 1043 taxonomy 1044 }; 1045 } 1046 }, 1047 { 1048 block: "core/categories", 1049 widget: "categories", 1050 transform: ({ count, dropdown, hierarchical }) => { 1051 return { 1052 displayAsDropdown: !!dropdown, 1053 showPostCounts: !!count, 1054 showHierarchy: !!hierarchical 1055 }; 1056 } 1057 }, 1058 { 1059 block: "core/audio", 1060 widget: "media_audio", 1061 transform: ({ url, preload, loop, attachment_id: id }) => { 1062 return { 1063 src: url, 1064 id, 1065 preload, 1066 loop 1067 }; 1068 } 1069 }, 1070 { 1071 block: "core/video", 1072 widget: "media_video", 1073 transform: ({ url, preload, loop, attachment_id: id }) => { 1074 return { 1075 src: url, 1076 id, 1077 preload, 1078 loop 1079 }; 1080 } 1081 }, 1082 { 1083 block: "core/image", 1084 widget: "media_image", 1085 transform: ({ 1086 alt, 1087 attachment_id: id, 1088 caption, 1089 height, 1090 link_classes: linkClass, 1091 link_rel: rel, 1092 link_target_blank: targetBlack, 1093 link_type: linkDestination, 1094 link_url: link, 1095 size: sizeSlug, 1096 url, 1097 width 1098 }) => { 1099 return { 1100 alt, 1101 caption, 1102 height, 1103 id, 1104 link, 1105 linkClass, 1106 linkDestination, 1107 linkTarget: targetBlack ? "_blank" : void 0, 1108 rel, 1109 sizeSlug, 1110 url, 1111 width 1112 }; 1113 } 1114 }, 1115 { 1116 block: "core/gallery", 1117 widget: "media_gallery", 1118 transform: ({ ids, link_type: linkTo, size, number }) => { 1119 return { 1120 ids, 1121 columns: number, 1122 linkTo, 1123 sizeSlug: size, 1124 images: ids.map((id) => ({ 1125 id 1126 })) 1127 }; 1128 } 1129 }, 1130 { 1131 block: "core/rss", 1132 widget: "rss", 1133 transform: ({ 1134 url, 1135 show_author: displayAuthor, 1136 show_date: displayDate, 1137 show_summary: displayExcerpt, 1138 items 1139 }) => { 1140 return { 1141 feedURL: url, 1142 displayAuthor: !!displayAuthor, 1143 displayDate: !!displayDate, 1144 displayExcerpt: !!displayExcerpt, 1145 itemsToShow: items 1146 }; 1147 } 1148 } 1149 ].map(({ block, widget, transform }) => { 1150 return { 1151 type: "block", 1152 blocks: [block], 1153 isMatch: ({ idBase, instance }) => { 1154 return idBase === widget && !!instance?.raw; 1155 }, 1156 transform: ({ instance }) => { 1157 const transformedBlock = (0, import_blocks2.createBlock)( 1158 block, 1159 transform ? transform(instance.raw) : void 0 1160 ); 1161 if (!instance.raw?.title) { 1162 return transformedBlock; 1163 } 1164 return [ 1165 (0, import_blocks2.createBlock)("core/heading", { 1166 content: instance.raw.title 1167 }), 1168 transformedBlock 1169 ]; 1170 } 1171 }; 1172 }); 1173 var transforms = { 1174 to: legacyWidgetTransforms 1175 }; 1176 var transforms_default = transforms; 1177 1178 // packages/widgets/build-module/blocks/legacy-widget/index.js 1179 var { name } = block_default; 1180 var settings = { 1181 icon: widget_default, 1182 edit: Edit, 1183 transforms: transforms_default 1184 }; 1185 1186 // packages/widgets/build-module/blocks/widget-group/index.js 1187 var widget_group_exports = {}; 1188 __export(widget_group_exports, { 1189 metadata: () => block_default2, 1190 name: () => name2, 1191 settings: () => settings2 1192 }); 1193 var import_i18n9 = __toESM(require_i18n()); 1194 var import_blocks3 = __toESM(require_blocks()); 1195 1196 // packages/widgets/build-module/blocks/widget-group/block.json 1197 var block_default2 = { 1198 $schema: "https://schemas.wp.org/trunk/block.json", 1199 apiVersion: 3, 1200 name: "core/widget-group", 1201 title: "Widget Group", 1202 category: "widgets", 1203 attributes: { 1204 title: { 1205 type: "string" 1206 } 1207 }, 1208 supports: { 1209 html: false, 1210 inserter: true, 1211 customClassName: true, 1212 reusable: false 1213 }, 1214 editorStyle: "wp-block-widget-group-editor", 1215 style: "wp-block-widget-group" 1216 }; 1217 1218 // packages/widgets/build-module/blocks/widget-group/edit.js 1219 var import_block_editor4 = __toESM(require_block_editor()); 1220 var import_components6 = __toESM(require_components()); 1221 var import_i18n8 = __toESM(require_i18n()); 1222 var import_data4 = __toESM(require_data()); 1223 var import_jsx_runtime12 = __toESM(require_jsx_runtime()); 1224 function Edit2(props) { 1225 const { clientId } = props; 1226 const hasInnerBlocks = (0, import_data4.useSelect)( 1227 (select2) => select2(import_block_editor4.store).getBlockCount(clientId) > 0, 1228 [clientId] 1229 ); 1230 return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { ...(0, import_block_editor4.useBlockProps)({ className: "widget" }), children: !hasInnerBlocks ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(PlaceholderContent, { ...props }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(PreviewContent, { ...props }) }); 1231 } 1232 function PlaceholderContent({ clientId }) { 1233 return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [ 1234 /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( 1235 import_components6.Placeholder, 1236 { 1237 className: "wp-block-widget-group__placeholder", 1238 icon: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_block_editor4.BlockIcon, { icon: group_default }), 1239 label: (0, import_i18n8.__)("Widget Group"), 1240 children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_block_editor4.ButtonBlockAppender, { rootClientId: clientId }) 1241 } 1242 ), 1243 /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_block_editor4.InnerBlocks, { renderAppender: false }) 1244 ] }); 1245 } 1246 function PreviewContent({ attributes, setAttributes }) { 1247 return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [ 1248 /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( 1249 import_block_editor4.RichText, 1250 { 1251 tagName: "h2", 1252 identifier: "title", 1253 className: "widget-title", 1254 allowedFormats: [], 1255 placeholder: (0, import_i18n8.__)("Title"), 1256 value: attributes.title ?? "", 1257 onChange: (title) => setAttributes({ title }) 1258 } 1259 ), 1260 /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_block_editor4.InnerBlocks, {}) 1261 ] }); 1262 } 1263 1264 // packages/widgets/build-module/blocks/widget-group/save.js 1265 var import_block_editor5 = __toESM(require_block_editor()); 1266 var import_jsx_runtime13 = __toESM(require_jsx_runtime()); 1267 function save({ attributes }) { 1268 return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [ 1269 /* @__PURE__ */ (0, import_jsx_runtime13.jsx)( 1270 import_block_editor5.RichText.Content, 1271 { 1272 tagName: "h2", 1273 className: "widget-title", 1274 value: attributes.title 1275 } 1276 ), 1277 /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "wp-widget-group__inner-blocks", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_block_editor5.InnerBlocks.Content, {}) }) 1278 ] }); 1279 } 1280 1281 // packages/widgets/build-module/blocks/widget-group/deprecated.js 1282 var import_block_editor6 = __toESM(require_block_editor()); 1283 var import_jsx_runtime14 = __toESM(require_jsx_runtime()); 1284 var v1 = { 1285 attributes: { 1286 title: { 1287 type: "string" 1288 } 1289 }, 1290 supports: { 1291 html: false, 1292 inserter: true, 1293 customClassName: true, 1294 reusable: false 1295 }, 1296 save({ attributes }) { 1297 return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [ 1298 /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( 1299 import_block_editor6.RichText.Content, 1300 { 1301 tagName: "h2", 1302 className: "widget-title", 1303 value: attributes.title 1304 } 1305 ), 1306 /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_block_editor6.InnerBlocks.Content, {}) 1307 ] }); 1308 } 1309 }; 1310 var deprecated_default = [v1]; 1311 1312 // packages/widgets/build-module/blocks/widget-group/index.js 1313 var { name: name2 } = block_default2; 1314 var settings2 = { 1315 title: (0, import_i18n9.__)("Widget Group"), 1316 description: (0, import_i18n9.__)( 1317 "Create a classic widget layout with a title that\u2019s styled by your theme for your widget areas." 1318 ), 1319 icon: group_default, 1320 __experimentalLabel: ({ name: label }) => label, 1321 edit: Edit2, 1322 save, 1323 transforms: { 1324 from: [ 1325 { 1326 type: "block", 1327 isMultiBlock: true, 1328 blocks: ["*"], 1329 isMatch(attributes, blocks) { 1330 return !blocks.some( 1331 (block) => block.name === "core/widget-group" 1332 ); 1333 }, 1334 __experimentalConvert(blocks) { 1335 let innerBlocks = [ 1336 ...blocks.map((block) => { 1337 return (0, import_blocks3.createBlock)( 1338 block.name, 1339 block.attributes, 1340 block.innerBlocks 1341 ); 1342 }) 1343 ]; 1344 const firstHeadingBlock = innerBlocks[0].name === "core/heading" ? innerBlocks[0] : null; 1345 innerBlocks = innerBlocks.filter( 1346 (block) => block !== firstHeadingBlock 1347 ); 1348 return (0, import_blocks3.createBlock)( 1349 "core/widget-group", 1350 { 1351 ...firstHeadingBlock && { 1352 title: firstHeadingBlock.attributes.content 1353 } 1354 }, 1355 innerBlocks 1356 ); 1357 } 1358 } 1359 ] 1360 }, 1361 deprecated: deprecated_default 1362 }; 1363 1364 // packages/widgets/build-module/components/move-to-widget-area/index.js 1365 var import_components7 = __toESM(require_components()); 1366 var import_i18n10 = __toESM(require_i18n()); 1367 var import_jsx_runtime15 = __toESM(require_jsx_runtime()); 1368 function MoveToWidgetArea({ 1369 currentWidgetAreaId, 1370 widgetAreas, 1371 onSelect 1372 }) { 1373 return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_components7.ToolbarGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_components7.ToolbarItem, { children: (toggleProps) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)( 1374 import_components7.DropdownMenu, 1375 { 1376 icon: move_to_default, 1377 label: (0, import_i18n10.__)("Move to widget area"), 1378 toggleProps, 1379 children: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_components7.MenuGroup, { label: (0, import_i18n10.__)("Move to"), children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)( 1380 import_components7.MenuItemsChoice, 1381 { 1382 choices: widgetAreas.map( 1383 (widgetArea) => ({ 1384 value: widgetArea.id, 1385 label: widgetArea.name, 1386 info: widgetArea.description 1387 }) 1388 ), 1389 value: currentWidgetAreaId, 1390 onSelect: (value) => { 1391 onSelect(value); 1392 onClose(); 1393 } 1394 } 1395 ) }) 1396 } 1397 ) }) }); 1398 } 1399 1400 // packages/widgets/build-module/utils.js 1401 function getWidgetIdFromBlock(block) { 1402 return block.attributes.__internalWidgetId; 1403 } 1404 function addWidgetIdToBlock(block, widgetId) { 1405 return { 1406 ...block, 1407 attributes: { 1408 ...block.attributes || {}, 1409 __internalWidgetId: widgetId 1410 } 1411 }; 1412 } 1413 1414 // packages/widgets/build-module/register-legacy-widget-variations.js 1415 var import_data5 = __toESM(require_data()); 1416 var import_core_data3 = __toESM(require_core_data()); 1417 var import_blocks4 = __toESM(require_blocks()); 1418 function registerLegacyWidgetVariations(settings3) { 1419 const unsubscribe = (0, import_data5.subscribe)(() => { 1420 const hiddenIds = settings3?.widgetTypesToHideFromLegacyWidgetBlock ?? []; 1421 const widgetTypes = (0, import_data5.select)(import_core_data3.store).getWidgetTypes({ per_page: -1 })?.filter((widgetType) => !hiddenIds.includes(widgetType.id)); 1422 if (widgetTypes) { 1423 unsubscribe(); 1424 (0, import_data5.dispatch)(import_blocks4.store).addBlockVariations( 1425 "core/legacy-widget", 1426 widgetTypes.map((widgetType) => ({ 1427 name: widgetType.id, 1428 title: widgetType.name, 1429 description: widgetType.description, 1430 attributes: widgetType.is_multi ? { 1431 idBase: widgetType.id, 1432 instance: {} 1433 } : { 1434 id: widgetType.id 1435 } 1436 })) 1437 ); 1438 } 1439 }); 1440 } 1441 1442 // packages/widgets/build-module/index.js 1443 function registerLegacyWidgetBlock(supports = {}) { 1444 const { metadata, settings: settings3, name: name3 } = legacy_widget_exports; 1445 (0, import_blocks5.registerBlockType)( 1446 { name: name3, ...metadata }, 1447 { 1448 ...settings3, 1449 supports: { 1450 ...settings3.supports, 1451 ...supports 1452 } 1453 } 1454 ); 1455 } 1456 function registerWidgetGroupBlock(supports = {}) { 1457 const { metadata, settings: settings3, name: name3 } = widget_group_exports; 1458 (0, import_blocks5.registerBlockType)( 1459 { name: name3, ...metadata }, 1460 { 1461 ...settings3, 1462 supports: { 1463 ...settings3.supports, 1464 ...supports 1465 } 1466 } 1467 ); 1468 } 1469 return __toCommonJS(index_exports); 1470 })();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Tue May 5 08:20:14 2026 | Cross-referenced by PHPXref |