{"version":3,"file":"components/natgen.ui.components.min.js","mappings":"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","sources":["webpack://NatGenUI/./node_modules/dayjs/dayjs.min.js","webpack://NatGenUI/webpack/bootstrap","webpack://NatGenUI/webpack/runtime/compat get default export","webpack://NatGenUI/webpack/runtime/define property getters","webpack://NatGenUI/webpack/runtime/hasOwnProperty shorthand","webpack://NatGenUI/webpack/runtime/make namespace object","webpack://NatGenUI/webpack/runtime/publicPath","webpack://NatGenUI/./node_modules/tslib/tslib.es6.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/node_modules/tslib/tslib.es6.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/platform.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/dom.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/observation/notifier.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/observation/observable.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/components/attributes.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/styles/element-styles.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/components/fast-definitions.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/components/controller.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/components/fast-element.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/di/di.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/design-system/component-presentation.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/foundation-element/foundation-element.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/templating/html-directive.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/templating/binding.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/templating/compiler.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/templating/view.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/templating/template.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/templating/ref.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/patterns/start-end.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/utilities/apply-mixins.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/accordion-item/accordion-item.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/styles/css-directive.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/styles/css.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/utilities/style/display.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/utilities/match-media-stylesheet-behavior.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/node_modules/@microsoft/fast-web-utilities/dist/dom.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/utilities/style/focus.js","webpack://NatGenUI/./node_modules/exenv-es6/dist/can-use-dom.js","webpack://NatGenUI/./node_modules/@microsoft/fast-web-utilities/dist/system-colors.js","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/math-utilities.js","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/color-rgba-64.js","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/parse-color.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/utilities/composed-parent.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/design-token/custom-property-manager.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/design-token/design-token.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/utilities/composed-contains.js","webpack://NatGenUI/./node_modules/@microsoft/fast-web-utilities/dist/localization.js","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/color-hsl.js","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/color-hsv.js","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/color-lab.js","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/color-lch.js","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/color-xyz.js","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/color-converters.js","webpack://NatGenUI/./src/utilities/is-dark.ts","webpack://NatGenUI/./src/color/recipe.ts","webpack://NatGenUI/./src/color/swatch.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/color-interpolation.js","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/color-blending.js","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/color-scale.js","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/color-palette.js","webpack://NatGenUI/./node_modules/@microsoft/fast-colors/dist/component-state-color-palette.js","webpack://NatGenUI/./src/utilities/binary-search.ts","webpack://NatGenUI/./src/color/palette.ts","webpack://NatGenUI/./src/design-tokens/design-token.ts","webpack://NatGenUI/./src/design-tokens.ts","webpack://NatGenUI/./src/styles/elevation.ts","webpack://NatGenUI/./src/styles/size.ts","webpack://NatGenUI/./src/components/accordion-item/accordion-item.styles.ts","webpack://NatGenUI/./src/components/accordion-anchor/accordion-anchor.ts","webpack://NatGenUI/./src/components/accordion-anchor/accordion-anchor.template.ts","webpack://NatGenUI/./src/components/accordion-anchor/accordion-anchor.styles.ts","webpack://NatGenUI/./src/styles/icons.ts","webpack://NatGenUI/./src/components/accordion-item/accordion-item.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/accordion-item/accordion-item.template.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/templating/node-observation.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/templating/slotted.js","webpack://NatGenUI/./src/components/accordion/accordion.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/accordion/accordion.template.js","webpack://NatGenUI/./src/components/accordion/accordion.styles.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/patterns/aria-global.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/anchor/anchor.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/anchor/anchor.template.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/utilities/style/disabled.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/utilities/property-stylesheet-behavior.js","webpack://NatGenUI/./src/styles/behaviors.ts","webpack://NatGenUI/./src/styles/patterns/button.ts","webpack://NatGenUI/./src/components/anchor/anchor.styles.ts","webpack://NatGenUI/./src/components/anchor/anchor.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/node_modules/@microsoft/fast-web-utilities/dist/key-codes.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/form-associated/form-associated.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/button/button.form-associated.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/button/button.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/button/button.template.js","webpack://NatGenUI/./src/components/button/button.styles.ts","webpack://NatGenUI/./src/components/icon/icon.ts","webpack://NatGenUI/./src/components/button/button.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/card/card.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/card/card.template.js","webpack://NatGenUI/./src/components/card/card.styles.ts","webpack://NatGenUI/./src/components/card/card.ts","webpack://NatGenUI/./src/components/checkbox/checkbox.styles.ts","webpack://NatGenUI/./src/styles/patterns/selectable-card.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/checkbox/checkbox.form-associated.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/checkbox/checkbox.js","webpack://NatGenUI/./src/components/checkbox/checkbox.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/checkbox/checkbox.template.js","webpack://NatGenUI/./src/components/checkbox-card/checkbox-card.ts","webpack://NatGenUI/./src/components/checkbox-card/checkbox-card.template.ts","webpack://NatGenUI/./src/components/checkbox-card/checkbox-card.styles.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/node_modules/@microsoft/fast-web-utilities/dist/strings.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/node_modules/@microsoft/fast-web-utilities/dist/numbers.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/listbox-option/listbox-option.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/listbox/listbox.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/node_modules/@microsoft/fast-web-utilities/dist/array.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/select/select.options.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/combobox/combobox.form-associated.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/combobox/combobox.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/combobox/combobox.options.js","webpack://NatGenUI/./src/components/combobox/combobox.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/combobox/combobox.template.js","webpack://NatGenUI/./src/components/combobox/combobox.styles.ts","webpack://NatGenUI/./src/value-converters/swatch-value-converter.ts","webpack://NatGenUI/./src/components/design-system-provider/design-system-provider.styles.ts","webpack://NatGenUI/./src/styles/typography.ts","webpack://NatGenUI/./src/components/design-system-provider/design-system-provider.ts","webpack://NatGenUI/./src/value-converters/string-list-value-converter.ts","webpack://NatGenUI/./node_modules/tabbable/dist/index.esm.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/dialog/dialog.js","webpack://NatGenUI/./src/components/dialog/dialog.styles.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/interfaces.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/templating/when.js","webpack://NatGenUI/./src/components/dialog/dialog.ts","webpack://NatGenUI/./src/components/dialog/dialog.template.ts","webpack://NatGenUI/./src/data/countries.ts","webpack://NatGenUI/./src/components/flag/flags.png","webpack://NatGenUI/./src/components/flag/flags@2x.png","webpack://NatGenUI/./src/components/flag/flag.ts","webpack://NatGenUI/./src/components/flag/flag.template.ts","webpack://NatGenUI/./src/components/flag/flag.styles.ts","webpack://NatGenUI/./src/components/hamburger-button/hamburger-button.ts","webpack://NatGenUI/./src/components/hamburger-button/hamburger-button.template.ts","webpack://NatGenUI/./src/components/hamburger-button/hamburger-button.styles.ts","webpack://NatGenUI/./src/components/loader/loader.ts","webpack://NatGenUI/./src/components/loader/loader.template.ts","webpack://NatGenUI/./src/components/loader/loader.styles.ts","webpack://NatGenUI/./src/components/logo/logo.ts","webpack://NatGenUI/./src/utilities/media-size-observer.ts","webpack://NatGenUI/./src/layouts/nav-bar/nav-bar.ts","webpack://NatGenUI/./src/layouts/nav-bar/nav-bar.template.ts","webpack://NatGenUI/./src/layouts/nav-bar/nav-bar.styles.ts","webpack://NatGenUI/./src/components/option/option.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/listbox-option/listbox-option.template.js","webpack://NatGenUI/./src/components/option/option.styles.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/observation/array-change-records.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/observation/array-observer.js","webpack://NatGenUI/./node_modules/@microsoft/fast-element/dist/esm/templating/repeat.js","webpack://NatGenUI/./src/components/palette/palette.ts","webpack://NatGenUI/./src/components/palette/palette.template.ts","webpack://NatGenUI/./src/components/palette/palette.styles.ts","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/math.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/enums.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/createPopper.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/within.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/popper.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://NatGenUI/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://NatGenUI/./src/value-converters/json-value-converter.ts","webpack://NatGenUI/./src/components/popper/popper.ts","webpack://NatGenUI/./src/components/popper/popper.template.ts","webpack://NatGenUI/./src/components/popper/popper.styles.ts","webpack://NatGenUI/./src/components/portal/portal-outlet.ts","webpack://NatGenUI/./src/components/portal/portal.ts","webpack://NatGenUI/./src/components/progress-bar/progress-bar.ts","webpack://NatGenUI/./src/components/progress-bar/progress-bar.template.ts","webpack://NatGenUI/./src/components/progress-bar/progress-bar.styles.ts","webpack://NatGenUI/./src/styles/patterns/radio.ts","webpack://NatGenUI/./src/components/radio/radio.styles.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/radio/radio.form-associated.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/radio/radio.js","webpack://NatGenUI/./src/components/radio/radio.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/radio/radio.template.js","webpack://NatGenUI/./src/components/radio-card/radio-card.ts","webpack://NatGenUI/./src/components/radio-card/radio-card.template.ts","webpack://NatGenUI/./src/components/radio-card/radio-card.styles.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/node_modules/@microsoft/fast-web-utilities/dist/aria.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/node_modules/@microsoft/fast-web-utilities/dist/localization.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/radio-group/radio-group.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/utilities/direction.js","webpack://NatGenUI/./src/components/radio-group/radio-group.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/radio-group/radio-group.template.js","webpack://NatGenUI/./src/components/radio-group/radio-group.styles.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/listbox/listbox.element.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/select/select.form-associated.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/select/select.js","webpack://NatGenUI/./src/components/select/select.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/select/select.template.js","webpack://NatGenUI/./src/components/select/select.styles.ts","webpack://NatGenUI/./src/components/side-bar/side-bar.ts","webpack://NatGenUI/./src/components/side-bar/side-bar.template.ts","webpack://NatGenUI/./src/components/side-bar/side-bar.styles.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/switch/switch.form-associated.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/switch/switch.js","webpack://NatGenUI/./src/styles/direction.ts","webpack://NatGenUI/./src/components/switch/switch.styles.ts","webpack://NatGenUI/./src/components/switch/switch.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/switch/switch.template.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/text-field/text-field.options.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/text-field/text-field.form-associated.js","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/text-field/text-field.js","webpack://NatGenUI/./node_modules/imask/esm/_rollupPluginBabelHelpers-6b3bd404.js","webpack://NatGenUI/./node_modules/imask/esm/core/holder.js","webpack://NatGenUI/./node_modules/imask/esm/core/change-details.js","webpack://NatGenUI/./node_modules/imask/esm/core/utils.js","webpack://NatGenUI/./node_modules/imask/esm/core/action-details.js","webpack://NatGenUI/./node_modules/imask/esm/core/continuous-tail-details.js","webpack://NatGenUI/./node_modules/imask/esm/masked/base.js","webpack://NatGenUI/./node_modules/imask/esm/masked/factory.js","webpack://NatGenUI/./node_modules/imask/esm/masked/pattern/input-definition.js","webpack://NatGenUI/./node_modules/imask/esm/masked/pattern/fixed-definition.js","webpack://NatGenUI/./node_modules/imask/esm/masked/pattern/chunk-tail-details.js","webpack://NatGenUI/./node_modules/imask/esm/masked/pattern/cursor.js","webpack://NatGenUI/./node_modules/imask/esm/masked/regexp.js","webpack://NatGenUI/./node_modules/imask/esm/masked/pattern.js","webpack://NatGenUI/./node_modules/imask/esm/masked/range.js","webpack://NatGenUI/./node_modules/imask/esm/masked/date.js","webpack://NatGenUI/./node_modules/imask/esm/controls/mask-element.js","webpack://NatGenUI/./node_modules/imask/esm/controls/html-mask-element.js","webpack://NatGenUI/./node_modules/imask/esm/controls/html-contenteditable-mask-element.js","webpack://NatGenUI/./node_modules/imask/esm/controls/input.js","webpack://NatGenUI/./node_modules/imask/esm/masked/enum.js","webpack://NatGenUI/./node_modules/imask/esm/masked/number.js","webpack://NatGenUI/./node_modules/imask/esm/masked/function.js","webpack://NatGenUI/./node_modules/imask/esm/masked/dynamic.js","webpack://NatGenUI/./node_modules/imask/esm/masked/pipe.js","webpack://NatGenUI/./node_modules/imask/esm/index.js","webpack://NatGenUI/./src/components/text-field/text-field.ts","webpack://NatGenUI/./src/components/text-field/text-field.template.ts","webpack://NatGenUI/./src/components/text-field/text-field.styles.ts","webpack://NatGenUI/./src/components/tooltip/tooltip.ts","webpack://NatGenUI/./src/components/wizard-stepper/wizard-step.ts","webpack://NatGenUI/./src/components/wizard-stepper/wizard-stepper.ts","webpack://NatGenUI/./src/layouts/container/container.ts","webpack://NatGenUI/./src/layouts/container/container.template.ts","webpack://NatGenUI/./src/layouts/container/container.styles.ts","webpack://NatGenUI/./src/layouts/form-field/form-field.ts","webpack://NatGenUI/./src/layouts/form-field/form-field.template.ts","webpack://NatGenUI/./src/layouts/form-field/form-field.styles.ts","webpack://NatGenUI/./src/layouts/form/form.styles.ts","webpack://NatGenUI/./src/layouts/form/form.ts","webpack://NatGenUI/./src/layouts/stack/stack.ts","webpack://NatGenUI/./src/layouts/stack/stack.template.ts","webpack://NatGenUI/./src/layouts/stack/stack.styles.ts","webpack://NatGenUI/./node_modules/@microsoft/fast-foundation/dist/esm/design-system/design-system.js","webpack://NatGenUI/./src/components/token-value/token-value.ts","webpack://NatGenUI/./src/index.ts","webpack://NatGenUI/./src/natgen-design-system.ts"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t) {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"_content/NatGen.UI.Blazor/\";","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * A reference to globalThis, with support\n * for browsers that don't yet support the spec.\n * @public\n */\nexport const $global = (function () {\n if (typeof globalThis !== \"undefined\") {\n // We're running in a modern environment.\n return globalThis;\n }\n if (typeof global !== \"undefined\") {\n // We're running in NodeJS\n return global;\n }\n if (typeof self !== \"undefined\") {\n // We're running in a worker.\n return self;\n }\n if (typeof window !== \"undefined\") {\n // We're running in the browser's main thread.\n return window;\n }\n try {\n // Hopefully we never get here...\n // Not all environments allow eval and Function. Use only as a last resort:\n // eslint-disable-next-line no-new-func\n return new Function(\"return this\")();\n }\n catch (_a) {\n // If all fails, give up and create an object.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return {};\n }\n})();\n// API-only Polyfill for trustedTypes\nif ($global.trustedTypes === void 0) {\n $global.trustedTypes = { createPolicy: (n, r) => r };\n}\nconst propConfig = {\n configurable: false,\n enumerable: false,\n writable: false,\n};\nif ($global.FAST === void 0) {\n Reflect.defineProperty($global, \"FAST\", Object.assign({ value: Object.create(null) }, propConfig));\n}\n/**\n * The FAST global.\n * @internal\n */\nexport const FAST = $global.FAST;\nif (FAST.getById === void 0) {\n const storage = Object.create(null);\n Reflect.defineProperty(FAST, \"getById\", Object.assign({ value(id, initialize) {\n let found = storage[id];\n if (found === void 0) {\n found = initialize ? (storage[id] = initialize()) : null;\n }\n return found;\n } }, propConfig));\n}\n/**\n * A readonly, empty array.\n * @remarks\n * Typically returned by APIs that return arrays when there are\n * no actual items to return.\n * @internal\n */\nexport const emptyArray = Object.freeze([]);\n/**\n * Creates a function capable of locating metadata associated with a type.\n * @returns A metadata locator function.\n * @internal\n */\nexport function createMetadataLocator() {\n const metadataLookup = new WeakMap();\n return function (target) {\n let metadata = metadataLookup.get(target);\n if (metadata === void 0) {\n let currentTarget = Reflect.getPrototypeOf(target);\n while (metadata === void 0 && currentTarget !== null) {\n metadata = metadataLookup.get(currentTarget);\n currentTarget = Reflect.getPrototypeOf(currentTarget);\n }\n metadata = metadata === void 0 ? [] : metadata.slice(0);\n metadataLookup.set(target, metadata);\n }\n return metadata;\n };\n}\n","import { $global } from \"./platform.js\";\nconst updateQueue = $global.FAST.getById(1 /* updateQueue */, () => {\n const tasks = [];\n const pendingErrors = [];\n function throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n }\n function tryRunTask(task) {\n try {\n task.call();\n }\n catch (error) {\n pendingErrors.push(error);\n setTimeout(throwFirstError, 0);\n }\n }\n function process() {\n const capacity = 1024;\n let index = 0;\n while (index < tasks.length) {\n tryRunTask(tasks[index]);\n index++;\n // Prevent leaking memory for long chains of recursive calls to `DOM.queueUpdate`.\n // If we call `DOM.queueUpdate` within a task scheduled by `DOM.queueUpdate`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (let scan = 0, newLength = tasks.length - index; scan < newLength; scan++) {\n tasks[scan] = tasks[scan + index];\n }\n tasks.length -= index;\n index = 0;\n }\n }\n tasks.length = 0;\n }\n function enqueue(callable) {\n if (tasks.length < 1) {\n $global.requestAnimationFrame(process);\n }\n tasks.push(callable);\n }\n return Object.freeze({\n enqueue,\n process,\n });\n});\n/* eslint-disable */\nconst fastHTMLPolicy = $global.trustedTypes.createPolicy(\"fast-html\", {\n createHTML: html => html,\n});\n/* eslint-enable */\nlet htmlPolicy = fastHTMLPolicy;\nconst marker = `fast-${Math.random().toString(36).substring(2, 8)}`;\n/** @internal */\nexport const _interpolationStart = `${marker}{`;\n/** @internal */\nexport const _interpolationEnd = `}${marker}`;\n/**\n * Common DOM APIs.\n * @public\n */\nexport const DOM = Object.freeze({\n /**\n * Indicates whether the DOM supports the adoptedStyleSheets feature.\n */\n supportsAdoptedStyleSheets: Array.isArray(document.adoptedStyleSheets) &&\n \"replace\" in CSSStyleSheet.prototype,\n /**\n * Sets the HTML trusted types policy used by the templating engine.\n * @param policy - The policy to set for HTML.\n * @remarks\n * This API can only be called once, for security reasons. It should be\n * called by the application developer at the start of their program.\n */\n setHTMLPolicy(policy) {\n if (htmlPolicy !== fastHTMLPolicy) {\n throw new Error(\"The HTML policy can only be set once.\");\n }\n htmlPolicy = policy;\n },\n /**\n * Turns a string into trusted HTML using the configured trusted types policy.\n * @param html - The string to turn into trusted HTML.\n * @remarks\n * Used internally by the template engine when creating templates\n * and setting innerHTML.\n */\n createHTML(html) {\n return htmlPolicy.createHTML(html);\n },\n /**\n * Determines if the provided node is a template marker used by the runtime.\n * @param node - The node to test.\n */\n isMarker(node) {\n return node && node.nodeType === 8 && node.data.startsWith(marker);\n },\n /**\n * Given a marker node, extract the {@link HTMLDirective} index from the placeholder.\n * @param node - The marker node to extract the index from.\n */\n extractDirectiveIndexFromMarker(node) {\n return parseInt(node.data.replace(`${marker}:`, \"\"));\n },\n /**\n * Creates a placeholder string suitable for marking out a location *within*\n * an attribute value or HTML content.\n * @param index - The directive index to create the placeholder for.\n * @remarks\n * Used internally by binding directives.\n */\n createInterpolationPlaceholder(index) {\n return `${_interpolationStart}${index}${_interpolationEnd}`;\n },\n /**\n * Creates a placeholder that manifests itself as an attribute on an\n * element.\n * @param attributeName - The name of the custom attribute.\n * @param index - The directive index to create the placeholder for.\n * @remarks\n * Used internally by attribute directives such as `ref`, `slotted`, and `children`.\n */\n createCustomAttributePlaceholder(attributeName, index) {\n return `${attributeName}=\"${this.createInterpolationPlaceholder(index)}\"`;\n },\n /**\n * Creates a placeholder that manifests itself as a marker within the DOM structure.\n * @param index - The directive index to create the placeholder for.\n * @remarks\n * Used internally by structural directives such as `repeat`.\n */\n createBlockPlaceholder(index) {\n return ``;\n },\n /**\n * Schedules DOM update work in the next async batch.\n * @param callable - The callable function or object to queue.\n */\n queueUpdate: updateQueue.enqueue,\n /**\n * Immediately processes all work previously scheduled\n * through queueUpdate.\n * @remarks\n * This also forces nextUpdate promises\n * to resolve.\n */\n processUpdates: updateQueue.process,\n /**\n * Resolves with the next DOM update.\n */\n nextUpdate() {\n return new Promise(updateQueue.enqueue);\n },\n /**\n * Sets an attribute value on an element.\n * @param element - The element to set the attribute value on.\n * @param attributeName - The attribute name to set.\n * @param value - The value of the attribute to set.\n * @remarks\n * If the value is `null` or `undefined`, the attribute is removed, otherwise\n * it is set to the provided value using the standard `setAttribute` API.\n */\n setAttribute(element, attributeName, value) {\n if (value === null || value === undefined) {\n element.removeAttribute(attributeName);\n }\n else {\n element.setAttribute(attributeName, value);\n }\n },\n /**\n * Sets a boolean attribute value.\n * @param element - The element to set the boolean attribute value on.\n * @param attributeName - The attribute name to set.\n * @param value - The value of the attribute to set.\n * @remarks\n * If the value is true, the attribute is added; otherwise it is removed.\n */\n setBooleanAttribute(element, attributeName, value) {\n value\n ? element.setAttribute(attributeName, \"\")\n : element.removeAttribute(attributeName);\n },\n /**\n * Removes all the child nodes of the provided parent node.\n * @param parent - The node to remove the children from.\n */\n removeChildNodes(parent) {\n for (let child = parent.firstChild; child !== null; child = parent.firstChild) {\n parent.removeChild(child);\n }\n },\n /**\n * Creates a TreeWalker configured to walk a template fragment.\n * @param fragment - The fragment to walk.\n */\n createTemplateWalker(fragment) {\n return document.createTreeWalker(fragment, 133, // element, text, comment\n null, false);\n },\n});\n","/**\n * An implementation of {@link Notifier} that efficiently keeps track of\n * subscribers interested in a specific change notification on an\n * observable source.\n *\n * @remarks\n * This set is optimized for the most common scenario of 1 or 2 subscribers.\n * With this in mind, it can store a subscriber in an internal field, allowing it to avoid Array#push operations.\n * If the set ever exceeds two subscribers, it upgrades to an array automatically.\n * @public\n */\nexport class SubscriberSet {\n /**\n * Creates an instance of SubscriberSet for the specified source.\n * @param source - The object source that subscribers will receive notifications from.\n * @param initialSubscriber - An initial subscriber to changes.\n */\n constructor(source, initialSubscriber) {\n this.sub1 = void 0;\n this.sub2 = void 0;\n this.spillover = void 0;\n this.source = source;\n this.sub1 = initialSubscriber;\n }\n /**\n * Checks whether the provided subscriber has been added to this set.\n * @param subscriber - The subscriber to test for inclusion in this set.\n */\n has(subscriber) {\n return this.spillover === void 0\n ? this.sub1 === subscriber || this.sub2 === subscriber\n : this.spillover.indexOf(subscriber) !== -1;\n }\n /**\n * Subscribes to notification of changes in an object's state.\n * @param subscriber - The object that is subscribing for change notification.\n */\n subscribe(subscriber) {\n const spillover = this.spillover;\n if (spillover === void 0) {\n if (this.has(subscriber)) {\n return;\n }\n if (this.sub1 === void 0) {\n this.sub1 = subscriber;\n return;\n }\n if (this.sub2 === void 0) {\n this.sub2 = subscriber;\n return;\n }\n this.spillover = [this.sub1, this.sub2, subscriber];\n this.sub1 = void 0;\n this.sub2 = void 0;\n }\n else {\n const index = spillover.indexOf(subscriber);\n if (index === -1) {\n spillover.push(subscriber);\n }\n }\n }\n /**\n * Unsubscribes from notification of changes in an object's state.\n * @param subscriber - The object that is unsubscribing from change notification.\n */\n unsubscribe(subscriber) {\n const spillover = this.spillover;\n if (spillover === void 0) {\n if (this.sub1 === subscriber) {\n this.sub1 = void 0;\n }\n else if (this.sub2 === subscriber) {\n this.sub2 = void 0;\n }\n }\n else {\n const index = spillover.indexOf(subscriber);\n if (index !== -1) {\n spillover.splice(index, 1);\n }\n }\n }\n /**\n * Notifies all subscribers.\n * @param args - Data passed along to subscribers during notification.\n */\n notify(args) {\n const spillover = this.spillover;\n const source = this.source;\n if (spillover === void 0) {\n const sub1 = this.sub1;\n const sub2 = this.sub2;\n if (sub1 !== void 0) {\n sub1.handleChange(source, args);\n }\n if (sub2 !== void 0) {\n sub2.handleChange(source, args);\n }\n }\n else {\n for (let i = 0, ii = spillover.length; i < ii; ++i) {\n spillover[i].handleChange(source, args);\n }\n }\n }\n}\n/**\n * An implementation of Notifier that allows subscribers to be notified\n * of individual property changes on an object.\n * @public\n */\nexport class PropertyChangeNotifier {\n /**\n * Creates an instance of PropertyChangeNotifier for the specified source.\n * @param source - The object source that subscribers will receive notifications from.\n */\n constructor(source) {\n this.subscribers = {};\n this.sourceSubscribers = null;\n this.source = source;\n }\n /**\n * Notifies all subscribers, based on the specified property.\n * @param propertyName - The property name, passed along to subscribers during notification.\n */\n notify(propertyName) {\n var _a;\n const subscribers = this.subscribers[propertyName];\n if (subscribers !== void 0) {\n subscribers.notify(propertyName);\n }\n (_a = this.sourceSubscribers) === null || _a === void 0 ? void 0 : _a.notify(propertyName);\n }\n /**\n * Subscribes to notification of changes in an object's state.\n * @param subscriber - The object that is subscribing for change notification.\n * @param propertyToWatch - The name of the property that the subscriber is interested in watching for changes.\n */\n subscribe(subscriber, propertyToWatch) {\n var _a;\n if (propertyToWatch) {\n let subscribers = this.subscribers[propertyToWatch];\n if (subscribers === void 0) {\n this.subscribers[propertyToWatch] = subscribers = new SubscriberSet(this.source);\n }\n subscribers.subscribe(subscriber);\n }\n else {\n this.sourceSubscribers =\n (_a = this.sourceSubscribers) !== null && _a !== void 0 ? _a : new SubscriberSet(this.source);\n this.sourceSubscribers.subscribe(subscriber);\n }\n }\n /**\n * Unsubscribes from notification of changes in an object's state.\n * @param subscriber - The object that is unsubscribing from change notification.\n * @param propertyToUnwatch - The name of the property that the subscriber is no longer interested in watching.\n */\n unsubscribe(subscriber, propertyToUnwatch) {\n var _a;\n if (propertyToUnwatch) {\n const subscribers = this.subscribers[propertyToUnwatch];\n if (subscribers !== void 0) {\n subscribers.unsubscribe(subscriber);\n }\n }\n else {\n (_a = this.sourceSubscribers) === null || _a === void 0 ? void 0 : _a.unsubscribe(subscriber);\n }\n }\n}\n","import { DOM } from \"../dom.js\";\nimport { createMetadataLocator, FAST } from \"../platform.js\";\nimport { PropertyChangeNotifier, SubscriberSet } from \"./notifier.js\";\n/**\n * Common Observable APIs.\n * @public\n */\nexport const Observable = FAST.getById(2 /* observable */, () => {\n const volatileRegex = /(:|&&|\\|\\||if)/;\n const notifierLookup = new WeakMap();\n const queueUpdate = DOM.queueUpdate;\n let watcher = void 0;\n let createArrayObserver = (array) => {\n throw new Error(\"Must call enableArrayObservation before observing arrays.\");\n };\n function getNotifier(source) {\n let found = source.$fastController || notifierLookup.get(source);\n if (found === void 0) {\n if (Array.isArray(source)) {\n found = createArrayObserver(source);\n }\n else {\n notifierLookup.set(source, (found = new PropertyChangeNotifier(source)));\n }\n }\n return found;\n }\n const getAccessors = createMetadataLocator();\n class DefaultObservableAccessor {\n constructor(name) {\n this.name = name;\n this.field = `_${name}`;\n this.callback = `${name}Changed`;\n }\n getValue(source) {\n if (watcher !== void 0) {\n watcher.watch(source, this.name);\n }\n return source[this.field];\n }\n setValue(source, newValue) {\n const field = this.field;\n const oldValue = source[field];\n if (oldValue !== newValue) {\n source[field] = newValue;\n const callback = source[this.callback];\n if (typeof callback === \"function\") {\n callback.call(source, oldValue, newValue);\n }\n getNotifier(source).notify(this.name);\n }\n }\n }\n class BindingObserverImplementation extends SubscriberSet {\n constructor(binding, initialSubscriber, isVolatileBinding = false) {\n super(binding, initialSubscriber);\n this.binding = binding;\n this.isVolatileBinding = isVolatileBinding;\n this.needsRefresh = true;\n this.needsQueue = true;\n this.first = this;\n this.last = null;\n this.propertySource = void 0;\n this.propertyName = void 0;\n this.notifier = void 0;\n this.next = void 0;\n }\n observe(source, context) {\n if (this.needsRefresh && this.last !== null) {\n this.disconnect();\n }\n const previousWatcher = watcher;\n watcher = this.needsRefresh ? this : void 0;\n this.needsRefresh = this.isVolatileBinding;\n const result = this.binding(source, context);\n watcher = previousWatcher;\n return result;\n }\n disconnect() {\n if (this.last !== null) {\n let current = this.first;\n while (current !== void 0) {\n current.notifier.unsubscribe(this, current.propertyName);\n current = current.next;\n }\n this.last = null;\n this.needsRefresh = this.needsQueue = true;\n }\n }\n watch(propertySource, propertyName) {\n const prev = this.last;\n const notifier = getNotifier(propertySource);\n const current = prev === null ? this.first : {};\n current.propertySource = propertySource;\n current.propertyName = propertyName;\n current.notifier = notifier;\n notifier.subscribe(this, propertyName);\n if (prev !== null) {\n if (!this.needsRefresh) {\n // Declaring the variable prior to assignment below circumvents\n // a bug in Angular's optimization process causing infinite recursion\n // of this watch() method. Details https://github.com/microsoft/fast/issues/4969\n let prevValue;\n watcher = void 0;\n /* eslint-disable-next-line */\n prevValue = prev.propertySource[prev.propertyName];\n /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n watcher = this;\n if (propertySource === prevValue) {\n this.needsRefresh = true;\n }\n }\n prev.next = current;\n }\n this.last = current;\n }\n handleChange() {\n if (this.needsQueue) {\n this.needsQueue = false;\n queueUpdate(this);\n }\n }\n call() {\n if (this.last !== null) {\n this.needsQueue = true;\n this.notify(this);\n }\n }\n records() {\n let next = this.first;\n return {\n next: () => {\n const current = next;\n if (current === undefined) {\n return { value: void 0, done: true };\n }\n else {\n next = next.next;\n return {\n value: current,\n done: false,\n };\n }\n },\n [Symbol.iterator]: function () {\n return this;\n },\n };\n }\n }\n return Object.freeze({\n /**\n * @internal\n * @param factory - The factory used to create array observers.\n */\n setArrayObserverFactory(factory) {\n createArrayObserver = factory;\n },\n /**\n * Gets a notifier for an object or Array.\n * @param source - The object or Array to get the notifier for.\n */\n getNotifier,\n /**\n * Records a property change for a source object.\n * @param source - The object to record the change against.\n * @param propertyName - The property to track as changed.\n */\n track(source, propertyName) {\n if (watcher !== void 0) {\n watcher.watch(source, propertyName);\n }\n },\n /**\n * Notifies watchers that the currently executing property getter or function is volatile\n * with respect to its observable dependencies.\n */\n trackVolatile() {\n if (watcher !== void 0) {\n watcher.needsRefresh = true;\n }\n },\n /**\n * Notifies subscribers of a source object of changes.\n * @param source - the object to notify of changes.\n * @param args - The change args to pass to subscribers.\n */\n notify(source, args) {\n getNotifier(source).notify(args);\n },\n /**\n * Defines an observable property on an object or prototype.\n * @param target - The target object to define the observable on.\n * @param nameOrAccessor - The name of the property to define as observable;\n * or a custom accessor that specifies the property name and accessor implementation.\n */\n defineProperty(target, nameOrAccessor) {\n if (typeof nameOrAccessor === \"string\") {\n nameOrAccessor = new DefaultObservableAccessor(nameOrAccessor);\n }\n getAccessors(target).push(nameOrAccessor);\n Reflect.defineProperty(target, nameOrAccessor.name, {\n enumerable: true,\n get: function () {\n return nameOrAccessor.getValue(this);\n },\n set: function (newValue) {\n nameOrAccessor.setValue(this, newValue);\n },\n });\n },\n /**\n * Finds all the observable accessors defined on the target,\n * including its prototype chain.\n * @param target - The target object to search for accessor on.\n */\n getAccessors,\n /**\n * Creates a {@link BindingObserver} that can watch the\n * provided {@link Binding} for changes.\n * @param binding - The binding to observe.\n * @param initialSubscriber - An initial subscriber to changes in the binding value.\n * @param isVolatileBinding - Indicates whether the binding's dependency list must be re-evaluated on every value evaluation.\n */\n binding(binding, initialSubscriber, isVolatileBinding = this.isVolatileBinding(binding)) {\n return new BindingObserverImplementation(binding, initialSubscriber, isVolatileBinding);\n },\n /**\n * Determines whether a binding expression is volatile and needs to have its dependency list re-evaluated\n * on every evaluation of the value.\n * @param binding - The binding to inspect.\n */\n isVolatileBinding(binding) {\n return volatileRegex.test(binding.toString());\n },\n });\n});\n/**\n * Decorator: Defines an observable property on the target.\n * @param target - The target to define the observable on.\n * @param nameOrAccessor - The property name or accessor to define the observable as.\n * @public\n */\nexport function observable(target, nameOrAccessor) {\n Observable.defineProperty(target, nameOrAccessor);\n}\n/**\n * Decorator: Marks a property getter as having volatile observable dependencies.\n * @param target - The target that the property is defined on.\n * @param name - The property name.\n * @param name - The existing descriptor.\n * @public\n */\nexport function volatile(target, name, descriptor) {\n return Object.assign({}, descriptor, {\n get: function () {\n Observable.trackVolatile();\n return descriptor.get.apply(this);\n },\n });\n}\nconst contextEvent = FAST.getById(3 /* contextEvent */, () => {\n let current = null;\n return {\n get() {\n return current;\n },\n set(event) {\n current = event;\n },\n };\n});\n/**\n * Provides additional contextual information available to behaviors and expressions.\n * @public\n */\nexport class ExecutionContext {\n constructor() {\n /**\n * The index of the current item within a repeat context.\n */\n this.index = 0;\n /**\n * The length of the current collection within a repeat context.\n */\n this.length = 0;\n /**\n * The parent data object within a repeat context.\n */\n this.parent = null;\n /**\n * The parent execution context when in nested context scenarios.\n */\n this.parentContext = null;\n }\n /**\n * The current event within an event handler.\n */\n get event() {\n return contextEvent.get();\n }\n /**\n * Indicates whether the current item within a repeat context\n * has an even index.\n */\n get isEven() {\n return this.index % 2 === 0;\n }\n /**\n * Indicates whether the current item within a repeat context\n * has an odd index.\n */\n get isOdd() {\n return this.index % 2 !== 0;\n }\n /**\n * Indicates whether the current item within a repeat context\n * is the first item in the collection.\n */\n get isFirst() {\n return this.index === 0;\n }\n /**\n * Indicates whether the current item within a repeat context\n * is somewhere in the middle of the collection.\n */\n get isInMiddle() {\n return !this.isFirst && !this.isLast;\n }\n /**\n * Indicates whether the current item within a repeat context\n * is the last item in the collection.\n */\n get isLast() {\n return this.index === this.length - 1;\n }\n /**\n * Sets the event for the current execution context.\n * @param event - The event to set.\n * @internal\n */\n static setEvent(event) {\n contextEvent.set(event);\n }\n}\nObservable.defineProperty(ExecutionContext.prototype, \"index\");\nObservable.defineProperty(ExecutionContext.prototype, \"length\");\n/**\n * The default execution context used in binding expressions.\n * @public\n */\nexport const defaultExecutionContext = Object.seal(new ExecutionContext());\n","import { Observable } from \"../observation/observable.js\";\nimport { DOM } from \"../dom.js\";\nimport { createMetadataLocator } from \"../platform.js\";\n/**\n * Metadata used to configure a custom attribute's behavior.\n * @public\n */\nexport const AttributeConfiguration = Object.freeze({\n /**\n * Locates all attribute configurations associated with a type.\n */\n locate: createMetadataLocator(),\n});\n/**\n * A {@link ValueConverter} that converts to and from `boolean` values.\n * @remarks\n * Used automatically when the `boolean` {@link AttributeMode} is selected.\n * @public\n */\nexport const booleanConverter = {\n toView(value) {\n return value ? \"true\" : \"false\";\n },\n fromView(value) {\n if (value === null ||\n value === void 0 ||\n value === \"false\" ||\n value === false ||\n value === 0) {\n return false;\n }\n return true;\n },\n};\n/**\n * A {@link ValueConverter} that converts to and from `number` values.\n * @remarks\n * This converter allows for nullable numbers, returning `null` if the\n * input was `null`, `undefined`, or `NaN`.\n * @public\n */\nexport const nullableNumberConverter = {\n toView(value) {\n if (value === null || value === undefined) {\n return null;\n }\n const number = value * 1;\n return isNaN(number) ? null : number.toString();\n },\n fromView(value) {\n if (value === null || value === undefined) {\n return null;\n }\n const number = value * 1;\n return isNaN(number) ? null : number;\n },\n};\n/**\n * An implementation of {@link Accessor} that supports reactivity,\n * change callbacks, attribute reflection, and type conversion for\n * custom elements.\n * @public\n */\nexport class AttributeDefinition {\n /**\n * Creates an instance of AttributeDefinition.\n * @param Owner - The class constructor that owns this attribute.\n * @param name - The name of the property associated with the attribute.\n * @param attribute - The name of the attribute in HTML.\n * @param mode - The {@link AttributeMode} that describes the behavior of this attribute.\n * @param converter - A {@link ValueConverter} that integrates with the property getter/setter\n * to convert values to and from a DOM string.\n */\n constructor(Owner, name, attribute = name.toLowerCase(), mode = \"reflect\", converter) {\n this.guards = new Set();\n this.Owner = Owner;\n this.name = name;\n this.attribute = attribute;\n this.mode = mode;\n this.converter = converter;\n this.fieldName = `_${name}`;\n this.callbackName = `${name}Changed`;\n this.hasCallback = this.callbackName in Owner.prototype;\n if (mode === \"boolean\" && converter === void 0) {\n this.converter = booleanConverter;\n }\n }\n /**\n * Sets the value of the attribute/property on the source element.\n * @param source - The source element to access.\n * @param value - The value to set the attribute/property to.\n */\n setValue(source, newValue) {\n const oldValue = source[this.fieldName];\n const converter = this.converter;\n if (converter !== void 0) {\n newValue = converter.fromView(newValue);\n }\n if (oldValue !== newValue) {\n source[this.fieldName] = newValue;\n this.tryReflectToAttribute(source);\n if (this.hasCallback) {\n source[this.callbackName](oldValue, newValue);\n }\n source.$fastController.notify(this.name);\n }\n }\n /**\n * Gets the value of the attribute/property on the source element.\n * @param source - The source element to access.\n */\n getValue(source) {\n Observable.track(source, this.name);\n return source[this.fieldName];\n }\n /** @internal */\n onAttributeChangedCallback(element, value) {\n if (this.guards.has(element)) {\n return;\n }\n this.guards.add(element);\n this.setValue(element, value);\n this.guards.delete(element);\n }\n tryReflectToAttribute(element) {\n const mode = this.mode;\n const guards = this.guards;\n if (guards.has(element) || mode === \"fromView\") {\n return;\n }\n DOM.queueUpdate(() => {\n guards.add(element);\n const latestValue = element[this.fieldName];\n switch (mode) {\n case \"reflect\":\n const converter = this.converter;\n DOM.setAttribute(element, this.attribute, converter !== void 0 ? converter.toView(latestValue) : latestValue);\n break;\n case \"boolean\":\n DOM.setBooleanAttribute(element, this.attribute, latestValue);\n break;\n }\n guards.delete(element);\n });\n }\n /**\n * Collects all attribute definitions associated with the owner.\n * @param Owner - The class constructor to collect attribute for.\n * @param attributeLists - Any existing attributes to collect and merge with those associated with the owner.\n * @internal\n */\n static collect(Owner, ...attributeLists) {\n const attributes = [];\n attributeLists.push(AttributeConfiguration.locate(Owner));\n for (let i = 0, ii = attributeLists.length; i < ii; ++i) {\n const list = attributeLists[i];\n if (list === void 0) {\n continue;\n }\n for (let j = 0, jj = list.length; j < jj; ++j) {\n const config = list[j];\n if (typeof config === \"string\") {\n attributes.push(new AttributeDefinition(Owner, config));\n }\n else {\n attributes.push(new AttributeDefinition(Owner, config.property, config.attribute, config.mode, config.converter));\n }\n }\n }\n return attributes;\n }\n}\nexport function attr(configOrTarget, prop) {\n let config;\n function decorator($target, $prop) {\n if (arguments.length > 1) {\n // Non invocation:\n // - @attr\n // Invocation with or w/o opts:\n // - @attr()\n // - @attr({...opts})\n config.property = $prop;\n }\n AttributeConfiguration.locate($target.constructor).push(config);\n }\n if (arguments.length > 1) {\n // Non invocation:\n // - @attr\n config = {};\n decorator(configOrTarget, prop);\n return;\n }\n // Invocation with or w/o opts:\n // - @attr()\n // - @attr({...opts})\n config = configOrTarget === void 0 ? {} : configOrTarget;\n return decorator;\n}\n","import { DOM } from \"../dom.js\";\n/**\n * Represents styles that can be applied to a custom element.\n * @public\n */\nexport class ElementStyles {\n constructor() {\n this.targets = new WeakSet();\n }\n /** @internal */\n addStylesTo(target) {\n this.targets.add(target);\n }\n /** @internal */\n removeStylesFrom(target) {\n this.targets.delete(target);\n }\n /** @internal */\n isAttachedTo(target) {\n return this.targets.has(target);\n }\n /**\n * Associates behaviors with this set of styles.\n * @param behaviors - The behaviors to associate.\n */\n withBehaviors(...behaviors) {\n this.behaviors =\n this.behaviors === null ? behaviors : this.behaviors.concat(behaviors);\n return this;\n }\n}\n/**\n * Create ElementStyles from ComposableStyles.\n */\nElementStyles.create = (() => {\n if (DOM.supportsAdoptedStyleSheets) {\n const styleSheetCache = new Map();\n return (styles) => \n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n new AdoptedStyleSheetsStyles(styles, styleSheetCache);\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return (styles) => new StyleElementStyles(styles);\n})();\nfunction reduceStyles(styles) {\n return styles\n .map((x) => x instanceof ElementStyles ? reduceStyles(x.styles) : [x])\n .reduce((prev, curr) => prev.concat(curr), []);\n}\nfunction reduceBehaviors(styles) {\n return styles\n .map((x) => (x instanceof ElementStyles ? x.behaviors : null))\n .reduce((prev, curr) => {\n if (curr === null) {\n return prev;\n }\n if (prev === null) {\n prev = [];\n }\n return prev.concat(curr);\n }, null);\n}\n/**\n * A Symbol that can be added to a CSSStyleSheet to cause it to be prepended (rather than appended) to adoptedStyleSheets.\n * @public\n */\nexport const prependToAdoptedStyleSheetsSymbol = Symbol(\"prependToAdoptedStyleSheets\");\nfunction separateSheetsToPrepend(sheets) {\n const prepend = [];\n const append = [];\n sheets.forEach(x => (x[prependToAdoptedStyleSheetsSymbol] ? prepend : append).push(x));\n return { prepend, append };\n}\nlet addAdoptedStyleSheets = (target, sheets) => {\n const { prepend, append } = separateSheetsToPrepend(sheets);\n target.adoptedStyleSheets = [...prepend, ...target.adoptedStyleSheets, ...append];\n};\nlet removeAdoptedStyleSheets = (target, sheets) => {\n target.adoptedStyleSheets = target.adoptedStyleSheets.filter((x) => sheets.indexOf(x) === -1);\n};\nif (DOM.supportsAdoptedStyleSheets) {\n try {\n // Test if browser implementation uses FrozenArray.\n // If not, use push / splice to alter the stylesheets\n // in place. This circumvents a bug in Safari 16.4 where\n // periodically, assigning the array would previously\n // cause sheets to be removed.\n document.adoptedStyleSheets.push();\n document.adoptedStyleSheets.splice();\n addAdoptedStyleSheets = (target, sheets) => {\n const { prepend, append } = separateSheetsToPrepend(sheets);\n target.adoptedStyleSheets.splice(0, 0, ...prepend);\n target.adoptedStyleSheets.push(...append);\n };\n removeAdoptedStyleSheets = (target, sheets) => {\n for (const sheet of sheets) {\n const index = target.adoptedStyleSheets.indexOf(sheet);\n if (index !== -1) {\n target.adoptedStyleSheets.splice(index, 1);\n }\n }\n };\n }\n catch (e) {\n // Do nothing if an error is thrown, the default\n // case handles FrozenArray.\n }\n}\n/**\n * https://wicg.github.io/construct-stylesheets/\n * https://developers.google.com/web/updates/2019/02/constructable-stylesheets\n *\n * @internal\n */\nexport class AdoptedStyleSheetsStyles extends ElementStyles {\n constructor(styles, styleSheetCache) {\n super();\n this.styles = styles;\n this.styleSheetCache = styleSheetCache;\n this._styleSheets = void 0;\n this.behaviors = reduceBehaviors(styles);\n }\n get styleSheets() {\n if (this._styleSheets === void 0) {\n const styles = this.styles;\n const styleSheetCache = this.styleSheetCache;\n this._styleSheets = reduceStyles(styles).map((x) => {\n if (x instanceof CSSStyleSheet) {\n return x;\n }\n let sheet = styleSheetCache.get(x);\n if (sheet === void 0) {\n sheet = new CSSStyleSheet();\n sheet.replaceSync(x);\n styleSheetCache.set(x, sheet);\n }\n return sheet;\n });\n }\n return this._styleSheets;\n }\n addStylesTo(target) {\n addAdoptedStyleSheets(target, this.styleSheets);\n super.addStylesTo(target);\n }\n removeStylesFrom(target) {\n removeAdoptedStyleSheets(target, this.styleSheets);\n super.removeStylesFrom(target);\n }\n}\nlet styleClassId = 0;\nfunction getNextStyleClass() {\n return `fast-style-class-${++styleClassId}`;\n}\n/**\n * @internal\n */\nexport class StyleElementStyles extends ElementStyles {\n constructor(styles) {\n super();\n this.styles = styles;\n this.behaviors = null;\n this.behaviors = reduceBehaviors(styles);\n this.styleSheets = reduceStyles(styles);\n this.styleClass = getNextStyleClass();\n }\n addStylesTo(target) {\n const styleSheets = this.styleSheets;\n const styleClass = this.styleClass;\n target = this.normalizeTarget(target);\n for (let i = 0; i < styleSheets.length; i++) {\n const element = document.createElement(\"style\");\n element.innerHTML = styleSheets[i];\n element.className = styleClass;\n target.append(element);\n }\n super.addStylesTo(target);\n }\n removeStylesFrom(target) {\n target = this.normalizeTarget(target);\n const styles = target.querySelectorAll(`.${this.styleClass}`);\n for (let i = 0, ii = styles.length; i < ii; ++i) {\n target.removeChild(styles[i]);\n }\n super.removeStylesFrom(target);\n }\n isAttachedTo(target) {\n return super.isAttachedTo(this.normalizeTarget(target));\n }\n normalizeTarget(target) {\n return target === document ? document.body : target;\n }\n}\n","import { FAST } from \"../platform.js\";\nimport { Observable } from \"../observation/observable.js\";\nimport { ElementStyles } from \"../styles/element-styles.js\";\nimport { AttributeDefinition } from \"./attributes.js\";\nconst defaultShadowOptions = { mode: \"open\" };\nconst defaultElementOptions = {};\nconst fastRegistry = FAST.getById(4 /* elementRegistry */, () => {\n const typeToDefinition = new Map();\n return Object.freeze({\n register(definition) {\n if (typeToDefinition.has(definition.type)) {\n return false;\n }\n typeToDefinition.set(definition.type, definition);\n return true;\n },\n getByType(key) {\n return typeToDefinition.get(key);\n },\n });\n});\n/**\n * Defines metadata for a FASTElement.\n * @public\n */\nexport class FASTElementDefinition {\n /**\n * Creates an instance of FASTElementDefinition.\n * @param type - The type this definition is being created for.\n * @param nameOrConfig - The name of the element to define or a config object\n * that describes the element to define.\n */\n constructor(type, nameOrConfig = type.definition) {\n if (typeof nameOrConfig === \"string\") {\n nameOrConfig = { name: nameOrConfig };\n }\n this.type = type;\n this.name = nameOrConfig.name;\n this.template = nameOrConfig.template;\n const attributes = AttributeDefinition.collect(type, nameOrConfig.attributes);\n const observedAttributes = new Array(attributes.length);\n const propertyLookup = {};\n const attributeLookup = {};\n for (let i = 0, ii = attributes.length; i < ii; ++i) {\n const current = attributes[i];\n observedAttributes[i] = current.attribute;\n propertyLookup[current.name] = current;\n attributeLookup[current.attribute] = current;\n }\n this.attributes = attributes;\n this.observedAttributes = observedAttributes;\n this.propertyLookup = propertyLookup;\n this.attributeLookup = attributeLookup;\n this.shadowOptions =\n nameOrConfig.shadowOptions === void 0\n ? defaultShadowOptions\n : nameOrConfig.shadowOptions === null\n ? void 0\n : Object.assign(Object.assign({}, defaultShadowOptions), nameOrConfig.shadowOptions);\n this.elementOptions =\n nameOrConfig.elementOptions === void 0\n ? defaultElementOptions\n : Object.assign(Object.assign({}, defaultElementOptions), nameOrConfig.elementOptions);\n this.styles =\n nameOrConfig.styles === void 0\n ? void 0\n : Array.isArray(nameOrConfig.styles)\n ? ElementStyles.create(nameOrConfig.styles)\n : nameOrConfig.styles instanceof ElementStyles\n ? nameOrConfig.styles\n : ElementStyles.create([nameOrConfig.styles]);\n }\n /**\n * Indicates if this element has been defined in at least one registry.\n */\n get isDefined() {\n return !!fastRegistry.getByType(this.type);\n }\n /**\n * Defines a custom element based on this definition.\n * @param registry - The element registry to define the element in.\n */\n define(registry = customElements) {\n const type = this.type;\n if (fastRegistry.register(this)) {\n const attributes = this.attributes;\n const proto = type.prototype;\n for (let i = 0, ii = attributes.length; i < ii; ++i) {\n Observable.defineProperty(proto, attributes[i]);\n }\n Reflect.defineProperty(type, \"observedAttributes\", {\n value: this.observedAttributes,\n enumerable: true,\n });\n }\n if (!registry.get(this.name)) {\n registry.define(this.name, type, this.elementOptions);\n }\n return this;\n }\n}\n/**\n * Gets the element definition associated with the specified type.\n * @param type - The custom element type to retrieve the definition for.\n */\nFASTElementDefinition.forType = fastRegistry.getByType;\n","import { DOM } from \"../dom.js\";\nimport { PropertyChangeNotifier } from \"../observation/notifier.js\";\nimport { defaultExecutionContext, Observable } from \"../observation/observable.js\";\nimport { FASTElementDefinition } from \"./fast-definitions.js\";\nconst shadowRoots = new WeakMap();\nconst defaultEventOptions = {\n bubbles: true,\n composed: true,\n cancelable: true,\n};\nfunction getShadowRoot(element) {\n return element.shadowRoot || shadowRoots.get(element) || null;\n}\n/**\n * Controls the lifecycle and rendering of a `FASTElement`.\n * @public\n */\nexport class Controller extends PropertyChangeNotifier {\n /**\n * Creates a Controller to control the specified element.\n * @param element - The element to be controlled by this controller.\n * @param definition - The element definition metadata that instructs this\n * controller in how to handle rendering and other platform integrations.\n * @internal\n */\n constructor(element, definition) {\n super(element);\n this.boundObservables = null;\n this.behaviors = null;\n this.needsInitialization = true;\n this._template = null;\n this._styles = null;\n this._isConnected = false;\n /**\n * This allows Observable.getNotifier(...) to return the Controller\n * when the notifier for the Controller itself is being requested. The\n * result is that the Observable system does not need to create a separate\n * instance of Notifier for observables on the Controller. The component and\n * the controller will now share the same notifier, removing one-object construct\n * per web component instance.\n */\n this.$fastController = this;\n /**\n * The view associated with the custom element.\n * @remarks\n * If `null` then the element is managing its own rendering.\n */\n this.view = null;\n this.element = element;\n this.definition = definition;\n const shadowOptions = definition.shadowOptions;\n if (shadowOptions !== void 0) {\n const shadowRoot = element.attachShadow(shadowOptions);\n if (shadowOptions.mode === \"closed\") {\n shadowRoots.set(element, shadowRoot);\n }\n }\n // Capture any observable values that were set by the binding engine before\n // the browser upgraded the element. Then delete the property since it will\n // shadow the getter/setter that is required to make the observable operate.\n // Later, in the connect callback, we'll re-apply the values.\n const accessors = Observable.getAccessors(element);\n if (accessors.length > 0) {\n const boundObservables = (this.boundObservables = Object.create(null));\n for (let i = 0, ii = accessors.length; i < ii; ++i) {\n const propertyName = accessors[i].name;\n const value = element[propertyName];\n if (value !== void 0) {\n delete element[propertyName];\n boundObservables[propertyName] = value;\n }\n }\n }\n }\n /**\n * Indicates whether or not the custom element has been\n * connected to the document.\n */\n get isConnected() {\n Observable.track(this, \"isConnected\");\n return this._isConnected;\n }\n setIsConnected(value) {\n this._isConnected = value;\n Observable.notify(this, \"isConnected\");\n }\n /**\n * Gets/sets the template used to render the component.\n * @remarks\n * This value can only be accurately read after connect but can be set at any time.\n */\n get template() {\n return this._template;\n }\n set template(value) {\n if (this._template === value) {\n return;\n }\n this._template = value;\n if (!this.needsInitialization) {\n this.renderTemplate(value);\n }\n }\n /**\n * Gets/sets the primary styles used for the component.\n * @remarks\n * This value can only be accurately read after connect but can be set at any time.\n */\n get styles() {\n return this._styles;\n }\n set styles(value) {\n if (this._styles === value) {\n return;\n }\n if (this._styles !== null) {\n this.removeStyles(this._styles);\n }\n this._styles = value;\n if (!this.needsInitialization && value !== null) {\n this.addStyles(value);\n }\n }\n /**\n * Adds styles to this element. Providing an HTMLStyleElement will attach the element instance to the shadowRoot.\n * @param styles - The styles to add.\n */\n addStyles(styles) {\n const target = getShadowRoot(this.element) ||\n this.element.getRootNode();\n if (styles instanceof HTMLStyleElement) {\n target.append(styles);\n }\n else if (!styles.isAttachedTo(target)) {\n const sourceBehaviors = styles.behaviors;\n styles.addStylesTo(target);\n if (sourceBehaviors !== null) {\n this.addBehaviors(sourceBehaviors);\n }\n }\n }\n /**\n * Removes styles from this element. Providing an HTMLStyleElement will detach the element instance from the shadowRoot.\n * @param styles - the styles to remove.\n */\n removeStyles(styles) {\n const target = getShadowRoot(this.element) ||\n this.element.getRootNode();\n if (styles instanceof HTMLStyleElement) {\n target.removeChild(styles);\n }\n else if (styles.isAttachedTo(target)) {\n const sourceBehaviors = styles.behaviors;\n styles.removeStylesFrom(target);\n if (sourceBehaviors !== null) {\n this.removeBehaviors(sourceBehaviors);\n }\n }\n }\n /**\n * Adds behaviors to this element.\n * @param behaviors - The behaviors to add.\n */\n addBehaviors(behaviors) {\n const targetBehaviors = this.behaviors || (this.behaviors = new Map());\n const length = behaviors.length;\n const behaviorsToBind = [];\n for (let i = 0; i < length; ++i) {\n const behavior = behaviors[i];\n if (targetBehaviors.has(behavior)) {\n targetBehaviors.set(behavior, targetBehaviors.get(behavior) + 1);\n }\n else {\n targetBehaviors.set(behavior, 1);\n behaviorsToBind.push(behavior);\n }\n }\n if (this._isConnected) {\n const element = this.element;\n for (let i = 0; i < behaviorsToBind.length; ++i) {\n behaviorsToBind[i].bind(element, defaultExecutionContext);\n }\n }\n }\n /**\n * Removes behaviors from this element.\n * @param behaviors - The behaviors to remove.\n * @param force - Forces unbinding of behaviors.\n */\n removeBehaviors(behaviors, force = false) {\n const targetBehaviors = this.behaviors;\n if (targetBehaviors === null) {\n return;\n }\n const length = behaviors.length;\n const behaviorsToUnbind = [];\n for (let i = 0; i < length; ++i) {\n const behavior = behaviors[i];\n if (targetBehaviors.has(behavior)) {\n const count = targetBehaviors.get(behavior) - 1;\n count === 0 || force\n ? targetBehaviors.delete(behavior) && behaviorsToUnbind.push(behavior)\n : targetBehaviors.set(behavior, count);\n }\n }\n if (this._isConnected) {\n const element = this.element;\n for (let i = 0; i < behaviorsToUnbind.length; ++i) {\n behaviorsToUnbind[i].unbind(element);\n }\n }\n }\n /**\n * Runs connected lifecycle behavior on the associated element.\n */\n onConnectedCallback() {\n if (this._isConnected) {\n return;\n }\n const element = this.element;\n if (this.needsInitialization) {\n this.finishInitialization();\n }\n else if (this.view !== null) {\n this.view.bind(element, defaultExecutionContext);\n }\n const behaviors = this.behaviors;\n if (behaviors !== null) {\n for (const [behavior] of behaviors) {\n behavior.bind(element, defaultExecutionContext);\n }\n }\n this.setIsConnected(true);\n }\n /**\n * Runs disconnected lifecycle behavior on the associated element.\n */\n onDisconnectedCallback() {\n if (!this._isConnected) {\n return;\n }\n this.setIsConnected(false);\n const view = this.view;\n if (view !== null) {\n view.unbind();\n }\n const behaviors = this.behaviors;\n if (behaviors !== null) {\n const element = this.element;\n for (const [behavior] of behaviors) {\n behavior.unbind(element);\n }\n }\n }\n /**\n * Runs the attribute changed callback for the associated element.\n * @param name - The name of the attribute that changed.\n * @param oldValue - The previous value of the attribute.\n * @param newValue - The new value of the attribute.\n */\n onAttributeChangedCallback(name, oldValue, newValue) {\n const attrDef = this.definition.attributeLookup[name];\n if (attrDef !== void 0) {\n attrDef.onAttributeChangedCallback(this.element, newValue);\n }\n }\n /**\n * Emits a custom HTML event.\n * @param type - The type name of the event.\n * @param detail - The event detail object to send with the event.\n * @param options - The event options. By default bubbles and composed.\n * @remarks\n * Only emits events if connected.\n */\n emit(type, detail, options) {\n if (this._isConnected) {\n return this.element.dispatchEvent(new CustomEvent(type, Object.assign(Object.assign({ detail }, defaultEventOptions), options)));\n }\n return false;\n }\n finishInitialization() {\n const element = this.element;\n const boundObservables = this.boundObservables;\n // If we have any observables that were bound, re-apply their values.\n if (boundObservables !== null) {\n const propertyNames = Object.keys(boundObservables);\n for (let i = 0, ii = propertyNames.length; i < ii; ++i) {\n const propertyName = propertyNames[i];\n element[propertyName] = boundObservables[propertyName];\n }\n this.boundObservables = null;\n }\n const definition = this.definition;\n // 1. Template overrides take top precedence.\n if (this._template === null) {\n if (this.element.resolveTemplate) {\n // 2. Allow for element instance overrides next.\n this._template = this.element.resolveTemplate();\n }\n else if (definition.template) {\n // 3. Default to the static definition.\n this._template = definition.template || null;\n }\n }\n // If we have a template after the above process, render it.\n // If there's no template, then the element author has opted into\n // custom rendering and they will managed the shadow root's content themselves.\n if (this._template !== null) {\n this.renderTemplate(this._template);\n }\n // 1. Styles overrides take top precedence.\n if (this._styles === null) {\n if (this.element.resolveStyles) {\n // 2. Allow for element instance overrides next.\n this._styles = this.element.resolveStyles();\n }\n else if (definition.styles) {\n // 3. Default to the static definition.\n this._styles = definition.styles || null;\n }\n }\n // If we have styles after the above process, add them.\n if (this._styles !== null) {\n this.addStyles(this._styles);\n }\n this.needsInitialization = false;\n }\n renderTemplate(template) {\n const element = this.element;\n // When getting the host to render to, we start by looking\n // up the shadow root. If there isn't one, then that means\n // we're doing a Light DOM render to the element's direct children.\n const host = getShadowRoot(element) || element;\n if (this.view !== null) {\n // If there's already a view, we need to unbind and remove through dispose.\n this.view.dispose();\n this.view = null;\n }\n else if (!this.needsInitialization) {\n // If there was previous custom rendering, we need to clear out the host.\n DOM.removeChildNodes(host);\n }\n if (template) {\n // If a new template was provided, render it.\n this.view = template.render(element, host, element);\n }\n }\n /**\n * Locates or creates a controller for the specified element.\n * @param element - The element to return the controller for.\n * @remarks\n * The specified element must have a {@link FASTElementDefinition}\n * registered either through the use of the {@link customElement}\n * decorator or a call to `FASTElement.define`.\n */\n static forCustomElement(element) {\n const controller = element.$fastController;\n if (controller !== void 0) {\n return controller;\n }\n const definition = FASTElementDefinition.forType(element.constructor);\n if (definition === void 0) {\n throw new Error(\"Missing FASTElement definition.\");\n }\n return (element.$fastController = new Controller(element, definition));\n }\n}\n","import { Controller } from \"./controller.js\";\nimport { FASTElementDefinition, } from \"./fast-definitions.js\";\n/* eslint-disable-next-line @typescript-eslint/explicit-function-return-type */\nfunction createFASTElement(BaseType) {\n return class extends BaseType {\n constructor() {\n /* eslint-disable-next-line */\n super();\n Controller.forCustomElement(this);\n }\n $emit(type, detail, options) {\n return this.$fastController.emit(type, detail, options);\n }\n connectedCallback() {\n this.$fastController.onConnectedCallback();\n }\n disconnectedCallback() {\n this.$fastController.onDisconnectedCallback();\n }\n attributeChangedCallback(name, oldValue, newValue) {\n this.$fastController.onAttributeChangedCallback(name, oldValue, newValue);\n }\n };\n}\n/**\n * A minimal base class for FASTElements that also provides\n * static helpers for working with FASTElements.\n * @public\n */\nexport const FASTElement = Object.assign(createFASTElement(HTMLElement), {\n /**\n * Creates a new FASTElement base class inherited from the\n * provided base type.\n * @param BaseType - The base element type to inherit from.\n */\n from(BaseType) {\n return createFASTElement(BaseType);\n },\n /**\n * Defines a platform custom element based on the provided type and definition.\n * @param type - The custom element type to define.\n * @param nameOrDef - The name of the element to define or a definition object\n * that describes the element to define.\n */\n define(type, nameOrDef) {\n return new FASTElementDefinition(type, nameOrDef).define().type;\n },\n});\n/**\n * Decorator: Defines a platform custom element based on `FASTElement`.\n * @param nameOrDef - The name of the element to define or a definition object\n * that describes the element to define.\n * @public\n */\nexport function customElement(nameOrDef) {\n /* eslint-disable-next-line @typescript-eslint/explicit-function-return-type */\n return function (type) {\n new FASTElementDefinition(type, nameOrDef).define();\n };\n}\n","/**\n * Big thanks to https://github.com/fkleuver and the https://github.com/aurelia/aurelia project\n * for the bulk of this code and many of the associated tests.\n */\nimport { emptyArray, FASTElement } from \"@microsoft/fast-element\";\n// Tiny polyfill for TypeScript's Reflect metadata API.\nconst metadataByTarget = new Map();\nif (!(\"metadata\" in Reflect)) {\n Reflect.metadata = function (key, value) {\n return function (target) {\n Reflect.defineMetadata(key, value, target);\n };\n };\n Reflect.defineMetadata = function (key, value, target) {\n let metadata = metadataByTarget.get(target);\n if (metadata === void 0) {\n metadataByTarget.set(target, (metadata = new Map()));\n }\n metadata.set(key, value);\n };\n Reflect.getOwnMetadata = function (key, target) {\n const metadata = metadataByTarget.get(target);\n if (metadata !== void 0) {\n return metadata.get(key);\n }\n return void 0;\n };\n}\n/**\n * A utility class used that constructs and registers resolvers for a dependency\n * injection container. Supports a standard set of object lifetimes.\n * @public\n */\nexport class ResolverBuilder {\n /**\n *\n * @param container - The container to create resolvers for.\n * @param key - The key to register resolvers under.\n */\n constructor(container, key) {\n this.container = container;\n this.key = key;\n }\n /**\n * Creates a resolver for an existing object instance.\n * @param value - The instance to resolve.\n * @returns The resolver.\n */\n instance(value) {\n return this.registerResolver(0 /* instance */, value);\n }\n /**\n * Creates a resolver that enforces a singleton lifetime.\n * @param value - The type to create and cache the singleton for.\n * @returns The resolver.\n */\n singleton(value) {\n return this.registerResolver(1 /* singleton */, value);\n }\n /**\n * Creates a resolver that creates a new instance for every dependency request.\n * @param value - The type to create instances of.\n * @returns - The resolver.\n */\n transient(value) {\n return this.registerResolver(2 /* transient */, value);\n }\n /**\n * Creates a resolver that invokes a callback function for every dependency resolution\n * request, allowing custom logic to return the dependency.\n * @param value - The callback to call during resolution.\n * @returns The resolver.\n */\n callback(value) {\n return this.registerResolver(3 /* callback */, value);\n }\n /**\n * Creates a resolver that invokes a callback function the first time that a dependency\n * resolution is requested. The returned value is then cached and provided for all\n * subsequent requests.\n * @param value - The callback to call during the first resolution.\n * @returns The resolver.\n */\n cachedCallback(value) {\n return this.registerResolver(3 /* callback */, cacheCallbackResult(value));\n }\n /**\n * Aliases the current key to a different key.\n * @param destinationKey - The key to point the alias to.\n * @returns The resolver.\n */\n aliasTo(destinationKey) {\n return this.registerResolver(5 /* alias */, destinationKey);\n }\n registerResolver(strategy, state) {\n const { container, key } = this;\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n this.container = this.key = (void 0);\n return container.registerResolver(key, new ResolverImpl(key, strategy, state));\n }\n}\nfunction cloneArrayWithPossibleProps(source) {\n const clone = source.slice();\n const keys = Object.keys(source);\n const len = keys.length;\n let key;\n for (let i = 0; i < len; ++i) {\n key = keys[i];\n if (!isArrayIndex(key)) {\n clone[key] = source[key];\n }\n }\n return clone;\n}\n/**\n * A set of default resolvers useful in configuring a container.\n * @public\n */\nexport const DefaultResolver = Object.freeze({\n /**\n * Disables auto-registration and throws for all un-registered dependencies.\n * @param key - The key to create the resolver for.\n */\n none(key) {\n throw Error(`${key.toString()} not registered, did you forget to add @singleton()?`);\n },\n /**\n * Provides default singleton resolution behavior during auto-registration.\n * @param key - The key to create the resolver for.\n * @returns The resolver.\n */\n singleton(key) {\n return new ResolverImpl(key, 1 /* singleton */, key);\n },\n /**\n * Provides default transient resolution behavior during auto-registration.\n * @param key - The key to create the resolver for.\n * @returns The resolver.\n */\n transient(key) {\n return new ResolverImpl(key, 2 /* transient */, key);\n },\n});\n/**\n * Configuration for a dependency injection container.\n * @public\n */\nexport const ContainerConfiguration = Object.freeze({\n /**\n * The default configuration used when creating a DOM-disconnected container.\n * @remarks\n * The default creates a root container, with no parent container. It does not handle\n * owner requests and it uses singleton resolution behavior for auto-registration.\n */\n default: Object.freeze({\n parentLocator: () => null,\n responsibleForOwnerRequests: false,\n defaultResolver: DefaultResolver.singleton,\n }),\n});\nconst dependencyLookup = new Map();\nfunction getParamTypes(key) {\n return (Type) => {\n return Reflect.getOwnMetadata(key, Type);\n };\n}\nlet rootDOMContainer = null;\n/**\n * The gateway to dependency injection APIs.\n * @public\n */\nexport const DI = Object.freeze({\n /**\n * Creates a new dependency injection container.\n * @param config - The configuration for the container.\n * @returns A newly created dependency injection container.\n */\n createContainer(config) {\n return new ContainerImpl(null, Object.assign({}, ContainerConfiguration.default, config));\n },\n /**\n * Finds the dependency injection container responsible for providing dependencies\n * to the specified node.\n * @param node - The node to find the responsible container for.\n * @returns The container responsible for providing dependencies to the node.\n * @remarks\n * This will be the same as the parent container if the specified node\n * does not itself host a container configured with responsibleForOwnerRequests.\n */\n findResponsibleContainer(node) {\n const owned = node.$$container$$;\n if (owned && owned.responsibleForOwnerRequests) {\n return owned;\n }\n return DI.findParentContainer(node);\n },\n /**\n * Find the dependency injection container up the DOM tree from this node.\n * @param node - The node to find the parent container for.\n * @returns The parent container of this node.\n * @remarks\n * This will be the same as the responsible container if the specified node\n * does not itself host a container configured with responsibleForOwnerRequests.\n */\n findParentContainer(node) {\n const event = new CustomEvent(DILocateParentEventType, {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: { container: void 0 },\n });\n node.dispatchEvent(event);\n return event.detail.container || DI.getOrCreateDOMContainer();\n },\n /**\n * Returns a dependency injection container if one is explicitly owned by the specified\n * node. If one is not owned, then a new container is created and assigned to the node.\n * @param node - The node to find or create the container for.\n * @param config - The configuration for the container if one needs to be created.\n * @returns The located or created container.\n * @remarks\n * This API does not search for a responsible or parent container. It looks only for a container\n * directly defined on the specified node and creates one at that location if one does not\n * already exist.\n */\n getOrCreateDOMContainer(node, config) {\n if (!node) {\n return (rootDOMContainer ||\n (rootDOMContainer = new ContainerImpl(null, Object.assign({}, ContainerConfiguration.default, config, {\n parentLocator: () => null,\n }))));\n }\n return (node.$$container$$ ||\n new ContainerImpl(node, Object.assign({}, ContainerConfiguration.default, config, {\n parentLocator: DI.findParentContainer,\n })));\n },\n /**\n * Gets the \"design:paramtypes\" metadata for the specified type.\n * @param Type - The type to get the metadata for.\n * @returns The metadata array or undefined if no metadata is found.\n */\n getDesignParamtypes: getParamTypes(\"design:paramtypes\"),\n /**\n * Gets the \"di:paramtypes\" metadata for the specified type.\n * @param Type - The type to get the metadata for.\n * @returns The metadata array or undefined if no metadata is found.\n */\n getAnnotationParamtypes: getParamTypes(\"di:paramtypes\"),\n /**\n *\n * @param Type - Gets the \"di:paramtypes\" metadata for the specified type. If none is found,\n * an empty metadata array is created and added.\n * @returns The metadata array.\n */\n getOrCreateAnnotationParamTypes(Type) {\n let annotationParamtypes = this.getAnnotationParamtypes(Type);\n if (annotationParamtypes === void 0) {\n Reflect.defineMetadata(\"di:paramtypes\", (annotationParamtypes = []), Type);\n }\n return annotationParamtypes;\n },\n /**\n * Gets the dependency keys representing what is needed to instantiate the specified type.\n * @param Type - The type to get the dependencies for.\n * @returns An array of dependency keys.\n */\n getDependencies(Type) {\n // Note: Every detail of this getDependencies method is pretty deliberate at the moment, and probably not yet 100% tested from every possible angle,\n // so be careful with making changes here as it can have a huge impact on complex end user apps.\n // Preferably, only make changes to the dependency resolution process via a RFC.\n let dependencies = dependencyLookup.get(Type);\n if (dependencies === void 0) {\n // Type.length is the number of constructor parameters. If this is 0, it could mean the class has an empty constructor\n // but it could also mean the class has no constructor at all (in which case it inherits the constructor from the prototype).\n // Non-zero constructor length + no paramtypes means emitDecoratorMetadata is off, or the class has no decorator.\n // We're not doing anything with the above right now, but it's good to keep in mind for any future issues.\n const inject = Type.inject;\n if (inject === void 0) {\n // design:paramtypes is set by tsc when emitDecoratorMetadata is enabled.\n const designParamtypes = DI.getDesignParamtypes(Type);\n // di:paramtypes is set by the parameter decorator from DI.createInterface or by @inject\n const annotationParamtypes = DI.getAnnotationParamtypes(Type);\n if (designParamtypes === void 0) {\n if (annotationParamtypes === void 0) {\n // Only go up the prototype if neither static inject nor any of the paramtypes is defined, as\n // there is no sound way to merge a type's deps with its prototype's deps\n const Proto = Object.getPrototypeOf(Type);\n if (typeof Proto === \"function\" && Proto !== Function.prototype) {\n dependencies = cloneArrayWithPossibleProps(DI.getDependencies(Proto));\n }\n else {\n dependencies = [];\n }\n }\n else {\n // No design:paramtypes so just use the di:paramtypes\n dependencies = cloneArrayWithPossibleProps(annotationParamtypes);\n }\n }\n else if (annotationParamtypes === void 0) {\n // No di:paramtypes so just use the design:paramtypes\n dependencies = cloneArrayWithPossibleProps(designParamtypes);\n }\n else {\n // We've got both, so merge them (in case of conflict on same index, di:paramtypes take precedence)\n dependencies = cloneArrayWithPossibleProps(designParamtypes);\n let len = annotationParamtypes.length;\n let auAnnotationParamtype;\n for (let i = 0; i < len; ++i) {\n auAnnotationParamtype = annotationParamtypes[i];\n if (auAnnotationParamtype !== void 0) {\n dependencies[i] = auAnnotationParamtype;\n }\n }\n const keys = Object.keys(annotationParamtypes);\n len = keys.length;\n let key;\n for (let i = 0; i < len; ++i) {\n key = keys[i];\n if (!isArrayIndex(key)) {\n dependencies[key] = annotationParamtypes[key];\n }\n }\n }\n }\n else {\n // Ignore paramtypes if we have static inject\n dependencies = cloneArrayWithPossibleProps(inject);\n }\n dependencyLookup.set(Type, dependencies);\n }\n return dependencies;\n },\n /**\n * Defines a property on a web component class. The value of this property will\n * be resolved from the dependency injection container responsible for the element\n * instance, based on where it is connected in the DOM.\n * @param target - The target to define the property on.\n * @param propertyName - The name of the property to define.\n * @param key - The dependency injection key.\n * @param respectConnection - Indicates whether or not to update the property value if the\n * hosting component is disconnected and then re-connected at a different location in the DOM.\n * @remarks\n * The respectConnection option is only applicable to elements that descend from FASTElement.\n */\n defineProperty(target, propertyName, key, respectConnection = false) {\n const diPropertyKey = `$di_${propertyName}`;\n Reflect.defineProperty(target, propertyName, {\n get: function () {\n let value = this[diPropertyKey];\n if (value === void 0) {\n const container = this instanceof HTMLElement\n ? DI.findResponsibleContainer(this)\n : DI.getOrCreateDOMContainer();\n value = container.get(key);\n this[diPropertyKey] = value;\n if (respectConnection && this instanceof FASTElement) {\n const notifier = this.$fastController;\n const handleChange = () => {\n const newContainer = DI.findResponsibleContainer(this);\n const newValue = newContainer.get(key);\n const oldValue = this[diPropertyKey];\n if (newValue !== oldValue) {\n this[diPropertyKey] = value;\n notifier.notify(propertyName);\n }\n };\n notifier.subscribe({ handleChange }, \"isConnected\");\n }\n }\n return value;\n },\n });\n },\n /**\n * Creates a dependency injection key.\n * @param nameConfigOrCallback - A friendly name for the key or a lambda that configures a\n * default resolution for the dependency.\n * @param configuror - If a friendly name was provided for the first parameter, then an optional\n * lambda that configures a default resolution for the dependency can be provided second.\n * @returns The created key.\n * @remarks\n * The created key can be used as a property decorator or constructor parameter decorator,\n * in addition to its standard use in an inject array or through direct container APIs.\n */\n createInterface(nameConfigOrCallback, configuror) {\n const configure = typeof nameConfigOrCallback === \"function\"\n ? nameConfigOrCallback\n : configuror;\n const friendlyName = typeof nameConfigOrCallback === \"string\"\n ? nameConfigOrCallback\n : nameConfigOrCallback && \"friendlyName\" in nameConfigOrCallback\n ? nameConfigOrCallback.friendlyName || defaultFriendlyName\n : defaultFriendlyName;\n const respectConnection = typeof nameConfigOrCallback === \"string\"\n ? false\n : nameConfigOrCallback && \"respectConnection\" in nameConfigOrCallback\n ? nameConfigOrCallback.respectConnection || false\n : false;\n const Interface = function (target, property, index) {\n if (target == null || new.target !== undefined) {\n throw new Error(`No registration for interface: '${Interface.friendlyName}'`);\n }\n if (property) {\n DI.defineProperty(target, property, Interface, respectConnection);\n }\n else {\n const annotationParamtypes = DI.getOrCreateAnnotationParamTypes(target);\n annotationParamtypes[index] = Interface;\n }\n };\n Interface.$isInterface = true;\n Interface.friendlyName = friendlyName == null ? \"(anonymous)\" : friendlyName;\n if (configure != null) {\n Interface.register = function (container, key) {\n return configure(new ResolverBuilder(container, key !== null && key !== void 0 ? key : Interface));\n };\n }\n Interface.toString = function toString() {\n return `InterfaceSymbol<${Interface.friendlyName}>`;\n };\n return Interface;\n },\n /**\n * A decorator that specifies what to inject into its target.\n * @param dependencies - The dependencies to inject.\n * @returns The decorator to be applied to the target class.\n * @remarks\n * The decorator can be used to decorate a class, listing all of the classes dependencies.\n * Or it can be used to decorate a constructor paramter, indicating what to inject for that\n * parameter.\n * Or it can be used for a web component property, indicating what that property should resolve to.\n */\n inject(...dependencies) {\n return function (target, key, descriptor) {\n if (typeof descriptor === \"number\") {\n // It's a parameter decorator.\n const annotationParamtypes = DI.getOrCreateAnnotationParamTypes(target);\n const dep = dependencies[0];\n if (dep !== void 0) {\n annotationParamtypes[descriptor] = dep;\n }\n }\n else if (key) {\n DI.defineProperty(target, key, dependencies[0]);\n }\n else {\n const annotationParamtypes = descriptor\n ? DI.getOrCreateAnnotationParamTypes(descriptor.value)\n : DI.getOrCreateAnnotationParamTypes(target);\n let dep;\n for (let i = 0; i < dependencies.length; ++i) {\n dep = dependencies[i];\n if (dep !== void 0) {\n annotationParamtypes[i] = dep;\n }\n }\n }\n };\n },\n /**\n * Registers the `target` class as a transient dependency; each time the dependency is resolved\n * a new instance will be created.\n *\n * @param target - The class / constructor function to register as transient.\n * @returns The same class, with a static `register` method that takes a container and returns the appropriate resolver.\n *\n * @example\n * On an existing class\n * ```ts\n * class Foo { }\n * DI.transient(Foo);\n * ```\n *\n * @example\n * Inline declaration\n *\n * ```ts\n * const Foo = DI.transient(class { });\n * // Foo is now strongly typed with register\n * Foo.register(container);\n * ```\n *\n * @public\n */\n transient(target) {\n target.register = function register(container) {\n const registration = Registration.transient(target, target);\n return registration.register(container);\n };\n target.registerInRequestor = false;\n return target;\n },\n /**\n * Registers the `target` class as a singleton dependency; the class will only be created once. Each\n * consecutive time the dependency is resolved, the same instance will be returned.\n *\n * @param target - The class / constructor function to register as a singleton.\n * @returns The same class, with a static `register` method that takes a container and returns the appropriate resolver.\n * @example\n * On an existing class\n * ```ts\n * class Foo { }\n * DI.singleton(Foo);\n * ```\n *\n * @example\n * Inline declaration\n * ```ts\n * const Foo = DI.singleton(class { });\n * // Foo is now strongly typed with register\n * Foo.register(container);\n * ```\n *\n * @public\n */\n singleton(target, options = defaultSingletonOptions) {\n target.register = function register(container) {\n const registration = Registration.singleton(target, target);\n return registration.register(container);\n };\n target.registerInRequestor = options.scoped;\n return target;\n },\n});\n/**\n * The interface key that resolves the dependency injection container itself.\n * @public\n */\nexport const Container = DI.createInterface(\"Container\");\n/**\n * The interface key that resolves the service locator itself.\n * @public\n */\nexport const ServiceLocator = Container;\nfunction createResolver(getter) {\n return function (key) {\n const resolver = function (target, property, descriptor) {\n DI.inject(resolver)(target, property, descriptor);\n };\n resolver.$isResolver = true;\n resolver.resolve = function (handler, requestor) {\n return getter(key, handler, requestor);\n };\n return resolver;\n };\n}\n/**\n * A decorator that specifies what to inject into its target.\n * @param dependencies - The dependencies to inject.\n * @returns The decorator to be applied to the target class.\n * @remarks\n * The decorator can be used to decorate a class, listing all of the classes dependencies.\n * Or it can be used to decorate a constructor paramter, indicating what to inject for that\n * parameter.\n * Or it can be used for a web component property, indicating what that property should resolve to.\n *\n * @public\n */\nexport const inject = DI.inject;\nfunction transientDecorator(target) {\n return DI.transient(target);\n}\nexport function transient(target) {\n return target == null ? transientDecorator : transientDecorator(target);\n}\nconst defaultSingletonOptions = { scoped: false };\nfunction singletonDecorator(target) {\n return DI.singleton(target);\n}\n/**\n * @public\n */\nexport function singleton(targetOrOptions) {\n if (typeof targetOrOptions === \"function\") {\n return DI.singleton(targetOrOptions);\n }\n return function ($target) {\n return DI.singleton($target, targetOrOptions);\n };\n}\nfunction createAllResolver(getter) {\n return function (key, searchAncestors) {\n searchAncestors = !!searchAncestors;\n const resolver = function (target, property, descriptor) {\n DI.inject(resolver)(target, property, descriptor);\n };\n resolver.$isResolver = true;\n resolver.resolve = function (handler, requestor) {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n return getter(key, handler, requestor, searchAncestors);\n };\n return resolver;\n };\n}\n/**\n * A decorator and DI resolver that will resolve an array of all dependencies\n * registered with the specified key.\n * @param key - The key to resolve all dependencies for.\n * @param searchAncestors - [optional] Indicates whether to search ancestor containers.\n * @public\n */\nexport const all = createAllResolver((key, handler, requestor, searchAncestors) => requestor.getAll(key, searchAncestors));\n/**\n * A decorator that lazily injects a dependency depending on whether the `Key` is present at the time of function call.\n *\n * @example\n * You need to make your argument a function that returns the type, for example\n * ```ts\n * class Foo {\n * constructor( @lazy('random') public random: () => number )\n * }\n * const foo = container.get(Foo); // instanceof Foo\n * foo.random(); // throws\n * ```\n * would throw an exception because you haven't registered `'random'` before calling the method.\n * @example\n * This, would give you a new 'Math.random()' number each time.\n * ```ts\n * class Foo {\n * constructor( @lazy('random') public random: () => random )\n * }\n * container.register(Registration.callback('random', Math.random ));\n * container.get(Foo).random(); // some random number\n * container.get(Foo).random(); // another random number\n * ```\n *\n * `@lazy` does not manage the lifecycle of the underlying key. If you want a singleton, you have to register as a\n * `singleton`, `transient` would also behave as you would expect, providing you a new instance each time.\n *\n * @param key - The key to lazily resolve.\n * see {@link DI.createInterface} on interactions with interfaces\n *\n * @public\n */\nexport const lazy = createResolver((key, handler, requestor) => {\n return () => requestor.get(key);\n});\n/**\n * A decorator that allows you to optionally inject a dependency depending on whether the [[`Key`]] is present, for example:\n * @example\n * ```ts\n * class Foo {\n * constructor( @inject('mystring') public str: string = 'somestring' )\n * }\n * container.get(Foo); // throws\n * ```\n * would fail\n *\n * @example\n * ```ts\n * class Foo {\n * constructor( @optional('mystring') public str: string = 'somestring' )\n * }\n * container.get(Foo).str // somestring\n * ```\n * if you use it without a default it will inject `undefined`, so remember to mark your input type as\n * possibly `undefined`!\n *\n * @param key - The key to optionally resolve.\n * see {@link DI.createInterface} on interactions with interfaces\n *\n * @public\n */\nexport const optional = createResolver((key, handler, requestor) => {\n if (requestor.has(key, true)) {\n return requestor.get(key);\n }\n else {\n return undefined;\n }\n});\n/**\n * A decorator that tells the container not to try to inject a dependency.\n *\n * @public\n */\nexport function ignore(target, property, descriptor) {\n DI.inject(ignore)(target, property, descriptor);\n}\n// Hack: casting below used to prevent TS from generate a namespace which can't be commented\n// and results in documentation validation errors.\nignore.$isResolver = true;\nignore.resolve = () => undefined;\n/**\n * A decorator that indicates that a new instance should be injected scoped to the\n * container that requested the instance.\n * @param key - The dependency key for the new instance.\n * @remarks\n * This creates a resolver with an instance strategy pointing to the new instance, effectively\n * making this a singleton, scoped to the container or DOM's subtree.\n *\n * @public\n */\nexport const newInstanceForScope = createResolver((key, handler, requestor) => {\n const instance = createNewInstance(key, handler);\n const resolver = new ResolverImpl(key, 0 /* instance */, instance);\n requestor.registerResolver(key, resolver);\n return instance;\n});\n/**\n * A decorator that indicates that a new instance should be injected.\n * @param key - The dependency key for the new instance.\n * @remarks\n * The instance is not internally cached with a resolver as newInstanceForScope does.\n *\n * @public\n */\nexport const newInstanceOf = createResolver((key, handler, _requestor) => createNewInstance(key, handler));\nfunction createNewInstance(key, handler) {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n return handler.getFactory(key).construct(handler);\n}\n/** @internal */\nexport class ResolverImpl {\n constructor(key, strategy, state) {\n this.key = key;\n this.strategy = strategy;\n this.state = state;\n this.resolving = false;\n }\n get $isResolver() {\n return true;\n }\n register(container) {\n return container.registerResolver(this.key, this);\n }\n resolve(handler, requestor) {\n switch (this.strategy) {\n case 0 /* instance */:\n return this.state;\n case 1 /* singleton */: {\n if (this.resolving) {\n throw new Error(`Cyclic dependency found: ${this.state.name}`);\n }\n this.resolving = true;\n this.state = handler\n .getFactory(this.state)\n .construct(requestor);\n this.strategy = 0 /* instance */;\n this.resolving = false;\n return this.state;\n }\n case 2 /* transient */: {\n // Always create transients from the requesting container\n const factory = handler.getFactory(this.state);\n if (factory === null) {\n throw new Error(`Resolver for ${String(this.key)} returned a null factory`);\n }\n return factory.construct(requestor);\n }\n case 3 /* callback */:\n return this.state(handler, requestor, this);\n case 4 /* array */:\n return this.state[0].resolve(handler, requestor);\n case 5 /* alias */:\n return requestor.get(this.state);\n default:\n throw new Error(`Invalid resolver strategy specified: ${this.strategy}.`);\n }\n }\n getFactory(container) {\n var _a, _b, _c;\n switch (this.strategy) {\n case 1 /* singleton */:\n case 2 /* transient */:\n return container.getFactory(this.state);\n case 5 /* alias */:\n return (_c = (_b = (_a = container.getResolver(this.state)) === null || _a === void 0 ? void 0 : _a.getFactory) === null || _b === void 0 ? void 0 : _b.call(_a, container)) !== null && _c !== void 0 ? _c : null;\n default:\n return null;\n }\n }\n}\nfunction containerGetKey(d) {\n return this.get(d);\n}\nfunction transformInstance(inst, transform) {\n return transform(inst);\n}\n/** @internal */\nexport class FactoryImpl {\n constructor(Type, dependencies) {\n this.Type = Type;\n this.dependencies = dependencies;\n this.transformers = null;\n }\n construct(container, dynamicDependencies) {\n let instance;\n if (dynamicDependencies === void 0) {\n instance = new this.Type(...this.dependencies.map(containerGetKey, container));\n }\n else {\n instance = new this.Type(...this.dependencies.map(containerGetKey, container), ...dynamicDependencies);\n }\n if (this.transformers == null) {\n return instance;\n }\n return this.transformers.reduce(transformInstance, instance);\n }\n registerTransformer(transformer) {\n (this.transformers || (this.transformers = [])).push(transformer);\n }\n}\nconst containerResolver = {\n $isResolver: true,\n resolve(handler, requestor) {\n return requestor;\n },\n};\nfunction isRegistry(obj) {\n return typeof obj.register === \"function\";\n}\nfunction isSelfRegistry(obj) {\n return isRegistry(obj) && typeof obj.registerInRequestor === \"boolean\";\n}\nfunction isRegisterInRequester(obj) {\n return isSelfRegistry(obj) && obj.registerInRequestor;\n}\nfunction isClass(obj) {\n return obj.prototype !== void 0;\n}\nconst InstrinsicTypeNames = new Set([\n \"Array\",\n \"ArrayBuffer\",\n \"Boolean\",\n \"DataView\",\n \"Date\",\n \"Error\",\n \"EvalError\",\n \"Float32Array\",\n \"Float64Array\",\n \"Function\",\n \"Int8Array\",\n \"Int16Array\",\n \"Int32Array\",\n \"Map\",\n \"Number\",\n \"Object\",\n \"Promise\",\n \"RangeError\",\n \"ReferenceError\",\n \"RegExp\",\n \"Set\",\n \"SharedArrayBuffer\",\n \"String\",\n \"SyntaxError\",\n \"TypeError\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"URIError\",\n \"WeakMap\",\n \"WeakSet\",\n]);\nconst DILocateParentEventType = \"__DI_LOCATE_PARENT__\";\nconst factories = new Map();\n/**\n * @internal\n */\nexport class ContainerImpl {\n constructor(owner, config) {\n this.owner = owner;\n this.config = config;\n this._parent = void 0;\n this.registerDepth = 0;\n this.context = null;\n if (owner !== null) {\n owner.$$container$$ = this;\n }\n this.resolvers = new Map();\n this.resolvers.set(Container, containerResolver);\n if (owner instanceof Node) {\n owner.addEventListener(DILocateParentEventType, (e) => {\n if (e.composedPath()[0] !== this.owner) {\n e.detail.container = this;\n e.stopImmediatePropagation();\n }\n });\n }\n }\n get parent() {\n if (this._parent === void 0) {\n this._parent = this.config.parentLocator(this.owner);\n }\n return this._parent;\n }\n get depth() {\n return this.parent === null ? 0 : this.parent.depth + 1;\n }\n get responsibleForOwnerRequests() {\n return this.config.responsibleForOwnerRequests;\n }\n registerWithContext(context, ...params) {\n this.context = context;\n this.register(...params);\n this.context = null;\n return this;\n }\n register(...params) {\n if (++this.registerDepth === 100) {\n throw new Error(\"Unable to autoregister dependency\");\n // Most likely cause is trying to register a plain object that does not have a\n // register method and is not a class constructor\n }\n let current;\n let keys;\n let value;\n let j;\n let jj;\n const context = this.context;\n for (let i = 0, ii = params.length; i < ii; ++i) {\n current = params[i];\n if (!isObject(current)) {\n continue;\n }\n if (isRegistry(current)) {\n current.register(this, context);\n }\n else if (isClass(current)) {\n Registration.singleton(current, current).register(this);\n }\n else {\n keys = Object.keys(current);\n j = 0;\n jj = keys.length;\n for (; j < jj; ++j) {\n value = current[keys[j]];\n if (!isObject(value)) {\n continue;\n }\n // note: we could remove this if-branch and call this.register directly\n // - the extra check is just a perf tweak to create fewer unnecessary arrays by the spread operator\n if (isRegistry(value)) {\n value.register(this, context);\n }\n else {\n this.register(value);\n }\n }\n }\n }\n --this.registerDepth;\n return this;\n }\n registerResolver(key, resolver) {\n validateKey(key);\n const resolvers = this.resolvers;\n const result = resolvers.get(key);\n if (result == null) {\n resolvers.set(key, resolver);\n }\n else if (result instanceof ResolverImpl &&\n result.strategy === 4 /* array */) {\n result.state.push(resolver);\n }\n else {\n resolvers.set(key, new ResolverImpl(key, 4 /* array */, [result, resolver]));\n }\n return resolver;\n }\n registerTransformer(key, transformer) {\n const resolver = this.getResolver(key);\n if (resolver == null) {\n return false;\n }\n if (resolver.getFactory) {\n const factory = resolver.getFactory(this);\n if (factory == null) {\n return false;\n }\n // This type cast is a bit of a hacky one, necessary due to the duplicity of IResolverLike.\n // Problem is that that interface's type arg can be of type Key, but the getFactory method only works on\n // type Constructable. So the return type of that optional method has this additional constraint, which\n // seems to confuse the type checker.\n factory.registerTransformer(transformer);\n return true;\n }\n return false;\n }\n getResolver(key, autoRegister = true) {\n validateKey(key);\n if (key.resolve !== void 0) {\n return key;\n }\n /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n let current = this;\n let resolver;\n while (current != null) {\n resolver = current.resolvers.get(key);\n if (resolver == null) {\n if (current.parent == null) {\n const handler = isRegisterInRequester(key)\n ? this\n : current;\n return autoRegister ? this.jitRegister(key, handler) : null;\n }\n current = current.parent;\n }\n else {\n return resolver;\n }\n }\n return null;\n }\n has(key, searchAncestors = false) {\n return this.resolvers.has(key)\n ? true\n : searchAncestors && this.parent != null\n ? this.parent.has(key, true)\n : false;\n }\n get(key) {\n validateKey(key);\n if (key.$isResolver) {\n return key.resolve(this, this);\n }\n /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n let current = this;\n let resolver;\n while (current != null) {\n resolver = current.resolvers.get(key);\n if (resolver == null) {\n if (current.parent == null) {\n const handler = isRegisterInRequester(key)\n ? this\n : current;\n resolver = this.jitRegister(key, handler);\n return resolver.resolve(current, this);\n }\n current = current.parent;\n }\n else {\n return resolver.resolve(current, this);\n }\n }\n throw new Error(`Unable to resolve key: ${String(key)}`);\n }\n getAll(key, searchAncestors = false) {\n validateKey(key);\n /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n const requestor = this;\n let current = requestor;\n let resolver;\n if (searchAncestors) {\n let resolutions = emptyArray;\n while (current != null) {\n resolver = current.resolvers.get(key);\n if (resolver != null) {\n resolutions = resolutions.concat(\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n buildAllResponse(resolver, current, requestor));\n }\n current = current.parent;\n }\n return resolutions;\n }\n else {\n while (current != null) {\n resolver = current.resolvers.get(key);\n if (resolver == null) {\n current = current.parent;\n if (current == null) {\n return emptyArray;\n }\n }\n else {\n return buildAllResponse(resolver, current, requestor);\n }\n }\n }\n return emptyArray;\n }\n getFactory(Type) {\n let factory = factories.get(Type);\n if (factory === void 0) {\n if (isNativeFunction(Type)) {\n throw new Error(`${Type.name} is a native function and therefore cannot be safely constructed by DI. If this is intentional, please use a callback or cachedCallback resolver.`);\n }\n factories.set(Type, (factory = new FactoryImpl(Type, DI.getDependencies(Type))));\n }\n return factory;\n }\n registerFactory(key, factory) {\n factories.set(key, factory);\n }\n createChild(config) {\n return new ContainerImpl(null, Object.assign({}, this.config, config, { parentLocator: () => this }));\n }\n jitRegister(keyAsValue, handler) {\n if (typeof keyAsValue !== \"function\") {\n throw new Error(`Attempted to jitRegister something that is not a constructor: '${keyAsValue}'. Did you forget to register this dependency?`);\n }\n if (InstrinsicTypeNames.has(keyAsValue.name)) {\n throw new Error(`Attempted to jitRegister an intrinsic type: ${keyAsValue.name}. Did you forget to add @inject(Key)`);\n }\n if (isRegistry(keyAsValue)) {\n const registrationResolver = keyAsValue.register(handler);\n if (!(registrationResolver instanceof Object) ||\n registrationResolver.resolve == null) {\n const newResolver = handler.resolvers.get(keyAsValue);\n if (newResolver != void 0) {\n return newResolver;\n }\n throw new Error(\"A valid resolver was not returned from the static register method\");\n }\n return registrationResolver;\n }\n else if (keyAsValue.$isInterface) {\n throw new Error(`Attempted to jitRegister an interface: ${keyAsValue.friendlyName}`);\n }\n else {\n const resolver = this.config.defaultResolver(keyAsValue, handler);\n handler.resolvers.set(keyAsValue, resolver);\n return resolver;\n }\n }\n}\nconst cache = new WeakMap();\nfunction cacheCallbackResult(fun) {\n return function (handler, requestor, resolver) {\n if (cache.has(resolver)) {\n return cache.get(resolver);\n }\n const t = fun(handler, requestor, resolver);\n cache.set(resolver, t);\n return t;\n };\n}\n/**\n * You can use the resulting Registration of any of the factory methods\n * to register with the container.\n *\n * @example\n * ```\n * class Foo {}\n * const container = DI.createContainer();\n * container.register(Registration.instance(Foo, new Foo()));\n * container.get(Foo);\n * ```\n *\n * @public\n */\nexport const Registration = Object.freeze({\n /**\n * Allows you to pass an instance.\n * Every time you request this {@link Key} you will get this instance back.\n *\n * @example\n * ```\n * Registration.instance(Foo, new Foo()));\n * ```\n *\n * @param key - The key to register the instance under.\n * @param value - The instance to return when the key is requested.\n */\n instance(key, value) {\n return new ResolverImpl(key, 0 /* instance */, value);\n },\n /**\n * Creates an instance from the class.\n * Every time you request this {@link Key} you will get the same one back.\n *\n * @example\n * ```\n * Registration.singleton(Foo, Foo);\n * ```\n *\n * @param key - The key to register the singleton under.\n * @param value - The class to instantiate as a singleton when first requested.\n */\n singleton(key, value) {\n return new ResolverImpl(key, 1 /* singleton */, value);\n },\n /**\n * Creates an instance from a class.\n * Every time you request this {@link Key} you will get a new instance.\n *\n * @example\n * ```\n * Registration.instance(Foo, Foo);\n * ```\n *\n * @param key - The key to register the instance type under.\n * @param value - The class to instantiate each time the key is requested.\n */\n transient(key, value) {\n return new ResolverImpl(key, 2 /* transient */, value);\n },\n /**\n * Delegates to a callback function to provide the dependency.\n * Every time you request this {@link Key} the callback will be invoked to provide\n * the dependency.\n *\n * @example\n * ```\n * Registration.callback(Foo, () => new Foo());\n * Registration.callback(Bar, (c: Container) => new Bar(c.get(Foo)));\n * ```\n *\n * @param key - The key to register the callback for.\n * @param callback - The function that is expected to return the dependency.\n */\n callback(key, callback) {\n return new ResolverImpl(key, 3 /* callback */, callback);\n },\n /**\n * Delegates to a callback function to provide the dependency and then caches the\n * dependency for future requests.\n *\n * @example\n * ```\n * Registration.cachedCallback(Foo, () => new Foo());\n * Registration.cachedCallback(Bar, (c: Container) => new Bar(c.get(Foo)));\n * ```\n *\n * @param key - The key to register the callback for.\n * @param callback - The function that is expected to return the dependency.\n * @remarks\n * If you pass the same Registration to another container, the same cached value will be used.\n * Should all references to the resolver returned be removed, the cache will expire.\n */\n cachedCallback(key, callback) {\n return new ResolverImpl(key, 3 /* callback */, cacheCallbackResult(callback));\n },\n /**\n * Creates an alternate {@link Key} to retrieve an instance by.\n *\n * @example\n * ```\n * Register.singleton(Foo, Foo)\n * Register.aliasTo(Foo, MyFoos);\n *\n * container.getAll(MyFoos) // contains an instance of Foo\n * ```\n *\n * @param originalKey - The original key that has been registered.\n * @param aliasKey - The alias to the original key.\n */\n aliasTo(originalKey, aliasKey) {\n return new ResolverImpl(aliasKey, 5 /* alias */, originalKey);\n },\n});\n/** @internal */\nexport function validateKey(key) {\n if (key === null || key === void 0) {\n throw new Error(\"key/value cannot be null or undefined. Are you trying to inject/register something that doesn't exist with DI?\");\n }\n}\nfunction buildAllResponse(resolver, handler, requestor) {\n if (resolver instanceof ResolverImpl &&\n resolver.strategy === 4 /* array */) {\n const state = resolver.state;\n let i = state.length;\n const results = new Array(i);\n while (i--) {\n results[i] = state[i].resolve(handler, requestor);\n }\n return results;\n }\n return [resolver.resolve(handler, requestor)];\n}\nconst defaultFriendlyName = \"(anonymous)\";\nfunction isObject(value) {\n return (typeof value === \"object\" && value !== null) || typeof value === \"function\";\n}\n/**\n * Determine whether the value is a native function.\n *\n * @param fn - The function to check.\n * @returns `true` is the function is a native function, otherwise `false`\n */\nconst isNativeFunction = (function () {\n const lookup = new WeakMap();\n let isNative = false;\n let sourceText = \"\";\n let i = 0;\n return function (fn) {\n isNative = lookup.get(fn);\n if (isNative === void 0) {\n sourceText = fn.toString();\n i = sourceText.length;\n // http://www.ecma-international.org/ecma-262/#prod-NativeFunction\n isNative =\n // 29 is the length of 'function () { [native code] }' which is the smallest length of a native function string\n i >= 29 &&\n // 100 seems to be a safe upper bound of the max length of a native function. In Chrome and FF it's 56, in Edge it's 61.\n i <= 100 &&\n // This whole heuristic *could* be tricked by a comment. Do we need to care about that?\n sourceText.charCodeAt(i - 1) === 0x7d && // }\n // TODO: the spec is a little vague about the precise constraints, so we do need to test this across various browsers to make sure just one whitespace is a safe assumption.\n sourceText.charCodeAt(i - 2) <= 0x20 && // whitespace\n sourceText.charCodeAt(i - 3) === 0x5d && // ]\n sourceText.charCodeAt(i - 4) === 0x65 && // e\n sourceText.charCodeAt(i - 5) === 0x64 && // d\n sourceText.charCodeAt(i - 6) === 0x6f && // o\n sourceText.charCodeAt(i - 7) === 0x63 && // c\n sourceText.charCodeAt(i - 8) === 0x20 && //\n sourceText.charCodeAt(i - 9) === 0x65 && // e\n sourceText.charCodeAt(i - 10) === 0x76 && // v\n sourceText.charCodeAt(i - 11) === 0x69 && // i\n sourceText.charCodeAt(i - 12) === 0x74 && // t\n sourceText.charCodeAt(i - 13) === 0x61 && // a\n sourceText.charCodeAt(i - 14) === 0x6e && // n\n sourceText.charCodeAt(i - 15) === 0x58; // [\n lookup.set(fn, isNative);\n }\n return isNative;\n };\n})();\nconst isNumericLookup = {};\nfunction isArrayIndex(value) {\n switch (typeof value) {\n case \"number\":\n return value >= 0 && (value | 0) === value;\n case \"string\": {\n const result = isNumericLookup[value];\n if (result !== void 0) {\n return result;\n }\n const length = value.length;\n if (length === 0) {\n return (isNumericLookup[value] = false);\n }\n let ch = 0;\n for (let i = 0; i < length; ++i) {\n ch = value.charCodeAt(i);\n if ((i === 0 && ch === 0x30 && length > 1) /* must not start with 0 */ ||\n ch < 0x30 /* 0 */ ||\n ch > 0x39 /* 9 */) {\n return (isNumericLookup[value] = false);\n }\n }\n return (isNumericLookup[value] = true);\n }\n default:\n return false;\n }\n}\n","import { ElementStyles, } from \"@microsoft/fast-element\";\nimport { DI, Registration } from \"../di/di.js\";\nfunction presentationKeyFromTag(tagName) {\n return `${tagName.toLowerCase()}:presentation`;\n}\nconst presentationRegistry = new Map();\n/**\n * An API gateway to component presentation features.\n * @public\n */\nexport const ComponentPresentation = Object.freeze({\n /**\n * Defines a component presentation for an element.\n * @param tagName - The element name to define the presentation for.\n * @param presentation - The presentation that will be applied to matching elements.\n * @param container - The dependency injection container to register the configuration in.\n * @public\n */\n define(tagName, presentation, container) {\n const key = presentationKeyFromTag(tagName);\n const existing = presentationRegistry.get(key);\n if (existing === void 0) {\n presentationRegistry.set(key, presentation);\n }\n else {\n // false indicates that we have more than one presentation\n // registered for a tagName and we must resolve through DI\n presentationRegistry.set(key, false);\n }\n container.register(Registration.instance(key, presentation));\n },\n /**\n * Finds a component presentation for the specified element name,\n * searching the DOM hierarchy starting from the provided element.\n * @param tagName - The name of the element to locate the presentation for.\n * @param element - The element to begin the search from.\n * @returns The component presentation or null if none is found.\n * @public\n */\n forTag(tagName, element) {\n const key = presentationKeyFromTag(tagName);\n const existing = presentationRegistry.get(key);\n if (existing === false) {\n const container = DI.findResponsibleContainer(element);\n return container.get(key);\n }\n return existing || null;\n },\n});\n/**\n * The default implementation of ComponentPresentation, used by FoundationElement.\n * @public\n */\nexport class DefaultComponentPresentation {\n /**\n * Creates an instance of DefaultComponentPresentation.\n * @param template - The template to apply to the element.\n * @param styles - The styles to apply to the element.\n * @public\n */\n constructor(template, styles) {\n this.template = template || null;\n this.styles =\n styles === void 0\n ? null\n : Array.isArray(styles)\n ? ElementStyles.create(styles)\n : styles instanceof ElementStyles\n ? styles\n : ElementStyles.create([styles]);\n }\n /**\n * Applies the presentation details to the specified element.\n * @param element - The element to apply the presentation details to.\n * @public\n */\n applyTo(element) {\n const controller = element.$fastController;\n if (controller.template === null) {\n controller.template = this.template;\n }\n if (controller.styles === null) {\n controller.styles = this.styles;\n }\n }\n}\n","import { __decorate } from \"tslib\";\nimport { FASTElement, observable } from \"@microsoft/fast-element\";\nimport { ComponentPresentation, DefaultComponentPresentation, } from \"../design-system/component-presentation.js\";\n/**\n * Defines a foundation element class that:\n * 1. Connects the element to its ComponentPresentation\n * 2. Allows resolving the element template from the instance or ComponentPresentation\n * 3. Allows resolving the element styles from the instance or ComponentPresentation\n *\n * @public\n */\nexport class FoundationElement extends FASTElement {\n constructor() {\n super(...arguments);\n this._presentation = void 0;\n }\n /**\n * A property which resolves the ComponentPresentation instance\n * for the current component.\n * @public\n */\n get $presentation() {\n if (this._presentation === void 0) {\n this._presentation = ComponentPresentation.forTag(this.tagName, this);\n }\n return this._presentation;\n }\n templateChanged() {\n if (this.template !== undefined) {\n this.$fastController.template = this.template;\n }\n }\n stylesChanged() {\n if (this.styles !== undefined) {\n this.$fastController.styles = this.styles;\n }\n }\n /**\n * The connected callback for this FASTElement.\n * @remarks\n * This method is invoked by the platform whenever this FoundationElement\n * becomes connected to the document.\n * @public\n */\n connectedCallback() {\n if (this.$presentation !== null) {\n this.$presentation.applyTo(this);\n }\n super.connectedCallback();\n }\n /**\n * Defines an element registry function with a set of element definition defaults.\n * @param elementDefinition - The definition of the element to create the registry\n * function for.\n * @public\n */\n static compose(elementDefinition) {\n return (overrideDefinition = {}) => new FoundationElementRegistry(this === FoundationElement\n ? class extends FoundationElement {\n }\n : this, elementDefinition, overrideDefinition);\n }\n}\n__decorate([\n observable\n], FoundationElement.prototype, \"template\", void 0);\n__decorate([\n observable\n], FoundationElement.prototype, \"styles\", void 0);\nfunction resolveOption(option, context, definition) {\n if (typeof option === \"function\") {\n return option(context, definition);\n }\n return option;\n}\n/**\n * Registry capable of defining presentation properties for a DOM Container hierarchy.\n *\n * @internal\n */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport class FoundationElementRegistry {\n constructor(type, elementDefinition, overrideDefinition) {\n this.type = type;\n this.elementDefinition = elementDefinition;\n this.overrideDefinition = overrideDefinition;\n this.definition = Object.assign(Object.assign({}, this.elementDefinition), this.overrideDefinition);\n }\n register(container, context) {\n const definition = this.definition;\n const overrideDefinition = this.overrideDefinition;\n const prefix = definition.prefix || context.elementPrefix;\n const name = `${prefix}-${definition.baseName}`;\n context.tryDefineElement({\n name,\n type: this.type,\n baseClass: this.elementDefinition.baseClass,\n callback: x => {\n const presentation = new DefaultComponentPresentation(resolveOption(definition.template, x, definition), resolveOption(definition.styles, x, definition));\n x.definePresentation(presentation);\n let shadowOptions = resolveOption(definition.shadowOptions, x, definition);\n if (x.shadowRootMode) {\n // If the design system has overridden the shadow root mode, we need special handling.\n if (shadowOptions) {\n // If there are shadow options present in the definition, then\n // either the component itself has specified an option or the\n // registry function has overridden it.\n if (!overrideDefinition.shadowOptions) {\n // There were shadow options provided by the component and not overridden by\n // the registry.\n shadowOptions.mode = x.shadowRootMode;\n }\n }\n else if (shadowOptions !== null) {\n // If the component author did not provide shadow options,\n // and did not null them out (light dom opt-in) then they\n // were relying on the FASTElement default. So, if the\n // design system provides a mode, we need to create the options\n // to override the default.\n shadowOptions = { mode: x.shadowRootMode };\n }\n }\n x.defineElement({\n elementOptions: resolveOption(definition.elementOptions, x, definition),\n shadowOptions,\n attributes: resolveOption(definition.attributes, x, definition),\n });\n },\n });\n }\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\n","import { DOM } from \"../dom.js\";\n/**\n * Instructs the template engine to apply behavior to a node.\n * @public\n */\nexport class HTMLDirective {\n constructor() {\n /**\n * The index of the DOM node to which the created behavior will apply.\n */\n this.targetIndex = 0;\n }\n}\n/**\n * A {@link HTMLDirective} that targets a named attribute or property on a node.\n * @public\n */\nexport class TargetedHTMLDirective extends HTMLDirective {\n constructor() {\n super(...arguments);\n /**\n * Creates a placeholder string based on the directive's index within the template.\n * @param index - The index of the directive within the template.\n */\n this.createPlaceholder = DOM.createInterpolationPlaceholder;\n }\n}\n/**\n * A directive that attaches special behavior to an element via a custom attribute.\n * @public\n */\nexport class AttachedBehaviorHTMLDirective extends HTMLDirective {\n /**\n *\n * @param name - The name of the behavior; used as a custom attribute on the element.\n * @param behavior - The behavior to instantiate and attach to the element.\n * @param options - Options to pass to the behavior during creation.\n */\n constructor(name, behavior, options) {\n super();\n this.name = name;\n this.behavior = behavior;\n this.options = options;\n }\n /**\n * Creates a placeholder string based on the directive's index within the template.\n * @param index - The index of the directive within the template.\n * @remarks\n * Creates a custom attribute placeholder.\n */\n createPlaceholder(index) {\n return DOM.createCustomAttributePlaceholder(this.name, index);\n }\n /**\n * Creates a behavior for the provided target node.\n * @param target - The node instance to create the behavior for.\n * @remarks\n * Creates an instance of the `behavior` type this directive was constructed with\n * and passes the target and options to that `behavior`'s constructor.\n */\n createBehavior(target) {\n return new this.behavior(target, this.options);\n }\n}\n","import { DOM } from \"../dom.js\";\nimport { ExecutionContext, Observable, } from \"../observation/observable.js\";\nimport { TargetedHTMLDirective } from \"./html-directive.js\";\nfunction normalBind(source, context) {\n this.source = source;\n this.context = context;\n if (this.bindingObserver === null) {\n this.bindingObserver = Observable.binding(this.binding, this, this.isBindingVolatile);\n }\n this.updateTarget(this.bindingObserver.observe(source, context));\n}\nfunction triggerBind(source, context) {\n this.source = source;\n this.context = context;\n this.target.addEventListener(this.targetName, this);\n}\nfunction normalUnbind() {\n this.bindingObserver.disconnect();\n this.source = null;\n this.context = null;\n}\nfunction contentUnbind() {\n this.bindingObserver.disconnect();\n this.source = null;\n this.context = null;\n const view = this.target.$fastView;\n if (view !== void 0 && view.isComposed) {\n view.unbind();\n view.needsBindOnly = true;\n }\n}\nfunction triggerUnbind() {\n this.target.removeEventListener(this.targetName, this);\n this.source = null;\n this.context = null;\n}\nfunction updateAttributeTarget(value) {\n DOM.setAttribute(this.target, this.targetName, value);\n}\nfunction updateBooleanAttributeTarget(value) {\n DOM.setBooleanAttribute(this.target, this.targetName, value);\n}\nfunction updateContentTarget(value) {\n // If there's no actual value, then this equates to the\n // empty string for the purposes of content bindings.\n if (value === null || value === undefined) {\n value = \"\";\n }\n // If the value has a \"create\" method, then it's a template-like.\n if (value.create) {\n this.target.textContent = \"\";\n let view = this.target.$fastView;\n // If there's no previous view that we might be able to\n // reuse then create a new view from the template.\n if (view === void 0) {\n view = value.create();\n }\n else {\n // If there is a previous view, but it wasn't created\n // from the same template as the new value, then we\n // need to remove the old view if it's still in the DOM\n // and create a new view from the template.\n if (this.target.$fastTemplate !== value) {\n if (view.isComposed) {\n view.remove();\n view.unbind();\n }\n view = value.create();\n }\n }\n // It's possible that the value is the same as the previous template\n // and that there's actually no need to compose it.\n if (!view.isComposed) {\n view.isComposed = true;\n view.bind(this.source, this.context);\n view.insertBefore(this.target);\n this.target.$fastView = view;\n this.target.$fastTemplate = value;\n }\n else if (view.needsBindOnly) {\n view.needsBindOnly = false;\n view.bind(this.source, this.context);\n }\n }\n else {\n const view = this.target.$fastView;\n // If there is a view and it's currently composed into\n // the DOM, then we need to remove it.\n if (view !== void 0 && view.isComposed) {\n view.isComposed = false;\n view.remove();\n if (view.needsBindOnly) {\n view.needsBindOnly = false;\n }\n else {\n view.unbind();\n }\n }\n this.target.textContent = value;\n }\n}\nfunction updatePropertyTarget(value) {\n this.target[this.targetName] = value;\n}\nfunction updateClassTarget(value) {\n const classVersions = this.classVersions || Object.create(null);\n const target = this.target;\n let version = this.version || 0;\n // Add the classes, tracking the version at which they were added.\n if (value !== null && value !== undefined && value.length) {\n const names = value.split(/\\s+/);\n for (let i = 0, ii = names.length; i < ii; ++i) {\n const currentName = names[i];\n if (currentName === \"\") {\n continue;\n }\n classVersions[currentName] = version;\n target.classList.add(currentName);\n }\n }\n this.classVersions = classVersions;\n this.version = version + 1;\n // If this is the first call to add classes, there's no need to remove old ones.\n if (version === 0) {\n return;\n }\n // Remove classes from the previous version.\n version -= 1;\n for (const name in classVersions) {\n if (classVersions[name] === version) {\n target.classList.remove(name);\n }\n }\n}\n/**\n * A directive that configures data binding to element content and attributes.\n * @public\n */\nexport class HTMLBindingDirective extends TargetedHTMLDirective {\n /**\n * Creates an instance of BindingDirective.\n * @param binding - A binding that returns the data used to update the DOM.\n */\n constructor(binding) {\n super();\n this.binding = binding;\n this.bind = normalBind;\n this.unbind = normalUnbind;\n this.updateTarget = updateAttributeTarget;\n this.isBindingVolatile = Observable.isVolatileBinding(this.binding);\n }\n /**\n * Gets/sets the name of the attribute or property that this\n * binding is targeting.\n */\n get targetName() {\n return this.originalTargetName;\n }\n set targetName(value) {\n this.originalTargetName = value;\n if (value === void 0) {\n return;\n }\n switch (value[0]) {\n case \":\":\n this.cleanedTargetName = value.substr(1);\n this.updateTarget = updatePropertyTarget;\n if (this.cleanedTargetName === \"innerHTML\") {\n const binding = this.binding;\n this.binding = (s, c) => DOM.createHTML(binding(s, c));\n }\n break;\n case \"?\":\n this.cleanedTargetName = value.substr(1);\n this.updateTarget = updateBooleanAttributeTarget;\n break;\n case \"@\":\n this.cleanedTargetName = value.substr(1);\n this.bind = triggerBind;\n this.unbind = triggerUnbind;\n break;\n default:\n this.cleanedTargetName = value;\n if (value === \"class\") {\n this.updateTarget = updateClassTarget;\n }\n break;\n }\n }\n /**\n * Makes this binding target the content of an element rather than\n * a particular attribute or property.\n */\n targetAtContent() {\n this.updateTarget = updateContentTarget;\n this.unbind = contentUnbind;\n }\n /**\n * Creates the runtime BindingBehavior instance based on the configuration\n * information stored in the BindingDirective.\n * @param target - The target node that the binding behavior should attach to.\n */\n createBehavior(target) {\n /* eslint-disable-next-line @typescript-eslint/no-use-before-define */\n return new BindingBehavior(target, this.binding, this.isBindingVolatile, this.bind, this.unbind, this.updateTarget, this.cleanedTargetName);\n }\n}\n/**\n * A behavior that updates content and attributes based on a configured\n * BindingDirective.\n * @public\n */\nexport class BindingBehavior {\n /**\n * Creates an instance of BindingBehavior.\n * @param target - The target of the data updates.\n * @param binding - The binding that returns the latest value for an update.\n * @param isBindingVolatile - Indicates whether the binding has volatile dependencies.\n * @param bind - The operation to perform during binding.\n * @param unbind - The operation to perform during unbinding.\n * @param updateTarget - The operation to perform when updating.\n * @param targetName - The name of the target attribute or property to update.\n */\n constructor(target, binding, isBindingVolatile, bind, unbind, updateTarget, targetName) {\n /** @internal */\n this.source = null;\n /** @internal */\n this.context = null;\n /** @internal */\n this.bindingObserver = null;\n this.target = target;\n this.binding = binding;\n this.isBindingVolatile = isBindingVolatile;\n this.bind = bind;\n this.unbind = unbind;\n this.updateTarget = updateTarget;\n this.targetName = targetName;\n }\n /** @internal */\n handleChange() {\n this.updateTarget(this.bindingObserver.observe(this.source, this.context));\n }\n /** @internal */\n handleEvent(event) {\n ExecutionContext.setEvent(event);\n const result = this.binding(this.source, this.context);\n ExecutionContext.setEvent(null);\n if (result !== true) {\n event.preventDefault();\n }\n }\n}\n","import { _interpolationEnd, _interpolationStart, DOM } from \"../dom.js\";\nimport { HTMLBindingDirective } from \"./binding.js\";\nlet sharedContext = null;\nclass CompilationContext {\n addFactory(factory) {\n factory.targetIndex = this.targetIndex;\n this.behaviorFactories.push(factory);\n }\n captureContentBinding(directive) {\n directive.targetAtContent();\n this.addFactory(directive);\n }\n reset() {\n this.behaviorFactories = [];\n this.targetIndex = -1;\n }\n release() {\n /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n sharedContext = this;\n }\n static borrow(directives) {\n const shareable = sharedContext || new CompilationContext();\n shareable.directives = directives;\n shareable.reset();\n sharedContext = null;\n return shareable;\n }\n}\nfunction createAggregateBinding(parts) {\n if (parts.length === 1) {\n return parts[0];\n }\n let targetName;\n const partCount = parts.length;\n const finalParts = parts.map((x) => {\n if (typeof x === \"string\") {\n return () => x;\n }\n targetName = x.targetName || targetName;\n return x.binding;\n });\n const binding = (scope, context) => {\n let output = \"\";\n for (let i = 0; i < partCount; ++i) {\n output += finalParts[i](scope, context);\n }\n return output;\n };\n const directive = new HTMLBindingDirective(binding);\n directive.targetName = targetName;\n return directive;\n}\nconst interpolationEndLength = _interpolationEnd.length;\nfunction parseContent(context, value) {\n const valueParts = value.split(_interpolationStart);\n if (valueParts.length === 1) {\n return null;\n }\n const bindingParts = [];\n for (let i = 0, ii = valueParts.length; i < ii; ++i) {\n const current = valueParts[i];\n const index = current.indexOf(_interpolationEnd);\n let literal;\n if (index === -1) {\n literal = current;\n }\n else {\n const directiveIndex = parseInt(current.substring(0, index));\n bindingParts.push(context.directives[directiveIndex]);\n literal = current.substring(index + interpolationEndLength);\n }\n if (literal !== \"\") {\n bindingParts.push(literal);\n }\n }\n return bindingParts;\n}\nfunction compileAttributes(context, node, includeBasicValues = false) {\n const attributes = node.attributes;\n for (let i = 0, ii = attributes.length; i < ii; ++i) {\n const attr = attributes[i];\n const attrValue = attr.value;\n const parseResult = parseContent(context, attrValue);\n let result = null;\n if (parseResult === null) {\n if (includeBasicValues) {\n result = new HTMLBindingDirective(() => attrValue);\n result.targetName = attr.name;\n }\n }\n else {\n result = createAggregateBinding(parseResult);\n }\n if (result !== null) {\n node.removeAttributeNode(attr);\n i--;\n ii--;\n context.addFactory(result);\n }\n }\n}\nfunction compileContent(context, node, walker) {\n const parseResult = parseContent(context, node.textContent);\n if (parseResult !== null) {\n let lastNode = node;\n for (let i = 0, ii = parseResult.length; i < ii; ++i) {\n const currentPart = parseResult[i];\n const currentNode = i === 0\n ? node\n : lastNode.parentNode.insertBefore(document.createTextNode(\"\"), lastNode.nextSibling);\n if (typeof currentPart === \"string\") {\n currentNode.textContent = currentPart;\n }\n else {\n currentNode.textContent = \" \";\n context.captureContentBinding(currentPart);\n }\n lastNode = currentNode;\n context.targetIndex++;\n if (currentNode !== node) {\n walker.nextNode();\n }\n }\n context.targetIndex--;\n }\n}\n/**\n * Compiles a template and associated directives into a raw compilation\n * result which include a cloneable DocumentFragment and factories capable\n * of attaching runtime behavior to nodes within the fragment.\n * @param template - The template to compile.\n * @param directives - The directives referenced by the template.\n * @remarks\n * The template that is provided for compilation is altered in-place\n * and cannot be compiled again. If the original template must be preserved,\n * it is recommended that you clone the original and pass the clone to this API.\n * @public\n */\nexport function compileTemplate(template, directives) {\n const fragment = template.content;\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1111864\n document.adoptNode(fragment);\n const context = CompilationContext.borrow(directives);\n compileAttributes(context, template, true);\n const hostBehaviorFactories = context.behaviorFactories;\n context.reset();\n const walker = DOM.createTemplateWalker(fragment);\n let node;\n while ((node = walker.nextNode())) {\n context.targetIndex++;\n switch (node.nodeType) {\n case 1: // element node\n compileAttributes(context, node);\n break;\n case 3: // text node\n compileContent(context, node, walker);\n break;\n case 8: // comment\n if (DOM.isMarker(node)) {\n context.addFactory(directives[DOM.extractDirectiveIndexFromMarker(node)]);\n }\n }\n }\n let targetOffset = 0;\n if (\n // If the first node in a fragment is a marker, that means it's an unstable first node,\n // because something like a when, repeat, etc. could add nodes before the marker.\n // To mitigate this, we insert a stable first node. However, if we insert a node,\n // that will alter the result of the TreeWalker. So, we also need to offset the target index.\n DOM.isMarker(fragment.firstChild) ||\n // Or if there is only one node and a directive, it means the template's content\n // is *only* the directive. In that case, HTMLView.dispose() misses any nodes inserted by\n // the directive. Inserting a new node ensures proper disposal of nodes added by the directive.\n (fragment.childNodes.length === 1 && directives.length)) {\n fragment.insertBefore(document.createComment(\"\"), fragment.firstChild);\n targetOffset = -1;\n }\n const viewBehaviorFactories = context.behaviorFactories;\n context.release();\n return {\n fragment,\n viewBehaviorFactories,\n hostBehaviorFactories,\n targetOffset,\n };\n}\n","// A singleton Range instance used to efficiently remove ranges of DOM nodes.\n// See the implementation of HTMLView below for further details.\nconst range = document.createRange();\n/**\n * The standard View implementation, which also implements ElementView and SyntheticView.\n * @public\n */\nexport class HTMLView {\n /**\n * Constructs an instance of HTMLView.\n * @param fragment - The html fragment that contains the nodes for this view.\n * @param behaviors - The behaviors to be applied to this view.\n */\n constructor(fragment, behaviors) {\n this.fragment = fragment;\n this.behaviors = behaviors;\n /**\n * The data that the view is bound to.\n */\n this.source = null;\n /**\n * The execution context the view is running within.\n */\n this.context = null;\n this.firstChild = fragment.firstChild;\n this.lastChild = fragment.lastChild;\n }\n /**\n * Appends the view's DOM nodes to the referenced node.\n * @param node - The parent node to append the view's DOM nodes to.\n */\n appendTo(node) {\n node.appendChild(this.fragment);\n }\n /**\n * Inserts the view's DOM nodes before the referenced node.\n * @param node - The node to insert the view's DOM before.\n */\n insertBefore(node) {\n if (this.fragment.hasChildNodes()) {\n node.parentNode.insertBefore(this.fragment, node);\n }\n else {\n const end = this.lastChild;\n if (node.previousSibling === end)\n return;\n const parentNode = node.parentNode;\n let current = this.firstChild;\n let next;\n while (current !== end) {\n next = current.nextSibling;\n parentNode.insertBefore(current, node);\n current = next;\n }\n parentNode.insertBefore(end, node);\n }\n }\n /**\n * Removes the view's DOM nodes.\n * The nodes are not disposed and the view can later be re-inserted.\n */\n remove() {\n const fragment = this.fragment;\n const end = this.lastChild;\n let current = this.firstChild;\n let next;\n while (current !== end) {\n next = current.nextSibling;\n fragment.appendChild(current);\n current = next;\n }\n fragment.appendChild(end);\n }\n /**\n * Removes the view and unbinds its behaviors, disposing of DOM nodes afterward.\n * Once a view has been disposed, it cannot be inserted or bound again.\n */\n dispose() {\n const parent = this.firstChild.parentNode;\n const end = this.lastChild;\n let current = this.firstChild;\n let next;\n while (current !== end) {\n next = current.nextSibling;\n parent.removeChild(current);\n current = next;\n }\n parent.removeChild(end);\n const behaviors = this.behaviors;\n const oldSource = this.source;\n for (let i = 0, ii = behaviors.length; i < ii; ++i) {\n behaviors[i].unbind(oldSource);\n }\n }\n /**\n * Binds a view's behaviors to its binding source.\n * @param source - The binding source for the view's binding behaviors.\n * @param context - The execution context to run the behaviors within.\n */\n bind(source, context) {\n const behaviors = this.behaviors;\n if (this.source === source) {\n return;\n }\n else if (this.source !== null) {\n const oldSource = this.source;\n this.source = source;\n this.context = context;\n for (let i = 0, ii = behaviors.length; i < ii; ++i) {\n const current = behaviors[i];\n current.unbind(oldSource);\n current.bind(source, context);\n }\n }\n else {\n this.source = source;\n this.context = context;\n for (let i = 0, ii = behaviors.length; i < ii; ++i) {\n behaviors[i].bind(source, context);\n }\n }\n }\n /**\n * Unbinds a view's behaviors from its binding source.\n */\n unbind() {\n if (this.source === null) {\n return;\n }\n const behaviors = this.behaviors;\n const oldSource = this.source;\n for (let i = 0, ii = behaviors.length; i < ii; ++i) {\n behaviors[i].unbind(oldSource);\n }\n this.source = null;\n }\n /**\n * Efficiently disposes of a contiguous range of synthetic view instances.\n * @param views - A contiguous range of views to be disposed.\n */\n static disposeContiguousBatch(views) {\n if (views.length === 0) {\n return;\n }\n range.setStartBefore(views[0].firstChild);\n range.setEndAfter(views[views.length - 1].lastChild);\n range.deleteContents();\n for (let i = 0, ii = views.length; i < ii; ++i) {\n const view = views[i];\n const behaviors = view.behaviors;\n const oldSource = view.source;\n for (let j = 0, jj = behaviors.length; j < jj; ++j) {\n behaviors[j].unbind(oldSource);\n }\n }\n }\n}\n","import { DOM } from \"../dom.js\";\nimport { defaultExecutionContext } from \"../observation/observable.js\";\nimport { compileTemplate } from \"./compiler.js\";\nimport { HTMLView } from \"./view.js\";\nimport { HTMLDirective, TargetedHTMLDirective, } from \"./html-directive.js\";\nimport { HTMLBindingDirective } from \"./binding.js\";\n/**\n * A template capable of creating HTMLView instances or rendering directly to DOM.\n * @public\n */\n/* eslint-disable-next-line @typescript-eslint/no-unused-vars */\nexport class ViewTemplate {\n /**\n * Creates an instance of ViewTemplate.\n * @param html - The html representing what this template will instantiate, including placeholders for directives.\n * @param directives - The directives that will be connected to placeholders in the html.\n */\n constructor(html, directives) {\n this.behaviorCount = 0;\n this.hasHostBehaviors = false;\n this.fragment = null;\n this.targetOffset = 0;\n this.viewBehaviorFactories = null;\n this.hostBehaviorFactories = null;\n this.html = html;\n this.directives = directives;\n }\n /**\n * Creates an HTMLView instance based on this template definition.\n * @param hostBindingTarget - The element that host behaviors will be bound to.\n */\n create(hostBindingTarget) {\n if (this.fragment === null) {\n let template;\n const html = this.html;\n if (typeof html === \"string\") {\n template = document.createElement(\"template\");\n template.innerHTML = DOM.createHTML(html);\n const fec = template.content.firstElementChild;\n if (fec !== null && fec.tagName === \"TEMPLATE\") {\n template = fec;\n }\n }\n else {\n template = html;\n }\n const result = compileTemplate(template, this.directives);\n this.fragment = result.fragment;\n this.viewBehaviorFactories = result.viewBehaviorFactories;\n this.hostBehaviorFactories = result.hostBehaviorFactories;\n this.targetOffset = result.targetOffset;\n this.behaviorCount =\n this.viewBehaviorFactories.length + this.hostBehaviorFactories.length;\n this.hasHostBehaviors = this.hostBehaviorFactories.length > 0;\n }\n const fragment = this.fragment.cloneNode(true);\n const viewFactories = this.viewBehaviorFactories;\n const behaviors = new Array(this.behaviorCount);\n const walker = DOM.createTemplateWalker(fragment);\n let behaviorIndex = 0;\n let targetIndex = this.targetOffset;\n let node = walker.nextNode();\n for (let ii = viewFactories.length; behaviorIndex < ii; ++behaviorIndex) {\n const factory = viewFactories[behaviorIndex];\n const factoryIndex = factory.targetIndex;\n while (node !== null) {\n if (targetIndex === factoryIndex) {\n behaviors[behaviorIndex] = factory.createBehavior(node);\n break;\n }\n else {\n node = walker.nextNode();\n targetIndex++;\n }\n }\n }\n if (this.hasHostBehaviors) {\n const hostFactories = this.hostBehaviorFactories;\n for (let i = 0, ii = hostFactories.length; i < ii; ++i, ++behaviorIndex) {\n behaviors[behaviorIndex] = hostFactories[i].createBehavior(hostBindingTarget);\n }\n }\n return new HTMLView(fragment, behaviors);\n }\n /**\n * Creates an HTMLView from this template, binds it to the source, and then appends it to the host.\n * @param source - The data source to bind the template to.\n * @param host - The Element where the template will be rendered.\n * @param hostBindingTarget - An HTML element to target the host bindings at if different from the\n * host that the template is being attached to.\n */\n render(source, host, hostBindingTarget) {\n if (typeof host === \"string\") {\n host = document.getElementById(host);\n }\n if (hostBindingTarget === void 0) {\n hostBindingTarget = host;\n }\n const view = this.create(hostBindingTarget);\n view.bind(source, defaultExecutionContext);\n view.appendTo(host);\n return view;\n }\n}\n// Much thanks to LitHTML for working this out!\nconst lastAttributeNameRegex = \n/* eslint-disable-next-line no-control-regex */\n/([ \\x09\\x0a\\x0c\\x0d])([^\\0-\\x1F\\x7F-\\x9F \"'>=/]+)([ \\x09\\x0a\\x0c\\x0d]*=[ \\x09\\x0a\\x0c\\x0d]*(?:[^ \\x09\\x0a\\x0c\\x0d\"'`<>=]*|\"[^\"]*|'[^']*))$/;\n/**\n * Transforms a template literal string into a renderable ViewTemplate.\n * @param strings - The string fragments that are interpolated with the values.\n * @param values - The values that are interpolated with the string fragments.\n * @remarks\n * The html helper supports interpolation of strings, numbers, binding expressions,\n * other template instances, and Directive instances.\n * @public\n */\nexport function html(strings, ...values) {\n const directives = [];\n let html = \"\";\n for (let i = 0, ii = strings.length - 1; i < ii; ++i) {\n const currentString = strings[i];\n let value = values[i];\n html += currentString;\n if (value instanceof ViewTemplate) {\n const template = value;\n value = () => template;\n }\n if (typeof value === \"function\") {\n value = new HTMLBindingDirective(value);\n }\n if (value instanceof TargetedHTMLDirective) {\n const match = lastAttributeNameRegex.exec(currentString);\n if (match !== null) {\n value.targetName = match[2];\n }\n }\n if (value instanceof HTMLDirective) {\n // Since not all values are directives, we can't use i\n // as the index for the placeholder. Instead, we need to\n // use directives.length to get the next index.\n html += value.createPlaceholder(directives.length);\n directives.push(value);\n }\n else {\n html += value;\n }\n }\n html += strings[strings.length - 1];\n return new ViewTemplate(html, directives);\n}\n","import { AttachedBehaviorHTMLDirective } from \"./html-directive.js\";\n/**\n * The runtime behavior for template references.\n * @public\n */\nexport class RefBehavior {\n /**\n * Creates an instance of RefBehavior.\n * @param target - The element to reference.\n * @param propertyName - The name of the property to assign the reference to.\n */\n constructor(target, propertyName) {\n this.target = target;\n this.propertyName = propertyName;\n }\n /**\n * Bind this behavior to the source.\n * @param source - The source to bind to.\n * @param context - The execution context that the binding is operating within.\n */\n bind(source) {\n source[this.propertyName] = this.target;\n }\n /**\n * Unbinds this behavior from the source.\n * @param source - The source to unbind from.\n */\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n unbind() { }\n}\n/**\n * A directive that observes the updates a property with a reference to the element.\n * @param propertyName - The name of the property to assign the reference to.\n * @public\n */\nexport function ref(propertyName) {\n return new AttachedBehaviorHTMLDirective(\"fast-ref\", RefBehavior, propertyName);\n}\n","import { html, ref } from \"@microsoft/fast-element\";\n/**\n * A mixin class implementing start and end elements.\n * These are generally used to decorate text elements with icons or other visual indicators.\n * @public\n */\nexport class StartEnd {\n handleStartContentChange() {\n this.startContainer.classList.toggle(\"start\", this.start.assignedNodes().length > 0);\n }\n handleEndContentChange() {\n this.endContainer.classList.toggle(\"end\", this.end.assignedNodes().length > 0);\n }\n}\n/**\n * The template for the end element.\n * For use with {@link StartEnd}\n *\n * @public\n */\nexport const endSlotTemplate = (context, definition) => html `\n (definition.end ? \"end\" : void 0)}\n >\n x.handleEndContentChange()}\">\n ${definition.end || \"\"}\n \n \n`;\n/**\n * The template for the start element.\n * For use with {@link StartEnd}\n *\n * @public\n */\nexport const startSlotTemplate = (context, definition) => html `\n (definition.start ? \"start\" : void 0)}\"\n >\n x.handleStartContentChange()}\"\n >\n ${definition.start || \"\"}\n \n \n`;\n/**\n * The template for the end element.\n * For use with {@link StartEnd}\n *\n * @public\n * @deprecated - use endSlotTemplate\n */\nexport const endTemplate = html `\n \n x.handleEndContentChange()}\"\n >\n \n`;\n/**\n * The template for the start element.\n * For use with {@link StartEnd}\n *\n * @public\n * @deprecated - use startSlotTemplate\n */\nexport const startTemplate = html `\n \n x.handleStartContentChange()}\"\n >\n \n`;\n","import { AttributeConfiguration } from \"@microsoft/fast-element\";\n/**\n * Apply mixins to a constructor.\n * Sourced from {@link https://www.typescriptlang.org/docs/handbook/mixins.html | TypeScript Documentation }.\n * @public\n */\nexport function applyMixins(derivedCtor, ...baseCtors) {\n const derivedAttributes = AttributeConfiguration.locate(derivedCtor);\n baseCtors.forEach(baseCtor => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {\n if (name !== \"constructor\") {\n Object.defineProperty(derivedCtor.prototype, name, \n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name));\n }\n });\n const baseAttributes = AttributeConfiguration.locate(baseCtor);\n baseAttributes.forEach(x => derivedAttributes.push(x));\n });\n}\n","import { __decorate } from \"tslib\";\nimport { attr, nullableNumberConverter, } from \"@microsoft/fast-element\";\nimport { FoundationElement, } from \"../foundation-element/foundation-element.js\";\nimport { StartEnd } from \"../patterns/start-end.js\";\nimport { applyMixins } from \"../utilities/apply-mixins.js\";\n/**\n * An individual item in an {@link @microsoft/fast-foundation#(Accordion:class) }.\n *\n * @slot start - Content which can be provided between the heading and the icon\n * @slot end - Content which can be provided between the start slot and icon\n * @slot heading - Content which serves as the accordion item heading and text of the expand button\n * @slot - The default slot for accordion item content\n * @slot expanded-icon - The expanded icon\n * @slot collapsed-icon - The collapsed icon\n * @fires change - Fires a custom 'change' event when the button is invoked\n * @csspart heading - Wraps the button\n * @csspart button - The button which serves to invoke the item\n * @csspart heading-content - Wraps the slot for the heading content within the button\n * @csspart icon - The icon container\n * @csspart expanded-icon - The expanded icon slot\n * @csspart collapsed-icon - The collapsed icon\n * @csspart region - The wrapper for the accordion item content\n *\n * @public\n */\nexport class AccordionItem extends FoundationElement {\n constructor() {\n super(...arguments);\n /**\n * Configures the {@link https://www.w3.org/TR/wai-aria-1.1/#aria-level | level} of the\n * heading element.\n *\n * @defaultValue 2\n * @public\n * @remarks\n * HTML attribute: heading-level\n */\n this.headinglevel = 2;\n /**\n * Expands or collapses the item.\n *\n * @public\n * @remarks\n * HTML attribute: expanded\n */\n this.expanded = false;\n /**\n * @internal\n */\n this.clickHandler = (e) => {\n this.expanded = !this.expanded;\n this.change();\n };\n this.change = () => {\n this.$emit(\"change\");\n };\n }\n}\n__decorate([\n attr({\n attribute: \"heading-level\",\n mode: \"fromView\",\n converter: nullableNumberConverter,\n })\n], AccordionItem.prototype, \"headinglevel\", void 0);\n__decorate([\n attr({ mode: \"boolean\" })\n], AccordionItem.prototype, \"expanded\", void 0);\n__decorate([\n attr\n], AccordionItem.prototype, \"id\", void 0);\napplyMixins(AccordionItem, StartEnd);\n","/**\n * Directive for use in {@link css}.\n *\n * @public\n */\nexport class CSSDirective {\n /**\n * Creates a CSS fragment to interpolate into the CSS document.\n * @returns - the string to interpolate into CSS\n */\n createCSS() {\n return \"\";\n }\n /**\n * Creates a behavior to bind to the host element.\n * @returns - the behavior to bind to the host element, or undefined.\n */\n createBehavior() {\n return undefined;\n }\n}\n","import { CSSDirective } from \"./css-directive.js\";\nimport { ElementStyles } from \"./element-styles.js\";\nfunction collectStyles(strings, values) {\n const styles = [];\n let cssString = \"\";\n const behaviors = [];\n for (let i = 0, ii = strings.length - 1; i < ii; ++i) {\n cssString += strings[i];\n let value = values[i];\n if (value instanceof CSSDirective) {\n const behavior = value.createBehavior();\n value = value.createCSS();\n if (behavior) {\n behaviors.push(behavior);\n }\n }\n if (value instanceof ElementStyles || value instanceof CSSStyleSheet) {\n if (cssString.trim() !== \"\") {\n styles.push(cssString);\n cssString = \"\";\n }\n styles.push(value);\n }\n else {\n cssString += value;\n }\n }\n cssString += strings[strings.length - 1];\n if (cssString.trim() !== \"\") {\n styles.push(cssString);\n }\n return {\n styles,\n behaviors,\n };\n}\n/**\n * Transforms a template literal string into styles.\n * @param strings - The string fragments that are interpolated with the values.\n * @param values - The values that are interpolated with the string fragments.\n * @remarks\n * The css helper supports interpolation of strings and ElementStyle instances.\n * @public\n */\nexport function css(strings, ...values) {\n const { styles, behaviors } = collectStyles(strings, values);\n const elementStyles = ElementStyles.create(styles);\n if (behaviors.length) {\n elementStyles.withBehaviors(...behaviors);\n }\n return elementStyles;\n}\nclass CSSPartial extends CSSDirective {\n constructor(styles, behaviors) {\n super();\n this.behaviors = behaviors;\n this.css = \"\";\n const stylesheets = styles.reduce((accumulated, current) => {\n if (typeof current === \"string\") {\n this.css += current;\n }\n else {\n accumulated.push(current);\n }\n return accumulated;\n }, []);\n if (stylesheets.length) {\n this.styles = ElementStyles.create(stylesheets);\n }\n }\n createBehavior() {\n return this;\n }\n createCSS() {\n return this.css;\n }\n bind(el) {\n if (this.styles) {\n el.$fastController.addStyles(this.styles);\n }\n if (this.behaviors.length) {\n el.$fastController.addBehaviors(this.behaviors);\n }\n }\n unbind(el) {\n if (this.styles) {\n el.$fastController.removeStyles(this.styles);\n }\n if (this.behaviors.length) {\n el.$fastController.removeBehaviors(this.behaviors);\n }\n }\n}\n/**\n * Transforms a template literal string into partial CSS.\n * @param strings - The string fragments that are interpolated with the values.\n * @param values - The values that are interpolated with the string fragments.\n * @public\n */\nexport function cssPartial(strings, ...values) {\n const { styles, behaviors } = collectStyles(strings, values);\n return new CSSPartial(styles, behaviors);\n}\n","/**\n * A CSS fragment to set `display: none;` when the host is hidden using the [hidden] attribute.\n * @public\n */\nexport const hidden = `:host([hidden]){display:none}`;\n/**\n * Applies a CSS display property.\n * Also adds CSS rules to not display the element when the [hidden] attribute is applied to the element.\n * @param display - The CSS display property value\n * @public\n */\nexport function display(displayValue) {\n return `${hidden}:host{display:${displayValue}}`;\n}\n","/**\n * An abstract behavior to react to media queries. Implementations should implement\n * the `constructListener` method to perform some action based on media query changes.\n *\n * @public\n */\nexport class MatchMediaBehavior {\n /**\n *\n * @param query - The media query to operate from.\n */\n constructor(query) {\n /**\n * The behavior needs to operate on element instances but elements might share a behavior instance.\n * To ensure proper attachment / detachment per instance, we construct a listener for\n * each bind invocation and cache the listeners by element reference.\n */\n this.listenerCache = new WeakMap();\n this.query = query;\n }\n /**\n * Binds the behavior to the element.\n * @param source - The element for which the behavior is bound.\n */\n bind(source) {\n const { query } = this;\n const listener = this.constructListener(source);\n // Invoke immediately to add if the query currently matches\n listener.bind(query)();\n query.addListener(listener);\n this.listenerCache.set(source, listener);\n }\n /**\n * Unbinds the behavior from the element.\n * @param source - The element for which the behavior is unbinding.\n */\n unbind(source) {\n const listener = this.listenerCache.get(source);\n if (listener) {\n this.query.removeListener(listener);\n this.listenerCache.delete(source);\n }\n }\n}\n/**\n * A behavior to add or remove a stylesheet from an element based on a media query. The behavior ensures that\n * styles are applied while the a query matches the environment and that styles are not applied if the query does\n * not match the environment.\n *\n * @public\n */\nexport class MatchMediaStyleSheetBehavior extends MatchMediaBehavior {\n /**\n * Constructs a {@link MatchMediaStyleSheetBehavior} instance.\n * @param query - The media query to operate from.\n * @param styles - The styles to coordinate with the query.\n */\n constructor(query, styles) {\n super(query);\n this.styles = styles;\n }\n /**\n * Defines a function to construct {@link MatchMediaStyleSheetBehavior | MatchMediaStyleSheetBehaviors} for\n * a provided query.\n * @param query - The media query to operate from.\n *\n * @public\n * @example\n *\n * ```ts\n * import { css } from \"@microsoft/fast-element\";\n * import { MatchMediaStyleSheetBehavior } from \"@microsoft/fast-foundation\";\n *\n * const landscapeBehavior = MatchMediaStyleSheetBehavior.with(\n * window.matchMedia(\"(orientation: landscape)\")\n * );\n * const styles = css`\n * :host {\n * width: 200px;\n * height: 400px;\n * }\n * `\n * .withBehaviors(landscapeBehavior(css`\n * :host {\n * width: 400px;\n * height: 200px;\n * }\n * `))\n * ```\n */\n static with(query) {\n return (styles) => {\n return new MatchMediaStyleSheetBehavior(query, styles);\n };\n }\n /**\n * Constructs a match-media listener for a provided element.\n * @param source - the element for which to attach or detach styles.\n * @internal\n */\n constructListener(source) {\n let attached = false;\n const styles = this.styles;\n return function listener() {\n const { matches } = this;\n if (matches && !attached) {\n source.$fastController.addStyles(styles);\n attached = matches;\n }\n else if (!matches && attached) {\n source.$fastController.removeStyles(styles);\n attached = matches;\n }\n };\n }\n /**\n * Unbinds the behavior from the element.\n * @param source - The element for which the behavior is unbinding.\n * @internal\n */\n unbind(source) {\n super.unbind(source);\n source.$fastController.removeStyles(this.styles);\n }\n}\n/**\n * This can be used to construct a behavior to apply a forced-colors only stylesheet.\n * @public\n */\nexport const forcedColorsStylesheetBehavior = MatchMediaStyleSheetBehavior.with(window.matchMedia(\"(forced-colors)\"));\n/**\n * This can be used to construct a behavior to apply a prefers color scheme: dark only stylesheet.\n * @public\n */\nexport const darkModeStylesheetBehavior = MatchMediaStyleSheetBehavior.with(window.matchMedia(\"(prefers-color-scheme: dark)\"));\n/**\n * This can be used to construct a behavior to apply a prefers color scheme: light only stylesheet.\n * @public\n */\nexport const lightModeStylesheetBehavior = MatchMediaStyleSheetBehavior.with(window.matchMedia(\"(prefers-color-scheme: light)\"));\n","import { canUseDOM } from \"exenv-es6\";\n/**\n * A test that ensures that all arguments are HTML Elements\n */\nexport function isHTMLElement(...args) {\n return args.every((arg) => arg instanceof HTMLElement);\n}\n/**\n * Returns all displayed elements inside of a root node that match a provided selector\n */\nexport function getDisplayedNodes(rootNode, selector) {\n if (!rootNode || !selector || !isHTMLElement(rootNode)) {\n return;\n }\n const nodes = Array.from(rootNode.querySelectorAll(selector));\n // offsetParent will be null if the element isn't currently displayed,\n // so this will allow us to operate only on visible nodes\n return nodes.filter((node) => node.offsetParent !== null);\n}\n/**\n * Gets the numeric key code associated with a keyboard event. This method is for use with DOM level 3 events\n * that still use the deprecated keyCode property.\n */\nexport function getKeyCode(event) {\n return event === null ? null : event.which || event.keyCode || event.charCode;\n}\n/**\n * Returns the nonce used in the page, if any.\n *\n * Based on https://github.com/cssinjs/jss/blob/master/packages/jss/src/DomRenderer.js\n */\nfunction getNonce() {\n const node = document.querySelector('meta[property=\"csp-nonce\"]');\n if (node) {\n return node.getAttribute(\"content\");\n }\n else {\n return null;\n }\n}\n/**\n * Test if the document supports :focus-visible\n */\nlet _canUseFocusVisible;\nexport function canUseFocusVisible() {\n if (typeof _canUseFocusVisible === \"boolean\") {\n return _canUseFocusVisible;\n }\n if (!canUseDOM()) {\n _canUseFocusVisible = false;\n return _canUseFocusVisible;\n }\n // Check to see if the document supports the focus-visible element\n const styleElement = document.createElement(\"style\");\n // If nonces are present on the page, use it when creating the style element\n // to test focus-visible support.\n const styleNonce = getNonce();\n if (styleNonce !== null) {\n styleElement.setAttribute(\"nonce\", styleNonce);\n }\n document.head.appendChild(styleElement);\n try {\n styleElement.sheet.insertRule(\"foo:focus-visible {color:inherit}\", 0);\n _canUseFocusVisible = true;\n }\n catch (e) {\n _canUseFocusVisible = false;\n }\n finally {\n document.head.removeChild(styleElement);\n }\n return _canUseFocusVisible;\n}\nlet _canUseCssGrid;\nexport function canUseCssGrid() {\n if (typeof _canUseCssGrid === \"boolean\") {\n return _canUseCssGrid;\n }\n try {\n _canUseCssGrid = CSS.supports(\"display\", \"grid\");\n }\n catch (_a) {\n _canUseCssGrid = false;\n }\n return _canUseCssGrid;\n}\nexport function canUseForcedColors() {\n return (canUseDOM() &&\n (window.matchMedia(\"(forced-colors: none)\").matches ||\n window.matchMedia(\"(forced-colors: active)\").matches));\n}\nexport function resetDocumentCache() {\n _canUseCssGrid = undefined;\n _canUseFocusVisible = undefined;\n}\n/**\n * @deprecated Use 'canUseForcedColors' instead\n */\nexport const canUsedForcedColors = canUseForcedColors;\n","import { canUseFocusVisible } from \"@microsoft/fast-web-utilities\";\n/**\n * The string representing the focus selector to be used. Value\n * will be \"focus-visible\" when https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo\n * is supported and \"focus\" when it is not.\n *\n * @public\n */\nexport const focusVisible = canUseFocusVisible() ? \"focus-visible\" : \"focus\";\n","/**\n * Checks if the DOM is available to access and use\n */\nexport function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n}\n","/**\n * Define system colors for use in CSS stylesheets.\n *\n * https://drafts.csswg.org/css-color/#css-system-colors\n */\nexport var SystemColors;\n(function (SystemColors) {\n SystemColors[\"Canvas\"] = \"Canvas\";\n SystemColors[\"CanvasText\"] = \"CanvasText\";\n SystemColors[\"LinkText\"] = \"LinkText\";\n SystemColors[\"VisitedText\"] = \"VisitedText\";\n SystemColors[\"ActiveText\"] = \"ActiveText\";\n SystemColors[\"ButtonFace\"] = \"ButtonFace\";\n SystemColors[\"ButtonText\"] = \"ButtonText\";\n SystemColors[\"Field\"] = \"Field\";\n SystemColors[\"FieldText\"] = \"FieldText\";\n SystemColors[\"Highlight\"] = \"Highlight\";\n SystemColors[\"HighlightText\"] = \"HighlightText\";\n SystemColors[\"GrayText\"] = \"GrayText\";\n})(SystemColors || (SystemColors = {}));\n","/**\n * Ensures that an input number does not exceed a max value and is not less than a min value.\n * @param i - the number to clamp\n * @param min - the maximum (inclusive) value\n * @param max - the minimum (inclusive) value\n * @public\n */\nexport function clamp(i, min, max) {\n if (isNaN(i) || i <= min) {\n return min;\n }\n else if (i >= max) {\n return max;\n }\n return i;\n}\n/**\n * Scales an input to a number between 0 and 1\n * @param i - a number between min and max\n * @param min - the max value\n * @param max - the min value\n * @public\n */\nexport function normalize(i, min, max) {\n if (isNaN(i) || i <= min) {\n return 0.0;\n }\n else if (i >= max) {\n return 1.0;\n }\n return i / (max - min);\n}\n/**\n * Scales a number between 0 and 1\n * @param i - the number to denormalize\n * @param min - the min value\n * @param max - the max value\n * @public\n */\nexport function denormalize(i, min, max) {\n if (isNaN(i)) {\n return min;\n }\n return min + i * (max - min);\n}\n/**\n * Converts degrees to radians.\n * @param i - degrees\n * @public\n */\nexport function degreesToRadians(i) {\n return i * (Math.PI / 180.0);\n}\n/**\n * Converts radians to degrees.\n * @param i - radians\n * @public\n */\nexport function radiansToDegrees(i) {\n return i * (180.0 / Math.PI);\n}\n/**\n * Converts a number between 0 and 255 to a hex string.\n * @param i - the number to convert to a hex string\n * @public\n */\nexport function getHexStringForByte(i) {\n const s = Math.round(clamp(i, 0.0, 255.0)).toString(16);\n if (s.length === 1) {\n return \"0\" + s;\n }\n return s;\n}\n/**\n * Linearly interpolate\n * @public\n */\nexport function lerp(i, min, max) {\n if (isNaN(i) || i <= 0.0) {\n return min;\n }\n else if (i >= 1.0) {\n return max;\n }\n return min + i * (max - min);\n}\n/**\n * Linearly interpolate angles in degrees\n * @public\n */\nexport function lerpAnglesInDegrees(i, min, max) {\n if (i <= 0.0) {\n return min % 360.0;\n }\n else if (i >= 1.0) {\n return max % 360.0;\n }\n const a = (min - max + 360.0) % 360.0;\n const b = (max - min + 360.0) % 360.0;\n if (a <= b) {\n return (min - a * i + 360.0) % 360.0;\n }\n return (min + a * i + 360.0) % 360.0;\n}\nconst TwoPI = Math.PI * 2;\n/**\n * Linearly interpolate angles in radians\n * @public\n */\nexport function lerpAnglesInRadians(i, min, max) {\n if (isNaN(i) || i <= 0.0) {\n return min % TwoPI;\n }\n else if (i >= 1.0) {\n return max % TwoPI;\n }\n const a = (min - max + TwoPI) % TwoPI;\n const b = (max - min + TwoPI) % TwoPI;\n if (a <= b) {\n return (min - a * i + TwoPI) % TwoPI;\n }\n return (min + a * i + TwoPI) % TwoPI;\n}\n/**\n *\n * Will return infinity if i*10^(precision) overflows number\n * note that floating point rounding rules come into play here\n * so values that end up rounding on a .5 round to the nearest\n * even not always up so 2.5 rounds to 2\n * @param i - the number to round\n * @param precision - the precision to round to\n *\n * @public\n */\nexport function roundToPrecisionSmall(i, precision) {\n const factor = Math.pow(10, precision);\n return Math.round(i * factor) / factor;\n}\n","import { clamp, denormalize, getHexStringForByte, roundToPrecisionSmall, } from \"./math-utilities.js\";\n/**\n * A RGBA color with 64 bit channels.\n *\n * @example\n * ```ts\n * new ColorRGBA64(1, 0, 0, 1) // red\n * ```\n * @public\n */\nexport class ColorRGBA64 {\n /**\n *\n * @param red - the red value\n * @param green - the green value\n * @param blue - the blue value\n * @param alpha - the alpha value\n */\n constructor(red, green, blue, alpha) {\n this.r = red;\n this.g = green;\n this.b = blue;\n this.a = typeof alpha === \"number\" && !isNaN(alpha) ? alpha : 1;\n }\n /**\n * Construct a {@link ColorRGBA64} from a {@link ColorRGBA64Config}\n * @param data - the config object\n */\n static fromObject(data) {\n return data && !isNaN(data.r) && !isNaN(data.g) && !isNaN(data.b)\n ? new ColorRGBA64(data.r, data.g, data.b, data.a)\n : null;\n }\n /**\n * Determines if one color is equal to another.\n * @param rhs - the color to compare\n */\n equalValue(rhs) {\n return (this.r === rhs.r && this.g === rhs.g && this.b === rhs.b && this.a === rhs.a);\n }\n /**\n * Returns the color formatted as a string; #RRGGBB\n */\n toStringHexRGB() {\n return \"#\" + [this.r, this.g, this.b].map(this.formatHexValue).join(\"\");\n }\n /**\n * Returns the color formatted as a string; #RRGGBBAA\n */\n toStringHexRGBA() {\n return this.toStringHexRGB() + this.formatHexValue(this.a);\n }\n /**\n * Returns the color formatted as a string; #AARRGGBB\n */\n toStringHexARGB() {\n return \"#\" + [this.a, this.r, this.g, this.b].map(this.formatHexValue).join(\"\");\n }\n /**\n * Returns the color formatted as a string; \"rgb(0xRR, 0xGG, 0xBB)\"\n */\n toStringWebRGB() {\n return `rgb(${Math.round(denormalize(this.r, 0.0, 255.0))},${Math.round(denormalize(this.g, 0.0, 255.0))},${Math.round(denormalize(this.b, 0.0, 255.0))})`;\n }\n /**\n * Returns the color formatted as a string; \"rgba(0xRR, 0xGG, 0xBB, a)\"\n * @remarks\n * Note that this follows the convention of putting alpha in the range [0.0,1.0] while the other three channels are [0,255]\n */\n toStringWebRGBA() {\n return `rgba(${Math.round(denormalize(this.r, 0.0, 255.0))},${Math.round(denormalize(this.g, 0.0, 255.0))},${Math.round(denormalize(this.b, 0.0, 255.0))},${clamp(this.a, 0, 1)})`;\n }\n /**\n * Returns a new {@link ColorRGBA64} rounded to the provided precision\n * @param precision - the precision to round to\n */\n roundToPrecision(precision) {\n return new ColorRGBA64(roundToPrecisionSmall(this.r, precision), roundToPrecisionSmall(this.g, precision), roundToPrecisionSmall(this.b, precision), roundToPrecisionSmall(this.a, precision));\n }\n /**\n * Returns a new {@link ColorRGBA64} with channel values clamped between 0 and 1.\n */\n clamp() {\n return new ColorRGBA64(clamp(this.r, 0, 1), clamp(this.g, 0, 1), clamp(this.b, 0, 1), clamp(this.a, 0, 1));\n }\n /**\n * Converts the {@link ColorRGBA64} to a {@link ColorRGBA64Config}.\n */\n toObject() {\n return { r: this.r, g: this.g, b: this.b, a: this.a };\n }\n formatHexValue(value) {\n return getHexStringForByte(denormalize(value, 0.0, 255.0));\n }\n}\n","import { ColorRGBA64 } from \"./color-rgba-64.js\";\nimport { normalize } from \"./math-utilities.js\";\nimport { namedColorsConfigs } from \"./named-colors.js\";\n// Matches rgb(R, G, B) where R, G, and B are integers [0 - 255]\nconst webRGBRegex = /^rgb\\(\\s*((?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|\\d{1,2})\\s*,\\s*){2}(?:25[0-5]|2[0-4]\\d|1\\d\\d|\\d{1,2})\\s*)\\)$/i;\n// Matches rgb(R, G, B, A) where R, G, and B are integers [0 - 255] and A is [0-1] floating\nconst webRGBARegex = /^rgba\\(\\s*((?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|\\d{1,2})\\s*,\\s*){3}(?:0|1|0?\\.\\d*)\\s*)\\)$/i;\n// Matches #RGB and #RRGGBB, where R, G, and B are [0-9] or [A-F]\nconst hexRGBRegex = /^#((?:[0-9a-f]{6}|[0-9a-f]{3}))$/i;\n// Matches #RGB and #RRGGBBAA, where R, G, B, and A are [0-9] or [A-F]\nconst hexRGBARegex = /^#((?:[0-9a-f]{8}|[0-9a-f]{4}))$/i;\n/**\n * Test if a color matches #RRGGBB or #RGB\n * @public\n */\nexport function isColorStringHexRGB(raw) {\n return hexRGBRegex.test(raw);\n}\n/**\n * Test if a color matches #AARRGGBB or #ARGB\n * @public\n */\nexport function isColorStringHexARGB(raw) {\n return hexRGBARegex.test(raw);\n}\n/**\n * Test if a color matches #RRGGBBAA or #RGBA\n * @public\n */\nexport function isColorStringHexRGBA(raw) {\n return isColorStringHexARGB(raw); // No way to differentiate these two formats, so just use the same test\n}\n/**\n * Test if a color matches rgb(rr, gg, bb)\n * @public\n */\nexport function isColorStringWebRGB(raw) {\n return webRGBRegex.test(raw);\n}\n/**\n * Test if a color matches rgba(rr, gg, bb, aa)\n *\n * @public\n */\nexport function isColorStringWebRGBA(raw) {\n return webRGBARegex.test(raw);\n}\n/**\n * Tests whether a color is in {@link @microsoft/fast-colors#NamedColors}.\n * @param raw - the color name to test\n * @public\n */\nexport function isColorNamed(raw) {\n return namedColorsConfigs.hasOwnProperty(raw);\n}\n/**\n * Converts a hexadecimal color string to a {@link @microsoft/fast-colors#ColorRGBA64}.\n * @param raw - a color string in the form of \"#RRGGBB\" or \"#RGB\"\n * @example\n * ```ts\n * parseColorHexRGBA(\"#FF0000\");\n * parseColorHexRGBA(\"#F00\");\n * ```\n * @public\n */\nexport function parseColorHexRGB(raw) {\n const result = hexRGBRegex.exec(raw);\n if (result === null) {\n return null;\n }\n let digits = result[1];\n if (digits.length === 3) {\n const r = digits.charAt(0);\n const g = digits.charAt(1);\n const b = digits.charAt(2);\n digits = r.concat(r, g, g, b, b);\n }\n const rawInt = parseInt(digits, 16);\n if (isNaN(rawInt)) {\n return null;\n }\n // Note the use of >>> rather than >> as we want JS to manipulate these as unsigned numbers\n return new ColorRGBA64(normalize((rawInt & 0xff0000) >>> 16, 0, 255), normalize((rawInt & 0x00ff00) >>> 8, 0, 255), normalize(rawInt & 0x0000ff, 0, 255), 1);\n}\n/**\n * Converts a hexadecimal color string to a {@link @microsoft/fast-colors#ColorRGBA64}.\n * @param raw - a color string in the form of \"#AARRGGBB\" or \"#ARGB\"\n * @example\n * ```ts\n * parseColorHexRGBA(\"#AAFF0000\");\n * parseColorHexRGBA(\"#AF00\");\n * ```\n * @public\n */\nexport function parseColorHexARGB(raw) {\n const result = hexRGBARegex.exec(raw);\n if (result === null) {\n return null;\n }\n let digits = result[1];\n if (digits.length === 4) {\n const a = digits.charAt(0);\n const r = digits.charAt(1);\n const g = digits.charAt(2);\n const b = digits.charAt(3);\n digits = a.concat(a, r, r, g, g, b, b);\n }\n const rawInt = parseInt(digits, 16);\n if (isNaN(rawInt)) {\n return null;\n }\n // Note the use of >>> rather than >> as we want JS to manipulate these as unsigned numbers\n return new ColorRGBA64(normalize((rawInt & 0x00ff0000) >>> 16, 0, 255), normalize((rawInt & 0x0000ff00) >>> 8, 0, 255), normalize(rawInt & 0x000000ff, 0, 255), normalize((rawInt & 0xff000000) >>> 24, 0, 255));\n}\n/**\n * Converts a hexadecimal color string to a {@link @microsoft/fast-colors#ColorRGBA64}.\n * @param raw - a color string in the form of \"#RRGGBBAA\" or \"#RGBA\"\n * @example\n * ```ts\n * parseColorHexRGBA(\"#FF0000AA\");\n * parseColorHexRGBA(\"#F00A\");\n * ```\n * @public\n */\nexport function parseColorHexRGBA(raw) {\n const result = hexRGBARegex.exec(raw);\n if (result === null) {\n return null;\n }\n let digits = result[1];\n if (digits.length === 4) {\n const r = digits.charAt(0);\n const g = digits.charAt(1);\n const b = digits.charAt(2);\n const a = digits.charAt(3);\n digits = r.concat(r, g, g, b, b, a, a);\n }\n const rawInt = parseInt(digits, 16);\n if (isNaN(rawInt)) {\n return null;\n }\n // Note the use of >>> rather than >> as we want JS to manipulate these as unsigned numbers\n return new ColorRGBA64(normalize((rawInt & 0xff000000) >>> 24, 0, 255), normalize((rawInt & 0x00ff0000) >>> 16, 0, 255), normalize((rawInt & 0x0000ff00) >>> 8, 0, 255), normalize(rawInt & 0x000000ff, 0, 255));\n}\n/**\n * Converts a rgb color string to a {@link @microsoft/fast-colors#ColorRGBA64}.\n * @param raw - a color string format \"rgba(RR,GG,BB)\" where RR,GG,BB are [0,255]\n * @example\n * ```ts\n * parseColorWebRGB(\"rgba(255, 0, 0\");\n * ```\n * @public\n */\nexport function parseColorWebRGB(raw) {\n const result = webRGBRegex.exec(raw);\n if (result === null) {\n return null;\n }\n const split = result[1].split(\",\");\n return new ColorRGBA64(normalize(Number(split[0]), 0, 255), normalize(Number(split[1]), 0, 255), normalize(Number(split[2]), 0, 255), 1);\n}\n/**\n * Converts a rgba color string to a {@link @microsoft/fast-colors#ColorRGBA64}.\n * @param raw - a color string format \"rgba(RR,GG,BB,a)\" where RR,GG,BB are [0,255] and a is [0,1]\n * @example\n * ```ts\n * parseColorWebRGBA(\"rgba(255, 0, 0, 1\");\n * ```\n * @public\n */\nexport function parseColorWebRGBA(raw) {\n const result = webRGBARegex.exec(raw);\n if (result === null) {\n return null;\n }\n const split = result[1].split(\",\");\n if (split.length === 4) {\n return new ColorRGBA64(normalize(Number(split[0]), 0, 255), normalize(Number(split[1]), 0, 255), normalize(Number(split[2]), 0, 255), Number(split[3]));\n }\n return null;\n}\n/**\n * Converts a named color to a {@link @microsoft/fast-colors#ColorRGBA64}.\n * @param raw - a {@link https://www.w3schools.com/colors/colors_names.asp | CSS color name}.\n * @example\n * ```ts\n * parseColorNamed(\"red\");\n * ```\n * @public\n */\nexport function parseColorNamed(raw) {\n // const rawLower: typeof raw = raw.toLowerCase() : raw.toString();\n const config = namedColorsConfigs[raw.toLowerCase()];\n return config\n ? new ColorRGBA64(config.r, config.g, config.b, config.hasOwnProperty(\"a\") ? config.a : void 0)\n : null;\n}\n/**\n *\n Expects any of the following and attempts to determine which is being used\n * #RRGGBB, #AARRGGBB, rgb(RR,GG,BB) rgba(RR,GG,BB,a),\n * or any of the {@link https://www.w3schools.com/colors/colors_names.asp | CSS color names}.\n * @param raw - the color string to parse\n * @public\n */\nexport function parseColor(raw) {\n const rawLower = raw.toLowerCase();\n return isColorStringHexRGB(rawLower)\n ? parseColorHexRGB(rawLower)\n : isColorStringHexRGBA(rawLower)\n ? parseColorHexARGB(rawLower)\n : isColorStringWebRGB(rawLower)\n ? parseColorWebRGB(rawLower)\n : isColorStringWebRGBA(rawLower)\n ? parseColorWebRGBA(rawLower)\n : isColorNamed(rawLower)\n ? parseColorNamed(rawLower)\n : null;\n}\n","/**\n * Retrieves the \"composed parent\" element of a node, ignoring DOM tree boundaries.\n * When the parent of a node is a shadow-root, it will return the host\n * element of the shadow root. Otherwise it will return the parent node or null if\n * no parent node exists.\n * @param element - The element for which to retrieve the composed parent\n *\n * @public\n */\nexport function composedParent(element) {\n const parentNode = element.parentElement;\n if (parentNode) {\n return parentNode;\n }\n else {\n const rootNode = element.getRootNode();\n if (rootNode.host instanceof HTMLElement) {\n // this is shadow-root\n return rootNode.host;\n }\n }\n return null;\n}\n","import { __decorate } from \"tslib\";\nimport { DOM, ElementStyles, FASTElement, observable, Observable, prependToAdoptedStyleSheetsSymbol, } from \"@microsoft/fast-element\";\nexport const defaultElement = document.createElement(\"div\");\nfunction isFastElement(element) {\n return element instanceof FASTElement;\n}\nclass QueuedStyleSheetTarget {\n setProperty(name, value) {\n DOM.queueUpdate(() => this.target.setProperty(name, value));\n }\n removeProperty(name) {\n DOM.queueUpdate(() => this.target.removeProperty(name));\n }\n}\n/**\n * Handles setting properties for a FASTElement using Constructable Stylesheets\n */\nclass ConstructableStyleSheetTarget extends QueuedStyleSheetTarget {\n constructor(source) {\n super();\n const sheet = new CSSStyleSheet();\n sheet[prependToAdoptedStyleSheetsSymbol] = true;\n this.target = sheet.cssRules[sheet.insertRule(\":host{}\")].style;\n source.$fastController.addStyles(ElementStyles.create([sheet]));\n }\n}\nclass DocumentStyleSheetTarget extends QueuedStyleSheetTarget {\n constructor() {\n super();\n const sheet = new CSSStyleSheet();\n this.target = sheet.cssRules[sheet.insertRule(\":root{}\")].style;\n document.adoptedStyleSheets = [\n ...document.adoptedStyleSheets,\n sheet,\n ];\n }\n}\nclass HeadStyleElementStyleSheetTarget extends QueuedStyleSheetTarget {\n constructor() {\n super();\n this.style = document.createElement(\"style\");\n document.head.appendChild(this.style);\n const { sheet } = this.style;\n // Because the HTMLStyleElement has been appended,\n // there shouldn't exist a case where `sheet` is null,\n // but if-check it just in case.\n if (sheet) {\n // https://github.com/jsdom/jsdom uses https://github.com/NV/CSSOM for it's CSSOM implementation,\n // which implements the DOM Level 2 spec for CSSStyleSheet where insertRule() requires an index argument.\n const index = sheet.insertRule(\":root{}\", sheet.cssRules.length);\n this.target = sheet.cssRules[index].style;\n }\n }\n}\n/**\n * Handles setting properties for a FASTElement using an HTMLStyleElement\n */\nclass StyleElementStyleSheetTarget {\n constructor(target) {\n this.store = new Map();\n this.target = null;\n const controller = target.$fastController;\n this.style = document.createElement(\"style\");\n controller.addStyles(this.style);\n Observable.getNotifier(controller).subscribe(this, \"isConnected\");\n this.handleChange(controller, \"isConnected\");\n }\n targetChanged() {\n if (this.target !== null) {\n for (const [key, value] of this.store.entries()) {\n this.target.setProperty(key, value);\n }\n }\n }\n setProperty(name, value) {\n this.store.set(name, value);\n DOM.queueUpdate(() => {\n if (this.target !== null) {\n this.target.setProperty(name, value);\n }\n });\n }\n removeProperty(name) {\n this.store.delete(name);\n DOM.queueUpdate(() => {\n if (this.target !== null) {\n this.target.removeProperty(name);\n }\n });\n }\n handleChange(source, key) {\n // HTMLStyleElement.sheet is null if the element isn't connected to the DOM,\n // so this method reacts to changes in DOM connection for the element hosting\n // the HTMLStyleElement.\n //\n // All rules applied via the CSSOM also get cleared when the element disconnects,\n // so we need to add a new rule each time and populate it with the stored properties\n const { sheet } = this.style;\n if (sheet) {\n // Safari will throw if we try to use the return result of insertRule()\n // to index the rule inline, so store as a const prior to indexing.\n // https://github.com/jsdom/jsdom uses https://github.com/NV/CSSOM for it's CSSOM implementation,\n // which implements the DOM Level 2 spec for CSSStyleSheet where insertRule() requires an index argument.\n const index = sheet.insertRule(\":host{}\", sheet.cssRules.length);\n this.target = sheet.cssRules[index].style;\n }\n else {\n this.target = null;\n }\n }\n}\n__decorate([\n observable\n], StyleElementStyleSheetTarget.prototype, \"target\", void 0);\n/**\n * Handles setting properties for a normal HTMLElement\n */\nclass ElementStyleSheetTarget {\n constructor(source) {\n this.target = source.style;\n }\n setProperty(name, value) {\n DOM.queueUpdate(() => this.target.setProperty(name, value));\n }\n removeProperty(name) {\n DOM.queueUpdate(() => this.target.removeProperty(name));\n }\n}\n/**\n * Controls emission for default values. This control is capable\n * of emitting to multiple {@link PropertyTarget | PropertyTargets},\n * and only emits if it has at least one root.\n *\n * @internal\n */\nexport class RootStyleSheetTarget {\n setProperty(name, value) {\n RootStyleSheetTarget.properties[name] = value;\n for (const target of RootStyleSheetTarget.roots.values()) {\n PropertyTargetManager.getOrCreate(RootStyleSheetTarget.normalizeRoot(target)).setProperty(name, value);\n }\n }\n removeProperty(name) {\n delete RootStyleSheetTarget.properties[name];\n for (const target of RootStyleSheetTarget.roots.values()) {\n PropertyTargetManager.getOrCreate(RootStyleSheetTarget.normalizeRoot(target)).removeProperty(name);\n }\n }\n static registerRoot(root) {\n const { roots } = RootStyleSheetTarget;\n if (!roots.has(root)) {\n roots.add(root);\n const target = PropertyTargetManager.getOrCreate(this.normalizeRoot(root));\n for (const key in RootStyleSheetTarget.properties) {\n target.setProperty(key, RootStyleSheetTarget.properties[key]);\n }\n }\n }\n static unregisterRoot(root) {\n const { roots } = RootStyleSheetTarget;\n if (roots.has(root)) {\n roots.delete(root);\n const target = PropertyTargetManager.getOrCreate(RootStyleSheetTarget.normalizeRoot(root));\n for (const key in RootStyleSheetTarget.properties) {\n target.removeProperty(key);\n }\n }\n }\n /**\n * Returns the document when provided the default element,\n * otherwise is a no-op\n * @param root - the root to normalize\n */\n static normalizeRoot(root) {\n return root === defaultElement ? document : root;\n }\n}\nRootStyleSheetTarget.roots = new Set();\nRootStyleSheetTarget.properties = {};\n// Caches PropertyTarget instances\nconst propertyTargetCache = new WeakMap();\n// Use Constructable StyleSheets for FAST elements when supported, otherwise use\n// HTMLStyleElement instances\nconst propertyTargetCtor = DOM.supportsAdoptedStyleSheets\n ? ConstructableStyleSheetTarget\n : StyleElementStyleSheetTarget;\n/**\n * Manages creation and caching of PropertyTarget instances.\n *\n * @internal\n */\nexport const PropertyTargetManager = Object.freeze({\n getOrCreate(source) {\n if (propertyTargetCache.has(source)) {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n return propertyTargetCache.get(source);\n }\n let target;\n if (source === defaultElement) {\n target = new RootStyleSheetTarget();\n }\n else if (source instanceof Document) {\n target = DOM.supportsAdoptedStyleSheets\n ? new DocumentStyleSheetTarget()\n : new HeadStyleElementStyleSheetTarget();\n }\n else if (isFastElement(source)) {\n target = new propertyTargetCtor(source);\n }\n else {\n target = new ElementStyleSheetTarget(source);\n }\n propertyTargetCache.set(source, target);\n return target;\n },\n});\n","import { __decorate } from \"tslib\";\nimport { CSSDirective, defaultExecutionContext, FASTElement, observable, Observable, } from \"@microsoft/fast-element\";\nimport { composedParent } from \"../utilities/composed-parent.js\";\nimport { composedContains } from \"../utilities/composed-contains.js\";\nimport { PropertyTargetManager, RootStyleSheetTarget, } from \"./custom-property-manager.js\";\nimport { defaultElement } from \"./custom-property-manager.js\";\n/**\n * Implementation of {@link (DesignToken:interface)}\n */\nclass DesignTokenImpl extends CSSDirective {\n constructor(configuration) {\n super();\n this.subscribers = new WeakMap();\n this._appliedTo = new Set();\n this.name = configuration.name;\n if (configuration.cssCustomPropertyName !== null) {\n this.cssCustomProperty = `--${configuration.cssCustomPropertyName}`;\n this.cssVar = `var(${this.cssCustomProperty})`;\n }\n this.id = DesignTokenImpl.uniqueId();\n DesignTokenImpl.tokensById.set(this.id, this);\n }\n get appliedTo() {\n return [...this._appliedTo];\n }\n static from(nameOrConfig) {\n return new DesignTokenImpl({\n name: typeof nameOrConfig === \"string\" ? nameOrConfig : nameOrConfig.name,\n cssCustomPropertyName: typeof nameOrConfig === \"string\"\n ? nameOrConfig\n : nameOrConfig.cssCustomPropertyName === void 0\n ? nameOrConfig.name\n : nameOrConfig.cssCustomPropertyName,\n });\n }\n static isCSSDesignToken(token) {\n return typeof token.cssCustomProperty === \"string\";\n }\n static isDerivedDesignTokenValue(value) {\n return typeof value === \"function\";\n }\n /**\n * Gets a token by ID. Returns undefined if the token was not found.\n * @param id - The ID of the token\n * @returns\n */\n static getTokenById(id) {\n return DesignTokenImpl.tokensById.get(id);\n }\n getOrCreateSubscriberSet(target = this) {\n return (this.subscribers.get(target) ||\n (this.subscribers.set(target, new Set()) && this.subscribers.get(target)));\n }\n createCSS() {\n return this.cssVar || \"\";\n }\n getValueFor(element) {\n const value = DesignTokenNode.getOrCreate(element).get(this);\n if (value !== undefined) {\n return value;\n }\n throw new Error(`Value could not be retrieved for token named \"${this.name}\". Ensure the value is set for ${element} or an ancestor of ${element}.`);\n }\n setValueFor(element, value) {\n this._appliedTo.add(element);\n if (value instanceof DesignTokenImpl) {\n value = this.alias(value);\n }\n DesignTokenNode.getOrCreate(element).set(this, value);\n return this;\n }\n deleteValueFor(element) {\n this._appliedTo.delete(element);\n if (DesignTokenNode.existsFor(element)) {\n DesignTokenNode.getOrCreate(element).delete(this);\n }\n return this;\n }\n withDefault(value) {\n this.setValueFor(defaultElement, value);\n return this;\n }\n subscribe(subscriber, target) {\n const subscriberSet = this.getOrCreateSubscriberSet(target);\n if (target && !DesignTokenNode.existsFor(target)) {\n DesignTokenNode.getOrCreate(target);\n }\n if (!subscriberSet.has(subscriber)) {\n subscriberSet.add(subscriber);\n }\n }\n unsubscribe(subscriber, target) {\n const list = this.subscribers.get(target || this);\n if (list && list.has(subscriber)) {\n list.delete(subscriber);\n }\n }\n /**\n * Notifies subscribers that the value for an element has changed.\n * @param element - The element to emit a notification for\n */\n notify(element) {\n const record = Object.freeze({ token: this, target: element });\n if (this.subscribers.has(this)) {\n this.subscribers.get(this).forEach(sub => sub.handleChange(record));\n }\n if (this.subscribers.has(element)) {\n this.subscribers.get(element).forEach(sub => sub.handleChange(record));\n }\n }\n /**\n * Alias the token to the provided token.\n * @param token - the token to alias to\n */\n alias(token) {\n return ((target) => token.getValueFor(target));\n }\n}\nDesignTokenImpl.uniqueId = (() => {\n let id = 0;\n return () => {\n id++;\n return id.toString(16);\n };\n})();\n/**\n * Token storage by token ID\n */\nDesignTokenImpl.tokensById = new Map();\nclass CustomPropertyReflector {\n startReflection(token, target) {\n token.subscribe(this, target);\n this.handleChange({ token, target });\n }\n stopReflection(token, target) {\n token.unsubscribe(this, target);\n this.remove(token, target);\n }\n handleChange(record) {\n const { token, target } = record;\n this.add(token, target);\n }\n add(token, target) {\n PropertyTargetManager.getOrCreate(target).setProperty(token.cssCustomProperty, this.resolveCSSValue(DesignTokenNode.getOrCreate(target).get(token)));\n }\n remove(token, target) {\n PropertyTargetManager.getOrCreate(target).removeProperty(token.cssCustomProperty);\n }\n resolveCSSValue(value) {\n return value && typeof value.createCSS === \"function\" ? value.createCSS() : value;\n }\n}\n/**\n * A light wrapper around BindingObserver to handle value caching and\n * token notification\n */\nclass DesignTokenBindingObserver {\n constructor(source, token, node) {\n this.source = source;\n this.token = token;\n this.node = node;\n this.dependencies = new Set();\n this.observer = Observable.binding(source, this, false);\n // This is a little bit hacky because it's using internal APIs of BindingObserverImpl.\n // BindingObserverImpl queues updates to batch it's notifications which doesn't work for this\n // scenario because the DesignToken.getValueFor API is not async. Without this, using DesignToken.getValueFor()\n // after DesignToken.setValueFor() when setting a dependency of the value being retrieved can return a stale\n // value. Assigning .handleChange to .call forces immediate invocation of this classes handleChange() method,\n // allowing resolution of values synchronously.\n // TODO: https://github.com/microsoft/fast/issues/5110\n this.observer.handleChange = this.observer.call;\n this.handleChange();\n }\n disconnect() {\n this.observer.disconnect();\n }\n /**\n * @internal\n */\n handleChange() {\n this.node.store.set(this.token, this.observer.observe(this.node.target, defaultExecutionContext));\n }\n}\n/**\n * Stores resolved token/value pairs and notifies on changes\n */\nclass Store {\n constructor() {\n this.values = new Map();\n }\n set(token, value) {\n if (this.values.get(token) !== value) {\n this.values.set(token, value);\n Observable.getNotifier(this).notify(token.id);\n }\n }\n get(token) {\n Observable.track(this, token.id);\n return this.values.get(token);\n }\n delete(token) {\n this.values.delete(token);\n }\n all() {\n return this.values.entries();\n }\n}\nconst nodeCache = new WeakMap();\nconst childToParent = new WeakMap();\n/**\n * A node responsible for setting and getting token values,\n * emitting values to CSS custom properties, and maintaining\n * inheritance structures.\n */\nclass DesignTokenNode {\n constructor(target) {\n this.target = target;\n /**\n * Stores all resolved token values for a node\n */\n this.store = new Store();\n /**\n * All children assigned to the node\n */\n this.children = [];\n /**\n * All values explicitly assigned to the node in their raw form\n */\n this.assignedValues = new Map();\n /**\n * Tokens currently being reflected to CSS custom properties\n */\n this.reflecting = new Set();\n /**\n * Binding observers for assigned and inherited derived values.\n */\n this.bindingObservers = new Map();\n /**\n * Emits notifications to token when token values\n * change the DesignTokenNode\n */\n this.tokenValueChangeHandler = {\n handleChange: (source, arg) => {\n const token = DesignTokenImpl.getTokenById(arg);\n if (token) {\n // Notify any token subscribers\n token.notify(this.target);\n this.updateCSSTokenReflection(source, token);\n }\n },\n };\n nodeCache.set(target, this);\n // Map store change notifications to token change notifications\n Observable.getNotifier(this.store).subscribe(this.tokenValueChangeHandler);\n if (target instanceof FASTElement) {\n target.$fastController.addBehaviors([this]);\n }\n else if (target.isConnected) {\n this.bind();\n }\n }\n /**\n * Returns a DesignTokenNode for an element.\n * Creates a new instance if one does not already exist for a node,\n * otherwise returns the cached instance\n *\n * @param target - The HTML element to retrieve a DesignTokenNode for\n */\n static getOrCreate(target) {\n return nodeCache.get(target) || new DesignTokenNode(target);\n }\n /**\n * Determines if a DesignTokenNode has been created for a target\n * @param target - The element to test\n */\n static existsFor(target) {\n return nodeCache.has(target);\n }\n /**\n * Searches for and return the nearest parent DesignTokenNode.\n * Null is returned if no node is found or the node provided is for a default element.\n */\n static findParent(node) {\n if (!(defaultElement === node.target)) {\n let parent = composedParent(node.target);\n while (parent !== null) {\n if (nodeCache.has(parent)) {\n return nodeCache.get(parent);\n }\n parent = composedParent(parent);\n }\n return DesignTokenNode.getOrCreate(defaultElement);\n }\n return null;\n }\n /**\n * Finds the closest node with a value explicitly assigned for a token, otherwise null.\n * @param token - The token to look for\n * @param start - The node to start looking for value assignment\n * @returns\n */\n static findClosestAssignedNode(token, start) {\n let current = start;\n do {\n if (current.has(token)) {\n return current;\n }\n current = current.parent\n ? current.parent\n : current.target !== defaultElement\n ? DesignTokenNode.getOrCreate(defaultElement)\n : null;\n } while (current !== null);\n return null;\n }\n /**\n * The parent DesignTokenNode, or null.\n */\n get parent() {\n return childToParent.get(this) || null;\n }\n updateCSSTokenReflection(source, token) {\n if (DesignTokenImpl.isCSSDesignToken(token)) {\n const parent = this.parent;\n const reflecting = this.isReflecting(token);\n if (parent) {\n const parentValue = parent.get(token);\n const sourceValue = source.get(token);\n if (parentValue !== sourceValue && !reflecting) {\n this.reflectToCSS(token);\n }\n else if (parentValue === sourceValue && reflecting) {\n this.stopReflectToCSS(token);\n }\n }\n else if (!reflecting) {\n this.reflectToCSS(token);\n }\n }\n }\n /**\n * Checks if a token has been assigned an explicit value the node.\n * @param token - the token to check.\n */\n has(token) {\n return this.assignedValues.has(token);\n }\n /**\n * Gets the value of a token for a node\n * @param token - The token to retrieve the value for\n * @returns\n */\n get(token) {\n const value = this.store.get(token);\n if (value !== undefined) {\n return value;\n }\n const raw = this.getRaw(token);\n if (raw !== undefined) {\n this.hydrate(token, raw);\n return this.get(token);\n }\n }\n /**\n * Retrieves the raw assigned value of a token from the nearest assigned node.\n * @param token - The token to retrieve a raw value for\n * @returns\n */\n getRaw(token) {\n var _a;\n if (this.assignedValues.has(token)) {\n return this.assignedValues.get(token);\n }\n return (_a = DesignTokenNode.findClosestAssignedNode(token, this)) === null || _a === void 0 ? void 0 : _a.getRaw(token);\n }\n /**\n * Sets a token to a value for a node\n * @param token - The token to set\n * @param value - The value to set the token to\n */\n set(token, value) {\n if (DesignTokenImpl.isDerivedDesignTokenValue(this.assignedValues.get(token))) {\n this.tearDownBindingObserver(token);\n }\n this.assignedValues.set(token, value);\n if (DesignTokenImpl.isDerivedDesignTokenValue(value)) {\n this.setupBindingObserver(token, value);\n }\n else {\n this.store.set(token, value);\n }\n }\n /**\n * Deletes a token value for the node.\n * @param token - The token to delete the value for\n */\n delete(token) {\n this.assignedValues.delete(token);\n this.tearDownBindingObserver(token);\n const upstream = this.getRaw(token);\n if (upstream) {\n this.hydrate(token, upstream);\n }\n else {\n this.store.delete(token);\n }\n }\n /**\n * Invoked when the DesignTokenNode.target is attached to the document\n */\n bind() {\n const parent = DesignTokenNode.findParent(this);\n if (parent) {\n parent.appendChild(this);\n }\n for (const key of this.assignedValues.keys()) {\n key.notify(this.target);\n }\n }\n /**\n * Invoked when the DesignTokenNode.target is detached from the document\n */\n unbind() {\n if (this.parent) {\n const parent = childToParent.get(this);\n parent.removeChild(this);\n }\n }\n /**\n * Appends a child to a parent DesignTokenNode.\n * @param child - The child to append to the node\n */\n appendChild(child) {\n if (child.parent) {\n childToParent.get(child).removeChild(child);\n }\n const reParent = this.children.filter(x => child.contains(x));\n childToParent.set(child, this);\n this.children.push(child);\n reParent.forEach(x => child.appendChild(x));\n Observable.getNotifier(this.store).subscribe(child);\n // How can we not notify *every* subscriber?\n for (const [token, value] of this.store.all()) {\n child.hydrate(token, this.bindingObservers.has(token) ? this.getRaw(token) : value);\n }\n }\n /**\n * Removes a child from a node.\n * @param child - The child to remove.\n */\n removeChild(child) {\n const childIndex = this.children.indexOf(child);\n if (childIndex !== -1) {\n this.children.splice(childIndex, 1);\n }\n Observable.getNotifier(this.store).unsubscribe(child);\n return child.parent === this ? childToParent.delete(child) : false;\n }\n /**\n * Tests whether a provided node is contained by\n * the calling node.\n * @param test - The node to test\n */\n contains(test) {\n return composedContains(this.target, test.target);\n }\n /**\n * Instructs the node to reflect a design token for the provided token.\n * @param token - The design token to reflect\n */\n reflectToCSS(token) {\n if (!this.isReflecting(token)) {\n this.reflecting.add(token);\n DesignTokenNode.cssCustomPropertyReflector.startReflection(token, this.target);\n }\n }\n /**\n * Stops reflecting a DesignToken to CSS\n * @param token - The design token to stop reflecting\n */\n stopReflectToCSS(token) {\n if (this.isReflecting(token)) {\n this.reflecting.delete(token);\n DesignTokenNode.cssCustomPropertyReflector.stopReflection(token, this.target);\n }\n }\n /**\n * Determines if a token is being reflected to CSS for a node.\n * @param token - The token to check for reflection\n * @returns\n */\n isReflecting(token) {\n return this.reflecting.has(token);\n }\n /**\n * Handle changes to upstream tokens\n * @param source - The parent DesignTokenNode\n * @param property - The token ID that changed\n */\n handleChange(source, property) {\n const token = DesignTokenImpl.getTokenById(property);\n if (!token) {\n return;\n }\n this.hydrate(token, this.getRaw(token));\n this.updateCSSTokenReflection(this.store, token);\n }\n /**\n * Hydrates a token with a DesignTokenValue, making retrieval available.\n * @param token - The token to hydrate\n * @param value - The value to hydrate\n */\n hydrate(token, value) {\n if (!this.has(token)) {\n const observer = this.bindingObservers.get(token);\n if (DesignTokenImpl.isDerivedDesignTokenValue(value)) {\n if (observer) {\n // If the binding source doesn't match, we need\n // to update the binding\n if (observer.source !== value) {\n this.tearDownBindingObserver(token);\n this.setupBindingObserver(token, value);\n }\n }\n else {\n this.setupBindingObserver(token, value);\n }\n }\n else {\n if (observer) {\n this.tearDownBindingObserver(token);\n }\n this.store.set(token, value);\n }\n }\n }\n /**\n * Sets up a binding observer for a derived token value that notifies token\n * subscribers on change.\n *\n * @param token - The token to notify when the binding updates\n * @param source - The binding source\n */\n setupBindingObserver(token, source) {\n const binding = new DesignTokenBindingObserver(source, token, this);\n this.bindingObservers.set(token, binding);\n return binding;\n }\n /**\n * Tear down a binding observer for a token.\n */\n tearDownBindingObserver(token) {\n if (this.bindingObservers.has(token)) {\n this.bindingObservers.get(token).disconnect();\n this.bindingObservers.delete(token);\n return true;\n }\n return false;\n }\n}\n/**\n * Responsible for reflecting tokens to CSS custom properties\n */\nDesignTokenNode.cssCustomPropertyReflector = new CustomPropertyReflector();\n__decorate([\n observable\n], DesignTokenNode.prototype, \"children\", void 0);\nfunction create(nameOrConfig) {\n return DesignTokenImpl.from(nameOrConfig);\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\n/**\n * Factory object for creating {@link (DesignToken:interface)} instances.\n * @public\n */\nexport const DesignToken = Object.freeze({\n create,\n /**\n * Informs DesignToken that an HTMLElement for which tokens have\n * been set has been connected to the document.\n *\n * The browser does not provide a reliable mechanism to observe an HTMLElement's connectedness\n * in all scenarios, so invoking this method manually is necessary when:\n *\n * 1. Token values are set for an HTMLElement.\n * 2. The HTMLElement does not inherit from FASTElement.\n * 3. The HTMLElement is not connected to the document when token values are set.\n *\n * @param element - The element to notify\n * @returns - true if notification was successful, otherwise false.\n */\n notifyConnection(element) {\n if (!element.isConnected || !DesignTokenNode.existsFor(element)) {\n return false;\n }\n DesignTokenNode.getOrCreate(element).bind();\n return true;\n },\n /**\n * Informs DesignToken that an HTMLElement for which tokens have\n * been set has been disconnected to the document.\n *\n * The browser does not provide a reliable mechanism to observe an HTMLElement's connectedness\n * in all scenarios, so invoking this method manually is necessary when:\n *\n * 1. Token values are set for an HTMLElement.\n * 2. The HTMLElement does not inherit from FASTElement.\n *\n * @param element - The element to notify\n * @returns - true if notification was successful, otherwise false.\n */\n notifyDisconnection(element) {\n if (element.isConnected || !DesignTokenNode.existsFor(element)) {\n return false;\n }\n DesignTokenNode.getOrCreate(element).unbind();\n return true;\n },\n /**\n * Registers and element or document as a DesignToken root.\n * {@link CSSDesignToken | CSSDesignTokens} with default values assigned via\n * {@link (DesignToken:interface).withDefault} will emit CSS custom properties to all\n * registered roots.\n * @param target - The root to register\n */\n registerRoot(target = defaultElement) {\n RootStyleSheetTarget.registerRoot(target);\n },\n /**\n * Unregister an element or document as a DesignToken root.\n * @param target - The root to deregister\n */\n unregisterRoot(target = defaultElement) {\n RootStyleSheetTarget.unregisterRoot(target);\n },\n});\n/* eslint-enable @typescript-eslint/no-non-null-assertion */\n","import { composedParent } from \"./composed-parent.js\";\n/**\n * Determines if the reference element contains the test element in a \"composed\" DOM tree that\n * ignores shadow DOM boundaries.\n *\n * Returns true of the test element is a descendent of the reference, or exist in\n * a shadow DOM that is a logical descendent of the reference. Otherwise returns false.\n * @param reference - The element to test for containment against.\n * @param test - The element being tested for containment.\n *\n * @public\n */\nexport function composedContains(reference, test) {\n let current = test;\n while (current !== null) {\n if (current === reference) {\n return true;\n }\n current = composedParent(current);\n }\n return false;\n}\n","/**\n * Expose ltr and rtl strings\n */\nexport var Direction;\n(function (Direction) {\n Direction[\"ltr\"] = \"ltr\";\n Direction[\"rtl\"] = \"rtl\";\n})(Direction || (Direction = {}));\n","import { roundToPrecisionSmall } from \"./math-utilities.js\";\n/**\n * This uses Hue values in \"degree\" format. So expect a range of [0,360]. Some other implementations instead uses radians or a normalized Hue with range [0,1]. Be aware of this when checking values or using other libraries.\n *\n * @public\n */\nexport class ColorHSL {\n constructor(hue, sat, lum) {\n this.h = hue;\n this.s = sat;\n this.l = lum;\n }\n /**\n * Construct a {@link ColorHSL} from a config object.\n */\n static fromObject(data) {\n if (data && !isNaN(data.h) && !isNaN(data.s) && !isNaN(data.l)) {\n return new ColorHSL(data.h, data.s, data.l);\n }\n return null;\n }\n /**\n * Determines if a color is equal to another\n * @param rhs - the value to compare\n */\n equalValue(rhs) {\n return this.h === rhs.h && this.s === rhs.s && this.l === rhs.l;\n }\n /**\n * Returns a new {@link ColorHSL} rounded to the provided precision\n * @param precision - the precision to round to\n */\n roundToPrecision(precision) {\n return new ColorHSL(roundToPrecisionSmall(this.h, precision), roundToPrecisionSmall(this.s, precision), roundToPrecisionSmall(this.l, precision));\n }\n /**\n * Returns the {@link ColorHSL} formatted as an object.\n */\n toObject() {\n return { h: this.h, s: this.s, l: this.l };\n }\n}\n","import { roundToPrecisionSmall } from \"./math-utilities.js\";\n/**\n * This uses Hue values in \"degree\" format. So expect a range of [0,360]. Some other implementations instead uses radians or a normalized Hue with range [0,1]. Be aware of this when checking values or using other libraries.\n *\n * @public\n */\nexport class ColorHSV {\n constructor(hue, sat, val) {\n this.h = hue;\n this.s = sat;\n this.v = val;\n }\n /**\n * Construct a {@link ColorHSV} from a config object.\n */\n static fromObject(data) {\n if (data && !isNaN(data.h) && !isNaN(data.s) && !isNaN(data.v)) {\n return new ColorHSV(data.h, data.s, data.v);\n }\n return null;\n }\n /**\n * Determines if a color is equal to another\n * @param rhs - the value to compare\n */\n equalValue(rhs) {\n return this.h === rhs.h && this.s === rhs.s && this.v === rhs.v;\n }\n /**\n * Returns a new {@link ColorHSV} rounded to the provided precision\n * @param precision - the precision to round to\n */\n roundToPrecision(precision) {\n return new ColorHSV(roundToPrecisionSmall(this.h, precision), roundToPrecisionSmall(this.s, precision), roundToPrecisionSmall(this.v, precision));\n }\n /**\n * Returns the {@link ColorHSV} formatted as an object.\n */\n toObject() {\n return { h: this.h, s: this.s, v: this.v };\n }\n}\n","import { roundToPrecisionSmall } from \"./math-utilities.js\";\n/**\n * {@link https://en.wikipedia.org/wiki/CIELAB_color_space | CIELAB color space}\n * This implementation uses the D65 constants for 2 degrees. That determines the constants used for the pure white point of the XYZ space of 0.95047, 1.0, 1.08883.\n * {@link https://en.wikipedia.org/wiki/Illuminant_D65}\n * These constants determine how the XYZ, LCH and LAB colors convert to/from RGB.\n *\n * @public\n */\nexport class ColorLAB {\n constructor(l, a, b) {\n this.l = l;\n this.a = a;\n this.b = b;\n }\n /**\n * Construct a {@link ColorLAB} from a config object.\n */\n static fromObject(data) {\n if (data && !isNaN(data.l) && !isNaN(data.a) && !isNaN(data.b)) {\n return new ColorLAB(data.l, data.a, data.b);\n }\n return null;\n }\n /**\n * Determines if a color is equal to another\n * @param rhs - the value to compare\n */\n equalValue(rhs) {\n return this.l === rhs.l && this.a === rhs.a && this.b === rhs.b;\n }\n /**\n * Returns a new {@link ColorLAB} rounded to the provided precision\n * @param precision - the precision to round to\n */\n roundToPrecision(precision) {\n return new ColorLAB(roundToPrecisionSmall(this.l, precision), roundToPrecisionSmall(this.a, precision), roundToPrecisionSmall(this.b, precision));\n }\n /**\n * Returns the {@link ColorLAB} formatted as an object.\n */\n toObject() {\n return { l: this.l, a: this.a, b: this.b };\n }\n}\nColorLAB.epsilon = 216 / 24389;\nColorLAB.kappa = 24389 / 27;\n","import { roundToPrecisionSmall } from \"./math-utilities.js\";\n/**\n *\n * {@link https://en.wikipedia.org/wiki/CIELAB_color_space | CIELCH color space}\n *\n * This is a cylindrical representation of the CIELAB space useful for saturation operations\n * This uses Hue values in \"degree\" format. So expect a range of [0,360]. Some other implementations instead uses radians or a normalized Hue with range [0,1]. Be aware of this when checking values or using other libraries.\n * This implementation uses the D65 constants for 2 degrees. That determines the constants used for the pure white point of the XYZ space of 0.95047, 1.0, 1.08883.\n * {@link https://en.wikipedia.org/wiki/Illuminant_D65}\n * These constants determine how the XYZ, LCH and LAB colors convert to/from RGB.\n *\n * @public\n */\nexport class ColorLCH {\n constructor(l, c, h) {\n this.l = l;\n this.c = c;\n this.h = h;\n }\n /**\n * Construct a {@link ColorLCH} from a config object.\n * @param data - the config object\n */\n static fromObject(data) {\n if (data && !isNaN(data.l) && !isNaN(data.c) && !isNaN(data.h)) {\n return new ColorLCH(data.l, data.c, data.h);\n }\n return null;\n }\n /**\n * Determines if one color is equal to another.\n * @param rhs - the color to compare\n */\n equalValue(rhs) {\n return this.l === rhs.l && this.c === rhs.c && this.h === rhs.h;\n }\n /**\n * Returns a new {@link ColorLCH} rounded to the provided precision\n * @param precision - the precision to round to\n */\n roundToPrecision(precision) {\n return new ColorLCH(roundToPrecisionSmall(this.l, precision), roundToPrecisionSmall(this.c, precision), roundToPrecisionSmall(this.h, precision));\n }\n /**\n * Converts the {@link ColorLCH} to a config object.\n */\n toObject() {\n return { l: this.l, c: this.c, h: this.h };\n }\n}\n","import { roundToPrecisionSmall } from \"./math-utilities.js\";\n/**\n * {@link https://en.wikipedia.org/wiki/CIE_1931_color_space | XYZ color space}\n *\n * This implementation uses the D65 constants for 2 degrees. That determines the constants used for the pure white point of the XYZ space of 0.95047, 1.0, 1.08883.\n * {@link https://en.wikipedia.org/wiki/Illuminant_D65}\n * These constants determine how the XYZ, LCH and LAB colors convert to/from RGB.\n *\n * @public\n */\nexport class ColorXYZ {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n /**\n * Construct a {@link ColorXYZ} from a config object.\n */\n static fromObject(data) {\n if (data && !isNaN(data.x) && !isNaN(data.y) && !isNaN(data.z)) {\n return new ColorXYZ(data.x, data.y, data.z);\n }\n return null;\n }\n /**\n * Determines if a color is equal to another\n * @param rhs - the value to compare\n */\n equalValue(rhs) {\n return this.x === rhs.x && this.y === rhs.y && this.z === rhs.z;\n }\n /**\n * Returns a new {@link ColorXYZ} rounded to the provided precision\n * @param precision - the precision to round to\n */\n roundToPrecision(precision) {\n return new ColorXYZ(roundToPrecisionSmall(this.x, precision), roundToPrecisionSmall(this.y, precision), roundToPrecisionSmall(this.z, precision));\n }\n /**\n * Returns the {@link ColorXYZ} formatted as an object.\n */\n toObject() {\n return { x: this.x, y: this.y, z: this.z };\n }\n}\n/**\n * D65 2 degree white point\n */\nColorXYZ.whitePoint = new ColorXYZ(0.95047, 1.0, 1.08883);\n","import { ColorHSL } from \"./color-hsl.js\";\nimport { ColorHSV } from \"./color-hsv.js\";\nimport { ColorLAB } from \"./color-lab.js\";\nimport { ColorLCH } from \"./color-lch.js\";\nimport { ColorRGBA64 } from \"./color-rgba-64.js\";\nimport { ColorXYZ } from \"./color-xyz.js\";\nimport { degreesToRadians, radiansToDegrees } from \"./math-utilities.js\";\n// All hue values are in degrees rather than radians or normalized\n// All conversions use the D65 2 degree white point for XYZ\n// Info on conversions and constants used can be found in the following:\n// https://en.wikipedia.org/wiki/CIELAB_color_space\n// https://en.wikipedia.org/wiki/Illuminant_D65\n// https://ninedegreesbelow.com/photography/xyz-rgb.html\n// http://user.engineering.uiowa.edu/~aip/Misc/ColorFAQ.html\n// https://web.stanford.edu/~sujason/ColorBalancing/adaptation.html\n// http://brucelindbloom.com/index.html\n/**\n * Get the luminance of a color in the linear RGB space.\n * This is not the same as the relative luminance in the sRGB space for WCAG contrast calculations. Use rgbToRelativeLuminance instead.\n * @param rgb - The input color\n *\n * @public\n */\nexport function rgbToLinearLuminance(rgb) {\n return rgb.r * 0.2126 + rgb.g * 0.7152 + rgb.b * 0.0722;\n}\n/**\n * Get the relative luminance of a color.\n * Adjusts the color to sRGB space, which is necessary for the WCAG contrast spec.\n * The alpha channel of the input is ignored.\n * @param rgb - The input color\n *\n * @public\n */\nexport function rgbToRelativeLuminance(rgb) {\n function luminanceHelper(i) {\n if (i <= 0.03928) {\n return i / 12.92;\n }\n return Math.pow((i + 0.055) / 1.055, 2.4);\n }\n return rgbToLinearLuminance(new ColorRGBA64(luminanceHelper(rgb.r), luminanceHelper(rgb.g), luminanceHelper(rgb.b), 1));\n}\nconst calculateContrastRatio = (a, b) => (a + 0.05) / (b + 0.05);\n/**\n * Calculate the contrast ratio between two colors. Uses the formula described by {@link https://www.w3.org/TR/WCAG20-TECHS/G17.html | WCAG 2.0}.\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function contrastRatio(a, b) {\n const luminanceA = rgbToRelativeLuminance(a);\n const luminanceB = rgbToRelativeLuminance(b);\n return luminanceA > luminanceB\n ? calculateContrastRatio(luminanceA, luminanceB)\n : calculateContrastRatio(luminanceB, luminanceA);\n}\nfunction calcChannelOverlay(match, background, overlay) {\n if (overlay - background === 0) {\n return 0;\n }\n else {\n return (match - background) / (overlay - background);\n }\n}\nfunction calcRgbOverlay(rgbMatch, rgbBackground, rgbOverlay) {\n const rChannel = calcChannelOverlay(rgbMatch.r, rgbBackground.r, rgbOverlay.r);\n const gChannel = calcChannelOverlay(rgbMatch.g, rgbBackground.g, rgbOverlay.g);\n const bChannel = calcChannelOverlay(rgbMatch.b, rgbBackground.b, rgbOverlay.b);\n return (rChannel + gChannel + bChannel) / 3;\n}\n/**\n * Calculate an overlay color that uses rgba (rgb + alpha) that matches the appearance of a given solid color when placed on the same background\n * @param rgbMatch - The solid color the overlay should match in appearance when placed over the rgbBackground\n * @param rgbBackground - The background on which the overlay rests\n * @param rgbOverlay - The rgb color of the overlay. Typically this is either pure white or pure black and when not provided will be determined automatically. This color will be used in the returned output\n * @returns The rgba (rgb + alpha) color of the overlay\n *\n * @public\n */\nexport function calculateOverlayColor(rgbMatch, rgbBackground, rgbOverlay = null) {\n let alpha = 0;\n let overlay = rgbOverlay;\n if (overlay !== null) {\n alpha = calcRgbOverlay(rgbMatch, rgbBackground, overlay);\n }\n else {\n overlay = new ColorRGBA64(0, 0, 0, 1);\n alpha = calcRgbOverlay(rgbMatch, rgbBackground, overlay);\n if (alpha <= 0) {\n overlay = new ColorRGBA64(1, 1, 1, 1);\n alpha = calcRgbOverlay(rgbMatch, rgbBackground, overlay);\n }\n }\n alpha = Math.round(alpha * 1000) / 1000;\n return new ColorRGBA64(overlay.r, overlay.g, overlay.b, alpha);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorRGBA64} to a {@link @microsoft/fast-colors#ColorHSL}\n * @param rgb - the rgb color to convert\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function rgbToHSL(rgb) {\n const max = Math.max(rgb.r, rgb.g, rgb.b);\n const min = Math.min(rgb.r, rgb.g, rgb.b);\n const delta = max - min;\n let hue = 0;\n if (delta !== 0) {\n if (max === rgb.r) {\n hue = 60 * (((rgb.g - rgb.b) / delta) % 6);\n }\n else if (max === rgb.g) {\n hue = 60 * ((rgb.b - rgb.r) / delta + 2);\n }\n else {\n hue = 60 * ((rgb.r - rgb.g) / delta + 4);\n }\n }\n if (hue < 0) {\n hue += 360;\n }\n const lum = (max + min) / 2;\n let sat = 0;\n if (delta !== 0) {\n sat = delta / (1 - Math.abs(2 * lum - 1));\n }\n return new ColorHSL(hue, sat, lum);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorHSL} to a {@link @microsoft/fast-colors#ColorRGBA64}\n * @param hsl - the hsl color to convert\n * @param alpha - the alpha value\n *\n * @public\n */\nexport function hslToRGB(hsl, alpha = 1) {\n const c = (1 - Math.abs(2 * hsl.l - 1)) * hsl.s;\n const x = c * (1 - Math.abs(((hsl.h / 60) % 2) - 1));\n const m = hsl.l - c / 2;\n let r = 0;\n let g = 0;\n let b = 0;\n if (hsl.h < 60) {\n r = c;\n g = x;\n b = 0;\n }\n else if (hsl.h < 120) {\n r = x;\n g = c;\n b = 0;\n }\n else if (hsl.h < 180) {\n r = 0;\n g = c;\n b = x;\n }\n else if (hsl.h < 240) {\n r = 0;\n g = x;\n b = c;\n }\n else if (hsl.h < 300) {\n r = x;\n g = 0;\n b = c;\n }\n else if (hsl.h < 360) {\n r = c;\n g = 0;\n b = x;\n }\n return new ColorRGBA64(r + m, g + m, b + m, alpha);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorRGBA64} to a {@link @microsoft/fast-colors#ColorHSV}\n * @param rgb - the rgb color to convert\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function rgbToHSV(rgb) {\n const max = Math.max(rgb.r, rgb.g, rgb.b);\n const min = Math.min(rgb.r, rgb.g, rgb.b);\n const delta = max - min;\n let hue = 0;\n if (delta !== 0) {\n if (max === rgb.r) {\n hue = 60 * (((rgb.g - rgb.b) / delta) % 6);\n }\n else if (max === rgb.g) {\n hue = 60 * ((rgb.b - rgb.r) / delta + 2);\n }\n else {\n hue = 60 * ((rgb.r - rgb.g) / delta + 4);\n }\n }\n if (hue < 0) {\n hue += 360;\n }\n let sat = 0;\n if (max !== 0) {\n sat = delta / max;\n }\n return new ColorHSV(hue, sat, max);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorHSV} to a {@link @microsoft/fast-colors#ColorRGBA64}\n * @param hsv - the hsv color to convert\n * @param alpha - the alpha value\n *\n * @public\n */\nexport function hsvToRGB(hsv, alpha = 1) {\n const c = hsv.s * hsv.v;\n const x = c * (1 - Math.abs(((hsv.h / 60) % 2) - 1));\n const m = hsv.v - c;\n let r = 0;\n let g = 0;\n let b = 0;\n if (hsv.h < 60) {\n r = c;\n g = x;\n b = 0;\n }\n else if (hsv.h < 120) {\n r = x;\n g = c;\n b = 0;\n }\n else if (hsv.h < 180) {\n r = 0;\n g = c;\n b = x;\n }\n else if (hsv.h < 240) {\n r = 0;\n g = x;\n b = c;\n }\n else if (hsv.h < 300) {\n r = x;\n g = 0;\n b = c;\n }\n else if (hsv.h < 360) {\n r = c;\n g = 0;\n b = x;\n }\n return new ColorRGBA64(r + m, g + m, b + m, alpha);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorLCH} to a {@link @microsoft/fast-colors#ColorLAB}\n * @param lch - the lch color to convert\n *\n * @public\n */\nexport function lchToLAB(lch) {\n let a = 0;\n let b = 0;\n if (lch.h !== 0) {\n a = Math.cos(degreesToRadians(lch.h)) * lch.c;\n b = Math.sin(degreesToRadians(lch.h)) * lch.c;\n }\n return new ColorLAB(lch.l, a, b);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorLAB} to a {@link @microsoft/fast-colors#ColorLCH}\n * @param lab - the lab color to convert\n *\n * @remarks\n * The discontinuity in the C parameter at 0 means that floating point errors will often result in values near 0 giving unpredictable results.\n * EG: 0.0000001 gives a very different result than -0.0000001\n * In cases where both a and b are very near zero this function will return an LCH color with an H of 0\n * More info about the atan2 function: {@link https://en.wikipedia.org/wiki/Atan2}\n * @public\n */\nexport function labToLCH(lab) {\n let h = 0;\n // Because of the discontinuity at 0 if a number is very close to 0 - often due to floating point errors - then\n // it gives unexpected results. EG: 0.000000000001 gives a different result than 0. So just avoid any number\n // that has both a and b very close to zero and lump it in with the h = 0 case.\n if (Math.abs(lab.b) > 0.001 || Math.abs(lab.a) > 0.001) {\n h = radiansToDegrees(Math.atan2(lab.b, lab.a));\n }\n if (h < 0) {\n h += 360;\n }\n const c = Math.sqrt(lab.a * lab.a + lab.b * lab.b);\n return new ColorLCH(lab.l, c, h);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorLAB} to a {@link @microsoft/fast-colors#ColorXYZ}\n * @param lab - the lab color to convert\n *\n * @public\n */\nexport function labToXYZ(lab) {\n const fy = (lab.l + 16) / 116;\n const fx = fy + lab.a / 500;\n const fz = fy - lab.b / 200;\n const xcubed = Math.pow(fx, 3);\n const ycubed = Math.pow(fy, 3);\n const zcubed = Math.pow(fz, 3);\n let x = 0;\n if (xcubed > ColorLAB.epsilon) {\n x = xcubed;\n }\n else {\n x = (116 * fx - 16) / ColorLAB.kappa;\n }\n let y = 0;\n if (lab.l > ColorLAB.epsilon * ColorLAB.kappa) {\n y = ycubed;\n }\n else {\n y = lab.l / ColorLAB.kappa;\n }\n let z = 0;\n if (zcubed > ColorLAB.epsilon) {\n z = zcubed;\n }\n else {\n z = (116 * fz - 16) / ColorLAB.kappa;\n }\n x = ColorXYZ.whitePoint.x * x;\n y = ColorXYZ.whitePoint.y * y;\n z = ColorXYZ.whitePoint.z * z;\n return new ColorXYZ(x, y, z);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorXYZ} to a {@link @microsoft/fast-colors#ColorLAB}\n * @param xyz - the xyz color to convert\n *\n * @public\n */\nexport function xyzToLAB(xyz) {\n function xyzToLABHelper(i) {\n if (i > ColorLAB.epsilon) {\n return Math.pow(i, 1 / 3);\n }\n return (ColorLAB.kappa * i + 16) / 116;\n }\n const x = xyzToLABHelper(xyz.x / ColorXYZ.whitePoint.x);\n const y = xyzToLABHelper(xyz.y / ColorXYZ.whitePoint.y);\n const z = xyzToLABHelper(xyz.z / ColorXYZ.whitePoint.z);\n const l = 116 * y - 16;\n const a = 500 * (x - y);\n const b = 200 * (y - z);\n return new ColorLAB(l, a, b);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorRGBA64} to a {@link @microsoft/fast-colors#ColorXYZ}\n * @param rgb - the rgb color to convert\n *\n * @remarks\n * The alpha channel of the input is ignored\n * @public\n */\nexport function rgbToXYZ(rgb) {\n function rgbToXYZHelper(i) {\n if (i <= 0.04045) {\n return i / 12.92;\n }\n return Math.pow((i + 0.055) / 1.055, 2.4);\n }\n const r = rgbToXYZHelper(rgb.r);\n const g = rgbToXYZHelper(rgb.g);\n const b = rgbToXYZHelper(rgb.b);\n const x = r * 0.4124564 + g * 0.3575761 + b * 0.1804375;\n const y = r * 0.2126729 + g * 0.7151522 + b * 0.072175;\n const z = r * 0.0193339 + g * 0.119192 + b * 0.9503041;\n return new ColorXYZ(x, y, z);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorXYZ} to a {@link @microsoft/fast-colors#ColorRGBA64}\n * @param xyz - the xyz color to convert\n * @param alpha - the alpha value\n *\n * @remarks\n * Note that the xyz color space is significantly larger than sRGB. As such, this can return colors rgb values greater than 1 or less than 0\n * @public\n */\nexport function xyzToRGB(xyz, alpha = 1) {\n function xyzToRGBHelper(i) {\n if (i <= 0.0031308) {\n return i * 12.92;\n }\n return 1.055 * Math.pow(i, 1 / 2.4) - 0.055;\n }\n const r = xyzToRGBHelper(xyz.x * 3.2404542 - xyz.y * 1.5371385 - xyz.z * 0.4985314);\n const g = xyzToRGBHelper(xyz.x * -0.969266 + xyz.y * 1.8760108 + xyz.z * 0.041556);\n const b = xyzToRGBHelper(xyz.x * 0.0556434 - xyz.y * 0.2040259 + xyz.z * 1.0572252);\n return new ColorRGBA64(r, g, b, alpha);\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorRGBA64} to a {@link @microsoft/fast-colors#ColorLAB}\n * @param rgb - the rgb color to convert\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function rgbToLAB(rgb) {\n return xyzToLAB(rgbToXYZ(rgb));\n}\n/**\n * Converts a {@link @microsoft/fast-colors#ColorLAB} to a {@link @microsoft/fast-colors#ColorRGBA64}\n * @param lab - the LAB color to convert\n * @param alpha - the alpha value\n *\n * @remarks\n * Note that the xyz color space (which the conversion from LAB uses) is significantly larger than sRGB. As such, this can return colors rgb values greater than 1 or less than 0\n *\n * @public\n */\nexport function labToRGB(lab, alpha = 1) {\n return xyzToRGB(labToXYZ(lab), alpha);\n}\n/**\n * Convert a {@link @microsoft/fast-colors#ColorRGBA64} to a {@link @microsoft/fast-colors#ColorLCH}\n *\n * @param rgb - the rgb color to convert\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function rgbToLCH(rgb) {\n return labToLCH(rgbToLAB(rgb));\n}\n/**\n * Convert a {@link @microsoft/fast-colors#ColorLCH} to a {@link @microsoft/fast-colors#ColorRGBA64}\n * @param lch - the LCH color to convert\n * @param alpha - the alpha value\n *\n * @public\n */\nexport function lchToRGB(lch, alpha = 1) {\n return labToRGB(lchToLAB(lch), alpha);\n}\n/**\n * Converts a color temperature to a {@link @microsoft/fast-colors#ColorRGBA64}\n * @param tempKelvin - the temperature to convert\n * @param alpha - the alpha value\n *\n * @public\n */\nexport function temperatureToRGB(tempKelvin, alpha = 1) {\n // The constants I could find assumed a decimal range of [0,255] for each channel. Just going to put a /255.0 at the end\n let r = 0;\n let g = 0;\n let b = 0;\n if (tempKelvin <= 1000) {\n tempKelvin = 1000;\n }\n else if (tempKelvin >= 40000) {\n tempKelvin = 40000;\n }\n if (tempKelvin < 6600.0) {\n r = 255.0;\n g = tempKelvin / 100.0 - 2.0;\n g =\n -155.25485562709179 -\n 0.44596950469579133 * g +\n 104.49216199393888 * Math.log(g);\n }\n else {\n r = tempKelvin / 100.0 - 55.0;\n r = 351.97690566805693 + 0.114206453784165 * r - 40.25366309332127 * Math.log(r);\n g = tempKelvin / 100.0 - 50.0;\n g = 325.4494125711974 + 0.07943456536662342 * g - 28.0852963507957 * Math.log(g);\n }\n if (tempKelvin >= 6600.0) {\n b = 255.0;\n }\n else if (tempKelvin < 2000.0) {\n b = 0.0;\n }\n else {\n b = tempKelvin / 100.0 - 10;\n b =\n -254.76935184120902 +\n 0.8274096064007395 * b +\n 115.67994401066147 * Math.log(b);\n }\n return new ColorRGBA64(r / 255, g / 255, b / 255, alpha);\n}\n/**\n * Convert a rgb color to a color temperature\n * @param rgb - the color to convert\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function rgbToTemperature(rgb) {\n let t = 0;\n let min = 1000;\n let max = 40000;\n while (max - min > 0.4) {\n t = (max + min) / 2.0;\n const testColor = temperatureToRGB(t);\n if (testColor.b / testColor.r >= rgb.b / rgb.r) {\n max = t;\n }\n else {\n min = t;\n }\n }\n return Math.round(t);\n}\n","import { Swatch } from \"../color\";\n\n/*\n * A color is in \"dark\" if there is more contrast between #000000 and a reference\n * color than #FFFFFF and the reference color. That threshold can be expressed as a relative luminance\n * using the contrast formula as (1 + 0.5) / (R + 0.05) === (R + 0.05) / (0 + 0.05),\n * which reduces to the following, where 'R' is the relative luminance of the reference color\n */\nconst target = (-0.1 + Math.sqrt(0.21)) / 2;\n\n/**\n * Determines if a color should be considered Dark Mode\n * @param color - The color to check to mode of\n * @returns boolean\n */\nexport function isDark(color: Swatch): boolean {\n return color.relativeLuminance <= target;\n}\n\nexport function directionByIsDark(color: Swatch): 1 | -1 {\n return isDark(color) ? -1 : 1;\n}\n","import { directionByIsDark } from \"../utilities/is-dark\";\nimport { RelativeLuminance } from \"./luminance\";\nimport { Palette } from \"./palette\";\nimport { Swatch, SwatchRGB, black, white } from \"./swatch\";\n\nexport enum ContrastTarget {\n Normal = 4.5,\n Large = 7,\n Text = 10\n}\n\nexport class Luminance {\n static getContrast(a: RelativeLuminance, b: RelativeLuminance): number {\n const L1 = a.relativeLuminance > b.relativeLuminance ? a : b;\n const L2 = a.relativeLuminance > b.relativeLuminance ? b : a;\n\n return (L1.relativeLuminance + 0.05) / (L2.relativeLuminance + 0.05);\n }\n\n static toSwatch(luminance: number) {\n return new SwatchRGB(luminance, luminance, luminance);\n }\n}\n\nexport interface InteractiveSet {\n rest: T;\n hover: T;\n active: T;\n focus: T;\n}\n\nexport class InteractiveSwatchSet implements InteractiveSet {\n rest: Swatch;\n hover: Swatch;\n active: Swatch;\n focus: Swatch;\n\n static create(\n palette: Palette,\n reference: Swatch,\n restDelta: number,\n hoverDelta: number,\n activeDelta: number,\n focusDelta: number,\n direction?: -1 | 1 | null\n ): InteractiveSwatchSet {\n const referenceIndex = palette.closestIndexOf(reference);\n if (direction === null || direction === void 0) {\n direction = directionByIsDark(reference);\n }\n\n return {\n rest: palette.get(referenceIndex + direction * restDelta),\n hover: palette.get(referenceIndex + direction * hoverDelta),\n active: palette.get(referenceIndex + direction * activeDelta),\n focus: palette.get(referenceIndex + direction * focusDelta),\n };\n }\n\n static createFromIdealColor(\n palette: Palette,\n idealColor: Swatch,\n reference: Swatch,\n minContrast: number,\n restDelta: number,\n hoverDelta: number,\n activeDelta: number,\n focusDelta: number\n ): InteractiveSwatchSet {\n const idealIndex = palette.closestIndexOf(idealColor);\n const direction = directionByIsDark(reference);\n const startIndex =\n idealIndex +\n (direction === 1\n ? Math.min(restDelta, hoverDelta)\n : Math.max(direction * restDelta, direction * hoverDelta));\n const accessibleSwatch = palette.colorContrast(\n reference,\n minContrast,\n startIndex,\n direction\n );\n const accessibleIndex1 = palette.closestIndexOf(accessibleSwatch);\n const accessibleIndex2 =\n accessibleIndex1 + direction * Math.abs(restDelta - hoverDelta);\n const indexOneIsRestState =\n direction === 1\n ? restDelta < hoverDelta\n : direction * restDelta > direction * hoverDelta;\n\n let restIndex: number;\n let hoverIndex: number;\n\n if (indexOneIsRestState) {\n restIndex = accessibleIndex1;\n hoverIndex = accessibleIndex2;\n } else {\n restIndex = accessibleIndex2;\n hoverIndex = accessibleIndex1;\n }\n\n return {\n rest: palette.get(restIndex),\n hover: palette.get(hoverIndex),\n active: palette.get(restIndex + direction * activeDelta),\n focus: palette.get(restIndex + direction * focusDelta),\n };\n }\n\n static createFromContrast(\n palette: Palette,\n reference: Swatch,\n baseContrast: number,\n restDelta: number,\n hoverDelta: number,\n activeDelta: number,\n focusDelta: number,\n direction?: -1 | 1 | null\n ) {\n if (direction === null || direction === void 0)\n direction = directionByIsDark(reference);\n\n const baseIndex = palette.closestIndexOf(\n palette.colorContrast(reference, baseContrast)\n );\n\n return {\n rest: palette.get(baseIndex + direction * restDelta),\n hover: palette.get(baseIndex + direction * hoverDelta),\n active: palette.get(baseIndex + direction * activeDelta),\n focus: palette.get(baseIndex + direction * focusDelta),\n };\n }\n}\n\nexport function calculateDeltaSwatch(palette: Palette, reference: Swatch, delta: number) {\n return palette.get(\n palette.closestIndexOf(reference) + directionByIsDark(reference) * delta\n );\n}\n\nexport function calculateNeutralLayer(palette: Palette, baseLayerLuminance: number, delta: number = 0): Swatch {\n const neutralLayer1Index = palette.closestIndexOf(Luminance.toSwatch(baseLayerLuminance));\n return palette.get(neutralLayer1Index + delta);\n}\n\nexport function calculateFocusStrokeOuter(palette: Palette, reference: Swatch): Swatch {\n return palette.colorContrast(reference, 5.5);\n}\n\nexport function calculateFocusStrokeInner(palette: Palette, reference: Swatch, focusColor: Swatch): Swatch {\n return palette.colorContrast(\n focusColor,\n 3.5,\n palette.closestIndexOf(palette.source),\n (directionByIsDark(reference) * -1) as 1 | -1\n );\n}\n\nexport function calculateForegroundOnColor(reference: Swatch, contrastTarget: number) {\n return reference.contrast(white) >= contrastTarget ? white : black;\n}\n","import { ColorRGBA64, rgbToRelativeLuminance } from \"@microsoft/fast-colors\";\nimport { RelativeLuminance } from \"./luminance\";\nimport { Luminance } from \"./recipe\";\n\n/**\n * Represents a color in a {@link Palette}.\n */\nexport interface Swatch extends RelativeLuminance {\n toColorString(): string;\n contrast(target: RelativeLuminance): number;\n}\n\n/**\n * A concrete implementation of {@link Swatch} with red, green, and blue 64bit color channels.\n * */\nexport class SwatchRGB extends ColorRGBA64 implements Swatch {\n readonly relativeLuminance: number;\n r: number;\n g: number;\n b: number;\n\n /**\n *\n * @param red - Red channel expressed as a number between 0 and 1\n * @param green - Green channel expressed as a number between 0 and 1\n * @param blue - Blue channel expressed as a number between 0 and 1\n */\n constructor(red: number, green: number, blue: number) {\n super(red, green, blue, 1);\n this.relativeLuminance = rgbToRelativeLuminance(this);\n }\n\n public toColorString = this.toStringHexRGB;\n public contrast = Luminance.getContrast.bind(null, this);\n public createCSS = this.toColorString;\n\n static fromObject(obj: { r: number; g: number; b: number }): SwatchRGB {\n return new SwatchRGB(obj.r, obj.g, obj.b);\n }\n}\n\nexport const white = new SwatchRGB(1, 1, 1);\nexport const black = new SwatchRGB(0, 0, 0);\n","import { hslToRGB, hsvToRGB, labToRGB, lchToRGB, rgbToHSL, rgbToHSV, rgbToLAB, rgbToLCH, rgbToXYZ, xyzToRGB, } from \"./color-converters.js\";\nimport { ColorHSL } from \"./color-hsl.js\";\nimport { ColorHSV } from \"./color-hsv.js\";\nimport { ColorLAB } from \"./color-lab.js\";\nimport { ColorLCH } from \"./color-lch.js\";\nimport { ColorRGBA64 } from \"./color-rgba-64.js\";\nimport { ColorXYZ } from \"./color-xyz.js\";\nimport { lerp, lerpAnglesInDegrees } from \"./math-utilities.js\";\n/**\n * Interpolate by RGB color space\n *\n * @public\n */\nexport function interpolateRGB(position, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n return new ColorRGBA64(lerp(position, left.r, right.r), lerp(position, left.g, right.g), lerp(position, left.b, right.b), lerp(position, left.a, right.a));\n}\n/**\n * Interpolate by HSL color space\n *\n * @public\n */\nexport function interpolateHSL(position, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n return new ColorHSL(lerpAnglesInDegrees(position, left.h, right.h), lerp(position, left.s, right.s), lerp(position, left.l, right.l));\n}\n/**\n * Interpolate by HSV color space\n *\n * @public\n */\nexport function interpolateHSV(position, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n return new ColorHSV(lerpAnglesInDegrees(position, left.h, right.h), lerp(position, left.s, right.s), lerp(position, left.v, right.v));\n}\n/**\n * Interpolate by XYZ color space\n *\n * @public\n */\nexport function interpolateXYZ(position, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n return new ColorXYZ(lerp(position, left.x, right.x), lerp(position, left.y, right.y), lerp(position, left.z, right.z));\n}\n/**\n * Interpolate by LAB color space\n *\n * @public\n */\nexport function interpolateLAB(position, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n return new ColorLAB(lerp(position, left.l, right.l), lerp(position, left.a, right.a), lerp(position, left.b, right.b));\n}\n/**\n * Interpolate by LCH color space\n *\n * @public\n */\nexport function interpolateLCH(position, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n return new ColorLCH(lerp(position, left.l, right.l), lerp(position, left.c, right.c), lerpAnglesInDegrees(position, left.h, right.h));\n}\n/**\n * Color interpolation spaces\n *\n * @public\n */\nexport var ColorInterpolationSpace;\n(function (ColorInterpolationSpace) {\n ColorInterpolationSpace[ColorInterpolationSpace[\"RGB\"] = 0] = \"RGB\";\n ColorInterpolationSpace[ColorInterpolationSpace[\"HSL\"] = 1] = \"HSL\";\n ColorInterpolationSpace[ColorInterpolationSpace[\"HSV\"] = 2] = \"HSV\";\n ColorInterpolationSpace[ColorInterpolationSpace[\"XYZ\"] = 3] = \"XYZ\";\n ColorInterpolationSpace[ColorInterpolationSpace[\"LAB\"] = 4] = \"LAB\";\n ColorInterpolationSpace[ColorInterpolationSpace[\"LCH\"] = 5] = \"LCH\";\n})(ColorInterpolationSpace || (ColorInterpolationSpace = {}));\n/**\n * Interpolate by color space\n *\n * @public\n */\nexport function interpolateByColorSpace(position, space, left, right) {\n if (isNaN(position) || position <= 0) {\n return left;\n }\n else if (position >= 1) {\n return right;\n }\n switch (space) {\n case ColorInterpolationSpace.HSL:\n return hslToRGB(interpolateHSL(position, rgbToHSL(left), rgbToHSL(right)));\n case ColorInterpolationSpace.HSV:\n return hsvToRGB(interpolateHSV(position, rgbToHSV(left), rgbToHSV(right)));\n case ColorInterpolationSpace.XYZ:\n return xyzToRGB(interpolateXYZ(position, rgbToXYZ(left), rgbToXYZ(right)));\n case ColorInterpolationSpace.LAB:\n return labToRGB(interpolateLAB(position, rgbToLAB(left), rgbToLAB(right)));\n case ColorInterpolationSpace.LCH:\n return lchToRGB(interpolateLCH(position, rgbToLCH(left), rgbToLCH(right)));\n default:\n return interpolateRGB(position, left, right);\n }\n}\n","import { hslToRGB, labToRGB, lchToRGB, rgbToHSL, rgbToLAB, rgbToLCH, } from \"./color-converters.js\";\nimport { ColorHSL } from \"./color-hsl.js\";\nimport { ColorLAB } from \"./color-lab.js\";\nimport { ColorLCH } from \"./color-lch.js\";\nimport { ColorRGBA64 } from \"./color-rgba-64.js\";\nimport { clamp } from \"./math-utilities.js\";\n/**\n * Saturate a color using LCH color space\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function saturateViaLCH(input, saturation, saturationConstant = 18) {\n const lch = rgbToLCH(input);\n let sat = lch.c + saturation * saturationConstant;\n if (sat < 0) {\n sat = 0;\n }\n return lchToRGB(new ColorLCH(lch.l, sat, lch.h));\n}\n/**\n * De-saturate a color using LCH color space\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function desaturateViaLCH(input, saturation, saturationConstant = 18) {\n return saturateViaLCH(input, -1 * saturation, saturationConstant);\n}\n/**\n * Darken a color using LAB color space\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function darkenViaLAB(input, amount, darkenConstant = 18) {\n const lab = rgbToLAB(input);\n const darkened = lab.l - amount * darkenConstant;\n return labToRGB(new ColorLAB(darkened, lab.a, lab.b));\n}\n/**\n * Lighten a color using LAB color space\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function lightenViaLAB(input, amount, darkenConstant = 18) {\n return darkenViaLAB(input, -1 * amount, darkenConstant);\n}\n/**\n * @public\n */\nexport function blendBurnChannel(bottom, top) {\n if (top === 0.0) {\n // Despite the discontinuity, other sources seem to use 0.0 here instead of 1\n return 0.0;\n }\n return 1.0 - (1.0 - bottom) / top;\n}\n/**\n * Blends two colors with the burn mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendBurn(bottom, top) {\n return new ColorRGBA64(blendBurnChannel(bottom.r, top.r), blendBurnChannel(bottom.g, top.g), blendBurnChannel(bottom.b, top.b), 1);\n}\n/**\n * Blends two colors\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendColor(bottom, top) {\n const bottomHSL = rgbToHSL(bottom);\n const topHSL = rgbToHSL(top);\n if (topHSL.s === 0) {\n return new ColorRGBA64(bottomHSL.l, bottomHSL.l, bottomHSL.l, 1);\n }\n return hslToRGB(new ColorHSL(topHSL.h, topHSL.s, bottomHSL.l));\n}\n/**\n * @public\n */\nexport function blendDarkenChannel(bottom, top) {\n return Math.min(bottom, top);\n}\n/**\n * Blends two colors with the darken mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendDarken(bottom, top) {\n return new ColorRGBA64(blendDarkenChannel(bottom.r, top.r), blendDarkenChannel(bottom.g, top.g), blendDarkenChannel(bottom.b, top.b), 1);\n}\n/**\n * @public\n */\nexport function blendDodgeChannel(bottom, top) {\n if (top >= 1.0) {\n return 1.0;\n }\n const retVal = bottom / (1.0 - top);\n if (retVal >= 1.0) {\n return 1.0;\n }\n return retVal;\n}\n/**\n * Blends two colors with the dodge mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendDodge(bottom, top) {\n return new ColorRGBA64(blendDodgeChannel(bottom.r, top.r), blendDodgeChannel(bottom.g, top.g), blendDodgeChannel(bottom.b, top.b), 1);\n}\n/**\n * @public\n */\nexport function blendLightenChannel(bottom, top) {\n return Math.max(bottom, top);\n}\n/**\n * Blends two colors with the lighten mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendLighten(bottom, top) {\n return new ColorRGBA64(blendLightenChannel(bottom.r, top.r), blendLightenChannel(bottom.g, top.g), blendLightenChannel(bottom.b, top.b), 1);\n}\n/**\n * @public\n */\nexport function blendMultiplyChannel(bottom, top) {\n return bottom * top;\n}\n/**\n * Blends two colors with the multiply mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendMultiply(bottom, top) {\n return new ColorRGBA64(blendMultiplyChannel(bottom.r, top.r), blendMultiplyChannel(bottom.g, top.g), blendMultiplyChannel(bottom.b, top.b), 1);\n}\n/**\n * @public\n */\nexport function blendOverlayChannel(bottom, top) {\n if (bottom < 0.5) {\n return clamp(2.0 * top * bottom, 0, 1);\n }\n return clamp(1.0 - 2.0 * (1.0 - top) * (1.0 - bottom), 0, 1);\n}\n/**\n * Blends two colors with the overlay mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendOverlay(bottom, top) {\n return new ColorRGBA64(blendOverlayChannel(bottom.r, top.r), blendOverlayChannel(bottom.g, top.g), blendOverlayChannel(bottom.b, top.b), 1);\n}\n/**\n * @public\n */\nexport function blendScreenChannel(bottom, top) {\n return 1.0 - (1.0 - top) * (1.0 - bottom);\n}\n/**\n * Blends two colors with the screen mode\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blendScreen(bottom, top) {\n return new ColorRGBA64(blendScreenChannel(bottom.r, top.r), blendScreenChannel(bottom.g, top.g), blendScreenChannel(bottom.b, top.b), 1);\n}\n/**\n * Color blend modes.\n * @public\n */\nexport var ColorBlendMode;\n(function (ColorBlendMode) {\n ColorBlendMode[ColorBlendMode[\"Burn\"] = 0] = \"Burn\";\n ColorBlendMode[ColorBlendMode[\"Color\"] = 1] = \"Color\";\n ColorBlendMode[ColorBlendMode[\"Darken\"] = 2] = \"Darken\";\n ColorBlendMode[ColorBlendMode[\"Dodge\"] = 3] = \"Dodge\";\n ColorBlendMode[ColorBlendMode[\"Lighten\"] = 4] = \"Lighten\";\n ColorBlendMode[ColorBlendMode[\"Multiply\"] = 5] = \"Multiply\";\n ColorBlendMode[ColorBlendMode[\"Overlay\"] = 6] = \"Overlay\";\n ColorBlendMode[ColorBlendMode[\"Screen\"] = 7] = \"Screen\";\n})(ColorBlendMode || (ColorBlendMode = {}));\n/**\n * Blend two colors.\n *\n * @remarks\n * The alpha channel of the input is ignored\n *\n * @public\n */\nexport function blend(mode, bottom, top) {\n switch (mode) {\n case ColorBlendMode.Burn:\n return blendBurn(bottom, top);\n case ColorBlendMode.Color:\n return blendColor(bottom, top);\n case ColorBlendMode.Darken:\n return blendDarken(bottom, top);\n case ColorBlendMode.Dodge:\n return blendDodge(bottom, top);\n case ColorBlendMode.Lighten:\n return blendLighten(bottom, top);\n case ColorBlendMode.Multiply:\n return blendMultiply(bottom, top);\n case ColorBlendMode.Overlay:\n return blendOverlay(bottom, top);\n case ColorBlendMode.Screen:\n return blendScreen(bottom, top);\n default:\n throw new Error(\"Unknown blend mode\");\n }\n}\n/**\n * Alpha channel of bottom is ignored\n * The returned color always has an alpha channel of 1\n * Different programs (eg: paint.net, photoshop) will give different answers than this occasionally but within +/- 1/255 in each channel. Just depends on the details of how they round off decimals\n *\n * @public\n */\nexport function computeAlphaBlend(bottom, top) {\n if (top.a >= 1) {\n return top;\n }\n else if (top.a <= 0) {\n return new ColorRGBA64(bottom.r, bottom.g, bottom.b, 1);\n }\n const r = top.a * top.r + (1 - top.a) * bottom.r;\n const g = top.a * top.g + (1 - top.a) * bottom.g;\n const b = top.a * top.b + (1 - top.a) * bottom.b;\n return new ColorRGBA64(r, g, b, 1);\n}\n","import { contrastRatio } from \"./color-converters.js\";\nimport { ColorInterpolationSpace, interpolateByColorSpace, } from \"./color-interpolation.js\";\n/**\n * A color scale created from linear stops\n * @public\n */\nexport class ColorScale {\n constructor(stops) {\n if (stops == null || stops.length === 0) {\n throw new Error(\"The stops argument must be non-empty\");\n }\n else {\n this.stops = this.sortColorScaleStops(stops);\n }\n }\n static createBalancedColorScale(colors) {\n if (colors == null || colors.length === 0) {\n throw new Error(\"The colors argument must be non-empty\");\n }\n const stops = new Array(colors.length);\n for (let i = 0; i < colors.length; i++) {\n // Special case first and last in order to avoid floating point jaggies\n if (i === 0) {\n stops[i] = { color: colors[i], position: 0 };\n }\n else if (i === colors.length - 1) {\n stops[i] = { color: colors[i], position: 1 };\n }\n else {\n stops[i] = {\n color: colors[i],\n position: i * (1 / (colors.length - 1)),\n };\n }\n }\n return new ColorScale(stops);\n }\n getColor(position, interpolationMode = ColorInterpolationSpace.RGB) {\n if (this.stops.length === 1) {\n return this.stops[0].color;\n }\n else if (position <= 0) {\n return this.stops[0].color;\n }\n else if (position >= 1) {\n return this.stops[this.stops.length - 1].color;\n }\n let lowerIndex = 0;\n for (let i = 0; i < this.stops.length; i++) {\n if (this.stops[i].position <= position) {\n lowerIndex = i;\n }\n }\n let upperIndex = lowerIndex + 1;\n if (upperIndex >= this.stops.length) {\n upperIndex = this.stops.length - 1;\n }\n const scalePosition = (position - this.stops[lowerIndex].position) *\n (1.0 / (this.stops[upperIndex].position - this.stops[lowerIndex].position));\n return interpolateByColorSpace(scalePosition, interpolationMode, this.stops[lowerIndex].color, this.stops[upperIndex].color);\n }\n trim(lowerBound, upperBound, interpolationMode = ColorInterpolationSpace.RGB) {\n if (lowerBound < 0 || upperBound > 1 || upperBound < lowerBound) {\n throw new Error(\"Invalid bounds\");\n }\n if (lowerBound === upperBound) {\n return new ColorScale([\n { color: this.getColor(lowerBound, interpolationMode), position: 0 },\n ]);\n }\n const containedStops = [];\n for (let i = 0; i < this.stops.length; i++) {\n if (this.stops[i].position >= lowerBound &&\n this.stops[i].position <= upperBound) {\n containedStops.push(this.stops[i]);\n }\n }\n if (containedStops.length === 0) {\n return new ColorScale([\n { color: this.getColor(lowerBound), position: lowerBound },\n { color: this.getColor(upperBound), position: upperBound },\n ]);\n }\n if (containedStops[0].position !== lowerBound) {\n containedStops.unshift({\n color: this.getColor(lowerBound),\n position: lowerBound,\n });\n }\n if (containedStops[containedStops.length - 1].position !== upperBound) {\n containedStops.push({\n color: this.getColor(upperBound),\n position: upperBound,\n });\n }\n const range = upperBound - lowerBound;\n const finalStops = new Array(containedStops.length);\n for (let i = 0; i < containedStops.length; i++) {\n finalStops[i] = {\n color: containedStops[i].color,\n position: (containedStops[i].position - lowerBound) / range,\n };\n }\n return new ColorScale(finalStops);\n }\n findNextColor(position, contrast, searchDown = false, interpolationMode = ColorInterpolationSpace.RGB, contrastErrorMargin = 0.005, maxSearchIterations = 32) {\n if (isNaN(position) || position <= 0) {\n position = 0;\n }\n else if (position >= 1) {\n position = 1;\n }\n const startingColor = this.getColor(position, interpolationMode);\n const finalPosition = searchDown ? 0 : 1;\n const finalColor = this.getColor(finalPosition, interpolationMode);\n const finalContrast = contrastRatio(startingColor, finalColor);\n if (finalContrast <= contrast) {\n return finalPosition;\n }\n let testRangeMin = searchDown ? 0 : position;\n let testRangeMax = searchDown ? position : 0;\n let mid = finalPosition;\n let iterations = 0;\n while (iterations <= maxSearchIterations) {\n mid = Math.abs(testRangeMax - testRangeMin) / 2 + testRangeMin;\n const midColor = this.getColor(mid, interpolationMode);\n const midContrast = contrastRatio(startingColor, midColor);\n if (Math.abs(midContrast - contrast) <= contrastErrorMargin) {\n return mid;\n }\n else if (midContrast > contrast) {\n if (searchDown) {\n testRangeMin = mid;\n }\n else {\n testRangeMax = mid;\n }\n }\n else {\n if (searchDown) {\n testRangeMax = mid;\n }\n else {\n testRangeMin = mid;\n }\n }\n iterations++;\n }\n return mid;\n }\n clone() {\n const newStops = new Array(this.stops.length);\n for (let i = 0; i < newStops.length; i++) {\n newStops[i] = {\n color: this.stops[i].color,\n position: this.stops[i].position,\n };\n }\n return new ColorScale(newStops);\n }\n sortColorScaleStops(stops) {\n return stops.sort((a, b) => {\n const A = a.position;\n const B = b.position;\n if (A < B) {\n return -1;\n }\n else if (A > B) {\n return 1;\n }\n else {\n return 0;\n }\n });\n }\n}\n","import { blendMultiply, blendOverlay, saturateViaLCH } from \"./color-blending.js\";\nimport { rgbToHSL } from \"./color-converters.js\";\nimport { ColorInterpolationSpace, interpolateByColorSpace, } from \"./color-interpolation.js\";\nimport { ColorRGBA64 } from \"./color-rgba-64.js\";\nimport { ColorScale } from \"./color-scale.js\";\nimport { parseColorHexRGB } from \"./parse-color.js\";\n/**\n * Generates a color palette\n * @public\n */\nexport class ColorPalette {\n constructor(config) {\n this.config = Object.assign({}, ColorPalette.defaultPaletteConfig, config);\n this.palette = [];\n this.updatePaletteColors();\n }\n updatePaletteGenerationValues(newConfig) {\n let changed = false;\n for (const key in newConfig) {\n if (this.config[key]) {\n if (this.config[key].equalValue) {\n if (!this.config[key].equalValue(newConfig[key])) {\n this.config[key] = newConfig[key];\n changed = true;\n }\n }\n else {\n if (newConfig[key] !== this.config[key]) {\n this.config[key] = newConfig[key];\n changed = true;\n }\n }\n }\n }\n if (changed) {\n this.updatePaletteColors();\n }\n return changed;\n }\n updatePaletteColors() {\n const scale = this.generatePaletteColorScale();\n for (let i = 0; i < this.config.steps; i++) {\n this.palette[i] = scale.getColor(i / (this.config.steps - 1), this.config.interpolationMode);\n }\n }\n generatePaletteColorScale() {\n // Even when config.baseScalePosition is specified, using 0.5 for the baseColor\n // in the baseScale gives better results. Otherwise very off-center palettes\n // tend to go completely grey at the end furthest from the specified base color.\n const baseColorHSL = rgbToHSL(this.config.baseColor);\n const baseScale = new ColorScale([\n { position: 0, color: this.config.scaleColorLight },\n { position: 0.5, color: this.config.baseColor },\n { position: 1, color: this.config.scaleColorDark },\n ]);\n const trimmedScale = baseScale.trim(this.config.clipLight, 1 - this.config.clipDark);\n const trimmedLight = trimmedScale.getColor(0);\n const trimmedDark = trimmedScale.getColor(1);\n let adjustedLight = trimmedLight;\n let adjustedDark = trimmedDark;\n if (baseColorHSL.s >= this.config.saturationAdjustmentCutoff) {\n adjustedLight = saturateViaLCH(adjustedLight, this.config.saturationLight);\n adjustedDark = saturateViaLCH(adjustedDark, this.config.saturationDark);\n }\n if (this.config.multiplyLight !== 0) {\n const multiply = blendMultiply(this.config.baseColor, adjustedLight);\n adjustedLight = interpolateByColorSpace(this.config.multiplyLight, this.config.interpolationMode, adjustedLight, multiply);\n }\n if (this.config.multiplyDark !== 0) {\n const multiply = blendMultiply(this.config.baseColor, adjustedDark);\n adjustedDark = interpolateByColorSpace(this.config.multiplyDark, this.config.interpolationMode, adjustedDark, multiply);\n }\n if (this.config.overlayLight !== 0) {\n const overlay = blendOverlay(this.config.baseColor, adjustedLight);\n adjustedLight = interpolateByColorSpace(this.config.overlayLight, this.config.interpolationMode, adjustedLight, overlay);\n }\n if (this.config.overlayDark !== 0) {\n const overlay = blendOverlay(this.config.baseColor, adjustedDark);\n adjustedDark = interpolateByColorSpace(this.config.overlayDark, this.config.interpolationMode, adjustedDark, overlay);\n }\n if (this.config.baseScalePosition) {\n if (this.config.baseScalePosition <= 0) {\n return new ColorScale([\n { position: 0, color: this.config.baseColor },\n { position: 1, color: adjustedDark.clamp() },\n ]);\n }\n else if (this.config.baseScalePosition >= 1) {\n return new ColorScale([\n { position: 0, color: adjustedLight.clamp() },\n { position: 1, color: this.config.baseColor },\n ]);\n }\n return new ColorScale([\n { position: 0, color: adjustedLight.clamp() },\n {\n position: this.config.baseScalePosition,\n color: this.config.baseColor,\n },\n { position: 1, color: adjustedDark.clamp() },\n ]);\n }\n return new ColorScale([\n { position: 0, color: adjustedLight.clamp() },\n { position: 0.5, color: this.config.baseColor },\n { position: 1, color: adjustedDark.clamp() },\n ]);\n }\n}\nColorPalette.defaultPaletteConfig = {\n baseColor: parseColorHexRGB(\"#808080\"),\n steps: 11,\n interpolationMode: ColorInterpolationSpace.RGB,\n scaleColorLight: new ColorRGBA64(1, 1, 1, 1),\n scaleColorDark: new ColorRGBA64(0, 0, 0, 1),\n clipLight: 0.185,\n clipDark: 0.16,\n saturationAdjustmentCutoff: 0.05,\n saturationLight: 0.35,\n saturationDark: 1.25,\n overlayLight: 0,\n overlayDark: 0.25,\n multiplyLight: 0,\n multiplyDark: 0,\n baseScalePosition: 0.5,\n};\nColorPalette.greyscalePaletteConfig = {\n baseColor: parseColorHexRGB(\"#808080\"),\n steps: 11,\n interpolationMode: ColorInterpolationSpace.RGB,\n scaleColorLight: new ColorRGBA64(1, 1, 1, 1),\n scaleColorDark: new ColorRGBA64(0, 0, 0, 1),\n clipLight: 0,\n clipDark: 0,\n saturationAdjustmentCutoff: 0,\n saturationLight: 0,\n saturationDark: 0,\n overlayLight: 0,\n overlayDark: 0,\n multiplyLight: 0,\n multiplyDark: 0,\n baseScalePosition: 0.5,\n};\n/**\n * Takes the input color and compares it to each color in the reference array to find the index with the closest Lightness value in HSL color space\n * @public\n */\nexport function matchLightnessIndex(input, reference) {\n const hsl = rgbToHSL(input);\n let bestFitValue = Number.MAX_VALUE;\n let bestFitIndex = 0;\n for (let i = 0; i < reference.length; i++) {\n const ihsl = rgbToHSL(reference[i]);\n const fitValue = Math.abs(ihsl.l - hsl.l);\n if (fitValue < bestFitValue) {\n bestFitValue = fitValue;\n bestFitIndex = i;\n }\n }\n return bestFitIndex;\n}\n/**\n * Generates a greyscale palette using greyscaleConfig. The Lightness (in HSL) of the input color is then compared to the greyscale palette to determine how far off center the input color should be placed. The output palette is then generated with outputSteps number of steps using colorConfig.\n * @public\n */\nexport function generateOffCenterPalette(input, outputSteps, greyscaleConfig = ColorPalette.greyscalePaletteConfig, colorConfig = ColorPalette.defaultPaletteConfig) {\n const greyscale = new ColorPalette(Object.assign(Object.assign({}, greyscaleConfig), { steps: outputSteps }));\n const scaleIndex = matchLightnessIndex(input, greyscale.palette);\n return new ColorPalette(Object.assign(Object.assign({}, colorConfig), { steps: outputSteps, baseColor: input, baseScalePosition: scaleIndex / (outputSteps - 1) }));\n}\n/**\n * Take the input array of colors and extrapolates them to a larger palette of size targetSize. If preserveInputColors is false the input colors are evenly distributed into the output. Otherwise, the positions of the input colors are adjusted from a perfectly even distribution in order to ensure that the exact color values appearing in the input array also appear in the output array. The larger targetSize is compared to input.length the smaller those adjustments will be.\n *\n * @public\n */\nexport function rescale(input, targetSize, preserveInputColors) {\n if (input.length <= 1 || targetSize <= 1) {\n throw new Error(\"The input array and targetSize must both be greater than 1\");\n }\n if (preserveInputColors && targetSize <= input.length) {\n throw new Error(\"If preserveInputColors is true then targetSize must be greater than the length of the input array\");\n }\n const stops = new Array(input.length);\n if (preserveInputColors) {\n for (let i = 0; i < input.length; i++) {\n const p = i / (input.length - 1);\n let bestFitValue = 2;\n let bestFitIndex = 0;\n for (let j = 0; j < targetSize; j++) {\n const fitValue = Math.abs(j / (targetSize - 1) - p);\n if (fitValue < bestFitValue) {\n bestFitValue = fitValue;\n bestFitIndex = j;\n }\n if (fitValue === 0) {\n break;\n }\n }\n stops[i] = {\n color: input[i],\n position: bestFitIndex / (targetSize - 1),\n };\n }\n }\n else {\n for (let i = 0; i < stops.length; i++) {\n stops[i] = { color: input[i], position: i / (input.length - 1) };\n }\n }\n const scale = new ColorScale(stops);\n const retVal = new Array(targetSize);\n for (let i = 0; i < targetSize; i++) {\n retVal[i] = scale.getColor(i / (targetSize - 1));\n }\n return retVal;\n}\n/**\n * @public\n */\nexport const defaultCenteredRescaleConfig = {\n targetSize: 63,\n spacing: 4,\n scaleColorLight: ColorPalette.defaultPaletteConfig.scaleColorLight,\n scaleColorDark: ColorPalette.defaultPaletteConfig.scaleColorDark,\n};\n/**\n * Takes an input array of colors and extrapolates them to a larger palette. The mapping first takes the input array and extrapolates between each color so that they are separated by spacing-1 slots. Then it adds to either end enough new colors to make up the desired targetSize. All output color slots between the defined stops are interpolated.\n * @example\n * For an input array with length 5, a targetSize of 17 and spacing of 3 the output would be:\n * 0: scaleColorLight\n * 1:\n * 2: input 0\n * 3:\n * 4:\n * 5: input 1\n * 6:\n * 7:\n * 8: input 2\n * 9:\n * 10:\n * 11: input 3\n * 12:\n * 13:\n * 14: input 4\n * 15:\n * 16: scaleColorDark\n *\n * @public\n */\nexport function centeredRescale(input, config = defaultCenteredRescaleConfig) {\n if (input.length === 0) {\n return [];\n }\n const offset = Math.floor((config.targetSize - ((input.length - 1) * config.spacing + 1)) / 2);\n if (offset < 0) {\n throw new Error(\"(targetSize - ((input.length - 1) * spacing + 1)) / 2 must be >= 0\");\n }\n const stops = new Array(input.length + 2);\n stops[0] = { position: 0, color: config.scaleColorLight };\n stops[stops.length - 1] = {\n position: 1,\n color: config.scaleColorDark,\n };\n for (let i = 0; i < input.length; i++) {\n stops[i + 1] = {\n color: input[i],\n position: (i * config.spacing + offset) / (config.targetSize - 1),\n };\n }\n const scale = new ColorScale(stops);\n const retVal = new Array(config.targetSize);\n for (let i = 0; i < config.targetSize; i++) {\n retVal[i] = scale.getColor(i / (config.targetSize - 1));\n }\n return retVal;\n}\n/**\n * Generates two palettes of length shortPaletteLength and longPaletteLength from a base color. The base color is compared to the default greyscale palette to determine where it should be placed. The short palette is then fed into centeredRescale to create the long palette. The colors in the short palette are always contained within the long.\n * @public\n */\nexport function generateScaledPalettes(input, shortPaletteLength = 11, config = defaultCenteredRescaleConfig) {\n const shortPalette = generateOffCenterPalette(input, shortPaletteLength);\n const longPalette = centeredRescale(shortPalette.palette, config);\n return { short: shortPalette.palette, long: longPalette };\n}\n","import { ColorRGBA64 } from \"./color-rgba-64.js\";\nimport { ColorPalette } from \"./color-palette.js\";\nimport { hslToRGB, rgbToHSL, rgbToLinearLuminance } from \"./color-converters.js\";\nimport { ColorScale } from \"./color-scale.js\";\nimport { ColorHSL } from \"./color-hsl.js\";\nimport { ColorInterpolationSpace } from \"./color-interpolation.js\";\nimport { parseColorHexRGB } from \"./parse-color.js\";\n/**\n * Creates a color palette for UI components\n * @public\n */\nexport class ComponentStateColorPalette {\n constructor(config) {\n this.palette = [];\n this.config = Object.assign({}, ComponentStateColorPalette.defaultPaletteConfig, config);\n this.regenPalettes();\n }\n regenPalettes() {\n let steps = this.config.steps;\n if (isNaN(steps) || steps < 3) {\n steps = 3;\n }\n // This palette is tuned to go as dark as differences between the levels can be perceived according to tests\n // on numerous monitors in different conditions. Stay linear from white until this first cutoff.\n const darkLum = 0.14;\n // In the dark compression, this is the last luminance value before full black.\n const darkestLum = 0.06;\n // The Color for the luminance value above, placed on the ramp at it's normal position, so darker colors after\n // it can be compressed.\n const darkLumColor = new ColorRGBA64(darkLum, darkLum, darkLum, 1);\n // The number of steps in the ramp that has been tuned for default use. This coincides with the size of the\n // default ramp, but the palette could be generated with fewer steps to increase final contrast. This number\n // should however stay the same.\n const stepsForLuminanceRamp = 94;\n // Create the reference, dark-compressed, grey palette, like:\n // F------------------------------------------------------------------------------------[dark]------[darkest]0\n // |--compressed area--|\n const r = new ColorPalette(Object.assign(Object.assign({}, ColorPalette.greyscalePaletteConfig), { baseColor: darkLumColor, baseScalePosition: ((1 - darkLum) * 100) / stepsForLuminanceRamp, steps }));\n const referencePalette = r.palette;\n // Find the requested base color on the adjusted luminance reference ramp.\n // There is no _right_ way to desaturate a color, and both methods we've tested have value, so average them out.\n const baseColorLum1 = rgbToLinearLuminance(this.config.baseColor);\n const baseColorLum2 = rgbToHSL(this.config.baseColor).l;\n const baseColorLum = (baseColorLum1 + baseColorLum2) / 2;\n const baseColorRefIndex = this.matchRelativeLuminanceIndex(baseColorLum, referencePalette);\n const baseColorPercent = baseColorRefIndex / (steps - 1);\n // Find the luminance location for the dark cutoff.\n const darkRefIndex = this.matchRelativeLuminanceIndex(darkLum, referencePalette);\n const darkPercent = darkRefIndex / (steps - 1);\n // Issue https://github.com/microsoft/fast/issues/1904\n // Creating a color from H, S, and a known L value is not the inverse of getting the relative\n // luminace as above. Need to derive a relative luminance version of the color to better match on the dark end.\n // Find the dark cutoff and darkest variations of the requested base color.\n const baseColorHSL = rgbToHSL(this.config.baseColor);\n const darkBaseColor = hslToRGB(ColorHSL.fromObject({\n h: baseColorHSL.h,\n s: baseColorHSL.s,\n l: darkLum,\n }));\n const darkestBaseColor = hslToRGB(ColorHSL.fromObject({\n h: baseColorHSL.h,\n s: baseColorHSL.s,\n l: darkestLum,\n }));\n // Create the gradient stops, including the base color and anchor colors for the dark end compression.\n const fullColorScaleStops = new Array(5);\n fullColorScaleStops[0] = {\n position: 0,\n color: new ColorRGBA64(1, 1, 1, 1),\n };\n fullColorScaleStops[1] = {\n position: baseColorPercent,\n color: this.config.baseColor,\n };\n fullColorScaleStops[2] = {\n position: darkPercent,\n color: darkBaseColor,\n };\n fullColorScaleStops[3] = {\n position: 0.99,\n color: darkestBaseColor,\n };\n fullColorScaleStops[4] = {\n position: 1,\n color: new ColorRGBA64(0, 0, 0, 1),\n };\n const scale = new ColorScale(fullColorScaleStops);\n // Create the palette.\n this.palette = new Array(steps);\n for (let i = 0; i < steps; i++) {\n const c = scale.getColor(i / (steps - 1), ColorInterpolationSpace.RGB);\n this.palette[i] = c;\n }\n }\n matchRelativeLuminanceIndex(input, reference) {\n let bestFitValue = Number.MAX_VALUE;\n let bestFitIndex = 0;\n let i = 0;\n const referenceLength = reference.length;\n for (; i < referenceLength; i++) {\n const fitValue = Math.abs(rgbToLinearLuminance(reference[i]) - input);\n if (fitValue < bestFitValue) {\n bestFitValue = fitValue;\n bestFitIndex = i;\n }\n }\n return bestFitIndex;\n }\n}\nComponentStateColorPalette.defaultPaletteConfig = {\n baseColor: parseColorHexRGB(\"#808080\"),\n steps: 94,\n};\n"," export function binarySearch(\n valuesToSearch: T[] | ReadonlyArray,\n searchCondition: (value: T) => boolean,\n startIndex: number = 0,\n endIndex: number = valuesToSearch.length - 1\n): T {\n if (endIndex === startIndex) {\n return valuesToSearch[startIndex];\n }\n\n const middleIndex: number = Math.floor((endIndex - startIndex) / 2) + startIndex;\n\n // Check to see if this passes on the item in the center of the array\n // if it does check the previous values\n return searchCondition(valuesToSearch[middleIndex])\n ? binarySearch(\n valuesToSearch,\n searchCondition,\n startIndex,\n middleIndex // include this index because it passed the search condition\n )\n : binarySearch(\n valuesToSearch,\n searchCondition,\n middleIndex + 1, // exclude this index because it failed the search condition\n endIndex\n );\n}\n","import { clamp, ColorHSL, ColorLAB, ColorRGBA64, ComponentStateColorPalette, hslToRGB, interpolateRGB, labToRGB, parseColorHexRGB, rgbToHSL, rgbToLAB, roundToPrecisionSmall } from \"@microsoft/fast-colors\";\nimport { binarySearch } from \"../utilities/binary-search\";\nimport { directionByIsDark } from \"../utilities/is-dark\";\nimport { RelativeLuminance } from \"./luminance\";\nimport { Luminance } from \"./recipe\";\nimport { Swatch, SwatchRGB } from \"./swatch\";\n\nexport interface Palette {\n readonly source: T;\n readonly swatches: ReadonlyArray;\n\n /**\n * Returns a swatch from the palette that most closely matches\n * the contrast ratio provided to a provided reference.\n */\n colorContrast(\n reference: Swatch,\n contrast: number,\n initialIndex?: number,\n direction?: 1 | -1\n ): T;\n\n /**\n * Returns the index of the palette that most closely matches\n * the relativeLuminance of the provided swatch\n */\n closestIndexOf(reference: RelativeLuminance): number;\n\n /**\n * Gets a swatch by index. Index is clamped to the limits\n * of the palette so a Swatch will always be returned.\n */\n get(index: number): T;\n}\n\n/**\n * Options to tailor the generation of the color palette.\n */\nexport interface PaletteRGBOptions {\n /**\n * The minimum amount of contrast between steps in the palette. Default 1.05.\n * Recommended increments by hundredths.\n */\n stepContrast: number;\n\n /**\n * Multiplier for increasing step contrast as the swatches darken. Default 0.\n * Recommended increments by hundredths.\n */\n stepContrastRamp: number;\n\n /**\n * Whether to keep the exact source color in the target palette. Default false.\n * Only recommended when the exact color is required and used in stateful interaction recipes like hover.\n * Note that custom recipes can still access the source color even if it's not in the ramp,\n * but turning this on will potentially increase the contrast between steps toward the ends of the palette.\n */\n preserveSource: boolean;\n}\n\nconst defaultPaletteRGBOptions: PaletteRGBOptions = {\n stepContrast: 1.05,\n stepContrastRamp: 0,\n preserveSource: false,\n};\n\nexport class PaletteRGB implements Palette {\n /**\n * {@inheritdoc Palette.source}\n */\n public readonly source: SwatchRGB;\n public readonly swatches: ReadonlyArray;\n private lastIndex: number;\n private reversedSwatches: ReadonlyArray;\n private closestIndexCache = new Map();\n\n /**\n *\n * @param source - The source color for the palette\n * @param swatches - All swatches in the palette\n */\n constructor(source: SwatchRGB, swatches: ReadonlyArray) {\n this.source = source;\n this.swatches = swatches;\n\n this.reversedSwatches = Object.freeze([...this.swatches].reverse());\n this.lastIndex = this.swatches.length - 1;\n }\n\n /**\n * {@inheritdoc Palette.colorContrast}\n */\n public colorContrast(\n reference: Swatch,\n contrastTarget: number,\n initialSearchIndex?: number,\n direction?: 1 | -1\n ): SwatchRGB {\n if (initialSearchIndex === undefined) {\n initialSearchIndex = this.closestIndexOf(reference);\n }\n\n let source: ReadonlyArray = this.swatches;\n const endSearchIndex = this.lastIndex;\n let startSearchIndex = initialSearchIndex;\n\n if (direction === undefined) {\n direction = directionByIsDark(reference);\n }\n\n const condition = (value: SwatchRGB) =>\n Luminance.getContrast(reference, value) >= contrastTarget;\n\n if (direction === -1) {\n source = this.reversedSwatches;\n startSearchIndex = endSearchIndex - startSearchIndex;\n }\n\n return binarySearch(source, condition, startSearchIndex, endSearchIndex);\n }\n\n /**\n * {@inheritdoc Palette.get}\n */\n public get(index: number): SwatchRGB {\n return this.swatches[index] || this.swatches[clamp(index, 0, this.lastIndex)];\n }\n\n /**\n * {@inheritdoc Palette.closestIndexOf}\n */\n public closestIndexOf(reference: Swatch): number {\n if (this.closestIndexCache.has(reference.relativeLuminance)) {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n return this.closestIndexCache.get(reference.relativeLuminance)!;\n }\n\n let index = this.swatches.indexOf(reference as SwatchRGB);\n\n if (index !== -1) {\n this.closestIndexCache.set(reference.relativeLuminance, index);\n return index;\n }\n\n const closest = this.swatches.reduce((previous, next) =>\n Math.abs(next.relativeLuminance - reference.relativeLuminance) <\n Math.abs(previous.relativeLuminance - reference.relativeLuminance)\n ? next\n : previous\n );\n\n index = this.swatches.indexOf(closest);\n this.closestIndexCache.set(reference.relativeLuminance, index);\n\n return index;\n }\n\n /**\n * Bump the saturation if it falls below the reference color saturation.\n * @param reference Color with target saturation\n * @param color Color to check and bump if below target saturation\n * @returns Original or adjusted color\n */\n private static saturationBump(\n reference: ColorRGBA64,\n color: ColorRGBA64\n ): ColorRGBA64 {\n const hslReference = rgbToHSL(reference);\n const saturationTarget = hslReference.s;\n const hslColor = rgbToHSL(color);\n if (hslColor.s < saturationTarget) {\n const hslNew = new ColorHSL(hslColor.h, saturationTarget, hslColor.l);\n return hslToRGB(hslNew);\n }\n return color;\n }\n\n /**\n * Scales input from 0 to 100 to 0 to 0.5.\n * @param l Input number, 0 to 100\n * @returns Output number, 0 to 0.5\n */\n private static ramp(l: number) {\n const inputval = l / 100;\n if (inputval > 0.5) return (inputval - 0.5) / 0.5; //from 0.500001in = 0.00000001out to 1.0in = 1.0out\n return 2 * inputval; //from 0in = 0out to 0.5in = 1.0out\n }\n\n /**\n * Create a palette following the desired curve and many steps to build a smaller palette from.\n * @param source The source swatch to create a palette from\n * @returns The palette\n */\n private static createHighResolutionPalette(source: SwatchRGB): PaletteRGB {\n const swatches: SwatchRGB[] = [];\n\n const labSource = rgbToLAB(ColorRGBA64.fromObject(source)!.roundToPrecision(4));\n const lab0 = labToRGB(new ColorLAB(0, labSource.a, labSource.b))\n .clamp()\n .roundToPrecision(4);\n const lab50 = labToRGB(new ColorLAB(50, labSource.a, labSource.b))\n .clamp()\n .roundToPrecision(4);\n const lab100 = labToRGB(new ColorLAB(100, labSource.a, labSource.b))\n .clamp()\n .roundToPrecision(4);\n const rgbMin = new ColorRGBA64(0, 0, 0);\n const rgbMax = new ColorRGBA64(1, 1, 1);\n\n const lAbove = lab100.equalValue(rgbMax) ? 0 : 14;\n const lBelow = lab0.equalValue(rgbMin) ? 0 : 14;\n\n // 257 levels max, depending on whether lab0 or lab100 are black or white respectively.\n for (let l = 100 + lAbove; l >= 0 - lBelow; l -= 0.5) {\n let rgb: ColorRGBA64;\n\n if (l < 0) {\n // For L less than 0, scale from black to L=0\n const percentFromRgbMinToLab0 = l / lBelow + 1;\n rgb = interpolateRGB(percentFromRgbMinToLab0, rgbMin, lab0);\n } else if (l <= 50) {\n // For L less than 50, we scale from L=0 to the base color\n rgb = interpolateRGB(PaletteRGB.ramp(l), lab0, lab50);\n } else if (l <= 100) {\n // For L less than 100, scale from the base color to L=100\n rgb = interpolateRGB(PaletteRGB.ramp(l), lab50, lab100);\n } else {\n // For L greater than 100, scale from L=100 to white\n const percentFromLab100ToRgbMax = (l - 100.0) / lAbove;\n rgb = interpolateRGB(percentFromLab100ToRgbMax, lab100, rgbMax);\n }\n\n rgb = PaletteRGB.saturationBump(lab50, rgb).roundToPrecision(4);\n\n swatches.push(SwatchRGB.fromObject(rgb));\n }\n\n return new PaletteRGB(source, swatches);\n }\n\n /**\n * Adjust one end of the contrast-based palette so it doesn't abruptly fall to black (or white).\n * @param swatchContrast Function to get the target contrast for the next swatch\n * @param referencePalette The high resolution palette\n * @param targetPalette The contrast-based palette to adjust\n * @param direction The end to adjust\n */\n private static adjustEnd(\n swatchContrast: (swatch: SwatchRGB) => number,\n referencePalette: PaletteRGB,\n targetPalette: SwatchRGB[],\n direction: 1 | -1\n ) {\n // Careful with the use of referencePalette as only the refSwatches is reversed.\n const refSwatches =\n direction === -1\n ? referencePalette.swatches\n : referencePalette.reversedSwatches;\n const refIndex = (swatch: SwatchRGB) => {\n const index = referencePalette.closestIndexOf(swatch);\n return direction === 1 ? referencePalette.lastIndex - index : index;\n };\n\n // Only operates on the 'end' end of the array, so flip if we're adjusting the 'beginning'\n if (direction === 1) {\n targetPalette.reverse();\n }\n\n const targetContrast = swatchContrast(targetPalette[targetPalette.length - 2]);\n const actualContrast = roundToPrecisionSmall(\n Luminance.getContrast(\n targetPalette[targetPalette.length - 1],\n targetPalette[targetPalette.length - 2]\n ),\n 2\n );\n if (actualContrast < targetContrast) {\n // Remove last swatch if not sufficient contrast\n targetPalette.pop();\n\n // Distribute to the last swatch\n const safeSecondSwatch = referencePalette.colorContrast(\n refSwatches[referencePalette.lastIndex],\n targetContrast,\n undefined,\n direction\n );\n const safeSecondRefIndex = refIndex(safeSecondSwatch);\n const targetSwatchCurrentRefIndex = refIndex(\n targetPalette[targetPalette.length - 2]\n );\n const swatchesToSpace = safeSecondRefIndex - targetSwatchCurrentRefIndex;\n let space = 1;\n for (\n let i = targetPalette.length - swatchesToSpace - 1;\n i < targetPalette.length;\n i++\n ) {\n const currentRefIndex = refIndex(targetPalette[i]);\n const nextRefIndex =\n i === targetPalette.length - 1\n ? referencePalette.lastIndex\n : currentRefIndex + space;\n targetPalette[i] = refSwatches[nextRefIndex];\n space++;\n }\n }\n\n if (direction === 1) {\n targetPalette.reverse();\n }\n }\n\n /**\n * Generate a palette with consistent minimum contrast between swatches.\n * @param source The source color\n * @param options Palette generation options\n * @returns A palette meeting the requested contrast between swatches.\n */\n private static createColorPaletteByContrast(\n source: SwatchRGB,\n options: PaletteRGBOptions\n ): SwatchRGB[] {\n const referencePalette = PaletteRGB.createHighResolutionPalette(source);\n\n // Ramp function to increase contrast as the swatches get darker\n const nextContrast = (swatch: SwatchRGB) => {\n const c =\n options.stepContrast +\n options.stepContrast *\n (1 - swatch.relativeLuminance) *\n options.stepContrastRamp;\n return roundToPrecisionSmall(c, 2);\n };\n\n const swatches: SwatchRGB[] = [];\n\n // Start with the source color or the light end color\n let ref = options.preserveSource ? source : referencePalette.swatches[0];\n swatches.push(ref);\n\n // Add swatches with contrast toward dark\n do {\n const targetContrast = nextContrast(ref);\n ref = referencePalette.colorContrast(ref, targetContrast, undefined, 1);\n swatches.push(ref);\n } while (ref.relativeLuminance > 0);\n\n // Add swatches with contrast toward light\n if (options.preserveSource) {\n ref = source;\n do {\n // This is off from the dark direction because `ref` here is the darker swatch, probably subtle\n const targetContrast = nextContrast(ref);\n ref = referencePalette.colorContrast(ref, targetContrast, undefined, -1);\n swatches.unshift(ref);\n } while (ref.relativeLuminance < 1);\n }\n\n // Validate dark end\n this.adjustEnd(nextContrast, referencePalette, swatches, -1);\n\n // Validate light end\n if (options.preserveSource) {\n this.adjustEnd(nextContrast, referencePalette, swatches, 1);\n }\n\n return swatches;\n }\n\n /**\n * Create a color palette from a provided swatch\n * @param source - The source swatch to create a palette from\n * @returns\n */\n static from(source: SwatchRGB, options?: Partial): PaletteRGB {\n const opts =\n options === void 0 || null\n ? defaultPaletteRGBOptions\n : { ...defaultPaletteRGBOptions, ...options };\n\n return new PaletteRGB(\n source,\n Object.freeze(PaletteRGB.createColorPaletteByContrast(source, opts))\n );\n }\n\n static withComponentStateColorPalette(source: SwatchRGB) {\n return new PaletteRGB(\n source,\n Object.freeze(\n new ComponentStateColorPalette({\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n baseColor: ColorRGBA64.fromObject(source)!,\n }).palette.map(x => {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n const _x = parseColorHexRGB(x.toStringHexRGB())!;\n return new SwatchRGB(_x.r, _x.g, _x.b);\n })\n )\n );\n }\n}\n","import { CSSDesignToken, DesignToken, DesignTokenValue } from '@microsoft/fast-foundation';\n\nexport class NatGenDesignToken | symbol | {}> {\n defaultValue: DesignTokenValue;\n name: string;\n token: CSSDesignToken;\n\n constructor(init?: Partial>) {\n Object.assign(this, init);\n }\n\n create() {\n this.token = DesignToken.create(this.name).withDefault(this.defaultValue);\n }\n\n setValueFor(element: HTMLElement, value: DesignTokenValue) {\n if (this.token == null)\n throw `Token ${this.name} must be created before updated.`;\n\n this.token.setValueFor(element, value);\n }\n\n getValueFor(element: HTMLElement) : DesignTokenValue {\n return this.token.getValueFor(element);\n }\n\n deleteValueFor(element: HTMLElement) {\n return this.token.deleteValueFor(element);\n }\n}\n","import { parseColorHexRGB } from '@microsoft/fast-colors';\nimport { DesignToken } from '@microsoft/fast-foundation';\nimport { Direction } from \"@microsoft/fast-web-utilities\";\nimport { SwatchRGB, Palette, PaletteRGB, Swatch, InteractiveSwatchSet, ContrastTarget, calculateNeutralLayer, calculateFocusStrokeOuter, calculateFocusStrokeInner, calculateForegroundOnColor, calculateDeltaSwatch } from './color';\n\n// TODO: generate design tokens at build time as preparation for design API?\nimport designSystemDefaults from './design-tokens/default.tokens.json';\nimport { NatGenDesignToken } from './design-tokens/design-token';\n\nconst { create } = DesignToken;\n\nexport interface Recipe {\n evaluate(element: HTMLElement, reference?: Swatch): T;\n}\n\nexport let designTokens: Record> = {};\n\nexport function createDesignTokensFromJson(jsonRoot) {\n (function getTokens(root, path = '', type = '') {\n type = root.$type || type;\n\n if ('$value' in root) {\n switch (type) {\n case \"number\":\n designTokens[path] = new NatGenDesignToken({\n defaultValue: root.$value,\n name: path\n });\n break;\n\n case \"color\":\n const color = parseColorHexRGB(root.$value);\n designTokens[path] = new NatGenDesignToken({\n defaultValue: new SwatchRGB(color.r, color.g, color.b),\n name: path\n });\n break;\n\n default:\n designTokens[path] = new NatGenDesignToken({\n defaultValue: root.$value,\n name: path\n });\n }\n\n designTokens[path].create();\n } else {\n Object.keys(root).forEach(key => {\n if(!key.startsWith('$'))\n getTokens(root[key], path.length > 0 ? `${path}-${key}` : key, type)\n });\n }\n })(jsonRoot);\n}\n\nexport function overrideDesignTokensFromJson(jsonRoot, element: HTMLElement = document.body) {\n (function getTokens(root, path = '', type = '') {\n type = root.$type || type;\n\n if ('$value' in root) {\n switch (type) {\n case \"color\":\n const color = parseColorHexRGB(root.$value);\n designTokens[path].setValueFor(element, new SwatchRGB(color.r, color.g, color.b));\n break;\n\n default:\n designTokens[path].setValueFor(element, root.$value);\n }\n } else {\n Object.keys(root).forEach(key => {\n if(!key.startsWith('$'))\n getTokens(root[key], path.length > 0 ? `${path}-${key}` : key, type)\n });\n }\n })(jsonRoot);\n}\n\ncreateDesignTokensFromJson(designSystemDefaults);\n\nexport const brand = create({\n name: 'brand',\n cssCustomPropertyName: null\n}).withDefault('ngic');\n\n// Color\n\nexport const neutralPalette = create({\n name: 'neutral-palette',\n cssCustomPropertyName: null\n}).withDefault(element => PaletteRGB.withComponentStateColorPalette(designTokens['color-neutral'].getValueFor(element) as SwatchRGB));\n\nexport const accentPalette = create({\n name: 'accent-palette',\n cssCustomPropertyName: null\n}).withDefault(element => PaletteRGB.withComponentStateColorPalette(designTokens['color-accent'].getValueFor(element) as SwatchRGB));\n\nexport const secondaryPalette = create({\n name: 'secondary-palette',\n cssCustomPropertyName: null\n}).withDefault(element => PaletteRGB.withComponentStateColorPalette(designTokens['color-secondary'].getValueFor(element) as SwatchRGB));\n\n// Color Recipes\n\nexport const neutralLayer1Recipe = create>({\n name: 'neutral-layer-1-recipe',\n cssCustomPropertyName: null\n}).withDefault({\n evaluate: (element: HTMLElement): Swatch =>\n calculateNeutralLayer(\n neutralPalette.getValueFor(element),\n designTokens['color-base-layer-luminance'].getValueFor(element)\n )\n});\n\nexport const neutralLayer2Recipe = create>({\n name: 'neutral-layer-2-recipe',\n cssCustomPropertyName: null\n}).withDefault({\n evaluate: (element: HTMLElement): Swatch =>\n calculateNeutralLayer(\n neutralPalette.getValueFor(element),\n designTokens['color-base-layer-luminance'].getValueFor(element),\n designTokens['color-recipe-neutral-layer-fill-rest'].getValueFor(element)\n )\n});\n\nexport const neutralLayer3Recipe = create>({\n name: 'neutral-layer-3-recipe',\n cssCustomPropertyName: null\n}).withDefault({\n evaluate: (element: HTMLElement): Swatch =>\n calculateNeutralLayer(\n neutralPalette.getValueFor(element),\n designTokens['color-base-layer-luminance'].getValueFor(element),\n designTokens['color-recipe-neutral-layer-fill-rest'].getValueFor(element) * 2\n )\n});\n\nexport const neutralLayer4Recipe = create>({\n name: 'neutral-layer-4-recipe',\n cssCustomPropertyName: null\n}).withDefault({\n evaluate: (element: HTMLElement): Swatch =>\n calculateNeutralLayer(\n neutralPalette.getValueFor(element),\n designTokens['color-base-layer-luminance'].getValueFor(element),\n designTokens['color-recipe-neutral-layer-fill-rest'].getValueFor(element) * 3\n )\n});\n\nexport const neutralFillRecipe = create>({\n name: 'neutral-fill-recipe',\n cssCustomPropertyName: null\n}).withDefault({\n evaluate: (element: HTMLElement, reference?: Swatch): InteractiveSwatchSet =>\n InteractiveSwatchSet.create(\n neutralPalette.getValueFor(element),\n reference || fillColor.getValueFor(element),\n designTokens['color-recipe-neutral-fill-rest'].getValueFor(element),\n designTokens['color-recipe-neutral-fill-hover'].getValueFor(element),\n designTokens['color-recipe-neutral-fill-active'].getValueFor(element),\n designTokens['color-recipe-neutral-fill-focus'].getValueFor(element)\n )\n});\n\nexport const neutralForegroundRecipe = create>({\n name: 'neutral-foreground-recipe',\n cssCustomPropertyName: null\n}).withDefault({\n evaluate: (element: HTMLElement): InteractiveSwatchSet =>\n InteractiveSwatchSet.createFromContrast(\n neutralPalette.getValueFor(element),\n fillColor.getValueFor(element),\n ContrastTarget.Text, // TODO: Should this be a token?\n designTokens['color-recipe-neutral-foreground-rest'].getValueFor(element),\n designTokens['color-recipe-neutral-foreground-hover'].getValueFor(element),\n designTokens['color-recipe-neutral-foreground-active'].getValueFor(element),\n designTokens['color-recipe-neutral-foreground-focus'].getValueFor(element)\n )\n});\n\nexport const neutralInputFillRecipe = create>({\n name: 'neutral-input-fill-recipe',\n cssCustomPropertyName: null\n}).withDefault({\n evaluate: (element: HTMLElement, reference?: Swatch): InteractiveSwatchSet =>\n InteractiveSwatchSet.create(\n neutralPalette.getValueFor(element),\n reference || fillColor.getValueFor(element),\n designTokens['color-recipe-neutral-input-fill-rest'].getValueFor(element),\n designTokens['color-recipe-neutral-input-fill-hover'].getValueFor(element),\n designTokens['color-recipe-neutral-input-fill-active'].getValueFor(element),\n designTokens['color-recipe-neutral-input-fill-focus'].getValueFor(element)\n )\n});\n\nexport const neutralStealthFillRecipe = create>({\n name: 'neutral-stealth-fill-recipe',\n cssCustomPropertyName: null\n}).withDefault({\n evaluate: (element: HTMLElement, reference?: Swatch): InteractiveSwatchSet =>\n InteractiveSwatchSet.create(\n neutralPalette.getValueFor(element),\n reference || fillColor.getValueFor(element),\n designTokens['color-recipe-neutral-stealth-fill-rest'].getValueFor(element),\n designTokens['color-recipe-neutral-stealth-fill-hover'].getValueFor(element),\n designTokens['color-recipe-neutral-stealth-fill-active'].getValueFor(element),\n designTokens['color-recipe-neutral-stealth-fill-focus'].getValueFor(element)\n )\n});\n\nexport const accentFillRecipe = create>({\n name: 'accent-fill-recipe',\n cssCustomPropertyName: null\n}).withDefault({\n evaluate: (element: HTMLElement, reference?: Swatch): InteractiveSwatchSet =>\n InteractiveSwatchSet.createFromIdealColor(\n accentPalette.getValueFor(element),\n accentPalette.getValueFor(element).source,\n reference || fillColor.getValueFor(element),\n ContrastTarget.Normal,\n designTokens['color-recipe-accent-fill-rest'].getValueFor(element),\n designTokens['color-recipe-accent-fill-hover'].getValueFor(element),\n designTokens['color-recipe-accent-fill-active'].getValueFor(element),\n designTokens['color-recipe-accent-fill-focus'].getValueFor(element)\n )\n});\n\nexport const accentForegroundRecipe = create>({\n name: 'accent-foreground-recipe',\n cssCustomPropertyName: null\n}).withDefault({\n evaluate: (element: HTMLElement, reference?: Swatch): InteractiveSwatchSet =>\n InteractiveSwatchSet.createFromIdealColor(\n accentPalette.getValueFor(element),\n accentPalette.getValueFor(element).source,\n reference || fillColor.getValueFor(element),\n ContrastTarget.Normal,\n designTokens['color-recipe-accent-foreground-rest'].getValueFor(element),\n designTokens['color-recipe-accent-foreground-hover'].getValueFor(element),\n designTokens['color-recipe-accent-foreground-active'].getValueFor(element),\n designTokens['color-recipe-accent-foreground-focus'].getValueFor(element)\n )\n});\n\nexport const secondaryFillRecipe = create>({\n name: 'secondary-fill-recipe',\n cssCustomPropertyName: null\n}).withDefault({\n evaluate: (element: HTMLElement, reference?: Swatch): InteractiveSwatchSet =>\n InteractiveSwatchSet.createFromIdealColor(\n secondaryPalette.getValueFor(element),\n secondaryPalette.getValueFor(element).source,\n reference || fillColor.getValueFor(element),\n ContrastTarget.Normal,\n designTokens['color-recipe-secondary-fill-rest'].getValueFor(element),\n designTokens['color-recipe-secondary-fill-hover'].getValueFor(element),\n designTokens['color-recipe-secondary-fill-active'].getValueFor(element),\n designTokens['color-recipe-secondary-fill-focus'].getValueFor(element)\n )\n});\n\nexport const secondaryForegroundRecipe = create>({\n name: 'secondary-foreground-recipe',\n cssCustomPropertyName: null\n}).withDefault({\n evaluate: (element: HTMLElement, reference?: Swatch): InteractiveSwatchSet =>\n InteractiveSwatchSet.createFromIdealColor(\n secondaryPalette.getValueFor(element),\n secondaryPalette.getValueFor(element).source,\n reference || fillColor.getValueFor(element),\n ContrastTarget.Normal,\n designTokens['color-recipe-secondary-foreground-rest'].getValueFor(element),\n designTokens['color-recipe-secondary-foreground-hover'].getValueFor(element),\n designTokens['color-recipe-secondary-foreground-active'].getValueFor(element),\n designTokens['color-recipe-secondary-foreground-focus'].getValueFor(element)\n )\n});\n\nexport const neutralStrokeRecipe = create>({\n name: \"neutral-stroke-recipe\",\n cssCustomPropertyName: null,\n}).withDefault({\n evaluate: (element: HTMLElement): InteractiveSwatchSet =>\n InteractiveSwatchSet.create(\n neutralPalette.getValueFor(element),\n fillColor.getValueFor(element),\n designTokens['color-recipe-neutral-stroke-rest'].getValueFor(element),\n designTokens['color-recipe-neutral-stroke-hover'].getValueFor(element),\n designTokens['color-recipe-neutral-stroke-active'].getValueFor(element),\n designTokens['color-recipe-neutral-stroke-focus'].getValueFor(element)\n ),\n});\n\nexport const neutralDividerRecipe = create>({\n name: 'neutral-divider',\n cssCustomPropertyName: null\n}).withDefault({\n evaluate: (element: HTMLElement, reference?: Swatch): Swatch =>\n calculateDeltaSwatch(\n neutralPalette.getValueFor(element),\n reference || fillColor.getValueFor(element),\n designTokens['color-recipe-neutral-divider-rest'].getValueFor(element)\n )\n});\n\nexport const focusStrokeOuterRecipe = create>({\n name: \"focus-stroke-outer-recipe\",\n cssCustomPropertyName: null,\n}).withDefault({\n evaluate: (element: HTMLElement): Swatch =>\n calculateFocusStrokeOuter(\n neutralPalette.getValueFor(element),\n fillColor.getValueFor(element)\n ),\n});\n\nexport const focusStrokeInnerRecipe = create>({\n name: \"focus-stroke-inner-recipe\",\n cssCustomPropertyName: null,\n}).withDefault({\n evaluate: (element: HTMLElement): Swatch =>\n calculateFocusStrokeInner(\n neutralPalette.getValueFor(element),\n fillColor.getValueFor(element),\n focusStrokeOuterRecipe.getValueFor(element).evaluate(element)\n ),\n});\n\n// Recipe Colors\n\nexport const neutralLayer1 = create('neutral-layer-1').withDefault(element =>\n neutralLayer1Recipe.getValueFor(element).evaluate(element)\n);\n\nexport const neutralLayer2 = create('neutral-layer-2').withDefault(element =>\n neutralLayer2Recipe.getValueFor(element).evaluate(element)\n);\n\nexport const neutralLayer3 = create('neutral-layer-3').withDefault(element =>\n neutralLayer3Recipe.getValueFor(element).evaluate(element)\n);\n\nexport const neutralLayer4 = create('neutral-layer-4').withDefault(element =>\n neutralLayer4Recipe.getValueFor(element).evaluate(element)\n);\n\nexport const fillColor = create('fill-color').withDefault(element =>\n neutralLayer1.getValueFor(element)\n);\n\nexport const neutralForegroundRest = create('neutral-foreground-rest').withDefault(element =>\n neutralForegroundRecipe.getValueFor(element).evaluate(element).rest\n);\n\nexport const neutralForegroundHover = create('neutral-foreground-hover').withDefault(element =>\n neutralForegroundRecipe.getValueFor(element).evaluate(element).hover\n);\n\nexport const neutralForegroundActive = create('neutral-foreground-active').withDefault(element =>\n neutralForegroundRecipe.getValueFor(element).evaluate(element).active\n);\n\nexport const neutralForegroundFocus = create('neutral-foreground-focus').withDefault(element =>\n neutralForegroundRecipe.getValueFor(element).evaluate(element).focus\n);\n\nexport const neutralFillRest = create('neutral-fill-rest').withDefault(element =>\n neutralFillRecipe.getValueFor(element).evaluate(element).rest\n);\n\nexport const neutralFillHover = create('neutral-fill-hover').withDefault(element =>\n neutralFillRecipe.getValueFor(element).evaluate(element).hover\n);\n\nexport const neutralFillActive = create('neutral-fill-active').withDefault(element =>\n neutralFillRecipe.getValueFor(element).evaluate(element).active\n);\n\nexport const neutralInputFillRest = create('neutral-input-fill-rest').withDefault(element =>\n neutralInputFillRecipe.getValueFor(element).evaluate(element).rest\n);\n\nexport const neutralInputFillHover = create('neutral-input-fill-hover').withDefault(element =>\n neutralInputFillRecipe.getValueFor(element).evaluate(element).hover\n);\n\nexport const neutralInputFillActive = create('neutral-input-fill-active').withDefault(element =>\n neutralInputFillRecipe.getValueFor(element).evaluate(element).active\n);\n\nexport const neutralInputFillFocus = create('neutral-input-fill-focus').withDefault(element =>\n neutralInputFillRecipe.getValueFor(element).evaluate(element).focus\n);\n\n// TODO: Recipe to base on current layer?\nexport const neutralStealthFillRest = create('neutral-stealth-fill-rest').withDefault('transparent');\n\nexport const neutralStealthFillHover = create('neutral-stealth-fill-hover').withDefault(element =>\n neutralStealthFillRecipe.getValueFor(element).evaluate(element).hover\n);\n\nexport const neutralStealthFillActive = create('neutral-stealth-fill-active').withDefault(element =>\n neutralStealthFillRecipe.getValueFor(element).evaluate(element).active\n);\n\nexport const neutralStealthFillFocus = create('neutral-stealth-fill-focus').withDefault(element =>\n neutralStealthFillRecipe.getValueFor(element).evaluate(element).focus\n);\n\nexport const neutralFillFocus = create('neutral-fill-focus').withDefault(element =>\n neutralFillRecipe.getValueFor(element).evaluate(element).focus\n);\n\nexport const neutralStrokeRest = create('neutral-stroke-rest').withDefault(element =>\n neutralStrokeRecipe.getValueFor(element).evaluate(element).rest\n);\n\nexport const neutralStrokeHover = create('neutral-stroke-hover').withDefault(element =>\n neutralStrokeRecipe.getValueFor(element).evaluate(element).hover\n);\n\nexport const neutralStrokeActive = create('neutral-stroke-active').withDefault(element =>\n neutralStrokeRecipe.getValueFor(element).evaluate(element).active\n);\n\nexport const neutralStrokeFocus = create('neutral-stroke-focus').withDefault(element =>\n neutralStrokeRecipe.getValueFor(element).evaluate(element).focus\n);\n\nexport const neutralDivider = create('neutral-divider').withDefault(element =>\n neutralDividerRecipe.getValueFor(element).evaluate(element)\n);\n\nexport const focusStrokeOuter = create('focus-stroke-outer').withDefault(element =>\n focusStrokeOuterRecipe.getValueFor(element).evaluate(element)\n);\n\nexport const focusStrokeInner = create('focus-stroke-inner').withDefault(element =>\n focusStrokeInnerRecipe.getValueFor(element).evaluate(element)\n);\n\nexport const accentFillRest = create('accent-fill-rest').withDefault(element =>\n accentFillRecipe.getValueFor(element).evaluate(element).rest\n);\n\nexport const accentFillHover = create('accent-fill-hover').withDefault(element =>\n accentFillRecipe.getValueFor(element).evaluate(element).hover\n);\n\nexport const accentFillActive = create('accent-fill-active').withDefault(element =>\n accentFillRecipe.getValueFor(element).evaluate(element).active\n);\n\nexport const accentFillFocus = create('accent-fill-focus').withDefault(element =>\n accentFillRecipe.getValueFor(element).evaluate(element).focus\n);\n\nexport const accentForegroundRest = create('accent-foreground-rest').withDefault(element =>\n accentForegroundRecipe.getValueFor(element).evaluate(element).rest\n);\n\nexport const accentForegroundHover = create('accent-foreground-hover').withDefault(element =>\n accentForegroundRecipe.getValueFor(element).evaluate(element).hover\n);\n\nexport const accentForegroundActive = create('accent-foreground-active').withDefault(element =>\n accentForegroundRecipe.getValueFor(element).evaluate(element).active\n);\n\nexport const accentForegroundFocus = create('accent-foreground-focus').withDefault(element =>\n accentForegroundRecipe.getValueFor(element).evaluate(element).focus\n);\n\nexport const foregroundOnAccentRest = create('foreground-on-accent-rest').withDefault(element =>\n calculateForegroundOnColor(accentFillRest.getValueFor(element), ContrastTarget.Normal)\n);\n\nexport const foregroundOnAccentHover = create('foreground-on-accent-hover').withDefault(element =>\n calculateForegroundOnColor(accentFillHover.getValueFor(element), ContrastTarget.Normal)\n);\n\nexport const foregroundOnAccentActive = create('foreground-on-accent-active').withDefault(element =>\n calculateForegroundOnColor(accentFillActive.getValueFor(element), ContrastTarget.Normal)\n);\n\nexport const foregroundOnAccentFocus = create('foreground-on-accent-focus').withDefault(element =>\n calculateForegroundOnColor(accentFillFocus.getValueFor(element), ContrastTarget.Normal)\n);\n\nexport const secondaryFillRest = create('secondary-fill-rest').withDefault(element =>\n secondaryFillRecipe.getValueFor(element).evaluate(element).rest\n);\n\nexport const secondaryFillHover = create('secondary-fill-hover').withDefault(element =>\n secondaryFillRecipe.getValueFor(element).evaluate(element).hover\n);\n\nexport const secondaryFillActive = create('secondary-fill-active').withDefault(element =>\n secondaryFillRecipe.getValueFor(element).evaluate(element).active\n);\n\nexport const secondaryFillFocus = create('secondary-fill-focus').withDefault(element =>\n secondaryFillRecipe.getValueFor(element).evaluate(element).focus\n);\n\nexport const secondaryForegroundRest = create('secondary-foreground-rest').withDefault(element =>\n secondaryForegroundRecipe.getValueFor(element).evaluate(element).rest\n);\n\nexport const secondaryForegroundHover = create('secondary-foreground-hover').withDefault(element =>\n secondaryForegroundRecipe.getValueFor(element).evaluate(element).hover\n);\n\nexport const secondaryForegroundActive = create('secondary-foreground-active').withDefault(element =>\n secondaryForegroundRecipe.getValueFor(element).evaluate(element).active\n);\n\nexport const secondaryForegroundFocus = create('secondary-foreground-focus').withDefault(element =>\n secondaryForegroundRecipe.getValueFor(element).evaluate(element).focus\n);\n\nexport const foregroundOnSecondaryRest = create('foreground-on-secondary-rest').withDefault(element =>\n calculateForegroundOnColor(secondaryFillRest.getValueFor(element), ContrastTarget.Normal)\n);\n\nexport const foregroundOnSecondaryHover = create('foreground-on-secondary-hover').withDefault(element =>\n calculateForegroundOnColor(secondaryFillHover.getValueFor(element), ContrastTarget.Normal)\n);\n\nexport const foregroundOnSecondaryActive = create('foreground-on-secondary-active').withDefault(element =>\n calculateForegroundOnColor(secondaryFillActive.getValueFor(element), ContrastTarget.Normal)\n);\n\nexport const foregroundOnSecondaryFocus = create('foreground-on-secondary-focus').withDefault(element =>\n calculateForegroundOnColor(secondaryFillFocus.getValueFor(element), ContrastTarget.Normal)\n);\n\n// Typography\n\nexport const direction = create(\"direction\").withDefault(Direction.ltr);\n","import { cssPartial } from '@microsoft/fast-element'\nimport { designTokens } from '../design-tokens';\n\nexport const ambientShadow = cssPartial`0 0 calc((var(--elevation) * 0.225px) + 2px) rgba(0, 0, 0, calc(.11 * (2 - ${designTokens['color-base-layer-luminance'].token})))`;\nexport const directionalShadow = cssPartial`0 calc(var(--elevation) * 0.4px) calc((var(--elevation) * 0.9px)) rgba(0, 0, 0, calc(.13 * (2 - ${designTokens['color-base-layer-luminance'].token})))`;\nexport const elevation = cssPartial`${ambientShadow}, ${directionalShadow}`;\n\n/**\n* Applies the box-shadow CSS rule set to the elevation formula.\n* Control this formula with the --elevation CSS Custom Property\n* by setting --elevation to a number.\n*/\nexport const elevationRule = cssPartial`box-shadow: ${elevation};`;\n","import { cssPartial } from \"@microsoft/fast-element\";\nimport { designTokens } from \"../design-tokens\";\n\n// TODO: Should these be tokens too? Should there be a version of these with units?\n\n/**\n * A formula to retrieve the control height.\n * Use this as the value of any CSS property that\n * accepts a pixel size.\n */\nexport const heightNumber = cssPartial`(${designTokens['space-base-height-units'].token} + ${designTokens['space-density'].token}) * ${designTokens['space-design-unit'].token}`;\n\n/**\n * A formula to retrieve the padding for certain controls.\n */\nexport const paddingNumber = cssPartial`(${heightNumber} / 2)`;\n\nexport const spacingNumber = cssPartial`(${designTokens['space-design-unit'].token} * 5)`;\n\nexport const breakpointQuerySmall = cssPartial`screen and (min-width: ${designTokens['space-breakpoint-small'].token}px)`;\nexport const breakpointQueryMedium = cssPartial`screen and (min-width: ${designTokens['space-breakpoint-medium'].token}px)`;\nexport const breakpointQueryLarge = cssPartial`screen and (min-width: ${designTokens['space-breakpoint-large'].token}px)`;\nexport const breakpointQueryExtraLarge = cssPartial`screen and (min-width: ${designTokens['space-breakpoint-extra-large'].token}px)`;\n","import { css, ElementStyles } from '@microsoft/fast-element';\nimport { AccordionItemOptions, display, ElementDefinitionContext, focusVisible, forcedColorsStylesheetBehavior, FoundationElementTemplate } from '@microsoft/fast-foundation';\nimport { SystemColors } from '@microsoft/fast-web-utilities';\nimport { neutralForegroundRest, designTokens } from '../../design-tokens';\nimport { elevationRule } from '../../styles/elevation';\nimport { heightNumber } from '../../styles/size';\n\nexport const accordionItemStyles: FoundationElementTemplate = (\n context,\n definition\n) => css`\n ${display(\"flex\")} :host {\n box-sizing: border-box;\n flex-direction: column;\n }\n .region {\n display: none;\n padding: calc(${designTokens['space-design-unit'].token} * 2px);\n font-size: ${designTokens['typography-type-ramp-minus-1-font-size'].token};\n line-height: ${designTokens['typography-type-ramp-minus-1-line-height'].token};\n }\n .heading {\n display: grid;\n grid-template-columns: auto 1fr auto calc(${heightNumber} * 1px);\n position: relative;\n }\n .button {\n appearance: none;\n border: none;\n background: none;\n grid-column: 2;\n grid-row: 1;\n outline: none;\n text-align: left;\n color: ${neutralForegroundRest};\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n min-height: calc(${heightNumber} * 1px);\n padding: calc(${designTokens['space-design-unit'].token} * 1px) calc(${designTokens['space-design-unit'].token} * 2px);\n }\n .button::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n cursor: pointer;\n }\n :host(:focus-within) {\n --elevation: 4;\n ${elevationRule}\n }\n :host(.expanded) .region {\n display: block;\n }\n .icon {\n display: flex;\n align-items: center;\n justify-content: center;\n grid-column: 4;\n pointer-events: none;\n fill: currentcolor;\n width: calc(${designTokens['space-design-unit'].token} * 3px);\n position: relative;\n }\n slot[name=\"collapsed-icon\"] {\n display: flex;\n }\n :host(.expanded) slot[name=\"collapsed-icon\"] {\n display: none;\n }\n slot[name=\"expanded-icon\"] {\n display: none;\n }\n :host(.expanded) slot[name=\"expanded-icon\"] {\n display: flex;\n }\n .icon svg {\n width: 100%;\n height: 100%;\n }\n .start {\n display: flex;\n align-items: center;\n padding-inline-start: calc(${designTokens['space-design-unit'].token} * 1px);\n justify-content: center;\n grid-column: 1;\n position: relative;\n }\n .end {\n display: flex;\n align-items: center;\n justify-content: center;\n grid-column: 3;\n position: relative;\n }\n`.withBehaviors(\n forcedColorsStylesheetBehavior(\n css`\n .button:${focusVisible}::before {\n forced-color-adjust: none;\n border-color: ${SystemColors.Highlight};\n box-shadow: 0 0 0 calc(${designTokens['space-focus-stroke-width'].token} * 1px) ${SystemColors.Highlight};\n }\n slot[name=\"collapsed-icon\"],\n slot[name=\"expanded-icon\"] {\n fill: ${SystemColors.ButtonText}\n }\n `\n )\n);\n","import { AccordionItem, AccordionItemOptions } from \"@microsoft/fast-foundation\";\nimport { attr } from \"@microsoft/fast-element\";\nimport { accordionAnchorTemplate } from \"./accordion-anchor.template\";\nimport { accordionAnchorStyles } from \"./accordion-anchor.styles\";\n\n/**\n * @element natgen-accordion-anchor\n */\nexport class NatGenAccordionAnchor extends AccordionItem {\n @attr\n href: string;\n\n @attr\n target: string;\n}\n\nexport const natGenAccordionAnchor = NatGenAccordionAnchor.compose({\n baseName: 'accordion-anchor',\n template: accordionAnchorTemplate,\n styles: accordionAnchorStyles\n});\n","import { html } from \"@microsoft/fast-element\";\nimport type { ViewTemplate } from \"@microsoft/fast-element\";\nimport { AccordionItemOptions, FoundationElementTemplate, endSlotTemplate, startSlotTemplate } from \"@microsoft/fast-foundation\";\nimport { NatGenAccordionAnchor } from \"./accordion-anchor\";\n\n/**\n * The template for the {@link @microsoft/fast-foundation#(AccordionItem:class)} component.\n * @public\n */\nexport const accordionAnchorTemplate: FoundationElementTemplate<\n ViewTemplate,\n AccordionItemOptions\n> = (context, definition) => html`\n \n`;","import { css, ElementStyles } from '@microsoft/fast-element';\nimport { AccordionItemOptions, FoundationElementTemplate } from '@microsoft/fast-foundation';\nimport { accordionItemStyles } from '../accordion-item/accordion-item.styles';\nimport { designTokens } from '../../design-tokens';\n\nexport const accordionAnchorStyles: FoundationElementTemplate = (\n context,\n definition\n) => css`\n ${accordionItemStyles(context, definition)}\n\n .button {\n text-decoration: none;\n margin: 0em;\n display: flex;\n align-items: center;\n }\n`;\n","// TODO: Try using https://fontawesome.com/v5/docs/web/advanced/svg-javascript-core instead?\n\n// FontAwesome 5.15.3: light/angle-down\nexport const angleDown = ``;\n\n// FontAwesome 5.15.3: light/bars\nexport const barsIcon = ``;\n\n// FontAwesome 5.15.3: solid/check\nexport const checkIcon = ``;\n\n// FontAwesome 5.15.3: light/minus\nexport const minusIcon = ``;\n\n// FontAwesome 5.15.3: light/plus\nexport const plusIcon = ``;\n\n// FontAwesome 5.15.3: light/times\nexport const timesIcon = ``\n","import { AccordionItem, AccordionItemOptions, accordionItemTemplate } from \"@microsoft/fast-foundation\";\nimport { minusIcon, plusIcon } from \"../../styles/icons\";\nimport { accordionItemStyles } from \"./accordion-item.styles\";\n\n/**\n * @element natgen-accordion-item\n */\nexport class NatGenAccordionItem extends AccordionItem { }\n\nexport const natGenAccordionItem = NatGenAccordionItem.compose({\n baseName: 'accordion-item',\n template: accordionItemTemplate,\n styles: accordionItemStyles,\n collapsedIcon: plusIcon,\n expandedIcon: minusIcon\n});\n","import { html, ref } from \"@microsoft/fast-element\";\nimport { endSlotTemplate, startSlotTemplate } from \"../patterns/start-end.js\";\n/**\n * The template for the {@link @microsoft/fast-foundation#(AccordionItem:class)} component.\n * @public\n */\nexport const accordionItemTemplate = (context, definition) => html `\n \n`;\n","import { Observable } from \"../observation/observable.js\";\nimport { emptyArray } from \"../platform.js\";\n/**\n * Creates a function that can be used to filter a Node array, selecting only elements.\n * @param selector - An optional selector to restrict the filter to.\n * @public\n */\nexport function elements(selector) {\n if (selector) {\n return function (value, index, array) {\n return value.nodeType === 1 && value.matches(selector);\n };\n }\n return function (value, index, array) {\n return value.nodeType === 1;\n };\n}\n/**\n * A base class for node observation.\n * @internal\n */\nexport class NodeObservationBehavior {\n /**\n * Creates an instance of NodeObservationBehavior.\n * @param target - The target to assign the nodes property on.\n * @param options - The options to use in configuring node observation.\n */\n constructor(target, options) {\n this.target = target;\n this.options = options;\n this.source = null;\n }\n /**\n * Bind this behavior to the source.\n * @param source - The source to bind to.\n * @param context - The execution context that the binding is operating within.\n */\n bind(source) {\n const name = this.options.property;\n this.shouldUpdate = Observable.getAccessors(source).some((x) => x.name === name);\n this.source = source;\n this.updateTarget(this.computeNodes());\n if (this.shouldUpdate) {\n this.observe();\n }\n }\n /**\n * Unbinds this behavior from the source.\n * @param source - The source to unbind from.\n */\n unbind() {\n this.updateTarget(emptyArray);\n this.source = null;\n if (this.shouldUpdate) {\n this.disconnect();\n }\n }\n /** @internal */\n handleEvent() {\n this.updateTarget(this.computeNodes());\n }\n computeNodes() {\n let nodes = this.getNodes();\n if (this.options.filter !== void 0) {\n nodes = nodes.filter(this.options.filter);\n }\n return nodes;\n }\n updateTarget(value) {\n this.source[this.options.property] = value;\n }\n}\n","import { AttachedBehaviorHTMLDirective } from \"./html-directive.js\";\nimport { NodeObservationBehavior } from \"./node-observation.js\";\n/**\n * The runtime behavior for slotted node observation.\n * @public\n */\nexport class SlottedBehavior extends NodeObservationBehavior {\n /**\n * Creates an instance of SlottedBehavior.\n * @param target - The slot element target to observe.\n * @param options - The options to use when observing the slot.\n */\n constructor(target, options) {\n super(target, options);\n }\n /**\n * Begins observation of the nodes.\n */\n observe() {\n this.target.addEventListener(\"slotchange\", this);\n }\n /**\n * Disconnects observation of the nodes.\n */\n disconnect() {\n this.target.removeEventListener(\"slotchange\", this);\n }\n /**\n * Retrieves the nodes that should be assigned to the target.\n */\n getNodes() {\n return this.target.assignedNodes(this.options);\n }\n}\n/**\n * A directive that observes the `assignedNodes()` of a slot and updates a property\n * whenever they change.\n * @param propertyOrOptions - The options used to configure slotted node observation.\n * @public\n */\nexport function slotted(propertyOrOptions) {\n if (typeof propertyOrOptions === \"string\") {\n propertyOrOptions = { property: propertyOrOptions };\n }\n return new AttachedBehaviorHTMLDirective(\"fast-slotted\", SlottedBehavior, propertyOrOptions);\n}\n","import { accordionTemplate, FoundationElement } from '@microsoft/fast-foundation';\nimport { accordionStyles } from './accordion.styles';\n\n/**\n * @element natgen-accordion\n */\nexport class NatGenAccordion extends FoundationElement { }\n\nexport const natGenAccordion = NatGenAccordion.compose({\n baseName: 'accordion',\n template: accordionTemplate,\n styles: accordionStyles\n});\n","import { elements, html, slotted } from \"@microsoft/fast-element\";\n/**\n * The template for the {@link @microsoft/fast-foundation#Accordion} component.\n * @public\n */\nexport const accordionTemplate = (context, definition) => /* TODO: deprecate slot name `item` to only support default slot https://github.com/microsoft/fast/issues/5515 */ html `\n \n`;\n","import { css, ElementStyles } from \"@microsoft/fast-element\";\nimport {\n display, FoundationElementTemplate\n} from \"@microsoft/fast-foundation\";\n\nexport const accordionStyles: FoundationElementTemplate = (\n context,\n definition\n) => css`\n ${display(\"flex\")} :host {\n box-sizing: border-box;\n flex-direction: column;\n position: relative;\n }\n `;\n","import { __decorate } from \"tslib\";\nimport { attr } from \"@microsoft/fast-element\";\n/**\n * Some states and properties are applicable to all host language elements regardless of whether a role is applied.\n * The following global states and properties are supported by all roles and by all base markup elements.\n * {@link https://www.w3.org/TR/wai-aria-1.1/#global_states}\n *\n * This is intended to be used as a mixin. Be sure you extend FASTElement.\n *\n * @public\n */\nexport class ARIAGlobalStatesAndProperties {\n}\n__decorate([\n attr({ attribute: \"aria-atomic\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaAtomic\", void 0);\n__decorate([\n attr({ attribute: \"aria-busy\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaBusy\", void 0);\n__decorate([\n attr({ attribute: \"aria-controls\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaControls\", void 0);\n__decorate([\n attr({ attribute: \"aria-current\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaCurrent\", void 0);\n__decorate([\n attr({ attribute: \"aria-describedby\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaDescribedby\", void 0);\n__decorate([\n attr({ attribute: \"aria-details\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaDetails\", void 0);\n__decorate([\n attr({ attribute: \"aria-disabled\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaDisabled\", void 0);\n__decorate([\n attr({ attribute: \"aria-errormessage\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaErrormessage\", void 0);\n__decorate([\n attr({ attribute: \"aria-flowto\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaFlowto\", void 0);\n__decorate([\n attr({ attribute: \"aria-haspopup\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaHaspopup\", void 0);\n__decorate([\n attr({ attribute: \"aria-hidden\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaHidden\", void 0);\n__decorate([\n attr({ attribute: \"aria-invalid\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaInvalid\", void 0);\n__decorate([\n attr({ attribute: \"aria-keyshortcuts\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaKeyshortcuts\", void 0);\n__decorate([\n attr({ attribute: \"aria-label\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaLabel\", void 0);\n__decorate([\n attr({ attribute: \"aria-labelledby\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaLabelledby\", void 0);\n__decorate([\n attr({ attribute: \"aria-live\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaLive\", void 0);\n__decorate([\n attr({ attribute: \"aria-owns\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaOwns\", void 0);\n__decorate([\n attr({ attribute: \"aria-relevant\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaRelevant\", void 0);\n__decorate([\n attr({ attribute: \"aria-roledescription\" })\n], ARIAGlobalStatesAndProperties.prototype, \"ariaRoledescription\", void 0);\n","import { __decorate } from \"tslib\";\nimport { attr, observable } from \"@microsoft/fast-element\";\nimport { FoundationElement, } from \"../foundation-element/foundation-element.js\";\nimport { ARIAGlobalStatesAndProperties, StartEnd, } from \"../patterns/index.js\";\nimport { applyMixins } from \"../utilities/apply-mixins.js\";\n/**\n * An Anchor Custom HTML Element.\n * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a | element }.\n *\n * @slot start - Content which can be provided before the anchor content\n * @slot end - Content which can be provided after the anchor content\n * @slot - The default slot for anchor content\n * @csspart control - The anchor element\n * @csspart content - The element wrapping anchor content\n *\n * @public\n */\nexport class Anchor extends FoundationElement {\n constructor() {\n super(...arguments);\n /**\n * Overrides the focus call for where delegatesFocus is unsupported.\n * This check works for Chrome, Edge Chromium, FireFox, and Safari\n * Relevant PR on the Firefox browser: https://phabricator.services.mozilla.com/D123858\n */\n this.handleUnsupportedDelegatesFocus = () => {\n var _a;\n // Check to see if delegatesFocus is supported\n if (window.ShadowRoot &&\n !window.ShadowRoot.prototype.hasOwnProperty(\"delegatesFocus\") &&\n ((_a = this.$fastController.definition.shadowOptions) === null || _a === void 0 ? void 0 : _a.delegatesFocus)) {\n this.focus = () => {\n var _a;\n (_a = this.control) === null || _a === void 0 ? void 0 : _a.focus();\n };\n }\n };\n }\n /**\n * @internal\n */\n connectedCallback() {\n super.connectedCallback();\n this.handleUnsupportedDelegatesFocus();\n }\n}\n__decorate([\n attr\n], Anchor.prototype, \"download\", void 0);\n__decorate([\n attr\n], Anchor.prototype, \"href\", void 0);\n__decorate([\n attr\n], Anchor.prototype, \"hreflang\", void 0);\n__decorate([\n attr\n], Anchor.prototype, \"ping\", void 0);\n__decorate([\n attr\n], Anchor.prototype, \"referrerpolicy\", void 0);\n__decorate([\n attr\n], Anchor.prototype, \"rel\", void 0);\n__decorate([\n attr\n], Anchor.prototype, \"target\", void 0);\n__decorate([\n attr\n], Anchor.prototype, \"type\", void 0);\n__decorate([\n observable\n], Anchor.prototype, \"defaultSlottedContent\", void 0);\n/**\n * Includes ARIA states and properties relating to the ARIA link role\n *\n * @public\n */\nexport class DelegatesARIALink {\n}\n__decorate([\n attr({ attribute: \"aria-expanded\" })\n], DelegatesARIALink.prototype, \"ariaExpanded\", void 0);\napplyMixins(DelegatesARIALink, ARIAGlobalStatesAndProperties);\napplyMixins(Anchor, StartEnd, DelegatesARIALink);\n","import { html, ref, slotted } from \"@microsoft/fast-element\";\nimport { endSlotTemplate, startSlotTemplate } from \"../patterns/start-end.js\";\n/**\n * The template for the {@link @microsoft/fast-foundation#(Anchor:class)} component.\n * @public\n */\nexport const anchorTemplate = (context, definition) => html `\n x.download}\"\n href=\"${x => x.href}\"\n hreflang=\"${x => x.hreflang}\"\n ping=\"${x => x.ping}\"\n referrerpolicy=\"${x => x.referrerpolicy}\"\n rel=\"${x => x.rel}\"\n target=\"${x => x.target}\"\n type=\"${x => x.type}\"\n aria-atomic=\"${x => x.ariaAtomic}\"\n aria-busy=\"${x => x.ariaBusy}\"\n aria-controls=\"${x => x.ariaControls}\"\n aria-current=\"${x => x.ariaCurrent}\"\n aria-describedby=\"${x => x.ariaDescribedby}\"\n aria-details=\"${x => x.ariaDetails}\"\n aria-disabled=\"${x => x.ariaDisabled}\"\n aria-errormessage=\"${x => x.ariaErrormessage}\"\n aria-expanded=\"${x => x.ariaExpanded}\"\n aria-flowto=\"${x => x.ariaFlowto}\"\n aria-haspopup=\"${x => x.ariaHaspopup}\"\n aria-hidden=\"${x => x.ariaHidden}\"\n aria-invalid=\"${x => x.ariaInvalid}\"\n aria-keyshortcuts=\"${x => x.ariaKeyshortcuts}\"\n aria-label=\"${x => x.ariaLabel}\"\n aria-labelledby=\"${x => x.ariaLabelledby}\"\n aria-live=\"${x => x.ariaLive}\"\n aria-owns=\"${x => x.ariaOwns}\"\n aria-relevant=\"${x => x.ariaRelevant}\"\n aria-roledescription=\"${x => x.ariaRoledescription}\"\n ${ref(\"control\")}\n >\n ${startSlotTemplate(context, definition)}\n \n \n \n ${endSlotTemplate(context, definition)}\n \n`;\n","/**\n * The CSS value for disabled cursors.\n * @public\n */\nexport const disabledCursor = \"not-allowed\";\n","import { Observable, } from \"@microsoft/fast-element\";\n/**\n * A behavior to add or remove a stylesheet from an element based on a property. The behavior ensures that\n * styles are applied while the property matches and that styles are not applied if the property does\n * not match.\n *\n * @public\n */\nexport class PropertyStyleSheetBehavior {\n /**\n * Constructs a {@link PropertyStyleSheetBehavior} instance.\n * @param propertyName - The property name to operate from.\n * @param value - The property value to operate from.\n * @param styles - The styles to coordinate with the property.\n */\n constructor(propertyName, value, styles) {\n this.propertyName = propertyName;\n this.value = value;\n this.styles = styles;\n }\n /**\n * Binds the behavior to the element.\n * @param elementInstance - The element for which the property is applied.\n */\n bind(elementInstance) {\n Observable.getNotifier(elementInstance).subscribe(this, this.propertyName);\n this.handleChange(elementInstance, this.propertyName);\n }\n /**\n * Unbinds the behavior from the element.\n * @param source - The element for which the behavior is unbinding.\n * @internal\n */\n unbind(source) {\n Observable.getNotifier(source).unsubscribe(this, this.propertyName);\n source.$fastController.removeStyles(this.styles);\n }\n /**\n * Change event for the provided element.\n * @param source - the element for which to attach or detach styles.\n * @param key - the key to lookup to know if the element already has the styles\n * @internal\n */\n handleChange(source, key) {\n if (source[key] === this.value) {\n source.$fastController.addStyles(this.styles);\n }\n else {\n source.$fastController.removeStyles(this.styles);\n }\n }\n}\n","import { ElementStyles } from '@microsoft/fast-element';\nimport { PropertyStyleSheetBehavior } from '@microsoft/fast-foundation';\n\n/**\n * Behavior that will conditionally apply a stylesheet based on the elements appearance property\n *\n * @param value - The value of the appearance property\n * @param styles - The styles to be applied when condition matches\n *\n * @public\n */\n export function appearanceBehavior(value: string, styles: ElementStyles) {\n return new PropertyStyleSheetBehavior('appearance', value, styles);\n}\n\n","import { css } from '@microsoft/fast-element';\nimport { display, ElementDefinitionContext, focusVisible, FoundationElementDefinition, OverrideFoundationElementDefinition } from '@microsoft/fast-foundation';\nimport { accentFillActive, accentFillFocus, accentFillHover, accentFillRest, accentForegroundActive, accentForegroundHover, accentForegroundRest, focusStrokeInner, focusStrokeOuter, foregroundOnAccentActive, foregroundOnAccentHover, foregroundOnAccentRest, neutralFillActive, neutralFillFocus, neutralFillHover, neutralFillRest, neutralForegroundActive, neutralForegroundFocus, neutralForegroundHover, neutralForegroundRest, neutralStealthFillActive, neutralStealthFillHover, neutralStealthFillRest, designTokens, neutralStrokeRest, neutralStrokeHover, neutralStrokeActive } from '../../design-tokens';\nimport { heightNumber } from '../size';\n\n// TODO: Support high contrast? https://www.fast.design/docs/design-systems/high-contrast/#styling-components-using-forced-colors\n\nexport type ButtonAppearance =\n 'neutral'\n | 'accent'\n | 'lightweight'\n | 'outline'\n | 'outline-accent'\n | 'stealth'\n | 'hypertext'\n | 'hypertext-accent'\n\nexport const BaseButtonStyles = (\n context: ElementDefinitionContext,\n definition: FoundationElementDefinition,\n interactivitySelector: string = '',\n nonInteractivitySelector: string = ''\n) => css`\n ${display('inline-flex')} :host {\n justify-content: center;\n align-items: center;\n\n border-style: solid;\n border-color: transparent !important;\n /* TODO: Remove important after tailwind bug is resolved: https://github.com/tailwindlabs/tailwindcss/discussions/2261 */\n border-width: calc(${designTokens['space-stroke-width'].token} * 1px) !important;\n border-radius: calc(${designTokens['space-button-corner-radius'].token} * 1px);\n height: calc(${heightNumber} * 1px);\n min-width: calc(${heightNumber} * 0.5px);\n\n background-color: ${neutralFillRest};\n color: ${neutralForegroundRest};\n fill: currentColor;\n\n cursor: pointer;\n outline: none;\n\n -webkit-appearance: none !important;\n }\n\n :host .control {\n display: inline-flex;\n\n flex-grow: 1;\n justify-content: inherit;\n align-items: inherit;\n\n box-sizing: border-box;\n\n border: none;\n border-radius: inherit;\n\n padding: 0 calc((10 + (${designTokens['space-design-unit'].token} * 2 * ${designTokens['space-density'].token})) * 1px);\n height: inherit;\n\n background: transparent;\n color: inherit;\n fill: inherit;\n\n font-family: inherit;\n font-size: inherit;\n white-space: nowrap;\n\n outline: none;\n text-decoration: none;\n cursor: inherit;\n }\n\n .control,\n .end,\n .start {\n font: inherit;\n }\n .control.icon-only {\n padding: 0;\n line-height: 0;\n }\n :host(${interactivitySelector}:hover) {\n background: ${neutralFillHover};\n color: ${neutralForegroundHover};\n }\n :host(${interactivitySelector}:active) {\n background: ${neutralFillActive};\n color: ${neutralForegroundActive};\n }\n :host(:${focusVisible}) {\n background: ${neutralFillFocus};\n border-color: ${focusStrokeOuter} ;\n box-shadow: 0 0 0 calc(${designTokens['space-focus-stroke-width'].token} * 1px) ${focusStrokeOuter} inset ;\n color: ${neutralForegroundHover};\n }\n .control::-moz-focus-inner {\n border: 0;\n }\n .content {\n pointer-events: none;\n }\n .start,\n .end {\n display: flex;\n pointer-events: none;\n }\n .start {\n margin-inline-end: calc(${designTokens['space-design-unit'].token} * 2px);\n }\n .end {\n margin-inline-start: calc(${designTokens['space-design-unit'].token} * 2px);\n }\n`;\n\nexport const AccentButtonStyles = (\n context: ElementDefinitionContext,\n definition: OverrideFoundationElementDefinition,\n interactivitySelector: string = \"\",\n nonInteractivitySelector: string = \"\"\n) =>\n css`\n :host {\n background: ${accentFillRest};\n color: ${foregroundOnAccentRest};\n }\n :host(${interactivitySelector}:hover) {\n background: ${accentFillHover};\n color: ${foregroundOnAccentHover};\n }\n :host(${interactivitySelector}:active) {\n background: ${accentFillActive};\n color: ${foregroundOnAccentActive};\n }\n :host(:${focusVisible}) {\n background: ${accentFillFocus};\n box-shadow: 0 0 0 calc((${designTokens['space-focus-stroke-width'].token} - ${designTokens['space-stroke-width'].token}) * 1px) ${focusStrokeOuter} inset,\n 0 0 0 calc(((${designTokens['space-focus-stroke-width'].token} * 2) - ${designTokens['space-stroke-width'].token}) * 1px) ${focusStrokeInner} inset ;\n color: ${foregroundOnAccentHover};\n }\n `;\n\nexport const HypertextStyles = (\n context: ElementDefinitionContext,\n definition: OverrideFoundationElementDefinition,\n interactivitySelector: string = \"\",\n nonInteractivitySelector: string = \"\"\n) =>\n css`\n :host {\n height: auto;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n min-width: auto;\n background: transparent;\n /* needs important because of tailwind */\n border: none !important;\n box-shadow: none;\n }\n\n :host .control {\n display: inline;\n padding: 0;\n line-height: 1;\n text-decoration: underline;\n text-decoration-thickness: 1px;\n }\n :host(${interactivitySelector}),\n :host(${interactivitySelector}:hover),\n :host(${interactivitySelector}:active) {\n background: transparent;\n }\n :host(:${focusVisible}) {\n box-shadow: none;\n }\n :host .control${interactivitySelector}:active {\n text-decoration: none;\n }\n :host .control:${focusVisible} {\n text-decoration: underline;\n text-decoration-thickness: 3px;\n }\n `;\n\nexport const HypertextAccentStyles = (\n context: ElementDefinitionContext,\n definition: OverrideFoundationElementDefinition,\n interactivitySelector: string = \"\",\n nonInteractivitySelector: string = \"\"\n) =>\n css`\n ${HypertextStyles(context, definition, interactivitySelector, nonInteractivitySelector)}\n\n :host .control${interactivitySelector} {\n color: ${accentForegroundRest}\n }\n\n :host .control${interactivitySelector}:hover {\n color: ${accentForegroundHover}\n }\n :host .control${interactivitySelector}:active {\n color: ${accentForegroundActive}\n }\n `;\n\nexport const LightweightButtonStyles = (\n context: ElementDefinitionContext,\n definition: OverrideFoundationElementDefinition,\n interactivitySelector: string = \"\",\n nonInteractivitySelector: string = \"\"\n) =>\n css`\n :host {\n background: transparent;\n border: none !important;\n border-radius: 0;\n height: initial;\n min-width: auto;\n }\n\n :host .control {\n padding: 0;\n }\n :host .content {\n position: relative;\n }\n :host(${interactivitySelector}:hover),\n :host(${interactivitySelector}:active) {\n background: transparent;\n }\n :host(:${focusVisible}) {\n border-color: transparent;\n box-shadow: none ;\n }\n :host .content::before {\n content: \"\";\n display: block;\n height: calc(${designTokens['space-stroke-width'].token} * 1px);\n position: absolute;\n top: calc(1em + 3px);\n width: 100%;\n background: transparent;\n }\n :host(${interactivitySelector}:hover) .content::before {\n background: ${neutralForegroundHover};\n }\n :host(${interactivitySelector}:active) .content::before {\n background: transparent;\n }\n :host(${interactivitySelector}:${focusVisible}) .content::before {\n background: ${neutralForegroundFocus};\n height: calc(${designTokens['space-stroke-width'].token} * 2px);\n }\n `;\n\nexport const OutlineButtonStyles = (\n context: ElementDefinitionContext,\n definition: OverrideFoundationElementDefinition,\n interactivitySelector: string = \"\",\n nonInteractivitySelector: string = \"\"\n) =>\n css`\n :host {\n background: transparent;\n border-width: calc(${designTokens['space-stroke-width'].token} * 1px) !important;\n border-color: ${neutralStrokeRest} !important;\n }\n :host(${interactivitySelector}:hover) {\n background: transparent;\n border-color: ${neutralStrokeHover} !important;\n }\n :host(${interactivitySelector}:active) {\n background: ${neutralFillActive};\n border-color: ${neutralStrokeActive} !important;\n }\n `;\n\nexport const OutlineAccentButtonStyles = (\n context: ElementDefinitionContext,\n definition: OverrideFoundationElementDefinition,\n interactivitySelector: string = \"\",\n nonInteractivitySelector: string = \"\"\n) =>\n css`\n :host {\n background: transparent;\n border-width: calc(${designTokens['space-stroke-width'].token} * 1px) !important;\n border-color: ${accentFillRest} !important;\n }\n :host(${interactivitySelector}:hover) {\n background: transparent;\n border-color: ${accentFillHover} !important;\n }\n :host(${interactivitySelector}:active) {\n background: ${accentFillActive};\n border-color: ${accentFillActive} !important;\n color: ${foregroundOnAccentActive}\n }\n `;\n\n/**\n * @internal\n */\nexport const StealthButtonStyles = (\n context: ElementDefinitionContext,\n definition: OverrideFoundationElementDefinition,\n interactivitySelector: string = \"\",\n nonInteractivitySelector: string = \"\"\n) =>\n css`\n :host {\n background: ${neutralStealthFillRest};\n }\n :host(${interactivitySelector}:hover),\n :host(${interactivitySelector}:${focusVisible}) {\n background: ${neutralStealthFillHover};\n }\n :host(${interactivitySelector}:active) {\n background: ${neutralStealthFillActive};\n }\n `;\n","import { css, ElementStyles } from '@microsoft/fast-element';\nimport { ButtonOptions, disabledCursor, ElementDefinitionContext, focusVisible, forcedColorsStylesheetBehavior, FoundationElementDefinition, FoundationElementTemplate } from '@microsoft/fast-foundation';\nimport { SystemColors } from '@microsoft/fast-web-utilities';\nimport { designTokens } from '../../design-tokens';\nimport { appearanceBehavior } from '../../styles/behaviors';\nimport { AccentButtonStyles, BaseButtonStyles, HypertextAccentStyles, HypertextStyles, LightweightButtonStyles, OutlineAccentButtonStyles, OutlineButtonStyles, StealthButtonStyles } from '../../styles/patterns/button';\n\nconst interactivitySelector: string = \"[href]\";\nconst nonInteractivitySelector: string = \":not([href])\";\n\n// TODO: Secondary color styles from more composable style behaviors? #JoshD\n// Perhaps separate colors from appearance?\n\nexport const anchorStyles: FoundationElementTemplate = (\n context: ElementDefinitionContext,\n definition: FoundationElementDefinition\n) => css`\n :host([disabled]) {\n opacity: ${designTokens['color-disabled-opacity'].token};\n cursor: ${disabledCursor};\n }\n ${BaseButtonStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )}\n`.withBehaviors(\n appearanceBehavior(\n 'accent',\n AccentButtonStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n ).withBehaviors(\n forcedColorsStylesheetBehavior(\n css`\n :host([href]) .control {\n background: ${SystemColors.LinkText};\n color: ${SystemColors.HighlightText};\n }\n :host([href]) .control:hover {\n background: ${SystemColors.ButtonFace};\n border-color: ${SystemColors.LinkText};\n box-shadow: none;\n color: ${SystemColors.LinkText};\n fill: currentcolor;\n }\n :host([href]) .control:${focusVisible} {\n box-shadow: 0 0 0 calc((${designTokens['space-focus-stroke-width'].token} - ${designTokens['space-stroke-width'].token}) * 1px) ${SystemColors.LinkText} inset,\n 0 0 0 calc(((${designTokens['space-focus-stroke-width'].token} * 2) - ${designTokens['space-stroke-width'].token}) * 1px) ${SystemColors.HighlightText} inset ;\n }\n `\n )\n )\n ),\n appearanceBehavior(\n 'lightweight',\n LightweightButtonStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )\n ),\n appearanceBehavior(\n 'outline',\n OutlineButtonStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )\n ),\n appearanceBehavior(\n 'outline-accent',\n OutlineAccentButtonStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )\n ),\n appearanceBehavior(\n 'stealth',\n StealthButtonStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )\n ),\n appearanceBehavior(\n 'hypertext',\n HypertextStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )\n ),\n appearanceBehavior(\n 'hypertext-accent',\n HypertextAccentStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )\n )\n);\n","import { attr } from '@microsoft/fast-element';\nimport { Anchor, anchorTemplate } from '@microsoft/fast-foundation';\nimport { ButtonAppearance } from '../../styles/patterns/button';\nimport { anchorStyles } from './anchor.styles';\n\n/**\n * @element natgen-anchor\n */\nexport class NatGenAnchor extends Anchor {\n /**\n * The appearance the anchor should have.\n *\n * @remarks\n * HTML Attribute: appearance\n */\n @attr\n public appearance: ButtonAppearance;\n\n public connectedCallback() {\n super.connectedCallback();\n if (!this.appearance) {\n this.appearance = 'hypertext';\n }\n }\n\n /**\n * Applies 'icon-only' class when there is only an SVG in the default slot\n */\n public defaultSlottedContentChanged(oldValue, newValue): void {\n const slottedElements = this.defaultSlottedContent.filter(\n x => x.nodeType === Node.ELEMENT_NODE\n );\n if (slottedElements.length === 1 && slottedElements[0] instanceof SVGElement) {\n this.control.classList.add('icon-only');\n } else {\n this.control.classList.remove('icon-only');\n }\n }\n}\n\nexport const natGenAnchor = NatGenAnchor.compose({\n baseName: 'anchor',\n baseClass: Anchor,\n template: anchorTemplate,\n styles: anchorStyles,\n shadowOptions: {\n delegatesFocus: true,\n },\n});\n","/**\n * Key Code values\n * @deprecated - KeyCodes are deprecated, use individual string key exports\n */\nexport var KeyCodes;\n(function (KeyCodes) {\n KeyCodes[KeyCodes[\"alt\"] = 18] = \"alt\";\n KeyCodes[KeyCodes[\"arrowDown\"] = 40] = \"arrowDown\";\n KeyCodes[KeyCodes[\"arrowLeft\"] = 37] = \"arrowLeft\";\n KeyCodes[KeyCodes[\"arrowRight\"] = 39] = \"arrowRight\";\n KeyCodes[KeyCodes[\"arrowUp\"] = 38] = \"arrowUp\";\n KeyCodes[KeyCodes[\"back\"] = 8] = \"back\";\n KeyCodes[KeyCodes[\"backSlash\"] = 220] = \"backSlash\";\n KeyCodes[KeyCodes[\"break\"] = 19] = \"break\";\n KeyCodes[KeyCodes[\"capsLock\"] = 20] = \"capsLock\";\n KeyCodes[KeyCodes[\"closeBracket\"] = 221] = \"closeBracket\";\n KeyCodes[KeyCodes[\"colon\"] = 186] = \"colon\";\n KeyCodes[KeyCodes[\"colon2\"] = 59] = \"colon2\";\n KeyCodes[KeyCodes[\"comma\"] = 188] = \"comma\";\n KeyCodes[KeyCodes[\"ctrl\"] = 17] = \"ctrl\";\n KeyCodes[KeyCodes[\"delete\"] = 46] = \"delete\";\n KeyCodes[KeyCodes[\"end\"] = 35] = \"end\";\n KeyCodes[KeyCodes[\"enter\"] = 13] = \"enter\";\n KeyCodes[KeyCodes[\"equals\"] = 187] = \"equals\";\n KeyCodes[KeyCodes[\"equals2\"] = 61] = \"equals2\";\n KeyCodes[KeyCodes[\"equals3\"] = 107] = \"equals3\";\n KeyCodes[KeyCodes[\"escape\"] = 27] = \"escape\";\n KeyCodes[KeyCodes[\"forwardSlash\"] = 191] = \"forwardSlash\";\n KeyCodes[KeyCodes[\"function1\"] = 112] = \"function1\";\n KeyCodes[KeyCodes[\"function10\"] = 121] = \"function10\";\n KeyCodes[KeyCodes[\"function11\"] = 122] = \"function11\";\n KeyCodes[KeyCodes[\"function12\"] = 123] = \"function12\";\n KeyCodes[KeyCodes[\"function2\"] = 113] = \"function2\";\n KeyCodes[KeyCodes[\"function3\"] = 114] = \"function3\";\n KeyCodes[KeyCodes[\"function4\"] = 115] = \"function4\";\n KeyCodes[KeyCodes[\"function5\"] = 116] = \"function5\";\n KeyCodes[KeyCodes[\"function6\"] = 117] = \"function6\";\n KeyCodes[KeyCodes[\"function7\"] = 118] = \"function7\";\n KeyCodes[KeyCodes[\"function8\"] = 119] = \"function8\";\n KeyCodes[KeyCodes[\"function9\"] = 120] = \"function9\";\n KeyCodes[KeyCodes[\"home\"] = 36] = \"home\";\n KeyCodes[KeyCodes[\"insert\"] = 45] = \"insert\";\n KeyCodes[KeyCodes[\"menu\"] = 93] = \"menu\";\n KeyCodes[KeyCodes[\"minus\"] = 189] = \"minus\";\n KeyCodes[KeyCodes[\"minus2\"] = 109] = \"minus2\";\n KeyCodes[KeyCodes[\"numLock\"] = 144] = \"numLock\";\n KeyCodes[KeyCodes[\"numPad0\"] = 96] = \"numPad0\";\n KeyCodes[KeyCodes[\"numPad1\"] = 97] = \"numPad1\";\n KeyCodes[KeyCodes[\"numPad2\"] = 98] = \"numPad2\";\n KeyCodes[KeyCodes[\"numPad3\"] = 99] = \"numPad3\";\n KeyCodes[KeyCodes[\"numPad4\"] = 100] = \"numPad4\";\n KeyCodes[KeyCodes[\"numPad5\"] = 101] = \"numPad5\";\n KeyCodes[KeyCodes[\"numPad6\"] = 102] = \"numPad6\";\n KeyCodes[KeyCodes[\"numPad7\"] = 103] = \"numPad7\";\n KeyCodes[KeyCodes[\"numPad8\"] = 104] = \"numPad8\";\n KeyCodes[KeyCodes[\"numPad9\"] = 105] = \"numPad9\";\n KeyCodes[KeyCodes[\"numPadDivide\"] = 111] = \"numPadDivide\";\n KeyCodes[KeyCodes[\"numPadDot\"] = 110] = \"numPadDot\";\n KeyCodes[KeyCodes[\"numPadMinus\"] = 109] = \"numPadMinus\";\n KeyCodes[KeyCodes[\"numPadMultiply\"] = 106] = \"numPadMultiply\";\n KeyCodes[KeyCodes[\"numPadPlus\"] = 107] = \"numPadPlus\";\n KeyCodes[KeyCodes[\"openBracket\"] = 219] = \"openBracket\";\n KeyCodes[KeyCodes[\"pageDown\"] = 34] = \"pageDown\";\n KeyCodes[KeyCodes[\"pageUp\"] = 33] = \"pageUp\";\n KeyCodes[KeyCodes[\"period\"] = 190] = \"period\";\n KeyCodes[KeyCodes[\"print\"] = 44] = \"print\";\n KeyCodes[KeyCodes[\"quote\"] = 222] = \"quote\";\n KeyCodes[KeyCodes[\"scrollLock\"] = 145] = \"scrollLock\";\n KeyCodes[KeyCodes[\"shift\"] = 16] = \"shift\";\n KeyCodes[KeyCodes[\"space\"] = 32] = \"space\";\n KeyCodes[KeyCodes[\"tab\"] = 9] = \"tab\";\n KeyCodes[KeyCodes[\"tilde\"] = 192] = \"tilde\";\n KeyCodes[KeyCodes[\"windowsLeft\"] = 91] = \"windowsLeft\";\n KeyCodes[KeyCodes[\"windowsOpera\"] = 219] = \"windowsOpera\";\n KeyCodes[KeyCodes[\"windowsRight\"] = 92] = \"windowsRight\";\n})(KeyCodes || (KeyCodes = {}));\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeAlt = 18;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeArrowDown = 40;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeArrowLeft = 37;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeArrowRight = 39;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeArrowUp = 38;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeBack = 8;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeBackSlash = 220;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeBreak = 19;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeCapsLock = 20;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeCloseBracket = 221;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeColon = 186;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeColon2 = 59; // Opera and Firefox\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeComma = 188;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeCtrl = 17;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeDelete = 46;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeEnd = 35;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeEnter = 13;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeEquals = 187;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeEquals2 = 61; // Opera\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeEquals3 = 107; // Firefox\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeEscape = 27;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeForwardSlash = 191;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeFunction1 = 112;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeFunction10 = 121;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeFunction11 = 122;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeFunction12 = 123;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeFunction2 = 113;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeFunction3 = 114;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeFunction4 = 115;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeFunction5 = 116;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeFunction6 = 117;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeFunction7 = 118;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeFunction8 = 119;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeFunction9 = 120;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeHome = 36;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeInsert = 45;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeMenu = 93;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeMinus = 189;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeMinus2 = 109; // Opera and Firefox\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumLock = 144;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPad0 = 96;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPad1 = 97;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPad2 = 98;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPad3 = 99;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPad4 = 100;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPad5 = 101;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPad6 = 102;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPad7 = 103;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPad8 = 104;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPad9 = 105;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPadDivide = 111;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPadDot = 110;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPadMinus = 109;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPadMultiply = 106;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeNumPadPlus = 107;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeOpenBracket = 219;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodePageDown = 34;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodePageUp = 33;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodePeriod = 190;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodePrint = 44;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeQuote = 222;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeScrollLock = 145;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeShift = 16;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeSpace = 32;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeTab = 9;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeTilde = 192;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeWindowsLeft = 91;\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeWindowsOpera = 219; // Opera\n/**\n * @deprecated - KeyCodes are deprecated, use string key exports\n */\nexport const keyCodeWindowsRight = 92;\n/**\n * String values for use with KeyboardEvent.key\n */\nexport const keyArrowDown = \"ArrowDown\";\nexport const keyArrowLeft = \"ArrowLeft\";\nexport const keyArrowRight = \"ArrowRight\";\nexport const keyArrowUp = \"ArrowUp\";\nexport const keyEnter = \"Enter\";\nexport const keyEscape = \"Escape\";\nexport const keyHome = \"Home\";\nexport const keyEnd = \"End\";\nexport const keyFunction2 = \"F2\";\nexport const keyPageDown = \"PageDown\";\nexport const keyPageUp = \"PageUp\";\nexport const keySpace = \" \";\nexport const keyTab = \"Tab\";\nexport const keyBackspace = \"Backspace\";\nexport const keyDelete = \"Delete\";\nexport const ArrowKeys = {\n ArrowDown: keyArrowDown,\n ArrowLeft: keyArrowLeft,\n ArrowRight: keyArrowRight,\n ArrowUp: keyArrowUp,\n};\n","import { attr, booleanConverter, DOM, emptyArray, observable, } from \"@microsoft/fast-element\";\nimport { keyEnter } from \"@microsoft/fast-web-utilities\";\nconst proxySlotName = \"form-associated-proxy\";\nconst ElementInternalsKey = \"ElementInternals\";\n/**\n * @alpha\n */\nexport const supportsElementInternals = ElementInternalsKey in window &&\n \"setFormValue\" in window[ElementInternalsKey].prototype;\nconst InternalsMap = new WeakMap();\n/**\n * Base function for providing Custom Element Form Association.\n *\n * @alpha\n */\nexport function FormAssociated(BaseCtor) {\n const C = class extends BaseCtor {\n constructor(...args) {\n super(...args);\n /**\n * Track whether the value has been changed from the initial value\n */\n this.dirtyValue = false;\n /**\n * Sets the element's disabled state. A disabled element will not be included during form submission.\n *\n * @remarks\n * HTML Attribute: disabled\n */\n this.disabled = false;\n /**\n * These are events that are still fired by the proxy\n * element based on user / programmatic interaction.\n *\n * The proxy implementation should be transparent to\n * the app author, so block these events from emitting.\n */\n this.proxyEventsToBlock = [\"change\", \"click\"];\n this.proxyInitialized = false;\n this.required = false;\n this.initialValue = this.initialValue || \"\";\n if (!this.elementInternals) {\n // When elementInternals is not supported, formResetCallback is\n // bound to an event listener, so ensure the handler's `this`\n // context is correct.\n this.formResetCallback = this.formResetCallback.bind(this);\n }\n }\n /**\n * Must evaluate to true to enable elementInternals.\n * Feature detects API support and resolve respectively\n *\n * @internal\n */\n static get formAssociated() {\n return supportsElementInternals;\n }\n /**\n * Returns the validity state of the element\n *\n * @alpha\n */\n get validity() {\n return this.elementInternals\n ? this.elementInternals.validity\n : this.proxy.validity;\n }\n /**\n * Retrieve a reference to the associated form.\n * Returns null if not associated to any form.\n *\n * @alpha\n */\n get form() {\n return this.elementInternals ? this.elementInternals.form : this.proxy.form;\n }\n /**\n * Retrieve the localized validation message,\n * or custom validation message if set.\n *\n * @alpha\n */\n get validationMessage() {\n return this.elementInternals\n ? this.elementInternals.validationMessage\n : this.proxy.validationMessage;\n }\n /**\n * Whether the element will be validated when the\n * form is submitted\n */\n get willValidate() {\n return this.elementInternals\n ? this.elementInternals.willValidate\n : this.proxy.willValidate;\n }\n /**\n * A reference to all associated label elements\n */\n get labels() {\n if (this.elementInternals) {\n return Object.freeze(Array.from(this.elementInternals.labels));\n }\n else if (this.proxy instanceof HTMLElement &&\n this.proxy.ownerDocument &&\n this.id) {\n // Labels associated by wrapping the element: \n const parentLabels = this.proxy.labels;\n // Labels associated using the `for` attribute\n const forLabels = Array.from(this.proxy.getRootNode().querySelectorAll(`[for='${this.id}']`));\n const labels = parentLabels\n ? forLabels.concat(Array.from(parentLabels))\n : forLabels;\n return Object.freeze(labels);\n }\n else {\n return emptyArray;\n }\n }\n /**\n * Invoked when the `value` property changes\n * @param previous - the previous value\n * @param next - the new value\n *\n * @remarks\n * If elements extending `FormAssociated` implement a `valueChanged` method\n * They must be sure to invoke `super.valueChanged(previous, next)` to ensure\n * proper functioning of `FormAssociated`\n */\n valueChanged(previous, next) {\n this.dirtyValue = true;\n if (this.proxy instanceof HTMLElement) {\n this.proxy.value = this.value;\n }\n this.currentValue = this.value;\n this.setFormValue(this.value);\n this.validate();\n }\n currentValueChanged() {\n this.value = this.currentValue;\n }\n /**\n * Invoked when the `initialValue` property changes\n *\n * @param previous - the previous value\n * @param next - the new value\n *\n * @remarks\n * If elements extending `FormAssociated` implement a `initialValueChanged` method\n * They must be sure to invoke `super.initialValueChanged(previous, next)` to ensure\n * proper functioning of `FormAssociated`\n */\n initialValueChanged(previous, next) {\n // If the value is clean and the component is connected to the DOM\n // then set value equal to the attribute value.\n if (!this.dirtyValue) {\n this.value = this.initialValue;\n this.dirtyValue = false;\n }\n }\n /**\n * Invoked when the `disabled` property changes\n *\n * @param previous - the previous value\n * @param next - the new value\n *\n * @remarks\n * If elements extending `FormAssociated` implement a `disabledChanged` method\n * They must be sure to invoke `super.disabledChanged(previous, next)` to ensure\n * proper functioning of `FormAssociated`\n */\n disabledChanged(previous, next) {\n if (this.proxy instanceof HTMLElement) {\n this.proxy.disabled = this.disabled;\n }\n DOM.queueUpdate(() => this.classList.toggle(\"disabled\", this.disabled));\n }\n /**\n * Invoked when the `name` property changes\n *\n * @param previous - the previous value\n * @param next - the new value\n *\n * @remarks\n * If elements extending `FormAssociated` implement a `nameChanged` method\n * They must be sure to invoke `super.nameChanged(previous, next)` to ensure\n * proper functioning of `FormAssociated`\n */\n nameChanged(previous, next) {\n if (this.proxy instanceof HTMLElement) {\n this.proxy.name = this.name;\n }\n }\n /**\n * Invoked when the `required` property changes\n *\n * @param previous - the previous value\n * @param next - the new value\n *\n * @remarks\n * If elements extending `FormAssociated` implement a `requiredChanged` method\n * They must be sure to invoke `super.requiredChanged(previous, next)` to ensure\n * proper functioning of `FormAssociated`\n */\n requiredChanged(prev, next) {\n if (this.proxy instanceof HTMLElement) {\n this.proxy.required = this.required;\n }\n DOM.queueUpdate(() => this.classList.toggle(\"required\", this.required));\n this.validate();\n }\n /**\n * The element internals object. Will only exist\n * in browsers supporting the attachInternals API\n */\n get elementInternals() {\n if (!supportsElementInternals) {\n return null;\n }\n let internals = InternalsMap.get(this);\n if (!internals) {\n internals = this.attachInternals();\n InternalsMap.set(this, internals);\n }\n return internals;\n }\n /**\n * @internal\n */\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener(\"keypress\", this._keypressHandler);\n if (!this.value) {\n this.value = this.initialValue;\n this.dirtyValue = false;\n }\n if (!this.elementInternals) {\n this.attachProxy();\n if (this.form) {\n this.form.addEventListener(\"reset\", this.formResetCallback);\n }\n }\n }\n /**\n * @internal\n */\n disconnectedCallback() {\n super.disconnectedCallback();\n this.proxyEventsToBlock.forEach(name => this.proxy.removeEventListener(name, this.stopPropagation));\n if (!this.elementInternals && this.form) {\n this.form.removeEventListener(\"reset\", this.formResetCallback);\n }\n }\n /**\n * Return the current validity of the element.\n */\n checkValidity() {\n return this.elementInternals\n ? this.elementInternals.checkValidity()\n : this.proxy.checkValidity();\n }\n /**\n * Return the current validity of the element.\n * If false, fires an invalid event at the element.\n */\n reportValidity() {\n return this.elementInternals\n ? this.elementInternals.reportValidity()\n : this.proxy.reportValidity();\n }\n /**\n * Set the validity of the control. In cases when the elementInternals object is not\n * available (and the proxy element is used to report validity), this function will\n * do nothing unless a message is provided, at which point the setCustomValidity method\n * of the proxy element will be invoked with the provided message.\n * @param flags - Validity flags\n * @param message - Optional message to supply\n * @param anchor - Optional element used by UA to display an interactive validation UI\n */\n setValidity(flags, message, anchor) {\n if (this.elementInternals) {\n this.elementInternals.setValidity(flags, message, anchor);\n }\n else if (typeof message === \"string\") {\n this.proxy.setCustomValidity(message);\n }\n }\n /**\n * Invoked when a connected component's form or fieldset has its disabled\n * state changed.\n * @param disabled - the disabled value of the form / fieldset\n */\n formDisabledCallback(disabled) {\n this.disabled = disabled;\n }\n formResetCallback() {\n this.value = this.initialValue;\n this.dirtyValue = false;\n }\n /**\n * Attach the proxy element to the DOM\n */\n attachProxy() {\n var _a;\n if (!this.proxyInitialized) {\n this.proxyInitialized = true;\n this.proxy.style.display = \"none\";\n this.proxyEventsToBlock.forEach(name => this.proxy.addEventListener(name, this.stopPropagation));\n // These are typically mapped to the proxy during\n // property change callbacks, but during initialization\n // on the initial call of the callback, the proxy is\n // still undefined. We should find a better way to address this.\n this.proxy.disabled = this.disabled;\n this.proxy.required = this.required;\n if (typeof this.name === \"string\") {\n this.proxy.name = this.name;\n }\n if (typeof this.value === \"string\") {\n this.proxy.value = this.value;\n }\n this.proxy.setAttribute(\"slot\", proxySlotName);\n this.proxySlot = document.createElement(\"slot\");\n this.proxySlot.setAttribute(\"name\", proxySlotName);\n }\n (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.appendChild(this.proxySlot);\n this.appendChild(this.proxy);\n }\n /**\n * Detach the proxy element from the DOM\n */\n detachProxy() {\n var _a;\n this.removeChild(this.proxy);\n (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.removeChild(this.proxySlot);\n }\n /** {@inheritDoc (FormAssociated:interface).validate} */\n validate(anchor) {\n if (this.proxy instanceof HTMLElement) {\n this.setValidity(this.proxy.validity, this.proxy.validationMessage, anchor);\n }\n }\n /**\n * Associates the provided value (and optional state) with the parent form.\n * @param value - The value to set\n * @param state - The state object provided to during session restores and when autofilling.\n */\n setFormValue(value, state) {\n if (this.elementInternals) {\n this.elementInternals.setFormValue(value, state || value);\n }\n }\n _keypressHandler(e) {\n switch (e.key) {\n case keyEnter:\n if (this.form instanceof HTMLFormElement) {\n // Implicit submission\n const defaultButton = this.form.querySelector(\"[type=submit]\");\n defaultButton === null || defaultButton === void 0 ? void 0 : defaultButton.click();\n }\n break;\n }\n }\n /**\n * Used to stop propagation of proxy element events\n * @param e - Event object\n */\n stopPropagation(e) {\n e.stopPropagation();\n }\n };\n attr({ mode: \"boolean\" })(C.prototype, \"disabled\");\n attr({ mode: \"fromView\", attribute: \"value\" })(C.prototype, \"initialValue\");\n attr({ attribute: \"current-value\" })(C.prototype, \"currentValue\");\n attr(C.prototype, \"name\");\n attr({ mode: \"boolean\" })(C.prototype, \"required\");\n observable(C.prototype, \"value\");\n return C;\n}\n/**\n * @alpha\n */\nexport function CheckableFormAssociated(BaseCtor) {\n class C extends FormAssociated(BaseCtor) {\n }\n class D extends C {\n constructor(...args) {\n super(args);\n /**\n * Tracks whether the \"checked\" property has been changed.\n * This is necessary to provide consistent behavior with\n * normal input checkboxes\n */\n this.dirtyChecked = false;\n /**\n * Provides the default checkedness of the input element\n * Passed down to proxy\n *\n * @public\n * @remarks\n * HTML Attribute: checked\n */\n this.checkedAttribute = false;\n /**\n * The checked state of the control.\n *\n * @public\n */\n this.checked = false;\n // Re-initialize dirtyChecked because initialization of other values\n // causes it to become true\n this.dirtyChecked = false;\n }\n checkedAttributeChanged() {\n this.defaultChecked = this.checkedAttribute;\n }\n /**\n * @internal\n */\n defaultCheckedChanged() {\n if (!this.dirtyChecked) {\n // Setting this.checked will cause us to enter a dirty state,\n // but if we are clean when defaultChecked is changed, we want to stay\n // in a clean state, so reset this.dirtyChecked\n this.checked = this.defaultChecked;\n this.dirtyChecked = false;\n }\n }\n checkedChanged(prev, next) {\n if (!this.dirtyChecked) {\n this.dirtyChecked = true;\n }\n this.currentChecked = this.checked;\n this.updateForm();\n if (this.proxy instanceof HTMLInputElement) {\n this.proxy.checked = this.checked;\n }\n if (prev !== undefined) {\n this.$emit(\"change\");\n }\n this.validate();\n }\n currentCheckedChanged(prev, next) {\n this.checked = this.currentChecked;\n }\n updateForm() {\n const value = this.checked ? this.value : null;\n this.setFormValue(value, value);\n }\n connectedCallback() {\n super.connectedCallback();\n this.updateForm();\n }\n formResetCallback() {\n super.formResetCallback();\n this.checked = !!this.checkedAttribute;\n this.dirtyChecked = false;\n }\n }\n attr({ attribute: \"checked\", mode: \"boolean\" })(D.prototype, \"checkedAttribute\");\n attr({ attribute: \"current-checked\", converter: booleanConverter })(D.prototype, \"currentChecked\");\n observable(D.prototype, \"defaultChecked\");\n observable(D.prototype, \"checked\");\n return D;\n}\n","import { FormAssociated } from \"../form-associated/form-associated.js\";\nimport { FoundationElement } from \"../foundation-element/foundation-element.js\";\nclass _Button extends FoundationElement {\n}\n/**\n * A form-associated base class for the {@link @microsoft/fast-foundation#(Button:class)} component.\n *\n * @internal\n */\nexport class FormAssociatedButton extends FormAssociated(_Button) {\n constructor() {\n super(...arguments);\n this.proxy = document.createElement(\"input\");\n }\n}\n","import { __decorate } from \"tslib\";\nimport { attr, observable } from \"@microsoft/fast-element\";\nimport { ARIAGlobalStatesAndProperties, StartEnd, } from \"../patterns/index.js\";\nimport { applyMixins } from \"../utilities/apply-mixins.js\";\nimport { FormAssociatedButton } from \"./button.form-associated.js\";\n/**\n * A Button Custom HTML Element.\n * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button | \n`;\n","import { css, ElementStyles } from '@microsoft/fast-element';\nimport { ButtonOptions, disabledCursor, ElementDefinitionContext, FoundationElementDefinition, FoundationElementTemplate } from '@microsoft/fast-foundation';\nimport { designTokens } from '../../design-tokens';\nimport { appearanceBehavior } from '../../styles/behaviors';\nimport { AccentButtonStyles, BaseButtonStyles, HypertextAccentStyles, HypertextStyles, LightweightButtonStyles, OutlineAccentButtonStyles, OutlineButtonStyles, StealthButtonStyles } from '../../styles/patterns/button';\n\nconst interactivitySelector: string = ':not([disabled])';\nconst nonInteractivitySelector: string = '[disabled]';\n\n// TODO: Secondary color styles from more composable style behaviors? #JoshD\n// Perhaps separate colors from appearance?\n\nexport const buttonStyles: FoundationElementTemplate = (\n context: ElementDefinitionContext,\n definition: FoundationElementDefinition\n) => css`\n :host([disabled]) {\n opacity: ${designTokens['color-disabled-opacity'].token};\n cursor: ${disabledCursor};\n }\n ${BaseButtonStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )}\n`.withBehaviors(\n appearanceBehavior(\n 'accent',\n AccentButtonStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )\n ),\n appearanceBehavior(\n 'lightweight',\n LightweightButtonStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )\n ),\n appearanceBehavior(\n 'outline',\n OutlineButtonStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )\n ),\n appearanceBehavior(\n 'outline-accent',\n OutlineAccentButtonStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )\n ),\n appearanceBehavior(\n 'stealth',\n StealthButtonStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )\n ),\n appearanceBehavior(\n 'hypertext',\n HypertextStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )\n ),\n appearanceBehavior(\n 'hypertext-accent',\n HypertextAccentStyles(\n context,\n definition,\n interactivitySelector,\n nonInteractivitySelector\n )\n )\n);\n","import { attr, css, DOM, html, observable } from '@microsoft/fast-element';\nimport { DesignToken, DesignTokenChangeRecord, FoundationElement } from '@microsoft/fast-foundation';\nimport { designTokens } from '../../design-tokens';\n\n/**\n * @element natgen-icon\n */\nexport class NatGenIcon extends FoundationElement {\n protected currentIconName: string;\n\n @observable\n public iconContent: string;\n\n @observable\n public viewBox: string;\n\n @attr\n name: string;\n nameChanged(previousValue: string, nextValue: string) {\n if(previousValue != nextValue) {\n if (previousValue && !previousValue.includes('/') && `icon-${previousValue}` in designTokens) {\n designTokens[`icon-${previousValue}`].token.unsubscribe(this, this);\n }\n\n DOM.queueUpdate(() => this.loadIcon());\n\n if(!nextValue.includes('/') && `icon-${nextValue}` in designTokens)\n designTokens[`icon-${nextValue}`].token.subscribe(this, this)\n }\n }\n\n handleChange(record: DesignTokenChangeRecord>): void {\n if (record.token === designTokens[`icon-${this.name}`].token) {\n DOM.queueUpdate(() => this.loadIcon());\n }\n }\n\n loadIcon() {\n const iconName: string = !this.name.includes('/') && `icon-${this.name}` in designTokens ?\n designTokens[`icon-${this.name}`].getValueFor(this) :\n this.name;\n\n if(iconName != this.currentIconName)\n {\n this.currentIconName = iconName;\n\n var path = iconName.startsWith('//') ? `${iconName.substring(2)}.svg` : `${process.env.ASSET_PATH ? process.env.ASSET_PATH : ''}icons/${iconName}.svg`;\n\n // TODO: throw loaded event?\n fetch(path)\n .then(r => r.text())\n .then(text => {\n const parser = new DOMParser();\n const svgElement = parser.parseFromString(text, 'image/svg+xml').querySelector('svg');\n this.viewBox = svgElement.getAttribute('viewBox');\n this.iconContent = svgElement.innerHTML;\n })\n .catch(reason => console.error(`Unknown icon ${this.name}`, reason));\n }\n }\n\n getHeight() {\n return this.size * designTokens['space-design-unit'].getValueFor(this);\n }\n\n getWidth() {\n const viewBoxSizes = this.viewBox?.split(' ').map(s => parseFloat(s));\n\n if(viewBoxSizes == null || viewBoxSizes.length != 4)\n return this.getHeight();\n\n return (this.getHeight() / viewBoxSizes[3]) * viewBoxSizes[2];\n }\n\n @attr\n size: number = 5;\n}\n\nexport const natGenIcon = NatGenIcon.compose({\n baseName: 'icon',\n template: html`\n \n `,\n styles: css`\n :host {\n display: inline-flex;\n }\n\n :host > svg {\n fill: currentColor;\n width: 100%;\n height: 100%;\n }\n `\n});\n","import { attr } from '@microsoft/fast-element';\nimport { Button, buttonTemplate } from '@microsoft/fast-foundation';\nimport { ButtonAppearance } from '../../styles/patterns/button';\nimport { buttonStyles } from './button.styles';\nimport { NatGenIcon } from '../icon/icon';\n\n/**\n * @element natgen-button\n */\nexport class NatGenButton extends Button {\n /**\n * The appearance the button should have.\n *\n * @remarks\n * HTML Attribute: appearance\n */\n @attr\n public appearance: ButtonAppearance;\n\n public connectedCallback() {\n super.connectedCallback();\n if (!this.appearance) {\n this.appearance = 'neutral';\n }\n }\n\n /**\n * Applies 'icon-only' class when there is only an SVG in the default slot\n */\n public defaultSlottedContentChanged(oldValue, newValue): void {\n const slottedElements = this.defaultSlottedContent.filter(\n x => x.nodeType === Node.ELEMENT_NODE\n );\n if (slottedElements.length === 1 && (slottedElements[0] instanceof SVGElement || slottedElements[0] instanceof NatGenIcon)) {\n this.control.classList.add('icon-only');\n } else {\n this.control.classList.remove('icon-only');\n }\n }\n}\n\nexport const natGenButton = NatGenButton.compose({\n baseName: 'button',\n baseClass: Button,\n template: buttonTemplate,\n styles: buttonStyles,\n shadowOptions: {\n delegatesFocus: true,\n },\n});\n","import { FoundationElement } from \"../foundation-element/foundation-element.js\";\n/**\n * An Card Custom HTML Element.\n *\n * @slot - The default slot for the card content\n *\n * @public\n */\nexport class Card extends FoundationElement {\n}\n","import { html } from \"@microsoft/fast-element\";\n/**\n * The template for the {@link @microsoft/fast-foundation#Card} component.\n * @public\n */\nexport const cardTemplate = (context, definition) => html `\n \n`;\n","import { css, ElementStyles } from '@microsoft/fast-element';\nimport { display, forcedColorsStylesheetBehavior, FoundationElementTemplate } from '@microsoft/fast-foundation';\nimport { SystemColors } from '@microsoft/fast-web-utilities';\nimport { neutralLayer1, designTokens } from '../../design-tokens';\nimport { elevationRule } from '../../styles/elevation';\n\n// TODO: Break card from rectangle shape and re-add contain: content?\nexport const cardStyles: FoundationElementTemplate = (\n context,\n definition\n) => css`\n ${display('block')} :host {\n --elevation: 4;\n\n display: block;\n height: var(--card-height, auto);\n width: var(--card-width, 100%);\n box-sizing: border-box;\n background: ${neutralLayer1};\n border-radius: calc(${designTokens['space-corner-radius'].token} * 1px);\n ${elevationRule}\n }\n `.withBehaviors(\n forcedColorsStylesheetBehavior(\n css`\n :host {\n background: ${SystemColors.Canvas};\n color: ${SystemColors.CanvasText};\n fill: currentcolor;\n }\n `\n )\n );\n","import { Card, cardTemplate } from '@microsoft/fast-foundation';\nimport { cardStyles } from './card.styles';\n\n/**\n * @element natgen-card\n */\nexport class NatGenCard extends Card {\n\n}\n\nexport const natGenCard = NatGenCard.compose({\n baseName: 'card',\n baseClass: Card,\n template: cardTemplate,\n styles: cardStyles\n});\n","import { css, ElementStyles } from '@microsoft/fast-element';\nimport { CheckboxOptions, disabledCursor, display, focusVisible, forcedColorsStylesheetBehavior, FoundationElementTemplate } from '@microsoft/fast-foundation';\nimport { SystemColors } from '@microsoft/fast-web-utilities';\nimport { accentFillActive, accentFillFocus, accentFillHover, accentFillRest, focusStrokeOuter, foregroundOnAccentRest, neutralForegroundActive, neutralForegroundRest, neutralInputFillActive, neutralInputFillHover, neutralInputFillRest, neutralStrokeActive, neutralStrokeFocus, neutralStrokeHover, neutralStrokeRest, designTokens } from '../../design-tokens';\nimport { heightNumber } from '../../styles/size';\n\n// TODO: Token for max checkbox border radius?\n\nexport const checkboxStyles: FoundationElementTemplate = (\n context,\n definition\n) =>\n css`\n ${display(\"inline-flex\")} :host {\n position: relative;\n align-items: center;\n outline: none;\n margin: calc(${designTokens['space-design-unit'].token} * 1px) 0;\n ${\n /*\n * Chromium likes to select label text or the default slot when\n * the checkbox is clicked. Maybe there is a better solution here?\n */ \"\"\n } user-select: none;\n }\n .control {\n --control-size: calc(((${heightNumber} / 2) + (${designTokens['space-stroke-width'].token} * 2)) * 1px); \n position: relative;\n flex-shring: 0;\n padding: calc(${designTokens['space-design-unit'].token} * 0.5px);\n width: var(--control-size);\n height: var(--control-size);\n box-sizing: border-box;\n border-radius: min(calc(${designTokens['space-input-corner-radius'].token} * 1px), 4px);\n border: calc(${designTokens['space-stroke-width'].token} * 1px) solid ${neutralStrokeRest};\n background: ${neutralInputFillRest};\n outline: none;\n cursor: pointer;\n }\n :host(:hover) .control {\n background: ${neutralInputFillHover};\n border-color: ${neutralStrokeHover};\n }\n :host(:active) .control {\n background: ${neutralInputFillActive};\n border-color: ${neutralStrokeActive};\n }\n :host(:${focusVisible}) .control {\n border-color: ${neutralStrokeFocus};\n outline: calc(${designTokens['space-focus-stroke-width'].token} * 1px) solid ${focusStrokeOuter};\n outline-offset: calc(${designTokens['space-stroke-width'].token} * 1px);\n }\n :host([aria-checked=\"true\"]) .control {\n background: ${accentFillRest};\n border-color: ${accentFillRest};\n }\n :host([aria-checked=\"true\"]:enabled:hover) .control {\n background: ${accentFillHover};\n border-color: ${accentFillHover};\n }\n :host([aria-checked=\"true\"]:enabled:active) .control {\n background: ${accentFillActive};\n border-color: ${accentFillActive};\n }\n :host([aria-checked=\"true\"]:enabled:${focusVisible}) .control {\n background: ${accentFillFocus};\n border-color: ${accentFillFocus};\n }\n .label__hidden {\n display: none;\n visibility: hidden;\n }\n .label {\n font-family: ${designTokens['typography-font-family'].token};\n color: ${neutralForegroundRest};\n padding-inline-start: calc(${designTokens['space-design-unit'].token} * 2px + 2px);\n cursor: pointer;\n }\n slot[name=\"checked-indicator\"],\n slot[name=\"indeterminate-indicator\"] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n opacity: 0;\n pointer-events: none;\n }\n slot[name=\"checked-indicator\"] {\n fill: ${foregroundOnAccentRest};\n }\n slot[name=\"indeterminate-indicator\"] {\n fill: ${neutralForegroundActive};\n position: absolute;\n top: 0;\n }\n :host(.disabled) .label,\n :host(.readonly) .label,\n :host(.readonly) .control,\n :host(.disabled) .control {\n cursor: ${disabledCursor};\n }\n :host([aria-checked=\"true\"]:not(.indeterminate)) slot[name='checked-indicator'],\n :host([aria-checked=\"true\"].indeterminate) slot[name='indeterminate-indicator'] {\n opacity: 1;\n }\n :host(.disabled) {\n opacity: ${designTokens['color-disabled-opacity'].token};\n }\n :host([aria-checked=\"true\"].indeterminate) .control {\n background: ${neutralInputFillActive};\n border-color: ${neutralStrokeRest};\n }\n :host([aria-checked=\"true\"].indeterminate:hover) .control {\n background: ${neutralInputFillActive};\n border-color: ${neutralStrokeHover};\n }\n :host([aria-checked=\"true\"].indeterminate:active) .control {\n background: ${neutralInputFillActive};\n border-color: ${neutralStrokeActive};\n }\n :host([aria-checked=\"true\"].indeterminate:${focusVisible}) .control {\n background: ${neutralInputFillActive};\n border-color: ${neutralStrokeFocus};\n box-shadow: 0 0 0 calc(${designTokens['space-stroke-width'].token} * 1px) ${neutralInputFillRest},\n 0 0 0 calc(${designTokens['space-focus-stroke-width'].token} * 1px) ${neutralStrokeFocus};\n }\n `.withBehaviors(\n forcedColorsStylesheetBehavior(\n css`\n .control {\n border-color: ${SystemColors.FieldText};\n background: ${SystemColors.Field};\n }\n slot[name='checked-indicator'],\n slot[name='indeterminate-indicator'] {\n fill: ${SystemColors.FieldText};\n }\n :host(:enabled:hover) .control,\n :host(:enabled:active) .control {\n border-color: ${SystemColors.Highlight};\n background: ${SystemColors.Field};\n }\n :host(:enabled:${focusVisible}) .control,\n :host(.checked:enabled:${focusVisible}) .control {\n forced-color-adjust: none;\n background: ${SystemColors.Field};\n border-color: ${SystemColors.FieldText};\n box-shadow: 0 0 0 calc(${designTokens['space-focus-stroke-width'].token} * 1px) ${SystemColors.FieldText};\n }\n :host(.checked) .control {\n background: ${SystemColors.Highlight};\n border-color: ${SystemColors.Highlight};\n }\n :host(.checked:enabled:hover) .control,\n :host(.checked:enabled:active) .control {\n background: ${SystemColors.Field};\n border-color: ${SystemColors.Highlight}\n }\n :host(.checked) slot[name='checked-indicator'],\n :host(.checked) slot[name='indeterminate-indicator'] {\n fill: ${SystemColors.HighlightText};\n }\n :host(.checked:enabled:hover) slot[name='checked-indicator'],\n :host(.checked:enabled:${focusVisible}) slot[name='checked-indicator'],\n :host(.checked:enabled:hover) slot[name='indeterminate-indicator'],\n :host(.checked:enabled:${focusVisible}) slot[name='indeterminate-indicator'] {\n fill: ${SystemColors.Highlight};\n }\n :host(.disabled) {\n opacity: 1;\n }\n :host(.disabled) .label {\n color: ${SystemColors.GrayText};\n }\n :host(.disabled) .control {\n border-color: ${SystemColors.GrayText};\n background: ${SystemColors.Field};\n }\n :host(.disabled) slot[name='indeterminate-indicator'],\n :host(.checked.disabled) .control:hover slot[name='indeterminate-indicator'] {\n color: ${SystemColors.GrayText};\n fill: currentcolor;\n }\n :host(.disabled) slot[name='checked-indicator'],\n :host(.checked.disabled) .control:hover slot[name='checked-indicator'] {\n color: ${SystemColors.GrayText};\n fill: currentcolor;\n }\n `\n )\n );\n","import { css, ElementStyles } from \"@microsoft/fast-element\"\nimport { ElementDefinitionContext, FoundationElementDefinition, RadioOptions, StartEndOptions } from \"@microsoft/fast-foundation\"\nimport { accentForegroundRest, designTokens, neutralStrokeActive, neutralStrokeRest } from \"../../design-tokens\";\nimport { heightNumber, paddingNumber } from \"../size\";\n\nexport const selectableCardStyles: (\n context: ElementDefinitionContext,\n definition: FoundationElementDefinition\n) => ElementStyles = (\n context: ElementDefinitionContext,\n definition: FoundationElementDefinition\n) => css`\n :host {\n display: inline-flex;\n align-items: center;\n\n padding: calc(${designTokens['space-design-unit'].token} * 1px) calc(${paddingNumber} * 1px);\n min-height: calc(${heightNumber} * 1px);\n\n cursor: pointer;\n\n --card-width: auto;\n\n border-width: calc(${designTokens['space-stroke-width'].token} * 1px) !important;\n border-color: ${neutralStrokeRest} !important;\n }\n\n :host(:hover) {\n border-color: ${accentForegroundRest} !important;\n }\n\n :host(:active) {\n border-color: ${neutralStrokeActive} !important;\n }\n\n :host([floating-indicator]) {\n margin-top: calc(${designTokens['space-design-unit'].token} * 2px);\n margin-bottom: calc(${designTokens['space-design-unit'].token} * 2px);\n }\n\n :host([floating-indicator]) .control {\n position: absolute;\n }\n\n :host([floating-indicator]:not(.checked)) .control {\n display: none;\n }\n\n :host([floating-indicator*=\"top\"]) .control {\n top: calc(var(--control-size) / -2);\n }\n\n :host([floating-indicator*=\"bottom\"]) .control {\n bottom: calc(var(--control-size) / -2);\n }\n\n :host([floating-indicator*=\"left\"]) .control {\n left: calc(var(--control-size) / -2);\n }\n\n :host([floating-indicator*=\"right\"]) .control {\n right: calc(var(--control-size) / -2);\n }\n\n .control {\n margin-left: auto;\n }\n\n .label {\n padding: 0;\n } \n\n .start {\n margin-inline-end: calc(${designTokens['space-design-unit'].token} * 2px);\n }\n\n .end {\n margin-inline-start: calc(${designTokens['space-design-unit'].token} * 2px);\n }\n`;","import { CheckableFormAssociated } from \"../form-associated/form-associated.js\";\nimport { FoundationElement } from \"../foundation-element/foundation-element.js\";\nclass _Checkbox extends FoundationElement {\n}\n/**\n * A form-associated base class for the {@link @microsoft/fast-foundation#(Checkbox:class)} component.\n *\n * @internal\n */\nexport class FormAssociatedCheckbox extends CheckableFormAssociated(_Checkbox) {\n constructor() {\n super(...arguments);\n this.proxy = document.createElement(\"input\");\n }\n}\n","import { __decorate } from \"tslib\";\nimport { attr, observable } from \"@microsoft/fast-element\";\nimport { keySpace } from \"@microsoft/fast-web-utilities\";\nimport { FormAssociatedCheckbox } from \"./checkbox.form-associated.js\";\n/**\n * A Checkbox Custom HTML Element.\n * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#checkbox | ARIA checkbox }.\n *\n * @slot checked-indicator - The checked indicator\n * @slot indeterminate-indicator - The indeterminate indicator\n * @slot - The default slot for the label\n * @csspart control - The element representing the visual checkbox control\n * @csspart label - The label\n * @fires change - Emits a custom change event when the checked state changes\n *\n * @public\n */\nexport class Checkbox extends FormAssociatedCheckbox {\n constructor() {\n super();\n /**\n * The element's value to be included in form submission when checked.\n * Default to \"on\" to reach parity with input[type=\"checkbox\"]\n *\n * @internal\n */\n this.initialValue = \"on\";\n /**\n * The indeterminate state of the control\n */\n this.indeterminate = false;\n /**\n * @internal\n */\n this.keypressHandler = (e) => {\n if (this.readOnly) {\n return;\n }\n switch (e.key) {\n case keySpace:\n if (this.indeterminate) {\n this.indeterminate = false;\n }\n this.checked = !this.checked;\n break;\n }\n };\n /**\n * @internal\n */\n this.clickHandler = (e) => {\n if (!this.disabled && !this.readOnly) {\n if (this.indeterminate) {\n this.indeterminate = false;\n }\n this.checked = !this.checked;\n }\n };\n this.proxy.setAttribute(\"type\", \"checkbox\");\n }\n readOnlyChanged() {\n if (this.proxy instanceof HTMLInputElement) {\n this.proxy.readOnly = this.readOnly;\n }\n }\n}\n__decorate([\n attr({ attribute: \"readonly\", mode: \"boolean\" })\n], Checkbox.prototype, \"readOnly\", void 0);\n__decorate([\n observable\n], Checkbox.prototype, \"defaultSlottedNodes\", void 0);\n__decorate([\n observable\n], Checkbox.prototype, \"indeterminate\", void 0);\n","import { checkboxStyles } from './checkbox.styles';\nimport { Checkbox, CheckboxOptions, checkboxTemplate } from '@microsoft/fast-foundation';\nimport { checkIcon, minusIcon } from '../../styles/icons';\n\n/**\n * @element natgen-checkbox\n */\nexport class NatGenCheckbox extends Checkbox { }\n\nexport const natGenCheckbox = NatGenCheckbox.compose({\n baseName: 'checkbox',\n template: checkboxTemplate,\n styles: checkboxStyles,\n checkedIndicator: checkIcon,\n indeterminateIndicator: minusIcon\n});\n","import { html, slotted } from \"@microsoft/fast-element\";\n/**\n * The template for the {@link @microsoft/fast-foundation#(Checkbox:class)} component.\n * @public\n */\nexport const checkboxTemplate = (context, definition) => html `\n x.checked}\"\n aria-required=\"${x => x.required}\"\n aria-disabled=\"${x => x.disabled}\"\n aria-readonly=\"${x => x.readOnly}\"\n tabindex=\"${x => (x.disabled ? null : 0)}\"\n @keypress=\"${(x, c) => x.keypressHandler(c.event)}\"\n @click=\"${(x, c) => x.clickHandler(c.event)}\"\n class=\"${x => (x.readOnly ? \"readonly\" : \"\")} ${x => x.checked ? \"checked\" : \"\"} ${x => (x.indeterminate ? \"indeterminate\" : \"\")}\"\n >\n
\n \n ${definition.checkedIndicator || \"\"}\n \n \n ${definition.indeterminateIndicator || \"\"}\n \n
\n x.defaultSlottedNodes && x.defaultSlottedNodes.length\n ? \"label\"\n : \"label label__hidden\"}\"\n >\n \n \n \n`;\n","import { checkboxCardStyles } from './checkbox-card.styles';\nimport { applyMixins, CheckboxOptions, FoundationElement, StartEnd, StartEndOptions } from '@microsoft/fast-foundation';\nimport { NatGenCheckbox } from '../checkbox/checkbox';\nimport { checkboxCardTemplate } from './checkbox-card.template';\nimport { checkIcon, minusIcon } from '../../styles/icons';\n\nexport type CheckboxCardOptions = CheckboxOptions & StartEndOptions;\n\n/**\n * @element natgen-checkbox-card\n */\nexport class NatGenCheckboxCard extends NatGenCheckbox {\n\n}\n\nexport const natGenCheckboxCard = NatGenCheckboxCard.compose({\n baseName: 'checkbox-card',\n template: checkboxCardTemplate,\n styles: checkboxCardStyles,\n checkedIndicator: checkIcon,\n indeterminateIndicator: minusIcon\n});\n\napplyMixins(NatGenCheckboxCard, StartEnd);","import { html, slotted, ViewTemplate } from '@microsoft/fast-element';\nimport { endSlotTemplate, FoundationElementTemplate, startSlotTemplate } from '@microsoft/fast-foundation';\nimport { CheckboxCardOptions, NatGenCheckboxCard } from './checkbox-card';\n\nexport const checkboxCardTemplate: FoundationElementTemplate, CheckboxCardOptions> = (\n context,\n definition\n) => html`\n (x.checked ? \"checked\" : \"\")} ${x =>\n x.readOnly ? \"readonly\" : \"\"}\"\n aria-checked=\"${x => x.checked}\"\n aria-required=\"${x => x.required}\"\n aria-disabled=\"${x => x.disabled}\"\n aria-readonly=\"${x => x.readOnly}\"\n @keypress=\"${(x, c) => x.keypressHandler(c.event as KeyboardEvent)}\"\n @click=\"${(x, c) => x.clickHandler(c.event as MouseEvent)}\"\n >\n \n ${startSlotTemplate(context, definition)}\n \n x.defaultSlottedNodes && x.defaultSlottedNodes.length\n ? \"label\"\n : \"label label__hidden\"}\"\n >\n \n \n ${endSlotTemplate(context, definition)}\n\n
\n \n ${definition.checkedIndicator}\n \n
\n \n`;\n","import { css, ElementStyles } from '@microsoft/fast-element';\nimport { ElementDefinitionContext, FoundationElementDefinition } from '@microsoft/fast-foundation';\nimport { cardStyles } from '../card/card.styles';\nimport { checkboxStyles } from '../checkbox/checkbox.styles';\nimport { selectableCardStyles } from '../../styles/patterns/selectable-card';\n\nexport const checkboxCardStyles: (\n context: ElementDefinitionContext,\n definition: FoundationElementDefinition\n) => ElementStyles = (\n context: ElementDefinitionContext,\n definition: FoundationElementDefinition\n) => css`\n ${cardStyles(context, definition)}\n ${checkboxStyles(context, definition)}\n ${selectableCardStyles(context, definition)}\n`;\n","let uniqueIdCounter = 0;\n/**\n * Generates a unique ID based on incrementing a counter.\n */\nexport function uniqueId(prefix = \"\") {\n return `${prefix}${uniqueIdCounter++}`;\n}\n/**\n * Builds a string from a format specifier and replacement parameters.\n */\nexport function format(formatSpecifier, ...parameters) {\n return formatSpecifier.replace(/{(\\d+)}/g, function (match, index) {\n if (index >= parameters.length) {\n return match;\n }\n const value = parameters[index];\n if (typeof value !== \"number\" && !value) {\n return \"\";\n }\n return value;\n });\n}\n/**\n * Check to see if one string starts with another\n */\nexport function startsWith(stringToSearch, searchFor, position = 0) {\n if (!stringToSearch || !searchFor) {\n return false;\n }\n return stringToSearch.substr(position, searchFor.length) === searchFor;\n}\n/**\n * Determines if the specified string is undefined, null, empty, or whitespace.\n * True if the value is undefined, null, empty, or whitespace, otherwise false.\n */\nexport function isNullOrWhiteSpace(value) {\n return !value || !value.trim();\n}\n/**\n * Converts a string to Pascal Case\n * where the first letter of each compound word is capitalized.\n */\nexport function pascalCase(value) {\n let newValue = `${value}`\n .replace(new RegExp(/[-_]+/, \"g\"), \" \")\n .replace(new RegExp(/[^\\w\\s]/, \"g\"), \"\")\n .replace(/^\\s+|\\s+$|\\s+(?=\\s)/g, \"\")\n .replace(new RegExp(/\\s+(.)(\\w*)/, \"g\"), ($1, $2, $3) => `${$2.toUpperCase() + $3.toLowerCase()}`)\n .replace(new RegExp(/\\w/), s => s.toUpperCase());\n let firstLowerIdx = 0;\n for (let i = 0; i < newValue.length; i++) {\n const currChar = newValue.charAt(i);\n if (currChar == currChar.toLowerCase()) {\n firstLowerIdx = i;\n break;\n }\n }\n if (firstLowerIdx > 1) {\n newValue =\n `${newValue.charAt(0).toUpperCase()}${newValue\n .slice(1, firstLowerIdx - 1)\n .toLowerCase()}` + newValue.slice(firstLowerIdx - 1);\n }\n return newValue;\n}\n/**\n * converts a string from camelCase or pascalCase to spinal-case\n * which is an lowercase dash separated naming style.\n *\n * An example of spinal case: foo-bar-bat\n */\nexport function spinalCase(value) {\n const valueWithLowerCaseFirstLetter = `${value\n .charAt(0)\n .toLowerCase()}${value.slice(1)}`;\n return valueWithLowerCaseFirstLetter.replace(/([A-Z]|[0-9])/g, function (match, group1) {\n return `-${group1.toLowerCase()}`;\n });\n}\n","/**\n * This method keeps a given value within the bounds of a min and max value. If the value\n * is larger than the max, the minimum value will be returned. If the value is smaller than the minimum,\n * the maximum will be returned. Otherwise, the value is returned un-changed.\n */\nexport function wrapInBounds(min, max, value) {\n if (value < min) {\n return max;\n }\n else if (value > max) {\n return min;\n }\n return value;\n}\n/**\n * Ensures that a value is between a min and max value. If value is lower than min, min will be returned.\n * If value is greater than max, max will be returned.\n */\nexport function limit(min, max, value) {\n return Math.min(Math.max(value, min), max);\n}\n/**\n * Determines if a number value is within a specified range.\n *\n * @param value - the value to check\n * @param min - the range start\n * @param max - the range end\n */\nexport function inRange(value, min, max = 0) {\n [min, max] = [min, max].sort((a, b) => a - b);\n return min <= value && value < max;\n}\n","import { __decorate } from \"tslib\";\nimport { attr, observable, Observable } from \"@microsoft/fast-element\";\nimport { isHTMLElement } from \"@microsoft/fast-web-utilities\";\nimport { FoundationElement } from \"../foundation-element/foundation-element.js\";\nimport { ARIAGlobalStatesAndProperties } from \"../patterns/aria-global.js\";\nimport { StartEnd } from \"../patterns/start-end.js\";\nimport { applyMixins } from \"../utilities/apply-mixins.js\";\n/**\n * Determines if the element is a {@link (ListboxOption:class)}\n *\n * @param element - the element to test.\n * @public\n */\nexport function isListboxOption(el) {\n return (isHTMLElement(el) &&\n (el.getAttribute(\"role\") === \"option\" ||\n el instanceof HTMLOptionElement));\n}\n/**\n * An Option Custom HTML Element.\n * Implements {@link https://www.w3.org/TR/wai-aria-1.1/#option | ARIA option }.\n *\n * @slot start - Content which can be provided before the listbox option content\n * @slot end - Content which can be provided after the listbox option content\n * @slot - The default slot for listbox option content\n * @csspart content - Wraps the listbox option content\n *\n * @public\n */\nexport class ListboxOption extends FoundationElement {\n constructor(text, value, defaultSelected, selected) {\n super();\n /**\n * The defaultSelected state of the option.\n * @public\n */\n this.defaultSelected = false;\n /**\n * Tracks whether the \"selected\" property has been changed.\n * @internal\n */\n this.dirtySelected = false;\n /**\n * The checked state of the control.\n *\n * @public\n */\n this.selected = this.defaultSelected;\n /**\n * Track whether the value has been changed from the initial value\n */\n this.dirtyValue = false;\n if (text) {\n this.textContent = text;\n }\n if (value) {\n this.initialValue = value;\n }\n if (defaultSelected) {\n this.defaultSelected = defaultSelected;\n }\n if (selected) {\n this.selected = selected;\n }\n this.proxy = new Option(`${this.textContent}`, this.initialValue, this.defaultSelected, this.selected);\n this.proxy.disabled = this.disabled;\n }\n /**\n * Updates the ariaChecked property when the checked property changes.\n *\n * @param prev - the previous checked value\n * @param next - the current checked value\n *\n * @public\n */\n checkedChanged(prev, next) {\n if (typeof next === \"boolean\") {\n this.ariaChecked = next ? \"true\" : \"false\";\n return;\n }\n this.ariaChecked = null;\n }\n /**\n * Updates the proxy's text content when the default slot changes.\n * @param prev - the previous content value\n * @param next - the current content value\n *\n * @internal\n */\n contentChanged(prev, next) {\n if (this.proxy instanceof HTMLOptionElement) {\n this.proxy.textContent = this.textContent;\n }\n this.$emit(\"contentchange\", null, { bubbles: true });\n }\n defaultSelectedChanged() {\n if (!this.dirtySelected) {\n this.selected = this.defaultSelected;\n if (this.proxy instanceof HTMLOptionElement) {\n this.proxy.selected = this.defaultSelected;\n }\n }\n }\n disabledChanged(prev, next) {\n this.ariaDisabled = this.disabled ? \"true\" : \"false\";\n if (this.proxy instanceof HTMLOptionElement) {\n this.proxy.disabled = this.disabled;\n }\n }\n selectedAttributeChanged() {\n this.defaultSelected = this.selectedAttribute;\n if (this.proxy instanceof HTMLOptionElement) {\n this.proxy.defaultSelected = this.defaultSelected;\n }\n }\n selectedChanged() {\n this.ariaSelected = this.selected ? \"true\" : \"false\";\n if (!this.dirtySelected) {\n this.dirtySelected = true;\n }\n if (this.proxy instanceof HTMLOptionElement) {\n this.proxy.selected = this.selected;\n }\n }\n initialValueChanged(previous, next) {\n // If the value is clean and the component is connected to the DOM\n // then set value equal to the attribute value.\n if (!this.dirtyValue) {\n this.value = this.initialValue;\n this.dirtyValue = false;\n }\n }\n get label() {\n var _a;\n return (_a = this.value) !== null && _a !== void 0 ? _a : this.text;\n }\n get text() {\n var _a, _b;\n return (_b = (_a = this.textContent) === null || _a === void 0 ? void 0 : _a.replace(/\\s+/g, \" \").trim()) !== null && _b !== void 0 ? _b : \"\";\n }\n set value(next) {\n const newValue = `${next !== null && next !== void 0 ? next : \"\"}`;\n this._value = newValue;\n this.dirtyValue = true;\n if (this.proxy instanceof HTMLOptionElement) {\n this.proxy.value = newValue;\n }\n Observable.notify(this, \"value\");\n }\n get value() {\n var _a;\n Observable.track(this, \"value\");\n return (_a = this._value) !== null && _a !== void 0 ? _a : this.text;\n }\n get form() {\n return this.proxy ? this.proxy.form : null;\n }\n}\n__decorate([\n observable\n], ListboxOption.prototype, \"checked\", void 0);\n__decorate([\n observable\n], ListboxOption.prototype, \"content\", void 0);\n__decorate([\n observable\n], ListboxOption.prototype, \"defaultSelected\", void 0);\n__decorate([\n attr({ mode: \"boolean\" })\n], ListboxOption.prototype, \"disabled\", void 0);\n__decorate([\n attr({ attribute: \"selected\", mode: \"boolean\" })\n], ListboxOption.prototype, \"selectedAttribute\", void 0);\n__decorate([\n observable\n], ListboxOption.prototype, \"selected\", void 0);\n__decorate([\n attr({ attribute: \"value\", mode: \"fromView\" })\n], ListboxOption.prototype, \"initialValue\", void 0);\n/**\n * States and properties relating to the ARIA `option` role.\n *\n * @public\n */\nexport class DelegatesARIAListboxOption {\n}\n__decorate([\n observable\n], DelegatesARIAListboxOption.prototype, \"ariaChecked\", void 0);\n__decorate([\n observable\n], DelegatesARIAListboxOption.prototype, \"ariaPosInSet\", void 0);\n__decorate([\n observable\n], DelegatesARIAListboxOption.prototype, \"ariaSelected\", void 0);\n__decorate([\n observable\n], DelegatesARIAListboxOption.prototype, \"ariaSetSize\", void 0);\napplyMixins(DelegatesARIAListboxOption, ARIAGlobalStatesAndProperties);\napplyMixins(ListboxOption, StartEnd, DelegatesARIAListboxOption);\n","import { __decorate } from \"tslib\";\nimport { attr, observable, Observable } from \"@microsoft/fast-element\";\nimport { findLastIndex, keyArrowDown, keyArrowUp, keyEnd, keyEnter, keyEscape, keyHome, keySpace, keyTab, uniqueId, } from \"@microsoft/fast-web-utilities\";\nimport { FoundationElement } from \"../foundation-element/foundation-element.js\";\nimport { isListboxOption } from \"../listbox-option/listbox-option.js\";\nimport { ARIAGlobalStatesAndProperties } from \"../patterns/aria-global.js\";\nimport { applyMixins } from \"../utilities/apply-mixins.js\";\n/**\n * A Listbox Custom HTML Element.\n * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#listbox | ARIA listbox }.\n *\n * @slot - The default slot for the listbox options\n *\n * @public\n */\nexport class Listbox extends FoundationElement {\n constructor() {\n super(...arguments);\n /**\n * The internal unfiltered list of selectable options.\n *\n * @internal\n */\n this._options = [];\n /**\n * The index of the selected option.\n *\n * @public\n */\n this.selectedIndex = -1;\n /**\n * A collection of the selected options.\n *\n * @public\n */\n this.selectedOptions = [];\n /**\n * A standard `click` event creates a `focus` event before firing, so a\n * `mousedown` event is used to skip that initial focus.\n *\n * @internal\n */\n this.shouldSkipFocus = false;\n /**\n * The current typeahead buffer string.\n *\n * @internal\n */\n this.typeaheadBuffer = \"\";\n /**\n * Flag for the typeahead timeout expiration.\n *\n * @internal\n */\n this.typeaheadExpired = true;\n /**\n * The timeout ID for the typeahead handler.\n *\n * @internal\n */\n this.typeaheadTimeout = -1;\n }\n /**\n * The first selected option.\n *\n * @internal\n */\n get firstSelectedOption() {\n var _a;\n return (_a = this.selectedOptions[0]) !== null && _a !== void 0 ? _a : null;\n }\n /**\n * Returns true if there is one or more selectable option.\n *\n * @internal\n */\n get hasSelectableOptions() {\n return this.options.length > 0 && !this.options.every(o => o.disabled);\n }\n /**\n * The number of options.\n *\n * @public\n */\n get length() {\n var _a, _b;\n return (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;\n }\n /**\n * The list of options.\n *\n * @public\n */\n get options() {\n Observable.track(this, \"options\");\n return this._options;\n }\n set options(value) {\n this._options = value;\n Observable.notify(this, \"options\");\n }\n /**\n * Flag for the typeahead timeout expiration.\n *\n * @deprecated use `Listbox.typeaheadExpired`\n * @internal\n */\n get typeAheadExpired() {\n return this.typeaheadExpired;\n }\n set typeAheadExpired(value) {\n this.typeaheadExpired = value;\n }\n /**\n * Handle click events for listbox options.\n *\n * @internal\n */\n clickHandler(e) {\n const captured = e.target.closest(`option,[role=option]`);\n if (captured && !captured.disabled) {\n this.selectedIndex = this.options.indexOf(captured);\n return true;\n }\n }\n /**\n * Ensures that the provided option is focused and scrolled into view.\n *\n * @param optionToFocus - The option to focus\n * @internal\n */\n focusAndScrollOptionIntoView(optionToFocus = this.firstSelectedOption) {\n // To ensure that the browser handles both `focus()` and `scrollIntoView()`, the\n // timing here needs to guarantee that they happen on different frames. Since this\n // function is typically called from the `openChanged` observer, `DOM.queueUpdate`\n // causes the calls to be grouped into the same frame. To prevent this,\n // `requestAnimationFrame` is used instead of `DOM.queueUpdate`.\n if (this.contains(document.activeElement) && optionToFocus !== null) {\n optionToFocus.focus();\n requestAnimationFrame(() => {\n optionToFocus.scrollIntoView({ block: \"nearest\" });\n });\n }\n }\n /**\n * Handles `focusin` actions for the component. When the component receives focus,\n * the list of selected options is refreshed and the first selected option is scrolled\n * into view.\n *\n * @internal\n */\n focusinHandler(e) {\n if (!this.shouldSkipFocus && e.target === e.currentTarget) {\n this.setSelectedOptions();\n this.focusAndScrollOptionIntoView();\n }\n this.shouldSkipFocus = false;\n }\n /**\n * Returns the options which match the current typeahead buffer.\n *\n * @internal\n */\n getTypeaheadMatches() {\n const pattern = this.typeaheadBuffer.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const re = new RegExp(`^${pattern}`, \"gi\");\n return this.options.filter((o) => o.text.trim().match(re));\n }\n /**\n * Determines the index of the next option which is selectable, if any.\n *\n * @param prev - the previous selected index\n * @param next - the next index to select\n *\n * @internal\n */\n getSelectableIndex(prev = this.selectedIndex, next) {\n const direction = prev > next ? -1 : prev < next ? 1 : 0;\n const potentialDirection = prev + direction;\n let nextSelectableOption = null;\n switch (direction) {\n case -1: {\n nextSelectableOption = this.options.reduceRight((nextSelectableOption, thisOption, index) => !nextSelectableOption &&\n !thisOption.disabled &&\n index < potentialDirection\n ? thisOption\n : nextSelectableOption, nextSelectableOption);\n break;\n }\n case 1: {\n nextSelectableOption = this.options.reduce((nextSelectableOption, thisOption, index) => !nextSelectableOption &&\n !thisOption.disabled &&\n index > potentialDirection\n ? thisOption\n : nextSelectableOption, nextSelectableOption);\n break;\n }\n }\n return this.options.indexOf(nextSelectableOption);\n }\n /**\n * Handles external changes to child options.\n *\n * @param source - the source object\n * @param propertyName - the property\n *\n * @internal\n */\n handleChange(source, propertyName) {\n switch (propertyName) {\n case \"selected\": {\n if (Listbox.slottedOptionFilter(source)) {\n this.selectedIndex = this.options.indexOf(source);\n }\n this.setSelectedOptions();\n break;\n }\n }\n }\n /**\n * Moves focus to an option whose label matches characters typed by the user.\n * Consecutive keystrokes are batched into a buffer of search text used\n * to match against the set of options. If `TYPE_AHEAD_TIMEOUT_MS` passes\n * between consecutive keystrokes, the search restarts.\n *\n * @param key - the key to be evaluated\n *\n * @internal\n */\n handleTypeAhead(key) {\n if (this.typeaheadTimeout) {\n window.clearTimeout(this.typeaheadTimeout);\n }\n this.typeaheadTimeout = window.setTimeout(() => (this.typeaheadExpired = true), Listbox.TYPE_AHEAD_TIMEOUT_MS);\n if (key.length > 1) {\n return;\n }\n this.typeaheadBuffer = `${this.typeaheadExpired ? \"\" : this.typeaheadBuffer}${key}`;\n }\n /**\n * Handles `keydown` actions for listbox navigation and typeahead.\n *\n * @internal\n */\n keydownHandler(e) {\n if (this.disabled) {\n return true;\n }\n this.shouldSkipFocus = false;\n const key = e.key;\n switch (key) {\n // Select the first available option\n case keyHome: {\n if (!e.shiftKey) {\n e.preventDefault();\n this.selectFirstOption();\n }\n break;\n }\n // Select the next selectable option\n case keyArrowDown: {\n if (!e.shiftKey) {\n e.preventDefault();\n this.selectNextOption();\n }\n break;\n }\n // Select the previous selectable option\n case keyArrowUp: {\n if (!e.shiftKey) {\n e.preventDefault();\n this.selectPreviousOption();\n }\n break;\n }\n // Select the last available option\n case keyEnd: {\n e.preventDefault();\n this.selectLastOption();\n break;\n }\n case keyTab: {\n this.focusAndScrollOptionIntoView();\n return true;\n }\n case keyEnter:\n case keyEscape: {\n return true;\n }\n case keySpace: {\n if (this.typeaheadExpired) {\n return true;\n }\n }\n // Send key to Typeahead handler\n default: {\n if (key.length === 1) {\n this.handleTypeAhead(`${key}`);\n }\n return true;\n }\n }\n }\n /**\n * Prevents `focusin` events from firing before `click` events when the\n * element is unfocused.\n *\n * @internal\n */\n mousedownHandler(e) {\n this.shouldSkipFocus = !this.contains(document.activeElement);\n return true;\n }\n /**\n * Switches between single-selection and multi-selection mode.\n *\n * @param prev - the previous value of the `multiple` attribute\n * @param next - the next value of the `multiple` attribute\n *\n * @internal\n */\n multipleChanged(prev, next) {\n this.ariaMultiSelectable = next ? \"true\" : null;\n }\n /**\n * Updates the list of selected options when the `selectedIndex` changes.\n *\n * @param prev - the previous selected index value\n * @param next - the current selected index value\n *\n * @internal\n */\n selectedIndexChanged(prev, next) {\n var _a;\n if (!this.hasSelectableOptions) {\n this.selectedIndex = -1;\n return;\n }\n if (((_a = this.options[this.selectedIndex]) === null || _a === void 0 ? void 0 : _a.disabled) && typeof prev === \"number\") {\n const selectableIndex = this.getSelectableIndex(prev, next);\n const newNext = selectableIndex > -1 ? selectableIndex : prev;\n this.selectedIndex = newNext;\n if (next === newNext) {\n this.selectedIndexChanged(next, newNext);\n }\n return;\n }\n this.setSelectedOptions();\n }\n /**\n * Updates the selectedness of each option when the list of selected options changes.\n *\n * @param prev - the previous list of selected options\n * @param next - the current list of selected options\n *\n * @internal\n */\n selectedOptionsChanged(prev, next) {\n var _a;\n const filteredNext = next.filter(Listbox.slottedOptionFilter);\n (_a = this.options) === null || _a === void 0 ? void 0 : _a.forEach(o => {\n const notifier = Observable.getNotifier(o);\n notifier.unsubscribe(this, \"selected\");\n o.selected = filteredNext.includes(o);\n notifier.subscribe(this, \"selected\");\n });\n }\n /**\n * Moves focus to the first selectable option.\n *\n * @public\n */\n selectFirstOption() {\n var _a, _b;\n if (!this.disabled) {\n this.selectedIndex = (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.findIndex(o => !o.disabled)) !== null && _b !== void 0 ? _b : -1;\n }\n }\n /**\n * Moves focus to the last selectable option.\n *\n * @internal\n */\n selectLastOption() {\n if (!this.disabled) {\n this.selectedIndex = findLastIndex(this.options, o => !o.disabled);\n }\n }\n /**\n * Moves focus to the next selectable option.\n *\n * @internal\n */\n selectNextOption() {\n if (!this.disabled && this.selectedIndex < this.options.length - 1) {\n this.selectedIndex += 1;\n }\n }\n /**\n * Moves focus to the previous selectable option.\n *\n * @internal\n */\n selectPreviousOption() {\n if (!this.disabled && this.selectedIndex > 0) {\n this.selectedIndex = this.selectedIndex - 1;\n }\n }\n /**\n * Updates the selected index to match the first selected option.\n *\n * @internal\n */\n setDefaultSelectedOption() {\n var _a, _b;\n this.selectedIndex = (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.findIndex(el => el.defaultSelected)) !== null && _b !== void 0 ? _b : -1;\n }\n /**\n * Sets an option as selected and gives it focus.\n *\n * @public\n */\n setSelectedOptions() {\n var _a, _b, _c;\n if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.length) {\n this.selectedOptions = [this.options[this.selectedIndex]];\n this.ariaActiveDescendant = (_c = (_b = this.firstSelectedOption) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : \"\";\n this.focusAndScrollOptionIntoView();\n }\n }\n /**\n * Updates the list of options and resets the selected option when the slotted option content changes.\n *\n * @param prev - the previous list of slotted options\n * @param next - the current list of slotted options\n *\n * @internal\n */\n slottedOptionsChanged(prev, next) {\n this.options = next.reduce((options, item) => {\n if (isListboxOption(item)) {\n options.push(item);\n }\n return options;\n }, []);\n const setSize = `${this.options.length}`;\n this.options.forEach((option, index) => {\n if (!option.id) {\n option.id = uniqueId(\"option-\");\n }\n option.ariaPosInSet = `${index + 1}`;\n option.ariaSetSize = setSize;\n });\n if (this.$fastController.isConnected) {\n this.setSelectedOptions();\n this.setDefaultSelectedOption();\n }\n }\n /**\n * Updates the filtered list of options when the typeahead buffer changes.\n *\n * @param prev - the previous typeahead buffer value\n * @param next - the current typeahead buffer value\n *\n * @internal\n */\n typeaheadBufferChanged(prev, next) {\n if (this.$fastController.isConnected) {\n const typeaheadMatches = this.getTypeaheadMatches();\n if (typeaheadMatches.length) {\n const selectedIndex = this.options.indexOf(typeaheadMatches[0]);\n if (selectedIndex > -1) {\n this.selectedIndex = selectedIndex;\n }\n }\n this.typeaheadExpired = false;\n }\n }\n}\n/**\n * A static filter to include only selectable options.\n *\n * @param n - element to filter\n * @public\n */\nListbox.slottedOptionFilter = (n) => isListboxOption(n) && !n.hidden;\n/**\n * Typeahead timeout in milliseconds.\n *\n * @internal\n */\nListbox.TYPE_AHEAD_TIMEOUT_MS = 1000;\n__decorate([\n attr({ mode: \"boolean\" })\n], Listbox.prototype, \"disabled\", void 0);\n__decorate([\n observable\n], Listbox.prototype, \"selectedIndex\", void 0);\n__decorate([\n observable\n], Listbox.prototype, \"selectedOptions\", void 0);\n__decorate([\n observable\n], Listbox.prototype, \"slottedOptions\", void 0);\n__decorate([\n observable\n], Listbox.prototype, \"typeaheadBuffer\", void 0);\n/**\n * Includes ARIA states and properties relating to the ARIA listbox role\n *\n * @public\n */\nexport class DelegatesARIAListbox {\n}\n__decorate([\n observable\n], DelegatesARIAListbox.prototype, \"ariaActiveDescendant\", void 0);\n__decorate([\n observable\n], DelegatesARIAListbox.prototype, \"ariaDisabled\", void 0);\n__decorate([\n observable\n], DelegatesARIAListbox.prototype, \"ariaExpanded\", void 0);\n__decorate([\n observable\n], DelegatesARIAListbox.prototype, \"ariaMultiSelectable\", void 0);\napplyMixins(DelegatesARIAListbox, ARIAGlobalStatesAndProperties);\napplyMixins(Listbox, DelegatesARIAListbox);\n","/**\n * Returns the index of the last element in the array where predicate is true, and -1 otherwise.\n *\n * @param array - the array to test\n * @param predicate - find calls predicate once for each element of the array, in descending order, until it finds one where predicate returns true. If such an element is found, findLastIndex immediately returns that element index. Otherwise, findIndex returns -1.\n */\nexport function findLastIndex(array, predicate) {\n let k = array.length;\n while (k--) {\n if (predicate(array[k], k, array)) {\n return k;\n }\n }\n return -1;\n}\n","/**\n * Positioning directions for the listbox when a select is open.\n * @public\n */\nexport const SelectPosition = {\n above: \"above\",\n below: \"below\",\n};\n","import { FormAssociated } from \"../form-associated/form-associated.js\";\nimport { Listbox } from \"../listbox/listbox.js\";\nclass _Combobox extends Listbox {\n}\n/**\n * A form-associated base class for the {@link (Combobox:class)} component.\n *\n * @internal\n */\nexport class FormAssociatedCombobox extends FormAssociated(_Combobox) {\n constructor() {\n super(...arguments);\n this.proxy = document.createElement(\"input\");\n }\n}\n","import { __decorate } from \"tslib\";\nimport { attr, DOM, Observable, observable } from \"@microsoft/fast-element\";\nimport { limit, uniqueId } from \"@microsoft/fast-web-utilities\";\nimport { DelegatesARIAListbox } from \"../listbox/listbox.js\";\nimport { StartEnd } from \"../patterns/start-end.js\";\nimport { SelectPosition } from \"../select/select.options.js\";\nimport { applyMixins } from \"../utilities/apply-mixins.js\";\nimport { FormAssociatedCombobox } from \"./combobox.form-associated.js\";\nimport { ComboboxAutocomplete } from \"./combobox.options.js\";\n/**\n * A Combobox Custom HTML Element.\n * Implements the {@link https://w3c.github.io/aria-practices/#combobox | ARIA combobox }.\n *\n * @slot start - Content which can be provided before the input\n * @slot end - Content which can be provided after the input\n * @slot control - Used to replace the input element representing the combobox\n * @slot indicator - The visual indicator representing the expanded state\n * @slot - The default slot for the options\n * @csspart control - The wrapper element containing the input area, including start and end\n * @csspart selected-value - The input element representing the selected value\n * @csspart indicator - The element wrapping the indicator slot\n * @csspart listbox - The wrapper for the listbox slotted options\n * @fires change - Fires a custom 'change' event when the value updates\n *\n * @public\n */\nexport class Combobox extends FormAssociatedCombobox {\n constructor() {\n super(...arguments);\n /**\n * The internal value property.\n *\n * @internal\n */\n this._value = \"\";\n /**\n * The collection of currently filtered options.\n *\n * @public\n */\n this.filteredOptions = [];\n /**\n * The current filter value.\n *\n * @internal\n */\n this.filter = \"\";\n /**\n * The initial state of the position attribute.\n *\n * @internal\n */\n this.forcedPosition = false;\n /**\n * The unique id for the internal listbox element.\n *\n * @internal\n */\n this.listboxId = uniqueId(\"listbox-\");\n /**\n * The max height for the listbox when opened.\n *\n * @internal\n */\n this.maxHeight = 0;\n /**\n * The open attribute.\n *\n * @public\n * @remarks\n * HTML Attribute: open\n */\n this.open = false;\n }\n /**\n * Reset the element to its first selectable option when its parent form is reset.\n *\n * @internal\n */\n formResetCallback() {\n super.formResetCallback();\n this.setDefaultSelectedOption();\n this.updateValue();\n }\n /** {@inheritDoc (FormAssociated:interface).validate} */\n validate() {\n super.validate(this.control);\n }\n get isAutocompleteInline() {\n return (this.autocomplete === ComboboxAutocomplete.inline || this.isAutocompleteBoth);\n }\n get isAutocompleteList() {\n return this.autocomplete === ComboboxAutocomplete.list || this.isAutocompleteBoth;\n }\n get isAutocompleteBoth() {\n return this.autocomplete === ComboboxAutocomplete.both;\n }\n /**\n * Sets focus and synchronize ARIA attributes when the open property changes.\n *\n * @param prev - the previous open value\n * @param next - the current open value\n *\n * @internal\n */\n openChanged() {\n if (this.open) {\n this.ariaControls = this.listboxId;\n this.ariaExpanded = \"true\";\n this.setPositioning();\n this.focusAndScrollOptionIntoView();\n // focus is directed to the element when `open` is changed programmatically\n DOM.queueUpdate(() => this.focus());\n return;\n }\n this.ariaControls = \"\";\n this.ariaExpanded = \"false\";\n }\n /**\n * The list of options.\n *\n * @public\n * @remarks\n * Overrides `Listbox.options`.\n */\n get options() {\n Observable.track(this, \"options\");\n return this.filteredOptions.length ? this.filteredOptions : this._options;\n }\n set options(value) {\n this._options = value;\n Observable.notify(this, \"options\");\n }\n /**\n * Updates the placeholder on the proxy element.\n * @internal\n */\n placeholderChanged() {\n if (this.proxy instanceof HTMLInputElement) {\n this.proxy.placeholder = this.placeholder;\n }\n }\n positionChanged(prev, next) {\n this.positionAttribute = next;\n this.setPositioning();\n }\n /**\n * The value property.\n *\n * @public\n */\n get value() {\n Observable.track(this, \"value\");\n return this._value;\n }\n set value(next) {\n var _a, _b, _c;\n const prev = `${this._value}`;\n if (this.$fastController.isConnected && this.options) {\n const selectedIndex = this.options.findIndex(el => el.text.toLowerCase() === next.toLowerCase());\n const prevSelectedValue = (_a = this.options[this.selectedIndex]) === null || _a === void 0 ? void 0 : _a.text;\n const nextSelectedValue = (_b = this.options[selectedIndex]) === null || _b === void 0 ? void 0 : _b.text;\n this.selectedIndex =\n prevSelectedValue !== nextSelectedValue\n ? selectedIndex\n : this.selectedIndex;\n next = ((_c = this.firstSelectedOption) === null || _c === void 0 ? void 0 : _c.text) || next;\n }\n if (prev !== next) {\n this._value = next;\n super.valueChanged(prev, next);\n Observable.notify(this, \"value\");\n }\n }\n /**\n * Handle opening and closing the listbox when the combobox is clicked.\n *\n * @param e - the mouse event\n * @internal\n */\n clickHandler(e) {\n if (this.disabled) {\n return;\n }\n if (this.open) {\n const captured = e.target.closest(`option,[role=option]`);\n if (!captured || captured.disabled) {\n return;\n }\n this.selectedOptions = [captured];\n this.control.value = captured.text;\n this.clearSelectionRange();\n this.updateValue(true);\n }\n this.open = !this.open;\n if (this.open) {\n this.control.focus();\n }\n return true;\n }\n connectedCallback() {\n super.connectedCallback();\n this.forcedPosition = !!this.positionAttribute;\n if (this.value) {\n this.initialValue = this.value;\n }\n }\n /**\n * Synchronize the `aria-disabled` property when the `disabled` property changes.\n *\n * @param prev - The previous disabled value\n * @param next - The next disabled value\n *\n * @internal\n */\n disabledChanged(prev, next) {\n if (super.disabledChanged) {\n super.disabledChanged(prev, next);\n }\n this.ariaDisabled = this.disabled ? \"true\" : \"false\";\n }\n /**\n * Filter available options by text value.\n *\n * @public\n */\n filterOptions() {\n if (!this.autocomplete || this.autocomplete === ComboboxAutocomplete.none) {\n this.filter = \"\";\n }\n const filter = this.filter.toLowerCase();\n this.filteredOptions = this._options.filter(o => o.text.toLowerCase().startsWith(this.filter.toLowerCase()));\n if (this.isAutocompleteList) {\n if (!this.filteredOptions.length && !filter) {\n this.filteredOptions = this._options;\n }\n this._options.forEach(o => {\n o.hidden = !this.filteredOptions.includes(o);\n });\n }\n }\n /**\n * Focus the control and scroll the first selected option into view.\n *\n * @internal\n * @remarks\n * Overrides: `Listbox.focusAndScrollOptionIntoView`\n */\n focusAndScrollOptionIntoView() {\n if (this.contains(document.activeElement)) {\n this.control.focus();\n if (this.firstSelectedOption) {\n requestAnimationFrame(() => {\n var _a;\n (_a = this.firstSelectedOption) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ block: \"nearest\" });\n });\n }\n }\n }\n /**\n * Handle focus state when the element or its children lose focus.\n *\n * @param e - The focus event\n * @internal\n */\n focusoutHandler(e) {\n this.syncValue();\n if (!this.open) {\n return true;\n }\n const focusTarget = e.relatedTarget;\n if (this.isSameNode(focusTarget)) {\n this.focus();\n return;\n }\n if (!this.options || !this.options.includes(focusTarget)) {\n this.open = false;\n }\n }\n /**\n * Handle content changes on the control input.\n *\n * @param e - the input event\n * @internal\n */\n inputHandler(e) {\n this.filter = this.control.value;\n this.filterOptions();\n if (!this.isAutocompleteInline) {\n this.selectedIndex = this.options\n .map(option => option.text)\n .indexOf(this.control.value);\n }\n if (e.inputType.includes(\"deleteContent\") || !this.filter.length) {\n return true;\n }\n if (this.isAutocompleteList && !this.open) {\n this.open = true;\n }\n if (this.isAutocompleteInline) {\n if (this.filteredOptions.length) {\n this.selectedOptions = [this.filteredOptions[0]];\n this.selectedIndex = this.options.indexOf(this.firstSelectedOption);\n this.setInlineSelection();\n }\n else {\n this.selectedIndex = -1;\n }\n }\n return;\n }\n /**\n * Handle keydown actions for listbox navigation.\n *\n * @param e - the keyboard event\n * @internal\n */\n keydownHandler(e) {\n const key = e.key;\n if (e.ctrlKey || e.shiftKey) {\n return true;\n }\n switch (key) {\n case \"Enter\": {\n this.syncValue();\n if (this.isAutocompleteInline) {\n this.filter = this.value;\n }\n this.open = false;\n this.clearSelectionRange();\n break;\n }\n case \"Escape\": {\n if (!this.isAutocompleteInline) {\n this.selectedIndex = -1;\n }\n if (this.open) {\n this.open = false;\n break;\n }\n this.value = \"\";\n this.control.value = \"\";\n this.filter = \"\";\n this.filterOptions();\n break;\n }\n case \"Tab\": {\n this.setInputToSelection();\n if (!this.open) {\n return true;\n }\n e.preventDefault();\n this.open = false;\n break;\n }\n case \"ArrowUp\":\n case \"ArrowDown\": {\n this.filterOptions();\n if (!this.open) {\n this.open = true;\n break;\n }\n if (this.filteredOptions.length > 0) {\n super.keydownHandler(e);\n }\n if (this.isAutocompleteInline) {\n this.setInlineSelection();\n }\n break;\n }\n default: {\n return true;\n }\n }\n }\n /**\n * Handle keyup actions for value input and text field manipulations.\n *\n * @param e - the keyboard event\n * @internal\n */\n keyupHandler(e) {\n const key = e.key;\n switch (key) {\n case \"ArrowLeft\":\n case \"ArrowRight\":\n case \"Backspace\":\n case \"Delete\":\n case \"Home\":\n case \"End\": {\n this.filter = this.control.value;\n this.selectedIndex = -1;\n this.filterOptions();\n break;\n }\n }\n }\n /**\n * Ensure that the selectedIndex is within the current allowable filtered range.\n *\n * @param prev - the previous selected index value\n * @param next - the current selected index value\n *\n * @internal\n */\n selectedIndexChanged(prev, next) {\n if (this.$fastController.isConnected) {\n next = limit(-1, this.options.length - 1, next);\n // we only want to call the super method when the selectedIndex is in range\n if (next !== this.selectedIndex) {\n this.selectedIndex = next;\n return;\n }\n super.selectedIndexChanged(prev, next);\n }\n }\n /**\n * Move focus to the previous selectable option.\n *\n * @internal\n * @remarks\n * Overrides `Listbox.selectPreviousOption`\n */\n selectPreviousOption() {\n if (!this.disabled && this.selectedIndex >= 0) {\n this.selectedIndex = this.selectedIndex - 1;\n }\n }\n /**\n * Set the default selected options at initialization or reset.\n *\n * @internal\n * @remarks\n * Overrides `Listbox.setDefaultSelectedOption`\n */\n setDefaultSelectedOption() {\n if (this.$fastController.isConnected && this.options) {\n const selectedIndex = this.options.findIndex(el => el.getAttribute(\"selected\") !== null || el.selected);\n this.selectedIndex = selectedIndex;\n if (!this.dirtyValue && this.firstSelectedOption) {\n this.value = this.firstSelectedOption.text;\n }\n this.setSelectedOptions();\n }\n }\n /**\n * Focus and set the content of the control based on the first selected option.\n *\n * @internal\n */\n setInputToSelection() {\n if (this.firstSelectedOption) {\n this.control.value = this.firstSelectedOption.text;\n this.control.focus();\n }\n }\n /**\n * Focus, set and select the content of the control based on the first selected option.\n *\n * @internal\n */\n setInlineSelection() {\n if (this.firstSelectedOption) {\n this.setInputToSelection();\n this.control.setSelectionRange(this.filter.length, this.control.value.length, \"backward\");\n }\n }\n /**\n * Determines if a value update should involve emitting a change event, then updates the value.\n *\n * @internal\n */\n syncValue() {\n var _a;\n const newValue = this.selectedIndex > -1 ? (_a = this.firstSelectedOption) === null || _a === void 0 ? void 0 : _a.text : this.control.value;\n this.updateValue(this.value !== newValue);\n }\n /**\n * Calculate and apply listbox positioning based on available viewport space.\n *\n * @param force - direction to force the listbox to display\n * @public\n */\n setPositioning() {\n const currentBox = this.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const availableBottom = viewportHeight - currentBox.bottom;\n this.position = this.forcedPosition\n ? this.positionAttribute\n : currentBox.top > availableBottom\n ? SelectPosition.above\n : SelectPosition.below;\n this.positionAttribute = this.forcedPosition\n ? this.positionAttribute\n : this.position;\n this.maxHeight =\n this.position === SelectPosition.above ? ~~currentBox.top : ~~availableBottom;\n }\n /**\n * Ensure that the entire list of options is used when setting the selected property.\n *\n * @param prev - the previous list of selected options\n * @param next - the current list of selected options\n *\n * @internal\n * @remarks\n * Overrides: `Listbox.selectedOptionsChanged`\n */\n selectedOptionsChanged(prev, next) {\n if (this.$fastController.isConnected) {\n this._options.forEach(o => {\n o.selected = next.includes(o);\n });\n }\n }\n /**\n * Synchronize the form-associated proxy and update the value property of the element.\n *\n * @param prev - the previous collection of slotted option elements\n * @param next - the next collection of slotted option elements\n *\n * @internal\n */\n slottedOptionsChanged(prev, next) {\n super.slottedOptionsChanged(prev, next);\n this.updateValue();\n }\n /**\n * Sets the value and to match the first selected option.\n *\n * @param shouldEmit - if true, the change event will be emitted\n *\n * @internal\n */\n updateValue(shouldEmit) {\n var _a;\n if (this.$fastController.isConnected) {\n this.value = ((_a = this.firstSelectedOption) === null || _a === void 0 ? void 0 : _a.text) || this.control.value;\n this.control.value = this.value;\n }\n if (shouldEmit) {\n this.$emit(\"change\");\n }\n }\n /**\n * @internal\n */\n clearSelectionRange() {\n const controlValueLength = this.control.value.length;\n this.control.setSelectionRange(controlValueLength, controlValueLength);\n }\n}\n__decorate([\n attr({ attribute: \"autocomplete\", mode: \"fromView\" })\n], Combobox.prototype, \"autocomplete\", void 0);\n__decorate([\n observable\n], Combobox.prototype, \"maxHeight\", void 0);\n__decorate([\n attr({ attribute: \"open\", mode: \"boolean\" })\n], Combobox.prototype, \"open\", void 0);\n__decorate([\n attr\n], Combobox.prototype, \"placeholder\", void 0);\n__decorate([\n attr({ attribute: \"position\" })\n], Combobox.prototype, \"positionAttribute\", void 0);\n__decorate([\n observable\n], Combobox.prototype, \"position\", void 0);\n/**\n * Includes ARIA states and properties relating to the ARIA combobox role.\n *\n * @public\n */\nexport class DelegatesARIACombobox {\n}\n__decorate([\n observable\n], DelegatesARIACombobox.prototype, \"ariaAutoComplete\", void 0);\n__decorate([\n observable\n], DelegatesARIACombobox.prototype, \"ariaControls\", void 0);\napplyMixins(DelegatesARIACombobox, DelegatesARIAListbox);\napplyMixins(Combobox, StartEnd, DelegatesARIACombobox);\n","/**\n * Autocomplete values for combobox.\n * @public\n */\nexport const ComboboxAutocomplete = {\n inline: \"inline\",\n list: \"list\",\n both: \"both\",\n none: \"none\",\n};\n","import { attr } from '@microsoft/fast-element';\nimport { Combobox, ComboboxAutocomplete, ComboboxOptions, comboboxTemplate } from '@microsoft/fast-foundation';\nimport { angleDown } from '../../styles/icons';\nimport { NatGenTextFieldAppearance } from '../text-field/text-field';\nimport { comboboxStyles } from './combobox.styles';\n\n/**\n * @element natgen-combobox\n */\nexport class NatGenCombobox extends Combobox {\n @attr({ attribute: 'autocomplete', mode: 'fromView' })\n autocomplete: ComboboxAutocomplete | undefined = 'list';\n\n /**\n * The appearance of the element.\n *\n * @public\n * @remarks\n * HTML Attribute: appearance\n */\n @attr\n public appearance: NatGenTextFieldAppearance;\n\n public appearanceChanged(\n oldValue: NatGenTextFieldAppearance,\n newValue: NatGenTextFieldAppearance\n ): void {\n if (oldValue !== newValue) {\n this.classList.add(newValue);\n this.classList.remove(oldValue);\n }\n }\n}\n\nexport const natGenCombobox = NatGenCombobox.compose({\n baseName: 'combobox',\n template: comboboxTemplate,\n styles: comboboxStyles,\n indicator: angleDown\n});\n","import { html, ref, slotted } from \"@microsoft/fast-element\";\nimport { Listbox } from \"../listbox/listbox.js\";\nimport { endSlotTemplate, startSlotTemplate } from \"../patterns/start-end.js\";\n/**\n * The template for the {@link @microsoft/fast-foundation#(Combobox:class)} component.\n * @public\n */\nexport const comboboxTemplate = (context, definition) => html `\n x.ariaDisabled}\"\n autocomplete=\"${x => x.autocomplete}\"\n class=\"${x => (x.open ? \"open\" : \"\")} ${x => x.disabled ? \"disabled\" : \"\"} ${x => x.position}\"\n ?open=\"${x => x.open}\"\n tabindex=\"${x => (!x.disabled ? \"0\" : null)}\"\n @click=\"${(x, c) => x.clickHandler(c.event)}\"\n @focusout=\"${(x, c) => x.focusoutHandler(c.event)}\"\n @keydown=\"${(x, c) => x.keydownHandler(c.event)}\"\n >\n
\n ${startSlotTemplate(context, definition)}\n \n x.open ? x.ariaActiveDescendant : null}\"\n aria-autocomplete=\"${x => x.ariaAutoComplete}\"\n aria-controls=\"${x => x.ariaControls}\"\n aria-disabled=\"${x => x.ariaDisabled}\"\n aria-expanded=\"${x => x.ariaExpanded}\"\n aria-haspopup=\"listbox\"\n class=\"selected-value\"\n part=\"selected-value\"\n placeholder=\"${x => x.placeholder}\"\n role=\"combobox\"\n type=\"text\"\n ?disabled=\"${x => x.disabled}\"\n :value=\"${x => x.value}\"\n @input=\"${(x, c) => x.inputHandler(c.event)}\"\n @keyup=\"${(x, c) => x.keyupHandler(c.event)}\"\n ${ref(\"control\")}\n />\n
\n \n ${definition.indicator || \"\"}\n \n
\n
\n ${endSlotTemplate(context, definition)}\n
\n x.listboxId}\"\n part=\"listbox\"\n role=\"listbox\"\n ?disabled=\"${x => x.disabled}\"\n ?hidden=\"${x => !x.open}\"\n ${ref(\"listbox\")}\n >\n \n \n \n`;\n","import { css, ElementStyles } from '@microsoft/fast-element';\nimport { disabledCursor, display, focusVisible, forcedColorsStylesheetBehavior, FoundationElementTemplate, ComboboxOptions } from '@microsoft/fast-foundation';\nimport { SystemColors } from '@microsoft/fast-web-utilities';\nimport { accentFillHover, neutralFillActive, neutralFillHover, neutralFillRest, neutralForegroundActive, neutralForegroundRest, neutralInputFillHover, neutralInputFillRest, neutralLayer1, neutralStealthFillActive, neutralStealthFillHover, neutralStealthFillRest, neutralStrokeFocus, neutralStrokeRest, designTokens } from '../../design-tokens';\nimport { appearanceBehavior } from '../../styles/behaviors';\nimport { elevationRule } from '../../styles/elevation';\nimport { heightNumber, paddingNumber } from '../../styles/size';\n\nexport const comboboxFilledStyles: FoundationElementTemplate = (\n context,\n definition\n) => css`\n ${display(\"inline-flex\")} :host .control {\n background: ${neutralFillRest};\n }\n\n :host(:not([disabled]):hover) .control {\n background: ${neutralFillHover};\n }\n\n :host(:not([disabled]):active) .control {\n background: ${neutralFillActive};\n }\n`;\n\nexport const comboboxStealthStyles: FoundationElementTemplate = (\n context,\n definition\n) => css`\n :host .control {\n background: ${neutralStealthFillRest};\n border-color: transparent;\n box-shadow: none;\n }\n\n :host(:not([disabled]):hover) .control {\n background: ${neutralStealthFillHover};\n border-color: transparent;\n box-shadow: none;\n }\n\n :host(:not([disabled]):active) .control {\n background: ${neutralStealthFillActive};\n border-color: transparent;\n box-shadow: none;\n }\n `;\n\nexport const comboboxLightweightStyles: FoundationElementTemplate = (\n context,\n definition\n) => css`\n :host .control {\n background: transparent;\n border-color: transparent;\n box-shadow: none;\n }\n\n :host(:not([disabled]):hover) .control {\n background: ${neutralStealthFillHover};\n border-color: transparent;\n box-shadow: none;\n }\n\n :host(:not([disabled]):active) .control {\n background: ${neutralStealthFillActive};\n border-color: transparent;\n box-shadow: none;\n }\n `;\n\nexport const comboboxStyles: FoundationElementTemplate = (\n context,\n definition\n) => css`\n ${display(\"inline-flex\")} :host {\n --elevation: 14;\n --listbox-max-height: 6;\n position: relative;\n box-sizing: border-box;\n\n font-family: ${designTokens['typography-font-family'].token};\n fill: currentcolor;\n\n user-select: none;\n outline: none;\n }\n\n :host .listbox {\n ${elevationRule}\n background: ${neutralLayer1};\n border: calc(${designTokens['space-stroke-width'].token} * 1px) solid ${neutralStrokeRest};\n border-radius: calc(${designTokens['space-input-corner-radius'].token} * 1px);\n box-sizing: border-box;\n display: inline-flex;\n flex-direction: column;\n left: 0;\n max-height: calc((var(--listbox-max-height) * ${heightNumber} + ${designTokens['space-stroke-width'].token}) * 1px);\n padding: 0;\n overflow-y: auto;\n position: absolute;\n width: 100%;\n z-index: 1;\n }\n\n :host .listbox[hidden] {\n display: none;\n }\n\n :host .control {\n border: calc(${designTokens['space-stroke-width'].token} * 1px) solid ${neutralStrokeRest};\n border-radius: calc(${designTokens['space-input-corner-radius'].token} * 1px);\n height: calc(${heightNumber} * 1px);\n vertical-align: top;\n background: ${neutralInputFillRest};\n color: ${neutralForegroundRest};\n box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.1);\n align-items: center;\n box-sizing: border-box;\n cursor: pointer;\n display: flex;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n padding-left: calc(${paddingNumber} * 1px);\n width: 100%;\n }\n\n :host(:not([disabled]):hover) .control {\n background: ${neutralInputFillHover};\n border-color: ${accentFillHover};\n }\n\n :host(:${focusVisible}) .control {\n border-color: ${neutralStrokeFocus};\n box-shadow: 0 0 0 calc(${designTokens['space-focus-stroke-width'].token} * 1px) ${neutralStrokeFocus};\n }\n\n :host([disabled]) {\n cursor: ${disabledCursor};\n opacity: ${designTokens['color-disabled-opacity'].token};\n }\n\n :host([disabled]) .control {\n cursor: ${disabledCursor};\n user-select: none;\n }\n\n :host([open]) .control {\n color: ${neutralForegroundActive};\n }\n\n :host([open][position=\"above\"]) .listbox {\n bottom: calc((${heightNumber} + ${designTokens['space-design-unit'].token}) * 1px);\n }\n\n :host([open][position=\"below\"]) .listbox {\n top: calc((${heightNumber} + ${designTokens['space-design-unit'].token}) * 1px);\n }\n\n .selected-value {\n -webkit-appearance: none;\n background: transparent;\n border: none;\n color: inherit;\n font-size: ${designTokens['typography-type-ramp-base-font-size'].token};\n line-height: ${designTokens['typography-type-ramp-base-line-height'].token};\n height: calc(100% - (${designTokens['space-stroke-width'].token} * 1px));\n margin: auto 0;\n width: 100%;\n }\n\n .selected-value:hover,\n .selected-value:${focusVisible},\n .selected-value:disabled,\n .selected-value:active {\n outline: none;\n }\n\n .indicator {\n flex: 0 0 auto;\n margin-inline-start: 1em;\n }\n\n slot[name=\"listbox\"] {\n display: none;\n width: 100%;\n }\n\n :host([open]) slot[name=\"listbox\"] {\n display: flex;\n position: absolute;\n ${elevationRule}\n }\n\n .end {\n margin-inline-start: auto;\n }\n\n .start,\n .end,\n .indicator,\n ::slotted(svg) {\n display: flex;\n height: 1em;\n min-height: calc(${designTokens['space-design-unit'].token} * 4px);\n min-width: calc(${designTokens['space-design-unit'].token} * 4px);\n width: 1em;\n }\n\n ::slotted([role=\"option\"]) {\n flex: 0 0 auto;\n }\n`.withBehaviors(\n appearanceBehavior(\"filled\", comboboxFilledStyles(context, definition)),\n appearanceBehavior(\"stealth\", comboboxStealthStyles(context, definition)),\n appearanceBehavior(\"lightweight\", comboboxLightweightStyles(context, definition)),\n forcedColorsStylesheetBehavior(\n css`\n :host([disabled]) {\n border-color: ${SystemColors.GrayText};\n color: ${SystemColors.GrayText};\n opacity: 1;\n }\n\n :host(:not([disabled]):hover) {\n background: ${SystemColors.ButtonFace};\n border-color: ${SystemColors.Highlight};\n }\n\n :host(:${focusVisible}) {\n forced-color-adjust: none;\n background: ${SystemColors.ButtonFace};\n border-color: ${SystemColors.Highlight};\n box-shadow: 0 0 0 calc(${designTokens['space-focus-stroke-width'].token} * 1px) inset ${SystemColors.Highlight};\n color: ${SystemColors.ButtonText};\n fill: currentcolor;\n }\n\n :host([open]) .listbox {\n background: ${SystemColors.ButtonFace};\n border: 1px solid ${SystemColors.ButtonText};\n }\n\n :host(:${focusVisible}) ::slotted([role=\"option\"][aria-selected=\"true\"]:not([disabled])) {\n background: ${SystemColors.Highlight};\n border-color: ${SystemColors.ButtonText};\n box-shadow: 0 0 0 calc(${designTokens['space-focus-stroke-width'].token} * 1px) inset ${SystemColors.HighlightText};\n color: ${SystemColors.HighlightText};\n }\n\n ::slotted([role=\"option\"]:not([aria-selected=\"true\"]):not([disabled]):hover) {\n color: ${SystemColors.ButtonText};\n background: ${SystemColors.ButtonFace};\n border-color: ${SystemColors.Highlight};\n box-shadow: none;\n }\n `\n )\n);\n","import { parseColorHexRGB } from \"@microsoft/fast-colors\";\nimport { ValueConverter } from \"@microsoft/fast-element\";\nimport { Swatch, SwatchRGB } from \"../color\";\n\n/**\n * A {@link ValueConverter} that converts to and from `Swatch` values.\n * @remarks\n * This converter allows for colors represented as string hex values, returning `null` if the\n * input was `null` or `undefined`.\n * @internal\n */\n export const swatchConverter: ValueConverter = {\n toView(value: any): string | null {\n if (value === null || value === undefined) {\n return null;\n }\n return (value as Swatch)?.toColorString();\n },\n\n fromView(value: any): any {\n if (value === null || value === undefined) {\n return null;\n }\n const color = parseColorHexRGB(value);\n return color ? new SwatchRGB(color.r, color.g, color.b) : null;\n },\n};\n","import { css } from \"@microsoft/fast-element\";\nimport { forcedColorsStylesheetBehavior } from \"@microsoft/fast-foundation\";\nimport { SystemColors } from \"@microsoft/fast-web-utilities\";\nimport { designTokens, fillColor, neutralForegroundRest } from \"../../design-tokens\";\n\nexport const backgroundStyles = css`\n :host {\n background-color: ${fillColor};\n color: ${neutralForegroundRest};\n\n font-family: ${designTokens['typography-font-family'].token};\n font-size: ${designTokens['typography-type-ramp-base-font-size'].token};\n line-height: ${designTokens['typography-type-ramp-base-line-height'].token};\n }\n`.withBehaviors(\n forcedColorsStylesheetBehavior(\n css`\n :host {\n background-color: ${SystemColors.ButtonFace};\n box-shadow: 0 0 0 1px ${SystemColors.CanvasText};\n color: ${SystemColors.ButtonText};\n }\n `\n));\n","import { css } from '@microsoft/fast-element';\nimport { designTokens } from '../design-tokens';\n\nexport const typeRampStyles = css`\n \n\n h1, h2, h3, h4, h5, h6 {\n margin: 0;\n font-weight: 700;\n }\n\n h1 {\n font-size: ${designTokens['typography-type-ramp-plus-6-font-size'].token};\n line-height: ${designTokens['typography-type-ramp-plus-6-line-height'].token};\n }\n\n h2 {\n font-size: ${designTokens['typography-type-ramp-plus-5-font-size'].token};\n line-height: ${designTokens['typography-type-ramp-plus-5-line-height'].token};\n }\n\n h3 {\n font-size: ${designTokens['typography-type-ramp-plus-4-font-size'].token};\n line-height: ${designTokens['typography-type-ramp-plus-4-line-height'].token};\n }\n\n h4 {\n font-size: ${designTokens['typography-type-ramp-plus-3-font-size'].token};\n line-height: ${designTokens['typography-type-ramp-plus-3-line-height'].token};\n }\n\n h5 {\n font-size: ${designTokens['typography-type-ramp-plus-2-font-size'].token};\n line-height: ${designTokens['typography-type-ramp-plus-2-line-height'].token};\n }\n\n h6 {\n font-size: ${designTokens['typography-type-ramp-plus-1-font-size'].token};\n line-height: ${designTokens['typography-type-ramp-plus-1-line-height'].token};\n }\n`;\n","import { attr, css, html, nullableNumberConverter, observable, Observable } from '@microsoft/fast-element';\nimport { DesignToken, DesignTokenValue, display, FoundationElement } from '@microsoft/fast-foundation';\nimport { Palette, Swatch } from '../../color';\nimport { swatchConverter } from '../../value-converters/swatch-value-converter';\nimport { backgroundStyles } from './design-system-provider.styles';\nimport { accentPalette, fillColor, neutralPalette, overrideDesignTokensFromJson, secondaryPalette, designTokens, brand } from '../../design-tokens';\nimport { typeRampStyles } from '../../styles/typography';\n\nimport defaultTheme from '../../design-tokens/default.tokens.json';\n\n// TODO: Load at runtime?\n\n// Brands\nimport ngicTheme from '../../design-tokens/brands/ngic.tokens.json';\nimport aieTheme from '../../design-tokens/brands/aie.tokens.json';\nimport allstateTheme from '../../design-tokens/brands/allstate.tokens.json';\nimport daTheme from '../../design-tokens/brands/directauto.tokens.json';\nimport encompassTheme from '../../design-tokens/brands/encompass.tokens.json';\nimport fuiTheme from '../../design-tokens/brands/fui.tokens.json';\nimport goodsamTheme from '../../design-tokens/brands/goodsam.tokens.json';\nimport mvicTheme from '../../design-tokens/brands/mvic.tokens.json';\nimport natgenpremierTheme from '../../design-tokens/brands/natgenpremier.tokens.json';\nimport njsiTheme from '../../design-tokens/brands/njsi.tokens.json';\n\n// Variants\nimport salesVariant from '../../design-tokens/variants/sales.tokens.json';\nimport { stringListValueConverter } from '../../value-converters/string-list-value-converter';\n\nfunction designToken(token: DesignToken) {\n return (source: NatGenDesignSystemProvider, key: string) => {\n source[key + 'Changed'] = function (\n this: NatGenDesignSystemProvider,\n prev: T | undefined,\n next: T | undefined\n ) {\n if (next !== undefined && next !== null) {\n token.setValueFor(this, next as DesignTokenValue);\n } else {\n token.deleteValueFor(this);\n }\n };\n };\n}\n\n// TODO: Do we need these enumerated on this provider anymore?\nfunction designTokenKey(tokenKey: string) {\n return (source: NatGenDesignSystemProvider, key: string) => {\n source[key + 'Changed'] = function (\n this: NatGenDesignSystemProvider,\n prev: T | undefined,\n next: T | undefined\n ) {\n if (next !== undefined && next !== null) {\n designTokens[tokenKey].setValueFor(this, next as DesignTokenValue);\n } else {\n designTokens[tokenKey].deleteValueFor(this);\n }\n };\n };\n}\n\n/**\n * @element natgen-design-system-provider\n */\nexport class NatGenDesignSystemProvider extends FoundationElement {\n constructor() {\n super();\n\n // If fillColor or baseLayerLuminance change, we need to\n // re-evaluate whether we should have paint styles applied\n const subscriber = {\n handleChange: this.noPaintChanged.bind(this),\n };\n\n Observable.getNotifier(this).subscribe(subscriber, 'fillColor');\n Observable.getNotifier(this).subscribe(subscriber, 'baseLayerLuminance');\n }\n\n /**\n * Used to instruct the NatGenDesignSystemProvider\n * that it should not set the CSS\n * background-color and color properties\n *\n * @remarks\n * HTML boolean attribute: no-paint\n */\n @attr({ attribute: 'no-paint', mode: 'boolean' })\n public noPaint = false;\n private noPaintChanged() {\n if (!this.noPaint && (this.fillColor !== void 0 || this.baseLayerLuminance !== void 0))\n this.$fastController.addStyles(backgroundStyles);\n else\n this.$fastController.removeStyles(backgroundStyles);\n }\n\n @attr({ attribute: \"use-default-typography\", mode: \"boolean\" })\n public useDefaultTypography: boolean = false;\n private useDefaultTypographyChanged() {\n if (this.useDefaultTypography) {\n typeRampStyles.addStylesTo(document);\n } else {\n typeRampStyles.removeStylesFrom(document);\n }\n }\n\n @attr\n public brand: string = \"ngic\";\n private brandChanged() {\n this.onTokensChanged();\n }\n\n @attr({\n converter: stringListValueConverter\n })\n public variants: string[];\n private variantsChanged() {\n this.onTokensChanged();\n }\n\n private onTokensChanged() {\n Object.keys(designTokens).forEach(k => designTokens[k].deleteValueFor(this));\n\n brand.setValueFor(this, this.brand);\n\n switch(this.brand)\n {\n case 'ngic':\n overrideDesignTokensFromJson(ngicTheme, this);\n break;\n case 'aie':\n overrideDesignTokensFromJson(aieTheme, this);\n break;\n case 'allstate':\n overrideDesignTokensFromJson(allstateTheme, this);\n break;\n case 'directauto':\n overrideDesignTokensFromJson(daTheme, this)\n break;\n case 'encompass':\n overrideDesignTokensFromJson(encompassTheme, this)\n break;\n case 'goodsam':\n overrideDesignTokensFromJson(goodsamTheme, this)\n break;\n case 'fui':\n overrideDesignTokensFromJson(fuiTheme, this);\n break;\n case 'mvic':\n overrideDesignTokensFromJson(mvicTheme, this);\n break;\n case 'natgenpremier':\n overrideDesignTokensFromJson(natgenpremierTheme, this);\n break;\n case 'njsi':\n overrideDesignTokensFromJson(njsiTheme, this);\n break;\n default:\n overrideDesignTokensFromJson(defaultTheme, this);\n break;\n }\n\n // TODO: Loop when we have more than one variant:\n if (this.variants?.includes('sales'))\n overrideDesignTokensFromJson(salesVariant, this);\n }\n\n /**\n * The {@link https://www.w3.org/WAI/GL/wiki/Relative_luminance#:~:text=WCAG%20definition%20of%20relative%20luminance,and%201%20for%20lightest%20white|relative luminance} of the base layer of the application.\n *\n * @remarks\n * When set to a number between 0 and 1, this value controls the luminosity of the neutral layers.\n *\n * HTML attribute: base-layer-luminance\n *\n * CSS custom property: N/A\n */\n @attr({\n attribute: \"base-layer-luminance\",\n converter: nullableNumberConverter,\n })\n @designTokenKey('color-base-layer-luminance')\n public baseLayerLuminance: number;\n\n /**\n * Define design system property attributes\n * @remarks\n * HTML attribute: background-color\n *\n * CSS custom property: --fill-color\n */\n @attr({\n attribute: 'background-color',\n converter: swatchConverter,\n })\n @designToken(fillColor)\n public fillColor: Swatch;\n\n /**\n * Set the neutral color\n * @remarks\n * HTML attribute: neutral-color\n */\n @attr({\n attribute: \"neutral-base-color\",\n converter: swatchConverter,\n mode: \"fromView\",\n })\n @designTokenKey('color-neutral')\n public neutralBaseColor?: Swatch;\n\n /**\n * Set the accent color\n * @remarks\n * HTML attribute: accent-color\n */\n @attr({\n attribute: \"accent-base-color\",\n converter: swatchConverter,\n mode: \"fromView\",\n })\n @designTokenKey('color-accent')\n public accentBaseColor?: Swatch;\n\n /**\n * Set the accent color\n * @remarks\n * HTML attribute: accent-color\n */\n @attr({\n attribute: \"secondary-base-color\",\n converter: swatchConverter,\n mode: \"fromView\",\n })\n @designTokenKey('color-secondary')\n public secondaryBaseColor?: Swatch;\n\n /**\n * This color is used to grab the user's attention.\n */\n @attr({\n attribute: 'error-color',\n converter: swatchConverter,\n })\n @designTokenKey('color-error')\n public errorColor: string;\n\n /**\n * This color is used to grab the user's attention.\n */\n @attr({\n attribute: 'success-color',\n converter: swatchConverter,\n })\n @designTokenKey('color-success')\n public successColor: string;\n\n /**\n * Defines the palette that all neutral color recipes are derived from.\n * This is an array for hexadecimal color strings ordered from light to dark.\n */\n @observable\n @designToken(neutralPalette)\n public neutralPalette: Palette;\n\n /**\n * Defines the palette that all accent color recipes are derived from.\n * This is an array for hexadecimal color strings ordered from light to dark.\n */\n @observable\n @designToken(accentPalette)\n public accentPalette: Palette;\n\n /**\n * Defines the palette that all secondary accent color recipes are derived from.\n * This is an array for hexadecimal color strings ordered from light to dark.\n */\n @observable\n @designToken(secondaryPalette)\n public secondaryPalette: Palette;\n\n /**\n *\n * The density offset, used with designUnit to calculate height and spacing.\n *\n * @remarks\n * HTML attribute: density\n *\n * CSS custom property: --density\n */\n @attr({\n converter: nullableNumberConverter,\n })\n @designTokenKey('space-density')\n public density: number;\n\n /**\n * The grid-unit that UI dimensions are derived from in pixels.\n *\n * @remarks\n * HTML attribute: design-unit\n *\n * CSS custom property: --space-design-unit\n */\n @attr({\n attribute: \"design-unit\",\n converter: nullableNumberConverter,\n })\n @designTokenKey('space-design-unit')\n public designUnit: number;\n\n /**\n * The number of designUnits used for component height at the base density.\n *\n * @remarks\n * HTML attribute: base-height-units\n *\n * CSS custom property: --base-height-units\n */\n @attr({\n attribute: \"base-height-units\",\n converter: nullableNumberConverter,\n })\n @designTokenKey('space-base-height-units')\n public baseHeightMultiplier: number;\n\n /**\n * The number of designUnits used for horizontal spacing at the base density.\n *\n * @remarks\n * HTML attribute: base-horizontal-spacing-units\n *\n * CSS custom property: --base-horizontal-spacing-units\n */\n @attr({\n attribute: \"base-horizontal-spacing-units\",\n converter: nullableNumberConverter,\n })\n @designTokenKey('space-base-horizontal-spacing-units')\n public baseHorizontalSpacingMultiplier: number;\n\n /**\n * The corner radius applied to controls.\n *\n * @remarks\n * HTML attribute: corner-radius\n *\n * CSS custom property: --corner-radius\n */\n @attr({\n attribute: \"corner-radius\",\n converter: nullableNumberConverter,\n })\n @designTokenKey('space-corner-radius')\n public cornerRadius: number;\n\n /**\n * The corner radius applied to inputs.\n *\n * @remarks\n * HTML attribute: input-corner-radius\n *\n * CSS custom property: --input-corner-radius\n */\n @attr({\n attribute: \"input-corner-radius\",\n converter: nullableNumberConverter,\n })\n @designTokenKey('space-input-corner-radius')\n public inputCornerRadius: number;\n\n /**\n * The corner radius applied to buttons.\n *\n * @remarks\n * HTML attribute: button-corner-radius\n *\n * CSS custom property: --button-corner-radius\n */\n @attr({\n attribute: \"button-corner-radius\",\n converter: nullableNumberConverter,\n })\n @designTokenKey('space-button-corner-radius')\n public buttonCornerRadius: number;\n\n /**\n * The width of the standard stroke applied to stroke components in pixels.\n *\n * @remarks\n * HTML attribute: stroke-width\n *\n * CSS custom property: --stroke-width\n */\n @attr({\n attribute: \"stroke-width\",\n converter: nullableNumberConverter,\n })\n @designTokenKey('space-stroke-width')\n public strokeWidth: number;\n\n /**\n * The width of the standard focus stroke in pixels.\n *\n * @remarks\n * HTML attribute: focus-stroke-width\n *\n * CSS custom property: --focus-stroke-width\n */\n @attr({\n attribute: \"focus-stroke-width\",\n converter: nullableNumberConverter,\n })\n @designTokenKey('space-focus-stroke-width')\n public focusStrokeWidth: number;\n\n /**\n * The opacity of a disabled control.\n *\n * @remarks\n * HTML attribute: disabled-opacity\n *\n * CSS custom property: --disabled-opacity\n */\n @attr({\n attribute: \"disabled-opacity\",\n converter: nullableNumberConverter,\n })\n @designTokenKey('color-disabled-opacity')\n public disabledOpacity: number;\n\n /**\n * The font-size two steps below the base font-size\n *\n * @remarks\n * HTML attribute: type-ramp-minus-3-font-size\n *\n * CSS custom property: --typography-type-ramp-minus-3-font-size\n */\n @attr({\n attribute: \"type-ramp-minus-3-font-size\",\n })\n @designTokenKey('typography-type-ramp-minus-3-font-size')\n public typeRampMinus3FontSize: string;\n\n /**\n * The line-height two steps below the base line-height\n *\n * @remarks\n * HTML attribute: type-ramp-minus-3-line-height\n *\n * CSS custom property: --typography-type-ramp-minus-3-line-height\n */\n @attr({\n attribute: \"type-ramp-minus-3-line-height\",\n })\n @designTokenKey('typography-type-ramp-minus-3-line-height')\n public typeRampMinus3LineHeight: string;\n\n /**\n * The font-size two steps below the base font-size\n *\n * @remarks\n * HTML attribute: type-ramp-minus-2-font-size\n *\n * CSS custom property: --typography-type-ramp-minus-2-font-size\n */\n @attr({\n attribute: \"type-ramp-minus-2-font-size\",\n })\n @designTokenKey('typography-type-ramp-minus-2-font-size')\n public typeRampMinus2FontSize: string;\n\n /**\n * The line-height two steps below the base line-height\n *\n * @remarks\n * HTML attribute: type-ramp-minus-2-line-height\n *\n * CSS custom property: --typography-type-ramp-minus-2-line-height\n */\n @attr({\n attribute: \"type-ramp-minus-2-line-height\",\n })\n @designTokenKey('typography-type-ramp-minus-2-line-height')\n public typeRampMinus2LineHeight: string;\n\n /**\n * The font-size one step below the base font-size\n *\n * @remarks\n * HTML attribute: type-ramp-minus-1-font-size\n *\n * CSS custom property: --typography-type-ramp-minus-1-font-size\n */\n @attr({\n attribute: \"type-ramp-minus-1-font-size\",\n })\n @designTokenKey('typography-type-ramp-minus-1-font-size')\n public typeRampMinus1FontSize: string;\n\n /**\n * The line-height one step below the base line-height\n *\n * @remarks\n * HTML attribute: type-ramp-minus-1-line-height\n *\n * CSS custom property: --typography-type-ramp-minus-1-line-height\n */\n @attr({\n attribute: \"type-ramp-minus-1-line-height\",\n })\n @designTokenKey('typography-type-ramp-minus-1-line-height')\n public typeRampMinus1LineHeight: string;\n\n /**\n * The base font-size of the relative type-ramp scale\n *\n * @remarks\n * HTML attribute: type-ramp-base-font-size\n *\n * CSS custom property: --typography-type-ramp-base-font-size\n */\n @attr({\n attribute: \"type-ramp-base-font-size\",\n })\n @designTokenKey('typography-type-ramp-base-font-size')\n public typeRampBaseFontSize: string;\n\n /**\n * The base line-height of the relative type-ramp scale\n *\n * @remarks\n * HTML attribute: type-ramp-base-line-height\n *\n * CSS custom property: --typography-type-ramp-base-line-height\n */\n @attr({\n attribute: \"type-ramp-base-line-height\",\n })\n @designTokenKey('typography-type-ramp-base-line-height')\n public typeRampBaseLineHeight: string;\n\n /**\n * The font-size one step above the base font-size\n *\n * @remarks\n * HTML attribute: type-ramp-plus-1-font-size\n *\n * CSS custom property: --typography-type-ramp-plus-1-font-size\n */\n @attr({\n attribute: \"type-ramp-plus-1-font-size\",\n })\n @designTokenKey('typography-type-ramp-plus-1-font-size')\n public typeRampPlus1FontSize: string;\n\n /**\n * The line-height one step above the base line-height\n *\n * @remarks\n * HTML attribute: type-ramp-plus-1-line-height\n *\n * CSS custom property: --typography-type-ramp-plus-1-line-height\n */\n @attr({\n attribute: \"type-ramp-plus-1-line-height\",\n })\n @designTokenKey('typography-type-ramp-plus-1-line-height')\n public typeRampPlus1LineHeight: string;\n\n /**\n * The font-size two steps above the base font-size\n *\n * @remarks\n * HTML attribute: type-ramp-plus-2-font-size\n *\n * CSS custom property: --typography-type-ramp-plus-2-font-size\n */\n @attr({\n attribute: \"type-ramp-plus-2-font-size\",\n })\n @designTokenKey('typography-type-ramp-plus-2-font-size')\n public typeRampPlus2FontSize: string;\n\n /**\n * The line-height two steps above the base line-height\n *\n * @remarks\n * HTML attribute: type-ramp-plus-2-line-height\n *\n * CSS custom property: --typography-type-ramp-plus-2-line-height\n */\n @attr({\n attribute: \"type-ramp-plus-2-line-height\",\n })\n @designTokenKey('typography-type-ramp-plus-2-line-height')\n public typeRampPlus2LineHeight: string;\n\n /**\n * The font-size three steps above the base font-size\n *\n * @remarks\n * HTML attribute: type-ramp-plus-3-font-size\n *\n * CSS custom property: --typography-type-ramp-plus-3-font-size\n */\n @attr({\n attribute: \"type-ramp-plus-3-font-size\",\n })\n @designTokenKey('typography-type-ramp-plus-3-font-size')\n public typeRampPlus3FontSize: string;\n\n /**\n * The line-height three steps above the base line-height\n *\n * @remarks\n * HTML attribute: type-ramp-plus-3-line-height\n *\n * CSS custom property: --typography-type-ramp-plus-3-line-height\n */\n @attr({\n attribute: \"type-ramp-plus-3-line-height\",\n })\n @designTokenKey('typography-type-ramp-plus-3-line-height')\n public typeRampPlus3LineHeight: string;\n\n /**\n * The font-size four steps above the base font-size\n *\n * @remarks\n * HTML attribute: type-ramp-plus-4-font-size\n *\n * CSS custom property: --typography-type-ramp-plus-4-font-size\n */\n @attr({\n attribute: \"type-ramp-plus-4-font-size\",\n })\n @designTokenKey('typography-type-ramp-plus-4-font-size')\n public typeRampPlus4FontSize: string;\n\n /**\n * The line-height four steps above the base line-height\n *\n * @remarks\n * HTML attribute: type-ramp-plus-4-line-height\n *\n * CSS custom property: --typography-type-ramp-plus-4-line-height\n */\n @attr({\n attribute: \"type-ramp-plus-4-line-height\",\n })\n @designTokenKey('typography-type-ramp-plus-4-line-height')\n public typeRampPlus4LineHeight: string;\n\n /**\n * The font-size five steps above the base font-size\n *\n * @remarks\n * HTML attribute: type-ramp-plus-5-font-size\n *\n * CSS custom property: --typography-type-ramp-plus-5-font-size\n */\n @attr({\n attribute: \"type-ramp-plus-5-font-size\",\n })\n @designTokenKey('typography-type-ramp-plus-5-font-size')\n public typeRampPlus5FontSize: string;\n\n /**\n * The line-height five steps above the base line-height\n *\n * @remarks\n * HTML attribute: type-ramp-plus-5-line-height\n *\n * CSS custom property: --typography-type-ramp-plus-5-line-height\n */\n @attr({\n attribute: \"type-ramp-plus-5-line-height\",\n })\n @designTokenKey('typography-type-ramp-plus-5-line-height')\n public typeRampPlus5LineHeight: string;\n\n /**\n * The font-size six steps above the base font-size\n *\n * @remarks\n * HTML attribute: type-ramp-plus-6-font-size\n *\n * CSS custom property: --typography-type-ramp-plus-6-font-size\n */\n @attr({\n attribute: \"type-ramp-plus-6-font-size\",\n })\n @designTokenKey('typography-type-ramp-plus-6-font-size')\n public typeRampPlus6FontSize: string;\n\n /**\n * The line-height six steps above the base line-height\n *\n * @remarks\n * HTML attribute: type-ramp-plus-6-line-height\n *\n * CSS custom property: --typography-type-ramp-plus-6-line-height\n */\n @attr({\n attribute: \"type-ramp-plus-6-line-height\",\n })\n @designTokenKey('typography-type-ramp-plus-6-line-height')\n public typeRampPlus6LineHeight: string;\n}\n\n/**\n * A function that returns a {@link DesignSystemProvider} registration for configuring the component with a DesignSystem.\n * @public\n * @remarks\n * Generates HTML Element: ``\n */\nexport const natGenDesignSystemProvider = NatGenDesignSystemProvider.compose({\n baseName: 'design-system-provider',\n template: html``,\n styles: css`${display('block')}`\n});\n","import { ValueConverter } from '@microsoft/fast-element';\n\n/**\n * A {@link ValueConverter} that serializes attributes to JSON string values.\n * @public\n */\nexport const stringListValueConverter: ValueConverter = {\n toView(value: string[]): string {\n return value.join(' ');\n },\n\n fromView(value: string): string[] {\n if(value === null || value === undefined || value === '')\n return [];\n\n return value.split(' ');\n }\n}\n","/*!\n* tabbable 5.3.3\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\nvar candidateSelectors = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]:not(slot)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])', 'details>summary:first-of-type', 'details'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar NoElement = typeof Element === 'undefined';\nvar matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\nvar getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {\n return element.getRootNode();\n} : function (element) {\n return element.ownerDocument;\n};\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\n\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n\n candidates = candidates.filter(filter);\n return candidates;\n};\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidatesScope\n * @property {Element} scope contains inner candidates\n * @property {Element[]} candidates\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n * if a function, implies shadow support is enabled and either returns the shadow root of an element\n * or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidatesScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.}\n */\n\n\nvar getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {\n var candidates = [];\n var elementsToCheck = Array.from(elements);\n\n while (elementsToCheck.length) {\n var element = elementsToCheck.shift();\n\n if (element.tagName === 'SLOT') {\n // add shadow dom slot scope (slot itself cannot be focusable)\n var assigned = element.assignedElements();\n var content = assigned.length ? assigned : element.children;\n var nestedCandidates = getCandidatesIteratively(content, true, options);\n\n if (options.flatten) {\n candidates.push.apply(candidates, nestedCandidates);\n } else {\n candidates.push({\n scope: element,\n candidates: nestedCandidates\n });\n }\n } else {\n // check candidate element\n var validCandidate = matches.call(element, candidateSelector);\n\n if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n candidates.push(element);\n } // iterate over shadow content if possible\n\n\n var shadowRoot = element.shadowRoot || // check for an undisclosed shadow\n typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);\n var validShadowRoot = !options.shadowRootFilter || options.shadowRootFilter(element);\n\n if (shadowRoot && validShadowRoot) {\n // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n // shadow exists, so look at light dom children as fallback BUT create a scope for any\n // child candidates found because they're likely slotted elements (elements that are\n // children of the web component element (which has the shadow), in the light dom, but\n // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n // _after_ we return from this recursive call\n var _nestedCandidates = getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n\n if (options.flatten) {\n candidates.push.apply(candidates, _nestedCandidates);\n } else {\n candidates.push({\n scope: element,\n candidates: _nestedCandidates\n });\n }\n } else {\n // there's not shadow so just dig into the element's (light dom) children\n // __without__ giving the element special scope treatment\n elementsToCheck.unshift.apply(elementsToCheck, element.children);\n }\n }\n }\n\n return candidates;\n};\n\nvar getTabindex = function getTabindex(node, isScope) {\n if (node.tabIndex < 0) {\n // in Chrome,
,