token-list.js (9785B)
1 this["wp"] = this["wp"] || {}; this["wp"]["tokenList"] = 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 = "hwXU"); 86 /******/ }) 87 /************************************************************************/ 88 /******/ ({ 89 90 /***/ "YLtl": 91 /***/ (function(module, exports) { 92 93 (function() { module.exports = window["lodash"]; }()); 94 95 /***/ }), 96 97 /***/ "hwXU": 98 /***/ (function(module, __webpack_exports__, __webpack_require__) { 99 100 "use strict"; 101 __webpack_require__.r(__webpack_exports__); 102 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return TokenList; }); 103 /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("YLtl"); 104 /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_0__); 105 /** 106 * External dependencies 107 */ 108 109 /** 110 * A set of tokens. 111 * 112 * @see https://dom.spec.whatwg.org/#domtokenlist 113 */ 114 115 class TokenList { 116 /** 117 * Constructs a new instance of TokenList. 118 * 119 * @param {string} initialValue Initial value to assign. 120 */ 121 constructor(initialValue = '') { 122 this.value = initialValue; // Disable reason: These are type hints on the class. 123 124 /* eslint-disable no-unused-expressions */ 125 126 /** @type {string} */ 127 128 this._currentValue; 129 /** @type {string[]} */ 130 131 this._valueAsArray; 132 /* eslint-enable no-unused-expressions */ 133 } 134 /** 135 * @param {Parameters<Array<string>['entries']>} args 136 */ 137 138 139 entries(...args) { 140 return this._valueAsArray.entries(...args); 141 } 142 /** 143 * @param {Parameters<Array<string>['forEach']>} args 144 */ 145 146 147 forEach(...args) { 148 return this._valueAsArray.forEach(...args); 149 } 150 /** 151 * @param {Parameters<Array<string>['keys']>} args 152 */ 153 154 155 keys(...args) { 156 return this._valueAsArray.keys(...args); 157 } 158 /** 159 * @param {Parameters<Array<string>['values']>} args 160 */ 161 162 163 values(...args) { 164 return this._valueAsArray.values(...args); 165 } 166 /** 167 * Returns the associated set as string. 168 * 169 * @see https://dom.spec.whatwg.org/#dom-domtokenlist-value 170 * 171 * @return {string} Token set as string. 172 */ 173 174 175 get value() { 176 return this._currentValue; 177 } 178 /** 179 * Replaces the associated set with a new string value. 180 * 181 * @see https://dom.spec.whatwg.org/#dom-domtokenlist-value 182 * 183 * @param {string} value New token set as string. 184 */ 185 186 187 set value(value) { 188 value = String(value); 189 this._valueAsArray = Object(lodash__WEBPACK_IMPORTED_MODULE_0__["uniq"])(Object(lodash__WEBPACK_IMPORTED_MODULE_0__["compact"])(value.split(/\s+/g))); 190 this._currentValue = this._valueAsArray.join(' '); 191 } 192 /** 193 * Returns the number of tokens. 194 * 195 * @see https://dom.spec.whatwg.org/#dom-domtokenlist-length 196 * 197 * @return {number} Number of tokens. 198 */ 199 200 201 get length() { 202 return this._valueAsArray.length; 203 } 204 /** 205 * Returns the stringified form of the TokenList. 206 * 207 * @see https://dom.spec.whatwg.org/#DOMTokenList-stringification-behavior 208 * @see https://www.ecma-international.org/ecma-262/9.0/index.html#sec-tostring 209 * 210 * @return {string} Token set as string. 211 */ 212 213 214 toString() { 215 return this.value; 216 } 217 /** 218 * Returns an iterator for the TokenList, iterating items of the set. 219 * 220 * @see https://dom.spec.whatwg.org/#domtokenlist 221 * 222 * @return {IterableIterator<string>} TokenList iterator. 223 */ 224 225 226 *[Symbol.iterator]() { 227 return yield* this._valueAsArray; 228 } 229 /** 230 * Returns the token with index `index`. 231 * 232 * @see https://dom.spec.whatwg.org/#dom-domtokenlist-item 233 * 234 * @param {number} index Index at which to return token. 235 * 236 * @return {string|undefined} Token at index. 237 */ 238 239 240 item(index) { 241 return this._valueAsArray[index]; 242 } 243 /** 244 * Returns true if `token` is present, and false otherwise. 245 * 246 * @see https://dom.spec.whatwg.org/#dom-domtokenlist-contains 247 * 248 * @param {string} item Token to test. 249 * 250 * @return {boolean} Whether token is present. 251 */ 252 253 254 contains(item) { 255 return this._valueAsArray.indexOf(item) !== -1; 256 } 257 /** 258 * Adds all arguments passed, except those already present. 259 * 260 * @see https://dom.spec.whatwg.org/#dom-domtokenlist-add 261 * 262 * @param {...string} items Items to add. 263 */ 264 265 266 add(...items) { 267 this.value += ' ' + items.join(' '); 268 } 269 /** 270 * Removes arguments passed, if they are present. 271 * 272 * @see https://dom.spec.whatwg.org/#dom-domtokenlist-remove 273 * 274 * @param {...string} items Items to remove. 275 */ 276 277 278 remove(...items) { 279 this.value = Object(lodash__WEBPACK_IMPORTED_MODULE_0__["without"])(this._valueAsArray, ...items).join(' '); 280 } 281 /** 282 * If `force` is not given, "toggles" `token`, removing it if it’s present 283 * and adding it if it’s not present. If `force` is true, adds token (same 284 * as add()). If force is false, removes token (same as remove()). Returns 285 * true if `token` is now present, and false otherwise. 286 * 287 * @see https://dom.spec.whatwg.org/#dom-domtokenlist-toggle 288 * 289 * @param {string} token Token to toggle. 290 * @param {boolean} [force] Presence to force. 291 * 292 * @return {boolean} Whether token is present after toggle. 293 */ 294 295 296 toggle(token, force) { 297 if (undefined === force) { 298 force = !this.contains(token); 299 } 300 301 if (force) { 302 this.add(token); 303 } else { 304 this.remove(token); 305 } 306 307 return force; 308 } 309 /** 310 * Replaces `token` with `newToken`. Returns true if `token` was replaced 311 * with `newToken`, and false otherwise. 312 * 313 * @see https://dom.spec.whatwg.org/#dom-domtokenlist-replace 314 * 315 * @param {string} token Token to replace with `newToken`. 316 * @param {string} newToken Token to use in place of `token`. 317 * 318 * @return {boolean} Whether replacement occurred. 319 */ 320 321 322 replace(token, newToken) { 323 if (!this.contains(token)) { 324 return false; 325 } 326 327 this.remove(token); 328 this.add(newToken); 329 return true; 330 } 331 /** 332 * Returns true if `token` is in the associated attribute’s supported 333 * tokens. Returns false otherwise. 334 * 335 * Always returns `true` in this implementation. 336 * 337 * @see https://dom.spec.whatwg.org/#dom-domtokenlist-supports 338 * 339 * @return {boolean} Whether token is supported. 340 */ 341 342 343 supports() { 344 return true; 345 } 346 347 } 348 349 350 /***/ }) 351 352 /******/ })["default"];