diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:56:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:56:49 +0000 |
commit | a415c29efee45520ae252d2aa28f1083a521cd7b (patch) | |
tree | f4ade4b6668ecc0765de7e1424f7c1427ad433ff /wp-includes/js/dist/a11y.js | |
parent | Initial commit. (diff) | |
download | wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.tar.xz wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.zip |
Adding upstream version 6.4.3+dfsg1.upstream/6.4.3+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'wp-includes/js/dist/a11y.js')
-rw-r--r-- | wp-includes/js/dist/a11y.js | 248 |
1 files changed, 248 insertions, 0 deletions
diff --git a/wp-includes/js/dist/a11y.js b/wp-includes/js/dist/a11y.js new file mode 100644 index 0000000..3203b78 --- /dev/null +++ b/wp-includes/js/dist/a11y.js @@ -0,0 +1,248 @@ +/******/ (function() { // webpackBootstrap +/******/ "use strict"; +/******/ // The require scope +/******/ var __webpack_require__ = {}; +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ !function() { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function() { return module['default']; } : +/******/ function() { return module; }; +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ }(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ !function() { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = function(exports, definition) { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ }(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ !function() { +/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } +/******/ }(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ !function() { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ }(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + setup: function() { return /* binding */ setup; }, + speak: function() { return /* binding */ speak; } +}); + +;// CONCATENATED MODULE: external ["wp","domReady"] +var external_wp_domReady_namespaceObject = window["wp"]["domReady"]; +var external_wp_domReady_default = /*#__PURE__*/__webpack_require__.n(external_wp_domReady_namespaceObject); +;// CONCATENATED MODULE: external ["wp","i18n"] +var external_wp_i18n_namespaceObject = window["wp"]["i18n"]; +;// CONCATENATED MODULE: ./node_modules/@wordpress/a11y/build-module/add-intro-text.js +/** + * WordPress dependencies + */ + + +/** + * Build the explanatory text to be placed before the aria live regions. + * + * This text is initially hidden from assistive technologies by using a `hidden` + * HTML attribute which is then removed once a message fills the aria-live regions. + * + * @return {HTMLParagraphElement} The explanatory text HTML element. + */ +function addIntroText() { + const introText = document.createElement('p'); + introText.id = 'a11y-speak-intro-text'; + introText.className = 'a11y-speak-intro-text'; + introText.textContent = (0,external_wp_i18n_namespaceObject.__)('Notifications'); + introText.setAttribute('style', 'position: absolute;' + 'margin: -1px;' + 'padding: 0;' + 'height: 1px;' + 'width: 1px;' + 'overflow: hidden;' + 'clip: rect(1px, 1px, 1px, 1px);' + '-webkit-clip-path: inset(50%);' + 'clip-path: inset(50%);' + 'border: 0;' + 'word-wrap: normal !important;'); + introText.setAttribute('hidden', 'hidden'); + const { + body + } = document; + if (body) { + body.appendChild(introText); + } + return introText; +} + +;// CONCATENATED MODULE: ./node_modules/@wordpress/a11y/build-module/add-container.js +/** + * Build the live regions markup. + * + * @param {string} [ariaLive] Value for the 'aria-live' attribute; default: 'polite'. + * + * @return {HTMLDivElement} The ARIA live region HTML element. + */ +function addContainer(ariaLive = 'polite') { + const container = document.createElement('div'); + container.id = `a11y-speak-${ariaLive}`; + container.className = 'a11y-speak-region'; + container.setAttribute('style', 'position: absolute;' + 'margin: -1px;' + 'padding: 0;' + 'height: 1px;' + 'width: 1px;' + 'overflow: hidden;' + 'clip: rect(1px, 1px, 1px, 1px);' + '-webkit-clip-path: inset(50%);' + 'clip-path: inset(50%);' + 'border: 0;' + 'word-wrap: normal !important;'); + container.setAttribute('aria-live', ariaLive); + container.setAttribute('aria-relevant', 'additions text'); + container.setAttribute('aria-atomic', 'true'); + const { + body + } = document; + if (body) { + body.appendChild(container); + } + return container; +} + +;// CONCATENATED MODULE: ./node_modules/@wordpress/a11y/build-module/clear.js +/** + * Clears the a11y-speak-region elements and hides the explanatory text. + */ +function clear() { + const regions = document.getElementsByClassName('a11y-speak-region'); + const introText = document.getElementById('a11y-speak-intro-text'); + for (let i = 0; i < regions.length; i++) { + regions[i].textContent = ''; + } + + // Make sure the explanatory text is hidden from assistive technologies. + if (introText) { + introText.setAttribute('hidden', 'hidden'); + } +} + +;// CONCATENATED MODULE: ./node_modules/@wordpress/a11y/build-module/filter-message.js +let previousMessage = ''; + +/** + * Filter the message to be announced to the screenreader. + * + * @param {string} message The message to be announced. + * + * @return {string} The filtered message. + */ +function filterMessage(message) { + /* + * Strip HTML tags (if any) from the message string. Ideally, messages should + * be simple strings, carefully crafted for specific use with A11ySpeak. + * When re-using already existing strings this will ensure simple HTML to be + * stripped out and replaced with a space. Browsers will collapse multiple + * spaces natively. + */ + message = message.replace(/<[^<>]+>/g, ' '); + + /* + * Safari + VoiceOver don't announce repeated, identical strings. We use + * a `no-break space` to force them to think identical strings are different. + */ + if (previousMessage === message) { + message += '\u00A0'; + } + previousMessage = message; + return message; +} + +;// CONCATENATED MODULE: ./node_modules/@wordpress/a11y/build-module/index.js +/** + * WordPress dependencies + */ + + +/** + * Internal dependencies + */ + + + + + +/** + * Create the live regions. + */ +function setup() { + const introText = document.getElementById('a11y-speak-intro-text'); + const containerAssertive = document.getElementById('a11y-speak-assertive'); + const containerPolite = document.getElementById('a11y-speak-polite'); + if (introText === null) { + addIntroText(); + } + if (containerAssertive === null) { + addContainer('assertive'); + } + if (containerPolite === null) { + addContainer('polite'); + } +} + +/** + * Run setup on domReady. + */ +external_wp_domReady_default()(setup); + +/** + * Allows you to easily announce dynamic interface updates to screen readers using ARIA live regions. + * This module is inspired by the `speak` function in `wp-a11y.js`. + * + * @param {string} message The message to be announced by assistive technologies. + * @param {string} [ariaLive] The politeness level for aria-live; default: 'polite'. + * + * @example + * ```js + * import { speak } from '@wordpress/a11y'; + * + * // For polite messages that shouldn't interrupt what screen readers are currently announcing. + * speak( 'The message you want to send to the ARIA live region' ); + * + * // For assertive messages that should interrupt what screen readers are currently announcing. + * speak( 'The message you want to send to the ARIA live region', 'assertive' ); + * ``` + */ +function speak(message, ariaLive) { + /* + * Clear previous messages to allow repeated strings being read out and hide + * the explanatory text from assistive technologies. + */ + clear(); + message = filterMessage(message); + const introText = document.getElementById('a11y-speak-intro-text'); + const containerAssertive = document.getElementById('a11y-speak-assertive'); + const containerPolite = document.getElementById('a11y-speak-polite'); + if (containerAssertive && ariaLive === 'assertive') { + containerAssertive.textContent = message; + } else if (containerPolite) { + containerPolite.textContent = message; + } + + /* + * Make the explanatory text available to assistive technologies by removing + * the 'hidden' HTML attribute. + */ + if (introText) { + introText.removeAttribute('hidden'); + } +} + +(window.wp = window.wp || {}).a11y = __webpack_exports__; +/******/ })() +;
\ No newline at end of file |