{"version":3,"names":["CSS","assistiveText","characterLimit","content","container","footer","resizeDisabled","resizeDisabledX","resizeDisabledY","characterOverLimit","readOnly","textAreaInvalid","footerSlotted","hide","footerEndSlotOnly","textArea","textAreaOnly","IDS","validationMessage","SLOTS","footerStart","footerEnd","RESIZE_TIMEOUT","textAreaCss","CalciteTextAreaStyle0","TextArea","this","guid","handleInput","event","value","target","calciteTextAreaInput","emit","handleChange","calciteTextAreaChange","contentSlotChangeHandler","nodes","el","childNodes","forEach","nodeName","nodeValue","trim","renderCharacterLimit","maxLength","localizedCharacterLengthObj","getLocalizedCharacterLength","h","class","isCharacterLimitExceeded","currentLength","resizeObserver","createObserver","async","componentLoaded","textAreaHeight","textAreaWidth","elHeight","elWidth","footerHeight","footerWidth","getHeightAndWidthOfElements","footerEl","style","width","setHeightAndWidthToAuto","setTextAreaEl","textAreaEl","observe","throttle","resize","height","leading","valid","badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing","handleGlobalAttributesChanged","forceUpdate","onMessagesChange","connectedCallback","connectLabel","connectForm","connectLocalized","connectMessages","componentWillLoad","setUpLoadableComponent","setUpMessages","componentDidLoad","setComponentLoaded","componentDidRender","updateHostInteraction","setTextAreaHeight","disconnectedCallback","disconnectLabel","disconnectForm","disconnectLocalized","disconnectMessages","disconnect","render","hasFooter","startSlotHasElements","endSlotHasElements","Host","key","InteractiveContainer","disabled","toAriaBoolean","status","getLabelText","autofocus","cols","columns","name","onChange","onInput","placeholder","ref","required","rows","wrap","onSlotchange","slotChangeHasAssignedElement","HiddenFormInputSlot","component","id","replacePlaceHoldersInMessages","Validation","icon","validationIcon","message","scale","setFocus","componentFocusable","focus","selectText","select","effectiveLocaleChange","updateMessages","effectiveLocale","onLabelClick","length","toString","numberingSystem","numberStringFormatter","numberFormatOptions","locale","signDisplay","useGrouping","groupSeparator","localize","syncHiddenFormInput","input","setCustomValidity","getBoundingClientRect","messages","replace"],"sources":["src/components/text-area/resources.ts","src/components/text-area/text-area.scss?tag=calcite-text-area&encapsulation=shadow","src/components/text-area/text-area.tsx"],"sourcesContent":["export const CSS = {\n assistiveText: \"assistive-text\",\n characterLimit: \"character-limit\",\n content: \"content\",\n container: \"container\",\n footer: \"footer\",\n resizeDisabled: \"resize--disabled\",\n resizeDisabledX: \"resize--disabled-x\",\n resizeDisabledY: \"resize--disabled-y\",\n characterOverLimit: \"character--over-limit\",\n readOnly: \"readonly\",\n textAreaInvalid: \"text-area--invalid\",\n footerSlotted: \"footer--slotted\",\n hide: \"hide\",\n footerEndSlotOnly: \"footer--end-only\",\n textArea: \"text-area\",\n textAreaOnly: \"text-area--only\",\n};\n\nexport const IDS = {\n validationMessage: \"textAreaValidationMessage\",\n};\n\nexport const SLOTS = {\n footerStart: \"footer-start\",\n footerEnd: \"footer-end\",\n};\n\nexport const RESIZE_TIMEOUT = 100;\n","/**\n * CSS Custom Properties\n *\n * These properties can be overridden using the component's tag as selector.\n *\n * @prop --calcite-text-area-background-color: Specifies the component's background color.\n * @prop --calcite-text-area-border-color: Specifies the component's text area border color.\n * @prop --calcite-text-area-character-limit-text-color: Specifies the color of the character limit text displayed in the footer of the component.\n * @prop --calcite-text-area-divider-color: Specifies the color of the divider between the text area and footer.\n * @prop --calcite-text-area-font-size: Specifies the font size of the text area and footer.\n * @prop --calcite-text-area-max-height: Specifies the component's text area maximum height.\n * @prop --calcite-text-area-min-height: Specifies the component's text area minimum height.\n * @prop --calcite-text-area-max-width: Specifies the component's text area maximum width.\n * @prop --calcite-text-area-min-width: Specifies the component's text area minimum width.\n * @prop --calcite-text-area-text-color: Specifies the component's text color.\n * @prop --calcite-text-area-footer-border-color: Specifies the footer's border color.\n */\n\n:host {\n @apply inline-block relative w-full h-full;\n\n --calcite-internal-text-area-border-color: var(--calcite-text-area-border-color, var(--calcite-color-border-input));\n --calcite-internal-text-area-footer-border-color: var(\n --calcite-text-area-footer-border-color,\n var(--calcite-internal-text-area-border-color)\n );\n}\n\n.text-area,\n.footer {\n font-size: var(--calcite-text-area-font-size, var(--calcite-font-size--1));\n background-color: var(--calcite-text-area-background-color, var(--calcite-color-foreground-1));\n padding-block: var(--calcite-spacing-sm);\n padding-inline: var(--calcite-spacing-md);\n}\n\n.text-area {\n @apply relative font-sans block box-border w-full m-0;\n\n --calcite-internal-text-area-border-block-end-color: var(--calcite-internal-text-area-border-color);\n\n border: var(--calcite-border-width-sm) solid var(--calcite-internal-text-area-border-color);\n border-block-end-color: var(--calcite-internal-text-area-border-block-end-color);\n color: var(--calcite-text-area-text-color, var(--calcite-color-text-1));\n font-family: var(--calcite-sans-family);\n\n max-block-size: var(--calcite-text-area-max-height);\n min-block-size: var(--calcite-text-area-min-height);\n max-inline-size: var(--calcite-text-area-max-width);\n min-inline-size: var(--calcite-text-area-min-width, theme(\"spacing.48\"));\n\n &::placeholder {\n @apply font-normal;\n }\n\n @media screen and (max-width: 480px) {\n @apply resize-none;\n }\n\n &:focus {\n @apply focus-inset;\n }\n\n &.text-area--invalid {\n --calcite-internal-text-area-border-color: var(--calcite-color-status-danger);\n\n &:focus {\n @apply focus-inset-danger;\n }\n }\n\n &.footer--slotted {\n min-inline-size: theme(\"spacing.72\");\n }\n\n &:not(.text-area--only, .text-area--invalid) {\n --calcite-internal-text-area-border-block-end-color: var(\n --calcite-text-area-divider-color,\n var(--calcite-color-border-3)\n );\n }\n}\n\n.footer {\n @apply flex box-border items-center;\n border: var(--calcite-border-width-sm) solid var(--calcite-internal-text-area-footer-border-color);\n border-block-start: var(--calcite-border-width-none);\n min-block-size: 2.25rem;\n}\n\n.character-limit {\n @apply flex justify-end items-center whitespace-nowrap;\n\n font-size: var(--calcite-text-area-font-size, var(--calcite-font-size--1));\n font-weight: var(--calcite-font-weight-regular);\n color: var(--calcite-text-area-character-limit-text-color, var(--calcite-color-text-2));\n padding-inline-start: var(--calcite-spacing-md);\n}\n\n.character--over-limit {\n font-weight: var(--calcite-font-weight-bold);\n color: var(--calcite-color-status-danger);\n}\n\n.readonly {\n background-color: var(--calcite-color-background);\n font-weight: var(--calcite-font-weight-medium);\n}\n\n.content,\n.hide {\n @apply hidden;\n}\n\n.container {\n @apply flex justify-between w-full;\n}\n\n.footer--end-only {\n @apply justify-end;\n}\n\n.assistive-text {\n @apply sr-only;\n}\n\n.text-area.text-area--only {\n @apply h-full;\n}\n\n:host([resize=\"none\"]) .text-area {\n @apply resize-none;\n}\n\n:host([resize=\"horizontal\"]) .text-area {\n @apply resize-x;\n}\n\n:host([resize=\"vertical\"]) .text-area {\n @apply resize-y;\n}\n\n:host([scale=\"s\"]) {\n .text-area,\n .footer,\n .character-limit {\n @apply pl-2;\n font-size: var(--calcite-text-area-font-size, var(--calcite-font-size--2));\n }\n\n .footer {\n min-block-size: 1.75rem;\n }\n\n .text-area {\n @apply py-1 px-2;\n }\n}\n\n:host([scale=\"m\"]) {\n .text-area {\n @apply py-2 px-3;\n }\n\n .footer {\n @apply py-2 px-3;\n min-block-size: 2.25rem;\n }\n}\n\n:host([scale=\"l\"]) {\n .text-area,\n .footer {\n font-size: var(--calcite-text-area-font-size, var(--calcite-font-size-0));\n padding-block: var(--calcite-spacing-md);\n padding-inline: var(--calcite-spacing-xl);\n }\n\n .footer {\n min-block-size: 2.75rem;\n }\n\n .text-area,\n .footer,\n .character-limit {\n font-size: var(--calcite-text-area-font-size, var(--calcite-font-size-0));\n padding-inline-start: var(--calcite-spacing-xl);\n }\n}\n\n:host([status=\"invalid\"]) {\n --calcite-internal-text-area-border-color: var(--calcite-color-status-danger);\n\n .text-area:focus {\n @apply focus-inset-danger;\n }\n}\n\n:host([disabled]) {\n .text-area,\n .footer {\n opacity: var(--calcite-opacity-half);\n }\n}\n\n@include form-validation-message();\n@include hidden-form-input();\n@include disabled();\n@include base-component();\n","import {\n Component,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n VNode,\n Watch,\n Method,\n Host,\n State,\n forceUpdate,\n} from \"@stencil/core\";\nimport { throttle } from \"lodash-es\";\nimport {\n connectForm,\n disconnectForm,\n FormComponent,\n HiddenFormInputSlot,\n MutableValidityState,\n} from \"../../utils/form\";\nimport { connectLabel, disconnectLabel, getLabelText, LabelableComponent } from \"../../utils/label\";\nimport { slotChangeHasAssignedElement, toAriaBoolean } from \"../../utils/dom\";\nimport {\n connectLocalized,\n disconnectLocalized,\n LocalizedComponent,\n NumberingSystem,\n numberStringFormatter,\n} from \"../../utils/locale\";\nimport { createObserver } from \"../../utils/observers\";\nimport {\n componentFocusable,\n componentLoaded,\n LoadableComponent,\n setComponentLoaded,\n setUpLoadableComponent,\n} from \"../../utils/loadable\";\nimport {\n connectMessages,\n disconnectMessages,\n setUpMessages,\n T9nComponent,\n updateMessages,\n} from \"../../utils/t9n\";\nimport {\n InteractiveComponent,\n InteractiveContainer,\n updateHostInteraction,\n} from \"../../utils/interactive\";\nimport { guid } from \"../../utils/guid\";\nimport { Status } from \"../interfaces\";\nimport { Validation } from \"../functional/Validation\";\nimport { syncHiddenFormInput, TextualInputComponent } from \"../input/common/input\";\nimport { IconNameOrString } from \"../icon/interfaces\";\nimport { CharacterLengthObj } from \"./interfaces\";\nimport { TextAreaMessages } from \"./assets/text-area/t9n\";\nimport { CSS, IDS, SLOTS, RESIZE_TIMEOUT } from \"./resources\";\n\n/**\n * @slot - A slot for adding text.\n * @slot footer-start - A slot for adding content to the start of the component's footer.\n * @slot footer-end - A slot for adding content to the end of the component's footer.\n */\n\n@Component({\n tag: \"calcite-text-area\",\n styleUrl: \"text-area.scss\",\n shadow: true,\n assetsDirs: [\"assets\"],\n})\nexport class TextArea\n implements\n FormComponent,\n LabelableComponent,\n LocalizedComponent,\n LoadableComponent,\n T9nComponent,\n InteractiveComponent,\n Omit\n{\n //--------------------------------------------------------------------------\n //\n // Global attributes\n //\n //--------------------------------------------------------------------------\n\n @Watch(\"autofocus\")\n handleGlobalAttributesChanged(): void {\n forceUpdate(this);\n }\n\n //--------------------------------------------------------------------------\n //\n // Properties\n //\n //--------------------------------------------------------------------------\n\n /**\n * Specifies the component's number of columns.\n *\n * @mdn [cols](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attr-cols)\n */\n @Prop({ reflect: true }) columns: number;\n\n /**\n * When `true`, interaction is prevented and the component is displayed with lower opacity.\n *\n * @mdn [disabled](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled)\n */\n @Prop({ reflect: true }) disabled = false;\n\n /**\n * The `id` of the form that will be associated with the component.\n *\n * When not set, the component will be associated with its ancestor form element, if any.\n */\n @Prop({ reflect: true })\n form: string;\n\n /**\n * When `true`, number values are displayed with a group separator corresponding to the language and country format.\n */\n @Prop({ reflect: true }) groupSeparator = false;\n\n /**\n * Accessible name for the component.\n */\n @Prop() label: string;\n\n /**\n * Specifies the minimum number of characters allowed.\n *\n * @mdn [minlength](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attr-minlength)\n */\n @Prop({ reflect: true }) minLength: number;\n\n /**\n * Specifies the maximum number of characters allowed.\n *\n * @mdn [maxlength](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attr-maxlength)\n */\n @Prop({ reflect: true }) maxLength: number;\n\n /**\n * Made into a prop for testing purposes only\n *\n * @internal\n */\n // eslint-disable-next-line @stencil-community/strict-mutable -- updated by t9n module\n @Prop({ mutable: true }) messages: TextAreaMessages;\n\n /** Specifies the validation message to display under the component. */\n @Prop() validationMessage: string;\n\n /** Specifies the validation icon to display under the component. */\n @Prop({ reflect: true }) validationIcon: IconNameOrString | boolean;\n\n /**\n * The current validation state of the component.\n *\n * @readonly\n * @mdn [ValidityState](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState)\n */\n // eslint-disable-next-line @stencil-community/strict-mutable -- updated in form util when syncing hidden input\n @Prop({ mutable: true }) validity: MutableValidityState = {\n valid: false,\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valueMissing: false,\n };\n\n /**\n * Specifies the name of the component.\n *\n * @mdn [name](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attr-name)\n */\n @Prop({ reflect: true }) name: string;\n\n /**\n * Specifies the Unicode numeral system used by the component for localization.\n */\n @Prop() numberingSystem: NumberingSystem;\n\n /**\n * Specifies the placeholder text for the component.\n *\n * @mdn [placeholder](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attr-placeholder)\n */\n @Prop() placeholder: string;\n\n /**\n * When `true`, the component's `value` can be read, but cannot be modified.\n *\n * @readonly\n * @mdn [readOnly](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/readonly)\n */\n @Prop({ reflect: true }) readOnly = false;\n\n /**\n * When `true`, the component must have a value in order for the form to submit.\n *\n * @mdn [required]https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/required\n */\n @Prop({ reflect: true }) required = false;\n\n /** Specifies if the component is resizable. */\n @Prop({ reflect: true }) resize: \"both\" | \"horizontal\" | \"vertical\" | \"none\" = \"both\";\n\n /**\n * Specifies the component's number of rows.\n *\n * @mdn [rows](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attr-rows)\n */\n @Prop({ reflect: true }) rows: number;\n\n /** Specifies the size of the component. */\n @Prop({ reflect: true }) scale: \"l\" | \"m\" | \"s\" = \"m\";\n\n /** Specifies the status of the input field, which determines message and icons. */\n @Prop({ reflect: true }) status: Status = \"idle\";\n\n /** The component's value. */\n @Prop({ mutable: true }) value = \"\";\n\n /**\n * Specifies the wrapping mechanism for the text.\n *\n * @mdn [wrap](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attr-wrap)\n */\n @Prop({ reflect: true }) wrap: \"soft\" | \"hard\" = \"soft\";\n\n /**\n * Use this property to override individual strings used by the component.\n */\n // eslint-disable-next-line @stencil-community/strict-mutable -- updated by t9n module\n @Prop({ mutable: true }) messageOverrides: Partial;\n\n @Watch(\"messageOverrides\")\n onMessagesChange(): void {\n /* wired up by t9n util */\n }\n\n //--------------------------------------------------------------------------\n //\n // Event Emitters\n //\n //--------------------------------------------------------------------------\n /**\n * Fires each time a new `value` is typed.\n */\n @Event() calciteTextAreaInput: EventEmitter;\n\n /**\n * Fires each time a new `value` is typed and committed.\n */\n @Event() calciteTextAreaChange: EventEmitter;\n\n //--------------------------------------------------------------------------\n //\n // Lifecycle\n //\n //--------------------------------------------------------------------------\n\n connectedCallback(): void {\n connectLabel(this);\n connectForm(this);\n connectLocalized(this);\n connectMessages(this);\n }\n\n async componentWillLoad(): Promise {\n setUpLoadableComponent(this);\n await setUpMessages(this);\n }\n\n componentDidLoad(): void {\n setComponentLoaded(this);\n }\n\n componentDidRender(): void {\n updateHostInteraction(this);\n this.setTextAreaHeight();\n }\n\n disconnectedCallback(): void {\n disconnectLabel(this);\n disconnectForm(this);\n disconnectLocalized(this);\n disconnectMessages(this);\n this.resizeObserver?.disconnect();\n }\n\n render(): VNode {\n const hasFooter = this.startSlotHasElements || this.endSlotHasElements || !!this.maxLength;\n return (\n \n \n \n \n \n \n (this.footerEl = el)}\n >\n \n \n (this.startSlotHasElements = slotChangeHasAssignedElement(event))\n }\n />\n \n (this.endSlotHasElements = slotChangeHasAssignedElement(event))\n }\n />\n \n {this.renderCharacterLimit()}\n \n \n {this.isCharacterLimitExceeded() && (\n \n {this.replacePlaceHoldersInMessages()}\n \n )}\n {this.validationMessage && this.status === \"invalid\" ? (\n \n ) : null}\n \n \n );\n }\n\n //--------------------------------------------------------------------------\n //\n // Public Methods\n //\n //--------------------------------------------------------------------------\n\n /** Sets focus on the component. */\n @Method()\n async setFocus(): Promise {\n await componentFocusable(this);\n this.textAreaEl.focus();\n }\n\n /** Selects the text of the component's `value`. */\n @Method()\n async selectText(): Promise {\n await componentLoaded(this);\n this.textAreaEl.select();\n }\n\n //--------------------------------------------------------------------------\n //\n // Private Properties/ State\n //\n //--------------------------------------------------------------------------\n\n @Element() el: HTMLCalciteTextAreaElement;\n\n defaultValue: TextArea[\"value\"];\n\n footerEl: HTMLElement;\n\n formEl: HTMLFormElement;\n\n labelEl: HTMLCalciteLabelElement;\n\n textAreaEl: HTMLTextAreaElement;\n\n @State() defaultMessages: TextAreaMessages;\n\n @State() endSlotHasElements: boolean;\n\n @State() startSlotHasElements: boolean;\n\n @State() effectiveLocale = \"\";\n\n @Watch(\"effectiveLocale\")\n effectiveLocaleChange(): void {\n updateMessages(this, this.effectiveLocale);\n }\n\n private guid = guid();\n\n private localizedCharacterLengthObj: CharacterLengthObj;\n\n //--------------------------------------------------------------------------\n //\n // Private Methods\n //\n //--------------------------------------------------------------------------\n\n onLabelClick(): void {\n this.setFocus();\n }\n\n handleInput = (event: InputEvent): void => {\n this.value = event.target[\"value\"];\n this.calciteTextAreaInput.emit();\n };\n\n handleChange = (): void => {\n this.calciteTextAreaChange.emit();\n };\n\n contentSlotChangeHandler = (): void => {\n if (!this.value) {\n const nodes = this.el.childNodes;\n nodes.forEach((el) => {\n if (el.nodeName === \"#text\") {\n this.value = el.nodeValue.trim();\n }\n });\n }\n };\n\n renderCharacterLimit = (): VNode | null => {\n if (this.maxLength) {\n this.localizedCharacterLengthObj = this.getLocalizedCharacterLength();\n return (\n \n \n {this.localizedCharacterLengthObj.currentLength}\n \n {\"/\"}\n {this.localizedCharacterLengthObj.maxLength}\n \n );\n }\n return null;\n };\n\n getLocalizedCharacterLength(): CharacterLengthObj {\n const currentLength = this.value ? this.value.length.toString() : \"0\";\n const maxLength = this.maxLength.toString();\n if (this.numberingSystem === \"latn\") {\n return { currentLength, maxLength };\n }\n\n numberStringFormatter.numberFormatOptions = {\n locale: this.effectiveLocale,\n numberingSystem: this.numberingSystem,\n signDisplay: \"never\",\n useGrouping: this.groupSeparator,\n };\n return {\n currentLength: numberStringFormatter.localize(currentLength),\n maxLength: numberStringFormatter.localize(maxLength),\n };\n }\n\n resizeObserver = createObserver(\"resize\", async () => {\n await componentLoaded(this);\n const { textAreaHeight, textAreaWidth, elHeight, elWidth, footerHeight, footerWidth } =\n this.getHeightAndWidthOfElements();\n if (footerWidth > 0 && footerWidth !== textAreaWidth) {\n this.footerEl.style.width = `${textAreaWidth}px`;\n }\n if (elWidth !== textAreaWidth || elHeight !== textAreaHeight + (footerHeight || 0)) {\n this.setHeightAndWidthToAuto();\n }\n });\n\n syncHiddenFormInput(input: HTMLInputElement): void {\n input.setCustomValidity(\"\");\n if (this.isCharacterLimitExceeded()) {\n input.setCustomValidity(this.replacePlaceHoldersInMessages());\n }\n\n syncHiddenFormInput(\"textarea\", this, input);\n }\n\n setTextAreaEl = (el: HTMLTextAreaElement): void => {\n this.textAreaEl = el;\n this.resizeObserver.observe(el);\n };\n\n setTextAreaHeight(): void {\n const { textAreaHeight, elHeight, footerHeight } = this.getHeightAndWidthOfElements();\n if (footerHeight > 0 && textAreaHeight + footerHeight != elHeight) {\n this.textAreaEl.style.height = `${elHeight - footerHeight}px`;\n }\n }\n\n getHeightAndWidthOfElements(): {\n textAreaHeight: number;\n textAreaWidth: number;\n elHeight: number;\n elWidth: number;\n footerHeight: number;\n footerWidth: number;\n } {\n const { height: textAreaHeight, width: textAreaWidth } =\n this.textAreaEl.getBoundingClientRect();\n const { height: elHeight, width: elWidth } = this.el.getBoundingClientRect();\n const { height: footerHeight, width: footerWidth } = this.footerEl.getBoundingClientRect();\n\n return {\n textAreaHeight,\n textAreaWidth,\n elHeight,\n elWidth,\n footerHeight,\n footerWidth,\n };\n }\n\n private replacePlaceHoldersInMessages(): string {\n return this.messages.tooLong\n .replace(\"{maxLength}\", this.localizedCharacterLengthObj.maxLength)\n .replace(\"{currentLength}\", this.localizedCharacterLengthObj.currentLength);\n }\n\n // height and width are set to auto here to avoid overlapping on to neighboring elements in the layout when user starts resizing.\n // throttle is used to avoid flashing of textarea when user resizes.\n private setHeightAndWidthToAuto = throttle(\n (): void => {\n if (this.resize === \"vertical\" || this.resize === \"both\") {\n this.el.style.height = \"auto\";\n }\n if (this.resize === \"horizontal\" || this.resize === \"both\") {\n this.el.style.width = \"auto\";\n }\n },\n RESIZE_TIMEOUT,\n { leading: false },\n );\n\n private isCharacterLimitExceeded(): boolean {\n return this.value?.length > this.maxLength;\n }\n}\n"],"mappings":"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","ignoreList":[]}