UNPKG

@wordpress/blocks

Version:
58 lines (54 loc) 1.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fixAriaLabel = fixAriaLabel; exports.getHTMLRootElementAriaLabel = getHTMLRootElementAriaLabel; var _registration = require("../registration"); var _getBlockAttributes = require("./get-block-attributes"); /** * Internal dependencies */ const ARIA_LABEL_ATTR_SCHEMA = { type: 'string', source: 'attribute', selector: '[data-aria-label] > *', attribute: 'aria-label' }; /** * Given an HTML string, returns the aria-label attribute assigned to * the root element in the markup. * * @param {string} innerHTML Markup string from which to extract the aria-label. * * @return {string} The aria-label assigned to the root element. */ function getHTMLRootElementAriaLabel(innerHTML) { const parsed = (0, _getBlockAttributes.parseWithAttributeSchema)(`<div data-aria-label>${innerHTML}</div>`, ARIA_LABEL_ATTR_SCHEMA); return parsed; } /** * Given a parsed set of block attributes, if the block supports ariaLabel * and an aria-label attribute is found, the aria-label attribute is assigned * to the block attributes. * * @param {Object} blockAttributes Original block attributes. * @param {Object} blockType Block type settings. * @param {string} innerHTML Original block markup. * * @return {Object} Filtered block attributes. */ function fixAriaLabel(blockAttributes, blockType, innerHTML) { if (!(0, _registration.hasBlockSupport)(blockType, 'ariaLabel', false)) { return blockAttributes; } const modifiedBlockAttributes = { ...blockAttributes }; const ariaLabel = getHTMLRootElementAriaLabel(innerHTML); if (ariaLabel) { modifiedBlockAttributes.ariaLabel = ariaLabel; } return modifiedBlockAttributes; } //# sourceMappingURL=fix-aria-label.js.map