UNPKG

@wordpress/blocks

Version:
185 lines (183 loc) 8.13 kB
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 __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); // packages/blocks/src/api/raw-handling/paste-handler.js var paste_handler_exports = {}; __export(paste_handler_exports, { pasteHandler: () => pasteHandler }); module.exports = __toCommonJS(paste_handler_exports); var import_dom = require("@wordpress/dom"); var import_html_to_blocks = require("./html-to-blocks"); var import_registration = require("../registration"); var import_serializer = require("../serializer"); var import_parser = __toESM(require("../parser")); var import_normalise_blocks = __toESM(require("./normalise-blocks")); var import_special_comment_converter = __toESM(require("./special-comment-converter")); var import_comment_remover = __toESM(require("./comment-remover")); var import_is_inline_content = __toESM(require("./is-inline-content")); var import_phrasing_content_reducer = __toESM(require("./phrasing-content-reducer")); var import_head_remover = __toESM(require("./head-remover")); var import_ms_list_converter = __toESM(require("./ms-list-converter")); var import_ms_list_ignore = __toESM(require("./ms-list-ignore")); var import_list_reducer = __toESM(require("./list-reducer")); var import_image_corrector = __toESM(require("./image-corrector")); var import_blockquote_normaliser = __toESM(require("./blockquote-normaliser")); var import_div_normaliser = __toESM(require("./div-normaliser")); var import_figure_content_reducer = __toESM(require("./figure-content-reducer")); var import_shortcode_converter = __toESM(require("./shortcode-converter")); var import_markdown_converter = __toESM(require("./markdown-converter")); var import_iframe_remover = __toESM(require("./iframe-remover")); var import_google_docs_uid_remover = __toESM(require("./google-docs-uid-remover")); var import_html_formatting_remover = __toESM(require("./html-formatting-remover")); var import_br_remover = __toESM(require("./br-remover")); var import_utils = require("./utils"); var import_empty_paragraph_remover = __toESM(require("./empty-paragraph-remover")); var import_slack_paragraph_corrector = __toESM(require("./slack-paragraph-corrector")); var import_latex_to_math = __toESM(require("./latex-to-math")); var import_factory = require("../factory"); var log = (...args) => window?.console?.log?.(...args); function filterInlineHTML(HTML) { HTML = (0, import_utils.deepFilterHTML)(HTML, [ import_head_remover.default, import_google_docs_uid_remover.default, import_ms_list_ignore.default, import_phrasing_content_reducer.default, import_comment_remover.default ]); HTML = (0, import_dom.removeInvalidHTML)(HTML, (0, import_dom.getPhrasingContentSchema)("paste"), { inline: true }); HTML = (0, import_utils.deepFilterHTML)(HTML, [import_html_formatting_remover.default, import_br_remover.default]); log("Processed inline HTML:\n\n", HTML); return HTML; } function pasteHandler({ HTML = "", plainText = "", mode = "AUTO", tagName }) { HTML = HTML.replace(/<meta[^>]+>/g, ""); HTML = HTML.replace( /^\s*<html[^>]*>\s*<body[^>]*>(?:\s*<!--\s*StartFragment\s*-->)?/i, "" ); HTML = HTML.replace( /(?:<!--\s*EndFragment\s*-->\s*)?<\/body>\s*<\/html>\s*$/i, "" ); if (mode !== "INLINE") { const content = HTML ? HTML : plainText; if (content.indexOf("<!-- wp:") !== -1) { const parseResult = (0, import_parser.default)(content); const isSingleFreeFormBlock = parseResult.length === 1 && parseResult[0].name === "core/freeform"; if (!isSingleFreeFormBlock) { return parseResult; } } } if (String.prototype.normalize) { HTML = HTML.normalize(); } HTML = (0, import_utils.deepFilterHTML)(HTML, [import_slack_paragraph_corrector.default]); const isPlainText = plainText && (!HTML || (0, import_utils.isPlain)(HTML)); if (isPlainText && (0, import_latex_to_math.default)(plainText)) { return [(0, import_factory.createBlock)("core/math", { latex: plainText })]; } if (isPlainText) { HTML = plainText; if (!/^\s+$/.test(plainText)) { HTML = (0, import_markdown_converter.default)(HTML); } } const pieces = (0, import_shortcode_converter.default)(HTML); const hasShortcodes = pieces.length > 1; if (isPlainText && !hasShortcodes) { if (mode === "AUTO" && plainText.indexOf("\n") === -1 && plainText.indexOf("<p>") !== 0 && HTML.indexOf("<p>") === 0) { mode = "INLINE"; } } if (mode === "INLINE") { return filterInlineHTML(HTML); } if (mode === "AUTO" && !hasShortcodes && (0, import_is_inline_content.default)(HTML, tagName)) { return filterInlineHTML(HTML); } const phrasingContentSchema = (0, import_dom.getPhrasingContentSchema)("paste"); const blockContentSchema = (0, import_utils.getBlockContentSchema)("paste"); const blocks = pieces.map((piece) => { if (typeof piece !== "string") { return piece; } const filters = [ import_google_docs_uid_remover.default, import_ms_list_converter.default, import_head_remover.default, import_list_reducer.default, import_image_corrector.default, import_phrasing_content_reducer.default, import_special_comment_converter.default, import_comment_remover.default, import_iframe_remover.default, import_figure_content_reducer.default, (0, import_blockquote_normaliser.default)(), import_div_normaliser.default ]; const schema = { ...blockContentSchema, // Keep top-level phrasing content, normalised by `normaliseBlocks`. ...phrasingContentSchema }; piece = (0, import_utils.deepFilterHTML)(piece, filters, blockContentSchema); piece = (0, import_dom.removeInvalidHTML)(piece, schema); piece = (0, import_normalise_blocks.default)(piece); piece = (0, import_utils.deepFilterHTML)( piece, [import_html_formatting_remover.default, import_br_remover.default, import_empty_paragraph_remover.default], blockContentSchema ); log("Processed HTML piece:\n\n", piece); return (0, import_html_to_blocks.htmlToBlocks)(piece, pasteHandler); }).flat().filter(Boolean); if (mode === "AUTO" && blocks.length === 1 && (0, import_registration.hasBlockSupport)(blocks[0].name, "__unstablePasteTextInline", false)) { const trimRegex = /^[\n]+|[\n]+$/g; const trimmedPlainText = plainText.replace(trimRegex, ""); if (trimmedPlainText !== "" && trimmedPlainText.indexOf("\n") === -1) { return (0, import_dom.removeInvalidHTML)( (0, import_serializer.getBlockInnerHTML)(blocks[0]), phrasingContentSchema ).replace(trimRegex, ""); } } return blocks; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { pasteHandler }); //# sourceMappingURL=paste-handler.js.map