@wordpress/blocks
Version:
Block API for WordPress.
90 lines (88 loc) • 3.07 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
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 __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// packages/blocks/src/api/raw-handling/special-comment-converter.js
var special_comment_converter_exports = {};
__export(special_comment_converter_exports, {
default: () => specialCommentConverter
});
module.exports = __toCommonJS(special_comment_converter_exports);
var import_dom = require("@wordpress/dom");
function specialCommentConverter(node, doc) {
if (node.nodeType !== node.COMMENT_NODE) {
return;
}
if (node.nodeValue !== "nextpage" && node.nodeValue.indexOf("more") !== 0) {
return;
}
const block = createBlock(node, doc);
if (!node.parentNode || node.parentNode.nodeName !== "P") {
(0, import_dom.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_dom.remove)(node.parentNode);
}
}
function createBlock(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_dom.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;
}
//# sourceMappingURL=special-comment-converter.js.map