UNPKG

@edugouvfr/ngx-dsfr

Version:

NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).

1 lines 733 kB
{"version":3,"file":"edugouvfr-ngx-dsfr.mjs","sources":["../../../projects/ngx-dsfr-components/src/lib/shared/utils/dom-utils.ts","../../../projects/ngx-dsfr-components/src/lib/components/download/dsfr-mime.type.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/file-utils.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/json-utils.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/ssr-utils.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/local-storage.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/storage-enum.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/string-utils.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/uuid-utils.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/default-value-accessor.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/default-control.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/heading/heading.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/heading/heading.component.html","../../../projects/ngx-dsfr-components/src/lib/shared/components/heading/heading.module.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/heading-level.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/position.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/severity.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/size.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/text-size.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/button.model.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/link-target.model.ts","../../../projects/ngx-dsfr-components/src/lib/shared/models/index.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/link-download/link-download.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/link-download/link-download.component.html","../../../projects/ngx-dsfr-components/src/lib/shared/components/input-group/input-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/input-group/input-group.component.html","../../../projects/ngx-dsfr-components/src/lib/shared/components/pictogram/pictogram.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/pictogram/pictogram.component.html","../../../projects/ngx-dsfr-components/src/lib/shared/components/pictogram/pictogram.module.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/svg-icon/svg-icon.component.ts","../../../projects/ngx-dsfr-components/src/lib/shared/components/svg-icon/svg-icon.module.ts","../../../projects/ngx-dsfr-components/src/lib/shared/config/config-token.ts","../../../projects/ngx-dsfr-components/src/lib/shared/config/config.module.ts","../../../projects/ngx-dsfr-components/src/lib/shared/directives/watch-attr.directive.ts","../../../projects/ngx-dsfr-components/src/lib/shared/properties/messages.en.ts","../../../projects/ngx-dsfr-components/src/lib/shared/properties/messages.fr.ts","../../../projects/ngx-dsfr-components/src/lib/shared/services/config.service.ts","../../../projects/ngx-dsfr-components/src/lib/shared/services/logger.service.ts","../../../projects/ngx-dsfr-components/src/lib/shared/services/lang.service.ts","../../../projects/ngx-dsfr-components/src/lib/shared/services/base-i18n.service.ts","../../../projects/ngx-dsfr-components/src/lib/shared/services/i18n.service.ts","../../../projects/ngx-dsfr-components/src/lib/components/accordion/accordion.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/accordion/accordion.component.html","../../../projects/ngx-dsfr-components/src/lib/components/accordion/accordion.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/accordions-group/accordions-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/accordions-group/accordions-group.component.html","../../../projects/ngx-dsfr-components/src/lib/components/accordions-group/accordions-group.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/alert/alert.size.ts","../../../projects/ngx-dsfr-components/src/lib/components/alert/alert.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/alert/alert.component.html","../../../projects/ngx-dsfr-components/src/lib/components/alert/alert.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/backtotop/backtotop.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/backtotop/backtotop.component.html","../../../projects/ngx-dsfr-components/src/lib/components/backtotop/backtotop.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/badge/badge.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/badge/badge.component.html","../../../projects/ngx-dsfr-components/src/lib/components/badge/badge.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/badge/badges.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/badges-group/badges-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/badges-group/badges-group.component.html","../../../projects/ngx-dsfr-components/src/lib/components/badges-group/badges-group.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/link/link.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/link/link.component.html","../../../projects/ngx-dsfr-components/src/lib/components/link/item-link.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/ngx-dsfr-components/src/lib/components/breadcrumb/breadcrumb.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/button/button.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/button/button.component.html","../../../projects/ngx-dsfr-components/src/lib/components/button/button.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/buttons-group/buttons-group.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/buttons-group/buttons-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/buttons-group/buttons-group.component.html","../../../projects/ngx-dsfr-components/src/lib/components/buttons-group/buttons-group.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/callout/callout.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/callout/callout.component.html","../../../projects/ngx-dsfr-components/src/lib/components/callout/callout.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/link/link.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/tag/tag.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/tag/tag.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/tag/tag.component.html","../../../projects/ngx-dsfr-components/src/lib/components/tag/tag.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/tags-group/tags-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/tags-group/tags-group.component.html","../../../projects/ngx-dsfr-components/src/lib/components/tags-group/tags-group.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/card/base-panel.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/card/base-panel.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/card/card.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/card/card.component.html","../../../projects/ngx-dsfr-components/src/lib/components/card/card.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/card/card.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-manager/consent-service/consent-service.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-manager/consent-service/consent-service.component.html","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-manager/consent-manager.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-manager/consent-manager.component.html","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-banner.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-banner.component.html","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-manager/consent-manager.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/consent-banner/consent-banner.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/transcription/transcription.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/transcription/transcription.component.html","../../../projects/ngx-dsfr-components/src/lib/components/content/content.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/content/content.component.html","../../../projects/ngx-dsfr-components/src/lib/components/content/content.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/content/media.ts","../../../projects/ngx-dsfr-components/src/lib/components/display/display.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/display/display.component.html","../../../projects/ngx-dsfr-components/src/lib/components/display/display.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/download/download-variant.ts","../../../projects/ngx-dsfr-components/src/lib/components/download/download.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/download/download.component.html","../../../projects/ngx-dsfr-components/src/lib/components/download/download.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/downloads-group/downloads-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/downloads-group/downloads-group.component.html","../../../projects/ngx-dsfr-components/src/lib/components/downloads-group/downloads-group.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/footer/footer.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/footer/footer.component.html","../../../projects/ngx-dsfr-components/src/lib/components/footer/footer.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/franceconnect/franceconnect.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/franceconnect/franceconnect.component.html","../../../projects/ngx-dsfr-components/src/lib/components/search-bar/search-bar.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/search-bar/search-bar.component.html","../../../projects/ngx-dsfr-components/src/lib/components/search-bar/search-bar.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/translate/translate.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/translate/translate.component.html","../../../projects/ngx-dsfr-components/src/lib/components/translate/translate.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/header/mega-menu/mega-menu.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/header/mega-menu/mega-menu.component.html","../../../projects/ngx-dsfr-components/src/lib/components/header/header.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/header/header.component.html","../../../projects/ngx-dsfr-components/src/lib/components/header/header.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/highlight/highlight.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/highlight/highlight.component.html","../../../projects/ngx-dsfr-components/src/lib/components/highlight/highlight.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/logo/logo.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/logo/logo.component.html","../../../projects/ngx-dsfr-components/src/lib/components/logo/logo.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/modal/modal.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/modal/modal.component.html","../../../projects/ngx-dsfr-components/src/lib/components/modal/modal.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/notice/notice.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/notice/notice.component.html","../../../projects/ngx-dsfr-components/src/lib/components/notice/notice.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/pagination/page-link.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/pagination/page-link.component.html","../../../projects/ngx-dsfr-components/src/lib/components/pagination/pagination-calc.ts","../../../projects/ngx-dsfr-components/src/lib/components/pagination/pagination.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/pagination/pagination.component.html","../../../projects/ngx-dsfr-components/src/lib/components/pagination/previous-page/previous-page.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/pagination/previous-page/previous-page.component.html","../../../projects/ngx-dsfr-components/src/lib/components/pagination/pagination.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/quote/quote.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/quote/quote.component.html","../../../projects/ngx-dsfr-components/src/lib/components/quote/quote.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/range/range.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/range/range.component.html","../../../projects/ngx-dsfr-components/src/lib/components/segmented-control/segmented-control.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/segmented-control/segmented-control.component.html","../../../projects/ngx-dsfr-components/src/lib/components/segmented-control/segmented-control.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/share/share.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/share/share-link/share-link.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/share/share-link/share-link.component.html","../../../projects/ngx-dsfr-components/src/lib/components/share/share.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/share/share.component.html","../../../projects/ngx-dsfr-components/src/lib/components/share/share.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/sidemenu/sidemenu.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/sidemenu/sidemenu.component.html","../../../projects/ngx-dsfr-components/src/lib/components/sidemenu/sidemenu.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/skiplinks/skiplinks.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/skiplinks/skiplinks.component.html","../../../projects/ngx-dsfr-components/src/lib/components/skiplinks/skiplinks.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/stepper/stepper.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/stepper/stepper.component.html","../../../projects/ngx-dsfr-components/src/lib/components/stepper/stepper.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/summary/summary.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/summary/summary.component.html","../../../projects/ngx-dsfr-components/src/lib/components/summary/summary.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/data-table.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/table.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/table/table.component.html","../../../projects/ngx-dsfr-components/src/lib/components/table/table.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/tabs/tabs.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/tabs/tab.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/tabs/tab.component.html","../../../projects/ngx-dsfr-components/src/lib/components/tabs/tabs.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/tabs/tabs.component.html","../../../projects/ngx-dsfr-components/src/lib/components/tabs/tabs.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/tile/tile.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/tile/tile.component.html","../../../projects/ngx-dsfr-components/src/lib/components/tile/tile.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/ngx-dsfr-components/src/lib/components/tooltip/tooltip-button.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/tooltip/tooltip-button.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/fieldset/form-fieldset-element.directive.ts","../../../projects/ngx-dsfr-components/src/lib/forms/fieldset/base-fieldset.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/fieldset/form-fieldset.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/fieldset/form-fieldset.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/fieldset/form-fieldset.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-checkbox/form-checkbox.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-checkbox/form-checkbox.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-checkbox/form-checkbox.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-input/form-input.model.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-input/base-input.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-input/base-input-combo.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-input/form-input.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-input/form-input.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-input/form-input.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-email/email-utils.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-email/form-email.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-email/form-email.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-password/form-password.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-password/form-password.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-password/form-password.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/default-radio.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-radio/form-radio.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-radio/form-radio.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-radio/form-radio.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-radio-rich/form-radio-rich.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-radio-rich/form-radio-rich.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-radio-rich/form-radio-rich.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-select/form-select.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-select/form-select.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-select/form-select.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-tel/phone-number-utils.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-tel/form-tel.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-toggle/form-toggle.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-toggle/form-toggle.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-toggle/form-toggle.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-toggles-group/form-toggles-group.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-toggles-group/form-toggles-group.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-toggles-group/form-toggles-group.module.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-upload/upload.component.ts","../../../projects/ngx-dsfr-components/src/lib/forms/form-upload/upload.component.html","../../../projects/ngx-dsfr-components/src/lib/forms/form-upload/upload.module.ts","../../../projects/ngx-dsfr-components/src/lib/components/follow/follow.model.ts","../../../projects/ngx-dsfr-components/src/lib/components/follow/follow-link/follow-link.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/follow/follow-link/follow-link.component.html","../../../projects/ngx-dsfr-components/src/lib/components/follow/follow.component.ts","../../../projects/ngx-dsfr-components/src/lib/components/follow/follow.component.html","../../../projects/ngx-dsfr-components/src/lib/components/follow/follow.module.ts","../../../projects/ngx-dsfr-components/src/lib/pages/login/login.component.ts","../../../projects/ngx-dsfr-components/src/lib/pages/login/login.component.html","../../../projects/ngx-dsfr-components/src/lib/pages/response/response.component.ts","../../../projects/ngx-dsfr-components/src/lib/pages/response/response.component.html","../../../projects/ngx-dsfr-components/src/lib/pages/response/response.module.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/address/address.component.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/address/address.component.html","../../../projects/ngx-dsfr-components/src/lib/patterns/address/address.module.ts","../../../projects/ngx-dsfr-components/src/lib/shared/utils/date-utils.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/date/date.model.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/date/date.component.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/date/date.component.html","../../../projects/ngx-dsfr-components/src/lib/patterns/date/date.module.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/name/name.component.ts","../../../projects/ngx-dsfr-components/src/lib/patterns/name/name.component.html","../../../projects/ngx-dsfr-components/src/lib/patterns/name/name.module.ts","../../../projects/ngx-dsfr-components/src/public-api.ts","../../../projects/ngx-dsfr-components/src/edugouvfr-ngx-dsfr.ts"],"sourcesContent":["import { ElementRef } from '@angular/core';\n\nexport class DomUtils {\n private constructor() {}\n\n static surroundChildWithli(parent: ElementRef<any>, childTagName: string): void {\n const nativeElement = parent.nativeElement;\n const children = nativeElement.getElementsByTagName(childTagName);\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n const li = document.createElement('li');\n child.replaceWith(li);\n li.appendChild(child);\n }\n }\n}\n","export type DsfrMimeType = T[keyof T];\ntype T = typeof DsfrMimeTypeConst;\n\n/** cf. https://developer.mozilla.org/fr/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types */\nexport namespace DsfrMimeTypeConst {\n // TEXT\n export const TEXT_CSS = 'text/css';\n export const TEXT_CSV = 'text/csv';\n export const TEXT_HTML = 'text/html';\n export const TEXT_CALENDAR = 'text/calendar';\n export const TEXT_PLAIN = 'text/plain';\n export const TEXT_XML = 'text/xml';\n\n // FONT\n export const FONT_OTF = 'font/otf';\n export const FONT_TTF = 'font/ttf';\n export const FONT_WOFF = 'font/woff';\n export const FONT_WOFF2 = 'font/woff2';\n\n // IMAGE\n export const IMAGE_BMP = 'image/bmp';\n export const IMAGE_GIF = 'image/gif';\n export const IMAGE_ICON = 'image/x-icon';\n export const IMAGE_JPEG = 'image/jpeg';\n export const IMAGE_PNG = 'image/png';\n export const IMAGE_SVG = 'image/svg+xml';\n export const IMAGE_TIFF = 'image/tiff';\n export const IMAGE_WEBP = 'image/webp';\n\n // AUDIO\n export const AUDIO_3GPP = 'audio/3gpp';\n export const AUDIO_3GPP2 = 'audio/3gpp2';\n export const AUDIO_ACC = 'audio/aac';\n export const AUDIO_OGG = 'audio/ogg';\n export const AUDIO_MIDI = 'audio/midi';\n export const AUDIO_WAV = 'audio/x-wav';\n export const AUDIO_WEBM = 'audio/webm';\n\n // VIDEO\n export const VIDEO_3GPP = 'video/3gpp';\n export const VIDEO_3GPP2 = 'video/3gpp2';\n export const VIDEO_MPEG = 'video/mpeg';\n export const VIDEO_OGG = 'video/ogg';\n export const VIDEO_WEBM = 'video/webm';\n\n // APPLICATION\n export const APPLICATION_ABIWORD = 'application/x-abiword';\n export const APPLICATION_CSH = 'application/x-csh';\n export const APPLICATION_EPUB = 'application/epub+zip';\n export const APPLICATION_FLASH = 'application/x-shockwave-flash';\n export const APPLICATION_FORM_URLENCODED = 'application/x-www-form-urlencoded';\n export const APPLICATION_JAVASCRIPT = 'application/javascript';\n export const APPLICATION_JSON = 'application/json';\n export const APPLICATION_OCTET_STREAM = 'application/octet-stream';\n export const APPLICATION_OGG = 'application/ogg';\n export const APPLICATION_PDF = 'application/pdf';\n export const APPLICATION_RTF = 'application/rtf';\n export const APPLICATION_TYPESCRIPT = 'application/typescript';\n export const APPLICATION_XML = 'application/xml';\n export const APPLICATION_XML_ATOM = 'application/atom+xml';\n export const APPLICATION_XML_SVG = 'application/svg+xml';\n export const APPLICATION_XML_XHTML = 'application/xhtml+xml';\n export const APPLICATION_XML_XUL = 'application/vnd.mozilla.xul+xml';\n\n // ARCHIVE\n export const ARCHIVE_7Z_COMPRESSED = 'application/x-7z-compressed';\n export const ARCHIVE_BZIP = 'application/x-bzip';\n export const ARCHIVE_BZIP2 = 'application/x-bzip2';\n export const ARCHIVE_JAVA = 'application/java-archive';\n export const ARCHIVE_GZIP = 'application/gzip';\n export const ARCHIVE_RAR_COMPRESSED = 'application/x-rar-compressed';\n export const ARCHIVE_TAR = 'application/x-tar';\n export const ARCHIVE_RAR = 'application/vnd.rar';\n export const ARCHIVE_ZIP = 'application/zip';\n export const ARCHIVE_ZIP_COMPRESSED = 'application/x-zip-compressed';\n\n // MICROSOFT\n export const MS_FONT_OBJECT = 'application/vnd.ms-fontobject';\n export const MS_EXCEL = 'application/vnd.ms-excel';\n export const MS_EXCEL_XML = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n export const MS_POWERPOINT = 'application/vnd.ms-powerpoint';\n export const MS_POWERPOINT_XML = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\n export const MS_VIDEO = 'video/x-msvideo';\n export const MS_VISIO = 'application/vnd.visio';\n export const MS_WORD = 'application/msword';\n export const MS_WORD_XML = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n\n // Autres\n export const MULTIPART_FORM_DATA = 'multipart/form-data';\n export const SCRIPT_SHELL = 'application/x-sh';\n export const OPEN_PRESENTATION = 'application/vnd.oasis.opendocument.presentation';\n export const OPEN_SPREADSHEET = 'application/vnd.oasis.opendocument.spreadsheet';\n export const OPEN_TEXT = 'application/vnd.oasis.opendocument.text';\n}\n\nexport function convertMimeType2FileFormat(mineType: string): FileFormat | undefined {\n const element = mimeType2FileFormat.find((e) => e[0] === mineType);\n return element ? element[1] : undefined;\n}\n\nenum FileFormat {\n XLS = 'XLS',\n XLSX = 'XLSX',\n PPT = 'PPT',\n PPTX = 'PPTX',\n DOC = 'DOC',\n DOCX = 'DOCX',\n ODS = 'ODS',\n ODP = 'ODP',\n ODT = 'ODT',\n XML = 'XML',\n JPG = 'JPG',\n PNG = 'PNG',\n PDF = 'PDF',\n CSV = 'CSV',\n HTML = 'HTML',\n SVG = 'SVG',\n TXT = 'TXT',\n ZIP = 'ZIP',\n SEVEN_ZIP = '7Z',\n RAR = 'RAR',\n XHTML = 'XHTML',\n BMP = 'BMP',\n GIF = 'GIF',\n TIF = 'TIF',\n RTF = 'RTF',\n GZIP = 'GZIP',\n TAR = 'TAR',\n}\n\nconst mimeType2FileFormat: [DsfrMimeType | string, FileFormat][] = [\n [DsfrMimeTypeConst.APPLICATION_PDF, FileFormat.PDF],\n [DsfrMimeTypeConst.APPLICATION_RTF, FileFormat.RTF],\n [DsfrMimeTypeConst.APPLICATION_XML, FileFormat.XML],\n [DsfrMimeTypeConst.APPLICATION_XML_ATOM, FileFormat.XML],\n [DsfrMimeTypeConst.APPLICATION_XML_XHTML, FileFormat.XHTML],\n\n [DsfrMimeTypeConst.ARCHIVE_7Z_COMPRESSED, FileFormat.SEVEN_ZIP],\n [DsfrMimeTypeConst.ARCHIVE_GZIP, FileFormat.GZIP],\n [DsfrMimeTypeConst.ARCHIVE_RAR, FileFormat.RAR],\n [DsfrMimeTypeConst.ARCHIVE_TAR, FileFormat.TAR],\n [DsfrMimeTypeConst.ARCHIVE_ZIP, FileFormat.ZIP],\n [DsfrMimeTypeConst.ARCHIVE_ZIP_COMPRESSED, FileFormat.ZIP],\n\n [DsfrMimeTypeConst.IMAGE_BMP, FileFormat.BMP],\n [DsfrMimeTypeConst.IMAGE_GIF, FileFormat.GIF],\n [DsfrMimeTypeConst.IMAGE_JPEG, FileFormat.JPG],\n [DsfrMimeTypeConst.IMAGE_PNG, FileFormat.PNG],\n [DsfrMimeTypeConst.IMAGE_SVG, FileFormat.SVG],\n [DsfrMimeTypeConst.IMAGE_TIFF, FileFormat.TIF],\n\n [DsfrMimeTypeConst.MS_EXCEL, FileFormat.XLS],\n [DsfrMimeTypeConst.MS_EXCEL_XML, FileFormat.XLSX],\n [DsfrMimeTypeConst.MS_POWERPOINT, FileFormat.PPT],\n [DsfrMimeTypeConst.MS_POWERPOINT_XML, FileFormat.PPTX],\n [DsfrMimeTypeConst.MS_WORD, FileFormat.DOC],\n [DsfrMimeTypeConst.MS_WORD_XML, FileFormat.DOCX],\n\n [DsfrMimeTypeConst.OPEN_PRESENTATION, FileFormat.ODP],\n [DsfrMimeTypeConst.OPEN_SPREADSHEET, FileFormat.ODS],\n [DsfrMimeTypeConst.OPEN_TEXT, FileFormat.ODT],\n\n [DsfrMimeTypeConst.TEXT_CSV, FileFormat.CSV],\n [DsfrMimeTypeConst.TEXT_HTML, FileFormat.HTML],\n [DsfrMimeTypeConst.TEXT_PLAIN, FileFormat.TXT],\n [DsfrMimeTypeConst.TEXT_XML, FileFormat.XML],\n];\n","import { convertMimeType2FileFormat } from '../../components/download/dsfr-mime.type';\n\nconst KILO_OCTETS = 1024;\nconst MEGA_OCTETS = KILO_OCTETS * 1024;\nconst GIGA_OCTETS = MEGA_OCTETS * 1024;\n\n/**\n * Construit le libellé de détail dans un composant de téléchargement lorsque ce libellé n'est pas fourni par le Dsfr\n * @param mimeType Type mime du fichier\n * @param sizeBytes Nombre d'octets\n * @param sizeUnit Unité utilisée dans la restitution\n * @return par exemple 'PDF - 10 octets'\n */\nexport function downloadDetail(mimeType: string, sizeBytes: number | undefined, sizeUnit: DsfrFileSizeUnit): string {\n return !sizeBytes\n ? convertMimeType2FileFormat(mimeType) || ''\n : convertMimeType2FileFormat(mimeType) + ' - ' + fileSizeToString(sizeBytes, sizeUnit);\n}\n\n/**\n * Retourne la taille sous forme de string sous forme de 'nombre unité'\n * @param bytes Taille à transformer exprimée en octets\n * @param sizeUnit Si true, l'unité sera en bytes (KB, MB, ... ) sinon en octets (ko, mo, ...)\n */\nfunction fileSizeToString(bytes: number, sizeUnit?: DsfrFileSizeUnit): string {\n if (!bytes) return '';\n\n const bytesUnit = sizeUnit === 'bytes';\n\n let fileSize: number;\n let fileSizeUnit: string;\n\n if (bytes < KILO_OCTETS) {\n fileSize = bytes;\n fileSizeUnit = bytesUnit ? FileSizeUnit.BYTES : FileSizeUnit.OCTETS;\n } else if (bytes < MEGA_OCTETS) {\n fileSize = bytes / 1024;\n fileSizeUnit = bytesUnit ? FileSizeUnit.KB : FileSizeUnit.KO;\n } else if (bytes < GIGA_OCTETS) {\n fileSize = bytes / 1048576;\n fileSizeUnit = bytesUnit ? FileSizeUnit.MB : FileSizeUnit.MO;\n } else {\n fileSize = bytes / 1073741824;\n fileSizeUnit = bytesUnit ? FileSizeUnit.GB : FileSizeUnit.GO;\n }\n\n fileSize = Math.round(fileSize * 100) / 100;\n\n // @since 1.8, les options régionales sont prise en compte pour les décimales\n //FIXME: ne devrait-ton pas transmettre la locale depuis l'extérieur de manière à pouvoir la transmettre depuis i18nService ?\n const localSize = fileSize.toLocaleString();\n return localSize + ' ' + fileSizeUnit;\n}\n\n// -- Constantes d'unités de taille de fichier -------------------------------------------------------------------------\n\n// TODO Un peu bizarre ces noms ?\nenum FileSizeUnit {\n OCTETS = 'octets',\n KO = 'ko',\n MO = 'Mo',\n GO = 'Go',\n BYTES = 'bytes',\n KB = 'KB',\n MB = 'MB',\n GB = 'GB',\n}\n\nexport namespace DsfrFileSizeUnitConst {\n export const BYTES = 'bytes';\n export const OCTETS = 'octets';\n}\n\nexport type DsfrFileSizeUnit = (typeof DsfrFileSizeUnitConst)[keyof typeof DsfrFileSizeUnitConst];\n","/**\n * https://www.w3resource.com/JSON/JSONPath-with-JavaScript.php\n * @param obj : object|array This parameter represents the Object representing the JSON structure.\n * @param path : string This parameter represents JSONPath expression string.\n * @return une valeur extrait de l'objet Json\n */\nexport function jsonPath2Value(obj: any, path: string): any {\n const keys = path.split('.');\n let value = obj; // value est soit un objet JSON, soit une valeur terminale\n keys.forEach((key) => {\n // key, ex: 'labels[20]'\n const matchArr = key.match(/([^\\[]*)\\[(\\d*)\\]/);\n const k = matchArr ? matchArr[1] : undefined; // clé sans l'indice, ex : 'labels'\n const i = matchArr ? matchArr[2] : undefined; // indice, ex : 20\n value = k && i ? value[k][i] : value[key];\n });\n return value;\n}\n","/**\n * La fonction permet de savoir si le code en cours s'exécute côté serveur ou côté browser.\n */\nexport function isOnBrowser() {\n return typeof window !== 'undefined';\n}\n","import { isOnBrowser } from './ssr-utils';\n\n/**\n * Les méthodes statiques de cette classe permettent de gérer le local storage uniquement si le code s'exécute côté browser.\n */\nexport abstract class LocalStorage {\n /**\n * The setItem() method of the Storage interface, when passed a key name and value, will add that key to the given\n * Storage object, or update that key's value if it already exists.\n */\n static set(key: string, value: string): void {\n if (isOnBrowser()) window.localStorage?.setItem(key, value);\n }\n\n /**\n * The getItem() method of the Storage interface, when passed a key name, will return that key's value, or null if\n * he key does not exist, in the given Storage object.\n * @return Signature identique à l'interface Storage.getItem(key: string): string | null\n */\n static get(key: string): string | null {\n return isOnBrowser() ? window.localStorage?.getItem(key) : null;\n }\n\n /**\n * The removeItem() method of the Storage interface, when passed a key name, will remove that key from the given\n * Storage object if it exists. The Storage interface of the Web Storage API provides access to a\n * particular domain's session or local storage.\n */\n static remove(key: string): void {\n if (isOnBrowser()) window.localStorage?.removeItem(key);\n }\n}\n","export enum StorageEnum {\n SCHEME = 'scheme', // display type\n REMEMBER_ME = 'rememberMe',\n LOGIN = 'login', // remember me dans la page de login\n // 'lang' pour la langue (dans _commons)\n}\n","/**\n * Retourne vrai si la string 's' est null, undefined ou vide.\n * @param s la chaïne à considére\n */\nexport function isStringEmptyOrNull(s: string | null | undefined): boolean {\n return !s || s.trim() === '';\n}\n","import { v4 as uuidv4 } from 'uuid';\n\n/**\n * Fournit un identifiant unique de type string basé, actuellement, sur uuidv4.\n */\nexport function newUniqueId(): string {\n return uuidv4();\n}\n","import { Component, Input } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\n/**\n * Base class for all ControlValueAccessor classes defined in Forms package. Contains common logic and utility functions.\n * Le type de `value` est : T | undefined, undefined par défaut. Par exemple si on manipule un input de type number, celui-ci\n * sera initialisé à undefined par défaut.\n */\n// Même si on ne précise pas undefined, à l'exécution, c'est quand même le cas.\n// Même si on indique un type number, à l'exécution, si l'utilisateur saisie \"1a\", value sera de type string\n@Component({\n template: '',\n})\nexport abstract class DefaultValueAccessorComponent<T> implements ControlValueAccessor {\n /**\n * Permet de désactiver le champ.\n */\n @Input() disabled = false;\n\n private _value: T | undefined;\n\n get value(): T | undefined {\n return this._value;\n }\n\n /**\n * La valeur gérée par le champ de formulaire.\n */\n @Input() set value(value: T | undefined) {\n this._value = value;\n this.fnOnChange(this.value);\n this.fnOnTouched();\n }\n\n /**\n * Writes a new value to the element.\n * This method is called by the forms API to write to the view when programmatic changes from model to view are requested.\n *\n * @internal\n */\n writeValue(value: T | undefined): void {\n this._value = value;\n }\n\n /**\n * Registers a callback function that is called when the control's value changes in the UI.\n * When the value changes in the UI, call the registered function to allow the forms API to update itself:\n * host: {\n * '(change)': '_onChange($event.target.value)'\n * }\n * @internal\n */\n registerOnChange(fn: (_: any) => void): void {\n this.fnOnChange = fn;\n }\n\n /**\n * Registers a callback function that is called by the forms API on initialization to update the form model on blur.\n * On blur (or equivalent), your class should call the registered function to allow the forms API to update itself:\n * host: {\n * '(blur)': '_onTouched()'\n * }\n * @internal\n */\n registerOnTouched(fn: () => void): void {\n this.fnOnTouched = fn;\n }\n\n /**\n * Function that is called by the forms API when the control status changes to or from 'DISABLED'.\n * Depending on the status, it enables or disables the appropriate DOM element.\n *\n * @internal\n */\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** @internal */\n fnOnChange = (_: T | undefined) => {};\n\n /** @internal */\n fnOnTouched = () => {};\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { newUniqueId } from '../utils';\nimport { DefaultValueAccessorComponent } from './default-value-accessor.component';\n\n/**\n * Ce composant est le contrôle abstrait des contrôles Dsfr possédant un id, un name et un label.\n */\n@Component({\n template: '',\n})\n// Renamed from AbstractControlComponent\nexport abstract class DefaultControlComponent<T> extends DefaultValueAccessorComponent<T> implements OnInit {\n @Input() ariaControls: string;\n\n /**\n * Attribut `id` du champ, généré automatiquement par défaut.\n */\n @Input() inputId: string;\n\n /**\n * Texte additionnel décrivant le champ.\n */\n @Input() hint: string | undefined; // Le composant upload utilise la valeur undefined\n\n /**\n * Libellé du champ.\n */\n @Input() label: string;\n\n /**\n * Sera utilisé pour positionner un attribut `name` sur le champ de formulaire.\n */\n @Input() name: string;\n\n /**\n * @deprecated since 1.11, l'id sur un label ne sera plus utilisé en 2.0\n * @internal\n */\n labelId: string;\n\n private _id: string;\n\n /**\n * Cet attribut doit être utilisé en tant que propriété et non en attribut, ex. `[id]=\"'monid'\"`.\n *\n * @deprecated since 1.5, utiliser `inputId` à la place.\n */\n @Input() set id(value: string) {\n if (value) {\n this._id = value;\n this.inputId ??= this._id;\n }\n }\n\n /** @internal */\n ngOnInit() {\n this.inputId = this.inputId || newUniqueId(); // même si this.inputId = '', l'id sera valorisé (contrairement à '')\n this.labelId = `${this.inputId}-label`;\n }\n}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DsfrHeadingLevel } from '../../models';\n\n@Component({\n selector: 'edu-heading',\n templateUrl: './heading.component.html',\n encapsulation: ViewEncapsulation.None,\n})\n/**\n * Permet de définir le titre de composant d'un niveau de titre de `<h2>` à `<h6>`, avec un niveau par défaut de `<h2>` à `<h6>` ou `<p>`.\n * Ne permets pas la projection du titre.\n */\nexport class HeadingComponent {\n /** Classe du titre. */\n @Input() customClass: string;\n\n /** Le titre de l'accordéon est du texte simple. */\n @Input() heading: string;\n\n /** id du titre @since 1.9 */\n @Input() headingId: string;\n\n /** Le niveau du titre dans la structure. */\n @Input() level: DsfrHeadingLevel | undefined;\n\n /** Niveau par défaut si 'level' n'est pas renseigné. */\n @Input() defaultLevel: DsfrHeadingLevel | 'P';\n\n /** @internal */\n getLevel(): DsfrHeadingLevel | 'P' {\n return this.level ?? this.defaultLevel;\n }\n}\n","<ng-container [ngSwitch]=\"getLevel()\">\n <h2 *ngSwitchCase=\"'H2'\" [attr.id]=\"headingId || null\" [class]=\"customClass\">\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n </h2>\n <h3 *ngSwitchCase=\"'H3'\" [attr.id]=\"headingId || null\" [class]=\"customClass\">\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n </h3>\n <h4 *ngSwitchCase=\"'H4'\" [attr.id]=\"headingId || null\" [class]=\"customClass\">\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n </h4>\n <h5 *ngSwitchCase=\"'H5'\" [attr.id]=\"headingId || null\" [class]=\"customClass\">\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n </h5>\n <h6 *ngSwitchCase=\"'H6'\" [attr.id]=\"headingId || null\" [class]=\"customClass\">\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n </h6>\n <p *ngSwitchCase=\"'P'\" [attr.id]=\"headingId || null\" [class]=\"customClass\">\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n </p>\n <p *ngSwitchDefault [attr.id]=\"headingId || null\" [class]=\"customClass\">\n <ng-container *ngTemplateOutlet=\"headingTemplate\"></ng-container>\n </p>\n</ng-container>\n\n<ng-template #headingTemplate>\n <ng-container *ngIf=\"heading; else headingContentTemplate\"><span [outerHTML]=\"heading\"></span></ng-container>\n</ng-template>\n\n<ng-template #headingContentTemplate>\n <ng-content></ng-content>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HeadingComponent } from './heading.component';\n\n@NgModule({\n declarations: [HeadingComponent],\n exports: [HeadingComponent],\n imports: [CommonModule],\n})\nexport class HeadingModule {}\n","/**\n * Constantes des niveaux de titre.\n */\nexport namespace DsfrHeadingLevelConst {\n /** @deprecated (@since 1.8) use undefined instead */\n export const NONE = 'none';\n export const H2 = 'H2';\n export const H3 = 'H3';\n export const H4 = 'H4';\n export const H5 = 'H5';\n export const H6 = 'H6';\n}\n\n/**\n * Niveaux de titre de H2 à H6 ou NONE (indique alors qu'il faut utiliser une balise <p>)\n */\nexport type DsfrHeadingLevel = (typeof DsfrHeadingLevelConst)[keyof typeof DsfrHeadingLevelConst];\n","/**\n * Les positions sous forme énumérées.\n */\nexport namespace DsfrPositionConst {\n export const LEFT = 'left';\n export const RIGHT = 'right';\n}\n\n/**\n * Les positions DSFR.\n */\nexport type DsfrPosition = (typeof DsfrPositionConst)[keyof typeof DsfrPositionConst];\n","/**\n * Les constantes des niveaux de sévérité DSFR.\n */\nexport namespace DsfrSeverityConst {\n export const INFO = 'info';\n export const SUCCESS = 'success';\n export const WARNING = 'warning';\n export const ERROR = 'error';\n}\n\n/**\n * Les niveaux de sévérité DSFR exposées sous forme de type.\n */\nexport type DsfrSeverity = (typeof DsfrSeverityConst)[keyof typeof DsfrSeverityConst];\n","/**\n * Les tailles sous forme énumérées.\n */\nexport namespace DsfrSizeConst {\n export const SM = 'SM';\n export const MD = 'MD';\n export const LG = 'LG';\n}\n\n/**\n * Les tailles standards DSFR : SM, MD, LG.\n */\nexport type DsfrSize = (typeof DsfrSizeConst)[keyof typeof DsfrSizeConst];\n","/**\n * Les tailles de texte sous forme énumérées.\n */\nexport namespace DsfrTextSizeConst {\n export const XS = 'XS';\n export const SM = 'SM';\n export const MD = 'MD';\n export const LG = 'LG';\n export const XL = 'XL';\n}\n\n/**\n * Les tailles DSFR.\n * @see https://www.systeme-de-design.gouv.fr/elements-d-interface/fondamentaux-de-l-identite-de-l-etat/typographie > Corps de texte - Body\n */\nexport type DsfrTextSize = (typeof DsfrTextSizeConst)[keyof typeof DsfrTextSizeConst];\n","import { DsfrPosition, DsfrSize } from '../../shared';\n\n/** Interface traduite en bouton par certains composants de la librairie. */\nexport interface DsfrButton {\n /** Libellé du bouton. */\n label: string;\n\n /** Type du button,'submit' par défaut. */\n type?: DsfrButtonType;\n\n /** Message du tooltip (attribut title) du bouton. */\n tooltipMessage?: string;\n\n /** Style du bouton, 'primary' par défaut. */\n variant?: DsfrButtonVariant;\n\n /** Taille du bouton, 'MD' par défaut */\n size?: DsfrSize;\n\n /** Nom de l'icône. */\n icon?: string;\n\n /** Position de l'icône définie, 'left' par défaut. */\n iconPosition?: DsfrPosition;\n\n /** Permet de désactiver le bouton d'action, 'false' par défaut. */\n disabled?: boolean;\n\n /** Permet de passer le libellé du bouton en majuscules, 'false' par défaut. */\n uppercase?: boolean;\n\n /** Permet d'activer un visuel dénotant un \"chargement\" (busy), 'false' par défaut. */\n loader?: boolean;\n\n /** [accessibilité] Spécifie le libellé qui sera retranscrit par les narrateurs d'écran. */\n ariaLabel?: string;\n\n /** Permet d'inverser le contraste du marqueur de focus, 'false' par défaut. */\n invertedOutlineContrast?: boolean;\n\n /**Permet d'identifier le button. */\n id?: string;\n}\n\n/**\n * Les types du bouton sous forme énumérée.\n */\nexport namespace DsfrButtonTypeConst {\n export const SUBMIT = 'submit';\n export const RESET = 'reset';\n export const BUTTON = 'button';\n}\n\n/**\n * Le type d'un bouton au sens HTML.\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button\n */\ntype Type = typeof DsfrButtonTypeConst;\nexport type DsfrButtonType = Type[keyof Type];\n\n/**\n * Les constantes dénotant les variantes du bouton.\n */\nexport namespace DsfrButtonVariantConst {\n export const PRIMARY = 'primary';\n export const SECONDARY = 'secondary';\n export const TERTIARY = 'tertiary';\n export const TERTIARY_NO_OUTLINE = 'tertiary-no-outline';\n}\n/**\n * Les variantes du bouton exportées en tant que type.\n */\ntype Variant = typeof DsfrButtonVariantConst;\nexport type DsfrButtonVariant = Variant[keyof Variant];\n","/**\n * Constantes qui correspondent aux valeurs possibles de l'attribut target d'un lien html.\n */\nexport namespace DsfrLinkTargetConst {\n export const BLANK = '_blank';\n export const SELF = '_self';\n export const PARENT = '_parent';\n export const TOP = '_top';\n}\n\n/** @deprecated since 1.4 use DsfrLinkTargetConst instead */\nexport namespace DsfrTargetLinkConst {\n export const BLANK = '_blank';\n export const SELF = '_self';\n export const PARENT = '_parent';\n export const TOP = '_top';\n}\n\n/**\n * Les constantes target exposées sous forme de type.\n */\nexport type DsfrLinkTarget = (typeof DsfrLinkTargetConst)[keyof typeof DsfrLinkTargetConst];\n\n/** @deprecated since 1.4 use DsfrLinkTarget instead */\nexport type DsfrTargetLink = DsfrLinkTarget;\n","// Types\nexport * from './icon';\nexport * from './heading-level';\nexport * from './position';\nexport * from './severity';\nexport * from './size';\nexport * from './text-size';\n\n// Interfaces\nexport * from './anchor-link.model';\nexport * from './button.model';\nexport * from './link-target.model';\nexport * from './link.model';\nexport * from './navigation.model';\nexport * from './option.model';\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DsfrLink, DsfrLinkTarget, DsfrPositionConst } from '../../models';\n\n@Component({\n selector: 'edu-link-download',\n templateUrl: './link-download.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CommonModule, RouterModule],\n})\n/** Ce composant permet de gérer facilement une ancre href ou un `routerLink` sans ajout de styles.\n * Utilisé par le `header`, `footer`, `breadcrumb` et `sidemenu`. */\nexport class LinkDownloadComponent {\n /** Classe personnalisée du composant, par exemple, `fr-btn`, `fr-nav__link`, ... */\n @Input() customClass: string;\n\n /**\n * Active la version download avec l'attribut download.\n * Permet l'utilisation de `downloadAssessFile` et `langCode`\n */\n @Input() downloadDirect: boolean | string = false;\n\n /** Option de détail de téléchargement renseigné automatiquement.\n * Si la valeur est 'bytes', l'unité sera en Bytes\n */\n @Input() downloadAssessFile: boolean | 'bytes' = false;\n\n /**\n * Langue courante. hreflang ne sera indiquée que différent de la langue courante.\n */\n @Input() langCode = 'fr';\n\n /**\n * Propage la valeur de 'route' ou de 'link' (selon le cas) lors du click sur le lien.\n */\n @Output() linkSelect = new EventEmitter<string>();\n\n private _item: DsfrLink;\n\n get disabled(): boolean {\n return !(this.item.route || this.item.routerLink || this.item.link);\n }\n\n