[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/js/dist/ -> blocks.js (source)

   1  (function() {
   2  "use strict";
   3  var wp;
   4  (wp ||= {}).blocks = (() => {
   5    var __create = Object.create;
   6    var __defProp = Object.defineProperty;
   7    var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
   8    var __getOwnPropNames = Object.getOwnPropertyNames;
   9    var __getProtoOf = Object.getPrototypeOf;
  10    var __hasOwnProp = Object.prototype.hasOwnProperty;
  11    var __commonJS = (cb, mod) => function __require() {
  12      return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
  13    };
  14    var __export = (target, all) => {
  15      for (var name in all)
  16        __defProp(target, name, { get: all[name], enumerable: true });
  17    };
  18    var __copyProps = (to, from, except, desc) => {
  19      if (from && typeof from === "object" || typeof from === "function") {
  20        for (let key of __getOwnPropNames(from))
  21          if (!__hasOwnProp.call(to, key) && key !== except)
  22            __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  23      }
  24      return to;
  25    };
  26    var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  27      // If the importer is in node compatibility mode or this is not an ESM
  28      // file that has been converted to a CommonJS file using a Babel-
  29      // compatible transform (i.e. "__esModule" has not been set), then set
  30      // "default" to the CommonJS "module.exports" for node compatibility.
  31      isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  32      mod
  33    ));
  34    var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  35  
  36    // package-external:@wordpress/data
  37    var require_data = __commonJS({
  38      "package-external:@wordpress/data"(exports, module) {
  39        module.exports = window.wp.data;
  40      }
  41    });
  42  
  43    // package-external:@wordpress/i18n
  44    var require_i18n = __commonJS({
  45      "package-external:@wordpress/i18n"(exports, module) {
  46        module.exports = window.wp.i18n;
  47      }
  48    });
  49  
  50    // package-external:@wordpress/element
  51    var require_element = __commonJS({
  52      "package-external:@wordpress/element"(exports, module) {
  53        module.exports = window.wp.element;
  54      }
  55    });
  56  
  57    // package-external:@wordpress/dom
  58    var require_dom = __commonJS({
  59      "package-external:@wordpress/dom"(exports, module) {
  60        module.exports = window.wp.dom;
  61      }
  62    });
  63  
  64    // package-external:@wordpress/rich-text
  65    var require_rich_text = __commonJS({
  66      "package-external:@wordpress/rich-text"(exports, module) {
  67        module.exports = window.wp.richText;
  68      }
  69    });
  70  
  71    // package-external:@wordpress/deprecated
  72    var require_deprecated = __commonJS({
  73      "package-external:@wordpress/deprecated"(exports, module) {
  74        module.exports = window.wp.deprecated;
  75      }
  76    });
  77  
  78    // package-external:@wordpress/warning
  79    var require_warning = __commonJS({
  80      "package-external:@wordpress/warning"(exports, module) {
  81        module.exports = window.wp.warning;
  82      }
  83    });
  84  
  85    // package-external:@wordpress/private-apis
  86    var require_private_apis = __commonJS({
  87      "package-external:@wordpress/private-apis"(exports, module) {
  88        module.exports = window.wp.privateApis;
  89      }
  90    });
  91  
  92    // node_modules/.store/remove-accents@0.5.0-S_lnImruWgc6kBSjIJlPgw/node_modules/remove-accents/index.js
  93    var require_remove_accents = __commonJS({
  94      "node_modules/.store/remove-accents@0.5.0-S_lnImruWgc6kBSjIJlPgw/node_modules/remove-accents/index.js"(exports, module) {
  95        var characterMap = {
  96          "\xC0": "A",
  97          "\xC1": "A",
  98          "\xC2": "A",
  99          "\xC3": "A",
 100          "\xC4": "A",
 101          "\xC5": "A",
 102          "\u1EA4": "A",
 103          "\u1EAE": "A",
 104          "\u1EB2": "A",
 105          "\u1EB4": "A",
 106          "\u1EB6": "A",
 107          "\xC6": "AE",
 108          "\u1EA6": "A",
 109          "\u1EB0": "A",
 110          "\u0202": "A",
 111          "\u1EA2": "A",
 112          "\u1EA0": "A",
 113          "\u1EA8": "A",
 114          "\u1EAA": "A",
 115          "\u1EAC": "A",
 116          "\xC7": "C",
 117          "\u1E08": "C",
 118          "\xC8": "E",
 119          "\xC9": "E",
 120          "\xCA": "E",
 121          "\xCB": "E",
 122          "\u1EBE": "E",
 123          "\u1E16": "E",
 124          "\u1EC0": "E",
 125          "\u1E14": "E",
 126          "\u1E1C": "E",
 127          "\u0206": "E",
 128          "\u1EBA": "E",
 129          "\u1EBC": "E",
 130          "\u1EB8": "E",
 131          "\u1EC2": "E",
 132          "\u1EC4": "E",
 133          "\u1EC6": "E",
 134          "\xCC": "I",
 135          "\xCD": "I",
 136          "\xCE": "I",
 137          "\xCF": "I",
 138          "\u1E2E": "I",
 139          "\u020A": "I",
 140          "\u1EC8": "I",
 141          "\u1ECA": "I",
 142          "\xD0": "D",
 143          "\xD1": "N",
 144          "\xD2": "O",
 145          "\xD3": "O",
 146          "\xD4": "O",
 147          "\xD5": "O",
 148          "\xD6": "O",
 149          "\xD8": "O",
 150          "\u1ED0": "O",
 151          "\u1E4C": "O",
 152          "\u1E52": "O",
 153          "\u020E": "O",
 154          "\u1ECE": "O",
 155          "\u1ECC": "O",
 156          "\u1ED4": "O",
 157          "\u1ED6": "O",
 158          "\u1ED8": "O",
 159          "\u1EDC": "O",
 160          "\u1EDE": "O",
 161          "\u1EE0": "O",
 162          "\u1EDA": "O",
 163          "\u1EE2": "O",
 164          "\xD9": "U",
 165          "\xDA": "U",
 166          "\xDB": "U",
 167          "\xDC": "U",
 168          "\u1EE6": "U",
 169          "\u1EE4": "U",
 170          "\u1EEC": "U",
 171          "\u1EEE": "U",
 172          "\u1EF0": "U",
 173          "\xDD": "Y",
 174          "\xE0": "a",
 175          "\xE1": "a",
 176          "\xE2": "a",
 177          "\xE3": "a",
 178          "\xE4": "a",
 179          "\xE5": "a",
 180          "\u1EA5": "a",
 181          "\u1EAF": "a",
 182          "\u1EB3": "a",
 183          "\u1EB5": "a",
 184          "\u1EB7": "a",
 185          "\xE6": "ae",
 186          "\u1EA7": "a",
 187          "\u1EB1": "a",
 188          "\u0203": "a",
 189          "\u1EA3": "a",
 190          "\u1EA1": "a",
 191          "\u1EA9": "a",
 192          "\u1EAB": "a",
 193          "\u1EAD": "a",
 194          "\xE7": "c",
 195          "\u1E09": "c",
 196          "\xE8": "e",
 197          "\xE9": "e",
 198          "\xEA": "e",
 199          "\xEB": "e",
 200          "\u1EBF": "e",
 201          "\u1E17": "e",
 202          "\u1EC1": "e",
 203          "\u1E15": "e",
 204          "\u1E1D": "e",
 205          "\u0207": "e",
 206          "\u1EBB": "e",
 207          "\u1EBD": "e",
 208          "\u1EB9": "e",
 209          "\u1EC3": "e",
 210          "\u1EC5": "e",
 211          "\u1EC7": "e",
 212          "\xEC": "i",
 213          "\xED": "i",
 214          "\xEE": "i",
 215          "\xEF": "i",
 216          "\u1E2F": "i",
 217          "\u020B": "i",
 218          "\u1EC9": "i",
 219          "\u1ECB": "i",
 220          "\xF0": "d",
 221          "\xF1": "n",
 222          "\xF2": "o",
 223          "\xF3": "o",
 224          "\xF4": "o",
 225          "\xF5": "o",
 226          "\xF6": "o",
 227          "\xF8": "o",
 228          "\u1ED1": "o",
 229          "\u1E4D": "o",
 230          "\u1E53": "o",
 231          "\u020F": "o",
 232          "\u1ECF": "o",
 233          "\u1ECD": "o",
 234          "\u1ED5": "o",
 235          "\u1ED7": "o",
 236          "\u1ED9": "o",
 237          "\u1EDD": "o",
 238          "\u1EDF": "o",
 239          "\u1EE1": "o",
 240          "\u1EDB": "o",
 241          "\u1EE3": "o",
 242          "\xF9": "u",
 243          "\xFA": "u",
 244          "\xFB": "u",
 245          "\xFC": "u",
 246          "\u1EE7": "u",
 247          "\u1EE5": "u",
 248          "\u1EED": "u",
 249          "\u1EEF": "u",
 250          "\u1EF1": "u",
 251          "\xFD": "y",
 252          "\xFF": "y",
 253          "\u0100": "A",
 254          "\u0101": "a",
 255          "\u0102": "A",
 256          "\u0103": "a",
 257          "\u0104": "A",
 258          "\u0105": "a",
 259          "\u0106": "C",
 260          "\u0107": "c",
 261          "\u0108": "C",
 262          "\u0109": "c",
 263          "\u010A": "C",
 264          "\u010B": "c",
 265          "\u010C": "C",
 266          "\u010D": "c",
 267          "C\u0306": "C",
 268          "c\u0306": "c",
 269          "\u010E": "D",
 270          "\u010F": "d",
 271          "\u0110": "D",
 272          "\u0111": "d",
 273          "\u0112": "E",
 274          "\u0113": "e",
 275          "\u0114": "E",
 276          "\u0115": "e",
 277          "\u0116": "E",
 278          "\u0117": "e",
 279          "\u0118": "E",
 280          "\u0119": "e",
 281          "\u011A": "E",
 282          "\u011B": "e",
 283          "\u011C": "G",
 284          "\u01F4": "G",
 285          "\u011D": "g",
 286          "\u01F5": "g",
 287          "\u011E": "G",
 288          "\u011F": "g",
 289          "\u0120": "G",
 290          "\u0121": "g",
 291          "\u0122": "G",
 292          "\u0123": "g",
 293          "\u0124": "H",
 294          "\u0125": "h",
 295          "\u0126": "H",
 296          "\u0127": "h",
 297          "\u1E2A": "H",
 298          "\u1E2B": "h",
 299          "\u0128": "I",
 300          "\u0129": "i",
 301          "\u012A": "I",
 302          "\u012B": "i",
 303          "\u012C": "I",
 304          "\u012D": "i",
 305          "\u012E": "I",
 306          "\u012F": "i",
 307          "\u0130": "I",
 308          "\u0131": "i",
 309          "\u0132": "IJ",
 310          "\u0133": "ij",
 311          "\u0134": "J",
 312          "\u0135": "j",
 313          "\u0136": "K",
 314          "\u0137": "k",
 315          "\u1E30": "K",
 316          "\u1E31": "k",
 317          "K\u0306": "K",
 318          "k\u0306": "k",
 319          "\u0139": "L",
 320          "\u013A": "l",
 321          "\u013B": "L",
 322          "\u013C": "l",
 323          "\u013D": "L",
 324          "\u013E": "l",
 325          "\u013F": "L",
 326          "\u0140": "l",
 327          "\u0141": "l",
 328          "\u0142": "l",
 329          "\u1E3E": "M",
 330          "\u1E3F": "m",
 331          "M\u0306": "M",
 332          "m\u0306": "m",
 333          "\u0143": "N",
 334          "\u0144": "n",
 335          "\u0145": "N",
 336          "\u0146": "n",
 337          "\u0147": "N",
 338          "\u0148": "n",
 339          "\u0149": "n",
 340          "N\u0306": "N",
 341          "n\u0306": "n",
 342          "\u014C": "O",
 343          "\u014D": "o",
 344          "\u014E": "O",
 345          "\u014F": "o",
 346          "\u0150": "O",
 347          "\u0151": "o",
 348          "\u0152": "OE",
 349          "\u0153": "oe",
 350          "P\u0306": "P",
 351          "p\u0306": "p",
 352          "\u0154": "R",
 353          "\u0155": "r",
 354          "\u0156": "R",
 355          "\u0157": "r",
 356          "\u0158": "R",
 357          "\u0159": "r",
 358          "R\u0306": "R",
 359          "r\u0306": "r",
 360          "\u0212": "R",
 361          "\u0213": "r",
 362          "\u015A": "S",
 363          "\u015B": "s",
 364          "\u015C": "S",
 365          "\u015D": "s",
 366          "\u015E": "S",
 367          "\u0218": "S",
 368          "\u0219": "s",
 369          "\u015F": "s",
 370          "\u0160": "S",
 371          "\u0161": "s",
 372          "\u0162": "T",
 373          "\u0163": "t",
 374          "\u021B": "t",
 375          "\u021A": "T",
 376          "\u0164": "T",
 377          "\u0165": "t",
 378          "\u0166": "T",
 379          "\u0167": "t",
 380          "T\u0306": "T",
 381          "t\u0306": "t",
 382          "\u0168": "U",
 383          "\u0169": "u",
 384          "\u016A": "U",
 385          "\u016B": "u",
 386          "\u016C": "U",
 387          "\u016D": "u",
 388          "\u016E": "U",
 389          "\u016F": "u",
 390          "\u0170": "U",
 391          "\u0171": "u",
 392          "\u0172": "U",
 393          "\u0173": "u",
 394          "\u0216": "U",
 395          "\u0217": "u",
 396          "V\u0306": "V",
 397          "v\u0306": "v",
 398          "\u0174": "W",
 399          "\u0175": "w",
 400          "\u1E82": "W",
 401          "\u1E83": "w",
 402          "X\u0306": "X",
 403          "x\u0306": "x",
 404          "\u0176": "Y",
 405          "\u0177": "y",
 406          "\u0178": "Y",
 407          "Y\u0306": "Y",
 408          "y\u0306": "y",
 409          "\u0179": "Z",
 410          "\u017A": "z",
 411          "\u017B": "Z",
 412          "\u017C": "z",
 413          "\u017D": "Z",
 414          "\u017E": "z",
 415          "\u017F": "s",
 416          "\u0192": "f",
 417          "\u01A0": "O",
 418          "\u01A1": "o",
 419          "\u01AF": "U",
 420          "\u01B0": "u",
 421          "\u01CD": "A",
 422          "\u01CE": "a",
 423          "\u01CF": "I",
 424          "\u01D0": "i",
 425          "\u01D1": "O",
 426          "\u01D2": "o",
 427          "\u01D3": "U",
 428          "\u01D4": "u",
 429          "\u01D5": "U",
 430          "\u01D6": "u",
 431          "\u01D7": "U",
 432          "\u01D8": "u",
 433          "\u01D9": "U",
 434          "\u01DA": "u",
 435          "\u01DB": "U",
 436          "\u01DC": "u",
 437          "\u1EE8": "U",
 438          "\u1EE9": "u",
 439          "\u1E78": "U",
 440          "\u1E79": "u",
 441          "\u01FA": "A",
 442          "\u01FB": "a",
 443          "\u01FC": "AE",
 444          "\u01FD": "ae",
 445          "\u01FE": "O",
 446          "\u01FF": "o",
 447          "\xDE": "TH",
 448          "\xFE": "th",
 449          "\u1E54": "P",
 450          "\u1E55": "p",
 451          "\u1E64": "S",
 452          "\u1E65": "s",
 453          "X\u0301": "X",
 454          "x\u0301": "x",
 455          "\u0403": "\u0413",
 456          "\u0453": "\u0433",
 457          "\u040C": "\u041A",
 458          "\u045C": "\u043A",
 459          "A\u030B": "A",
 460          "a\u030B": "a",
 461          "E\u030B": "E",
 462          "e\u030B": "e",
 463          "I\u030B": "I",
 464          "i\u030B": "i",
 465          "\u01F8": "N",
 466          "\u01F9": "n",
 467          "\u1ED2": "O",
 468          "\u1ED3": "o",
 469          "\u1E50": "O",
 470          "\u1E51": "o",
 471          "\u1EEA": "U",
 472          "\u1EEB": "u",
 473          "\u1E80": "W",
 474          "\u1E81": "w",
 475          "\u1EF2": "Y",
 476          "\u1EF3": "y",
 477          "\u0200": "A",
 478          "\u0201": "a",
 479          "\u0204": "E",
 480          "\u0205": "e",
 481          "\u0208": "I",
 482          "\u0209": "i",
 483          "\u020C": "O",
 484          "\u020D": "o",
 485          "\u0210": "R",
 486          "\u0211": "r",
 487          "\u0214": "U",
 488          "\u0215": "u",
 489          "B\u030C": "B",
 490          "b\u030C": "b",
 491          "\u010C\u0323": "C",
 492          "\u010D\u0323": "c",
 493          "\xCA\u030C": "E",
 494          "\xEA\u030C": "e",
 495          "F\u030C": "F",
 496          "f\u030C": "f",
 497          "\u01E6": "G",
 498          "\u01E7": "g",
 499          "\u021E": "H",
 500          "\u021F": "h",
 501          "J\u030C": "J",
 502          "\u01F0": "j",
 503          "\u01E8": "K",
 504          "\u01E9": "k",
 505          "M\u030C": "M",
 506          "m\u030C": "m",
 507          "P\u030C": "P",
 508          "p\u030C": "p",
 509          "Q\u030C": "Q",
 510          "q\u030C": "q",
 511          "\u0158\u0329": "R",
 512          "\u0159\u0329": "r",
 513          "\u1E66": "S",
 514          "\u1E67": "s",
 515          "V\u030C": "V",
 516          "v\u030C": "v",
 517          "W\u030C": "W",
 518          "w\u030C": "w",
 519          "X\u030C": "X",
 520          "x\u030C": "x",
 521          "Y\u030C": "Y",
 522          "y\u030C": "y",
 523          "A\u0327": "A",
 524          "a\u0327": "a",
 525          "B\u0327": "B",
 526          "b\u0327": "b",
 527          "\u1E10": "D",
 528          "\u1E11": "d",
 529          "\u0228": "E",
 530          "\u0229": "e",
 531          "\u0190\u0327": "E",
 532          "\u025B\u0327": "e",
 533          "\u1E28": "H",
 534          "\u1E29": "h",
 535          "I\u0327": "I",
 536          "i\u0327": "i",
 537          "\u0197\u0327": "I",
 538          "\u0268\u0327": "i",
 539          "M\u0327": "M",
 540          "m\u0327": "m",
 541          "O\u0327": "O",
 542          "o\u0327": "o",
 543          "Q\u0327": "Q",
 544          "q\u0327": "q",
 545          "U\u0327": "U",
 546          "u\u0327": "u",
 547          "X\u0327": "X",
 548          "x\u0327": "x",
 549          "Z\u0327": "Z",
 550          "z\u0327": "z",
 551          "\u0439": "\u0438",
 552          "\u0419": "\u0418",
 553          "\u0451": "\u0435",
 554          "\u0401": "\u0415"
 555        };
 556        var chars = Object.keys(characterMap).join("|");
 557        var allAccents = new RegExp(chars, "g");
 558        var firstAccent = new RegExp(chars, "");
 559        function matcher3(match) {
 560          return characterMap[match];
 561        }
 562        var removeAccents2 = function(string) {
 563          return string.replace(allAccents, matcher3);
 564        };
 565        var hasAccents = function(string) {
 566          return !!string.match(firstAccent);
 567        };
 568        module.exports = removeAccents2;
 569        module.exports.has = hasAccents;
 570        module.exports.remove = removeAccents2;
 571      }
 572    });
 573  
 574    // node_modules/.store/fast-deep-equal@3.1.3-Dk0kpzcWCOUHE1bkOO2LLA/node_modules/fast-deep-equal/es6/index.js
 575    var require_es6 = __commonJS({
 576      "node_modules/.store/fast-deep-equal@3.1.3-Dk0kpzcWCOUHE1bkOO2LLA/node_modules/fast-deep-equal/es6/index.js"(exports, module) {
 577        "use strict";
 578        module.exports = function equal(a, b2) {
 579          if (a === b2) return true;
 580          if (a && b2 && typeof a == "object" && typeof b2 == "object") {
 581            if (a.constructor !== b2.constructor) return false;
 582            var length, i, keys;
 583            if (Array.isArray(a)) {
 584              length = a.length;
 585              if (length != b2.length) return false;
 586              for (i = length; i-- !== 0; )
 587                if (!equal(a[i], b2[i])) return false;
 588              return true;
 589            }
 590            if (a instanceof Map && b2 instanceof Map) {
 591              if (a.size !== b2.size) return false;
 592              for (i of a.entries())
 593                if (!b2.has(i[0])) return false;
 594              for (i of a.entries())
 595                if (!equal(i[1], b2.get(i[0]))) return false;
 596              return true;
 597            }
 598            if (a instanceof Set && b2 instanceof Set) {
 599              if (a.size !== b2.size) return false;
 600              for (i of a.entries())
 601                if (!b2.has(i[0])) return false;
 602              return true;
 603            }
 604            if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b2)) {
 605              length = a.length;
 606              if (length != b2.length) return false;
 607              for (i = length; i-- !== 0; )
 608                if (a[i] !== b2[i]) return false;
 609              return true;
 610            }
 611            if (a.constructor === RegExp) return a.source === b2.source && a.flags === b2.flags;
 612            if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b2.valueOf();
 613            if (a.toString !== Object.prototype.toString) return a.toString() === b2.toString();
 614            keys = Object.keys(a);
 615            length = keys.length;
 616            if (length !== Object.keys(b2).length) return false;
 617            for (i = length; i-- !== 0; )
 618              if (!Object.prototype.hasOwnProperty.call(b2, keys[i])) return false;
 619            for (i = length; i-- !== 0; ) {
 620              var key = keys[i];
 621              if (!equal(a[key], b2[key])) return false;
 622            }
 623            return true;
 624          }
 625          return a !== a && b2 !== b2;
 626        };
 627      }
 628    });
 629  
 630    // node_modules/.store/react-is@19.3.0-h9DBeE4BCfrMSfxZZXEDFw/node_modules/react-is/cjs/react-is.development.js
 631    var require_react_is_development = __commonJS({
 632      "node_modules/.store/react-is@19.3.0-h9DBeE4BCfrMSfxZZXEDFw/node_modules/react-is/cjs/react-is.development.js"(exports) {
 633        "use strict";
 634        (function() {
 635          function typeOf(object) {
 636            if ("object" === typeof object && null !== object) {
 637              var $$typeof = object.$$typeof;
 638              switch ($$typeof) {
 639                case REACT_ELEMENT_TYPE:
 640                  switch (object = object.type, object) {
 641                    case REACT_FRAGMENT_TYPE:
 642                    case REACT_PROFILER_TYPE:
 643                    case REACT_STRICT_MODE_TYPE:
 644                    case REACT_SUSPENSE_TYPE:
 645                    case REACT_SUSPENSE_LIST_TYPE:
 646                    case REACT_VIEW_TRANSITION_TYPE:
 647                      return object;
 648                    default:
 649                      switch (object = object && object.$$typeof, object) {
 650                        case REACT_CONTEXT_TYPE:
 651                        case REACT_FORWARD_REF_TYPE:
 652                        case REACT_LAZY_TYPE:
 653                        case REACT_MEMO_TYPE:
 654                          return object;
 655                        case REACT_CONSUMER_TYPE:
 656                          return object;
 657                        default:
 658                          return $$typeof;
 659                      }
 660                  }
 661                case REACT_PORTAL_TYPE:
 662                  return $$typeof;
 663              }
 664            }
 665          }
 666          var REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for("react.memo"), REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"), REACT_VIEW_TRANSITION_TYPE = /* @__PURE__ */ Symbol.for("react.view_transition"), REACT_CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for("react.client.reference");
 667          exports.ContextConsumer = REACT_CONSUMER_TYPE;
 668          exports.ContextProvider = REACT_CONTEXT_TYPE;
 669          exports.Element = REACT_ELEMENT_TYPE;
 670          exports.ForwardRef = REACT_FORWARD_REF_TYPE;
 671          exports.Fragment = REACT_FRAGMENT_TYPE;
 672          exports.Lazy = REACT_LAZY_TYPE;
 673          exports.Memo = REACT_MEMO_TYPE;
 674          exports.Portal = REACT_PORTAL_TYPE;
 675          exports.Profiler = REACT_PROFILER_TYPE;
 676          exports.StrictMode = REACT_STRICT_MODE_TYPE;
 677          exports.Suspense = REACT_SUSPENSE_TYPE;
 678          exports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;
 679          exports.isContextConsumer = function(object) {
 680            return typeOf(object) === REACT_CONSUMER_TYPE;
 681          };
 682          exports.isContextProvider = function(object) {
 683            return typeOf(object) === REACT_CONTEXT_TYPE;
 684          };
 685          exports.isElement = function(object) {
 686            return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
 687          };
 688          exports.isForwardRef = function(object) {
 689            return typeOf(object) === REACT_FORWARD_REF_TYPE;
 690          };
 691          exports.isFragment = function(object) {
 692            return typeOf(object) === REACT_FRAGMENT_TYPE;
 693          };
 694          exports.isLazy = function(object) {
 695            return typeOf(object) === REACT_LAZY_TYPE;
 696          };
 697          exports.isMemo = function(object) {
 698            return typeOf(object) === REACT_MEMO_TYPE;
 699          };
 700          exports.isPortal = function(object) {
 701            return typeOf(object) === REACT_PORTAL_TYPE;
 702          };
 703          exports.isProfiler = function(object) {
 704            return typeOf(object) === REACT_PROFILER_TYPE;
 705          };
 706          exports.isStrictMode = function(object) {
 707            return typeOf(object) === REACT_STRICT_MODE_TYPE;
 708          };
 709          exports.isSuspense = function(object) {
 710            return typeOf(object) === REACT_SUSPENSE_TYPE;
 711          };
 712          exports.isSuspenseList = function(object) {
 713            return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;
 714          };
 715          exports.isValidElementType = function(type) {
 716            return "string" === typeof type || "function" === typeof type || type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_VIEW_TRANSITION_TYPE || "object" === typeof type && null !== type && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_CONSUMER_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_CLIENT_REFERENCE || void 0 !== type.getModuleId) ? true : false;
 717          };
 718          exports.typeOf = typeOf;
 719        })();
 720      }
 721    });
 722  
 723    // node_modules/.store/react-is@19.3.0-h9DBeE4BCfrMSfxZZXEDFw/node_modules/react-is/index.js
 724    var require_react_is = __commonJS({
 725      "node_modules/.store/react-is@19.3.0-h9DBeE4BCfrMSfxZZXEDFw/node_modules/react-is/index.js"(exports, module) {
 726        "use strict";
 727        if (false) {
 728          module.exports = null;
 729        } else {
 730          module.exports = require_react_is_development();
 731        }
 732      }
 733    });
 734  
 735    // package-external:@wordpress/hooks
 736    var require_hooks = __commonJS({
 737      "package-external:@wordpress/hooks"(exports, module) {
 738        module.exports = window.wp.hooks;
 739      }
 740    });
 741  
 742    // package-external:@wordpress/block-serialization-default-parser
 743    var require_block_serialization_default_parser = __commonJS({
 744      "package-external:@wordpress/block-serialization-default-parser"(exports, module) {
 745        module.exports = window.wp.blockSerializationDefaultParser;
 746      }
 747    });
 748  
 749    // package-external:@wordpress/autop
 750    var require_autop = __commonJS({
 751      "package-external:@wordpress/autop"(exports, module) {
 752        module.exports = window.wp.autop;
 753      }
 754    });
 755  
 756    // package-external:@wordpress/is-shallow-equal
 757    var require_is_shallow_equal = __commonJS({
 758      "package-external:@wordpress/is-shallow-equal"(exports, module) {
 759        module.exports = window.wp.isShallowEqual;
 760      }
 761    });
 762  
 763    // vendor-external:react/jsx-runtime
 764    var require_jsx_runtime = __commonJS({
 765      "vendor-external:react/jsx-runtime"(exports, module) {
 766        module.exports = window.ReactJSXRuntime;
 767      }
 768    });
 769  
 770    // package-external:@wordpress/html-entities
 771    var require_html_entities = __commonJS({
 772      "package-external:@wordpress/html-entities"(exports, module) {
 773        module.exports = window.wp.htmlEntities;
 774      }
 775    });
 776  
 777    // package-external:@wordpress/shortcode
 778    var require_shortcode = __commonJS({
 779      "package-external:@wordpress/shortcode"(exports, module) {
 780        module.exports = window.wp.shortcode;
 781      }
 782    });
 783  
 784    // package-external:@wordpress/blob
 785    var require_blob = __commonJS({
 786      "package-external:@wordpress/blob"(exports, module) {
 787        module.exports = window.wp.blob;
 788      }
 789    });
 790  
 791    // packages/blocks/build-module/index.mjs
 792    var index_exports = {};
 793    __export(index_exports, {
 794      __EXPERIMENTAL_ELEMENTS: () => __EXPERIMENTAL_ELEMENTS,
 795      __EXPERIMENTAL_PATHS_WITH_OVERRIDE: () => __EXPERIMENTAL_PATHS_WITH_OVERRIDE,
 796      __EXPERIMENTAL_STYLE_PROPERTY: () => __EXPERIMENTAL_STYLE_PROPERTY,
 797      __experimentalCloneSanitizedBlock: () => __experimentalCloneSanitizedBlock,
 798      __experimentalGetAccessibleBlockLabel: () => getAccessibleBlockLabel,
 799      __experimentalGetBlockAttributesNamesByRole: () => __experimentalGetBlockAttributesNamesByRole,
 800      __experimentalGetBlockLabel: () => getBlockLabel,
 801      __experimentalSanitizeBlockAttributes: () => __experimentalSanitizeBlockAttributes,
 802      __unstableGetBlockProps: () => getBlockProps,
 803      __unstableGetInnerBlocksProps: () => getInnerBlocksProps,
 804      __unstableSerializeAndClean: () => __unstableSerializeAndClean,
 805      children: () => children_default,
 806      cloneBlock: () => cloneBlock,
 807      cloneSanitizedBlock: () => cloneSanitizedBlock,
 808      createBlock: () => createBlock,
 809      createBlocksFromInnerBlocksTemplate: () => createBlocksFromInnerBlocksTemplate,
 810      doBlocksMatchTemplate: () => doBlocksMatchTemplate,
 811      findTransform: () => findTransform,
 812      getBlockAttributes: () => getBlockAttributes,
 813      getBlockAttributesNamesByRole: () => getBlockAttributesNamesByRole,
 814      getBlockBindingsSource: () => getBlockBindingsSource,
 815      getBlockBindingsSources: () => getBlockBindingsSources,
 816      getBlockContent: () => getBlockInnerHTML,
 817      getBlockDefaultClassName: () => getBlockDefaultClassName,
 818      getBlockFromExample: () => getBlockFromExample,
 819      getBlockMenuDefaultClassName: () => getBlockMenuDefaultClassName,
 820      getBlockSupport: () => getBlockSupport,
 821      getBlockTransforms: () => getBlockTransforms,
 822      getBlockType: () => getBlockType,
 823      getBlockTypes: () => getBlockTypes,
 824      getBlockVariations: () => getBlockVariations,
 825      getCategories: () => getCategories2,
 826      getChildBlockNames: () => getChildBlockNames,
 827      getDefaultBlockName: () => getDefaultBlockName,
 828      getFreeformContentHandlerName: () => getFreeformContentHandlerName,
 829      getGroupingBlockName: () => getGroupingBlockName,
 830      getPhrasingContentSchema: () => deprecatedGetPhrasingContentSchema,
 831      getPossibleBlockTransformations: () => getPossibleBlockTransformations,
 832      getSaveContent: () => getSaveContent,
 833      getSaveElement: () => getSaveElement,
 834      getUnregisteredTypeHandlerName: () => getUnregisteredTypeHandlerName,
 835      hasBlockSupport: () => hasBlockSupport,
 836      hasChildBlocks: () => hasChildBlocks,
 837      hasChildBlocksWithInserterSupport: () => hasChildBlocksWithInserterSupport,
 838      isReusableBlock: () => isReusableBlock,
 839      isTemplatePart: () => isTemplatePart,
 840      isUnmodifiedBlock: () => isUnmodifiedBlock,
 841      isUnmodifiedDefaultBlock: () => isUnmodifiedDefaultBlock,
 842      isValidBlockContent: () => isValidBlockContent,
 843      isValidIcon: () => isValidIcon,
 844      node: () => node_default,
 845      normalizeIconObject: () => normalizeIconObject,
 846      parse: () => parse2,
 847      parseWithAttributeSchema: () => parseWithAttributeSchema,
 848      pasteHandler: () => pasteHandler,
 849      privateApis: () => privateApis,
 850      rawHandler: () => rawHandler,
 851      registerBlockBindingsSource: () => registerBlockBindingsSource,
 852      registerBlockCollection: () => registerBlockCollection,
 853      registerBlockStyle: () => registerBlockStyle,
 854      registerBlockType: () => registerBlockType,
 855      registerBlockVariation: () => registerBlockVariation,
 856      sanitizeBlockAttributes: () => sanitizeBlockAttributes,
 857      serialize: () => serialize,
 858      serializeRawBlock: () => serializeRawBlock,
 859      setCategories: () => setCategories2,
 860      setDefaultBlockName: () => setDefaultBlockName,
 861      setFreeformContentHandlerName: () => setFreeformContentHandlerName,
 862      setGroupingBlockName: () => setGroupingBlockName,
 863      setUnregisteredTypeHandlerName: () => setUnregisteredTypeHandlerName,
 864      store: () => store,
 865      switchToBlockType: () => switchToBlockType,
 866      synchronizeBlocksWithTemplate: () => synchronizeBlocksWithTemplate,
 867      unregisterBlockBindingsSource: () => unregisterBlockBindingsSource,
 868      unregisterBlockStyle: () => unregisterBlockStyle,
 869      unregisterBlockType: () => unregisterBlockType,
 870      unregisterBlockVariation: () => unregisterBlockVariation,
 871      unstable__bootstrapServerSideBlockDefinitions: () => unstable__bootstrapServerSideBlockDefinitions,
 872      updateCategory: () => updateCategory2,
 873      validateBlock: () => validateBlock,
 874      withBlockContentContext: () => withBlockContentContext
 875    });
 876  
 877    // packages/blocks/build-module/store/index.mjs
 878    var import_data5 = __toESM(require_data(), 1);
 879  
 880    // node_modules/.store/tslib@2.8.1-LT-dxu1EkVy7OUDyVf5glQ/node_modules/tslib/tslib.es6.mjs
 881    var __assign = function() {
 882      __assign = Object.assign || function __assign2(t2) {
 883        for (var s, i = 1, n = arguments.length; i < n; i++) {
 884          s = arguments[i];
 885          for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2)) t2[p2] = s[p2];
 886        }
 887        return t2;
 888      };
 889      return __assign.apply(this, arguments);
 890    };
 891  
 892    // node_modules/.store/lower-case@2.0.2-5YZP5nczP5_f_8Vt5KBPjA/node_modules/lower-case/dist.es2015/index.js
 893    function lowerCase(str) {
 894      return str.toLowerCase();
 895    }
 896  
 897    // node_modules/.store/no-case@3.0.4-R4Hzt6qn-erEsTak7ojDpg/node_modules/no-case/dist.es2015/index.js
 898    var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];
 899    var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;
 900    function noCase(input, options) {
 901      if (options === void 0) {
 902        options = {};
 903      }
 904      var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d;
 905      var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0");
 906      var start = 0;
 907      var end = result.length;
 908      while (result.charAt(start) === "\0")
 909        start++;
 910      while (result.charAt(end - 1) === "\0")
 911        end--;
 912      return result.slice(start, end).split("\0").map(transform).join(delimiter);
 913    }
 914    function replace(input, re, value) {
 915      if (re instanceof RegExp)
 916        return input.replace(re, value);
 917      return re.reduce(function(input2, re2) {
 918        return input2.replace(re2, value);
 919      }, input);
 920    }
 921  
 922    // node_modules/.store/pascal-case@3.1.2-khtSA9hpCTEVLYfMgyRdoA/node_modules/pascal-case/dist.es2015/index.js
 923    function pascalCaseTransform(input, index) {
 924      var firstChar = input.charAt(0);
 925      var lowerChars = input.substr(1).toLowerCase();
 926      if (index > 0 && firstChar >= "0" && firstChar <= "9") {
 927        return "_" + firstChar + lowerChars;
 928      }
 929      return "" + firstChar.toUpperCase() + lowerChars;
 930    }
 931    function pascalCase(input, options) {
 932      if (options === void 0) {
 933        options = {};
 934      }
 935      return noCase(input, __assign({ delimiter: "", transform: pascalCaseTransform }, options));
 936    }
 937  
 938    // node_modules/.store/camel-case@4.1.2-5Gz5buNb7xjdcDcS4uJ7xw/node_modules/camel-case/dist.es2015/index.js
 939    function camelCaseTransform(input, index) {
 940      if (index === 0)
 941        return input.toLowerCase();
 942      return pascalCaseTransform(input, index);
 943    }
 944    function camelCase(input, options) {
 945      if (options === void 0) {
 946        options = {};
 947      }
 948      return pascalCase(input, __assign({ transform: camelCaseTransform }, options));
 949    }
 950  
 951    // packages/blocks/build-module/store/reducer.mjs
 952    var import_data2 = __toESM(require_data(), 1);
 953    var import_i18n3 = __toESM(require_i18n(), 1);
 954  
 955    // node_modules/.store/colord@2.10.0-Qx66Amv6c9C3nDPQDizV6Q/node_modules/colord/index.mjs
 956    for (r2 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }, t2 = function(r3) {
 957      return "string" == typeof r3 ? r3.length > 0 : "number" == typeof r3;
 958    }, n = function(r3, t3, n2) {
 959      return void 0 === t3 && (t3 = 0), void 0 === n2 && (n2 = Math.pow(10, t3)), Math.round(n2 * r3) / n2 + 0;
 960    }, u = function(r3, t3, n2) {
 961      return void 0 === t3 && (t3 = 0), void 0 === n2 && (n2 = 1), r3 > n2 ? n2 : r3 > t3 ? r3 : t3;
 962    }, e2 = function(r3) {
 963      return (r3 = isFinite(r3) ? r3 % 360 : 0) < 0 ? r3 + 360 : r3;
 964    }, o2 = function(r3, t3) {
 965      return void 0 === t3 && (t3 = 0), n(r3, t3) % 360;
 966    }, a = function(r3) {
 967      return { r: u(r3.r, 0, 255), g: u(r3.g, 0, 255), b: u(r3.b, 0, 255), a: u(r3.a) };
 968    }, i = function(r3) {
 969      return { r: n(r3.r), g: n(r3.g), b: n(r3.b), a: n(r3.a, 3) };
 970    }, s = /^#([0-9a-f]{3,8})$/i, d2 = function(r3, t3) {
 971      var n2 = r3.charCodeAt(t3);
 972      return (15 & n2) + 9 * (n2 >> 6);
 973    }, h = function(r3, t3) {
 974      return d2(r3, t3) << 4 | d2(r3, t3 + 1);
 975    }, b2 = [], f2 = 0; f2 < 256; f2++) b2.push((f2 < 16 ? "0" : "") + f2.toString(16));
 976    var r2;
 977    var t2;
 978    var n;
 979    var u;
 980    var e2;
 981    var o2;
 982    var a;
 983    var i;
 984    var s;
 985    var d2;
 986    var h;
 987    var b2;
 988    var f2;
 989    var g = function(r2) {
 990      return b2[u(r2, 0, 255)];
 991    };
 992    var c = function(r2) {
 993      var t2 = r2.r, n = r2.g, u = r2.b, e2 = r2.a, o2 = Math.max(t2, n, u), a = o2 - Math.min(t2, n, u), i = a ? o2 === t2 ? (n - u) / a : o2 === n ? 2 + (u - t2) / a : 4 + (t2 - n) / a : 0;
 994      return { h: 60 * (i < 0 ? i + 6 : i), s: o2 ? a / o2 * 100 : 0, v: o2 / 255 * 100, a: e2 };
 995    };
 996    var v = function(r2) {
 997      var t2 = r2.h, n = r2.s, u = r2.v, e2 = r2.a;
 998      t2 = t2 / 360 * 6, n /= 100, u /= 100;
 999      var o2 = Math.floor(t2), a = u * (1 - n), i = u * (1 - (t2 - o2) * n), s = u * (1 - (1 - t2 + o2) * n), d2 = o2 % 6;
1000      return { r: 255 * [u, i, a, a, s, u][d2], g: 255 * [s, u, u, i, a, a][d2], b: 255 * [a, a, s, u, u, i][d2], a: e2 };
1001    };
1002    var l = function(r2) {
1003      return { h: e2(r2.h), s: u(r2.s, 0, 100), l: u(r2.l, 0, 100), a: u(r2.a) };
1004    };
1005    var p = function(r2) {
1006      return { h: o2(r2.h), s: n(r2.s), l: n(r2.l), a: n(r2.a, 3) };
1007    };
1008    var m = function(r2) {
1009      return v((n = (t2 = r2).s, { h: t2.h, s: (n *= ((u = t2.l) < 50 ? u : 100 - u) / 100) > 0 ? 2 * n / (u + n) * 100 : 0, v: u + n, a: t2.a }));
1010      var t2, n, u;
1011    };
1012    var y = function(r2) {
1013      return { h: (t2 = c(r2)).h, s: (e2 = (200 - (n = t2.s)) * (u = t2.v) / 100) > 0 && e2 < 200 ? n * u / 100 / (e2 <= 100 ? e2 : 200 - e2) * 100 : 0, l: e2 / 2, a: t2.a };
1014      var t2, n, u, e2;
1015    };
1016    var N = /^hsla?\(\s*([+-]?(?:\d*\.\d+|\d+))(deg|rad|grad|turn)?\s*,\s*([+-]?(?:\d*\.\d+|\d+))%\s*,\s*([+-]?(?:\d*\.\d+|\d+))%\s*(?:,\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*)?\)$/i;
1017    var x = /^hsla?\(\s*([+-]?(?:\d*\.\d+|\d+))(deg|rad|grad|turn)?\s+([+-]?(?:\d*\.\d+|\d+))%\s+([+-]?(?:\d*\.\d+|\d+))%\s*(?:\/\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*)?\)$/i;
1018    var M = /^rgba?\(\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*,\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*,\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*(?:,\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*)?\)$/i;
1019    var H = /^rgba?\(\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s+([+-]?(?:\d*\.\d+|\d+))(%)?\s+([+-]?(?:\d*\.\d+|\d+))(%)?\s*(?:\/\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*)?\)$/i;
1020    var $ = { string: [[function(r2) {
1021      if (!s.test(r2)) return null;
1022      var t2 = r2.length;
1023      return t2 <= 5 ? { r: 17 * d2(r2, 1), g: 17 * d2(r2, 2), b: 17 * d2(r2, 3), a: 5 === t2 ? n(17 * d2(r2, 4) / 255, 2) : 1 } : 7 === t2 || 9 === t2 ? { r: h(r2, 1), g: h(r2, 3), b: h(r2, 5), a: 9 === t2 ? n(h(r2, 7) / 255, 2) : 1 } : null;
1024    }, "hex"], [function(r2) {
1025      var t2 = M.exec(r2) || H.exec(r2);
1026      return t2 ? t2[2] !== t2[4] || t2[4] !== t2[6] ? null : a({ r: Number(t2[1]) / (t2[2] ? 100 / 255 : 1), g: Number(t2[3]) / (t2[4] ? 100 / 255 : 1), b: Number(t2[5]) / (t2[6] ? 100 / 255 : 1), a: void 0 === t2[7] ? 1 : Number(t2[7]) / (t2[8] ? 100 : 1) }) : null;
1027    }, "rgb"], [function(t2) {
1028      var n = N.exec(t2) || x.exec(t2);
1029      if (!n) return null;
1030      var u, e2, o2 = l({ h: (u = n[1], e2 = n[2], void 0 === e2 && (e2 = "deg"), Number(u) * (r2[e2] || 1)), s: Number(n[3]), l: Number(n[4]), a: void 0 === n[5] ? 1 : Number(n[5]) / (n[6] ? 100 : 1) });
1031      return m(o2);
1032    }, "hsl"]], object: [[function(r2) {
1033      var n = r2.r, u = r2.g, e2 = r2.b, o2 = r2.a, i = void 0 === o2 ? 1 : o2;
1034      return t2(n) && t2(u) && t2(e2) ? a({ r: Number(n), g: Number(u), b: Number(e2), a: Number(i) }) : null;
1035    }, "rgb"], [function(r2) {
1036      var n = r2.h, u = r2.s, e2 = r2.l, o2 = r2.a, a = void 0 === o2 ? 1 : o2;
1037      if (!t2(n) || !t2(u) || !t2(e2)) return null;
1038      var i = l({ h: Number(n), s: Number(u), l: Number(e2), a: Number(a) });
1039      return m(i);
1040    }, "hsl"], [function(r2) {
1041      var n = r2.h, o2 = r2.s, a = r2.v, i = r2.a, s = void 0 === i ? 1 : i;
1042      if (!t2(n) || !t2(o2) || !t2(a)) return null;
1043      var d2 = (function(r3) {
1044        return { h: e2(r3.h), s: u(r3.s, 0, 100), v: u(r3.v, 0, 100), a: u(r3.a) };
1045      })({ h: Number(n), s: Number(o2), v: Number(a), a: Number(s) });
1046      return v(d2);
1047    }, "hsv"]] };
1048    var j = function(r2, t2) {
1049      for (var n = 0; n < t2.length; n++) {
1050        var u = t2[n][0](r2);
1051        if (u) return [u, t2[n][1]];
1052      }
1053      return [null, void 0];
1054    };
1055    var w = function(r2) {
1056      return "string" == typeof r2 ? j(r2.trim(), $.string) : "object" == typeof r2 && null !== r2 ? j(r2, $.object) : [null, void 0];
1057    };
1058    var k = function(r2, t2) {
1059      var n = y(r2);
1060      return { h: n.h, s: u(n.s + 100 * t2, 0, 100), l: n.l, a: n.a };
1061    };
1062    var E = function(r2) {
1063      return (299 * r2.r + 587 * r2.g + 114 * r2.b) / 1e3 / 255;
1064    };
1065    var R = function(r2, t2) {
1066      var n = y(r2);
1067      return { h: n.h, s: n.s, l: u(n.l + 100 * t2, 0, 100), a: n.a };
1068    };
1069    var q = (function() {
1070      function r2(r3) {
1071        this.parsed = w(r3)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 };
1072      }
1073      return r2.prototype.isValid = function() {
1074        return null !== this.parsed;
1075      }, r2.prototype.brightness = function() {
1076        return n(E(this.rgba), 2);
1077      }, r2.prototype.isDark = function() {
1078        return E(this.rgba) < 0.5;
1079      }, r2.prototype.isLight = function() {
1080        return E(this.rgba) >= 0.5;
1081      }, r2.prototype.toHex = function() {
1082        return r3 = i(this.rgba), t2 = r3.r, u = r3.g, e2 = r3.b, a = (o2 = r3.a) < 1 ? g(n(255 * o2)) : "", "#" + g(t2) + g(u) + g(e2) + a;
1083        var r3, t2, u, e2, o2, a;
1084      }, r2.prototype.toRgb = function() {
1085        return i(this.rgba);
1086      }, r2.prototype.toRgbString = function() {
1087        return r3 = i(this.rgba), t2 = r3.r, n = r3.g, u = r3.b, (e2 = r3.a) < 1 ? "rgba(" + t2 + ", " + n + ", " + u + ", " + e2 + ")" : "rgb(" + t2 + ", " + n + ", " + u + ")";
1088        var r3, t2, n, u, e2;
1089      }, r2.prototype.toHsl = function() {
1090        return p(y(this.rgba));
1091      }, r2.prototype.toHslString = function() {
1092        return r3 = p(y(this.rgba)), t2 = r3.h, n = r3.s, u = r3.l, (e2 = r3.a) < 1 ? "hsla(" + t2 + ", " + n + "%, " + u + "%, " + e2 + ")" : "hsl(" + t2 + ", " + n + "%, " + u + "%)";
1093        var r3, t2, n, u, e2;
1094      }, r2.prototype.toHsv = function() {
1095        return r3 = c(this.rgba), { h: o2(r3.h), s: n(r3.s), v: n(r3.v), a: n(r3.a, 3) };
1096        var r3;
1097      }, r2.prototype.invert = function() {
1098        return A({ r: 255 - (r3 = this.rgba).r, g: 255 - r3.g, b: 255 - r3.b, a: r3.a });
1099        var r3;
1100      }, r2.prototype.saturate = function(r3) {
1101        return void 0 === r3 && (r3 = 0.1), A(k(this.rgba, r3));
1102      }, r2.prototype.desaturate = function(r3) {
1103        return void 0 === r3 && (r3 = 0.1), A(k(this.rgba, -r3));
1104      }, r2.prototype.grayscale = function() {
1105        return A(k(this.rgba, -1));
1106      }, r2.prototype.lighten = function(r3) {
1107        return void 0 === r3 && (r3 = 0.1), A(R(this.rgba, r3));
1108      }, r2.prototype.darken = function(r3) {
1109        return void 0 === r3 && (r3 = 0.1), A(R(this.rgba, -r3));
1110      }, r2.prototype.rotate = function(r3) {
1111        return void 0 === r3 && (r3 = 15), this.hue(y(this.rgba).h + r3);
1112      }, r2.prototype.alpha = function(r3) {
1113        return "number" == typeof r3 ? A({ r: (t2 = this.rgba).r, g: t2.g, b: t2.b, a: r3 }) : n(this.rgba.a, 3);
1114        var t2;
1115      }, r2.prototype.hue = function(r3) {
1116        var t2 = y(this.rgba);
1117        return "number" == typeof r3 ? A({ h: r3, s: t2.s, l: t2.l, a: t2.a }) : o2(t2.h);
1118      }, r2.prototype.isEqual = function(r3) {
1119        return this.toHex() === A(r3).toHex();
1120      }, r2;
1121    })();
1122    var A = function(r2) {
1123      return r2 instanceof q ? r2 : new q(r2);
1124    };
1125    var C = [];
1126    var D = function(r2) {
1127      r2.forEach(function(r3) {
1128        C.indexOf(r3) < 0 && (r3(q, $), C.push(r3));
1129      });
1130    };
1131  
1132    // node_modules/.store/colord@2.10.0-Qx66Amv6c9C3nDPQDizV6Q/node_modules/colord/plugins/names.mjs
1133    var e = function(e2, f2) {
1134      var a = { white: "#ffffff", bisque: "#ffe4c4", blue: "#0000ff", cadetblue: "#5f9ea0", chartreuse: "#7fff00", chocolate: "#d2691e", coral: "#ff7f50", antiquewhite: "#faebd7", aqua: "#00ffff", azure: "#f0ffff", whitesmoke: "#f5f5f5", papayawhip: "#ffefd5", plum: "#dda0dd", blanchedalmond: "#ffebcd", black: "#000000", gold: "#ffd700", goldenrod: "#daa520", gainsboro: "#dcdcdc", cornsilk: "#fff8dc", cornflowerblue: "#6495ed", burlywood: "#deb887", aquamarine: "#7fffd4", beige: "#f5f5dc", crimson: "#dc143c", cyan: "#00ffff", darkblue: "#00008b", darkcyan: "#008b8b", darkgoldenrod: "#b8860b", darkkhaki: "#bdb76b", darkgray: "#a9a9a9", darkgreen: "#006400", darkgrey: "#a9a9a9", peachpuff: "#ffdab9", darkmagenta: "#8b008b", darkred: "#8b0000", darkorchid: "#9932cc", darkorange: "#ff8c00", darkslateblue: "#483d8b", gray: "#808080", darkslategray: "#2f4f4f", darkslategrey: "#2f4f4f", deeppink: "#ff1493", deepskyblue: "#00bfff", wheat: "#f5deb3", firebrick: "#b22222", floralwhite: "#fffaf0", ghostwhite: "#f8f8ff", darkviolet: "#9400d3", magenta: "#ff00ff", green: "#008000", dodgerblue: "#1e90ff", grey: "#808080", honeydew: "#f0fff0", hotpink: "#ff69b4", blueviolet: "#8a2be2", forestgreen: "#228b22", lawngreen: "#7cfc00", indianred: "#cd5c5c", indigo: "#4b0082", fuchsia: "#ff00ff", brown: "#a52a2a", maroon: "#800000", mediumblue: "#0000cd", lightcoral: "#f08080", darkturquoise: "#00ced1", lightcyan: "#e0ffff", ivory: "#fffff0", lightyellow: "#ffffe0", lightsalmon: "#ffa07a", lightseagreen: "#20b2aa", linen: "#faf0e6", mediumaquamarine: "#66cdaa", lemonchiffon: "#fffacd", lime: "#00ff00", khaki: "#f0e68c", mediumseagreen: "#3cb371", limegreen: "#32cd32", mediumspringgreen: "#00fa9a", lightskyblue: "#87cefa", lightblue: "#add8e6", midnightblue: "#191970", lightpink: "#ffb6c1", mistyrose: "#ffe4e1", moccasin: "#ffe4b5", mintcream: "#f5fffa", lightslategray: "#778899", lightslategrey: "#778899", navajowhite: "#ffdead", navy: "#000080", mediumvioletred: "#c71585", powderblue: "#b0e0e6", palegoldenrod: "#eee8aa", oldlace: "#fdf5e6", paleturquoise: "#afeeee", mediumturquoise: "#48d1cc", mediumorchid: "#ba55d3", rebeccapurple: "#663399", lightsteelblue: "#b0c4de", mediumslateblue: "#7b68ee", thistle: "#d8bfd8", tan: "#d2b48c", orchid: "#da70d6", mediumpurple: "#9370db", purple: "#800080", pink: "#ffc0cb", skyblue: "#87ceeb", springgreen: "#00ff7f", palegreen: "#98fb98", red: "#ff0000", yellow: "#ffff00", slateblue: "#6a5acd", lavenderblush: "#fff0f5", peru: "#cd853f", palevioletred: "#db7093", violet: "#ee82ee", teal: "#008080", slategray: "#708090", slategrey: "#708090", aliceblue: "#f0f8ff", darkseagreen: "#8fbc8f", darkolivegreen: "#556b2f", greenyellow: "#adff2f", seagreen: "#2e8b57", seashell: "#fff5ee", tomato: "#ff6347", silver: "#c0c0c0", sienna: "#a0522d", lavender: "#e6e6fa", lightgreen: "#90ee90", orange: "#ffa500", orangered: "#ff4500", steelblue: "#4682b4", royalblue: "#4169e1", turquoise: "#40e0d0", yellowgreen: "#9acd32", salmon: "#fa8072", saddlebrown: "#8b4513", sandybrown: "#f4a460", rosybrown: "#bc8f8f", darksalmon: "#e9967a", lightgoldenrodyellow: "#fafad2", snow: "#fffafa", lightgrey: "#d3d3d3", lightgray: "#d3d3d3", dimgray: "#696969", dimgrey: "#696969", olivedrab: "#6b8e23", olive: "#808000" }, r2 = {};
1135      for (var d2 in a) r2[a[d2]] = d2;
1136      var l4 = {};
1137      e2.prototype.toName = function(f3) {
1138        if (!(this.rgba.a || this.rgba.r || this.rgba.g || this.rgba.b)) return "transparent";
1139        var d3, i, n = r2[this.toHex()];
1140        if (n) return n;
1141        if (null == f3 ? void 0 : f3.closest) {
1142          var o2 = this.toRgb(), t2 = 1 / 0, b2 = "black";
1143          if (!l4.length) for (var c2 in a) l4[c2] = new e2(a[c2]).toRgb();
1144          for (var g2 in a) {
1145            var u = (d3 = o2, i = l4[g2], Math.pow(d3.r - i.r, 2) + Math.pow(d3.g - i.g, 2) + Math.pow(d3.b - i.b, 2));
1146            u < t2 && (t2 = u, b2 = g2);
1147          }
1148          return b2;
1149        }
1150      };
1151      f2.string.push([function(f3) {
1152        var r3 = f3.toLowerCase(), d3 = "transparent" === r3 ? "#0000" : a[r3];
1153        return d3 ? new e2(d3).toRgb() : null;
1154      }, "name"]);
1155    };
1156  
1157    // node_modules/.store/colord@2.10.0-Qx66Amv6c9C3nDPQDizV6Q/node_modules/colord/plugins/a11y.mjs
1158    var o = function(o2) {
1159      var t2 = o2 / 255;
1160      return t2 < 0.04045 ? t2 / 12.92 : Math.pow((t2 + 0.055) / 1.055, 2.4);
1161    };
1162    var t = function(t2) {
1163      return 0.2126 * o(t2.r) + 0.7152 * o(t2.g) + 0.0722 * o(t2.b);
1164    };
1165    var r = function(o2) {
1166      o2.prototype.luminance = function() {
1167        return o3 = t(this.rgba), void 0 === (r2 = 2) && (r2 = 0), void 0 === n && (n = Math.pow(10, r2)), Math.round(n * o3) / n + 0;
1168        var o3, r2, n;
1169      }, o2.prototype.contrast = function(r2) {
1170        void 0 === r2 && (r2 = "#FFF");
1171        var n, a, i, e2, v3, u, d2, c2 = r2 instanceof o2 ? r2 : new o2(r2);
1172        return e2 = this.rgba, v3 = c2.toRgb(), u = t(e2), d2 = t(v3), n = u > d2 ? (u + 0.05) / (d2 + 0.05) : (d2 + 0.05) / (u + 0.05), void 0 === (a = 2) && (a = 0), void 0 === i && (i = Math.pow(10, a)), Math.floor(i * n) / i + 0;
1173      }, o2.prototype.isReadable = function(o3, t2) {
1174        return void 0 === o3 && (o3 = "#FFF"), void 0 === t2 && (t2 = {}), this.contrast(o3) >= (e2 = void 0 === (i = (r2 = t2).size) ? "normal" : i, "AAA" === (a = void 0 === (n = r2.level) ? "AA" : n) && "normal" === e2 ? 7 : "AA" === a && "large" === e2 ? 3 : 4.5);
1175        var r2, n, a, i, e2;
1176      };
1177    };
1178  
1179    // packages/blocks/build-module/api/utils.mjs
1180    var import_element = __toESM(require_element(), 1);
1181    var import_i18n2 = __toESM(require_i18n(), 1);
1182    var import_dom = __toESM(require_dom(), 1);
1183    var import_rich_text = __toESM(require_rich_text(), 1);
1184    var import_deprecated = __toESM(require_deprecated(), 1);
1185  
1186    // packages/blocks/build-module/api/constants.mjs
1187    var BLOCK_ICON_DEFAULT = "block-default";
1188    var DEPRECATED_ENTRY_KEYS = [
1189      "attributes",
1190      "supports",
1191      "save",
1192      "migrate",
1193      "isEligible",
1194      "apiVersion"
1195    ];
1196    var __EXPERIMENTAL_STYLE_PROPERTY = {
1197      // Kept for back-compatibility purposes.
1198      "--wp--style--color--link": {
1199        value: ["color", "link"],
1200        support: ["color", "link"]
1201      },
1202      aspectRatio: {
1203        value: ["dimensions", "aspectRatio"],
1204        support: ["dimensions", "aspectRatio"],
1205        useEngine: true
1206      },
1207      background: {
1208        value: ["color", "gradient"],
1209        support: ["color", "gradients"],
1210        useEngine: true
1211      },
1212      backgroundColor: {
1213        value: ["color", "background"],
1214        support: ["color", "background"],
1215        requiresOptOut: true,
1216        useEngine: true
1217      },
1218      backgroundImage: {
1219        value: ["background", "backgroundImage"],
1220        support: ["background", "backgroundImage"],
1221        useEngine: true
1222      },
1223      backgroundRepeat: {
1224        value: ["background", "backgroundRepeat"],
1225        support: ["background", "backgroundRepeat"],
1226        useEngine: true
1227      },
1228      backgroundSize: {
1229        value: ["background", "backgroundSize"],
1230        support: ["background", "backgroundSize"],
1231        useEngine: true
1232      },
1233      backgroundPosition: {
1234        value: ["background", "backgroundPosition"],
1235        support: ["background", "backgroundPosition"],
1236        useEngine: true
1237      },
1238      backgroundGradient: {
1239        value: ["background", "gradient"],
1240        support: ["background", "gradient"],
1241        useEngine: true
1242      },
1243      backgroundClip: {
1244        value: ["background", "backgroundClip"],
1245        support: ["background", "backgroundClip"],
1246        useEngine: true
1247      },
1248      borderColor: {
1249        value: ["border", "color"],
1250        support: ["__experimentalBorder", "color"],
1251        useEngine: true
1252      },
1253      borderRadius: {
1254        value: ["border", "radius"],
1255        support: ["__experimentalBorder", "radius"],
1256        properties: {
1257          borderTopLeftRadius: "topLeft",
1258          borderTopRightRadius: "topRight",
1259          borderBottomLeftRadius: "bottomLeft",
1260          borderBottomRightRadius: "bottomRight"
1261        },
1262        useEngine: true
1263      },
1264      borderStyle: {
1265        value: ["border", "style"],
1266        support: ["__experimentalBorder", "style"],
1267        useEngine: true
1268      },
1269      borderWidth: {
1270        value: ["border", "width"],
1271        support: ["__experimentalBorder", "width"],
1272        useEngine: true
1273      },
1274      borderTopColor: {
1275        value: ["border", "top", "color"],
1276        support: ["__experimentalBorder", "color"],
1277        useEngine: true
1278      },
1279      borderTopStyle: {
1280        value: ["border", "top", "style"],
1281        support: ["__experimentalBorder", "style"],
1282        useEngine: true
1283      },
1284      borderTopWidth: {
1285        value: ["border", "top", "width"],
1286        support: ["__experimentalBorder", "width"],
1287        useEngine: true
1288      },
1289      borderRightColor: {
1290        value: ["border", "right", "color"],
1291        support: ["__experimentalBorder", "color"],
1292        useEngine: true
1293      },
1294      borderRightStyle: {
1295        value: ["border", "right", "style"],
1296        support: ["__experimentalBorder", "style"],
1297        useEngine: true
1298      },
1299      borderRightWidth: {
1300        value: ["border", "right", "width"],
1301        support: ["__experimentalBorder", "width"],
1302        useEngine: true
1303      },
1304      borderBottomColor: {
1305        value: ["border", "bottom", "color"],
1306        support: ["__experimentalBorder", "color"],
1307        useEngine: true
1308      },
1309      borderBottomStyle: {
1310        value: ["border", "bottom", "style"],
1311        support: ["__experimentalBorder", "style"],
1312        useEngine: true
1313      },
1314      borderBottomWidth: {
1315        value: ["border", "bottom", "width"],
1316        support: ["__experimentalBorder", "width"],
1317        useEngine: true
1318      },
1319      borderLeftColor: {
1320        value: ["border", "left", "color"],
1321        support: ["__experimentalBorder", "color"],
1322        useEngine: true
1323      },
1324      borderLeftStyle: {
1325        value: ["border", "left", "style"],
1326        support: ["__experimentalBorder", "style"],
1327        useEngine: true
1328      },
1329      borderLeftWidth: {
1330        value: ["border", "left", "width"],
1331        support: ["__experimentalBorder", "width"],
1332        useEngine: true
1333      },
1334      color: {
1335        value: ["color", "text"],
1336        support: ["color", "text"],
1337        requiresOptOut: true,
1338        useEngine: true
1339      },
1340      columnCount: {
1341        value: ["typography", "textColumns"],
1342        support: ["typography", "textColumns"],
1343        useEngine: true
1344      },
1345      filter: {
1346        value: ["filter", "duotone"],
1347        support: ["filter", "duotone"]
1348      },
1349      linkColor: {
1350        value: ["elements", "link", "color", "text"],
1351        support: ["color", "link"]
1352      },
1353      captionColor: {
1354        value: ["elements", "caption", "color", "text"],
1355        support: ["color", "caption"]
1356      },
1357      buttonColor: {
1358        value: ["elements", "button", "color", "text"],
1359        support: ["color", "button"]
1360      },
1361      buttonBackgroundColor: {
1362        value: ["elements", "button", "color", "background"],
1363        support: ["color", "button"]
1364      },
1365      headingColor: {
1366        value: ["elements", "heading", "color", "text"],
1367        support: ["color", "heading"]
1368      },
1369      headingBackgroundColor: {
1370        value: ["elements", "heading", "color", "background"],
1371        support: ["color", "heading"]
1372      },
1373      fontFamily: {
1374        value: ["typography", "fontFamily"],
1375        support: ["typography", "__experimentalFontFamily"],
1376        useEngine: true
1377      },
1378      fontSize: {
1379        value: ["typography", "fontSize"],
1380        support: ["typography", "fontSize"],
1381        useEngine: true
1382      },
1383      fontStyle: {
1384        value: ["typography", "fontStyle"],
1385        support: ["typography", "__experimentalFontStyle"],
1386        useEngine: true
1387      },
1388      fontWeight: {
1389        value: ["typography", "fontWeight"],
1390        support: ["typography", "__experimentalFontWeight"],
1391        useEngine: true
1392      },
1393      lineHeight: {
1394        value: ["typography", "lineHeight"],
1395        support: ["typography", "lineHeight"],
1396        useEngine: true
1397      },
1398      margin: {
1399        value: ["spacing", "margin"],
1400        support: ["spacing", "margin"],
1401        properties: {
1402          marginTop: "top",
1403          marginRight: "right",
1404          marginBottom: "bottom",
1405          marginLeft: "left"
1406        },
1407        useEngine: true
1408      },
1409      minHeight: {
1410        value: ["dimensions", "minHeight"],
1411        support: ["dimensions", "minHeight"],
1412        useEngine: true
1413      },
1414      minWidth: {
1415        value: ["dimensions", "minWidth"],
1416        support: ["dimensions", "minWidth"],
1417        useEngine: true
1418      },
1419      height: {
1420        value: ["dimensions", "height"],
1421        support: ["dimensions", "height"],
1422        useEngine: true
1423      },
1424      width: {
1425        value: ["dimensions", "width"],
1426        support: ["dimensions", "width"],
1427        useEngine: true
1428      },
1429      padding: {
1430        value: ["spacing", "padding"],
1431        support: ["spacing", "padding"],
1432        properties: {
1433          paddingTop: "top",
1434          paddingRight: "right",
1435          paddingBottom: "bottom",
1436          paddingLeft: "left"
1437        },
1438        useEngine: true
1439      },
1440      textAlign: {
1441        value: ["typography", "textAlign"],
1442        support: ["typography", "textAlign"],
1443        useEngine: false
1444      },
1445      textDecoration: {
1446        value: ["typography", "textDecoration"],
1447        support: ["typography", "__experimentalTextDecoration"],
1448        useEngine: true
1449      },
1450      textTransform: {
1451        value: ["typography", "textTransform"],
1452        support: ["typography", "__experimentalTextTransform"],
1453        useEngine: true
1454      },
1455      letterSpacing: {
1456        value: ["typography", "letterSpacing"],
1457        support: ["typography", "__experimentalLetterSpacing"],
1458        useEngine: true
1459      },
1460      textIndent: {
1461        value: ["typography", "textIndent"],
1462        support: ["typography", "textIndent"],
1463        useEngine: true
1464      },
1465      textShadow: {
1466        value: ["typography", "textShadow"],
1467        support: ["typography", "textShadow"],
1468        useEngine: true
1469      },
1470      writingMode: {
1471        value: ["typography", "writingMode"],
1472        support: ["typography", "__experimentalWritingMode"],
1473        useEngine: true
1474      },
1475      "--wp--style--root--padding": {
1476        value: ["spacing", "padding"],
1477        support: ["spacing", "padding"],
1478        properties: {
1479          "--wp--style--root--padding-top": "top",
1480          "--wp--style--root--padding-right": "right",
1481          "--wp--style--root--padding-bottom": "bottom",
1482          "--wp--style--root--padding-left": "left"
1483        },
1484        rootOnly: true
1485      }
1486    };
1487    var __EXPERIMENTAL_ELEMENTS = {
1488      link: "a:where(:not(.wp-element-button))",
1489      heading: "h1, h2, h3, h4, h5, h6",
1490      h1: "h1",
1491      h2: "h2",
1492      h3: "h3",
1493      h4: "h4",
1494      h5: "h5",
1495      h6: "h6",
1496      button: ".wp-element-button, .wp-block-button__link",
1497      caption: ".wp-element-caption, .wp-block-audio figcaption, .wp-block-embed figcaption, .wp-block-gallery figcaption, .wp-block-image figcaption, .wp-block-table figcaption, .wp-block-video figcaption",
1498      cite: "cite",
1499      label: "label",
1500      select: "select",
1501      textInput: "textarea, input:where([type=email],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=url])"
1502    };
1503    var __EXPERIMENTAL_PATHS_WITH_OVERRIDE = {
1504      "color.duotone": true,
1505      "color.gradients": true,
1506      "color.palette": true,
1507      "dimensions.aspectRatios": true,
1508      "typography.fontSizes": true,
1509      "spacing.spacingSizes": true
1510    };
1511  
1512    // packages/blocks/build-module/api/registration.mjs
1513    var import_data = __toESM(require_data(), 1);
1514    var import_i18n = __toESM(require_i18n(), 1);
1515    var import_warning = __toESM(require_warning(), 1);
1516  
1517    // packages/blocks/build-module/api/i18n-block.json
1518    var i18n_block_default = {
1519      title: "block title",
1520      description: "block description",
1521      keywords: ["block keyword"],
1522      styles: [
1523        {
1524          label: "block style label"
1525        }
1526      ],
1527      variations: [
1528        {
1529          title: "block variation title",
1530          description: "block variation description",
1531          keywords: ["block variation keyword"]
1532        }
1533      ]
1534    };
1535  
1536    // packages/blocks/build-module/lock-unlock.mjs
1537    var import_private_apis = __toESM(require_private_apis(), 1);
1538    var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
1539      "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
1540      "@wordpress/blocks"
1541    );
1542  
1543    // packages/blocks/build-module/api/registration.mjs
1544    function isObject(object) {
1545      return object !== null && typeof object === "object";
1546    }
1547    function unstable__bootstrapServerSideBlockDefinitions(definitions) {
1548      const { addBootstrappedBlockType: addBootstrappedBlockType2 } = unlock((0, import_data.dispatch)(store));
1549      for (const [name, blockType] of Object.entries(definitions)) {
1550        addBootstrappedBlockType2(name, blockType);
1551      }
1552    }
1553    function getBlockSettingsFromMetadata({
1554      textdomain,
1555      ...metadata
1556    }) {
1557      const allowedFields = [
1558        "apiVersion",
1559        "title",
1560        "category",
1561        "parent",
1562        "ancestor",
1563        "icon",
1564        "description",
1565        "keywords",
1566        "attributes",
1567        "providesContext",
1568        "usesContext",
1569        "selectors",
1570        "supports",
1571        "styles",
1572        "example",
1573        "variations",
1574        "blockHooks",
1575        "allowedBlocks"
1576      ];
1577      const settings = Object.fromEntries(
1578        Object.entries(metadata).filter(
1579          ([key]) => allowedFields.includes(key)
1580        )
1581      );
1582      if (textdomain) {
1583        Object.keys(i18n_block_default).forEach((key) => {
1584          if (!settings[key]) {
1585            return;
1586          }
1587          settings[key] = translateBlockSettingUsingI18nSchema(
1588            i18n_block_default[key],
1589            settings[key],
1590            textdomain
1591          );
1592        });
1593      }
1594      return settings;
1595    }
1596    function registerBlockType(blockNameOrMetadata, settings) {
1597      const name = isObject(blockNameOrMetadata) ? blockNameOrMetadata.name : blockNameOrMetadata;
1598      if (typeof name !== "string") {
1599        (0, import_warning.default)("Block names must be strings.");
1600        return;
1601      }
1602      if (!/^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*$/.test(name)) {
1603        (0, import_warning.default)(
1604          "Block names must contain a namespace prefix, include only lowercase alphanumeric characters or dashes, and start with a letter. Example: my-plugin/my-custom-block"
1605        );
1606        return;
1607      }
1608      if ((0, import_data.select)(store).getBlockType(name)) {
1609        (0, import_warning.default)('Block "' + name + '" is already registered.');
1610        return;
1611      }
1612      const { addBootstrappedBlockType: addBootstrappedBlockType2, addUnprocessedBlockType: addUnprocessedBlockType2 } = unlock(
1613        (0, import_data.dispatch)(store)
1614      );
1615      if (isObject(blockNameOrMetadata)) {
1616        const metadata = getBlockSettingsFromMetadata(blockNameOrMetadata);
1617        addBootstrappedBlockType2(name, metadata);
1618      }
1619      addUnprocessedBlockType2(name, settings);
1620      return (0, import_data.select)(store).getBlockType(name);
1621    }
1622    function translateBlockSettingUsingI18nSchema(i18nSchema, settingValue, textdomain) {
1623      if (typeof i18nSchema === "string" && typeof settingValue === "string") {
1624        return (0, import_i18n._x)(settingValue, i18nSchema, textdomain);
1625      }
1626      if (Array.isArray(i18nSchema) && i18nSchema.length && Array.isArray(settingValue)) {
1627        return settingValue.map(
1628          (value) => translateBlockSettingUsingI18nSchema(
1629            i18nSchema[0],
1630            value,
1631            textdomain
1632          )
1633        );
1634      }
1635      if (isObject(i18nSchema) && Object.entries(i18nSchema).length && isObject(settingValue)) {
1636        return Object.keys(settingValue).reduce(
1637          (accumulator, key) => {
1638            if (!i18nSchema[key]) {
1639              accumulator[key] = settingValue[key];
1640              return accumulator;
1641            }
1642            accumulator[key] = translateBlockSettingUsingI18nSchema(
1643              i18nSchema[key],
1644              settingValue[key],
1645              textdomain
1646            );
1647            return accumulator;
1648          },
1649          {}
1650        );
1651      }
1652      return settingValue;
1653    }
1654    function registerBlockCollection(namespace, { title, icon }) {
1655      (0, import_data.dispatch)(store).addBlockCollection(namespace, title, icon);
1656    }
1657    function unregisterBlockType(name) {
1658      const oldBlock = (0, import_data.select)(store).getBlockType(name);
1659      if (!oldBlock) {
1660        (0, import_warning.default)('Block "' + name + '" is not registered.');
1661        return;
1662      }
1663      (0, import_data.dispatch)(store).removeBlockTypes(name);
1664      return oldBlock;
1665    }
1666    function setFreeformContentHandlerName(blockName) {
1667      (0, import_data.dispatch)(store).setFreeformFallbackBlockName(blockName);
1668    }
1669    function getFreeformContentHandlerName() {
1670      return (0, import_data.select)(store).getFreeformFallbackBlockName();
1671    }
1672    function getGroupingBlockName() {
1673      return (0, import_data.select)(store).getGroupingBlockName();
1674    }
1675    function setUnregisteredTypeHandlerName(blockName) {
1676      (0, import_data.dispatch)(store).setUnregisteredFallbackBlockName(blockName);
1677    }
1678    function getUnregisteredTypeHandlerName() {
1679      return (0, import_data.select)(store).getUnregisteredFallbackBlockName();
1680    }
1681    function setDefaultBlockName(name) {
1682      (0, import_data.dispatch)(store).setDefaultBlockName(name);
1683    }
1684    function setGroupingBlockName(name) {
1685      (0, import_data.dispatch)(store).setGroupingBlockName(name);
1686    }
1687    function getDefaultBlockName() {
1688      return (0, import_data.select)(store).getDefaultBlockName();
1689    }
1690    function getBlockType(name) {
1691      return (0, import_data.select)(store)?.getBlockType(name);
1692    }
1693    function getBlockTypes() {
1694      return (0, import_data.select)(store).getBlockTypes();
1695    }
1696    function getBlockSupport(nameOrType, feature, defaultSupports) {
1697      return (0, import_data.select)(store).getBlockSupport(
1698        nameOrType,
1699        feature,
1700        defaultSupports
1701      );
1702    }
1703    function hasBlockSupport(nameOrType, feature, defaultSupports) {
1704      return (0, import_data.select)(store).hasBlockSupport(
1705        nameOrType,
1706        feature,
1707        defaultSupports
1708      );
1709    }
1710    function isReusableBlock(blockOrType) {
1711      return blockOrType?.name === "core/block";
1712    }
1713    function isTemplatePart(blockOrType) {
1714      return blockOrType?.name === "core/template-part";
1715    }
1716    var getChildBlockNames = (blockName) => {
1717      return (0, import_data.select)(store).getChildBlockNames(blockName);
1718    };
1719    var hasChildBlocks = (blockName) => {
1720      return (0, import_data.select)(store).hasChildBlocks(blockName);
1721    };
1722    var hasChildBlocksWithInserterSupport = (blockName) => {
1723      return (0, import_data.select)(store).hasChildBlocksWithInserterSupport(blockName);
1724    };
1725    var registerBlockStyle = (blockNames, styleVariation) => {
1726      (0, import_data.dispatch)(store).addBlockStyles(blockNames, styleVariation);
1727    };
1728    var unregisterBlockStyle = (blockName, styleVariationName) => {
1729      (0, import_data.dispatch)(store).removeBlockStyles(blockName, styleVariationName);
1730    };
1731    var getBlockVariations = (blockName, scope) => {
1732      return (0, import_data.select)(store).getBlockVariations(blockName, scope);
1733    };
1734    var registerBlockVariation = (blockName, variation) => {
1735      if (Array.isArray(variation)) {
1736        for (const v3 of variation) {
1737          if (typeof v3.name !== "string") {
1738            (0, import_warning.default)("Variation names must be unique strings.");
1739          }
1740        }
1741      } else if (typeof variation.name !== "string") {
1742        (0, import_warning.default)("Variation names must be unique strings.");
1743      }
1744      (0, import_data.dispatch)(store).addBlockVariations(blockName, variation);
1745    };
1746    var unregisterBlockVariation = (blockName, variationName) => {
1747      (0, import_data.dispatch)(store).removeBlockVariations(blockName, variationName);
1748    };
1749    var registerBlockBindingsSource = (source) => {
1750      const {
1751        name,
1752        label,
1753        usesContext,
1754        getValues,
1755        setValues,
1756        canUserEditValue,
1757        getFieldsList
1758      } = source;
1759      const existingSource = unlock(
1760        (0, import_data.select)(store)
1761      ).getBlockBindingsSource(name);
1762      const serverProps = ["label", "usesContext"];
1763      for (const prop2 in existingSource) {
1764        if (!serverProps.includes(prop2) && existingSource[prop2]) {
1765          (0, import_warning.default)(
1766            'Block bindings source "' + name + '" is already registered.'
1767          );
1768          return;
1769        }
1770      }
1771      if (!name) {
1772        (0, import_warning.default)("Block bindings source must contain a name.");
1773        return;
1774      }
1775      if (typeof name !== "string") {
1776        (0, import_warning.default)("Block bindings source name must be a string.");
1777        return;
1778      }
1779      if (/[A-Z]+/.test(name)) {
1780        (0, import_warning.default)(
1781          "Block bindings source name must not contain uppercase characters."
1782        );
1783        return;
1784      }
1785      if (!/^[a-z0-9/-]+$/.test(name)) {
1786        (0, import_warning.default)(
1787          "Block bindings source name must contain only valid characters: lowercase characters, hyphens, or digits. Example: my-plugin/my-custom-source."
1788        );
1789        return;
1790      }
1791      if (!/^[a-z0-9-]+\/[a-z0-9-]+$/.test(name)) {
1792        (0, import_warning.default)(
1793          "Block bindings source name must contain a namespace and valid characters. Example: my-plugin/my-custom-source."
1794        );
1795        return;
1796      }
1797      if (!label && !existingSource?.label) {
1798        (0, import_warning.default)("Block bindings source must contain a label.");
1799        return;
1800      }
1801      if (label && typeof label !== "string") {
1802        (0, import_warning.default)("Block bindings source label must be a string.");
1803        return;
1804      }
1805      if (label && existingSource?.label && label !== existingSource?.label) {
1806        (0, import_warning.default)('Block bindings "' + name + '" source label was overridden.');
1807      }
1808      if (usesContext && !Array.isArray(usesContext)) {
1809        (0, import_warning.default)("Block bindings source usesContext must be an array.");
1810        return;
1811      }
1812      if (getValues && typeof getValues !== "function") {
1813        (0, import_warning.default)("Block bindings source getValues must be a function.");
1814        return;
1815      }
1816      if (setValues && typeof setValues !== "function") {
1817        (0, import_warning.default)("Block bindings source setValues must be a function.");
1818        return;
1819      }
1820      if (canUserEditValue && typeof canUserEditValue !== "function") {
1821        (0, import_warning.default)("Block bindings source canUserEditValue must be a function.");
1822        return;
1823      }
1824      if (getFieldsList && typeof getFieldsList !== "function") {
1825        (0, import_warning.default)("Block bindings source getFieldsList must be a function.");
1826        return;
1827      }
1828      return unlock((0, import_data.dispatch)(store)).addBlockBindingsSource(source);
1829    };
1830    function unregisterBlockBindingsSource(name) {
1831      const oldSource = getBlockBindingsSource(name);
1832      if (!oldSource) {
1833        (0, import_warning.default)('Block bindings source "' + name + '" is not registered.');
1834        return;
1835      }
1836      unlock((0, import_data.dispatch)(store)).removeBlockBindingsSource(name);
1837    }
1838    function getBlockBindingsSource(name) {
1839      return unlock((0, import_data.select)(store)).getBlockBindingsSource(name);
1840    }
1841    function getBlockBindingsSources() {
1842      return unlock((0, import_data.select)(store)).getAllBlockBindingsSources();
1843    }
1844  
1845    // packages/blocks/build-module/api/utils.mjs
1846    D([e, r]);
1847    var ICON_COLORS = ["#191e23", "#f8f9f9"];
1848    function isUnmodifiedBlock(block, role) {
1849      const blockAttributes = getBlockType(block.name)?.attributes ?? {};
1850      const attributesByRole = role ? Object.entries(blockAttributes).filter(([key, definition]) => {
1851        if (role === "content" && key === "metadata") {
1852          return Object.keys(
1853            block.attributes[key]?.bindings ?? {}
1854          ).length > 0;
1855        }
1856        return definition.role === role || definition.__experimentalRole === role;
1857      }) : [];
1858      const attributesToCheck = !!attributesByRole.length ? attributesByRole : Object.entries(blockAttributes);
1859      return attributesToCheck.every(([key, definition]) => {
1860        const value = block.attributes[key];
1861        if (definition.hasOwnProperty("default")) {
1862          return value === definition.default;
1863        }
1864        if (definition.type === "rich-text") {
1865          return !value?.length;
1866        }
1867        return value === void 0;
1868      });
1869    }
1870    function isUnmodifiedDefaultBlock(block, role) {
1871      return block.name === getDefaultBlockName() && isUnmodifiedBlock(block, role);
1872    }
1873    function isValidIcon(icon) {
1874      return !!icon && (typeof icon === "string" || (0, import_element.isValidElement)(icon) || typeof icon === "function" || icon instanceof import_element.Component);
1875    }
1876    function normalizeIconObject(icon) {
1877      const resolvedIcon = icon || BLOCK_ICON_DEFAULT;
1878      if (isValidIcon(resolvedIcon)) {
1879        return { src: resolvedIcon };
1880      }
1881      const iconDescriptor = resolvedIcon;
1882      if ("background" in iconDescriptor) {
1883        const colordBgColor = A(iconDescriptor.background);
1884        const getColorContrast = (iconColor) => colordBgColor.contrast(iconColor);
1885        const maxContrast = Math.max(...ICON_COLORS.map(getColorContrast));
1886        return {
1887          ...iconDescriptor,
1888          foreground: iconDescriptor.foreground ? iconDescriptor.foreground : ICON_COLORS.find(
1889            (iconColor) => getColorContrast(iconColor) === maxContrast
1890          ),
1891          shadowColor: colordBgColor.alpha(0.3).toRgbString()
1892        };
1893      }
1894      return iconDescriptor;
1895    }
1896    function normalizeBlockType(blockTypeOrName) {
1897      if (typeof blockTypeOrName === "string") {
1898        return getBlockType(blockTypeOrName);
1899      }
1900      return blockTypeOrName;
1901    }
1902    function getBlockLabel(blockType, attributes, context = "visual") {
1903      const { __experimentalLabel: getLabel, title } = blockType;
1904      const label = getLabel && getLabel(attributes, { context });
1905      if (!label) {
1906        return title;
1907      }
1908      if (label.toPlainText) {
1909        return label.toPlainText();
1910      }
1911      return (0, import_dom.__unstableStripHTML)(label);
1912    }
1913    function getAccessibleBlockLabel(blockType, attributes, position, direction = "vertical") {
1914      const title = blockType?.title ?? "";
1915      const label = blockType ? getBlockLabel(blockType, attributes, "accessibility") : "";
1916      const hasPosition = position !== void 0;
1917      const hasLabel = label && label !== title;
1918      if (hasPosition && direction === "vertical") {
1919        if (hasLabel) {
1920          return (0, import_i18n2.sprintf)(
1921            /* translators: accessibility text. 1: The block title. 2: The block row number. 3: The block label.. */
1922            (0, import_i18n2.__)("%1$s Block. Row %2$d. %3$s"),
1923            title,
1924            position,
1925            label
1926          );
1927        }
1928        return (0, import_i18n2.sprintf)(
1929          /* translators: accessibility text. 1: The block title. 2: The block row number. */
1930          (0, import_i18n2.__)("%1$s Block. Row %2$d"),
1931          title,
1932          position
1933        );
1934      } else if (hasPosition && direction === "horizontal") {
1935        if (hasLabel) {
1936          return (0, import_i18n2.sprintf)(
1937            /* translators: accessibility text. 1: The block title. 2: The block column number. 3: The block label.. */
1938            (0, import_i18n2.__)("%1$s Block. Column %2$d. %3$s"),
1939            title,
1940            position,
1941            label
1942          );
1943        }
1944        return (0, import_i18n2.sprintf)(
1945          /* translators: accessibility text. 1: The block title. 2: The block column number. */
1946          (0, import_i18n2.__)("%1$s Block. Column %2$d"),
1947          title,
1948          position
1949        );
1950      }
1951      if (hasLabel) {
1952        return (0, import_i18n2.sprintf)(
1953          /* translators: accessibility text. 1: The block title. 2: The block label. */
1954          (0, import_i18n2.__)("%1$s Block. %2$s"),
1955          title,
1956          label
1957        );
1958      }
1959      return (0, import_i18n2.sprintf)(
1960        /* translators: accessibility text. %s: The block title. */
1961        (0, import_i18n2.__)("%s Block"),
1962        title
1963      );
1964    }
1965    function getDefault(attributeSchema) {
1966      if (attributeSchema.default !== void 0) {
1967        return attributeSchema.default;
1968      }
1969      if (attributeSchema.type === "rich-text") {
1970        return new import_rich_text.RichTextData();
1971      }
1972      return void 0;
1973    }
1974    function isBlockRegistered(name) {
1975      return getBlockType(name) !== void 0;
1976    }
1977    function sanitizeBlockAttributes(name, attributes) {
1978      const blockType = getBlockType(name);
1979      if (void 0 === blockType) {
1980        throw new Error(`Block type '$name}' is not registered.`);
1981      }
1982      return Object.entries(blockType.attributes).reduce(
1983        (accumulator, [key, schema]) => {
1984          const value = attributes[key];
1985          if (void 0 !== value) {
1986            if (schema.type === "rich-text") {
1987              if (value instanceof import_rich_text.RichTextData) {
1988                accumulator[key] = value;
1989              } else if (typeof value === "string") {
1990                accumulator[key] = import_rich_text.RichTextData.fromHTMLString(value);
1991              }
1992            } else if (schema.type === "string" && value instanceof import_rich_text.RichTextData) {
1993              accumulator[key] = value.toHTMLString();
1994            } else {
1995              accumulator[key] = value;
1996            }
1997          } else {
1998            const _default = getDefault(schema);
1999            if (void 0 !== _default) {
2000              accumulator[key] = _default;
2001            }
2002          }
2003          if (["node", "children"].indexOf(schema.source ?? "") !== -1) {
2004            if (typeof accumulator[key] === "string") {
2005              accumulator[key] = [accumulator[key]];
2006            } else if (!Array.isArray(accumulator[key])) {
2007              accumulator[key] = [];
2008            }
2009          }
2010          return accumulator;
2011        },
2012        {}
2013      );
2014    }
2015    function __experimentalSanitizeBlockAttributes(name, attributes) {
2016      (0, import_deprecated.default)("__experimentalSanitizeBlockAttributes", {
2017        since: "7.1",
2018        alternative: "sanitizeBlockAttributes"
2019      });
2020      return sanitizeBlockAttributes(name, attributes);
2021    }
2022    function getBlockAttributesNamesByRole(name, role) {
2023      const attributes = getBlockType(name)?.attributes;
2024      if (!attributes) {
2025        return [];
2026      }
2027      const attributesNames = Object.keys(attributes);
2028      if (!role) {
2029        return attributesNames;
2030      }
2031      return attributesNames.filter((attributeName) => {
2032        const attribute = attributes[attributeName];
2033        if (attribute?.role === role) {
2034          return true;
2035        }
2036        if (attribute?.__experimentalRole === role) {
2037          (0, import_deprecated.default)("__experimentalRole attribute", {
2038            since: "6.7",
2039            version: "6.8",
2040            alternative: "role attribute",
2041            hint: `Check the block.json of the $name} block.`
2042          });
2043          return true;
2044        }
2045        return false;
2046      });
2047    }
2048    var __experimentalGetBlockAttributesNamesByRole = (...args) => {
2049      (0, import_deprecated.default)("__experimentalGetBlockAttributesNamesByRole", {
2050        since: "6.7",
2051        version: "6.8",
2052        alternative: "getBlockAttributesNamesByRole"
2053      });
2054      return getBlockAttributesNamesByRole(...args);
2055    };
2056    function isContentBlock(name) {
2057      const blockType = getBlockType(name);
2058      const attributes = blockType?.attributes;
2059      const supportsContentRole = blockType?.supports?.contentRole;
2060      if (supportsContentRole) {
2061        return true;
2062      }
2063      if (!attributes) {
2064        return false;
2065      }
2066      return !!Object.keys(attributes)?.some((attributeKey) => {
2067        const attribute = attributes[attributeKey];
2068        return attribute?.role === "content" || attribute?.__experimentalRole === "content";
2069      });
2070    }
2071    function omit(object, keys) {
2072      const keysArray = Array.isArray(keys) ? keys : [keys];
2073      return Object.fromEntries(
2074        Object.entries(object).filter(
2075          ([key]) => !keysArray.includes(key)
2076        )
2077      );
2078    }
2079  
2080    // packages/blocks/build-module/store/reducer.mjs
2081    var DEFAULT_CATEGORIES = [
2082      { slug: "text", title: (0, import_i18n3.__)("Text") },
2083      { slug: "media", title: (0, import_i18n3.__)("Media") },
2084      { slug: "design", title: (0, import_i18n3.__)("Design") },
2085      { slug: "widgets", title: (0, import_i18n3.__)("Widgets") },
2086      { slug: "theme", title: (0, import_i18n3.__)("Theme") },
2087      { slug: "embed", title: (0, import_i18n3.__)("Embeds") },
2088      { slug: "reusable", title: (0, import_i18n3.__)("Reusable blocks") }
2089    ];
2090    function keyBlockTypesByName(types) {
2091      return types.reduce(
2092        (newBlockTypes, block) => ({
2093          ...newBlockTypes,
2094          [block.name]: block
2095        }),
2096        {}
2097      );
2098    }
2099    function getUniqueItemsByName(items) {
2100      return items.reduce((acc, currentItem) => {
2101        if (!acc.some((item) => item.name === currentItem.name)) {
2102          acc.push(currentItem);
2103        }
2104        return acc;
2105      }, []);
2106    }
2107    function bootstrappedBlockTypes(state = {}, action) {
2108      switch (action.type) {
2109        case "ADD_BOOTSTRAPPED_BLOCK_TYPE":
2110          const { name, blockType } = action;
2111          const serverDefinition = state[name];
2112          if (serverDefinition) {
2113            return state;
2114          }
2115          const newDefinition = Object.fromEntries(
2116            Object.entries(blockType).filter(
2117              ([, value]) => value !== null && value !== void 0
2118            ).map(([key, value]) => [camelCase(key), value])
2119          );
2120          newDefinition.name = name;
2121          return {
2122            ...state,
2123            [name]: newDefinition
2124          };
2125        case "REMOVE_BLOCK_TYPES":
2126          return omit(state, action.names);
2127      }
2128      return state;
2129    }
2130    function unprocessedBlockTypes(state = {}, action) {
2131      switch (action.type) {
2132        case "ADD_UNPROCESSED_BLOCK_TYPE":
2133          return {
2134            ...state,
2135            [action.name]: action.blockType
2136          };
2137        case "REMOVE_BLOCK_TYPES":
2138          return omit(state, action.names);
2139      }
2140      return state;
2141    }
2142    function blockTypes(state = {}, action) {
2143      switch (action.type) {
2144        case "ADD_BLOCK_TYPES":
2145          return {
2146            ...state,
2147            ...keyBlockTypesByName(action.blockTypes)
2148          };
2149        case "REMOVE_BLOCK_TYPES":
2150          return omit(state, action.names);
2151      }
2152      return state;
2153    }
2154    function blockStyles(state = {}, action) {
2155      switch (action.type) {
2156        case "ADD_BLOCK_TYPES":
2157          return {
2158            ...state,
2159            ...Object.fromEntries(
2160              Object.entries(
2161                keyBlockTypesByName(action.blockTypes)
2162              ).map(([name, blockType]) => [
2163                name,
2164                getUniqueItemsByName([
2165                  ...(blockType.styles ?? []).map((style) => ({
2166                    ...style,
2167                    source: "block"
2168                  })),
2169                  ...(state[blockType.name] ?? []).filter(
2170                    ({ source }) => "block" !== source
2171                  )
2172                ])
2173              ])
2174            )
2175          };
2176        case "ADD_BLOCK_STYLES":
2177          const updatedStyles = {};
2178          action.blockNames.forEach((blockName) => {
2179            updatedStyles[blockName] = getUniqueItemsByName([
2180              ...state[blockName] ?? [],
2181              ...action.styles
2182            ]);
2183          });
2184          return { ...state, ...updatedStyles };
2185        case "REMOVE_BLOCK_STYLES":
2186          return {
2187            ...state,
2188            [action.blockName]: (state[action.blockName] ?? []).filter(
2189              (style) => action.styleNames.indexOf(style.name) === -1
2190            )
2191          };
2192      }
2193      return state;
2194    }
2195    function blockVariations(state = {}, action) {
2196      switch (action.type) {
2197        case "ADD_BLOCK_TYPES":
2198          return {
2199            ...state,
2200            ...Object.fromEntries(
2201              Object.entries(
2202                keyBlockTypesByName(action.blockTypes)
2203              ).map(([name, blockType]) => {
2204                return [
2205                  name,
2206                  getUniqueItemsByName([
2207                    ...(blockType.variations ?? []).map(
2208                      (variation) => ({
2209                        ...variation,
2210                        source: "block"
2211                      })
2212                    ),
2213                    ...(state[blockType.name] ?? []).filter(
2214                      ({ source }) => "block" !== source
2215                    )
2216                  ])
2217                ];
2218              })
2219            )
2220          };
2221        case "ADD_BLOCK_VARIATIONS":
2222          return {
2223            ...state,
2224            [action.blockName]: getUniqueItemsByName([
2225              ...state[action.blockName] ?? [],
2226              ...action.variations
2227            ])
2228          };
2229        case "REMOVE_BLOCK_VARIATIONS":
2230          return {
2231            ...state,
2232            [action.blockName]: (state[action.blockName] ?? []).filter(
2233              (variation) => action.variationNames.indexOf(variation.name) === -1
2234            )
2235          };
2236      }
2237      return state;
2238    }
2239    function createBlockNameSetterReducer(setActionType) {
2240      return (state = null, action) => {
2241        switch (action.type) {
2242          case "REMOVE_BLOCK_TYPES":
2243            if (action.names.indexOf(state) !== -1) {
2244              return null;
2245            }
2246            return state;
2247          case setActionType:
2248            return action.name || null;
2249        }
2250        return state;
2251      };
2252    }
2253    var defaultBlockName = createBlockNameSetterReducer(
2254      "SET_DEFAULT_BLOCK_NAME"
2255    );
2256    var freeformFallbackBlockName = createBlockNameSetterReducer(
2257      "SET_FREEFORM_FALLBACK_BLOCK_NAME"
2258    );
2259    var unregisteredFallbackBlockName = createBlockNameSetterReducer(
2260      "SET_UNREGISTERED_FALLBACK_BLOCK_NAME"
2261    );
2262    var groupingBlockName = createBlockNameSetterReducer(
2263      "SET_GROUPING_BLOCK_NAME"
2264    );
2265    function categories(state = DEFAULT_CATEGORIES, action) {
2266      switch (action.type) {
2267        case "SET_CATEGORIES":
2268          const uniqueCategories = /* @__PURE__ */ new Map();
2269          (action.categories || []).forEach((category) => {
2270            uniqueCategories.set(category.slug, category);
2271          });
2272          return [...uniqueCategories.values()];
2273        case "UPDATE_CATEGORY": {
2274          if (!action.category || !Object.keys(action.category).length) {
2275            return state;
2276          }
2277          const categoryToChange = state.find(
2278            ({ slug }) => slug === action.slug
2279          );
2280          if (categoryToChange) {
2281            return state.map((category) => {
2282              if (category.slug === action.slug) {
2283                return {
2284                  ...category,
2285                  ...action.category
2286                };
2287              }
2288              return category;
2289            });
2290          }
2291        }
2292      }
2293      return state;
2294    }
2295    function collections(state = {}, action) {
2296      switch (action.type) {
2297        case "ADD_BLOCK_COLLECTION":
2298          return {
2299            ...state,
2300            [action.namespace]: {
2301              title: action.title,
2302              icon: action.icon
2303            }
2304          };
2305        case "REMOVE_BLOCK_COLLECTION":
2306          return omit(state, action.namespace);
2307      }
2308      return state;
2309    }
2310    function getMergedUsesContext(existingUsesContext = [], newUsesContext = []) {
2311      const mergedArrays = Array.from(
2312        new Set(existingUsesContext.concat(newUsesContext))
2313      );
2314      return mergedArrays.length > 0 ? mergedArrays : void 0;
2315    }
2316    function blockBindingsSources(state = {}, action) {
2317      switch (action.type) {
2318        case "ADD_BLOCK_BINDINGS_SOURCE":
2319          return {
2320            ...state,
2321            [action.name]: {
2322              label: action.label || state[action.name]?.label,
2323              usesContext: getMergedUsesContext(
2324                state[action.name]?.usesContext,
2325                action.usesContext
2326              ),
2327              getValues: action.getValues,
2328              setValues: action.setValues,
2329              // Only set `canUserEditValue` if `setValues` is also defined.
2330              canUserEditValue: action.setValues && action.canUserEditValue,
2331              getFieldsList: action.getFieldsList
2332            }
2333          };
2334        case "REMOVE_BLOCK_BINDINGS_SOURCE":
2335          return omit(state, action.name);
2336      }
2337      return state;
2338    }
2339    var reducer_default = (0, import_data2.combineReducers)({
2340      bootstrappedBlockTypes,
2341      unprocessedBlockTypes,
2342      blockTypes,
2343      blockStyles,
2344      blockVariations,
2345      defaultBlockName,
2346      freeformFallbackBlockName,
2347      unregisteredFallbackBlockName,
2348      groupingBlockName,
2349      categories,
2350      collections,
2351      blockBindingsSources
2352    });
2353  
2354    // packages/blocks/build-module/store/selectors.mjs
2355    var selectors_exports = {};
2356    __export(selectors_exports, {
2357      __experimentalHasContentRoleAttribute: () => __experimentalHasContentRoleAttribute,
2358      getActiveBlockVariation: () => getActiveBlockVariation,
2359      getBlockStyles: () => getBlockStyles,
2360      getBlockSupport: () => getBlockSupport2,
2361      getBlockType: () => getBlockType2,
2362      getBlockTypes: () => getBlockTypes2,
2363      getBlockVariations: () => getBlockVariations2,
2364      getCategories: () => getCategories,
2365      getChildBlockNames: () => getChildBlockNames2,
2366      getCollections: () => getCollections,
2367      getDefaultBlockName: () => getDefaultBlockName2,
2368      getDefaultBlockVariation: () => getDefaultBlockVariation,
2369      getFreeformFallbackBlockName: () => getFreeformFallbackBlockName,
2370      getGroupingBlockName: () => getGroupingBlockName2,
2371      getUnregisteredFallbackBlockName: () => getUnregisteredFallbackBlockName,
2372      hasBlockSupport: () => hasBlockSupport2,
2373      hasChildBlocks: () => hasChildBlocks2,
2374      hasChildBlocksWithInserterSupport: () => hasChildBlocksWithInserterSupport2,
2375      isMatchingSearchTerm: () => isMatchingSearchTerm
2376    });
2377    var import_remove_accents = __toESM(require_remove_accents(), 1);
2378    var import_es6 = __toESM(require_es6(), 1);
2379    var import_data4 = __toESM(require_data(), 1);
2380    var import_rich_text2 = __toESM(require_rich_text(), 1);
2381    var import_deprecated3 = __toESM(require_deprecated(), 1);
2382  
2383    // packages/blocks/build-module/store/utils.mjs
2384    var getValueFromObjectPath = (object, path, defaultValue) => {
2385      const normalizedPath = Array.isArray(path) ? path : path.split(".");
2386      let value = object;
2387      normalizedPath.forEach((fieldName) => {
2388        value = value?.[fieldName];
2389      });
2390      return value ?? defaultValue;
2391    };
2392    function isObject2(candidate) {
2393      return typeof candidate === "object" && candidate !== null && candidate.constructor === Object;
2394    }
2395    function matchesAttributes(blockAttributes, variationAttributes) {
2396      if (isObject2(blockAttributes) && isObject2(variationAttributes)) {
2397        return Object.entries(variationAttributes).every(
2398          ([key, value]) => matchesAttributes(blockAttributes?.[key], value)
2399        );
2400      }
2401      return blockAttributes === variationAttributes;
2402    }
2403  
2404    // packages/blocks/build-module/store/private-selectors.mjs
2405    var private_selectors_exports = {};
2406    __export(private_selectors_exports, {
2407      getAllBlockBindingsSources: () => getAllBlockBindingsSources,
2408      getBlockBindingsSource: () => getBlockBindingsSource2,
2409      getBlockBindingsSourceFieldsList: () => getBlockBindingsSourceFieldsList,
2410      getBlockKeyboardShortcuts: () => getBlockKeyboardShortcuts,
2411      getBlockVariationsRaw: () => getBlockVariationsRaw,
2412      getBootstrappedBlockType: () => getBootstrappedBlockType,
2413      getSupportedStyles: () => getSupportedStyles,
2414      getUnprocessedBlockTypes: () => getUnprocessedBlockTypes,
2415      hasContentRoleAttribute: () => hasContentRoleAttribute
2416    });
2417    var import_data3 = __toESM(require_data(), 1);
2418    var import_deprecated2 = __toESM(require_deprecated(), 1);
2419    var ROOT_BLOCK_SUPPORTS = [
2420      "background",
2421      "backgroundColor",
2422      "color",
2423      "linkColor",
2424      "captionColor",
2425      "buttonColor",
2426      "headingColor",
2427      "fontFamily",
2428      "fontSize",
2429      "fontStyle",
2430      "fontWeight",
2431      "lineHeight",
2432      "padding",
2433      "contentSize",
2434      "wideSize",
2435      "blockGap",
2436      "textAlign",
2437      "textDecoration",
2438      "textIndent",
2439      "textTransform",
2440      "textShadow",
2441      "letterSpacing"
2442    ];
2443    var ELEMENT_BLOCK_SUPPORTS = [
2444      ...ROOT_BLOCK_SUPPORTS,
2445      "backgroundGradient",
2446      "backgroundImage",
2447      "backgroundSize",
2448      "borderColor",
2449      "borderRadius",
2450      "borderStyle",
2451      "borderWidth",
2452      "margin",
2453      "shadow",
2454      "writingMode"
2455    ];
2456    function filterElementBlockSupports(blockSupports, name, element) {
2457      return blockSupports.filter((support) => {
2458        if (support === "fontSize" && element === "heading") {
2459          return false;
2460        }
2461        if (support === "textDecoration" && !name && element !== "link") {
2462          return false;
2463        }
2464        if (support === "textTransform" && !name && !(["heading", "h1", "h2", "h3", "h4", "h5", "h6"].includes(
2465          element
2466        ) || element === "button" || element === "caption" || element === "text")) {
2467          return false;
2468        }
2469        if (support === "letterSpacing" && !name && !(["heading", "h1", "h2", "h3", "h4", "h5", "h6"].includes(
2470          element
2471        ) || element === "button" || element === "caption" || element === "text")) {
2472          return false;
2473        }
2474        if (support === "textIndent" && !name) {
2475          return false;
2476        }
2477        if (support === "textColumns" && !name) {
2478          return false;
2479        }
2480        const isElement = !name && !!element && element in __EXPERIMENTAL_ELEMENTS;
2481        if (["blockGap", "contentSize", "wideSize"].includes(support) && isElement) {
2482          return false;
2483        }
2484        return true;
2485      });
2486    }
2487    var getSupportedStyles = (0, import_data3.createSelector)(
2488      (state, name, element) => {
2489        if (!name) {
2490          const isElement = !!element && element in __EXPERIMENTAL_ELEMENTS;
2491          return filterElementBlockSupports(
2492            isElement ? ELEMENT_BLOCK_SUPPORTS : ROOT_BLOCK_SUPPORTS,
2493            name,
2494            element
2495          );
2496        }
2497        const blockType = getBlockType2(state, name);
2498        if (!blockType) {
2499          return [];
2500        }
2501        const supportKeys = [];
2502        const supports = blockType?.supports;
2503        if (supports?.spacing?.blockGap) {
2504          supportKeys.push("blockGap");
2505        }
2506        if (supports?.shadow) {
2507          supportKeys.push("shadow");
2508        }
2509        const stylePropertyMap = __EXPERIMENTAL_STYLE_PROPERTY;
2510        Object.keys(stylePropertyMap).forEach((styleName) => {
2511          if (!stylePropertyMap[styleName].support) {
2512            return;
2513          }
2514          if (stylePropertyMap[styleName].requiresOptOut) {
2515            if (supports && stylePropertyMap[styleName].support[0] in supports && getValueFromObjectPath(
2516              supports,
2517              stylePropertyMap[styleName].support
2518            ) !== false) {
2519              supportKeys.push(styleName);
2520              return;
2521            }
2522          }
2523          if (supports && getValueFromObjectPath(
2524            supports,
2525            stylePropertyMap[styleName].support,
2526            false
2527          )) {
2528            supportKeys.push(styleName);
2529          }
2530        });
2531        return filterElementBlockSupports(supportKeys, name, element);
2532      },
2533      (state, name) => [
2534        state.blockTypes[name]
2535      ]
2536    );
2537    function getBootstrappedBlockType(state, name) {
2538      return state.bootstrappedBlockTypes[name];
2539    }
2540    function getUnprocessedBlockTypes(state) {
2541      return state.unprocessedBlockTypes;
2542    }
2543    function getBlockVariationsRaw(state) {
2544      return state.blockVariations;
2545    }
2546    function getAllBlockBindingsSources(state) {
2547      return state.blockBindingsSources;
2548    }
2549    function getBlockBindingsSource2(state, sourceName) {
2550      return state.blockBindingsSources[sourceName];
2551    }
2552    var getBlockBindingsSourceFieldsList = (0, import_data3.createRegistrySelector)(
2553      (select3) => (0, import_data3.createSelector)(
2554        (state, source, blockContext) => {
2555          if (!source.getFieldsList) {
2556            return [];
2557          }
2558          const context = {};
2559          if (source?.usesContext?.length) {
2560            for (const key of source.usesContext) {
2561              context[key] = blockContext[key];
2562            }
2563          }
2564          return source.getFieldsList({ select: select3, context });
2565        },
2566        (state, source, blockContext) => [source.getFieldsList, source.usesContext, blockContext]
2567      )
2568    );
2569    var getBlockKeyboardShortcuts = (0, import_data3.createSelector)(
2570      (state) => {
2571        const shortcuts = [];
2572        for (const blockName of Object.keys(state.blockTypes)) {
2573          for (const variation of state.blockVariations[blockName] ?? []) {
2574            if (!variation.shortcut) {
2575              continue;
2576            }
2577            shortcuts.push({
2578              ...variation.shortcut,
2579              targetBlockName: blockName,
2580              blockNames: [blockName],
2581              variationName: variation.name
2582            });
2583          }
2584          const transforms = state.blockTypes[blockName]?.transforms;
2585          for (const transform of transforms?.to ?? []) {
2586            if (transform.type !== "block") {
2587              continue;
2588            }
2589            const targetBlockName = transform.blocks?.[0];
2590            if (!targetBlockName) {
2591              continue;
2592            }
2593            for (const shortcut of transform.shortcuts ?? []) {
2594              shortcuts.push({
2595                ...shortcut,
2596                targetBlockName,
2597                blockNames: [blockName],
2598                variationName: shortcut.variationName ?? transform.variationName
2599              });
2600            }
2601          }
2602          for (const transform of transforms?.from ?? []) {
2603            if (transform.type !== "block" || !transform.blocks?.length) {
2604              continue;
2605            }
2606            for (const shortcut of transform.shortcuts ?? []) {
2607              shortcuts.push({
2608                ...shortcut,
2609                targetBlockName: blockName,
2610                blockNames: transform.blocks,
2611                variationName: shortcut.variationName ?? transform.variationName
2612              });
2613            }
2614          }
2615        }
2616        return shortcuts;
2617      },
2618      (state) => [state.blockTypes, state.blockVariations]
2619    );
2620    var hasContentRoleAttribute = (state, blockTypeName) => {
2621      const blockType = getBlockType2(state, blockTypeName);
2622      if (!blockType) {
2623        return false;
2624      }
2625      return Object.values(blockType.attributes).some(
2626        ({ role, __experimentalRole }) => {
2627          if (role === "content") {
2628            return true;
2629          }
2630          if (__experimentalRole === "content") {
2631            (0, import_deprecated2.default)("__experimentalRole attribute", {
2632              since: "6.7",
2633              version: "6.8",
2634              alternative: "role attribute",
2635              hint: `Check the block.json of the $blockTypeName} block.`
2636            });
2637            return true;
2638          }
2639          return false;
2640        }
2641      );
2642    };
2643  
2644    // packages/blocks/build-module/store/selectors.mjs
2645    var getNormalizedBlockType = (state, nameOrType) => "string" === typeof nameOrType ? getBlockType2(state, nameOrType) : nameOrType;
2646    var getBlockTypes2 = (0, import_data4.createSelector)(
2647      (state) => Object.values(state.blockTypes),
2648      (state) => [state.blockTypes]
2649    );
2650    function getBlockType2(state, name) {
2651      return state.blockTypes[name];
2652    }
2653    function getBlockStyles(state, name) {
2654      return state.blockStyles[name];
2655    }
2656    var getBlockVariations2 = (0, import_data4.createSelector)(
2657      (state, blockName, scope) => {
2658        const variations = state.blockVariations[blockName];
2659        if (!variations || !scope) {
2660          return variations;
2661        }
2662        return variations.filter((variation) => {
2663          return (variation.scope || ["block", "inserter"]).includes(
2664            scope
2665          );
2666        });
2667      },
2668      (state, blockName) => [
2669        state.blockVariations[blockName]
2670      ]
2671    );
2672    function getActiveBlockVariation(state, blockName, attributes, scope, innerContent) {
2673      const variations = getBlockVariations2(state, blockName, scope);
2674      if (!variations) {
2675        return variations;
2676      }
2677      if (innerContent) {
2678        const innerContentMatch = variations.find(
2679          (variation) => variation.innerContent && (0, import_es6.default)(variation.innerContent, innerContent)
2680        );
2681        if (innerContentMatch) {
2682          return innerContentMatch;
2683        }
2684      }
2685      const blockType = getBlockType2(state, blockName);
2686      const attributeKeys = Object.keys(blockType?.attributes || {});
2687      let match;
2688      let maxMatchedAttributes = 0;
2689      for (const variation of variations) {
2690        if (variation.innerContent) {
2691          continue;
2692        }
2693        if (Array.isArray(variation.isActive)) {
2694          const definedAttributes = variation.isActive.filter(
2695            (attribute) => {
2696              const topLevelAttribute = attribute.split(".")[0];
2697              return attributeKeys.includes(topLevelAttribute);
2698            }
2699          );
2700          const definedAttributesLength = definedAttributes.length;
2701          if (definedAttributesLength === 0) {
2702            continue;
2703          }
2704          const isMatch = definedAttributes.every((attribute) => {
2705            const variationAttributeValue = getValueFromObjectPath(
2706              variation.attributes,
2707              attribute
2708            );
2709            if (variationAttributeValue === void 0) {
2710              return false;
2711            }
2712            let blockAttributeValue = getValueFromObjectPath(
2713              attributes,
2714              attribute
2715            );
2716            if (blockAttributeValue instanceof import_rich_text2.RichTextData) {
2717              blockAttributeValue = blockAttributeValue.toHTMLString();
2718            }
2719            return matchesAttributes(
2720              blockAttributeValue,
2721              variationAttributeValue
2722            );
2723          });
2724          if (isMatch && definedAttributesLength > maxMatchedAttributes) {
2725            match = variation;
2726            maxMatchedAttributes = definedAttributesLength;
2727          }
2728        } else if (variation.isActive?.(
2729          attributes,
2730          variation.attributes
2731        )) {
2732          return match || variation;
2733        }
2734      }
2735      if (!match && ["block", "transform"].includes(scope)) {
2736        match = variations.find(
2737          (variation) => variation?.isDefault && !Object.hasOwn(variation, "isActive")
2738        );
2739      }
2740      return match;
2741    }
2742    function getDefaultBlockVariation(state, blockName, scope) {
2743      const variations = getBlockVariations2(state, blockName, scope);
2744      const defaultVariation = [...variations || []].reverse().find(({ isDefault }) => !!isDefault);
2745      return defaultVariation || variations?.[0];
2746    }
2747    function getCategories(state) {
2748      return state.categories;
2749    }
2750    function getCollections(state) {
2751      return state.collections;
2752    }
2753    function getDefaultBlockName2(state) {
2754      return state.defaultBlockName;
2755    }
2756    function getFreeformFallbackBlockName(state) {
2757      return state.freeformFallbackBlockName;
2758    }
2759    function getUnregisteredFallbackBlockName(state) {
2760      return state.unregisteredFallbackBlockName;
2761    }
2762    function getGroupingBlockName2(state) {
2763      return state.groupingBlockName;
2764    }
2765    var getChildBlockNames2 = (0, import_data4.createSelector)(
2766      (state, blockName) => {
2767        return getBlockTypes2(state).filter((blockType) => {
2768          return blockType.parent?.includes(blockName);
2769        }).map(({ name }) => name);
2770      },
2771      (state) => [state.blockTypes]
2772    );
2773    var getBlockSupport2 = (state, nameOrType, feature, defaultSupports) => {
2774      const blockType = getNormalizedBlockType(state, nameOrType);
2775      if (!blockType?.supports) {
2776        return defaultSupports;
2777      }
2778      return getValueFromObjectPath(
2779        blockType.supports,
2780        feature,
2781        defaultSupports
2782      );
2783    };
2784    function hasBlockSupport2(state, nameOrType, feature, defaultSupports) {
2785      return !!getBlockSupport2(state, nameOrType, feature, defaultSupports);
2786    }
2787    function getNormalizedSearchTerm(term) {
2788      return (0, import_remove_accents.default)(term ?? "").toLowerCase().trim();
2789    }
2790    function isMatchingSearchTerm(state, nameOrType, searchTerm = "") {
2791      const blockType = getNormalizedBlockType(state, nameOrType);
2792      const normalizedSearchTerm = getNormalizedSearchTerm(searchTerm);
2793      const isSearchMatch = (candidate) => getNormalizedSearchTerm(candidate).includes(normalizedSearchTerm);
2794      return isSearchMatch(blockType?.title) || blockType?.keywords?.some(isSearchMatch) || isSearchMatch(blockType?.category) || typeof blockType?.description === "string" && isSearchMatch(blockType.description);
2795    }
2796    var hasChildBlocks2 = (state, blockName) => {
2797      return getChildBlockNames2(state, blockName).length > 0;
2798    };
2799    var hasChildBlocksWithInserterSupport2 = (state, blockName) => {
2800      return getChildBlockNames2(state, blockName).some((childBlockName) => {
2801        return hasBlockSupport2(state, childBlockName, "inserter", true);
2802      });
2803    };
2804    var __experimentalHasContentRoleAttribute = (...args) => {
2805      (0, import_deprecated3.default)("__experimentalHasContentRoleAttribute", {
2806        since: "6.7",
2807        version: "6.8",
2808        hint: "This is a private selector."
2809      });
2810      return hasContentRoleAttribute(...args);
2811    };
2812  
2813    // packages/blocks/build-module/store/actions.mjs
2814    var actions_exports = {};
2815    __export(actions_exports, {
2816      __experimentalReapplyBlockFilters: () => __experimentalReapplyBlockFilters,
2817      addBlockCollection: () => addBlockCollection,
2818      addBlockStyles: () => addBlockStyles,
2819      addBlockTypes: () => addBlockTypes,
2820      addBlockVariations: () => addBlockVariations,
2821      reapplyBlockTypeFilters: () => reapplyBlockTypeFilters,
2822      removeBlockCollection: () => removeBlockCollection,
2823      removeBlockStyles: () => removeBlockStyles,
2824      removeBlockTypes: () => removeBlockTypes,
2825      removeBlockVariations: () => removeBlockVariations,
2826      setCategories: () => setCategories,
2827      setDefaultBlockName: () => setDefaultBlockName2,
2828      setFreeformFallbackBlockName: () => setFreeformFallbackBlockName,
2829      setGroupingBlockName: () => setGroupingBlockName2,
2830      setUnregisteredFallbackBlockName: () => setUnregisteredFallbackBlockName,
2831      updateCategory: () => updateCategory
2832    });
2833    var import_deprecated5 = __toESM(require_deprecated(), 1);
2834  
2835    // node_modules/.store/is-plain-object@5.1.0-5G_-lUnpSwJHYfRbkIxLrw/node_modules/is-plain-object/dist/is-plain-object.mjs
2836    function isObject3(o2) {
2837      return Object.prototype.toString.call(o2) === "[object Object]";
2838    }
2839    function isPlainObject(o2) {
2840      var ctor, prot;
2841      if (isObject3(o2) === false) return false;
2842      ctor = o2.constructor;
2843      if (ctor === void 0) return true;
2844      prot = ctor.prototype;
2845      if (isObject3(prot) === false) return false;
2846      if (prot.hasOwnProperty("isPrototypeOf") === false) {
2847        return false;
2848      }
2849      return true;
2850    }
2851  
2852    // packages/blocks/build-module/store/process-block-type.mjs
2853    var import_react_is = __toESM(require_react_is(), 1);
2854    var import_deprecated4 = __toESM(require_deprecated(), 1);
2855    var import_hooks = __toESM(require_hooks(), 1);
2856    var import_warning2 = __toESM(require_warning(), 1);
2857    var LEGACY_CATEGORY_MAPPING = {
2858      common: "text",
2859      formatting: "text",
2860      layout: "design"
2861    };
2862    function mergeBlockVariations(bootstrappedVariations = [], clientVariations = []) {
2863      const result = [...bootstrappedVariations];
2864      clientVariations.forEach((clientVariation) => {
2865        const index = result.findIndex(
2866          (bootstrappedVariation) => bootstrappedVariation.name === clientVariation.name
2867        );
2868        if (index !== -1) {
2869          result[index] = { ...result[index], ...clientVariation };
2870        } else {
2871          result.push(clientVariation);
2872        }
2873      });
2874      return result;
2875    }
2876    var processBlockType = (name, blockSettings) => ({
2877      select: select3
2878    }) => {
2879      const bootstrappedBlockType = select3.getBootstrappedBlockType(name);
2880      const blockType = {
2881        apiVersion: 1,
2882        name,
2883        icon: BLOCK_ICON_DEFAULT,
2884        keywords: [],
2885        attributes: {},
2886        providesContext: {},
2887        usesContext: [],
2888        selectors: {},
2889        supports: {},
2890        styles: [],
2891        blockHooks: {},
2892        save: () => null,
2893        ...bootstrappedBlockType,
2894        ...blockSettings,
2895        // blockType.variations can be defined as a filePath.
2896        variations: mergeBlockVariations(
2897          Array.isArray(bootstrappedBlockType?.variations) ? bootstrappedBlockType.variations : [],
2898          Array.isArray(blockSettings?.variations) ? blockSettings.variations : []
2899        )
2900      };
2901      if (!blockType.attributes || typeof blockType.attributes !== "object") {
2902        (0, import_warning2.default)(
2903          'The block "' + name + '" is registering attributes as `null` or `undefined`. Use an empty object (`attributes: {}`) or exclude the `attributes` key.'
2904        );
2905        blockType.attributes = {};
2906      }
2907      const settings = (0, import_hooks.applyFilters)(
2908        "blocks.registerBlockType",
2909        blockType,
2910        name,
2911        null
2912      );
2913      if (settings.apiVersion <= 2) {
2914        (0, import_deprecated4.default)("Block with API version 2 or lower", {
2915          since: "6.9",
2916          hint: `The block "$name}" is registered with API version $settings.apiVersion}. This means that the post editor may work as a non-iframe editor. Since all editors are planned to work as iframes in the future, set the \`apiVersion\` field to 3 and test the block inside the iframe editor.`,
2917          link: "https://developer.wordpress.org/block-editor/reference-guides/block-api/block-api-versions/block-migration-for-iframe-editor-compatibility/"
2918        });
2919      }
2920      if (settings.description && typeof settings.description !== "string") {
2921        (0, import_deprecated4.default)("Declaring non-string block descriptions", {
2922          since: "6.2"
2923        });
2924      }
2925      if (settings.deprecated) {
2926        settings.deprecated = settings.deprecated.map(
2927          (deprecation) => Object.fromEntries(
2928            Object.entries(
2929              // Only keep valid deprecation keys.
2930              (0, import_hooks.applyFilters)(
2931                "blocks.registerBlockType",
2932                // Merge deprecation keys with pre-filter settings
2933                // so that filters that depend on specific keys being
2934                // present don't fail.
2935                {
2936                  // Omit deprecation keys here so that deprecations
2937                  // can opt out of specific keys like "supports".
2938                  ...omit(blockType, DEPRECATED_ENTRY_KEYS),
2939                  ...deprecation
2940                },
2941                blockType.name,
2942                deprecation
2943              )
2944            ).filter(
2945              ([key]) => DEPRECATED_ENTRY_KEYS.includes(key)
2946            )
2947          )
2948        );
2949      }
2950      if (!isPlainObject(settings)) {
2951        (0, import_warning2.default)("Block settings must be a valid object.");
2952        return;
2953      }
2954      if (typeof settings.save !== "function") {
2955        (0, import_warning2.default)('The "save" property must be a valid function.');
2956        return;
2957      }
2958      if ("edit" in settings && !(0, import_react_is.isValidElementType)(settings.edit)) {
2959        (0, import_warning2.default)('The "edit" property must be a valid component.');
2960        return;
2961      }
2962      if (typeof settings.category === "string" && LEGACY_CATEGORY_MAPPING.hasOwnProperty(settings.category)) {
2963        settings.category = LEGACY_CATEGORY_MAPPING[settings.category];
2964      }
2965      if ("category" in settings && !select3.getCategories().some(
2966        ({ slug }) => slug === settings.category
2967      )) {
2968        (0, import_warning2.default)(
2969          'The block "' + name + '" is registered with an invalid category "' + settings.category + '".'
2970        );
2971        delete settings.category;
2972      }
2973      if (!("title" in settings) || settings.title === "") {
2974        (0, import_warning2.default)('The block "' + name + '" must have a title.');
2975        return;
2976      }
2977      if (typeof settings.title !== "string") {
2978        (0, import_warning2.default)("Block titles must be strings.");
2979        return;
2980      }
2981      const icon = normalizeIconObject(settings.icon);
2982      settings.icon = icon;
2983      if (!isValidIcon(icon.src)) {
2984        (0, import_warning2.default)(
2985          "The icon passed is invalid. The icon should be a string, an element, a function, or an object following the specifications documented in https://developer.wordpress.org/block-editor/developers/block-api/block-registration/#icon-optional"
2986        );
2987        return;
2988      }
2989      if (typeof settings?.parent === "string" || settings?.parent instanceof String) {
2990        settings.parent = [settings.parent];
2991        (0, import_warning2.default)(
2992          "Parent must be undefined or an array of strings (block types), but it is a string."
2993        );
2994      }
2995      if (!Array.isArray(settings?.parent) && settings?.parent !== void 0) {
2996        (0, import_warning2.default)(
2997          "Parent must be undefined or an array of block types, but it is " + settings.parent
2998        );
2999        return;
3000      }
3001      if (1 === settings?.parent?.length && name === settings.parent[0]) {
3002        (0, import_warning2.default)(
3003          'Block "' + name + '" cannot be a parent of itself. Please remove the block name from the parent list.'
3004        );
3005        return;
3006      }
3007      return settings;
3008    };
3009  
3010    // packages/blocks/build-module/store/actions.mjs
3011    function addBlockTypes(blockTypes2) {
3012      return {
3013        type: "ADD_BLOCK_TYPES",
3014        blockTypes: Array.isArray(blockTypes2) ? blockTypes2 : [blockTypes2]
3015      };
3016    }
3017    function reapplyBlockTypeFilters() {
3018      return ({ dispatch: dispatch3, select: select3 }) => {
3019        const processedBlockTypes = [];
3020        for (const [name, settings] of Object.entries(
3021          select3.getUnprocessedBlockTypes()
3022        )) {
3023          const result = dispatch3(processBlockType(name, settings));
3024          if (result) {
3025            processedBlockTypes.push(result);
3026          }
3027        }
3028        if (!processedBlockTypes.length) {
3029          return;
3030        }
3031        dispatch3.addBlockTypes(processedBlockTypes);
3032      };
3033    }
3034    function __experimentalReapplyBlockFilters() {
3035      (0, import_deprecated5.default)(
3036        'wp.data.dispatch( "core/blocks" ).__experimentalReapplyBlockFilters',
3037        {
3038          since: "6.4",
3039          alternative: "reapplyBlockFilters"
3040        }
3041      );
3042      return reapplyBlockTypeFilters();
3043    }
3044    function removeBlockTypes(names) {
3045      return {
3046        type: "REMOVE_BLOCK_TYPES",
3047        names: Array.isArray(names) ? names : [names]
3048      };
3049    }
3050    function addBlockStyles(blockNames, styles) {
3051      return {
3052        type: "ADD_BLOCK_STYLES",
3053        styles: Array.isArray(styles) ? styles : [styles],
3054        blockNames: Array.isArray(blockNames) ? blockNames : [blockNames]
3055      };
3056    }
3057    function removeBlockStyles(blockName, styleNames) {
3058      return {
3059        type: "REMOVE_BLOCK_STYLES",
3060        styleNames: Array.isArray(styleNames) ? styleNames : [styleNames],
3061        blockName
3062      };
3063    }
3064    function addBlockVariations(blockName, variations) {
3065      return {
3066        type: "ADD_BLOCK_VARIATIONS",
3067        variations: Array.isArray(variations) ? variations : [variations],
3068        blockName
3069      };
3070    }
3071    function removeBlockVariations(blockName, variationNames) {
3072      return {
3073        type: "REMOVE_BLOCK_VARIATIONS",
3074        variationNames: Array.isArray(variationNames) ? variationNames : [variationNames],
3075        blockName
3076      };
3077    }
3078    function setDefaultBlockName2(name) {
3079      return {
3080        type: "SET_DEFAULT_BLOCK_NAME",
3081        name
3082      };
3083    }
3084    function setFreeformFallbackBlockName(name) {
3085      return {
3086        type: "SET_FREEFORM_FALLBACK_BLOCK_NAME",
3087        name
3088      };
3089    }
3090    function setUnregisteredFallbackBlockName(name) {
3091      return {
3092        type: "SET_UNREGISTERED_FALLBACK_BLOCK_NAME",
3093        name
3094      };
3095    }
3096    function setGroupingBlockName2(name) {
3097      return {
3098        type: "SET_GROUPING_BLOCK_NAME",
3099        name
3100      };
3101    }
3102    function setCategories(categories2) {
3103      return {
3104        type: "SET_CATEGORIES",
3105        categories: categories2
3106      };
3107    }
3108    function updateCategory(slug, category) {
3109      return {
3110        type: "UPDATE_CATEGORY",
3111        slug,
3112        category
3113      };
3114    }
3115    function addBlockCollection(namespace, title, icon) {
3116      return {
3117        type: "ADD_BLOCK_COLLECTION",
3118        namespace,
3119        title,
3120        icon
3121      };
3122    }
3123    function removeBlockCollection(namespace) {
3124      return {
3125        type: "REMOVE_BLOCK_COLLECTION",
3126        namespace
3127      };
3128    }
3129  
3130    // packages/blocks/build-module/store/private-actions.mjs
3131    var private_actions_exports = {};
3132    __export(private_actions_exports, {
3133      addBlockBindingsSource: () => addBlockBindingsSource,
3134      addBootstrappedBlockType: () => addBootstrappedBlockType,
3135      addUnprocessedBlockType: () => addUnprocessedBlockType,
3136      removeBlockBindingsSource: () => removeBlockBindingsSource
3137    });
3138    function addBootstrappedBlockType(name, blockType) {
3139      return {
3140        type: "ADD_BOOTSTRAPPED_BLOCK_TYPE",
3141        name,
3142        blockType
3143      };
3144    }
3145    function addUnprocessedBlockType(name, blockType) {
3146      return ({ dispatch: dispatch3 }) => {
3147        dispatch3({ type: "ADD_UNPROCESSED_BLOCK_TYPE", name, blockType });
3148        const processedBlockType = dispatch3(
3149          processBlockType(name, blockType)
3150        );
3151        if (!processedBlockType) {
3152          return;
3153        }
3154        dispatch3.addBlockTypes(processedBlockType);
3155      };
3156    }
3157    function addBlockBindingsSource(source) {
3158      return {
3159        type: "ADD_BLOCK_BINDINGS_SOURCE",
3160        name: source.name,
3161        label: source.label,
3162        usesContext: source.usesContext,
3163        getValues: source.getValues,
3164        setValues: source.setValues,
3165        canUserEditValue: source.canUserEditValue,
3166        getFieldsList: source.getFieldsList
3167      };
3168    }
3169    function removeBlockBindingsSource(name) {
3170      return {
3171        type: "REMOVE_BLOCK_BINDINGS_SOURCE",
3172        name
3173      };
3174    }
3175  
3176    // packages/blocks/build-module/store/constants.mjs
3177    var STORE_NAME = "core/blocks";
3178  
3179    // packages/blocks/build-module/store/index.mjs
3180    var store = (0, import_data5.createReduxStore)(STORE_NAME, {
3181      reducer: reducer_default,
3182      selectors: selectors_exports,
3183      actions: actions_exports
3184    });
3185    (0, import_data5.register)(store);
3186    unlock(store).registerPrivateSelectors(private_selectors_exports);
3187    unlock(store).registerPrivateActions(private_actions_exports);
3188  
3189    // node_modules/.store/uuid@14.0.2-ALlTd6-Rf9bZs703d7TIjQ/node_modules/uuid/dist/stringify.js
3190    var byteToHex = [];
3191    for (let i = 0; i < 256; ++i) {
3192      byteToHex.push((i + 256).toString(16).slice(1));
3193    }
3194    function unsafeStringify(arr, offset = 0) {
3195      return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
3196    }
3197  
3198    // node_modules/.store/uuid@14.0.2-ALlTd6-Rf9bZs703d7TIjQ/node_modules/uuid/dist/rng.js
3199    var rnds8 = new Uint8Array(16);
3200    function rng() {
3201      return crypto.getRandomValues(rnds8);
3202    }
3203  
3204    // node_modules/.store/uuid@14.0.2-ALlTd6-Rf9bZs703d7TIjQ/node_modules/uuid/dist/v4.js
3205    function v4(options, buf, offset) {
3206      if (!buf && !options && crypto.randomUUID) {
3207        return crypto.randomUUID();
3208      }
3209      return _v4(options, buf, offset);
3210    }
3211    function _v4(options, buf, offset) {
3212      options = options || {};
3213      const rnds = options.random ?? options.rng?.() ?? rng();
3214      if (rnds.length < 16) {
3215        throw new Error("Random bytes length must be >= 16");
3216      }
3217      rnds[6] = rnds[6] & 15 | 64;
3218      rnds[8] = rnds[8] & 63 | 128;
3219      if (buf) {
3220        offset = offset || 0;
3221        if (offset < 0 || offset + 16 > buf.length) {
3222          throw new RangeError(`UUID byte range $offset}:$offset + 15} is out of buffer bounds`);
3223        }
3224        for (let i = 0; i < 16; ++i) {
3225          buf[offset + i] = rnds[i];
3226        }
3227        return buf;
3228      }
3229      return unsafeStringify(rnds);
3230    }
3231    var v4_default = v4;
3232  
3233    // packages/blocks/build-module/api/factory.mjs
3234    var import_hooks2 = __toESM(require_hooks(), 1);
3235    var import_deprecated6 = __toESM(require_deprecated(), 1);
3236    var import_warning3 = __toESM(require_warning(), 1);
3237    var isBlockTypeTransform = (transform) => transform?.type === "block";
3238    var getBlockTypeWithTransformMetadata = (blockType, transform) => transform.variationName ? { ...blockType, variationName: transform.variationName } : blockType;
3239    function createBlock(name, attributes = {}, innerBlocks = [], innerContent) {
3240      if (!isBlockRegistered(name)) {
3241        return createBlock("core/missing", {
3242          originalName: name,
3243          originalContent: "",
3244          originalUndelimitedContent: ""
3245        });
3246      }
3247      const sanitizedAttributes = sanitizeBlockAttributes(name, attributes);
3248      const clientId = v4_default();
3249      const block = {
3250        clientId,
3251        name,
3252        isValid: true,
3253        attributes: sanitizedAttributes,
3254        innerBlocks
3255      };
3256      if (innerContent) {
3257        if (name === "core/html") {
3258          block.innerContent = innerContent;
3259        } else {
3260          (0, import_warning3.default)(
3261            `The innerContent argument passed to createBlock for the "$name}" block was ignored. Only the Custom HTML block stores static inner content.`
3262          );
3263        }
3264      }
3265      return block;
3266    }
3267    function createBlocksFromInnerBlocksTemplate(innerBlocksOrTemplate = []) {
3268      return innerBlocksOrTemplate.map((innerBlock) => {
3269        const innerBlockTemplate = Array.isArray(innerBlock) ? innerBlock : [
3270          innerBlock.name,
3271          innerBlock.attributes,
3272          innerBlock.innerBlocks,
3273          innerBlock.innerContent
3274        ];
3275        const [name, attributes, innerBlocks = [], innerContent] = innerBlockTemplate;
3276        return createBlock(
3277          name,
3278          attributes,
3279          createBlocksFromInnerBlocksTemplate(
3280            innerBlocks
3281          ),
3282          innerContent
3283        );
3284      });
3285    }
3286    function cloneSanitizedBlock(block, mergeAttributes = {}, newInnerBlocks) {
3287      const { name } = block;
3288      if (!isBlockRegistered(name)) {
3289        return createBlock("core/missing", {
3290          originalName: name,
3291          originalContent: "",
3292          originalUndelimitedContent: ""
3293        });
3294      }
3295      const clientId = v4_default();
3296      const sanitizedAttributes = sanitizeBlockAttributes(name, {
3297        ...block.attributes,
3298        ...mergeAttributes
3299      });
3300      return {
3301        ...block,
3302        clientId,
3303        attributes: sanitizedAttributes,
3304        innerBlocks: newInnerBlocks || block.innerBlocks.map(
3305          (innerBlock) => cloneSanitizedBlock(innerBlock)
3306        )
3307      };
3308    }
3309    function __experimentalCloneSanitizedBlock(block, mergeAttributes = {}, newInnerBlocks) {
3310      (0, import_deprecated6.default)("__experimentalCloneSanitizedBlock", {
3311        since: "7.1",
3312        alternative: "cloneSanitizedBlock"
3313      });
3314      return cloneSanitizedBlock(block, mergeAttributes, newInnerBlocks);
3315    }
3316    function cloneBlock(block, mergeAttributes = {}, newInnerBlocks) {
3317      const clientId = v4_default();
3318      return {
3319        ...block,
3320        clientId,
3321        attributes: {
3322          ...block.attributes,
3323          ...mergeAttributes
3324        },
3325        innerBlocks: newInnerBlocks || block.innerBlocks.map((innerBlock) => cloneBlock(innerBlock))
3326      };
3327    }
3328    var isPossibleTransformForSource = (transform, direction, blocks) => {
3329      if (!blocks.length) {
3330        return false;
3331      }
3332      const isMultiBlock = blocks.length > 1;
3333      const firstBlockName = blocks[0].name;
3334      const isValidForMultiBlocks = isWildcardBlockTransform(transform) || !isMultiBlock || transform.isMultiBlock;
3335      if (!isValidForMultiBlocks) {
3336        return false;
3337      }
3338      if (!isWildcardBlockTransform(transform) && !blocks.every((block) => block.name === firstBlockName)) {
3339        return false;
3340      }
3341      const sourceBlock = blocks[0];
3342      const hasMatchingName = direction !== "from" || transform.blocks.indexOf(sourceBlock.name) !== -1 || isWildcardBlockTransform(transform);
3343      if (!hasMatchingName) {
3344        return false;
3345      }
3346      if (!isMultiBlock && direction === "from" && isContainerGroupBlock(sourceBlock.name) && isContainerGroupBlock(transform.blockName)) {
3347        return false;
3348      }
3349      if (!maybeCheckTransformIsMatch(transform, blocks)) {
3350        return false;
3351      }
3352      return true;
3353    };
3354    var getBlockTypesForPossibleFromTransforms = (blocks) => {
3355      if (!blocks.length) {
3356        return [];
3357      }
3358      const allBlockTypes = getBlockTypes();
3359      const blockTypesWithPossibleFromTransforms = allBlockTypes.flatMap(
3360        (blockType) => {
3361          const fromTransforms = getBlockTransforms("from", blockType.name);
3362          return fromTransforms.filter(isBlockTypeTransform).filter(
3363            (transform) => isPossibleTransformForSource(transform, "from", blocks)
3364          ).map(
3365            (transform) => getBlockTypeWithTransformMetadata(blockType, transform)
3366          );
3367        }
3368      );
3369      return blockTypesWithPossibleFromTransforms;
3370    };
3371    var getBlockTypesForPossibleToTransforms = (blocks) => {
3372      if (!blocks.length) {
3373        return [];
3374      }
3375      const sourceBlock = blocks[0];
3376      const blockType = getBlockType(sourceBlock.name);
3377      const transformsTo = blockType ? getBlockTransforms("to", blockType.name) : [];
3378      const possibleTransforms = transformsTo.filter(isBlockTypeTransform).filter(
3379        (transform) => isPossibleTransformForSource(transform, "to", blocks)
3380      );
3381      return possibleTransforms.flatMap((transformation) => {
3382        return (transformation.blocks ?? []).map((name) => {
3383          const transformedBlockType = getBlockType(name);
3384          return transformedBlockType ? getBlockTypeWithTransformMetadata(
3385            transformedBlockType,
3386            transformation
3387          ) : void 0;
3388        });
3389      }).filter((bt2) => !!bt2);
3390    };
3391    var isWildcardBlockTransform = (t2) => isBlockTypeTransform(t2) && Array.isArray(t2.blocks) && t2.blocks.includes("*");
3392    var isContainerGroupBlock = (name) => name === getGroupingBlockName();
3393    function getPossibleBlockTransformations(blocks) {
3394      if (!blocks.length) {
3395        return [];
3396      }
3397      const blockTypesForFromTransforms = getBlockTypesForPossibleFromTransforms(blocks);
3398      const blockTypesForToTransforms = getBlockTypesForPossibleToTransforms(blocks);
3399      const blockTypesByNameAndVariation = /* @__PURE__ */ new Map();
3400      for (const blockType of [
3401        ...blockTypesForFromTransforms,
3402        ...blockTypesForToTransforms
3403      ]) {
3404        const key = blockType.variationName ? `$blockType.name}/$blockType.variationName}` : blockType.name;
3405        if (!blockTypesByNameAndVariation.has(key)) {
3406          blockTypesByNameAndVariation.set(key, blockType);
3407        }
3408      }
3409      return [...blockTypesByNameAndVariation.values()];
3410    }
3411    function findTransform(transforms, predicate) {
3412      const priority = (t2) => t2.priority ?? 10;
3413      const candidates = transforms.filter((t2) => predicate(t2)).toSorted((t1, t2) => priority(t1) - priority(t2));
3414      return candidates.length > 0 ? candidates[0] : null;
3415    }
3416    function getBlockTransforms(direction, blockTypeOrName) {
3417      if (blockTypeOrName === void 0) {
3418        return getBlockTypes().map(({ name }) => getBlockTransforms(direction, name)).flat();
3419      }
3420      const blockType = normalizeBlockType(blockTypeOrName);
3421      const directionTransforms = blockType?.transforms?.[direction];
3422      if (!blockType || !Array.isArray(directionTransforms)) {
3423        return [];
3424      }
3425      return directionTransforms.map((transform) => ({
3426        ...transform,
3427        blockName: blockType.name
3428      }));
3429    }
3430    function maybeCheckTransformIsMatch(transform, blocks) {
3431      if (typeof transform.isMatch !== "function") {
3432        return true;
3433      }
3434      const sourceBlock = blocks[0];
3435      const attributes = transform.isMultiBlock ? blocks.map((block2) => block2.attributes) : sourceBlock.attributes;
3436      const block = transform.isMultiBlock ? blocks : sourceBlock;
3437      return transform.isMatch(attributes, block);
3438    }
3439    function switchToBlockType(blocks, name, variationName) {
3440      const blocksArray = Array.isArray(blocks) ? blocks : [blocks];
3441      const isMultiBlock = blocksArray.length > 1;
3442      const firstBlock = blocksArray[0];
3443      const sourceName = firstBlock.name;
3444      const transformationsFrom = getBlockTransforms("from", name).filter(
3445        isBlockTypeTransform
3446      );
3447      const transformationsTo = getBlockTransforms("to", sourceName).filter(
3448        isBlockTypeTransform
3449      );
3450      const isMatchingVariation = (t2) => variationName ? t2.variationName === variationName : !t2.variationName;
3451      const transformation = findTransform(
3452        transformationsTo,
3453        (t2) => isMatchingVariation(t2) && (isWildcardBlockTransform(t2) || t2.blocks.indexOf(name) !== -1) && (!isMultiBlock || !!t2.isMultiBlock) && maybeCheckTransformIsMatch(t2, blocksArray)
3454      ) || findTransform(
3455        transformationsFrom,
3456        (t2) => isMatchingVariation(t2) && (isWildcardBlockTransform(t2) || t2.blocks.indexOf(sourceName) !== -1) && (!isMultiBlock || !!t2.isMultiBlock) && maybeCheckTransformIsMatch(t2, blocksArray)
3457      );
3458      if (!transformation) {
3459        return null;
3460      }
3461      let transformationResults;
3462      if (transformation.isMultiBlock) {
3463        if ("__experimentalConvert" in transformation) {
3464          transformationResults = transformation.__experimentalConvert(blocksArray);
3465        } else {
3466          transformationResults = transformation.transform(
3467            blocksArray.map((currentBlock) => currentBlock.attributes),
3468            blocksArray.map((currentBlock) => currentBlock.innerBlocks)
3469          );
3470        }
3471      } else if ("__experimentalConvert" in transformation) {
3472        transformationResults = transformation.__experimentalConvert(firstBlock);
3473      } else {
3474        transformationResults = transformation.transform(
3475          firstBlock.attributes,
3476          firstBlock.innerBlocks
3477        );
3478      }
3479      if (transformationResults === null || typeof transformationResults !== "object") {
3480        return null;
3481      }
3482      transformationResults = Array.isArray(transformationResults) ? transformationResults : [transformationResults];
3483      if (transformationResults.some(
3484        (result) => !getBlockType(result.name)
3485      )) {
3486        return null;
3487      }
3488      const hasSwitchedBlock = transformationResults.some(
3489        (result) => result.name === name
3490      );
3491      if (!hasSwitchedBlock) {
3492        return null;
3493      }
3494      const ret = transformationResults.map((result, index, results) => {
3495        return (0, import_hooks2.applyFilters)(
3496          "blocks.switchToBlockType.transformedBlock",
3497          result,
3498          blocks,
3499          index,
3500          results
3501        );
3502      });
3503      return ret;
3504    }
3505    var getBlockFromExample = (name, example) => createBlock(
3506      name,
3507      example.attributes,
3508      (example.innerBlocks ?? []).map(
3509        (innerBlock) => getBlockFromExample(innerBlock.name, innerBlock)
3510      ),
3511      example.innerContent
3512    );
3513  
3514    // packages/blocks/build-module/api/parser/index.mjs
3515    var import_block_serialization_default_parser = __toESM(require_block_serialization_default_parser(), 1);
3516    var import_autop2 = __toESM(require_autop(), 1);
3517  
3518    // packages/blocks/build-module/api/serializer.mjs
3519    var import_element2 = __toESM(require_element(), 1);
3520    var import_hooks3 = __toESM(require_hooks(), 1);
3521    var import_is_shallow_equal = __toESM(require_is_shallow_equal(), 1);
3522    var import_autop = __toESM(require_autop(), 1);
3523    var import_deprecated7 = __toESM(require_deprecated(), 1);
3524  
3525    // packages/blocks/build-module/api/parser/serialize-raw-block.mjs
3526    function serializeRawBlock(rawBlock, options = {}) {
3527      const { isCommentDelimited = true } = options;
3528      const {
3529        blockName,
3530        attrs = {},
3531        innerBlocks = [],
3532        innerContent = []
3533      } = rawBlock;
3534      let childIndex = 0;
3535      const content = innerContent.map(
3536        (item) => (
3537          // `null` denotes a nested block, otherwise we have an HTML fragment.
3538          item !== null ? item : serializeRawBlock(innerBlocks[childIndex++], options)
3539        )
3540      ).join("\n").replace(/\n+/g, "\n").trim();
3541      return isCommentDelimited ? getCommentDelimitedContent(blockName ?? void 0, attrs, content) : content;
3542    }
3543  
3544    // packages/blocks/build-module/api/serializer.mjs
3545    var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
3546    function getBlockDefaultClassName(blockName) {
3547      const className = "wp-block-" + blockName.replace(/\//, "-").replace(/^core-/, "");
3548      return (0, import_hooks3.applyFilters)(
3549        "blocks.getBlockDefaultClassName",
3550        className,
3551        blockName
3552      );
3553    }
3554    function getBlockMenuDefaultClassName(blockName) {
3555      const className = "editor-block-list-item-" + blockName.replace(/\//, "-").replace(/^core-/, "");
3556      return (0, import_hooks3.applyFilters)(
3557        "blocks.getBlockMenuDefaultClassName",
3558        className,
3559        blockName
3560      );
3561    }
3562    var blockPropsProvider = {};
3563    var innerBlocksPropsProvider = {};
3564    function getBlockProps(props = {}) {
3565      const { blockType, attributes } = blockPropsProvider;
3566      return getBlockProps.skipFilters ? props : (0, import_hooks3.applyFilters)(
3567        "blocks.getSaveContent.extraProps",
3568        { ...props },
3569        blockType,
3570        attributes
3571      );
3572    }
3573    function getInnerBlocksProps(props = {}) {
3574      const { innerBlocks } = innerBlocksPropsProvider;
3575      if (!Array.isArray(innerBlocks)) {
3576        return { ...props, children: innerBlocks };
3577      }
3578      const html2 = serialize(innerBlocks, { isInnerBlocks: true });
3579      const children = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_element2.RawHTML, { children: html2 });
3580      return { ...props, children };
3581    }
3582    function getSaveElement(blockTypeOrName, attributes, innerBlocks = []) {
3583      const blockType = normalizeBlockType(blockTypeOrName);
3584      if (!blockType?.save) {
3585        return null;
3586      }
3587      let save = blockType.save;
3588      if (save.prototype instanceof import_element2.Component) {
3589        const SaveClass = save;
3590        const instance = new SaveClass({ attributes });
3591        save = instance.render.bind(instance);
3592      }
3593      blockPropsProvider.blockType = blockType;
3594      blockPropsProvider.attributes = attributes;
3595      innerBlocksPropsProvider.innerBlocks = innerBlocks;
3596      let element = save({
3597        attributes,
3598        innerBlocks
3599      });
3600      if (element !== null && typeof element === "object" && (0, import_hooks3.hasFilter)("blocks.getSaveContent.extraProps") && !((blockType.apiVersion ?? 0) > 1)) {
3601        const props = (0, import_hooks3.applyFilters)(
3602          "blocks.getSaveContent.extraProps",
3603          { ...element.props },
3604          blockType,
3605          attributes
3606        );
3607        if (!(0, import_is_shallow_equal.isShallowEqual)(props, element.props)) {
3608          element = (0, import_element2.cloneElement)(
3609            element,
3610            props
3611          );
3612        }
3613      }
3614      return (0, import_hooks3.applyFilters)(
3615        "blocks.getSaveElement",
3616        element,
3617        blockType,
3618        attributes
3619      );
3620    }
3621    function getSaveContent(blockTypeOrName, attributes, innerBlocks) {
3622      const blockType = normalizeBlockType(
3623        blockTypeOrName
3624      );
3625      if (!blockType) {
3626        return "";
3627      }
3628      return (0, import_element2.renderToString)(
3629        getSaveElement(blockType, attributes, innerBlocks)
3630      );
3631    }
3632    function getCommentAttributes(blockType, attributes) {
3633      return Object.entries(blockType.attributes ?? {}).reduce(
3634        (accumulator, [key, attributeSchema]) => {
3635          const value = attributes[key];
3636          if (void 0 === value) {
3637            return accumulator;
3638          }
3639          if (attributeSchema.source !== void 0) {
3640            return accumulator;
3641          }
3642          if (attributeSchema.role === "local") {
3643            return accumulator;
3644          }
3645          if (attributeSchema.__experimentalRole === "local") {
3646            (0, import_deprecated7.default)("__experimentalRole attribute", {
3647              since: "6.7",
3648              version: "6.8",
3649              alternative: "role attribute",
3650              hint: `Check the block.json of the $blockType?.name} block.`
3651            });
3652            return accumulator;
3653          }
3654          if ("default" in attributeSchema && JSON.stringify(attributeSchema.default) === JSON.stringify(value)) {
3655            return accumulator;
3656          }
3657          accumulator[key] = value;
3658          return accumulator;
3659        },
3660        {}
3661      );
3662    }
3663    function serializeAttributes(attributes) {
3664      return JSON.stringify(attributes).replaceAll("\\\\", "\\u005c").replaceAll("--", "\\u002d\\u002d").replaceAll("<", "\\u003c").replaceAll(">", "\\u003e").replaceAll("&", "\\u0026").replaceAll('\\"', "\\u0022");
3665    }
3666    function serializeInnerContent(innerContent, innerBlocks) {
3667      let childIndex = 0;
3668      const parts = innerContent.map((item) => {
3669        if (item !== null) {
3670          return item;
3671        }
3672        const innerBlock = innerBlocks[childIndex++];
3673        return innerBlock ? serializeBlock(innerBlock, { isInnerBlocks: true }) : "";
3674      });
3675      for (; childIndex < innerBlocks.length; childIndex++) {
3676        parts.push(
3677          serializeBlock(innerBlocks[childIndex], { isInnerBlocks: true })
3678        );
3679      }
3680      return parts.join("").trim();
3681    }
3682    function getBlockInnerHTML(block) {
3683      if (block.innerContent && block.name === "core/html") {
3684        return serializeInnerContent(block.innerContent, block.innerBlocks);
3685      }
3686      let saveContent = block.originalContent ?? "";
3687      if (block.isValid || block.innerBlocks.length) {
3688        try {
3689          saveContent = getSaveContent(
3690            block.name,
3691            block.attributes,
3692            block.innerBlocks
3693          );
3694        } catch {
3695        }
3696      }
3697      return saveContent;
3698    }
3699    function getCommentDelimitedContent(rawBlockName, attributes, content) {
3700      const serializedAttributes = attributes && Object.entries(attributes).length ? serializeAttributes(attributes) + " " : "";
3701      const blockName = rawBlockName?.startsWith("core/") ? rawBlockName.slice(5) : rawBlockName;
3702      if (!content) {
3703        return `<!-- wp:$blockName} $serializedAttributes}/-->`;
3704      }
3705      return `<!-- wp:$blockName} $serializedAttributes}-->
3706  ` + content + `
3707  <!-- /wp:$blockName} -->`;
3708    }
3709    function serializeBlock(block, { isInnerBlocks = false } = {}) {
3710      if (!block.isValid && block.__unstableBlockSource) {
3711        return serializeRawBlock(block.__unstableBlockSource);
3712      }
3713      const blockName = block.name;
3714      const saveContent = getBlockInnerHTML(block);
3715      if (blockName === getUnregisteredTypeHandlerName() || !isInnerBlocks && blockName === getFreeformContentHandlerName()) {
3716        return saveContent;
3717      }
3718      const blockType = getBlockType(blockName);
3719      if (!blockType) {
3720        return saveContent;
3721      }
3722      const saveAttributes = getCommentAttributes(blockType, block.attributes);
3723      return getCommentDelimitedContent(blockName, saveAttributes, saveContent);
3724    }
3725    var __unstableSerializeAndClean = /* @__PURE__ */ (() => {
3726      const cache = /* @__PURE__ */ new WeakMap();
3727      return (blocks) => {
3728        const cached = cache.get(blocks);
3729        if (cached !== void 0) {
3730          return cached;
3731        }
3732        let effectiveBlocks = blocks;
3733        if (effectiveBlocks.length === 1 && isUnmodifiedDefaultBlock(effectiveBlocks[0])) {
3734          effectiveBlocks = [];
3735        }
3736        let content = serialize(effectiveBlocks);
3737        if (effectiveBlocks.length === 1 && effectiveBlocks[0].name === getFreeformContentHandlerName() && effectiveBlocks[0].name === "core/freeform") {
3738          content = (0, import_autop.removep)(content);
3739        }
3740        cache.set(blocks, content);
3741        return content;
3742      };
3743    })();
3744    function serialize(blocks, options) {
3745      const blocksArray = Array.isArray(blocks) ? blocks : [blocks];
3746      return blocksArray.map((block) => serializeBlock(block, options)).join("\n\n");
3747    }
3748  
3749    // node_modules/.store/simple-html-tokenizer@0.5.7-XqyG3gha3SmBXttNwRHo8w/node_modules/simple-html-tokenizer/dist/es6/index.js
3750    var HEXCHARCODE = /^#[xX]([A-Fa-f0-9]+)$/;
3751    var CHARCODE = /^#([0-9]+)$/;
3752    var NAMED = /^([A-Za-z0-9]+)$/;
3753    var EntityParser = (
3754      /** @class */
3755      (function() {
3756        function EntityParser2(named) {
3757          this.named = named;
3758        }
3759        EntityParser2.prototype.parse = function(entity) {
3760          if (!entity) {
3761            return;
3762          }
3763          var matches = entity.match(HEXCHARCODE);
3764          if (matches) {
3765            return String.fromCharCode(parseInt(matches[1], 16));
3766          }
3767          matches = entity.match(CHARCODE);
3768          if (matches) {
3769            return String.fromCharCode(parseInt(matches[1], 10));
3770          }
3771          matches = entity.match(NAMED);
3772          if (matches) {
3773            return this.named[matches[1]];
3774          }
3775        };
3776        return EntityParser2;
3777      })()
3778    );
3779    var WSP = /[\t\n\f ]/;
3780    var ALPHA = /[A-Za-z]/;
3781    var CRLF = /\r\n?/g;
3782    function isSpace(char) {
3783      return WSP.test(char);
3784    }
3785    function isAlpha(char) {
3786      return ALPHA.test(char);
3787    }
3788    function preprocessInput(input) {
3789      return input.replace(CRLF, "\n");
3790    }
3791    var EventedTokenizer = (
3792      /** @class */
3793      (function() {
3794        function EventedTokenizer2(delegate, entityParser) {
3795          this.delegate = delegate;
3796          this.entityParser = entityParser;
3797          this.state = "beforeData";
3798          this.line = -1;
3799          this.column = -1;
3800          this.input = "";
3801          this.index = -1;
3802          this.tagNameBuffer = "";
3803          this.states = {
3804            beforeData: function() {
3805              var char = this.peek();
3806              if (char === "<") {
3807                this.transitionTo(
3808                  "tagOpen"
3809                  /* tagOpen */
3810                );
3811                this.markTagStart();
3812                this.consume();
3813              } else {
3814                if (char === "\n") {
3815                  var tag = this.tagNameBuffer.toLowerCase();
3816                  if (tag === "pre" || tag === "textarea") {
3817                    this.consume();
3818                  }
3819                }
3820                this.transitionTo(
3821                  "data"
3822                  /* data */
3823                );
3824                this.delegate.beginData();
3825              }
3826            },
3827            data: function() {
3828              var char = this.peek();
3829              if (char === "<") {
3830                this.delegate.finishData();
3831                this.transitionTo(
3832                  "tagOpen"
3833                  /* tagOpen */
3834                );
3835                this.markTagStart();
3836                this.consume();
3837              } else if (char === "&") {
3838                this.consume();
3839                this.delegate.appendToData(this.consumeCharRef() || "&");
3840              } else {
3841                this.consume();
3842                this.delegate.appendToData(char);
3843              }
3844            },
3845            tagOpen: function() {
3846              var char = this.consume();
3847              if (char === "!") {
3848                this.transitionTo(
3849                  "markupDeclarationOpen"
3850                  /* markupDeclarationOpen */
3851                );
3852              } else if (char === "/") {
3853                this.transitionTo(
3854                  "endTagOpen"
3855                  /* endTagOpen */
3856                );
3857              } else if (char === "@" || char === ":" || isAlpha(char)) {
3858                this.transitionTo(
3859                  "tagName"
3860                  /* tagName */
3861                );
3862                this.tagNameBuffer = "";
3863                this.delegate.beginStartTag();
3864                this.appendToTagName(char);
3865              }
3866            },
3867            markupDeclarationOpen: function() {
3868              var char = this.consume();
3869              if (char === "-" && this.input.charAt(this.index) === "-") {
3870                this.consume();
3871                this.transitionTo(
3872                  "commentStart"
3873                  /* commentStart */
3874                );
3875                this.delegate.beginComment();
3876              }
3877            },
3878            commentStart: function() {
3879              var char = this.consume();
3880              if (char === "-") {
3881                this.transitionTo(
3882                  "commentStartDash"
3883                  /* commentStartDash */
3884                );
3885              } else if (char === ">") {
3886                this.delegate.finishComment();
3887                this.transitionTo(
3888                  "beforeData"
3889                  /* beforeData */
3890                );
3891              } else {
3892                this.delegate.appendToCommentData(char);
3893                this.transitionTo(
3894                  "comment"
3895                  /* comment */
3896                );
3897              }
3898            },
3899            commentStartDash: function() {
3900              var char = this.consume();
3901              if (char === "-") {
3902                this.transitionTo(
3903                  "commentEnd"
3904                  /* commentEnd */
3905                );
3906              } else if (char === ">") {
3907                this.delegate.finishComment();
3908                this.transitionTo(
3909                  "beforeData"
3910                  /* beforeData */
3911                );
3912              } else {
3913                this.delegate.appendToCommentData("-");
3914                this.transitionTo(
3915                  "comment"
3916                  /* comment */
3917                );
3918              }
3919            },
3920            comment: function() {
3921              var char = this.consume();
3922              if (char === "-") {
3923                this.transitionTo(
3924                  "commentEndDash"
3925                  /* commentEndDash */
3926                );
3927              } else {
3928                this.delegate.appendToCommentData(char);
3929              }
3930            },
3931            commentEndDash: function() {
3932              var char = this.consume();
3933              if (char === "-") {
3934                this.transitionTo(
3935                  "commentEnd"
3936                  /* commentEnd */
3937                );
3938              } else {
3939                this.delegate.appendToCommentData("-" + char);
3940                this.transitionTo(
3941                  "comment"
3942                  /* comment */
3943                );
3944              }
3945            },
3946            commentEnd: function() {
3947              var char = this.consume();
3948              if (char === ">") {
3949                this.delegate.finishComment();
3950                this.transitionTo(
3951                  "beforeData"
3952                  /* beforeData */
3953                );
3954              } else {
3955                this.delegate.appendToCommentData("--" + char);
3956                this.transitionTo(
3957                  "comment"
3958                  /* comment */
3959                );
3960              }
3961            },
3962            tagName: function() {
3963              var char = this.consume();
3964              if (isSpace(char)) {
3965                this.transitionTo(
3966                  "beforeAttributeName"
3967                  /* beforeAttributeName */
3968                );
3969              } else if (char === "/") {
3970                this.transitionTo(
3971                  "selfClosingStartTag"
3972                  /* selfClosingStartTag */
3973                );
3974              } else if (char === ">") {
3975                this.delegate.finishTag();
3976                this.transitionTo(
3977                  "beforeData"
3978                  /* beforeData */
3979                );
3980              } else {
3981                this.appendToTagName(char);
3982              }
3983            },
3984            beforeAttributeName: function() {
3985              var char = this.peek();
3986              if (isSpace(char)) {
3987                this.consume();
3988                return;
3989              } else if (char === "/") {
3990                this.transitionTo(
3991                  "selfClosingStartTag"
3992                  /* selfClosingStartTag */
3993                );
3994                this.consume();
3995              } else if (char === ">") {
3996                this.consume();
3997                this.delegate.finishTag();
3998                this.transitionTo(
3999                  "beforeData"
4000                  /* beforeData */
4001                );
4002              } else if (char === "=") {
4003                this.delegate.reportSyntaxError("attribute name cannot start with equals sign");
4004                this.transitionTo(
4005                  "attributeName"
4006                  /* attributeName */
4007                );
4008                this.delegate.beginAttribute();
4009                this.consume();
4010                this.delegate.appendToAttributeName(char);
4011              } else {
4012                this.transitionTo(
4013                  "attributeName"
4014                  /* attributeName */
4015                );
4016                this.delegate.beginAttribute();
4017              }
4018            },
4019            attributeName: function() {
4020              var char = this.peek();
4021              if (isSpace(char)) {
4022                this.transitionTo(
4023                  "afterAttributeName"
4024                  /* afterAttributeName */
4025                );
4026                this.consume();
4027              } else if (char === "/") {
4028                this.delegate.beginAttributeValue(false);
4029                this.delegate.finishAttributeValue();
4030                this.consume();
4031                this.transitionTo(
4032                  "selfClosingStartTag"
4033                  /* selfClosingStartTag */
4034                );
4035              } else if (char === "=") {
4036                this.transitionTo(
4037                  "beforeAttributeValue"
4038                  /* beforeAttributeValue */
4039                );
4040                this.consume();
4041              } else if (char === ">") {
4042                this.delegate.beginAttributeValue(false);
4043                this.delegate.finishAttributeValue();
4044                this.consume();
4045                this.delegate.finishTag();
4046                this.transitionTo(
4047                  "beforeData"
4048                  /* beforeData */
4049                );
4050              } else if (char === '"' || char === "'" || char === "<") {
4051                this.delegate.reportSyntaxError(char + " is not a valid character within attribute names");
4052                this.consume();
4053                this.delegate.appendToAttributeName(char);
4054              } else {
4055                this.consume();
4056                this.delegate.appendToAttributeName(char);
4057              }
4058            },
4059            afterAttributeName: function() {
4060              var char = this.peek();
4061              if (isSpace(char)) {
4062                this.consume();
4063                return;
4064              } else if (char === "/") {
4065                this.delegate.beginAttributeValue(false);
4066                this.delegate.finishAttributeValue();
4067                this.consume();
4068                this.transitionTo(
4069                  "selfClosingStartTag"
4070                  /* selfClosingStartTag */
4071                );
4072              } else if (char === "=") {
4073                this.consume();
4074                this.transitionTo(
4075                  "beforeAttributeValue"
4076                  /* beforeAttributeValue */
4077                );
4078              } else if (char === ">") {
4079                this.delegate.beginAttributeValue(false);
4080                this.delegate.finishAttributeValue();
4081                this.consume();
4082                this.delegate.finishTag();
4083                this.transitionTo(
4084                  "beforeData"
4085                  /* beforeData */
4086                );
4087              } else {
4088                this.delegate.beginAttributeValue(false);
4089                this.delegate.finishAttributeValue();
4090                this.transitionTo(
4091                  "attributeName"
4092                  /* attributeName */
4093                );
4094                this.delegate.beginAttribute();
4095                this.consume();
4096                this.delegate.appendToAttributeName(char);
4097              }
4098            },
4099            beforeAttributeValue: function() {
4100              var char = this.peek();
4101              if (isSpace(char)) {
4102                this.consume();
4103              } else if (char === '"') {
4104                this.transitionTo(
4105                  "attributeValueDoubleQuoted"
4106                  /* attributeValueDoubleQuoted */
4107                );
4108                this.delegate.beginAttributeValue(true);
4109                this.consume();
4110              } else if (char === "'") {
4111                this.transitionTo(
4112                  "attributeValueSingleQuoted"
4113                  /* attributeValueSingleQuoted */
4114                );
4115                this.delegate.beginAttributeValue(true);
4116                this.consume();
4117              } else if (char === ">") {
4118                this.delegate.beginAttributeValue(false);
4119                this.delegate.finishAttributeValue();
4120                this.consume();
4121                this.delegate.finishTag();
4122                this.transitionTo(
4123                  "beforeData"
4124                  /* beforeData */
4125                );
4126              } else {
4127                this.transitionTo(
4128                  "attributeValueUnquoted"
4129                  /* attributeValueUnquoted */
4130                );
4131                this.delegate.beginAttributeValue(false);
4132                this.consume();
4133                this.delegate.appendToAttributeValue(char);
4134              }
4135            },
4136            attributeValueDoubleQuoted: function() {
4137              var char = this.consume();
4138              if (char === '"') {
4139                this.delegate.finishAttributeValue();
4140                this.transitionTo(
4141                  "afterAttributeValueQuoted"
4142                  /* afterAttributeValueQuoted */
4143                );
4144              } else if (char === "&") {
4145                this.delegate.appendToAttributeValue(this.consumeCharRef() || "&");
4146              } else {
4147                this.delegate.appendToAttributeValue(char);
4148              }
4149            },
4150            attributeValueSingleQuoted: function() {
4151              var char = this.consume();
4152              if (char === "'") {
4153                this.delegate.finishAttributeValue();
4154                this.transitionTo(
4155                  "afterAttributeValueQuoted"
4156                  /* afterAttributeValueQuoted */
4157                );
4158              } else if (char === "&") {
4159                this.delegate.appendToAttributeValue(this.consumeCharRef() || "&");
4160              } else {
4161                this.delegate.appendToAttributeValue(char);
4162              }
4163            },
4164            attributeValueUnquoted: function() {
4165              var char = this.peek();
4166              if (isSpace(char)) {
4167                this.delegate.finishAttributeValue();
4168                this.consume();
4169                this.transitionTo(
4170                  "beforeAttributeName"
4171                  /* beforeAttributeName */
4172                );
4173              } else if (char === "/") {
4174                this.delegate.finishAttributeValue();
4175                this.consume();
4176                this.transitionTo(
4177                  "selfClosingStartTag"
4178                  /* selfClosingStartTag */
4179                );
4180              } else if (char === "&") {
4181                this.consume();
4182                this.delegate.appendToAttributeValue(this.consumeCharRef() || "&");
4183              } else if (char === ">") {
4184                this.delegate.finishAttributeValue();
4185                this.consume();
4186                this.delegate.finishTag();
4187                this.transitionTo(
4188                  "beforeData"
4189                  /* beforeData */
4190                );
4191              } else {
4192                this.consume();
4193                this.delegate.appendToAttributeValue(char);
4194              }
4195            },
4196            afterAttributeValueQuoted: function() {
4197              var char = this.peek();
4198              if (isSpace(char)) {
4199                this.consume();
4200                this.transitionTo(
4201                  "beforeAttributeName"
4202                  /* beforeAttributeName */
4203                );
4204              } else if (char === "/") {
4205                this.consume();
4206                this.transitionTo(
4207                  "selfClosingStartTag"
4208                  /* selfClosingStartTag */
4209                );
4210              } else if (char === ">") {
4211                this.consume();
4212                this.delegate.finishTag();
4213                this.transitionTo(
4214                  "beforeData"
4215                  /* beforeData */
4216                );
4217              } else {
4218                this.transitionTo(
4219                  "beforeAttributeName"
4220                  /* beforeAttributeName */
4221                );
4222              }
4223            },
4224            selfClosingStartTag: function() {
4225              var char = this.peek();
4226              if (char === ">") {
4227                this.consume();
4228                this.delegate.markTagAsSelfClosing();
4229                this.delegate.finishTag();
4230                this.transitionTo(
4231                  "beforeData"
4232                  /* beforeData */
4233                );
4234              } else {
4235                this.transitionTo(
4236                  "beforeAttributeName"
4237                  /* beforeAttributeName */
4238                );
4239              }
4240            },
4241            endTagOpen: function() {
4242              var char = this.consume();
4243              if (char === "@" || char === ":" || isAlpha(char)) {
4244                this.transitionTo(
4245                  "tagName"
4246                  /* tagName */
4247                );
4248                this.tagNameBuffer = "";
4249                this.delegate.beginEndTag();
4250                this.appendToTagName(char);
4251              }
4252            }
4253          };
4254          this.reset();
4255        }
4256        EventedTokenizer2.prototype.reset = function() {
4257          this.transitionTo(
4258            "beforeData"
4259            /* beforeData */
4260          );
4261          this.input = "";
4262          this.index = 0;
4263          this.line = 1;
4264          this.column = 0;
4265          this.delegate.reset();
4266        };
4267        EventedTokenizer2.prototype.transitionTo = function(state) {
4268          this.state = state;
4269        };
4270        EventedTokenizer2.prototype.tokenize = function(input) {
4271          this.reset();
4272          this.tokenizePart(input);
4273          this.tokenizeEOF();
4274        };
4275        EventedTokenizer2.prototype.tokenizePart = function(input) {
4276          this.input += preprocessInput(input);
4277          while (this.index < this.input.length) {
4278            var handler = this.states[this.state];
4279            if (handler !== void 0) {
4280              handler.call(this);
4281            } else {
4282              throw new Error("unhandled state " + this.state);
4283            }
4284          }
4285        };
4286        EventedTokenizer2.prototype.tokenizeEOF = function() {
4287          this.flushData();
4288        };
4289        EventedTokenizer2.prototype.flushData = function() {
4290          if (this.state === "data") {
4291            this.delegate.finishData();
4292            this.transitionTo(
4293              "beforeData"
4294              /* beforeData */
4295            );
4296          }
4297        };
4298        EventedTokenizer2.prototype.peek = function() {
4299          return this.input.charAt(this.index);
4300        };
4301        EventedTokenizer2.prototype.consume = function() {
4302          var char = this.peek();
4303          this.index++;
4304          if (char === "\n") {
4305            this.line++;
4306            this.column = 0;
4307          } else {
4308            this.column++;
4309          }
4310          return char;
4311        };
4312        EventedTokenizer2.prototype.consumeCharRef = function() {
4313          var endIndex = this.input.indexOf(";", this.index);
4314          if (endIndex === -1) {
4315            return;
4316          }
4317          var entity = this.input.slice(this.index, endIndex);
4318          var chars = this.entityParser.parse(entity);
4319          if (chars) {
4320            var count = entity.length;
4321            while (count) {
4322              this.consume();
4323              count--;
4324            }
4325            this.consume();
4326            return chars;
4327          }
4328        };
4329        EventedTokenizer2.prototype.markTagStart = function() {
4330          this.delegate.tagOpen();
4331        };
4332        EventedTokenizer2.prototype.appendToTagName = function(char) {
4333          this.tagNameBuffer += char;
4334          this.delegate.appendToTagName(char);
4335        };
4336        return EventedTokenizer2;
4337      })()
4338    );
4339    var Tokenizer = (
4340      /** @class */
4341      (function() {
4342        function Tokenizer2(entityParser, options) {
4343          if (options === void 0) {
4344            options = {};
4345          }
4346          this.options = options;
4347          this.token = null;
4348          this.startLine = 1;
4349          this.startColumn = 0;
4350          this.tokens = [];
4351          this.tokenizer = new EventedTokenizer(this, entityParser);
4352          this._currentAttribute = void 0;
4353        }
4354        Tokenizer2.prototype.tokenize = function(input) {
4355          this.tokens = [];
4356          this.tokenizer.tokenize(input);
4357          return this.tokens;
4358        };
4359        Tokenizer2.prototype.tokenizePart = function(input) {
4360          this.tokens = [];
4361          this.tokenizer.tokenizePart(input);
4362          return this.tokens;
4363        };
4364        Tokenizer2.prototype.tokenizeEOF = function() {
4365          this.tokens = [];
4366          this.tokenizer.tokenizeEOF();
4367          return this.tokens[0];
4368        };
4369        Tokenizer2.prototype.reset = function() {
4370          this.token = null;
4371          this.startLine = 1;
4372          this.startColumn = 0;
4373        };
4374        Tokenizer2.prototype.current = function() {
4375          var token = this.token;
4376          if (token === null) {
4377            throw new Error("token was unexpectedly null");
4378          }
4379          if (arguments.length === 0) {
4380            return token;
4381          }
4382          for (var i = 0; i < arguments.length; i++) {
4383            if (token.type === arguments[i]) {
4384              return token;
4385            }
4386          }
4387          throw new Error("token type was unexpectedly " + token.type);
4388        };
4389        Tokenizer2.prototype.push = function(token) {
4390          this.token = token;
4391          this.tokens.push(token);
4392        };
4393        Tokenizer2.prototype.currentAttribute = function() {
4394          return this._currentAttribute;
4395        };
4396        Tokenizer2.prototype.addLocInfo = function() {
4397          if (this.options.loc) {
4398            this.current().loc = {
4399              start: {
4400                line: this.startLine,
4401                column: this.startColumn
4402              },
4403              end: {
4404                line: this.tokenizer.line,
4405                column: this.tokenizer.column
4406              }
4407            };
4408          }
4409          this.startLine = this.tokenizer.line;
4410          this.startColumn = this.tokenizer.column;
4411        };
4412        Tokenizer2.prototype.beginData = function() {
4413          this.push({
4414            type: "Chars",
4415            chars: ""
4416          });
4417        };
4418        Tokenizer2.prototype.appendToData = function(char) {
4419          this.current(
4420            "Chars"
4421            /* Chars */
4422          ).chars += char;
4423        };
4424        Tokenizer2.prototype.finishData = function() {
4425          this.addLocInfo();
4426        };
4427        Tokenizer2.prototype.beginComment = function() {
4428          this.push({
4429            type: "Comment",
4430            chars: ""
4431          });
4432        };
4433        Tokenizer2.prototype.appendToCommentData = function(char) {
4434          this.current(
4435            "Comment"
4436            /* Comment */
4437          ).chars += char;
4438        };
4439        Tokenizer2.prototype.finishComment = function() {
4440          this.addLocInfo();
4441        };
4442        Tokenizer2.prototype.tagOpen = function() {
4443        };
4444        Tokenizer2.prototype.beginStartTag = function() {
4445          this.push({
4446            type: "StartTag",
4447            tagName: "",
4448            attributes: [],
4449            selfClosing: false
4450          });
4451        };
4452        Tokenizer2.prototype.beginEndTag = function() {
4453          this.push({
4454            type: "EndTag",
4455            tagName: ""
4456          });
4457        };
4458        Tokenizer2.prototype.finishTag = function() {
4459          this.addLocInfo();
4460        };
4461        Tokenizer2.prototype.markTagAsSelfClosing = function() {
4462          this.current(
4463            "StartTag"
4464            /* StartTag */
4465          ).selfClosing = true;
4466        };
4467        Tokenizer2.prototype.appendToTagName = function(char) {
4468          this.current(
4469            "StartTag",
4470            "EndTag"
4471            /* EndTag */
4472          ).tagName += char;
4473        };
4474        Tokenizer2.prototype.beginAttribute = function() {
4475          this._currentAttribute = ["", "", false];
4476        };
4477        Tokenizer2.prototype.appendToAttributeName = function(char) {
4478          this.currentAttribute()[0] += char;
4479        };
4480        Tokenizer2.prototype.beginAttributeValue = function(isQuoted) {
4481          this.currentAttribute()[2] = isQuoted;
4482        };
4483        Tokenizer2.prototype.appendToAttributeValue = function(char) {
4484          this.currentAttribute()[1] += char;
4485        };
4486        Tokenizer2.prototype.finishAttributeValue = function() {
4487          this.current(
4488            "StartTag"
4489            /* StartTag */
4490          ).attributes.push(this._currentAttribute);
4491        };
4492        Tokenizer2.prototype.reportSyntaxError = function(message) {
4493          this.current().syntaxError = message;
4494        };
4495        return Tokenizer2;
4496      })()
4497    );
4498  
4499    // packages/blocks/build-module/api/validation/index.mjs
4500    var import_es62 = __toESM(require_es6(), 1);
4501    var import_deprecated8 = __toESM(require_deprecated(), 1);
4502    var import_html_entities = __toESM(require_html_entities(), 1);
4503  
4504    // packages/blocks/build-module/api/validation/logger.mjs
4505    function createLogger() {
4506      function createLogHandler(logger) {
4507        return (message, ...args) => logger("Block validation: " + message, ...args);
4508      }
4509      return {
4510        // eslint-disable-next-line no-console
4511        error: createLogHandler(console.error),
4512        // eslint-disable-next-line no-console
4513        warning: createLogHandler(console.warn),
4514        getItems() {
4515          return [];
4516        }
4517      };
4518    }
4519    function createQueuedLogger() {
4520      const queue = [];
4521      const logger = createLogger();
4522      return {
4523        error(...args) {
4524          queue.push({ log: logger.error, args });
4525        },
4526        warning(...args) {
4527          queue.push({ log: logger.warning, args });
4528        },
4529        getItems() {
4530          return queue;
4531        }
4532      };
4533    }
4534  
4535    // packages/blocks/build-module/api/validation/index.mjs
4536    var identity = (x3) => x3;
4537    var REGEXP_WHITESPACE = /[\t\n\r\v\f ]+/g;
4538    var REGEXP_ONLY_WHITESPACE = /^[\t\n\r\v\f ]*$/;
4539    var REGEXP_STYLE_URL_TYPE = /^url\s*\(['"\s]*(.*?)['"\s]*\)$/;
4540    var BOOLEAN_ATTRIBUTES = [
4541      "allowfullscreen",
4542      "allowpaymentrequest",
4543      "allowusermedia",
4544      "async",
4545      "autofocus",
4546      "autoplay",
4547      "checked",
4548      "controls",
4549      "default",
4550      "defer",
4551      "disabled",
4552      "download",
4553      "formnovalidate",
4554      "hidden",
4555      "ismap",
4556      "itemscope",
4557      "loop",
4558      "multiple",
4559      "muted",
4560      "nomodule",
4561      "novalidate",
4562      "open",
4563      "playsinline",
4564      "readonly",
4565      "required",
4566      "reversed",
4567      "selected",
4568      "typemustmatch"
4569    ];
4570    var ENUMERATED_ATTRIBUTES = [
4571      "autocapitalize",
4572      "autocomplete",
4573      "charset",
4574      "contenteditable",
4575      "crossorigin",
4576      "decoding",
4577      "dir",
4578      "draggable",
4579      "enctype",
4580      "formenctype",
4581      "formmethod",
4582      "http-equiv",
4583      "inputmode",
4584      "kind",
4585      "method",
4586      "preload",
4587      "scope",
4588      "shape",
4589      "spellcheck",
4590      "translate",
4591      "type",
4592      "wrap"
4593    ];
4594    var MEANINGFUL_ATTRIBUTES = [
4595      ...BOOLEAN_ATTRIBUTES,
4596      ...ENUMERATED_ATTRIBUTES
4597    ];
4598    var TEXT_NORMALIZATIONS = [
4599      identity,
4600      getTextWithCollapsedWhitespace
4601    ];
4602    var REGEXP_NAMED_CHARACTER_REFERENCE = /^[\da-z]+$/i;
4603    var REGEXP_DECIMAL_CHARACTER_REFERENCE = /^#\d+$/;
4604    var REGEXP_HEXADECIMAL_CHARACTER_REFERENCE = /^#x[\da-f]+$/i;
4605    function isValidCharacterReference(text2) {
4606      return REGEXP_NAMED_CHARACTER_REFERENCE.test(text2) || REGEXP_DECIMAL_CHARACTER_REFERENCE.test(text2) || REGEXP_HEXADECIMAL_CHARACTER_REFERENCE.test(text2);
4607    }
4608    var DecodeEntityParser = class {
4609      /**
4610       * Returns a substitute string for an entity string sequence between `&`
4611       * and `;`, or undefined if no substitution should occur.
4612       *
4613       * @param entity Entity fragment discovered in HTML.
4614       *
4615       * @return Entity substitute value.
4616       */
4617      parse(entity) {
4618        if (isValidCharacterReference(entity)) {
4619          return (0, import_html_entities.decodeEntities)("&" + entity + ";");
4620        }
4621        return void 0;
4622      }
4623    };
4624    function getTextPiecesSplitOnWhitespace(text2) {
4625      return text2.trim().split(REGEXP_WHITESPACE);
4626    }
4627    function getTextWithCollapsedWhitespace(text2) {
4628      return getTextPiecesSplitOnWhitespace(text2).join(" ");
4629    }
4630    function getMeaningfulAttributePairs(token) {
4631      return (token.attributes ?? []).filter((pair) => {
4632        const [key, value] = pair;
4633        return value || key.indexOf("data-") === 0 || MEANINGFUL_ATTRIBUTES.includes(key);
4634      });
4635    }
4636    function isEquivalentTextTokens(actual, expected, logger = createLogger()) {
4637      let actualChars = actual.chars;
4638      let expectedChars = expected.chars;
4639      for (let i = 0; i < TEXT_NORMALIZATIONS.length; i++) {
4640        const normalize = TEXT_NORMALIZATIONS[i];
4641        actualChars = normalize(actualChars);
4642        expectedChars = normalize(expectedChars);
4643        if (actualChars === expectedChars) {
4644          return true;
4645        }
4646      }
4647      logger.warning(
4648        "Expected text `%s`, saw `%s`.",
4649        expected.chars,
4650        actual.chars
4651      );
4652      return false;
4653    }
4654    function getNormalizedLength(value) {
4655      if (0 === parseFloat(value)) {
4656        return "0";
4657      }
4658      if (value.indexOf(".") === 0) {
4659        return "0" + value;
4660      }
4661      return value;
4662    }
4663    function getNormalizedStyleValue(value) {
4664      const textPieces = getTextPiecesSplitOnWhitespace(value);
4665      const normalizedPieces = textPieces.map(getNormalizedLength);
4666      const result = normalizedPieces.join(" ");
4667      return result.replace(REGEXP_STYLE_URL_TYPE, "url($1)");
4668    }
4669    function getStyleProperties(text2) {
4670      const pairs = text2.replace(/;?\s*$/, "").split(";").map((style) => {
4671        const [key, ...valueParts] = style.split(":");
4672        const value = valueParts.join(":");
4673        return [key.trim(), getNormalizedStyleValue(value.trim())];
4674      });
4675      return Object.fromEntries(pairs);
4676    }
4677    var isEqualAttributesOfName = {
4678      class: (actual, expected) => {
4679        const [actualPieces, expectedPieces] = [actual, expected].map(
4680          getTextPiecesSplitOnWhitespace
4681        );
4682        const actualDiff = actualPieces.filter(
4683          (c2) => !expectedPieces.includes(c2)
4684        );
4685        const expectedDiff = expectedPieces.filter(
4686          (c2) => !actualPieces.includes(c2)
4687        );
4688        return actualDiff.length === 0 && expectedDiff.length === 0;
4689      },
4690      style: (actual, expected) => {
4691        return (0, import_es62.default)(
4692          ...[actual, expected].map(getStyleProperties)
4693        );
4694      },
4695      // For each boolean attribute, mere presence of attribute in both is enough
4696      // to assume equivalence.
4697      ...Object.fromEntries(
4698        BOOLEAN_ATTRIBUTES.map((attribute) => [attribute, () => true])
4699      )
4700    };
4701    function isEqualTagAttributePairs(actual, expected, logger = createLogger()) {
4702      if (actual.length !== expected.length) {
4703        logger.warning(
4704          "Expected attributes %o, instead saw %o.",
4705          expected,
4706          actual
4707        );
4708        return false;
4709      }
4710      const expectedAttributes = {};
4711      for (let i = 0; i < expected.length; i++) {
4712        expectedAttributes[expected[i][0].toLowerCase()] = expected[i][1];
4713      }
4714      for (let i = 0; i < actual.length; i++) {
4715        const [name, actualValue] = actual[i];
4716        const nameLower = name.toLowerCase();
4717        if (!expectedAttributes.hasOwnProperty(nameLower)) {
4718          logger.warning("Encountered unexpected attribute `%s`.", name);
4719          return false;
4720        }
4721        const expectedValue = expectedAttributes[nameLower];
4722        const isEqualAttributes = isEqualAttributesOfName[nameLower];
4723        if (isEqualAttributes) {
4724          if (!isEqualAttributes(actualValue, expectedValue)) {
4725            logger.warning(
4726              "Expected attribute `%s` of value `%s`, saw `%s`.",
4727              name,
4728              expectedValue,
4729              actualValue
4730            );
4731            return false;
4732          }
4733        } else if (actualValue !== expectedValue) {
4734          logger.warning(
4735            "Expected attribute `%s` of value `%s`, saw `%s`.",
4736            name,
4737            expectedValue,
4738            actualValue
4739          );
4740          return false;
4741        }
4742      }
4743      return true;
4744    }
4745    var isEqualTokensOfType = {
4746      StartTag: (actual, expected, logger = createLogger()) => {
4747        if (actual.tagName !== expected.tagName && // Optimization: Use short-circuit evaluation to defer case-
4748        // insensitive check on the assumption that the majority case will
4749        // have exactly equal tag names.
4750        actual.tagName.toLowerCase() !== expected.tagName.toLowerCase()) {
4751          logger.warning(
4752            "Expected tag name `%s`, instead saw `%s`.",
4753            expected.tagName,
4754            actual.tagName
4755          );
4756          return false;
4757        }
4758        return isEqualTagAttributePairs(
4759          ...[actual, expected].map(getMeaningfulAttributePairs),
4760          logger
4761        );
4762      },
4763      Chars: isEquivalentTextTokens,
4764      Comment: isEquivalentTextTokens
4765    };
4766    function getNextNonWhitespaceToken(tokens) {
4767      let token;
4768      while (token = tokens.shift()) {
4769        if (token.type !== "Chars") {
4770          return token;
4771        }
4772        if (!REGEXP_ONLY_WHITESPACE.test(token.chars)) {
4773          return token;
4774        }
4775      }
4776      return void 0;
4777    }
4778    function getHTMLTokens(html2, logger = createLogger()) {
4779      try {
4780        return new Tokenizer(new DecodeEntityParser()).tokenize(
4781          html2
4782        );
4783      } catch {
4784        logger.warning("Malformed HTML detected: %s", html2);
4785      }
4786      return null;
4787    }
4788    function isClosedByToken(currentToken, nextToken) {
4789      if (!currentToken.selfClosing) {
4790        return false;
4791      }
4792      if (nextToken && nextToken.tagName === currentToken.tagName && nextToken.type === "EndTag") {
4793        return true;
4794      }
4795      return false;
4796    }
4797    function isEquivalentHTML(actual, expected, logger = createLogger()) {
4798      if (actual === expected) {
4799        return true;
4800      }
4801      const [actualTokens, expectedTokens] = [actual, expected].map(
4802        (html2) => getHTMLTokens(html2, logger)
4803      );
4804      if (!actualTokens || !expectedTokens) {
4805        return false;
4806      }
4807      let actualToken, expectedToken;
4808      while (actualToken = getNextNonWhitespaceToken(actualTokens)) {
4809        expectedToken = getNextNonWhitespaceToken(expectedTokens);
4810        if (!expectedToken) {
4811          logger.warning(
4812            "Expected end of content, instead saw %o.",
4813            actualToken
4814          );
4815          return false;
4816        }
4817        if (actualToken.type !== expectedToken.type) {
4818          logger.warning(
4819            "Expected token of type `%s` (%o), instead saw `%s` (%o).",
4820            expectedToken.type,
4821            expectedToken,
4822            actualToken.type,
4823            actualToken
4824          );
4825          return false;
4826        }
4827        const isEqualTokens = isEqualTokensOfType[actualToken.type];
4828        if (isEqualTokens && !isEqualTokens(actualToken, expectedToken, logger)) {
4829          return false;
4830        }
4831        if (isClosedByToken(actualToken, expectedTokens[0])) {
4832          getNextNonWhitespaceToken(expectedTokens);
4833        } else if (isClosedByToken(expectedToken, actualTokens[0])) {
4834          getNextNonWhitespaceToken(actualTokens);
4835        }
4836      }
4837      if (expectedToken = getNextNonWhitespaceToken(expectedTokens)) {
4838        logger.warning(
4839          "Expected %o, instead saw end of content.",
4840          expectedToken
4841        );
4842        return false;
4843      }
4844      return true;
4845    }
4846    function validateBlock(block, blockTypeOrName = block.name) {
4847      const isFallbackBlock = block.name === getFreeformContentHandlerName() || block.name === getUnregisteredTypeHandlerName();
4848      if (isFallbackBlock) {
4849        return [true, []];
4850      }
4851      const logger = createQueuedLogger();
4852      const blockType = normalizeBlockType(blockTypeOrName);
4853      let generatedBlockContent;
4854      try {
4855        generatedBlockContent = getSaveContent(blockType, block.attributes);
4856      } catch (error) {
4857        logger.error(
4858          "Block validation failed because an error occurred while generating block content:\n\n%s",
4859          error.toString()
4860        );
4861        return [false, logger.getItems()];
4862      }
4863      const isValid = isEquivalentHTML(
4864        block.originalContent,
4865        generatedBlockContent,
4866        logger
4867      );
4868      if (!isValid) {
4869        logger.error(
4870          "Block validation failed for `%s` (%o).\n\nContent generated by `save` function:\n\n%s\n\nContent retrieved from post body:\n\n%s",
4871          blockType.name,
4872          blockType,
4873          generatedBlockContent,
4874          block.originalContent
4875        );
4876      }
4877      return [isValid, logger.getItems()];
4878    }
4879    function isValidBlockContent(blockTypeOrName, attributes, originalBlockContent) {
4880      (0, import_deprecated8.default)("isValidBlockContent introduces opportunity for data loss", {
4881        since: "12.6",
4882        plugin: "Gutenberg",
4883        alternative: "validateBlock"
4884      });
4885      const blockType = normalizeBlockType(blockTypeOrName);
4886      const block = {
4887        clientId: "",
4888        name: blockType.name,
4889        isValid: true,
4890        attributes,
4891        innerBlocks: [],
4892        originalContent: originalBlockContent
4893      };
4894      const [isValid] = validateBlock(block, blockType);
4895      return isValid;
4896    }
4897  
4898    // packages/blocks/build-module/api/parser/convert-legacy-block.mjs
4899    function convertLegacyBlockNameAndAttributes(name, attributes) {
4900      const newAttributes = { ...attributes };
4901      if ("core/cover-image" === name) {
4902        name = "core/cover";
4903      }
4904      if ("core/text" === name || "core/cover-text" === name) {
4905        name = "core/paragraph";
4906      }
4907      if (name && name.indexOf("core/social-link-") === 0) {
4908        newAttributes.service = name.substring(17);
4909        name = "core/social-link";
4910      }
4911      if (name && name.indexOf("core-embed/") === 0) {
4912        const providerSlug = name.substring(11);
4913        const deprecated13 = {
4914          speaker: "speaker-deck",
4915          polldaddy: "crowdsignal"
4916        };
4917        newAttributes.providerNameSlug = providerSlug in deprecated13 ? deprecated13[providerSlug] : providerSlug;
4918        if (!["amazon-kindle", "wordpress"].includes(providerSlug)) {
4919          newAttributes.responsive = true;
4920        }
4921        name = "core/embed";
4922      }
4923      if (name === "core/post-comment-author") {
4924        name = "core/comment-author-name";
4925      }
4926      if (name === "core/post-comment-content") {
4927        name = "core/comment-content";
4928      }
4929      if (name === "core/post-comment-date") {
4930        name = "core/comment-date";
4931      }
4932      if (name === "core/comments-query-loop") {
4933        name = "core/comments";
4934        const className = newAttributes.className ?? "";
4935        if (!className.includes("wp-block-comments-query-loop")) {
4936          newAttributes.className = [
4937            "wp-block-comments-query-loop",
4938            className
4939          ].join(" ");
4940        }
4941      }
4942      if (name === "core/post-comments") {
4943        name = "core/comments";
4944        newAttributes.legacy = true;
4945      }
4946      const layout = attributes.layout;
4947      if (layout?.type === "grid" && typeof layout?.columnCount === "string") {
4948        newAttributes.layout = {
4949          ...newAttributes.layout,
4950          columnCount: parseInt(layout.columnCount, 10)
4951        };
4952      }
4953      const style = attributes.style;
4954      const styleLayout = style?.layout;
4955      if (typeof styleLayout?.columnSpan === "string") {
4956        const columnSpanNumber = parseInt(styleLayout.columnSpan, 10);
4957        newAttributes.style = {
4958          ...newAttributes.style,
4959          layout: {
4960            ...newAttributes.style?.layout,
4961            columnSpan: isNaN(columnSpanNumber) ? void 0 : columnSpanNumber
4962          }
4963        };
4964      }
4965      if (typeof styleLayout?.rowSpan === "string") {
4966        const rowSpanNumber = parseInt(styleLayout.rowSpan, 10);
4967        newAttributes.style = {
4968          ...newAttributes.style,
4969          layout: {
4970            ...newAttributes.style?.layout,
4971            rowSpan: isNaN(rowSpanNumber) ? void 0 : rowSpanNumber
4972          }
4973        };
4974      }
4975      return [name, newAttributes];
4976    }
4977  
4978    // node_modules/.store/hpq@1.4.0-W9NdSIZtdLeCHL5yGEJLvQ/node_modules/hpq/es/get-path.js
4979    function getPath(object, path) {
4980      var segments = path.split(".");
4981      var segment;
4982      while (segment = segments.shift()) {
4983        if (!(segment in object)) {
4984          return;
4985        }
4986        object = object[segment];
4987      }
4988      return object;
4989    }
4990  
4991    // node_modules/.store/hpq@1.4.0-W9NdSIZtdLeCHL5yGEJLvQ/node_modules/hpq/es/index.js
4992    var getDocument = /* @__PURE__ */ (function() {
4993      var doc;
4994      return function() {
4995        if (!doc) {
4996          doc = document.implementation.createHTMLDocument("");
4997        }
4998        return doc;
4999      };
5000    })();
5001    function parse(source, matchers) {
5002      if (!matchers) {
5003        return;
5004      }
5005      if ("string" === typeof source) {
5006        var doc = getDocument();
5007        doc.body.innerHTML = source;
5008        source = doc.body;
5009      }
5010      if (typeof matchers === "function") {
5011        return matchers(source);
5012      }
5013      if (Object !== matchers.constructor) {
5014        return;
5015      }
5016      return Object.keys(matchers).reduce(function(memo, key) {
5017        var inner = matchers[key];
5018        memo[key] = parse(source, inner);
5019        return memo;
5020      }, {});
5021    }
5022    function prop(arg1, arg2) {
5023      var name;
5024      var selector;
5025      if (1 === arguments.length) {
5026        name = arg1;
5027        selector = void 0;
5028      } else {
5029        name = arg2;
5030        selector = arg1;
5031      }
5032      return function(node) {
5033        var match = node;
5034        if (selector) {
5035          match = node.querySelector(selector);
5036        }
5037        if (match) {
5038          return getPath(match, name);
5039        }
5040      };
5041    }
5042    function attr(arg1, arg2) {
5043      var name;
5044      var selector;
5045      if (1 === arguments.length) {
5046        name = arg1;
5047        selector = void 0;
5048      } else {
5049        name = arg2;
5050        selector = arg1;
5051      }
5052      return function(node) {
5053        var attributes = prop(selector, "attributes")(node);
5054        if (attributes && Object.prototype.hasOwnProperty.call(attributes, name)) {
5055          return attributes[name].value;
5056        }
5057      };
5058    }
5059    function text(selector) {
5060      return prop(selector, "textContent");
5061    }
5062    function query(selector, matchers) {
5063      return function(node) {
5064        var matches = node.querySelectorAll(selector);
5065        return [].map.call(matches, function(match) {
5066          return parse(match, matchers);
5067        });
5068      };
5069    }
5070  
5071    // node_modules/.store/memize@2.1.1-roXbtpG2bis3Lggp7SQpAA/node_modules/memize/dist/index.js
5072    function memize(fn, options) {
5073      var size = 0;
5074      var head;
5075      var tail;
5076      options = options || {};
5077      function memoized() {
5078        var node = head, len = arguments.length, args, i;
5079        searchCache: while (node) {
5080          if (node.args.length !== arguments.length) {
5081            node = node.next;
5082            continue;
5083          }
5084          for (i = 0; i < len; i++) {
5085            if (node.args[i] !== arguments[i]) {
5086              node = node.next;
5087              continue searchCache;
5088            }
5089          }
5090          if (node !== head) {
5091            if (node === tail) {
5092              tail = node.prev;
5093            }
5094            node.prev.next = node.next;
5095            if (node.next) {
5096              node.next.prev = node.prev;
5097            }
5098            node.next = head;
5099            node.prev = null;
5100            head.prev = node;
5101            head = node;
5102          }
5103          return node.val;
5104        }
5105        args = new Array(len);
5106        for (i = 0; i < len; i++) {
5107          args[i] = arguments[i];
5108        }
5109        node = {
5110          args,
5111          // Generate the result from original function
5112          val: fn.apply(null, args)
5113        };
5114        if (head) {
5115          head.prev = node;
5116          node.next = head;
5117        } else {
5118          tail = node;
5119        }
5120        if (size === /** @type {MemizeOptions} */
5121        options.maxSize) {
5122          tail = /** @type {MemizeCacheNode} */
5123          tail.prev;
5124          tail.next = null;
5125        } else {
5126          size++;
5127        }
5128        head = node;
5129        return node.val;
5130      }
5131      memoized.clear = function() {
5132        head = null;
5133        tail = null;
5134        size = 0;
5135      };
5136      return memoized;
5137    }
5138  
5139    // packages/blocks/build-module/api/parser/get-block-attributes.mjs
5140    var import_hooks4 = __toESM(require_hooks(), 1);
5141    var import_rich_text4 = __toESM(require_rich_text(), 1);
5142  
5143    // packages/blocks/build-module/api/matchers.mjs
5144    var import_rich_text3 = __toESM(require_rich_text(), 1);
5145  
5146    // packages/blocks/build-module/api/node.mjs
5147    var import_deprecated10 = __toESM(require_deprecated(), 1);
5148  
5149    // packages/blocks/build-module/api/children.mjs
5150    var import_element3 = __toESM(require_element(), 1);
5151    var import_deprecated9 = __toESM(require_deprecated(), 1);
5152    function getSerializeCapableElement(children) {
5153      return children;
5154    }
5155    function getChildrenArray(children) {
5156      (0, import_deprecated9.default)("wp.blocks.children.getChildrenArray", {
5157        since: "6.1",
5158        version: "6.3",
5159        link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
5160      });
5161      return children;
5162    }
5163    function concat(...blockNodes) {
5164      (0, import_deprecated9.default)("wp.blocks.children.concat", {
5165        since: "6.1",
5166        version: "6.3",
5167        alternative: "wp.richText.concat",
5168        link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
5169      });
5170      const result = [];
5171      for (let i = 0; i < blockNodes.length; i++) {
5172        const blockNode = Array.isArray(blockNodes[i]) ? blockNodes[i] : [blockNodes[i]];
5173        for (let j2 = 0; j2 < blockNode.length; j2++) {
5174          const child = blockNode[j2];
5175          const canConcatToPreviousString = typeof child === "string" && typeof result[result.length - 1] === "string";
5176          if (canConcatToPreviousString) {
5177            result[result.length - 1] += child;
5178          } else {
5179            result.push(child);
5180          }
5181        }
5182      }
5183      return result;
5184    }
5185    function fromDOM22(domNodes) {
5186      (0, import_deprecated9.default)("wp.blocks.children.fromDOM", {
5187        since: "6.1",
5188        version: "6.3",
5189        alternative: "wp.richText.create",
5190        link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
5191      });
5192      const result = [];
5193      for (let i = 0; i < domNodes.length; i++) {
5194        try {
5195          result.push(fromDOM2(domNodes[i]));
5196        } catch {
5197        }
5198      }
5199      return result;
5200    }
5201    function toHTML(children) {
5202      (0, import_deprecated9.default)("wp.blocks.children.toHTML", {
5203        since: "6.1",
5204        version: "6.3",
5205        alternative: "wp.richText.toHTMLString",
5206        link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
5207      });
5208      const element = getSerializeCapableElement(children);
5209      return (0, import_element3.renderToString)(element);
5210    }
5211    function matcher(selector) {
5212      (0, import_deprecated9.default)("wp.blocks.children.matcher", {
5213        since: "6.1",
5214        version: "6.3",
5215        alternative: "html source",
5216        link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
5217      });
5218      return (domNode) => {
5219        let match = domNode;
5220        if (selector) {
5221          match = domNode.querySelector(selector);
5222        }
5223        if (match) {
5224          return fromDOM22(match.childNodes);
5225        }
5226        return [];
5227      };
5228    }
5229    var children_default = {
5230      concat,
5231      getChildrenArray,
5232      fromDOM: fromDOM22,
5233      toHTML,
5234      matcher
5235    };
5236  
5237    // packages/blocks/build-module/api/node.mjs
5238    function isNodeOfType(node, type) {
5239      (0, import_deprecated10.default)("wp.blocks.node.isNodeOfType", {
5240        since: "6.1",
5241        version: "6.3",
5242        link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
5243      });
5244      return typeof node !== "string" && node?.type === type;
5245    }
5246    function getNamedNodeMapAsObject(nodeMap) {
5247      const result = {};
5248      for (let i = 0; i < nodeMap.length; i++) {
5249        const { name, value } = nodeMap[i];
5250        result[name] = value;
5251      }
5252      return result;
5253    }
5254    function fromDOM2(domNode) {
5255      (0, import_deprecated10.default)("wp.blocks.node.fromDOM", {
5256        since: "6.1",
5257        version: "6.3",
5258        alternative: "wp.richText.create",
5259        link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
5260      });
5261      if (domNode.nodeType === domNode.TEXT_NODE) {
5262        return domNode.nodeValue;
5263      }
5264      if (domNode.nodeType !== domNode.ELEMENT_NODE) {
5265        throw new TypeError(
5266          "A block node can only be created from a node of type text or element."
5267        );
5268      }
5269      return {
5270        type: domNode.nodeName.toLowerCase(),
5271        props: {
5272          ...getNamedNodeMapAsObject(domNode.attributes),
5273          children: fromDOM22(domNode.childNodes)
5274        }
5275      };
5276    }
5277    function toHTML2(node) {
5278      (0, import_deprecated10.default)("wp.blocks.node.toHTML", {
5279        since: "6.1",
5280        version: "6.3",
5281        alternative: "wp.richText.toHTMLString",
5282        link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
5283      });
5284      return toHTML([node]);
5285    }
5286    function matcher2(selector) {
5287      (0, import_deprecated10.default)("wp.blocks.node.matcher", {
5288        since: "6.1",
5289        version: "6.3",
5290        alternative: "html source",
5291        link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
5292      });
5293      return (domNode) => {
5294        let match = domNode;
5295        if (selector) {
5296          match = domNode.querySelector(selector);
5297        }
5298        try {
5299          return fromDOM2(match);
5300        } catch {
5301          return null;
5302        }
5303      };
5304    }
5305    var node_default = {
5306      isNodeOfType,
5307      fromDOM: fromDOM2,
5308      toHTML: toHTML2,
5309      matcher: matcher2
5310    };
5311  
5312    // packages/blocks/build-module/api/matchers.mjs
5313    function html(selector, multilineTag) {
5314      return (domNode) => {
5315        let match = domNode;
5316        if (selector) {
5317          match = domNode.querySelector(selector);
5318        }
5319        if (!match) {
5320          return "";
5321        }
5322        if (multilineTag) {
5323          let value = "";
5324          const length = match.children.length;
5325          for (let index = 0; index < length; index++) {
5326            const child = match.children[index];
5327            if (child.nodeName.toLowerCase() !== multilineTag) {
5328              continue;
5329            }
5330            value += child.outerHTML;
5331          }
5332          return value;
5333        }
5334        return match.innerHTML;
5335      };
5336    }
5337    var richText = (selector, preserveWhiteSpace) => (el) => {
5338      const target = selector ? el.querySelector(selector) : el;
5339      return target ? import_rich_text3.RichTextData.fromHTMLElement(target, {
5340        preserveWhiteSpace
5341      }) : import_rich_text3.RichTextData.empty();
5342    };
5343  
5344    // packages/blocks/build-module/api/parser/get-block-attributes.mjs
5345    var toBooleanAttributeMatcher = (matcher3) => (domNode) => matcher3(domNode) !== void 0;
5346    function isOfType(value, type) {
5347      switch (type) {
5348        case "rich-text":
5349          return value instanceof import_rich_text4.RichTextData;
5350        case "string":
5351          return typeof value === "string";
5352        case "boolean":
5353          return typeof value === "boolean";
5354        case "object":
5355          return !!value && value.constructor === Object;
5356        case "null":
5357          return value === null;
5358        case "array":
5359          return Array.isArray(value);
5360        case "integer":
5361        case "number":
5362          return typeof value === "number";
5363      }
5364      return true;
5365    }
5366    function isOfTypes(value, types) {
5367      return types.some((type) => isOfType(value, type));
5368    }
5369    function getBlockAttribute(attributeKey, attributeSchema, innerDOM, commentAttributes, innerHTML) {
5370      let value;
5371      switch (attributeSchema.source) {
5372        // An undefined source means that it's an attribute serialized to the
5373        // block's "comment".
5374        case void 0:
5375          value = commentAttributes ? commentAttributes[attributeKey] : void 0;
5376          break;
5377        // raw source means that it's the original raw block content.
5378        case "raw":
5379          value = innerHTML;
5380          break;
5381        case "attribute":
5382        case "property":
5383        case "html":
5384        case "text":
5385        case "rich-text":
5386        case "children":
5387        case "node":
5388        case "query":
5389        case "tag":
5390          value = parseWithAttributeSchema(innerDOM, attributeSchema);
5391          break;
5392      }
5393      if (!isValidByType(value, attributeSchema.type) || !isValidByEnum(value, attributeSchema.enum)) {
5394        value = void 0;
5395      }
5396      if (value === void 0) {
5397        value = getDefault(attributeSchema);
5398      }
5399      return value;
5400    }
5401    function isValidByType(value, type) {
5402      return type === void 0 || isOfTypes(value, Array.isArray(type) ? type : [type]);
5403    }
5404    function isValidByEnum(value, enumSet) {
5405      return !Array.isArray(enumSet) || enumSet.includes(value);
5406    }
5407    var matcherFromSource = memize(
5408      (sourceConfig) => {
5409        switch (sourceConfig.source) {
5410          case "attribute": {
5411            const matcher3 = attr(
5412              sourceConfig.selector,
5413              sourceConfig.attribute
5414            );
5415            if (sourceConfig.type === "boolean") {
5416              return toBooleanAttributeMatcher(matcher3);
5417            }
5418            return matcher3;
5419          }
5420          case "html":
5421            return html(sourceConfig.selector, sourceConfig.multiline);
5422          case "text":
5423            return text(sourceConfig.selector);
5424          case "rich-text":
5425            return richText(
5426              sourceConfig.selector,
5427              sourceConfig.__unstablePreserveWhiteSpace
5428            );
5429          case "children":
5430            return matcher(sourceConfig.selector);
5431          case "node":
5432            return matcher2(sourceConfig.selector);
5433          case "query":
5434            const subMatchers = Object.fromEntries(
5435              Object.entries(sourceConfig.query).map(
5436                ([key, subSourceConfig]) => [
5437                  key,
5438                  matcherFromSource(subSourceConfig)
5439                ]
5440              )
5441            );
5442            return query(sourceConfig.selector, subMatchers);
5443          case "tag": {
5444            const matcher3 = prop(sourceConfig.selector, "nodeName");
5445            return (domNode) => matcher3(domNode)?.toLowerCase();
5446          }
5447          default:
5448            console.error(
5449              `Unknown source type "${sourceConfig.source}"`
5450            );
5451            return void 0;
5452        }
5453      }
5454    );
5455    function parseHtml(innerHTML) {
5456      return parse(
5457        innerHTML ?? "",
5458        (h) => h
5459      );
5460    }
5461    function parseWithAttributeSchema(innerHTML, attributeSchema) {
5462      return matcherFromSource(attributeSchema)(
5463        parseHtml(innerHTML)
5464      );
5465    }
5466    function getBlockAttributes(blockTypeOrName, innerHTML, attributes = {}) {
5467      const doc = parseHtml(innerHTML);
5468      const blockType = normalizeBlockType(blockTypeOrName);
5469      const blockAttributes = Object.fromEntries(
5470        Object.entries(blockType?.attributes ?? {}).map(
5471          ([key, schema]) => [
5472            key,
5473            getBlockAttribute(key, schema, doc, attributes, innerHTML)
5474          ]
5475        )
5476      );
5477      return (0, import_hooks4.applyFilters)(
5478        "blocks.getBlockAttributes",
5479        blockAttributes,
5480        blockType,
5481        innerHTML,
5482        attributes
5483      );
5484    }
5485  
5486    // packages/blocks/build-module/api/parser/fix-custom-classname.mjs
5487    var CLASS_ATTR_SCHEMA = {
5488      type: "string",
5489      source: "attribute",
5490      selector: "[data-custom-class-name] > *",
5491      attribute: "class"
5492    };
5493    function getHTMLRootElementClasses(innerHTML) {
5494      const parsed = parseWithAttributeSchema(
5495        `<div data-custom-class-name>$innerHTML}</div>`,
5496        CLASS_ATTR_SCHEMA
5497      );
5498      return parsed ? parsed.trim().split(/\s+/) : [];
5499    }
5500    function fixCustomClassname(blockAttributes, blockType, innerHTML) {
5501      if (!hasBlockSupport(blockType, "customClassName", true)) {
5502        return blockAttributes;
5503      }
5504      const modifiedBlockAttributes = { ...blockAttributes };
5505      const { className: omittedClassName, ...attributesSansClassName } = modifiedBlockAttributes;
5506      const serialized = getSaveContent(blockType, attributesSansClassName);
5507      const defaultClasses = getHTMLRootElementClasses(serialized);
5508      const actualClasses = getHTMLRootElementClasses(innerHTML);
5509      const customClasses = actualClasses.filter(
5510        (className) => !defaultClasses.includes(className)
5511      );
5512      if (customClasses.length) {
5513        modifiedBlockAttributes.className = customClasses.join(" ");
5514      } else if (serialized) {
5515        delete modifiedBlockAttributes.className;
5516      }
5517      return modifiedBlockAttributes;
5518    }
5519  
5520    // packages/blocks/build-module/api/parser/fix-global-attribute.mjs
5521    function getHTMLRootElement(innerHTML, dataAttribute, attributeSchema) {
5522      const parsed = parseWithAttributeSchema(
5523        `<div $dataAttribute}>$innerHTML}</div>`,
5524        attributeSchema
5525      );
5526      return parsed;
5527    }
5528    function fixGlobalAttribute(blockAttributes, blockType, innerHTML, supportKey, dataAttribute, attributeSchema) {
5529      if (!hasBlockSupport(blockType, supportKey, false)) {
5530        return blockAttributes;
5531      }
5532      const modifiedBlockAttributes = { ...blockAttributes };
5533      const attributeValue = getHTMLRootElement(
5534        innerHTML,
5535        dataAttribute,
5536        attributeSchema
5537      );
5538      if (attributeValue) {
5539        modifiedBlockAttributes[supportKey] = attributeValue;
5540      }
5541      return modifiedBlockAttributes;
5542    }
5543  
5544    // packages/blocks/build-module/api/parser/apply-built-in-validation-fixes.mjs
5545    var ARIA_LABEL_ATTR_SCHEMA = {
5546      type: "string",
5547      source: "attribute",
5548      selector: "[data-aria-label] > *",
5549      attribute: "aria-label"
5550    };
5551    var ANCHOR_ATTR_SCHEMA = {
5552      type: "string",
5553      source: "attribute",
5554      selector: "[data-anchor] > *",
5555      attribute: "id"
5556    };
5557    function applyBuiltInValidationFixes(block, blockType) {
5558      const { attributes, originalContent } = block;
5559      let updatedBlockAttributes = attributes;
5560      updatedBlockAttributes = fixCustomClassname(
5561        attributes,
5562        blockType,
5563        originalContent ?? ""
5564      );
5565      updatedBlockAttributes = fixGlobalAttribute(
5566        updatedBlockAttributes,
5567        blockType,
5568        originalContent ?? "",
5569        "ariaLabel",
5570        "data-aria-label",
5571        ARIA_LABEL_ATTR_SCHEMA
5572      );
5573      updatedBlockAttributes = fixGlobalAttribute(
5574        updatedBlockAttributes,
5575        blockType,
5576        originalContent ?? "",
5577        "anchor",
5578        "data-anchor",
5579        ANCHOR_ATTR_SCHEMA
5580      );
5581      return {
5582        ...block,
5583        attributes: updatedBlockAttributes
5584      };
5585    }
5586  
5587    // packages/blocks/build-module/api/parser/apply-block-deprecated-versions.mjs
5588    function stubFalse() {
5589      return false;
5590    }
5591    function applyBlockDeprecatedVersions(block, rawBlock, blockType) {
5592      const parsedAttributes = rawBlock.attrs ?? {};
5593      const { deprecated: deprecatedDefinitions } = blockType;
5594      if (!deprecatedDefinitions || !deprecatedDefinitions.length) {
5595        return block;
5596      }
5597      for (let i = 0; i < deprecatedDefinitions.length; i++) {
5598        const { isEligible = stubFalse } = deprecatedDefinitions[i];
5599        if (block.isValid && !isEligible(parsedAttributes, block.innerBlocks, {
5600          blockNode: rawBlock,
5601          block
5602        })) {
5603          continue;
5604        }
5605        const deprecatedBlockType = Object.assign(
5606          omit(
5607            blockType,
5608            DEPRECATED_ENTRY_KEYS
5609          ),
5610          deprecatedDefinitions[i]
5611        );
5612        let migratedBlock = {
5613          ...block,
5614          attributes: getBlockAttributes(
5615            deprecatedBlockType,
5616            block.originalContent ?? "",
5617            parsedAttributes
5618          )
5619        };
5620        let [isValid] = validateBlock(migratedBlock, deprecatedBlockType);
5621        if (!isValid) {
5622          migratedBlock = applyBuiltInValidationFixes(
5623            migratedBlock,
5624            deprecatedBlockType
5625          );
5626          [isValid] = validateBlock(migratedBlock, deprecatedBlockType);
5627        }
5628        if (!isValid) {
5629          continue;
5630        }
5631        let migratedInnerBlocks = migratedBlock.innerBlocks;
5632        let migratedAttributes = migratedBlock.attributes;
5633        const { migrate } = deprecatedBlockType;
5634        if (migrate) {
5635          let migrated = migrate(migratedAttributes, block.innerBlocks);
5636          if (!Array.isArray(migrated)) {
5637            migrated = [migrated];
5638          }
5639          [
5640            migratedAttributes = parsedAttributes,
5641            migratedInnerBlocks = block.innerBlocks
5642          ] = migrated;
5643        }
5644        block = {
5645          ...block,
5646          attributes: migratedAttributes,
5647          innerBlocks: migratedInnerBlocks,
5648          isValid: true,
5649          validationIssues: []
5650        };
5651      }
5652      return block;
5653    }
5654  
5655    // packages/blocks/build-module/api/parser/index.mjs
5656    function convertLegacyBlocks(rawBlock) {
5657      const [correctName, correctedAttributes] = convertLegacyBlockNameAndAttributes(
5658        rawBlock.blockName,
5659        rawBlock.attrs ?? {}
5660      );
5661      return {
5662        ...rawBlock,
5663        blockName: correctName,
5664        attrs: correctedAttributes
5665      };
5666    }
5667    function normalizeRawBlock(rawBlock, options) {
5668      const fallbackBlockName = getFreeformContentHandlerName();
5669      const rawBlockName = rawBlock.blockName || getFreeformContentHandlerName();
5670      const rawAttributes = rawBlock.attrs || {};
5671      const rawInnerBlocks = rawBlock.innerBlocks || [];
5672      let rawInnerHTML = rawBlock.innerHTML.trim();
5673      if (rawBlockName === fallbackBlockName && rawBlockName === "core/freeform" && !options?.__unstableSkipAutop) {
5674        rawInnerHTML = (0, import_autop2.autop)(rawInnerHTML).trim();
5675      }
5676      return {
5677        ...rawBlock,
5678        blockName: rawBlockName,
5679        attrs: rawAttributes,
5680        innerHTML: rawInnerHTML,
5681        innerBlocks: rawInnerBlocks
5682      };
5683    }
5684    function createMissingBlockType(rawBlock) {
5685      const unregisteredFallbackBlock = getUnregisteredTypeHandlerName() || getFreeformContentHandlerName();
5686      const originalUndelimitedContent = serializeRawBlock(rawBlock, {
5687        isCommentDelimited: false
5688      });
5689      const originalContent = serializeRawBlock(rawBlock, {
5690        isCommentDelimited: true
5691      });
5692      return {
5693        blockName: unregisteredFallbackBlock,
5694        attrs: {
5695          originalName: rawBlock.blockName,
5696          originalContent,
5697          originalUndelimitedContent
5698        },
5699        innerHTML: rawBlock.blockName ? originalContent : rawBlock.innerHTML,
5700        innerBlocks: rawBlock.innerBlocks,
5701        innerContent: rawBlock.innerContent
5702      };
5703    }
5704    function applyBlockValidation(unvalidatedBlock, blockType) {
5705      const [isValid] = validateBlock(unvalidatedBlock, blockType);
5706      if (isValid) {
5707        return { ...unvalidatedBlock, isValid, validationIssues: [] };
5708      }
5709      const fixedBlock = applyBuiltInValidationFixes(
5710        unvalidatedBlock,
5711        blockType
5712      );
5713      const [isFixedValid, validationIssues] = validateBlock(
5714        fixedBlock,
5715        blockType
5716      );
5717      return { ...fixedBlock, isValid: isFixedValid, validationIssues };
5718    }
5719    function parseRawBlock(rawBlock, options) {
5720      let normalizedBlock = normalizeRawBlock(rawBlock, options);
5721      normalizedBlock = convertLegacyBlocks(normalizedBlock);
5722      let blockType = getBlockType(normalizedBlock.blockName);
5723      if (!blockType) {
5724        normalizedBlock = createMissingBlockType(normalizedBlock);
5725        blockType = getBlockType(normalizedBlock.blockName);
5726      }
5727      const isFallbackBlock = normalizedBlock.blockName === getFreeformContentHandlerName() || normalizedBlock.blockName === getUnregisteredTypeHandlerName();
5728      if (!blockType || !normalizedBlock.innerHTML && isFallbackBlock) {
5729        return;
5730      }
5731      const parsedInnerBlocks = normalizedBlock.innerBlocks.map((innerBlock) => parseRawBlock(innerBlock, options)).filter((innerBlock) => !!innerBlock);
5732      const parsedBlock = createBlock(
5733        normalizedBlock.blockName,
5734        getBlockAttributes(
5735          blockType,
5736          normalizedBlock.innerHTML,
5737          normalizedBlock.attrs
5738        ),
5739        parsedInnerBlocks
5740      );
5741      parsedBlock.originalContent = normalizedBlock.innerHTML;
5742      if (blockType.name === "core/html") {
5743        parsedBlock.innerContent = normalizedBlock.innerContent ?? [
5744          normalizedBlock.innerHTML
5745        ];
5746        parsedBlock.isValid = true;
5747        parsedBlock.validationIssues = [];
5748        return parsedBlock;
5749      }
5750      const validatedBlock = applyBlockValidation(parsedBlock, blockType);
5751      const { validationIssues } = validatedBlock;
5752      const updatedBlock = applyBlockDeprecatedVersions(
5753        validatedBlock,
5754        normalizedBlock,
5755        blockType
5756      );
5757      if (!updatedBlock.isValid) {
5758        updatedBlock.__unstableBlockSource = rawBlock;
5759      }
5760      if (!validatedBlock.isValid && updatedBlock.isValid && !options?.__unstableSkipMigrationLogs) {
5761        console.groupCollapsed("Updated Block: %s", blockType.name);
5762        console.info(
5763          "Block successfully updated for `%s` (%o).\n\nNew content generated by `save` function:\n\n%s\n\nContent retrieved from post body:\n\n%s",
5764          blockType.name,
5765          blockType,
5766          getSaveContent(blockType, updatedBlock.attributes),
5767          updatedBlock.originalContent
5768        );
5769        console.groupEnd();
5770      } else if (!validatedBlock.isValid && !updatedBlock.isValid) {
5771        validationIssues.forEach(({ log: log2, args }) => log2(...args));
5772      }
5773      return updatedBlock;
5774    }
5775    function parse2(content, options) {
5776      return (0, import_block_serialization_default_parser.parse)(content).reduce(
5777        (accumulator, rawBlock) => {
5778          const block = parseRawBlock(
5779            rawBlock,
5780            options
5781          );
5782          if (block) {
5783            accumulator.push(block);
5784          }
5785          return accumulator;
5786        },
5787        []
5788      );
5789    }
5790  
5791    // packages/blocks/build-module/api/raw-handling/index.mjs
5792    var import_deprecated11 = __toESM(require_deprecated(), 1);
5793    var import_dom13 = __toESM(require_dom(), 1);
5794  
5795    // packages/blocks/build-module/api/raw-handling/get-raw-transforms.mjs
5796    function getRawTransforms() {
5797      return getBlockTransforms("from").filter(
5798        (transform) => transform.type === "raw"
5799      ).map((transform) => ({
5800        ...transform,
5801        isMatch: transform.isMatch ?? ((node) => !!transform.selector && node.matches(transform.selector))
5802      }));
5803    }
5804  
5805    // packages/blocks/build-module/api/raw-handling/html-to-blocks.mjs
5806    function htmlToBlocks(html2, handler) {
5807      const doc = document.implementation.createHTMLDocument("");
5808      doc.body.innerHTML = html2;
5809      return Array.from(doc.body.children).flatMap((node) => {
5810        const transforms = getRawTransforms();
5811        const rawTransform = findTransform(
5812          transforms,
5813          (transform2) => transform2.isMatch(node)
5814        );
5815        if (!rawTransform) {
5816          return createBlock(
5817            // Should not be hardcoded.
5818            "core/html",
5819            {},
5820            [],
5821            [node.outerHTML]
5822          );
5823        }
5824        const { transform, blockName } = rawTransform;
5825        if (transform) {
5826          const block = transform(node, handler);
5827          if (node.hasAttribute("class")) {
5828            block.attributes.className = node.getAttribute("class");
5829          }
5830          return block;
5831        }
5832        return createBlock(
5833          blockName,
5834          getBlockAttributes(blockName, node.outerHTML)
5835        );
5836      });
5837    }
5838  
5839    // packages/blocks/build-module/api/raw-handling/normalise-blocks.mjs
5840    var import_dom2 = __toESM(require_dom(), 1);
5841    function normaliseBlocks(HTML, options = {}) {
5842      const decuDoc = document.implementation.createHTMLDocument("");
5843      const accuDoc = document.implementation.createHTMLDocument("");
5844      const decu = decuDoc.body;
5845      const accu = accuDoc.body;
5846      decu.innerHTML = HTML;
5847      while (decu.firstChild) {
5848        const node = decu.firstChild;
5849        if (node.nodeType === node.TEXT_NODE) {
5850          if ((0, import_dom2.isEmpty)(node)) {
5851            decu.removeChild(node);
5852          } else {
5853            if (!accu.lastChild || accu.lastChild.nodeName !== "P") {
5854              accu.appendChild(accuDoc.createElement("P"));
5855            }
5856            accu.lastChild.appendChild(node);
5857          }
5858        } else if (node.nodeType === node.ELEMENT_NODE) {
5859          if (node.nodeName === "BR") {
5860            if (node.nextSibling && node.nextSibling.nodeName === "BR") {
5861              accu.appendChild(accuDoc.createElement("P"));
5862              decu.removeChild(node.nextSibling);
5863            }
5864            if (accu.lastChild && accu.lastChild.nodeName === "P" && accu.lastChild.hasChildNodes()) {
5865              accu.lastChild.appendChild(node);
5866            } else {
5867              decu.removeChild(node);
5868            }
5869          } else if (node.nodeName === "P") {
5870            if ((0, import_dom2.isEmpty)(node) && !options.raw) {
5871              decu.removeChild(node);
5872            } else {
5873              accu.appendChild(node);
5874            }
5875          } else if ((0, import_dom2.isPhrasingContent)(node)) {
5876            if (!accu.lastChild || accu.lastChild.nodeName !== "P") {
5877              accu.appendChild(accuDoc.createElement("P"));
5878            }
5879            accu.lastChild.appendChild(node);
5880          } else {
5881            accu.appendChild(node);
5882          }
5883        } else {
5884          decu.removeChild(node);
5885        }
5886      }
5887      return accu.innerHTML;
5888    }
5889  
5890    // packages/blocks/build-module/api/raw-handling/special-comment-converter.mjs
5891    var import_dom3 = __toESM(require_dom(), 1);
5892    function specialCommentConverter(node, doc) {
5893      if (node.nodeType !== node.COMMENT_NODE) {
5894        return;
5895      }
5896      if (node.nodeValue !== "nextpage" && node.nodeValue.indexOf("more") !== 0) {
5897        return;
5898      }
5899      const block = createBlock2(node, doc);
5900      if (!node.parentNode || node.parentNode.nodeName !== "P") {
5901        (0, import_dom3.replace)(node, block);
5902      } else {
5903        const childNodes = Array.from(node.parentNode.childNodes);
5904        const nodeIndex = childNodes.indexOf(node);
5905        const wrapperNode = node.parentNode.parentNode || doc.body;
5906        const paragraphBuilder = (acc, child) => {
5907          if (!acc) {
5908            acc = doc.createElement("p");
5909          }
5910          acc.appendChild(child);
5911          return acc;
5912        };
5913        [
5914          childNodes.slice(0, nodeIndex).reduce(paragraphBuilder, null),
5915          block,
5916          childNodes.slice(nodeIndex + 1).reduce(paragraphBuilder, null)
5917        ].forEach(
5918          (element) => element && wrapperNode.insertBefore(element, node.parentNode)
5919        );
5920        (0, import_dom3.remove)(node.parentNode);
5921      }
5922    }
5923    function createBlock2(commentNode, doc) {
5924      if (commentNode.nodeValue === "nextpage") {
5925        return createNextpage(doc);
5926      }
5927      const customText = commentNode.nodeValue.slice(4).trim();
5928      let sibling = commentNode;
5929      let noTeaser = false;
5930      while (sibling = sibling.nextSibling) {
5931        if (sibling.nodeType === sibling.COMMENT_NODE && sibling.nodeValue === "noteaser") {
5932          noTeaser = true;
5933          (0, import_dom3.remove)(sibling);
5934          break;
5935        }
5936      }
5937      return createMore(customText, noTeaser, doc);
5938    }
5939    function createMore(customText, noTeaser, doc) {
5940      const node = doc.createElement("wp-block");
5941      node.dataset.block = "core/more";
5942      if (customText) {
5943        node.dataset.customText = customText;
5944      }
5945      if (noTeaser) {
5946        node.dataset.noTeaser = "";
5947      }
5948      return node;
5949    }
5950    function createNextpage(doc) {
5951      const node = doc.createElement("wp-block");
5952      node.dataset.block = "core/nextpage";
5953      return node;
5954    }
5955  
5956    // packages/blocks/build-module/api/raw-handling/list-reducer.mjs
5957    var import_dom4 = __toESM(require_dom(), 1);
5958    function isList(node) {
5959      return node.nodeName === "OL" || node.nodeName === "UL";
5960    }
5961    function shallowTextContent(element) {
5962      return Array.from(element.childNodes).map(({ nodeValue = "" }) => nodeValue).join("");
5963    }
5964    function listReducer(node) {
5965      if (!isList(node)) {
5966        return;
5967      }
5968      const list = node;
5969      const prevElement = list.previousElementSibling;
5970      if (prevElement && prevElement.nodeName === node.nodeName && list.children.length === 1) {
5971        while (list.firstChild) {
5972          prevElement.appendChild(list.firstChild);
5973        }
5974        list.parentNode.removeChild(list);
5975      }
5976      const parentElement = node.parentNode;
5977      if (parentElement && parentElement.nodeName === "LI" && parentElement.children.length === 1 && !/\S/.test(shallowTextContent(parentElement))) {
5978        const parentListItem = parentElement;
5979        const prevListItem = parentListItem.previousElementSibling;
5980        const parentList = parentListItem.parentNode;
5981        if (prevListItem) {
5982          prevListItem.appendChild(list);
5983          parentList.removeChild(parentListItem);
5984        }
5985      }
5986      if (parentElement && isList(parentElement)) {
5987        const prevListItem = list.previousElementSibling;
5988        if (prevListItem) {
5989          prevListItem.appendChild(node);
5990        } else {
5991          (0, import_dom4.unwrap)(node);
5992        }
5993      }
5994    }
5995  
5996    // packages/blocks/build-module/api/raw-handling/blockquote-normaliser.mjs
5997    function blockquoteNormaliser(options = {}) {
5998      return (bq) => {
5999        if (bq.nodeName !== "BLOCKQUOTE") {
6000          return;
6001        }
6002        const node = bq;
6003        node.innerHTML = normaliseBlocks(node.innerHTML, options);
6004      };
6005    }
6006  
6007    // packages/blocks/build-module/api/raw-handling/figure-content-reducer.mjs
6008    var import_dom5 = __toESM(require_dom(), 1);
6009    function isFigureContent(node, schema) {
6010      const tag = node.nodeName.toLowerCase();
6011      if (tag === "figcaption" || (0, import_dom5.isTextContent)(node)) {
6012        return false;
6013      }
6014      return tag in (schema?.figure?.children ?? {});
6015    }
6016    function canHaveAnchor(node, schema) {
6017      const tag = node.nodeName.toLowerCase();
6018      return tag in (schema?.figure?.children?.a?.children ?? {});
6019    }
6020    function wrapFigureContent(element, beforeElement = element) {
6021      const figure = element.ownerDocument.createElement("figure");
6022      beforeElement.parentNode.insertBefore(figure, beforeElement);
6023      figure.appendChild(element);
6024    }
6025    function figureContentReducer(node, doc, schema) {
6026      if (!schema || !isFigureContent(node, schema)) {
6027        return;
6028      }
6029      let nodeToInsert = node;
6030      const parentNode = node.parentNode;
6031      if (canHaveAnchor(node, schema) && parentNode.nodeName === "A" && parentNode.childNodes.length === 1) {
6032        nodeToInsert = node.parentNode;
6033      }
6034      const wrapper = nodeToInsert.closest("p,div");
6035      if (wrapper) {
6036        const element = node;
6037        if (!element.classList) {
6038          wrapFigureContent(nodeToInsert, wrapper);
6039        } else if (element.classList.contains("alignright") || element.classList.contains("alignleft") || element.classList.contains("aligncenter") || !wrapper.textContent.trim()) {
6040          wrapFigureContent(nodeToInsert, wrapper);
6041        }
6042      } else {
6043        wrapFigureContent(nodeToInsert);
6044      }
6045    }
6046  
6047    // packages/blocks/build-module/api/raw-handling/shortcode-converter.mjs
6048    var import_shortcode = __toESM(require_shortcode(), 1);
6049    var castArray = (maybeArray) => Array.isArray(maybeArray) ? maybeArray : [maybeArray];
6050    var beforeLineRegexp = /(^|\n|<p>|<br\s*\/?>)\s*$/;
6051    var afterLineRegexp = /^\s*($|\n|<\/p>|<br\s*\/?>)/;
6052    function segmentHTMLToShortcodeBlock(HTML, lastIndex = 0, excludedBlockNames = []) {
6053      const transformsFrom = getBlockTransforms("from").filter(
6054        (transform) => transform.type === "shortcode"
6055      );
6056      const transformation = findTransform(
6057        transformsFrom,
6058        (transform) => excludedBlockNames.indexOf(transform.blockName) === -1 && castArray(transform.tag).some(
6059          (tag) => (0, import_shortcode.regexp)(tag).test(HTML)
6060        )
6061      );
6062      if (!transformation) {
6063        return [HTML];
6064      }
6065      const transformTags = castArray(transformation.tag);
6066      const transformTag = transformTags.find(
6067        (tag) => (0, import_shortcode.regexp)(tag).test(HTML)
6068      );
6069      const previousIndex = lastIndex;
6070      const match = (0, import_shortcode.next)(transformTag, HTML, lastIndex);
6071      if (!match) {
6072        return [HTML];
6073      }
6074      lastIndex = match.index + match.content.length;
6075      const beforeHTML = HTML.substr(0, match.index);
6076      const afterHTML = HTML.substr(lastIndex);
6077      const isLineStart = beforeLineRegexp.test(beforeHTML);
6078      const isLineEnd = afterLineRegexp.test(afterHTML);
6079      if (!isLineStart && !isLineEnd) {
6080        return segmentHTMLToShortcodeBlock(HTML, lastIndex);
6081      }
6082      if (transformation.isMatch && !transformation.isMatch(match.shortcode.attrs)) {
6083        return segmentHTMLToShortcodeBlock(HTML, previousIndex, [
6084          ...excludedBlockNames,
6085          transformation.blockName
6086        ]);
6087      }
6088      let blocks = [];
6089      if (typeof transformation.transform === "function") {
6090        blocks = [].concat(
6091          transformation.transform(match.shortcode.attrs, match)
6092        );
6093        blocks = blocks.map((block) => {
6094          block.originalContent = match.shortcode.content;
6095          return applyBuiltInValidationFixes(
6096            block,
6097            getBlockType(block.name)
6098          );
6099        });
6100      } else {
6101        const blockType = getBlockType(transformation.blockName);
6102        if (!blockType) {
6103          return [HTML];
6104        }
6105        const transformAttributes = transformation.attributes ?? blockType.attributes;
6106        const attributes = Object.fromEntries(
6107          Object.entries(transformAttributes).filter(([, schema]) => schema.shortcode).map(([key, schema]) => [
6108            key,
6109            schema.shortcode(match.shortcode.attrs, match)
6110          ])
6111        );
6112        const transformationBlockType = {
6113          ...blockType,
6114          attributes: transformAttributes
6115        };
6116        let block = createBlock(
6117          transformation.blockName,
6118          getBlockAttributes(
6119            transformationBlockType,
6120            match.shortcode.content,
6121            attributes
6122          )
6123        );
6124        block.originalContent = match.shortcode.content;
6125        block = applyBuiltInValidationFixes(block, transformationBlockType);
6126        blocks = [block];
6127      }
6128      if (isLineStart && isLineEnd) {
6129        return [
6130          ...segmentHTMLToShortcodeBlock(
6131            beforeHTML.replace(beforeLineRegexp, "")
6132          ),
6133          ...blocks,
6134          ...segmentHTMLToShortcodeBlock(
6135            afterHTML.replace(afterLineRegexp, "")
6136          )
6137        ];
6138      }
6139      if (!blocks.every(
6140        (block) => ["left", "center", "right"].includes(
6141          block.attributes.align
6142        )
6143      )) {
6144        return segmentHTMLToShortcodeBlock(HTML, lastIndex);
6145      }
6146      if (isLineStart) {
6147        const lineStart = beforeHTML.search(beforeLineRegexp);
6148        return [
6149          ...segmentHTMLToShortcodeBlock(beforeHTML.slice(0, lineStart)),
6150          ...blocks,
6151          ...segmentHTMLToShortcodeBlock(
6152            beforeHTML.slice(lineStart) + afterHTML
6153          )
6154        ];
6155      }
6156      return [
6157        ...segmentHTMLToShortcodeBlock(beforeHTML),
6158        ...blocks,
6159        ...segmentHTMLToShortcodeBlock(
6160          afterHTML.replace(afterLineRegexp, "")
6161        )
6162      ];
6163    }
6164    var shortcode_converter_default = segmentHTMLToShortcodeBlock;
6165  
6166    // packages/blocks/build-module/api/raw-handling/utils.mjs
6167    var import_dom6 = __toESM(require_dom(), 1);
6168    function getBlockContentSchemaFromTransforms(transforms, context) {
6169      const phrasingContentSchema = (0, import_dom6.getPhrasingContentSchema)(context);
6170      const schemaArgs = { phrasingContentSchema, isPaste: context === "paste" };
6171      const schemas = transforms.map(({ isMatch, blockName, schema }) => {
6172        const hasAnchorSupport = hasBlockSupport(blockName, "anchor");
6173        schema = typeof schema === "function" ? schema(schemaArgs) : schema;
6174        if (!hasAnchorSupport && !isMatch) {
6175          return schema;
6176        }
6177        if (!schema) {
6178          return {};
6179        }
6180        return Object.fromEntries(
6181          Object.entries(schema).map(([key, value]) => {
6182            let attributes = value.attributes || [];
6183            if (hasAnchorSupport) {
6184              attributes = [...attributes, "id"];
6185            }
6186            return [
6187              key,
6188              {
6189                ...value,
6190                attributes,
6191                isMatch: isMatch ? isMatch : void 0
6192              }
6193            ];
6194          })
6195        );
6196      });
6197      function mergeTagNameSchemaProperties(objValue, srcValue, key) {
6198        switch (key) {
6199          case "children": {
6200            if (objValue === "*" || srcValue === "*") {
6201              return "*";
6202            }
6203            return mergeSchemas(
6204              { ...objValue || {} },
6205              srcValue || {}
6206            );
6207          }
6208          case "attributes":
6209          case "require": {
6210            return Array.from(
6211              /* @__PURE__ */ new Set([...objValue || [], ...srcValue || []])
6212            );
6213          }
6214          case "isMatch": {
6215            if (!objValue || !srcValue) {
6216              return void 0;
6217            }
6218            return (...args) => {
6219              return objValue(...args) || srcValue(...args);
6220            };
6221          }
6222          case "classes": {
6223            if ((objValue || []).includes("*") || (srcValue || []).includes("*")) {
6224              return ["*"];
6225            }
6226            return [...objValue || [], ...srcValue || []];
6227          }
6228        }
6229      }
6230      function mergeTagNameSchemas(a, b2) {
6231        if (a === b2) {
6232          return a;
6233        }
6234        for (const key in b2) {
6235          if (a[key]) {
6236            a[key] = mergeTagNameSchemaProperties(
6237              a[key],
6238              b2[key],
6239              key
6240            );
6241          } else if (Array.isArray(b2[key])) {
6242            a[key] = b2[key].slice();
6243          } else {
6244            a[key] = { ...b2[key] };
6245          }
6246        }
6247        return a;
6248      }
6249      function mergeSchemas(a, b2) {
6250        if (a === b2) {
6251          return a;
6252        }
6253        for (const key in b2) {
6254          if (a[key]) {
6255            a[key] = mergeTagNameSchemas(a[key], b2[key]);
6256          } else if (Array.isArray(b2[key])) {
6257            a[key] = b2[key].slice();
6258          } else {
6259            a[key] = { ...b2[key] };
6260          }
6261        }
6262        return a;
6263      }
6264      return schemas.reduce(mergeSchemas, {});
6265    }
6266    function getBlockContentSchema(context) {
6267      return getBlockContentSchemaFromTransforms(getRawTransforms(), context);
6268    }
6269    function isPlain(HTML) {
6270      if (!/<(?!br[ />])/i.test(HTML)) {
6271        return true;
6272      }
6273      const doc = document.implementation.createHTMLDocument("");
6274      doc.body.innerHTML = HTML;
6275      if (doc.body.children.length !== 1) {
6276        return false;
6277      }
6278      const wrapper = doc.body.children.item(0);
6279      const descendants = wrapper.getElementsByTagName("*");
6280      for (let i = 0; i < descendants.length; i++) {
6281        if (descendants.item(i).tagName !== "BR") {
6282          return false;
6283        }
6284      }
6285      if (wrapper.tagName !== "SPAN") {
6286        return false;
6287      }
6288      return true;
6289    }
6290    function deepFilterNodeList(nodeList, filters, doc, schema) {
6291      Array.from(nodeList).forEach((node) => {
6292        deepFilterNodeList(node.childNodes, filters, doc, schema);
6293        filters.forEach((item) => {
6294          if (!doc.contains(node)) {
6295            return;
6296          }
6297          item(node, doc, schema);
6298        });
6299      });
6300    }
6301    function deepFilterHTML(HTML, filters = [], schema) {
6302      const doc = document.implementation.createHTMLDocument("");
6303      doc.body.innerHTML = HTML;
6304      deepFilterNodeList(doc.body.childNodes, filters, doc, schema);
6305      return doc.body.innerHTML;
6306    }
6307    function getSibling(node, which) {
6308      const sibling = node[`$which}Sibling`];
6309      if (sibling && (0, import_dom6.isPhrasingContent)(sibling)) {
6310        return sibling;
6311      }
6312      const { parentNode } = node;
6313      if (!parentNode || !(0, import_dom6.isPhrasingContent)(parentNode)) {
6314        return;
6315      }
6316      return getSibling(parentNode, which);
6317    }
6318  
6319    // packages/blocks/build-module/api/raw-handling/paste-handler.mjs
6320    var import_dom12 = __toESM(require_dom(), 1);
6321  
6322    // packages/blocks/build-module/api/raw-handling/comment-remover.mjs
6323    var import_dom7 = __toESM(require_dom(), 1);
6324    function commentRemover(node) {
6325      if (node.nodeType === node.COMMENT_NODE) {
6326        (0, import_dom7.remove)(node);
6327      }
6328    }
6329  
6330    // packages/blocks/build-module/api/raw-handling/is-inline-content.mjs
6331    var import_dom8 = __toESM(require_dom(), 1);
6332    function isInline(node, contextTag) {
6333      if ((0, import_dom8.isTextContent)(node)) {
6334        return true;
6335      }
6336      if (!contextTag) {
6337        return false;
6338      }
6339      const tag = node.nodeName.toLowerCase();
6340      const inlineAllowedTagGroups = [
6341        ["ul", "li", "ol"],
6342        ["h1", "h2", "h3", "h4", "h5", "h6"]
6343      ];
6344      return inlineAllowedTagGroups.some(
6345        (tagGroup) => [tag, contextTag].filter((t2) => !tagGroup.includes(t2)).length === 0
6346      );
6347    }
6348    function deepCheck(nodes, contextTag) {
6349      return nodes.every(
6350        (node) => isInline(node, contextTag) && deepCheck(Array.from(node.children), contextTag)
6351      );
6352    }
6353    function isDoubleBR(node) {
6354      return node.nodeName === "BR" && !!node.previousSibling && node.previousSibling.nodeName === "BR";
6355    }
6356    function isInlineContent(HTML, contextTag) {
6357      const doc = document.implementation.createHTMLDocument("");
6358      doc.body.innerHTML = HTML;
6359      const nodes = Array.from(doc.body.children);
6360      return !nodes.some(isDoubleBR) && deepCheck(nodes, contextTag);
6361    }
6362  
6363    // packages/blocks/build-module/api/raw-handling/phrasing-content-reducer.mjs
6364    var import_dom9 = __toESM(require_dom(), 1);
6365    function phrasingContentReducer(node, doc) {
6366      if (node.nodeName === "SPAN" && node.style) {
6367        const {
6368          fontWeight,
6369          fontStyle,
6370          textDecorationLine,
6371          textDecoration,
6372          verticalAlign
6373        } = node.style;
6374        const element = node;
6375        if (fontWeight === "bold" || fontWeight === "700") {
6376          (0, import_dom9.wrap)(doc.createElement("strong"), element);
6377        }
6378        if (fontStyle === "italic") {
6379          (0, import_dom9.wrap)(doc.createElement("em"), element);
6380        }
6381        if (textDecorationLine === "line-through" || textDecoration.includes("line-through")) {
6382          (0, import_dom9.wrap)(doc.createElement("s"), element);
6383        }
6384        if (verticalAlign === "super") {
6385          (0, import_dom9.wrap)(doc.createElement("sup"), element);
6386        } else if (verticalAlign === "sub") {
6387          (0, import_dom9.wrap)(doc.createElement("sub"), element);
6388        }
6389      } else if (node.nodeName === "B") {
6390        (0, import_dom9.replaceTag)(node, "strong");
6391      } else if (node.nodeName === "I") {
6392        (0, import_dom9.replaceTag)(node, "em");
6393      } else if (node.nodeName === "A") {
6394        const anchor = node;
6395        if (anchor.target && anchor.target.toLowerCase() === "_blank") {
6396          anchor.rel = "noopener";
6397        } else {
6398          anchor.removeAttribute("target");
6399          anchor.removeAttribute("rel");
6400        }
6401        if (anchor.name && !anchor.id) {
6402          anchor.id = anchor.name;
6403        }
6404        if (anchor.id && !anchor.ownerDocument.querySelector(`[href="#$anchor.id}"]`)) {
6405          anchor.removeAttribute("id");
6406        }
6407      }
6408    }
6409  
6410    // packages/blocks/build-module/api/raw-handling/head-remover.mjs
6411    function headRemover(node) {
6412      if (node.nodeName !== "SCRIPT" && node.nodeName !== "NOSCRIPT" && node.nodeName !== "TEMPLATE" && node.nodeName !== "STYLE") {
6413        return;
6414      }
6415      node.parentNode.removeChild(node);
6416    }
6417  
6418    // packages/blocks/build-module/api/raw-handling/ms-list-ignore.mjs
6419    function msListIgnore(node) {
6420      if (node.nodeType !== node.ELEMENT_NODE) {
6421        return;
6422      }
6423      const el = node;
6424      const style = el.getAttribute("style");
6425      if (!style || !style.includes("mso-list")) {
6426        return;
6427      }
6428      const rules = style.split(";").reduce(
6429        (acc, rule) => {
6430          const [key, value] = rule.split(":");
6431          if (key && value) {
6432            acc[key.trim().toLowerCase()] = value.trim().toLowerCase();
6433          }
6434          return acc;
6435        },
6436        {}
6437      );
6438      if (rules["mso-list"] === "ignore") {
6439        el.remove();
6440      }
6441    }
6442  
6443    // packages/blocks/build-module/api/raw-handling/ms-list-converter.mjs
6444    function isList2(node) {
6445      return node.nodeName === "OL" || node.nodeName === "UL";
6446    }
6447    function msListConverter(node, doc) {
6448      if (node.nodeName !== "P") {
6449        return;
6450      }
6451      const element = node;
6452      const style = element.getAttribute("style");
6453      if (!style || !style.includes("mso-list")) {
6454        return;
6455      }
6456      const prevNode = element.previousElementSibling;
6457      if (!prevNode || !isList2(prevNode)) {
6458        const type = element.textContent.trim().slice(0, 1);
6459        const isNumeric = /[1iIaA]/.test(type);
6460        const newListNode = doc.createElement(isNumeric ? "ol" : "ul");
6461        if (isNumeric) {
6462          newListNode.setAttribute("type", type);
6463        }
6464        element.parentNode.insertBefore(newListNode, element);
6465      }
6466      const listNode = element.previousElementSibling;
6467      const listType = listNode.nodeName;
6468      const listItem = doc.createElement("li");
6469      let receivingNode = listNode;
6470      listItem.innerHTML = deepFilterHTML(element.innerHTML, [msListIgnore]);
6471      const matches = /mso-list\s*:[^;]+level([0-9]+)/i.exec(style);
6472      let level = matches ? parseInt(matches[1], 10) - 1 || 0 : 0;
6473      while (level--) {
6474        receivingNode = receivingNode.lastChild || receivingNode;
6475        if (isList2(receivingNode)) {
6476          receivingNode = receivingNode.lastChild || receivingNode;
6477        }
6478      }
6479      if (!isList2(receivingNode)) {
6480        receivingNode = receivingNode.appendChild(
6481          doc.createElement(listType)
6482        );
6483      }
6484      receivingNode.appendChild(listItem);
6485      element.parentNode.removeChild(element);
6486    }
6487  
6488    // packages/blocks/build-module/api/raw-handling/image-corrector.mjs
6489    var import_blob = __toESM(require_blob(), 1);
6490    function imageCorrector(img) {
6491      if (img.nodeName !== "IMG") {
6492        return;
6493      }
6494      const node = img;
6495      if (node.src.indexOf("file:") === 0) {
6496        node.src = "";
6497      }
6498      if (node.src.indexOf("data:") === 0) {
6499        const [properties, data] = node.src.split(",");
6500        const [type] = properties.slice(5).split(";");
6501        if (!data || !type) {
6502          node.src = "";
6503          return;
6504        }
6505        let decoded;
6506        try {
6507          decoded = atob(data);
6508        } catch {
6509          node.src = "";
6510          return;
6511        }
6512        const uint8Array = new Uint8Array(decoded.length);
6513        for (let i = 0; i < uint8Array.length; i++) {
6514          uint8Array[i] = decoded.charCodeAt(i);
6515        }
6516        const subtype = type.slice(type.indexOf("/") + 1);
6517        const name = `image-$v4_default().slice(0, 8)}.$subtype}`;
6518        const file = new window.File([uint8Array], name, { type });
6519        node.src = (0, import_blob.createBlobURL)(file);
6520      }
6521      if (node.height === 1 || node.width === 1) {
6522        node.parentNode.removeChild(node);
6523      }
6524    }
6525  
6526    // packages/blocks/build-module/api/raw-handling/div-normaliser.mjs
6527    function divNormaliser(div) {
6528      if (div.nodeName !== "DIV") {
6529        return;
6530      }
6531      const node = div;
6532      node.innerHTML = normaliseBlocks(node.innerHTML);
6533    }
6534  
6535    // node_modules/.store/marked@18.0.13-B-tDZfJAz9zUYDQYWjYtzA/node_modules/marked/lib/marked.esm.js
6536    function A2() {
6537      return { async: false, breaks: false, extensions: null, gfm: true, hooks: null, pedantic: false, renderer: null, silent: false, tokenizer: null, walkTokens: null };
6538    }
6539    var T = A2();
6540    function U(l4) {
6541      T = l4;
6542    }
6543    var E2 = { exec: () => null };
6544    function I(l4) {
6545      let e2 = [];
6546      return (t2) => {
6547        let n = Math.max(0, Math.min(3, t2 - 1)), i = e2[n];
6548        return i || (i = l4(n), e2[n] = i), i;
6549      };
6550    }
6551    function d(l4, e2 = "") {
6552      let t2 = typeof l4 == "string" ? l4 : l4.source, n = { replace: (i, r2) => {
6553        let o2 = typeof r2 == "string" ? r2 : r2.source;
6554        return o2 = o2.replace(m2.caret, "$1"), t2 = t2.replace(i, o2), n;
6555      }, getRegex: () => new RegExp(t2, e2) };
6556      return n;
6557    }
6558    var we = ((l4 = "") => {
6559      try {
6560        return !!new RegExp("(?<=1)(?<!1)" + l4);
6561      } catch {
6562        return false;
6563      }
6564    })();
6565    var m2 = { codeRemoveIndent: /^(?: {0,3}\t| {1,4})/gm, outputLinkReplace: /\\([\[\]])/g, indentCodeCompensation: /^(\s+)(?:```)/, beginningSpace: /^\s+/, endingHash: /#$/, startingSpaceChar: /^ /, endingSpaceChar: / $/, endingSpaceTabChar: /[ \t]$/, nonSpaceChar: /[^ ]/, newLineCharGlobal: /\n/g, tabCharGlobal: /\t/g, multipleSpaceGlobal: /\s+/g, blankLine: /^[ \t]*$/, doubleBlankLine: /\n[ \t]*\n[ \t]*$/, blockquoteStart: /^ {0,3}>/, blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g, blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm, listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g, listIsTask: /^\[[ xX]\] +\S/, listReplaceTask: /^\[[ xX]\] +/, listTaskCheckbox: /\[[ xX]\]/, anyLine: /\n.*\n/, hrefBrackets: /^<(.*)>$/, tableDelimiter: /[:|]/, tableAlignChars: /^\||\| *$/g, tableRowBlankLine: /\n[ \t]*$/, tableAlignRight: /^ *-+: *$/, tableAlignCenter: /^ *:-+: *$/, tableAlignLeft: /^ *:-+ *$/, startATag: /^<a /i, endATag: /^<\/a>/i, startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i, endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i, startAngleBracket: /^</, endAngleBracket: />$/, pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/, unicodeAlphaNumeric: /[\p{L}\p{N}]/u, escapeTest: /[&<>"']/, escapeReplace: /[&<>"']/g, escapeTestNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/, escapeReplaceNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g, caret: /(^|[^\[])\^/g, percentDecode: /%25/g, findPipe: /\|/g, splitPipe: / \|/, slashPipe: /\\\|/g, carriageReturn: /\r\n|\r/g, spaceLine: /^ +$/gm, notSpaceStart: /^\S*/, endingNewline: /\n$/, listItemRegex: (l4) => new RegExp(`^( {0,3}${l4})((?:[     ][^\\n]*)?(?:\\n|$))`), nextBulletRegex: I((l4) => new RegExp(`^ {0,${l4}}(?:[*+-]|\\d{1,9}[.)])((?:[     ][^\\n]*)?(?:\\n|$))`)), hrRegex: I((l4) => new RegExp(`^ {0,${l4}}((?:-[     ]*){3,}|(?:_[     ]*){3,}|(?:\\*[     ]*){3,})(?:\\n+|$)`)), fencesBeginRegex: I((l4) => new RegExp(`^ {0,${l4}}(?:\`\`\`|~~~)`)), headingBeginRegex: I((l4) => new RegExp(`^ {0,${l4}}#`)), htmlBeginRegex: I((l4) => new RegExp(`^ {0,${l4}}(?:</?(?:${H2})(?: +|$|/?>)|<(?:script|pre|style|textarea|!--))`, "i")), blockquoteBeginRegex: I((l4) => new RegExp(`^ {0,${l4}}>`)) };
6566    var ye = /^(?:[ \t]*(?:\n|$))+/;
6567    var Pe = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/;
6568    var Se = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/;
6569    var v2 = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/;
6570    var _e = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/;
6571    var K = / {0,3}(?:[*+-]|\d{1,9}[.)])/;
6572    var le = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/;
6573    var ue = d(le).replace(/bull/g, K).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}(?:\s|$)/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex();
6574    var $e = d(le).replace(/bull/g, K).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}(?:\s|$)/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex();
6575    var W = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/;
6576    var Le = /^[^\n]+/;
6577    var X = /(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/;
6578    var ze = d(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", X).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex();
6579    var Ee = d(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g, K).getRegex();
6580    var H2 = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";
6581    var J = /<!--(?:-?>|[\s\S]*?(?:-->|$))/;
6582    var Me = d("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[     ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[     ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[     ]*)+\\n|$))", "i").replace("comment", J).replace("tag", H2).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();
6583    var pe = (l4) => d(W).replace("hr", v2).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list", l4).replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", H2).getRegex();
6584    var Ae = pe(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/);
6585    var Ie = pe(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/);
6586    var Ce = d(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", Ie).getRegex();
6587    var V = { blockquote: Ce, code: Pe, def: ze, fences: Se, heading: _e, hr: v2, html: Me, lheading: ue, list: Ee, newline: ye, paragraph: Ae, table: E2, text: Le };
6588    var ie = d("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", v2).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3}    )[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", H2).getRegex();
6589    var Be = { ...V, lheading: $e, table: ie, paragraph: d(W).replace("hr", v2).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", ie).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", H2).getRegex() };
6590    var De = { ...V, html: d(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", J).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, heading: /^(#{1,6})(.*)(?:\n+|$)/, fences: E2, lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, paragraph: d(W).replace("hr", v2).replace("heading", ` *#{1,6} *[^
6591  ]`).replace("lheading", ue).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex() };
6592    var qe = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/;
6593    var ve = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/;
6594    var ce = /^( {2,}|\\)\n(?!\s*$)[ \t]*/;
6595    var He = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/;
6596    var _ = /[\p{P}\p{S}]/u;
6597    var C2 = /[\s\p{P}\p{S}]/u;
6598    var Z = /[^\s\p{P}\p{S}]/u;
6599    var Ze = d(/^((?![*_])punctSpace)/, "u").replace(/punctSpace/g, C2).getRegex();
6600    var Ge = /[\p{Pi}\p{Ps}"']/u;
6601    var he = /(?!~)[\p{P}\p{S}]/u;
6602    var Qe = /(?!~)[\s\p{P}\p{S}]/u;
6603    var Ne = /(?:[^\s\p{P}\p{S}]|~)/u;
6604    var je = d(/link|precode-code|html/, "g").replace("link", /\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-", we ? "(?<!`)()" : "(^^|[^`])").replace("code", /(?<b>`+)[^`]+\k<b>(?!`)/).replace("html", /<(?! )[^<>]*?>/).getRegex();
6605    var de = /^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/;
6606    var Ue = d(de, "u").replace(/punct/g, _).getRegex();
6607    var Fe = d(de, "u").replace(/punct/g, he).getRegex();
6608    var Ke = /^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/;
6609    var We = d(Ke, "u").replace(/openQuote/g, Ge).replace(/punct/g, _).getRegex();
6610    var ke = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)";
6611    var Xe = d(ke, "gu").replace(/notPunctSpace/g, Z).replace(/punctSpace/g, C2).replace(/punct/g, _).getRegex();
6612    var Je = d(ke, "gu").replace(/notPunctSpace/g, Ne).replace(/punctSpace/g, Qe).replace(/punct/g, he).getRegex();
6613    var Ve = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)";
6614    var Ye = d(Ve, "gu").replace(/notPunctSpace/g, Z).replace(/punctSpace/g, C2).replace(/punct/g, _).getRegex();
6615    var et = d("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)", "gu").replace(/notPunctSpace/g, Z).replace(/punctSpace/g, C2).replace(/punct/g, _).getRegex();
6616    var tt = "^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)";
6617    var nt = d(tt, "gu").replace(/notPunctSpace/g, Z).replace(/punctSpace/g, C2).replace(/punct/g, _).getRegex();
6618    var rt = d(/^~~?(?:((?!~)punct)|[^\s~])/, "u").replace(/punct/g, _).getRegex();
6619    var st = "^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)";
6620    var it = d(st, "gu").replace(/notPunctSpace/g, Z).replace(/punctSpace/g, C2).replace(/punct/g, _).getRegex();
6621    var ot = d(/\\(punct)/, "gu").replace(/punct/g, _).getRegex();
6622    var at = d(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex();
6623    var lt = d(J).replace("(?:-->|$)", "-->").getRegex();
6624    var ut = d("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment", lt).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex();
6625    var ge = /\[(?:\\[\s\S]|[^\[\]\\])*\]/;
6626    var N2 = d(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets", ge).getRegex();
6627    var pt = d(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label", N2).replace("href", /<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex();
6628    var ct = d(/^!?\[(label)\]\[(ref)\]/).replace("label", N2).replace("ref", X).getRegex();
6629    var ht = d(/^!?\[(ref)\](?:\[\])?/).replace("ref", X).getRegex();
6630    var oe = /(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/;
6631    var dt = d(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets", ge).getRegex();
6632    var kt = d("reflink|nolink(?!\\()", "g").replace("reflink", d(/^!?\[(label)\]\[(ref)\]/).replace("label", dt).replace("ref", oe).getRegex()).replace("nolink", d(/^!?\[(ref)\](?:\[\])?/).replace("ref", oe).getRegex()).getRegex();
6633    var ae = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/;
6634    var Y = { _backpedal: E2, anyPunctuation: ot, autolink: at, blockSkip: je, br: ce, code: ve, del: E2, delLDelim: E2, delRDelim: E2, emStrongLDelim: Ue, emStrongRDelimAst: Xe, emStrongRDelimUnd: et, escape: qe, link: pt, nolink: ht, punctuation: Ze, reflink: ct, reflinkSearch: kt, tag: ut, text: He, url: E2 };
6635    var gt = { ...Y, emStrongLDelim: We, emStrongRDelimAst: Ye, emStrongRDelimUnd: nt, link: d(/^!?\[(label)\]\((.*?)\)/).replace("label", N2).getRegex(), reflink: d(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", N2).getRegex() };
6636    var F = { ...Y, emStrongRDelimAst: Je, emStrongLDelim: Fe, delLDelim: rt, delRDelim: it, url: d(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol", ae).replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(), _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, del: /^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/, text: d(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol", ae).getRegex() };
6637    var ft = { ...F, br: d(ce).replace("{2,}", "*").getRegex(), text: d(F.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex() };
6638    var G = { normal: V, gfm: Be, pedantic: De };
6639    var B = { normal: Y, gfm: F, breaks: ft, pedantic: gt };
6640    var mt = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" };
6641    var fe = (l4) => mt[l4];
6642    function R2(l4, e2) {
6643      if (e2) {
6644        if (m2.escapeTest.test(l4)) return l4.replace(m2.escapeReplace, fe);
6645      } else if (m2.escapeTestNoEncode.test(l4)) return l4.replace(m2.escapeReplaceNoEncode, fe);
6646      return l4;
6647    }
6648    function ee(l4) {
6649      try {
6650        l4 = encodeURI(l4).replace(m2.percentDecode, "%");
6651      } catch {
6652        return null;
6653      }
6654      return l4;
6655    }
6656    function te(l4, e2) {
6657      let t2 = l4.replace(m2.findPipe, (r2, o2, s) => {
6658        let u = false, a = o2;
6659        for (; --a >= 0 && s[a] === "\\"; ) u = !u;
6660        return u ? "|" : " |";
6661      }), n = t2.split(m2.splitPipe), i = 0;
6662      if (n[0].trim() || n.shift(), n.length > 0 && !n.at(-1)?.trim() && n.pop(), e2) if (n.length > e2) n.splice(e2);
6663      else for (; n.length < e2; ) n.push("");
6664      for (; i < n.length; i++) n[i] = n[i].trim().replace(m2.slashPipe, "|");
6665      return n;
6666    }
6667    function $2(l4, e2, t2) {
6668      let n = l4.length;
6669      if (n === 0) return "";
6670      let i = 0;
6671      for (; i < n; ) {
6672        let r2 = l4.charAt(n - i - 1);
6673        if (r2 === e2 && !t2) i++;
6674        else if (r2 !== e2 && t2) i++;
6675        else break;
6676      }
6677      return l4.slice(0, n - i);
6678    }
6679    function ne(l4) {
6680      let e2 = l4.split(`
6681  `), t2 = e2.length - 1;
6682      for (; t2 >= 0 && m2.blankLine.test(e2[t2]); ) t2--;
6683      return e2.length - t2 <= 2 ? l4 : e2.slice(0, t2 + 1).join(`
6684  `);
6685    }
6686    function D2(l4) {
6687      return l4.toLowerCase().toUpperCase().toLowerCase();
6688    }
6689    function me(l4, e2) {
6690      if (l4.indexOf(e2[1]) === -1) return -1;
6691      let t2 = 0;
6692      for (let n = 0; n < l4.length; n++) if (l4[n] === "\\") n++;
6693      else if (l4[n] === e2[0]) t2++;
6694      else if (l4[n] === e2[1] && (t2--, t2 < 0)) return n;
6695      return t2 > 0 ? -2 : -1;
6696    }
6697    function xe(l4, e2 = 0) {
6698      let t2 = e2, n = "";
6699      for (let i of l4) if (i === "    ") {
6700        let r2 = 4 - t2 % 4;
6701        n += " ".repeat(r2), t2 += r2;
6702      } else n += i, t2++;
6703      return n;
6704    }
6705    function be(l4, e2, t2, n, i) {
6706      let r2 = e2.href, o2 = e2.title || null, s = l4[1].replace(i.other.outputLinkReplace, "$1"), u = l4[0].charAt(0) === "!";
6707      n.state.inLink = true;
6708      let a = n.state.linkEmitted, p2 = n.state.inRawBlock;
6709      n.state.linkEmitted = false;
6710      let c2 = n.inlineTokens(s), h = n.state.linkEmitted;
6711      if (n.state.linkEmitted = a, n.state.inLink = false, !u) {
6712        if (h) {
6713          n.state.inRawBlock = p2;
6714          return;
6715        }
6716        n.state.linkEmitted = true;
6717      }
6718      return { type: u ? "image" : "link", raw: t2, href: r2, title: o2, text: s, tokens: c2 };
6719    }
6720    function xt(l4, e2, t2) {
6721      let n = l4.match(t2.other.indentCodeCompensation);
6722      if (n === null) return e2;
6723      let i = n[1];
6724      return e2.split(`
6725  `).map((r2) => {
6726        let o2 = r2.match(t2.other.beginningSpace);
6727        if (o2 === null) return r2;
6728        let [s] = o2;
6729        return r2.slice(Math.min(s.length, i.length));
6730      }).join(`
6731  `);
6732    }
6733    function Re(l4, e2, t2, n) {
6734      if (!e2.includes("<")) return false;
6735      for (let i = 0; i < e2.length; i++) {
6736        if (e2[i] === "\\") {
6737          i++;
6738          continue;
6739        }
6740        if (e2[i] === "`") {
6741          let s = n.inline.code.exec(e2.slice(i));
6742          if (s) {
6743            i += s[0].length - 1;
6744            continue;
6745          }
6746        }
6747        if (e2[i] !== "<") continue;
6748        let r2 = l4.slice(t2 + i), o2 = n.inline.tag.exec(r2) || n.inline.autolink.exec(r2);
6749        if (o2) {
6750          if (o2[0].length > e2.length - i) return true;
6751          i += o2[0].length - 1;
6752        }
6753      }
6754      return false;
6755    }
6756    var y2 = class {
6757      options;
6758      rules;
6759      lexer;
6760      constructor(e2) {
6761        this.options = e2 || T;
6762      }
6763      space(e2) {
6764        let t2 = this.rules.block.newline.exec(e2);
6765        if (t2 && t2[0].length > 0) return { type: "space", raw: t2[0] };
6766      }
6767      code(e2) {
6768        let t2 = this.rules.block.code.exec(e2);
6769        if (t2) {
6770          let n = this.options.pedantic ? t2[0] : ne(t2[0]), i = n.replace(this.rules.other.codeRemoveIndent, "");
6771          return { type: "code", raw: n, codeBlockStyle: "indented", text: i };
6772        }
6773      }
6774      fences(e2) {
6775        let t2 = this.rules.block.fences.exec(e2);
6776        if (t2) {
6777          let n = t2[0], i = xt(n, t2[3] || "", this.rules);
6778          return { type: "code", raw: n, lang: t2[2] ? t2[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : t2[2], text: i };
6779        }
6780      }
6781      heading(e2) {
6782        let t2 = this.rules.block.heading.exec(e2);
6783        if (t2) {
6784          let n = t2[2].trim();
6785          if (this.rules.other.endingHash.test(n)) {
6786            let i = $2(n, "#");
6787            (this.options.pedantic || !i || this.rules.other.endingSpaceTabChar.test(i)) && (n = i.trim());
6788          }
6789          return { type: "heading", raw: $2(t2[0], `
6790  `), depth: t2[1].length, text: n, tokens: this.lexer.inline(n) };
6791        }
6792      }
6793      hr(e2) {
6794        let t2 = this.rules.block.hr.exec(e2);
6795        if (t2) return { type: "hr", raw: $2(t2[0], `
6796  `) };
6797      }
6798      blockquote(e2) {
6799        let t2 = this.rules.block.blockquote.exec(e2);
6800        if (t2) {
6801          let n = $2(t2[0], `
6802  `).split(`
6803  `), i = "", r2 = "", o2 = [];
6804          for (; n.length > 0; ) {
6805            let s = false, u = [], a;
6806            for (a = 0; a < n.length; a++) if (this.rules.other.blockquoteStart.test(n[a])) u.push(n[a]), s = true;
6807            else if (!s) u.push(n[a]);
6808            else break;
6809            n = n.slice(a);
6810            let p2 = u.join(`
6811  `), c2 = p2.replace(this.rules.other.blockquoteSetextReplace, `
6812      $1`).replace(this.rules.other.blockquoteSetextReplace2, "");
6813            i = i ? `$i}
6814  $p2}` : p2, r2 = r2 ? `$r2}
6815  $c2}` : c2;
6816            let h = this.lexer.state.top;
6817            if (this.lexer.state.top = true, this.lexer.blockTokens(c2, o2, true), this.lexer.state.top = h, n.length === 0) break;
6818            let k2 = o2.at(-1);
6819            if (k2?.type === "code") break;
6820            if (k2?.type === "blockquote") {
6821              let O = k2, g2 = n.join(`
6822  `), w2 = O.raw + `
6823  ` + g2.replace(this.rules.other.blockquoteSetextReplace2, ""), z = this.blockquote(w2);
6824              o2[o2.length - 1] = z, i = `$i}
6825  $g2}`, r2 = r2.substring(0, r2.length - O.text.length) + z.text;
6826              break;
6827            } else if (k2?.type === "list") {
6828              let O = k2, g2 = O.raw + `
6829  ` + n.join(`
6830  `), w2 = this.list(g2);
6831              o2[o2.length - 1] = w2, i = i.substring(0, i.length - k2.raw.length) + w2.raw, r2 = r2.substring(0, r2.length - O.raw.length) + w2.raw, n = g2.substring(o2.at(-1).raw.length).split(`
6832  `);
6833              continue;
6834            }
6835          }
6836          return { type: "blockquote", raw: i, tokens: o2, text: r2 };
6837        }
6838      }
6839      list(e2) {
6840        let t2 = this.rules.block.list.exec(e2);
6841        if (t2) {
6842          let n = t2[1].trim(), i = n.length > 1, r2 = { type: "list", raw: "", ordered: i, start: i ? +n.slice(0, -1) : "", loose: false, items: [] };
6843          n = i ? `\\d{1,9}\\$n.slice(-1)}` : `\\$n}`, this.options.pedantic && (n = i ? n : "[*+-]");
6844          let o2 = this.rules.other.listItemRegex(n), s = false;
6845          for (; e2; ) {
6846            let a = false, p2 = "", c2 = "";
6847            if (!(t2 = o2.exec(e2)) || this.rules.block.hr.test(e2)) break;
6848            p2 = t2[0], e2 = e2.substring(p2.length);
6849            let h = xe(t2[2].split(`
6850  `, 1)[0], t2[1].length), k2 = e2.split(`
6851  `, 1)[0], O = !h.trim(), g2 = 0;
6852            if (this.options.pedantic ? (g2 = 2, c2 = h.trimStart()) : O ? g2 = t2[1].length + 1 : (g2 = h.search(this.rules.other.nonSpaceChar), g2 = g2 > 4 ? 1 : g2, c2 = h.slice(g2), g2 += t2[1].length), O && this.rules.other.blankLine.test(k2) && (p2 += k2 + `
6853  `, e2 = e2.substring(k2.length + 1), a = true), !a) {
6854              let w2 = this.rules.other.nextBulletRegex(g2), z = this.rules.other.hrRegex(g2), re = this.rules.other.fencesBeginRegex(g2), se = this.rules.other.headingBeginRegex(g2), Te = this.rules.other.htmlBeginRegex(g2), Oe = this.rules.other.blockquoteBeginRegex(g2);
6855              for (; e2; ) {
6856                let j2 = e2.split(`
6857  `, 1)[0], q2;
6858                if (k2 = j2, this.options.pedantic ? (k2 = k2.replace(this.rules.other.listReplaceNesting, "  "), q2 = k2) : q2 = k2.replace(this.rules.other.tabCharGlobal, "    "), re.test(k2) || se.test(k2) || Te.test(k2) || Oe.test(k2) || w2.test(k2) || z.test(k2)) break;
6859                if (q2.search(this.rules.other.nonSpaceChar) >= g2 || !k2.trim()) c2 += `
6860  ` + q2.slice(g2);
6861                else {
6862                  if (O || h.replace(this.rules.other.tabCharGlobal, "    ").search(this.rules.other.nonSpaceChar) >= 4 || re.test(h) || se.test(h) || z.test(h)) break;
6863                  c2 += `
6864  ` + k2;
6865                }
6866                O = !k2.trim(), p2 += j2 + `
6867  `, e2 = e2.substring(j2.length + 1), h = q2.slice(g2);
6868              }
6869            }
6870            r2.loose || (s ? r2.loose = true : this.rules.other.doubleBlankLine.test(p2) && (s = true)), r2.items.push({ type: "list_item", raw: p2, task: !!this.options.gfm && this.rules.other.listIsTask.test(c2), loose: false, text: c2, tokens: [] }), r2.raw += p2;
6871          }
6872          let u = r2.items.at(-1);
6873          if (u) u.raw = u.raw.trimEnd(), u.text = u.text.trimEnd();
6874          else return;
6875          r2.raw = r2.raw.trimEnd();
6876          for (let a of r2.items) if (this.lexer.state.top = false, a.tokens = this.lexer.blockTokens(a.text, []), !r2.loose) {
6877            let p2 = a.tokens.filter((h) => h.type === "space"), c2 = p2.length > 0 && p2.some((h) => this.rules.other.anyLine.test(h.raw));
6878            r2.loose = c2;
6879          }
6880          for (let a of r2.items) {
6881            let p2 = a.tokens[0];
6882            if (a.task && (p2?.type === "text" || p2?.type === "paragraph")) {
6883              a.text = a.text.replace(this.rules.other.listReplaceTask, ""), p2.raw = p2.raw.replace(this.rules.other.listReplaceTask, ""), p2.text = p2.text.replace(this.rules.other.listReplaceTask, "");
6884              for (let h = this.lexer.inlineQueue.length - 1; h >= 0; h--) if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[h].src)) {
6885                this.lexer.inlineQueue[h].src = this.lexer.inlineQueue[h].src.replace(this.rules.other.listReplaceTask, "");
6886                break;
6887              }
6888              let c2 = this.rules.other.listTaskCheckbox.exec(a.raw);
6889              if (c2) {
6890                let h = { type: "checkbox", raw: c2[0] + " ", checked: c2[0] !== "[ ]" };
6891                a.checked = h.checked, r2.loose ? a.tokens[0] && ["paragraph", "text"].includes(a.tokens[0].type) && "tokens" in a.tokens[0] && a.tokens[0].tokens ? (a.tokens[0].raw = h.raw + a.tokens[0].raw, a.tokens[0].text = h.raw + a.tokens[0].text, a.tokens[0].tokens.unshift(h)) : a.tokens.unshift({ type: "paragraph", raw: h.raw, text: h.raw, tokens: [h] }) : a.tokens.unshift(h);
6892              }
6893            } else a.task && (a.task = false);
6894          }
6895          if (r2.loose) for (let a of r2.items) {
6896            a.loose = true;
6897            for (let p2 of a.tokens) p2.type === "text" && (p2.type = "paragraph");
6898          }
6899          return r2;
6900        }
6901      }
6902      html(e2) {
6903        let t2 = this.rules.block.html.exec(e2);
6904        if (t2) {
6905          let n = ne(t2[0]);
6906          return { type: "html", block: true, raw: n, pre: t2[1] === "pre" || t2[1] === "script" || t2[1] === "style", text: n };
6907        }
6908      }
6909      def(e2) {
6910        let t2 = this.rules.block.def.exec(e2);
6911        if (t2) {
6912          let n = D2(t2[1]).replace(this.rules.other.multipleSpaceGlobal, " "), i = t2[2] ? t2[2].replace(this.rules.other.hrefBrackets, "$1").replace(this.rules.inline.anyPunctuation, "$1") : "", r2 = t2[3] ? t2[3].substring(1, t2[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : t2[3];
6913          return { type: "def", tag: n, raw: $2(t2[0], `
6914  `), href: i, title: r2 };
6915        }
6916      }
6917      table(e2) {
6918        let t2 = this.rules.block.table.exec(e2);
6919        if (!t2 || !this.rules.other.tableDelimiter.test(t2[2])) return;
6920        let n = te(t2[1]), i = t2[2].replace(this.rules.other.tableAlignChars, "").split("|"), r2 = t2[3]?.trim() ? t2[3].replace(this.rules.other.tableRowBlankLine, "").split(`
6921  `) : [], o2 = { type: "table", raw: $2(t2[0], `
6922  `), header: [], align: [], rows: [] };
6923        if (n.length === i.length) {
6924          for (let s of i) this.rules.other.tableAlignRight.test(s) ? o2.align.push("right") : this.rules.other.tableAlignCenter.test(s) ? o2.align.push("center") : this.rules.other.tableAlignLeft.test(s) ? o2.align.push("left") : o2.align.push(null);
6925          for (let s = 0; s < n.length; s++) o2.header.push({ text: n[s], tokens: this.lexer.inline(n[s]), header: true, align: o2.align[s] });
6926          for (let s of r2) o2.rows.push(te(s, o2.header.length).map((u, a) => ({ text: u, tokens: this.lexer.inline(u), header: false, align: o2.align[a] })));
6927          return o2;
6928        }
6929      }
6930      lheading(e2) {
6931        let t2 = this.rules.block.lheading.exec(e2);
6932        if (t2) {
6933          let n = t2[1].trim();
6934          return { type: "heading", raw: $2(t2[0], `
6935  `), depth: t2[2].charAt(0) === "=" ? 1 : 2, text: n, tokens: this.lexer.inline(n) };
6936        }
6937      }
6938      paragraph(e2) {
6939        let t2 = this.rules.block.paragraph.exec(e2);
6940        if (t2) {
6941          let n = t2[1].charAt(t2[1].length - 1) === `
6942  ` ? t2[1].slice(0, -1) : t2[1];
6943          return { type: "paragraph", raw: t2[0], text: n, tokens: this.lexer.inline(n) };
6944        }
6945      }
6946      text(e2) {
6947        let t2 = this.rules.block.text.exec(e2);
6948        if (t2) return { type: "text", raw: t2[0], text: t2[0], tokens: this.lexer.inline(t2[0]) };
6949      }
6950      escape(e2) {
6951        let t2 = this.rules.inline.escape.exec(e2);
6952        if (t2) return { type: "escape", raw: t2[0], text: t2[1] };
6953      }
6954      tag(e2) {
6955        let t2 = this.rules.inline.tag.exec(e2);
6956        if (t2) return !this.lexer.state.inLink && this.rules.other.startATag.test(t2[0]) ? this.lexer.state.inLink = true : this.lexer.state.inLink && this.rules.other.endATag.test(t2[0]) && (this.lexer.state.inLink = false), !this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(t2[0]) ? this.lexer.state.inRawBlock = true : this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(t2[0]) && (this.lexer.state.inRawBlock = false), { type: "html", raw: t2[0], inLink: this.lexer.state.inLink, inRawBlock: this.lexer.state.inRawBlock, block: false, text: t2[0] };
6957      }
6958      link(e2) {
6959        let t2 = this.rules.inline.link.exec(e2);
6960        if (t2) {
6961          let n = t2[0].charAt(0) === "!" ? 2 : 1;
6962          if (!this.options.pedantic && Re(e2, t2[1], n, this.rules)) return;
6963          let i = t2[2].trim();
6964          if (!this.options.pedantic && this.rules.other.startAngleBracket.test(i)) {
6965            if (!this.rules.other.endAngleBracket.test(i)) return;
6966            let s = $2(i.slice(0, -1), "\\");
6967            if ((i.length - s.length) % 2 === 0) return;
6968          } else {
6969            let s = me(t2[2], "()");
6970            if (s === -2) return;
6971            if (s > -1) {
6972              let a = (t2[0].indexOf("!") === 0 ? 5 : 4) + t2[1].length + s;
6973              t2[2] = t2[2].substring(0, s), t2[0] = t2[0].substring(0, a).trim(), t2[3] = "";
6974            }
6975          }
6976          let r2 = t2[2], o2 = "";
6977          if (this.options.pedantic) {
6978            let s = this.rules.other.pedanticHrefTitle.exec(r2);
6979            s && (r2 = s[1], o2 = s[3]);
6980          } else o2 = t2[3] ? t2[3].slice(1, -1) : "";
6981          return r2 = r2.trim(), this.rules.other.startAngleBracket.test(r2) && (this.options.pedantic && !this.rules.other.endAngleBracket.test(i) ? r2 = r2.slice(1) : r2 = r2.slice(1, -1)), be(t2, { href: r2 && r2.replace(this.rules.inline.anyPunctuation, "$1"), title: o2 && o2.replace(this.rules.inline.anyPunctuation, "$1") }, t2[0], this.lexer, this.rules);
6982        }
6983      }
6984      reflink(e2, t2) {
6985        let n;
6986        if ((n = this.rules.inline.reflink.exec(e2)) || (n = this.rules.inline.nolink.exec(e2))) {
6987          let i = n[0].charAt(0) === "!" ? 2 : 1;
6988          if (!this.options.pedantic && Re(e2, n[1], i, this.rules)) return;
6989          let r2 = (n[2] || n[1]).replace(this.rules.other.multipleSpaceGlobal, " "), o2 = t2[D2(r2)];
6990          if (!o2) {
6991            let s = n[0].charAt(0);
6992            return { type: "text", raw: s, text: s };
6993          }
6994          return be(n, o2, n[0], this.lexer, this.rules);
6995        }
6996      }
6997      emStrong(e2, t2, n = "") {
6998        let i = this.rules.inline.emStrongLDelim.exec(e2);
6999        if (!i || !i[1] && !i[2] && !i[3] && !i[4] || i[4] && n.match(this.rules.other.unicodeAlphaNumeric)) return;
7000        if (!(i[1] || i[3] || "") || !n || this.rules.inline.punctuation.exec(n)) {
7001          let o2 = [...i[0]].length - 1, s, u, a = o2, p2 = 0, c2 = i[0][0], h = n === c2, k2 = c2 === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;
7002          for (k2.lastIndex = 0, t2 = t2.slice(-1 * e2.length + o2); (i = k2.exec(t2)) !== null; ) {
7003            if (s = i[1] || i[2] || i[3] || i[4] || i[5] || i[6], !s) continue;
7004            if (u = [...s].length, i[3] || i[4]) {
7005              a += u;
7006              continue;
7007            } else if (i[5] || i[6]) {
7008              if (o2 % 3 && !((o2 + u) % 3)) {
7009                p2 += u;
7010                continue;
7011              }
7012              if (h) break;
7013            }
7014            if (a -= u, a > 0) continue;
7015            u = Math.min(u, u + a + p2);
7016            let O = [...i[0]][0].length, g2 = e2.slice(0, o2 + i.index + O + u);
7017            if (Math.min(o2, u) % 2) {
7018              let z = g2.slice(1, -1);
7019              return { type: "em", raw: g2, text: z, tokens: this.lexer.inlineTokens(z) };
7020            }
7021            let w2 = g2.slice(2, -2);
7022            return { type: "strong", raw: g2, text: w2, tokens: this.lexer.inlineTokens(w2) };
7023          }
7024        }
7025      }
7026      codespan(e2) {
7027        let t2 = this.rules.inline.code.exec(e2);
7028        if (t2) {
7029          let n = t2[2].replace(this.rules.other.newLineCharGlobal, " "), i = this.rules.other.nonSpaceChar.test(n), r2 = this.rules.other.startingSpaceChar.test(n) && this.rules.other.endingSpaceChar.test(n);
7030          return i && r2 && (n = n.substring(1, n.length - 1)), { type: "codespan", raw: t2[0], text: n };
7031        }
7032      }
7033      br(e2) {
7034        let t2 = this.rules.inline.br.exec(e2);
7035        if (t2) return { type: "br", raw: t2[0] };
7036      }
7037      del(e2, t2, n = "") {
7038        let i = this.rules.inline.delLDelim.exec(e2);
7039        if (!i) return;
7040        if (!(i[1] || "") || !n || this.rules.inline.punctuation.exec(n)) {
7041          let o2 = [...i[0]].length - 1, s, u, a = o2, p2 = this.rules.inline.delRDelim;
7042          for (p2.lastIndex = 0, t2 = t2.slice(-1 * e2.length + o2); (i = p2.exec(t2)) !== null; ) {
7043            if (s = i[1] || i[2] || i[3] || i[4] || i[5] || i[6], !s || (u = [...s].length, u !== o2)) continue;
7044            if (i[3] || i[4]) {
7045              a += u;
7046              continue;
7047            }
7048            if (a -= u, a > 0) continue;
7049            u = Math.min(u, u + a);
7050            let c2 = [...i[0]][0].length, h = e2.slice(0, o2 + i.index + c2 + u), k2 = h.slice(o2, -o2);
7051            return { type: "del", raw: h, text: k2, tokens: this.lexer.inlineTokens(k2) };
7052          }
7053        }
7054      }
7055      autolink(e2) {
7056        let t2 = this.rules.inline.autolink.exec(e2);
7057        if (t2) {
7058          let n, i;
7059          return t2[2] === "@" ? (n = t2[1], i = "mailto:" + n) : (n = t2[1], i = n), { type: "link", raw: t2[0], text: n, href: i, autolink: true, tokens: [{ type: "text", raw: n, text: n }] };
7060        }
7061      }
7062      url(e2) {
7063        let t2;
7064        if (t2 = this.rules.inline.url.exec(e2)) {
7065          let n, i;
7066          if (t2[2] === "@") n = t2[0], i = "mailto:" + n;
7067          else {
7068            let r2;
7069            do
7070              r2 = t2[0], t2[0] = this.rules.inline._backpedal.exec(t2[0])?.[0] ?? "";
7071            while (r2 !== t2[0]);
7072            n = t2[0], t2[1] === "www." ? i = "http://" + t2[0] : i = t2[0];
7073          }
7074          return { type: "link", raw: t2[0], text: n, href: i, autolink: true, tokens: [{ type: "text", raw: n, text: n }] };
7075        }
7076      }
7077      inlineText(e2) {
7078        let t2 = this.rules.inline.text.exec(e2);
7079        if (t2) {
7080          let n = this.lexer.state.inRawBlock;
7081          return { type: "text", raw: t2[0], text: t2[0], escaped: n };
7082        }
7083      }
7084    };
7085    var x2 = class l2 {
7086      tokens;
7087      options;
7088      state;
7089      inlineQueue;
7090      tokenizer;
7091      constructor(e2) {
7092        this.tokens = [], this.tokens.links = /* @__PURE__ */ Object.create(null), this.options = e2 || T, this.options.tokenizer = this.options.tokenizer || new y2(), this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = { inLink: false, inRawBlock: false, linkEmitted: false, top: true };
7093        let t2 = { other: m2, block: G.normal, inline: B.normal };
7094        this.options.pedantic ? (t2.block = G.pedantic, t2.inline = B.pedantic) : this.options.gfm && (t2.block = G.gfm, this.options.breaks ? t2.inline = B.breaks : t2.inline = B.gfm), this.tokenizer.rules = t2;
7095      }
7096      static get rules() {
7097        return { block: G, inline: B };
7098      }
7099      static lex(e2, t2) {
7100        return new l2(t2).lex(e2);
7101      }
7102      static lexInline(e2, t2) {
7103        return new l2(t2).inlineTokens(e2);
7104      }
7105      lex(e2) {
7106        e2 = e2.replace(m2.carriageReturn, `
7107  `), this.blockTokens(e2, this.tokens);
7108        for (let t2 = 0; t2 < this.inlineQueue.length; t2++) {
7109          let n = this.inlineQueue[t2];
7110          this.inlineTokens(n.src, n.tokens);
7111        }
7112        return this.inlineQueue = [], this.tokens;
7113      }
7114      blockTokens(e2, t2 = [], n = false) {
7115        this.tokenizer.lexer = this, this.options.pedantic && (e2 = e2.replace(m2.tabCharGlobal, "    ").replace(m2.spaceLine, ""));
7116        let i = 1 / 0;
7117        for (; e2; ) {
7118          if (e2.length < i) i = e2.length;
7119          else {
7120            this.infiniteLoopError(e2.charCodeAt(0));
7121            break;
7122          }
7123          let r2;
7124          if (this.options.extensions?.block?.some((s) => (r2 = s.call({ lexer: this }, e2, t2)) ? (e2 = e2.substring(r2.raw.length), t2.push(r2), true) : false)) continue;
7125          if (r2 = this.tokenizer.space(e2)) {
7126            e2 = e2.substring(r2.raw.length);
7127            let s = t2.at(-1);
7128            r2.raw.length === 1 && s !== void 0 ? s.raw += `
7129  ` : t2.push(r2);
7130            continue;
7131          }
7132          if (r2 = this.tokenizer.code(e2)) {
7133            e2 = e2.substring(r2.raw.length);
7134            let s = t2.at(-1);
7135            s?.type === "paragraph" || s?.type === "text" ? (s.raw += (s.raw.endsWith(`
7136  `) ? "" : `
7137  `) + r2.raw, s.text += `
7138  ` + r2.text, this.inlineQueue.at(-1).src = s.text) : t2.push(r2);
7139            continue;
7140          }
7141          if (r2 = this.tokenizer.fences(e2)) {
7142            e2 = e2.substring(r2.raw.length), t2.push(r2);
7143            continue;
7144          }
7145          if (r2 = this.tokenizer.heading(e2)) {
7146            e2 = e2.substring(r2.raw.length), t2.push(r2);
7147            continue;
7148          }
7149          if (r2 = this.tokenizer.hr(e2)) {
7150            e2 = e2.substring(r2.raw.length), t2.push(r2);
7151            continue;
7152          }
7153          if (r2 = this.tokenizer.blockquote(e2)) {
7154            e2 = e2.substring(r2.raw.length), t2.push(r2);
7155            continue;
7156          }
7157          if (r2 = this.tokenizer.list(e2)) {
7158            e2 = e2.substring(r2.raw.length), t2.push(r2);
7159            continue;
7160          }
7161          if (r2 = this.tokenizer.html(e2)) {
7162            e2 = e2.substring(r2.raw.length), t2.push(r2);
7163            continue;
7164          }
7165          if (r2 = this.tokenizer.def(e2)) {
7166            e2 = e2.substring(r2.raw.length);
7167            let s = t2.at(-1);
7168            s?.type === "paragraph" || s?.type === "text" ? (s.raw += (s.raw.endsWith(`
7169  `) ? "" : `
7170  `) + r2.raw, s.text += `
7171  ` + r2.raw, this.inlineQueue.at(-1).src = s.text) : this.tokens.links[r2.tag] || (this.tokens.links[r2.tag] = { href: r2.href, title: r2.title }, t2.push(r2));
7172            continue;
7173          }
7174          if (r2 = this.tokenizer.table(e2)) {
7175            e2 = e2.substring(r2.raw.length), t2.push(r2);
7176            continue;
7177          }
7178          if (r2 = this.tokenizer.lheading(e2)) {
7179            e2 = e2.substring(r2.raw.length), t2.push(r2);
7180            continue;
7181          }
7182          let o2 = e2;
7183          if (this.options.extensions?.startBlock) {
7184            let s = 1 / 0, u = e2.slice(1), a;
7185            this.options.extensions.startBlock.forEach((p2) => {
7186              a = p2.call({ lexer: this }, u), typeof a == "number" && a >= 0 && (s = Math.min(s, a));
7187            }), s < 1 / 0 && s >= 0 && (o2 = e2.substring(0, s + 1));
7188          }
7189          if (this.state.top && (r2 = this.tokenizer.paragraph(o2))) {
7190            let s = t2.at(-1);
7191            n && s?.type === "paragraph" ? (s.raw += (s.raw.endsWith(`
7192  `) ? "" : `
7193  `) + r2.raw, s.text += `
7194  ` + r2.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = s.text) : t2.push(r2), n = o2.length !== e2.length, e2 = e2.substring(r2.raw.length);
7195            continue;
7196          }
7197          if (r2 = this.tokenizer.text(e2)) {
7198            e2 = e2.substring(r2.raw.length);
7199            let s = t2.at(-1);
7200            s?.type === "text" ? (s.raw += (s.raw.endsWith(`
7201  `) ? "" : `
7202  `) + r2.raw, s.text += `
7203  ` + r2.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = s.text) : t2.push(r2);
7204            continue;
7205          }
7206          if (e2) {
7207            this.infiniteLoopError(e2.charCodeAt(0));
7208            break;
7209          }
7210        }
7211        return this.state.top = true, t2;
7212      }
7213      inline(e2, t2 = []) {
7214        return this.inlineQueue.push({ src: e2, tokens: t2 }), t2;
7215      }
7216      linkInText(e2) {
7217        if (!e2.includes("[")) return false;
7218        let t2 = this.tokenizer.rules.inline.link;
7219        for (let n of e2.matchAll(this.tokenizer.rules.inline.blockSkip)) if (t2.test(n[0]) && e2.charAt(n.index - 1) !== "!") return true;
7220        for (let n of e2.matchAll(this.tokenizer.rules.inline.reflinkSearch)) {
7221          let i = n[0], r2 = i.lastIndexOf("[");
7222          if (!(i.charAt(0) === "!" || !Object.hasOwn(this.tokens.links, D2(i.slice(r2 + 1, -1)))) && !(r2 > 1 && this.linkInText(i.slice(1, r2 - 1)))) return true;
7223        }
7224        return false;
7225      }
7226      inlineTokens(e2, t2 = []) {
7227        this.tokenizer.lexer = this;
7228        let n = e2;
7229        if (this.tokens.links && e2.includes("[")) {
7230          let s = this.tokenizer.rules.inline.reflinkSearch, u = (a) => {
7231            let p2 = a.lastIndexOf("[");
7232            if (!Object.hasOwn(this.tokens.links, D2(a.slice(p2 + 1, -1)))) return a;
7233            if (p2 > 1 && a.charAt(0) !== "!") {
7234              let c2 = a.slice(1, p2 - 1);
7235              if (this.linkInText(c2)) return "[" + c2.replace(s, u) + "][" + "a".repeat(a.length - p2 - 2) + "]";
7236            }
7237            return "[" + "a".repeat(a.length - 2) + "]";
7238          };
7239          n = n.replace(s, u);
7240        }
7241        n = n.replace(this.tokenizer.rules.inline.anyPunctuation, (s) => "+".repeat(s.length)), n = n.replace(this.tokenizer.rules.inline.blockSkip, (s, u, a) => {
7242          let p2 = a ? a.length : 0;
7243          return s.slice(0, p2) + "[" + "a".repeat(s.length - p2 - 2) + "]";
7244        }), n = this.options.hooks?.emStrongMask?.call({ lexer: this }, n) ?? n;
7245        let i = false, r2 = "", o2 = 1 / 0;
7246        for (; e2; ) {
7247          if (e2.length < o2) o2 = e2.length;
7248          else {
7249            this.infiniteLoopError(e2.charCodeAt(0));
7250            break;
7251          }
7252          i || (r2 = ""), i = false;
7253          let s;
7254          if (this.options.extensions?.inline?.some((a) => (s = a.call({ lexer: this }, e2, t2)) ? (e2 = e2.substring(s.raw.length), t2.push(s), true) : false)) continue;
7255          if (s = this.tokenizer.escape(e2)) {
7256            e2 = e2.substring(s.raw.length), t2.push(s);
7257            continue;
7258          }
7259          if (s = this.tokenizer.tag(e2)) {
7260            e2 = e2.substring(s.raw.length), t2.push(s);
7261            continue;
7262          }
7263          if (s = this.tokenizer.link(e2)) {
7264            e2 = e2.substring(s.raw.length), t2.push(s);
7265            continue;
7266          }
7267          if (s = this.tokenizer.reflink(e2, this.tokens.links)) {
7268            e2 = e2.substring(s.raw.length);
7269            let a = t2.at(-1);
7270            s.type === "text" && a?.type === "text" ? (a.raw += s.raw, a.text += s.text) : t2.push(s);
7271            continue;
7272          }
7273          if (s = this.tokenizer.emStrong(e2, n, r2)) {
7274            e2 = e2.substring(s.raw.length), t2.push(s);
7275            continue;
7276          }
7277          if (s = this.tokenizer.codespan(e2)) {
7278            e2 = e2.substring(s.raw.length), t2.push(s);
7279            continue;
7280          }
7281          if (s = this.tokenizer.br(e2)) {
7282            e2 = e2.substring(s.raw.length), t2.push(s);
7283            continue;
7284          }
7285          if (s = this.tokenizer.del(e2, n, r2)) {
7286            e2 = e2.substring(s.raw.length), t2.push(s);
7287            continue;
7288          }
7289          if (s = this.tokenizer.autolink(e2)) {
7290            e2 = e2.substring(s.raw.length), t2.push(s);
7291            continue;
7292          }
7293          if (!this.state.inLink && (s = this.tokenizer.url(e2))) {
7294            e2 = e2.substring(s.raw.length), t2.push(s);
7295            continue;
7296          }
7297          let u = e2;
7298          if (this.options.extensions?.startInline) {
7299            let a = 1 / 0, p2 = e2.slice(1), c2;
7300            this.options.extensions.startInline.forEach((h) => {
7301              c2 = h.call({ lexer: this }, p2), typeof c2 == "number" && c2 >= 0 && (a = Math.min(a, c2));
7302            }), a < 1 / 0 && a >= 0 && (u = e2.substring(0, a + 1));
7303          }
7304          if (s = this.tokenizer.inlineText(u)) {
7305            e2 = e2.substring(s.raw.length), s.raw.slice(-1) !== "_" && (r2 = s.raw.slice(-1)), i = true;
7306            let a = t2.at(-1);
7307            a?.type === "text" ? (a.raw += s.raw, a.text += s.text) : t2.push(s);
7308            continue;
7309          }
7310          if (e2) {
7311            this.infiniteLoopError(e2.charCodeAt(0));
7312            break;
7313          }
7314        }
7315        return t2;
7316      }
7317      infiniteLoopError(e2) {
7318        let t2 = "Infinite loop on byte: " + e2;
7319        if (this.options.silent) console.error(t2);
7320        else throw new Error(t2);
7321      }
7322    };
7323    var P = class {
7324      options;
7325      parser;
7326      constructor(e2) {
7327        this.options = e2 || T;
7328      }
7329      space(e2) {
7330        return "";
7331      }
7332      code({ text: e2, lang: t2, escaped: n }) {
7333        let i = (t2 || "").match(m2.notSpaceStart)?.[0], r2 = e2 ? e2.replace(m2.endingNewline, "") + `
7334  ` : "";
7335        return i ? '<pre><code class="language-' + R2(i) + '">' + (n ? r2 : R2(r2, true)) + `</code></pre>
7336  ` : "<pre><code>" + (n ? r2 : R2(r2, true)) + `</code></pre>
7337  `;
7338      }
7339      blockquote({ tokens: e2 }) {
7340        return `<blockquote>
7341  $this.parser.parse(e2)}</blockquote>
7342  `;
7343      }
7344      html({ text: e2 }) {
7345        return e2;
7346      }
7347      def(e2) {
7348        return "";
7349      }
7350      heading({ tokens: e2, depth: t2 }) {
7351        return `<h$t2}>$this.parser.parseInline(e2)}</h$t2}>
7352  `;
7353      }
7354      hr(e2) {
7355        return `<hr>
7356  `;
7357      }
7358      list(e2) {
7359        let t2 = e2.ordered, n = e2.start, i = "";
7360        for (let s = 0; s < e2.items.length; s++) {
7361          let u = e2.items[s];
7362          i += this.listitem(u);
7363        }
7364        let r2 = t2 ? "ol" : "ul", o2 = t2 && n !== 1 ? ' start="' + n + '"' : "";
7365        return "<" + r2 + o2 + `>
7366  ` + i + "</" + r2 + `>
7367  `;
7368      }
7369      listitem(e2) {
7370        return `<li>$this.parser.parse(e2.tokens)}</li>
7371  `;
7372      }
7373      checkbox({ checked: e2 }) {
7374        return "<input " + (e2 ? 'checked="" ' : "") + 'disabled="" type="checkbox"> ';
7375      }
7376      paragraph({ tokens: e2 }) {
7377        return `<p>$this.parser.parseInline(e2)}</p>
7378  `;
7379      }
7380      table(e2) {
7381        let t2 = "", n = "";
7382        for (let r2 = 0; r2 < e2.header.length; r2++) n += this.tablecell(e2.header[r2]);
7383        t2 += this.tablerow({ text: n });
7384        let i = "";
7385        for (let r2 = 0; r2 < e2.rows.length; r2++) {
7386          let o2 = e2.rows[r2];
7387          n = "";
7388          for (let s = 0; s < o2.length; s++) n += this.tablecell(o2[s]);
7389          i += this.tablerow({ text: n });
7390        }
7391        return i && (i = `<tbody>$i}</tbody>`), `<table>
7392  <thead>
7393  ` + t2 + `</thead>
7394  ` + i + `</table>
7395  `;
7396      }
7397      tablerow({ text: e2 }) {
7398        return `<tr>
7399  $e2}</tr>
7400  `;
7401      }
7402      tablecell(e2) {
7403        let t2 = this.parser.parseInline(e2.tokens), n = e2.header ? "th" : "td";
7404        return (e2.align ? `<$n} align="$e2.align}">` : `<$n}>`) + t2 + `</$n}>
7405  `;
7406      }
7407      strong({ tokens: e2 }) {
7408        return `<strong>$this.parser.parseInline(e2)}</strong>`;
7409      }
7410      em({ tokens: e2 }) {
7411        return `<em>$this.parser.parseInline(e2)}</em>`;
7412      }
7413      codespan({ text: e2 }) {
7414        return `<code>$R2(e2, true)}</code>`;
7415      }
7416      br(e2) {
7417        return "<br>";
7418      }
7419      del({ tokens: e2 }) {
7420        return `<del>$this.parser.parseInline(e2)}</del>`;
7421      }
7422      link({ href: e2, title: t2, text: n, tokens: i, autolink: r2 }) {
7423        let o2 = r2 ? R2(n, true) : this.parser.parseInline(i), s = ee(e2);
7424        if (s === null) return o2;
7425        e2 = R2(s, r2);
7426        let u = '<a href="' + e2 + '"';
7427        return t2 && (u += ' title="' + R2(t2) + '"'), u += ">" + o2 + "</a>", u;
7428      }
7429      image({ href: e2, title: t2, text: n, tokens: i }) {
7430        i && (n = this.parser.parseInline(i, this.parser.textRenderer));
7431        let r2 = ee(e2);
7432        if (r2 === null) return R2(n);
7433        e2 = r2;
7434        let o2 = `<img src="$R2(e2)}" alt="$R2(n)}"`;
7435        return t2 && (o2 += ` title="$R2(t2)}"`), o2 += ">", o2;
7436      }
7437      text(e2) {
7438        return "tokens" in e2 && e2.tokens ? this.parser.parseInline(e2.tokens) : "escaped" in e2 && e2.escaped ? e2.text : R2(e2.text);
7439      }
7440    };
7441    var L = class {
7442      strong({ text: e2 }) {
7443        return e2;
7444      }
7445      em({ text: e2 }) {
7446        return e2;
7447      }
7448      codespan({ text: e2 }) {
7449        return e2;
7450      }
7451      del({ text: e2 }) {
7452        return e2;
7453      }
7454      html({ text: e2 }) {
7455        return e2;
7456      }
7457      text({ text: e2 }) {
7458        return e2;
7459      }
7460      link({ text: e2 }) {
7461        return "" + e2;
7462      }
7463      image({ text: e2 }) {
7464        return "" + e2;
7465      }
7466      br() {
7467        return "";
7468      }
7469      checkbox({ raw: e2 }) {
7470        return e2;
7471      }
7472    };
7473    var b = class l3 {
7474      options;
7475      renderer;
7476      textRenderer;
7477      constructor(e2) {
7478        this.options = e2 || T, this.options.renderer = this.options.renderer || new P(), this.renderer = this.options.renderer, this.renderer.options = this.options, this.renderer.parser = this, this.textRenderer = new L();
7479      }
7480      static parse(e2, t2) {
7481        return new l3(t2).parse(e2);
7482      }
7483      static parseInline(e2, t2) {
7484        return new l3(t2).parseInline(e2);
7485      }
7486      parse(e2) {
7487        this.renderer.parser = this;
7488        let t2 = "";
7489        for (let n = 0; n < e2.length; n++) {
7490          let i = e2[n];
7491          if (this.options.extensions?.renderers?.[i.type]) {
7492            let o2 = i, s = this.options.extensions.renderers[o2.type].call({ parser: this }, o2);
7493            if (s !== false || !["space", "hr", "heading", "code", "table", "blockquote", "list", "checkbox", "html", "def", "paragraph", "text"].includes(o2.type)) {
7494              t2 += s || "";
7495              continue;
7496            }
7497          }
7498          let r2 = i;
7499          switch (r2.type) {
7500            case "space": {
7501              t2 += this.renderer.space(r2);
7502              break;
7503            }
7504            case "hr": {
7505              t2 += this.renderer.hr(r2);
7506              break;
7507            }
7508            case "heading": {
7509              t2 += this.renderer.heading(r2);
7510              break;
7511            }
7512            case "code": {
7513              t2 += this.renderer.code(r2);
7514              break;
7515            }
7516            case "table": {
7517              t2 += this.renderer.table(r2);
7518              break;
7519            }
7520            case "blockquote": {
7521              t2 += this.renderer.blockquote(r2);
7522              break;
7523            }
7524            case "list": {
7525              t2 += this.renderer.list(r2);
7526              break;
7527            }
7528            case "checkbox": {
7529              t2 += this.renderer.checkbox(r2);
7530              break;
7531            }
7532            case "html": {
7533              t2 += this.renderer.html(r2);
7534              break;
7535            }
7536            case "def": {
7537              t2 += this.renderer.def(r2);
7538              break;
7539            }
7540            case "paragraph": {
7541              t2 += this.renderer.paragraph(r2);
7542              break;
7543            }
7544            case "text": {
7545              t2 += this.renderer.text(r2);
7546              break;
7547            }
7548            default: {
7549              let o2 = 'Token with "' + r2.type + '" type was not found.';
7550              if (this.options.silent) return console.error(o2), "";
7551              throw new Error(o2);
7552            }
7553          }
7554        }
7555        return t2;
7556      }
7557      parseInline(e2, t2 = this.renderer) {
7558        this.renderer.parser = this;
7559        let n = "";
7560        for (let i = 0; i < e2.length; i++) {
7561          let r2 = e2[i];
7562          if (this.options.extensions?.renderers?.[r2.type]) {
7563            let s = this.options.extensions.renderers[r2.type].call({ parser: this }, r2);
7564            if (s !== false || !["escape", "html", "link", "image", "checkbox", "strong", "em", "codespan", "br", "del", "text"].includes(r2.type)) {
7565              n += s || "";
7566              continue;
7567            }
7568          }
7569          let o2 = r2;
7570          switch (o2.type) {
7571            case "escape": {
7572              n += t2.text(o2);
7573              break;
7574            }
7575            case "html": {
7576              n += t2.html(o2);
7577              break;
7578            }
7579            case "link": {
7580              n += t2.link(o2);
7581              break;
7582            }
7583            case "image": {
7584              n += t2.image(o2);
7585              break;
7586            }
7587            case "checkbox": {
7588              n += t2.checkbox(o2);
7589              break;
7590            }
7591            case "strong": {
7592              n += t2.strong(o2);
7593              break;
7594            }
7595            case "em": {
7596              n += t2.em(o2);
7597              break;
7598            }
7599            case "codespan": {
7600              n += t2.codespan(o2);
7601              break;
7602            }
7603            case "br": {
7604              n += t2.br(o2);
7605              break;
7606            }
7607            case "del": {
7608              n += t2.del(o2);
7609              break;
7610            }
7611            case "text": {
7612              n += t2.text(o2);
7613              break;
7614            }
7615            default: {
7616              let s = 'Token with "' + o2.type + '" type was not found.';
7617              if (this.options.silent) return console.error(s), "";
7618              throw new Error(s);
7619            }
7620          }
7621        }
7622        return n;
7623      }
7624    };
7625    var S = class {
7626      options;
7627      block;
7628      constructor(e2) {
7629        this.options = e2 || T;
7630      }
7631      static passThroughHooks = /* @__PURE__ */ new Set(["preprocess", "postprocess", "processAllTokens", "emStrongMask"]);
7632      static passThroughHooksRespectAsync = /* @__PURE__ */ new Set(["preprocess", "postprocess", "processAllTokens"]);
7633      preprocess(e2) {
7634        return e2;
7635      }
7636      postprocess(e2) {
7637        return e2;
7638      }
7639      processAllTokens(e2) {
7640        return e2;
7641      }
7642      emStrongMask(e2) {
7643        return e2;
7644      }
7645      provideLexer(e2 = this.block) {
7646        return e2 ? x2.lex : x2.lexInline;
7647      }
7648      provideParser(e2 = this.block) {
7649        return e2 ? b.parse : b.parseInline;
7650      }
7651    };
7652    var Q = class {
7653      defaults = A2();
7654      options = this.setOptions;
7655      parse = this.parseMarkdown(true);
7656      parseInline = this.parseMarkdown(false);
7657      Parser = b;
7658      Renderer = P;
7659      TextRenderer = L;
7660      Lexer = x2;
7661      Tokenizer = y2;
7662      Hooks = S;
7663      constructor(...e2) {
7664        this.use(...e2);
7665      }
7666      walkTokens(e2, t2) {
7667        let n = [];
7668        for (let i of e2) switch (n = n.concat(t2.call(this, i)), i.type) {
7669          case "table": {
7670            let r2 = i;
7671            for (let o2 of r2.header) n = n.concat(this.walkTokens(o2.tokens, t2));
7672            for (let o2 of r2.rows) for (let s of o2) n = n.concat(this.walkTokens(s.tokens, t2));
7673            break;
7674          }
7675          case "list": {
7676            let r2 = i;
7677            n = n.concat(this.walkTokens(r2.items, t2));
7678            break;
7679          }
7680          default: {
7681            let r2 = i;
7682            this.defaults.extensions?.childTokens?.[r2.type] ? this.defaults.extensions.childTokens[r2.type].forEach((o2) => {
7683              let s = r2[o2].flat(1 / 0);
7684              n = n.concat(this.walkTokens(s, t2));
7685            }) : r2.tokens && (n = n.concat(this.walkTokens(r2.tokens, t2)));
7686          }
7687        }
7688        return n;
7689      }
7690      use(...e2) {
7691        let t2 = this.defaults.extensions || { renderers: {}, childTokens: {} };
7692        return e2.forEach((n) => {
7693          let i = { ...n };
7694          if (i.async = this.defaults.async || i.async || false, n.extensions && (n.extensions.forEach((r2) => {
7695            if (!r2.name) throw new Error("extension name required");
7696            if ("renderer" in r2) {
7697              let o2 = t2.renderers[r2.name];
7698              o2 ? t2.renderers[r2.name] = function(...s) {
7699                let u = r2.renderer.apply(this, s);
7700                return u === false && (u = o2.apply(this, s)), u;
7701              } : t2.renderers[r2.name] = r2.renderer;
7702            }
7703            if ("tokenizer" in r2) {
7704              if (!r2.level || r2.level !== "block" && r2.level !== "inline") throw new Error("extension level must be 'block' or 'inline'");
7705              let o2 = t2[r2.level];
7706              o2 ? o2.unshift(r2.tokenizer) : t2[r2.level] = [r2.tokenizer], r2.start && (r2.level === "block" ? t2.startBlock ? t2.startBlock.push(r2.start) : t2.startBlock = [r2.start] : r2.level === "inline" && (t2.startInline ? t2.startInline.push(r2.start) : t2.startInline = [r2.start]));
7707            }
7708            "childTokens" in r2 && r2.childTokens && (t2.childTokens[r2.name] = r2.childTokens);
7709          }), i.extensions = t2), n.renderer) {
7710            let r2 = this.defaults.renderer || new P(this.defaults);
7711            for (let o2 in n.renderer) {
7712              if (!(o2 in r2)) throw new Error(`renderer '$o2}' does not exist`);
7713              if (["options", "parser"].includes(o2)) continue;
7714              let s = o2, u = n.renderer[s], a = r2[s];
7715              r2[s] = (...p2) => {
7716                let c2 = u.apply(r2, p2);
7717                return c2 === false && (c2 = a.apply(r2, p2)), c2 || "";
7718              };
7719            }
7720            i.renderer = r2;
7721          }
7722          if (n.tokenizer) {
7723            let r2 = this.defaults.tokenizer || new y2(this.defaults);
7724            for (let o2 in n.tokenizer) {
7725              if (!(o2 in r2)) throw new Error(`tokenizer '$o2}' does not exist`);
7726              if (["options", "rules", "lexer"].includes(o2)) continue;
7727              let s = o2, u = n.tokenizer[s], a = r2[s];
7728              r2[s] = (...p2) => {
7729                let c2 = u.apply(r2, p2);
7730                return c2 === false && (c2 = a.apply(r2, p2)), c2;
7731              };
7732            }
7733            i.tokenizer = r2;
7734          }
7735          if (n.hooks) {
7736            let r2 = this.defaults.hooks || new S();
7737            for (let o2 in n.hooks) {
7738              if (!(o2 in r2)) throw new Error(`hook '$o2}' does not exist`);
7739              if (["options", "block"].includes(o2)) continue;
7740              let s = o2, u = n.hooks[s], a = r2[s];
7741              S.passThroughHooks.has(o2) ? r2[s] = (p2) => {
7742                if (this.defaults.async && S.passThroughHooksRespectAsync.has(o2)) return (async () => {
7743                  let h = await u.call(r2, p2);
7744                  return a.call(r2, h);
7745                })();
7746                let c2 = u.call(r2, p2);
7747                return a.call(r2, c2);
7748              } : r2[s] = (...p2) => {
7749                if (this.defaults.async) return (async () => {
7750                  let h = await u.apply(r2, p2);
7751                  return h === false && (h = await a.apply(r2, p2)), h;
7752                })();
7753                let c2 = u.apply(r2, p2);
7754                return c2 === false && (c2 = a.apply(r2, p2)), c2;
7755              };
7756            }
7757            i.hooks = r2;
7758          }
7759          if (n.walkTokens) {
7760            let r2 = this.defaults.walkTokens, o2 = n.walkTokens;
7761            i.walkTokens = function(s) {
7762              let u = [];
7763              return u.push(o2.call(this, s)), r2 && (u = u.concat(r2.call(this, s))), u;
7764            };
7765          }
7766          this.defaults = { ...this.defaults, ...i };
7767        }), this;
7768      }
7769      setOptions(e2) {
7770        return this.defaults = { ...this.defaults, ...e2 }, this;
7771      }
7772      lexer(e2, t2) {
7773        return x2.lex(e2, t2 ?? this.defaults);
7774      }
7775      parser(e2, t2) {
7776        return b.parse(e2, t2 ?? this.defaults);
7777      }
7778      parseMarkdown(e2) {
7779        return (n, i) => {
7780          let r2 = { ...i }, o2 = { ...this.defaults, ...r2 }, s = this.onError(!!o2.silent, !!o2.async);
7781          if (this.defaults.async === true && r2.async === false) return s(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));
7782          if (typeof n > "u" || n === null) return s(new Error("marked(): input parameter is undefined or null"));
7783          if (typeof n != "string") return s(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(n) + ", string expected"));
7784          if (o2.hooks && (o2.hooks.options = o2, o2.hooks.block = e2), o2.async) return (async () => {
7785            let u = o2.hooks ? await o2.hooks.preprocess(n) : n, p2 = await (o2.hooks ? await o2.hooks.provideLexer(e2) : e2 ? x2.lex : x2.lexInline)(u, o2), c2 = o2.hooks ? await o2.hooks.processAllTokens(p2) : p2;
7786            o2.walkTokens && await Promise.all(this.walkTokens(c2, o2.walkTokens));
7787            let k2 = await (o2.hooks ? await o2.hooks.provideParser(e2) : e2 ? b.parse : b.parseInline)(c2, o2);
7788            return o2.hooks ? await o2.hooks.postprocess(k2) : k2;
7789          })().catch(s);
7790          try {
7791            o2.hooks && (n = o2.hooks.preprocess(n));
7792            let a = (o2.hooks ? o2.hooks.provideLexer(e2) : e2 ? x2.lex : x2.lexInline)(n, o2);
7793            o2.hooks && (a = o2.hooks.processAllTokens(a)), o2.walkTokens && this.walkTokens(a, o2.walkTokens);
7794            let c2 = (o2.hooks ? o2.hooks.provideParser(e2) : e2 ? b.parse : b.parseInline)(a, o2);
7795            return o2.hooks && (c2 = o2.hooks.postprocess(c2)), c2;
7796          } catch (u) {
7797            return s(u);
7798          }
7799        };
7800      }
7801      onError(e2, t2) {
7802        return (n) => {
7803          if (n.message += `
7804  Please report this to https://github.com/markedjs/marked.`, e2) {
7805            let i = "<p>An error occurred:</p><pre>" + R2(n.message + "", true) + "</pre>";
7806            return t2 ? Promise.resolve(i) : i;
7807          }
7808          if (t2) return Promise.reject(n);
7809          throw n;
7810        };
7811      }
7812    };
7813    var M2 = new Q();
7814    function f(l4, e2) {
7815      return M2.parse(l4, e2);
7816    }
7817    f.options = f.setOptions = function(l4) {
7818      return M2.setOptions(l4), f.defaults = M2.defaults, U(f.defaults), f;
7819    };
7820    f.getDefaults = A2;
7821    f.defaults = T;
7822    function bt(...l4) {
7823      return M2.use(...l4), f.defaults = M2.defaults, U(f.defaults), f;
7824    }
7825    f.use = bt;
7826    f.walkTokens = function(l4, e2) {
7827      return M2.walkTokens(l4, e2);
7828    };
7829    f.parseInline = M2.parseInline;
7830    f.Parser = b;
7831    f.parser = b.parse;
7832    f.Renderer = P;
7833    f.TextRenderer = L;
7834    f.Lexer = x2;
7835    f.lexer = x2.lex;
7836    f.Tokenizer = y2;
7837    f.Hooks = S;
7838    f.parse = f;
7839    var un = f.options;
7840    var pn = f.setOptions;
7841    var cn = f.walkTokens;
7842    var hn = f.parseInline;
7843    var kn = b.parse;
7844    var gn = x2.lex;
7845  
7846    // packages/blocks/build-module/api/raw-handling/markdown-converter.mjs
7847    function escapeBodyText(value) {
7848      return value.replace(/&(?!#?\w+;)/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
7849    }
7850    var converter = new Q({
7851      gfm: true,
7852      breaks: true,
7853      renderer: {
7854        // Match showdown's `omitExtraWLInCodeBlocks`: marked appends `\n`
7855        // before `</code>`, which leaks into the Code block's content as a
7856        // trailing blank line.
7857        code({ text: text2, lang }) {
7858          const language = (lang || "").match(/^\S*/)?.[0];
7859          const cls = language ? ` class="$language} language-$language}"` : "";
7860          return `<pre><code$cls}>$escapeBodyText(
7861            text2
7862          )}</code></pre>`;
7863        },
7864        text(token) {
7865          if ("tokens" in token && token.tokens || "escaped" in token && token.escaped) {
7866            return false;
7867          }
7868          return escapeBodyText(token.text);
7869        }
7870      }
7871    });
7872    function slackMarkdownVariantCorrector(text2) {
7873      return text2.replace(
7874        /((?:^|\n)```)([^\n`]+)(```(?:$|\n))/,
7875        (match, p1, p2, p3) => `$p1}
7876  $p2}
7877  $p3}`
7878      );
7879    }
7880    function bulletsToAsterisks(text2) {
7881      return text2.replace(/(^|\n)•( +)/g, "$1*$2");
7882    }
7883    function escapeSingleLineOrderedListMarker(text2) {
7884      if (text2.includes("\n")) {
7885        return text2;
7886      }
7887      return text2.replace(/^(\d+)\.(\s)/, "$1\\.$2");
7888    }
7889    var correctors = [
7890      escapeSingleLineOrderedListMarker,
7891      bulletsToAsterisks,
7892      slackMarkdownVariantCorrector
7893    ];
7894    function markdownConverter(text2) {
7895      return converter.parse(
7896        correctors.reduce(
7897          (current, corrector) => corrector(current),
7898          text2
7899        ),
7900        { async: false }
7901      );
7902    }
7903  
7904    // packages/blocks/build-module/api/raw-handling/iframe-remover.mjs
7905    function iframeRemover(iframe) {
7906      if (iframe.nodeName === "IFRAME") {
7907        const node = iframe;
7908        const text2 = node.ownerDocument.createTextNode(node.src);
7909        node.parentNode.replaceChild(text2, node);
7910      }
7911    }
7912  
7913    // packages/blocks/build-module/api/raw-handling/google-docs-uid-remover.mjs
7914    var import_dom10 = __toESM(require_dom(), 1);
7915    function googleDocsUIdRemover(node) {
7916      const el = node;
7917      if (!el.id || el.id.indexOf("docs-internal-guid-") !== 0) {
7918        return;
7919      }
7920      if (el.tagName === "B") {
7921        (0, import_dom10.unwrap)(node);
7922      } else {
7923        el.removeAttribute("id");
7924      }
7925    }
7926  
7927    // packages/blocks/build-module/api/raw-handling/non-breaking-space-corrector.mjs
7928    function nonBreakingSpaceCorrector(node) {
7929      if (node.nodeType !== node.TEXT_NODE) {
7930        return;
7931      }
7932      if (node.parentElement?.closest("pre")) {
7933        return;
7934      }
7935      const text2 = node;
7936      if (/^\u00a0+$/.test(text2.data) && !getSibling(node, "previous") && !getSibling(node, "next")) {
7937        return;
7938      }
7939      text2.data = text2.data.replace(/^\u00a0+|\u00a0+$/g, " ");
7940    }
7941  
7942    // packages/blocks/build-module/api/raw-handling/html-formatting-remover.mjs
7943    function isFormattingSpace(character) {
7944      return character === " " || character === "\r" || character === "\n" || character === "    ";
7945    }
7946    function htmlFormattingRemover(node) {
7947      if (node.nodeType !== node.TEXT_NODE) {
7948        return;
7949      }
7950      let parent = node;
7951      while (parent = parent.parentNode) {
7952        if (parent.nodeType === parent.ELEMENT_NODE && parent.nodeName === "PRE") {
7953          return;
7954        }
7955      }
7956      const textNode = node;
7957      let newData = textNode.data.replace(/[ \r\n\t]+/g, " ");
7958      if (newData[0] === " ") {
7959        const previousSibling = getSibling(node, "previous");
7960        if (!previousSibling || previousSibling.nodeName === "BR" || previousSibling.textContent.slice(-1) === " ") {
7961          newData = newData.slice(1);
7962        }
7963      }
7964      if (newData[newData.length - 1] === " ") {
7965        const nextSibling = getSibling(node, "next");
7966        if (!nextSibling || nextSibling.nodeName === "BR" || nextSibling.nodeType === nextSibling.TEXT_NODE && isFormattingSpace(nextSibling.textContent[0])) {
7967          newData = newData.slice(0, -1);
7968        }
7969      }
7970      if (!newData) {
7971        node.parentNode.removeChild(node);
7972      } else {
7973        textNode.data = newData;
7974      }
7975    }
7976  
7977    // packages/blocks/build-module/api/raw-handling/format-space-corrector.mjs
7978    var import_dom11 = __toESM(require_dom(), 1);
7979    function moveEdgeSpace(node, doc, isLeading) {
7980      const child = isLeading ? node.firstChild : node.lastChild;
7981      if (!child || child.nodeType !== node.TEXT_NODE) {
7982        return;
7983      }
7984      const text2 = child;
7985      const edgeIndex = isLeading ? 0 : text2.data.length - 1;
7986      if (text2.data[edgeIndex] !== " ") {
7987        return;
7988      }
7989      text2.data = isLeading ? text2.data.slice(1) : text2.data.slice(0, -1);
7990      if (!text2.data) {
7991        node.removeChild(text2);
7992      }
7993      node.parentNode.insertBefore(
7994        doc.createTextNode(" "),
7995        isLeading ? node : node.nextSibling
7996      );
7997    }
7998    function formatSpaceCorrector(node, doc) {
7999      if (node.nodeType !== node.ELEMENT_NODE || !(0, import_dom11.isPhrasingContent)(node)) {
8000        return;
8001      }
8002      moveEdgeSpace(node, doc, true);
8003      moveEdgeSpace(node, doc, false);
8004    }
8005  
8006    // packages/blocks/build-module/api/raw-handling/br-remover.mjs
8007    function brRemover(node) {
8008      if (node.nodeName !== "BR") {
8009        return;
8010      }
8011      if (getSibling(node, "next")) {
8012        return;
8013      }
8014      node.parentNode.removeChild(node);
8015    }
8016  
8017    // packages/blocks/build-module/api/raw-handling/empty-paragraph-remover.mjs
8018    function emptyParagraphRemover(node) {
8019      if (node.nodeName !== "P") {
8020        return;
8021      }
8022      if (node.hasChildNodes()) {
8023        return;
8024      }
8025      node.parentNode.removeChild(node);
8026    }
8027  
8028    // packages/blocks/build-module/api/raw-handling/slack-paragraph-corrector.mjs
8029    function slackParagraphCorrector(node) {
8030      if (node.nodeName !== "SPAN") {
8031        return;
8032      }
8033      if (node.getAttribute("data-stringify-type") !== "paragraph-break") {
8034        return;
8035      }
8036      const parentNode = node.parentNode;
8037      parentNode.insertBefore(node.ownerDocument.createElement("br"), node);
8038      parentNode.insertBefore(node.ownerDocument.createElement("br"), node);
8039      parentNode.removeChild(node);
8040    }
8041  
8042    // packages/blocks/build-module/api/raw-handling/latex-to-math.mjs
8043    function isLatexMathMode(text2) {
8044      const lettersRegex = /[\p{L}\s]+/gu;
8045      let match;
8046      while (match = lettersRegex.exec(text2)) {
8047        if (text2[match.index - 1] === "{") {
8048          continue;
8049        }
8050        let sequence = match[0];
8051        if (text2[match.index - 1] === "\\") {
8052          sequence = sequence.replace(/^[a-zA-Z]+/, "");
8053        }
8054        if (sequence.length < 6) {
8055          continue;
8056        }
8057        return false;
8058      }
8059      if (/\\[a-zA-Z]+\s*\{/g.test(text2)) {
8060        return true;
8061      }
8062      const softClues = [
8063        (t2) => t2.includes("^") && !t2.startsWith("^"),
8064        (t2) => ["=", "+", "-", "/", "*"].some(
8065          (operator) => t2.includes(operator)
8066        ),
8067        (t2) => /\\[a-zA-Z]+/g.test(t2)
8068      ];
8069      if (softClues.filter((clue) => clue(text2)).length >= 2) {
8070        return true;
8071      }
8072      return false;
8073    }
8074  
8075    // packages/blocks/build-module/api/raw-handling/heading-transformer.mjs
8076    function headingTransformer(node) {
8077      if (node.nodeType !== node.ELEMENT_NODE) {
8078        return;
8079      }
8080      const element = node;
8081      if (element.tagName === "P" && element.getAttribute("role") === "heading" && element.hasAttribute("aria-level")) {
8082        const level = parseInt(element.getAttribute("aria-level"), 10);
8083        if (level >= 1 && level <= 6) {
8084          const headingTag = `H$level}`;
8085          const newHeading = element.ownerDocument.createElement(headingTag);
8086          Array.from(element.attributes).forEach((attr2) => {
8087            if (attr2.name !== "role" && attr2.name !== "aria-level") {
8088              newHeading.setAttribute(attr2.name, attr2.value);
8089            }
8090          });
8091          while (element.firstChild) {
8092            newHeading.appendChild(element.firstChild);
8093          }
8094          element.parentNode.replaceChild(newHeading, element);
8095        }
8096      }
8097    }
8098  
8099    // packages/blocks/build-module/api/raw-handling/paste-handler.mjs
8100    var log = (...args) => window?.console?.log?.(...args);
8101    function filterInlineHTML(HTML) {
8102      HTML = deepFilterHTML(HTML, [
8103        headRemover,
8104        googleDocsUIdRemover,
8105        msListIgnore,
8106        phrasingContentReducer,
8107        commentRemover
8108      ]);
8109      HTML = (0, import_dom12.removeInvalidHTML)(
8110        HTML,
8111        (0, import_dom12.getPhrasingContentSchema)("paste"),
8112        true
8113      );
8114      HTML = deepFilterHTML(HTML, [
8115        nonBreakingSpaceCorrector,
8116        htmlFormattingRemover,
8117        formatSpaceCorrector,
8118        brRemover
8119      ]);
8120      log("Processed inline HTML:\n\n", HTML);
8121      return HTML;
8122    }
8123    function pasteHandler({
8124      HTML = "",
8125      plainText = "",
8126      mode = "AUTO",
8127      tagName
8128    }) {
8129      log("Received HTML (pasteHandler):\n\n", HTML);
8130      log("Received plain text (pasteHandler):\n\n", plainText);
8131      HTML = HTML.replace(/<meta[^>]+>/g, "");
8132      HTML = HTML.replace(
8133        /^\s*<html[^>]*>\s*<body[^>]*>(?:\s*<!--\s*StartFragment\s*-->)?/i,
8134        ""
8135      );
8136      HTML = HTML.replace(
8137        /(?:<!--\s*EndFragment\s*-->\s*)?<\/body>\s*<\/html>\s*$/i,
8138        ""
8139      );
8140      if (mode !== "INLINE") {
8141        const content = HTML ? HTML : plainText;
8142        if (content.indexOf("<!-- wp:") !== -1) {
8143          const parseResult = parse2(content);
8144          const isSingleFreeFormBlock = parseResult.length === 1 && parseResult[0].name === "core/freeform";
8145          if (!isSingleFreeFormBlock) {
8146            return parseResult;
8147          }
8148        }
8149      }
8150      HTML = HTML.normalize();
8151      HTML = deepFilterHTML(HTML, [slackParagraphCorrector]);
8152      const isPlainText = plainText && (!HTML || isPlain(HTML));
8153      if (isPlainText && isLatexMathMode(plainText)) {
8154        return [createBlock("core/math", { latex: plainText })];
8155      }
8156      if (isPlainText) {
8157        HTML = plainText;
8158        if (!/^\s+$/.test(plainText)) {
8159          HTML = markdownConverter(HTML);
8160        }
8161      }
8162      const pieces = shortcode_converter_default(HTML);
8163      const hasShortcodes = pieces.length > 1;
8164      if (isPlainText && !hasShortcodes) {
8165        if (mode === "AUTO" && plainText.indexOf("\n") === -1 && plainText.indexOf("<p>") !== 0 && HTML.indexOf("<p>") === 0) {
8166          mode = "INLINE";
8167        }
8168      }
8169      if (mode === "INLINE") {
8170        return filterInlineHTML(HTML);
8171      }
8172      if (mode === "AUTO" && !hasShortcodes && isInlineContent(HTML, tagName)) {
8173        return filterInlineHTML(HTML);
8174      }
8175      const phrasingContentSchema = (0, import_dom12.getPhrasingContentSchema)("paste");
8176      const blockContentSchema = getBlockContentSchema("paste");
8177      const blocks = pieces.map((piece) => {
8178        if (typeof piece !== "string") {
8179          return piece;
8180        }
8181        const filters = [
8182          googleDocsUIdRemover,
8183          msListConverter,
8184          headRemover,
8185          listReducer,
8186          imageCorrector,
8187          phrasingContentReducer,
8188          specialCommentConverter,
8189          commentRemover,
8190          iframeRemover,
8191          figureContentReducer,
8192          blockquoteNormaliser(),
8193          divNormaliser,
8194          headingTransformer
8195        ];
8196        const schema = {
8197          ...blockContentSchema,
8198          // Keep top-level phrasing content, normalised by `normaliseBlocks`.
8199          ...phrasingContentSchema
8200        };
8201        piece = deepFilterHTML(piece, filters, blockContentSchema);
8202        piece = (0, import_dom12.removeInvalidHTML)(piece, schema, false);
8203        piece = normaliseBlocks(piece);
8204        piece = deepFilterHTML(
8205          piece,
8206          [
8207            nonBreakingSpaceCorrector,
8208            htmlFormattingRemover,
8209            formatSpaceCorrector,
8210            brRemover,
8211            emptyParagraphRemover
8212          ],
8213          blockContentSchema
8214        );
8215        log("Processed HTML piece:\n\n", piece);
8216        return htmlToBlocks(piece, pasteHandler);
8217      }).flat().filter(Boolean);
8218      if (mode === "AUTO" && blocks.length === 1 && hasBlockSupport(blocks[0].name, "__unstablePasteTextInline", false)) {
8219        const trimRegex = /^[\n]+|[\n]+$/g;
8220        const trimmedPlainText = plainText.replace(trimRegex, "");
8221        if (trimmedPlainText !== "" && trimmedPlainText.indexOf("\n") === -1) {
8222          return (0, import_dom12.removeInvalidHTML)(
8223            getBlockInnerHTML(blocks[0]),
8224            phrasingContentSchema,
8225            false
8226          ).replace(trimRegex, "");
8227        }
8228      }
8229      return blocks;
8230    }
8231  
8232    // packages/blocks/build-module/api/raw-handling/index.mjs
8233    function deprecatedGetPhrasingContentSchema(context) {
8234      (0, import_deprecated11.default)("wp.blocks.getPhrasingContentSchema", {
8235        since: "5.6",
8236        alternative: "wp.dom.getPhrasingContentSchema"
8237      });
8238      return (0, import_dom13.getPhrasingContentSchema)(context);
8239    }
8240    function rawHandler({ HTML = "" }) {
8241      if (HTML.indexOf("<!-- wp:") !== -1) {
8242        const parseResult = parse2(HTML);
8243        const isSingleFreeFormBlock = parseResult.length === 1 && parseResult[0].name === "core/freeform";
8244        if (!isSingleFreeFormBlock) {
8245          return parseResult;
8246        }
8247      }
8248      const pieces = shortcode_converter_default(HTML);
8249      const blockContentSchema = getBlockContentSchema();
8250      return pieces.map((piece) => {
8251        if (typeof piece !== "string") {
8252          return piece;
8253        }
8254        const filters = [
8255          // Needed to adjust invalid lists.
8256          listReducer,
8257          // Needed to create more and nextpage blocks.
8258          specialCommentConverter,
8259          // Needed to create media blocks.
8260          figureContentReducer,
8261          // Needed to create the quote block, which cannot handle text
8262          // without wrapper paragraphs.
8263          blockquoteNormaliser({ raw: true })
8264        ];
8265        piece = deepFilterHTML(piece, filters, blockContentSchema);
8266        piece = normaliseBlocks(piece, { raw: true });
8267        return htmlToBlocks(piece, rawHandler);
8268      }).flat().filter(Boolean);
8269    }
8270  
8271    // packages/blocks/build-module/api/categories.mjs
8272    var import_data6 = __toESM(require_data(), 1);
8273    function getCategories2() {
8274      return (0, import_data6.select)(store).getCategories();
8275    }
8276    function setCategories2(categories2) {
8277      (0, import_data6.dispatch)(store).setCategories(categories2);
8278    }
8279    function updateCategory2(slug, category) {
8280      (0, import_data6.dispatch)(store).updateCategory(slug, category);
8281    }
8282  
8283    // packages/blocks/build-module/api/templates.mjs
8284    var import_element4 = __toESM(require_element(), 1);
8285    function doBlocksMatchTemplate(blocks = [], template = []) {
8286      return blocks.length === template.length && template.every(([name, , innerBlocksTemplate], index) => {
8287        const block = blocks[index];
8288        return name === block.name && doBlocksMatchTemplate(block.innerBlocks, innerBlocksTemplate);
8289      });
8290    }
8291    var isHTMLAttribute = (attributeDefinition) => attributeDefinition?.source === "html";
8292    var isQueryAttribute = (attributeDefinition) => attributeDefinition?.source === "query";
8293    function normalizeAttributes(schema, values) {
8294      if (!values) {
8295        return {};
8296      }
8297      return Object.fromEntries(
8298        Object.entries(values).map(([key, value]) => [
8299          key,
8300          normalizeAttribute(schema[key], value)
8301        ])
8302      );
8303    }
8304    function normalizeAttribute(definition, value) {
8305      if (isHTMLAttribute(definition) && Array.isArray(value)) {
8306        return (0, import_element4.renderToString)(value);
8307      }
8308      if (isQueryAttribute(definition) && value) {
8309        return value.map(
8310          (subValues) => {
8311            return normalizeAttributes(definition.query, subValues);
8312          }
8313        );
8314      }
8315      return value;
8316    }
8317    function synchronizeBlocksWithTemplate(blocks = [], template) {
8318      if (!template) {
8319        return blocks;
8320      }
8321      return template.map(
8322        ([name, attributes, innerBlocksTemplate], index) => {
8323          const block = blocks[index];
8324          if (block && block.name === name) {
8325            const innerBlocks = synchronizeBlocksWithTemplate(
8326              block.innerBlocks,
8327              innerBlocksTemplate
8328            );
8329            return { ...block, innerBlocks };
8330          }
8331          const blockType = getBlockType(name);
8332          const normalizedAttributes = normalizeAttributes(
8333            blockType?.attributes ?? {},
8334            attributes
8335          );
8336          const [blockName, blockAttributes] = convertLegacyBlockNameAndAttributes(
8337            name,
8338            normalizedAttributes
8339          );
8340          return createBlock(
8341            blockName,
8342            blockAttributes,
8343            synchronizeBlocksWithTemplate([], innerBlocksTemplate)
8344          );
8345        }
8346      );
8347    }
8348  
8349    // packages/blocks/build-module/api/index.mjs
8350    var editableRootKey = /* @__PURE__ */ Symbol("editableRoot");
8351    var privateApis = {};
8352    lock(privateApis, {
8353      isContentBlock,
8354      editableRootKey,
8355      parseRawBlock
8356    });
8357  
8358    // packages/blocks/build-module/deprecated.mjs
8359    var import_deprecated12 = __toESM(require_deprecated(), 1);
8360    function withBlockContentContext(OriginalComponent) {
8361      (0, import_deprecated12.default)("wp.blocks.withBlockContentContext", {
8362        since: "6.1"
8363      });
8364      return OriginalComponent;
8365    }
8366    return __toCommonJS(index_exports);
8367  })();
8368  /*! Bundled license information:
8369  
8370  react-is/cjs/react-is.development.js:
8371    (**
8372     * @license React
8373     * react-is.development.js
8374     *
8375     * Copyright (c) Meta Platforms, Inc. and affiliates.
8376     *
8377     * This source code is licensed under the MIT license found in the
8378     * LICENSE file in the root directory of this source tree.
8379     *)
8380  
8381  is-plain-object/dist/is-plain-object.mjs:
8382    (*!
8383     * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
8384     *
8385     * Copyright (c) 2014-2017, Jon Schlinkert.
8386     * Released under the MIT License.
8387     *)
8388  */
8389  (window.wp ||= {}).blocks = wp.blocks;
8390  })();


Generated : Thu Nov 12 08:20:02 2026 Cross-referenced by PHPXref