@wordpress/blocks
Version:
Block API for WordPress.
95 lines (89 loc) • 3.32 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.deprecatedGetPhrasingContentSchema = deprecatedGetPhrasingContentSchema;
Object.defineProperty(exports, "pasteHandler", {
enumerable: true,
get: function () {
return _pasteHandler.pasteHandler;
}
});
exports.rawHandler = rawHandler;
var _deprecated = _interopRequireDefault(require("@wordpress/deprecated"));
var _dom = require("@wordpress/dom");
var _htmlToBlocks = require("./html-to-blocks");
var _parser = _interopRequireDefault(require("../parser"));
var _normaliseBlocks = _interopRequireDefault(require("./normalise-blocks"));
var _specialCommentConverter = _interopRequireDefault(require("./special-comment-converter"));
var _listReducer = _interopRequireDefault(require("./list-reducer"));
var _blockquoteNormaliser = _interopRequireDefault(require("./blockquote-normaliser"));
var _figureContentReducer = _interopRequireDefault(require("./figure-content-reducer"));
var _shortcodeConverter = _interopRequireDefault(require("./shortcode-converter"));
var _utils = require("./utils");
var _pasteHandler = require("./paste-handler");
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function deprecatedGetPhrasingContentSchema(context) {
(0, _deprecated.default)('wp.blocks.getPhrasingContentSchema', {
since: '5.6',
alternative: 'wp.dom.getPhrasingContentSchema'
});
return (0, _dom.getPhrasingContentSchema)(context);
}
/**
* Converts an HTML string to known blocks.
*
* @param {Object} $1
* @param {string} $1.HTML The HTML to convert.
*
* @return {Array} A list of blocks.
*/
function rawHandler({
HTML = ''
}) {
// If we detect block delimiters, parse entirely as blocks.
if (HTML.indexOf('<!-- wp:') !== -1) {
const parseResult = (0, _parser.default)(HTML);
const isSingleFreeFormBlock = parseResult.length === 1 && parseResult[0].name === 'core/freeform';
if (!isSingleFreeFormBlock) {
return parseResult;
}
}
// An array of HTML strings and block objects. The blocks replace matched
// shortcodes.
const pieces = (0, _shortcodeConverter.default)(HTML);
const blockContentSchema = (0, _utils.getBlockContentSchema)();
return pieces.map(piece => {
// Already a block from shortcode.
if (typeof piece !== 'string') {
return piece;
}
// These filters are essential for some blocks to be able to transform
// from raw HTML. These filters move around some content or add
// additional tags, they do not remove any content.
const filters = [
// Needed to adjust invalid lists.
_listReducer.default,
// Needed to create more and nextpage blocks.
_specialCommentConverter.default,
// Needed to create media blocks.
_figureContentReducer.default,
// Needed to create the quote block, which cannot handle text
// without wrapper paragraphs.
(0, _blockquoteNormaliser.default)({
raw: true
})];
piece = (0, _utils.deepFilterHTML)(piece, filters, blockContentSchema);
piece = (0, _normaliseBlocks.default)(piece, {
raw: true
});
return (0, _htmlToBlocks.htmlToBlocks)(piece, rawHandler);
}).flat().filter(Boolean);
}
//# sourceMappingURL=index.js.map