var wp;
(wp ||= {}).blocks = (() => {
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// package-external:@wordpress/data
var require_data = __commonJS({
"package-external:@wordpress/data"(exports, module) {
module.exports = window.wp.data;
}
});
// package-external:@wordpress/i18n
var require_i18n = __commonJS({
"package-external:@wordpress/i18n"(exports, module) {
module.exports = window.wp.i18n;
}
});
// package-external:@wordpress/element
var require_element = __commonJS({
"package-external:@wordpress/element"(exports, module) {
module.exports = window.wp.element;
}
});
// package-external:@wordpress/dom
var require_dom = __commonJS({
"package-external:@wordpress/dom"(exports, module) {
module.exports = window.wp.dom;
}
});
// package-external:@wordpress/rich-text
var require_rich_text = __commonJS({
"package-external:@wordpress/rich-text"(exports, module) {
module.exports = window.wp.richText;
}
});
// package-external:@wordpress/deprecated
var require_deprecated = __commonJS({
"package-external:@wordpress/deprecated"(exports, module) {
module.exports = window.wp.deprecated;
}
});
// package-external:@wordpress/warning
var require_warning = __commonJS({
"package-external:@wordpress/warning"(exports, module) {
module.exports = window.wp.warning;
}
});
// package-external:@wordpress/private-apis
var require_private_apis = __commonJS({
"package-external:@wordpress/private-apis"(exports, module) {
module.exports = window.wp.privateApis;
}
});
// node_modules/remove-accents/index.js
var require_remove_accents = __commonJS({
"node_modules/remove-accents/index.js"(exports, module) {
var characterMap = {
"\xC0": "A",
"\xC1": "A",
"\xC2": "A",
"\xC3": "A",
"\xC4": "A",
"\xC5": "A",
"\u1EA4": "A",
"\u1EAE": "A",
"\u1EB2": "A",
"\u1EB4": "A",
"\u1EB6": "A",
"\xC6": "AE",
"\u1EA6": "A",
"\u1EB0": "A",
"\u0202": "A",
"\u1EA2": "A",
"\u1EA0": "A",
"\u1EA8": "A",
"\u1EAA": "A",
"\u1EAC": "A",
"\xC7": "C",
"\u1E08": "C",
"\xC8": "E",
"\xC9": "E",
"\xCA": "E",
"\xCB": "E",
"\u1EBE": "E",
"\u1E16": "E",
"\u1EC0": "E",
"\u1E14": "E",
"\u1E1C": "E",
"\u0206": "E",
"\u1EBA": "E",
"\u1EBC": "E",
"\u1EB8": "E",
"\u1EC2": "E",
"\u1EC4": "E",
"\u1EC6": "E",
"\xCC": "I",
"\xCD": "I",
"\xCE": "I",
"\xCF": "I",
"\u1E2E": "I",
"\u020A": "I",
"\u1EC8": "I",
"\u1ECA": "I",
"\xD0": "D",
"\xD1": "N",
"\xD2": "O",
"\xD3": "O",
"\xD4": "O",
"\xD5": "O",
"\xD6": "O",
"\xD8": "O",
"\u1ED0": "O",
"\u1E4C": "O",
"\u1E52": "O",
"\u020E": "O",
"\u1ECE": "O",
"\u1ECC": "O",
"\u1ED4": "O",
"\u1ED6": "O",
"\u1ED8": "O",
"\u1EDC": "O",
"\u1EDE": "O",
"\u1EE0": "O",
"\u1EDA": "O",
"\u1EE2": "O",
"\xD9": "U",
"\xDA": "U",
"\xDB": "U",
"\xDC": "U",
"\u1EE6": "U",
"\u1EE4": "U",
"\u1EEC": "U",
"\u1EEE": "U",
"\u1EF0": "U",
"\xDD": "Y",
"\xE0": "a",
"\xE1": "a",
"\xE2": "a",
"\xE3": "a",
"\xE4": "a",
"\xE5": "a",
"\u1EA5": "a",
"\u1EAF": "a",
"\u1EB3": "a",
"\u1EB5": "a",
"\u1EB7": "a",
"\xE6": "ae",
"\u1EA7": "a",
"\u1EB1": "a",
"\u0203": "a",
"\u1EA3": "a",
"\u1EA1": "a",
"\u1EA9": "a",
"\u1EAB": "a",
"\u1EAD": "a",
"\xE7": "c",
"\u1E09": "c",
"\xE8": "e",
"\xE9": "e",
"\xEA": "e",
"\xEB": "e",
"\u1EBF": "e",
"\u1E17": "e",
"\u1EC1": "e",
"\u1E15": "e",
"\u1E1D": "e",
"\u0207": "e",
"\u1EBB": "e",
"\u1EBD": "e",
"\u1EB9": "e",
"\u1EC3": "e",
"\u1EC5": "e",
"\u1EC7": "e",
"\xEC": "i",
"\xED": "i",
"\xEE": "i",
"\xEF": "i",
"\u1E2F": "i",
"\u020B": "i",
"\u1EC9": "i",
"\u1ECB": "i",
"\xF0": "d",
"\xF1": "n",
"\xF2": "o",
"\xF3": "o",
"\xF4": "o",
"\xF5": "o",
"\xF6": "o",
"\xF8": "o",
"\u1ED1": "o",
"\u1E4D": "o",
"\u1E53": "o",
"\u020F": "o",
"\u1ECF": "o",
"\u1ECD": "o",
"\u1ED5": "o",
"\u1ED7": "o",
"\u1ED9": "o",
"\u1EDD": "o",
"\u1EDF": "o",
"\u1EE1": "o",
"\u1EDB": "o",
"\u1EE3": "o",
"\xF9": "u",
"\xFA": "u",
"\xFB": "u",
"\xFC": "u",
"\u1EE7": "u",
"\u1EE5": "u",
"\u1EED": "u",
"\u1EEF": "u",
"\u1EF1": "u",
"\xFD": "y",
"\xFF": "y",
"\u0100": "A",
"\u0101": "a",
"\u0102": "A",
"\u0103": "a",
"\u0104": "A",
"\u0105": "a",
"\u0106": "C",
"\u0107": "c",
"\u0108": "C",
"\u0109": "c",
"\u010A": "C",
"\u010B": "c",
"\u010C": "C",
"\u010D": "c",
"C\u0306": "C",
"c\u0306": "c",
"\u010E": "D",
"\u010F": "d",
"\u0110": "D",
"\u0111": "d",
"\u0112": "E",
"\u0113": "e",
"\u0114": "E",
"\u0115": "e",
"\u0116": "E",
"\u0117": "e",
"\u0118": "E",
"\u0119": "e",
"\u011A": "E",
"\u011B": "e",
"\u011C": "G",
"\u01F4": "G",
"\u011D": "g",
"\u01F5": "g",
"\u011E": "G",
"\u011F": "g",
"\u0120": "G",
"\u0121": "g",
"\u0122": "G",
"\u0123": "g",
"\u0124": "H",
"\u0125": "h",
"\u0126": "H",
"\u0127": "h",
"\u1E2A": "H",
"\u1E2B": "h",
"\u0128": "I",
"\u0129": "i",
"\u012A": "I",
"\u012B": "i",
"\u012C": "I",
"\u012D": "i",
"\u012E": "I",
"\u012F": "i",
"\u0130": "I",
"\u0131": "i",
"\u0132": "IJ",
"\u0133": "ij",
"\u0134": "J",
"\u0135": "j",
"\u0136": "K",
"\u0137": "k",
"\u1E30": "K",
"\u1E31": "k",
"K\u0306": "K",
"k\u0306": "k",
"\u0139": "L",
"\u013A": "l",
"\u013B": "L",
"\u013C": "l",
"\u013D": "L",
"\u013E": "l",
"\u013F": "L",
"\u0140": "l",
"\u0141": "l",
"\u0142": "l",
"\u1E3E": "M",
"\u1E3F": "m",
"M\u0306": "M",
"m\u0306": "m",
"\u0143": "N",
"\u0144": "n",
"\u0145": "N",
"\u0146": "n",
"\u0147": "N",
"\u0148": "n",
"\u0149": "n",
"N\u0306": "N",
"n\u0306": "n",
"\u014C": "O",
"\u014D": "o",
"\u014E": "O",
"\u014F": "o",
"\u0150": "O",
"\u0151": "o",
"\u0152": "OE",
"\u0153": "oe",
"P\u0306": "P",
"p\u0306": "p",
"\u0154": "R",
"\u0155": "r",
"\u0156": "R",
"\u0157": "r",
"\u0158": "R",
"\u0159": "r",
"R\u0306": "R",
"r\u0306": "r",
"\u0212": "R",
"\u0213": "r",
"\u015A": "S",
"\u015B": "s",
"\u015C": "S",
"\u015D": "s",
"\u015E": "S",
"\u0218": "S",
"\u0219": "s",
"\u015F": "s",
"\u0160": "S",
"\u0161": "s",
"\u0162": "T",
"\u0163": "t",
"\u021B": "t",
"\u021A": "T",
"\u0164": "T",
"\u0165": "t",
"\u0166": "T",
"\u0167": "t",
"T\u0306": "T",
"t\u0306": "t",
"\u0168": "U",
"\u0169": "u",
"\u016A": "U",
"\u016B": "u",
"\u016C": "U",
"\u016D": "u",
"\u016E": "U",
"\u016F": "u",
"\u0170": "U",
"\u0171": "u",
"\u0172": "U",
"\u0173": "u",
"\u0216": "U",
"\u0217": "u",
"V\u0306": "V",
"v\u0306": "v",
"\u0174": "W",
"\u0175": "w",
"\u1E82": "W",
"\u1E83": "w",
"X\u0306": "X",
"x\u0306": "x",
"\u0176": "Y",
"\u0177": "y",
"\u0178": "Y",
"Y\u0306": "Y",
"y\u0306": "y",
"\u0179": "Z",
"\u017A": "z",
"\u017B": "Z",
"\u017C": "z",
"\u017D": "Z",
"\u017E": "z",
"\u017F": "s",
"\u0192": "f",
"\u01A0": "O",
"\u01A1": "o",
"\u01AF": "U",
"\u01B0": "u",
"\u01CD": "A",
"\u01CE": "a",
"\u01CF": "I",
"\u01D0": "i",
"\u01D1": "O",
"\u01D2": "o",
"\u01D3": "U",
"\u01D4": "u",
"\u01D5": "U",
"\u01D6": "u",
"\u01D7": "U",
"\u01D8": "u",
"\u01D9": "U",
"\u01DA": "u",
"\u01DB": "U",
"\u01DC": "u",
"\u1EE8": "U",
"\u1EE9": "u",
"\u1E78": "U",
"\u1E79": "u",
"\u01FA": "A",
"\u01FB": "a",
"\u01FC": "AE",
"\u01FD": "ae",
"\u01FE": "O",
"\u01FF": "o",
"\xDE": "TH",
"\xFE": "th",
"\u1E54": "P",
"\u1E55": "p",
"\u1E64": "S",
"\u1E65": "s",
"X\u0301": "X",
"x\u0301": "x",
"\u0403": "\u0413",
"\u0453": "\u0433",
"\u040C": "\u041A",
"\u045C": "\u043A",
"A\u030B": "A",
"a\u030B": "a",
"E\u030B": "E",
"e\u030B": "e",
"I\u030B": "I",
"i\u030B": "i",
"\u01F8": "N",
"\u01F9": "n",
"\u1ED2": "O",
"\u1ED3": "o",
"\u1E50": "O",
"\u1E51": "o",
"\u1EEA": "U",
"\u1EEB": "u",
"\u1E80": "W",
"\u1E81": "w",
"\u1EF2": "Y",
"\u1EF3": "y",
"\u0200": "A",
"\u0201": "a",
"\u0204": "E",
"\u0205": "e",
"\u0208": "I",
"\u0209": "i",
"\u020C": "O",
"\u020D": "o",
"\u0210": "R",
"\u0211": "r",
"\u0214": "U",
"\u0215": "u",
"B\u030C": "B",
"b\u030C": "b",
"\u010C\u0323": "C",
"\u010D\u0323": "c",
"\xCA\u030C": "E",
"\xEA\u030C": "e",
"F\u030C": "F",
"f\u030C": "f",
"\u01E6": "G",
"\u01E7": "g",
"\u021E": "H",
"\u021F": "h",
"J\u030C": "J",
"\u01F0": "j",
"\u01E8": "K",
"\u01E9": "k",
"M\u030C": "M",
"m\u030C": "m",
"P\u030C": "P",
"p\u030C": "p",
"Q\u030C": "Q",
"q\u030C": "q",
"\u0158\u0329": "R",
"\u0159\u0329": "r",
"\u1E66": "S",
"\u1E67": "s",
"V\u030C": "V",
"v\u030C": "v",
"W\u030C": "W",
"w\u030C": "w",
"X\u030C": "X",
"x\u030C": "x",
"Y\u030C": "Y",
"y\u030C": "y",
"A\u0327": "A",
"a\u0327": "a",
"B\u0327": "B",
"b\u0327": "b",
"\u1E10": "D",
"\u1E11": "d",
"\u0228": "E",
"\u0229": "e",
"\u0190\u0327": "E",
"\u025B\u0327": "e",
"\u1E28": "H",
"\u1E29": "h",
"I\u0327": "I",
"i\u0327": "i",
"\u0197\u0327": "I",
"\u0268\u0327": "i",
"M\u0327": "M",
"m\u0327": "m",
"O\u0327": "O",
"o\u0327": "o",
"Q\u0327": "Q",
"q\u0327": "q",
"U\u0327": "U",
"u\u0327": "u",
"X\u0327": "X",
"x\u0327": "x",
"Z\u0327": "Z",
"z\u0327": "z",
"\u0439": "\u0438",
"\u0419": "\u0418",
"\u0451": "\u0435",
"\u0401": "\u0415"
};
var chars = Object.keys(characterMap).join("|");
var allAccents = new RegExp(chars, "g");
var firstAccent = new RegExp(chars, "");
function matcher3(match) {
return characterMap[match];
}
var removeAccents2 = function(string) {
return string.replace(allAccents, matcher3);
};
var hasAccents = function(string) {
return !!string.match(firstAccent);
};
module.exports = removeAccents2;
module.exports.has = hasAccents;
module.exports.remove = removeAccents2;
}
});
// packages/blocks/node_modules/react-is/cjs/react-is.development.js
var require_react_is_development = __commonJS({
"packages/blocks/node_modules/react-is/cjs/react-is.development.js"(exports) {
"use strict";
if (true) {
(function() {
"use strict";
var REACT_ELEMENT_TYPE = Symbol.for("react.element");
var REACT_PORTAL_TYPE = Symbol.for("react.portal");
var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode");
var REACT_PROFILER_TYPE = Symbol.for("react.profiler");
var REACT_PROVIDER_TYPE = Symbol.for("react.provider");
var REACT_CONTEXT_TYPE = Symbol.for("react.context");
var REACT_SERVER_CONTEXT_TYPE = Symbol.for("react.server_context");
var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref");
var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense");
var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list");
var REACT_MEMO_TYPE = Symbol.for("react.memo");
var REACT_LAZY_TYPE = Symbol.for("react.lazy");
var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen");
var enableScopeAPI = false;
var enableCacheElement = false;
var enableTransitionTracing = false;
var enableLegacyHidden = false;
var enableDebugTracing = false;
var REACT_MODULE_REFERENCE;
{
REACT_MODULE_REFERENCE = Symbol.for("react.module.reference");
}
function isValidElementType2(type) {
if (typeof type === "string" || typeof type === "function") {
return true;
}
if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) {
return true;
}
if (typeof type === "object" && type !== null) {
if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object
// types supported by any Flight configuration anywhere since
// we don't know which Flight build this will end up being used
// with.
type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) {
return true;
}
}
return false;
}
function typeOf(object) {
if (typeof object === "object" && object !== null) {
var $$typeof = object.$$typeof;
switch ($$typeof) {
case REACT_ELEMENT_TYPE:
var type = object.type;
switch (type) {
case REACT_FRAGMENT_TYPE:
case REACT_PROFILER_TYPE:
case REACT_STRICT_MODE_TYPE:
case REACT_SUSPENSE_TYPE:
case REACT_SUSPENSE_LIST_TYPE:
return type;
default:
var $$typeofType = type && type.$$typeof;
switch ($$typeofType) {
case REACT_SERVER_CONTEXT_TYPE:
case REACT_CONTEXT_TYPE:
case REACT_FORWARD_REF_TYPE:
case REACT_LAZY_TYPE:
case REACT_MEMO_TYPE:
case REACT_PROVIDER_TYPE:
return $$typeofType;
default:
return $$typeof;
}
}
case REACT_PORTAL_TYPE:
return $$typeof;
}
}
return void 0;
}
var ContextConsumer = REACT_CONTEXT_TYPE;
var ContextProvider = REACT_PROVIDER_TYPE;
var Element = REACT_ELEMENT_TYPE;
var ForwardRef = REACT_FORWARD_REF_TYPE;
var Fragment = REACT_FRAGMENT_TYPE;
var Lazy = REACT_LAZY_TYPE;
var Memo = REACT_MEMO_TYPE;
var Portal = REACT_PORTAL_TYPE;
var Profiler = REACT_PROFILER_TYPE;
var StrictMode = REACT_STRICT_MODE_TYPE;
var Suspense = REACT_SUSPENSE_TYPE;
var SuspenseList = REACT_SUSPENSE_LIST_TYPE;
var hasWarnedAboutDeprecatedIsAsyncMode = false;
var hasWarnedAboutDeprecatedIsConcurrentMode = false;
function isAsyncMode(object) {
{
if (!hasWarnedAboutDeprecatedIsAsyncMode) {
hasWarnedAboutDeprecatedIsAsyncMode = true;
console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 18+.");
}
}
return false;
}
function isConcurrentMode(object) {
{
if (!hasWarnedAboutDeprecatedIsConcurrentMode) {
hasWarnedAboutDeprecatedIsConcurrentMode = true;
console["warn"]("The ReactIs.isConcurrentMode() alias has been deprecated, and will be removed in React 18+.");
}
}
return false;
}
function isContextConsumer(object) {
return typeOf(object) === REACT_CONTEXT_TYPE;
}
function isContextProvider(object) {
return typeOf(object) === REACT_PROVIDER_TYPE;
}
function isElement(object) {
return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
}
function isForwardRef(object) {
return typeOf(object) === REACT_FORWARD_REF_TYPE;
}
function isFragment(object) {
return typeOf(object) === REACT_FRAGMENT_TYPE;
}
function isLazy(object) {
return typeOf(object) === REACT_LAZY_TYPE;
}
function isMemo(object) {
return typeOf(object) === REACT_MEMO_TYPE;
}
function isPortal(object) {
return typeOf(object) === REACT_PORTAL_TYPE;
}
function isProfiler(object) {
return typeOf(object) === REACT_PROFILER_TYPE;
}
function isStrictMode(object) {
return typeOf(object) === REACT_STRICT_MODE_TYPE;
}
function isSuspense(object) {
return typeOf(object) === REACT_SUSPENSE_TYPE;
}
function isSuspenseList(object) {
return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;
}
exports.ContextConsumer = ContextConsumer;
exports.ContextProvider = ContextProvider;
exports.Element = Element;
exports.ForwardRef = ForwardRef;
exports.Fragment = Fragment;
exports.Lazy = Lazy;
exports.Memo = Memo;
exports.Portal = Portal;
exports.Profiler = Profiler;
exports.StrictMode = StrictMode;
exports.Suspense = Suspense;
exports.SuspenseList = SuspenseList;
exports.isAsyncMode = isAsyncMode;
exports.isConcurrentMode = isConcurrentMode;
exports.isContextConsumer = isContextConsumer;
exports.isContextProvider = isContextProvider;
exports.isElement = isElement;
exports.isForwardRef = isForwardRef;
exports.isFragment = isFragment;
exports.isLazy = isLazy;
exports.isMemo = isMemo;
exports.isPortal = isPortal;
exports.isProfiler = isProfiler;
exports.isStrictMode = isStrictMode;
exports.isSuspense = isSuspense;
exports.isSuspenseList = isSuspenseList;
exports.isValidElementType = isValidElementType2;
exports.typeOf = typeOf;
})();
}
}
});
// packages/blocks/node_modules/react-is/index.js
var require_react_is = __commonJS({
"packages/blocks/node_modules/react-is/index.js"(exports, module) {
"use strict";
if (false) {
module.exports = null;
} else {
module.exports = require_react_is_development();
}
}
});
// package-external:@wordpress/hooks
var require_hooks = __commonJS({
"package-external:@wordpress/hooks"(exports, module) {
module.exports = window.wp.hooks;
}
});
// package-external:@wordpress/block-serialization-default-parser
var require_block_serialization_default_parser = __commonJS({
"package-external:@wordpress/block-serialization-default-parser"(exports, module) {
module.exports = window.wp.blockSerializationDefaultParser;
}
});
// package-external:@wordpress/autop
var require_autop = __commonJS({
"package-external:@wordpress/autop"(exports, module) {
module.exports = window.wp.autop;
}
});
// package-external:@wordpress/is-shallow-equal
var require_is_shallow_equal = __commonJS({
"package-external:@wordpress/is-shallow-equal"(exports, module) {
module.exports = window.wp.isShallowEqual;
}
});
// vendor-external:react/jsx-runtime
var require_jsx_runtime = __commonJS({
"vendor-external:react/jsx-runtime"(exports, module) {
module.exports = window.ReactJSXRuntime;
}
});
// node_modules/fast-deep-equal/es6/index.js
var require_es6 = __commonJS({
"node_modules/fast-deep-equal/es6/index.js"(exports, module) {
"use strict";
module.exports = function equal(a2, b2) {
if (a2 === b2) return true;
if (a2 && b2 && typeof a2 == "object" && typeof b2 == "object") {
if (a2.constructor !== b2.constructor) return false;
var length, i2, keys;
if (Array.isArray(a2)) {
length = a2.length;
if (length != b2.length) return false;
for (i2 = length; i2-- !== 0; )
if (!equal(a2[i2], b2[i2])) return false;
return true;
}
if (a2 instanceof Map && b2 instanceof Map) {
if (a2.size !== b2.size) return false;
for (i2 of a2.entries())
if (!b2.has(i2[0])) return false;
for (i2 of a2.entries())
if (!equal(i2[1], b2.get(i2[0]))) return false;
return true;
}
if (a2 instanceof Set && b2 instanceof Set) {
if (a2.size !== b2.size) return false;
for (i2 of a2.entries())
if (!b2.has(i2[0])) return false;
return true;
}
if (ArrayBuffer.isView(a2) && ArrayBuffer.isView(b2)) {
length = a2.length;
if (length != b2.length) return false;
for (i2 = length; i2-- !== 0; )
if (a2[i2] !== b2[i2]) return false;
return true;
}
if (a2.constructor === RegExp) return a2.source === b2.source && a2.flags === b2.flags;
if (a2.valueOf !== Object.prototype.valueOf) return a2.valueOf() === b2.valueOf();
if (a2.toString !== Object.prototype.toString) return a2.toString() === b2.toString();
keys = Object.keys(a2);
length = keys.length;
if (length !== Object.keys(b2).length) return false;
for (i2 = length; i2-- !== 0; )
if (!Object.prototype.hasOwnProperty.call(b2, keys[i2])) return false;
for (i2 = length; i2-- !== 0; ) {
var key = keys[i2];
if (!equal(a2[key], b2[key])) return false;
}
return true;
}
return a2 !== a2 && b2 !== b2;
};
}
});
// package-external:@wordpress/html-entities
var require_html_entities = __commonJS({
"package-external:@wordpress/html-entities"(exports, module) {
module.exports = window.wp.htmlEntities;
}
});
// package-external:@wordpress/shortcode
var require_shortcode = __commonJS({
"package-external:@wordpress/shortcode"(exports, module) {
module.exports = window.wp.shortcode;
}
});
// package-external:@wordpress/blob
var require_blob = __commonJS({
"package-external:@wordpress/blob"(exports, module) {
module.exports = window.wp.blob;
}
});
// node_modules/showdown/dist/showdown.js
var require_showdown = __commonJS({
"node_modules/showdown/dist/showdown.js"(exports, module) {
(function() {
function getDefaultOpts(simple) {
"use strict";
var defaultOptions = {
omitExtraWLInCodeBlocks: {
defaultValue: false,
describe: "Omit the default extra whiteline added to code blocks",
type: "boolean"
},
noHeaderId: {
defaultValue: false,
describe: "Turn on/off generated header id",
type: "boolean"
},
prefixHeaderId: {
defaultValue: false,
describe: "Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic 'section-' prefix",
type: "string"
},
rawPrefixHeaderId: {
defaultValue: false,
describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the " char is used in the prefix)',
type: "boolean"
},
ghCompatibleHeaderId: {
defaultValue: false,
describe: "Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)",
type: "boolean"
},
rawHeaderId: {
defaultValue: false,
describe: `Remove only spaces, ' and " from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids`,
type: "boolean"
},
headerLevelStart: {
defaultValue: false,
describe: "The header blocks level start",
type: "integer"
},
parseImgDimensions: {
defaultValue: false,
describe: "Turn on/off image dimension parsing",
type: "boolean"
},
simplifiedAutoLink: {
defaultValue: false,
describe: "Turn on/off GFM autolink style",
type: "boolean"
},
excludeTrailingPunctuationFromURLs: {
defaultValue: false,
describe: "Excludes trailing punctuation from links generated with autoLinking",
type: "boolean"
},
literalMidWordUnderscores: {
defaultValue: false,
describe: "Parse midword underscores as literal underscores",
type: "boolean"
},
literalMidWordAsterisks: {
defaultValue: false,
describe: "Parse midword asterisks as literal asterisks",
type: "boolean"
},
strikethrough: {
defaultValue: false,
describe: "Turn on/off strikethrough support",
type: "boolean"
},
tables: {
defaultValue: false,
describe: "Turn on/off tables support",
type: "boolean"
},
tablesHeaderId: {
defaultValue: false,
describe: "Add an id to table headers",
type: "boolean"
},
ghCodeBlocks: {
defaultValue: true,
describe: "Turn on/off GFM fenced code blocks support",
type: "boolean"
},
tasklists: {
defaultValue: false,
describe: "Turn on/off GFM tasklist support",
type: "boolean"
},
smoothLivePreview: {
defaultValue: false,
describe: "Prevents weird effects in live previews due to incomplete input",
type: "boolean"
},
smartIndentationFix: {
defaultValue: false,
description: "Tries to smartly fix indentation in es6 strings",
type: "boolean"
},
disableForced4SpacesIndentedSublists: {
defaultValue: false,
description: "Disables the requirement of indenting nested sublists by 4 spaces",
type: "boolean"
},
simpleLineBreaks: {
defaultValue: false,
description: "Parses simple line breaks as
(GFM Style)",
type: "boolean"
},
requireSpaceBeforeHeadingText: {
defaultValue: false,
description: "Makes adding a space between `#` and the header text mandatory (GFM Style)",
type: "boolean"
},
ghMentions: {
defaultValue: false,
description: "Enables github @mentions",
type: "boolean"
},
ghMentionsLink: {
defaultValue: "https://github.com/{u}",
description: "Changes the link generated by @mentions. Only applies if ghMentions option is enabled.",
type: "string"
},
encodeEmails: {
defaultValue: true,
description: "Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities",
type: "boolean"
},
openLinksInNewWindow: {
defaultValue: false,
description: "Open all links in new windows",
type: "boolean"
},
backslashEscapesHTMLTags: {
defaultValue: false,
description: "Support for HTML Tag escaping. ex:
[^\r]+?<\/pre>)/gm, function(wholeMatch, m1) {
var pre = m1;
pre = pre.replace(/^ /mg, "\xA80");
pre = pre.replace(/¨0/g, "");
return pre;
});
return showdown2.subParser("hashBlock")("\n" + bq + "\n
", options, globals);
});
text2 = globals.converter._dispatch("blockQuotes.after", text2, options, globals);
return text2;
});
showdown2.subParser("codeBlocks", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("codeBlocks.before", text2, options, globals);
text2 += "\xA80";
var pattern = /(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=¨0))/g;
text2 = text2.replace(pattern, function(wholeMatch, m1, m2) {
var codeblock = m1, nextChar = m2, end = "\n";
codeblock = showdown2.subParser("outdent")(codeblock, options, globals);
codeblock = showdown2.subParser("encodeCode")(codeblock, options, globals);
codeblock = showdown2.subParser("detab")(codeblock, options, globals);
codeblock = codeblock.replace(/^\n+/g, "");
codeblock = codeblock.replace(/\n+$/g, "");
if (options.omitExtraWLInCodeBlocks) {
end = "";
}
codeblock = "" + codeblock + end + "
";
return showdown2.subParser("hashBlock")(codeblock, options, globals) + nextChar;
});
text2 = text2.replace(/¨0/, "");
text2 = globals.converter._dispatch("codeBlocks.after", text2, options, globals);
return text2;
});
showdown2.subParser("codeSpans", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("codeSpans.before", text2, options, globals);
if (typeof text2 === "undefined") {
text2 = "";
}
text2 = text2.replace(
/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,
function(wholeMatch, m1, m2, m3) {
var c2 = m3;
c2 = c2.replace(/^([ \t]*)/g, "");
c2 = c2.replace(/[ \t]*$/g, "");
c2 = showdown2.subParser("encodeCode")(c2, options, globals);
c2 = m1 + "" + c2 + "";
c2 = showdown2.subParser("hashHTMLSpans")(c2, options, globals);
return c2;
}
);
text2 = globals.converter._dispatch("codeSpans.after", text2, options, globals);
return text2;
});
showdown2.subParser("completeHTMLDocument", function(text2, options, globals) {
"use strict";
if (!options.completeHTMLDocument) {
return text2;
}
text2 = globals.converter._dispatch("completeHTMLDocument.before", text2, options, globals);
var doctype = "html", doctypeParsed = "\n", title = "", charset = '\n', lang = "", metadata = "";
if (typeof globals.metadata.parsed.doctype !== "undefined") {
doctypeParsed = "\n";
doctype = globals.metadata.parsed.doctype.toString().toLowerCase();
if (doctype === "html" || doctype === "html5") {
charset = '';
}
}
for (var meta in globals.metadata.parsed) {
if (globals.metadata.parsed.hasOwnProperty(meta)) {
switch (meta.toLowerCase()) {
case "doctype":
break;
case "title":
title = "" + globals.metadata.parsed.title + " \n";
break;
case "charset":
if (doctype === "html" || doctype === "html5") {
charset = '\n';
} else {
charset = '\n';
}
break;
case "language":
case "lang":
lang = ' lang="' + globals.metadata.parsed[meta] + '"';
metadata += '\n';
break;
default:
metadata += '\n';
}
}
}
text2 = doctypeParsed + "\n\n" + title + charset + metadata + "\n\n" + text2.trim() + "\n\n";
text2 = globals.converter._dispatch("completeHTMLDocument.after", text2, options, globals);
return text2;
});
showdown2.subParser("detab", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("detab.before", text2, options, globals);
text2 = text2.replace(/\t(?=\t)/g, " ");
text2 = text2.replace(/\t/g, "\xA8A\xA8B");
text2 = text2.replace(/¨B(.+?)¨A/g, function(wholeMatch, m1) {
var leadingText = m1, numSpaces = 4 - leadingText.length % 4;
for (var i2 = 0; i2 < numSpaces; i2++) {
leadingText += " ";
}
return leadingText;
});
text2 = text2.replace(/¨A/g, " ");
text2 = text2.replace(/¨B/g, "");
text2 = globals.converter._dispatch("detab.after", text2, options, globals);
return text2;
});
showdown2.subParser("ellipsis", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("ellipsis.before", text2, options, globals);
text2 = text2.replace(/\.\.\./g, "\u2026");
text2 = globals.converter._dispatch("ellipsis.after", text2, options, globals);
return text2;
});
showdown2.subParser("emoji", function(text2, options, globals) {
"use strict";
if (!options.emoji) {
return text2;
}
text2 = globals.converter._dispatch("emoji.before", text2, options, globals);
var emojiRgx = /:([\S]+?):/g;
text2 = text2.replace(emojiRgx, function(wm, emojiCode) {
if (showdown2.helper.emojis.hasOwnProperty(emojiCode)) {
return showdown2.helper.emojis[emojiCode];
}
return wm;
});
text2 = globals.converter._dispatch("emoji.after", text2, options, globals);
return text2;
});
showdown2.subParser("encodeAmpsAndAngles", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("encodeAmpsAndAngles.before", text2, options, globals);
text2 = text2.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, "&");
text2 = text2.replace(/<(?![a-z\/?$!])/gi, "<");
text2 = text2.replace(//g, ">");
text2 = globals.converter._dispatch("encodeAmpsAndAngles.after", text2, options, globals);
return text2;
});
showdown2.subParser("encodeBackslashEscapes", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("encodeBackslashEscapes.before", text2, options, globals);
text2 = text2.replace(/\\(\\)/g, showdown2.helper.escapeCharactersCallback);
text2 = text2.replace(/\\([`*_{}\[\]()>#+.!~=|-])/g, showdown2.helper.escapeCharactersCallback);
text2 = globals.converter._dispatch("encodeBackslashEscapes.after", text2, options, globals);
return text2;
});
showdown2.subParser("encodeCode", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("encodeCode.before", text2, options, globals);
text2 = text2.replace(/&/g, "&").replace(//g, ">").replace(/([*_{}\[\]\\=~-])/g, showdown2.helper.escapeCharactersCallback);
text2 = globals.converter._dispatch("encodeCode.after", text2, options, globals);
return text2;
});
showdown2.subParser("escapeSpecialCharsWithinTagAttributes", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("escapeSpecialCharsWithinTagAttributes.before", text2, options, globals);
var tags = /<\/?[a-z\d_:-]+(?:[\s]+[\s\S]+?)?>/gi, comments = /-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;
text2 = text2.replace(tags, function(wholeMatch) {
return wholeMatch.replace(/(.)<\/?code>(?=.)/g, "$1`").replace(/([\\`*_~=|])/g, showdown2.helper.escapeCharactersCallback);
});
text2 = text2.replace(comments, function(wholeMatch) {
return wholeMatch.replace(/([\\`*_~=|])/g, showdown2.helper.escapeCharactersCallback);
});
text2 = globals.converter._dispatch("escapeSpecialCharsWithinTagAttributes.after", text2, options, globals);
return text2;
});
showdown2.subParser("githubCodeBlocks", function(text2, options, globals) {
"use strict";
if (!options.ghCodeBlocks) {
return text2;
}
text2 = globals.converter._dispatch("githubCodeBlocks.before", text2, options, globals);
text2 += "\xA80";
text2 = text2.replace(/(?:^|\n)(?: {0,3})(```+|~~~+)(?: *)([^\s`~]*)\n([\s\S]*?)\n(?: {0,3})\1/g, function(wholeMatch, delim, language, codeblock) {
var end = options.omitExtraWLInCodeBlocks ? "" : "\n";
codeblock = showdown2.subParser("encodeCode")(codeblock, options, globals);
codeblock = showdown2.subParser("detab")(codeblock, options, globals);
codeblock = codeblock.replace(/^\n+/g, "");
codeblock = codeblock.replace(/\n+$/g, "");
codeblock = "" + codeblock + end + "
";
codeblock = showdown2.subParser("hashBlock")(codeblock, options, globals);
return "\n\n\xA8G" + (globals.ghCodeBlocks.push({ text: wholeMatch, codeblock }) - 1) + "G\n\n";
});
text2 = text2.replace(/¨0/, "");
return globals.converter._dispatch("githubCodeBlocks.after", text2, options, globals);
});
showdown2.subParser("hashBlock", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("hashBlock.before", text2, options, globals);
text2 = text2.replace(/(^\n+|\n+$)/g, "");
text2 = "\n\n\xA8K" + (globals.gHtmlBlocks.push(text2) - 1) + "K\n\n";
text2 = globals.converter._dispatch("hashBlock.after", text2, options, globals);
return text2;
});
showdown2.subParser("hashCodeTags", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("hashCodeTags.before", text2, options, globals);
var repFunc = function(wholeMatch, match, left, right) {
var codeblock = left + showdown2.subParser("encodeCode")(match, options, globals) + right;
return "\xA8C" + (globals.gHtmlSpans.push(codeblock) - 1) + "C";
};
text2 = showdown2.helper.replaceRecursiveRegExp(text2, repFunc, "]*>", "", "gim");
text2 = globals.converter._dispatch("hashCodeTags.after", text2, options, globals);
return text2;
});
showdown2.subParser("hashElement", function(text2, options, globals) {
"use strict";
return function(wholeMatch, m1) {
var blockText = m1;
blockText = blockText.replace(/\n\n/g, "\n");
blockText = blockText.replace(/^\n/, "");
blockText = blockText.replace(/\n+$/g, "");
blockText = "\n\n\xA8K" + (globals.gHtmlBlocks.push(blockText) - 1) + "K\n\n";
return blockText;
};
});
showdown2.subParser("hashHTMLBlocks", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("hashHTMLBlocks.before", text2, options, globals);
var blockTags = [
"pre",
"div",
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"blockquote",
"table",
"dl",
"ol",
"ul",
"script",
"noscript",
"form",
"fieldset",
"iframe",
"math",
"style",
"section",
"header",
"footer",
"nav",
"article",
"aside",
"address",
"audio",
"canvas",
"figure",
"hgroup",
"output",
"video",
"p"
], repFunc = function(wholeMatch, match, left, right) {
var txt = wholeMatch;
if (left.search(/\bmarkdown\b/) !== -1) {
txt = left + globals.converter.makeHtml(match) + right;
}
return "\n\n\xA8K" + (globals.gHtmlBlocks.push(txt) - 1) + "K\n\n";
};
if (options.backslashEscapesHTMLTags) {
text2 = text2.replace(/\\<(\/?[^>]+?)>/g, function(wm, inside) {
return "<" + inside + ">";
});
}
for (var i2 = 0; i2 < blockTags.length; ++i2) {
var opTagPos, rgx1 = new RegExp("^ {0,3}(<" + blockTags[i2] + "\\b[^>]*>)", "im"), patLeft = "<" + blockTags[i2] + "\\b[^>]*>", patRight = "" + blockTags[i2] + ">";
while ((opTagPos = showdown2.helper.regexIndexOf(text2, rgx1)) !== -1) {
var subTexts = showdown2.helper.splitAtIndex(text2, opTagPos), newSubText1 = showdown2.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, "im");
if (newSubText1 === subTexts[1]) {
break;
}
text2 = subTexts[0].concat(newSubText1);
}
}
text2 = text2.replace(
/(\n {0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,
showdown2.subParser("hashElement")(text2, options, globals)
);
text2 = showdown2.helper.replaceRecursiveRegExp(text2, function(txt) {
return "\n\n\xA8K" + (globals.gHtmlBlocks.push(txt) - 1) + "K\n\n";
}, "^ {0,3}", "gm");
text2 = text2.replace(
/(?:\n\n)( {0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,
showdown2.subParser("hashElement")(text2, options, globals)
);
text2 = globals.converter._dispatch("hashHTMLBlocks.after", text2, options, globals);
return text2;
});
showdown2.subParser("hashHTMLSpans", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("hashHTMLSpans.before", text2, options, globals);
function hashHTMLSpan(html2) {
return "\xA8C" + (globals.gHtmlSpans.push(html2) - 1) + "C";
}
text2 = text2.replace(/<[^>]+?\/>/gi, function(wm) {
return hashHTMLSpan(wm);
});
text2 = text2.replace(/<([^>]+?)>[\s\S]*?<\/\1>/g, function(wm) {
return hashHTMLSpan(wm);
});
text2 = text2.replace(/<([^>]+?)\s[^>]+?>[\s\S]*?<\/\1>/g, function(wm) {
return hashHTMLSpan(wm);
});
text2 = text2.replace(/<[^>]+?>/gi, function(wm) {
return hashHTMLSpan(wm);
});
text2 = globals.converter._dispatch("hashHTMLSpans.after", text2, options, globals);
return text2;
});
showdown2.subParser("unhashHTMLSpans", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("unhashHTMLSpans.before", text2, options, globals);
for (var i2 = 0; i2 < globals.gHtmlSpans.length; ++i2) {
var repText = globals.gHtmlSpans[i2], limit = 0;
while (/¨C(\d+)C/.test(repText)) {
var num = RegExp.$1;
repText = repText.replace("\xA8C" + num + "C", globals.gHtmlSpans[num]);
if (limit === 10) {
console.error("maximum nesting of 10 spans reached!!!");
break;
}
++limit;
}
text2 = text2.replace("\xA8C" + i2 + "C", repText);
}
text2 = globals.converter._dispatch("unhashHTMLSpans.after", text2, options, globals);
return text2;
});
showdown2.subParser("hashPreCodeTags", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("hashPreCodeTags.before", text2, options, globals);
var repFunc = function(wholeMatch, match, left, right) {
var codeblock = left + showdown2.subParser("encodeCode")(match, options, globals) + right;
return "\n\n\xA8G" + (globals.ghCodeBlocks.push({ text: wholeMatch, codeblock }) - 1) + "G\n\n";
};
text2 = showdown2.helper.replaceRecursiveRegExp(text2, repFunc, "^ {0,3}]*>\\s*]*>", "^ {0,3}\\s*
", "gim");
text2 = globals.converter._dispatch("hashPreCodeTags.after", text2, options, globals);
return text2;
});
showdown2.subParser("headers", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("headers.before", text2, options, globals);
var headerLevelStart = isNaN(parseInt(options.headerLevelStart)) ? 1 : parseInt(options.headerLevelStart), setextRegexH1 = options.smoothLivePreview ? /^(.+)[ \t]*\n={2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n=+[ \t]*\n+/gm, setextRegexH2 = options.smoothLivePreview ? /^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n-+[ \t]*\n+/gm;
text2 = text2.replace(setextRegexH1, function(wholeMatch, m1) {
var spanGamut = showdown2.subParser("spanGamut")(m1, options, globals), hID = options.noHeaderId ? "" : ' id="' + headerId(m1) + '"', hLevel = headerLevelStart, hashBlock = "" + spanGamut + " ";
return showdown2.subParser("hashBlock")(hashBlock, options, globals);
});
text2 = text2.replace(setextRegexH2, function(matchFound, m1) {
var spanGamut = showdown2.subParser("spanGamut")(m1, options, globals), hID = options.noHeaderId ? "" : ' id="' + headerId(m1) + '"', hLevel = headerLevelStart + 1, hashBlock = "" + spanGamut + " ";
return showdown2.subParser("hashBlock")(hashBlock, options, globals);
});
var atxStyle = options.requireSpaceBeforeHeadingText ? /^(#{1,6})[ \t]+(.+?)[ \t]*#*\n+/gm : /^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm;
text2 = text2.replace(atxStyle, function(wholeMatch, m1, m2) {
var hText = m2;
if (options.customizedHeaderId) {
hText = m2.replace(/\s?\{([^{]+?)}\s*$/, "");
}
var span = showdown2.subParser("spanGamut")(hText, options, globals), hID = options.noHeaderId ? "" : ' id="' + headerId(m2) + '"', hLevel = headerLevelStart - 1 + m1.length, header = "" + span + " ";
return showdown2.subParser("hashBlock")(header, options, globals);
});
function headerId(m2) {
var title, prefix;
if (options.customizedHeaderId) {
var match = m2.match(/\{([^{]+?)}\s*$/);
if (match && match[1]) {
m2 = match[1];
}
}
title = m2;
if (showdown2.helper.isString(options.prefixHeaderId)) {
prefix = options.prefixHeaderId;
} else if (options.prefixHeaderId === true) {
prefix = "section-";
} else {
prefix = "";
}
if (!options.rawPrefixHeaderId) {
title = prefix + title;
}
if (options.ghCompatibleHeaderId) {
title = title.replace(/ /g, "-").replace(/&/g, "").replace(/¨T/g, "").replace(/¨D/g, "").replace(/[&+$,\/:;=?@"#{}|^¨~\[\]`\\*)(%.!'<>]/g, "").toLowerCase();
} else if (options.rawHeaderId) {
title = title.replace(/ /g, "-").replace(/&/g, "&").replace(/¨T/g, "\xA8").replace(/¨D/g, "$").replace(/["']/g, "-").toLowerCase();
} else {
title = title.replace(/[^\w]/g, "").toLowerCase();
}
if (options.rawPrefixHeaderId) {
title = prefix + title;
}
if (globals.hashLinkCounts[title]) {
title = title + "-" + globals.hashLinkCounts[title]++;
} else {
globals.hashLinkCounts[title] = 1;
}
return title;
}
text2 = globals.converter._dispatch("headers.after", text2, options, globals);
return text2;
});
showdown2.subParser("horizontalRule", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("horizontalRule.before", text2, options, globals);
var key = showdown2.subParser("hashBlock")("
", options, globals);
text2 = text2.replace(/^ {0,2}( ?-){3,}[ \t]*$/gm, key);
text2 = text2.replace(/^ {0,2}( ?\*){3,}[ \t]*$/gm, key);
text2 = text2.replace(/^ {0,2}( ?_){3,}[ \t]*$/gm, key);
text2 = globals.converter._dispatch("horizontalRule.after", text2, options, globals);
return text2;
});
showdown2.subParser("images", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("images.before", text2, options, globals);
var inlineRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?([\S]+?(?:\([\S]*?\)[\S]*?)?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g, crazyRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?<([^>]*)>(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(?:(["'])([^"]*?)\6))?[ \t]?\)/g, base64RegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g, referenceRegExp = /!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]()()()()()/g, refShortcutRegExp = /!\[([^\[\]]+)]()()()()()/g;
function writeImageTagBase64(wholeMatch, altText, linkId, url, width, height, m5, title) {
url = url.replace(/\s/g, "");
return writeImageTag(wholeMatch, altText, linkId, url, width, height, m5, title);
}
function writeImageTag(wholeMatch, altText, linkId, url, width, height, m5, title) {
var gUrls = globals.gUrls, gTitles = globals.gTitles, gDims = globals.gDimensions;
linkId = linkId.toLowerCase();
if (!title) {
title = "";
}
if (wholeMatch.search(/\(\s*>? ?(['"].*['"])?\)$/m) > -1) {
url = "";
} else if (url === "" || url === null) {
if (linkId === "" || linkId === null) {
linkId = altText.toLowerCase().replace(/ ?\n/g, " ");
}
url = "#" + linkId;
if (!showdown2.helper.isUndefined(gUrls[linkId])) {
url = gUrls[linkId];
if (!showdown2.helper.isUndefined(gTitles[linkId])) {
title = gTitles[linkId];
}
if (!showdown2.helper.isUndefined(gDims[linkId])) {
width = gDims[linkId].width;
height = gDims[linkId].height;
}
} else {
return wholeMatch;
}
}
altText = altText.replace(/"/g, """).replace(showdown2.helper.regexes.asteriskDashAndColon, showdown2.helper.escapeCharactersCallback);
url = url.replace(showdown2.helper.regexes.asteriskDashAndColon, showdown2.helper.escapeCharactersCallback);
var result = '
";
return result;
}
text2 = text2.replace(referenceRegExp, writeImageTag);
text2 = text2.replace(base64RegExp, writeImageTagBase64);
text2 = text2.replace(crazyRegExp, writeImageTag);
text2 = text2.replace(inlineRegExp, writeImageTag);
text2 = text2.replace(refShortcutRegExp, writeImageTag);
text2 = globals.converter._dispatch("images.after", text2, options, globals);
return text2;
});
showdown2.subParser("italicsAndBold", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("italicsAndBold.before", text2, options, globals);
function parseInside(txt, left, right) {
return left + txt + right;
}
if (options.literalMidWordUnderscores) {
text2 = text2.replace(/\b___(\S[\s\S]*?)___\b/g, function(wm, txt) {
return parseInside(txt, "", "");
});
text2 = text2.replace(/\b__(\S[\s\S]*?)__\b/g, function(wm, txt) {
return parseInside(txt, "", "");
});
text2 = text2.replace(/\b_(\S[\s\S]*?)_\b/g, function(wm, txt) {
return parseInside(txt, "", "");
});
} else {
text2 = text2.replace(/___(\S[\s\S]*?)___/g, function(wm, m2) {
return /\S$/.test(m2) ? parseInside(m2, "", "") : wm;
});
text2 = text2.replace(/__(\S[\s\S]*?)__/g, function(wm, m2) {
return /\S$/.test(m2) ? parseInside(m2, "", "") : wm;
});
text2 = text2.replace(/_([^\s_][\s\S]*?)_/g, function(wm, m2) {
return /\S$/.test(m2) ? parseInside(m2, "", "") : wm;
});
}
if (options.literalMidWordAsterisks) {
text2 = text2.replace(/([^*]|^)\B\*\*\*(\S[\s\S]*?)\*\*\*\B(?!\*)/g, function(wm, lead, txt) {
return parseInside(txt, lead + "", "");
});
text2 = text2.replace(/([^*]|^)\B\*\*(\S[\s\S]*?)\*\*\B(?!\*)/g, function(wm, lead, txt) {
return parseInside(txt, lead + "", "");
});
text2 = text2.replace(/([^*]|^)\B\*(\S[\s\S]*?)\*\B(?!\*)/g, function(wm, lead, txt) {
return parseInside(txt, lead + "", "");
});
} else {
text2 = text2.replace(/\*\*\*(\S[\s\S]*?)\*\*\*/g, function(wm, m2) {
return /\S$/.test(m2) ? parseInside(m2, "", "") : wm;
});
text2 = text2.replace(/\*\*(\S[\s\S]*?)\*\*/g, function(wm, m2) {
return /\S$/.test(m2) ? parseInside(m2, "", "") : wm;
});
text2 = text2.replace(/\*([^\s*][\s\S]*?)\*/g, function(wm, m2) {
return /\S$/.test(m2) ? parseInside(m2, "", "") : wm;
});
}
text2 = globals.converter._dispatch("italicsAndBold.after", text2, options, globals);
return text2;
});
showdown2.subParser("lists", function(text2, options, globals) {
"use strict";
function processListItems(listStr, trimTrailing) {
globals.gListLevel++;
listStr = listStr.replace(/\n{2,}$/, "\n");
listStr += "\xA80";
var rgx = /(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0| {0,3}([*+-]|\d+[.])[ \t]+))/gm, isParagraphed = /\n[ \t]*\n(?!¨0)/.test(listStr);
if (options.disableForced4SpacesIndentedSublists) {
rgx = /(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0|\2([*+-]|\d+[.])[ \t]+))/gm;
}
listStr = listStr.replace(rgx, function(wholeMatch, m1, m2, m3, m4, taskbtn, checked) {
checked = checked && checked.trim() !== "";
var item = showdown2.subParser("outdent")(m4, options, globals), bulletStyle = "";
if (taskbtn && options.tasklists) {
bulletStyle = ' class="task-list-item" style="list-style-type: none;"';
item = item.replace(/^[ \t]*\[(x|X| )?]/m, function() {
var otp = '";
return otp;
});
}
item = item.replace(/^([-*+]|\d\.)[ \t]+[\S\n ]*/g, function(wm2) {
return "\xA8A" + wm2;
});
if (m1 || item.search(/\n{2,}/) > -1) {
item = showdown2.subParser("githubCodeBlocks")(item, options, globals);
item = showdown2.subParser("blockGamut")(item, options, globals);
} else {
item = showdown2.subParser("lists")(item, options, globals);
item = item.replace(/\n$/, "");
item = showdown2.subParser("hashHTMLBlocks")(item, options, globals);
item = item.replace(/\n\n+/g, "\n\n");
if (isParagraphed) {
item = showdown2.subParser("paragraphs")(item, options, globals);
} else {
item = showdown2.subParser("spanGamut")(item, options, globals);
}
}
item = item.replace("\xA8A", "");
item = ""); str += "
"; grafsOut.push(str); } } end = grafsOut.length; for (i2 = 0; i2 < end; i2++) { var blockText = "", grafsOutIt = grafsOut[i2], codeFlag = false; while (/¨(K|G)(\d+)\1/.test(grafsOutIt)) { var delim = RegExp.$1, num = RegExp.$2; if (delim === "K") { blockText = globals.gHtmlBlocks[num]; } else { if (codeFlag) { blockText = showdown2.subParser("encodeCode")(globals.ghCodeBlocks[num].text, options, globals); } else { blockText = globals.ghCodeBlocks[num].codeblock; } } blockText = blockText.replace(/\$/g, "$$$$"); grafsOutIt = grafsOutIt.replace(/(\n\n)?¨(K|G)\d+\2(\n\n)?/, blockText); if (/^]*>\s*]*>/.test(grafsOutIt)) {
codeFlag = true;
}
}
grafsOut[i2] = grafsOutIt;
}
text2 = grafsOut.join("\n");
text2 = text2.replace(/^\n+/g, "");
text2 = text2.replace(/\n+$/g, "");
return globals.converter._dispatch("paragraphs.after", text2, options, globals);
});
showdown2.subParser("runExtension", function(ext, text2, options, globals) {
"use strict";
if (ext.filter) {
text2 = ext.filter(text2, globals.converter, options);
} else if (ext.regex) {
var re = ext.regex;
if (!(re instanceof RegExp)) {
re = new RegExp(re, "g");
}
text2 = text2.replace(re, ext.replace);
}
return text2;
});
showdown2.subParser("spanGamut", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("spanGamut.before", text2, options, globals);
text2 = showdown2.subParser("codeSpans")(text2, options, globals);
text2 = showdown2.subParser("escapeSpecialCharsWithinTagAttributes")(text2, options, globals);
text2 = showdown2.subParser("encodeBackslashEscapes")(text2, options, globals);
text2 = showdown2.subParser("images")(text2, options, globals);
text2 = showdown2.subParser("anchors")(text2, options, globals);
text2 = showdown2.subParser("autoLinks")(text2, options, globals);
text2 = showdown2.subParser("simplifiedAutoLinks")(text2, options, globals);
text2 = showdown2.subParser("emoji")(text2, options, globals);
text2 = showdown2.subParser("underline")(text2, options, globals);
text2 = showdown2.subParser("italicsAndBold")(text2, options, globals);
text2 = showdown2.subParser("strikethrough")(text2, options, globals);
text2 = showdown2.subParser("ellipsis")(text2, options, globals);
text2 = showdown2.subParser("hashHTMLSpans")(text2, options, globals);
text2 = showdown2.subParser("encodeAmpsAndAngles")(text2, options, globals);
if (options.simpleLineBreaks) {
if (!/\n\n¨K/.test(text2)) {
text2 = text2.replace(/\n+/g, "
\n");
}
} else {
text2 = text2.replace(/ +\n/g, "
\n");
}
text2 = globals.converter._dispatch("spanGamut.after", text2, options, globals);
return text2;
});
showdown2.subParser("strikethrough", function(text2, options, globals) {
"use strict";
function parseInside(txt) {
if (options.simplifiedAutoLink) {
txt = showdown2.subParser("simplifiedAutoLinks")(txt, options, globals);
}
return "" + txt + "";
}
if (options.strikethrough) {
text2 = globals.converter._dispatch("strikethrough.before", text2, options, globals);
text2 = text2.replace(/(?:~){2}([\s\S]+?)(?:~){2}/g, function(wm, txt) {
return parseInside(txt);
});
text2 = globals.converter._dispatch("strikethrough.after", text2, options, globals);
}
return text2;
});
showdown2.subParser("stripLinkDefinitions", function(text2, options, globals) {
"use strict";
var regex = /^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*([^>\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm, base64Regex = /^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm;
text2 += "\xA80";
var replaceFunc = function(wholeMatch, linkId, url, width, height, blankLines, title) {
linkId = linkId.toLowerCase();
if (url.match(/^data:.+?\/.+?;base64,/)) {
globals.gUrls[linkId] = url.replace(/\s/g, "");
} else {
globals.gUrls[linkId] = showdown2.subParser("encodeAmpsAndAngles")(url, options, globals);
}
if (blankLines) {
return blankLines + title;
} else {
if (title) {
globals.gTitles[linkId] = title.replace(/"|'/g, """);
}
if (options.parseImgDimensions && width && height) {
globals.gDimensions[linkId] = {
width,
height
};
}
}
return "";
};
text2 = text2.replace(base64Regex, replaceFunc);
text2 = text2.replace(regex, replaceFunc);
text2 = text2.replace(/¨0/, "");
return text2;
});
showdown2.subParser("tables", function(text2, options, globals) {
"use strict";
if (!options.tables) {
return text2;
}
var tableRgx = /^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:[-=]){2,}[\s\S]+?(?:\n\n|¨0)/gm, singeColTblRgx = /^ {0,3}\|.+\|[ \t]*\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n( {0,3}\|.+\|[ \t]*\n)*(?:\n|¨0)/gm;
function parseStyles(sLine) {
if (/^:[ \t]*--*$/.test(sLine)) {
return ' style="text-align:left;"';
} else if (/^--*[ \t]*:[ \t]*$/.test(sLine)) {
return ' style="text-align:right;"';
} else if (/^:[ \t]*--*[ \t]*:$/.test(sLine)) {
return ' style="text-align:center;"';
} else {
return "";
}
}
function parseHeaders(header, style) {
var id = "";
header = header.trim();
if (options.tablesHeaderId || options.tableHeaderId) {
id = ' id="' + header.replace(/ /g, "_").toLowerCase() + '"';
}
header = showdown2.subParser("spanGamut")(header, options, globals);
return "" + header + " \n";
}
function parseCells(cell, style) {
var subText = showdown2.subParser("spanGamut")(cell, options, globals);
return "" + subText + " \n";
}
function buildTable(headers, cells) {
var tb = "\n\n\n", tblLgn = headers.length;
for (var i2 = 0; i2 < tblLgn; ++i2) {
tb += headers[i2];
}
tb += " \n\n\n";
for (i2 = 0; i2 < cells.length; ++i2) {
tb += "\n";
for (var ii = 0; ii < tblLgn; ++ii) {
tb += cells[i2][ii];
}
tb += " \n";
}
tb += "\n
\n";
return tb;
}
function parseTable(rawTable) {
var i2, tableLines = rawTable.split("\n");
for (i2 = 0; i2 < tableLines.length; ++i2) {
if (/^ {0,3}\|/.test(tableLines[i2])) {
tableLines[i2] = tableLines[i2].replace(/^ {0,3}\|/, "");
}
if (/\|[ \t]*$/.test(tableLines[i2])) {
tableLines[i2] = tableLines[i2].replace(/\|[ \t]*$/, "");
}
tableLines[i2] = showdown2.subParser("codeSpans")(tableLines[i2], options, globals);
}
var rawHeaders = tableLines[0].split("|").map(function(s2) {
return s2.trim();
}), rawStyles = tableLines[1].split("|").map(function(s2) {
return s2.trim();
}), rawCells = [], headers = [], styles = [], cells = [];
tableLines.shift();
tableLines.shift();
for (i2 = 0; i2 < tableLines.length; ++i2) {
if (tableLines[i2].trim() === "") {
continue;
}
rawCells.push(
tableLines[i2].split("|").map(function(s2) {
return s2.trim();
})
);
}
if (rawHeaders.length < rawStyles.length) {
return rawTable;
}
for (i2 = 0; i2 < rawStyles.length; ++i2) {
styles.push(parseStyles(rawStyles[i2]));
}
for (i2 = 0; i2 < rawHeaders.length; ++i2) {
if (showdown2.helper.isUndefined(styles[i2])) {
styles[i2] = "";
}
headers.push(parseHeaders(rawHeaders[i2], styles[i2]));
}
for (i2 = 0; i2 < rawCells.length; ++i2) {
var row = [];
for (var ii = 0; ii < headers.length; ++ii) {
if (showdown2.helper.isUndefined(rawCells[i2][ii])) {
}
row.push(parseCells(rawCells[i2][ii], styles[ii]));
}
cells.push(row);
}
return buildTable(headers, cells);
}
text2 = globals.converter._dispatch("tables.before", text2, options, globals);
text2 = text2.replace(/\\(\|)/g, showdown2.helper.escapeCharactersCallback);
text2 = text2.replace(tableRgx, parseTable);
text2 = text2.replace(singeColTblRgx, parseTable);
text2 = globals.converter._dispatch("tables.after", text2, options, globals);
return text2;
});
showdown2.subParser("underline", function(text2, options, globals) {
"use strict";
if (!options.underline) {
return text2;
}
text2 = globals.converter._dispatch("underline.before", text2, options, globals);
if (options.literalMidWordUnderscores) {
text2 = text2.replace(/\b___(\S[\s\S]*?)___\b/g, function(wm, txt) {
return "" + txt + "";
});
text2 = text2.replace(/\b__(\S[\s\S]*?)__\b/g, function(wm, txt) {
return "" + txt + "";
});
} else {
text2 = text2.replace(/___(\S[\s\S]*?)___/g, function(wm, m2) {
return /\S$/.test(m2) ? "" + m2 + "" : wm;
});
text2 = text2.replace(/__(\S[\s\S]*?)__/g, function(wm, m2) {
return /\S$/.test(m2) ? "" + m2 + "" : wm;
});
}
text2 = text2.replace(/(_)/g, showdown2.helper.escapeCharactersCallback);
text2 = globals.converter._dispatch("underline.after", text2, options, globals);
return text2;
});
showdown2.subParser("unescapeSpecialChars", function(text2, options, globals) {
"use strict";
text2 = globals.converter._dispatch("unescapeSpecialChars.before", text2, options, globals);
text2 = text2.replace(/¨E(\d+)E/g, function(wholeMatch, m1) {
var charCodeToReplace = parseInt(m1);
return String.fromCharCode(charCodeToReplace);
});
text2 = globals.converter._dispatch("unescapeSpecialChars.after", text2, options, globals);
return text2;
});
showdown2.subParser("makeMarkdown.blockquote", function(node, globals) {
"use strict";
var txt = "";
if (node.hasChildNodes()) {
var children = node.childNodes, childrenLength = children.length;
for (var i2 = 0; i2 < childrenLength; ++i2) {
var innerTxt = showdown2.subParser("makeMarkdown.node")(children[i2], globals);
if (innerTxt === "") {
continue;
}
txt += innerTxt;
}
}
txt = txt.trim();
txt = "> " + txt.split("\n").join("\n> ");
return txt;
});
showdown2.subParser("makeMarkdown.codeBlock", function(node, globals) {
"use strict";
var lang = node.getAttribute("language"), num = node.getAttribute("precodenum");
return "```" + lang + "\n" + globals.preList[num] + "\n```";
});
showdown2.subParser("makeMarkdown.codeSpan", function(node) {
"use strict";
return "`" + node.innerHTML + "`";
});
showdown2.subParser("makeMarkdown.emphasis", function(node, globals) {
"use strict";
var txt = "";
if (node.hasChildNodes()) {
txt += "*";
var children = node.childNodes, childrenLength = children.length;
for (var i2 = 0; i2 < childrenLength; ++i2) {
txt += showdown2.subParser("makeMarkdown.node")(children[i2], globals);
}
txt += "*";
}
return txt;
});
showdown2.subParser("makeMarkdown.header", function(node, globals, headerLevel) {
"use strict";
var headerMark = new Array(headerLevel + 1).join("#"), txt = "";
if (node.hasChildNodes()) {
txt = headerMark + " ";
var children = node.childNodes, childrenLength = children.length;
for (var i2 = 0; i2 < childrenLength; ++i2) {
txt += showdown2.subParser("makeMarkdown.node")(children[i2], globals);
}
}
return txt;
});
showdown2.subParser("makeMarkdown.hr", function() {
"use strict";
return "---";
});
showdown2.subParser("makeMarkdown.image", function(node) {
"use strict";
var txt = "";
if (node.hasAttribute("src")) {
txt += " + ">";
if (node.hasAttribute("width") && node.hasAttribute("height")) {
txt += " =" + node.getAttribute("width") + "x" + node.getAttribute("height");
}
if (node.hasAttribute("title")) {
txt += ' "' + node.getAttribute("title") + '"';
}
txt += ")";
}
return txt;
});
showdown2.subParser("makeMarkdown.links", function(node, globals) {
"use strict";
var txt = "";
if (node.hasChildNodes() && node.hasAttribute("href")) {
var children = node.childNodes, childrenLength = children.length;
txt = "[";
for (var i2 = 0; i2 < childrenLength; ++i2) {
txt += showdown2.subParser("makeMarkdown.node")(children[i2], globals);
}
txt += "](";
txt += "<" + node.getAttribute("href") + ">";
if (node.hasAttribute("title")) {
txt += ' "' + node.getAttribute("title") + '"';
}
txt += ")";
}
return txt;
});
showdown2.subParser("makeMarkdown.list", function(node, globals, type) {
"use strict";
var txt = "";
if (!node.hasChildNodes()) {
return "";
}
var listItems = node.childNodes, listItemsLenght = listItems.length, listNum = node.getAttribute("start") || 1;
for (var i2 = 0; i2 < listItemsLenght; ++i2) {
if (typeof listItems[i2].tagName === "undefined" || listItems[i2].tagName.toLowerCase() !== "li") {
continue;
}
var bullet = "";
if (type === "ol") {
bullet = listNum.toString() + ". ";
} else {
bullet = "- ";
}
txt += bullet + showdown2.subParser("makeMarkdown.listItem")(listItems[i2], globals);
++listNum;
}
txt += "\n\n";
return txt.trim();
});
showdown2.subParser("makeMarkdown.listItem", function(node, globals) {
"use strict";
var listItemTxt = "";
var children = node.childNodes, childrenLenght = children.length;
for (var i2 = 0; i2 < childrenLenght; ++i2) {
listItemTxt += showdown2.subParser("makeMarkdown.node")(children[i2], globals);
}
if (!/\n$/.test(listItemTxt)) {
listItemTxt += "\n";
} else {
listItemTxt = listItemTxt.split("\n").join("\n ").replace(/^ {4}$/gm, "").replace(/\n\n+/g, "\n\n");
}
return listItemTxt;
});
showdown2.subParser("makeMarkdown.node", function(node, globals, spansOnly) {
"use strict";
spansOnly = spansOnly || false;
var txt = "";
if (node.nodeType === 3) {
return showdown2.subParser("makeMarkdown.txt")(node, globals);
}
if (node.nodeType === 8) {
return "\n\n";
}
if (node.nodeType !== 1) {
return "";
}
var tagName = node.tagName.toLowerCase();
switch (tagName) {
//
// BLOCKS
//
case "h1":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.header")(node, globals, 1) + "\n\n";
}
break;
case "h2":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.header")(node, globals, 2) + "\n\n";
}
break;
case "h3":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.header")(node, globals, 3) + "\n\n";
}
break;
case "h4":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.header")(node, globals, 4) + "\n\n";
}
break;
case "h5":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.header")(node, globals, 5) + "\n\n";
}
break;
case "h6":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.header")(node, globals, 6) + "\n\n";
}
break;
case "p":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.paragraph")(node, globals) + "\n\n";
}
break;
case "blockquote":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.blockquote")(node, globals) + "\n\n";
}
break;
case "hr":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.hr")(node, globals) + "\n\n";
}
break;
case "ol":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.list")(node, globals, "ol") + "\n\n";
}
break;
case "ul":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.list")(node, globals, "ul") + "\n\n";
}
break;
case "precode":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.codeBlock")(node, globals) + "\n\n";
}
break;
case "pre":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.pre")(node, globals) + "\n\n";
}
break;
case "table":
if (!spansOnly) {
txt = showdown2.subParser("makeMarkdown.table")(node, globals) + "\n\n";
}
break;
//
// SPANS
//
case "code":
txt = showdown2.subParser("makeMarkdown.codeSpan")(node, globals);
break;
case "em":
case "i":
txt = showdown2.subParser("makeMarkdown.emphasis")(node, globals);
break;
case "strong":
case "b":
txt = showdown2.subParser("makeMarkdown.strong")(node, globals);
break;
case "del":
txt = showdown2.subParser("makeMarkdown.strikethrough")(node, globals);
break;
case "a":
txt = showdown2.subParser("makeMarkdown.links")(node, globals);
break;
case "img":
txt = showdown2.subParser("makeMarkdown.image")(node, globals);
break;
default:
txt = node.outerHTML + "\n\n";
}
return txt;
});
showdown2.subParser("makeMarkdown.paragraph", function(node, globals) {
"use strict";
var txt = "";
if (node.hasChildNodes()) {
var children = node.childNodes, childrenLength = children.length;
for (var i2 = 0; i2 < childrenLength; ++i2) {
txt += showdown2.subParser("makeMarkdown.node")(children[i2], globals);
}
}
txt = txt.trim();
return txt;
});
showdown2.subParser("makeMarkdown.pre", function(node, globals) {
"use strict";
var num = node.getAttribute("prenum");
return "" + globals.preList[num] + "
";
});
showdown2.subParser("makeMarkdown.strikethrough", function(node, globals) {
"use strict";
var txt = "";
if (node.hasChildNodes()) {
txt += "~~";
var children = node.childNodes, childrenLength = children.length;
for (var i2 = 0; i2 < childrenLength; ++i2) {
txt += showdown2.subParser("makeMarkdown.node")(children[i2], globals);
}
txt += "~~";
}
return txt;
});
showdown2.subParser("makeMarkdown.strong", function(node, globals) {
"use strict";
var txt = "";
if (node.hasChildNodes()) {
txt += "**";
var children = node.childNodes, childrenLength = children.length;
for (var i2 = 0; i2 < childrenLength; ++i2) {
txt += showdown2.subParser("makeMarkdown.node")(children[i2], globals);
}
txt += "**";
}
return txt;
});
showdown2.subParser("makeMarkdown.table", function(node, globals) {
"use strict";
var txt = "", tableArray = [[], []], headings = node.querySelectorAll("thead>tr>th"), rows = node.querySelectorAll("tbody>tr"), i2, ii;
for (i2 = 0; i2 < headings.length; ++i2) {
var headContent = showdown2.subParser("makeMarkdown.tableCell")(headings[i2], globals), allign = "---";
if (headings[i2].hasAttribute("style")) {
var style = headings[i2].getAttribute("style").toLowerCase().replace(/\s/g, "");
switch (style) {
case "text-align:left;":
allign = ":---";
break;
case "text-align:right;":
allign = "---:";
break;
case "text-align:center;":
allign = ":---:";
break;
}
}
tableArray[0][i2] = headContent.trim();
tableArray[1][i2] = allign;
}
for (i2 = 0; i2 < rows.length; ++i2) {
var r2 = tableArray.push([]) - 1, cols = rows[i2].getElementsByTagName("td");
for (ii = 0; ii < headings.length; ++ii) {
var cellContent = " ";
if (typeof cols[ii] !== "undefined") {
cellContent = showdown2.subParser("makeMarkdown.tableCell")(cols[ii], globals);
}
tableArray[r2].push(cellContent);
}
}
var cellSpacesCount = 3;
for (i2 = 0; i2 < tableArray.length; ++i2) {
for (ii = 0; ii < tableArray[i2].length; ++ii) {
var strLen = tableArray[i2][ii].length;
if (strLen > cellSpacesCount) {
cellSpacesCount = strLen;
}
}
}
for (i2 = 0; i2 < tableArray.length; ++i2) {
for (ii = 0; ii < tableArray[i2].length; ++ii) {
if (i2 === 1) {
if (tableArray[i2][ii].slice(-1) === ":") {
tableArray[i2][ii] = showdown2.helper.padEnd(tableArray[i2][ii].slice(-1), cellSpacesCount - 1, "-") + ":";
} else {
tableArray[i2][ii] = showdown2.helper.padEnd(tableArray[i2][ii], cellSpacesCount, "-");
}
} else {
tableArray[i2][ii] = showdown2.helper.padEnd(tableArray[i2][ii], cellSpacesCount);
}
}
txt += "| " + tableArray[i2].join(" | ") + " |\n";
}
return txt.trim();
});
showdown2.subParser("makeMarkdown.tableCell", function(node, globals) {
"use strict";
var txt = "";
if (!node.hasChildNodes()) {
return "";
}
var children = node.childNodes, childrenLength = children.length;
for (var i2 = 0; i2 < childrenLength; ++i2) {
txt += showdown2.subParser("makeMarkdown.node")(children[i2], globals, true);
}
return txt.trim();
});
showdown2.subParser("makeMarkdown.txt", function(node) {
"use strict";
var txt = node.nodeValue;
txt = txt.replace(/ +/g, " ");
txt = txt.replace(/¨NBSP;/g, " ");
txt = showdown2.helper.unescapeHTMLEntities(txt);
txt = txt.replace(/([*_~|`])/g, "\\$1");
txt = txt.replace(/^(\s*)>/g, "\\$1>");
txt = txt.replace(/^#/gm, "\\#");
txt = txt.replace(/^(\s*)([-=]{3,})(\s*)$/, "$1\\$2$3");
txt = txt.replace(/^( {0,3}\d+)\./gm, "$1\\.");
txt = txt.replace(/^( {0,3})([+-])/gm, "$1\\$2");
txt = txt.replace(/]([\s]*)\(/g, "\\]$1\\(");
txt = txt.replace(/^ {0,3}\[([\S \t]*?)]:/gm, "\\[$1]:");
return txt;
});
var root = this;
if (typeof define === "function" && define.amd) {
define(function() {
"use strict";
return showdown2;
});
} else if (typeof module !== "undefined" && module.exports) {
module.exports = showdown2;
} else {
root.showdown = showdown2;
}
}).call(exports);
}
});
// packages/blocks/build-module/index.js
var index_exports = {};
__export(index_exports, {
__EXPERIMENTAL_ELEMENTS: () => __EXPERIMENTAL_ELEMENTS,
__EXPERIMENTAL_PATHS_WITH_OVERRIDE: () => __EXPERIMENTAL_PATHS_WITH_OVERRIDE,
__EXPERIMENTAL_STYLE_PROPERTY: () => __EXPERIMENTAL_STYLE_PROPERTY,
__experimentalCloneSanitizedBlock: () => __experimentalCloneSanitizedBlock,
__experimentalGetAccessibleBlockLabel: () => getAccessibleBlockLabel,
__experimentalGetBlockAttributesNamesByRole: () => __experimentalGetBlockAttributesNamesByRole,
__experimentalGetBlockLabel: () => getBlockLabel,
__experimentalSanitizeBlockAttributes: () => __experimentalSanitizeBlockAttributes,
__unstableGetBlockProps: () => getBlockProps,
__unstableGetInnerBlocksProps: () => getInnerBlocksProps,
__unstableSerializeAndClean: () => __unstableSerializeAndClean,
children: () => children_default,
cloneBlock: () => cloneBlock,
createBlock: () => createBlock,
createBlocksFromInnerBlocksTemplate: () => createBlocksFromInnerBlocksTemplate,
doBlocksMatchTemplate: () => doBlocksMatchTemplate,
findTransform: () => findTransform,
getBlockAttributes: () => getBlockAttributes,
getBlockAttributesNamesByRole: () => getBlockAttributesNamesByRole,
getBlockBindingsSource: () => getBlockBindingsSource,
getBlockBindingsSources: () => getBlockBindingsSources,
getBlockContent: () => getBlockInnerHTML,
getBlockDefaultClassName: () => getBlockDefaultClassName,
getBlockFromExample: () => getBlockFromExample,
getBlockMenuDefaultClassName: () => getBlockMenuDefaultClassName,
getBlockSupport: () => getBlockSupport,
getBlockTransforms: () => getBlockTransforms,
getBlockType: () => getBlockType,
getBlockTypes: () => getBlockTypes,
getBlockVariations: () => getBlockVariations,
getCategories: () => getCategories2,
getChildBlockNames: () => getChildBlockNames,
getDefaultBlockName: () => getDefaultBlockName,
getFreeformContentHandlerName: () => getFreeformContentHandlerName,
getGroupingBlockName: () => getGroupingBlockName,
getPhrasingContentSchema: () => deprecatedGetPhrasingContentSchema,
getPossibleBlockTransformations: () => getPossibleBlockTransformations,
getSaveContent: () => getSaveContent,
getSaveElement: () => getSaveElement,
getUnregisteredTypeHandlerName: () => getUnregisteredTypeHandlerName,
hasBlockSupport: () => hasBlockSupport,
hasChildBlocks: () => hasChildBlocks,
hasChildBlocksWithInserterSupport: () => hasChildBlocksWithInserterSupport,
isReusableBlock: () => isReusableBlock,
isTemplatePart: () => isTemplatePart,
isUnmodifiedBlock: () => isUnmodifiedBlock,
isUnmodifiedDefaultBlock: () => isUnmodifiedDefaultBlock,
isValidBlockContent: () => isValidBlockContent,
isValidIcon: () => isValidIcon,
node: () => node_default,
normalizeIconObject: () => normalizeIconObject,
parse: () => parse2,
parseWithAttributeSchema: () => parseWithAttributeSchema,
pasteHandler: () => pasteHandler,
privateApis: () => privateApis,
rawHandler: () => rawHandler,
registerBlockBindingsSource: () => registerBlockBindingsSource,
registerBlockCollection: () => registerBlockCollection,
registerBlockStyle: () => registerBlockStyle,
registerBlockType: () => registerBlockType,
registerBlockVariation: () => registerBlockVariation,
serialize: () => serialize,
serializeRawBlock: () => serializeRawBlock,
setCategories: () => setCategories2,
setDefaultBlockName: () => setDefaultBlockName,
setFreeformContentHandlerName: () => setFreeformContentHandlerName,
setGroupingBlockName: () => setGroupingBlockName,
setUnregisteredTypeHandlerName: () => setUnregisteredTypeHandlerName,
store: () => store,
switchToBlockType: () => switchToBlockType,
synchronizeBlocksWithTemplate: () => synchronizeBlocksWithTemplate,
unregisterBlockBindingsSource: () => unregisterBlockBindingsSource,
unregisterBlockStyle: () => unregisterBlockStyle,
unregisterBlockType: () => unregisterBlockType,
unregisterBlockVariation: () => unregisterBlockVariation,
unstable__bootstrapServerSideBlockDefinitions: () => unstable__bootstrapServerSideBlockDefinitions,
updateCategory: () => updateCategory2,
validateBlock: () => validateBlock,
withBlockContentContext: () => withBlockContentContext
});
// packages/blocks/build-module/store/index.js
var import_data5 = __toESM(require_data());
// node_modules/tslib/tslib.es6.mjs
var __assign = function() {
__assign = Object.assign || function __assign2(t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2];
for (var p2 in s2) if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2];
}
return t3;
};
return __assign.apply(this, arguments);
};
// node_modules/lower-case/dist.es2015/index.js
function lowerCase(str) {
return str.toLowerCase();
}
// node_modules/no-case/dist.es2015/index.js
var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];
var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;
function noCase(input, options) {
if (options === void 0) {
options = {};
}
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;
var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0");
var start = 0;
var end = result.length;
while (result.charAt(start) === "\0")
start++;
while (result.charAt(end - 1) === "\0")
end--;
return result.slice(start, end).split("\0").map(transform).join(delimiter);
}
function replace(input, re, value) {
if (re instanceof RegExp)
return input.replace(re, value);
return re.reduce(function(input2, re2) {
return input2.replace(re2, value);
}, input);
}
// node_modules/pascal-case/dist.es2015/index.js
function pascalCaseTransform(input, index) {
var firstChar = input.charAt(0);
var lowerChars = input.substr(1).toLowerCase();
if (index > 0 && firstChar >= "0" && firstChar <= "9") {
return "_" + firstChar + lowerChars;
}
return "" + firstChar.toUpperCase() + lowerChars;
}
function pascalCase(input, options) {
if (options === void 0) {
options = {};
}
return noCase(input, __assign({ delimiter: "", transform: pascalCaseTransform }, options));
}
// node_modules/camel-case/dist.es2015/index.js
function camelCaseTransform(input, index) {
if (index === 0)
return input.toLowerCase();
return pascalCaseTransform(input, index);
}
function camelCase(input, options) {
if (options === void 0) {
options = {};
}
return pascalCase(input, __assign({ transform: camelCaseTransform }, options));
}
// packages/blocks/build-module/store/reducer.js
var import_data2 = __toESM(require_data());
var import_i18n3 = __toESM(require_i18n());
// node_modules/colord/index.mjs
var r = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) };
var t = function(r2) {
return "string" == typeof r2 ? r2.length > 0 : "number" == typeof r2;
};
var n = function(r2, t3, n2) {
return void 0 === t3 && (t3 = 0), void 0 === n2 && (n2 = Math.pow(10, t3)), Math.round(n2 * r2) / n2 + 0;
};
var e = function(r2, t3, n2) {
return void 0 === t3 && (t3 = 0), void 0 === n2 && (n2 = 1), r2 > n2 ? n2 : r2 > t3 ? r2 : t3;
};
var u = function(r2) {
return (r2 = isFinite(r2) ? r2 % 360 : 0) > 0 ? r2 : r2 + 360;
};
var a = function(r2) {
return { r: e(r2.r, 0, 255), g: e(r2.g, 0, 255), b: e(r2.b, 0, 255), a: e(r2.a) };
};
var o = function(r2) {
return { r: n(r2.r), g: n(r2.g), b: n(r2.b), a: n(r2.a, 3) };
};
var i = /^#([0-9a-f]{3,8})$/i;
var s = function(r2) {
var t3 = r2.toString(16);
return t3.length < 2 ? "0" + t3 : t3;
};
var h = function(r2) {
var t3 = r2.r, n2 = r2.g, e2 = r2.b, u2 = r2.a, a2 = Math.max(t3, n2, e2), o3 = a2 - Math.min(t3, n2, e2), i2 = o3 ? a2 === t3 ? (n2 - e2) / o3 : a2 === n2 ? 2 + (e2 - t3) / o3 : 4 + (t3 - n2) / o3 : 0;
return { h: 60 * (i2 < 0 ? i2 + 6 : i2), s: a2 ? o3 / a2 * 100 : 0, v: a2 / 255 * 100, a: u2 };
};
var b = function(r2) {
var t3 = r2.h, n2 = r2.s, e2 = r2.v, u2 = r2.a;
t3 = t3 / 360 * 6, n2 /= 100, e2 /= 100;
var a2 = Math.floor(t3), o3 = e2 * (1 - n2), i2 = e2 * (1 - (t3 - a2) * n2), s2 = e2 * (1 - (1 - t3 + a2) * n2), h2 = a2 % 6;
return { r: 255 * [e2, i2, o3, o3, s2, e2][h2], g: 255 * [s2, e2, e2, i2, o3, o3][h2], b: 255 * [o3, o3, s2, e2, e2, i2][h2], a: u2 };
};
var g = function(r2) {
return { h: u(r2.h), s: e(r2.s, 0, 100), l: e(r2.l, 0, 100), a: e(r2.a) };
};
var d = function(r2) {
return { h: n(r2.h), s: n(r2.s), l: n(r2.l), a: n(r2.a, 3) };
};
var f = function(r2) {
return b((n2 = (t3 = r2).s, { h: t3.h, s: (n2 *= ((e2 = t3.l) < 50 ? e2 : 100 - e2) / 100) > 0 ? 2 * n2 / (e2 + n2) * 100 : 0, v: e2 + n2, a: t3.a }));
var t3, n2, e2;
};
var c = function(r2) {
return { h: (t3 = h(r2)).h, s: (u2 = (200 - (n2 = t3.s)) * (e2 = t3.v) / 100) > 0 && u2 < 200 ? n2 * e2 / 100 / (u2 <= 100 ? u2 : 200 - u2) * 100 : 0, l: u2 / 2, a: t3.a };
var t3, n2, e2, u2;
};
var l = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
var p = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
var v = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
var m = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
var y = { string: [[function(r2) {
var t3 = i.exec(r2);
return t3 ? (r2 = t3[1]).length <= 4 ? { r: parseInt(r2[0] + r2[0], 16), g: parseInt(r2[1] + r2[1], 16), b: parseInt(r2[2] + r2[2], 16), a: 4 === r2.length ? n(parseInt(r2[3] + r2[3], 16) / 255, 2) : 1 } : 6 === r2.length || 8 === r2.length ? { r: parseInt(r2.substr(0, 2), 16), g: parseInt(r2.substr(2, 2), 16), b: parseInt(r2.substr(4, 2), 16), a: 8 === r2.length ? n(parseInt(r2.substr(6, 2), 16) / 255, 2) : 1 } : null : null;
}, "hex"], [function(r2) {
var t3 = v.exec(r2) || m.exec(r2);
return t3 ? t3[2] !== t3[4] || t3[4] !== t3[6] ? null : a({ r: Number(t3[1]) / (t3[2] ? 100 / 255 : 1), g: Number(t3[3]) / (t3[4] ? 100 / 255 : 1), b: Number(t3[5]) / (t3[6] ? 100 / 255 : 1), a: void 0 === t3[7] ? 1 : Number(t3[7]) / (t3[8] ? 100 : 1) }) : null;
}, "rgb"], [function(t3) {
var n2 = l.exec(t3) || p.exec(t3);
if (!n2) return null;
var e2, u2, a2 = g({ h: (e2 = n2[1], u2 = n2[2], void 0 === u2 && (u2 = "deg"), Number(e2) * (r[u2] || 1)), s: Number(n2[3]), l: Number(n2[4]), a: void 0 === n2[5] ? 1 : Number(n2[5]) / (n2[6] ? 100 : 1) });
return f(a2);
}, "hsl"]], object: [[function(r2) {
var n2 = r2.r, e2 = r2.g, u2 = r2.b, o3 = r2.a, i2 = void 0 === o3 ? 1 : o3;
return t(n2) && t(e2) && t(u2) ? a({ r: Number(n2), g: Number(e2), b: Number(u2), a: Number(i2) }) : null;
}, "rgb"], [function(r2) {
var n2 = r2.h, e2 = r2.s, u2 = r2.l, a2 = r2.a, o3 = void 0 === a2 ? 1 : a2;
if (!t(n2) || !t(e2) || !t(u2)) return null;
var i2 = g({ h: Number(n2), s: Number(e2), l: Number(u2), a: Number(o3) });
return f(i2);
}, "hsl"], [function(r2) {
var n2 = r2.h, a2 = r2.s, o3 = r2.v, i2 = r2.a, s2 = void 0 === i2 ? 1 : i2;
if (!t(n2) || !t(a2) || !t(o3)) return null;
var h2 = (function(r3) {
return { h: u(r3.h), s: e(r3.s, 0, 100), v: e(r3.v, 0, 100), a: e(r3.a) };
})({ h: Number(n2), s: Number(a2), v: Number(o3), a: Number(s2) });
return b(h2);
}, "hsv"]] };
var N = function(r2, t3) {
for (var n2 = 0; n2 < t3.length; n2++) {
var e2 = t3[n2][0](r2);
if (e2) return [e2, t3[n2][1]];
}
return [null, void 0];
};
var x = function(r2) {
return "string" == typeof r2 ? N(r2.trim(), y.string) : "object" == typeof r2 && null !== r2 ? N(r2, y.object) : [null, void 0];
};
var M = function(r2, t3) {
var n2 = c(r2);
return { h: n2.h, s: e(n2.s + 100 * t3, 0, 100), l: n2.l, a: n2.a };
};
var H = function(r2) {
return (299 * r2.r + 587 * r2.g + 114 * r2.b) / 1e3 / 255;
};
var $ = function(r2, t3) {
var n2 = c(r2);
return { h: n2.h, s: n2.s, l: e(n2.l + 100 * t3, 0, 100), a: n2.a };
};
var j = (function() {
function r2(r3) {
this.parsed = x(r3)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 };
}
return r2.prototype.isValid = function() {
return null !== this.parsed;
}, r2.prototype.brightness = function() {
return n(H(this.rgba), 2);
}, r2.prototype.isDark = function() {
return H(this.rgba) < 0.5;
}, r2.prototype.isLight = function() {
return H(this.rgba) >= 0.5;
}, r2.prototype.toHex = function() {
return r3 = o(this.rgba), t3 = r3.r, e2 = r3.g, u2 = r3.b, i2 = (a2 = r3.a) < 1 ? s(n(255 * a2)) : "", "#" + s(t3) + s(e2) + s(u2) + i2;
var r3, t3, e2, u2, a2, i2;
}, r2.prototype.toRgb = function() {
return o(this.rgba);
}, r2.prototype.toRgbString = function() {
return r3 = o(this.rgba), t3 = r3.r, n2 = r3.g, e2 = r3.b, (u2 = r3.a) < 1 ? "rgba(" + t3 + ", " + n2 + ", " + e2 + ", " + u2 + ")" : "rgb(" + t3 + ", " + n2 + ", " + e2 + ")";
var r3, t3, n2, e2, u2;
}, r2.prototype.toHsl = function() {
return d(c(this.rgba));
}, r2.prototype.toHslString = function() {
return r3 = d(c(this.rgba)), t3 = r3.h, n2 = r3.s, e2 = r3.l, (u2 = r3.a) < 1 ? "hsla(" + t3 + ", " + n2 + "%, " + e2 + "%, " + u2 + ")" : "hsl(" + t3 + ", " + n2 + "%, " + e2 + "%)";
var r3, t3, n2, e2, u2;
}, r2.prototype.toHsv = function() {
return r3 = h(this.rgba), { h: n(r3.h), s: n(r3.s), v: n(r3.v), a: n(r3.a, 3) };
var r3;
}, r2.prototype.invert = function() {
return w({ r: 255 - (r3 = this.rgba).r, g: 255 - r3.g, b: 255 - r3.b, a: r3.a });
var r3;
}, r2.prototype.saturate = function(r3) {
return void 0 === r3 && (r3 = 0.1), w(M(this.rgba, r3));
}, r2.prototype.desaturate = function(r3) {
return void 0 === r3 && (r3 = 0.1), w(M(this.rgba, -r3));
}, r2.prototype.grayscale = function() {
return w(M(this.rgba, -1));
}, r2.prototype.lighten = function(r3) {
return void 0 === r3 && (r3 = 0.1), w($(this.rgba, r3));
}, r2.prototype.darken = function(r3) {
return void 0 === r3 && (r3 = 0.1), w($(this.rgba, -r3));
}, r2.prototype.rotate = function(r3) {
return void 0 === r3 && (r3 = 15), this.hue(this.hue() + r3);
}, r2.prototype.alpha = function(r3) {
return "number" == typeof r3 ? w({ r: (t3 = this.rgba).r, g: t3.g, b: t3.b, a: r3 }) : n(this.rgba.a, 3);
var t3;
}, r2.prototype.hue = function(r3) {
var t3 = c(this.rgba);
return "number" == typeof r3 ? w({ h: r3, s: t3.s, l: t3.l, a: t3.a }) : n(t3.h);
}, r2.prototype.isEqual = function(r3) {
return this.toHex() === w(r3).toHex();
}, r2;
})();
var w = function(r2) {
return r2 instanceof j ? r2 : new j(r2);
};
var S = [];
var k = function(r2) {
r2.forEach(function(r3) {
S.indexOf(r3) < 0 && (r3(j, y), S.push(r3));
});
};
// node_modules/colord/plugins/names.mjs
function names_default(e2, f2) {
var a2 = { 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 = {};
for (var d2 in a2) r2[a2[d2]] = d2;
var l2 = {};
e2.prototype.toName = function(f3) {
if (!(this.rgba.a || this.rgba.r || this.rgba.g || this.rgba.b)) return "transparent";
var d3, i2, n2 = r2[this.toHex()];
if (n2) return n2;
if (null == f3 ? void 0 : f3.closest) {
var o3 = this.toRgb(), t3 = 1 / 0, b2 = "black";
if (!l2.length) for (var c2 in a2) l2[c2] = new e2(a2[c2]).toRgb();
for (var g2 in a2) {
var u2 = (d3 = o3, i2 = l2[g2], Math.pow(d3.r - i2.r, 2) + Math.pow(d3.g - i2.g, 2) + Math.pow(d3.b - i2.b, 2));
u2 < t3 && (t3 = u2, b2 = g2);
}
return b2;
}
};
f2.string.push([function(f3) {
var r3 = f3.toLowerCase(), d3 = "transparent" === r3 ? "#0000" : a2[r3];
return d3 ? new e2(d3).toRgb() : null;
}, "name"]);
}
// node_modules/colord/plugins/a11y.mjs
var o2 = function(o3) {
var t3 = o3 / 255;
return t3 < 0.04045 ? t3 / 12.92 : Math.pow((t3 + 0.055) / 1.055, 2.4);
};
var t2 = function(t3) {
return 0.2126 * o2(t3.r) + 0.7152 * o2(t3.g) + 0.0722 * o2(t3.b);
};
function a11y_default(o3) {
o3.prototype.luminance = function() {
return o4 = t2(this.rgba), void 0 === (r2 = 2) && (r2 = 0), void 0 === n2 && (n2 = Math.pow(10, r2)), Math.round(n2 * o4) / n2 + 0;
var o4, r2, n2;
}, o3.prototype.contrast = function(r2) {
void 0 === r2 && (r2 = "#FFF");
var n2, a2, i2, e2, v2, u2, d2, c2 = r2 instanceof o3 ? r2 : new o3(r2);
return e2 = this.rgba, v2 = c2.toRgb(), u2 = t2(e2), d2 = t2(v2), n2 = u2 > d2 ? (u2 + 0.05) / (d2 + 0.05) : (d2 + 0.05) / (u2 + 0.05), void 0 === (a2 = 2) && (a2 = 0), void 0 === i2 && (i2 = Math.pow(10, a2)), Math.floor(i2 * n2) / i2 + 0;
}, o3.prototype.isReadable = function(o4, t3) {
return void 0 === o4 && (o4 = "#FFF"), void 0 === t3 && (t3 = {}), this.contrast(o4) >= (e2 = void 0 === (i2 = (r2 = t3).size) ? "normal" : i2, "AAA" === (a2 = void 0 === (n2 = r2.level) ? "AA" : n2) && "normal" === e2 ? 7 : "AA" === a2 && "large" === e2 ? 3 : 4.5);
var r2, n2, a2, i2, e2;
};
}
// packages/blocks/build-module/api/utils.js
var import_element = __toESM(require_element());
var import_i18n2 = __toESM(require_i18n());
var import_dom = __toESM(require_dom());
var import_rich_text = __toESM(require_rich_text());
var import_deprecated = __toESM(require_deprecated());
// packages/blocks/build-module/api/constants.js
var BLOCK_ICON_DEFAULT = "block-default";
var DEPRECATED_ENTRY_KEYS = [
"attributes",
"supports",
"save",
"migrate",
"isEligible",
"apiVersion"
];
var __EXPERIMENTAL_STYLE_PROPERTY = {
// Kept for back-compatibility purposes.
"--wp--style--color--link": {
value: ["color", "link"],
support: ["color", "link"]
},
aspectRatio: {
value: ["dimensions", "aspectRatio"],
support: ["dimensions", "aspectRatio"],
useEngine: true
},
background: {
value: ["color", "gradient"],
support: ["color", "gradients"],
useEngine: true
},
backgroundColor: {
value: ["color", "background"],
support: ["color", "background"],
requiresOptOut: true,
useEngine: true
},
backgroundImage: {
value: ["background", "backgroundImage"],
support: ["background", "backgroundImage"],
useEngine: true
},
backgroundRepeat: {
value: ["background", "backgroundRepeat"],
support: ["background", "backgroundRepeat"],
useEngine: true
},
backgroundSize: {
value: ["background", "backgroundSize"],
support: ["background", "backgroundSize"],
useEngine: true
},
backgroundPosition: {
value: ["background", "backgroundPosition"],
support: ["background", "backgroundPosition"],
useEngine: true
},
borderColor: {
value: ["border", "color"],
support: ["__experimentalBorder", "color"],
useEngine: true
},
borderRadius: {
value: ["border", "radius"],
support: ["__experimentalBorder", "radius"],
properties: {
borderTopLeftRadius: "topLeft",
borderTopRightRadius: "topRight",
borderBottomLeftRadius: "bottomLeft",
borderBottomRightRadius: "bottomRight"
},
useEngine: true
},
borderStyle: {
value: ["border", "style"],
support: ["__experimentalBorder", "style"],
useEngine: true
},
borderWidth: {
value: ["border", "width"],
support: ["__experimentalBorder", "width"],
useEngine: true
},
borderTopColor: {
value: ["border", "top", "color"],
support: ["__experimentalBorder", "color"],
useEngine: true
},
borderTopStyle: {
value: ["border", "top", "style"],
support: ["__experimentalBorder", "style"],
useEngine: true
},
borderTopWidth: {
value: ["border", "top", "width"],
support: ["__experimentalBorder", "width"],
useEngine: true
},
borderRightColor: {
value: ["border", "right", "color"],
support: ["__experimentalBorder", "color"],
useEngine: true
},
borderRightStyle: {
value: ["border", "right", "style"],
support: ["__experimentalBorder", "style"],
useEngine: true
},
borderRightWidth: {
value: ["border", "right", "width"],
support: ["__experimentalBorder", "width"],
useEngine: true
},
borderBottomColor: {
value: ["border", "bottom", "color"],
support: ["__experimentalBorder", "color"],
useEngine: true
},
borderBottomStyle: {
value: ["border", "bottom", "style"],
support: ["__experimentalBorder", "style"],
useEngine: true
},
borderBottomWidth: {
value: ["border", "bottom", "width"],
support: ["__experimentalBorder", "width"],
useEngine: true
},
borderLeftColor: {
value: ["border", "left", "color"],
support: ["__experimentalBorder", "color"],
useEngine: true
},
borderLeftStyle: {
value: ["border", "left", "style"],
support: ["__experimentalBorder", "style"],
useEngine: true
},
borderLeftWidth: {
value: ["border", "left", "width"],
support: ["__experimentalBorder", "width"],
useEngine: true
},
color: {
value: ["color", "text"],
support: ["color", "text"],
requiresOptOut: true,
useEngine: true
},
columnCount: {
value: ["typography", "textColumns"],
support: ["typography", "textColumns"],
useEngine: true
},
filter: {
value: ["filter", "duotone"],
support: ["filter", "duotone"]
},
linkColor: {
value: ["elements", "link", "color", "text"],
support: ["color", "link"]
},
captionColor: {
value: ["elements", "caption", "color", "text"],
support: ["color", "caption"]
},
buttonColor: {
value: ["elements", "button", "color", "text"],
support: ["color", "button"]
},
buttonBackgroundColor: {
value: ["elements", "button", "color", "background"],
support: ["color", "button"]
},
headingColor: {
value: ["elements", "heading", "color", "text"],
support: ["color", "heading"]
},
headingBackgroundColor: {
value: ["elements", "heading", "color", "background"],
support: ["color", "heading"]
},
fontFamily: {
value: ["typography", "fontFamily"],
support: ["typography", "__experimentalFontFamily"],
useEngine: true
},
fontSize: {
value: ["typography", "fontSize"],
support: ["typography", "fontSize"],
useEngine: true
},
fontStyle: {
value: ["typography", "fontStyle"],
support: ["typography", "__experimentalFontStyle"],
useEngine: true
},
fontWeight: {
value: ["typography", "fontWeight"],
support: ["typography", "__experimentalFontWeight"],
useEngine: true
},
lineHeight: {
value: ["typography", "lineHeight"],
support: ["typography", "lineHeight"],
useEngine: true
},
margin: {
value: ["spacing", "margin"],
support: ["spacing", "margin"],
properties: {
marginTop: "top",
marginRight: "right",
marginBottom: "bottom",
marginLeft: "left"
},
useEngine: true
},
minHeight: {
value: ["dimensions", "minHeight"],
support: ["dimensions", "minHeight"],
useEngine: true
},
height: {
value: ["dimensions", "height"],
support: ["dimensions", "height"],
useEngine: true
},
width: {
value: ["dimensions", "width"],
support: ["dimensions", "width"],
useEngine: true
},
padding: {
value: ["spacing", "padding"],
support: ["spacing", "padding"],
properties: {
paddingTop: "top",
paddingRight: "right",
paddingBottom: "bottom",
paddingLeft: "left"
},
useEngine: true
},
textAlign: {
value: ["typography", "textAlign"],
support: ["typography", "textAlign"],
useEngine: false
},
textDecoration: {
value: ["typography", "textDecoration"],
support: ["typography", "__experimentalTextDecoration"],
useEngine: true
},
textTransform: {
value: ["typography", "textTransform"],
support: ["typography", "__experimentalTextTransform"],
useEngine: true
},
letterSpacing: {
value: ["typography", "letterSpacing"],
support: ["typography", "__experimentalLetterSpacing"],
useEngine: true
},
writingMode: {
value: ["typography", "writingMode"],
support: ["typography", "__experimentalWritingMode"],
useEngine: true
},
"--wp--style--root--padding": {
value: ["spacing", "padding"],
support: ["spacing", "padding"],
properties: {
"--wp--style--root--padding-top": "top",
"--wp--style--root--padding-right": "right",
"--wp--style--root--padding-bottom": "bottom",
"--wp--style--root--padding-left": "left"
},
rootOnly: true
}
};
var __EXPERIMENTAL_ELEMENTS = {
link: "a:where(:not(.wp-element-button))",
heading: "h1, h2, h3, h4, h5, h6",
h1: "h1",
h2: "h2",
h3: "h3",
h4: "h4",
h5: "h5",
h6: "h6",
button: ".wp-element-button, .wp-block-button__link",
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",
cite: "cite",
select: "select",
textInput: "textarea, input:where([type=email],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=url])"
};
var __EXPERIMENTAL_PATHS_WITH_OVERRIDE = {
"color.duotone": true,
"color.gradients": true,
"color.palette": true,
"dimensions.aspectRatios": true,
"typography.fontSizes": true,
"spacing.spacingSizes": true
};
// packages/blocks/build-module/api/registration.js
var import_data = __toESM(require_data());
var import_i18n = __toESM(require_i18n());
var import_warning = __toESM(require_warning());
// packages/blocks/build-module/api/i18n-block.json
var i18n_block_default = {
title: "block title",
description: "block description",
keywords: ["block keyword"],
styles: [
{
label: "block style label"
}
],
variations: [
{
title: "block variation title",
description: "block variation description",
keywords: ["block variation keyword"]
}
]
};
// packages/blocks/build-module/lock-unlock.js
var import_private_apis = __toESM(require_private_apis());
var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
"I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
"@wordpress/blocks"
);
// packages/blocks/build-module/api/registration.js
function isObject(object) {
return object !== null && typeof object === "object";
}
function unstable__bootstrapServerSideBlockDefinitions(definitions) {
const { addBootstrappedBlockType: addBootstrappedBlockType2 } = unlock((0, import_data.dispatch)(store));
for (const [name, blockType] of Object.entries(definitions)) {
addBootstrappedBlockType2(name, blockType);
}
}
function getBlockSettingsFromMetadata({ textdomain, ...metadata }) {
const allowedFields = [
"apiVersion",
"title",
"category",
"parent",
"ancestor",
"icon",
"description",
"keywords",
"attributes",
"providesContext",
"usesContext",
"selectors",
"supports",
"styles",
"example",
"variations",
"blockHooks",
"allowedBlocks"
];
const settings = Object.fromEntries(
Object.entries(metadata).filter(
([key]) => allowedFields.includes(key)
)
);
if (textdomain) {
Object.keys(i18n_block_default).forEach((key) => {
if (!settings[key]) {
return;
}
settings[key] = translateBlockSettingUsingI18nSchema(
i18n_block_default[key],
settings[key],
textdomain
);
});
}
return settings;
}
function registerBlockType(blockNameOrMetadata, settings) {
const name = isObject(blockNameOrMetadata) ? blockNameOrMetadata.name : blockNameOrMetadata;
if (typeof name !== "string") {
(0, import_warning.default)("Block names must be strings.");
return;
}
if (!/^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*$/.test(name)) {
(0, import_warning.default)(
"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"
);
return;
}
if ((0, import_data.select)(store).getBlockType(name)) {
(0, import_warning.default)('Block "' + name + '" is already registered.');
return;
}
const { addBootstrappedBlockType: addBootstrappedBlockType2, addUnprocessedBlockType: addUnprocessedBlockType2 } = unlock(
(0, import_data.dispatch)(store)
);
if (isObject(blockNameOrMetadata)) {
const metadata = getBlockSettingsFromMetadata(blockNameOrMetadata);
addBootstrappedBlockType2(name, metadata);
}
addUnprocessedBlockType2(name, settings);
return (0, import_data.select)(store).getBlockType(name);
}
function translateBlockSettingUsingI18nSchema(i18nSchema, settingValue, textdomain) {
if (typeof i18nSchema === "string" && typeof settingValue === "string") {
return (0, import_i18n._x)(settingValue, i18nSchema, textdomain);
}
if (Array.isArray(i18nSchema) && i18nSchema.length && Array.isArray(settingValue)) {
return settingValue.map(
(value) => translateBlockSettingUsingI18nSchema(
i18nSchema[0],
value,
textdomain
)
);
}
if (isObject(i18nSchema) && Object.entries(i18nSchema).length && isObject(settingValue)) {
return Object.keys(settingValue).reduce((accumulator, key) => {
if (!i18nSchema[key]) {
accumulator[key] = settingValue[key];
return accumulator;
}
accumulator[key] = translateBlockSettingUsingI18nSchema(
i18nSchema[key],
settingValue[key],
textdomain
);
return accumulator;
}, {});
}
return settingValue;
}
function registerBlockCollection(namespace, { title, icon }) {
(0, import_data.dispatch)(store).addBlockCollection(namespace, title, icon);
}
function unregisterBlockType(name) {
const oldBlock = (0, import_data.select)(store).getBlockType(name);
if (!oldBlock) {
(0, import_warning.default)('Block "' + name + '" is not registered.');
return;
}
(0, import_data.dispatch)(store).removeBlockTypes(name);
return oldBlock;
}
function setFreeformContentHandlerName(blockName) {
(0, import_data.dispatch)(store).setFreeformFallbackBlockName(blockName);
}
function getFreeformContentHandlerName() {
return (0, import_data.select)(store).getFreeformFallbackBlockName();
}
function getGroupingBlockName() {
return (0, import_data.select)(store).getGroupingBlockName();
}
function setUnregisteredTypeHandlerName(blockName) {
(0, import_data.dispatch)(store).setUnregisteredFallbackBlockName(blockName);
}
function getUnregisteredTypeHandlerName() {
return (0, import_data.select)(store).getUnregisteredFallbackBlockName();
}
function setDefaultBlockName(name) {
(0, import_data.dispatch)(store).setDefaultBlockName(name);
}
function setGroupingBlockName(name) {
(0, import_data.dispatch)(store).setGroupingBlockName(name);
}
function getDefaultBlockName() {
return (0, import_data.select)(store).getDefaultBlockName();
}
function getBlockType(name) {
return (0, import_data.select)(store)?.getBlockType(name);
}
function getBlockTypes() {
return (0, import_data.select)(store).getBlockTypes();
}
function getBlockSupport(nameOrType, feature, defaultSupports) {
return (0, import_data.select)(store).getBlockSupport(
nameOrType,
feature,
defaultSupports
);
}
function hasBlockSupport(nameOrType, feature, defaultSupports) {
return (0, import_data.select)(store).hasBlockSupport(
nameOrType,
feature,
defaultSupports
);
}
function isReusableBlock(blockOrType) {
return blockOrType?.name === "core/block";
}
function isTemplatePart(blockOrType) {
return blockOrType?.name === "core/template-part";
}
var getChildBlockNames = (blockName) => {
return (0, import_data.select)(store).getChildBlockNames(blockName);
};
var hasChildBlocks = (blockName) => {
return (0, import_data.select)(store).hasChildBlocks(blockName);
};
var hasChildBlocksWithInserterSupport = (blockName) => {
return (0, import_data.select)(store).hasChildBlocksWithInserterSupport(blockName);
};
var registerBlockStyle = (blockNames, styleVariation) => {
(0, import_data.dispatch)(store).addBlockStyles(blockNames, styleVariation);
};
var unregisterBlockStyle = (blockName, styleVariationName) => {
(0, import_data.dispatch)(store).removeBlockStyles(blockName, styleVariationName);
};
var getBlockVariations = (blockName, scope) => {
return (0, import_data.select)(store).getBlockVariations(blockName, scope);
};
var registerBlockVariation = (blockName, variation) => {
if (typeof variation.name !== "string") {
(0, import_warning.default)("Variation names must be unique strings.");
}
(0, import_data.dispatch)(store).addBlockVariations(blockName, variation);
};
var unregisterBlockVariation = (blockName, variationName) => {
(0, import_data.dispatch)(store).removeBlockVariations(blockName, variationName);
};
var registerBlockBindingsSource = (source) => {
const {
name,
label,
usesContext,
getValues,
setValues,
canUserEditValue,
getFieldsList
} = source;
const existingSource = unlock(
(0, import_data.select)(store)
).getBlockBindingsSource(name);
const serverProps = ["label", "usesContext"];
for (const prop2 in existingSource) {
if (!serverProps.includes(prop2) && existingSource[prop2]) {
(0, import_warning.default)(
'Block bindings source "' + name + '" is already registered.'
);
return;
}
}
if (!name) {
(0, import_warning.default)("Block bindings source must contain a name.");
return;
}
if (typeof name !== "string") {
(0, import_warning.default)("Block bindings source name must be a string.");
return;
}
if (/[A-Z]+/.test(name)) {
(0, import_warning.default)(
"Block bindings source name must not contain uppercase characters."
);
return;
}
if (!/^[a-z0-9/-]+$/.test(name)) {
(0, import_warning.default)(
"Block bindings source name must contain only valid characters: lowercase characters, hyphens, or digits. Example: my-plugin/my-custom-source."
);
return;
}
if (!/^[a-z0-9-]+\/[a-z0-9-]+$/.test(name)) {
(0, import_warning.default)(
"Block bindings source name must contain a namespace and valid characters. Example: my-plugin/my-custom-source."
);
return;
}
if (!label && !existingSource?.label) {
(0, import_warning.default)("Block bindings source must contain a label.");
return;
}
if (label && typeof label !== "string") {
(0, import_warning.default)("Block bindings source label must be a string.");
return;
}
if (label && existingSource?.label && label !== existingSource?.label) {
(0, import_warning.default)('Block bindings "' + name + '" source label was overridden.');
}
if (usesContext && !Array.isArray(usesContext)) {
(0, import_warning.default)("Block bindings source usesContext must be an array.");
return;
}
if (getValues && typeof getValues !== "function") {
(0, import_warning.default)("Block bindings source getValues must be a function.");
return;
}
if (setValues && typeof setValues !== "function") {
(0, import_warning.default)("Block bindings source setValues must be a function.");
return;
}
if (canUserEditValue && typeof canUserEditValue !== "function") {
(0, import_warning.default)("Block bindings source canUserEditValue must be a function.");
return;
}
if (getFieldsList && typeof getFieldsList !== "function") {
(0, import_warning.default)("Block bindings source getFieldsList must be a function.");
return;
}
return unlock((0, import_data.dispatch)(store)).addBlockBindingsSource(source);
};
function unregisterBlockBindingsSource(name) {
const oldSource = getBlockBindingsSource(name);
if (!oldSource) {
(0, import_warning.default)('Block bindings source "' + name + '" is not registered.');
return;
}
unlock((0, import_data.dispatch)(store)).removeBlockBindingsSource(name);
}
function getBlockBindingsSource(name) {
return unlock((0, import_data.select)(store)).getBlockBindingsSource(name);
}
function getBlockBindingsSources() {
return unlock((0, import_data.select)(store)).getAllBlockBindingsSources();
}
// packages/blocks/build-module/api/utils.js
k([names_default, a11y_default]);
var ICON_COLORS = ["#191e23", "#f8f9f9"];
function isUnmodifiedBlock(block, role) {
const blockAttributes = getBlockType(block.name)?.attributes ?? {};
const attributesByRole = role ? Object.entries(blockAttributes).filter(([key, definition]) => {
if (role === "content" && key === "metadata") {
return Object.keys(block.attributes[key]?.bindings ?? {}).length > 0;
}
return definition.role === role || definition.__experimentalRole === role;
}) : [];
const attributesToCheck = !!attributesByRole.length ? attributesByRole : Object.entries(blockAttributes);
return attributesToCheck.every(([key, definition]) => {
const value = block.attributes[key];
if (definition.hasOwnProperty("default")) {
return value === definition.default;
}
if (definition.type === "rich-text") {
return !value?.length;
}
return value === void 0;
});
}
function isUnmodifiedDefaultBlock(block, role) {
return block.name === getDefaultBlockName() && isUnmodifiedBlock(block, role);
}
function isValidIcon(icon) {
return !!icon && (typeof icon === "string" || (0, import_element.isValidElement)(icon) || typeof icon === "function" || icon instanceof import_element.Component);
}
function normalizeIconObject(icon) {
icon = icon || BLOCK_ICON_DEFAULT;
if (isValidIcon(icon)) {
return { src: icon };
}
if ("background" in icon) {
const colordBgColor = w(icon.background);
const getColorContrast = (iconColor) => colordBgColor.contrast(iconColor);
const maxContrast = Math.max(...ICON_COLORS.map(getColorContrast));
return {
...icon,
foreground: icon.foreground ? icon.foreground : ICON_COLORS.find(
(iconColor) => getColorContrast(iconColor) === maxContrast
),
shadowColor: colordBgColor.alpha(0.3).toRgbString()
};
}
return icon;
}
function normalizeBlockType(blockTypeOrName) {
if (typeof blockTypeOrName === "string") {
return getBlockType(blockTypeOrName);
}
return blockTypeOrName;
}
function getBlockLabel(blockType, attributes, context = "visual") {
const { __experimentalLabel: getLabel, title } = blockType;
const label = getLabel && getLabel(attributes, { context });
if (!label) {
return title;
}
if (label.toPlainText) {
return label.toPlainText();
}
return (0, import_dom.__unstableStripHTML)(label);
}
function getAccessibleBlockLabel(blockType, attributes, position, direction = "vertical") {
const title = blockType?.title;
const label = blockType ? getBlockLabel(blockType, attributes, "accessibility") : "";
const hasPosition = position !== void 0;
const hasLabel = label && label !== title;
if (hasPosition && direction === "vertical") {
if (hasLabel) {
return (0, import_i18n2.sprintf)(
/* translators: accessibility text. 1: The block title. 2: The block row number. 3: The block label.. */
(0, import_i18n2.__)("%1$s Block. Row %2$d. %3$s"),
title,
position,
label
);
}
return (0, import_i18n2.sprintf)(
/* translators: accessibility text. 1: The block title. 2: The block row number. */
(0, import_i18n2.__)("%1$s Block. Row %2$d"),
title,
position
);
} else if (hasPosition && direction === "horizontal") {
if (hasLabel) {
return (0, import_i18n2.sprintf)(
/* translators: accessibility text. 1: The block title. 2: The block column number. 3: The block label.. */
(0, import_i18n2.__)("%1$s Block. Column %2$d. %3$s"),
title,
position,
label
);
}
return (0, import_i18n2.sprintf)(
/* translators: accessibility text. 1: The block title. 2: The block column number. */
(0, import_i18n2.__)("%1$s Block. Column %2$d"),
title,
position
);
}
if (hasLabel) {
return (0, import_i18n2.sprintf)(
/* translators: accessibility text. 1: The block title. 2: The block label. */
(0, import_i18n2.__)("%1$s Block. %2$s"),
title,
label
);
}
return (0, import_i18n2.sprintf)(
/* translators: accessibility text. %s: The block title. */
(0, import_i18n2.__)("%s Block"),
title
);
}
function getDefault(attributeSchema) {
if (attributeSchema.default !== void 0) {
return attributeSchema.default;
}
if (attributeSchema.type === "rich-text") {
return new import_rich_text.RichTextData();
}
}
function isBlockRegistered(name) {
return getBlockType(name) !== void 0;
}
function __experimentalSanitizeBlockAttributes(name, attributes) {
const blockType = getBlockType(name);
if (void 0 === blockType) {
throw new Error(`Block type '${name}' is not registered.`);
}
return Object.entries(blockType.attributes).reduce(
(accumulator, [key, schema]) => {
const value = attributes[key];
if (void 0 !== value) {
if (schema.type === "rich-text") {
if (value instanceof import_rich_text.RichTextData) {
accumulator[key] = value;
} else if (typeof value === "string") {
accumulator[key] = import_rich_text.RichTextData.fromHTMLString(value);
}
} else if (schema.type === "string" && value instanceof import_rich_text.RichTextData) {
accumulator[key] = value.toHTMLString();
} else {
accumulator[key] = value;
}
} else {
const _default = getDefault(schema);
if (void 0 !== _default) {
accumulator[key] = _default;
}
}
if (["node", "children"].indexOf(schema.source) !== -1) {
if (typeof accumulator[key] === "string") {
accumulator[key] = [accumulator[key]];
} else if (!Array.isArray(accumulator[key])) {
accumulator[key] = [];
}
}
return accumulator;
},
{}
);
}
function getBlockAttributesNamesByRole(name, role) {
const attributes = getBlockType(name)?.attributes;
if (!attributes) {
return [];
}
const attributesNames = Object.keys(attributes);
if (!role) {
return attributesNames;
}
return attributesNames.filter((attributeName) => {
const attribute = attributes[attributeName];
if (attribute?.role === role) {
return true;
}
if (attribute?.__experimentalRole === role) {
(0, import_deprecated.default)("__experimentalRole attribute", {
since: "6.7",
version: "6.8",
alternative: "role attribute",
hint: `Check the block.json of the ${name} block.`
});
return true;
}
return false;
});
}
var __experimentalGetBlockAttributesNamesByRole = (...args) => {
(0, import_deprecated.default)("__experimentalGetBlockAttributesNamesByRole", {
since: "6.7",
version: "6.8",
alternative: "getBlockAttributesNamesByRole"
});
return getBlockAttributesNamesByRole(...args);
};
function isContentBlock(name) {
const blockType = getBlockType(name);
const attributes = blockType?.attributes;
const supportsContentRole = blockType?.supports?.contentRole;
if (supportsContentRole) {
return true;
}
if (!attributes) {
return false;
}
return !!Object.keys(attributes)?.some((attributeKey) => {
const attribute = attributes[attributeKey];
return attribute?.role === "content" || attribute?.__experimentalRole === "content";
});
}
function omit(object, keys) {
return Object.fromEntries(
Object.entries(object).filter(([key]) => !keys.includes(key))
);
}
// packages/blocks/build-module/store/reducer.js
var DEFAULT_CATEGORIES = [
{ slug: "text", title: (0, import_i18n3.__)("Text") },
{ slug: "media", title: (0, import_i18n3.__)("Media") },
{ slug: "design", title: (0, import_i18n3.__)("Design") },
{ slug: "widgets", title: (0, import_i18n3.__)("Widgets") },
{ slug: "theme", title: (0, import_i18n3.__)("Theme") },
{ slug: "embed", title: (0, import_i18n3.__)("Embeds") },
{ slug: "reusable", title: (0, import_i18n3.__)("Reusable blocks") }
];
function keyBlockTypesByName(types) {
return types.reduce(
(newBlockTypes, block) => ({
...newBlockTypes,
[block.name]: block
}),
{}
);
}
function getUniqueItemsByName(items) {
return items.reduce((acc, currentItem) => {
if (!acc.some((item) => item.name === currentItem.name)) {
acc.push(currentItem);
}
return acc;
}, []);
}
function bootstrappedBlockTypes(state = {}, action) {
switch (action.type) {
case "ADD_BOOTSTRAPPED_BLOCK_TYPE":
const { name, blockType } = action;
const serverDefinition = state[name];
if (serverDefinition) {
return state;
}
const newDefinition = Object.fromEntries(
Object.entries(blockType).filter(
([, value]) => value !== null && value !== void 0
).map(([key, value]) => [camelCase(key), value])
);
newDefinition.name = name;
return {
...state,
[name]: newDefinition
};
case "REMOVE_BLOCK_TYPES":
return omit(state, action.names);
}
return state;
}
function unprocessedBlockTypes(state = {}, action) {
switch (action.type) {
case "ADD_UNPROCESSED_BLOCK_TYPE":
return {
...state,
[action.name]: action.blockType
};
case "REMOVE_BLOCK_TYPES":
return omit(state, action.names);
}
return state;
}
function blockTypes(state = {}, action) {
switch (action.type) {
case "ADD_BLOCK_TYPES":
return {
...state,
...keyBlockTypesByName(action.blockTypes)
};
case "REMOVE_BLOCK_TYPES":
return omit(state, action.names);
}
return state;
}
function blockStyles(state = {}, action) {
switch (action.type) {
case "ADD_BLOCK_TYPES":
return {
...state,
...Object.fromEntries(
Object.entries(
keyBlockTypesByName(action.blockTypes)
).map(([name, blockType]) => [
name,
getUniqueItemsByName([
...(blockType.styles ?? []).map((style) => ({
...style,
source: "block"
})),
...(state[blockType.name] ?? []).filter(
({ source }) => "block" !== source
)
])
])
)
};
case "ADD_BLOCK_STYLES":
const updatedStyles = {};
action.blockNames.forEach((blockName) => {
updatedStyles[blockName] = getUniqueItemsByName([
...state[blockName] ?? [],
...action.styles
]);
});
return { ...state, ...updatedStyles };
case "REMOVE_BLOCK_STYLES":
return {
...state,
[action.blockName]: (state[action.blockName] ?? []).filter(
(style) => action.styleNames.indexOf(style.name) === -1
)
};
}
return state;
}
function blockVariations(state = {}, action) {
switch (action.type) {
case "ADD_BLOCK_TYPES":
return {
...state,
...Object.fromEntries(
Object.entries(
keyBlockTypesByName(action.blockTypes)
).map(([name, blockType]) => {
return [
name,
getUniqueItemsByName([
...(blockType.variations ?? []).map(
(variation) => ({
...variation,
source: "block"
})
),
...(state[blockType.name] ?? []).filter(
({ source }) => "block" !== source
)
])
];
})
)
};
case "ADD_BLOCK_VARIATIONS":
return {
...state,
[action.blockName]: getUniqueItemsByName([
...state[action.blockName] ?? [],
...action.variations
])
};
case "REMOVE_BLOCK_VARIATIONS":
return {
...state,
[action.blockName]: (state[action.blockName] ?? []).filter(
(variation) => action.variationNames.indexOf(variation.name) === -1
)
};
}
return state;
}
function createBlockNameSetterReducer(setActionType) {
return (state = null, action) => {
switch (action.type) {
case "REMOVE_BLOCK_TYPES":
if (action.names.indexOf(state) !== -1) {
return null;
}
return state;
case setActionType:
return action.name || null;
}
return state;
};
}
var defaultBlockName = createBlockNameSetterReducer(
"SET_DEFAULT_BLOCK_NAME"
);
var freeformFallbackBlockName = createBlockNameSetterReducer(
"SET_FREEFORM_FALLBACK_BLOCK_NAME"
);
var unregisteredFallbackBlockName = createBlockNameSetterReducer(
"SET_UNREGISTERED_FALLBACK_BLOCK_NAME"
);
var groupingBlockName = createBlockNameSetterReducer(
"SET_GROUPING_BLOCK_NAME"
);
function categories(state = DEFAULT_CATEGORIES, action) {
switch (action.type) {
case "SET_CATEGORIES":
const uniqueCategories = /* @__PURE__ */ new Map();
(action.categories || []).forEach((category) => {
uniqueCategories.set(category.slug, category);
});
return [...uniqueCategories.values()];
case "UPDATE_CATEGORY": {
if (!action.category || !Object.keys(action.category).length) {
return state;
}
const categoryToChange = state.find(
({ slug }) => slug === action.slug
);
if (categoryToChange) {
return state.map((category) => {
if (category.slug === action.slug) {
return {
...category,
...action.category
};
}
return category;
});
}
}
}
return state;
}
function collections(state = {}, action) {
switch (action.type) {
case "ADD_BLOCK_COLLECTION":
return {
...state,
[action.namespace]: {
title: action.title,
icon: action.icon
}
};
case "REMOVE_BLOCK_COLLECTION":
return omit(state, action.namespace);
}
return state;
}
function getMergedUsesContext(existingUsesContext = [], newUsesContext = []) {
const mergedArrays = Array.from(
new Set(existingUsesContext.concat(newUsesContext))
);
return mergedArrays.length > 0 ? mergedArrays : void 0;
}
function blockBindingsSources(state = {}, action) {
switch (action.type) {
case "ADD_BLOCK_BINDINGS_SOURCE":
return {
...state,
[action.name]: {
label: action.label || state[action.name]?.label,
usesContext: getMergedUsesContext(
state[action.name]?.usesContext,
action.usesContext
),
getValues: action.getValues,
setValues: action.setValues,
// Only set `canUserEditValue` if `setValues` is also defined.
canUserEditValue: action.setValues && action.canUserEditValue,
getFieldsList: action.getFieldsList
}
};
case "REMOVE_BLOCK_BINDINGS_SOURCE":
return omit(state, action.name);
}
return state;
}
var reducer_default = (0, import_data2.combineReducers)({
bootstrappedBlockTypes,
unprocessedBlockTypes,
blockTypes,
blockStyles,
blockVariations,
defaultBlockName,
freeformFallbackBlockName,
unregisteredFallbackBlockName,
groupingBlockName,
categories,
collections,
blockBindingsSources
});
// packages/blocks/build-module/store/selectors.js
var selectors_exports = {};
__export(selectors_exports, {
__experimentalHasContentRoleAttribute: () => __experimentalHasContentRoleAttribute,
getActiveBlockVariation: () => getActiveBlockVariation,
getBlockStyles: () => getBlockStyles,
getBlockSupport: () => getBlockSupport2,
getBlockType: () => getBlockType2,
getBlockTypes: () => getBlockTypes2,
getBlockVariations: () => getBlockVariations2,
getCategories: () => getCategories,
getChildBlockNames: () => getChildBlockNames2,
getCollections: () => getCollections,
getDefaultBlockName: () => getDefaultBlockName2,
getDefaultBlockVariation: () => getDefaultBlockVariation,
getFreeformFallbackBlockName: () => getFreeformFallbackBlockName,
getGroupingBlockName: () => getGroupingBlockName2,
getUnregisteredFallbackBlockName: () => getUnregisteredFallbackBlockName,
hasBlockSupport: () => hasBlockSupport2,
hasChildBlocks: () => hasChildBlocks2,
hasChildBlocksWithInserterSupport: () => hasChildBlocksWithInserterSupport2,
isMatchingSearchTerm: () => isMatchingSearchTerm
});
var import_remove_accents = __toESM(require_remove_accents());
var import_data4 = __toESM(require_data());
var import_rich_text2 = __toESM(require_rich_text());
var import_deprecated3 = __toESM(require_deprecated());
// packages/blocks/build-module/store/utils.js
var getValueFromObjectPath = (object, path, defaultValue) => {
const normalizedPath = Array.isArray(path) ? path : path.split(".");
let value = object;
normalizedPath.forEach((fieldName) => {
value = value?.[fieldName];
});
return value ?? defaultValue;
};
function isObject2(candidate) {
return typeof candidate === "object" && candidate.constructor === Object && candidate !== null;
}
function matchesAttributes(blockAttributes, variationAttributes) {
if (isObject2(blockAttributes) && isObject2(variationAttributes)) {
return Object.entries(variationAttributes).every(
([key, value]) => matchesAttributes(blockAttributes?.[key], value)
);
}
return blockAttributes === variationAttributes;
}
// packages/blocks/build-module/store/private-selectors.js
var private_selectors_exports = {};
__export(private_selectors_exports, {
getAllBlockBindingsSources: () => getAllBlockBindingsSources,
getBlockBindingsSource: () => getBlockBindingsSource2,
getBlockBindingsSourceFieldsList: () => getBlockBindingsSourceFieldsList,
getBootstrappedBlockType: () => getBootstrappedBlockType,
getSupportedStyles: () => getSupportedStyles,
getUnprocessedBlockTypes: () => getUnprocessedBlockTypes,
hasContentRoleAttribute: () => hasContentRoleAttribute
});
var import_data3 = __toESM(require_data());
var import_deprecated2 = __toESM(require_deprecated());
var ROOT_BLOCK_SUPPORTS = [
"background",
"backgroundColor",
"color",
"linkColor",
"captionColor",
"buttonColor",
"headingColor",
"fontFamily",
"fontSize",
"fontStyle",
"fontWeight",
"lineHeight",
"padding",
"contentSize",
"wideSize",
"blockGap",
"textAlign",
"textDecoration",
"textTransform",
"letterSpacing"
];
function filterElementBlockSupports(blockSupports, name, element) {
return blockSupports.filter((support) => {
if (support === "fontSize" && element === "heading") {
return false;
}
if (support === "textDecoration" && !name && element !== "link") {
return false;
}
if (support === "textTransform" && !name && !(["heading", "h1", "h2", "h3", "h4", "h5", "h6"].includes(
element
) || element === "button" || element === "caption" || element === "text")) {
return false;
}
if (support === "letterSpacing" && !name && !(["heading", "h1", "h2", "h3", "h4", "h5", "h6"].includes(
element
) || element === "button" || element === "caption" || element === "text")) {
return false;
}
if (support === "textColumns" && !name) {
return false;
}
return true;
});
}
var getSupportedStyles = (0, import_data3.createSelector)(
(state, name, element) => {
if (!name) {
return filterElementBlockSupports(
ROOT_BLOCK_SUPPORTS,
name,
element
);
}
const blockType = getBlockType2(state, name);
if (!blockType) {
return [];
}
const supportKeys = [];
if (blockType?.supports?.spacing?.blockGap) {
supportKeys.push("blockGap");
}
if (blockType?.supports?.shadow) {
supportKeys.push("shadow");
}
Object.keys(__EXPERIMENTAL_STYLE_PROPERTY).forEach((styleName) => {
if (!__EXPERIMENTAL_STYLE_PROPERTY[styleName].support) {
return;
}
if (__EXPERIMENTAL_STYLE_PROPERTY[styleName].requiresOptOut) {
if (__EXPERIMENTAL_STYLE_PROPERTY[styleName].support[0] in blockType.supports && getValueFromObjectPath(
blockType.supports,
__EXPERIMENTAL_STYLE_PROPERTY[styleName].support
) !== false) {
supportKeys.push(styleName);
return;
}
}
if (getValueFromObjectPath(
blockType.supports,
__EXPERIMENTAL_STYLE_PROPERTY[styleName].support,
false
)) {
supportKeys.push(styleName);
}
});
return filterElementBlockSupports(supportKeys, name, element);
},
(state, name) => [state.blockTypes[name]]
);
function getBootstrappedBlockType(state, name) {
return state.bootstrappedBlockTypes[name];
}
function getUnprocessedBlockTypes(state) {
return state.unprocessedBlockTypes;
}
function getAllBlockBindingsSources(state) {
return state.blockBindingsSources;
}
function getBlockBindingsSource2(state, sourceName) {
return state.blockBindingsSources[sourceName];
}
var getBlockBindingsSourceFieldsList = (0, import_data3.createRegistrySelector)(
(select3) => (0, import_data3.createSelector)(
(state, source, blockContext) => {
if (!source.getFieldsList) {
return [];
}
const context = {};
if (source?.usesContext?.length) {
for (const key of source.usesContext) {
context[key] = blockContext[key];
}
}
return source.getFieldsList({ select: select3, context });
},
(state, source, blockContext) => [
source.getFieldsList,
source.usesContext,
blockContext
]
)
);
var hasContentRoleAttribute = (state, blockTypeName) => {
const blockType = getBlockType2(state, blockTypeName);
if (!blockType) {
return false;
}
return Object.values(blockType.attributes).some(
({ role, __experimentalRole }) => {
if (role === "content") {
return true;
}
if (__experimentalRole === "content") {
(0, import_deprecated2.default)("__experimentalRole attribute", {
since: "6.7",
version: "6.8",
alternative: "role attribute",
hint: `Check the block.json of the ${blockTypeName} block.`
});
return true;
}
return false;
}
);
};
// packages/blocks/build-module/store/selectors.js
var getNormalizedBlockType = (state, nameOrType) => "string" === typeof nameOrType ? getBlockType2(state, nameOrType) : nameOrType;
var getBlockTypes2 = (0, import_data4.createSelector)(
(state) => Object.values(state.blockTypes),
(state) => [state.blockTypes]
);
function getBlockType2(state, name) {
return state.blockTypes[name];
}
function getBlockStyles(state, name) {
return state.blockStyles[name];
}
var getBlockVariations2 = (0, import_data4.createSelector)(
(state, blockName, scope) => {
const variations = state.blockVariations[blockName];
if (!variations || !scope) {
return variations;
}
return variations.filter((variation) => {
return (variation.scope || ["block", "inserter"]).includes(
scope
);
});
},
(state, blockName) => [state.blockVariations[blockName]]
);
function getActiveBlockVariation(state, blockName, attributes, scope) {
const variations = getBlockVariations2(state, blockName, scope);
if (!variations) {
return variations;
}
const blockType = getBlockType2(state, blockName);
const attributeKeys = Object.keys(blockType?.attributes || {});
let match;
let maxMatchedAttributes = 0;
for (const variation of variations) {
if (Array.isArray(variation.isActive)) {
const definedAttributes = variation.isActive.filter(
(attribute) => {
const topLevelAttribute = attribute.split(".")[0];
return attributeKeys.includes(topLevelAttribute);
}
);
const definedAttributesLength = definedAttributes.length;
if (definedAttributesLength === 0) {
continue;
}
const isMatch = definedAttributes.every((attribute) => {
const variationAttributeValue = getValueFromObjectPath(
variation.attributes,
attribute
);
if (variationAttributeValue === void 0) {
return false;
}
let blockAttributeValue = getValueFromObjectPath(
attributes,
attribute
);
if (blockAttributeValue instanceof import_rich_text2.RichTextData) {
blockAttributeValue = blockAttributeValue.toHTMLString();
}
return matchesAttributes(
blockAttributeValue,
variationAttributeValue
);
});
if (isMatch && definedAttributesLength > maxMatchedAttributes) {
match = variation;
maxMatchedAttributes = definedAttributesLength;
}
} else if (variation.isActive?.(attributes, variation.attributes)) {
return match || variation;
}
}
if (!match && ["block", "transform"].includes(scope)) {
match = variations.find(
(variation) => variation?.isDefault && !Object.hasOwn(variation, "isActive")
);
}
return match;
}
function getDefaultBlockVariation(state, blockName, scope) {
const variations = getBlockVariations2(state, blockName, scope);
const defaultVariation = [...variations].reverse().find(({ isDefault }) => !!isDefault);
return defaultVariation || variations[0];
}
function getCategories(state) {
return state.categories;
}
function getCollections(state) {
return state.collections;
}
function getDefaultBlockName2(state) {
return state.defaultBlockName;
}
function getFreeformFallbackBlockName(state) {
return state.freeformFallbackBlockName;
}
function getUnregisteredFallbackBlockName(state) {
return state.unregisteredFallbackBlockName;
}
function getGroupingBlockName2(state) {
return state.groupingBlockName;
}
var getChildBlockNames2 = (0, import_data4.createSelector)(
(state, blockName) => {
return getBlockTypes2(state).filter((blockType) => {
return blockType.parent?.includes(blockName);
}).map(({ name }) => name);
},
(state) => [state.blockTypes]
);
var getBlockSupport2 = (state, nameOrType, feature, defaultSupports) => {
const blockType = getNormalizedBlockType(state, nameOrType);
if (!blockType?.supports) {
return defaultSupports;
}
return getValueFromObjectPath(
blockType.supports,
feature,
defaultSupports
);
};
function hasBlockSupport2(state, nameOrType, feature, defaultSupports) {
return !!getBlockSupport2(state, nameOrType, feature, defaultSupports);
}
function getNormalizedSearchTerm(term) {
return (0, import_remove_accents.default)(term ?? "").toLowerCase().trim();
}
function isMatchingSearchTerm(state, nameOrType, searchTerm = "") {
const blockType = getNormalizedBlockType(state, nameOrType);
const normalizedSearchTerm = getNormalizedSearchTerm(searchTerm);
const isSearchMatch = (candidate) => getNormalizedSearchTerm(candidate).includes(normalizedSearchTerm);
return isSearchMatch(blockType.title) || blockType.keywords?.some(isSearchMatch) || isSearchMatch(blockType.category) || typeof blockType.description === "string" && isSearchMatch(blockType.description);
}
var hasChildBlocks2 = (state, blockName) => {
return getChildBlockNames2(state, blockName).length > 0;
};
var hasChildBlocksWithInserterSupport2 = (state, blockName) => {
return getChildBlockNames2(state, blockName).some((childBlockName) => {
return hasBlockSupport2(state, childBlockName, "inserter", true);
});
};
var __experimentalHasContentRoleAttribute = (...args) => {
(0, import_deprecated3.default)("__experimentalHasContentRoleAttribute", {
since: "6.7",
version: "6.8",
hint: "This is a private selector."
});
return hasContentRoleAttribute(...args);
};
// packages/blocks/build-module/store/actions.js
var actions_exports = {};
__export(actions_exports, {
__experimentalReapplyBlockFilters: () => __experimentalReapplyBlockFilters,
addBlockCollection: () => addBlockCollection,
addBlockStyles: () => addBlockStyles,
addBlockTypes: () => addBlockTypes,
addBlockVariations: () => addBlockVariations,
reapplyBlockTypeFilters: () => reapplyBlockTypeFilters,
removeBlockCollection: () => removeBlockCollection,
removeBlockStyles: () => removeBlockStyles,
removeBlockTypes: () => removeBlockTypes,
removeBlockVariations: () => removeBlockVariations,
setCategories: () => setCategories,
setDefaultBlockName: () => setDefaultBlockName2,
setFreeformFallbackBlockName: () => setFreeformFallbackBlockName,
setGroupingBlockName: () => setGroupingBlockName2,
setUnregisteredFallbackBlockName: () => setUnregisteredFallbackBlockName,
updateCategory: () => updateCategory
});
var import_deprecated5 = __toESM(require_deprecated());
// node_modules/is-plain-object/dist/is-plain-object.mjs
function isObject3(o3) {
return Object.prototype.toString.call(o3) === "[object Object]";
}
function isPlainObject(o3) {
var ctor, prot;
if (isObject3(o3) === false) return false;
ctor = o3.constructor;
if (ctor === void 0) return true;
prot = ctor.prototype;
if (isObject3(prot) === false) return false;
if (prot.hasOwnProperty("isPrototypeOf") === false) {
return false;
}
return true;
}
// packages/blocks/build-module/store/process-block-type.js
var import_react_is = __toESM(require_react_is());
var import_deprecated4 = __toESM(require_deprecated());
var import_hooks = __toESM(require_hooks());
var import_warning2 = __toESM(require_warning());
var LEGACY_CATEGORY_MAPPING = {
common: "text",
formatting: "text",
layout: "design"
};
function mergeBlockVariations(bootstrappedVariations = [], clientVariations = []) {
const result = [...bootstrappedVariations];
clientVariations.forEach((clientVariation) => {
const index = result.findIndex(
(bootstrappedVariation) => bootstrappedVariation.name === clientVariation.name
);
if (index !== -1) {
result[index] = { ...result[index], ...clientVariation };
} else {
result.push(clientVariation);
}
});
return result;
}
var processBlockType = (name, blockSettings) => ({ select: select3 }) => {
const bootstrappedBlockType = select3.getBootstrappedBlockType(name);
const blockType = {
apiVersion: 1,
name,
icon: BLOCK_ICON_DEFAULT,
keywords: [],
attributes: {},
providesContext: {},
usesContext: [],
selectors: {},
supports: {},
styles: [],
blockHooks: {},
save: () => null,
...bootstrappedBlockType,
...blockSettings,
// blockType.variations can be defined as a filePath.
variations: mergeBlockVariations(
Array.isArray(bootstrappedBlockType?.variations) ? bootstrappedBlockType.variations : [],
Array.isArray(blockSettings?.variations) ? blockSettings.variations : []
)
};
if (!blockType.attributes || typeof blockType.attributes !== "object") {
(0, import_warning2.default)(
'The block "' + name + '" is registering attributes as `null` or `undefined`. Use an empty object (`attributes: {}`) or exclude the `attributes` key.'
);
blockType.attributes = {};
}
const settings = (0, import_hooks.applyFilters)(
"blocks.registerBlockType",
blockType,
name,
null
);
if (settings.apiVersion <= 2) {
(0, import_warning2.default)(
`The block "${name}" is registered with API version 2 or lower. 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.
See: https://developer.wordpress.org/block-editor/reference-guides/block-api/block-api-versions/#version-3-wordpress-6-3`
);
}
if (settings.description && typeof settings.description !== "string") {
(0, import_deprecated4.default)("Declaring non-string block descriptions", {
since: "6.2"
});
}
if (settings.deprecated) {
settings.deprecated = settings.deprecated.map(
(deprecation) => Object.fromEntries(
Object.entries(
// Only keep valid deprecation keys.
(0, import_hooks.applyFilters)(
"blocks.registerBlockType",
// Merge deprecation keys with pre-filter settings
// so that filters that depend on specific keys being
// present don't fail.
{
// Omit deprecation keys here so that deprecations
// can opt out of specific keys like "supports".
...omit(blockType, DEPRECATED_ENTRY_KEYS),
...deprecation
},
blockType.name,
deprecation
)
).filter(
([key]) => DEPRECATED_ENTRY_KEYS.includes(key)
)
)
);
}
if (!isPlainObject(settings)) {
(0, import_warning2.default)("Block settings must be a valid object.");
return;
}
if (typeof settings.save !== "function") {
(0, import_warning2.default)('The "save" property must be a valid function.');
return;
}
if ("edit" in settings && !(0, import_react_is.isValidElementType)(settings.edit)) {
(0, import_warning2.default)('The "edit" property must be a valid component.');
return;
}
if (LEGACY_CATEGORY_MAPPING.hasOwnProperty(settings.category)) {
settings.category = LEGACY_CATEGORY_MAPPING[settings.category];
}
if ("category" in settings && !select3.getCategories().some(({ slug }) => slug === settings.category)) {
(0, import_warning2.default)(
'The block "' + name + '" is registered with an invalid category "' + settings.category + '".'
);
delete settings.category;
}
if (!("title" in settings) || settings.title === "") {
(0, import_warning2.default)('The block "' + name + '" must have a title.');
return;
}
if (typeof settings.title !== "string") {
(0, import_warning2.default)("Block titles must be strings.");
return;
}
settings.icon = normalizeIconObject(settings.icon);
if (!isValidIcon(settings.icon.src)) {
(0, import_warning2.default)(
"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"
);
return;
}
if (typeof settings?.parent === "string" || settings?.parent instanceof String) {
settings.parent = [settings.parent];
(0, import_warning2.default)(
"Parent must be undefined or an array of strings (block types), but it is a string."
);
}
if (!Array.isArray(settings?.parent) && settings?.parent !== void 0) {
(0, import_warning2.default)(
"Parent must be undefined or an array of block types, but it is ",
settings.parent
);
return;
}
if (1 === settings?.parent?.length && name === settings.parent[0]) {
(0, import_warning2.default)(
'Block "' + name + '" cannot be a parent of itself. Please remove the block name from the parent list.'
);
return;
}
return settings;
};
// packages/blocks/build-module/store/actions.js
function addBlockTypes(blockTypes2) {
return {
type: "ADD_BLOCK_TYPES",
blockTypes: Array.isArray(blockTypes2) ? blockTypes2 : [blockTypes2]
};
}
function reapplyBlockTypeFilters() {
return ({ dispatch: dispatch3, select: select3 }) => {
const processedBlockTypes = [];
for (const [name, settings] of Object.entries(
select3.getUnprocessedBlockTypes()
)) {
const result = dispatch3(processBlockType(name, settings));
if (result) {
processedBlockTypes.push(result);
}
}
if (!processedBlockTypes.length) {
return;
}
dispatch3.addBlockTypes(processedBlockTypes);
};
}
function __experimentalReapplyBlockFilters() {
(0, import_deprecated5.default)(
'wp.data.dispatch( "core/blocks" ).__experimentalReapplyBlockFilters',
{
since: "6.4",
alternative: "reapplyBlockFilters"
}
);
return reapplyBlockTypeFilters();
}
function removeBlockTypes(names) {
return {
type: "REMOVE_BLOCK_TYPES",
names: Array.isArray(names) ? names : [names]
};
}
function addBlockStyles(blockNames, styles) {
return {
type: "ADD_BLOCK_STYLES",
styles: Array.isArray(styles) ? styles : [styles],
blockNames: Array.isArray(blockNames) ? blockNames : [blockNames]
};
}
function removeBlockStyles(blockName, styleNames) {
return {
type: "REMOVE_BLOCK_STYLES",
styleNames: Array.isArray(styleNames) ? styleNames : [styleNames],
blockName
};
}
function addBlockVariations(blockName, variations) {
return {
type: "ADD_BLOCK_VARIATIONS",
variations: Array.isArray(variations) ? variations : [variations],
blockName
};
}
function removeBlockVariations(blockName, variationNames) {
return {
type: "REMOVE_BLOCK_VARIATIONS",
variationNames: Array.isArray(variationNames) ? variationNames : [variationNames],
blockName
};
}
function setDefaultBlockName2(name) {
return {
type: "SET_DEFAULT_BLOCK_NAME",
name
};
}
function setFreeformFallbackBlockName(name) {
return {
type: "SET_FREEFORM_FALLBACK_BLOCK_NAME",
name
};
}
function setUnregisteredFallbackBlockName(name) {
return {
type: "SET_UNREGISTERED_FALLBACK_BLOCK_NAME",
name
};
}
function setGroupingBlockName2(name) {
return {
type: "SET_GROUPING_BLOCK_NAME",
name
};
}
function setCategories(categories2) {
return {
type: "SET_CATEGORIES",
categories: categories2
};
}
function updateCategory(slug, category) {
return {
type: "UPDATE_CATEGORY",
slug,
category
};
}
function addBlockCollection(namespace, title, icon) {
return {
type: "ADD_BLOCK_COLLECTION",
namespace,
title,
icon
};
}
function removeBlockCollection(namespace) {
return {
type: "REMOVE_BLOCK_COLLECTION",
namespace
};
}
// packages/blocks/build-module/store/private-actions.js
var private_actions_exports = {};
__export(private_actions_exports, {
addBlockBindingsSource: () => addBlockBindingsSource,
addBootstrappedBlockType: () => addBootstrappedBlockType,
addUnprocessedBlockType: () => addUnprocessedBlockType,
removeBlockBindingsSource: () => removeBlockBindingsSource
});
function addBootstrappedBlockType(name, blockType) {
return {
type: "ADD_BOOTSTRAPPED_BLOCK_TYPE",
name,
blockType
};
}
function addUnprocessedBlockType(name, blockType) {
return ({ dispatch: dispatch3 }) => {
dispatch3({ type: "ADD_UNPROCESSED_BLOCK_TYPE", name, blockType });
const processedBlockType = dispatch3(
processBlockType(name, blockType)
);
if (!processedBlockType) {
return;
}
dispatch3.addBlockTypes(processedBlockType);
};
}
function addBlockBindingsSource(source) {
return {
type: "ADD_BLOCK_BINDINGS_SOURCE",
name: source.name,
label: source.label,
usesContext: source.usesContext,
getValues: source.getValues,
setValues: source.setValues,
canUserEditValue: source.canUserEditValue,
getFieldsList: source.getFieldsList
};
}
function removeBlockBindingsSource(name) {
return {
type: "REMOVE_BLOCK_BINDINGS_SOURCE",
name
};
}
// packages/blocks/build-module/store/constants.js
var STORE_NAME = "core/blocks";
// packages/blocks/build-module/store/index.js
var store = (0, import_data5.createReduxStore)(STORE_NAME, {
reducer: reducer_default,
selectors: selectors_exports,
actions: actions_exports
});
(0, import_data5.register)(store);
unlock(store).registerPrivateSelectors(private_selectors_exports);
unlock(store).registerPrivateActions(private_actions_exports);
// node_modules/uuid/dist/esm-browser/rng.js
var getRandomValues;
var rnds8 = new Uint8Array(16);
function rng() {
if (!getRandomValues) {
getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
if (!getRandomValues) {
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
}
}
return getRandomValues(rnds8);
}
// node_modules/uuid/dist/esm-browser/stringify.js
var byteToHex = [];
for (let i2 = 0; i2 < 256; ++i2) {
byteToHex.push((i2 + 256).toString(16).slice(1));
}
function unsafeStringify(arr, offset = 0) {
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]];
}
// node_modules/uuid/dist/esm-browser/native.js
var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
var native_default = {
randomUUID
};
// node_modules/uuid/dist/esm-browser/v4.js
function v4(options, buf, offset) {
if (native_default.randomUUID && !buf && !options) {
return native_default.randomUUID();
}
options = options || {};
const rnds = options.random || (options.rng || rng)();
rnds[6] = rnds[6] & 15 | 64;
rnds[8] = rnds[8] & 63 | 128;
if (buf) {
offset = offset || 0;
for (let i2 = 0; i2 < 16; ++i2) {
buf[offset + i2] = rnds[i2];
}
return buf;
}
return unsafeStringify(rnds);
}
var v4_default = v4;
// packages/blocks/build-module/api/factory.js
var import_hooks2 = __toESM(require_hooks());
function createBlock(name, attributes = {}, innerBlocks = []) {
if (!isBlockRegistered(name)) {
return createBlock("core/missing", {
originalName: name,
originalContent: "",
originalUndelimitedContent: ""
});
}
const sanitizedAttributes = __experimentalSanitizeBlockAttributes(
name,
attributes
);
const clientId = v4_default();
return {
clientId,
name,
isValid: true,
attributes: sanitizedAttributes,
innerBlocks
};
}
function createBlocksFromInnerBlocksTemplate(innerBlocksOrTemplate = []) {
return innerBlocksOrTemplate.map((innerBlock) => {
const innerBlockTemplate = Array.isArray(innerBlock) ? innerBlock : [
innerBlock.name,
innerBlock.attributes,
innerBlock.innerBlocks
];
const [name, attributes, innerBlocks = []] = innerBlockTemplate;
return createBlock(
name,
attributes,
createBlocksFromInnerBlocksTemplate(innerBlocks)
);
});
}
function __experimentalCloneSanitizedBlock(block, mergeAttributes = {}, newInnerBlocks) {
const { name } = block;
if (!isBlockRegistered(name)) {
return createBlock("core/missing", {
originalName: name,
originalContent: "",
originalUndelimitedContent: ""
});
}
const clientId = v4_default();
const sanitizedAttributes = __experimentalSanitizeBlockAttributes(name, {
...block.attributes,
...mergeAttributes
});
return {
...block,
clientId,
attributes: sanitizedAttributes,
innerBlocks: newInnerBlocks || block.innerBlocks.map(
(innerBlock) => __experimentalCloneSanitizedBlock(innerBlock)
)
};
}
function cloneBlock(block, mergeAttributes = {}, newInnerBlocks) {
const clientId = v4_default();
return {
...block,
clientId,
attributes: {
...block.attributes,
...mergeAttributes
},
innerBlocks: newInnerBlocks || block.innerBlocks.map((innerBlock) => cloneBlock(innerBlock))
};
}
var isPossibleTransformForSource = (transform, direction, blocks) => {
if (!blocks.length) {
return false;
}
const isMultiBlock = blocks.length > 1;
const firstBlockName = blocks[0].name;
const isValidForMultiBlocks = isWildcardBlockTransform(transform) || !isMultiBlock || transform.isMultiBlock;
if (!isValidForMultiBlocks) {
return false;
}
if (!isWildcardBlockTransform(transform) && !blocks.every((block) => block.name === firstBlockName)) {
return false;
}
const isBlockType = transform.type === "block";
if (!isBlockType) {
return false;
}
const sourceBlock = blocks[0];
const hasMatchingName = direction !== "from" || transform.blocks.indexOf(sourceBlock.name) !== -1 || isWildcardBlockTransform(transform);
if (!hasMatchingName) {
return false;
}
if (!isMultiBlock && direction === "from" && isContainerGroupBlock(sourceBlock.name) && isContainerGroupBlock(transform.blockName)) {
return false;
}
if (!maybeCheckTransformIsMatch(transform, blocks)) {
return false;
}
return true;
};
var getBlockTypesForPossibleFromTransforms = (blocks) => {
if (!blocks.length) {
return [];
}
const allBlockTypes = getBlockTypes();
const blockTypesWithPossibleFromTransforms = allBlockTypes.filter(
(blockType) => {
const fromTransforms = getBlockTransforms("from", blockType.name);
return !!findTransform(fromTransforms, (transform) => {
return isPossibleTransformForSource(
transform,
"from",
blocks
);
});
}
);
return blockTypesWithPossibleFromTransforms;
};
var getBlockTypesForPossibleToTransforms = (blocks) => {
if (!blocks.length) {
return [];
}
const sourceBlock = blocks[0];
const blockType = getBlockType(sourceBlock.name);
const transformsTo = blockType ? getBlockTransforms("to", blockType.name) : [];
const possibleTransforms = transformsTo.filter((transform) => {
return transform && isPossibleTransformForSource(transform, "to", blocks);
});
const blockNames = possibleTransforms.map((transformation) => transformation.blocks).flat();
return blockNames.map(getBlockType);
};
var isWildcardBlockTransform = (t3) => t3 && t3.type === "block" && Array.isArray(t3.blocks) && t3.blocks.includes("*");
var isContainerGroupBlock = (name) => name === getGroupingBlockName();
function getPossibleBlockTransformations(blocks) {
if (!blocks.length) {
return [];
}
const blockTypesForFromTransforms = getBlockTypesForPossibleFromTransforms(blocks);
const blockTypesForToTransforms = getBlockTypesForPossibleToTransforms(blocks);
return [
.../* @__PURE__ */ new Set([
...blockTypesForFromTransforms,
...blockTypesForToTransforms
])
];
}
function findTransform(transforms, predicate) {
const hooks = (0, import_hooks2.createHooks)();
for (let i2 = 0; i2 < transforms.length; i2++) {
const candidate = transforms[i2];
if (predicate(candidate)) {
hooks.addFilter(
"transform",
"transform/" + i2.toString(),
(result) => result ? result : candidate,
candidate.priority
);
}
}
return hooks.applyFilters("transform", null);
}
function getBlockTransforms(direction, blockTypeOrName) {
if (blockTypeOrName === void 0) {
return getBlockTypes().map(({ name }) => getBlockTransforms(direction, name)).flat();
}
const blockType = normalizeBlockType(blockTypeOrName);
const { name: blockName, transforms } = blockType || {};
if (!transforms || !Array.isArray(transforms[direction])) {
return [];
}
const usingMobileTransformations = transforms.supportedMobileTransforms && Array.isArray(transforms.supportedMobileTransforms);
const filteredTransforms = usingMobileTransformations ? transforms[direction].filter((t3) => {
if (t3.type === "raw") {
return true;
}
if (t3.type === "prefix") {
return true;
}
if (!t3.blocks || !t3.blocks.length) {
return false;
}
if (isWildcardBlockTransform(t3)) {
return true;
}
return t3.blocks.every(
(transformBlockName) => transforms.supportedMobileTransforms.includes(
transformBlockName
)
);
}) : transforms[direction];
return filteredTransforms.map((transform) => ({
...transform,
blockName,
usingMobileTransformations
}));
}
function maybeCheckTransformIsMatch(transform, blocks) {
if (typeof transform.isMatch !== "function") {
return true;
}
const sourceBlock = blocks[0];
const attributes = transform.isMultiBlock ? blocks.map((block2) => block2.attributes) : sourceBlock.attributes;
const block = transform.isMultiBlock ? blocks : sourceBlock;
return transform.isMatch(attributes, block);
}
function switchToBlockType(blocks, name) {
const blocksArray = Array.isArray(blocks) ? blocks : [blocks];
const isMultiBlock = blocksArray.length > 1;
const firstBlock = blocksArray[0];
const sourceName = firstBlock.name;
const transformationsFrom = getBlockTransforms("from", name);
const transformationsTo = getBlockTransforms("to", sourceName);
const transformation = findTransform(
transformationsTo,
(t3) => t3.type === "block" && (isWildcardBlockTransform(t3) || t3.blocks.indexOf(name) !== -1) && (!isMultiBlock || t3.isMultiBlock) && maybeCheckTransformIsMatch(t3, blocksArray)
) || findTransform(
transformationsFrom,
(t3) => t3.type === "block" && (isWildcardBlockTransform(t3) || t3.blocks.indexOf(sourceName) !== -1) && (!isMultiBlock || t3.isMultiBlock) && maybeCheckTransformIsMatch(t3, blocksArray)
);
if (!transformation) {
return null;
}
let transformationResults;
if (transformation.isMultiBlock) {
if ("__experimentalConvert" in transformation) {
transformationResults = transformation.__experimentalConvert(blocksArray);
} else {
transformationResults = transformation.transform(
blocksArray.map((currentBlock) => currentBlock.attributes),
blocksArray.map((currentBlock) => currentBlock.innerBlocks)
);
}
} else if ("__experimentalConvert" in transformation) {
transformationResults = transformation.__experimentalConvert(firstBlock);
} else {
transformationResults = transformation.transform(
firstBlock.attributes,
firstBlock.innerBlocks
);
}
if (transformationResults === null || typeof transformationResults !== "object") {
return null;
}
transformationResults = Array.isArray(transformationResults) ? transformationResults : [transformationResults];
if (transformationResults.some(
(result) => !getBlockType(result.name)
)) {
return null;
}
const hasSwitchedBlock = transformationResults.some(
(result) => result.name === name
);
if (!hasSwitchedBlock) {
return null;
}
const ret = transformationResults.map((result, index, results) => {
return (0, import_hooks2.applyFilters)(
"blocks.switchToBlockType.transformedBlock",
result,
blocks,
index,
results
);
});
return ret;
}
var getBlockFromExample = (name, example) => createBlock(
name,
example.attributes,
(example.innerBlocks ?? []).map(
(innerBlock) => getBlockFromExample(innerBlock.name, innerBlock)
)
);
// packages/blocks/build-module/api/parser/index.js
var import_block_serialization_default_parser = __toESM(require_block_serialization_default_parser());
var import_autop2 = __toESM(require_autop());
// packages/blocks/build-module/api/serializer.js
var import_element2 = __toESM(require_element());
var import_hooks3 = __toESM(require_hooks());
var import_is_shallow_equal = __toESM(require_is_shallow_equal());
var import_autop = __toESM(require_autop());
var import_deprecated6 = __toESM(require_deprecated());
// packages/blocks/build-module/api/parser/serialize-raw-block.js
function serializeRawBlock(rawBlock, options = {}) {
const { isCommentDelimited = true } = options;
const {
blockName,
attrs = {},
innerBlocks = [],
innerContent = []
} = rawBlock;
let childIndex = 0;
const content = innerContent.map(
(item) => (
// `null` denotes a nested block, otherwise we have an HTML fragment.
item !== null ? item : serializeRawBlock(innerBlocks[childIndex++], options)
)
).join("\n").replace(/\n+/g, "\n").trim();
return isCommentDelimited ? getCommentDelimitedContent(blockName, attrs, content) : content;
}
// packages/blocks/build-module/api/serializer.js
var import_jsx_runtime = __toESM(require_jsx_runtime());
function getBlockDefaultClassName(blockName) {
const className = "wp-block-" + blockName.replace(/\//, "-").replace(/^core-/, "");
return (0, import_hooks3.applyFilters)(
"blocks.getBlockDefaultClassName",
className,
blockName
);
}
function getBlockMenuDefaultClassName(blockName) {
const className = "editor-block-list-item-" + blockName.replace(/\//, "-").replace(/^core-/, "");
return (0, import_hooks3.applyFilters)(
"blocks.getBlockMenuDefaultClassName",
className,
blockName
);
}
var blockPropsProvider = {};
var innerBlocksPropsProvider = {};
function getBlockProps(props = {}) {
const { blockType, attributes } = blockPropsProvider;
return getBlockProps.skipFilters ? props : (0, import_hooks3.applyFilters)(
"blocks.getSaveContent.extraProps",
{ ...props },
blockType,
attributes
);
}
function getInnerBlocksProps(props = {}) {
const { innerBlocks } = innerBlocksPropsProvider;
if (!Array.isArray(innerBlocks)) {
return { ...props, children: innerBlocks };
}
const html2 = serialize(innerBlocks, { isInnerBlocks: true });
const children = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_element2.RawHTML, { children: html2 });
return { ...props, children };
}
function getSaveElement(blockTypeOrName, attributes, innerBlocks = []) {
const blockType = normalizeBlockType(blockTypeOrName);
if (!blockType?.save) {
return null;
}
let { save } = blockType;
if (save.prototype instanceof import_element2.Component) {
const instance = new save({ attributes });
save = instance.render.bind(instance);
}
blockPropsProvider.blockType = blockType;
blockPropsProvider.attributes = attributes;
innerBlocksPropsProvider.innerBlocks = innerBlocks;
let element = save({ attributes, innerBlocks });
if (element !== null && typeof element === "object" && (0, import_hooks3.hasFilter)("blocks.getSaveContent.extraProps") && !(blockType.apiVersion > 1)) {
const props = (0, import_hooks3.applyFilters)(
"blocks.getSaveContent.extraProps",
{ ...element.props },
blockType,
attributes
);
if (!(0, import_is_shallow_equal.default)(props, element.props)) {
element = (0, import_element2.cloneElement)(element, props);
}
}
return (0, import_hooks3.applyFilters)(
"blocks.getSaveElement",
element,
blockType,
attributes
);
}
function getSaveContent(blockTypeOrName, attributes, innerBlocks) {
const blockType = normalizeBlockType(blockTypeOrName);
return (0, import_element2.renderToString)(
getSaveElement(blockType, attributes, innerBlocks)
);
}
function getCommentAttributes(blockType, attributes) {
return Object.entries(blockType.attributes ?? {}).reduce(
(accumulator, [key, attributeSchema]) => {
const value = attributes[key];
if (void 0 === value) {
return accumulator;
}
if (attributeSchema.source !== void 0) {
return accumulator;
}
if (attributeSchema.role === "local") {
return accumulator;
}
if (attributeSchema.__experimentalRole === "local") {
(0, import_deprecated6.default)("__experimentalRole attribute", {
since: "6.7",
version: "6.8",
alternative: "role attribute",
hint: `Check the block.json of the ${blockType?.name} block.`
});
return accumulator;
}
if ("default" in attributeSchema && JSON.stringify(attributeSchema.default) === JSON.stringify(value)) {
return accumulator;
}
accumulator[key] = value;
return accumulator;
},
{}
);
}
function serializeAttributes(attributes) {
return JSON.stringify(attributes).replaceAll("\\\\", "\\u005c").replaceAll("--", "\\u002d\\u002d").replaceAll("<", "\\u003c").replaceAll(">", "\\u003e").replaceAll("&", "\\u0026").replaceAll('\\"', "\\u0022");
}
function getBlockInnerHTML(block) {
let saveContent = block.originalContent;
if (block.isValid || block.innerBlocks.length) {
try {
saveContent = getSaveContent(
block.name,
block.attributes,
block.innerBlocks
);
} catch (error) {
}
}
return saveContent;
}
function getCommentDelimitedContent(rawBlockName, attributes, content) {
const serializedAttributes = attributes && Object.entries(attributes).length ? serializeAttributes(attributes) + " " : "";
const blockName = rawBlockName?.startsWith("core/") ? rawBlockName.slice(5) : rawBlockName;
if (!content) {
return ``;
}
return `
` + content + `
`;
}
function serializeBlock(block, { isInnerBlocks = false } = {}) {
if (!block.isValid && block.__unstableBlockSource) {
return serializeRawBlock(block.__unstableBlockSource);
}
const blockName = block.name;
const saveContent = getBlockInnerHTML(block);
if (blockName === getUnregisteredTypeHandlerName() || !isInnerBlocks && blockName === getFreeformContentHandlerName()) {
return saveContent;
}
const blockType = getBlockType(blockName);
if (!blockType) {
return saveContent;
}
const saveAttributes = getCommentAttributes(blockType, block.attributes);
return getCommentDelimitedContent(blockName, saveAttributes, saveContent);
}
function __unstableSerializeAndClean(blocks) {
if (blocks.length === 1 && isUnmodifiedDefaultBlock(blocks[0])) {
blocks = [];
}
let content = serialize(blocks);
if (blocks.length === 1 && blocks[0].name === getFreeformContentHandlerName() && blocks[0].name === "core/freeform") {
content = (0, import_autop.removep)(content);
}
return content;
}
function serialize(blocks, options) {
const blocksArray = Array.isArray(blocks) ? blocks : [blocks];
return blocksArray.map((block) => serializeBlock(block, options)).join("\n\n");
}
// node_modules/simple-html-tokenizer/dist/es6/index.js
var HEXCHARCODE = /^#[xX]([A-Fa-f0-9]+)$/;
var CHARCODE = /^#([0-9]+)$/;
var NAMED = /^([A-Za-z0-9]+)$/;
var EntityParser = (
/** @class */
(function() {
function EntityParser2(named) {
this.named = named;
}
EntityParser2.prototype.parse = function(entity) {
if (!entity) {
return;
}
var matches = entity.match(HEXCHARCODE);
if (matches) {
return String.fromCharCode(parseInt(matches[1], 16));
}
matches = entity.match(CHARCODE);
if (matches) {
return String.fromCharCode(parseInt(matches[1], 10));
}
matches = entity.match(NAMED);
if (matches) {
return this.named[matches[1]];
}
};
return EntityParser2;
})()
);
var WSP = /[\t\n\f ]/;
var ALPHA = /[A-Za-z]/;
var CRLF = /\r\n?/g;
function isSpace(char) {
return WSP.test(char);
}
function isAlpha(char) {
return ALPHA.test(char);
}
function preprocessInput(input) {
return input.replace(CRLF, "\n");
}
var EventedTokenizer = (
/** @class */
(function() {
function EventedTokenizer2(delegate, entityParser) {
this.delegate = delegate;
this.entityParser = entityParser;
this.state = "beforeData";
this.line = -1;
this.column = -1;
this.input = "";
this.index = -1;
this.tagNameBuffer = "";
this.states = {
beforeData: function() {
var char = this.peek();
if (char === "<") {
this.transitionTo(
"tagOpen"
/* tagOpen */
);
this.markTagStart();
this.consume();
} else {
if (char === "\n") {
var tag = this.tagNameBuffer.toLowerCase();
if (tag === "pre" || tag === "textarea") {
this.consume();
}
}
this.transitionTo(
"data"
/* data */
);
this.delegate.beginData();
}
},
data: function() {
var char = this.peek();
if (char === "<") {
this.delegate.finishData();
this.transitionTo(
"tagOpen"
/* tagOpen */
);
this.markTagStart();
this.consume();
} else if (char === "&") {
this.consume();
this.delegate.appendToData(this.consumeCharRef() || "&");
} else {
this.consume();
this.delegate.appendToData(char);
}
},
tagOpen: function() {
var char = this.consume();
if (char === "!") {
this.transitionTo(
"markupDeclarationOpen"
/* markupDeclarationOpen */
);
} else if (char === "/") {
this.transitionTo(
"endTagOpen"
/* endTagOpen */
);
} else if (char === "@" || char === ":" || isAlpha(char)) {
this.transitionTo(
"tagName"
/* tagName */
);
this.tagNameBuffer = "";
this.delegate.beginStartTag();
this.appendToTagName(char);
}
},
markupDeclarationOpen: function() {
var char = this.consume();
if (char === "-" && this.input.charAt(this.index) === "-") {
this.consume();
this.transitionTo(
"commentStart"
/* commentStart */
);
this.delegate.beginComment();
}
},
commentStart: function() {
var char = this.consume();
if (char === "-") {
this.transitionTo(
"commentStartDash"
/* commentStartDash */
);
} else if (char === ">") {
this.delegate.finishComment();
this.transitionTo(
"beforeData"
/* beforeData */
);
} else {
this.delegate.appendToCommentData(char);
this.transitionTo(
"comment"
/* comment */
);
}
},
commentStartDash: function() {
var char = this.consume();
if (char === "-") {
this.transitionTo(
"commentEnd"
/* commentEnd */
);
} else if (char === ">") {
this.delegate.finishComment();
this.transitionTo(
"beforeData"
/* beforeData */
);
} else {
this.delegate.appendToCommentData("-");
this.transitionTo(
"comment"
/* comment */
);
}
},
comment: function() {
var char = this.consume();
if (char === "-") {
this.transitionTo(
"commentEndDash"
/* commentEndDash */
);
} else {
this.delegate.appendToCommentData(char);
}
},
commentEndDash: function() {
var char = this.consume();
if (char === "-") {
this.transitionTo(
"commentEnd"
/* commentEnd */
);
} else {
this.delegate.appendToCommentData("-" + char);
this.transitionTo(
"comment"
/* comment */
);
}
},
commentEnd: function() {
var char = this.consume();
if (char === ">") {
this.delegate.finishComment();
this.transitionTo(
"beforeData"
/* beforeData */
);
} else {
this.delegate.appendToCommentData("--" + char);
this.transitionTo(
"comment"
/* comment */
);
}
},
tagName: function() {
var char = this.consume();
if (isSpace(char)) {
this.transitionTo(
"beforeAttributeName"
/* beforeAttributeName */
);
} else if (char === "/") {
this.transitionTo(
"selfClosingStartTag"
/* selfClosingStartTag */
);
} else if (char === ">") {
this.delegate.finishTag();
this.transitionTo(
"beforeData"
/* beforeData */
);
} else {
this.appendToTagName(char);
}
},
beforeAttributeName: function() {
var char = this.peek();
if (isSpace(char)) {
this.consume();
return;
} else if (char === "/") {
this.transitionTo(
"selfClosingStartTag"
/* selfClosingStartTag */
);
this.consume();
} else if (char === ">") {
this.consume();
this.delegate.finishTag();
this.transitionTo(
"beforeData"
/* beforeData */
);
} else if (char === "=") {
this.delegate.reportSyntaxError("attribute name cannot start with equals sign");
this.transitionTo(
"attributeName"
/* attributeName */
);
this.delegate.beginAttribute();
this.consume();
this.delegate.appendToAttributeName(char);
} else {
this.transitionTo(
"attributeName"
/* attributeName */
);
this.delegate.beginAttribute();
}
},
attributeName: function() {
var char = this.peek();
if (isSpace(char)) {
this.transitionTo(
"afterAttributeName"
/* afterAttributeName */
);
this.consume();
} else if (char === "/") {
this.delegate.beginAttributeValue(false);
this.delegate.finishAttributeValue();
this.consume();
this.transitionTo(
"selfClosingStartTag"
/* selfClosingStartTag */
);
} else if (char === "=") {
this.transitionTo(
"beforeAttributeValue"
/* beforeAttributeValue */
);
this.consume();
} else if (char === ">") {
this.delegate.beginAttributeValue(false);
this.delegate.finishAttributeValue();
this.consume();
this.delegate.finishTag();
this.transitionTo(
"beforeData"
/* beforeData */
);
} else if (char === '"' || char === "'" || char === "<") {
this.delegate.reportSyntaxError(char + " is not a valid character within attribute names");
this.consume();
this.delegate.appendToAttributeName(char);
} else {
this.consume();
this.delegate.appendToAttributeName(char);
}
},
afterAttributeName: function() {
var char = this.peek();
if (isSpace(char)) {
this.consume();
return;
} else if (char === "/") {
this.delegate.beginAttributeValue(false);
this.delegate.finishAttributeValue();
this.consume();
this.transitionTo(
"selfClosingStartTag"
/* selfClosingStartTag */
);
} else if (char === "=") {
this.consume();
this.transitionTo(
"beforeAttributeValue"
/* beforeAttributeValue */
);
} else if (char === ">") {
this.delegate.beginAttributeValue(false);
this.delegate.finishAttributeValue();
this.consume();
this.delegate.finishTag();
this.transitionTo(
"beforeData"
/* beforeData */
);
} else {
this.delegate.beginAttributeValue(false);
this.delegate.finishAttributeValue();
this.transitionTo(
"attributeName"
/* attributeName */
);
this.delegate.beginAttribute();
this.consume();
this.delegate.appendToAttributeName(char);
}
},
beforeAttributeValue: function() {
var char = this.peek();
if (isSpace(char)) {
this.consume();
} else if (char === '"') {
this.transitionTo(
"attributeValueDoubleQuoted"
/* attributeValueDoubleQuoted */
);
this.delegate.beginAttributeValue(true);
this.consume();
} else if (char === "'") {
this.transitionTo(
"attributeValueSingleQuoted"
/* attributeValueSingleQuoted */
);
this.delegate.beginAttributeValue(true);
this.consume();
} else if (char === ">") {
this.delegate.beginAttributeValue(false);
this.delegate.finishAttributeValue();
this.consume();
this.delegate.finishTag();
this.transitionTo(
"beforeData"
/* beforeData */
);
} else {
this.transitionTo(
"attributeValueUnquoted"
/* attributeValueUnquoted */
);
this.delegate.beginAttributeValue(false);
this.consume();
this.delegate.appendToAttributeValue(char);
}
},
attributeValueDoubleQuoted: function() {
var char = this.consume();
if (char === '"') {
this.delegate.finishAttributeValue();
this.transitionTo(
"afterAttributeValueQuoted"
/* afterAttributeValueQuoted */
);
} else if (char === "&") {
this.delegate.appendToAttributeValue(this.consumeCharRef() || "&");
} else {
this.delegate.appendToAttributeValue(char);
}
},
attributeValueSingleQuoted: function() {
var char = this.consume();
if (char === "'") {
this.delegate.finishAttributeValue();
this.transitionTo(
"afterAttributeValueQuoted"
/* afterAttributeValueQuoted */
);
} else if (char === "&") {
this.delegate.appendToAttributeValue(this.consumeCharRef() || "&");
} else {
this.delegate.appendToAttributeValue(char);
}
},
attributeValueUnquoted: function() {
var char = this.peek();
if (isSpace(char)) {
this.delegate.finishAttributeValue();
this.consume();
this.transitionTo(
"beforeAttributeName"
/* beforeAttributeName */
);
} else if (char === "/") {
this.delegate.finishAttributeValue();
this.consume();
this.transitionTo(
"selfClosingStartTag"
/* selfClosingStartTag */
);
} else if (char === "&") {
this.consume();
this.delegate.appendToAttributeValue(this.consumeCharRef() || "&");
} else if (char === ">") {
this.delegate.finishAttributeValue();
this.consume();
this.delegate.finishTag();
this.transitionTo(
"beforeData"
/* beforeData */
);
} else {
this.consume();
this.delegate.appendToAttributeValue(char);
}
},
afterAttributeValueQuoted: function() {
var char = this.peek();
if (isSpace(char)) {
this.consume();
this.transitionTo(
"beforeAttributeName"
/* beforeAttributeName */
);
} else if (char === "/") {
this.consume();
this.transitionTo(
"selfClosingStartTag"
/* selfClosingStartTag */
);
} else if (char === ">") {
this.consume();
this.delegate.finishTag();
this.transitionTo(
"beforeData"
/* beforeData */
);
} else {
this.transitionTo(
"beforeAttributeName"
/* beforeAttributeName */
);
}
},
selfClosingStartTag: function() {
var char = this.peek();
if (char === ">") {
this.consume();
this.delegate.markTagAsSelfClosing();
this.delegate.finishTag();
this.transitionTo(
"beforeData"
/* beforeData */
);
} else {
this.transitionTo(
"beforeAttributeName"
/* beforeAttributeName */
);
}
},
endTagOpen: function() {
var char = this.consume();
if (char === "@" || char === ":" || isAlpha(char)) {
this.transitionTo(
"tagName"
/* tagName */
);
this.tagNameBuffer = "";
this.delegate.beginEndTag();
this.appendToTagName(char);
}
}
};
this.reset();
}
EventedTokenizer2.prototype.reset = function() {
this.transitionTo(
"beforeData"
/* beforeData */
);
this.input = "";
this.index = 0;
this.line = 1;
this.column = 0;
this.delegate.reset();
};
EventedTokenizer2.prototype.transitionTo = function(state) {
this.state = state;
};
EventedTokenizer2.prototype.tokenize = function(input) {
this.reset();
this.tokenizePart(input);
this.tokenizeEOF();
};
EventedTokenizer2.prototype.tokenizePart = function(input) {
this.input += preprocessInput(input);
while (this.index < this.input.length) {
var handler = this.states[this.state];
if (handler !== void 0) {
handler.call(this);
} else {
throw new Error("unhandled state " + this.state);
}
}
};
EventedTokenizer2.prototype.tokenizeEOF = function() {
this.flushData();
};
EventedTokenizer2.prototype.flushData = function() {
if (this.state === "data") {
this.delegate.finishData();
this.transitionTo(
"beforeData"
/* beforeData */
);
}
};
EventedTokenizer2.prototype.peek = function() {
return this.input.charAt(this.index);
};
EventedTokenizer2.prototype.consume = function() {
var char = this.peek();
this.index++;
if (char === "\n") {
this.line++;
this.column = 0;
} else {
this.column++;
}
return char;
};
EventedTokenizer2.prototype.consumeCharRef = function() {
var endIndex = this.input.indexOf(";", this.index);
if (endIndex === -1) {
return;
}
var entity = this.input.slice(this.index, endIndex);
var chars = this.entityParser.parse(entity);
if (chars) {
var count = entity.length;
while (count) {
this.consume();
count--;
}
this.consume();
return chars;
}
};
EventedTokenizer2.prototype.markTagStart = function() {
this.delegate.tagOpen();
};
EventedTokenizer2.prototype.appendToTagName = function(char) {
this.tagNameBuffer += char;
this.delegate.appendToTagName(char);
};
return EventedTokenizer2;
})()
);
var Tokenizer = (
/** @class */
(function() {
function Tokenizer2(entityParser, options) {
if (options === void 0) {
options = {};
}
this.options = options;
this.token = null;
this.startLine = 1;
this.startColumn = 0;
this.tokens = [];
this.tokenizer = new EventedTokenizer(this, entityParser);
this._currentAttribute = void 0;
}
Tokenizer2.prototype.tokenize = function(input) {
this.tokens = [];
this.tokenizer.tokenize(input);
return this.tokens;
};
Tokenizer2.prototype.tokenizePart = function(input) {
this.tokens = [];
this.tokenizer.tokenizePart(input);
return this.tokens;
};
Tokenizer2.prototype.tokenizeEOF = function() {
this.tokens = [];
this.tokenizer.tokenizeEOF();
return this.tokens[0];
};
Tokenizer2.prototype.reset = function() {
this.token = null;
this.startLine = 1;
this.startColumn = 0;
};
Tokenizer2.prototype.current = function() {
var token = this.token;
if (token === null) {
throw new Error("token was unexpectedly null");
}
if (arguments.length === 0) {
return token;
}
for (var i2 = 0; i2 < arguments.length; i2++) {
if (token.type === arguments[i2]) {
return token;
}
}
throw new Error("token type was unexpectedly " + token.type);
};
Tokenizer2.prototype.push = function(token) {
this.token = token;
this.tokens.push(token);
};
Tokenizer2.prototype.currentAttribute = function() {
return this._currentAttribute;
};
Tokenizer2.prototype.addLocInfo = function() {
if (this.options.loc) {
this.current().loc = {
start: {
line: this.startLine,
column: this.startColumn
},
end: {
line: this.tokenizer.line,
column: this.tokenizer.column
}
};
}
this.startLine = this.tokenizer.line;
this.startColumn = this.tokenizer.column;
};
Tokenizer2.prototype.beginData = function() {
this.push({
type: "Chars",
chars: ""
});
};
Tokenizer2.prototype.appendToData = function(char) {
this.current(
"Chars"
/* Chars */
).chars += char;
};
Tokenizer2.prototype.finishData = function() {
this.addLocInfo();
};
Tokenizer2.prototype.beginComment = function() {
this.push({
type: "Comment",
chars: ""
});
};
Tokenizer2.prototype.appendToCommentData = function(char) {
this.current(
"Comment"
/* Comment */
).chars += char;
};
Tokenizer2.prototype.finishComment = function() {
this.addLocInfo();
};
Tokenizer2.prototype.tagOpen = function() {
};
Tokenizer2.prototype.beginStartTag = function() {
this.push({
type: "StartTag",
tagName: "",
attributes: [],
selfClosing: false
});
};
Tokenizer2.prototype.beginEndTag = function() {
this.push({
type: "EndTag",
tagName: ""
});
};
Tokenizer2.prototype.finishTag = function() {
this.addLocInfo();
};
Tokenizer2.prototype.markTagAsSelfClosing = function() {
this.current(
"StartTag"
/* StartTag */
).selfClosing = true;
};
Tokenizer2.prototype.appendToTagName = function(char) {
this.current(
"StartTag",
"EndTag"
/* EndTag */
).tagName += char;
};
Tokenizer2.prototype.beginAttribute = function() {
this._currentAttribute = ["", "", false];
};
Tokenizer2.prototype.appendToAttributeName = function(char) {
this.currentAttribute()[0] += char;
};
Tokenizer2.prototype.beginAttributeValue = function(isQuoted) {
this.currentAttribute()[2] = isQuoted;
};
Tokenizer2.prototype.appendToAttributeValue = function(char) {
this.currentAttribute()[1] += char;
};
Tokenizer2.prototype.finishAttributeValue = function() {
this.current(
"StartTag"
/* StartTag */
).attributes.push(this._currentAttribute);
};
Tokenizer2.prototype.reportSyntaxError = function(message) {
this.current().syntaxError = message;
};
return Tokenizer2;
})()
);
// packages/blocks/build-module/api/validation/index.js
var import_es6 = __toESM(require_es6());
var import_deprecated7 = __toESM(require_deprecated());
var import_html_entities = __toESM(require_html_entities());
// packages/blocks/build-module/api/validation/logger.js
function createLogger() {
function createLogHandler(logger) {
return (message, ...args) => logger("Block validation: " + message, ...args);
}
return {
// eslint-disable-next-line no-console
error: createLogHandler(console.error),
// eslint-disable-next-line no-console
warning: createLogHandler(console.warn),
getItems() {
return [];
}
};
}
function createQueuedLogger() {
const queue = [];
const logger = createLogger();
return {
error(...args) {
queue.push({ log: logger.error, args });
},
warning(...args) {
queue.push({ log: logger.warning, args });
},
getItems() {
return queue;
}
};
}
// packages/blocks/build-module/api/validation/index.js
var identity = (x2) => x2;
var REGEXP_WHITESPACE = /[\t\n\r\v\f ]+/g;
var REGEXP_ONLY_WHITESPACE = /^[\t\n\r\v\f ]*$/;
var REGEXP_STYLE_URL_TYPE = /^url\s*\(['"\s]*(.*?)['"\s]*\)$/;
var BOOLEAN_ATTRIBUTES = [
"allowfullscreen",
"allowpaymentrequest",
"allowusermedia",
"async",
"autofocus",
"autoplay",
"checked",
"controls",
"default",
"defer",
"disabled",
"download",
"formnovalidate",
"hidden",
"ismap",
"itemscope",
"loop",
"multiple",
"muted",
"nomodule",
"novalidate",
"open",
"playsinline",
"readonly",
"required",
"reversed",
"selected",
"typemustmatch"
];
var ENUMERATED_ATTRIBUTES = [
"autocapitalize",
"autocomplete",
"charset",
"contenteditable",
"crossorigin",
"decoding",
"dir",
"draggable",
"enctype",
"formenctype",
"formmethod",
"http-equiv",
"inputmode",
"kind",
"method",
"preload",
"scope",
"shape",
"spellcheck",
"translate",
"type",
"wrap"
];
var MEANINGFUL_ATTRIBUTES = [
...BOOLEAN_ATTRIBUTES,
...ENUMERATED_ATTRIBUTES
];
var TEXT_NORMALIZATIONS = [identity, getTextWithCollapsedWhitespace];
var REGEXP_NAMED_CHARACTER_REFERENCE = /^[\da-z]+$/i;
var REGEXP_DECIMAL_CHARACTER_REFERENCE = /^#\d+$/;
var REGEXP_HEXADECIMAL_CHARACTER_REFERENCE = /^#x[\da-f]+$/i;
function isValidCharacterReference(text2) {
return REGEXP_NAMED_CHARACTER_REFERENCE.test(text2) || REGEXP_DECIMAL_CHARACTER_REFERENCE.test(text2) || REGEXP_HEXADECIMAL_CHARACTER_REFERENCE.test(text2);
}
var DecodeEntityParser = class {
/**
* Returns a substitute string for an entity string sequence between `&`
* and `;`, or undefined if no substitution should occur.
*
* @param {string} entity Entity fragment discovered in HTML.
*
* @return {string | undefined} Entity substitute value.
*/
parse(entity) {
if (isValidCharacterReference(entity)) {
return (0, import_html_entities.decodeEntities)("&" + entity + ";");
}
}
};
function getTextPiecesSplitOnWhitespace(text2) {
return text2.trim().split(REGEXP_WHITESPACE);
}
function getTextWithCollapsedWhitespace(text2) {
return getTextPiecesSplitOnWhitespace(text2).join(" ");
}
function getMeaningfulAttributePairs(token) {
return token.attributes.filter((pair) => {
const [key, value] = pair;
return value || key.indexOf("data-") === 0 || MEANINGFUL_ATTRIBUTES.includes(key);
});
}
function isEquivalentTextTokens(actual, expected, logger = createLogger()) {
let actualChars = actual.chars;
let expectedChars = expected.chars;
for (let i2 = 0; i2 < TEXT_NORMALIZATIONS.length; i2++) {
const normalize = TEXT_NORMALIZATIONS[i2];
actualChars = normalize(actualChars);
expectedChars = normalize(expectedChars);
if (actualChars === expectedChars) {
return true;
}
}
logger.warning(
"Expected text `%s`, saw `%s`.",
expected.chars,
actual.chars
);
return false;
}
function getNormalizedLength(value) {
if (0 === parseFloat(value)) {
return "0";
}
if (value.indexOf(".") === 0) {
return "0" + value;
}
return value;
}
function getNormalizedStyleValue(value) {
const textPieces = getTextPiecesSplitOnWhitespace(value);
const normalizedPieces = textPieces.map(getNormalizedLength);
const result = normalizedPieces.join(" ");
return result.replace(REGEXP_STYLE_URL_TYPE, "url($1)");
}
function getStyleProperties(text2) {
const pairs = text2.replace(/;?\s*$/, "").split(";").map((style) => {
const [key, ...valueParts] = style.split(":");
const value = valueParts.join(":");
return [key.trim(), getNormalizedStyleValue(value.trim())];
});
return Object.fromEntries(pairs);
}
var isEqualAttributesOfName = {
class: (actual, expected) => {
const [actualPieces, expectedPieces] = [actual, expected].map(
getTextPiecesSplitOnWhitespace
);
const actualDiff = actualPieces.filter(
(c2) => !expectedPieces.includes(c2)
);
const expectedDiff = expectedPieces.filter(
(c2) => !actualPieces.includes(c2)
);
return actualDiff.length === 0 && expectedDiff.length === 0;
},
style: (actual, expected) => {
return (0, import_es6.default)(
...[actual, expected].map(getStyleProperties)
);
},
// For each boolean attribute, mere presence of attribute in both is enough
// to assume equivalence.
...Object.fromEntries(
BOOLEAN_ATTRIBUTES.map((attribute) => [attribute, () => true])
)
};
function isEqualTagAttributePairs(actual, expected, logger = createLogger()) {
if (actual.length !== expected.length) {
logger.warning(
"Expected attributes %o, instead saw %o.",
expected,
actual
);
return false;
}
const expectedAttributes = {};
for (let i2 = 0; i2 < expected.length; i2++) {
expectedAttributes[expected[i2][0].toLowerCase()] = expected[i2][1];
}
for (let i2 = 0; i2 < actual.length; i2++) {
const [name, actualValue] = actual[i2];
const nameLower = name.toLowerCase();
if (!expectedAttributes.hasOwnProperty(nameLower)) {
logger.warning("Encountered unexpected attribute `%s`.", name);
return false;
}
const expectedValue = expectedAttributes[nameLower];
const isEqualAttributes = isEqualAttributesOfName[nameLower];
if (isEqualAttributes) {
if (!isEqualAttributes(actualValue, expectedValue)) {
logger.warning(
"Expected attribute `%s` of value `%s`, saw `%s`.",
name,
expectedValue,
actualValue
);
return false;
}
} else if (actualValue !== expectedValue) {
logger.warning(
"Expected attribute `%s` of value `%s`, saw `%s`.",
name,
expectedValue,
actualValue
);
return false;
}
}
return true;
}
var isEqualTokensOfType = {
StartTag: (actual, expected, logger = createLogger()) => {
if (actual.tagName !== expected.tagName && // Optimization: Use short-circuit evaluation to defer case-
// insensitive check on the assumption that the majority case will
// have exactly equal tag names.
actual.tagName.toLowerCase() !== expected.tagName.toLowerCase()) {
logger.warning(
"Expected tag name `%s`, instead saw `%s`.",
expected.tagName,
actual.tagName
);
return false;
}
return isEqualTagAttributePairs(
...[actual, expected].map(getMeaningfulAttributePairs),
logger
);
},
Chars: isEquivalentTextTokens,
Comment: isEquivalentTextTokens
};
function getNextNonWhitespaceToken(tokens) {
let token;
while (token = tokens.shift()) {
if (token.type !== "Chars") {
return token;
}
if (!REGEXP_ONLY_WHITESPACE.test(token.chars)) {
return token;
}
}
}
function getHTMLTokens(html2, logger = createLogger()) {
try {
return new Tokenizer(new DecodeEntityParser()).tokenize(html2);
} catch (e2) {
logger.warning("Malformed HTML detected: %s", html2);
}
return null;
}
function isClosedByToken(currentToken, nextToken) {
if (!currentToken.selfClosing) {
return false;
}
if (nextToken && nextToken.tagName === currentToken.tagName && nextToken.type === "EndTag") {
return true;
}
return false;
}
function isEquivalentHTML(actual, expected, logger = createLogger()) {
if (actual === expected) {
return true;
}
const [actualTokens, expectedTokens] = [actual, expected].map(
(html2) => getHTMLTokens(html2, logger)
);
if (!actualTokens || !expectedTokens) {
return false;
}
let actualToken, expectedToken;
while (actualToken = getNextNonWhitespaceToken(actualTokens)) {
expectedToken = getNextNonWhitespaceToken(expectedTokens);
if (!expectedToken) {
logger.warning(
"Expected end of content, instead saw %o.",
actualToken
);
return false;
}
if (actualToken.type !== expectedToken.type) {
logger.warning(
"Expected token of type `%s` (%o), instead saw `%s` (%o).",
expectedToken.type,
expectedToken,
actualToken.type,
actualToken
);
return false;
}
const isEqualTokens = isEqualTokensOfType[actualToken.type];
if (isEqualTokens && !isEqualTokens(actualToken, expectedToken, logger)) {
return false;
}
if (isClosedByToken(actualToken, expectedTokens[0])) {
getNextNonWhitespaceToken(expectedTokens);
} else if (isClosedByToken(expectedToken, actualTokens[0])) {
getNextNonWhitespaceToken(actualTokens);
}
}
if (expectedToken = getNextNonWhitespaceToken(expectedTokens)) {
logger.warning(
"Expected %o, instead saw end of content.",
expectedToken
);
return false;
}
return true;
}
function validateBlock(block, blockTypeOrName = block.name) {
const isFallbackBlock = block.name === getFreeformContentHandlerName() || block.name === getUnregisteredTypeHandlerName();
if (isFallbackBlock) {
return [true, []];
}
const logger = createQueuedLogger();
const blockType = normalizeBlockType(blockTypeOrName);
let generatedBlockContent;
try {
generatedBlockContent = getSaveContent(blockType, block.attributes);
} catch (error) {
logger.error(
"Block validation failed because an error occurred while generating block content:\n\n%s",
error.toString()
);
return [false, logger.getItems()];
}
const isValid = isEquivalentHTML(
block.originalContent,
generatedBlockContent,
logger
);
if (!isValid) {
logger.error(
"Block validation failed for `%s` (%o).\n\nContent generated by `save` function:\n\n%s\n\nContent retrieved from post body:\n\n%s",
blockType.name,
blockType,
generatedBlockContent,
block.originalContent
);
}
return [isValid, logger.getItems()];
}
function isValidBlockContent(blockTypeOrName, attributes, originalBlockContent) {
(0, import_deprecated7.default)("isValidBlockContent introduces opportunity for data loss", {
since: "12.6",
plugin: "Gutenberg",
alternative: "validateBlock"
});
const blockType = normalizeBlockType(blockTypeOrName);
const block = {
name: blockType.name,
attributes,
innerBlocks: [],
originalContent: originalBlockContent
};
const [isValid] = validateBlock(block, blockType);
return isValid;
}
// packages/blocks/build-module/api/parser/convert-legacy-block.js
function convertLegacyBlockNameAndAttributes(name, attributes) {
const newAttributes = { ...attributes };
if ("core/cover-image" === name) {
name = "core/cover";
}
if ("core/text" === name || "core/cover-text" === name) {
name = "core/paragraph";
}
if (name && name.indexOf("core/social-link-") === 0) {
newAttributes.service = name.substring(17);
name = "core/social-link";
}
if (name && name.indexOf("core-embed/") === 0) {
const providerSlug = name.substring(11);
const deprecated12 = {
speaker: "speaker-deck",
polldaddy: "crowdsignal"
};
newAttributes.providerNameSlug = providerSlug in deprecated12 ? deprecated12[providerSlug] : providerSlug;
if (!["amazon-kindle", "wordpress"].includes(providerSlug)) {
newAttributes.responsive = true;
}
name = "core/embed";
}
if (name === "core/post-comment-author") {
name = "core/comment-author-name";
}
if (name === "core/post-comment-content") {
name = "core/comment-content";
}
if (name === "core/post-comment-date") {
name = "core/comment-date";
}
if (name === "core/comments-query-loop") {
name = "core/comments";
const { className = "" } = newAttributes;
if (!className.includes("wp-block-comments-query-loop")) {
newAttributes.className = [
"wp-block-comments-query-loop",
className
].join(" ");
}
}
if (name === "core/post-comments") {
name = "core/comments";
newAttributes.legacy = true;
}
if (attributes.layout?.type === "grid" && typeof attributes.layout?.columnCount === "string") {
newAttributes.layout = {
...newAttributes.layout,
columnCount: parseInt(attributes.layout.columnCount, 10)
};
}
if (typeof attributes.style?.layout?.columnSpan === "string") {
const columnSpanNumber = parseInt(
attributes.style.layout.columnSpan,
10
);
newAttributes.style = {
...newAttributes.style,
layout: {
...newAttributes.style.layout,
columnSpan: isNaN(columnSpanNumber) ? void 0 : columnSpanNumber
}
};
}
if (typeof attributes.style?.layout?.rowSpan === "string") {
const rowSpanNumber = parseInt(attributes.style.layout.rowSpan, 10);
newAttributes.style = {
...newAttributes.style,
layout: {
...newAttributes.style.layout,
rowSpan: isNaN(rowSpanNumber) ? void 0 : rowSpanNumber
}
};
}
return [name, newAttributes];
}
// node_modules/hpq/es/get-path.js
function getPath(object, path) {
var segments = path.split(".");
var segment;
while (segment = segments.shift()) {
if (!(segment in object)) {
return;
}
object = object[segment];
}
return object;
}
// node_modules/hpq/es/index.js
var getDocument = /* @__PURE__ */ (function() {
var doc;
return function() {
if (!doc) {
doc = document.implementation.createHTMLDocument("");
}
return doc;
};
})();
function parse(source, matchers) {
if (!matchers) {
return;
}
if ("string" === typeof source) {
var doc = getDocument();
doc.body.innerHTML = source;
source = doc.body;
}
if ("function" === typeof matchers) {
return matchers(source);
}
if (Object !== matchers.constructor) {
return;
}
return Object.keys(matchers).reduce(function(memo, key) {
memo[key] = parse(source, matchers[key]);
return memo;
}, {});
}
function prop(selector, name) {
if (1 === arguments.length) {
name = selector;
selector = void 0;
}
return function(node) {
var match = node;
if (selector) {
match = node.querySelector(selector);
}
if (match) {
return getPath(match, name);
}
};
}
function attr(selector, name) {
if (1 === arguments.length) {
name = selector;
selector = void 0;
}
return function(node) {
var attributes = prop(selector, "attributes")(node);
if (attributes && attributes.hasOwnProperty(name)) {
return attributes[name].value;
}
};
}
function text(selector) {
return prop(selector, "textContent");
}
function query(selector, matchers) {
return function(node) {
var matches = node.querySelectorAll(selector);
return [].map.call(matches, function(match) {
return parse(match, matchers);
});
};
}
// node_modules/memize/dist/index.js
function memize(fn, options) {
var size = 0;
var head;
var tail;
options = options || {};
function memoized() {
var node = head, len = arguments.length, args, i2;
searchCache: while (node) {
if (node.args.length !== arguments.length) {
node = node.next;
continue;
}
for (i2 = 0; i2 < len; i2++) {
if (node.args[i2] !== arguments[i2]) {
node = node.next;
continue searchCache;
}
}
if (node !== head) {
if (node === tail) {
tail = node.prev;
}
node.prev.next = node.next;
if (node.next) {
node.next.prev = node.prev;
}
node.next = head;
node.prev = null;
head.prev = node;
head = node;
}
return node.val;
}
args = new Array(len);
for (i2 = 0; i2 < len; i2++) {
args[i2] = arguments[i2];
}
node = {
args,
// Generate the result from original function
val: fn.apply(null, args)
};
if (head) {
head.prev = node;
node.next = head;
} else {
tail = node;
}
if (size === /** @type {MemizeOptions} */
options.maxSize) {
tail = /** @type {MemizeCacheNode} */
tail.prev;
tail.next = null;
} else {
size++;
}
head = node;
return node.val;
}
memoized.clear = function() {
head = null;
tail = null;
size = 0;
};
return memoized;
}
// packages/blocks/build-module/api/parser/get-block-attributes.js
var import_hooks4 = __toESM(require_hooks());
var import_rich_text4 = __toESM(require_rich_text());
// packages/blocks/build-module/api/matchers.js
var import_rich_text3 = __toESM(require_rich_text());
// packages/blocks/build-module/api/node.js
var import_deprecated9 = __toESM(require_deprecated());
// packages/blocks/build-module/api/children.js
var import_element3 = __toESM(require_element());
var import_deprecated8 = __toESM(require_deprecated());
function getSerializeCapableElement(children) {
return children;
}
function getChildrenArray(children) {
(0, import_deprecated8.default)("wp.blocks.children.getChildrenArray", {
since: "6.1",
version: "6.3",
link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
});
return children;
}
function concat(...blockNodes) {
(0, import_deprecated8.default)("wp.blocks.children.concat", {
since: "6.1",
version: "6.3",
alternative: "wp.richText.concat",
link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
});
const result = [];
for (let i2 = 0; i2 < blockNodes.length; i2++) {
const blockNode = Array.isArray(blockNodes[i2]) ? blockNodes[i2] : [blockNodes[i2]];
for (let j2 = 0; j2 < blockNode.length; j2++) {
const child = blockNode[j2];
const canConcatToPreviousString = typeof child === "string" && typeof result[result.length - 1] === "string";
if (canConcatToPreviousString) {
result[result.length - 1] += child;
} else {
result.push(child);
}
}
}
return result;
}
function fromDOM22(domNodes) {
(0, import_deprecated8.default)("wp.blocks.children.fromDOM", {
since: "6.1",
version: "6.3",
alternative: "wp.richText.create",
link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
});
const result = [];
for (let i2 = 0; i2 < domNodes.length; i2++) {
try {
result.push(fromDOM2(domNodes[i2]));
} catch (error) {
}
}
return result;
}
function toHTML(children) {
(0, import_deprecated8.default)("wp.blocks.children.toHTML", {
since: "6.1",
version: "6.3",
alternative: "wp.richText.toHTMLString",
link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
});
const element = getSerializeCapableElement(children);
return (0, import_element3.renderToString)(element);
}
function matcher(selector) {
(0, import_deprecated8.default)("wp.blocks.children.matcher", {
since: "6.1",
version: "6.3",
alternative: "html source",
link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
});
return (domNode) => {
let match = domNode;
if (selector) {
match = domNode.querySelector(selector);
}
if (match) {
return fromDOM22(match.childNodes);
}
return [];
};
}
var children_default = {
concat,
getChildrenArray,
fromDOM: fromDOM22,
toHTML,
matcher
};
// packages/blocks/build-module/api/node.js
function isNodeOfType(node, type) {
(0, import_deprecated9.default)("wp.blocks.node.isNodeOfType", {
since: "6.1",
version: "6.3",
link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
});
return node && node.type === type;
}
function getNamedNodeMapAsObject(nodeMap) {
const result = {};
for (let i2 = 0; i2 < nodeMap.length; i2++) {
const { name, value } = nodeMap[i2];
result[name] = value;
}
return result;
}
function fromDOM2(domNode) {
(0, import_deprecated9.default)("wp.blocks.node.fromDOM", {
since: "6.1",
version: "6.3",
alternative: "wp.richText.create",
link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
});
if (domNode.nodeType === domNode.TEXT_NODE) {
return domNode.nodeValue;
}
if (domNode.nodeType !== domNode.ELEMENT_NODE) {
throw new TypeError(
"A block node can only be created from a node of type text or element."
);
}
return {
type: domNode.nodeName.toLowerCase(),
props: {
...getNamedNodeMapAsObject(domNode.attributes),
children: fromDOM22(domNode.childNodes)
}
};
}
function toHTML2(node) {
(0, import_deprecated9.default)("wp.blocks.node.toHTML", {
since: "6.1",
version: "6.3",
alternative: "wp.richText.toHTMLString",
link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
});
return toHTML([node]);
}
function matcher2(selector) {
(0, import_deprecated9.default)("wp.blocks.node.matcher", {
since: "6.1",
version: "6.3",
alternative: "html source",
link: "https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/"
});
return (domNode) => {
let match = domNode;
if (selector) {
match = domNode.querySelector(selector);
}
try {
return fromDOM2(match);
} catch (error) {
return null;
}
};
}
var node_default = {
isNodeOfType,
fromDOM: fromDOM2,
toHTML: toHTML2,
matcher: matcher2
};
// packages/blocks/build-module/api/matchers.js
function html(selector, multilineTag) {
return (domNode) => {
let match = domNode;
if (selector) {
match = domNode.querySelector(selector);
}
if (!match) {
return "";
}
if (multilineTag) {
let value = "";
const length = match.children.length;
for (let index = 0; index < length; index++) {
const child = match.children[index];
if (child.nodeName.toLowerCase() !== multilineTag) {
continue;
}
value += child.outerHTML;
}
return value;
}
return match.innerHTML;
};
}
var richText = (selector, preserveWhiteSpace) => (el) => {
const target = selector ? el.querySelector(selector) : el;
return target ? import_rich_text3.RichTextData.fromHTMLElement(target, { preserveWhiteSpace }) : import_rich_text3.RichTextData.empty();
};
// packages/blocks/build-module/api/parser/get-block-attributes.js
var toBooleanAttributeMatcher = (matcher3) => (value) => matcher3(value) !== void 0;
function isOfType(value, type) {
switch (type) {
case "rich-text":
return value instanceof import_rich_text4.RichTextData;
case "string":
return typeof value === "string";
case "boolean":
return typeof value === "boolean";
case "object":
return !!value && value.constructor === Object;
case "null":
return value === null;
case "array":
return Array.isArray(value);
case "integer":
case "number":
return typeof value === "number";
}
return true;
}
function isOfTypes(value, types) {
return types.some((type) => isOfType(value, type));
}
function getBlockAttribute(attributeKey, attributeSchema, innerDOM, commentAttributes, innerHTML) {
let value;
switch (attributeSchema.source) {
// An undefined source means that it's an attribute serialized to the
// block's "comment".
case void 0:
value = commentAttributes ? commentAttributes[attributeKey] : void 0;
break;
// raw source means that it's the original raw block content.
case "raw":
value = innerHTML;
break;
case "attribute":
case "property":
case "html":
case "text":
case "rich-text":
case "children":
case "node":
case "query":
case "tag":
value = parseWithAttributeSchema(innerDOM, attributeSchema);
break;
}
if (!isValidByType(value, attributeSchema.type) || !isValidByEnum(value, attributeSchema.enum)) {
value = void 0;
}
if (value === void 0) {
value = getDefault(attributeSchema);
}
return value;
}
function isValidByType(value, type) {
return type === void 0 || isOfTypes(value, Array.isArray(type) ? type : [type]);
}
function isValidByEnum(value, enumSet) {
return !Array.isArray(enumSet) || enumSet.includes(value);
}
var matcherFromSource = memize((sourceConfig) => {
switch (sourceConfig.source) {
case "attribute": {
let matcher3 = attr(sourceConfig.selector, sourceConfig.attribute);
if (sourceConfig.type === "boolean") {
matcher3 = toBooleanAttributeMatcher(matcher3);
}
return matcher3;
}
case "html":
return html(sourceConfig.selector, sourceConfig.multiline);
case "text":
return text(sourceConfig.selector);
case "rich-text":
return richText(
sourceConfig.selector,
sourceConfig.__unstablePreserveWhiteSpace
);
case "children":
return matcher(sourceConfig.selector);
case "node":
return matcher2(sourceConfig.selector);
case "query":
const subMatchers = Object.fromEntries(
Object.entries(sourceConfig.query).map(
([key, subSourceConfig]) => [
key,
matcherFromSource(subSourceConfig)
]
)
);
return query(sourceConfig.selector, subMatchers);
case "tag": {
const matcher3 = prop(sourceConfig.selector, "nodeName");
return (domNode) => matcher3(domNode)?.toLowerCase();
}
default:
console.error(`Unknown source type "${sourceConfig.source}"`);
}
});
function parseHtml(innerHTML) {
return parse(innerHTML, (h2) => h2);
}
function parseWithAttributeSchema(innerHTML, attributeSchema) {
return matcherFromSource(attributeSchema)(parseHtml(innerHTML));
}
function getBlockAttributes(blockTypeOrName, innerHTML, attributes = {}) {
const doc = parseHtml(innerHTML);
const blockType = normalizeBlockType(blockTypeOrName);
const blockAttributes = Object.fromEntries(
Object.entries(blockType.attributes ?? {}).map(
([key, schema]) => [
key,
getBlockAttribute(key, schema, doc, attributes, innerHTML)
]
)
);
return (0, import_hooks4.applyFilters)(
"blocks.getBlockAttributes",
blockAttributes,
blockType,
innerHTML,
attributes
);
}
// packages/blocks/build-module/api/parser/fix-custom-classname.js
var CLASS_ATTR_SCHEMA = {
type: "string",
source: "attribute",
selector: "[data-custom-class-name] > *",
attribute: "class"
};
function getHTMLRootElementClasses(innerHTML) {
const parsed = parseWithAttributeSchema(
`${innerHTML}`,
CLASS_ATTR_SCHEMA
);
return parsed ? parsed.trim().split(/\s+/) : [];
}
function fixCustomClassname(blockAttributes, blockType, innerHTML) {
if (!hasBlockSupport(blockType, "customClassName", true)) {
return blockAttributes;
}
const modifiedBlockAttributes = { ...blockAttributes };
const { className: omittedClassName, ...attributesSansClassName } = modifiedBlockAttributes;
const serialized = getSaveContent(blockType, attributesSansClassName);
const defaultClasses = getHTMLRootElementClasses(serialized);
const actualClasses = getHTMLRootElementClasses(innerHTML);
const customClasses = actualClasses.filter(
(className) => !defaultClasses.includes(className)
);
if (customClasses.length) {
modifiedBlockAttributes.className = customClasses.join(" ");
} else if (serialized) {
delete modifiedBlockAttributes.className;
}
return modifiedBlockAttributes;
}
// packages/blocks/build-module/api/parser/fix-global-attribute.js
function getHTMLRootElement(innerHTML, dataAttribute, attributeSchema) {
const parsed = parseWithAttributeSchema(
`${innerHTML}`,
attributeSchema
);
return parsed;
}
function fixGlobalAttribute(blockAttributes, blockType, innerHTML, supportKey, dataAttribute, attributeSchema) {
if (!hasBlockSupport(blockType, supportKey, false)) {
return blockAttributes;
}
const modifiedBlockAttributes = { ...blockAttributes };
const attributeValue = getHTMLRootElement(
innerHTML,
dataAttribute,
attributeSchema
);
if (attributeValue) {
modifiedBlockAttributes[supportKey] = attributeValue;
}
return modifiedBlockAttributes;
}
// packages/blocks/build-module/api/parser/apply-built-in-validation-fixes.js
var ARIA_LABEL_ATTR_SCHEMA = {
type: "string",
source: "attribute",
selector: "[data-aria-label] > *",
attribute: "aria-label"
};
var ANCHOR_ATTR_SCHEMA = {
type: "string",
source: "attribute",
selector: "[data-anchor] > *",
attribute: "id"
};
function applyBuiltInValidationFixes(block, blockType) {
const { attributes, originalContent } = block;
let updatedBlockAttributes = attributes;
updatedBlockAttributes = fixCustomClassname(
attributes,
blockType,
originalContent
);
updatedBlockAttributes = fixGlobalAttribute(
updatedBlockAttributes,
blockType,
originalContent,
"ariaLabel",
"data-aria-label",
ARIA_LABEL_ATTR_SCHEMA
);
updatedBlockAttributes = fixGlobalAttribute(
updatedBlockAttributes,
blockType,
originalContent,
"anchor",
"data-anchor",
ANCHOR_ATTR_SCHEMA
);
return {
...block,
attributes: updatedBlockAttributes
};
}
// packages/blocks/build-module/api/parser/apply-block-deprecated-versions.js
function stubFalse() {
return false;
}
function applyBlockDeprecatedVersions(block, rawBlock, blockType) {
const parsedAttributes = rawBlock.attrs;
const { deprecated: deprecatedDefinitions } = blockType;
if (!deprecatedDefinitions || !deprecatedDefinitions.length) {
return block;
}
for (let i2 = 0; i2 < deprecatedDefinitions.length; i2++) {
const { isEligible = stubFalse } = deprecatedDefinitions[i2];
if (block.isValid && !isEligible(parsedAttributes, block.innerBlocks, {
blockNode: rawBlock,
block
})) {
continue;
}
const deprecatedBlockType = Object.assign(
omit(blockType, DEPRECATED_ENTRY_KEYS),
deprecatedDefinitions[i2]
);
let migratedBlock = {
...block,
attributes: getBlockAttributes(
deprecatedBlockType,
block.originalContent,
parsedAttributes
)
};
let [isValid] = validateBlock(migratedBlock, deprecatedBlockType);
if (!isValid) {
migratedBlock = applyBuiltInValidationFixes(
migratedBlock,
deprecatedBlockType
);
[isValid] = validateBlock(migratedBlock, deprecatedBlockType);
}
if (!isValid) {
continue;
}
let migratedInnerBlocks = migratedBlock.innerBlocks;
let migratedAttributes = migratedBlock.attributes;
const { migrate } = deprecatedBlockType;
if (migrate) {
let migrated = migrate(migratedAttributes, block.innerBlocks);
if (!Array.isArray(migrated)) {
migrated = [migrated];
}
[
migratedAttributes = parsedAttributes,
migratedInnerBlocks = block.innerBlocks
] = migrated;
}
block = {
...block,
attributes: migratedAttributes,
innerBlocks: migratedInnerBlocks,
isValid: true,
validationIssues: []
};
}
return block;
}
// packages/blocks/build-module/api/parser/index.js
function convertLegacyBlocks(rawBlock) {
const [correctName, correctedAttributes] = convertLegacyBlockNameAndAttributes(
rawBlock.blockName,
rawBlock.attrs
);
return {
...rawBlock,
blockName: correctName,
attrs: correctedAttributes
};
}
function normalizeRawBlock(rawBlock, options) {
const fallbackBlockName = getFreeformContentHandlerName();
const rawBlockName = rawBlock.blockName || getFreeformContentHandlerName();
const rawAttributes = rawBlock.attrs || {};
const rawInnerBlocks = rawBlock.innerBlocks || [];
let rawInnerHTML = rawBlock.innerHTML.trim();
if (rawBlockName === fallbackBlockName && rawBlockName === "core/freeform" && !options?.__unstableSkipAutop) {
rawInnerHTML = (0, import_autop2.autop)(rawInnerHTML).trim();
}
return {
...rawBlock,
blockName: rawBlockName,
attrs: rawAttributes,
innerHTML: rawInnerHTML,
innerBlocks: rawInnerBlocks
};
}
function createMissingBlockType(rawBlock) {
const unregisteredFallbackBlock = getUnregisteredTypeHandlerName() || getFreeformContentHandlerName();
const originalUndelimitedContent = serializeRawBlock(rawBlock, {
isCommentDelimited: false
});
const originalContent = serializeRawBlock(rawBlock, {
isCommentDelimited: true
});
return {
blockName: unregisteredFallbackBlock,
attrs: {
originalName: rawBlock.blockName,
originalContent,
originalUndelimitedContent
},
innerHTML: rawBlock.blockName ? originalContent : rawBlock.innerHTML,
innerBlocks: rawBlock.innerBlocks,
innerContent: rawBlock.innerContent
};
}
function applyBlockValidation(unvalidatedBlock, blockType) {
const [isValid] = validateBlock(unvalidatedBlock, blockType);
if (isValid) {
return { ...unvalidatedBlock, isValid, validationIssues: [] };
}
const fixedBlock = applyBuiltInValidationFixes(
unvalidatedBlock,
blockType
);
const [isFixedValid, validationIssues] = validateBlock(
fixedBlock,
blockType
);
return { ...fixedBlock, isValid: isFixedValid, validationIssues };
}
function parseRawBlock(rawBlock, options) {
let normalizedBlock = normalizeRawBlock(rawBlock, options);
normalizedBlock = convertLegacyBlocks(normalizedBlock);
let blockType = getBlockType(normalizedBlock.blockName);
if (!blockType) {
normalizedBlock = createMissingBlockType(normalizedBlock);
blockType = getBlockType(normalizedBlock.blockName);
}
const isFallbackBlock = normalizedBlock.blockName === getFreeformContentHandlerName() || normalizedBlock.blockName === getUnregisteredTypeHandlerName();
if (!blockType || !normalizedBlock.innerHTML && isFallbackBlock) {
return;
}
const parsedInnerBlocks = normalizedBlock.innerBlocks.map((innerBlock) => parseRawBlock(innerBlock, options)).filter((innerBlock) => !!innerBlock);
const parsedBlock = createBlock(
normalizedBlock.blockName,
getBlockAttributes(
blockType,
normalizedBlock.innerHTML,
normalizedBlock.attrs
),
parsedInnerBlocks
);
parsedBlock.originalContent = normalizedBlock.innerHTML;
const validatedBlock = applyBlockValidation(parsedBlock, blockType);
const { validationIssues } = validatedBlock;
const updatedBlock = applyBlockDeprecatedVersions(
validatedBlock,
normalizedBlock,
blockType
);
if (!updatedBlock.isValid) {
updatedBlock.__unstableBlockSource = rawBlock;
}
if (!validatedBlock.isValid && updatedBlock.isValid && !options?.__unstableSkipMigrationLogs) {
console.groupCollapsed("Updated Block: %s", blockType.name);
console.info(
"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",
blockType.name,
blockType,
getSaveContent(blockType, updatedBlock.attributes),
updatedBlock.originalContent
);
console.groupEnd();
} else if (!validatedBlock.isValid && !updatedBlock.isValid) {
validationIssues.forEach(({ log: log2, args }) => log2(...args));
}
return updatedBlock;
}
function parse2(content, options) {
return (0, import_block_serialization_default_parser.parse)(content).reduce((accumulator, rawBlock) => {
const block = parseRawBlock(rawBlock, options);
if (block) {
accumulator.push(block);
}
return accumulator;
}, []);
}
// packages/blocks/build-module/api/raw-handling/index.js
var import_deprecated10 = __toESM(require_deprecated());
var import_dom12 = __toESM(require_dom());
// packages/blocks/build-module/api/raw-handling/html-to-blocks.js
var import_element4 = __toESM(require_element());
// packages/blocks/build-module/api/raw-handling/get-raw-transforms.js
function getRawTransforms() {
return getBlockTransforms("from").filter(({ type }) => type === "raw").map((transform) => {
return transform.isMatch ? transform : {
...transform,
isMatch: (node) => transform.selector && node.matches(transform.selector)
};
});
}
// packages/blocks/build-module/api/raw-handling/html-to-blocks.js
function htmlToBlocks(html2, handler) {
const doc = document.implementation.createHTMLDocument("");
doc.body.innerHTML = html2;
return Array.from(doc.body.children).flatMap((node) => {
const rawTransform = findTransform(
getRawTransforms(),
({ isMatch }) => isMatch(node)
);
if (!rawTransform) {
if (import_element4.Platform.isNative) {
return parse2(
`${node.outerHTML}`
);
}
return createBlock(
// Should not be hardcoded.
"core/html",
getBlockAttributes("core/html", node.outerHTML)
);
}
const { transform, blockName } = rawTransform;
if (transform) {
const block = transform(node, handler);
if (node.hasAttribute("class")) {
block.attributes.className = node.getAttribute("class");
}
return block;
}
return createBlock(
blockName,
getBlockAttributes(blockName, node.outerHTML)
);
});
}
// packages/blocks/build-module/api/raw-handling/normalise-blocks.js
var import_dom2 = __toESM(require_dom());
function normaliseBlocks(HTML, options = {}) {
const decuDoc = document.implementation.createHTMLDocument("");
const accuDoc = document.implementation.createHTMLDocument("");
const decu = decuDoc.body;
const accu = accuDoc.body;
decu.innerHTML = HTML;
while (decu.firstChild) {
const node = decu.firstChild;
if (node.nodeType === node.TEXT_NODE) {
if ((0, import_dom2.isEmpty)(node)) {
decu.removeChild(node);
} else {
if (!accu.lastChild || accu.lastChild.nodeName !== "P") {
accu.appendChild(accuDoc.createElement("P"));
}
accu.lastChild.appendChild(node);
}
} else if (node.nodeType === node.ELEMENT_NODE) {
if (node.nodeName === "BR") {
if (node.nextSibling && node.nextSibling.nodeName === "BR") {
accu.appendChild(accuDoc.createElement("P"));
decu.removeChild(node.nextSibling);
}
if (accu.lastChild && accu.lastChild.nodeName === "P" && accu.lastChild.hasChildNodes()) {
accu.lastChild.appendChild(node);
} else {
decu.removeChild(node);
}
} else if (node.nodeName === "P") {
if ((0, import_dom2.isEmpty)(node) && !options.raw) {
decu.removeChild(node);
} else {
accu.appendChild(node);
}
} else if ((0, import_dom2.isPhrasingContent)(node)) {
if (!accu.lastChild || accu.lastChild.nodeName !== "P") {
accu.appendChild(accuDoc.createElement("P"));
}
accu.lastChild.appendChild(node);
} else {
accu.appendChild(node);
}
} else {
decu.removeChild(node);
}
}
return accu.innerHTML;
}
// packages/blocks/build-module/api/raw-handling/special-comment-converter.js
var import_dom3 = __toESM(require_dom());
function specialCommentConverter(node, doc) {
if (node.nodeType !== node.COMMENT_NODE) {
return;
}
if (node.nodeValue !== "nextpage" && node.nodeValue.indexOf("more") !== 0) {
return;
}
const block = createBlock2(node, doc);
if (!node.parentNode || node.parentNode.nodeName !== "P") {
(0, import_dom3.replace)(node, block);
} else {
const childNodes = Array.from(node.parentNode.childNodes);
const nodeIndex = childNodes.indexOf(node);
const wrapperNode = node.parentNode.parentNode || doc.body;
const paragraphBuilder = (acc, child) => {
if (!acc) {
acc = doc.createElement("p");
}
acc.appendChild(child);
return acc;
};
[
childNodes.slice(0, nodeIndex).reduce(paragraphBuilder, null),
block,
childNodes.slice(nodeIndex + 1).reduce(paragraphBuilder, null)
].forEach(
(element) => element && wrapperNode.insertBefore(element, node.parentNode)
);
(0, import_dom3.remove)(node.parentNode);
}
}
function createBlock2(commentNode, doc) {
if (commentNode.nodeValue === "nextpage") {
return createNextpage(doc);
}
const customText = commentNode.nodeValue.slice(4).trim();
let sibling = commentNode;
let noTeaser = false;
while (sibling = sibling.nextSibling) {
if (sibling.nodeType === sibling.COMMENT_NODE && sibling.nodeValue === "noteaser") {
noTeaser = true;
(0, import_dom3.remove)(sibling);
break;
}
}
return createMore(customText, noTeaser, doc);
}
function createMore(customText, noTeaser, doc) {
const node = doc.createElement("wp-block");
node.dataset.block = "core/more";
if (customText) {
node.dataset.customText = customText;
}
if (noTeaser) {
node.dataset.noTeaser = "";
}
return node;
}
function createNextpage(doc) {
const node = doc.createElement("wp-block");
node.dataset.block = "core/nextpage";
return node;
}
// packages/blocks/build-module/api/raw-handling/list-reducer.js
var import_dom4 = __toESM(require_dom());
function isList(node) {
return node.nodeName === "OL" || node.nodeName === "UL";
}
function shallowTextContent(element) {
return Array.from(element.childNodes).map(({ nodeValue = "" }) => nodeValue).join("");
}
function listReducer(node) {
if (!isList(node)) {
return;
}
const list = node;
const prevElement = node.previousElementSibling;
if (prevElement && prevElement.nodeName === node.nodeName && list.children.length === 1) {
while (list.firstChild) {
prevElement.appendChild(list.firstChild);
}
list.parentNode.removeChild(list);
}
const parentElement = node.parentNode;
if (parentElement && parentElement.nodeName === "LI" && parentElement.children.length === 1 && !/\S/.test(shallowTextContent(parentElement))) {
const parentListItem = parentElement;
const prevListItem = parentListItem.previousElementSibling;
const parentList = parentListItem.parentNode;
if (prevListItem) {
prevListItem.appendChild(list);
parentList.removeChild(parentListItem);
}
}
if (parentElement && isList(parentElement)) {
const prevListItem = node.previousElementSibling;
if (prevListItem) {
prevListItem.appendChild(node);
} else {
(0, import_dom4.unwrap)(node);
}
}
}
// packages/blocks/build-module/api/raw-handling/blockquote-normaliser.js
function blockquoteNormaliser(options) {
return (node) => {
if (node.nodeName !== "BLOCKQUOTE") {
return;
}
node.innerHTML = normaliseBlocks(node.innerHTML, options);
};
}
// packages/blocks/build-module/api/raw-handling/figure-content-reducer.js
var import_dom5 = __toESM(require_dom());
function isFigureContent(node, schema) {
const tag = node.nodeName.toLowerCase();
if (tag === "figcaption" || (0, import_dom5.isTextContent)(node)) {
return false;
}
return tag in (schema?.figure?.children ?? {});
}
function canHaveAnchor(node, schema) {
const tag = node.nodeName.toLowerCase();
return tag in (schema?.figure?.children?.a?.children ?? {});
}
function wrapFigureContent(element, beforeElement = element) {
const figure = element.ownerDocument.createElement("figure");
beforeElement.parentNode.insertBefore(figure, beforeElement);
figure.appendChild(element);
}
function figureContentReducer(node, doc, schema) {
if (!isFigureContent(node, schema)) {
return;
}
let nodeToInsert = node;
const parentNode = node.parentNode;
if (canHaveAnchor(node, schema) && parentNode.nodeName === "A" && parentNode.childNodes.length === 1) {
nodeToInsert = node.parentNode;
}
const wrapper = nodeToInsert.closest("p,div");
if (wrapper) {
if (!node.classList) {
wrapFigureContent(nodeToInsert, wrapper);
} else if (node.classList.contains("alignright") || node.classList.contains("alignleft") || node.classList.contains("aligncenter") || !wrapper.textContent.trim()) {
wrapFigureContent(nodeToInsert, wrapper);
}
} else {
wrapFigureContent(nodeToInsert);
}
}
// packages/blocks/build-module/api/raw-handling/shortcode-converter.js
var import_shortcode = __toESM(require_shortcode());
var castArray = (maybeArray) => Array.isArray(maybeArray) ? maybeArray : [maybeArray];
var beforeLineRegexp = /(\n|)\s*$/;
var afterLineRegexp = /^\s*(\n|<\/p>)/;
function segmentHTMLToShortcodeBlock(HTML, lastIndex = 0, excludedBlockNames = []) {
const transformsFrom = getBlockTransforms("from");
const transformation = findTransform(
transformsFrom,
(transform) => excludedBlockNames.indexOf(transform.blockName) === -1 && transform.type === "shortcode" && castArray(transform.tag).some(
(tag) => (0, import_shortcode.regexp)(tag).test(HTML)
)
);
if (!transformation) {
return [HTML];
}
const transformTags = castArray(transformation.tag);
const transformTag = transformTags.find(
(tag) => (0, import_shortcode.regexp)(tag).test(HTML)
);
let match;
const previousIndex = lastIndex;
if (match = (0, import_shortcode.next)(transformTag, HTML, lastIndex)) {
lastIndex = match.index + match.content.length;
const beforeHTML = HTML.substr(0, match.index);
const afterHTML = HTML.substr(lastIndex);
if (!match.shortcode.content?.includes("<") && !(beforeLineRegexp.test(beforeHTML) && afterLineRegexp.test(afterHTML))) {
return segmentHTMLToShortcodeBlock(HTML, lastIndex);
}
if (transformation.isMatch && !transformation.isMatch(match.shortcode.attrs)) {
return segmentHTMLToShortcodeBlock(HTML, previousIndex, [
...excludedBlockNames,
transformation.blockName
]);
}
let blocks = [];
if (typeof transformation.transform === "function") {
blocks = [].concat(
transformation.transform(match.shortcode.attrs, match)
);
blocks = blocks.map((block) => {
block.originalContent = match.shortcode.content;
return applyBuiltInValidationFixes(
block,
getBlockType(block.name)
);
});
} else {
const attributes = Object.fromEntries(
Object.entries(transformation.attributes).filter(([, schema]) => schema.shortcode).map(([key, schema]) => [
key,
schema.shortcode(match.shortcode.attrs, match)
])
);
const blockType = getBlockType(transformation.blockName);
if (!blockType) {
return [HTML];
}
const transformationBlockType = {
...blockType,
attributes: transformation.attributes
};
let block = createBlock(
transformation.blockName,
getBlockAttributes(
transformationBlockType,
match.shortcode.content,
attributes
)
);
block.originalContent = match.shortcode.content;
block = applyBuiltInValidationFixes(
block,
transformationBlockType
);
blocks = [block];
}
return [
...segmentHTMLToShortcodeBlock(
beforeHTML.replace(beforeLineRegexp, "")
),
...blocks,
...segmentHTMLToShortcodeBlock(
afterHTML.replace(afterLineRegexp, "")
)
];
}
return [HTML];
}
var shortcode_converter_default = segmentHTMLToShortcodeBlock;
// packages/blocks/build-module/api/raw-handling/utils.js
var import_dom6 = __toESM(require_dom());
function getBlockContentSchemaFromTransforms(transforms, context) {
const phrasingContentSchema = (0, import_dom6.getPhrasingContentSchema)(context);
const schemaArgs = { phrasingContentSchema, isPaste: context === "paste" };
const schemas = transforms.map(({ isMatch, blockName, schema }) => {
const hasAnchorSupport = hasBlockSupport(blockName, "anchor");
schema = typeof schema === "function" ? schema(schemaArgs) : schema;
if (!hasAnchorSupport && !isMatch) {
return schema;
}
if (!schema) {
return {};
}
return Object.fromEntries(
Object.entries(schema).map(([key, value]) => {
let attributes = value.attributes || [];
if (hasAnchorSupport) {
attributes = [...attributes, "id"];
}
return [
key,
{
...value,
attributes,
isMatch: isMatch ? isMatch : void 0
}
];
})
);
});
function mergeTagNameSchemaProperties(objValue, srcValue, key) {
switch (key) {
case "children": {
if (objValue === "*" || srcValue === "*") {
return "*";
}
return { ...objValue, ...srcValue };
}
case "attributes":
case "require": {
return [...objValue || [], ...srcValue || []];
}
case "isMatch": {
if (!objValue || !srcValue) {
return void 0;
}
return (...args) => {
return objValue(...args) || srcValue(...args);
};
}
}
}
function mergeTagNameSchemas(a2, b2) {
for (const key in b2) {
a2[key] = a2[key] ? mergeTagNameSchemaProperties(a2[key], b2[key], key) : { ...b2[key] };
}
return a2;
}
function mergeSchemas(a2, b2) {
for (const key in b2) {
a2[key] = a2[key] ? mergeTagNameSchemas(a2[key], b2[key]) : { ...b2[key] };
}
return a2;
}
return schemas.reduce(mergeSchemas, {});
}
function getBlockContentSchema(context) {
return getBlockContentSchemaFromTransforms(getRawTransforms(), context);
}
function isPlain(HTML) {
if (!/<(?!br[ />])/i.test(HTML)) {
return true;
}
const doc = document.implementation.createHTMLDocument("");
doc.body.innerHTML = HTML;
if (doc.body.children.length !== 1) {
return false;
}
const wrapper = doc.body.children.item(0);
const descendants = wrapper.getElementsByTagName("*");
for (let i2 = 0; i2 < descendants.length; i2++) {
if (descendants.item(i2).tagName !== "BR") {
return false;
}
}
if (wrapper.tagName !== "SPAN") {
return false;
}
return true;
}
function deepFilterNodeList(nodeList, filters, doc, schema) {
Array.from(nodeList).forEach((node) => {
deepFilterNodeList(node.childNodes, filters, doc, schema);
filters.forEach((item) => {
if (!doc.contains(node)) {
return;
}
item(node, doc, schema);
});
});
}
function deepFilterHTML(HTML, filters = [], schema) {
const doc = document.implementation.createHTMLDocument("");
doc.body.innerHTML = HTML;
deepFilterNodeList(doc.body.childNodes, filters, doc, schema);
return doc.body.innerHTML;
}
function getSibling(node, which) {
const sibling = node[`${which}Sibling`];
if (sibling && (0, import_dom6.isPhrasingContent)(sibling)) {
return sibling;
}
const { parentNode } = node;
if (!parentNode || !(0, import_dom6.isPhrasingContent)(parentNode)) {
return;
}
return getSibling(parentNode, which);
}
// packages/blocks/build-module/api/raw-handling/paste-handler.js
var import_dom11 = __toESM(require_dom());
// packages/blocks/build-module/api/raw-handling/comment-remover.js
var import_dom7 = __toESM(require_dom());
function commentRemover(node) {
if (node.nodeType === node.COMMENT_NODE) {
(0, import_dom7.remove)(node);
}
}
// packages/blocks/build-module/api/raw-handling/is-inline-content.js
var import_dom8 = __toESM(require_dom());
function isInline(node, contextTag) {
if ((0, import_dom8.isTextContent)(node)) {
return true;
}
if (!contextTag) {
return false;
}
const tag = node.nodeName.toLowerCase();
const inlineAllowedTagGroups = [
["ul", "li", "ol"],
["h1", "h2", "h3", "h4", "h5", "h6"]
];
return inlineAllowedTagGroups.some(
(tagGroup) => [tag, contextTag].filter((t3) => !tagGroup.includes(t3)).length === 0
);
}
function deepCheck(nodes, contextTag) {
return nodes.every(
(node) => isInline(node, contextTag) && deepCheck(Array.from(node.children), contextTag)
);
}
function isDoubleBR(node) {
return node.nodeName === "BR" && node.previousSibling && node.previousSibling.nodeName === "BR";
}
function isInlineContent(HTML, contextTag) {
const doc = document.implementation.createHTMLDocument("");
doc.body.innerHTML = HTML;
const nodes = Array.from(doc.body.children);
return !nodes.some(isDoubleBR) && deepCheck(nodes, contextTag);
}
// packages/blocks/build-module/api/raw-handling/phrasing-content-reducer.js
var import_dom9 = __toESM(require_dom());
function phrasingContentReducer(node, doc) {
if (node.nodeName === "SPAN" && node.style) {
const {
fontWeight,
fontStyle,
textDecorationLine,
textDecoration,
verticalAlign
} = node.style;
if (fontWeight === "bold" || fontWeight === "700") {
(0, import_dom9.wrap)(doc.createElement("strong"), node);
}
if (fontStyle === "italic") {
(0, import_dom9.wrap)(doc.createElement("em"), node);
}
if (textDecorationLine === "line-through" || textDecoration.includes("line-through")) {
(0, import_dom9.wrap)(doc.createElement("s"), node);
}
if (verticalAlign === "super") {
(0, import_dom9.wrap)(doc.createElement("sup"), node);
} else if (verticalAlign === "sub") {
(0, import_dom9.wrap)(doc.createElement("sub"), node);
}
} else if (node.nodeName === "B") {
node = (0, import_dom9.replaceTag)(node, "strong");
} else if (node.nodeName === "I") {
node = (0, import_dom9.replaceTag)(node, "em");
} else if (node.nodeName === "A") {
if (node.target && node.target.toLowerCase() === "_blank") {
node.rel = "noreferrer noopener";
} else {
node.removeAttribute("target");
node.removeAttribute("rel");
}
if (node.name && !node.id) {
node.id = node.name;
}
if (node.id && !node.ownerDocument.querySelector(`[href="#${node.id}"]`)) {
node.removeAttribute("id");
}
}
}
// packages/blocks/build-module/api/raw-handling/head-remover.js
function headRemover(node) {
if (node.nodeName !== "SCRIPT" && node.nodeName !== "NOSCRIPT" && node.nodeName !== "TEMPLATE" && node.nodeName !== "STYLE") {
return;
}
node.parentNode.removeChild(node);
}
// packages/blocks/build-module/api/raw-handling/ms-list-ignore.js
function msListIgnore(node) {
if (node.nodeType !== node.ELEMENT_NODE) {
return;
}
const style = node.getAttribute("style");
if (!style || !style.includes("mso-list")) {
return;
}
const rules = style.split(";").reduce((acc, rule) => {
const [key, value] = rule.split(":");
if (key && value) {
acc[key.trim().toLowerCase()] = value.trim().toLowerCase();
}
return acc;
}, {});
if (rules["mso-list"] === "ignore") {
node.remove();
}
}
// packages/blocks/build-module/api/raw-handling/ms-list-converter.js
function isList2(node) {
return node.nodeName === "OL" || node.nodeName === "UL";
}
function msListConverter(node, doc) {
if (node.nodeName !== "P") {
return;
}
const style = node.getAttribute("style");
if (!style || !style.includes("mso-list")) {
return;
}
const prevNode = node.previousElementSibling;
if (!prevNode || !isList2(prevNode)) {
const type = node.textContent.trim().slice(0, 1);
const isNumeric = /[1iIaA]/.test(type);
const newListNode = doc.createElement(isNumeric ? "ol" : "ul");
if (isNumeric) {
newListNode.setAttribute("type", type);
}
node.parentNode.insertBefore(newListNode, node);
}
const listNode = node.previousElementSibling;
const listType = listNode.nodeName;
const listItem = doc.createElement("li");
let receivingNode = listNode;
listItem.innerHTML = deepFilterHTML(node.innerHTML, [msListIgnore]);
const matches = /mso-list\s*:[^;]+level([0-9]+)/i.exec(style);
let level = matches ? parseInt(matches[1], 10) - 1 || 0 : 0;
while (level--) {
receivingNode = receivingNode.lastChild || receivingNode;
if (isList2(receivingNode)) {
receivingNode = receivingNode.lastChild || receivingNode;
}
}
if (!isList2(receivingNode)) {
receivingNode = receivingNode.appendChild(
doc.createElement(listType)
);
}
receivingNode.appendChild(listItem);
node.parentNode.removeChild(node);
}
// packages/blocks/build-module/api/raw-handling/image-corrector.js
var import_blob = __toESM(require_blob());
function imageCorrector(node) {
if (node.nodeName !== "IMG") {
return;
}
if (node.src.indexOf("file:") === 0) {
node.src = "";
}
if (node.src.indexOf("data:") === 0) {
const [properties, data] = node.src.split(",");
const [type] = properties.slice(5).split(";");
if (!data || !type) {
node.src = "";
return;
}
let decoded;
try {
decoded = atob(data);
} catch (e2) {
node.src = "";
return;
}
const uint8Array = new Uint8Array(decoded.length);
for (let i2 = 0; i2 < uint8Array.length; i2++) {
uint8Array[i2] = decoded.charCodeAt(i2);
}
const name = type.replace("/", ".");
const file = new window.File([uint8Array], name, { type });
node.src = (0, import_blob.createBlobURL)(file);
}
if (node.height === 1 || node.width === 1) {
node.parentNode.removeChild(node);
}
}
// packages/blocks/build-module/api/raw-handling/div-normaliser.js
function divNormaliser(node) {
if (node.nodeName !== "DIV") {
return;
}
node.innerHTML = normaliseBlocks(node.innerHTML);
}
// packages/blocks/build-module/api/raw-handling/markdown-converter.js
var import_showdown = __toESM(require_showdown());
var converter = new import_showdown.default.Converter({
noHeaderId: true,
tables: true,
literalMidWordUnderscores: true,
omitExtraWLInCodeBlocks: true,
simpleLineBreaks: true,
strikethrough: true
});
function slackMarkdownVariantCorrector(text2) {
return text2.replace(
/((?:^|\n)```)([^\n`]+)(```(?:$|\n))/,
(match, p1, p2, p3) => `${p1}
${p2}
${p3}`
);
}
function bulletsToAsterisks(text2) {
return text2.replace(/(^|\n)•( +)/g, "$1*$2");
}
function markdownConverter(text2) {
return converter.makeHtml(
slackMarkdownVariantCorrector(bulletsToAsterisks(text2))
);
}
// packages/blocks/build-module/api/raw-handling/iframe-remover.js
function iframeRemover(node) {
if (node.nodeName === "IFRAME") {
const text2 = node.ownerDocument.createTextNode(node.src);
node.parentNode.replaceChild(text2, node);
}
}
// packages/blocks/build-module/api/raw-handling/google-docs-uid-remover.js
var import_dom10 = __toESM(require_dom());
function googleDocsUIdRemover(node) {
if (!node.id || node.id.indexOf("docs-internal-guid-") !== 0) {
return;
}
if (node.tagName === "B") {
(0, import_dom10.unwrap)(node);
} else {
node.removeAttribute("id");
}
}
// packages/blocks/build-module/api/raw-handling/html-formatting-remover.js
function isFormattingSpace(character) {
return character === " " || character === "\r" || character === "\n" || character === " ";
}
function htmlFormattingRemover(node) {
if (node.nodeType !== node.TEXT_NODE) {
return;
}
let parent = node;
while (parent = parent.parentNode) {
if (parent.nodeType === parent.ELEMENT_NODE && parent.nodeName === "PRE") {
return;
}
}
let newData = node.data.replace(/[ \r\n\t]+/g, " ");
if (newData[0] === " ") {
const previousSibling = getSibling(node, "previous");
if (!previousSibling || previousSibling.nodeName === "BR" || previousSibling.textContent.slice(-1) === " ") {
newData = newData.slice(1);
}
}
if (newData[newData.length - 1] === " ") {
const nextSibling = getSibling(node, "next");
if (!nextSibling || nextSibling.nodeName === "BR" || nextSibling.nodeType === nextSibling.TEXT_NODE && isFormattingSpace(nextSibling.textContent[0])) {
newData = newData.slice(0, -1);
}
}
if (!newData) {
node.parentNode.removeChild(node);
} else {
node.data = newData;
}
}
// packages/blocks/build-module/api/raw-handling/br-remover.js
function brRemover(node) {
if (node.nodeName !== "BR") {
return;
}
if (getSibling(node, "next")) {
return;
}
node.parentNode.removeChild(node);
}
// packages/blocks/build-module/api/raw-handling/empty-paragraph-remover.js
function emptyParagraphRemover(node) {
if (node.nodeName !== "P") {
return;
}
if (node.hasChildNodes()) {
return;
}
node.parentNode.removeChild(node);
}
// packages/blocks/build-module/api/raw-handling/slack-paragraph-corrector.js
function slackParagraphCorrector(node) {
if (node.nodeName !== "SPAN") {
return;
}
if (node.getAttribute("data-stringify-type") !== "paragraph-break") {
return;
}
const { parentNode } = node;
parentNode.insertBefore(node.ownerDocument.createElement("br"), node);
parentNode.insertBefore(node.ownerDocument.createElement("br"), node);
parentNode.removeChild(node);
}
// packages/blocks/build-module/api/raw-handling/latex-to-math.js
function isLatexMathMode(text2) {
const lettersRegex = /[\p{L}\s]+/gu;
let match;
while (match = lettersRegex.exec(text2)) {
if (text2[match.index - 1] === "{") {
continue;
}
let sequence = match[0];
if (text2[match.index - 1] === "\\") {
sequence = sequence.replace(/^[a-zA-Z]+/, "");
}
if (sequence.length < 6) {
continue;
}
return false;
}
if (/\\[a-zA-Z]+\s*\{/g.test(text2)) {
return true;
}
const softClues = [
(t3) => t3.includes("^") && !t3.startsWith("^"),
(t3) => ["=", "+", "-", "/", "*"].some(
(operator) => t3.includes(operator)
),
(t3) => /\\[a-zA-Z]+/g.test(t3)
];
if (softClues.filter((clue) => clue(text2)).length >= 2) {
return true;
}
return false;
}
// packages/blocks/build-module/api/raw-handling/heading-transformer.js
function headingTransformer(node) {
if (node.nodeType !== node.ELEMENT_NODE) {
return;
}
if (node.tagName === "P" && node.getAttribute("role") === "heading" && node.hasAttribute("aria-level")) {
const level = parseInt(node.getAttribute("aria-level"), 10);
if (level >= 1 && level <= 6) {
const headingTag = `H${level}`;
const newHeading = node.ownerDocument.createElement(headingTag);
Array.from(node.attributes).forEach((attr2) => {
if (attr2.name !== "role" && attr2.name !== "aria-level") {
newHeading.setAttribute(attr2.name, attr2.value);
}
});
while (node.firstChild) {
newHeading.appendChild(node.firstChild);
}
node.parentNode.replaceChild(newHeading, node);
}
}
}
// packages/blocks/build-module/api/raw-handling/paste-handler.js
var log = (...args) => window?.console?.log?.(...args);
function filterInlineHTML(HTML) {
HTML = deepFilterHTML(HTML, [
headRemover,
googleDocsUIdRemover,
msListIgnore,
phrasingContentReducer,
commentRemover
]);
HTML = (0, import_dom11.removeInvalidHTML)(HTML, (0, import_dom11.getPhrasingContentSchema)("paste"), {
inline: true
});
HTML = deepFilterHTML(HTML, [htmlFormattingRemover, brRemover]);
log("Processed inline HTML:\n\n", HTML);
return HTML;
}
function pasteHandler({
HTML = "",
plainText = "",
mode = "AUTO",
tagName
}) {
HTML = HTML.replace(/]+>/g, "");
HTML = HTML.replace(
/^\s*]*>\s*
]*>(?:\s*)?/i,
""
);
HTML = HTML.replace(
/(?:\s*)?<\/body>\s*<\/html>\s*$/i,
""
);
if (mode !== "INLINE") {
const content = HTML ? HTML : plainText;
if (content.indexOf("