{"version":3,"file":"all.mjs","sources":["../../src/govuk/all.mjs"],"sourcesContent":["/* eslint-disable no-new */\n\nimport { version } from './common/govuk-frontend-version.mjs'\nimport { 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 { Header } from './components/header/header.mjs'\nimport { NotificationBanner } from './components/notification-banner/notification-banner.mjs'\nimport { Radios } from './components/radios/radios.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 }} [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 console.log(new SupportError())\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 [Header],\n [NotificationBanner, config.notificationBanner],\n [Radios],\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 components.forEach(([Component, config]) => {\n const $elements = $scope.querySelectorAll(\n `[data-module=\"${Component.moduleName}\"]`\n )\n\n $elements.forEach(($element) => {\n try {\n // Only pass config to components that accept it\n 'defaults' in Component\n ? new Component($element, config)\n : new Component($element)\n } catch (error) {\n console.log(error)\n }\n })\n })\n}\n\nexport {\n initAll,\n version,\n\n // Components\n Accordion,\n Button,\n CharacterCount,\n Checkboxes,\n ErrorSummary,\n ExitThisPage,\n Header,\n NotificationBanner,\n Radios,\n SkipLink,\n Tabs\n}\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 {NotificationBannerConfig} [notificationBanner] - Notification Banner config\n */\n\n/**\n * Config for individual components\n *\n * @typedef {import('./components/accordion/accordion.mjs').AccordionConfig} AccordionConfig\n * @typedef {import('./components/accordion/accordion.mjs').AccordionTranslations} AccordionTranslations\n * @typedef {import('./components/button/button.mjs').ButtonConfig} ButtonConfig\n * @typedef {import('./components/character-count/character-count.mjs').CharacterCountConfig} CharacterCountConfig\n * @typedef {import('./components/character-count/character-count.mjs').CharacterCountTranslations} CharacterCountTranslations\n * @typedef {import('./components/error-summary/error-summary.mjs').ErrorSummaryConfig} ErrorSummaryConfig\n * @typedef {import('./components/exit-this-page/exit-this-page.mjs').ExitThisPageConfig} ExitThisPageConfig\n * @typedef {import('./components/exit-this-page/exit-this-page.mjs').ExitThisPageTranslations} ExitThisPageTranslations\n * @typedef {import('./components/notification-banner/notification-banner.mjs').NotificationBannerConfig} NotificationBannerConfig\n */\n\n/**\n * Component config keys, e.g. `accordion` and `characterCount`\n *\n * @typedef {keyof Config} ConfigKey\n */\n"],"names":["initAll","config","_config$scope","isSupported","console","log","SupportError","components","Accordion","accordion","Button","button","CharacterCount","characterCount","Checkboxes","ErrorSummary","errorSummary","ExitThisPage","exitThisPage","Header","NotificationBanner","notificationBanner","Radios","SkipLink","Tabs","$scope","scope","document","forEach","Component","$elements","querySelectorAll","moduleName","$element","error"],"mappings":";;;;;;;;;;;;;;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAOA,CAACC,MAAM,EAAE;AAAA,EAAA,IAAAC,aAAA,CAAA;EACvBD,MAAM,GAAG,OAAOA,MAAM,KAAK,WAAW,GAAGA,MAAM,GAAG,EAAE,CAAA;AAGpD,EAAA,IAAI,CAACE,WAAW,EAAE,EAAE;AAClBC,IAAAA,OAAO,CAACC,GAAG,CAAC,IAAIC,YAAY,EAAE,CAAC,CAAA;AAC/B,IAAA,OAAA;AACF,GAAA;AAEA,EAAA,MAAMC,UAAU,GAAyB,CACvC,CAACC,SAAS,EAAEP,MAAM,CAACQ,SAAS,CAAC,EAC7B,CAACC,MAAM,EAAET,MAAM,CAACU,MAAM,CAAC,EACvB,CAACC,cAAc,EAAEX,MAAM,CAACY,cAAc,CAAC,EACvC,CAACC,UAAU,CAAC,EACZ,CAACC,YAAY,EAAEd,MAAM,CAACe,YAAY,CAAC,EACnC,CAACC,YAAY,EAAEhB,MAAM,CAACiB,YAAY,CAAC,EACnC,CAACC,MAAM,CAAC,EACR,CAACC,kBAAkB,EAAEnB,MAAM,CAACoB,kBAAkB,CAAC,EAC/C,CAACC,MAAM,CAAC,EACR,CAACC,QAAQ,CAAC,EACV,CAACC,IAAI,CAAC,CACN,CAAA;EAIF,MAAMC,MAAM,GAAAvB,CAAAA,aAAA,GAAGD,MAAM,CAACyB,KAAK,KAAA,IAAA,GAAAxB,aAAA,GAAIyB,QAAQ,CAAA;EAEvCpB,UAAU,CAACqB,OAAO,CAAC,CAAC,CAACC,SAAS,EAAE5B,MAAM,CAAC,KAAK;IAC1C,MAAM6B,SAAS,GAAGL,MAAM,CAACM,gBAAgB,CACtC,CAAA,cAAA,EAAgBF,SAAS,CAACG,UAAW,CAAA,EAAA,CACxC,CAAC,CAAA;AAEDF,IAAAA,SAAS,CAACF,OAAO,CAAEK,QAAQ,IAAK;MAC9B,IAAI;AAEF,QAAA,UAAU,IAAIJ,SAAS,GACnB,IAAIA,SAAS,CAACI,QAAQ,EAAEhC,MAAM,CAAC,GAC/B,IAAI4B,SAAS,CAACI,QAAQ,CAAC,CAAA;OAC5B,CAAC,OAAOC,KAAK,EAAE;AACd9B,QAAAA,OAAO,CAACC,GAAG,CAAC6B,KAAK,CAAC,CAAA;AACpB,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAA;AACJ,CAAA;;AAoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;"}