wp/wp-includes/js/dist/a11y.js
changeset 9 177826044cd9
child 16 a86126ab1dd4
equal deleted inserted replaced
8:c7c34916027a 9:177826044cd9
       
     1 this["wp"] = this["wp"] || {}; this["wp"]["a11y"] =
       
     2 /******/ (function(modules) { // webpackBootstrap
       
     3 /******/ 	// The module cache
       
     4 /******/ 	var installedModules = {};
       
     5 /******/
       
     6 /******/ 	// The require function
       
     7 /******/ 	function __webpack_require__(moduleId) {
       
     8 /******/
       
     9 /******/ 		// Check if module is in cache
       
    10 /******/ 		if(installedModules[moduleId]) {
       
    11 /******/ 			return installedModules[moduleId].exports;
       
    12 /******/ 		}
       
    13 /******/ 		// Create a new module (and put it into the cache)
       
    14 /******/ 		var module = installedModules[moduleId] = {
       
    15 /******/ 			i: moduleId,
       
    16 /******/ 			l: false,
       
    17 /******/ 			exports: {}
       
    18 /******/ 		};
       
    19 /******/
       
    20 /******/ 		// Execute the module function
       
    21 /******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
       
    22 /******/
       
    23 /******/ 		// Flag the module as loaded
       
    24 /******/ 		module.l = true;
       
    25 /******/
       
    26 /******/ 		// Return the exports of the module
       
    27 /******/ 		return module.exports;
       
    28 /******/ 	}
       
    29 /******/
       
    30 /******/
       
    31 /******/ 	// expose the modules object (__webpack_modules__)
       
    32 /******/ 	__webpack_require__.m = modules;
       
    33 /******/
       
    34 /******/ 	// expose the module cache
       
    35 /******/ 	__webpack_require__.c = installedModules;
       
    36 /******/
       
    37 /******/ 	// define getter function for harmony exports
       
    38 /******/ 	__webpack_require__.d = function(exports, name, getter) {
       
    39 /******/ 		if(!__webpack_require__.o(exports, name)) {
       
    40 /******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
       
    41 /******/ 		}
       
    42 /******/ 	};
       
    43 /******/
       
    44 /******/ 	// define __esModule on exports
       
    45 /******/ 	__webpack_require__.r = function(exports) {
       
    46 /******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
       
    47 /******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
       
    48 /******/ 		}
       
    49 /******/ 		Object.defineProperty(exports, '__esModule', { value: true });
       
    50 /******/ 	};
       
    51 /******/
       
    52 /******/ 	// create a fake namespace object
       
    53 /******/ 	// mode & 1: value is a module id, require it
       
    54 /******/ 	// mode & 2: merge all properties of value into the ns
       
    55 /******/ 	// mode & 4: return value when already ns object
       
    56 /******/ 	// mode & 8|1: behave like require
       
    57 /******/ 	__webpack_require__.t = function(value, mode) {
       
    58 /******/ 		if(mode & 1) value = __webpack_require__(value);
       
    59 /******/ 		if(mode & 8) return value;
       
    60 /******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
       
    61 /******/ 		var ns = Object.create(null);
       
    62 /******/ 		__webpack_require__.r(ns);
       
    63 /******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
       
    64 /******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
       
    65 /******/ 		return ns;
       
    66 /******/ 	};
       
    67 /******/
       
    68 /******/ 	// getDefaultExport function for compatibility with non-harmony modules
       
    69 /******/ 	__webpack_require__.n = function(module) {
       
    70 /******/ 		var getter = module && module.__esModule ?
       
    71 /******/ 			function getDefault() { return module['default']; } :
       
    72 /******/ 			function getModuleExports() { return module; };
       
    73 /******/ 		__webpack_require__.d(getter, 'a', getter);
       
    74 /******/ 		return getter;
       
    75 /******/ 	};
       
    76 /******/
       
    77 /******/ 	// Object.prototype.hasOwnProperty.call
       
    78 /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
       
    79 /******/
       
    80 /******/ 	// __webpack_public_path__
       
    81 /******/ 	__webpack_require__.p = "";
       
    82 /******/
       
    83 /******/
       
    84 /******/ 	// Load entry module and return exports
       
    85 /******/ 	return __webpack_require__(__webpack_require__.s = 380);
       
    86 /******/ })
       
    87 /************************************************************************/
       
    88 /******/ ({
       
    89 
       
    90 /***/ 204:
       
    91 /***/ (function(module, exports) {
       
    92 
       
    93 (function() { module.exports = this["wp"]["domReady"]; }());
       
    94 
       
    95 /***/ }),
       
    96 
       
    97 /***/ 380:
       
    98 /***/ (function(module, __webpack_exports__, __webpack_require__) {
       
    99 
       
   100 "use strict";
       
   101 __webpack_require__.r(__webpack_exports__);
       
   102 
       
   103 // EXTERNAL MODULE: external {"this":["wp","domReady"]}
       
   104 var external_this_wp_domReady_ = __webpack_require__(204);
       
   105 var external_this_wp_domReady_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_domReady_);
       
   106 
       
   107 // CONCATENATED MODULE: ./node_modules/@wordpress/a11y/build-module/addContainer.js
       
   108 /**
       
   109  * Build the live regions markup.
       
   110  *
       
   111  * @param {string} ariaLive Optional. Value for the 'aria-live' attribute, default 'polite'.
       
   112  *
       
   113  * @return {Object} $container The ARIA live region jQuery object.
       
   114  */
       
   115 var addContainer = function addContainer(ariaLive) {
       
   116   ariaLive = ariaLive || 'polite';
       
   117   var container = document.createElement('div');
       
   118   container.id = 'a11y-speak-' + ariaLive;
       
   119   container.className = 'a11y-speak-region';
       
   120   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;');
       
   121   container.setAttribute('aria-live', ariaLive);
       
   122   container.setAttribute('aria-relevant', 'additions text');
       
   123   container.setAttribute('aria-atomic', 'true');
       
   124   document.querySelector('body').appendChild(container);
       
   125   return container;
       
   126 };
       
   127 
       
   128 /* harmony default export */ var build_module_addContainer = (addContainer);
       
   129 
       
   130 // CONCATENATED MODULE: ./node_modules/@wordpress/a11y/build-module/clear.js
       
   131 /**
       
   132  * Clear the a11y-speak-region elements.
       
   133  */
       
   134 var clear = function clear() {
       
   135   var regions = document.querySelectorAll('.a11y-speak-region');
       
   136 
       
   137   for (var i = 0; i < regions.length; i++) {
       
   138     regions[i].textContent = '';
       
   139   }
       
   140 };
       
   141 
       
   142 /* harmony default export */ var build_module_clear = (clear);
       
   143 
       
   144 // CONCATENATED MODULE: ./node_modules/@wordpress/a11y/build-module/filterMessage.js
       
   145 var previousMessage = '';
       
   146 /**
       
   147  * Filter the message to be announced to the screenreader.
       
   148  *
       
   149  * @param {string} message The message to be announced.
       
   150  *
       
   151  * @return {string} The filtered message.
       
   152  */
       
   153 
       
   154 var filterMessage = function filterMessage(message) {
       
   155   /*
       
   156    * Strip HTML tags (if any) from the message string. Ideally, messages should
       
   157    * be simple strings, carefully crafted for specific use with A11ySpeak.
       
   158    * When re-using already existing strings this will ensure simple HTML to be
       
   159    * stripped out and replaced with a space. Browsers will collapse multiple
       
   160    * spaces natively.
       
   161    */
       
   162   message = message.replace(/<[^<>]+>/g, ' ');
       
   163 
       
   164   if (previousMessage === message) {
       
   165     message += "\xA0";
       
   166   }
       
   167 
       
   168   previousMessage = message;
       
   169   return message;
       
   170 };
       
   171 
       
   172 /* harmony default export */ var build_module_filterMessage = (filterMessage);
       
   173 
       
   174 // CONCATENATED MODULE: ./node_modules/@wordpress/a11y/build-module/index.js
       
   175 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setup", function() { return build_module_setup; });
       
   176 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "speak", function() { return build_module_speak; });
       
   177 /**
       
   178  * WordPress dependencies
       
   179  */
       
   180 
       
   181 /**
       
   182  * Internal dependencies
       
   183  */
       
   184 
       
   185 
       
   186 
       
   187 
       
   188 /**
       
   189  * Create the live regions.
       
   190  */
       
   191 
       
   192 var build_module_setup = function setup() {
       
   193   var containerPolite = document.getElementById('a11y-speak-polite');
       
   194   var containerAssertive = document.getElementById('a11y-speak-assertive');
       
   195 
       
   196   if (containerPolite === null) {
       
   197     containerPolite = build_module_addContainer('polite');
       
   198   }
       
   199 
       
   200   if (containerAssertive === null) {
       
   201     containerAssertive = build_module_addContainer('assertive');
       
   202   }
       
   203 };
       
   204 /**
       
   205  * Run setup on domReady.
       
   206  */
       
   207 
       
   208 external_this_wp_domReady_default()(build_module_setup);
       
   209 /**
       
   210  * Allows you to easily announce dynamic interface updates to screen readers using ARIA live regions.
       
   211  * This module is inspired by the `speak` function in wp-a11y.js
       
   212  *
       
   213  * @param {string} message  The message to be announced by Assistive Technologies.
       
   214  * @param {string} ariaLive Optional. The politeness level for aria-live. Possible values:
       
   215  *                          polite or assertive. Default polite.
       
   216  *
       
   217  * @example
       
   218  * ```js
       
   219  * import { speak } from '@wordpress/a11y';
       
   220  *
       
   221  * // For polite messages that shouldn't interrupt what screen readers are currently announcing.
       
   222  * speak( 'The message you want to send to the ARIA live region' );
       
   223  *
       
   224  * // For assertive messages that should interrupt what screen readers are currently announcing.
       
   225  * speak( 'The message you want to send to the ARIA live region', 'assertive' );
       
   226  * ```
       
   227  */
       
   228 
       
   229 var build_module_speak = function speak(message, ariaLive) {
       
   230   // Clear previous messages to allow repeated strings being read out.
       
   231   build_module_clear();
       
   232   message = build_module_filterMessage(message);
       
   233   var containerPolite = document.getElementById('a11y-speak-polite');
       
   234   var containerAssertive = document.getElementById('a11y-speak-assertive');
       
   235 
       
   236   if (containerAssertive && 'assertive' === ariaLive) {
       
   237     containerAssertive.textContent = message;
       
   238   } else if (containerPolite) {
       
   239     containerPolite.textContent = message;
       
   240   }
       
   241 };
       
   242 
       
   243 
       
   244 /***/ })
       
   245 
       
   246 /******/ });