UNPKG

digitalmarketplace-frontend

Version:

Digital Marketplace Frontend contains assets and components used in Digital Marketplace projects

1 lines 82 kB
{"version":3,"file":"compliance-communication-attachments.bundle.mjs","sources":["../../../../../../node_modules/govuk-frontend/dist/govuk/common/index.mjs","../../../../../../node_modules/govuk-frontend/dist/govuk/errors/index.mjs","../../../../../../node_modules/govuk-frontend/dist/govuk/component.mjs","../../../../../../node_modules/govuk-frontend/dist/govuk/common/configuration.mjs","../../../../../../node_modules/govuk-frontend/dist/govuk/i18n.mjs","../../../../../../node_modules/govuk-frontend/dist/govuk/common/closest-attribute-value.mjs","../../../../../../node_modules/govuk-frontend/dist/govuk/components/file-upload/file-upload.mjs","../../../../src/digitalmarketplace/components/compliance-communication-attachments/compliance-communication-attachments.ts"],"sourcesContent":["function getFragmentFromUrl(url) {\n  if (!url.includes('#')) {\n    return undefined;\n  }\n  return url.split('#').pop();\n}\nfunction getBreakpoint(name) {\n  const property = `--govuk-breakpoint-${name}`;\n  const value = window.getComputedStyle(document.documentElement).getPropertyValue(property);\n  return {\n    property,\n    value: value || undefined\n  };\n}\nfunction setFocus($element, options = {}) {\n  var _options$onBeforeFocu;\n  const isFocusable = $element.getAttribute('tabindex');\n  if (!isFocusable) {\n    $element.setAttribute('tabindex', '-1');\n  }\n  function onFocus() {\n    $element.addEventListener('blur', onBlur, {\n      once: true\n    });\n  }\n  function onBlur() {\n    var _options$onBlur;\n    (_options$onBlur = options.onBlur) == null || _options$onBlur.call($element);\n    if (!isFocusable) {\n      $element.removeAttribute('tabindex');\n    }\n  }\n  $element.addEventListener('focus', onFocus, {\n    once: true\n  });\n  (_options$onBeforeFocu = options.onBeforeFocus) == null || _options$onBeforeFocu.call($element);\n  $element.focus();\n}\nfunction isInitialised($root, moduleName) {\n  return $root instanceof HTMLElement && $root.hasAttribute(`data-${moduleName}-init`);\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 */\nfunction isSupported($scope = document.body) {\n  if (!$scope) {\n    return false;\n  }\n  return $scope.classList.contains('govuk-frontend-supported');\n}\nfunction isArray(option) {\n  return Array.isArray(option);\n}\nfunction isObject(option) {\n  return !!option && typeof option === 'object' && !isArray(option);\n}\nfunction formatErrorMessage(Component, message) {\n  return `${Component.moduleName}: ${message}`;\n}\n/**\n * @typedef ComponentWithModuleName\n * @property {string} moduleName - Name of the component\n */\n/**\n * @import { ObjectNested } from './configuration.mjs'\n */\n\nexport { formatErrorMessage, getBreakpoint, getFragmentFromUrl, isInitialised, isObject, isSupported, setFocus };\n//# sourceMappingURL=index.mjs.map\n","import { formatErrorMessage } from '../common/index.mjs';\n\nclass GOVUKFrontendError extends Error {\n  constructor(...args) {\n    super(...args);\n    this.name = 'GOVUKFrontendError';\n  }\n}\nclass SupportError extends GOVUKFrontendError {\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 = 'noModule' in HTMLScriptElement.prototype ? 'GOV.UK Frontend initialised without `<body class=\"govuk-frontend-supported\">` from template `<script>` snippet' : 'GOV.UK Frontend is not supported in this browser';\n    super($scope ? supportMessage : 'GOV.UK Frontend initialised without `<script type=\"module\">`');\n    this.name = 'SupportError';\n  }\n}\nclass ConfigError extends GOVUKFrontendError {\n  constructor(...args) {\n    super(...args);\n    this.name = 'ConfigError';\n  }\n}\nclass ElementError extends GOVUKFrontendError {\n  constructor(messageOrOptions) {\n    let message = typeof messageOrOptions === 'string' ? messageOrOptions : '';\n    if (typeof messageOrOptions === 'object') {\n      const {\n        component,\n        identifier,\n        element,\n        expectedType\n      } = messageOrOptions;\n      message = identifier;\n      message += element ? ` is not of type ${expectedType != null ? expectedType : 'HTMLElement'}` : ' not found';\n      message = formatErrorMessage(component, message);\n    }\n    super(message);\n    this.name = 'ElementError';\n  }\n}\nclass InitError extends GOVUKFrontendError {\n  constructor(componentOrMessage) {\n    const message = typeof componentOrMessage === 'string' ? componentOrMessage : formatErrorMessage(componentOrMessage, `Root element (\\`$root\\`) already initialised`);\n    super(message);\n    this.name = 'InitError';\n  }\n}\n/**\n * @import { ComponentWithModuleName } from '../common/index.mjs'\n */\n\nexport { ConfigError, ElementError, GOVUKFrontendError, InitError, SupportError };\n//# sourceMappingURL=index.mjs.map\n","import { isInitialised, isSupported } from './common/index.mjs';\nimport { InitError, ElementError, SupportError } from './errors/index.mjs';\n\nclass Component {\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  constructor($root) {\n    this._$root = void 0;\n    const childConstructor = this.constructor;\n    if (typeof childConstructor.moduleName !== 'string') {\n      throw new InitError(`\\`moduleName\\` not defined in component`);\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 = $root;\n    }\n    childConstructor.checkSupport();\n    this.checkInitialised();\n    const moduleName = childConstructor.moduleName;\n    this.$root.setAttribute(`data-${moduleName}-init`, '');\n  }\n  checkInitialised() {\n    const constructor = this.constructor;\n    const moduleName = constructor.moduleName;\n    if (moduleName && isInitialised(this.$root, moduleName)) {\n      throw new InitError(constructor);\n    }\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 */\nComponent.elementType = HTMLElement;\n\nexport { Component };\n//# sourceMappingURL=component.mjs.map\n","import { Component } from '../component.mjs';\nimport { ConfigError } from '../errors/index.mjs';\nimport { isObject, formatErrorMessage } from './index.mjs';\n\nconst configOverride = Symbol.for('configOverride');\nclass ConfigurableComponent extends Component {\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  constructor($root, config) {\n    super($root);\n    this._config = void 0;\n    const childConstructor = this.constructor;\n    if (!isObject(childConstructor.defaults)) {\n      throw new ConfigError(formatErrorMessage(childConstructor, 'Config passed as parameter into constructor but no defaults defined'));\n    }\n    const datasetConfig = normaliseDataset(childConstructor, this._$root.dataset);\n    this._config = mergeConfigs(childConstructor.defaults, config != null ? config : {}, this[configOverride](datasetConfig), datasetConfig);\n  }\n}\nfunction normaliseString(value, property) {\n  const trimmedValue = value ? value.trim() : '';\n  let output;\n  let outputType = property == null ? void 0 : property.type;\n  if (!outputType) {\n    if (['true', 'false'].includes(trimmedValue)) {\n      outputType = 'boolean';\n    }\n    if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {\n      outputType = 'number';\n    }\n  }\n  switch (outputType) {\n    case 'boolean':\n      output = trimmedValue === 'true';\n      break;\n    case 'number':\n      output = Number(trimmedValue);\n      break;\n    default:\n      output = value;\n  }\n  return output;\n}\nfunction normaliseDataset(Component, dataset) {\n  if (!isObject(Component.schema)) {\n    throw new ConfigError(formatErrorMessage(Component, 'Config passed as parameter into constructor but no schema defined'));\n  }\n  const out = {};\n  const entries = Object.entries(Component.schema.properties);\n  for (const entry of entries) {\n    const [namespace, property] = entry;\n    const field = namespace.toString();\n    if (field in dataset) {\n      out[field] = normaliseString(dataset[field], property);\n    }\n    if ((property == null ? void 0 : property.type) === 'object') {\n      out[field] = extractConfigByNamespace(Component.schema, dataset, namespace);\n    }\n  }\n  return out;\n}\nfunction mergeConfigs(...configObjects) {\n  const formattedConfigObject = {};\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      if (isObject(option) && isObject(override)) {\n        formattedConfigObject[key] = mergeConfigs(option, override);\n      } else {\n        formattedConfigObject[key] = override;\n      }\n    }\n  }\n  return formattedConfigObject;\n}\nfunction validateConfig(schema, config) {\n  const validationErrors = [];\n  for (const [name, conditions] of Object.entries(schema)) {\n    const errors = [];\n    if (Array.isArray(conditions)) {\n      for (const {\n        required,\n        errorMessage\n      } of conditions) {\n        if (!required.every(key => !!config[key])) {\n          errors.push(errorMessage);\n        }\n      }\n      if (name === 'anyOf' && !(conditions.length - errors.length >= 1)) {\n        validationErrors.push(...errors);\n      }\n    }\n  }\n  return validationErrors;\n}\nfunction extractConfigByNamespace(schema, dataset, namespace) {\n  const property = schema.properties[namespace];\n  if ((property == null ? void 0 : property.type) !== 'object') {\n    return;\n  }\n  const newObject = {\n    [namespace]: {}\n  };\n  for (const [key, value] of Object.entries(dataset)) {\n    let current = newObject;\n    const keyParts = key.split('.');\n    for (const [index, name] of keyParts.entries()) {\n      if (isObject(current)) {\n        if (index < keyParts.length - 1) {\n          if (!isObject(current[name])) {\n            current[name] = {};\n          }\n          current = current[name];\n        } else if (key !== namespace) {\n          current[name] = normaliseString(value);\n        }\n      }\n    }\n  }\n  return newObject[namespace];\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 * Schema property for component config\n *\n * @typedef {object} SchemaProperty\n * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type\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 * @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 * @template {Partial<Record<keyof ConfigurationType, unknown>>} [ConfigurationType=ObjectNested]\n * @typedef {typeof Component & ChildClass<ConfigurationType>} ChildClassConstructor<ConfigurationType>\n */\n\nexport { ConfigurableComponent, configOverride, extractConfigByNamespace, mergeConfigs, normaliseDataset, normaliseString, validateConfig };\n//# sourceMappingURL=configuration.mjs.map\n","class I18n {\n  constructor(translations = {}, config = {}) {\n    var _config$locale;\n    this.translations = void 0;\n    this.locale = void 0;\n    this.translations = translations;\n    this.locale = (_config$locale = config.locale) != null ? _config$locale : document.documentElement.lang || 'en';\n  }\n  t(lookupKey, options) {\n    if (!lookupKey) {\n      throw new Error('i18n: lookup key missing');\n    }\n    let translation = this.translations[lookupKey];\n    if (typeof (options == null ? void 0 : options.count) === 'number' && typeof translation === 'object') {\n      const translationPluralForm = translation[this.getPluralSuffix(lookupKey, options.count)];\n      if (translationPluralForm) {\n        translation = translationPluralForm;\n      }\n    }\n    if (typeof translation === 'string') {\n      if (translation.match(/%{(.\\S+)}/)) {\n        if (!options) {\n          throw new Error('i18n: cannot replace placeholders in string if no option data provided');\n        }\n        return this.replacePlaceholders(translation, options);\n      }\n      return translation;\n    }\n    return lookupKey;\n  }\n  replacePlaceholders(translationString, options) {\n    const formatter = Intl.NumberFormat.supportedLocalesOf(this.locale).length ? new Intl.NumberFormat(this.locale) : undefined;\n    return translationString.replace(/%{(.\\S+)}/g, function (placeholderWithBraces, placeholderKey) {\n      if (Object.prototype.hasOwnProperty.call(options, placeholderKey)) {\n        const placeholderValue = options[placeholderKey];\n        if (placeholderValue === false || typeof placeholderValue !== 'number' && typeof placeholderValue !== 'string') {\n          return '';\n        }\n        if (typeof placeholderValue === 'number') {\n          return formatter ? formatter.format(placeholderValue) : `${placeholderValue}`;\n        }\n        return placeholderValue;\n      }\n      throw new Error(`i18n: no data found to replace ${placeholderWithBraces} placeholder in string`);\n    });\n  }\n  hasIntlPluralRulesSupport() {\n    return Boolean('PluralRules' in window.Intl && Intl.PluralRules.supportedLocalesOf(this.locale).length);\n  }\n  getPluralSuffix(lookupKey, count) {\n    count = Number(count);\n    if (!isFinite(count)) {\n      return 'other';\n    }\n    const translation = this.translations[lookupKey];\n    const preferredForm = this.hasIntlPluralRulesSupport() ? new Intl.PluralRules(this.locale).select(count) : this.selectPluralFormUsingFallbackRules(count);\n    if (typeof translation === 'object') {\n      if (preferredForm in translation) {\n        return preferredForm;\n      } else if ('other' in translation) {\n        console.warn(`i18n: Missing plural form \".${preferredForm}\" for \"${this.locale}\" locale. Falling back to \".other\".`);\n        return 'other';\n      }\n    }\n    throw new Error(`i18n: Plural form \".other\" is required for \"${this.locale}\" locale`);\n  }\n  selectPluralFormUsingFallbackRules(count) {\n    count = Math.abs(Math.floor(count));\n    const ruleset = this.getPluralRulesForLocale();\n    if (ruleset) {\n      return I18n.pluralRules[ruleset](count);\n    }\n    return 'other';\n  }\n  getPluralRulesForLocale() {\n    const localeShort = this.locale.split('-')[0];\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}\nI18n.pluralRulesMap = {\n  arabic: ['ar'],\n  chinese: ['my', 'zh', 'id', 'ja', 'jv', 'ko', 'ms', 'th', 'vi'],\n  french: ['hy', 'bn', 'fr', 'gu', 'hi', 'fa', 'pa', 'zu'],\n  german: ['af', 'sq', 'az', 'eu', 'bg', 'ca', 'da', 'nl', 'en', 'et', 'fi', 'ka', 'de', 'el', 'hu', 'lb', 'no', 'so', 'sw', 'sv', 'ta', 'te', 'tr', 'ur'],\n  irish: ['ga'],\n  russian: ['ru', 'uk'],\n  scottish: ['gd'],\n  spanish: ['pt-PT', 'it', 'es'],\n  welsh: ['cy']\n};\nI18n.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 (last === 0 || last >= 5 && last <= 9 || lastTwo >= 11 && lastTwo <= 14) {\n      return 'many';\n    }\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\nexport { I18n };\n//# sourceMappingURL=i18n.mjs.map\n","function closestAttributeValue($element, attributeName) {\n  const $closestElementWithAttribute = $element.closest(`[${attributeName}]`);\n  return $closestElementWithAttribute ? $closestElementWithAttribute.getAttribute(attributeName) : null;\n}\n\nexport { closestAttributeValue };\n//# sourceMappingURL=closest-attribute-value.mjs.map\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 */\nclass FileUpload extends ConfigurableComponent {\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    this.$input = void 0;\n    this.$button = void 0;\n    this.$status = void 0;\n    this.i18n = void 0;\n    this.id = void 0;\n    this.$announcements = void 0;\n    this.enteredAnotherElement = void 0;\n    const $input = this.$root.querySelector('input');\n    if ($input === null) {\n      throw new ElementError({\n        component: FileUpload,\n        identifier: 'File inputs (`<input type=\"file\">`)'\n      });\n    }\n    if ($input.type !== 'file') {\n      throw new ElementError(formatErrorMessage(FileUpload, 'File input (`<input type=\"file\">`) attribute (`type`) is not `file`'));\n    }\n    this.$input = $input;\n    this.$input.setAttribute('hidden', 'true');\n    if (!this.$input.id) {\n      throw new ElementError({\n        component: FileUpload,\n        identifier: 'File input (`<input type=\"file\">`) attribute (`id`)'\n      });\n    }\n    this.id = this.$input.id;\n    this.i18n = new I18n(this.config.i18n, {\n      locale: closestAttributeValue(this.$root, 'lang')\n    });\n    const $label = this.findLabel();\n    if (!$label.id) {\n      $label.id = `${this.id}-label`;\n    }\n    this.$input.id = `${this.id}-input`;\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    const ariaDescribedBy = this.$input.getAttribute('aria-describedby');\n    if (ariaDescribedBy) {\n      $button.setAttribute('aria-describedby', ariaDescribedBy);\n    }\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    $button.appendChild($status);\n    const commaSpan = document.createElement('span');\n    commaSpan.className = 'govuk-visually-hidden';\n    commaSpan.innerText = ', ';\n    commaSpan.id = `${this.id}-comma`;\n    $button.appendChild(commaSpan);\n    const containerSpan = document.createElement('span');\n    containerSpan.className = 'govuk-file-upload-button__pseudo-button-container';\n    const buttonSpan = document.createElement('span');\n    buttonSpan.className = 'govuk-button govuk-button--secondary govuk-file-upload-button__pseudo-button';\n    buttonSpan.innerText = this.i18n.t('chooseFilesButton');\n    containerSpan.appendChild(buttonSpan);\n    containerSpan.insertAdjacentText('beforeend', ' ');\n    const instructionSpan = document.createElement('span');\n    instructionSpan.className = 'govuk-body govuk-file-upload-button__instruction';\n    instructionSpan.innerText = this.i18n.t('dropInstruction');\n    containerSpan.appendChild(instructionSpan);\n    $button.appendChild(containerSpan);\n    $button.setAttribute('aria-labelledby', `${$label.id} ${commaSpan.id} ${$button.id}`);\n    $button.addEventListener('click', this.onClick.bind(this));\n    $button.addEventListener('dragover', event => {\n      event.preventDefault();\n    });\n    this.$root.insertAdjacentElement('afterbegin', $button);\n    this.$input.setAttribute('tabindex', '-1');\n    this.$input.setAttribute('aria-hidden', 'true');\n    this.$button = $button;\n    this.$status = $status;\n    this.$input.addEventListener('change', this.onChange.bind(this));\n    this.updateDisabledState();\n    this.observeDisabledState();\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    this.$button.addEventListener('drop', this.onDrop.bind(this));\n    document.addEventListener('dragenter', this.updateDropzoneVisibility.bind(this));\n    document.addEventListener('dragenter', () => {\n      this.enteredAnotherElement = true;\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      this.enteredAnotherElement = false;\n    });\n  }\n  updateDropzoneVisibility(event) {\n    if (this.$button.disabled) return;\n    if (event.target instanceof Node) {\n      if (this.$root.contains(event.target)) {\n        if (event.dataTransfer && isContainingFiles(event.dataTransfer)) {\n          if (!this.$button.classList.contains('govuk-file-upload-button--dragging')) {\n            this.showDraggingState();\n            this.$announcements.innerText = this.i18n.t('enteredDropZone');\n          }\n        }\n      } else {\n        if (this.$button.classList.contains('govuk-file-upload-button--dragging')) {\n          this.hideDraggingState();\n          this.$announcements.innerText = this.i18n.t('leftDropZone');\n        }\n      }\n    }\n  }\n  showDraggingState() {\n    this.$button.classList.add('govuk-file-upload-button--dragging');\n  }\n  hideDraggingState() {\n    this.$button.classList.remove('govuk-file-upload-button--dragging');\n  }\n  onDrop(event) {\n    event.preventDefault();\n    if (event.dataTransfer && isContainingFiles(event.dataTransfer)) {\n      this.$input.files = event.dataTransfer.files;\n      this.$input.dispatchEvent(new CustomEvent('change'));\n      this.hideDraggingState();\n    }\n  }\n  onChange() {\n    const fileCount = this.$input.files.length;\n    if (fileCount === 0) {\n      this.$status.innerText = this.i18n.t('noFileChosen');\n      this.$button.classList.add('govuk-file-upload-button--empty');\n    } else {\n      if (fileCount === 1) {\n        this.$status.innerText = this.$input.files[0].name;\n      } else {\n        this.$status.innerText = this.i18n.t('multipleFilesChosen', {\n          count: fileCount\n        });\n      }\n      this.$button.classList.remove('govuk-file-upload-button--empty');\n    }\n  }\n  findLabel() {\n    const $label = document.querySelector(`label[for=\"${this.$input.id}\"]`);\n    if (!$label) {\n      throw new ElementError({\n        component: FileUpload,\n        identifier: `Field label (\\`<label for=${this.$input.id}>\\`)`\n      });\n    }\n    return $label;\n  }\n  onClick() {\n    this.$input.click();\n  }\n  observeDisabledState() {\n    const observer = new MutationObserver(mutationList => {\n      for (const mutation of mutationList) {\n        if (mutation.type === 'attributes' && mutation.attributeName === 'disabled') {\n          this.updateDisabledState();\n        }\n      }\n    });\n    observer.observe(this.$input, {\n      attributes: true\n    });\n  }\n  updateDisabledState() {\n    this.$button.disabled = this.$input.disabled;\n    this.$root.classList.toggle('govuk-drop-zone--disabled', this.$button.disabled);\n  }\n}\nFileUpload.moduleName = 'govuk-file-upload';\nFileUpload.defaults = Object.freeze({\n  i18n: {\n    chooseFilesButton: 'Choose file',\n    dropInstruction: 'or drop file',\n    noFileChosen: 'No file chosen',\n    multipleFilesChosen: {\n      one: '%{count} file chosen',\n      other: '%{count} files chosen'\n    },\n    enteredDropZone: 'Entered drop zone',\n    leftDropZone: 'Left drop zone'\n  }\n});\nFileUpload.schema = Object.freeze({\n  properties: {\n    i18n: {\n      type: 'object'\n    }\n  }\n});\nfunction isContainingFiles(dataTransfer) {\n  const hasNoTypesInfo = dataTransfer.types.length === 0;\n  const isDraggingFiles = dataTransfer.types.some(type => type === 'Files');\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\nexport { FileUpload };\n//# sourceMappingURL=file-upload.mjs.map\n","import { DigitalMarketplaceFrontendComponent } from '../../digitalmarketplace-frontend-component'\nimport { FileUpload } from 'govuk-frontend/dist/govuk/all.mjs'\n\n\nclass ComplianceCommunicationAttachmentListRowFileInput {\n  $dropZone: JQuery<HTMLElement>\n  $input: JQuery<HTMLInputElement>\n  $label: JQuery<HTMLLabelElement>\n  $hint: JQuery<HTMLElement>\n  $button: JQuery<HTMLButtonElement>\n  $comma: JQuery<HTMLElement>\n  $announcements: JQuery<HTMLElement>\n\n  constructor ($row: JQuery<HTMLElement>, column: number) {\n    const $column = $row.find(`.govuk-grid-column-one-half:nth-of-type(${column})`)\n\n    this.$dropZone = $column.find('.govuk-drop-zone')\n    this.$input = $column.find('input')\n    this.$label = $column.find<HTMLLabelElement>('.govuk-label')\n    this.$hint = $column.find('div.govuk-hint')\n    this.$button = $column.find('button')\n    this.$comma = $column.find('button > span.govuk-visually-hidden')\n    this.$announcements = $column.find('span.govuk-file-upload-announcements')\n  }\n\n  updateIndex (newIndex: number) {\n    const newName = (this.$input.attr('name') as string).replace(/\\d+/, newIndex.toString())\n    const newId = `input-${newName}`\n\n    if (this.$button.length) {\n      this.$label.attr('for', newId)\n      this.$label.attr('id', `${newId}-label`)\n  \n      this.$hint.attr('id', `${newId}-hint`)\n  \n      this.$input.attr('id', `${newId}-input`)\n      this.$input.attr('name', newName)\n      this.$input.attr('aria-describedby', `${newId}-hint`)\n  \n      this.$button.attr('id', newId)\n      this.$button.attr('aria-describedby', `${newId}-hint`)\n      this.$button.attr('aria-labelledby', `${newId}-label ${newId}-comma ${newId}`)\n  \n      this.$comma.attr('id', `${newId}-comma`)\n    } else {\n      this.$label.attr('for', newId)\n      this.$hint.attr('id', `${newId}-hint`)\n  \n      this.$input.attr('id', newId)\n      this.$input.attr('name', newName)\n      this.$input.attr('aria-describedby', `${newId}-hint`)\n    }\n  }\n\n  makeInteractable () {\n    if (!this.$button.length) {\n      return new FileUpload(this.$dropZone.get(0) as HTMLElement)\n    }\n  }\n\n  resetHtml () {\n    this.$label.removeAttr('id')\n    \n    this.$dropZone.removeAttr('data-govuk-file-upload-init')\n    \n    this.$button.remove()\n    \n    const id = this.$input.attr('id') as string\n\n    this.$input.removeAttr('hidden')\n    this.$input.removeAttr('aria-hidden')\n    this.$input.attr('id', id.substring(0, id.length - 6))\n\n    this.$announcements.remove()\n  }\n}\n\nclass ComplianceCommunicationAttachmentListRequiredInput {\n  $requiredSection: JQuery<HTMLElement>\n  $input: JQuery<HTMLInputElement>\n  $label: JQuery<HTMLLabelElement>\n\n  constructor ($row: JQuery<HTMLElement>) {\n    this.$requiredSection = $row.find('.dm-compliance-communication__attachments-item-required')\n    this.$input = this.$requiredSection.find<HTMLInputElement>('.govuk-checkboxes__item > input')\n    this.$label = this.$requiredSection.find<HTMLLabelElement>('.govuk-checkboxes__item > .govuk-label')\n  }\n\n  isChecked () {\n    return this.$input.is(':checked')\n  }\n\n  updateIndex (newIndex: number) {\n    const newName = (this.$input.attr('name') as string).replace(/\\d+/, newIndex.toString())\n    const newId = `input-${newName}`\n\n    this.$label.attr('for', newId)\n\n    this.$input.attr('id', newId)\n    this.$input.attr('name', newName)\n  }\n\n  checkRow () {\n    this.$requiredSection.toggleClass('govuk-visually-hidden', true)\n    this.$input.prop('checked', true)\n    this.$input.attr('tabindex', -1)\n    this.$input.attr('tabindex', -1)\n  }\n}\n\nclass ComplianceCommunicationAttachmentListRowRemoveButton {\n  attachmentListRow: ComplianceCommunicationAttachmentListRow\n  $button: JQuery<HTMLElement>\n  $removeButtonCounter: JQuery<HTMLElement>\n\n  constructor (attachmentListRow: ComplianceCommunicationAttachmentListRow, $row: JQuery<HTMLElement>) {\n    this.attachmentListRow = attachmentListRow\n    this.$button = $row.find('.dm-compliance-communication__attachments-item-remove')\n    this.$removeButtonCounter = this.$button.find('.dm-compliance-communication__attachments-item-remove-counter')\n  }\n\n  init () {\n    this.toggleVisibility(true)\n\n    this.$button.on('click', () => {\n      this.attachmentListRow.removeRow()\n    })\n  }\n\n  toggleVisibility (isShown: boolean) {\n    this.$button.toggleClass('govuk-visually-hidden', !isShown)\n\n    if (isShown) {\n      this.$button.removeAttr('tabindex')\n    } else {\n      this.$button.attr('tabindex', -1)\n    }\n  }\n\n  updateIndex (newIndex: number) {\n    this.$removeButtonCounter.text(newIndex + 1)\n  }\n}\n\nclass ComplianceCommunicationAttachmentListRow {\n  $row: JQuery<HTMLElement>\n  attachmentList: ComplianceCommunicationAttachments\n  index: number\n  $legendCounter: JQuery<HTMLElement>\n  attachmentListRowFileInput: ComplianceCommunicationAttachmentListRowFileInput\n  attachmentListRowRequiredInput: ComplianceCommunicationAttachmentListRequiredInput\n  attachmentListRowRemoveButton: ComplianceCommunicationAttachmentListRowRemoveButton\n\n  constructor (attachmentList: ComplianceCommunicationAttachments, index: number, $row: JQuery<HTMLElement>) {\n    this.$row = $row\n    this.attachmentList = attachmentList\n    this.index = index\n    this.$legendCounter = this.$row.find('.dm-compliance-communication__attachments-item-legend-counter')\n    this.attachmentListRowFileInput = new ComplianceCommunicationAttachmentListRowFileInput($row, 1)\n    this.attachmentListRowRequiredInput = new ComplianceCommunicationAttachmentListRequiredInput($row)\n    this.attachmentListRowRemoveButton = new ComplianceCommunicationAttachmentListRowRemoveButton(this, $row)\n  }\n\n  init () {\n    this.attachmentListRowRemoveButton.init()\n    this.attachmentListRowFileInput.makeInteractable()\n    this.attachmentListRowRequiredInput.checkRow()\n  }\n\n  updateIndex (newIndex: number) {\n    this.index = newIndex\n    this.attachmentListRowFileInput.updateIndex(newIndex)\n    this.attachmentListRowRequiredInput.updateIndex(newIndex)\n    this.attachmentListRowRemoveButton.updateIndex(newIndex)\n    this.$legendCounter.text(newIndex + 1)\n  }\n\n  removeRow () {\n    this.attachmentList.removeRow(this.index)\n    this.deleteRow()\n  }\n\n  deleteRow () {\n    this.$row.remove()\n  }\n\n  toggleRemoveButtonVisibility (isShown: boolean) {\n    this.attachmentListRowRemoveButton.toggleVisibility(isShown)\n  }\n\n  isRowChecked () {\n    return this.attachmentListRowRequiredInput.isChecked()\n  }\n}\n\nclass ComplianceCommunicationAttachmentListAddButton {\n  attachmentList: ComplianceCommunicationAttachments\n  $button: JQuery<HTMLButtonElement>\n  $buttonCounter: JQuery<HTMLElement>\n\n  constructor (attachmentList: ComplianceCommunicationAttachments, $button: JQuery<HTMLButtonElement>) {\n    this.attachmentList = attachmentList\n    this.$button = $button\n    this.$buttonCounter = $button.find('.dm-compliance-communication__attachments__js-remaining-counter')\n  }\n\n  init (numberOfRows: number) {\n    this.$button.on('click', () => {\n      this.attachmentList.addRow()\n    })\n\n    this.updateButtonText(this.attachmentList.maxNumberOfAttachments - numberOfRows)\n  }\n\n  updateButtonText (numberRemaining: number) {\n    this.$buttonCounter.text(numberRemaining)\n  }\n\n  toggleVisibility (isShown: boolean) {\n    this.$button.toggleClass('govuk-visually-hidden', !isShown)\n\n    if (isShown) {\n      this.$button.removeAttr('tabindex')\n    } else {\n      this.$button.attr('tabindex', -1)\n    }\n  }\n}\n\nclass ComplianceCommunicationAttachments implements DigitalMarketplaceFrontendComponent {\n  static moduleName = 'dm-compliance-communication-attachments'\n  $attachmentList: JQuery<HTMLElement>\n  $attachmentListItems: JQuery<HTMLElement>\n  attachmentListRows: ComplianceCommunicationAttachmentListRow[]\n  attachmentListTemplateRow: ComplianceCommunicationAttachmentListRow\n  attachmentListAddButton: ComplianceCommunicationAttachmentListAddButton\n  maxNumberOfAttachments: number\n\n  constructor ($attachmentList: JQuery<HTMLElement>) {\n    this.$attachmentList = $attachmentList\n    this.$attachmentListItems = this.$attachmentList.find('.dm-compliance-communication__attachments-items')\n    this.attachmentListRows = this.$attachmentListItems.find('.dm-compliance-communication__attachments-item').get().map((row, index) => new ComplianceCommunicationAttachmentListRow(this, index, $(row)))\n    this.attachmentListTemplateRow = new ComplianceCommunicationAttachmentListRow(this, 99, this.$attachmentList.find('.dm-compliance-communication__attachments-item-template > .dm-compliance-communication__attachments-item'))\n    this.attachmentListAddButton = new ComplianceCommunicationAttachmentListAddButton(this, this.$attachmentList.find<HTMLButtonElement>('.dm-compliance-communication__attachments-add'))\n    this.maxNumberOfAttachments = this.$attachmentList.data('maxNumberOfAttachments')\n  }\n\n  init () {\n    const rowsChecked = this.attachmentListRows.map((attachmentListRow) => attachmentListRow.isRowChecked())\n    let indexToDeleteFrom\n\n    if (rowsChecked.every((rowChecked) => !rowChecked)) {\n      indexToDeleteFrom = 0\n    } else {\n      indexToDeleteFrom = rowsChecked.indexOf(false)\n    }\n\n    if (indexToDeleteFrom >= 0) {\n      this.attachmentListRows.slice(indexToDeleteFrom).forEach((attachmentListRow) => attachmentListRow.deleteRow())\n      this.attachmentListRows.splice(indexToDeleteFrom)\n    }\n\n    this.attachmentListAddButton.init(this.attachmentListRows.length)\n    this.attachmentListRows.forEach((attachmentListRow) => attachmentListRow.init())\n\n    this.attachmentListTemplateRow.attachmentListRowFileInput.resetHtml()\n\n    this.updateIfMinRows()\n    this.updateAttachmentButton()\n  }\n\n  removeRow (indexToRemove: number) {\n    this.attachmentListRows.splice(indexToRemove, 1)\n\n    this.attachmentListRows.slice(indexToRemove).forEach((attachmentListRow, index) => {\n      attachmentListRow.updateIndex(indexToRemove + index)\n    })\n\n    this.updateIfMinRows()\n    this.updateAttachmentButton()\n\n    if (indexToRemove > 0) {\n      this.focusOnRow(indexToRemove)\n    } else {\n      this.attachmentListAddButton.$button.focus()\n    }\n  }\n\n  addRow () {\n    const numberOfRows = this.attachmentListRows.length\n\n    if (numberOfRows < this.maxNumberOfAttachments) {\n      const $newRow = this.attachmentListTemplateRow.$row.clone()\n      const attachmentListRow = new ComplianceCommunicationAttachmentListRow(this, numberOfRows, $newRow)\n\n      attachmentListRow.updateIndex(numberOfRows)\n\n      this.attachmentListRows.push(attachmentListRow)\n      this.$attachmentListItems.append($newRow)\n      this.attachmentListRows[numberOfRows].init()\n\n      this.updateIfMinRows()\n      this.updateAttachmentButton()\n      this.focusOnRow(numberOfRows)\n    }\n  }\n\n  updateIfMinRows () {\n    if (this.attachmentListRows.length !== 0) {\n      this.attachmentListRows[0].toggleRemoveButtonVisibility(true)\n    }\n  }\n\n  updateAttachmentButton () {\n    if (this.attachmentListRows.length === this.maxNumberOfAttachments) {\n      this.attachmentListAddButton.toggleVisibility(false)\n    } else {\n      this.attachmentListAddButton.toggleVisibility(true)\n      this.attachmentListAddButton.updateButtonText(this.maxNumberOfAttachments - this.attachmentListRows.length)\n    }\n  }\n\n  focusOnRow (targetIndexToFocus: number) {\n    const numberOfRows = this.attachmentListRows.length\n    let indexToFocus = targetIndexToFocus\n\n    if (targetIndexToFocus >= numberOfRows) {\n      indexToFocus = numberOfRows - 1\n    }\n\n    this.attachmentListRows[indexToFocus].attachmentListRowFileInput.$button.focus()\n  }\n}\n\nexport { ComplianceCommunicationAttachments }\n"],"names":["isInitialised","$root","moduleName","HTMLElement","hasAttribute","isSupported","$scope","document","body","classList","contains","isArray","option","Array","isObject","formatErrorMessage","Component","message","GOVUKFrontendError","_Error","_this","_len","arguments","length","args","_key","call","apply","concat","name","_inheritsLoose","_wrapNativeSuper","Error","SupportError","_GOVUKFrontendError","_this2","supportMessage","HTMLScriptElement","prototype","ConfigError","_GOVUKFrontendError2","_this3","_len2","_key2","ElementError","_GOVUKFrontendError3","messageOrOptions","_this4","component","identifier","element","expectedType","InitError","_GOVUKFrontendError4","componentOrMessage","_this5","_$root","childConstructor","constructor","elementType","checkSupport","checkInitialised","setAttribute","_proto","_createClass","key","get","configOverride","Symbol","ConfigurableComponent","_Component","config","_config","defaults","datasetConfig","normaliseDataset","dataset","mergeConfigs","param","normaliseString","value","property","trimmedValue","trim","output","outputType","type","includes","isFinite","Number","schema","out","entries","Object","properties","_i","_entries","entry","namespace","field","toString","extractConfigByNamespace","formattedConfigObject","configObjects","_i2","_configObjects","configObject","_i3","_Object$keys","keys","override","_newObject","newObject","_i5","_Object$entries2","_Object$entries2$_i","current","keyParts","split","_iterator2","_createForOfIteratorHelperLoose","_step2","done","_step2$value","index","I18n","translations","_config$locale","locale","documentElement","lang","t","lookupKey","options","translation","count","translationPluralForm","getPluralSuffix","match","replacePlaceholders","translationString","formatter","Intl","NumberFormat","supportedLocalesOf","undefined","replace","placeholderWithBraces","placeholderKey","hasOwnProperty","placeholderValue","format","hasIntlPluralRulesSupport","Boolean","window","PluralRules","preferredForm","select","selectPluralFormUsingFallbackRules","console","warn","Math","abs","floor","ruleset","getPluralRulesForLocale","pluralRules","localeShort","pluralRule","pluralRulesMap","languages","arabic","chinese","french","german","irish","russian","scottish","spanish","welsh","n","lastTwo","last","closestAttributeValue","$element","attributeName","$closestElementWithAttribute","closest","getAttribute","FileUpload","_ConfigurableComponen","$input","$button","$status","i18n","id","$announcements","enteredAnotherElement","querySelector","$label","findLabel","createElement","add","ariaDescribedBy","className","innerText","appendChild","commaSpan","containerSpan","buttonSpan","insertAdjacentText","instructionSpan","addEventListener","onClick","bind","event","preventDefault","insertAdjacentElement","onChange","updateDisabledState","observeDisabledState","onDrop","updateDropzoneVisibility","disabled","hideDraggingState","target","Node","dataTransfer","isContainingFiles","showDraggingState","remove","files","dispatchEvent","CustomEvent","fileCount","click","observer","MutationObserver","mutationList","_iterator","_step","mutation","observe","attributes","toggle","freeze","chooseFilesButton","dropInstruction","noFileChosen","multipleFilesChosen","one","other","enteredDropZone","leftDropZone","hasNoTypesInfo","types","isDraggingFiles","some"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}