| 1 |
"use strict"; |
| 2 |
var wp; |
| 3 |
(wp ||= {}).autop = (() => { |
| 4 |
var __defProp = Object.defineProperty; |
| 5 |
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; |
| 6 |
var __getOwnPropNames = Object.getOwnPropertyNames; |
| 7 |
var __hasOwnProp = Object.prototype.hasOwnProperty; |
| 8 |
var __export = (target, all) => { |
| 9 |
for (var name in all) |
| 10 |
__defProp(target, name, { get: all[name], enumerable: true }); |
| 11 |
}; |
| 12 |
var __copyProps = (to, from, except, desc) => { |
| 13 |
if (from && typeof from === "object" || typeof from === "function") { |
| 14 |
for (let key of __getOwnPropNames(from)) |
| 15 |
if (!__hasOwnProp.call(to, key) && key !== except) |
| 16 |
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); |
| 17 |
} |
| 18 |
return to; |
| 19 |
}; |
| 20 |
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); |
| 21 |
|
| 22 |
// packages/autop/build-module/index.mjs |
| 23 |
var index_exports = {}; |
| 24 |
__export(index_exports, { |
| 25 |
autop: () => autop, |
| 26 |
removep: () => removep |
| 27 |
}); |
| 28 |
var htmlSplitRegex = (() => { |
| 29 |
const comments = "!(?:-(?!->)[^\\-]*)*(?:-->)?"; |
| 30 |
const cdata = "!\\[CDATA\\[[^\\]]*(?:](?!]>)[^\\]]*)*?(?:]]>)?"; |
| 31 |
const escaped = "(?=!--|!\\[CDATA\\[)((?=!-)" + // If yes, which type? |
| 32 |
comments + "|" + cdata + ")"; |
| 33 |
const regex = "(<(" + // Conditional expression follows. |
| 34 |
escaped + // Find end of escaped element. |
| 35 |
"|[^>]*>?))"; |
| 36 |
return new RegExp(regex); |
| 37 |
})(); |
| 38 |
function htmlSplit(input) { |
| 39 |
const parts = []; |
| 40 |
let workingInput = input; |
| 41 |
let match; |
| 42 |
while (match = workingInput.match(htmlSplitRegex)) { |
| 43 |
const index = match.index; |
| 44 |
parts.push(workingInput.slice(0, index)); |
| 45 |
parts.push(match[0]); |
| 46 |
workingInput = workingInput.slice(index + match[0].length); |
| 47 |
} |
| 48 |
if (workingInput.length) { |
| 49 |
parts.push(workingInput); |
| 50 |
} |
| 51 |
return parts; |
| 52 |
} |
| 53 |
function replaceInHtmlTags(haystack, replacePairs) { |
| 54 |
const textArr = htmlSplit(haystack); |
| 55 |
let changed = false; |
| 56 |
const needles = Object.keys(replacePairs); |
| 57 |
for (let i = 1; i < textArr.length; i += 2) { |
| 58 |
for (let j = 0; j < needles.length; j++) { |
| 59 |
const needle = needles[j]; |
| 60 |
if (-1 !== textArr[i].indexOf(needle)) { |
| 61 |
textArr[i] = textArr[i].replace( |
| 62 |
new RegExp(needle, "g"), |
| 63 |
replacePairs[needle] |
| 64 |
); |
| 65 |
changed = true; |
| 66 |
break; |
| 67 |
} |
| 68 |
} |
| 69 |
} |
| 70 |
if (changed) { |
| 71 |
haystack = textArr.join(""); |
| 72 |
} |
| 73 |
return haystack; |
| 74 |
} |
| 75 |
function autop(text, br = true) { |
| 76 |
const preTags = []; |
| 77 |
if (text.trim() === "") { |
| 78 |
return ""; |
| 79 |
} |
| 80 |
text = text + "\n"; |
| 81 |
if (text.indexOf("<pre") !== -1) { |
| 82 |
const textParts = text.split("</pre>"); |
| 83 |
const lastText = textParts.pop(); |
| 84 |
text = ""; |
| 85 |
for (let i = 0; i < textParts.length; i++) { |
| 86 |
const textPart = textParts[i]; |
| 87 |
const start = textPart.indexOf("<pre"); |
| 88 |
if (start === -1) { |
| 89 |
text += textPart; |
| 90 |
continue; |
| 91 |
} |
| 92 |
const name = "<pre wp-pre-tag-" + i + "></pre>"; |
| 93 |
preTags.push([name, textPart.substr(start) + "</pre>"]); |
| 94 |
text += textPart.substr(0, start) + name; |
| 95 |
} |
| 96 |
text += lastText; |
| 97 |
} |
| 98 |
text = text.replace(/<br\s*\/?>\s*<br\s*\/?>/g, "\n\n"); |
| 99 |
const allBlocks = "(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)"; |
| 100 |
text = text.replace( |
| 101 |
new RegExp("(<" + allBlocks + "[\\s/>])", "g"), |
| 102 |
"\n\n$1" |
| 103 |
); |
| 104 |
text = text.replace( |
| 105 |
new RegExp("(</" + allBlocks + ">)", "g"), |
| 106 |
"$1\n\n" |
| 107 |
); |
| 108 |
text = text.replace(/\r\n|\r/g, "\n"); |
| 109 |
text = replaceInHtmlTags(text, { "\n": " <!-- wpnl --> " }); |
| 110 |
if (text.indexOf("<option") !== -1) { |
| 111 |
text = text.replace(/\s*<option/g, "<option"); |
| 112 |
text = text.replace(/<\/option>\s*/g, "</option>"); |
| 113 |
} |
| 114 |
if (text.indexOf("</object>") !== -1) { |
| 115 |
text = text.replace(/(<object[^>]*>)\s*/g, "$1"); |
| 116 |
text = text.replace(/\s*<\/object>/g, "</object>"); |
| 117 |
text = text.replace(/\s*(<\/?(?:param|embed)[^>]*>)\s*/g, "$1"); |
| 118 |
} |
| 119 |
if (text.indexOf("<source") !== -1 || text.indexOf("<track") !== -1) { |
| 120 |
text = text.replace(/([<\[](?:audio|video)[^>\]]*[>\]])\s*/g, "$1"); |
| 121 |
text = text.replace(/\s*([<\[]\/(?:audio|video)[>\]])/g, "$1"); |
| 122 |
text = text.replace(/\s*(<(?:source|track)[^>]*>)\s*/g, "$1"); |
| 123 |
} |
| 124 |
if (text.indexOf("<figcaption") !== -1) { |
| 125 |
text = text.replace(/\s*(<figcaption[^>]*>)/, "$1"); |
| 126 |
text = text.replace(/<\/figcaption>\s*/, "</figcaption>"); |
| 127 |
} |
| 128 |
text = text.replace(/\n\n+/g, "\n\n"); |
| 129 |
const texts = text.split(/\n\s*\n/).filter(Boolean); |
| 130 |
text = ""; |
| 131 |
texts.forEach((textPiece) => { |
| 132 |
text += "<p>" + textPiece.replace(/^\n*|\n*$/g, "") + "</p>\n"; |
| 133 |
}); |
| 134 |
text = text.replace(/<p>\s*<\/p>/g, ""); |
| 135 |
text = text.replace( |
| 136 |
/<p>([^<]+)<\/(div|address|form)>/g, |
| 137 |
"<p>$1</p></$2>" |
| 138 |
); |
| 139 |
text = text.replace( |
| 140 |
new RegExp("<p>\\s*(</?" + allBlocks + "[^>]*>)\\s*</p>", "g"), |
| 141 |
"$1" |
| 142 |
); |
| 143 |
text = text.replace(/<p>(<li.+?)<\/p>/g, "$1"); |
| 144 |
text = text.replace(/<p><blockquote([^>]*)>/gi, "<blockquote$1><p>"); |
| 145 |
text = text.replace(/<\/blockquote><\/p>/g, "</p></blockquote>"); |
| 146 |
text = text.replace( |
| 147 |
new RegExp("<p>\\s*(</?" + allBlocks + "[^>]*>)", "g"), |
| 148 |
"$1" |
| 149 |
); |
| 150 |
text = text.replace( |
| 151 |
new RegExp("(</?" + allBlocks + "[^>]*>)\\s*</p>", "g"), |
| 152 |
"$1" |
| 153 |
); |
| 154 |
if (br) { |
| 155 |
text = text.replace( |
| 156 |
/<(script|style).*?<\/\\1>/g, |
| 157 |
(match) => match[0].replace(/\n/g, "<WPPreserveNewline />") |
| 158 |
); |
| 159 |
text = text.replace(/<br>|<br\/>/g, "<br />"); |
| 160 |
text = text.replace( |
| 161 |
/(<br \/>)?\s*\n/g, |
| 162 |
(a, b) => b ? a : "<br />\n" |
| 163 |
); |
| 164 |
text = text.replace(/<WPPreserveNewline \/>/g, "\n"); |
| 165 |
} |
| 166 |
text = text.replace( |
| 167 |
new RegExp("(</?" + allBlocks + "[^>]*>)\\s*<br />", "g"), |
| 168 |
"$1" |
| 169 |
); |
| 170 |
text = text.replace( |
| 171 |
/<br \/>(\s*<\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)/g, |
| 172 |
"$1" |
| 173 |
); |
| 174 |
text = text.replace(/\n<\/p>$/g, "</p>"); |
| 175 |
preTags.forEach((preTag) => { |
| 176 |
const [name, original] = preTag; |
| 177 |
text = text.replace(name, () => original); |
| 178 |
}); |
| 179 |
if (-1 !== text.indexOf("<!-- wpnl -->")) { |
| 180 |
text = text.replace(/\s?<!-- wpnl -->\s?/g, "\n"); |
| 181 |
} |
| 182 |
return text; |
| 183 |
} |
| 184 |
function removep(html) { |
| 185 |
const blocklist = "blockquote|ul|ol|li|dl|dt|dd|table|thead|tbody|tfoot|tr|th|td|h[1-6]|fieldset|figure"; |
| 186 |
const blocklist1 = blocklist + "|div|p"; |
| 187 |
const blocklist2 = blocklist + "|pre"; |
| 188 |
const preserve = []; |
| 189 |
let preserveLinebreaks = false; |
| 190 |
let preserveBr = false; |
| 191 |
if (!html) { |
| 192 |
return ""; |
| 193 |
} |
| 194 |
if (html.indexOf("<script") !== -1 || html.indexOf("<style") !== -1) { |
| 195 |
html = html.replace( |
| 196 |
/<(script|style)[^>]*>[\s\S]*?<\/\1>/g, |
| 197 |
(match) => { |
| 198 |
preserve.push(match); |
| 199 |
return "<wp-preserve>"; |
| 200 |
} |
| 201 |
); |
| 202 |
} |
| 203 |
if (html.indexOf("<pre") !== -1) { |
| 204 |
preserveLinebreaks = true; |
| 205 |
html = html.replace(/<pre[^>]*>[\s\S]+?<\/pre>/g, (a) => { |
| 206 |
a = a.replace(/<br ?\/?>(\r\n|\n)?/g, "<wp-line-break>"); |
| 207 |
a = a.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g, "<wp-line-break>"); |
| 208 |
return a.replace(/\r?\n/g, "<wp-line-break>"); |
| 209 |
}); |
| 210 |
} |
| 211 |
if (html.indexOf("[caption") !== -1) { |
| 212 |
preserveBr = true; |
| 213 |
html = html.replace(/\[caption[\s\S]+?\[\/caption\]/g, (a) => { |
| 214 |
return a.replace(/<br([^>]*)>/g, "<wp-temp-br$1>").replace(/[\r\n\t]+/, ""); |
| 215 |
}); |
| 216 |
} |
| 217 |
html = html.replace( |
| 218 |
new RegExp("\\s*</(" + blocklist1 + ")>\\s*", "g"), |
| 219 |
"</$1>\n" |
| 220 |
); |
| 221 |
html = html.replace( |
| 222 |
new RegExp("\\s*<((?:" + blocklist1 + ")(?: [^>]*)?)>", "g"), |
| 223 |
"\n<$1>" |
| 224 |
); |
| 225 |
html = html.replace(/(<p [^>]+>[\s\S]*?)<\/p>/g, "$1</p#>"); |
| 226 |
html = html.replace(/<div( [^>]*)?>\s*<p>/gi, "<div$1>\n\n"); |
| 227 |
html = html.replace(/\s*<p>/gi, ""); |
| 228 |
html = html.replace(/\s*<\/p>\s*/gi, "\n\n"); |
| 229 |
html = html.replace(/\n[\s\u00a0]+\n/g, "\n\n"); |
| 230 |
html = html.replace(/(\s*)<br ?\/?>\s*/gi, (_, space) => { |
| 231 |
if (space && space.indexOf("\n") !== -1) { |
| 232 |
return "\n\n"; |
| 233 |
} |
| 234 |
return "\n"; |
| 235 |
}); |
| 236 |
html = html.replace(/\s*<div/g, "\n<div"); |
| 237 |
html = html.replace(/<\/div>\s*/g, "</div>\n"); |
| 238 |
html = html.replace( |
| 239 |
/\s*\[caption([^\[]+)\[\/caption\]\s*/gi, |
| 240 |
"\n\n[caption$1[/caption]\n\n" |
| 241 |
); |
| 242 |
html = html.replace(/caption\]\n\n+\[caption/g, "caption]\n\n[caption"); |
| 243 |
html = html.replace( |
| 244 |
new RegExp("\\s*<((?:" + blocklist2 + ")(?: [^>]*)?)\\s*>", "g"), |
| 245 |
"\n<$1>" |
| 246 |
); |
| 247 |
html = html.replace( |
| 248 |
new RegExp("\\s*</(" + blocklist2 + ")>\\s*", "g"), |
| 249 |
"</$1>\n" |
| 250 |
); |
| 251 |
html = html.replace(/<((li|dt|dd)[^>]*)>/g, " <$1>"); |
| 252 |
if (html.indexOf("<option") !== -1) { |
| 253 |
html = html.replace(/\s*<option/g, "\n<option"); |
| 254 |
html = html.replace(/\s*<\/select>/g, "\n</select>"); |
| 255 |
} |
| 256 |
if (html.indexOf("<hr") !== -1) { |
| 257 |
html = html.replace(/\s*<hr( [^>]*)?>\s*/g, "\n\n<hr$1>\n\n"); |
| 258 |
} |
| 259 |
if (html.indexOf("<object") !== -1) { |
| 260 |
html = html.replace(/<object[\s\S]+?<\/object>/g, (a) => { |
| 261 |
return a.replace(/[\r\n]+/g, ""); |
| 262 |
}); |
| 263 |
} |
| 264 |
html = html.replace(/<\/p#>/g, "</p>\n"); |
| 265 |
html = html.replace(/\s*(<p [^>]+>[\s\S]*?<\/p>)/g, "\n$1"); |
| 266 |
html = html.replace(/^\s+/, ""); |
| 267 |
html = html.replace(/[\s\u00a0]+$/, ""); |
| 268 |
if (preserveLinebreaks) { |
| 269 |
html = html.replace(/<wp-line-break>/g, "\n"); |
| 270 |
} |
| 271 |
if (preserveBr) { |
| 272 |
html = html.replace(/<wp-temp-br([^>]*)>/g, "<br$1>"); |
| 273 |
} |
| 274 |
if (preserve.length) { |
| 275 |
html = html.replace(/<wp-preserve>/g, () => { |
| 276 |
return preserve.shift(); |
| 277 |
}); |
| 278 |
} |
| 279 |
return html; |
| 280 |
} |
| 281 |
return __toCommonJS(index_exports); |
| 282 |
})(); |
| 283 |
//# sourceMappingURL=index.js.map |
| 284 |
|