{ "version": 3, "sources": ["webpack:///webpack/universalModuleDefinition", "webpack:///node_modules/core-js/internals/a-callable.js", "webpack:///node_modules/core-js/internals/a-possible-prototype.js", "webpack:///node_modules/core-js/internals/advance-string-index.js", "webpack:///node_modules/core-js/internals/an-instance.js", "webpack:///node_modules/core-js/internals/an-object.js", "webpack:///node_modules/core-js/internals/array-includes.js", "webpack:///node_modules/core-js/internals/array-iteration.js", "webpack:///node_modules/core-js/internals/array-method-has-species-support.js", "webpack:///node_modules/core-js/internals/array-method-is-strict.js", "webpack:///node_modules/core-js/internals/array-set-length.js", "webpack:///node_modules/core-js/internals/array-species-constructor.js", "webpack:///node_modules/core-js/internals/array-species-create.js", "webpack:///node_modules/core-js/internals/call-with-safe-iteration-closing.js", "webpack:///node_modules/core-js/internals/classof-raw.js", "webpack:///node_modules/core-js/internals/classof.js", "webpack:///node_modules/core-js/internals/copy-constructor-properties.js", "webpack:///node_modules/core-js/internals/correct-prototype-getter.js", "webpack:///node_modules/core-js/internals/create-iter-result-object.js", "webpack:///node_modules/core-js/internals/create-non-enumerable-property.js", "webpack:///node_modules/core-js/internals/create-property-descriptor.js", "webpack:///node_modules/core-js/internals/create-property.js", "webpack:///node_modules/core-js/internals/define-built-in-accessor.js", "webpack:///node_modules/core-js/internals/define-built-in.js", "webpack:///node_modules/core-js/internals/define-built-ins.js", "webpack:///node_modules/core-js/internals/define-global-property.js", "webpack:///node_modules/core-js/internals/descriptors.js", "webpack:///node_modules/core-js/internals/document-create-element.js", "webpack:///node_modules/core-js/internals/does-not-exceed-safe-integer.js", "webpack:///node_modules/core-js/internals/engine-user-agent.js", "webpack:///node_modules/core-js/internals/engine-v8-version.js", "webpack:///node_modules/core-js/internals/enum-bug-keys.js", "webpack:///node_modules/core-js/internals/error-stack-clear.js", "webpack:///node_modules/core-js/internals/error-stack-install.js", "webpack:///node_modules/core-js/internals/error-stack-installable.js", "webpack:///node_modules/core-js/internals/export.js", "webpack:///node_modules/core-js/internals/fails.js", "webpack:///node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js", "webpack:///node_modules/core-js/internals/function-apply.js", "webpack:///node_modules/core-js/internals/function-bind-context.js", "webpack:///node_modules/core-js/internals/function-bind-native.js", "webpack:///node_modules/core-js/internals/function-call.js", "webpack:///node_modules/core-js/internals/function-name.js", "webpack:///node_modules/core-js/internals/function-uncurry-this-accessor.js", "webpack:///node_modules/core-js/internals/function-uncurry-this-clause.js", "webpack:///node_modules/core-js/internals/function-uncurry-this.js", "webpack:///node_modules/core-js/internals/get-built-in.js", "webpack:///node_modules/core-js/internals/get-iterator-direct.js", "webpack:///node_modules/core-js/internals/get-method.js", "webpack:///node_modules/core-js/internals/global.js", "webpack:///node_modules/core-js/internals/has-own-property.js", "webpack:///node_modules/core-js/internals/hidden-keys.js", "webpack:///node_modules/core-js/internals/html.js", "webpack:///node_modules/core-js/internals/ie8-dom-define.js", "webpack:///node_modules/core-js/internals/indexed-object.js", "webpack:///node_modules/core-js/internals/inherit-if-required.js", "webpack:///node_modules/core-js/internals/inspect-source.js", "webpack:///node_modules/core-js/internals/install-error-cause.js", "webpack:///node_modules/core-js/internals/internal-state.js", "webpack:///node_modules/core-js/internals/is-array.js", "webpack:///node_modules/core-js/internals/is-callable.js", "webpack:///node_modules/core-js/internals/is-constructor.js", "webpack:///node_modules/core-js/internals/is-forced.js", "webpack:///node_modules/core-js/internals/is-null-or-undefined.js", "webpack:///node_modules/core-js/internals/is-object.js", "webpack:///node_modules/core-js/internals/is-possible-prototype.js", "webpack:///node_modules/core-js/internals/is-pure.js", "webpack:///node_modules/core-js/internals/is-symbol.js", "webpack:///node_modules/core-js/internals/iterator-close.js", "webpack:///node_modules/core-js/internals/iterator-create-proxy.js", "webpack:///node_modules/core-js/internals/iterator-map.js", "webpack:///node_modules/core-js/internals/iterators-core.js", "webpack:///node_modules/core-js/internals/length-of-array-like.js", "webpack:///node_modules/core-js/internals/make-built-in.js", "webpack:///node_modules/core-js/internals/math-trunc.js", "webpack:///node_modules/core-js/internals/normalize-string-argument.js", "webpack:///node_modules/core-js/internals/object-assign.js", "webpack:///node_modules/core-js/internals/object-create.js", "webpack:///node_modules/core-js/internals/object-define-properties.js", "webpack:///node_modules/core-js/internals/object-define-property.js", "webpack:///node_modules/core-js/internals/object-get-own-property-descriptor.js", "webpack:///node_modules/core-js/internals/object-get-own-property-names.js", "webpack:///node_modules/core-js/internals/object-get-own-property-symbols.js", "webpack:///node_modules/core-js/internals/object-get-prototype-of.js", "webpack:///node_modules/core-js/internals/object-is-prototype-of.js", "webpack:///node_modules/core-js/internals/object-keys-internal.js", "webpack:///node_modules/core-js/internals/object-keys.js", "webpack:///node_modules/core-js/internals/object-property-is-enumerable.js", "webpack:///node_modules/core-js/internals/object-set-prototype-of.js", "webpack:///node_modules/core-js/internals/object-to-string.js", "webpack:///node_modules/core-js/internals/ordinary-to-primitive.js", "webpack:///node_modules/core-js/internals/own-keys.js", "webpack:///node_modules/core-js/internals/proxy-accessor.js", "webpack:///node_modules/core-js/internals/regexp-exec-abstract.js", "webpack:///node_modules/core-js/internals/regexp-exec.js", "webpack:///node_modules/core-js/internals/regexp-flags.js", "webpack:///node_modules/core-js/internals/regexp-sticky-helpers.js", "webpack:///node_modules/core-js/internals/regexp-unsupported-dot-all.js", "webpack:///node_modules/core-js/internals/regexp-unsupported-ncg.js", "webpack:///node_modules/core-js/internals/require-object-coercible.js", "webpack:///node_modules/core-js/internals/shared-key.js", "webpack:///node_modules/core-js/internals/shared-store.js", "webpack:///node_modules/core-js/internals/shared.js", "webpack:///node_modules/core-js/internals/string-multibyte.js", "webpack:///node_modules/core-js/internals/symbol-constructor-detection.js", "webpack:///node_modules/core-js/internals/to-absolute-index.js", "webpack:///node_modules/core-js/internals/to-indexed-object.js", "webpack:///node_modules/core-js/internals/to-integer-or-infinity.js", "webpack:///node_modules/core-js/internals/to-length.js", "webpack:///node_modules/core-js/internals/to-object.js", "webpack:///node_modules/core-js/internals/to-primitive.js", "webpack:///node_modules/core-js/internals/to-property-key.js", "webpack:///node_modules/core-js/internals/to-string-tag-support.js", "webpack:///node_modules/core-js/internals/to-string.js", "webpack:///node_modules/core-js/internals/try-to-string.js", "webpack:///node_modules/core-js/internals/uid.js", "webpack:///node_modules/core-js/internals/use-symbol-as-uid.js", "webpack:///node_modules/core-js/internals/v8-prototype-define-bug.js", "webpack:///node_modules/core-js/internals/weak-map-basic-detection.js", "webpack:///node_modules/core-js/internals/well-known-symbol.js", "webpack:///node_modules/core-js/internals/wrap-error-constructor-with-cause.js", "webpack:///node_modules/core-js/modules/es.array.concat.js", "webpack:///node_modules/core-js/modules/es.array.filter.js", "webpack:///node_modules/core-js/modules/es.array.join.js", "webpack:///node_modules/core-js/modules/es.array.map.js", "webpack:///node_modules/core-js/modules/es.array.push.js", "webpack:///node_modules/core-js/modules/es.error.cause.js", "webpack:///node_modules/core-js/modules/es.function.name.js", "webpack:///node_modules/core-js/modules/es.object.assign.js", "webpack:///node_modules/core-js/modules/es.object.to-string.js", "webpack:///node_modules/core-js/modules/es.regexp.exec.js", "webpack:///node_modules/core-js/modules/es.string.match.js", "webpack:///node_modules/core-js/modules/esnext.iterator.constructor.js", "webpack:///node_modules/core-js/modules/esnext.iterator.filter.js", "webpack:///node_modules/core-js/modules/esnext.iterator.map.js", "webpack:///webpack/bootstrap", "webpack:///webpack/runtime/define%20property%20getters", "webpack:///webpack/runtime/global", "webpack:///webpack/runtime/hasOwnProperty%20shorthand", "webpack:///node_modules/preact/dist/preact.mjs", "webpack:///status.js", "webpack:///dropdown-arrow-down.js", "webpack:///autocomplete.js", "webpack:///wrapper.js", "../../../node_modules/lodash.debounce/index.js", "../../../node_modules/govuk-frontend/src/govuk/common/index.mjs", "../../../node_modules/govuk-frontend/src/govuk/errors/index.mjs", "../../../node_modules/govuk-frontend/src/govuk/component.mjs", "../../../node_modules/govuk-frontend/src/govuk/common/configuration.mjs", "../../../node_modules/govuk-frontend/src/govuk/i18n.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/accordion/accordion.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/button/button.mjs", "../../../node_modules/govuk-frontend/src/govuk/common/closest-attribute-value.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/character-count/character-count.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/checkboxes/checkboxes.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/error-summary/error-summary.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/exit-this-page/exit-this-page.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/file-upload/file-upload.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/header/header.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/notification-banner/notification-banner.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/password-input/password-input.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/radios/radios.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/service-navigation/service-navigation.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/skip-link/skip-link.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/tabs/tabs.mjs", "../../../node_modules/govuk-frontend/src/govuk/init.mjs", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../javascript/controllers/autocomplete_controller.js", "../../javascript/utils/request_helper.js", "../../javascript/controllers/filter_search_controller.js", "../../javascript/controllers/filter_controller.js", "../../javascript/controllers/index.js", "../../javascript/application.js"], "sourcesContent": ["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"accessibleAutocomplete\"] = factory();\n\telse\n\t\troot[\"accessibleAutocomplete\"] = factory();\n})(self, function() {\nreturn ", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n", "'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (isPossiblePrototype(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n", "'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError('Incorrect invocation');\n};\n", "'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE === 1;\n var IS_FILTER = TYPE === 2;\n var IS_SOME = TYPE === 3;\n var IS_EVERY = TYPE === 4;\n var IS_FIND_INDEX = TYPE === 6;\n var IS_FILTER_REJECT = TYPE === 7;\n var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(self);\n var boundFunction = bind(callbackfn, that);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n", "'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n", "'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n", "'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n};\n", "'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n", "'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n", "'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n", "'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n", "'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n", "'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n", "'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n", "'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\n// non-standard V8\nvar captureStackTrace = Error.captureStackTrace;\n\nmodule.exports = function (error, C, stack, dropEntries) {\n if (ERROR_STACK_INSTALLABLE) {\n if (captureStackTrace) captureStackTrace(error, C);\n else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\n }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = new Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = global[TARGET] && global[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n", "'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n", "'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegExp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) !== 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () {\n execCalled = true;\n return null;\n };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };\n }\n return { done: true, value: call(nativeMethod, str, regexp, arg2) };\n }\n return { done: false };\n });\n\n defineBuiltIn(String.prototype, KEY, methods[0]);\n defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n", "'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n", "'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n return {\n iterator: obj,\n next: obj.next,\n done: false\n };\n};\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n", "'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n", "'use strict';\nmodule.exports = {};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n", "'use strict';\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n", "'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n", "'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n", "'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, [], argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n", "'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n", "'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n", "'use strict';\nmodule.exports = false;\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar InternalStateModule = require('../internals/internal-state');\nvar getMethod = require('../internals/get-method');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\nvar setInternalState = InternalStateModule.set;\n\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\n var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n\n return defineBuiltIns(create(IteratorPrototype), {\n next: function next() {\n var state = getInternalState(this);\n // for simplification:\n // for `%WrapForValidIteratorPrototype%.next` our `nextHandler` returns `IterResultObject`\n // for `%IteratorHelperPrototype%.next` - just a value\n if (IS_ITERATOR) return state.nextHandler();\n try {\n var result = state.done ? undefined : state.nextHandler();\n return createIterResultObject(result, state.done);\n } catch (error) {\n state.done = true;\n throw error;\n }\n },\n 'return': function () {\n var state = getInternalState(this);\n var iterator = state.iterator;\n state.done = true;\n if (IS_ITERATOR) {\n var returnMethod = getMethod(iterator, 'return');\n return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n }\n if (state.inner) try {\n iteratorClose(state.inner.iterator, 'normal');\n } catch (error) {\n return iteratorClose(iterator, 'throw', error);\n }\n iteratorClose(iterator, 'normal');\n return createIterResultObject(undefined, true);\n }\n });\n};\n\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR) {\n var IteratorProxy = function Iterator(record, state) {\n if (state) {\n state.iterator = record.iterator;\n state.next = record.next;\n } else state = record;\n state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n state.nextHandler = nextHandler;\n state.counter = 0;\n state.done = false;\n setInternalState(this, state);\n };\n\n IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n\n return IteratorProxy;\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var result = anObject(call(this.next, iterator));\n var done = this.done = !!result.done;\n if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n});\n\n// `Iterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\nmodule.exports = function map(mapper) {\n anObject(this);\n aCallable(mapper);\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper\n });\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n", "'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n", "'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n", "'use strict';\nvar toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol('assign detection');\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n", "'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n", "'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n", "'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n", "'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n", "'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n", "'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n", "'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n key in Target || defineProperty(Target, key, {\n configurable: true,\n get: function () { return Source[key]; },\n set: function (it) { Source[key] = it; }\n });\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw new $TypeError('RegExp#exec called on incompatible receiver');\n};\n", "'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') !== null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') !== null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.test('\\n') && re.flags === 's');\n});\n", "'use strict';\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?<a>b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$<a>c') !== 'bc';\n});\n", "'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.36.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.36.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n", "'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n", "'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n", "'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n", "'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n", "'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n", "'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n", "'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n", "'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n", "'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n", "'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n var STACK_TRACE_LIMIT = 'stackTraceLimit';\n var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n var path = FULL_NAME.split('.');\n var ERROR_NAME = path[path.length - 1];\n var OriginalError = getBuiltIn.apply(null, path);\n\n if (!OriginalError) return;\n\n var OriginalErrorPrototype = OriginalError.prototype;\n\n // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n if (!FORCED) return OriginalError;\n\n var BaseError = getBuiltIn('Error');\n\n var WrappedError = wrapper(function (a, b) {\n var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n installErrorStack(result, WrappedError, result.stack, 2);\n if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n return result;\n });\n\n WrappedError.prototype = OriginalErrorPrototype;\n\n if (ERROR_NAME !== 'Error') {\n if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n else copyConstructorProperties(WrappedError, BaseError, { name: true });\n } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n }\n\n copyConstructorProperties(WrappedError, OriginalError);\n\n if (!IS_PURE) try {\n // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n if (OriginalErrorPrototype.name !== ERROR_NAME) {\n createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n }\n OriginalErrorPrototype.constructor = WrappedError;\n } catch (error) { /* empty */ }\n\n return WrappedError;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject !== Object;\nvar FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: FORCED }, {\n join: function join(separator) {\n return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n", "'use strict';\n/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\n// eslint-disable-next-line es/no-error-cause -- feature detection\nvar FORCED = new Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n if (WebAssembly && WebAssembly[ERROR_NAME]) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n }\n};\n\n// https://tc39.es/ecma262/#sec-nativeerror\nexportGlobalErrorCauseWrapper('Error', function (init) {\n return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineBuiltInAccessor(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return regExpExec(nameRE, functionToString(this))[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n assign: assign\n});\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n", "'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar CONSTRUCTOR = 'constructor';\nvar ITERATOR = 'Iterator';\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = global[ITERATOR];\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n || !isCallable(NativeIterator)\n || NativeIterator.prototype !== IteratorPrototype\n // FF44- non-standard `Iterator` passes previous tests\n || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n anInstance(this, IteratorPrototype);\n if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nvar defineIteratorPrototypeAccessor = function (key, value) {\n if (DESCRIPTORS) {\n defineBuiltInAccessor(IteratorPrototype, key, {\n configurable: true,\n get: function () {\n return value;\n },\n set: function (replacement) {\n anObject(this);\n if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n if (hasOwn(this, key)) this[key] = replacement;\n else createProperty(this, key, replacement);\n }\n });\n } else IteratorPrototype[key] = value;\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://github.com/tc39/proposal-iterator-helpers\n$({ global: true, constructor: true, forced: FORCED }, {\n Iterator: IteratorConstructor\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var predicate = this.predicate;\n var next = this.next;\n var result, done, value;\n while (true) {\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n value = result.value;\n if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n }\n});\n\n// `Iterator.prototype.filter` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n filter: function filter(predicate) {\n anObject(this);\n aCallable(predicate);\n return new IteratorProxy(getIteratorDirect(this), {\n predicate: predicate\n });\n }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar map = require('../internals/iterator-map');\nvar IS_PURE = require('../internals/is-pure');\n\n// `Iterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n map: map\n});\n", "// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n", "// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};", "__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();", "__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }", "var VNode = function VNode() {};\n\nvar options = {};\n\nvar stack = [];\n\nvar EMPTY_CHILDREN = [];\n\nfunction h(nodeName, attributes) {\n\tvar children = EMPTY_CHILDREN,\n\t lastSimple,\n\t child,\n\t simple,\n\t i;\n\tfor (i = arguments.length; i-- > 2;) {\n\t\tstack.push(arguments[i]);\n\t}\n\tif (attributes && attributes.children != null) {\n\t\tif (!stack.length) stack.push(attributes.children);\n\t\tdelete attributes.children;\n\t}\n\twhile (stack.length) {\n\t\tif ((child = stack.pop()) && child.pop !== undefined) {\n\t\t\tfor (i = child.length; i--;) {\n\t\t\t\tstack.push(child[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (typeof child === 'boolean') child = null;\n\n\t\t\tif (simple = typeof nodeName !== 'function') {\n\t\t\t\tif (child == null) child = '';else if (typeof child === 'number') child = String(child);else if (typeof child !== 'string') simple = false;\n\t\t\t}\n\n\t\t\tif (simple && lastSimple) {\n\t\t\t\tchildren[children.length - 1] += child;\n\t\t\t} else if (children === EMPTY_CHILDREN) {\n\t\t\t\tchildren = [child];\n\t\t\t} else {\n\t\t\t\tchildren.push(child);\n\t\t\t}\n\n\t\t\tlastSimple = simple;\n\t\t}\n\t}\n\n\tvar p = new VNode();\n\tp.nodeName = nodeName;\n\tp.children = children;\n\tp.attributes = attributes == null ? undefined : attributes;\n\tp.key = attributes == null ? undefined : attributes.key;\n\n\tif (options.vnode !== undefined) options.vnode(p);\n\n\treturn p;\n}\n\nfunction extend(obj, props) {\n for (var i in props) {\n obj[i] = props[i];\n }return obj;\n}\n\nfunction applyRef(ref, value) {\n if (ref) {\n if (typeof ref == 'function') ref(value);else ref.current = value;\n }\n}\n\nvar defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n\nfunction cloneElement(vnode, props) {\n return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n}\n\nvar IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\nvar items = [];\n\nfunction enqueueRender(component) {\n\tif (!component._dirty && (component._dirty = true) && items.push(component) == 1) {\n\t\t(options.debounceRendering || defer)(rerender);\n\t}\n}\n\nfunction rerender() {\n\tvar p;\n\twhile (p = items.pop()) {\n\t\tif (p._dirty) renderComponent(p);\n\t}\n}\n\nfunction isSameNodeType(node, vnode, hydrating) {\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\t\treturn node.splitText !== undefined;\n\t}\n\tif (typeof vnode.nodeName === 'string') {\n\t\treturn !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n\t}\n\treturn hydrating || node._componentConstructor === vnode.nodeName;\n}\n\nfunction isNamedNode(node, nodeName) {\n\treturn node.normalizedNodeName === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n}\n\nfunction getNodeProps(vnode) {\n\tvar props = extend({}, vnode.attributes);\n\tprops.children = vnode.children;\n\n\tvar defaultProps = vnode.nodeName.defaultProps;\n\tif (defaultProps !== undefined) {\n\t\tfor (var i in defaultProps) {\n\t\t\tif (props[i] === undefined) {\n\t\t\t\tprops[i] = defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn props;\n}\n\nfunction createNode(nodeName, isSvg) {\n\tvar node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\tnode.normalizedNodeName = nodeName;\n\treturn node;\n}\n\nfunction removeNode(node) {\n\tvar parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nfunction setAccessor(node, name, old, value, isSvg) {\n\tif (name === 'className') name = 'class';\n\n\tif (name === 'key') {} else if (name === 'ref') {\n\t\tapplyRef(old, null);\n\t\tapplyRef(value, node);\n\t} else if (name === 'class' && !isSvg) {\n\t\tnode.className = value || '';\n\t} else if (name === 'style') {\n\t\tif (!value || typeof value === 'string' || typeof old === 'string') {\n\t\t\tnode.style.cssText = value || '';\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tif (typeof old !== 'string') {\n\t\t\t\tfor (var i in old) {\n\t\t\t\t\tif (!(i in value)) node.style[i] = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i in value) {\n\t\t\t\tnode.style[i] = typeof value[i] === 'number' && IS_NON_DIMENSIONAL.test(i) === false ? value[i] + 'px' : value[i];\n\t\t\t}\n\t\t}\n\t} else if (name === 'dangerouslySetInnerHTML') {\n\t\tif (value) node.innerHTML = value.__html || '';\n\t} else if (name[0] == 'o' && name[1] == 'n') {\n\t\tvar useCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tname = name.toLowerCase().substring(2);\n\t\tif (value) {\n\t\t\tif (!old) node.addEventListener(name, eventProxy, useCapture);\n\t\t} else {\n\t\t\tnode.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\t(node._listeners || (node._listeners = {}))[name] = value;\n\t} else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {\n\t\ttry {\n\t\t\tnode[name] = value == null ? '' : value;\n\t\t} catch (e) {}\n\t\tif ((value == null || value === false) && name != 'spellcheck') node.removeAttribute(name);\n\t} else {\n\t\tvar ns = isSvg && name !== (name = name.replace(/^xlink:?/, ''));\n\n\t\tif (value == null || value === false) {\n\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name);\n\t\t} else if (typeof value !== 'function') {\n\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);else node.setAttribute(name, value);\n\t\t}\n\t}\n}\n\nfunction eventProxy(e) {\n\treturn this._listeners[e.type](options.event && options.event(e) || e);\n}\n\nvar mounts = [];\n\nvar diffLevel = 0;\n\nvar isSvgMode = false;\n\nvar hydrating = false;\n\nfunction flushMounts() {\n\tvar c;\n\twhile (c = mounts.shift()) {\n\t\tif (options.afterMount) options.afterMount(c);\n\t\tif (c.componentDidMount) c.componentDidMount();\n\t}\n}\n\nfunction diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\tif (!diffLevel++) {\n\t\tisSvgMode = parent != null && parent.ownerSVGElement !== undefined;\n\n\t\thydrating = dom != null && !('__preactattr_' in dom);\n\t}\n\n\tvar ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\n\tif (parent && ret.parentNode !== parent) parent.appendChild(ret);\n\n\tif (! --diffLevel) {\n\t\thydrating = false;\n\n\t\tif (!componentRoot) flushMounts();\n\t}\n\n\treturn ret;\n}\n\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n\tvar out = dom,\n\t prevSvgMode = isSvgMode;\n\n\tif (vnode == null || typeof vnode === 'boolean') vnode = '';\n\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\t\tif (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) {\n\t\t\tif (dom.nodeValue != vnode) {\n\t\t\t\tdom.nodeValue = vnode;\n\t\t\t}\n\t\t} else {\n\t\t\tout = document.createTextNode(vnode);\n\t\t\tif (dom) {\n\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t\t\t\trecollectNodeTree(dom, true);\n\t\t\t}\n\t\t}\n\n\t\tout['__preactattr_'] = true;\n\n\t\treturn out;\n\t}\n\n\tvar vnodeName = vnode.nodeName;\n\tif (typeof vnodeName === 'function') {\n\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\n\t}\n\n\tisSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode;\n\n\tvnodeName = String(vnodeName);\n\tif (!dom || !isNamedNode(dom, vnodeName)) {\n\t\tout = createNode(vnodeName, isSvgMode);\n\n\t\tif (dom) {\n\t\t\twhile (dom.firstChild) {\n\t\t\t\tout.appendChild(dom.firstChild);\n\t\t\t}\n\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\n\t\t\trecollectNodeTree(dom, true);\n\t\t}\n\t}\n\n\tvar fc = out.firstChild,\n\t props = out['__preactattr_'],\n\t vchildren = vnode.children;\n\n\tif (props == null) {\n\t\tprops = out['__preactattr_'] = {};\n\t\tfor (var a = out.attributes, i = a.length; i--;) {\n\t\t\tprops[a[i].name] = a[i].value;\n\t\t}\n\t}\n\n\tif (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) {\n\t\tif (fc.nodeValue != vchildren[0]) {\n\t\t\tfc.nodeValue = vchildren[0];\n\t\t}\n\t} else if (vchildren && vchildren.length || fc != null) {\n\t\t\tinnerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null);\n\t\t}\n\n\tdiffAttributes(out, vnode.attributes, props);\n\n\tisSvgMode = prevSvgMode;\n\n\treturn out;\n}\n\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\tvar originalChildren = dom.childNodes,\n\t children = [],\n\t keyed = {},\n\t keyedLen = 0,\n\t min = 0,\n\t len = originalChildren.length,\n\t childrenLen = 0,\n\t vlen = vchildren ? vchildren.length : 0,\n\t j,\n\t c,\n\t f,\n\t vchild,\n\t child;\n\n\tif (len !== 0) {\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tvar _child = originalChildren[i],\n\t\t\t props = _child['__preactattr_'],\n\t\t\t key = vlen && props ? _child._component ? _child._component.__key : props.key : null;\n\t\t\tif (key != null) {\n\t\t\t\tkeyedLen++;\n\t\t\t\tkeyed[key] = _child;\n\t\t\t} else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) {\n\t\t\t\tchildren[childrenLen++] = _child;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (vlen !== 0) {\n\t\tfor (var i = 0; i < vlen; i++) {\n\t\t\tvchild = vchildren[i];\n\t\t\tchild = null;\n\n\t\t\tvar key = vchild.key;\n\t\t\tif (key != null) {\n\t\t\t\tif (keyedLen && keyed[key] !== undefined) {\n\t\t\t\t\tchild = keyed[key];\n\t\t\t\t\tkeyed[key] = undefined;\n\t\t\t\t\tkeyedLen--;\n\t\t\t\t}\n\t\t\t} else if (min < childrenLen) {\n\t\t\t\t\tfor (j = min; j < childrenLen; j++) {\n\t\t\t\t\t\tif (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\n\t\t\t\t\t\t\tchild = c;\n\t\t\t\t\t\t\tchildren[j] = undefined;\n\t\t\t\t\t\t\tif (j === childrenLen - 1) childrenLen--;\n\t\t\t\t\t\t\tif (j === min) min++;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tchild = idiff(child, vchild, context, mountAll);\n\n\t\t\tf = originalChildren[i];\n\t\t\tif (child && child !== dom && child !== f) {\n\t\t\t\tif (f == null) {\n\t\t\t\t\tdom.appendChild(child);\n\t\t\t\t} else if (child === f.nextSibling) {\n\t\t\t\t\tremoveNode(f);\n\t\t\t\t} else {\n\t\t\t\t\tdom.insertBefore(child, f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (keyedLen) {\n\t\tfor (var i in keyed) {\n\t\t\tif (keyed[i] !== undefined) recollectNodeTree(keyed[i], false);\n\t\t}\n\t}\n\n\twhile (min <= childrenLen) {\n\t\tif ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false);\n\t}\n}\n\nfunction recollectNodeTree(node, unmountOnly) {\n\tvar component = node._component;\n\tif (component) {\n\t\tunmountComponent(component);\n\t} else {\n\t\tif (node['__preactattr_'] != null) applyRef(node['__preactattr_'].ref, null);\n\n\t\tif (unmountOnly === false || node['__preactattr_'] == null) {\n\t\t\tremoveNode(node);\n\t\t}\n\n\t\tremoveChildren(node);\n\t}\n}\n\nfunction removeChildren(node) {\n\tnode = node.lastChild;\n\twhile (node) {\n\t\tvar next = node.previousSibling;\n\t\trecollectNodeTree(node, true);\n\t\tnode = next;\n\t}\n}\n\nfunction diffAttributes(dom, attrs, old) {\n\tvar name;\n\n\tfor (name in old) {\n\t\tif (!(attrs && attrs[name] != null) && old[name] != null) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n\t\t}\n\t}\n\n\tfor (name in attrs) {\n\t\tif (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t\t}\n\t}\n}\n\nvar recyclerComponents = [];\n\nfunction createComponent(Ctor, props, context) {\n\tvar inst,\n\t i = recyclerComponents.length;\n\n\tif (Ctor.prototype && Ctor.prototype.render) {\n\t\tinst = new Ctor(props, context);\n\t\tComponent.call(inst, props, context);\n\t} else {\n\t\tinst = new Component(props, context);\n\t\tinst.constructor = Ctor;\n\t\tinst.render = doRender;\n\t}\n\n\twhile (i--) {\n\t\tif (recyclerComponents[i].constructor === Ctor) {\n\t\t\tinst.nextBase = recyclerComponents[i].nextBase;\n\t\t\trecyclerComponents.splice(i, 1);\n\t\t\treturn inst;\n\t\t}\n\t}\n\n\treturn inst;\n}\n\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n\nfunction setComponentProps(component, props, renderMode, context, mountAll) {\n\tif (component._disable) return;\n\tcomponent._disable = true;\n\n\tcomponent.__ref = props.ref;\n\tcomponent.__key = props.key;\n\tdelete props.ref;\n\tdelete props.key;\n\n\tif (typeof component.constructor.getDerivedStateFromProps === 'undefined') {\n\t\tif (!component.base || mountAll) {\n\t\t\tif (component.componentWillMount) component.componentWillMount();\n\t\t} else if (component.componentWillReceiveProps) {\n\t\t\tcomponent.componentWillReceiveProps(props, context);\n\t\t}\n\t}\n\n\tif (context && context !== component.context) {\n\t\tif (!component.prevContext) component.prevContext = component.context;\n\t\tcomponent.context = context;\n\t}\n\n\tif (!component.prevProps) component.prevProps = component.props;\n\tcomponent.props = props;\n\n\tcomponent._disable = false;\n\n\tif (renderMode !== 0) {\n\t\tif (renderMode === 1 || options.syncComponentUpdates !== false || !component.base) {\n\t\t\trenderComponent(component, 1, mountAll);\n\t\t} else {\n\t\t\tenqueueRender(component);\n\t\t}\n\t}\n\n\tapplyRef(component.__ref, component);\n}\n\nfunction renderComponent(component, renderMode, mountAll, isChild) {\n\tif (component._disable) return;\n\n\tvar props = component.props,\n\t state = component.state,\n\t context = component.context,\n\t previousProps = component.prevProps || props,\n\t previousState = component.prevState || state,\n\t previousContext = component.prevContext || context,\n\t isUpdate = component.base,\n\t nextBase = component.nextBase,\n\t initialBase = isUpdate || nextBase,\n\t initialChildComponent = component._component,\n\t skip = false,\n\t snapshot = previousContext,\n\t rendered,\n\t inst,\n\t cbase;\n\n\tif (component.constructor.getDerivedStateFromProps) {\n\t\tstate = extend(extend({}, state), component.constructor.getDerivedStateFromProps(props, state));\n\t\tcomponent.state = state;\n\t}\n\n\tif (isUpdate) {\n\t\tcomponent.props = previousProps;\n\t\tcomponent.state = previousState;\n\t\tcomponent.context = previousContext;\n\t\tif (renderMode !== 2 && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === false) {\n\t\t\tskip = true;\n\t\t} else if (component.componentWillUpdate) {\n\t\t\tcomponent.componentWillUpdate(props, state, context);\n\t\t}\n\t\tcomponent.props = props;\n\t\tcomponent.state = state;\n\t\tcomponent.context = context;\n\t}\n\n\tcomponent.prevProps = component.prevState = component.prevContext = component.nextBase = null;\n\tcomponent._dirty = false;\n\n\tif (!skip) {\n\t\trendered = component.render(props, state, context);\n\n\t\tif (component.getChildContext) {\n\t\t\tcontext = extend(extend({}, context), component.getChildContext());\n\t\t}\n\n\t\tif (isUpdate && component.getSnapshotBeforeUpdate) {\n\t\t\tsnapshot = component.getSnapshotBeforeUpdate(previousProps, previousState);\n\t\t}\n\n\t\tvar childComponent = rendered && rendered.nodeName,\n\t\t toUnmount,\n\t\t base;\n\n\t\tif (typeof childComponent === 'function') {\n\n\t\t\tvar childProps = getNodeProps(rendered);\n\t\t\tinst = initialChildComponent;\n\n\t\t\tif (inst && inst.constructor === childComponent && childProps.key == inst.__key) {\n\t\t\t\tsetComponentProps(inst, childProps, 1, context, false);\n\t\t\t} else {\n\t\t\t\ttoUnmount = inst;\n\n\t\t\t\tcomponent._component = inst = createComponent(childComponent, childProps, context);\n\t\t\t\tinst.nextBase = inst.nextBase || nextBase;\n\t\t\t\tinst._parentComponent = component;\n\t\t\t\tsetComponentProps(inst, childProps, 0, context, false);\n\t\t\t\trenderComponent(inst, 1, mountAll, true);\n\t\t\t}\n\n\t\t\tbase = inst.base;\n\t\t} else {\n\t\t\tcbase = initialBase;\n\n\t\t\ttoUnmount = initialChildComponent;\n\t\t\tif (toUnmount) {\n\t\t\t\tcbase = component._component = null;\n\t\t\t}\n\n\t\t\tif (initialBase || renderMode === 1) {\n\t\t\t\tif (cbase) cbase._component = null;\n\t\t\t\tbase = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\n\t\t\t}\n\t\t}\n\n\t\tif (initialBase && base !== initialBase && inst !== initialChildComponent) {\n\t\t\tvar baseParent = initialBase.parentNode;\n\t\t\tif (baseParent && base !== baseParent) {\n\t\t\t\tbaseParent.replaceChild(base, initialBase);\n\n\t\t\t\tif (!toUnmount) {\n\t\t\t\t\tinitialBase._component = null;\n\t\t\t\t\trecollectNodeTree(initialBase, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (toUnmount) {\n\t\t\tunmountComponent(toUnmount);\n\t\t}\n\n\t\tcomponent.base = base;\n\t\tif (base && !isChild) {\n\t\t\tvar componentRef = component,\n\t\t\t t = component;\n\t\t\twhile (t = t._parentComponent) {\n\t\t\t\t(componentRef = t).base = base;\n\t\t\t}\n\t\t\tbase._component = componentRef;\n\t\t\tbase._componentConstructor = componentRef.constructor;\n\t\t}\n\t}\n\n\tif (!isUpdate || mountAll) {\n\t\tmounts.push(component);\n\t} else if (!skip) {\n\n\t\tif (component.componentDidUpdate) {\n\t\t\tcomponent.componentDidUpdate(previousProps, previousState, snapshot);\n\t\t}\n\t\tif (options.afterUpdate) options.afterUpdate(component);\n\t}\n\n\twhile (component._renderCallbacks.length) {\n\t\tcomponent._renderCallbacks.pop().call(component);\n\t}if (!diffLevel && !isChild) flushMounts();\n}\n\nfunction buildComponentFromVNode(dom, vnode, context, mountAll) {\n\tvar c = dom && dom._component,\n\t originalComponent = c,\n\t oldDom = dom,\n\t isDirectOwner = c && dom._componentConstructor === vnode.nodeName,\n\t isOwner = isDirectOwner,\n\t props = getNodeProps(vnode);\n\twhile (c && !isOwner && (c = c._parentComponent)) {\n\t\tisOwner = c.constructor === vnode.nodeName;\n\t}\n\n\tif (c && isOwner && (!mountAll || c._component)) {\n\t\tsetComponentProps(c, props, 3, context, mountAll);\n\t\tdom = c.base;\n\t} else {\n\t\tif (originalComponent && !isDirectOwner) {\n\t\t\tunmountComponent(originalComponent);\n\t\t\tdom = oldDom = null;\n\t\t}\n\n\t\tc = createComponent(vnode.nodeName, props, context);\n\t\tif (dom && !c.nextBase) {\n\t\t\tc.nextBase = dom;\n\n\t\t\toldDom = null;\n\t\t}\n\t\tsetComponentProps(c, props, 1, context, mountAll);\n\t\tdom = c.base;\n\n\t\tif (oldDom && dom !== oldDom) {\n\t\t\toldDom._component = null;\n\t\t\trecollectNodeTree(oldDom, false);\n\t\t}\n\t}\n\n\treturn dom;\n}\n\nfunction unmountComponent(component) {\n\tif (options.beforeUnmount) options.beforeUnmount(component);\n\n\tvar base = component.base;\n\n\tcomponent._disable = true;\n\n\tif (component.componentWillUnmount) component.componentWillUnmount();\n\n\tcomponent.base = null;\n\n\tvar inner = component._component;\n\tif (inner) {\n\t\tunmountComponent(inner);\n\t} else if (base) {\n\t\tif (base['__preactattr_'] != null) applyRef(base['__preactattr_'].ref, null);\n\n\t\tcomponent.nextBase = base;\n\n\t\tremoveNode(base);\n\t\trecyclerComponents.push(component);\n\n\t\tremoveChildren(base);\n\t}\n\n\tapplyRef(component.__ref, null);\n}\n\nfunction Component(props, context) {\n\tthis._dirty = true;\n\n\tthis.context = context;\n\n\tthis.props = props;\n\n\tthis.state = this.state || {};\n\n\tthis._renderCallbacks = [];\n}\n\nextend(Component.prototype, {\n\tsetState: function setState(state, callback) {\n\t\tif (!this.prevState) this.prevState = this.state;\n\t\tthis.state = extend(extend({}, this.state), typeof state === 'function' ? state(this.state, this.props) : state);\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t},\n\tforceUpdate: function forceUpdate(callback) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\trenderComponent(this, 2);\n\t},\n\trender: function render() {}\n});\n\nfunction render(vnode, parent, merge) {\n return diff(merge, vnode, {}, false, parent, false);\n}\n\nfunction createRef() {\n\treturn {};\n}\n\nvar preact = {\n\th: h,\n\tcreateElement: h,\n\tcloneElement: cloneElement,\n\tcreateRef: createRef,\n\tComponent: Component,\n\trender: render,\n\trerender: rerender,\n\toptions: options\n};\n\nexport default preact;\nexport { h, h as createElement, cloneElement, createRef, Component, render, rerender, options };\n//# sourceMappingURL=preact.mjs.map\n", "import { createElement, Component } from 'preact' /** @jsx createElement */\n\nconst debounce = function (func, wait, immediate) {\n let timeout\n return function () {\n const context = this\n const args = arguments\n const later = function () {\n timeout = null\n if (!immediate) func.apply(context, args)\n }\n const callNow = immediate && !timeout\n clearTimeout(timeout)\n timeout = setTimeout(later, wait)\n if (callNow) func.apply(context, args)\n }\n}\nconst statusDebounceMillis = 1400\n\nexport default class Status extends Component {\n static defaultProps = {\n tQueryTooShort: (minQueryLength) => `Type in ${minQueryLength} or more characters for results`,\n tNoResults: () => 'No search results',\n tSelectedOption: (selectedOption, length, index) => `${selectedOption} ${index + 1} of ${length} is highlighted`,\n tResults: (length, contentSelectedOption) => {\n const words = {\n result: (length === 1) ? 'result' : 'results',\n is: (length === 1) ? 'is' : 'are'\n }\n\n return `${length} ${words.result} ${words.is} available. ${contentSelectedOption}`\n }\n }\n\n state = {\n bump: false,\n debounced: false\n }\n\n /* eslint-disable react/no-deprecated -- https://github.com/alphagov/accessible-autocomplete/issues/418 */\n componentWillMount () {\n const that = this\n this.debounceStatusUpdate = debounce(function () {\n if (!that.state.debounced) {\n const shouldSilence = !that.props.isInFocus || that.props.validChoiceMade\n that.setState(({ bump }) => ({ bump: !bump, debounced: true, silenced: shouldSilence }))\n }\n }, statusDebounceMillis)\n }\n\n /* eslint-disable react/no-deprecated -- https://github.com/alphagov/accessible-autocomplete/issues/418 */\n componentWillReceiveProps ({ queryLength }) {\n this.setState({ debounced: false })\n }\n\n render () {\n const {\n id,\n length,\n queryLength,\n minQueryLength,\n selectedOption,\n selectedOptionIndex,\n tQueryTooShort,\n tNoResults,\n tSelectedOption,\n tResults,\n className\n } = this.props\n const { bump, debounced, silenced } = this.state\n\n const queryTooShort = queryLength < minQueryLength\n const noResults = length === 0\n\n const contentSelectedOption = selectedOption\n ? tSelectedOption(selectedOption, length, selectedOptionIndex)\n : ''\n\n let content = null\n if (queryTooShort) {\n content = tQueryTooShort(minQueryLength)\n } else if (noResults) {\n content = tNoResults()\n } else {\n content = tResults(length, contentSelectedOption)\n }\n\n this.debounceStatusUpdate()\n\n return (\n <div\n className={className}\n style={{\n border: '0',\n clip: 'rect(0 0 0 0)',\n height: '1px',\n marginBottom: '-1px',\n marginRight: '-1px',\n overflow: 'hidden',\n padding: '0',\n position: 'absolute',\n whiteSpace: 'nowrap',\n width: '1px'\n }}\n >\n <div\n id={id + '__status--A'}\n role='status'\n aria-atomic='true'\n aria-live='polite'\n >\n {(!silenced && debounced && bump) ? content : ''}\n </div>\n <div\n id={id + '__status--B'}\n role='status'\n aria-atomic='true'\n aria-live='polite'\n >\n {(!silenced && debounced && !bump) ? content : ''}\n </div>\n </div>\n )\n }\n}\n", "import { createElement } from 'preact' /** @jsx createElement */\n\nconst DropdownArrowDown = ({ className }) => (\n <svg version='1.1' xmlns='http://www.w3.org/2000/svg' className={className} focusable='false'>\n <g stroke='none' fill='none' fill-rule='evenodd'>\n <polygon fill='#000000' points='0 0 22 0 11 17' />\n </g>\n </svg>\n)\n\nexport default DropdownArrowDown\n", "import { createElement, Component } from 'preact' /** @jsx createElement */\nimport Status from './status'\nimport DropdownArrowDown from './dropdown-arrow-down'\n\nconst IS_PREACT = process.env.COMPONENT_LIBRARY === 'PREACT'\nconst IS_REACT = process.env.COMPONENT_LIBRARY === 'REACT'\n\nconst keyCodes = {\n 13: 'enter',\n 27: 'escape',\n 32: 'space',\n 38: 'up',\n 40: 'down'\n}\n\nfunction isIosDevice () {\n return typeof navigator !== 'undefined' && !!(navigator.userAgent.match(/(iPod|iPhone|iPad)/g) && navigator.userAgent.match(/AppleWebKit/g))\n}\n\nfunction isPrintableKeyCode (keyCode) {\n return (\n (keyCode > 47 && keyCode < 58) || // number keys\n keyCode === 32 || keyCode === 8 || // spacebar or backspace\n (keyCode > 64 && keyCode < 91) || // letter keys\n (keyCode > 95 && keyCode < 112) || // numpad keys\n (keyCode > 185 && keyCode < 193) || // ;=,-./` (in order)\n (keyCode > 218 && keyCode < 223) // [\\]' (in order)\n )\n}\n\n// Preact does not implement onChange on inputs, but React does.\nfunction onChangeCrossLibrary (handler) {\n if (IS_PREACT) { return { onInput: handler } }\n if (IS_REACT) { return { onChange: handler } }\n}\n\nexport default class Autocomplete extends Component {\n static defaultProps = {\n autoselect: false,\n cssNamespace: 'autocomplete',\n defaultValue: '',\n displayMenu: 'inline',\n minLength: 0,\n name: 'input-autocomplete',\n placeholder: '',\n onConfirm: () => {},\n confirmOnBlur: true,\n showNoOptionsFound: true,\n showAllValues: false,\n required: false,\n tNoResults: () => 'No results found',\n tAssistiveHint: () => 'When autocomplete results are available use up and down arrows to review and enter to select. Touch device users, explore by touch or with swipe gestures.',\n dropdownArrow: DropdownArrowDown,\n menuAttributes: {},\n inputClasses: null,\n hintClasses: null,\n menuClasses: null\n }\n\n elementReferences = {}\n\n constructor (props) {\n super(props)\n\n this.state = {\n focused: null,\n hovered: null,\n menuOpen: false,\n options: props.defaultValue ? [props.defaultValue] : [],\n query: props.defaultValue,\n validChoiceMade: false,\n selected: null,\n ariaHint: true\n }\n\n this.handleComponentBlur = this.handleComponentBlur.bind(this)\n this.handleKeyDown = this.handleKeyDown.bind(this)\n this.handleUpArrow = this.handleUpArrow.bind(this)\n this.handleDownArrow = this.handleDownArrow.bind(this)\n this.handleEnter = this.handleEnter.bind(this)\n this.handlePrintableKey = this.handlePrintableKey.bind(this)\n\n this.handleListMouseLeave = this.handleListMouseLeave.bind(this)\n\n this.handleOptionBlur = this.handleOptionBlur.bind(this)\n this.handleOptionClick = this.handleOptionClick.bind(this)\n this.handleOptionFocus = this.handleOptionFocus.bind(this)\n this.handleOptionMouseDown = this.handleOptionMouseDown.bind(this)\n this.handleOptionMouseEnter = this.handleOptionMouseEnter.bind(this)\n\n this.handleInputBlur = this.handleInputBlur.bind(this)\n this.handleInputChange = this.handleInputChange.bind(this)\n this.handleInputClick = this.handleInputClick.bind(this)\n this.handleInputFocus = this.handleInputFocus.bind(this)\n\n this.pollInputElement = this.pollInputElement.bind(this)\n this.getDirectInputChanges = this.getDirectInputChanges.bind(this)\n }\n\n isQueryAnOption (query, options) {\n return options.map(entry => this.templateInputValue(entry).toLowerCase()).indexOf(query.toLowerCase()) !== -1\n }\n\n componentDidMount () {\n this.pollInputElement()\n }\n\n componentWillUnmount () {\n clearTimeout(this.$pollInput)\n }\n\n // Applications like Dragon NaturallySpeaking will modify the\n // `input` field by directly changing its `.value`. These events\n // don't trigger our JavaScript event listeners, so we need to poll\n // to handle when and if they occur.\n pollInputElement () {\n this.getDirectInputChanges()\n this.$pollInput = setTimeout(() => {\n this.pollInputElement()\n }, 100)\n }\n\n getDirectInputChanges () {\n const inputReference = this.elementReferences[-1]\n const queryHasChanged = inputReference && inputReference.value !== this.state.query\n\n if (queryHasChanged) {\n this.handleInputChange({ target: { value: inputReference.value } })\n }\n }\n\n componentDidUpdate (prevProps, prevState) {\n const { focused } = this.state\n const componentLostFocus = focused === null\n const focusedChanged = prevState.focused !== focused\n const focusDifferentElement = focusedChanged && !componentLostFocus\n if (focusDifferentElement) {\n this.elementReferences[focused].focus()\n }\n const focusedInput = focused === -1\n const componentGainedFocus = focusedChanged && prevState.focused === null\n const selectAllText = focusedInput && componentGainedFocus\n if (selectAllText) {\n const inputElement = this.elementReferences[focused]\n inputElement.setSelectionRange(0, inputElement.value.length)\n }\n }\n\n hasAutoselect () {\n return isIosDevice() ? false : this.props.autoselect\n }\n\n // This template is used when converting from a state.options object into a state.query.\n templateInputValue (value) {\n const inputValueTemplate = this.props.templates && this.props.templates.inputValue\n return inputValueTemplate ? inputValueTemplate(value) : value\n }\n\n // This template is used when displaying results / suggestions.\n templateSuggestion (value) {\n const suggestionTemplate = this.props.templates && this.props.templates.suggestion\n return suggestionTemplate ? suggestionTemplate(value) : value\n }\n\n handleComponentBlur (newState) {\n const { options, query, selected } = this.state\n let newQuery\n if (this.props.confirmOnBlur) {\n newQuery = newState.query || query\n this.props.onConfirm(options[selected])\n } else {\n newQuery = query\n }\n this.setState({\n focused: null,\n menuOpen: newState.menuOpen || false,\n query: newQuery,\n selected: null,\n validChoiceMade: this.isQueryAnOption(newQuery, options)\n })\n }\n\n handleListMouseLeave (event) {\n this.setState({\n hovered: null\n })\n }\n\n handleOptionBlur (event, index) {\n const { focused, menuOpen, options, selected } = this.state\n const focusingOutsideComponent = event.relatedTarget === null\n const focusingInput = event.relatedTarget === this.elementReferences[-1]\n const focusingAnotherOption = focused !== index && focused !== -1\n const blurComponent = (!focusingAnotherOption && focusingOutsideComponent) || !(focusingAnotherOption || focusingInput)\n if (blurComponent) {\n const keepMenuOpen = menuOpen && isIosDevice()\n this.handleComponentBlur({\n menuOpen: keepMenuOpen,\n query: this.templateInputValue(options[selected])\n })\n }\n }\n\n handleInputBlur (event) {\n const { focused, menuOpen, options, query, selected } = this.state\n const focusingAnOption = focused !== -1\n if (!focusingAnOption) {\n const keepMenuOpen = menuOpen && isIosDevice()\n const newQuery = isIosDevice() ? query : this.templateInputValue(options[selected])\n this.handleComponentBlur({\n menuOpen: keepMenuOpen,\n query: newQuery\n })\n }\n }\n\n handleInputChange (event) {\n const { minLength, source, showAllValues } = this.props\n const autoselect = this.hasAutoselect()\n const query = event.target.value\n const queryEmpty = query.length === 0\n const queryChanged = this.state.query !== query\n const queryLongEnough = query.length >= minLength\n\n this.setState({\n query,\n ariaHint: queryEmpty\n })\n\n const searchForOptions = showAllValues || (!queryEmpty && queryChanged && queryLongEnough)\n if (searchForOptions) {\n source(query, (options) => {\n const optionsAvailable = options.length > 0\n this.setState({\n menuOpen: optionsAvailable,\n options,\n selected: (autoselect && optionsAvailable) ? 0 : -1,\n validChoiceMade: false\n })\n })\n } else if (queryEmpty || !queryLongEnough) {\n this.setState({\n menuOpen: false,\n options: []\n })\n }\n }\n\n handleInputClick (event) {\n this.handleInputChange(event)\n }\n\n handleInputFocus (event) {\n const { query, validChoiceMade, options } = this.state\n const { minLength } = this.props\n const shouldReopenMenu = !validChoiceMade && query.length >= minLength && options.length > 0\n\n if (shouldReopenMenu) {\n this.setState(({ menuOpen }) => ({ focused: -1, menuOpen: shouldReopenMenu || menuOpen, selected: -1 }))\n } else {\n this.setState({ focused: -1 })\n }\n }\n\n handleOptionFocus (index) {\n this.setState({\n focused: index,\n hovered: null,\n selected: index\n })\n }\n\n handleOptionMouseEnter (event, index) {\n // iOS Safari prevents click event if mouseenter adds hover background colour\n // See: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW4\n if (!isIosDevice()) {\n this.setState({\n hovered: index\n })\n }\n }\n\n handleOptionClick (event, index) {\n const selectedOption = this.state.options[index]\n const newQuery = this.templateInputValue(selectedOption)\n this.props.onConfirm(selectedOption)\n this.setState({\n focused: -1,\n hovered: null,\n menuOpen: false,\n query: newQuery,\n selected: -1,\n validChoiceMade: true\n })\n this.forceUpdate()\n }\n\n handleOptionMouseDown (event) {\n // Safari triggers focusOut before click, but if you\n // preventDefault on mouseDown, you can stop that from happening.\n // If this is removed, clicking on an option in Safari will trigger\n // `handleOptionBlur`, which closes the menu, and the click will\n // trigger on the element underneath instead.\n // See: http://stackoverflow.com/questions/7621711/how-to-prevent-blur-running-when-clicking-a-link-in-jquery\n event.preventDefault()\n }\n\n handleUpArrow (event) {\n event.preventDefault()\n const { menuOpen, selected } = this.state\n const isNotAtTop = selected !== -1\n const allowMoveUp = isNotAtTop && menuOpen\n if (allowMoveUp) {\n this.handleOptionFocus(selected - 1)\n }\n }\n\n handleDownArrow (event) {\n event.preventDefault()\n // if not open, open\n if (this.props.showAllValues && this.state.menuOpen === false) {\n event.preventDefault()\n this.props.source('', (options) => {\n this.setState({\n menuOpen: true,\n options,\n selected: 0,\n focused: 0,\n hovered: null\n })\n })\n } else if (this.state.menuOpen === true) {\n const { menuOpen, options, selected } = this.state\n const isNotAtBottom = selected !== options.length - 1\n const allowMoveDown = isNotAtBottom && menuOpen\n if (allowMoveDown) {\n this.handleOptionFocus(selected + 1)\n }\n }\n }\n\n handleSpace (event) {\n // if not open, open\n if (this.props.showAllValues && this.state.menuOpen === false && this.state.query === '') {\n event.preventDefault()\n this.props.source('', (options) => {\n this.setState({\n menuOpen: true,\n options\n })\n })\n }\n const focusIsOnOption = this.state.focused !== -1\n if (focusIsOnOption) {\n event.preventDefault()\n this.handleOptionClick(event, this.state.focused)\n }\n }\n\n handleEnter (event) {\n if (this.state.menuOpen) {\n event.preventDefault()\n const hasSelectedOption = this.state.selected >= 0\n if (hasSelectedOption) {\n this.handleOptionClick(event, this.state.selected)\n }\n }\n }\n\n handlePrintableKey (event) {\n const inputElement = this.elementReferences[-1]\n const eventIsOnInput = event.target === inputElement\n if (!eventIsOnInput) {\n // FIXME: This would be better if it was in componentDidUpdate,\n // but using setState to trigger that seems to not work correctly\n // in preact@8.1.0.\n inputElement.focus()\n }\n }\n\n handleKeyDown (event) {\n switch (keyCodes[event.keyCode]) {\n case 'up':\n this.handleUpArrow(event)\n break\n case 'down':\n this.handleDownArrow(event)\n break\n case 'space':\n this.handleSpace(event)\n break\n case 'enter':\n this.handleEnter(event)\n break\n case 'escape':\n this.handleComponentBlur({\n query: this.state.query\n })\n break\n default:\n if (isPrintableKeyCode(event.keyCode)) {\n this.handlePrintableKey(event)\n }\n break\n }\n }\n\n render () {\n const {\n cssNamespace,\n displayMenu,\n id,\n minLength,\n name,\n placeholder,\n required,\n showAllValues,\n tNoResults,\n tStatusQueryTooShort,\n tStatusNoResults,\n tStatusSelectedOption,\n tStatusResults,\n tAssistiveHint,\n dropdownArrow: dropdownArrowFactory,\n menuAttributes,\n inputClasses,\n hintClasses,\n menuClasses\n } = this.props\n const { focused, hovered, menuOpen, options, query, selected, ariaHint, validChoiceMade } = this.state\n const autoselect = this.hasAutoselect()\n\n const inputFocused = focused === -1\n const noOptionsAvailable = options.length === 0\n const queryNotEmpty = query.length !== 0\n const queryLongEnough = query.length >= minLength\n const showNoOptionsFound = this.props.showNoOptionsFound &&\n inputFocused && noOptionsAvailable && queryNotEmpty && queryLongEnough\n\n const wrapperClassName = `${cssNamespace}__wrapper`\n const statusClassName = `${cssNamespace}__status`\n const dropdownArrowClassName = `${cssNamespace}__dropdown-arrow-down`\n const optionFocused = focused !== -1 && focused !== null\n\n const optionClassName = `${cssNamespace}__option`\n\n const hintClassName = `${cssNamespace}__hint`\n const selectedOptionText = this.templateInputValue(options[selected])\n const optionBeginsWithQuery = selectedOptionText &&\n selectedOptionText.toLowerCase().indexOf(query.toLowerCase()) === 0\n const hintValue = (optionBeginsWithQuery && autoselect)\n ? query + selectedOptionText.substr(query.length)\n : ''\n\n const assistiveHintID = id + '__assistiveHint'\n const ariaProps = {\n 'aria-describedby': ariaHint ? assistiveHintID : null,\n 'aria-expanded': menuOpen ? 'true' : 'false',\n 'aria-activedescendant': optionFocused ? `${id}__option--${focused}` : null,\n 'aria-controls': `${id}__listbox`,\n 'aria-autocomplete': (this.hasAutoselect()) ? 'both' : 'list'\n }\n\n let dropdownArrow\n\n // we only need a dropdown arrow if showAllValues is set to a truthy value\n if (showAllValues) {\n dropdownArrow = dropdownArrowFactory({ className: dropdownArrowClassName })\n\n // if the factory returns a string we'll render this as HTML (usage w/o (P)React)\n if (typeof dropdownArrow === 'string') {\n dropdownArrow = <div className={`${cssNamespace}__dropdown-arrow-down-wrapper`} dangerouslySetInnerHTML={{ __html: dropdownArrow }} />\n }\n }\n\n const inputClassName = `${cssNamespace}__input`\n const inputClassList = [\n inputClassName,\n this.props.showAllValues ? `${inputClassName}--show-all-values` : `${inputClassName}--default`\n ]\n\n const componentIsFocused = focused !== null\n if (componentIsFocused) {\n inputClassList.push(`${inputClassName}--focused`)\n }\n\n if (inputClasses) {\n inputClassList.push(inputClasses)\n }\n\n const menuClassName = `${cssNamespace}__menu`\n const menuModifierDisplayMenu = `${menuClassName}--${displayMenu}`\n const menuIsVisible = menuOpen || showNoOptionsFound\n const menuModifierVisibility = `${menuClassName}--${(menuIsVisible) ? 'visible' : 'hidden'}`\n\n const menuClassList = [\n menuClassName,\n menuModifierDisplayMenu,\n menuModifierVisibility\n ]\n\n if (menuClasses) {\n menuClassList.push(menuClasses)\n }\n\n if (menuAttributes?.class || menuAttributes?.className) {\n menuClassList.push(menuAttributes?.class || menuAttributes?.className)\n }\n\n const computedMenuAttributes = {\n // set aria-labelledby first so that users can override it with menuAttributes\n 'aria-labelledby': id,\n // Copy the attributes passed as props\n ...menuAttributes,\n // And add the values computed for the autocomplete\n id: `${id}__listbox`,\n role: 'listbox',\n className: menuClassList.join(' '),\n onMouseLeave: this.handleListMouseLeave\n }\n\n // Preact would override our computed `className`\n // with the `class` from the `menuAttributes` so\n // we need to clean it up from the computed attributes\n delete computedMenuAttributes.class\n\n return (\n <div className={wrapperClassName} onKeyDown={this.handleKeyDown}>\n <Status\n id={id}\n length={options.length}\n queryLength={query.length}\n minQueryLength={minLength}\n selectedOption={this.templateInputValue(options[selected])}\n selectedOptionIndex={selected}\n validChoiceMade={validChoiceMade}\n isInFocus={this.state.focused !== null}\n tQueryTooShort={tStatusQueryTooShort}\n tNoResults={tStatusNoResults}\n tSelectedOption={tStatusSelectedOption}\n tResults={tStatusResults}\n className={statusClassName}\n />\n\n {hintValue && (\n <span><input className={[hintClassName, hintClasses === null ? inputClasses : hintClasses].filter(Boolean).join(' ')} readonly tabIndex='-1' value={hintValue} /></span>\n )}\n\n <input\n {...ariaProps}\n autoComplete='off'\n className={inputClassList.join(' ')}\n id={id}\n onClick={this.handleInputClick}\n onBlur={this.handleInputBlur}\n {...onChangeCrossLibrary(this.handleInputChange)}\n onFocus={this.handleInputFocus}\n name={name}\n placeholder={placeholder}\n ref={(inputElement) => { this.elementReferences[-1] = inputElement }}\n type='text'\n role='combobox'\n required={required}\n value={query}\n />\n\n {dropdownArrow}\n\n <ul {...computedMenuAttributes}>\n {options.map((option, index) => {\n const showFocused = focused === -1 ? selected === index : focused === index\n const optionModifierFocused = showFocused && hovered === null ? ` ${optionClassName}--focused` : ''\n const optionModifierOdd = (index % 2) ? ` ${optionClassName}--odd` : ''\n const iosPosinsetHtml = (isIosDevice())\n ? `<span id=${id}__option-suffix--${index} style=\"border:0;clip:rect(0 0 0 0);height:1px;` +\n 'marginBottom:-1px;marginRight:-1px;overflow:hidden;padding:0;position:absolute;' +\n 'whiteSpace:nowrap;width:1px\">' + ` ${index + 1} of ${options.length}</span>`\n : ''\n\n return (\n <li\n aria-selected={focused === index ? 'true' : 'false'}\n className={`${optionClassName}${optionModifierFocused}${optionModifierOdd}`}\n dangerouslySetInnerHTML={{ __html: this.templateSuggestion(option) + iosPosinsetHtml }}\n id={`${id}__option--${index}`}\n key={index}\n onBlur={(event) => this.handleOptionBlur(event, index)}\n onClick={(event) => this.handleOptionClick(event, index)}\n onMouseDown={this.handleOptionMouseDown}\n onMouseEnter={(event) => this.handleOptionMouseEnter(event, index)}\n ref={(optionEl) => { this.elementReferences[index] = optionEl }}\n role='option'\n tabIndex='-1'\n aria-posinset={index + 1}\n aria-setsize={options.length}\n />\n )\n })}\n\n {showNoOptionsFound && (\n <li className={`${optionClassName} ${optionClassName}--no-results`} role='option' aria-disabled='true'>{tNoResults()}</li>\n )}\n </ul>\n\n <span id={assistiveHintID} style={{ display: 'none' }}>{tAssistiveHint()}</span>\n\n </div>\n )\n }\n}\n", "import { createElement, render } from 'preact' /** @jsx createElement */\nimport Autocomplete from './autocomplete'\n\nfunction accessibleAutocomplete (options) {\n if (!options.element) { throw new Error('element is not defined') }\n if (!options.id) { throw new Error('id is not defined') }\n if (!options.source) { throw new Error('source is not defined') }\n if (Array.isArray(options.source)) {\n options.source = createSimpleEngine(options.source)\n }\n render(<Autocomplete {...options} />, options.element)\n}\n\nconst createSimpleEngine = (values) => (query, syncResults) => {\n const matches = values.filter(r => r.toLowerCase().indexOf(query.toLowerCase()) !== -1)\n syncResults(matches)\n}\n\naccessibleAutocomplete.enhanceSelectElement = (configurationOptions) => {\n if (!configurationOptions.selectElement) { throw new Error('selectElement is not defined') }\n\n // Set defaults.\n if (!configurationOptions.source) {\n const availableOptions = [].filter.call(configurationOptions.selectElement.options, option => (option.value || configurationOptions.preserveNullOptions))\n configurationOptions.source = availableOptions.map(option => option.textContent || option.innerText)\n }\n configurationOptions.onConfirm = configurationOptions.onConfirm || (query => {\n const requestedOption = [].filter.call(configurationOptions.selectElement.options, option => (option.textContent || option.innerText) === query)[0]\n if (requestedOption) { requestedOption.selected = true }\n })\n\n if (configurationOptions.selectElement.value || configurationOptions.defaultValue === undefined) {\n const option = configurationOptions.selectElement.options[configurationOptions.selectElement.options.selectedIndex]\n configurationOptions.defaultValue = option.textContent || option.innerText\n }\n\n if (configurationOptions.name === undefined) configurationOptions.name = ''\n if (configurationOptions.id === undefined) {\n if (configurationOptions.selectElement.id === undefined) {\n configurationOptions.id = ''\n } else {\n configurationOptions.id = configurationOptions.selectElement.id\n }\n }\n if (configurationOptions.autoselect === undefined) configurationOptions.autoselect = true\n\n const element = document.createElement('div')\n\n configurationOptions.selectElement.parentNode.insertBefore(element, configurationOptions.selectElement)\n\n accessibleAutocomplete({\n ...configurationOptions,\n element\n })\n\n configurationOptions.selectElement.style.display = 'none'\n configurationOptions.selectElement.id = configurationOptions.selectElement.id + '-select'\n}\n\nexport default accessibleAutocomplete\n", "/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n", "/**\n * Common helpers which do not require polyfill.\n *\n * IMPORTANT: If a helper require a polyfill, please isolate it in its own module\n * so that the polyfill can be properly tree-shaken and does not burden\n * the components that do not need that helper\n */\n\n/**\n * Get hash fragment from URL\n *\n * Extract the hash fragment (everything after the hash) from a URL,\n * but not including the hash symbol\n *\n * @private\n * @param {string} url - URL\n * @returns {string | undefined} Fragment from URL, without the hash\n */\nexport function getFragmentFromUrl(url) {\n if (!url.includes('#')) {\n return undefined\n }\n\n return url.split('#').pop()\n}\n\n/**\n * Get GOV.UK Frontend breakpoint value from CSS custom property\n *\n * @private\n * @param {string} name - Breakpoint name\n * @returns {{ property: string, value?: string }} Breakpoint object\n */\nexport function getBreakpoint(name) {\n const property = `--govuk-frontend-breakpoint-${name}`\n\n // Get value from `<html>` with breakpoints on CSS :root\n const value = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(property)\n\n return {\n property,\n value: value || undefined\n }\n}\n\n/**\n * Move focus to element\n *\n * Sets tabindex to -1 to make the element programmatically focusable,\n * but removes it on blur as the element doesn't need to be focused again.\n *\n * @private\n * @template {HTMLElement} FocusElement\n * @param {FocusElement} $element - HTML element\n * @param {object} [options] - Handler options\n * @param {function(this: FocusElement): void} [options.onBeforeFocus] - Callback before focus\n * @param {function(this: FocusElement): void} [options.onBlur] - Callback on blur\n */\nexport function setFocus($element, options = {}) {\n const isFocusable = $element.getAttribute('tabindex')\n\n if (!isFocusable) {\n $element.setAttribute('tabindex', '-1')\n }\n\n /**\n * Handle element focus\n */\n function onFocus() {\n $element.addEventListener('blur', onBlur, { once: true })\n }\n\n /**\n * Handle element blur\n */\n function onBlur() {\n options.onBlur?.call($element)\n\n if (!isFocusable) {\n $element.removeAttribute('tabindex')\n }\n }\n\n // Add listener to reset element on blur, after focus\n $element.addEventListener('focus', onFocus, { once: true })\n\n // Focus element\n options.onBeforeFocus?.call($element)\n $element.focus()\n}\n\n/**\n * Checks if component is already initialised\n *\n * @internal\n * @param {Element} $root - HTML element to be checked\n * @param {string} moduleName - name of component module\n * @returns {boolean} Whether component is already initialised\n */\nexport function isInitialised($root, moduleName) {\n return (\n $root instanceof HTMLElement &&\n $root.hasAttribute(`data-${moduleName}-init`)\n )\n}\n\n/**\n * Checks if GOV.UK Frontend is supported on this page\n *\n * Some browsers will load and run our JavaScript but GOV.UK Frontend\n * won't be supported.\n *\n * @param {HTMLElement | null} [$scope] - (internal) `<body>` HTML element checked for browser support\n * @returns {boolean} Whether GOV.UK Frontend is supported on this page\n */\nexport function isSupported($scope = document.body) {\n if (!$scope) {\n return false\n }\n\n return $scope.classList.contains('govuk-frontend-supported')\n}\n\n/**\n * Check for an array\n *\n * @internal\n * @param {unknown} option - Option to check\n * @returns {boolean} Whether the option is an array\n */\nfunction isArray(option) {\n return Array.isArray(option)\n}\n\n/**\n * Check for an object\n *\n * @internal\n * @template {Partial<Record<keyof ObjectType, unknown>>} [ObjectType=ObjectNested]\n * @param {unknown | ObjectType} option - Option to check\n * @returns {option is ObjectType} Whether the option is an object\n */\nexport function isObject(option) {\n return !!option && typeof option === 'object' && !isArray(option)\n}\n\n/**\n * Format error message\n *\n * @internal\n * @param {ComponentWithModuleName} Component - Component that threw the error\n * @param {string} message - Error message\n * @returns {string} - Formatted error message\n */\nexport function formatErrorMessage(Component, message) {\n return `${Component.moduleName}: ${message}`\n}\n\n/* eslint-disable jsdoc/valid-types --\n * `{new(...args: any[] ): object}` is not recognised as valid\n * https://github.com/gajus/eslint-plugin-jsdoc/issues/145#issuecomment-1308722878\n * https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/131\n **/\n\n/**\n * @typedef ComponentWithModuleName\n * @property {string} moduleName - Name of the component\n */\n\n/* eslint-enable jsdoc/valid-types */\n\n/**\n * @import { ObjectNested } from './configuration.mjs'\n */\n", "import { formatErrorMessage } from '../common/index.mjs'\n\n/**\n * GOV.UK Frontend error\n *\n * A base class for `Error`s thrown by GOV.UK Frontend.\n *\n * It is meant to be extended into specific types of errors\n * to be thrown by our code.\n *\n * @example\n * ```js\n * class MissingRootError extends GOVUKFrontendError {\n * // Setting an explicit name is important as extending the class will not\n * // set a new `name` on the subclass. The `name` property is important\n * // to ensure intelligible error names even if the class name gets\n * // mangled by a minifier\n * name = \"MissingRootError\"\n * }\n * ```\n * @virtual\n */\nexport class GOVUKFrontendError extends Error {\n name = 'GOVUKFrontendError'\n}\n\n/**\n * Indicates that GOV.UK Frontend is not supported\n */\nexport class SupportError extends GOVUKFrontendError {\n name = 'SupportError'\n\n /**\n * Checks if GOV.UK Frontend is supported on this page\n *\n * @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support\n */\n constructor($scope = document.body) {\n const supportMessage =\n 'noModule' in HTMLScriptElement.prototype\n ? 'GOV.UK Frontend initialised without `<body class=\"govuk-frontend-supported\">` from template `<script>` snippet'\n : 'GOV.UK Frontend is not supported in this browser'\n\n super(\n $scope\n ? supportMessage\n : 'GOV.UK Frontend initialised without `<script type=\"module\">`'\n )\n }\n}\n\n/**\n * Indicates that a component has received an illegal configuration\n */\nexport class ConfigError extends GOVUKFrontendError {\n name = 'ConfigError'\n}\n\n/**\n * Indicates an issue with an element (possibly `null` or `undefined`)\n */\nexport class ElementError extends GOVUKFrontendError {\n name = 'ElementError'\n\n /**\n * @internal\n * @overload\n * @param {string} message - Element error message\n */\n\n /**\n * @internal\n * @overload\n * @param {ElementErrorOptions} options - Element error options\n */\n\n /**\n * @internal\n * @param {string | ElementErrorOptions} messageOrOptions - Element error message or options\n */\n constructor(messageOrOptions) {\n let message = typeof messageOrOptions === 'string' ? messageOrOptions : ''\n\n // Build message from options\n if (typeof messageOrOptions === 'object') {\n const { component, identifier, element, expectedType } = messageOrOptions\n\n message = identifier\n\n // Append reason\n message += element\n ? ` is not of type ${expectedType ?? 'HTMLElement'}`\n : ' not found'\n\n message = formatErrorMessage(component, message)\n }\n\n super(message)\n }\n}\n\n/**\n * Indicates that a component is already initialised\n */\nexport class InitError extends GOVUKFrontendError {\n name = 'InitError'\n\n /**\n * @internal\n * @param {ComponentWithModuleName | string} componentOrMessage - name of the component module\n */\n constructor(componentOrMessage) {\n const message =\n typeof componentOrMessage === 'string'\n ? componentOrMessage\n : formatErrorMessage(\n componentOrMessage,\n `Root element (\\`$root\\`) already initialised`\n )\n\n super(message)\n }\n}\n\n/**\n * Element error options\n *\n * @internal\n * @typedef {object} ElementErrorOptions\n * @property {string} identifier - An identifier that'll let the user understand which element has an error. This is whatever makes the most sense\n * @property {Element | null} [element] - The element in error\n * @property {string} [expectedType] - The type that was expected for the identifier\n * @property {ComponentWithModuleName} component - Component throwing the error\n */\n\n/**\n * @import { ComponentWithModuleName } from '../common/index.mjs'\n */\n", "import { isInitialised, isSupported } from './common/index.mjs'\nimport { ElementError, InitError, SupportError } from './errors/index.mjs'\n\n/**\n * Base Component class\n *\n * Centralises the behaviours shared by our components\n *\n * @virtual\n * @template {Element} [RootElementType=HTMLElement]\n */\nexport class Component {\n /**\n * @type {typeof Element}\n */\n static elementType = HTMLElement\n\n // allows Typescript user to work around the lack of types\n // in GOVUKFrontend package, Typescript is not aware of $root\n // in components that extend GOVUKFrontendComponent\n /**\n * Returns the root element of the component\n *\n * @protected\n * @returns {RootElementType} - the root element of component\n */\n get $root() {\n return this._$root\n }\n\n /**\n * @protected\n * @type {RootElementType}\n */\n _$root\n\n /**\n * Constructs a new component, validating that GOV.UK Frontend is supported\n *\n * @internal\n * @param {Element | null} [$root] - HTML element to use for component\n */\n constructor($root) {\n const childConstructor = /** @type {ChildClassConstructor} */ (\n this.constructor\n )\n\n // TypeScript does not enforce that inheriting classes will define a `moduleName`\n // (even if we add a `@virtual` `static moduleName` property to this class).\n // While we trust users to do this correctly, we do a little check to provide them\n // a helpful error message.\n //\n // After this, we'll be sure that `childConstructor` has a `moduleName`\n // as expected of the `ChildClassConstructor` we've cast `this.constructor` to.\n if (typeof childConstructor.moduleName !== 'string') {\n throw new InitError(`\\`moduleName\\` not defined in component`)\n }\n\n if (!($root instanceof childConstructor.elementType)) {\n throw new ElementError({\n element: $root,\n component: childConstructor,\n identifier: 'Root element (`$root`)',\n expectedType: childConstructor.elementType.name\n })\n } else {\n this._$root = /** @type {RootElementType} */ ($root)\n }\n\n childConstructor.checkSupport()\n\n this.checkInitialised()\n\n const moduleName = childConstructor.moduleName\n\n this.$root.setAttribute(`data-${moduleName}-init`, '')\n }\n\n /**\n * Validates whether component is already initialised\n *\n * @private\n * @throws {InitError} when component is already initialised\n */\n checkInitialised() {\n const constructor = /** @type {ChildClassConstructor} */ (this.constructor)\n const moduleName = constructor.moduleName\n\n if (moduleName && isInitialised(this.$root, moduleName)) {\n throw new InitError(constructor)\n }\n }\n\n /**\n * Validates whether components are supported\n *\n * @throws {SupportError} when the components are not supported\n */\n static checkSupport() {\n if (!isSupported()) {\n throw new SupportError()\n }\n }\n}\n\n/**\n * @typedef ChildClass\n * @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component\n */\n\n/**\n * @typedef {typeof Component & ChildClass} ChildClassConstructor\n */\n", "import { Component } from '../component.mjs'\nimport { ConfigError } from '../errors/index.mjs'\n\nimport { isObject, formatErrorMessage } from './index.mjs'\n\nexport const configOverride = Symbol.for('configOverride')\n\n/**\n * Base Component class\n *\n * Centralises the behaviours shared by our components\n *\n * @virtual\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} [ConfigurationType=ObjectNested]\n * @template {Element & { dataset: DOMStringMap }} [RootElementType=HTMLElement]\n * @augments Component<RootElementType>\n */\nexport class ConfigurableComponent extends Component {\n /**\n * configOverride\n *\n * Function which defines configuration overrides to prioritize\n * properties from the root element's dataset.\n *\n * It should take a subset of configuration as input and return\n * a new configuration object with properties that should be\n * overridden based on the root element's dataset. A Symbol\n * is used for indexing to prevent conflicts.\n *\n * @internal\n * @virtual\n * @param {Partial<ConfigurationType>} [param] - Configuration object\n * @returns {Partial<ConfigurationType>} return - Configuration object\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [configOverride](param) {\n return {}\n }\n\n /**\n * Returns the root element of the component\n *\n * @protected\n * @returns {ConfigurationType} - the root element of component\n */\n get config() {\n return this._config\n }\n\n /**\n *\n * @type {ConfigurationType}\n */\n _config\n\n /**\n * Constructs a new component, validating that GOV.UK Frontend is supported\n *\n * @internal\n * @param {Element | null} [$root] - HTML element to use for component\n * @param {ConfigurationType} [config] - HTML element to use for component\n */\n constructor($root, config) {\n super($root)\n\n const childConstructor =\n /** @type {ChildClassConstructor<ConfigurationType>} */ (this.constructor)\n\n if (!isObject(childConstructor.defaults)) {\n throw new ConfigError(\n formatErrorMessage(\n childConstructor,\n 'Config passed as parameter into constructor but no defaults defined'\n )\n )\n }\n\n const datasetConfig = /** @type {ConfigurationType} */ (\n normaliseDataset(childConstructor, this._$root.dataset)\n )\n\n this._config = /** @type {ConfigurationType} */ (\n mergeConfigs(\n childConstructor.defaults,\n config ?? {},\n this[configOverride](datasetConfig),\n datasetConfig\n )\n )\n }\n}\n\n/**\n * Normalise string\n *\n * 'If it looks like a duck, and it quacks like a duck…' 🦆\n *\n * If the passed value looks like a boolean or a number, convert it to a boolean\n * or number.\n *\n * Designed to be used to convert config passed via data attributes (which are\n * always strings) into something sensible.\n *\n * @internal\n * @param {DOMStringMap[string]} value - The value to normalise\n * @param {SchemaProperty} [property] - Component schema property\n * @returns {string | boolean | number | undefined} Normalised data\n */\nexport function normaliseString(value, property) {\n const trimmedValue = value ? value.trim() : ''\n\n let output\n let outputType = property?.type\n\n // No schema type set? Determine automatically\n if (!outputType) {\n if (['true', 'false'].includes(trimmedValue)) {\n outputType = 'boolean'\n }\n\n // Empty / whitespace-only strings are considered finite so we need to check\n // the length of the trimmed string as well\n if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {\n outputType = 'number'\n }\n }\n\n switch (outputType) {\n case 'boolean':\n output = trimmedValue === 'true'\n break\n\n case 'number':\n output = Number(trimmedValue)\n break\n\n default:\n output = value\n }\n\n return output\n}\n\n/**\n * Normalise dataset\n *\n * Loop over an object and normalise each value using {@link normaliseString},\n * optionally expanding nested `i18n.field`\n *\n * @internal\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} ConfigurationType\n * @template {[keyof ConfigurationType, SchemaProperty | undefined][]} SchemaEntryType\n * @param {{ schema?: Schema<ConfigurationType>, moduleName: string }} Component - Component class\n * @param {DOMStringMap} dataset - HTML element dataset\n * @returns {ObjectNested} Normalised dataset\n */\nexport function normaliseDataset(Component, dataset) {\n if (!isObject(Component.schema)) {\n throw new ConfigError(\n formatErrorMessage(\n Component,\n 'Config passed as parameter into constructor but no schema defined'\n )\n )\n }\n\n const out = /** @type {ObjectNested} */ ({})\n const entries = /** @type {SchemaEntryType} */ (\n Object.entries(Component.schema.properties)\n )\n\n // Normalise top-level dataset ('data-*') values using schema types\n for (const entry of entries) {\n const [namespace, property] = entry\n\n // Cast the `namespace` to string so it can be used to access the dataset\n const field = namespace.toString()\n\n if (field in dataset) {\n out[field] = normaliseString(dataset[field], property)\n }\n\n /**\n * Extract and normalise nested object values automatically using\n * {@link normaliseString} but only schema object types are allowed\n */\n if (property?.type === 'object') {\n out[field] = extractConfigByNamespace(\n Component.schema,\n dataset,\n namespace\n )\n }\n }\n\n return out\n}\n\n/**\n * Config merging function\n *\n * Takes any number of objects and combines them together, with\n * greatest priority on the LAST item passed in.\n *\n * @internal\n * @param {...{ [key: string]: unknown }} configObjects - Config objects to merge\n * @returns {{ [key: string]: unknown }} A merged config object\n */\nexport function mergeConfigs(...configObjects) {\n // Start with an empty object as our base\n /** @type {{ [key: string]: unknown }} */\n const formattedConfigObject = {}\n\n // Loop through each of the passed objects\n for (const configObject of configObjects) {\n for (const key of Object.keys(configObject)) {\n const option = formattedConfigObject[key]\n const override = configObject[key]\n\n // Push their keys one-by-one into formattedConfigObject. Any duplicate\n // keys with object values will be merged, otherwise the new value will\n // override the existing value.\n if (isObject(option) && isObject(override)) {\n formattedConfigObject[key] = mergeConfigs(option, override)\n } else {\n // Apply override\n formattedConfigObject[key] = override\n }\n }\n }\n\n return formattedConfigObject\n}\n\n/**\n * Validate component config by schema\n *\n * Follows limited examples in JSON schema for wider support in future\n *\n * {@link https://ajv.js.org/json-schema.html#compound-keywords}\n * {@link https://ajv.js.org/packages/ajv-errors.html#single-message}\n *\n * @internal\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} ConfigurationType\n * @param {Schema<ConfigurationType>} schema - The schema of a component\n * @param {ConfigurationType} config - Component config\n * @returns {string[]} List of validation errors\n */\nexport function validateConfig(schema, config) {\n const validationErrors = []\n\n // Check errors for each schema\n for (const [name, conditions] of Object.entries(schema)) {\n const errors = []\n\n // Check errors for each schema condition\n if (Array.isArray(conditions)) {\n for (const { required, errorMessage } of conditions) {\n if (!required.every((key) => !!config[key])) {\n errors.push(errorMessage) // Missing config key value\n }\n }\n\n // Check one condition passes or add errors\n if (name === 'anyOf' && !(conditions.length - errors.length >= 1)) {\n validationErrors.push(...errors)\n }\n }\n }\n\n return validationErrors\n}\n\n/**\n * Extracts keys starting with a particular namespace from dataset ('data-*')\n * object, removing the namespace in the process, normalising all values\n *\n * @internal\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} ConfigurationType\n * @param {Schema<ConfigurationType>} schema - The schema of a component\n * @param {DOMStringMap} dataset - The object to extract key-value pairs from\n * @param {keyof ConfigurationType} namespace - The namespace to filter keys with\n * @returns {ObjectNested | undefined} Nested object with dot-separated key namespace removed\n */\nexport function extractConfigByNamespace(schema, dataset, namespace) {\n const property = schema.properties[namespace]\n\n // Only extract configs for object schema properties\n if (property?.type !== 'object') {\n return\n }\n\n // Add default empty config\n const newObject = /** @type {Record<typeof namespace, ObjectNested>} */ ({\n [namespace]: {}\n })\n\n for (const [key, value] of Object.entries(dataset)) {\n /** @type {ObjectNested | ObjectNested[NestedKey]} */\n let current = newObject\n\n // Split the key into parts, using . as our namespace separator\n const keyParts = key.split('.')\n\n /**\n * Create new level per part\n *\n * e.g. 'i18n.textareaDescription.other' becomes\n * `{ i18n: { textareaDescription: { other } } }`\n */\n for (const [index, name] of keyParts.entries()) {\n if (isObject(current)) {\n // Drop down to nested object until the last part\n if (index < keyParts.length - 1) {\n // New nested object (optionally) replaces existing value\n if (!isObject(current[name])) {\n current[name] = {}\n }\n\n // Drop down into new or existing nested object\n current = current[name]\n } else if (key !== namespace) {\n // Normalised value (optionally) replaces existing value\n current[name] = normaliseString(value)\n }\n }\n }\n }\n\n return newObject[namespace]\n}\n\n/**\n * @internal\n * @typedef {keyof ObjectNested} NestedKey\n * @typedef {{ [key: string]: string | boolean | number | ObjectNested | undefined }} ObjectNested\n */\n\n/**\n * Schema for component config\n *\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} ConfigurationType\n * @typedef {object} Schema\n * @property {Record<keyof ConfigurationType, SchemaProperty | undefined>} properties - Schema properties\n * @property {SchemaCondition<ConfigurationType>[]} [anyOf] - List of schema conditions\n */\n\n/**\n * Schema property for component config\n *\n * @typedef {object} SchemaProperty\n * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type\n */\n\n/**\n * Schema condition for component config\n *\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} ConfigurationType\n * @typedef {object} SchemaCondition\n * @property {(keyof ConfigurationType)[]} required - List of required config fields\n * @property {string} errorMessage - Error message when required config fields not provided\n */\n\n/**\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} [ConfigurationType=ObjectNested]\n * @typedef ChildClass\n * @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component\n * @property {Schema<ConfigurationType>} [schema] - The schema of the component configuration\n * @property {ConfigurationType} [defaults] - The default values of the configuration of the component\n */\n\n/**\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} [ConfigurationType=ObjectNested]\n * @typedef {typeof Component & ChildClass<ConfigurationType>} ChildClassConstructor<ConfigurationType>\n */\n", "/**\n * Internal support for selecting messages to render, with placeholder\n * interpolation and locale-aware number formatting and pluralisation\n *\n * @internal\n */\nexport class I18n {\n translations\n locale\n\n /**\n * @internal\n * @param {{ [key: string]: string | TranslationPluralForms }} translations - Key-value pairs of the translation strings to use.\n * @param {object} [config] - Configuration options for the function.\n * @param {string | null} [config.locale] - An overriding locale for the PluralRules functionality.\n */\n constructor(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.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 * @internal\n * @param {string} lookupKey - The lookup key of the string to use.\n * @param {{ [key: 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 */\n t(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 // Fetch the translation for that lookup key\n let translation = this.translations[lookupKey]\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 numeric instead of\n // falsy, as this could legitimately be 0.\n if (typeof options?.count === 'number' && typeof translation === 'object') {\n const translationPluralForm =\n translation[this.getPluralSuffix(lookupKey, options.count)]\n\n // Update translation with plural suffix\n if (translationPluralForm) {\n translation = translationPluralForm\n }\n }\n\n if (typeof translation === 'string') {\n // Check for ${} placeholders in the translation string\n if (translation.match(/%{(.\\S+)}/)) {\n if (!options) {\n throw new Error(\n 'i18n: cannot replace placeholders in string if no option data provided'\n )\n }\n\n return this.replacePlaceholders(translation, options)\n }\n\n return translation\n }\n\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 * Takes a translation string with placeholders, and replaces the placeholders\n * with the provided data\n *\n * @internal\n * @param {string} translationString - The translation string\n * @param {{ [key: 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 */\n replacePlaceholders(translationString, options) {\n const formatter = Intl.NumberFormat.supportedLocalesOf(this.locale).length\n ? new Intl.NumberFormat(this.locale)\n : undefined\n\n return translationString.replace(\n /%{(.\\S+)}/g,\n\n /**\n * Replace translation string placeholders\n *\n * @internal\n * @param {string} placeholderWithBraces - Placeholder with braces\n * @param {string} placeholderKey - Placeholder key\n * @returns {string} Placeholder value\n */\n function (placeholderWithBraces, placeholderKey) {\n if (Object.prototype.hasOwnProperty.call(options, placeholderKey)) {\n const 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 (\n placeholderValue === false ||\n (typeof placeholderValue !== 'number' &&\n typeof placeholderValue !== 'string')\n ) {\n return ''\n }\n\n // If the placeholder's value is a number, localise the number formatting\n if (typeof placeholderValue === 'number') {\n return formatter\n ? formatter.format(placeholderValue)\n : `${placeholderValue}`\n }\n\n return placeholderValue\n }\n\n throw new Error(\n `i18n: no data found to replace ${placeholderWithBraces} placeholder in string`\n )\n }\n )\n }\n\n /**\n * Check to see if the browser supports Intl.PluralRules\n *\n * It requires all conditions to be met in order to be supported:\n * - The implementation of Intl supports PluralRules (NOT true in Safari 10–12)\n * - The browser/OS has plural rules for the current locale (browser dependent)\n *\n * {@link https://browsersl.ist/#q=supports+es6-module+and+not+supports+intl-pluralrules}\n *\n * @internal\n * @returns {boolean} Returns true if all conditions are met. Returns false otherwise.\n */\n hasIntlPluralRulesSupport() {\n return Boolean(\n 'PluralRules' in window.Intl &&\n Intl.PluralRules.supportedLocalesOf(this.locale).length\n )\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 * @internal\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 */\n getPluralSuffix(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)) {\n return 'other'\n }\n\n // Fetch the translation for that lookup key\n const translation = this.translations[lookupKey]\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 const preferredForm = this.hasIntlPluralRulesSupport()\n ? new Intl.PluralRules(this.locale).select(count)\n : this.selectPluralFormUsingFallbackRules(count)\n\n // Use the correct plural form if provided\n if (typeof translation === 'object') {\n if (preferredForm in translation) {\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 ('other' in translation) {\n console.warn(\n `i18n: Missing plural form \".${preferredForm}\" for \"${this.locale}\" locale. Falling back to \".other\".`\n )\n\n return 'other'\n }\n }\n\n // If the required `other` plural form is missing, all we can do is error\n throw new Error(\n `i18n: Plural form \".other\" is required for \"${this.locale}\" locale`\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 * @internal\n * @param {number} count - Number used to determine which pluralisation to use.\n * @returns {PluralRule} The pluralisation form for count in this locale.\n */\n selectPluralFormUsingFallbackRules(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 const 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 * @internal\n * @returns {string | undefined} The name of the pluralisation rule to use (a key for one\n * of the functions in this.pluralRules)\n */\n getPluralRulesForLocale() {\n const localeShort = this.locale.split('-')[0]\n\n // Look through the plural rules map to find which `pluralRule` is\n // appropriate for our current `locale`.\n for (const pluralRule in I18n.pluralRulesMap) {\n const languages = I18n.pluralRulesMap[pluralRule]\n if (languages.includes(this.locale) || languages.includes(localeShort)) {\n return pluralRule\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 * @internal\n * @type {{ [key: string]: string[] }}\n */\n static 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',\n 'sq',\n 'az',\n 'eu',\n 'bg',\n 'ca',\n 'da',\n 'nl',\n 'en',\n 'et',\n 'fi',\n 'ka',\n 'de',\n 'el',\n 'hu',\n 'lb',\n 'no',\n 'so',\n 'sw',\n 'sv',\n 'ta',\n 'te',\n 'tr',\n '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 * @internal\n * @type {{ [key: string]: (count: number) => PluralRule }}\n */\n static pluralRules = {\n arabic(n) {\n if (n === 0) {\n return 'zero'\n }\n if (n === 1) {\n return 'one'\n }\n if (n === 2) {\n return 'two'\n }\n if (n % 100 >= 3 && n % 100 <= 10) {\n return 'few'\n }\n if (n % 100 >= 11 && n % 100 <= 99) {\n return 'many'\n }\n return 'other'\n },\n chinese() {\n return 'other'\n },\n french(n) {\n return n === 0 || n === 1 ? 'one' : 'other'\n },\n german(n) {\n return n === 1 ? 'one' : 'other'\n },\n irish(n) {\n if (n === 1) {\n return 'one'\n }\n if (n === 2) {\n return 'two'\n }\n if (n >= 3 && n <= 6) {\n return 'few'\n }\n if (n >= 7 && n <= 10) {\n return 'many'\n }\n return 'other'\n },\n russian(n) {\n const lastTwo = n % 100\n const last = lastTwo % 10\n if (last === 1 && lastTwo !== 11) {\n return 'one'\n }\n if (last >= 2 && last <= 4 && !(lastTwo >= 12 && lastTwo <= 14)) {\n return 'few'\n }\n if (\n last === 0 ||\n (last >= 5 && last <= 9) ||\n (lastTwo >= 11 && lastTwo <= 14)\n ) {\n return 'many'\n }\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(n) {\n if (n === 1 || n === 11) {\n return 'one'\n }\n if (n === 2 || n === 12) {\n return 'two'\n }\n if ((n >= 3 && n <= 10) || (n >= 13 && n <= 19)) {\n return 'few'\n }\n return 'other'\n },\n spanish(n) {\n if (n === 1) {\n return 'one'\n }\n if (n % 1000000 === 0 && n !== 0) {\n return 'many'\n }\n return 'other'\n },\n welsh(n) {\n if (n === 0) {\n return 'zero'\n }\n if (n === 1) {\n return 'one'\n }\n if (n === 2) {\n return 'two'\n }\n if (n === 3) {\n return 'few'\n }\n if (n === 6) {\n return 'many'\n }\n return 'other'\n }\n }\n}\n\n/**\n * Plural rule category mnemonic tags\n *\n * @internal\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 * @internal\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", "import { ConfigurableComponent } from '../../common/configuration.mjs'\nimport { ElementError } from '../../errors/index.mjs'\nimport { I18n } from '../../i18n.mjs'\n\n/**\n * Accordion component\n *\n * This allows a collection of sections to be collapsed by default, showing only\n * their headers. Sections can be expanded or collapsed individually by clicking\n * their headers. A \"Show all sections\" button is also added to the top of the\n * accordion, which switches to \"Hide all sections\" when all the sections are\n * expanded.\n *\n * The state of each section is saved to the DOM via the `aria-expanded`\n * attribute, which also provides accessibility.\n *\n * @preserve\n * @augments ConfigurableComponent<AccordionConfig>\n */\nexport class Accordion extends ConfigurableComponent {\n /** @private */\n i18n\n\n /** @private */\n controlsClass = 'govuk-accordion__controls'\n\n /** @private */\n showAllClass = 'govuk-accordion__show-all'\n\n /** @private */\n showAllTextClass = 'govuk-accordion__show-all-text'\n\n /** @private */\n sectionClass = 'govuk-accordion__section'\n\n /** @private */\n sectionExpandedClass = 'govuk-accordion__section--expanded'\n\n /** @private */\n sectionButtonClass = 'govuk-accordion__section-button'\n\n /** @private */\n sectionHeaderClass = 'govuk-accordion__section-header'\n\n /** @private */\n sectionHeadingClass = 'govuk-accordion__section-heading'\n\n /** @private */\n sectionHeadingDividerClass = 'govuk-accordion__section-heading-divider'\n\n /** @private */\n sectionHeadingTextClass = 'govuk-accordion__section-heading-text'\n\n /** @private */\n sectionHeadingTextFocusClass = 'govuk-accordion__section-heading-text-focus'\n\n /** @private */\n sectionShowHideToggleClass = 'govuk-accordion__section-toggle'\n\n /** @private */\n sectionShowHideToggleFocusClass = 'govuk-accordion__section-toggle-focus'\n\n /** @private */\n sectionShowHideTextClass = 'govuk-accordion__section-toggle-text'\n\n /** @private */\n upChevronIconClass = 'govuk-accordion-nav__chevron'\n\n /** @private */\n downChevronIconClass = 'govuk-accordion-nav__chevron--down'\n\n /** @private */\n sectionSummaryClass = 'govuk-accordion__section-summary'\n\n /** @private */\n sectionSummaryFocusClass = 'govuk-accordion__section-summary-focus'\n\n /** @private */\n sectionContentClass = 'govuk-accordion__section-content'\n\n /** @private */\n $sections\n\n /**\n * @private\n * @type {HTMLButtonElement | null}\n */\n $showAllButton = null\n\n /**\n * @private\n * @type {HTMLElement | null}\n */\n $showAllIcon = null\n\n /**\n * @private\n * @type {HTMLElement | null}\n */\n $showAllText = null\n\n /**\n * @param {Element | null} $root - HTML element to use for accordion\n * @param {AccordionConfig} [config] - Accordion config\n */\n constructor($root, config = {}) {\n super($root, config)\n\n this.i18n = new I18n(this.config.i18n)\n\n const $sections = this.$root.querySelectorAll(`.${this.sectionClass}`)\n if (!$sections.length) {\n throw new ElementError({\n component: Accordion,\n identifier: `Sections (\\`<div class=\"${this.sectionClass}\">\\`)`\n })\n }\n\n this.$sections = $sections\n\n this.initControls()\n this.initSectionHeaders()\n\n this.updateShowAllButton(this.areAllSectionsOpen())\n }\n\n /**\n * Initialise controls and set attributes\n *\n * @private\n */\n initControls() {\n // Create \"Show all\" button and set attributes\n this.$showAllButton = document.createElement('button')\n this.$showAllButton.setAttribute('type', 'button')\n this.$showAllButton.setAttribute('class', this.showAllClass)\n this.$showAllButton.setAttribute('aria-expanded', 'false')\n\n // Create icon, add to element\n this.$showAllIcon = document.createElement('span')\n this.$showAllIcon.classList.add(this.upChevronIconClass)\n this.$showAllButton.appendChild(this.$showAllIcon)\n\n // Create control wrapper and add controls to it\n const $accordionControls = document.createElement('div')\n $accordionControls.setAttribute('class', this.controlsClass)\n $accordionControls.appendChild(this.$showAllButton)\n this.$root.insertBefore($accordionControls, this.$root.firstChild)\n\n // Build additional wrapper for Show all toggle text and place after icon\n this.$showAllText = document.createElement('span')\n this.$showAllText.classList.add(this.showAllTextClass)\n this.$showAllButton.appendChild(this.$showAllText)\n\n // Handle click events on the show/hide all button\n this.$showAllButton.addEventListener('click', () =>\n this.onShowOrHideAllToggle()\n )\n\n // Handle 'beforematch' events, if the user agent supports them\n if ('onbeforematch' in document) {\n document.addEventListener('beforematch', (event) =>\n this.onBeforeMatch(event)\n )\n }\n }\n\n /**\n * Initialise section headers\n *\n * @private\n */\n initSectionHeaders() {\n this.$sections.forEach(($section, i) => {\n const $header = $section.querySelector(`.${this.sectionHeaderClass}`)\n if (!$header) {\n throw new ElementError({\n component: Accordion,\n identifier: `Section headers (\\`<div class=\"${this.sectionHeaderClass}\">\\`)`\n })\n }\n\n // Set header attributes\n this.constructHeaderMarkup($header, i)\n this.setExpanded(this.isExpanded($section), $section)\n\n // Handle events\n $header.addEventListener('click', () => this.onSectionToggle($section))\n\n // See if there is any state stored in sessionStorage and set the sections\n // to open or closed.\n this.setInitialState($section)\n })\n }\n\n /**\n * Construct section header\n *\n * @private\n * @param {Element} $header - Section header\n * @param {number} index - Section index\n */\n constructHeaderMarkup($header, index) {\n const $span = $header.querySelector(`.${this.sectionButtonClass}`)\n const $heading = $header.querySelector(`.${this.sectionHeadingClass}`)\n const $summary = $header.querySelector(`.${this.sectionSummaryClass}`)\n\n if (!$heading) {\n throw new ElementError({\n component: Accordion,\n identifier: `Section heading (\\`.${this.sectionHeadingClass}\\`)`\n })\n }\n\n if (!$span) {\n throw new ElementError({\n component: Accordion,\n identifier: `Section button placeholder (\\`<span class=\"${this.sectionButtonClass}\">\\`)`\n })\n }\n\n // Create a button element that will replace the\n // '.govuk-accordion__section-button' span\n const $button = document.createElement('button')\n $button.setAttribute('type', 'button')\n $button.setAttribute(\n 'aria-controls',\n `${this.$root.id}-content-${index + 1}`\n )\n\n // Copy all attributes from $span to $button (except `id`, which gets added\n // to the `$headingText` element)\n for (const attr of Array.from($span.attributes)) {\n if (attr.name !== 'id') {\n $button.setAttribute(attr.name, attr.value)\n }\n }\n\n // Create container for heading text so it can be styled\n const $headingText = document.createElement('span')\n $headingText.classList.add(this.sectionHeadingTextClass)\n // Copy the span ID to the heading text to allow it to be referenced by\n // `aria-labelledby` on the hidden content area without \"Show this section\"\n $headingText.id = $span.id\n\n // Create an inner heading text container to limit the width of the focus\n // state\n const $headingTextFocus = document.createElement('span')\n $headingTextFocus.classList.add(this.sectionHeadingTextFocusClass)\n $headingText.appendChild($headingTextFocus)\n // span could contain HTML elements\n // (see https://www.w3.org/TR/2011/WD-html5-20110525/content-models.html#phrasing-content)\n Array.from($span.childNodes).forEach(($child) =>\n $headingTextFocus.appendChild($child)\n )\n\n // Create container for show / hide icons and text.\n const $showHideToggle = document.createElement('span')\n $showHideToggle.classList.add(this.sectionShowHideToggleClass)\n // Tell Google not to index the 'show' text as part of the heading. Must be\n // set on the element before it's added to the DOM.\n // See https://developers.google.com/search/docs/advanced/robots/robots_meta_tag#data-nosnippet-attr\n $showHideToggle.setAttribute('data-nosnippet', '')\n // Create an inner container to limit the width of the focus state\n const $showHideToggleFocus = document.createElement('span')\n $showHideToggleFocus.classList.add(this.sectionShowHideToggleFocusClass)\n $showHideToggle.appendChild($showHideToggleFocus)\n // Create wrapper for the show / hide text. Append text after the show/hide icon\n const $showHideText = document.createElement('span')\n const $showHideIcon = document.createElement('span')\n $showHideIcon.classList.add(this.upChevronIconClass)\n $showHideToggleFocus.appendChild($showHideIcon)\n $showHideText.classList.add(this.sectionShowHideTextClass)\n $showHideToggleFocus.appendChild($showHideText)\n\n // Append elements to the button:\n // 1. Heading text\n // 2. Punctuation\n // 3. (Optional: Summary line followed by punctuation)\n // 4. Show / hide toggle\n $button.appendChild($headingText)\n $button.appendChild(this.getButtonPunctuationEl())\n\n // If summary content exists add to DOM in correct order\n if ($summary) {\n // Create a new `span` element and copy the summary line content from the\n // original `div` to the new `span`. This is because the summary line text\n // is now inside a button element, which can only contain phrasing\n // content.\n const $summarySpan = document.createElement('span')\n // Create an inner summary container to limit the width of the summary\n // focus state\n const $summarySpanFocus = document.createElement('span')\n $summarySpanFocus.classList.add(this.sectionSummaryFocusClass)\n $summarySpan.appendChild($summarySpanFocus)\n\n // Get original attributes, and pass them to the replacement\n for (const attr of Array.from($summary.attributes)) {\n $summarySpan.setAttribute(attr.name, attr.value)\n }\n\n // Copy original contents of summary to the new summary span\n Array.from($summary.childNodes).forEach(($child) =>\n $summarySpanFocus.appendChild($child)\n )\n\n // Replace the original summary `div` with the new summary `span`\n $summary.remove()\n\n $button.appendChild($summarySpan)\n $button.appendChild(this.getButtonPunctuationEl())\n }\n\n $button.appendChild($showHideToggle)\n\n $heading.removeChild($span)\n $heading.appendChild($button)\n }\n\n /**\n * When a section is opened by the user agent via the 'beforematch' event\n *\n * @private\n * @param {Event} event - Generic event\n */\n onBeforeMatch(event) {\n const $fragment = event.target\n\n // Handle elements with `.closest()` support only\n if (!($fragment instanceof Element)) {\n return\n }\n\n // Handle when fragment is inside section\n const $section = $fragment.closest(`.${this.sectionClass}`)\n if ($section) {\n this.setExpanded(true, $section)\n }\n }\n\n /**\n * When section toggled, set and store state\n *\n * @private\n * @param {Element} $section - Section element\n */\n onSectionToggle($section) {\n const nowExpanded = !this.isExpanded($section)\n this.setExpanded(nowExpanded, $section)\n\n // Store the state in sessionStorage when a change is triggered\n this.storeState($section, nowExpanded)\n }\n\n /**\n * When Open/Close All toggled, set and store state\n *\n * @private\n */\n onShowOrHideAllToggle() {\n const nowExpanded = !this.areAllSectionsOpen()\n\n this.$sections.forEach(($section) => {\n this.setExpanded(nowExpanded, $section)\n this.storeState($section, nowExpanded)\n })\n\n this.updateShowAllButton(nowExpanded)\n }\n\n /**\n * Set section attributes when opened/closed\n *\n * @private\n * @param {boolean} expanded - Section expanded\n * @param {Element} $section - Section element\n */\n setExpanded(expanded, $section) {\n const $showHideIcon = $section.querySelector(`.${this.upChevronIconClass}`)\n const $showHideText = $section.querySelector(\n `.${this.sectionShowHideTextClass}`\n )\n const $button = $section.querySelector(`.${this.sectionButtonClass}`)\n const $content = $section.querySelector(`.${this.sectionContentClass}`)\n\n if (!$content) {\n throw new ElementError({\n component: Accordion,\n identifier: `Section content (\\`<div class=\"${this.sectionContentClass}\">\\`)`\n })\n }\n\n if (!$showHideIcon || !$showHideText || !$button) {\n // Return early for elements we create\n return\n }\n\n const newButtonText = expanded\n ? this.i18n.t('hideSection')\n : this.i18n.t('showSection')\n\n $showHideText.textContent = newButtonText\n $button.setAttribute('aria-expanded', `${expanded}`)\n\n // Update aria-label combining\n const ariaLabelParts = []\n\n const $headingText = $section.querySelector(\n `.${this.sectionHeadingTextClass}`\n )\n if ($headingText) {\n ariaLabelParts.push(`${$headingText.textContent}`.trim())\n }\n\n const $summary = $section.querySelector(`.${this.sectionSummaryClass}`)\n if ($summary) {\n ariaLabelParts.push(`${$summary.textContent}`.trim())\n }\n\n const ariaLabelMessage = expanded\n ? this.i18n.t('hideSectionAriaLabel')\n : this.i18n.t('showSectionAriaLabel')\n ariaLabelParts.push(ariaLabelMessage)\n\n /*\n * Join with a comma to add pause for assistive technology.\n * Example: [heading]Section A ,[pause] Show this section.\n * https://accessibility.blog.gov.uk/2017/12/18/what-working-on-gov-uk-navigation-taught-us-about-accessibility/\n */\n $button.setAttribute('aria-label', ariaLabelParts.join(' , '))\n\n // Swap icon, change class\n if (expanded) {\n $content.removeAttribute('hidden')\n $section.classList.add(this.sectionExpandedClass)\n $showHideIcon.classList.remove(this.downChevronIconClass)\n } else {\n $content.setAttribute('hidden', 'until-found')\n $section.classList.remove(this.sectionExpandedClass)\n $showHideIcon.classList.add(this.downChevronIconClass)\n }\n\n // See if \"Show all sections\" button text should be updated\n this.updateShowAllButton(this.areAllSectionsOpen())\n }\n\n /**\n * Get state of section\n *\n * @private\n * @param {Element} $section - Section element\n * @returns {boolean} True if expanded\n */\n isExpanded($section) {\n return $section.classList.contains(this.sectionExpandedClass)\n }\n\n /**\n * Check if all sections are open\n *\n * @private\n * @returns {boolean} True if all sections are open\n */\n areAllSectionsOpen() {\n return Array.from(this.$sections).every(($section) =>\n this.isExpanded($section)\n )\n }\n\n /**\n * Update \"Show all sections\" button\n *\n * @private\n * @param {boolean} expanded - Section expanded\n */\n updateShowAllButton(expanded) {\n if (!this.$showAllButton || !this.$showAllText || !this.$showAllIcon) {\n return\n }\n\n this.$showAllButton.setAttribute('aria-expanded', expanded.toString())\n this.$showAllText.textContent = expanded\n ? this.i18n.t('hideAllSections')\n : this.i18n.t('showAllSections')\n this.$showAllIcon.classList.toggle(this.downChevronIconClass, !expanded)\n }\n\n /**\n * Get the identifier for a section\n *\n * We need a unique way of identifying each content in the Accordion.\n * Since an `#id` should be unique and an `id` is required for `aria-`\n * attributes `id` can be safely used.\n *\n * @param {Element} $section - Section element\n * @returns {string | undefined | null} Identifier for section\n */\n getIdentifier($section) {\n const $button = $section.querySelector(`.${this.sectionButtonClass}`)\n\n return $button?.getAttribute('aria-controls')\n }\n\n /**\n * Set the state of the accordions in sessionStorage\n *\n * @private\n * @param {Element} $section - Section element\n * @param {boolean} isExpanded - Whether the section is expanded\n */\n storeState($section, isExpanded) {\n if (!this.config.rememberExpanded) {\n return\n }\n\n const id = this.getIdentifier($section)\n\n if (id) {\n try {\n window.sessionStorage.setItem(id, isExpanded.toString())\n } catch (exception) {}\n }\n }\n\n /**\n * Read the state of the accordions from sessionStorage\n *\n * @private\n * @param {Element} $section - Section element\n */\n setInitialState($section) {\n if (!this.config.rememberExpanded) {\n return\n }\n\n const id = this.getIdentifier($section)\n\n if (id) {\n try {\n const state = window.sessionStorage.getItem(id)\n\n if (state !== null) {\n this.setExpanded(state === 'true', $section)\n }\n } catch (exception) {}\n }\n }\n\n /**\n * Create an element to improve semantics of the section button with\n * punctuation\n *\n * Adding punctuation to the button can also improve its general semantics by\n * dividing its contents into thematic chunks. See\n * https://github.com/alphagov/govuk-frontend/issues/2327#issuecomment-922957442\n *\n * @private\n * @returns {Element} DOM element\n */\n getButtonPunctuationEl() {\n const $punctuationEl = document.createElement('span')\n $punctuationEl.classList.add(\n 'govuk-visually-hidden',\n this.sectionHeadingDividerClass\n )\n $punctuationEl.textContent = ', '\n return $punctuationEl\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-accordion'\n\n /**\n * Accordion default config\n *\n * @see {@link AccordionConfig}\n * @constant\n * @type {AccordionConfig}\n */\n static defaults = Object.freeze({\n i18n: {\n hideAllSections: 'Hide all sections',\n hideSection: 'Hide',\n hideSectionAriaLabel: 'Hide this section',\n showAllSections: 'Show all sections',\n showSection: 'Show',\n showSectionAriaLabel: 'Show this section'\n },\n rememberExpanded: true\n })\n\n /**\n * Accordion config schema\n *\n * @constant\n * @satisfies {Schema<AccordionConfig>}\n */\n static schema = Object.freeze({\n properties: {\n i18n: { type: 'object' },\n rememberExpanded: { type: 'boolean' }\n }\n })\n}\n\n/**\n * Accordion config\n *\n * @see {@link Accordion.defaults}\n * @typedef {object} AccordionConfig\n * @property {AccordionTranslations} [i18n=Accordion.defaults.i18n] - Accordion translations\n * @property {boolean} [rememberExpanded] - Whether the expanded and collapsed\n * state of each section is remembered and restored when navigating.\n */\n\n/**\n * Accordion translations\n *\n * @see {@link Accordion.defaults.i18n}\n * @typedef {object} AccordionTranslations\n *\n * Messages used by the component for the labels of its buttons. This includes\n * the visible text shown on screen, and text to help assistive technology users\n * for the buttons toggling each section.\n * @property {string} [hideAllSections] - The text content for the 'Hide all\n * sections' button, used when at least one section is expanded.\n * @property {string} [hideSection] - The text content for the 'Hide'\n * button, used when a section is expanded.\n * @property {string} [hideSectionAriaLabel] - The text content appended to the\n * 'Hide' button's accessible name when a section is expanded.\n * @property {string} [showAllSections] - The text content for the 'Show all\n * sections' button, used when all sections are collapsed.\n * @property {string} [showSection] - The text content for the 'Show'\n * button, used when a section is collapsed.\n * @property {string} [showSectionAriaLabel] - The text content appended to the\n * 'Show' button's accessible name when a section is expanded.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n */\n", "import { ConfigurableComponent } from '../../common/configuration.mjs'\n\nconst DEBOUNCE_TIMEOUT_IN_SECONDS = 1\n\n/**\n * JavaScript enhancements for the Button component\n *\n * @preserve\n * @augments ConfigurableComponent<ButtonConfig>\n */\nexport class Button extends ConfigurableComponent {\n /**\n * @private\n * @type {number | null}\n */\n debounceFormSubmitTimer = null\n\n /**\n * @param {Element | null} $root - HTML element to use for button\n * @param {ButtonConfig} [config] - Button config\n */\n constructor($root, config = {}) {\n super($root, config)\n\n this.$root.addEventListener('keydown', (event) => this.handleKeyDown(event))\n this.$root.addEventListener('click', (event) => this.debounce(event))\n }\n\n /**\n * Trigger a click event when the space key is pressed\n *\n * Some screen readers tell users they can use the space bar to activate\n * things with the 'button' role, so we need to match the functionality of\n * native HTML buttons.\n *\n * See https://github.com/alphagov/govuk_elements/pull/272#issuecomment-233028270\n *\n * @private\n * @param {KeyboardEvent} event - Keydown event\n */\n handleKeyDown(event) {\n const $target = event.target\n\n // Handle space bar only\n if (event.key !== ' ') {\n return\n }\n\n // Handle elements with [role=\"button\"] only\n if (\n $target instanceof HTMLElement &&\n $target.getAttribute('role') === 'button'\n ) {\n event.preventDefault() // prevent the page from scrolling\n $target.click()\n }\n }\n\n /**\n * Debounce double-clicks\n *\n * If the click quickly succeeds a previous click then nothing will happen.\n * This stops people accidentally causing multiple form submissions by double\n * clicking buttons.\n *\n * @private\n * @param {MouseEvent} event - Mouse click event\n * @returns {undefined | false} Returns undefined, or false when debounced\n */\n debounce(event) {\n // Check the button that was clicked has preventDoubleClick enabled\n if (!this.config.preventDoubleClick) {\n return\n }\n\n // If the timer is still running, prevent the click from submitting the form\n if (this.debounceFormSubmitTimer) {\n event.preventDefault()\n return false\n }\n\n this.debounceFormSubmitTimer = window.setTimeout(() => {\n this.debounceFormSubmitTimer = null\n }, DEBOUNCE_TIMEOUT_IN_SECONDS * 1000)\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-button'\n\n /**\n * Button default config\n *\n * @see {@link ButtonConfig}\n * @constant\n * @type {ButtonConfig}\n */\n static defaults = Object.freeze({\n preventDoubleClick: false\n })\n\n /**\n * Button config schema\n *\n * @constant\n * @satisfies {Schema<ButtonConfig>}\n */\n static schema = Object.freeze({\n properties: {\n preventDoubleClick: { type: 'boolean' }\n }\n })\n}\n\n/**\n * Button config\n *\n * @typedef {object} ButtonConfig\n * @property {boolean} [preventDoubleClick=false] - Prevent accidental double\n * clicks on submit buttons from submitting forms multiple times.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n */\n", "/**\n * Returns the value of the given attribute closest to the given element (including itself)\n *\n * @internal\n * @param {Element} $element - The element to start walking the DOM tree up\n * @param {string} attributeName - The name of the attribute\n * @returns {string | null} Attribute value\n */\nexport function closestAttributeValue($element, attributeName) {\n const $closestElementWithAttribute = $element.closest(`[${attributeName}]`)\n return $closestElementWithAttribute\n ? $closestElementWithAttribute.getAttribute(attributeName)\n : null\n}\n", "import { closestAttributeValue } from '../../common/closest-attribute-value.mjs'\nimport {\n validateConfig,\n ConfigurableComponent,\n configOverride\n} from '../../common/configuration.mjs'\nimport { formatErrorMessage } from '../../common/index.mjs'\nimport { ConfigError, ElementError } from '../../errors/index.mjs'\nimport { I18n } from '../../i18n.mjs'\n\n/**\n * Character count component\n *\n * Tracks the number of characters or words in the `.govuk-js-character-count`\n * `<textarea>` inside the element. Displays a message with the remaining number\n * of characters/words available, or the number of characters/words in excess.\n *\n * You can configure the message to only appear after a certain percentage\n * of the available characters/words has been entered.\n *\n * @preserve\n * @augments ConfigurableComponent<CharacterCountConfig>\n */\nexport class CharacterCount extends ConfigurableComponent {\n /** @private */\n $textarea\n\n /** @private */\n $visibleCountMessage\n\n /** @private */\n $screenReaderCountMessage\n\n /**\n * @private\n * @type {number | null}\n */\n lastInputTimestamp = null\n\n /** @private */\n lastInputValue = ''\n\n /**\n * @private\n * @type {number | null}\n */\n valueChecker = null\n\n /** @private */\n i18n\n\n /** @private */\n maxLength;\n\n /**\n * Character count config override\n *\n * To ensure data-attributes take complete precedence, even if they change\n * the type of count, we need to reset the `maxlength` and `maxwords` from\n * the JavaScript config.\n *\n * @internal\n * @param {CharacterCountConfig} datasetConfig - configuration specified by dataset\n * @returns {CharacterCountConfig} - configuration to override by dataset\n */\n [configOverride](datasetConfig) {\n let configOverrides = {}\n if ('maxwords' in datasetConfig || 'maxlength' in datasetConfig) {\n configOverrides = {\n maxlength: undefined,\n maxwords: undefined\n }\n }\n\n return configOverrides\n }\n\n /**\n * @param {Element | null} $root - HTML element to use for character count\n * @param {CharacterCountConfig} [config] - Character count config\n */\n constructor($root, config = {}) {\n super($root, config)\n\n const $textarea = this.$root.querySelector('.govuk-js-character-count')\n if (\n !(\n $textarea instanceof HTMLTextAreaElement ||\n $textarea instanceof HTMLInputElement\n )\n ) {\n throw new ElementError({\n component: CharacterCount,\n element: $textarea,\n expectedType: 'HTMLTextareaElement or HTMLInputElement',\n identifier: 'Form field (`.govuk-js-character-count`)'\n })\n }\n\n // Check for valid config\n const errors = validateConfig(CharacterCount.schema, this.config)\n if (errors[0]) {\n throw new ConfigError(formatErrorMessage(CharacterCount, errors[0]))\n }\n\n this.i18n = new I18n(this.config.i18n, {\n // Read the fallback if necessary rather than have it set in the defaults\n locale: closestAttributeValue(this.$root, 'lang')\n })\n\n // Determine the limit attribute (characters or words)\n this.maxLength = this.config.maxwords ?? this.config.maxlength ?? Infinity\n\n this.$textarea = $textarea\n\n const textareaDescriptionId = `${this.$textarea.id}-info`\n const $textareaDescription = document.getElementById(textareaDescriptionId)\n if (!$textareaDescription) {\n throw new ElementError({\n component: CharacterCount,\n element: $textareaDescription,\n identifier: `Count message (\\`id=\"${textareaDescriptionId}\"\\`)`\n })\n }\n\n // Inject a description for the textarea if none is present already\n // for when the component was rendered with no maxlength, maxwords\n // nor custom textareaDescriptionText\n if (`${$textareaDescription.textContent}`.match(/^\\s*$/)) {\n $textareaDescription.textContent = this.i18n.t('textareaDescription', {\n count: this.maxLength\n })\n }\n\n // Move the textarea description to be immediately after the textarea\n // Kept for backwards compatibility\n this.$textarea.insertAdjacentElement('afterend', $textareaDescription)\n\n // Create the *screen reader* specific live-updating counter\n // This doesn't need any styling classes, as it is never visible\n const $screenReaderCountMessage = document.createElement('div')\n $screenReaderCountMessage.className =\n 'govuk-character-count__sr-status govuk-visually-hidden'\n $screenReaderCountMessage.setAttribute('aria-live', 'polite')\n this.$screenReaderCountMessage = $screenReaderCountMessage\n $textareaDescription.insertAdjacentElement(\n 'afterend',\n $screenReaderCountMessage\n )\n\n // Create our live-updating counter element, copying the classes from the\n // textarea description for backwards compatibility as these may have been\n // configured\n const $visibleCountMessage = document.createElement('div')\n $visibleCountMessage.className = $textareaDescription.className\n $visibleCountMessage.classList.add('govuk-character-count__status')\n $visibleCountMessage.setAttribute('aria-hidden', 'true')\n this.$visibleCountMessage = $visibleCountMessage\n $textareaDescription.insertAdjacentElement('afterend', $visibleCountMessage)\n\n // Hide the textarea description\n $textareaDescription.classList.add('govuk-visually-hidden')\n\n // Remove hard limit if set\n this.$textarea.removeAttribute('maxlength')\n\n this.bindChangeEvents()\n\n // When the page is restored after navigating 'back' in some browsers the\n // state of form controls is not restored until *after* the DOMContentLoaded\n // event is fired, so we need to sync after the pageshow event.\n window.addEventListener('pageshow', () => this.updateCountMessage())\n\n // Although we've set up handlers to sync state on the pageshow event, init\n // could be called after those events have fired, for example if they are\n // added to the page dynamically, so update now too.\n this.updateCountMessage()\n }\n\n /**\n * Bind change events\n *\n * Set up event listeners on the $textarea so that the count messages update\n * when the user types.\n *\n * @private\n */\n bindChangeEvents() {\n this.$textarea.addEventListener('keyup', () => this.handleKeyUp())\n\n // Bind focus/blur events to start/stop polling\n this.$textarea.addEventListener('focus', () => this.handleFocus())\n this.$textarea.addEventListener('blur', () => this.handleBlur())\n }\n\n /**\n * Handle key up event\n *\n * Update the visible character counter and keep track of when the last update\n * happened for each keypress\n *\n * @private\n */\n handleKeyUp() {\n this.updateVisibleCountMessage()\n this.lastInputTimestamp = Date.now()\n }\n\n /**\n * Handle focus event\n *\n * Speech recognition software such as Dragon NaturallySpeaking will modify\n * the fields by directly changing its `value`. These changes don't trigger\n * events in JavaScript, so we need to poll to handle when and if they occur.\n *\n * Once the keyup event hasn't been detected for at least 1000 ms (1s), check\n * if the textarea value has changed and update the count message if it has.\n *\n * This is so that the update triggered by the manual comparison doesn't\n * conflict with debounced KeyboardEvent updates.\n *\n * @private\n */\n handleFocus() {\n this.valueChecker = window.setInterval(() => {\n if (\n !this.lastInputTimestamp ||\n Date.now() - 500 >= this.lastInputTimestamp\n ) {\n this.updateIfValueChanged()\n }\n }, 1000)\n }\n\n /**\n * Handle blur event\n *\n * Stop checking the textarea value once the textarea no longer has focus\n *\n * @private\n */\n handleBlur() {\n // Cancel value checking on blur\n if (this.valueChecker) {\n window.clearInterval(this.valueChecker)\n }\n }\n\n /**\n * Update count message if textarea value has changed\n *\n * @private\n */\n updateIfValueChanged() {\n if (this.$textarea.value !== this.lastInputValue) {\n this.lastInputValue = this.$textarea.value\n this.updateCountMessage()\n }\n }\n\n /**\n * Update count message\n *\n * Helper function to update both the visible and screen reader-specific\n * counters simultaneously (e.g. on init)\n *\n * @private\n */\n updateCountMessage() {\n this.updateVisibleCountMessage()\n this.updateScreenReaderCountMessage()\n }\n\n /**\n * Update visible count message\n *\n * @private\n */\n updateVisibleCountMessage() {\n const remainingNumber = this.maxLength - this.count(this.$textarea.value)\n const isError = remainingNumber < 0\n\n // If input is over the threshold, remove the disabled class which renders\n // the counter invisible.\n this.$visibleCountMessage.classList.toggle(\n 'govuk-character-count__message--disabled',\n !this.isOverThreshold()\n )\n\n // Update styles\n this.$textarea.classList.toggle('govuk-textarea--error', isError)\n this.$visibleCountMessage.classList.toggle('govuk-error-message', isError)\n this.$visibleCountMessage.classList.toggle('govuk-hint', !isError)\n\n // Update message\n this.$visibleCountMessage.textContent = this.getCountMessage()\n }\n\n /**\n * Update screen reader count message\n *\n * @private\n */\n updateScreenReaderCountMessage() {\n // If over the threshold, remove the aria-hidden attribute, allowing screen\n // readers to announce the content of the element.\n if (this.isOverThreshold()) {\n this.$screenReaderCountMessage.removeAttribute('aria-hidden')\n } else {\n this.$screenReaderCountMessage.setAttribute('aria-hidden', 'true')\n }\n\n // Update message\n this.$screenReaderCountMessage.textContent = this.getCountMessage()\n }\n\n /**\n * Count the number of characters (or words, if `config.maxwords` is set)\n * in the given text\n *\n * @private\n * @param {string} text - The text to count the characters of\n * @returns {number} the number of characters (or words) in the text\n */\n count(text) {\n if (this.config.maxwords) {\n const tokens = text.match(/\\S+/g) ?? [] // Matches consecutive non-whitespace chars\n return tokens.length\n }\n\n return text.length\n }\n\n /**\n * Get count message\n *\n * @private\n * @returns {string} Status message\n */\n getCountMessage() {\n const remainingNumber = this.maxLength - this.count(this.$textarea.value)\n const countType = this.config.maxwords ? 'words' : 'characters'\n return this.formatCountMessage(remainingNumber, countType)\n }\n\n /**\n * Formats the message shown to users according to what's counted\n * and how many remain\n *\n * @private\n * @param {number} remainingNumber - The number of words/characaters remaining\n * @param {string} countType - \"words\" or \"characters\"\n * @returns {string} Status message\n */\n formatCountMessage(remainingNumber, countType) {\n if (remainingNumber === 0) {\n return this.i18n.t(`${countType}AtLimit`)\n }\n\n const translationKeySuffix =\n remainingNumber < 0 ? 'OverLimit' : 'UnderLimit'\n\n return this.i18n.t(`${countType}${translationKeySuffix}`, {\n count: Math.abs(remainingNumber)\n })\n }\n\n /**\n * Check if count is over threshold\n *\n * Checks whether the value is over the configured threshold for the input.\n * If there is no configured threshold, it is set to 0 and this function will\n * always return true.\n *\n * @private\n * @returns {boolean} true if the current count is over the config.threshold\n * (or no threshold is set)\n */\n isOverThreshold() {\n // No threshold means we're always above threshold so save some computation\n if (!this.config.threshold) {\n return true\n }\n\n // Determine the remaining number of characters/words\n const currentLength = this.count(this.$textarea.value)\n const maxLength = this.maxLength\n\n const thresholdValue = (maxLength * this.config.threshold) / 100\n\n return thresholdValue <= currentLength\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-character-count'\n\n /**\n * Character count default config\n *\n * @see {@link CharacterCountConfig}\n * @constant\n * @type {CharacterCountConfig}\n */\n static defaults = Object.freeze({\n threshold: 0,\n i18n: {\n // Characters\n charactersUnderLimit: {\n one: 'You have %{count} character remaining',\n other: 'You have %{count} characters remaining'\n },\n charactersAtLimit: 'You have 0 characters remaining',\n charactersOverLimit: {\n one: 'You have %{count} character too many',\n other: 'You have %{count} characters too many'\n },\n // Words\n wordsUnderLimit: {\n one: 'You have %{count} word remaining',\n other: 'You have %{count} words remaining'\n },\n wordsAtLimit: 'You have 0 words remaining',\n wordsOverLimit: {\n one: 'You have %{count} word too many',\n other: 'You have %{count} words too many'\n },\n textareaDescription: {\n other: ''\n }\n }\n })\n\n /**\n * Character count config schema\n *\n * @constant\n * @satisfies {Schema<CharacterCountConfig>}\n */\n static schema = Object.freeze({\n properties: {\n i18n: { type: 'object' },\n maxwords: { type: 'number' },\n maxlength: { type: 'number' },\n threshold: { type: 'number' }\n },\n anyOf: [\n {\n required: ['maxwords'],\n errorMessage: 'Either \"maxlength\" or \"maxwords\" must be provided'\n },\n {\n required: ['maxlength'],\n errorMessage: 'Either \"maxlength\" or \"maxwords\" must be provided'\n }\n ]\n })\n}\n\n/**\n * Character count config\n *\n * @see {@link CharacterCount.defaults}\n * @typedef {object} CharacterCountConfig\n * @property {number} [maxlength] - The maximum number of characters.\n * If maxwords is provided, the maxlength option will be ignored.\n * @property {number} [maxwords] - The maximum number of words. If maxwords is\n * provided, the maxlength option will be ignored.\n * @property {number} [threshold=0] - The percentage value of the limit at\n * which point the count message is displayed. If this attribute is set, the\n * count message will be hidden by default.\n * @property {CharacterCountTranslations} [i18n=CharacterCount.defaults.i18n] - Character count translations\n */\n\n/**\n * Character count translations\n *\n * @see {@link CharacterCount.defaults.i18n}\n * @typedef {object} CharacterCountTranslations\n *\n * Messages shown to users as they type. It provides feedback on how many words\n * or characters they have remaining or if they are over the limit. This also\n * includes a message used as an accessible description for the textarea.\n * @property {TranslationPluralForms} [charactersUnderLimit] - Message displayed\n * when the number of characters is under the configured maximum, `maxlength`.\n * This message is displayed visually and through assistive technologies. The\n * component will replace the `%{count}` placeholder with the number of\n * remaining characters. This is a [pluralised list of\n * messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).\n * @property {string} [charactersAtLimit] - Message displayed when the number of\n * characters reaches the configured maximum, `maxlength`. This message is\n * displayed visually and through assistive technologies.\n * @property {TranslationPluralForms} [charactersOverLimit] - Message displayed\n * when the number of characters is over the configured maximum, `maxlength`.\n * This message is displayed visually and through assistive technologies. The\n * component will replace the `%{count}` placeholder with the number of\n * remaining characters. This is a [pluralised list of\n * messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).\n * @property {TranslationPluralForms} [wordsUnderLimit] - Message displayed when\n * the number of words is under the configured maximum, `maxlength`. This\n * message is displayed visually and through assistive technologies. The\n * component will replace the `%{count}` placeholder with the number of\n * remaining words. This is a [pluralised list of\n * messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).\n * @property {string} [wordsAtLimit] - Message displayed when the number of\n * words reaches the configured maximum, `maxlength`. This message is\n * displayed visually and through assistive technologies.\n * @property {TranslationPluralForms} [wordsOverLimit] - Message displayed when\n * the number of words is over the configured maximum, `maxlength`. This\n * message is displayed visually and through assistive technologies. The\n * component will replace the `%{count}` placeholder with the number of\n * remaining words. This is a [pluralised list of\n * messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).\n * @property {TranslationPluralForms} [textareaDescription] - Message made\n * available to assistive technologies, if none is already present in the\n * HTML, to describe that the component accepts only a limited amount of\n * content. It is visible on the page when JavaScript is unavailable. The\n * component will replace the `%{count}` placeholder with the value of the\n * `maxlength` or `maxwords` parameter.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n * @import { TranslationPluralForms } from '../../i18n.mjs'\n */\n", "import { Component } from '../../component.mjs'\nimport { ElementError } from '../../errors/index.mjs'\n\n/**\n * Checkboxes component\n *\n * @preserve\n */\nexport class Checkboxes extends Component {\n /** @private */\n $inputs\n\n /**\n * Checkboxes can be associated with a 'conditionally revealed' content block\n * – for example, a checkbox for 'Phone' could reveal an additional form field\n * for the user to enter their phone number.\n *\n * These associations are made using a `data-aria-controls` attribute, which\n * is promoted to an aria-controls attribute during initialisation.\n *\n * We also need to restore the state of any conditional reveals on the page\n * (for example if the user has navigated back), and set up event handlers to\n * keep the reveal in sync with the checkbox state.\n *\n * @param {Element | null} $root - HTML element to use for checkboxes\n */\n constructor($root) {\n super($root)\n\n const $inputs = this.$root.querySelectorAll('input[type=\"checkbox\"]')\n if (!$inputs.length) {\n throw new ElementError({\n component: Checkboxes,\n identifier: 'Form inputs (`<input type=\"checkbox\">`)'\n })\n }\n\n this.$inputs = $inputs\n\n this.$inputs.forEach(($input) => {\n const targetId = $input.getAttribute('data-aria-controls')\n\n // Skip radios without data-aria-controls attributes\n if (!targetId) {\n return\n }\n\n // Throw if target conditional element does not exist.\n if (!document.getElementById(targetId)) {\n throw new ElementError({\n component: Checkboxes,\n identifier: `Conditional reveal (\\`id=\"${targetId}\"\\`)`\n })\n }\n\n // Promote the data-aria-controls attribute to a aria-controls attribute\n // so that the relationship is exposed in the AOM\n $input.setAttribute('aria-controls', targetId)\n $input.removeAttribute('data-aria-controls')\n })\n\n // When the page is restored after navigating 'back' in some browsers the\n // state of form controls is not restored until *after* the DOMContentLoaded\n // event is fired, so we need to sync after the pageshow event.\n window.addEventListener('pageshow', () => this.syncAllConditionalReveals())\n\n // Although we've set up handlers to sync state on the pageshow event, init\n // could be called after those events have fired, for example if they are\n // added to the page dynamically, so sync now too.\n this.syncAllConditionalReveals()\n\n // Handle events\n this.$root.addEventListener('click', (event) => this.handleClick(event))\n }\n\n /**\n * Sync the conditional reveal states for all checkboxes in this component.\n *\n * @private\n */\n syncAllConditionalReveals() {\n this.$inputs.forEach(($input) =>\n this.syncConditionalRevealWithInputState($input)\n )\n }\n\n /**\n * Sync conditional reveal with the input state\n *\n * Synchronise the visibility of the conditional reveal, and its accessible\n * state, with the input's checked state.\n *\n * @private\n * @param {HTMLInputElement} $input - Checkbox input\n */\n syncConditionalRevealWithInputState($input) {\n const targetId = $input.getAttribute('aria-controls')\n if (!targetId) {\n return\n }\n\n const $target = document.getElementById(targetId)\n if ($target?.classList.contains('govuk-checkboxes__conditional')) {\n const inputIsChecked = $input.checked\n\n $input.setAttribute('aria-expanded', inputIsChecked.toString())\n $target.classList.toggle(\n 'govuk-checkboxes__conditional--hidden',\n !inputIsChecked\n )\n }\n }\n\n /**\n * Uncheck other checkboxes\n *\n * Find any other checkbox inputs with the same name value, and uncheck them.\n * This is useful for when a “None of these\" checkbox is checked.\n *\n * @private\n * @param {HTMLInputElement} $input - Checkbox input\n */\n unCheckAllInputsExcept($input) {\n const allInputsWithSameName = document.querySelectorAll(\n `input[type=\"checkbox\"][name=\"${$input.name}\"]`\n )\n\n allInputsWithSameName.forEach(($inputWithSameName) => {\n const hasSameFormOwner = $input.form === $inputWithSameName.form\n if (hasSameFormOwner && $inputWithSameName !== $input) {\n $inputWithSameName.checked = false\n this.syncConditionalRevealWithInputState($inputWithSameName)\n }\n })\n }\n\n /**\n * Uncheck exclusive checkboxes\n *\n * Find any checkbox inputs with the same name value and the 'exclusive'\n * behaviour, and uncheck them. This helps prevent someone checking both a\n * regular checkbox and a \"None of these\" checkbox in the same fieldset.\n *\n * @private\n * @param {HTMLInputElement} $input - Checkbox input\n */\n unCheckExclusiveInputs($input) {\n const allInputsWithSameNameAndExclusiveBehaviour =\n document.querySelectorAll(\n `input[data-behaviour=\"exclusive\"][type=\"checkbox\"][name=\"${$input.name}\"]`\n )\n\n allInputsWithSameNameAndExclusiveBehaviour.forEach(($exclusiveInput) => {\n const hasSameFormOwner = $input.form === $exclusiveInput.form\n if (hasSameFormOwner) {\n $exclusiveInput.checked = false\n this.syncConditionalRevealWithInputState($exclusiveInput)\n }\n })\n }\n\n /**\n * Click event handler\n *\n * Handle a click within the component root – if the click occurred on a checkbox,\n * sync the state of any associated conditional reveal with the checkbox\n * state.\n *\n * @private\n * @param {MouseEvent} event - Click event\n */\n handleClick(event) {\n const $clickedInput = event.target\n\n // Ignore clicks on things that aren't checkbox inputs\n if (\n !($clickedInput instanceof HTMLInputElement) ||\n $clickedInput.type !== 'checkbox'\n ) {\n return\n }\n\n // If the checkbox conditionally-reveals some content, sync the state\n const hasAriaControls = $clickedInput.getAttribute('aria-controls')\n if (hasAriaControls) {\n this.syncConditionalRevealWithInputState($clickedInput)\n }\n\n // No further behaviour needed for unchecking\n if (!$clickedInput.checked) {\n return\n }\n\n // Handle 'exclusive' checkbox behaviour (ie \"None of these\")\n const hasBehaviourExclusive =\n $clickedInput.getAttribute('data-behaviour') === 'exclusive'\n if (hasBehaviourExclusive) {\n this.unCheckAllInputsExcept($clickedInput)\n } else {\n this.unCheckExclusiveInputs($clickedInput)\n }\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-checkboxes'\n}\n", "import { ConfigurableComponent } from '../../common/configuration.mjs'\nimport { getFragmentFromUrl, setFocus } from '../../common/index.mjs'\n\n/**\n * Error summary component\n *\n * Takes focus on initialisation for accessible announcement, unless disabled in\n * configuration.\n *\n * @preserve\n * @augments ConfigurableComponent<ErrorSummaryConfig>\n */\nexport class ErrorSummary extends ConfigurableComponent {\n /**\n * @param {Element | null} $root - HTML element to use for error summary\n * @param {ErrorSummaryConfig} [config] - Error summary config\n */\n constructor($root, config = {}) {\n super($root, config)\n\n /**\n * Focus the error summary\n */\n if (!this.config.disableAutoFocus) {\n setFocus(this.$root)\n }\n\n this.$root.addEventListener('click', (event) => this.handleClick(event))\n }\n\n /**\n * Click event handler\n *\n * @private\n * @param {MouseEvent} event - Click event\n */\n handleClick(event) {\n const $target = event.target\n if ($target && this.focusTarget($target)) {\n event.preventDefault()\n }\n }\n\n /**\n * Focus the target element\n *\n * By default, the browser will scroll the target into view. Because our\n * labels or legends appear above the input, this means the user will be\n * presented with an input without any context, as the label or legend will be\n * off the top of the screen.\n *\n * Manually handling the click event, scrolling the question into view and\n * then focussing the element solves this.\n *\n * This also results in the label and/or legend being announced correctly in\n * NVDA (as tested in 2018.3.2) - without this only the field type is\n * announced (e.g. \"Edit, has autocomplete\").\n *\n * @private\n * @param {EventTarget} $target - Event target\n * @returns {boolean} True if the target was able to be focussed\n */\n focusTarget($target) {\n // If the element that was clicked was not a link, return early\n if (!($target instanceof HTMLAnchorElement)) {\n return false\n }\n\n const inputId = getFragmentFromUrl($target.href)\n if (!inputId) {\n return false\n }\n\n const $input = document.getElementById(inputId)\n if (!$input) {\n return false\n }\n\n const $legendOrLabel = this.getAssociatedLegendOrLabel($input)\n if (!$legendOrLabel) {\n return false\n }\n\n // Scroll the legend or label into view *before* calling focus on the input\n // to avoid extra scrolling in browsers that don't support `preventScroll`\n // (which at time of writing is most of them...)\n $legendOrLabel.scrollIntoView()\n $input.focus({ preventScroll: true })\n\n return true\n }\n\n /**\n * Get associated legend or label\n *\n * Returns the first element that exists from this list:\n *\n * - The `<legend>` associated with the closest `<fieldset>` ancestor, as long\n * as the top of it is no more than half a viewport height away from the\n * bottom of the input\n * - The first `<label>` that is associated with the input using for=\"inputId\"\n * - The closest parent `<label>`\n *\n * @private\n * @param {Element} $input - The input\n * @returns {Element | null} Associated legend or label, or null if no\n * associated legend or label can be found\n */\n getAssociatedLegendOrLabel($input) {\n const $fieldset = $input.closest('fieldset')\n\n if ($fieldset) {\n const $legends = $fieldset.getElementsByTagName('legend')\n\n if ($legends.length) {\n const $candidateLegend = $legends[0]\n\n // If the input type is radio or checkbox, always use the legend if\n // there is one.\n if (\n $input instanceof HTMLInputElement &&\n ($input.type === 'checkbox' || $input.type === 'radio')\n ) {\n return $candidateLegend\n }\n\n // For other input types, only scroll to the fieldset’s legend (instead\n // of the label associated with the input) if the input would end up in\n // the top half of the screen.\n //\n // This should avoid situations where the input either ends up off the\n // screen, or obscured by a software keyboard.\n const legendTop = $candidateLegend.getBoundingClientRect().top\n const inputRect = $input.getBoundingClientRect()\n\n // If the browser doesn't support Element.getBoundingClientRect().height\n // or window.innerHeight (like IE8), bail and just link to the label.\n if (inputRect.height && window.innerHeight) {\n const inputBottom = inputRect.top + inputRect.height\n\n if (inputBottom - legendTop < window.innerHeight / 2) {\n return $candidateLegend\n }\n }\n }\n }\n\n return (\n document.querySelector(`label[for='${$input.getAttribute('id')}']`) ??\n $input.closest('label')\n )\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-error-summary'\n\n /**\n * Error summary default config\n *\n * @see {@link ErrorSummaryConfig}\n * @constant\n * @type {ErrorSummaryConfig}\n */\n static defaults = Object.freeze({\n disableAutoFocus: false\n })\n\n /**\n * Error summary config schema\n *\n * @constant\n * @satisfies {Schema<ErrorSummaryConfig>}\n */\n static schema = Object.freeze({\n properties: {\n disableAutoFocus: { type: 'boolean' }\n }\n })\n}\n\n/**\n * Error summary config\n *\n * @typedef {object} ErrorSummaryConfig\n * @property {boolean} [disableAutoFocus=false] - If set to `true` the error\n * summary will not be focussed when the page loads.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n */\n", "import { ConfigurableComponent } from '../../common/configuration.mjs'\nimport { ElementError } from '../../errors/index.mjs'\nimport { I18n } from '../../i18n.mjs'\n\n/**\n * Exit this page component\n *\n * @preserve\n * @augments ConfigurableComponent<ExitThisPageConfig>\n */\nexport class ExitThisPage extends ConfigurableComponent {\n /** @private */\n i18n\n\n /** @private */\n $button\n\n /**\n * @private\n * @type {HTMLAnchorElement | null}\n */\n $skiplinkButton = null\n\n /**\n * @private\n * @type {HTMLElement | null}\n */\n $updateSpan = null\n\n /**\n * @private\n * @type {HTMLElement | null}\n */\n $indicatorContainer = null\n\n /**\n * @private\n * @type {HTMLElement | null}\n */\n $overlay = null\n\n /** @private */\n keypressCounter = 0\n\n /** @private */\n lastKeyWasModified = false\n\n /** @private */\n timeoutTime = 5000 // milliseconds\n\n // Store the timeout events so that we can clear them to avoid user keypresses overlapping\n // setTimeout returns an id that we can use to clear it with clearTimeout,\n // hence the 'Id' suffix\n\n /**\n * @private\n * @type {number | null}\n */\n keypressTimeoutId = null\n\n /**\n * @private\n * @type {number | null}\n */\n timeoutMessageId = null\n\n /**\n * @param {Element | null} $root - HTML element that wraps the Exit This Page button\n * @param {ExitThisPageConfig} [config] - Exit This Page config\n */\n constructor($root, config = {}) {\n super($root, config)\n\n const $button = this.$root.querySelector('.govuk-exit-this-page__button')\n if (!($button instanceof HTMLAnchorElement)) {\n throw new ElementError({\n component: ExitThisPage,\n element: $button,\n expectedType: 'HTMLAnchorElement',\n identifier: 'Button (`.govuk-exit-this-page__button`)'\n })\n }\n\n this.i18n = new I18n(this.config.i18n)\n this.$button = $button\n\n const $skiplinkButton = document.querySelector(\n '.govuk-js-exit-this-page-skiplink'\n )\n if ($skiplinkButton instanceof HTMLAnchorElement) {\n this.$skiplinkButton = $skiplinkButton\n }\n\n this.buildIndicator()\n this.initUpdateSpan()\n this.initButtonClickHandler()\n\n // Check to see if this has already been done by a previous initialisation of ExitThisPage\n if (!('govukFrontendExitThisPageKeypress' in document.body.dataset)) {\n document.addEventListener('keyup', this.handleKeypress.bind(this), true)\n document.body.dataset.govukFrontendExitThisPageKeypress = 'true'\n }\n\n // When the page is restored after navigating 'back' in some browsers the\n // blank overlay remains present, rendering the page unusable. Here, we check\n // to see if it's present on page (re)load, and remove it if so.\n window.addEventListener('pageshow', this.resetPage.bind(this))\n }\n\n /**\n * Create the <span> we use for screen reader announcements.\n *\n * @private\n */\n initUpdateSpan() {\n this.$updateSpan = document.createElement('span')\n this.$updateSpan.setAttribute('role', 'status')\n this.$updateSpan.className = 'govuk-visually-hidden'\n\n this.$root.appendChild(this.$updateSpan)\n }\n\n /**\n * Create button click handlers.\n *\n * @private\n */\n initButtonClickHandler() {\n // Main EtP button\n this.$button.addEventListener('click', this.handleClick.bind(this))\n\n // EtP secondary link\n if (this.$skiplinkButton) {\n this.$skiplinkButton.addEventListener(\n 'click',\n this.handleClick.bind(this)\n )\n }\n }\n\n /**\n * Create the HTML for the 'three lights' indicator on the button.\n *\n * @private\n */\n buildIndicator() {\n // Build container\n // Putting `aria-hidden` on it as it won't contain any readable information\n this.$indicatorContainer = document.createElement('div')\n this.$indicatorContainer.className = 'govuk-exit-this-page__indicator'\n this.$indicatorContainer.setAttribute('aria-hidden', 'true')\n\n // Create three 'lights' and place them within the container\n for (let i = 0; i < 3; i++) {\n const $indicator = document.createElement('div')\n $indicator.className = 'govuk-exit-this-page__indicator-light'\n this.$indicatorContainer.appendChild($indicator)\n }\n\n // Append it all to the module\n this.$button.appendChild(this.$indicatorContainer)\n }\n\n /**\n * Update whether the lights are visible and which ones are lit up depending on\n * the value of `keypressCounter`.\n *\n * @private\n */\n updateIndicator() {\n if (!this.$indicatorContainer) {\n return\n }\n\n // Show or hide the indicator container depending on keypressCounter value\n this.$indicatorContainer.classList.toggle(\n 'govuk-exit-this-page__indicator--visible',\n this.keypressCounter > 0\n )\n\n // Turn on only the indicators we want on\n const $indicators = this.$indicatorContainer.querySelectorAll(\n '.govuk-exit-this-page__indicator-light'\n )\n $indicators.forEach(($indicator, index) => {\n $indicator.classList.toggle(\n 'govuk-exit-this-page__indicator-light--on',\n index < this.keypressCounter\n )\n })\n }\n\n /**\n * Initiates the redirection away from the current page.\n * Includes the loading overlay functionality, which covers the current page with a\n * white overlay so that the contents are not visible during the loading\n * process. This is particularly important on slow network connections.\n *\n * @private\n */\n exitPage() {\n if (!this.$updateSpan) {\n return\n }\n\n this.$updateSpan.textContent = ''\n\n // Blank the page\n // As well as creating an overlay with text, we also set the body to hidden\n // to prevent screen reader and sequential navigation users potentially\n // navigating through the page behind the overlay during loading\n document.body.classList.add('govuk-exit-this-page-hide-content')\n this.$overlay = document.createElement('div')\n this.$overlay.className = 'govuk-exit-this-page-overlay'\n this.$overlay.setAttribute('role', 'alert')\n\n // we do these this way round, thus incurring a second paint, because changing\n // the element text after adding it means that screen readers pick up the\n // announcement more reliably.\n document.body.appendChild(this.$overlay)\n this.$overlay.textContent = this.i18n.t('activated')\n\n window.location.href = this.$button.href\n }\n\n /**\n * Pre-activation logic for when the button is clicked/activated via mouse or\n * pointer.\n *\n * We do this to differentiate it from the keyboard activation event because we\n * need to run `e.preventDefault` as the button or skiplink are both links and we\n * want to apply some additional logic in `exitPage` before navigating.\n *\n * @private\n * @param {MouseEvent} event - mouse click event\n */\n handleClick(event) {\n event.preventDefault()\n this.exitPage()\n }\n\n /**\n * Logic for the 'quick escape' keyboard sequence functionality (pressing the\n * Shift key three times without interruption, within a time limit).\n *\n * @private\n * @param {KeyboardEvent} event - keyup event\n */\n handleKeypress(event) {\n if (!this.$updateSpan) {\n return\n }\n\n // Detect if the 'Shift' key has been pressed. We want to only do things if it\n // was pressed by itself and not in a combination with another key—so we keep\n // track of whether the preceding keyup had shiftKey: true on it, and if it\n // did, we ignore the next Shift keyup event.\n //\n // This works because using Shift as a modifier key (e.g. pressing Shift + A)\n // will fire TWO keyup events, one for A (with e.shiftKey: true) and the other\n // for Shift (with e.shiftKey: false).\n if (event.key === 'Shift' && !this.lastKeyWasModified) {\n this.keypressCounter += 1\n\n // Update the indicator before the below if statement can reset it back to 0\n this.updateIndicator()\n\n // Clear the timeout for the keypress timeout message clearing itself\n if (this.timeoutMessageId) {\n window.clearTimeout(this.timeoutMessageId)\n this.timeoutMessageId = null\n }\n\n if (this.keypressCounter >= 3) {\n this.keypressCounter = 0\n\n if (this.keypressTimeoutId) {\n window.clearTimeout(this.keypressTimeoutId)\n this.keypressTimeoutId = null\n }\n\n this.exitPage()\n } else {\n if (this.keypressCounter === 1) {\n this.$updateSpan.textContent = this.i18n.t('pressTwoMoreTimes')\n } else {\n this.$updateSpan.textContent = this.i18n.t('pressOneMoreTime')\n }\n }\n\n this.setKeypressTimer()\n } else if (this.keypressTimeoutId) {\n // If the user pressed any key other than 'Shift', after having pressed\n // 'Shift' and activating the timer, stop and reset the timer.\n this.resetKeypressTimer()\n }\n\n // Keep track of whether the Shift modifier key was held during this keypress\n this.lastKeyWasModified = event.shiftKey\n }\n\n /**\n * Starts the 'quick escape' keyboard sequence timer.\n *\n * This can be invoked several times. We want this to be possible so that the\n * timer is restarted each time the shortcut key is pressed (e.g. the user has\n * up to n seconds between each keypress, rather than n seconds to invoke the\n * entire sequence.)\n *\n * @private\n */\n setKeypressTimer() {\n // Clear any existing timeout. This is so only one timer is running even if\n // there are multiple keypresses in quick succession.\n if (this.keypressTimeoutId) {\n window.clearTimeout(this.keypressTimeoutId)\n }\n\n // Set a fresh timeout\n this.keypressTimeoutId = window.setTimeout(\n this.resetKeypressTimer.bind(this),\n this.timeoutTime\n )\n }\n\n /**\n * Stops and resets the 'quick escape' keyboard sequence timer.\n *\n * @private\n */\n resetKeypressTimer() {\n if (!this.$updateSpan) {\n return\n }\n\n if (this.keypressTimeoutId) {\n window.clearTimeout(this.keypressTimeoutId)\n this.keypressTimeoutId = null\n }\n\n const $updateSpan = this.$updateSpan\n\n this.keypressCounter = 0\n $updateSpan.textContent = this.i18n.t('timedOut')\n\n this.timeoutMessageId = window.setTimeout(() => {\n $updateSpan.textContent = ''\n }, this.timeoutTime)\n\n this.updateIndicator()\n }\n\n /**\n * Reset the page using the EtP button\n *\n * We use this in situations where a user may re-enter a page using the browser\n * back button. In these cases, the browser can choose to restore the state of\n * the page as it was previously, including restoring the 'ghost page' overlay,\n * the announcement span having it's role set to \"alert\" and the keypress\n * indicator still active, leaving the page in an unusable state.\n *\n * By running this check when the page is shown, we can programatically restore\n * the page and the component to a \"default\" state\n *\n * @private\n */\n resetPage() {\n // If an overlay is set, remove it and reset the value\n document.body.classList.remove('govuk-exit-this-page-hide-content')\n\n if (this.$overlay) {\n this.$overlay.remove()\n this.$overlay = null\n }\n\n // Ensure the announcement span's role is status, not alert and clear any text\n if (this.$updateSpan) {\n this.$updateSpan.setAttribute('role', 'status')\n this.$updateSpan.textContent = ''\n }\n\n // Sync the keypress indicator lights\n this.updateIndicator()\n\n // If the timeouts are active, clear them\n if (this.keypressTimeoutId) {\n window.clearTimeout(this.keypressTimeoutId)\n }\n\n if (this.timeoutMessageId) {\n window.clearTimeout(this.timeoutMessageId)\n }\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-exit-this-page'\n\n /**\n * Exit this page default config\n *\n * @see {@link ExitThisPageConfig}\n * @constant\n * @type {ExitThisPageConfig}\n */\n static defaults = Object.freeze({\n i18n: {\n activated: 'Loading.',\n timedOut: 'Exit this page expired.',\n pressTwoMoreTimes: 'Shift, press 2 more times to exit.',\n pressOneMoreTime: 'Shift, press 1 more time to exit.'\n }\n })\n\n /**\n * Exit this page config schema\n *\n * @constant\n * @satisfies {Schema<ExitThisPageConfig>}\n */\n static schema = Object.freeze({\n properties: {\n i18n: { type: 'object' }\n }\n })\n}\n\n/**\n * Exit this Page config\n *\n * @see {@link ExitThisPage.defaults}\n * @typedef {object} ExitThisPageConfig\n * @property {ExitThisPageTranslations} [i18n=ExitThisPage.defaults.i18n] - Exit this page translations\n */\n\n/**\n * Exit this Page translations\n *\n * @see {@link ExitThisPage.defaults.i18n}\n * @typedef {object} ExitThisPageTranslations\n *\n * Messages used by the component programatically inserted text, including\n * overlay text and screen reader announcements.\n * @property {string} [activated] - Screen reader announcement for when EtP\n * keypress functionality has been successfully activated.\n * @property {string} [timedOut] - Screen reader announcement for when the EtP\n * keypress functionality has timed out.\n * @property {string} [pressTwoMoreTimes] - Screen reader announcement informing\n * the user they must press the activation key two more times.\n * @property {string} [pressOneMoreTime] - Screen reader announcement informing\n * the user they must press the activation key one more time.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n */\n", "import { closestAttributeValue } from '../../common/closest-attribute-value.mjs'\nimport { ConfigurableComponent } from '../../common/configuration.mjs'\nimport { formatErrorMessage } from '../../common/index.mjs'\nimport { ElementError } from '../../errors/index.mjs'\nimport { I18n } from '../../i18n.mjs'\n\n/**\n * File upload component\n *\n * @preserve\n * @augments ConfigurableComponent<FileUploadConfig>\n */\nexport class FileUpload extends ConfigurableComponent {\n /**\n * @private\n * @type {HTMLFileInputElement}\n */\n $input\n\n /**\n * @private\n */\n $button\n\n /**\n * @private\n */\n $status\n\n /** @private */\n i18n\n\n /** @private */\n id\n\n /**\n * @param {Element | null} $root - File input element\n * @param {FileUploadConfig} [config] - File Upload config\n */\n constructor($root, config = {}) {\n super($root, config)\n\n const $input = this.$root.querySelector('input')\n\n if ($input === null) {\n throw new ElementError({\n component: FileUpload,\n identifier: 'File inputs (`<input type=\"file\">`)'\n })\n }\n\n if ($input.type !== 'file') {\n throw new ElementError(\n formatErrorMessage(\n FileUpload,\n 'File input (`<input type=\"file\">`) attribute (`type`) is not `file`'\n )\n )\n }\n\n this.$input = /** @type {HTMLFileInputElement} */ ($input)\n this.$input.setAttribute('hidden', 'true')\n\n if (!this.$input.id) {\n throw new ElementError({\n component: FileUpload,\n identifier: 'File input (`<input type=\"file\">`) attribute (`id`)'\n })\n }\n\n this.id = this.$input.id\n\n this.i18n = new I18n(this.config.i18n, {\n // Read the fallback if necessary rather than have it set in the defaults\n locale: closestAttributeValue(this.$root, 'lang')\n })\n\n const $label = this.findLabel()\n // Add an ID to the label if it doesn't have one already\n // so it can be referenced by `aria-labelledby`\n if (!$label.id) {\n $label.id = `${this.id}-label`\n }\n\n // we need to copy the 'id' of the root element\n // to the new button replacement element\n // so that focus will work in the error summary\n this.$input.id = `${this.id}-input`\n\n // Create the file selection button\n const $button = document.createElement('button')\n $button.classList.add('govuk-file-upload-button')\n $button.type = 'button'\n $button.id = this.id\n $button.classList.add('govuk-file-upload-button--empty')\n\n // Copy `aria-describedby` if present so hints and errors\n // are associated to the `<button>`\n const ariaDescribedBy = this.$input.getAttribute('aria-describedby')\n if (ariaDescribedBy) {\n $button.setAttribute('aria-describedby', ariaDescribedBy)\n }\n\n // Create status element that shows what/how many files are selected\n const $status = document.createElement('span')\n $status.className = 'govuk-body govuk-file-upload-button__status'\n $status.setAttribute('aria-live', 'polite')\n $status.innerText = this.i18n.t('noFileChosen')\n\n $button.appendChild($status)\n\n const commaSpan = document.createElement('span')\n commaSpan.className = 'govuk-visually-hidden'\n commaSpan.innerText = ', '\n commaSpan.id = `${this.id}-comma`\n\n $button.appendChild(commaSpan)\n\n const containerSpan = document.createElement('span')\n containerSpan.className =\n 'govuk-file-upload-button__pseudo-button-container'\n\n const buttonSpan = document.createElement('span')\n buttonSpan.className =\n 'govuk-button govuk-button--secondary govuk-file-upload-button__pseudo-button'\n buttonSpan.innerText = this.i18n.t('chooseFilesButton')\n\n containerSpan.appendChild(buttonSpan)\n\n // Add a space so the button and instruction read correctly\n // when CSS is disabled\n containerSpan.insertAdjacentText('beforeend', ' ')\n\n const instructionSpan = document.createElement('span')\n instructionSpan.className =\n 'govuk-body govuk-file-upload-button__instruction'\n instructionSpan.innerText = this.i18n.t('dropInstruction')\n\n containerSpan.appendChild(instructionSpan)\n\n $button.appendChild(containerSpan)\n $button.setAttribute(\n 'aria-labelledby',\n `${$label.id} ${commaSpan.id} ${$button.id}`\n )\n $button.addEventListener('click', this.onClick.bind(this))\n $button.addEventListener('dragover', (event) => {\n // prevent default to allow drop\n event.preventDefault()\n })\n\n // Assemble these all together\n this.$root.insertAdjacentElement('afterbegin', $button)\n\n this.$input.setAttribute('tabindex', '-1')\n this.$input.setAttribute('aria-hidden', 'true')\n\n // Make all these new variables available to the module\n this.$button = $button\n this.$status = $status\n\n // Bind change event to the underlying input\n this.$input.addEventListener('change', this.onChange.bind(this))\n\n // Synchronise the `disabled` state between the button and underlying input\n this.updateDisabledState()\n this.observeDisabledState()\n\n // Handle drop zone visibility\n // A live region to announce when users enter or leave the drop zone\n this.$announcements = document.createElement('span')\n this.$announcements.classList.add('govuk-file-upload-announcements')\n this.$announcements.classList.add('govuk-visually-hidden')\n this.$announcements.setAttribute('aria-live', 'assertive')\n this.$root.insertAdjacentElement('afterend', this.$announcements)\n\n // if there is no CSS and input is hidden\n // button will need to handle drop event\n this.$button.addEventListener('drop', this.onDrop.bind(this))\n\n // While user is dragging, it gets a little more complex because of Safari.\n // Safari doesn't fill `relatedTarget` on `dragleave` (nor `dragenter`).\n // This means we can't use `relatedTarget` to:\n // - check if the user is still within the wrapper\n // (`relatedTarget` being a descendant of the wrapper)\n // - check if the user is still over the viewport\n // (`relatedTarget` being null if outside)\n\n // Thanks to `dragenter` bubbling, we can listen on the `document` with a\n // single function and update the visibility based on whether we entered a\n // node inside or outside the wrapper.\n document.addEventListener(\n 'dragenter',\n this.updateDropzoneVisibility.bind(this)\n )\n\n // To detect if we're outside the document, we can track if there was a\n // `dragenter` event preceding a `dragleave`. If there wasn't, this means\n // we're outside the document.\n //\n // The order of events is guaranteed by the HTML specs:\n // https://html.spec.whatwg.org/multipage/dnd.html#drag-and-drop-processing-model\n document.addEventListener('dragenter', () => {\n this.enteredAnotherElement = true\n })\n\n document.addEventListener('dragleave', () => {\n if (!this.enteredAnotherElement && !this.$button.disabled) {\n this.hideDraggingState()\n this.$announcements.innerText = this.i18n.t('leftDropZone')\n }\n\n this.enteredAnotherElement = false\n })\n }\n\n /**\n * Updates the visibility of the dropzone as users enters the various elements on the page\n *\n * @param {DragEvent} event - The `dragenter` event\n */\n updateDropzoneVisibility(event) {\n if (this.$button.disabled) return\n\n // DOM interfaces only type `event.target` as `EventTarget`\n // so we first need to make sure it's a `Node`\n if (event.target instanceof Node) {\n if (this.$root.contains(event.target)) {\n if (event.dataTransfer && isContainingFiles(event.dataTransfer)) {\n // Only update the class and make the announcement if not already visible\n // to avoid repeated announcements on NVDA (2024.4) + Firefox (133)\n if (\n !this.$button.classList.contains(\n 'govuk-file-upload-button--dragging'\n )\n ) {\n this.showDraggingState()\n this.$announcements.innerText = this.i18n.t('enteredDropZone')\n }\n }\n } else {\n // Only hide the dropzone if it is visible to prevent announcing user\n // left the drop zone when they enter the page but haven't reached yet\n // the file upload component\n if (\n this.$button.classList.contains('govuk-file-upload-button--dragging')\n ) {\n this.hideDraggingState()\n this.$announcements.innerText = this.i18n.t('leftDropZone')\n }\n }\n }\n }\n\n /**\n * Show the drop zone visually\n */\n showDraggingState() {\n this.$button.classList.add('govuk-file-upload-button--dragging')\n }\n\n /**\n * Hides the drop zone visually\n */\n hideDraggingState() {\n this.$button.classList.remove('govuk-file-upload-button--dragging')\n }\n\n /**\n * Handles user dropping on the component\n *\n * @param {DragEvent} event - The `dragenter` event\n */\n onDrop(event) {\n event.preventDefault()\n\n if (event.dataTransfer && isContainingFiles(event.dataTransfer)) {\n this.$input.files = event.dataTransfer.files\n\n // Dispatch a `change` event so external code that would rely on the `<input>`\n // dispatching an event when files are dropped still work.\n // Use a `CustomEvent` so our events are distinguishable from browser's native events\n this.$input.dispatchEvent(new CustomEvent('change'))\n\n this.hideDraggingState()\n }\n }\n\n /**\n * Check if the value of the underlying input has changed\n */\n onChange() {\n const fileCount = this.$input.files.length\n\n if (fileCount === 0) {\n // If there are no files, show the default selection text\n this.$status.innerText = this.i18n.t('noFileChosen')\n this.$button.classList.add('govuk-file-upload-button--empty')\n } else {\n if (\n // If there is 1 file, just show the file name\n fileCount === 1\n ) {\n this.$status.innerText = this.$input.files[0].name\n } else {\n // Otherwise, tell the user how many files are selected\n this.$status.innerText = this.i18n.t('multipleFilesChosen', {\n count: fileCount\n })\n }\n\n this.$button.classList.remove('govuk-file-upload-button--empty')\n }\n }\n\n /**\n * Looks up the `<label>` element associated to the field\n *\n * @private\n * @returns {HTMLElement} The `<label>` element associated to the field\n * @throws {ElementError} If the `<label>` cannot be found\n */\n findLabel() {\n // Use `label` in the selector so TypeScript knows the type fo `HTMLElement`\n const $label = document.querySelector(`label[for=\"${this.$input.id}\"]`)\n\n if (!$label) {\n throw new ElementError({\n component: FileUpload,\n identifier: `Field label (\\`<label for=${this.$input.id}>\\`)`\n })\n }\n\n return $label\n }\n\n /**\n * When the button is clicked, emulate clicking the actual, hidden file input\n */\n onClick() {\n this.$input.click()\n }\n\n /**\n * Create a mutation observer to check if the input's attributes altered.\n */\n observeDisabledState() {\n const observer = new MutationObserver((mutationList) => {\n for (const mutation of mutationList) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'disabled'\n ) {\n this.updateDisabledState()\n }\n }\n })\n\n observer.observe(this.$input, {\n attributes: true\n })\n }\n\n /**\n * Synchronise the `disabled` state between the input and replacement button.\n */\n updateDisabledState() {\n this.$button.disabled = this.$input.disabled\n\n this.$root.classList.toggle(\n 'govuk-drop-zone--disabled',\n this.$button.disabled\n )\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-file-upload'\n\n /**\n * File upload default config\n *\n * @see {@link FileUploadConfig}\n * @constant\n * @type {FileUploadConfig}\n */\n static defaults = Object.freeze({\n i18n: {\n chooseFilesButton: 'Choose file',\n dropInstruction: 'or drop file',\n noFileChosen: 'No file chosen',\n multipleFilesChosen: {\n // the 'one' string isn't used as the component displays the filename\n // instead, however it's here for coverage's sake\n one: '%{count} file chosen',\n other: '%{count} files chosen'\n },\n enteredDropZone: 'Entered drop zone',\n leftDropZone: 'Left drop zone'\n }\n })\n\n /**\n * File upload config schema\n *\n * @constant\n * @satisfies {Schema<FileUploadConfig>}\n */\n static schema = Object.freeze({\n properties: {\n i18n: { type: 'object' }\n }\n })\n}\n\n/**\n * Checks if the given `DataTransfer` contains files\n *\n * @internal\n * @param {DataTransfer} dataTransfer - The `DataTransfer` to check\n * @returns {boolean} - `true` if it contains files or we can't infer it, `false` otherwise\n */\nfunction isContainingFiles(dataTransfer) {\n // Safari sometimes does not provide info about types :'(\n // In which case best not to assume anything and try to set the files\n const hasNoTypesInfo = dataTransfer.types.length === 0\n\n // When dragging images, there's a mix of mime types + Files\n // which we can't assign to the native input\n const isDraggingFiles = dataTransfer.types.some((type) => type === 'Files')\n\n return hasNoTypesInfo || isDraggingFiles\n}\n\n/**\n * @typedef {HTMLInputElement & {files: FileList}} HTMLFileInputElement\n */\n\n/**\n * File upload config\n *\n * @see {@link FileUpload.defaults}\n * @typedef {object} FileUploadConfig\n * @property {FileUploadTranslations} [i18n=FileUpload.defaults.i18n] - File upload translations\n */\n\n/**\n * File upload translations\n *\n * @see {@link FileUpload.defaults.i18n}\n * @typedef {object} FileUploadTranslations\n *\n * Messages used by the component\n * @property {string} [chooseFile] - The text of the button that opens the file picker\n * @property {string} [dropInstruction] - The text informing users they can drop files\n * @property {TranslationPluralForms} [multipleFilesChosen] - The text displayed when multiple files\n * have been chosen by the user\n * @property {string} [noFileChosen] - The text to displayed when no file has been chosen by the user\n * @property {string} [enteredDropZone] - The text announced by assistive technology\n * when user drags files and enters the drop zone\n * @property {string} [leftDropZone] - The text announced by assistive technology\n * when user drags files and leaves the drop zone without dropping\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n * @import { TranslationPluralForms } from '../../i18n.mjs'\n */\n", "import { getBreakpoint } from '../../common/index.mjs'\nimport { Component } from '../../component.mjs'\nimport { ElementError } from '../../errors/index.mjs'\n\n/**\n * Header component\n *\n * @preserve\n */\nexport class Header extends Component {\n /** @private */\n $menuButton\n\n /** @private */\n $menu\n\n /**\n * Save the opened/closed state for the nav in memory so that we can\n * accurately maintain state when the screen is changed from small to big and\n * back to small\n *\n * @private\n */\n menuIsOpen = false\n\n /**\n * A global const for storing a matchMedia instance which we'll use to detect\n * when a screen size change happens. We rely on it being null if the feature\n * isn't available to initially apply hidden attributes\n *\n * @private\n * @type {MediaQueryList | null}\n */\n mql = null\n\n /**\n * Apply a matchMedia for desktop which will trigger a state sync if the\n * browser viewport moves between states.\n *\n * @param {Element | null} $root - HTML element to use for header\n */\n constructor($root) {\n super($root)\n\n const $menuButton = this.$root.querySelector('.govuk-js-header-toggle')\n\n // Headers don't necessarily have a navigation. When they don't, the menu\n // toggle won't be rendered by our macro (or may be omitted when writing\n // plain HTML)\n if (!$menuButton) {\n return this\n }\n\n const menuId = $menuButton.getAttribute('aria-controls')\n if (!menuId) {\n throw new ElementError({\n component: Header,\n identifier:\n 'Navigation button (`<button class=\"govuk-js-header-toggle\">`) attribute (`aria-controls`)'\n })\n }\n\n const $menu = document.getElementById(menuId)\n if (!$menu) {\n throw new ElementError({\n component: Header,\n element: $menu,\n identifier: `Navigation (\\`<ul id=\"${menuId}\">\\`)`\n })\n }\n\n this.$menu = $menu\n this.$menuButton = $menuButton\n\n this.setupResponsiveChecks()\n\n this.$menuButton.addEventListener('click', () =>\n this.handleMenuButtonClick()\n )\n }\n\n /**\n * Setup viewport resize check\n *\n * @private\n */\n setupResponsiveChecks() {\n const breakpoint = getBreakpoint('desktop')\n\n if (!breakpoint.value) {\n throw new ElementError({\n component: Header,\n identifier: `CSS custom property (\\`${breakpoint.property}\\`) on pseudo-class \\`:root\\``\n })\n }\n\n // Media query list for GOV.UK Frontend desktop breakpoint\n this.mql = window.matchMedia(`(min-width: ${breakpoint.value})`)\n\n // MediaQueryList.addEventListener isn't supported by Safari < 14 so we need\n // to be able to fall back to the deprecated MediaQueryList.addListener\n if ('addEventListener' in this.mql) {\n this.mql.addEventListener('change', () => this.checkMode())\n } else {\n // @ts-expect-error Property 'addListener' does not exist\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.mql.addListener(() => this.checkMode())\n }\n\n this.checkMode()\n }\n\n /**\n * Sync menu state\n *\n * Uses the global variable menuIsOpen to correctly set the accessible and\n * visual states of the menu and the menu button.\n * Additionally will force the menu to be visible and the menu button to be\n * hidden if the matchMedia is triggered to desktop.\n *\n * @private\n */\n checkMode() {\n if (!this.mql || !this.$menu || !this.$menuButton) {\n return\n }\n\n if (this.mql.matches) {\n this.$menu.removeAttribute('hidden')\n this.$menuButton.setAttribute('hidden', '')\n } else {\n this.$menuButton.removeAttribute('hidden')\n this.$menuButton.setAttribute('aria-expanded', this.menuIsOpen.toString())\n\n if (this.menuIsOpen) {\n this.$menu.removeAttribute('hidden')\n } else {\n this.$menu.setAttribute('hidden', '')\n }\n }\n }\n\n /**\n * Handle menu button click\n *\n * When the menu button is clicked, change the visibility of the menu and then\n * sync the accessibility state and menu button state\n *\n * @private\n */\n handleMenuButtonClick() {\n this.menuIsOpen = !this.menuIsOpen\n this.checkMode()\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-header'\n}\n", "import { ConfigurableComponent } from '../../common/configuration.mjs'\nimport { setFocus } from '../../common/index.mjs'\n\n/**\n * Notification Banner component\n *\n * @preserve\n * @augments ConfigurableComponent<NotificationBannerConfig>\n */\nexport class NotificationBanner extends ConfigurableComponent {\n /**\n * @param {Element | null} $root - HTML element to use for notification banner\n * @param {NotificationBannerConfig} [config] - Notification banner config\n */\n constructor($root, config = {}) {\n super($root, config)\n\n /**\n * Focus the notification banner\n *\n * If `role=\"alert\"` is set, focus the element to help some assistive\n * technologies prioritise announcing it.\n *\n * You can turn off the auto-focus functionality by setting\n * `data-disable-auto-focus=\"true\"` in the component HTML. You might wish to\n * do this based on user research findings, or to avoid a clash with another\n * element which should be focused when the page loads.\n */\n if (\n this.$root.getAttribute('role') === 'alert' &&\n !this.config.disableAutoFocus\n ) {\n setFocus(this.$root)\n }\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-notification-banner'\n\n /**\n * Notification banner default config\n *\n * @see {@link NotificationBannerConfig}\n * @constant\n * @type {NotificationBannerConfig}\n */\n static defaults = Object.freeze({\n disableAutoFocus: false\n })\n\n /**\n * Notification banner config schema\n *\n * @constant\n * @satisfies {Schema<NotificationBannerConfig>}\n */\n static schema = Object.freeze({\n properties: {\n disableAutoFocus: { type: 'boolean' }\n }\n })\n}\n\n/**\n * Notification banner config\n *\n * @typedef {object} NotificationBannerConfig\n * @property {boolean} [disableAutoFocus=false] - If set to `true` the\n * notification banner will not be focussed when the page loads. This only\n * applies if the component has a `role` of `alert` – in other cases the\n * component will not be focused on page load, regardless of this option.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n */\n", "import { closestAttributeValue } from '../../common/closest-attribute-value.mjs'\nimport { ConfigurableComponent } from '../../common/configuration.mjs'\nimport { ElementError } from '../../errors/index.mjs'\nimport { I18n } from '../../i18n.mjs'\n\n/**\n * Password input component\n *\n * @preserve\n * @augments ConfigurableComponent<PasswordInputConfig>\n */\nexport class PasswordInput extends ConfigurableComponent {\n /** @private */\n i18n\n\n /**\n * @private\n * @type {HTMLInputElement}\n */\n $input\n\n /**\n * @private\n * @type {HTMLButtonElement}\n */\n $showHideButton\n\n /** @private */\n $screenReaderStatusMessage\n\n /**\n * @param {Element | null} $root - HTML element to use for password input\n * @param {PasswordInputConfig} [config] - Password input config\n */\n constructor($root, config = {}) {\n super($root, config)\n\n const $input = this.$root.querySelector('.govuk-js-password-input-input')\n if (!($input instanceof HTMLInputElement)) {\n throw new ElementError({\n component: PasswordInput,\n element: $input,\n expectedType: 'HTMLInputElement',\n identifier: 'Form field (`.govuk-js-password-input-input`)'\n })\n }\n\n if ($input.type !== 'password') {\n throw new ElementError(\n 'Password input: Form field (`.govuk-js-password-input-input`) must be of type `password`.'\n )\n }\n\n const $showHideButton = this.$root.querySelector(\n '.govuk-js-password-input-toggle'\n )\n if (!($showHideButton instanceof HTMLButtonElement)) {\n throw new ElementError({\n component: PasswordInput,\n element: $showHideButton,\n expectedType: 'HTMLButtonElement',\n identifier: 'Button (`.govuk-js-password-input-toggle`)'\n })\n }\n\n if ($showHideButton.type !== 'button') {\n throw new ElementError(\n 'Password input: Button (`.govuk-js-password-input-toggle`) must be of type `button`.'\n )\n }\n\n this.$input = $input\n this.$showHideButton = $showHideButton\n\n this.i18n = new I18n(this.config.i18n, {\n // Read the fallback if necessary rather than have it set in the defaults\n locale: closestAttributeValue(this.$root, 'lang')\n })\n\n // Show the toggle button element\n this.$showHideButton.removeAttribute('hidden')\n\n // Create and append the status text for screen readers.\n // This is injected between the input and button so that users get a sensible reading order if\n // moving through the page content linearly:\n // [password input] -> [your password is visible/hidden] -> [show/hide password]\n const $screenReaderStatusMessage = document.createElement('div')\n $screenReaderStatusMessage.className =\n 'govuk-password-input__sr-status govuk-visually-hidden'\n $screenReaderStatusMessage.setAttribute('aria-live', 'polite')\n this.$screenReaderStatusMessage = $screenReaderStatusMessage\n this.$input.insertAdjacentElement('afterend', $screenReaderStatusMessage)\n\n // Bind toggle button\n this.$showHideButton.addEventListener('click', this.toggle.bind(this))\n\n // Bind event to revert the password visibility to hidden\n if (this.$input.form) {\n this.$input.form.addEventListener('submit', () => this.hide())\n }\n\n // If the page is restored from bfcache and the password is visible, hide it again\n window.addEventListener('pageshow', (event) => {\n if (event.persisted && this.$input.type !== 'password') {\n this.hide()\n }\n })\n\n // Default the component to having the password hidden.\n this.hide()\n }\n\n /**\n * Toggle the visibility of the password input\n *\n * @private\n * @param {MouseEvent} event - Click event\n */\n toggle(event) {\n event.preventDefault()\n\n // If on this click, the field is type=\"password\", show the value\n if (this.$input.type === 'password') {\n this.show()\n return\n }\n\n // Otherwise, hide it\n // Being defensive - hiding should always be the default\n this.hide()\n }\n\n /**\n * Show the password input value in plain text.\n *\n * @private\n */\n show() {\n this.setType('text')\n }\n\n /**\n * Hide the password input value.\n *\n * @private\n */\n hide() {\n this.setType('password')\n }\n\n /**\n * Set the password input type\n *\n * @param {'text' | 'password'} type - Input type\n * @private\n */\n setType(type) {\n if (type === this.$input.type) {\n return\n }\n\n // Update input type\n this.$input.setAttribute('type', type)\n\n const isHidden = type === 'password'\n const prefixButton = isHidden ? 'show' : 'hide'\n const prefixStatus = isHidden ? 'passwordHidden' : 'passwordShown'\n\n // Update button text\n this.$showHideButton.innerText = this.i18n.t(`${prefixButton}Password`)\n\n // Update button aria-label\n this.$showHideButton.setAttribute(\n 'aria-label',\n this.i18n.t(`${prefixButton}PasswordAriaLabel`)\n )\n\n // Update status change text\n this.$screenReaderStatusMessage.innerText = this.i18n.t(\n `${prefixStatus}Announcement`\n )\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-password-input'\n\n /**\n * Password input default config\n *\n * @see {@link PasswordInputConfig}\n * @constant\n * @default\n * @type {PasswordInputConfig}\n */\n static defaults = Object.freeze({\n i18n: {\n showPassword: 'Show',\n hidePassword: 'Hide',\n showPasswordAriaLabel: 'Show password',\n hidePasswordAriaLabel: 'Hide password',\n passwordShownAnnouncement: 'Your password is visible',\n passwordHiddenAnnouncement: 'Your password is hidden'\n }\n })\n\n /**\n * Password input config schema\n *\n * @constant\n * @satisfies {Schema<PasswordInputConfig>}\n */\n static schema = Object.freeze({\n properties: {\n i18n: { type: 'object' }\n }\n })\n}\n\n/**\n * Password input config\n *\n * @typedef {object} PasswordInputConfig\n * @property {PasswordInputTranslations} [i18n=PasswordInput.defaults.i18n] - Password input translations\n */\n\n/**\n * Password input translations\n *\n * @see {@link PasswordInput.defaults.i18n}\n * @typedef {object} PasswordInputTranslations\n *\n * Messages displayed to the user indicating the state of the show/hide toggle.\n * @property {string} [showPassword] - Visible text of the button when the\n * password is currently hidden. Plain text only.\n * @property {string} [hidePassword] - Visible text of the button when the\n * password is currently visible. Plain text only.\n * @property {string} [showPasswordAriaLabel] - aria-label of the button when\n * the password is currently hidden. Plain text only.\n * @property {string} [hidePasswordAriaLabel] - aria-label of the button when\n * the password is currently visible. Plain text only.\n * @property {string} [passwordShownAnnouncement] - Screen reader\n * announcement to make when the password has just become visible.\n * Plain text only.\n * @property {string} [passwordHiddenAnnouncement] - Screen reader\n * announcement to make when the password has just been hidden.\n * Plain text only.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n */\n", "import { Component } from '../../component.mjs'\nimport { ElementError } from '../../errors/index.mjs'\n\n/**\n * Radios component\n *\n * @preserve\n */\nexport class Radios extends Component {\n /** @private */\n $inputs\n\n /**\n * Radios can be associated with a 'conditionally revealed' content block –\n * for example, a radio for 'Phone' could reveal an additional form field for\n * the user to enter their phone number.\n *\n * These associations are made using a `data-aria-controls` attribute, which\n * is promoted to an aria-controls attribute during initialisation.\n *\n * We also need to restore the state of any conditional reveals on the page\n * (for example if the user has navigated back), and set up event handlers to\n * keep the reveal in sync with the radio state.\n *\n * @param {Element | null} $root - HTML element to use for radios\n */\n constructor($root) {\n super($root)\n\n const $inputs = this.$root.querySelectorAll('input[type=\"radio\"]')\n if (!$inputs.length) {\n throw new ElementError({\n component: Radios,\n identifier: 'Form inputs (`<input type=\"radio\">`)'\n })\n }\n\n this.$inputs = $inputs\n\n this.$inputs.forEach(($input) => {\n const targetId = $input.getAttribute('data-aria-controls')\n\n // Skip radios without data-aria-controls attributes\n if (!targetId) {\n return\n }\n\n // Throw if target conditional element does not exist.\n if (!document.getElementById(targetId)) {\n throw new ElementError({\n component: Radios,\n identifier: `Conditional reveal (\\`id=\"${targetId}\"\\`)`\n })\n }\n\n // Promote the data-aria-controls attribute to a aria-controls attribute\n // so that the relationship is exposed in the AOM\n $input.setAttribute('aria-controls', targetId)\n $input.removeAttribute('data-aria-controls')\n })\n\n // When the page is restored after navigating 'back' in some browsers the\n // state of form controls is not restored until *after* the DOMContentLoaded\n // event is fired, so we need to sync after the pageshow event.\n window.addEventListener('pageshow', () => this.syncAllConditionalReveals())\n\n // Although we've set up handlers to sync state on the pageshow event, init\n // could be called after those events have fired, for example if they are\n // added to the page dynamically, so sync now too.\n this.syncAllConditionalReveals()\n\n // Handle events\n this.$root.addEventListener('click', (event) => this.handleClick(event))\n }\n\n /**\n * Sync the conditional reveal states for all radio buttons in this component.\n *\n * @private\n */\n syncAllConditionalReveals() {\n this.$inputs.forEach(($input) =>\n this.syncConditionalRevealWithInputState($input)\n )\n }\n\n /**\n * Sync conditional reveal with the input state\n *\n * Synchronise the visibility of the conditional reveal, and its accessible\n * state, with the input's checked state.\n *\n * @private\n * @param {HTMLInputElement} $input - Radio input\n */\n syncConditionalRevealWithInputState($input) {\n const targetId = $input.getAttribute('aria-controls')\n if (!targetId) {\n return\n }\n\n const $target = document.getElementById(targetId)\n if ($target?.classList.contains('govuk-radios__conditional')) {\n const inputIsChecked = $input.checked\n\n $input.setAttribute('aria-expanded', inputIsChecked.toString())\n $target.classList.toggle(\n 'govuk-radios__conditional--hidden',\n !inputIsChecked\n )\n }\n }\n\n /**\n * Click event handler\n *\n * Handle a click within the component root – if the click occurred on a radio, sync\n * the state of the conditional reveal for all radio buttons in the same form\n * with the same name (because checking one radio could have un-checked a\n * radio under the root of another Radio component)\n *\n * @private\n * @param {MouseEvent} event - Click event\n */\n handleClick(event) {\n const $clickedInput = event.target\n\n // Ignore clicks on things that aren't radio buttons\n if (\n !($clickedInput instanceof HTMLInputElement) ||\n $clickedInput.type !== 'radio'\n ) {\n return\n }\n\n // We only need to consider radios with conditional reveals, which will have\n // aria-controls attributes.\n const $allInputs = document.querySelectorAll(\n 'input[type=\"radio\"][aria-controls]'\n )\n\n const $clickedInputForm = $clickedInput.form\n const $clickedInputName = $clickedInput.name\n\n $allInputs.forEach(($input) => {\n const hasSameFormOwner = $input.form === $clickedInputForm\n const hasSameName = $input.name === $clickedInputName\n\n if (hasSameName && hasSameFormOwner) {\n this.syncConditionalRevealWithInputState($input)\n }\n })\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-radios'\n}\n", "import { getBreakpoint } from '../../common/index.mjs'\nimport { Component } from '../../component.mjs'\nimport { ElementError } from '../../errors/index.mjs'\n\n/**\n * Service Navigation component\n *\n * @preserve\n */\nexport class ServiceNavigation extends Component {\n /** @private */\n $menuButton\n\n /** @private */\n $menu\n\n /**\n * Remember the open/closed state of the nav so we can maintain it when the\n * screen is resized.\n *\n * @private\n */\n menuIsOpen = false\n\n /**\n * A global const for storing a matchMedia instance which we'll use to detect\n * when a screen size change happens. We rely on it being null if the feature\n * isn't available to initially apply hidden attributes\n *\n * @private\n * @type {MediaQueryList | null}\n */\n mql = null\n\n /**\n * @param {Element | null} $root - HTML element to use for header\n */\n constructor($root) {\n super($root)\n\n const $menuButton = this.$root.querySelector(\n '.govuk-js-service-navigation-toggle'\n )\n\n // Headers don't necessarily have a navigation. When they don't, the menu\n // toggle won't be rendered by our macro (or may be omitted when writing\n // plain HTML)\n if (!$menuButton) {\n return this\n }\n\n const menuId = $menuButton.getAttribute('aria-controls')\n if (!menuId) {\n throw new ElementError({\n component: ServiceNavigation,\n identifier:\n 'Navigation button (`<button class=\"govuk-js-service-navigation-toggle\">`) attribute (`aria-controls`)'\n })\n }\n\n const $menu = document.getElementById(menuId)\n if (!$menu) {\n throw new ElementError({\n component: ServiceNavigation,\n element: $menu,\n identifier: `Navigation (\\`<ul id=\"${menuId}\">\\`)`\n })\n }\n\n this.$menu = $menu\n this.$menuButton = $menuButton\n\n this.setupResponsiveChecks()\n\n this.$menuButton.addEventListener('click', () =>\n this.handleMenuButtonClick()\n )\n }\n\n /**\n * Setup viewport resize check\n *\n * @private\n */\n setupResponsiveChecks() {\n const breakpoint = getBreakpoint('tablet')\n\n if (!breakpoint.value) {\n throw new ElementError({\n component: ServiceNavigation,\n identifier: `CSS custom property (\\`${breakpoint.property}\\`) on pseudo-class \\`:root\\``\n })\n }\n\n // Media query list for GOV.UK Frontend desktop breakpoint\n this.mql = window.matchMedia(`(min-width: ${breakpoint.value})`)\n\n // MediaQueryList.addEventListener isn't supported by Safari < 14 so we need\n // to be able to fall back to the deprecated MediaQueryList.addListener\n if ('addEventListener' in this.mql) {\n this.mql.addEventListener('change', () => this.checkMode())\n } else {\n // @ts-expect-error Property 'addListener' does not exist\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.mql.addListener(() => this.checkMode())\n }\n\n this.checkMode()\n }\n\n /**\n * Sync menu state\n *\n * Uses the global variable menuIsOpen to correctly set the accessible and\n * visual states of the menu and the menu button.\n * Additionally will force the menu to be visible and the menu button to be\n * hidden if the matchMedia is triggered to desktop.\n *\n * @private\n */\n checkMode() {\n if (!this.mql || !this.$menu || !this.$menuButton) {\n return\n }\n\n if (this.mql.matches) {\n this.$menu.removeAttribute('hidden')\n this.$menuButton.setAttribute('hidden', '')\n } else {\n this.$menuButton.removeAttribute('hidden')\n this.$menuButton.setAttribute('aria-expanded', this.menuIsOpen.toString())\n\n if (this.menuIsOpen) {\n this.$menu.removeAttribute('hidden')\n } else {\n this.$menu.setAttribute('hidden', '')\n }\n }\n }\n\n /**\n * Handle menu button click\n *\n * When the menu button is clicked, change the visibility of the menu and then\n * sync the accessibility state and menu button state\n *\n * @private\n */\n handleMenuButtonClick() {\n this.menuIsOpen = !this.menuIsOpen\n this.checkMode()\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-service-navigation'\n}\n", "import { getFragmentFromUrl, setFocus } from '../../common/index.mjs'\nimport { Component } from '../../component.mjs'\nimport { ElementError } from '../../errors/index.mjs'\n\n/**\n * Skip link component\n *\n * @preserve\n * @augments Component<HTMLAnchorElement>\n */\nexport class SkipLink extends Component {\n static elementType = HTMLAnchorElement\n\n /**\n * @param {Element | null} $root - HTML element to use for skip link\n * @throws {ElementError} when $root is not set or the wrong type\n * @throws {ElementError} when $root.hash does not contain a hash\n * @throws {ElementError} when the linked element is missing or the wrong type\n */\n constructor($root) {\n super($root)\n\n const hash = this.$root.hash\n const href = this.$root.getAttribute('href') ?? ''\n\n /** @type {URL | undefined} */\n let url\n\n /**\n * Check for valid link URL\n *\n * {@link https://caniuse.com/url}\n * {@link https://url.spec.whatwg.org}\n *\n */\n try {\n url = new window.URL(this.$root.href)\n } catch (error) {\n throw new ElementError(\n `Skip link: Target link (\\`href=\"${href}\"\\`) is invalid`\n )\n }\n\n // Return early for external URLs or links to other pages\n if (\n url.origin !== window.location.origin ||\n url.pathname !== window.location.pathname\n ) {\n return\n }\n\n const linkedElementId = getFragmentFromUrl(hash)\n\n // Check link path matching current page\n if (!linkedElementId) {\n throw new ElementError(\n `Skip link: Target link (\\`href=\"${href}\"\\`) has no hash fragment`\n )\n }\n\n const $linkedElement = document.getElementById(linkedElementId)\n\n // Check for link target element\n if (!$linkedElement) {\n throw new ElementError({\n component: SkipLink,\n element: $linkedElement,\n identifier: `Target content (\\`id=\"${linkedElementId}\"\\`)`\n })\n }\n\n /**\n * Focus the linked element on click\n *\n * Adds a helper CSS class to hide native focus styles,\n * but removes it on blur to restore native focus styles\n */\n this.$root.addEventListener('click', () =>\n setFocus($linkedElement, {\n onBeforeFocus() {\n $linkedElement.classList.add('govuk-skip-link-focused-element')\n },\n onBlur() {\n $linkedElement.classList.remove('govuk-skip-link-focused-element')\n }\n })\n )\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-skip-link'\n}\n", "import { getBreakpoint, getFragmentFromUrl } from '../../common/index.mjs'\nimport { Component } from '../../component.mjs'\nimport { ElementError } from '../../errors/index.mjs'\n\n/**\n * Tabs component\n *\n * @preserve\n */\nexport class Tabs extends Component {\n /** @private */\n $tabs\n\n /** @private */\n $tabList\n\n /** @private */\n $tabListItems\n\n /** @private */\n jsHiddenClass = 'govuk-tabs__panel--hidden'\n\n /** @private */\n changingHash = false\n\n /** @private */\n boundTabClick\n\n /** @private */\n boundTabKeydown\n\n /** @private */\n boundOnHashChange\n\n /**\n * @private\n * @type {MediaQueryList | null}\n */\n mql = null\n\n /**\n * @param {Element | null} $root - HTML element to use for tabs\n */\n constructor($root) {\n super($root)\n\n const $tabs = this.$root.querySelectorAll('a.govuk-tabs__tab')\n if (!$tabs.length) {\n throw new ElementError({\n component: Tabs,\n identifier: 'Links (`<a class=\"govuk-tabs__tab\">`)'\n })\n }\n\n this.$tabs = $tabs\n\n // Save bound functions so we can remove event listeners during teardown\n this.boundTabClick = this.onTabClick.bind(this)\n this.boundTabKeydown = this.onTabKeydown.bind(this)\n this.boundOnHashChange = this.onHashChange.bind(this)\n\n const $tabList = this.$root.querySelector('.govuk-tabs__list')\n const $tabListItems = this.$root.querySelectorAll(\n 'li.govuk-tabs__list-item'\n )\n\n if (!$tabList) {\n throw new ElementError({\n component: Tabs,\n identifier: 'List (`<ul class=\"govuk-tabs__list\">`)'\n })\n }\n\n if (!$tabListItems.length) {\n throw new ElementError({\n component: Tabs,\n identifier: 'List items (`<li class=\"govuk-tabs__list-item\">`)'\n })\n }\n\n this.$tabList = $tabList\n this.$tabListItems = $tabListItems\n\n this.setupResponsiveChecks()\n }\n\n /**\n * Setup viewport resize check\n *\n * @private\n */\n setupResponsiveChecks() {\n const breakpoint = getBreakpoint('tablet')\n\n if (!breakpoint.value) {\n throw new ElementError({\n component: Tabs,\n identifier: `CSS custom property (\\`${breakpoint.property}\\`) on pseudo-class \\`:root\\``\n })\n }\n\n // Media query list for GOV.UK Frontend tablet breakpoint\n this.mql = window.matchMedia(`(min-width: ${breakpoint.value})`)\n\n // MediaQueryList.addEventListener isn't supported by Safari < 14 so we need\n // to be able to fall back to the deprecated MediaQueryList.addListener\n if ('addEventListener' in this.mql) {\n this.mql.addEventListener('change', () => this.checkMode())\n } else {\n // @ts-expect-error Property 'addListener' does not exist\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.mql.addListener(() => this.checkMode())\n }\n\n this.checkMode()\n }\n\n /**\n * Setup or teardown handler for viewport resize check\n *\n * @private\n */\n checkMode() {\n if (this.mql?.matches) {\n this.setup()\n } else {\n this.teardown()\n }\n }\n\n /**\n * Setup tab component\n *\n * @private\n */\n setup() {\n this.$tabList.setAttribute('role', 'tablist')\n\n this.$tabListItems.forEach(($item) => {\n $item.setAttribute('role', 'presentation')\n })\n\n this.$tabs.forEach(($tab) => {\n // Set HTML attributes\n this.setAttributes($tab)\n\n // Handle events\n $tab.addEventListener('click', this.boundTabClick, true)\n $tab.addEventListener('keydown', this.boundTabKeydown, true)\n\n // Remove old active panels\n this.hideTab($tab)\n })\n\n // Show either the active tab according to the URL's hash or the first tab\n const $activeTab = this.getTab(window.location.hash) ?? this.$tabs[0]\n\n this.showTab($activeTab)\n\n // Handle hashchange events\n window.addEventListener('hashchange', this.boundOnHashChange, true)\n }\n\n /**\n * Teardown tab component\n *\n * @private\n */\n teardown() {\n this.$tabList.removeAttribute('role')\n\n this.$tabListItems.forEach(($item) => {\n $item.removeAttribute('role')\n })\n\n this.$tabs.forEach(($tab) => {\n // Remove events\n $tab.removeEventListener('click', this.boundTabClick, true)\n $tab.removeEventListener('keydown', this.boundTabKeydown, true)\n\n // Unset HTML attributes\n this.unsetAttributes($tab)\n })\n\n // Remove hashchange event handler\n window.removeEventListener('hashchange', this.boundOnHashChange, true)\n }\n\n /**\n * Handle hashchange event\n *\n * @private\n * @returns {void | undefined} Returns void, or undefined when prevented\n */\n onHashChange() {\n const hash = window.location.hash\n const $tabWithHash = this.getTab(hash)\n if (!$tabWithHash) {\n return\n }\n\n // Prevent changing the hash\n if (this.changingHash) {\n this.changingHash = false\n return\n }\n\n // Show either the active tab according to the URL's hash or the first tab\n const $previousTab = this.getCurrentTab()\n if (!$previousTab) {\n return\n }\n\n this.hideTab($previousTab)\n this.showTab($tabWithHash)\n $tabWithHash.focus()\n }\n\n /**\n * Hide panel for tab link\n *\n * @private\n * @param {HTMLAnchorElement} $tab - Tab link\n */\n hideTab($tab) {\n this.unhighlightTab($tab)\n this.hidePanel($tab)\n }\n\n /**\n * Show panel for tab link\n *\n * @private\n * @param {HTMLAnchorElement} $tab - Tab link\n */\n showTab($tab) {\n this.highlightTab($tab)\n this.showPanel($tab)\n }\n\n /**\n * Get tab link by hash\n *\n * @private\n * @param {string} hash - Hash fragment including #\n * @returns {HTMLAnchorElement | null} Tab link\n */\n getTab(hash) {\n return this.$root.querySelector(`a.govuk-tabs__tab[href=\"${hash}\"]`)\n }\n\n /**\n * Set tab link and panel attributes\n *\n * @private\n * @param {HTMLAnchorElement} $tab - Tab link\n */\n setAttributes($tab) {\n const panelId = getFragmentFromUrl($tab.href)\n if (!panelId) {\n return\n }\n\n // Set tab attributes\n $tab.setAttribute('id', `tab_${panelId}`)\n $tab.setAttribute('role', 'tab')\n $tab.setAttribute('aria-controls', panelId)\n $tab.setAttribute('aria-selected', 'false')\n $tab.setAttribute('tabindex', '-1')\n\n // Set panel attributes\n const $panel = this.getPanel($tab)\n if (!$panel) {\n return\n }\n\n $panel.setAttribute('role', 'tabpanel')\n $panel.setAttribute('aria-labelledby', $tab.id)\n $panel.classList.add(this.jsHiddenClass)\n }\n\n /**\n * Unset tab link and panel attributes\n *\n * @private\n * @param {HTMLAnchorElement} $tab - Tab link\n */\n unsetAttributes($tab) {\n // unset tab attributes\n $tab.removeAttribute('id')\n $tab.removeAttribute('role')\n $tab.removeAttribute('aria-controls')\n $tab.removeAttribute('aria-selected')\n $tab.removeAttribute('tabindex')\n\n // unset panel attributes\n const $panel = this.getPanel($tab)\n if (!$panel) {\n return\n }\n\n $panel.removeAttribute('role')\n $panel.removeAttribute('aria-labelledby')\n $panel.classList.remove(this.jsHiddenClass)\n }\n\n /**\n * Handle tab link clicks\n *\n * @private\n * @param {MouseEvent} event - Mouse click event\n * @returns {void} Returns void\n */\n onTabClick(event) {\n const $currentTab = this.getCurrentTab()\n const $nextTab = event.currentTarget\n\n if (!$currentTab || !($nextTab instanceof HTMLAnchorElement)) {\n return\n }\n\n event.preventDefault()\n\n this.hideTab($currentTab)\n this.showTab($nextTab)\n this.createHistoryEntry($nextTab)\n }\n\n /**\n * Update browser URL hash fragment for tab\n *\n * - Allows back/forward to navigate tabs\n * - Avoids page jump when hash changes\n *\n * @private\n * @param {HTMLAnchorElement} $tab - Tab link\n */\n createHistoryEntry($tab) {\n const $panel = this.getPanel($tab)\n if (!$panel) {\n return\n }\n\n // Save and restore the id so the page doesn't jump when a user clicks a tab\n // (which changes the hash)\n const panelId = $panel.id\n $panel.id = ''\n this.changingHash = true\n window.location.hash = panelId\n $panel.id = panelId\n }\n\n /**\n * Handle tab keydown event\n *\n * - Press right arrow for next tab\n * - Press left arrow for previous tab\n *\n * @private\n * @param {KeyboardEvent} event - Keydown event\n */\n onTabKeydown(event) {\n switch (event.key) {\n // 'Left' and 'Right' required for Edge 16 support.\n case 'ArrowLeft':\n case 'Left':\n this.activatePreviousTab()\n event.preventDefault()\n break\n case 'ArrowRight':\n case 'Right':\n this.activateNextTab()\n event.preventDefault()\n break\n }\n }\n\n /**\n * Activate next tab\n *\n * @private\n */\n activateNextTab() {\n const $currentTab = this.getCurrentTab()\n if (!$currentTab?.parentElement) {\n return\n }\n\n const $nextTabListItem = $currentTab.parentElement.nextElementSibling\n if (!$nextTabListItem) {\n return\n }\n\n const $nextTab = $nextTabListItem.querySelector('a.govuk-tabs__tab')\n if (!$nextTab) {\n return\n }\n\n this.hideTab($currentTab)\n this.showTab($nextTab)\n $nextTab.focus()\n this.createHistoryEntry($nextTab)\n }\n\n /**\n * Activate previous tab\n *\n * @private\n */\n activatePreviousTab() {\n const $currentTab = this.getCurrentTab()\n if (!$currentTab?.parentElement) {\n return\n }\n\n const $previousTabListItem =\n $currentTab.parentElement.previousElementSibling\n if (!$previousTabListItem) {\n return\n }\n\n const $previousTab = $previousTabListItem.querySelector('a.govuk-tabs__tab')\n if (!$previousTab) {\n return\n }\n\n this.hideTab($currentTab)\n this.showTab($previousTab)\n $previousTab.focus()\n this.createHistoryEntry($previousTab)\n }\n\n /**\n * Get tab panel for tab link\n *\n * @private\n * @param {HTMLAnchorElement} $tab - Tab link\n * @returns {Element | null} Tab panel\n */\n getPanel($tab) {\n const panelId = getFragmentFromUrl($tab.href)\n if (!panelId) {\n return null\n }\n\n return this.$root.querySelector(`#${panelId}`)\n }\n\n /**\n * Show tab panel for tab link\n *\n * @private\n * @param {HTMLAnchorElement} $tab - Tab link\n */\n showPanel($tab) {\n const $panel = this.getPanel($tab)\n if (!$panel) {\n return\n }\n\n $panel.classList.remove(this.jsHiddenClass)\n }\n\n /**\n * Hide tab panel for tab link\n *\n * @private\n * @param {HTMLAnchorElement} $tab - Tab link\n */\n hidePanel($tab) {\n const $panel = this.getPanel($tab)\n if (!$panel) {\n return\n }\n\n $panel.classList.add(this.jsHiddenClass)\n }\n\n /**\n * Unset 'selected' state for tab link\n *\n * @private\n * @param {HTMLAnchorElement} $tab - Tab link\n */\n unhighlightTab($tab) {\n if (!$tab.parentElement) {\n return\n }\n\n $tab.setAttribute('aria-selected', 'false')\n $tab.parentElement.classList.remove('govuk-tabs__list-item--selected')\n $tab.setAttribute('tabindex', '-1')\n }\n\n /**\n * Set 'selected' state for tab link\n *\n * @private\n * @param {HTMLAnchorElement} $tab - Tab link\n */\n highlightTab($tab) {\n if (!$tab.parentElement) {\n return\n }\n\n $tab.setAttribute('aria-selected', 'true')\n $tab.parentElement.classList.add('govuk-tabs__list-item--selected')\n $tab.setAttribute('tabindex', '0')\n }\n\n /**\n * Get current tab link\n *\n * @private\n * @returns {HTMLAnchorElement | null} Tab link\n */\n getCurrentTab() {\n return this.$root.querySelector(\n '.govuk-tabs__list-item--selected a.govuk-tabs__tab'\n )\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-tabs'\n}\n", "import { isSupported } from './common/index.mjs'\nimport { Accordion } from './components/accordion/accordion.mjs'\nimport { Button } from './components/button/button.mjs'\nimport { CharacterCount } from './components/character-count/character-count.mjs'\nimport { Checkboxes } from './components/checkboxes/checkboxes.mjs'\nimport { ErrorSummary } from './components/error-summary/error-summary.mjs'\nimport { ExitThisPage } from './components/exit-this-page/exit-this-page.mjs'\nimport { FileUpload } from './components/file-upload/file-upload.mjs'\nimport { Header } from './components/header/header.mjs'\nimport { NotificationBanner } from './components/notification-banner/notification-banner.mjs'\nimport { PasswordInput } from './components/password-input/password-input.mjs'\nimport { Radios } from './components/radios/radios.mjs'\nimport { ServiceNavigation } from './components/service-navigation/service-navigation.mjs'\nimport { SkipLink } from './components/skip-link/skip-link.mjs'\nimport { Tabs } from './components/tabs/tabs.mjs'\nimport { SupportError } from './errors/index.mjs'\n\n/**\n * Initialise all components\n *\n * Use the `data-module` attributes to find, instantiate and init all of the\n * components provided as part of GOV.UK Frontend.\n *\n * @param {Config & { scope?: Element, onError?: OnErrorCallback<CompatibleClass> }} [config] - Config for all components (with optional scope)\n */\nfunction initAll(config) {\n config = typeof config !== 'undefined' ? config : {}\n\n // Skip initialisation when GOV.UK Frontend is not supported\n if (!isSupported()) {\n if (config.onError) {\n config.onError(new SupportError(), {\n config\n })\n } else {\n console.log(new SupportError())\n }\n return\n }\n\n const components = /** @type {const} */ ([\n [Accordion, config.accordion],\n [Button, config.button],\n [CharacterCount, config.characterCount],\n [Checkboxes],\n [ErrorSummary, config.errorSummary],\n [ExitThisPage, config.exitThisPage],\n [FileUpload, config.fileUpload],\n [Header],\n [NotificationBanner, config.notificationBanner],\n [PasswordInput, config.passwordInput],\n [Radios],\n [ServiceNavigation],\n [SkipLink],\n [Tabs]\n ])\n\n // Allow the user to initialise GOV.UK Frontend in only certain sections of the page\n // Defaults to the entire document if nothing is set.\n // const $scope = config.scope ?? document\n\n const options = {\n scope: config.scope ?? document,\n onError: config.onError\n }\n\n components.forEach(([Component, config]) => {\n createAll(Component, config, options)\n })\n}\n\n/**\n * Create all instances of a specific component on the page\n *\n * Uses the `data-module` attribute to find all elements matching the specified\n * component on the page, creating instances of the component object for each\n * of them.\n *\n * Any component errors will be caught and logged to the console.\n *\n * @template {CompatibleClass} ComponentClass\n * @param {ComponentClass} Component - class of the component to create\n * @param {ComponentConfig<ComponentClass>} [config] - Config supplied to component\n * @param {OnErrorCallback<ComponentClass> | Element | Document | CreateAllOptions<ComponentClass> } [createAllOptions] - options for createAll including scope of the document to search within and callback function if error throw by component on init\n * @returns {Array<InstanceType<ComponentClass>>} - array of instantiated components\n */\nfunction createAll(Component, config, createAllOptions) {\n let /** @type {Element | Document} */ $scope = document\n let /** @type {OnErrorCallback<Component> | undefined} */ onError\n\n if (typeof createAllOptions === 'object') {\n createAllOptions = /** @type {CreateAllOptions<Component>} */ (\n // eslint-disable-next-line no-self-assign\n createAllOptions\n )\n\n $scope = createAllOptions.scope ?? $scope\n onError = createAllOptions.onError\n }\n\n if (typeof createAllOptions === 'function') {\n onError = createAllOptions\n }\n\n if (createAllOptions instanceof HTMLElement) {\n $scope = createAllOptions\n }\n\n const $elements = $scope.querySelectorAll(\n `[data-module=\"${Component.moduleName}\"]`\n )\n\n // Skip initialisation when GOV.UK Frontend is not supported\n if (!isSupported()) {\n if (onError) {\n onError(new SupportError(), {\n component: Component,\n config\n })\n } else {\n console.log(new SupportError())\n }\n return []\n }\n\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-return --\n * We can't define CompatibleClass as `{new(): CompatibleClass, moduleName: string}`,\n * as when doing `typeof Accordion` (or any component), TypeScript doesn't seem\n * to acknowledge the static `moduleName` that's set in our component classes.\n * This means we have to set the constructor of `CompatibleClass` as `{new(): any}`,\n * leading to ESLint frowning that we're returning `any[]`.\n */\n return Array.from($elements)\n .map(($element) => {\n try {\n // Only pass config to components that accept it\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return typeof config !== 'undefined'\n ? new Component($element, config)\n : new Component($element)\n } catch (error) {\n if (onError) {\n onError(error, {\n element: $element,\n component: Component,\n config\n })\n } else {\n console.log(error)\n }\n\n return null\n }\n })\n .filter(Boolean) // Exclude components that errored\n}\n\nexport { initAll, createAll }\n\n/* eslint-disable jsdoc/valid-types --\n * `{new(...args: any[] ): object}` is not recognised as valid\n * https://github.com/gajus/eslint-plugin-jsdoc/issues/145#issuecomment-1308722878\n * https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/131\n **/\n\n/**\n * @typedef {{new (...args: any[]): any, moduleName: string}} CompatibleClass\n */\n\n/* eslint-enable jsdoc/valid-types */\n\n/**\n * Config for all components via `initAll()`\n *\n * @typedef {object} Config\n * @property {AccordionConfig} [accordion] - Accordion config\n * @property {ButtonConfig} [button] - Button config\n * @property {CharacterCountConfig} [characterCount] - Character Count config\n * @property {ErrorSummaryConfig} [errorSummary] - Error Summary config\n * @property {ExitThisPageConfig} [exitThisPage] - Exit This Page config\n * @property {FileUploadConfig} [fileUpload] - File Upload config\n * @property {NotificationBannerConfig} [notificationBanner] - Notification Banner config\n * @property {PasswordInputConfig} [passwordInput] - Password input config\n */\n\n/**\n * Config for individual components\n *\n * @import { AccordionConfig } from './components/accordion/accordion.mjs'\n * @import { ButtonConfig } from './components/button/button.mjs'\n * @import { CharacterCountConfig } from './components/character-count/character-count.mjs'\n * @import { ErrorSummaryConfig } from './components/error-summary/error-summary.mjs'\n * @import { ExitThisPageConfig } from './components/exit-this-page/exit-this-page.mjs'\n * @import { NotificationBannerConfig } from './components/notification-banner/notification-banner.mjs'\n * @import { PasswordInputConfig } from './components/password-input/password-input.mjs'\n * @import { FileUploadConfig } from './components/file-upload/file-upload.mjs'\n */\n\n/**\n * Component config keys, e.g. `accordion` and `characterCount`\n *\n * @typedef {keyof Config} ConfigKey\n */\n\n/**\n * @template {CompatibleClass} ComponentClass\n * @typedef {ConstructorParameters<ComponentClass>[1]} ComponentConfig\n */\n\n/**\n * @template {CompatibleClass} ComponentClass\n * @typedef {object} ErrorContext\n * @property {Element} [element] - Element used for component module initialisation\n * @property {ComponentClass} [component] - Class of component\n * @property {ComponentConfig<ComponentClass>} config - Config supplied to component\n */\n\n/**\n * @template {CompatibleClass} ComponentClass\n * @callback OnErrorCallback\n * @param {unknown} error - Thrown error\n * @param {ErrorContext<ComponentClass>} context - Object containing the element, component class and configuration\n */\n\n/**\n * @template {CompatibleClass} ComponentClass\n * @typedef {object} CreateAllOptions\n * @property {Element | Document} [scope] - scope of the document to search within\n * @property {OnErrorCallback<ComponentClass>} [onError] - callback function if error throw by component on init\n */\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n const { controller } = this.context;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element, controller });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, { params: this.action.params });\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const { selector } = this;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const { selector } = this;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n else {\n return [];\n }\n }\n elementMatched(element) {\n const { selector } = this;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const { selector } = this;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n }\n else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach((outletName) => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach((context) => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n this.attributeObserverMap.forEach((observer) => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach((observer) => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n }\n else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n }\n else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outletElement) => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const { controller, token, typeObject } = payload;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType)\n return typeFromObject;\n if (onlyDefault)\n return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject)\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const { controller, token, typeDefinition } = payload;\n const typeObject = { controller, token, typeObject: typeDefinition };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault)\n return typeObject.default;\n if (hasType) {\n const { type } = typeObject;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType)\n return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const { token, typeDefinition } = payload;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus = application\n\nexport { application }\n", "import { Controller } from \"@hotwired/stimulus\";\nimport accessibleAutocomplete from \"accessible-autocomplete\";\nimport debounce from \"lodash.debounce\";\nimport { request } from \"../utils/request_helper\";\n\n// Connects to data-controller=\"autocomplete\"\nexport default class extends Controller {\n static targets = [\"serverInput\", \"input\"];\n static values = {\n path: String,\n returnAttributes: Array,\n };\n\n connect() {\n const minLength = 2;\n\n accessibleAutocomplete({\n element: this.inputTarget,\n id: this.serverInputTarget.id,\n showNoOptionsFound: true,\n name: this.inputTarget.dataset.inputName,\n defaultValue: this.serverInputTarget.value,\n minLength,\n source: debounce(request(this.pathValue), 200),\n templates: {\n inputValue: this.inputValueTemplate.bind(this),\n suggestion: this.resultTemplate.bind(this),\n },\n onConfirm: this.onConfirm.bind(this),\n confirmOnBlur: false,\n autoselect: true,\n });\n\n // Hijack the original input to submit the selected value.\n this.serverInputTarget.id = `old-${this.serverInputTarget.id}`;\n this.serverInputTarget.type = \"hidden\";\n this.serverInputTarget.value =\n this.serverInputTarget.dataset.previousSearch || \"\";\n }\n\n clearUndefinedSuggestions() {\n const autocompleteElement = this.element.getElementsByClassName(\n \"autocomplete__wrapper\"\n )[0];\n if (autocompleteElement) {\n const autocompleteOptions = autocompleteElement.getElementsByClassName(\n \"autocomplete__option\"\n );\n for (const option of autocompleteOptions) {\n if (option.innerHTML === \"\") {\n option.remove();\n }\n }\n }\n }\n\n private;\n\n inputValueTemplate(result) {\n if (result && typeof result === \"object\") {\n return result.name;\n } else {\n return \"\";\n }\n }\n\n resultTemplate(result) {\n if (result && typeof result === \"object\") {\n const attributes = this.returnAttributesValue\n .map((attribute) => result[attribute])\n .filter((attribute) => !!attribute)\n .join(\", \");\n\n return `${result.name} (${attributes})`;\n } else {\n return \"\";\n }\n }\n\n onConfirm(option) {\n this.serverInputTarget.value = option ? option.id : \"\";\n }\n}\n", "const getPath = (endpoint, query) => {\n return `${endpoint}?query=${query}`;\n};\n\nconst request = (endpoint) => {\n let xhr = null; // Hoist this call so that we can abort previous requests.\n\n return (query, callback) => {\n if (xhr && xhr.readyState !== XMLHttpRequest.DONE) {\n xhr.abort();\n }\n const path = getPath(endpoint, query);\n\n xhr = new XMLHttpRequest();\n xhr.addEventListener(\"load\", (evt) => {\n let results = [];\n try {\n results = JSON.parse(xhr.responseText);\n } catch (err) {\n console.error(\n `Failed to parse results from endpoint ${path}, error is:`,\n err,\n );\n }\n callback(results);\n });\n xhr.open(\"GET\", path);\n xhr.send();\n };\n};\n\nexport { getPath, request };\n", "import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"filter-search\"\nexport default class extends Controller {\n static targets = [\"optionsList\", \"searchInput\", \"legend\"];\n\n static instanceCounter = 0;\n\n connect() {\n const list = this.element.querySelector(\".govuk-checkboxes, .govuk-radios\");\n list.dataset.filterSearchTarget = \"optionsList\";\n\n const legend = this.element.querySelector(\"legend\");\n legend.dataset.filterSearchTarget = \"legend\";\n\n // This will be unique for each filter-search instance\n this.instanceId = this.constructor.instanceCounter++;\n\n const searchInput = this.createSearchInput();\n list.before(searchInput);\n }\n\n createSearchInput() {\n const container = document.createElement(\"div\");\n\n const inputId = `${this.identifier}-${this.instanceId}-input`;\n const labelText = `Filter ${this.legendTarget.innerText}`;\n\n container.innerHTML = `\n <label for=\"${inputId}\" class=\"govuk-label govuk-visually-hidden\">\n ${labelText}\n </label>\n <input type=\"search\" id=\"${inputId}\"\n class=\"govuk-input govuk-!-margin-bottom-1\"\n data-action=\"input->${this.identifier}#search\"\n data-filter-search-target=\"searchInput\">\n `;\n\n return container;\n }\n\n search() {\n const optionItems = this.optionsListTarget.children;\n const searchValue = this.searchInputTarget.value.toLowerCase();\n this.toggleItems(optionItems, searchValue);\n }\n\n toggleItems(items, searchValue) {\n Array.from(items).forEach(function (item) {\n if (item.textContent.toLowerCase().indexOf(searchValue) > -1) {\n item.style.display = \"\";\n } else {\n item.style.display = \"none\";\n }\n });\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"filter\"\nexport default class extends Controller {\n static targets = [ \"filter\" ]\n\n close() {\n this.filterTarget.classList.add(\"display-none-on-mobile\")\n this.filterTarget.classList.remove(\"display-initial\")\n }\n\n open() {\n this.filterTarget.classList.add(\"display-initial\")\n this.filterTarget.classList.remove(\"display-none-on-mobile\")\n }\n}\n", "// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from \"./application\"\n\nimport AutocompleteController from \"./autocomplete_controller\"\napplication.register(\"autocomplete\", AutocompleteController)\n\nimport FilterSearchController from \"./filter_search_controller\"\napplication.register(\"filter-search\", FilterSearchController)\n\nimport FilterController from \"./filter_controller\"\napplication.register(\"filter\", FilterController)\n", "import { initAll } from \"govuk-frontend\";\nimport \"./controllers\"\n\ninitAll();\n"], "mappings": "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", "names": ["root", "factory", "exports", "module", "define", "amd", "self", "t", "e", "n", "isCallable", "tryToString", "$TypeError", "TypeError", "argument", "isPossiblePrototype", "$String", "String", "charAt", "S", "index", "unicode", "length", "isPrototypeOf", "it", "Prototype", "isObject", "toIndexedObject", "toAbsoluteIndex", "lengthOfArrayLike", "createMethod", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "value", "includes", "indexOf", "bind", "uncurryThis", "IndexedObject", "toObject", "arraySpeciesCreate", "push", "TYPE", "IS_MAP", "IS_FILTER", "IS_SOME", "IS_EVERY", "IS_FIND_INDEX", "IS_FILTER_REJECT", "NO_HOLES", "callbackfn", "that", "specificCreate", "result", "boundFunction", "create", "target", "forEach", "map", "filter", "some", "every", "find", "findIndex", "filterReject", "fails", "wellKnownSymbol", "V8_VERSION", "SPECIES", "METHOD_NAME", "array", "constructor", "foo", "Boolean", "method", "call", "DESCRIPTORS", "isArray", "getOwnPropertyDescriptor", "Object", "SILENT_ON_NON_WRITABLE_LENGTH_SET", "this", "defineProperty", "writable", "error", "isConstructor", "$Array", "Array", "originalArray", "C", "prototype", "undefined", "arraySpeciesConstructor", "anObject", "iteratorClose", "iterator", "fn", "ENTRIES", "toString", "stringSlice", "slice", "TO_STRING_TAG_SUPPORT", "classofRaw", "TO_STRING_TAG", "$Object", "CORRECT_ARGUMENTS", "arguments", "tag", "key", "callee", "hasOwn", "ownKeys", "getOwnPropertyDescriptorModule", "definePropertyModule", "source", "exceptions", "keys", "f", "i", "F", "getPrototypeOf", "done", "createPropertyDescriptor", "object", "bitmap", "enumerable", "configurable", "makeBuiltIn", "name", "descriptor", "get", "getter", "set", "setter", "defineGlobalProperty", "options", "simple", "global", "unsafe", "nonConfigurable", "nonWritable", "defineBuiltIn", "src", "document", "EXISTS", "createElement", "navigator", "userAgent", "match", "version", "process", "Deno", "versions", "v8", "split", "$Error", "Error", "replace", "TEST", "stack", "V8_OR_CHAKRA_STACK_ENTRY", "IS_V8_OR_CHAKRA_STACK", "test", "dropEntries", "prepareStackTrace", "createNonEnumerableProperty", "clearErrorStack", "ERROR_STACK_INSTALLABLE", "captureStackTrace", "copyConstructorProperties", "isForced", "targetProperty", "sourceProperty", "TARGET", "GLOBAL", "STATIC", "stat", "dontCallGetSet", "forced", "sham", "exec", "regexpExec", "RegExpPrototype", "RegExp", "KEY", "FORCED", "SHAM", "SYMBOL", "DELEGATES_TO_SYMBOL", "DELEGATES_TO_EXEC", "execCalled", "re", "flags", "nativeRegExpMethod", "methods", "nativeMethod", "regexp", "str", "arg2", "forceStringMethod", "$exec", "NATIVE_BIND", "FunctionPrototype", "Function", "apply", "Reflect", "aCallable", "hasOwnProperty", "getDescriptor", "PROPER", "CONFIGURABLE", "uncurryThisWithBind", "namespace", "obj", "next", "isNullOrUndefined", "V", "P", "func", "check", "Math", "globalThis", "window", "g", "getBuiltIn", "a", "classof", "propertyIsEnumerable", "setPrototypeOf", "dummy", "Wrapper", "NewTarget", "NewTargetPrototype", "store", "functionToString", "inspectSource", "cause", "has", "NATIVE_WEAK_MAP", "shared", "sharedKey", "hiddenKeys", "OBJECT_ALREADY_INITIALIZED", "WeakMap", "state", "metadata", "facade", "STATE", "enforce", "getterFor", "type", "documentAll", "all", "noop", "construct", "constructorRegExp", "INCORRECT_TO_STRING", "isConstructorModern", "isConstructorLegacy", "called", "replacement", "feature", "detection", "data", "normalize", "POLYFILL", "NATIVE", "string", "toLowerCase", "USE_SYMBOL_AS_UID", "$Symbol", "getMethod", "kind", "innerResult", "innerError", "defineBuiltIns", "InternalStateModule", "IteratorPrototype", "createIterResultObject", "ITERATOR_HELPER", "WRAP_FOR_VALID_ITERATOR", "setInternalState", "createIteratorProxyPrototype", "IS_ITERATOR", "getInternalState", "nextHandler", "returnMethod", "inner", "WrapForValidIteratorPrototype", "IteratorHelperPrototype", "IteratorProxy", "record", "counter", "getIteratorDirect", "createIteratorProxy", "callWithSafeIterationClosing", "mapper", "PrototypeOfArrayIteratorPrototype", "arrayIterator", "IS_PURE", "ITERATOR", "BUGGY_SAFARI_ITERATORS", "toLength", "CONFIGURABLE_FUNCTION_NAME", "enforceInternalState", "join", "CONFIGURABLE_LENGTH", "TEMPLATE", "arity", "ceil", "floor", "trunc", "x", "$default", "objectKeys", "getOwnPropertySymbolsModule", "propertyIsEnumerableModule", "$assign", "assign", "concat", "b", "A", "B", "symbol", "Symbol", "alphabet", "chr", "T", "argumentsLength", "getOwnPropertySymbols", "j", "activeXDocument", "definePropertiesModule", "enumBugKeys", "html", "documentCreateElement", "PROTOTYPE", "SCRIPT", "IE_PROTO", "EmptyConstructor", "scriptTag", "content", "LT", "NullProtoObjectViaActiveX", "write", "close", "temp", "parentWindow", "NullProtoObject", "ActiveXObject", "iframeDocument", "iframe", "JS", "domain", "style", "display", "appendChild", "contentWindow", "open", "Properties", "V8_PROTOTYPE_DEFINE_BUG", "defineProperties", "props", "IE8_DOM_DEFINE", "toPropertyKey", "$defineProperty", "$getOwnPropertyDescriptor", "ENUMERABLE", "WRITABLE", "Attributes", "current", "internalObjectKeys", "getOwnPropertyNames", "CORRECT_PROTOTYPE_GETTER", "ObjectPrototype", "names", "$propertyIsEnumerable", "NASHORN_BUG", "uncurryThisAccessor", "aPossiblePrototype", "CORRECT_SETTER", "proto", "__proto__", "input", "pref", "val", "valueOf", "getOwnPropertyNamesModule", "Target", "Source", "R", "re1", "re2", "regexpFlags", "stickyHelpers", "UNSUPPORTED_DOT_ALL", "UNSUPPORTED_NCG", "nativeReplace", "nativeExec", "patchedExec", "UPDATES_LAST_INDEX_WRONG", "lastIndex", "UNSUPPORTED_Y", "BROKEN_CARET", "NPCG_INCLUDED", "reCopy", "group", "raw", "groups", "sticky", "charsAdded", "strCopy", "multiline", "hasIndices", "ignoreCase", "dotAll", "unicodeSets", "$RegExp", "MISSED_STICKY", "uid", "SHARED", "mode", "copyright", "license", "toIntegerOrInfinity", "requireObjectCoercible", "charCodeAt", "CONVERT_TO_STRING", "pos", "first", "second", "position", "size", "codeAt", "max", "min", "integer", "number", "len", "isSymbol", "ordinaryToPrimitive", "TO_PRIMITIVE", "exoticToPrim", "toPrimitive", "id", "postfix", "random", "NATIVE_SYMBOL", "WellKnownSymbolsStore", "createWellKnownSymbol", "withoutSetter", "proxyAccessor", "inheritIfRequired", "normalizeStringArgument", "installErrorCause", "installErrorStack", "FULL_NAME", "wrapper", "IS_AGGREGATE_ERROR", "STACK_TRACE_LIMIT", "OPTIONS_POSITION", "path", "ERROR_NAME", "OriginalError", "OriginalErrorPrototype", "BaseError", "WrappedError", "message", "$", "doesNotExceedSafeInteger", "createProperty", "arrayMethodHasSpeciesSupport", "IS_CONCAT_SPREADABLE", "IS_CONCAT_SPREADABLE_SUPPORT", "isConcatSpreadable", "spreadable", "arg", "k", "E", "$filter", "arrayMethodIsStrict", "nativeJoin", "separator", "$map", "setArrayLength", "properErrorOnNonWritableLength", "item", "argCount", "wrapErrorConstructorWithCause", "WEB_ASSEMBLY", "WebAssembly", "exportGlobalErrorCauseWrapper", "exportWebAssemblyErrorCauseWrapper", "init", "FUNCTION_NAME_EXISTS", "defineBuiltInAccessor", "nameRE", "regExpExec", "fixRegExpWellKnownSymbolLogic", "advanceStringIndex", "MATCH", "nativeMatch", "maybeCallNative", "matcher", "rx", "res", "fullUnicode", "matchStr", "anInstance", "CONSTRUCTOR", "NativeIterator", "IteratorConstructor", "defineIteratorPrototypeAccessor", "Iterator", "predicate", "real", "__webpack_module_cache__", "__webpack_require__", "moduleId", "cachedModule", "__webpack_modules__", "d", "definition", "o", "prop", "VNode", "EMPTY_CHILDREN", "h", "nodeName", "attributes", "lastSimple", "child", "children", "pop", "p", "vnode", "extend", "applyRef", "ref", "defer", "Promise", "resolve", "then", "setTimeout", "IS_NON_DIMENSIONAL", "items", "enqueueRender", "component", "_dirty", "debounceRendering", "rerender", "renderComponent", "isSameNodeType", "node", "hydrating", "splitText", "_componentConstructor", "isNamedNode", "normalizedNodeName", "getNodeProps", "defaultProps", "removeNode", "parentNode", "removeChild", "setAccessor", "old", "isSvg", "cssText", "innerHTML", "__html", "useCapture", "substring", "addEventListener", "eventProxy", "removeEventListener", "_listeners", "removeAttribute", "ns", "removeAttributeNS", "setAttributeNS", "setAttribute", "className", "event", "mounts", "diffLevel", "isSvgMode", "flushMounts", "c", "shift", "afterMount", "componentDidMount", "diff", "dom", "context", "mountAll", "parent", "componentRoot", "ownerSVGElement", "ret", "idiff", "out", "prevSvgMode", "_component", "nodeValue", "createTextNode", "replaceChild", "recollectNodeTree", "vnodeName", "originalComponent", "oldDom", "isDirectOwner", "isOwner", "_parentComponent", "setComponentProps", "base", "unmountComponent", "createComponent", "nextBase", "createElementNS", "firstChild", "fc", "vchildren", "nextSibling", "isHydrating", "vchild", "originalChildren", "childNodes", "keyed", "keyedLen", "childrenLen", "vlen", "_child", "__key", "trim", "insertBefore", "dangerouslySetInnerHTML", "attrs", "unmountOnly", "removeChildren", "lastChild", "previousSibling", "recyclerComponents", "Ctor", "inst", "render", "Component", "doRender", "splice", "renderMode", "_disable", "__ref", "getDerivedStateFromProps", "componentWillMount", "componentWillReceiveProps", "prevContext", "prevProps", "syncComponentUpdates", "isChild", "rendered", "cbase", "previousProps", "previousState", "prevState", "previousContext", "isUpdate", "initialBase", "initialChildComponent", "skip", "snapshot", "shouldComponentUpdate", "componentWillUpdate", "getChildContext", "getSnapshotBeforeUpdate", "toUnmount", "childComponent", "childProps", "baseParent", "componentRef", "componentDidUpdate", "afterUpdate", "_renderCallbacks", "beforeUnmount", "componentWillUnmount", "merge", "setState", "callback", "forceUpdate", "Status", "_Component", "_this", "_len", "args", "_key", "bump", "debounced", "_proto", "wait", "immediate", "timeout", "debounceStatusUpdate", "shouldSilence", "isInFocus", "validChoiceMade", "_ref", "silenced", "callNow", "clearTimeout", "_ref2", "queryLength", "_this$props", "minQueryLength", "selectedOption", "selectedOptionIndex", "tQueryTooShort", "tNoResults", "tSelectedOption", "tResults", "_this$state", "queryTooShort", "noResults", "contentSelectedOption", "border", "clip", "height", "marginBottom", "marginRight", "overflow", "padding", "whiteSpace", "width", "role", "xmlns", "focusable", "stroke", "fill", "points", "r", "keyCodes", "isIosDevice", "Autocomplete", "elementReferences", "focused", "hovered", "menuOpen", "defaultValue", "query", "selected", "ariaHint", "handleComponentBlur", "_assertThisInitialized", "handleKeyDown", "handleUpArrow", "handleDownArrow", "handleEnter", "handlePrintableKey", "handleListMouseLeave", "handleOptionBlur", "handleOptionClick", "handleOptionFocus", "handleOptionMouseDown", "handleOptionMouseEnter", "handleInputBlur", "handleInputChange", "handleInputClick", "handleInputFocus", "pollInputElement", "getDirectInputChanges", "isQueryAnOption", "_this2", "entry", "templateInputValue", "$pollInput", "_this3", "inputReference", "componentLostFocus", "focusedChanged", "focus", "focusedInput", "componentGainedFocus", "inputElement", "setSelectionRange", "hasAutoselect", "autoselect", "inputValueTemplate", "templates", "inputValue", "templateSuggestion", "suggestionTemplate", "suggestion", "newState", "newQuery", "confirmOnBlur", "onConfirm", "_this$state2", "focusingOutsideComponent", "relatedTarget", "focusingInput", "focusingAnotherOption", "keepMenuOpen", "_this$state3", "_this4", "minLength", "showAllValues", "queryEmpty", "queryChanged", "queryLongEnough", "optionsAvailable", "_this$state4", "shouldReopenMenu", "preventDefault", "_this$state5", "_this5", "_this$state6", "handleSpace", "_this6", "keyCode", "dropdownArrow", "_this7", "_this$props2", "cssNamespace", "displayMenu", "placeholder", "required", "tStatusQueryTooShort", "tStatusNoResults", "tStatusSelectedOption", "tStatusResults", "tAssistiveHint", "dropdownArrowFactory", "menuAttributes", "inputClasses", "hintClasses", "menuClasses", "_this$state7", "inputFocused", "noOptionsAvailable", "queryNotEmpty", "showNoOptionsFound", "wrapperClassName", "statusClassName", "dropdownArrowClassName", "optionFocused", "optionClassName", "hintClassName", "selectedOptionText", "hintValue", "substr", "assistiveHintID", "ariaProps", "inputClassName", "inputClassList", "menuClassName", "menuClassList", "class", "computedMenuAttributes", "onMouseLeave", "onKeyDown", "readonly", "tabIndex", "_extends", "autoComplete", "onClick", "onBlur", "onInput", "onFocus", "option", "optionModifierFocused", "optionModifierOdd", "iosPosinsetHtml", "onMouseDown", "onMouseEnter", "optionEl", "accessibleAutocomplete", "element", "createSimpleEngine", "DropdownArrowDown", "values", "syncResults", "enhanceSelectElement", "configurationOptions", "selectElement", "availableOptions", "preserveNullOptions", "textContent", "innerText", "requestedOption", "selectedIndex", "debounce", "isObject", "result", "getFragmentFromUrl", "url", "includes", "undefined", "split", "pop", "getBreakpoint", "name", "property", "value", "window", "getComputedStyle", "document", "documentElement", "getPropertyValue", "setFocus", "$element", "options", "_options$onBeforeFocu", "isFocusable", "getAttribute", "setAttribute", "onFocus", "addEventListener", "onBlur", "once", "_options$onBlur", "call", "removeAttribute", "onBeforeFocus", "focus", "isInitialised", "$root", "moduleName", "HTMLElement", "hasAttribute", "isSupported", "$scope", "body", "classList", "contains", "isArray", "option", "Array", "isObject", "formatErrorMessage", "Component", "message", "GOVUKFrontendError", "Error", "constructor", "args", "name", "SupportError", "$scope", "document", "body", "supportMessage", "HTMLScriptElement", "prototype", "ConfigError", "ElementError", "messageOrOptions", "message", "component", "identifier", "element", "expectedType", "formatErrorMessage", "InitError", "componentOrMessage", "Component", "$root", "_$root", "constructor", "childConstructor", "moduleName", "InitError", "elementType", "ElementError", "element", "component", "identifier", "expectedType", "name", "checkSupport", "checkInitialised", "setAttribute", "isInitialised", "isSupported", "SupportError", "HTMLElement", "configOverride", "Symbol", "for", "ConfigurableComponent", "Component", "param", "config", "_config", "constructor", "$root", "childConstructor", "isObject", "defaults", "ConfigError", "formatErrorMessage", "datasetConfig", "normaliseDataset", "_$root", "dataset", "mergeConfigs", "normaliseString", "value", "property", "trimmedValue", "trim", "output", "outputType", "type", "includes", "length", "isFinite", "Number", "schema", "out", "entries", "Object", "properties", "entry", "namespace", "field", "toString", "extractConfigByNamespace", "configObjects", "formattedConfigObject", "configObject", "key", "keys", "option", "override", "validateConfig", "validationErrors", "name", "conditions", "errors", "Array", "isArray", "required", "errorMessage", "every", "push", "newObject", "current", "keyParts", "split", "index", "I18n", "constructor", "translations", "config", "_config$locale", "locale", "document", "documentElement", "lang", "t", "lookupKey", "options", "Error", "translation", "count", "translationPluralForm", "getPluralSuffix", "match", "replacePlaceholders", "translationString", "formatter", "Intl", "NumberFormat", "supportedLocalesOf", "length", "undefined", "replace", "placeholderWithBraces", "placeholderKey", "Object", "prototype", "hasOwnProperty", "call", "placeholderValue", "format", "hasIntlPluralRulesSupport", "Boolean", "window", "PluralRules", "Number", "isFinite", "preferredForm", "select", "selectPluralFormUsingFallbackRules", "console", "warn", "Math", "abs", "floor", "ruleset", "getPluralRulesForLocale", "pluralRules", "localeShort", "split", "pluralRule", "pluralRulesMap", "languages", "includes", "arabic", "chinese", "french", "german", "irish", "russian", "scottish", "spanish", "welsh", "n", "lastTwo", "last", "Accordion", "ConfigurableComponent", "constructor", "$root", "config", "i18n", "controlsClass", "showAllClass", "showAllTextClass", "sectionClass", "sectionExpandedClass", "sectionButtonClass", "sectionHeaderClass", "sectionHeadingClass", "sectionHeadingDividerClass", "sectionHeadingTextClass", "sectionHeadingTextFocusClass", "sectionShowHideToggleClass", "sectionShowHideToggleFocusClass", "sectionShowHideTextClass", "upChevronIconClass", "downChevronIconClass", "sectionSummaryClass", "sectionSummaryFocusClass", "sectionContentClass", "$sections", "$showAllButton", "$showAllIcon", "$showAllText", "I18n", "querySelectorAll", "length", "ElementError", "component", "identifier", "initControls", "initSectionHeaders", "updateShowAllButton", "areAllSectionsOpen", "document", "createElement", "setAttribute", "classList", "add", "appendChild", "$accordionControls", "insertBefore", "firstChild", "addEventListener", "onShowOrHideAllToggle", "event", "onBeforeMatch", "forEach", "$section", "i", "$header", "querySelector", "constructHeaderMarkup", "setExpanded", "isExpanded", "onSectionToggle", "setInitialState", "index", "$span", "$heading", "$summary", "$button", "id", "attr", "Array", "from", "attributes", "name", "value", "$headingText", "$headingTextFocus", "childNodes", "$child", "$showHideToggle", "$showHideToggleFocus", "$showHideText", "$showHideIcon", "getButtonPunctuationEl", "$summarySpan", "$summarySpanFocus", "remove", "removeChild", "$fragment", "target", "Element", "closest", "nowExpanded", "storeState", "expanded", "$content", "newButtonText", "t", "textContent", "ariaLabelParts", "push", "trim", "ariaLabelMessage", "join", "removeAttribute", "contains", "every", "toString", "toggle", "getIdentifier", "getAttribute", "rememberExpanded", "window", "sessionStorage", "setItem", "exception", "state", "getItem", "$punctuationEl", "moduleName", "defaults", "Object", "freeze", "hideAllSections", "hideSection", "hideSectionAriaLabel", "showAllSections", "showSection", "showSectionAriaLabel", "schema", "properties", "type", "DEBOUNCE_TIMEOUT_IN_SECONDS", "Button", "ConfigurableComponent", "constructor", "$root", "config", "debounceFormSubmitTimer", "addEventListener", "event", "handleKeyDown", "debounce", "$target", "target", "key", "HTMLElement", "getAttribute", "preventDefault", "click", "preventDoubleClick", "window", "setTimeout", "moduleName", "defaults", "Object", "freeze", "schema", "properties", "type", "closestAttributeValue", "$element", "attributeName", "$closestElementWithAttribute", "closest", "getAttribute", "CharacterCount", "ConfigurableComponent", "configOverride", "datasetConfig", "configOverrides", "maxlength", "undefined", "maxwords", "constructor", "$root", "config", "_ref", "_this$config$maxwords", "$textarea", "$visibleCountMessage", "$screenReaderCountMessage", "lastInputTimestamp", "lastInputValue", "valueChecker", "i18n", "maxLength", "querySelector", "HTMLTextAreaElement", "HTMLInputElement", "ElementError", "component", "element", "expectedType", "identifier", "errors", "validateConfig", "schema", "ConfigError", "formatErrorMessage", "I18n", "locale", "closestAttributeValue", "Infinity", "textareaDescriptionId", "id", "$textareaDescription", "document", "getElementById", "textContent", "match", "t", "count", "insertAdjacentElement", "createElement", "className", "setAttribute", "classList", "add", "removeAttribute", "bindChangeEvents", "window", "addEventListener", "updateCountMessage", "handleKeyUp", "handleFocus", "handleBlur", "updateVisibleCountMessage", "Date", "now", "setInterval", "updateIfValueChanged", "clearInterval", "value", "updateScreenReaderCountMessage", "remainingNumber", "isError", "toggle", "isOverThreshold", "getCountMessage", "text", "_text$match", "tokens", "length", "countType", "formatCountMessage", "translationKeySuffix", "Math", "abs", "threshold", "currentLength", "thresholdValue", "moduleName", "defaults", "Object", "freeze", "charactersUnderLimit", "one", "other", "charactersAtLimit", "charactersOverLimit", "wordsUnderLimit", "wordsAtLimit", "wordsOverLimit", "textareaDescription", "properties", "type", "anyOf", "required", "errorMessage", "Checkboxes", "Component", "constructor", "$root", "$inputs", "querySelectorAll", "length", "ElementError", "component", "identifier", "forEach", "$input", "targetId", "getAttribute", "document", "getElementById", "setAttribute", "removeAttribute", "window", "addEventListener", "syncAllConditionalReveals", "event", "handleClick", "syncConditionalRevealWithInputState", "$target", "classList", "contains", "inputIsChecked", "checked", "toString", "toggle", "unCheckAllInputsExcept", "allInputsWithSameName", "name", "$inputWithSameName", "hasSameFormOwner", "form", "unCheckExclusiveInputs", "allInputsWithSameNameAndExclusiveBehaviour", "$exclusiveInput", "$clickedInput", "target", "HTMLInputElement", "type", "hasAriaControls", "hasBehaviourExclusive", "moduleName", "ErrorSummary", "ConfigurableComponent", "constructor", "$root", "config", "disableAutoFocus", "setFocus", "addEventListener", "event", "handleClick", "$target", "target", "focusTarget", "preventDefault", "HTMLAnchorElement", "inputId", "getFragmentFromUrl", "href", "$input", "document", "getElementById", "$legendOrLabel", "getAssociatedLegendOrLabel", "scrollIntoView", "focus", "preventScroll", "_document$querySelect", "$fieldset", "closest", "$legends", "getElementsByTagName", "length", "$candidateLegend", "HTMLInputElement", "type", "legendTop", "getBoundingClientRect", "top", "inputRect", "height", "window", "innerHeight", "inputBottom", "querySelector", "getAttribute", "moduleName", "defaults", "Object", "freeze", "schema", "properties", "ExitThisPage", "ConfigurableComponent", "constructor", "$root", "config", "i18n", "$button", "$skiplinkButton", "$updateSpan", "$indicatorContainer", "$overlay", "keypressCounter", "lastKeyWasModified", "timeoutTime", "keypressTimeoutId", "timeoutMessageId", "querySelector", "HTMLAnchorElement", "ElementError", "component", "element", "expectedType", "identifier", "I18n", "document", "buildIndicator", "initUpdateSpan", "initButtonClickHandler", "body", "dataset", "addEventListener", "handleKeypress", "bind", "govukFrontendExitThisPageKeypress", "window", "resetPage", "createElement", "setAttribute", "className", "appendChild", "handleClick", "i", "$indicator", "updateIndicator", "classList", "toggle", "$indicators", "querySelectorAll", "forEach", "index", "exitPage", "textContent", "add", "t", "location", "href", "event", "preventDefault", "key", "clearTimeout", "setKeypressTimer", "resetKeypressTimer", "shiftKey", "setTimeout", "remove", "moduleName", "defaults", "Object", "freeze", "activated", "timedOut", "pressTwoMoreTimes", "pressOneMoreTime", "schema", "properties", "type", "FileUpload", "ConfigurableComponent", "constructor", "$root", "config", "$input", "$button", "$status", "i18n", "id", "querySelector", "ElementError", "component", "identifier", "type", "formatErrorMessage", "setAttribute", "I18n", "locale", "closestAttributeValue", "$label", "findLabel", "document", "createElement", "classList", "add", "ariaDescribedBy", "getAttribute", "className", "innerText", "t", "appendChild", "commaSpan", "containerSpan", "buttonSpan", "insertAdjacentText", "instructionSpan", "addEventListener", "onClick", "bind", "event", "preventDefault", "insertAdjacentElement", "onChange", "updateDisabledState", "observeDisabledState", "$announcements", "onDrop", "updateDropzoneVisibility", "enteredAnotherElement", "disabled", "hideDraggingState", "target", "Node", "contains", "dataTransfer", "isContainingFiles", "showDraggingState", "remove", "files", "dispatchEvent", "CustomEvent", "fileCount", "length", "name", "count", "click", "observer", "MutationObserver", "mutationList", "mutation", "attributeName", "observe", "attributes", "toggle", "moduleName", "defaults", "Object", "freeze", "chooseFilesButton", "dropInstruction", "noFileChosen", "multipleFilesChosen", "one", "other", "enteredDropZone", "leftDropZone", "schema", "properties", "hasNoTypesInfo", "types", "isDraggingFiles", "some", "Header", "Component", "constructor", "$root", "$menuButton", "$menu", "menuIsOpen", "mql", "querySelector", "menuId", "getAttribute", "ElementError", "component", "identifier", "document", "getElementById", "element", "setupResponsiveChecks", "addEventListener", "handleMenuButtonClick", "breakpoint", "getBreakpoint", "value", "property", "window", "matchMedia", "checkMode", "addListener", "matches", "removeAttribute", "setAttribute", "toString", "moduleName", "NotificationBanner", "ConfigurableComponent", "constructor", "$root", "config", "getAttribute", "disableAutoFocus", "setFocus", "moduleName", "defaults", "Object", "freeze", "schema", "properties", "type", "PasswordInput", "ConfigurableComponent", "constructor", "$root", "config", "i18n", "$input", "$showHideButton", "$screenReaderStatusMessage", "querySelector", "HTMLInputElement", "ElementError", "component", "element", "expectedType", "identifier", "type", "HTMLButtonElement", "I18n", "locale", "closestAttributeValue", "removeAttribute", "document", "createElement", "className", "setAttribute", "insertAdjacentElement", "addEventListener", "toggle", "bind", "form", "hide", "window", "event", "persisted", "preventDefault", "show", "setType", "isHidden", "prefixButton", "prefixStatus", "innerText", "t", "moduleName", "defaults", "Object", "freeze", "showPassword", "hidePassword", "showPasswordAriaLabel", "hidePasswordAriaLabel", "passwordShownAnnouncement", "passwordHiddenAnnouncement", "schema", "properties", "Radios", "Component", "constructor", "$root", "$inputs", "querySelectorAll", "length", "ElementError", "component", "identifier", "forEach", "$input", "targetId", "getAttribute", "document", "getElementById", "setAttribute", "removeAttribute", "window", "addEventListener", "syncAllConditionalReveals", "event", "handleClick", "syncConditionalRevealWithInputState", "$target", "classList", "contains", "inputIsChecked", "checked", "toString", "toggle", "$clickedInput", "target", "HTMLInputElement", "type", "$allInputs", "$clickedInputForm", "form", "$clickedInputName", "name", "hasSameFormOwner", "hasSameName", "moduleName", "ServiceNavigation", "Component", "constructor", "$root", "$menuButton", "$menu", "menuIsOpen", "mql", "querySelector", "menuId", "getAttribute", "ElementError", "component", "identifier", "document", "getElementById", "element", "setupResponsiveChecks", "addEventListener", "handleMenuButtonClick", "breakpoint", "getBreakpoint", "value", "property", "window", "matchMedia", "checkMode", "addListener", "matches", "removeAttribute", "setAttribute", "toString", "moduleName", "SkipLink", "Component", "constructor", "$root", "_this$$root$getAttrib", "hash", "href", "getAttribute", "url", "window", "URL", "error", "ElementError", "origin", "location", "pathname", "linkedElementId", "getFragmentFromUrl", "$linkedElement", "document", "getElementById", "component", "element", "identifier", "addEventListener", "setFocus", "onBeforeFocus", "classList", "add", "onBlur", "remove", "elementType", "HTMLAnchorElement", "moduleName", "Tabs", "Component", "constructor", "$root", "$tabs", "$tabList", "$tabListItems", "jsHiddenClass", "changingHash", "boundTabClick", "boundTabKeydown", "boundOnHashChange", "mql", "querySelectorAll", "length", "ElementError", "component", "identifier", "onTabClick", "bind", "onTabKeydown", "onHashChange", "querySelector", "setupResponsiveChecks", "breakpoint", "getBreakpoint", "value", "property", "window", "matchMedia", "addEventListener", "checkMode", "addListener", "_this$mql", "matches", "setup", "teardown", "_this$getTab", "setAttribute", "forEach", "$item", "$tab", "setAttributes", "hideTab", "$activeTab", "getTab", "location", "hash", "showTab", "removeAttribute", "removeEventListener", "unsetAttributes", "$tabWithHash", "$previousTab", "getCurrentTab", "focus", "unhighlightTab", "hidePanel", "highlightTab", "showPanel", "panelId", "getFragmentFromUrl", "href", "$panel", "getPanel", "id", "classList", "add", "remove", "event", "$currentTab", "$nextTab", "currentTarget", "HTMLAnchorElement", "preventDefault", "createHistoryEntry", "key", "activatePreviousTab", "activateNextTab", "parentElement", "$nextTabListItem", "nextElementSibling", "$previousTabListItem", "previousElementSibling", "moduleName", "initAll", "config", "_config$scope", "isSupported", "onError", "SupportError", "console", "log", "components", "Accordion", "accordion", "Button", "button", "CharacterCount", "characterCount", "Checkboxes", "ErrorSummary", "errorSummary", "ExitThisPage", "exitThisPage", "FileUpload", "fileUpload", "Header", "NotificationBanner", "notificationBanner", "PasswordInput", "passwordInput", "Radios", "ServiceNavigation", "SkipLink", "Tabs", "options", "scope", "document", "forEach", "Component", "createAll", "createAllOptions", "$scope", "_createAllOptions$sco", "HTMLElement", "$elements", "querySelectorAll", "moduleName", "component", "Array", "from", "map", "$element", "error", "element", "filter", "Boolean", "application", "error", "match", "oldValue", "error", "constructor", "application", "element", "accessibleAutocomplete", "debounce"] }