govuk_publishing_components 34.6.0 → 34.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-link-tracker.js +2 -1
  3. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/init-ga4.js +6 -4
  4. data/app/assets/javascripts/govuk_publishing_components/load-analytics.js +6 -3
  5. data/app/assets/stylesheets/govuk_publishing_components/components/_document-list.scss +6 -0
  6. data/app/assets/stylesheets/govuk_publishing_components/components/_layout-super-navigation-header.scss +1 -1
  7. data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_tables.scss +12 -0
  8. data/app/views/govuk_publishing_components/components/_document_list.html.erb +1 -0
  9. data/app/views/govuk_publishing_components/components/docs/document_list.yml +18 -1
  10. data/app/views/govuk_publishing_components/components/docs/govspeak.yml +22 -1
  11. data/lib/govuk_publishing_components/presenters/related_navigation_helper.rb +0 -7
  12. data/lib/govuk_publishing_components/version.rb +1 -1
  13. data/node_modules/govuk-frontend/govuk/all.js +4029 -3792
  14. data/node_modules/govuk-frontend/govuk/all.js.map +1 -0
  15. data/node_modules/govuk-frontend/govuk/common/closest-attribute-value.js +52 -51
  16. data/node_modules/govuk-frontend/govuk/common/closest-attribute-value.js.map +1 -0
  17. data/node_modules/govuk-frontend/govuk/common/index.js +153 -145
  18. data/node_modules/govuk-frontend/govuk/common/index.js.map +1 -0
  19. data/node_modules/govuk-frontend/govuk/common/normalise-dataset.js +324 -321
  20. data/node_modules/govuk-frontend/govuk/common/normalise-dataset.js.map +1 -0
  21. data/node_modules/govuk-frontend/govuk/common.js +154 -146
  22. data/node_modules/govuk-frontend/govuk/common.js.map +1 -0
  23. data/node_modules/govuk-frontend/govuk/components/_all.scss +1 -1
  24. data/node_modules/govuk-frontend/govuk/components/accordion/_index.scss +23 -4
  25. data/node_modules/govuk-frontend/govuk/components/accordion/accordion.js +2059 -1654
  26. data/node_modules/govuk-frontend/govuk/components/accordion/accordion.js.map +1 -0
  27. data/node_modules/govuk-frontend/govuk/components/accordion/fixtures.json +11 -11
  28. data/node_modules/govuk-frontend/govuk/components/accordion/template.njk +1 -1
  29. data/node_modules/govuk-frontend/govuk/components/back-link/_index.scss +19 -19
  30. data/node_modules/govuk-frontend/govuk/components/breadcrumbs/_index.scss +21 -10
  31. data/node_modules/govuk-frontend/govuk/components/button/button.js +927 -917
  32. data/node_modules/govuk-frontend/govuk/components/button/button.js.map +1 -0
  33. data/node_modules/govuk-frontend/govuk/components/character-count/character-count.js +2050 -2040
  34. data/node_modules/govuk-frontend/govuk/components/character-count/character-count.js.map +1 -0
  35. data/node_modules/govuk-frontend/govuk/components/checkboxes/checkboxes.js +1155 -1147
  36. data/node_modules/govuk-frontend/govuk/components/checkboxes/checkboxes.js.map +1 -0
  37. data/node_modules/govuk-frontend/govuk/components/cookie-banner/fixtures.json +23 -23
  38. data/node_modules/govuk-frontend/govuk/components/cookie-banner/template.njk +1 -1
  39. data/node_modules/govuk-frontend/govuk/components/details/details.js +800 -799
  40. data/node_modules/govuk-frontend/govuk/components/details/details.js.map +1 -0
  41. data/node_modules/govuk-frontend/govuk/components/error-summary/error-summary.js +1058 -1045
  42. data/node_modules/govuk-frontend/govuk/components/error-summary/error-summary.js.map +1 -0
  43. data/node_modules/govuk-frontend/govuk/components/header/_index.scss +6 -0
  44. data/node_modules/govuk-frontend/govuk/components/header/header.js +646 -998
  45. data/node_modules/govuk-frontend/govuk/components/header/header.js.map +1 -0
  46. data/node_modules/govuk-frontend/govuk/components/notification-banner/notification-banner.js +760 -752
  47. data/node_modules/govuk-frontend/govuk/components/notification-banner/notification-banner.js.map +1 -0
  48. data/node_modules/govuk-frontend/govuk/components/pagination/fixtures.json +61 -0
  49. data/node_modules/govuk-frontend/govuk/components/pagination/template.njk +1 -1
  50. data/node_modules/govuk-frontend/govuk/components/phase-banner/macro-options.json +1 -1
  51. data/node_modules/govuk-frontend/govuk/components/radios/radios.js +1110 -1107
  52. data/node_modules/govuk-frontend/govuk/components/radios/radios.js.map +1 -0
  53. data/node_modules/govuk-frontend/govuk/components/skip-link/skip-link.js +1017 -1014
  54. data/node_modules/govuk-frontend/govuk/components/skip-link/skip-link.js.map +1 -0
  55. data/node_modules/govuk-frontend/govuk/components/summary-list/_index.scss +107 -0
  56. data/node_modules/govuk-frontend/govuk/components/summary-list/fixtures.json +318 -23
  57. data/node_modules/govuk-frontend/govuk/components/summary-list/macro-options.json +110 -0
  58. data/node_modules/govuk-frontend/govuk/components/summary-list/template.njk +72 -28
  59. data/node_modules/govuk-frontend/govuk/components/tabs/tabs.js +1392 -1264
  60. data/node_modules/govuk-frontend/govuk/components/tabs/tabs.js.map +1 -0
  61. data/node_modules/govuk-frontend/govuk/i18n.js +363 -364
  62. data/node_modules/govuk-frontend/govuk/i18n.js.map +1 -0
  63. data/node_modules/govuk-frontend/govuk/settings/_measurements.scss +5 -5
  64. data/node_modules/govuk-frontend/govuk/vendor/polyfills/DOMTokenList.js +242 -241
  65. data/node_modules/govuk-frontend/govuk/vendor/polyfills/DOMTokenList.js.map +1 -0
  66. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Date/now.js +13 -12
  67. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Date/now.js.map +1 -0
  68. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Document.js +17 -16
  69. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Document.js.map +1 -0
  70. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/classList.js +547 -546
  71. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/classList.js.map +1 -0
  72. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/closest.js +37 -36
  73. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/closest.js.map +1 -0
  74. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/dataset.js +251 -250
  75. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/dataset.js.map +1 -0
  76. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/matches.js +21 -20
  77. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/matches.js.map +1 -0
  78. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/nextElementSibling.js +198 -197
  79. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/nextElementSibling.js.map +1 -0
  80. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/previousElementSibling.js +198 -197
  81. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/previousElementSibling.js.map +1 -0
  82. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element.js +106 -105
  83. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element.js.map +1 -0
  84. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Event.js +400 -399
  85. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Event.js.map +1 -0
  86. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Function/prototype/bind.js +239 -238
  87. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Function/prototype/bind.js.map +1 -0
  88. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Object/defineProperty.js +72 -71
  89. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Object/defineProperty.js.map +1 -0
  90. data/node_modules/govuk-frontend/govuk/vendor/polyfills/String/prototype/trim.js +14 -13
  91. data/node_modules/govuk-frontend/govuk/vendor/polyfills/String/prototype/trim.js.map +1 -0
  92. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Window.js +17 -16
  93. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Window.js.map +1 -0
  94. data/node_modules/govuk-frontend/govuk-esm/all.mjs +2 -2
  95. data/node_modules/govuk-frontend/govuk-esm/common/index.mjs +17 -10
  96. data/node_modules/govuk-frontend/govuk-esm/common/normalise-dataset.mjs +3 -1
  97. data/node_modules/govuk-frontend/govuk-esm/components/accordion/accordion.mjs +135 -52
  98. data/node_modules/govuk-frontend/govuk-esm/components/button/button.mjs +11 -9
  99. data/node_modules/govuk-frontend/govuk-esm/components/character-count/character-count.mjs +10 -7
  100. data/node_modules/govuk-frontend/govuk-esm/components/checkboxes/checkboxes.mjs +24 -18
  101. data/node_modules/govuk-frontend/govuk-esm/components/details/details.mjs +23 -16
  102. data/node_modules/govuk-frontend/govuk-esm/components/error-summary/error-summary.mjs +15 -11
  103. data/node_modules/govuk-frontend/govuk-esm/components/header/header.mjs +3 -2
  104. data/node_modules/govuk-frontend/govuk-esm/components/notification-banner/notification-banner.mjs +3 -4
  105. data/node_modules/govuk-frontend/govuk-esm/components/radios/radios.mjs +10 -9
  106. data/node_modules/govuk-frontend/govuk-esm/components/skip-link/skip-link.mjs +5 -3
  107. data/node_modules/govuk-frontend/govuk-esm/components/tabs/tabs.mjs +165 -38
  108. data/node_modules/govuk-frontend/govuk-esm/i18n.mjs +9 -11
  109. data/node_modules/govuk-frontend/package.json +1 -1
  110. metadata +35 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sources":["../../src/govuk/i18n.mjs"],"sourcesContent":["/**\n * Internal support for selecting messages to render, with placeholder\n * interpolation and locale-aware number formatting and pluralisation\n *\n * @class\n * @private\n * @param {Object<string, unknown>} translations - Key-value pairs of the translation strings to use.\n * @param {object} [config] - Configuration options for the function.\n * @param {string} [config.locale] - An overriding locale for the PluralRules functionality.\n */\nexport function I18n (translations, config) {\n // Make list of translations available throughout function\n this.translations = translations || {}\n\n // The locale to use for PluralRules and NumberFormat\n this.locale = (config && config.locale) || document.documentElement.lang || 'en'\n}\n\n/**\n * The most used function - takes the key for a given piece of UI text and\n * returns the appropriate string.\n *\n * @param {string} lookupKey - The lookup key of the string to use.\n * @param {Object<string, unknown>} [options] - Any options passed with the translation string, e.g: for string interpolation.\n * @returns {string} The appropriate translation string.\n * @throws {Error} Lookup key required\n * @throws {Error} Options required for `${}` placeholders\n */\nI18n.prototype.t = function (lookupKey, options) {\n if (!lookupKey) {\n // Print a console error if no lookup key has been provided\n throw new Error('i18n: lookup key missing')\n }\n\n // If the `count` option is set, determine which plural suffix is needed and\n // change the lookupKey to match. We check to see if it's undefined instead of\n // falsy, as this could legitimately be 0.\n if (options && typeof options.count !== 'undefined') {\n // Get the plural suffix\n lookupKey = lookupKey + '.' + this.getPluralSuffix(lookupKey, options.count)\n }\n\n if (lookupKey in this.translations) {\n // Fetch the translation string for that lookup key\n var translationString = this.translations[lookupKey]\n\n // Check for ${} placeholders in the translation string\n if (translationString.match(/%{(.\\S+)}/)) {\n if (!options) {\n throw new Error('i18n: cannot replace placeholders in string if no option data provided')\n }\n\n return this.replacePlaceholders(translationString, options)\n } else {\n return translationString\n }\n } else {\n // If the key wasn't found in our translations object,\n // return the lookup key itself as the fallback\n return lookupKey\n }\n}\n\n/**\n * Takes a translation string with placeholders, and replaces the placeholders\n * with the provided data\n *\n * @param {string} translationString - The translation string\n * @param {Object<string, unknown>} options - Any options passed with the translation string, e.g: for string interpolation.\n * @returns {string} The translation string to output, with ${} placeholders replaced\n */\nI18n.prototype.replacePlaceholders = function (translationString, options) {\n var formatter\n\n if (this.hasIntlNumberFormatSupport()) {\n formatter = new Intl.NumberFormat(this.locale)\n }\n\n return translationString.replace(/%{(.\\S+)}/g, function (placeholderWithBraces, placeholderKey) {\n if (Object.prototype.hasOwnProperty.call(options, placeholderKey)) {\n var placeholderValue = options[placeholderKey]\n\n // If a user has passed `false` as the value for the placeholder\n // treat it as though the value should not be displayed\n if (placeholderValue === false) {\n return ''\n }\n\n // If the placeholder's value is a number, localise the number formatting\n if (typeof placeholderValue === 'number' && formatter) {\n return formatter.format(placeholderValue)\n }\n\n return placeholderValue\n } else {\n throw new Error('i18n: no data found to replace ' + placeholderWithBraces + ' placeholder in string')\n }\n })\n}\n\n/**\n * Check to see if the browser supports Intl and Intl.PluralRules.\n *\n * It requires all conditions to be met in order to be supported:\n * - The browser supports the Intl class (true in IE11)\n * - The implementation of Intl supports PluralRules (NOT true in IE11)\n * - The browser/OS has plural rules for the current locale (browser dependent)\n *\n * @returns {boolean} Returns true if all conditions are met. Returns false otherwise.\n */\nI18n.prototype.hasIntlPluralRulesSupport = function () {\n return Boolean(window.Intl && ('PluralRules' in window.Intl && Intl.PluralRules.supportedLocalesOf(this.locale).length))\n}\n\n/**\n * Check to see if the browser supports Intl and Intl.NumberFormat.\n *\n * It requires all conditions to be met in order to be supported:\n * - The browser supports the Intl class (true in IE11)\n * - The implementation of Intl supports NumberFormat (also true in IE11)\n * - The browser/OS has number formatting rules for the current locale (browser dependent)\n *\n * @returns {boolean} Returns true if all conditions are met. Returns false otherwise.\n */\nI18n.prototype.hasIntlNumberFormatSupport = function () {\n return Boolean(window.Intl && ('NumberFormat' in window.Intl && Intl.NumberFormat.supportedLocalesOf(this.locale).length))\n}\n\n/**\n * Get the appropriate suffix for the plural form.\n *\n * Uses Intl.PluralRules (or our own fallback implementation) to get the\n * 'preferred' form to use for the given count.\n *\n * Checks that a translation has been provided for that plural form – if it\n * hasn't, it'll fall back to the 'other' plural form (unless that doesn't exist\n * either, in which case an error will be thrown)\n *\n * @param {string} lookupKey - The lookup key of the string to use.\n * @param {number} count - Number used to determine which pluralisation to use.\n * @returns {PluralRule} The suffix associated with the correct pluralisation for this locale.\n * @throws {Error} Plural form `.other` required when preferred plural form is missing\n */\nI18n.prototype.getPluralSuffix = function (lookupKey, count) {\n // Validate that the number is actually a number.\n //\n // Number(count) will turn anything that can't be converted to a Number type\n // into 'NaN'. isFinite filters out NaN, as it isn't a finite number.\n count = Number(count)\n if (!isFinite(count)) { return 'other' }\n\n var preferredForm\n\n // Check to verify that all the requirements for Intl.PluralRules are met.\n // If so, we can use that instead of our custom implementation. Otherwise,\n // use the hardcoded fallback.\n if (this.hasIntlPluralRulesSupport()) {\n preferredForm = new Intl.PluralRules(this.locale).select(count)\n } else {\n preferredForm = this.selectPluralFormUsingFallbackRules(count)\n }\n\n // Use the correct plural form if provided\n if (lookupKey + '.' + preferredForm in this.translations) {\n return preferredForm\n // Fall back to `other` if the plural form is missing, but log a warning\n // to the console\n } else if (lookupKey + '.other' in this.translations) {\n if (console && 'warn' in console) {\n console.warn('i18n: Missing plural form \".' + preferredForm + '\" for \"' +\n this.locale + '\" locale. Falling back to \".other\".')\n }\n\n return 'other'\n // If the required `other` plural form is missing, all we can do is error\n } else {\n throw new Error(\n 'i18n: Plural form \".other\" is required for \"' + this.locale + '\" locale'\n )\n }\n}\n\n/**\n * Get the plural form using our fallback implementation\n *\n * This is split out into a separate function to make it easier to test the\n * fallback behaviour in an environment where Intl.PluralRules exists.\n *\n * @param {number} count - Number used to determine which pluralisation to use.\n * @returns {PluralRule} The pluralisation form for count in this locale.\n */\nI18n.prototype.selectPluralFormUsingFallbackRules = function (count) {\n // Currently our custom code can only handle positive integers, so let's\n // make sure our number is one of those.\n count = Math.abs(Math.floor(count))\n\n var ruleset = this.getPluralRulesForLocale()\n\n if (ruleset) {\n return I18n.pluralRules[ruleset](count)\n }\n\n return 'other'\n}\n\n/**\n * Work out which pluralisation rules to use for the current locale\n *\n * The locale may include a regional indicator (such as en-GB), but we don't\n * usually care about this part, as pluralisation rules are usually the same\n * regardless of region. There are exceptions, however, (e.g. Portuguese) so\n * this searches by both the full and shortened locale codes, just to be sure.\n *\n * @returns {PluralRuleName | undefined} The name of the pluralisation rule to use (a key for one\n * of the functions in this.pluralRules)\n */\nI18n.prototype.getPluralRulesForLocale = function () {\n var locale = this.locale\n var localeShort = locale.split('-')[0]\n\n // Look through the plural rules map to find which `pluralRule` is\n // appropriate for our current `locale`.\n for (var pluralRule in I18n.pluralRulesMap) {\n if (Object.prototype.hasOwnProperty.call(I18n.pluralRulesMap, pluralRule)) {\n var languages = I18n.pluralRulesMap[pluralRule]\n for (var i = 0; i < languages.length; i++) {\n if (languages[i] === locale || languages[i] === localeShort) {\n return pluralRule\n }\n }\n }\n }\n}\n\n/**\n * Map of plural rules to languages where those rules apply.\n *\n * Note: These groups are named for the most dominant or recognisable language\n * that uses each system. The groupings do not imply that the languages are\n * related to one another. Many languages have evolved the same systems\n * independently of one another.\n *\n * Code to support more languages can be found in the i18n spike:\n * {@link https://github.com/alphagov/govuk-frontend/blob/spike-i18n-support/src/govuk/i18n.mjs}\n *\n * Languages currently supported:\n *\n * Arabic: Arabic (ar)\n * Chinese: Burmese (my), Chinese (zh), Indonesian (id), Japanese (ja),\n * Javanese (jv), Korean (ko), Malay (ms), Thai (th), Vietnamese (vi)\n * French: Armenian (hy), Bangla (bn), French (fr), Gujarati (gu), Hindi (hi),\n * Persian Farsi (fa), Punjabi (pa), Zulu (zu)\n * German: Afrikaans (af), Albanian (sq), Azerbaijani (az), Basque (eu),\n * Bulgarian (bg), Catalan (ca), Danish (da), Dutch (nl), English (en),\n * Estonian (et), Finnish (fi), Georgian (ka), German (de), Greek (el),\n * Hungarian (hu), Luxembourgish (lb), Norwegian (no), Somali (so),\n * Swahili (sw), Swedish (sv), Tamil (ta), Telugu (te), Turkish (tr),\n * Urdu (ur)\n * Irish: Irish Gaelic (ga)\n * Russian: Russian (ru), Ukrainian (uk)\n * Scottish: Scottish Gaelic (gd)\n * Spanish: European Portuguese (pt-PT), Italian (it), Spanish (es)\n * Welsh: Welsh (cy)\n *\n * @type {Object<PluralRuleName, string[]>}\n */\nI18n.pluralRulesMap = {\n arabic: ['ar'],\n chinese: ['my', 'zh', 'id', 'ja', 'jv', 'ko', 'ms', 'th', 'vi'],\n french: ['hy', 'bn', 'fr', 'gu', 'hi', 'fa', 'pa', 'zu'],\n german: [\n 'af', 'sq', 'az', 'eu', 'bg', 'ca', 'da', 'nl', 'en', 'et', 'fi', 'ka',\n 'de', 'el', 'hu', 'lb', 'no', 'so', 'sw', 'sv', 'ta', 'te', 'tr', 'ur'\n ],\n irish: ['ga'],\n russian: ['ru', 'uk'],\n scottish: ['gd'],\n spanish: ['pt-PT', 'it', 'es'],\n welsh: ['cy']\n}\n\n/**\n * Different pluralisation rule sets\n *\n * Returns the appropriate suffix for the plural form associated with `n`.\n * Possible suffixes: 'zero', 'one', 'two', 'few', 'many', 'other' (the actual\n * meaning of each differs per locale). 'other' should always exist, even in\n * languages without plurals, such as Chinese.\n * {@link https://cldr.unicode.org/index/cldr-spec/plural-rules}\n *\n * The count must be a positive integer. Negative numbers and decimals aren't accounted for\n *\n * @type {Object<string, function(number): PluralRule>}\n */\nI18n.pluralRules = {\n /* eslint-disable jsdoc/require-jsdoc */\n arabic: function (n) {\n if (n === 0) { return 'zero' }\n if (n === 1) { return 'one' }\n if (n === 2) { return 'two' }\n if (n % 100 >= 3 && n % 100 <= 10) { return 'few' }\n if (n % 100 >= 11 && n % 100 <= 99) { return 'many' }\n return 'other'\n },\n chinese: function () {\n return 'other'\n },\n french: function (n) {\n return n === 0 || n === 1 ? 'one' : 'other'\n },\n german: function (n) {\n return n === 1 ? 'one' : 'other'\n },\n irish: function (n) {\n if (n === 1) { return 'one' }\n if (n === 2) { return 'two' }\n if (n >= 3 && n <= 6) { return 'few' }\n if (n >= 7 && n <= 10) { return 'many' }\n return 'other'\n },\n russian: function (n) {\n var lastTwo = n % 100\n var last = lastTwo % 10\n if (last === 1 && lastTwo !== 11) { return 'one' }\n if (last >= 2 && last <= 4 && !(lastTwo >= 12 && lastTwo <= 14)) { return 'few' }\n if (last === 0 || (last >= 5 && last <= 9) || (lastTwo >= 11 && lastTwo <= 14)) { return 'many' }\n // Note: The 'other' suffix is only used by decimal numbers in Russian.\n // We don't anticipate it being used, but it's here for consistency.\n return 'other'\n },\n scottish: function (n) {\n if (n === 1 || n === 11) { return 'one' }\n if (n === 2 || n === 12) { return 'two' }\n if ((n >= 3 && n <= 10) || (n >= 13 && n <= 19)) { return 'few' }\n return 'other'\n },\n spanish: function (n) {\n if (n === 1) { return 'one' }\n if (n % 1000000 === 0 && n !== 0) { return 'many' }\n return 'other'\n },\n welsh: function (n) {\n if (n === 0) { return 'zero' }\n if (n === 1) { return 'one' }\n if (n === 2) { return 'two' }\n if (n === 3) { return 'few' }\n if (n === 6) { return 'many' }\n return 'other'\n }\n /* eslint-enable jsdoc/require-jsdoc */\n}\n\n/**\n * Supported languages for plural rules\n *\n * @typedef {'arabic' | 'chinese' | 'french' | 'german' | 'irish' | 'russian' | 'scottish' | 'spanish' | 'welsh'} PluralRuleName\n */\n\n/**\n * Plural rule category mnemonic tags\n *\n * @typedef {'zero' | 'one' | 'two' | 'few' | 'many' | 'other'} PluralRule\n */\n\n/**\n * Translated message by plural rule they correspond to.\n *\n * Allows to group pluralised messages under a single key when passing\n * translations to a component's constructor\n *\n * @typedef {object} TranslationPluralForms\n * @property {string} [other] - General plural form\n * @property {string} [zero] - Plural form used with 0\n * @property {string} [one] - Plural form used with 1\n * @property {string} [two] - Plural form used with 2\n * @property {string} [few] - Plural form used for a few\n * @property {string} [many] - Plural form used for many\n */\n"],"names":[],"mappings":"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"}
@@ -19,11 +19,11 @@ $govuk-page-width: 960px !default;
19
19
  /// @access public
20
20
 
21
21
  $govuk-grid-widths: (
22
- one-quarter: 25%,
23
- one-third: 33.3333%,
24
- one-half: 50%,
25
- two-thirds: 66.6666%,
26
- three-quarters: 75%,
22
+ one-quarter: (100% / 4),
23
+ one-third: (100% / 3),
24
+ one-half: (100% / 2),
25
+ two-thirds: (200% / 3),
26
+ three-quarters: (300% / 4),
27
27
  full: 100%
28
28
  ) !default;
29
29
 
@@ -1,272 +1,273 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
3
- typeof define === 'function' && define.amd ? define('GOVUKFrontend', factory) :
4
- (factory());
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
3
+ typeof define === 'function' && define.amd ? define('GOVUKFrontend', factory) :
4
+ (factory());
5
5
  }(this, (function () { 'use strict';
6
6
 
7
- (function(undefined) {
8
-
9
- // Detection from https://raw.githubusercontent.com/Financial-Times/polyfill-service/master/packages/polyfill-library/polyfills/DOMTokenList/detect.js
10
- var detect = (
11
- 'DOMTokenList' in this && (function (x) {
12
- return 'classList' in x ? !x.classList.toggle('x', false) && !x.className : true;
13
- })(document.createElement('x'))
14
- );
15
-
16
- if (detect) return
17
-
18
- // Polyfill from https://raw.githubusercontent.com/Financial-Times/polyfill-service/master/packages/polyfill-library/polyfills/DOMTokenList/polyfill.js
19
- (function (global) {
20
- var nativeImpl = "DOMTokenList" in global && global.DOMTokenList;
21
-
22
- if (
23
- !nativeImpl ||
24
- (
25
- !!document.createElementNS &&
26
- !!document.createElementNS('http://www.w3.org/2000/svg', 'svg') &&
27
- !(document.createElementNS("http://www.w3.org/2000/svg", "svg").classList instanceof DOMTokenList)
28
- )
29
- ) {
30
- global.DOMTokenList = (function() { // eslint-disable-line no-unused-vars
31
- var dpSupport = true;
32
- var defineGetter = function (object, name, fn, configurable) {
33
- if (Object.defineProperty)
34
- Object.defineProperty(object, name, {
35
- configurable: false === dpSupport ? true : !!configurable,
36
- get: fn
37
- });
38
-
39
- else object.__defineGetter__(name, fn);
40
- };
41
-
42
- /** Ensure the browser allows Object.defineProperty to be used on native JavaScript objects. */
43
- try {
44
- defineGetter({}, "support");
45
- }
46
- catch (e) {
47
- dpSupport = false;
48
- }
49
-
50
-
51
- var _DOMTokenList = function (el, prop) {
52
- var that = this;
53
- var tokens = [];
54
- var tokenMap = {};
55
- var length = 0;
56
- var maxLength = 0;
57
- var addIndexGetter = function (i) {
58
- defineGetter(that, i, function () {
59
- preop();
60
- return tokens[i];
61
- }, false);
7
+ (function(undefined) {
8
+
9
+ // Detection from https://raw.githubusercontent.com/Financial-Times/polyfill-service/master/packages/polyfill-library/polyfills/DOMTokenList/detect.js
10
+ var detect = (
11
+ 'DOMTokenList' in this && (function (x) {
12
+ return 'classList' in x ? !x.classList.toggle('x', false) && !x.className : true;
13
+ })(document.createElement('x'))
14
+ );
15
+
16
+ if (detect) return
17
+
18
+ // Polyfill from https://raw.githubusercontent.com/Financial-Times/polyfill-service/master/packages/polyfill-library/polyfills/DOMTokenList/polyfill.js
19
+ (function (global) {
20
+ var nativeImpl = "DOMTokenList" in global && global.DOMTokenList;
21
+
22
+ if (
23
+ !nativeImpl ||
24
+ (
25
+ !!document.createElementNS &&
26
+ !!document.createElementNS('http://www.w3.org/2000/svg', 'svg') &&
27
+ !(document.createElementNS("http://www.w3.org/2000/svg", "svg").classList instanceof DOMTokenList)
28
+ )
29
+ ) {
30
+ global.DOMTokenList = (function() { // eslint-disable-line no-unused-vars
31
+ var dpSupport = true;
32
+ var defineGetter = function (object, name, fn, configurable) {
33
+ if (Object.defineProperty)
34
+ Object.defineProperty(object, name, {
35
+ configurable: false === dpSupport ? true : !!configurable,
36
+ get: fn
37
+ });
38
+
39
+ else object.__defineGetter__(name, fn);
40
+ };
62
41
 
63
- };
64
- var reindex = function () {
42
+ /** Ensure the browser allows Object.defineProperty to be used on native JavaScript objects. */
43
+ try {
44
+ defineGetter({}, "support");
45
+ }
46
+ catch (e) {
47
+ dpSupport = false;
48
+ }
65
49
 
66
- /** Define getter functions for array-like access to the tokenList's contents. */
67
- if (length >= maxLength)
68
- for (; maxLength < length; ++maxLength) {
69
- addIndexGetter(maxLength);
70
- }
71
- };
72
50
 
73
- /** Helper function called at the start of each class method. Internal use only. */
74
- var preop = function () {
75
- var error;
76
- var i;
77
- var args = arguments;
78
- var rSpace = /\s+/;
79
-
80
- /** Validate the token/s passed to an instance method, if any. */
81
- if (args.length)
82
- for (i = 0; i < args.length; ++i)
83
- if (rSpace.test(args[i])) {
84
- error = new SyntaxError('String "' + args[i] + '" ' + "contains" + ' an invalid character');
85
- error.code = 5;
86
- error.name = "InvalidCharacterError";
87
- throw error;
51
+ var _DOMTokenList = function (el, prop) {
52
+ var that = this;
53
+ var tokens = [];
54
+ var tokenMap = {};
55
+ var length = 0;
56
+ var maxLength = 0;
57
+ var addIndexGetter = function (i) {
58
+ defineGetter(that, i, function () {
59
+ preop();
60
+ return tokens[i];
61
+ }, false);
62
+
63
+ };
64
+ var reindex = function () {
65
+
66
+ /** Define getter functions for array-like access to the tokenList's contents. */
67
+ if (length >= maxLength)
68
+ for (; maxLength < length; ++maxLength) {
69
+ addIndexGetter(maxLength);
70
+ }
71
+ };
72
+
73
+ /** Helper function called at the start of each class method. Internal use only. */
74
+ var preop = function () {
75
+ var error;
76
+ var i;
77
+ var args = arguments;
78
+ var rSpace = /\s+/;
79
+
80
+ /** Validate the token/s passed to an instance method, if any. */
81
+ if (args.length)
82
+ for (i = 0; i < args.length; ++i)
83
+ if (rSpace.test(args[i])) {
84
+ error = new SyntaxError('String "' + args[i] + '" ' + "contains" + ' an invalid character');
85
+ error.code = 5;
86
+ error.name = "InvalidCharacterError";
87
+ throw error;
88
+ }
89
+
90
+
91
+ /** Split the new value apart by whitespace*/
92
+ if (typeof el[prop] === "object") {
93
+ tokens = ("" + el[prop].baseVal).replace(/^\s+|\s+$/g, "").split(rSpace);
94
+ } else {
95
+ tokens = ("" + el[prop]).replace(/^\s+|\s+$/g, "").split(rSpace);
88
96
  }
89
97
 
98
+ /** Avoid treating blank strings as single-item token lists */
99
+ if ("" === tokens[0]) tokens = [];
90
100
 
91
- /** Split the new value apart by whitespace*/
92
- if (typeof el[prop] === "object") {
93
- tokens = ("" + el[prop].baseVal).replace(/^\s+|\s+$/g, "").split(rSpace);
94
- } else {
95
- tokens = ("" + el[prop]).replace(/^\s+|\s+$/g, "").split(rSpace);
96
- }
97
-
98
- /** Avoid treating blank strings as single-item token lists */
99
- if ("" === tokens[0]) tokens = [];
100
-
101
- /** Repopulate the internal token lists */
102
- tokenMap = {};
103
- for (i = 0; i < tokens.length; ++i)
104
- tokenMap[tokens[i]] = true;
105
- length = tokens.length;
106
- reindex();
107
- };
101
+ /** Repopulate the internal token lists */
102
+ tokenMap = {};
103
+ for (i = 0; i < tokens.length; ++i)
104
+ tokenMap[tokens[i]] = true;
105
+ length = tokens.length;
106
+ reindex();
107
+ };
108
108
 
109
- /** Populate our internal token list if the targeted attribute of the subject element isn't empty. */
110
- preop();
109
+ /** Populate our internal token list if the targeted attribute of the subject element isn't empty. */
110
+ preop();
111
111
 
112
- /** Return the number of tokens in the underlying string. Read-only. */
113
- defineGetter(that, "length", function () {
114
- preop();
115
- return length;
116
- });
112
+ /** Return the number of tokens in the underlying string. Read-only. */
113
+ defineGetter(that, "length", function () {
114
+ preop();
115
+ return length;
116
+ });
117
+
118
+ /** Override the default toString/toLocaleString methods to return a space-delimited list of tokens when typecast. */
119
+ that.toLocaleString =
120
+ that.toString = function () {
121
+ preop();
122
+ return tokens.join(" ");
123
+ };
124
+
125
+ that.item = function (idx) {
126
+ preop();
127
+ return tokens[idx];
128
+ };
129
+
130
+ that.contains = function (token) {
131
+ preop();
132
+ return !!tokenMap[token];
133
+ };
134
+
135
+ that.add = function () {
136
+ preop.apply(that, args = arguments);
137
+
138
+ for (var args, token, i = 0, l = args.length; i < l; ++i) {
139
+ token = args[i];
140
+ if (!tokenMap[token]) {
141
+ tokens.push(token);
142
+ tokenMap[token] = true;
143
+ }
144
+ }
117
145
 
118
- /** Override the default toString/toLocaleString methods to return a space-delimited list of tokens when typecast. */
119
- that.toLocaleString =
120
- that.toString = function () {
121
- preop();
122
- return tokens.join(" ");
123
- };
146
+ /** Update the targeted attribute of the attached element if the token list's changed. */
147
+ if (length !== tokens.length) {
148
+ length = tokens.length >>> 0;
149
+ if (typeof el[prop] === "object") {
150
+ el[prop].baseVal = tokens.join(" ");
151
+ } else {
152
+ el[prop] = tokens.join(" ");
153
+ }
154
+ reindex();
155
+ }
156
+ };
124
157
 
125
- that.item = function (idx) {
126
- preop();
127
- return tokens[idx];
128
- };
158
+ that.remove = function () {
159
+ preop.apply(that, args = arguments);
129
160
 
130
- that.contains = function (token) {
131
- preop();
132
- return !!tokenMap[token];
133
- };
161
+ /** Build a hash of token names to compare against when recollecting our token list. */
162
+ for (var args, ignore = {}, i = 0, t = []; i < args.length; ++i) {
163
+ ignore[args[i]] = true;
164
+ delete tokenMap[args[i]];
165
+ }
134
166
 
135
- that.add = function () {
136
- preop.apply(that, args = arguments);
167
+ /** Run through our tokens list and reassign only those that aren't defined in the hash declared above. */
168
+ for (i = 0; i < tokens.length; ++i)
169
+ if (!ignore[tokens[i]]) t.push(tokens[i]);
137
170
 
138
- for (var args, token, i = 0, l = args.length; i < l; ++i) {
139
- token = args[i];
140
- if (!tokenMap[token]) {
141
- tokens.push(token);
142
- tokenMap[token] = true;
143
- }
144
- }
171
+ tokens = t;
172
+ length = t.length >>> 0;
145
173
 
146
- /** Update the targeted attribute of the attached element if the token list's changed. */
147
- if (length !== tokens.length) {
148
- length = tokens.length >>> 0;
149
- if (typeof el[prop] === "object") {
150
- el[prop].baseVal = tokens.join(" ");
151
- } else {
152
- el[prop] = tokens.join(" ");
153
- }
154
- reindex();
155
- }
156
- };
174
+ /** Update the targeted attribute of the attached element. */
175
+ if (typeof el[prop] === "object") {
176
+ el[prop].baseVal = tokens.join(" ");
177
+ } else {
178
+ el[prop] = tokens.join(" ");
179
+ }
180
+ reindex();
181
+ };
182
+
183
+ that.toggle = function (token, force) {
184
+ preop.apply(that, [token]);
185
+
186
+ /** Token state's being forced. */
187
+ if (undefined !== force) {
188
+ if (force) {
189
+ that.add(token);
190
+ return true;
191
+ } else {
192
+ that.remove(token);
193
+ return false;
194
+ }
195
+ }
157
196
 
158
- that.remove = function () {
159
- preop.apply(that, args = arguments);
197
+ /** Token already exists in tokenList. Remove it, and return FALSE. */
198
+ if (tokenMap[token]) {
199
+ that.remove(token);
200
+ return false;
201
+ }
160
202
 
161
- /** Build a hash of token names to compare against when recollecting our token list. */
162
- for (var args, ignore = {}, i = 0, t = []; i < args.length; ++i) {
163
- ignore[args[i]] = true;
164
- delete tokenMap[args[i]];
165
- }
203
+ /** Otherwise, add the token and return TRUE. */
204
+ that.add(token);
205
+ return true;
206
+ };
166
207
 
167
- /** Run through our tokens list and reassign only those that aren't defined in the hash declared above. */
168
- for (i = 0; i < tokens.length; ++i)
169
- if (!ignore[tokens[i]]) t.push(tokens[i]);
208
+ return that;
209
+ };
170
210
 
171
- tokens = t;
172
- length = t.length >>> 0;
211
+ return _DOMTokenList;
212
+ }());
213
+ }
173
214
 
174
- /** Update the targeted attribute of the attached element. */
175
- if (typeof el[prop] === "object") {
176
- el[prop].baseVal = tokens.join(" ");
177
- } else {
178
- el[prop] = tokens.join(" ");
215
+ // Add second argument to native DOMTokenList.toggle() if necessary
216
+ (function () {
217
+ var e = document.createElement('span');
218
+ if (!('classList' in e)) return;
219
+ e.classList.toggle('x', false);
220
+ if (!e.classList.contains('x')) return;
221
+ e.classList.constructor.prototype.toggle = function toggle(token /*, force*/) {
222
+ var force = arguments[1];
223
+ if (force === undefined) {
224
+ var add = !this.contains(token);
225
+ this[add ? 'add' : 'remove'](token);
226
+ return add;
179
227
  }
180
- reindex();
228
+ force = !!force;
229
+ this[force ? 'add' : 'remove'](token);
230
+ return force;
181
231
  };
182
-
183
- that.toggle = function (token, force) {
184
- preop.apply(that, [token]);
185
-
186
- /** Token state's being forced. */
187
- if (undefined !== force) {
188
- if (force) {
189
- that.add(token);
190
- return true;
191
- } else {
192
- that.remove(token);
193
- return false;
194
- }
232
+ }());
233
+
234
+ // Add multiple arguments to native DOMTokenList.add() if necessary
235
+ (function () {
236
+ var e = document.createElement('span');
237
+ if (!('classList' in e)) return;
238
+ e.classList.add('a', 'b');
239
+ if (e.classList.contains('b')) return;
240
+ var native = e.classList.constructor.prototype.add;
241
+ e.classList.constructor.prototype.add = function () {
242
+ var args = arguments;
243
+ var l = arguments.length;
244
+ for (var i = 0; i < l; i++) {
245
+ native.call(this, args[i]);
195
246
  }
196
-
197
- /** Token already exists in tokenList. Remove it, and return FALSE. */
198
- if (tokenMap[token]) {
199
- that.remove(token);
200
- return false;
247
+ };
248
+ }());
249
+
250
+ // Add multiple arguments to native DOMTokenList.remove() if necessary
251
+ (function () {
252
+ var e = document.createElement('span');
253
+ if (!('classList' in e)) return;
254
+ e.classList.add('a');
255
+ e.classList.add('b');
256
+ e.classList.remove('a', 'b');
257
+ if (!e.classList.contains('b')) return;
258
+ var native = e.classList.constructor.prototype.remove;
259
+ e.classList.constructor.prototype.remove = function () {
260
+ var args = arguments;
261
+ var l = arguments.length;
262
+ for (var i = 0; i < l; i++) {
263
+ native.call(this, args[i]);
201
264
  }
202
-
203
- /** Otherwise, add the token and return TRUE. */
204
- that.add(token);
205
- return true;
206
265
  };
266
+ }());
207
267
 
208
- return that;
209
- };
210
-
211
- return _DOMTokenList;
212
- }());
213
- }
214
-
215
- // Add second argument to native DOMTokenList.toggle() if necessary
216
- (function () {
217
- var e = document.createElement('span');
218
- if (!('classList' in e)) return;
219
- e.classList.toggle('x', false);
220
- if (!e.classList.contains('x')) return;
221
- e.classList.constructor.prototype.toggle = function toggle(token /*, force*/) {
222
- var force = arguments[1];
223
- if (force === undefined) {
224
- var add = !this.contains(token);
225
- this[add ? 'add' : 'remove'](token);
226
- return add;
227
- }
228
- force = !!force;
229
- this[force ? 'add' : 'remove'](token);
230
- return force;
231
- };
232
- }());
233
-
234
- // Add multiple arguments to native DOMTokenList.add() if necessary
235
- (function () {
236
- var e = document.createElement('span');
237
- if (!('classList' in e)) return;
238
- e.classList.add('a', 'b');
239
- if (e.classList.contains('b')) return;
240
- var native = e.classList.constructor.prototype.add;
241
- e.classList.constructor.prototype.add = function () {
242
- var args = arguments;
243
- var l = arguments.length;
244
- for (var i = 0; i < l; i++) {
245
- native.call(this, args[i]);
246
- }
247
- };
248
- }());
249
-
250
- // Add multiple arguments to native DOMTokenList.remove() if necessary
251
- (function () {
252
- var e = document.createElement('span');
253
- if (!('classList' in e)) return;
254
- e.classList.add('a');
255
- e.classList.add('b');
256
- e.classList.remove('a', 'b');
257
- if (!e.classList.contains('b')) return;
258
- var native = e.classList.constructor.prototype.remove;
259
- e.classList.constructor.prototype.remove = function () {
260
- var args = arguments;
261
- var l = arguments.length;
262
- for (var i = 0; i < l; i++) {
263
- native.call(this, args[i]);
264
- }
265
- };
266
- }());
267
-
268
- }(this));
268
+ }(this));
269
269
 
270
- }).call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
270
+ }).call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
271
271
 
272
272
  })));
273
+ //# sourceMappingURL=DOMTokenList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DOMTokenList.js","sources":["../../../../src/govuk/vendor/polyfills/DOMTokenList.mjs"],"sourcesContent":["(function(undefined) {\n\n // Detection from https://raw.githubusercontent.com/Financial-Times/polyfill-service/master/packages/polyfill-library/polyfills/DOMTokenList/detect.js\n var detect = (\n 'DOMTokenList' in this && (function (x) {\n return 'classList' in x ? !x.classList.toggle('x', false) && !x.className : true;\n })(document.createElement('x'))\n )\n\n if (detect) return\n\n // Polyfill from https://raw.githubusercontent.com/Financial-Times/polyfill-service/master/packages/polyfill-library/polyfills/DOMTokenList/polyfill.js\n (function (global) {\n var nativeImpl = \"DOMTokenList\" in global && global.DOMTokenList;\n\n if (\n !nativeImpl ||\n (\n !!document.createElementNS &&\n !!document.createElementNS('http://www.w3.org/2000/svg', 'svg') &&\n !(document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\").classList instanceof DOMTokenList)\n )\n ) {\n global.DOMTokenList = (function() { // eslint-disable-line no-unused-vars\n var dpSupport = true;\n var defineGetter = function (object, name, fn, configurable) {\n if (Object.defineProperty)\n Object.defineProperty(object, name, {\n configurable: false === dpSupport ? true : !!configurable,\n get: fn\n });\n\n else object.__defineGetter__(name, fn);\n };\n\n /** Ensure the browser allows Object.defineProperty to be used on native JavaScript objects. */\n try {\n defineGetter({}, \"support\");\n }\n catch (e) {\n dpSupport = false;\n }\n\n\n var _DOMTokenList = function (el, prop) {\n var that = this;\n var tokens = [];\n var tokenMap = {};\n var length = 0;\n var maxLength = 0;\n var addIndexGetter = function (i) {\n defineGetter(that, i, function () {\n preop();\n return tokens[i];\n }, false);\n\n };\n var reindex = function () {\n\n /** Define getter functions for array-like access to the tokenList's contents. */\n if (length >= maxLength)\n for (; maxLength < length; ++maxLength) {\n addIndexGetter(maxLength);\n }\n };\n\n /** Helper function called at the start of each class method. Internal use only. */\n var preop = function () {\n var error;\n var i;\n var args = arguments;\n var rSpace = /\\s+/;\n\n /** Validate the token/s passed to an instance method, if any. */\n if (args.length)\n for (i = 0; i < args.length; ++i)\n if (rSpace.test(args[i])) {\n error = new SyntaxError('String \"' + args[i] + '\" ' + \"contains\" + ' an invalid character');\n error.code = 5;\n error.name = \"InvalidCharacterError\";\n throw error;\n }\n\n\n /** Split the new value apart by whitespace*/\n if (typeof el[prop] === \"object\") {\n tokens = (\"\" + el[prop].baseVal).replace(/^\\s+|\\s+$/g, \"\").split(rSpace);\n } else {\n tokens = (\"\" + el[prop]).replace(/^\\s+|\\s+$/g, \"\").split(rSpace);\n }\n\n /** Avoid treating blank strings as single-item token lists */\n if (\"\" === tokens[0]) tokens = [];\n\n /** Repopulate the internal token lists */\n tokenMap = {};\n for (i = 0; i < tokens.length; ++i)\n tokenMap[tokens[i]] = true;\n length = tokens.length;\n reindex();\n };\n\n /** Populate our internal token list if the targeted attribute of the subject element isn't empty. */\n preop();\n\n /** Return the number of tokens in the underlying string. Read-only. */\n defineGetter(that, \"length\", function () {\n preop();\n return length;\n });\n\n /** Override the default toString/toLocaleString methods to return a space-delimited list of tokens when typecast. */\n that.toLocaleString =\n that.toString = function () {\n preop();\n return tokens.join(\" \");\n };\n\n that.item = function (idx) {\n preop();\n return tokens[idx];\n };\n\n that.contains = function (token) {\n preop();\n return !!tokenMap[token];\n };\n\n that.add = function () {\n preop.apply(that, args = arguments);\n\n for (var args, token, i = 0, l = args.length; i < l; ++i) {\n token = args[i];\n if (!tokenMap[token]) {\n tokens.push(token);\n tokenMap[token] = true;\n }\n }\n\n /** Update the targeted attribute of the attached element if the token list's changed. */\n if (length !== tokens.length) {\n length = tokens.length >>> 0;\n if (typeof el[prop] === \"object\") {\n el[prop].baseVal = tokens.join(\" \");\n } else {\n el[prop] = tokens.join(\" \");\n }\n reindex();\n }\n };\n\n that.remove = function () {\n preop.apply(that, args = arguments);\n\n /** Build a hash of token names to compare against when recollecting our token list. */\n for (var args, ignore = {}, i = 0, t = []; i < args.length; ++i) {\n ignore[args[i]] = true;\n delete tokenMap[args[i]];\n }\n\n /** Run through our tokens list and reassign only those that aren't defined in the hash declared above. */\n for (i = 0; i < tokens.length; ++i)\n if (!ignore[tokens[i]]) t.push(tokens[i]);\n\n tokens = t;\n length = t.length >>> 0;\n\n /** Update the targeted attribute of the attached element. */\n if (typeof el[prop] === \"object\") {\n el[prop].baseVal = tokens.join(\" \");\n } else {\n el[prop] = tokens.join(\" \");\n }\n reindex();\n };\n\n that.toggle = function (token, force) {\n preop.apply(that, [token]);\n\n /** Token state's being forced. */\n if (undefined !== force) {\n if (force) {\n that.add(token);\n return true;\n } else {\n that.remove(token);\n return false;\n }\n }\n\n /** Token already exists in tokenList. Remove it, and return FALSE. */\n if (tokenMap[token]) {\n that.remove(token);\n return false;\n }\n\n /** Otherwise, add the token and return TRUE. */\n that.add(token);\n return true;\n };\n\n return that;\n };\n\n return _DOMTokenList;\n }());\n }\n\n // Add second argument to native DOMTokenList.toggle() if necessary\n (function () {\n var e = document.createElement('span');\n if (!('classList' in e)) return;\n e.classList.toggle('x', false);\n if (!e.classList.contains('x')) return;\n e.classList.constructor.prototype.toggle = function toggle(token /*, force*/) {\n var force = arguments[1];\n if (force === undefined) {\n var add = !this.contains(token);\n this[add ? 'add' : 'remove'](token);\n return add;\n }\n force = !!force;\n this[force ? 'add' : 'remove'](token);\n return force;\n };\n }());\n\n // Add multiple arguments to native DOMTokenList.add() if necessary\n (function () {\n var e = document.createElement('span');\n if (!('classList' in e)) return;\n e.classList.add('a', 'b');\n if (e.classList.contains('b')) return;\n var native = e.classList.constructor.prototype.add;\n e.classList.constructor.prototype.add = function () {\n var args = arguments;\n var l = arguments.length;\n for (var i = 0; i < l; i++) {\n native.call(this, args[i]);\n }\n };\n }());\n\n // Add multiple arguments to native DOMTokenList.remove() if necessary\n (function () {\n var e = document.createElement('span');\n if (!('classList' in e)) return;\n e.classList.add('a');\n e.classList.add('b');\n e.classList.remove('a', 'b');\n if (!e.classList.contains('b')) return;\n var native = e.classList.constructor.prototype.remove;\n e.classList.constructor.prototype.remove = function () {\n var args = arguments;\n var l = arguments.length;\n for (var i = 0; i < l; i++) {\n native.call(this, args[i]);\n }\n };\n }());\n\n }(this));\n\n}).call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});"],"names":[],"mappings":"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"}