"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toggleFormat = toggleFormat; var _a11y = require("@wordpress/a11y"); var _i18n = require("@wordpress/i18n"); var _getActiveFormat = require("./get-active-format"); var _removeFormat = require("./remove-format"); var _applyFormat = require("./apply-format"); /** * WordPress dependencies */ /** * Internal dependencies */ /** @typedef {import('./types').RichTextValue} RichTextValue */ /** @typedef {import('./types').RichTextFormat} RichTextFormat */ /** * Toggles a format object to a Rich Text value at the current selection. * * @param {RichTextValue} value Value to modify. * @param {RichTextFormat} format Format to apply or remove. * * @return {RichTextValue} A new value with the format applied or removed. */ function toggleFormat(value, format) { if ((0, _getActiveFormat.getActiveFormat)(value, format.type)) { // For screen readers, will announce if formatting control is disabled. if (format.title) { // translators: %s: title of the formatting control (0, _a11y.speak)((0, _i18n.sprintf)((0, _i18n.__)('%s removed.'), format.title), 'assertive'); } return (0, _removeFormat.removeFormat)(value, format.type); } // For screen readers, will announce if formatting control is enabled. if (format.title) { // translators: %s: title of the formatting control (0, _a11y.speak)((0, _i18n.sprintf)((0, _i18n.__)('%s applied.'), format.title), 'assertive'); } return (0, _applyFormat.applyFormat)(value, format); } //# sourceMappingURL=toggle-format.js.map