@spartan-ng/brain 0.0.1-alpha.605 → 0.0.1-alpha.606

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,10 +17,15 @@ const BRN_INPUT_OTP_VALUE_ACCESSOR = {
17
17
  multi: true,
18
18
  };
19
19
  class BrnInputOtp {
20
+ static _id = 0;
20
21
  /** Whether the input has focus. */
21
22
  _focused = signal(false);
22
23
  /** Styles applied to the host element. */
23
24
  hostStyles = input('position: relative; cursor: text; user-select: none; pointer-events: none;');
25
+ /** Custom id applied to the input element */
26
+ inputId = input(`brn-input-otp-${++BrnInputOtp._id}`);
27
+ /** Custom autocomplete attribute applied to the input element */
28
+ inputAutocomplete = input('one-time-code');
24
29
  /** Styles applied to the input element to make it invisible and clickable. */
25
30
  inputStyles = input('position: absolute; inset: 0; width: 100%; height: 100%; display: flex; textAlign: left; opacity: 1; color: transparent; pointerEvents: all; background: transparent; caret-color: transparent; border: 0px solid transparent; outline: transparent solid 0px; box-shadow: none; line-height: 1; letter-spacing: -0.5em; font-family: monospace; font-variant-numeric: tabular-nums;');
26
31
  /** Styles applied to the container element. */
@@ -111,12 +116,13 @@ class BrnInputOtp {
111
116
  }
112
117
  }
113
118
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: BrnInputOtp, deps: [], target: i0.ɵɵFactoryTarget.Component });
114
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.7", type: BrnInputOtp, isStandalone: true, selector: "brn-input-otp", inputs: { hostStyles: { classPropertyName: "hostStyles", publicName: "hostStyles", isSignal: true, isRequired: false, transformFunction: null }, inputStyles: { classPropertyName: "inputStyles", publicName: "inputStyles", isSignal: true, isRequired: false, transformFunction: null }, containerStyles: { classPropertyName: "containerStyles", publicName: "containerStyles", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: true, transformFunction: null }, inputMode: { classPropertyName: "inputMode", publicName: "inputMode", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, transformPaste: { classPropertyName: "transformPaste", publicName: "transformPaste", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", valueChange: "valueChange", completed: "completed" }, host: { attributes: { "data-input-otp-container": "true" }, properties: { "style": "hostStyles()" } }, providers: [BRN_INPUT_OTP_VALUE_ACCESSOR, provideBrnInputOtp(BrnInputOtp)], ngImport: i0, template: `
119
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.7", type: BrnInputOtp, isStandalone: true, selector: "brn-input-otp", inputs: { hostStyles: { classPropertyName: "hostStyles", publicName: "hostStyles", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, inputAutocomplete: { classPropertyName: "inputAutocomplete", publicName: "inputAutocomplete", isSignal: true, isRequired: false, transformFunction: null }, inputStyles: { classPropertyName: "inputStyles", publicName: "inputStyles", isSignal: true, isRequired: false, transformFunction: null }, containerStyles: { classPropertyName: "containerStyles", publicName: "containerStyles", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: true, transformFunction: null }, inputMode: { classPropertyName: "inputMode", publicName: "inputMode", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, transformPaste: { classPropertyName: "transformPaste", publicName: "transformPaste", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", valueChange: "valueChange", completed: "completed" }, host: { attributes: { "data-input-otp-container": "true" }, properties: { "style": "hostStyles()" } }, providers: [BRN_INPUT_OTP_VALUE_ACCESSOR, provideBrnInputOtp(BrnInputOtp)], ngImport: i0, template: `
115
120
  <ng-content />
116
121
  <div [style]="containerStyles()">
117
122
  <input
123
+ [id]="inputId()"
118
124
  [class]="inputClass()"
119
- autocomplete="one-time-code"
125
+ [autocomplete]="inputAutocomplete()"
120
126
  data-slot="input-otp"
121
127
  [style]="inputStyles()"
122
128
  [disabled]="_disabled()"
@@ -145,8 +151,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
145
151
  <ng-content />
146
152
  <div [style]="containerStyles()">
147
153
  <input
154
+ [id]="inputId()"
148
155
  [class]="inputClass()"
149
- autocomplete="one-time-code"
156
+ [autocomplete]="inputAutocomplete()"
150
157
  data-slot="input-otp"
151
158
  [style]="inputStyles()"
152
159
  [disabled]="_disabled()"
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-input-otp.mjs","sources":["../tmp-esm2022/input-otp/lib/brn-input-otp.token.js","../tmp-esm2022/input-otp/lib/brn-input-otp.js","../tmp-esm2022/input-otp/lib/brn-input-otp-slot.js","../tmp-esm2022/input-otp/index.js","../tmp-esm2022/input-otp/spartan-ng-brain-input-otp.js"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nexport const BrnInputOtpToken = new InjectionToken('BrnInputOtpToken');\nexport function injectBrnInputOtp() {\n return inject(BrnInputOtpToken);\n}\nexport function provideBrnInputOtp(inputOtp) {\n return { provide: BrnInputOtpToken, useExisting: inputOtp };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWlucHV0LW90cC50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vaW5wdXQtb3RwL3NyYy9saWIvYnJuLWlucHV0LW90cC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXlCLE1BQU0sRUFBRSxjQUFjLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHekYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWMsa0JBQWtCLENBQUMsQ0FBQztBQUVwRixNQUFNLFVBQVUsaUJBQWlCO0lBQ2hDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFnQixDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsUUFBMkI7SUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRXhpc3RpbmdQcm92aWRlciwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgdHlwZSBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEJybklucHV0T3RwIH0gZnJvbSAnLi9icm4taW5wdXQtb3RwJztcblxuZXhwb3J0IGNvbnN0IEJybklucHV0T3RwVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QnJuSW5wdXRPdHA+KCdCcm5JbnB1dE90cFRva2VuJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RCcm5JbnB1dE90cCgpOiBCcm5JbnB1dE90cCB7XG5cdHJldHVybiBpbmplY3QoQnJuSW5wdXRPdHBUb2tlbikgYXMgQnJuSW5wdXRPdHA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQnJuSW5wdXRPdHAoaW5wdXRPdHA6IFR5cGU8QnJuSW5wdXRPdHA+KTogRXhpc3RpbmdQcm92aWRlciB7XG5cdHJldHVybiB7IHByb3ZpZGU6IEJybklucHV0T3RwVG9rZW4sIHVzZUV4aXN0aW5nOiBpbnB1dE90cCB9O1xufVxuIl19","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, forwardRef, input, linkedSignal, model, numberAttribute, output, signal, } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { provideBrnInputOtp } from './brn-input-otp.token';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const BRN_INPUT_OTP_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BrnInputOtp),\n multi: true,\n};\nexport class BrnInputOtp {\n /** Whether the input has focus. */\n _focused = signal(false);\n /** Styles applied to the host element. */\n hostStyles = input('position: relative; cursor: text; user-select: none; pointer-events: none;');\n /** Styles applied to the input element to make it invisible and clickable. */\n inputStyles = input('position: absolute; inset: 0; width: 100%; height: 100%; display: flex; textAlign: left; opacity: 1; color: transparent; pointerEvents: all; background: transparent; caret-color: transparent; border: 0px solid transparent; outline: transparent solid 0px; box-shadow: none; line-height: 1; letter-spacing: -0.5em; font-family: monospace; font-variant-numeric: tabular-nums;');\n /** Styles applied to the container element. */\n containerStyles = input('position: absolute; inset: 0; pointer-events: none;');\n /** Determine if the date picker is disabled. */\n disabled = input(false, {\n transform: booleanAttribute,\n });\n _disabled = linkedSignal(this.disabled);\n /** The number of slots. */\n maxLength = input.required({ transform: numberAttribute });\n /** Virtual keyboard appearance on mobile */\n inputMode = input('numeric');\n inputClass = input('');\n /**\n * Defines how the pasted text should be transformed before saving to model/form.\n * Allows pasting text which contains extra characters like spaces, dashes, etc. and are longer than the maxLength.\n *\n * \"XXX-XXX\": (pastedText) => pastedText.replaceAll('-', '')\n * \"XXX XXX\": (pastedText) => pastedText.replaceAll(/\\s+/g, '')\n */\n transformPaste = input((text) => text);\n /** The value controlling the input */\n value = model(null);\n /** Emits when the value changes. */\n valueChange = output();\n context = computed(() => {\n const value = this.value() ?? '';\n const focused = this._focused();\n const maxLength = this.maxLength();\n const slots = Array.from({ length: this.maxLength() }).map((_, slotIndex) => {\n const char = value[slotIndex] !== undefined ? value[slotIndex] : null;\n const isActive = focused && (value.length === slotIndex || (value.length === maxLength && slotIndex === maxLength - 1));\n return {\n char,\n isActive,\n hasFakeCaret: isActive && value.length === slotIndex,\n };\n });\n return slots;\n });\n /** Emitted when the input is complete, triggered through input or paste. */\n completed = output();\n _onChange;\n _onTouched;\n onInputChange(event) {\n let newValue = event.target.value;\n const maxLength = this.maxLength();\n if (newValue.length > maxLength) {\n // Replace the last character when max length is exceeded\n newValue = newValue.slice(0, maxLength - 1) + newValue.slice(-1);\n }\n this.updateValue(newValue, maxLength);\n }\n onPaste(event) {\n event.preventDefault();\n const clipboardData = event.clipboardData?.getData('text/plain') || '';\n const maxLength = this.maxLength();\n const content = this.transformPaste()(clipboardData, maxLength);\n const newValue = content.slice(0, maxLength);\n this.updateValue(newValue, maxLength);\n }\n /** CONTROL VALUE ACCESSOR */\n writeValue(value) {\n this.value.set(value);\n if (value?.length === this.maxLength()) {\n this.completed.emit(value ?? '');\n }\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n setDisabledState(isDisabled) {\n this._disabled.set(isDisabled);\n }\n isCompleted(newValue, previousValue, maxLength) {\n return newValue !== previousValue && previousValue.length < maxLength && newValue.length === maxLength;\n }\n updateValue(newValue, maxLength) {\n const previousValue = this.value() ?? '';\n this.value.set(newValue);\n this._onChange?.(newValue);\n if (this.isCompleted(newValue, previousValue, maxLength)) {\n this.completed.emit(newValue);\n }\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnInputOtp, deps: [], target: i0.ɵɵFactoryTarget.Component });\n /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.0.7\", type: BrnInputOtp, isStandalone: true, selector: \"brn-input-otp\", inputs: { hostStyles: { classPropertyName: \"hostStyles\", publicName: \"hostStyles\", isSignal: true, isRequired: false, transformFunction: null }, inputStyles: { classPropertyName: \"inputStyles\", publicName: \"inputStyles\", isSignal: true, isRequired: false, transformFunction: null }, containerStyles: { classPropertyName: \"containerStyles\", publicName: \"containerStyles\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: \"maxLength\", publicName: \"maxLength\", isSignal: true, isRequired: true, transformFunction: null }, inputMode: { classPropertyName: \"inputMode\", publicName: \"inputMode\", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: \"inputClass\", publicName: \"inputClass\", isSignal: true, isRequired: false, transformFunction: null }, transformPaste: { classPropertyName: \"transformPaste\", publicName: \"transformPaste\", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: \"valueChange\", valueChange: \"valueChange\", completed: \"completed\" }, host: { attributes: { \"data-input-otp-container\": \"true\" }, properties: { \"style\": \"hostStyles()\" } }, providers: [BRN_INPUT_OTP_VALUE_ACCESSOR, provideBrnInputOtp(BrnInputOtp)], ngImport: i0, template: `\n\t\t<ng-content />\n\t\t<div [style]=\"containerStyles()\">\n\t\t\t<input\n\t\t\t\t[class]=\"inputClass()\"\n\t\t\t\tautocomplete=\"one-time-code\"\n\t\t\t\tdata-slot=\"input-otp\"\n\t\t\t\t[style]=\"inputStyles()\"\n\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t\t[inputMode]=\"inputMode()\"\n\t\t\t\t[ngModel]=\"value()\"\n\t\t\t\t(input)=\"onInputChange($event)\"\n\t\t\t\t(paste)=\"onPaste($event)\"\n\t\t\t\t(focus)=\"_focused.set(true)\"\n\t\t\t\t(blur)=\"_focused.set(false)\"\n\t\t\t/>\n\t\t</div>\n\t`, isInline: true, dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnInputOtp, decorators: [{\n type: Component,\n args: [{\n selector: 'brn-input-otp',\n imports: [FormsModule],\n providers: [BRN_INPUT_OTP_VALUE_ACCESSOR, provideBrnInputOtp(BrnInputOtp)],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style]': 'hostStyles()',\n 'data-input-otp-container': 'true',\n },\n template: `\n\t\t<ng-content />\n\t\t<div [style]=\"containerStyles()\">\n\t\t\t<input\n\t\t\t\t[class]=\"inputClass()\"\n\t\t\t\tautocomplete=\"one-time-code\"\n\t\t\t\tdata-slot=\"input-otp\"\n\t\t\t\t[style]=\"inputStyles()\"\n\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t\t[inputMode]=\"inputMode()\"\n\t\t\t\t[ngModel]=\"value()\"\n\t\t\t\t(input)=\"onInputChange($event)\"\n\t\t\t\t(paste)=\"onPaste($event)\"\n\t\t\t\t(focus)=\"_focused.set(true)\"\n\t\t\t\t(blur)=\"_focused.set(false)\"\n\t\t\t/>\n\t\t</div>\n\t`,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWlucHV0LW90cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vaW5wdXQtb3RwL3NyYy9saWIvYnJuLWlucHV0LW90cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ04sZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixLQUFLLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFDTCxlQUFlLEVBQ2YsTUFBTSxFQUNOLE1BQU0sR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTZCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFFM0QsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUc7SUFDM0MsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUMxQyxLQUFLLEVBQUUsSUFBSTtDQUNYLENBQUM7QUFnQ0YsTUFBTSxPQUFPLFdBQVc7SUFDdkIsbUNBQW1DO0lBQ2hCLFFBQVEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFckQsMENBQTBDO0lBQzFCLFVBQVUsR0FBRyxLQUFLLENBQ2pDLDRFQUE0RSxDQUM1RSxDQUFDO0lBRUYsOEVBQThFO0lBQzlELFdBQVcsR0FBRyxLQUFLLENBQ2xDLHNYQUFzWCxDQUN0WCxDQUFDO0lBRUYsK0NBQStDO0lBQy9CLGVBQWUsR0FBRyxLQUFLLENBQVMscURBQXFELENBQUMsQ0FBQztJQUV2RyxnREFBZ0Q7SUFDaEMsUUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFO1FBQzlELFNBQVMsRUFBRSxnQkFBZ0I7S0FDM0IsQ0FBQyxDQUFDO0lBRWdCLFNBQVMsR0FBRyxZQUFZLENB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QztRQUUzQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLENBQUM7SUFDRixDQUFDOzBIQWxJVyxXQUFXOzhHQUFYLFdBQVcsdThDQXpCWixDQUFDLDRCQUE0QixFQUFFLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDLDBCQU1oRTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQlQsMkRBeEJTLFdBQVc7OzJGQTBCVCxXQUFXO2tCQTVCdkIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsZUFBZTtvQkFDekIsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDO29CQUN0QixTQUFTLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxrQkFBa0IsYUFBYSxDQUFDO29CQUMxRSxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsSUFBSSxFQUFFO3dCQUNMLFNBQVMsRUFBRSxjQUFjO3dCQUN6QiwwQkFBMEIsRUFBRSxNQUFNO3FCQUNsQztvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJUO2lCQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCb29sZWFuSW5wdXQsIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG5cdGJvb2xlYW5BdHRyaWJ1dGUsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRmb3J3YXJkUmVmLFxuXHRpbnB1dCxcblx0bGlua2VkU2lnbmFsLFxuXHRtb2RlbCxcblx0bnVtYmVyQXR0cmlidXRlLFxuXHRvdXRwdXQsXG5cdHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0eXBlIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgdHlwZSB7IENoYW5nZUZuLCBUb3VjaEZuIH0gZnJvbSAnQHNwYXJ0YW4tbmcvYnJhaW4vZm9ybXMnO1xuaW1wb3J0IHR5cGUgeyBDbGFzc1ZhbHVlIH0gZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBwcm92aWRlQnJuSW5wdXRPdHAgfSBmcm9tICcuL2Jybi1pbnB1dC1vdHAudG9rZW4nO1xuXG5leHBvcnQgY29uc3QgQlJOX0lOUFVUX09UUF9WQUxVRV9BQ0NFU1NPUiA9IHtcblx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG5cdHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJybklucHV0T3RwKSxcblx0bXVsdGk6IHRydWUsXG59O1xuXG5leHBvcnQgdHlwZSBJbnB1dE1vZGUgPSAndGV4dCcgfCAndGVsJyB8ICd1cmwnIHwgJ2VtYWlsJyB8ICdudW1lcmljJyB8ICdkZWNpbWFsJyB8ICdzZWFyY2gnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdicm4taW5wdXQtb3RwJyxcblx0aW1wb3J0czogW0Zvcm1zTW9kdWxlXSxcblx0cHJvdmlkZXJzOiBbQlJOX0lOUFVUX09UUF9WQUxVRV9BQ0NFU1NPUiwgcHJvdmlkZUJybklucHV0T3RwKEJybklucHV0T3RwKV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRob3N0OiB7XG5cdFx0J1tzdHlsZV0nOiAnaG9zdFN0eWxlcygpJyxcblx0XHQnZGF0YS1pbnB1dC1vdHAtY29udGFpbmVyJzogJ3RydWUnLFxuXHR9LFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PGRpdiBbc3R5bGVdPVwiY29udGFpbmVyU3R5bGVzKClcIj5cblx0XHRcdDxpbnB1dFxuXHRcdFx0XHRbY2xhc3NdPVwiaW5wdXRDbGFzcygpXCJcblx0XHRcdFx0YXV0b2NvbXBsZXRlPVwib25lLXRpbWUtY29kZVwiXG5cdFx0XHRcdGRhdGEtc2xvdD1cImlucHV0LW90cFwiXG5cdFx0XHRcdFtzdHlsZV09XCJpbnB1dFN0eWxlcygpXCJcblx0XHRcdFx0W2Rpc2FibGVkXT1cIl9kaXNhYmxlZCgpXCJcblx0XHRcdFx0W2lucHV0TW9kZV09XCJpbnB1dE1vZGUoKVwiXG5cdFx0XHRcdFtuZ01vZGVsXT1cInZhbHVlKClcIlxuXHRcdFx0XHQoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcblx0XHRcdFx0KHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXG5cdFx0XHRcdChmb2N1cyk9XCJfZm9jdXNlZC5zZXQodHJ1ZSlcIlxuXHRcdFx0XHQoYmx1cik9XCJfZm9jdXNlZC5zZXQoZmFsc2UpXCJcblx0XHRcdC8+XG5cdFx0PC9kaXY+XG5cdGAsXG59KVxuZXhwb3J0IGNsYXNzIEJybklucHV0T3RwIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXHQvKiogV2hldGhlciB0aGUgaW5wdXQgaGFzIGZvY3VzLiAqL1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX2ZvY3VzZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG5cdC8qKiBTdHlsZXMgYXBwbGllZCB0byB0aGUgaG9zdCBlbGVtZW50LiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgaG9zdFN0eWxlcyA9IGlucHV0PHN0cmluZz4oXG5cdFx0J3Bvc2l0aW9uOiByZWxhdGl2ZTsgY3Vyc29yOiB0ZXh0OyB1c2VyLXNlbGVjdDogbm9uZTsgcG9pbnRlci1ldmVudHM6IG5vbmU7Jyxcblx0KTtcblxuXHQvKiogU3R5bGVzIGFwcGxpZWQgdG8gdGhlIGlucHV0IGVsZW1lbnQgdG8gbWFrZSBpdCBpbnZpc2libGUgYW5kIGNsaWNrYWJsZS4gKi9cblx0cHVibGljIHJlYWRvbmx5IGlucHV0U3R5bGVzID0gaW5wdXQ8c3RyaW5nPihcblx0XHQncG9zaXRpb246IGFic29sdXRlOyBpbnNldDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgZGlzcGxheTogZmxleDsgdGV4dEFsaWduOiBsZWZ0OyBvcGFjaXR5OiAxOyBjb2xvcjogdHJhbnNwYXJlbnQ7IHBvaW50ZXJFdmVudHM6IGFsbDsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGNhcmV0LWNvbG9yOiB0cmFuc3BhcmVudDsgYm9yZGVyOiAwcHggc29saWQgdHJhbnNwYXJlbnQ7IG91dGxpbmU6IHRyYW5zcGFyZW50IHNvbGlkIDBweDsgYm94LXNoYWRvdzogbm9uZTsgbGluZS1oZWlnaHQ6IDE7IGxldHRlci1zcGFjaW5nOiAtMC41ZW07IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7Jyxcblx0KTtcblxuXHQvKiogU3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbnRhaW5lciBlbGVtZW50LiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgY29udGFpbmVyU3R5bGVzID0gaW5wdXQ8c3RyaW5nPigncG9zaXRpb246IGFic29sdXRlOyBpbnNldDogMDsgcG9pbnRlci1ldmVudHM6IG5vbmU7Jyk7XG5cblx0LyoqIERldGVybWluZSBpZiB0aGUgZGF0ZSBwaWNrZXIgaXMgZGlzYWJsZWQuICovXG5cdHB1YmxpYyByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHtcblx0XHR0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG5cdH0pO1xuXG5cdHByb3RlY3RlZCByZWFkb25seSBfZGlzYWJsZWQgPSBsaW5rZWRTaWduYWwodGhpcy5kaXNhYmxlZCk7XG5cblx0LyoqIFRoZSBudW1iZXIgb2Ygc2xvdHMuICovXG5cdHB1YmxpYyByZWFkb25seSBtYXhMZW5ndGggPSBpbnB1dC5yZXF1aXJlZDxudW1iZXIsIE51bWJlcklucHV0Pih7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xuXG5cdC8qKiBWaXJ0dWFsIGtleWJvYXJkIGFwcGVhcmFuY2Ugb24gbW9iaWxlICovXG5cdHB1YmxpYyByZWFkb25seSBpbnB1dE1vZGUgPSBpbnB1dDxJbnB1dE1vZGU+KCdudW1lcmljJyk7XG5cblx0cHVibGljIHJlYWRvbmx5IGlucHV0Q2xhc3MgPSBpbnB1dDxDbGFzc1ZhbHVlPignJyk7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgaG93IHRoZSBwYXN0ZWQgdGV4dCBzaG91bGQgYmUgdHJhbnNmb3JtZWQgYmVmb3JlIHNhdmluZyB0byBtb2RlbC9mb3JtLlxuXHQgKiBBbGxvd3MgcGFzdGluZyB0ZXh0IHdoaWNoIGNvbnRhaW5zIGV4dHJhIGNoYXJhY3RlcnMgbGlrZSBzcGFjZXMsIGRhc2hlcywgZXRjLiBhbmQgYXJlIGxvbmdlciB0aGFuIHRoZSBtYXhMZW5ndGguXG5cdCAqXG5cdCAqIFwiWFhYLVhYWFwiOiAocGFzdGVkVGV4dCkgPT4gcGFzdGVkVGV4dC5yZXBsYWNlQWxsKCctJywgJycpXG5cdCAqIFwiWFhYIFhYWFwiOiAocGFzdGVkVGV4dCkgPT4gcGFzdGVkVGV4dC5yZXBsYWNlQWxsKC9cXHMrL2csICcnKVxuXHQgKi9cblx0cHVibGljIHJlYWRvbmx5IHRyYW5zZm9ybVBhc3RlID0gaW5wdXQ8KHBhc3RlZFRleHQ6IHN0cmluZywgbWF4TGVuZ3RoOiBudW1iZXIpID0+IHN0cmluZz4oKHRleHQpID0+IHRleHQpO1xuXG5cdC8qKiBUaGUgdmFsdWUgY29udHJvbGxpbmcgdGhlIGlucHV0ICovXG5cdHB1YmxpYyByZWFkb25seSB2YWx1ZSA9IG1vZGVsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG5cdC8qKiBFbWl0cyB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG5cdHB1YmxpYyByZWFkb25seSBjb250ZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZSgpID8/ICcnO1xuXHRcdGNvbnN0IGZvY3VzZWQgPSB0aGlzLl9mb2N1c2VkKCk7XG5cdFx0Y29uc3QgbWF4TGVuZ3RoID0gdGhpcy5tYXhMZW5ndGgoKTtcblx0XHRjb25zdCBzbG90cyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMubWF4TGVuZ3RoKCkgfSkubWFwKChfLCBzbG90SW5kZXgpID0+IHtcblx0XHRcdGNvbnN0IGNoYXIgPSB2YWx1ZVtzbG90SW5kZXhdICE9PSB1bmRlZmluZWQgPyB2YWx1ZVtzbG90SW5kZXhdIDogbnVsbDtcblxuXHRcdFx0Y29uc3QgaXNBY3RpdmUgPVxuXHRcdFx0XHRmb2N1c2VkICYmICh2YWx1ZS5sZW5ndGggPT09IHNsb3RJbmRleCB8fCAodmFsdWUubGVuZ3RoID09PSBtYXhMZW5ndGggJiYgc2xvdEluZGV4ID09PSBtYXhMZW5ndGggLSAxKSk7XG5cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGNoYXIsXG5cdFx0XHRcdGlzQWN0aXZlLFxuXHRcdFx0XHRoYXNGYWtlQ2FyZXQ6IGlzQWN0aXZlICYmIHZhbHVlLmxlbmd0aCA9PT0gc2xvdEluZGV4LFxuXHRcdFx0fTtcblx0XHR9KTtcblxuXHRcdHJldHVybiBzbG90cztcblx0fSk7XG5cblx0LyoqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgaXMgY29tcGxldGUsIHRyaWdnZXJlZCB0aHJvdWdoIGlucHV0IG9yIHBhc3RlLiAgKi9cblx0cHVibGljIHJlYWRvbmx5IGNvbXBsZXRlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cblx0cHJvdGVjdGVkIF9vbkNoYW5nZT86IENoYW5nZUZuPHN0cmluZz47XG5cdHByb3RlY3RlZCBfb25Ub3VjaGVkPzogVG91Y2hGbjtcblxuXHRwcm90ZWN0ZWQgb25JbnB1dENoYW5nZShldmVudDogRXZlbnQpIHtcblx0XHRsZXQgbmV3VmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuXHRcdGNvbnN0IG1heExlbmd0aCA9IHRoaXMubWF4TGVuZ3RoKCk7XG5cblx0XHRpZiAobmV3VmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG5cdFx0XHQvLyBSZXBsYWNlIHRoZSBsYXN0IGNoYXJhY3RlciB3aGVuIG1heCBsZW5ndGggaXMgZXhjZWVkZWRcblx0XHRcdG5ld1ZhbHVlID0gbmV3VmFsdWUuc2xpY2UoMCwgbWF4TGVuZ3RoIC0gMSkgKyBuZXdWYWx1ZS5zbGljZSgtMSk7XG5cdFx0fVxuXG5cdFx0dGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZSwgbWF4TGVuZ3RoKTtcblx0fVxuXG5cdHByb3RlY3RlZCBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0Y29uc3QgY2xpcGJvYXJkRGF0YSA9IGV2ZW50LmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvcGxhaW4nKSB8fCAnJztcblxuXHRcdGNvbnN0IG1heExlbmd0aCA9IHRoaXMubWF4TGVuZ3RoKCk7XG5cblx0XHRjb25zdCBjb250ZW50ID0gdGhpcy50cmFuc2Zvcm1QYXN0ZSgpKGNsaXBib2FyZERhdGEsIG1heExlbmd0aCk7XG5cdFx0Y29uc3QgbmV3VmFsdWUgPSBjb250ZW50LnNsaWNlKDAsIG1heExlbmd0aCk7XG5cblx0XHR0aGlzLnVwZGF0ZVZhbHVlKG5ld1ZhbHVlLCBtYXhMZW5ndGgpO1xuXHR9XG5cblx0LyoqIENPTlRST0wgVkFMVUUgQUNDRVNTT1IgKi9cblx0d3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuXHRcdHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcblx0XHRpZiAodmFsdWU/Lmxlbmd0aCA9PT0gdGhpcy5tYXhMZW5ndGgoKSkge1xuXHRcdFx0dGhpcy5jb21wbGV0ZWQuZW1pdCh2YWx1ZSA/PyAnJyk7XG5cdFx0fVxuXHR9XG5cblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogQ2hhbmdlRm48c3RyaW5nPik6IHZvaWQge1xuXHRcdHRoaXMuX29uQ2hhbmdlID0gZm47XG5cdH1cblxuXHRyZWdpc3Rlck9uVG91Y2hlZChmbjogVG91Y2hGbik6IHZvaWQge1xuXHRcdHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuXHR9XG5cblx0c2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5fZGlzYWJsZWQuc2V0KGlzRGlzYWJsZWQpO1xuXHR9XG5cblx0cHJpdmF0ZSBpc0NvbXBsZXRlZChuZXdWYWx1ZTogc3RyaW5nLCBwcmV2aW91c1ZhbHVlOiBzdHJpbmcsIG1heExlbmd0aDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIG5ld1ZhbHVlICE9PSBwcmV2aW91c1ZhbHVlICYmIHByZXZpb3VzVmFsdWUubGVuZ3RoIDwgbWF4TGVuZ3RoICYmIG5ld1ZhbHVlLmxlbmd0aCA9PT0gbWF4TGVuZ3RoO1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVWYWx1ZShuZXdWYWx1ZTogc3RyaW5nLCBtYXhMZW5ndGg6IG51bWJlcikge1xuXHRcdGNvbnN0IHByZXZpb3VzVmFsdWUgPSB0aGlzLnZhbHVlKCkgPz8gJyc7XG5cblx0XHR0aGlzLnZhbHVlLnNldChuZXdWYWx1ZSk7XG5cdFx0dGhpcy5fb25DaGFuZ2U/LihuZXdWYWx1ZSk7XG5cblx0XHRpZiAodGhpcy5pc0NvbXBsZXRlZChuZXdWYWx1ZSwgcHJldmlvdXNWYWx1ZSwgbWF4TGVuZ3RoKSkge1xuXHRcdFx0dGhpcy5jb21wbGV0ZWQuZW1pdChuZXdWYWx1ZSk7XG5cdFx0fVxuXHR9XG59XG4iXX0=","import { ChangeDetectionStrategy, Component, computed, input, numberAttribute } from '@angular/core';\nimport { injectBrnInputOtp } from './brn-input-otp.token';\nimport * as i0 from \"@angular/core\";\nexport class BrnInputOtpSlot {\n /** Access the input-otp component */\n _inputOtp = injectBrnInputOtp();\n /** The index of the slot to render the char or a fake caret */\n index = input.required({ transform: numberAttribute });\n _slot = computed(() => this._inputOtp.context()[this.index()]);\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnInputOtpSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });\n /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: BrnInputOtpSlot, isStandalone: true, selector: \"brn-input-otp-slot\", inputs: { index: { classPropertyName: \"index\", publicName: \"index\", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { \"attr.data-active\": \"_slot().isActive\" } }, ngImport: i0, template: `\n\t\t{{ _slot().char }}\n\n\t\t@if (_slot().hasFakeCaret) {\n\t\t\t<ng-content />\n\t\t}\n\t`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnInputOtpSlot, decorators: [{\n type: Component,\n args: [{\n selector: 'brn-input-otp-slot',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-active]': '_slot().isActive',\n },\n template: `\n\t\t{{ _slot().char }}\n\n\t\t@if (_slot().hasFakeCaret) {\n\t\t\t<ng-content />\n\t\t}\n\t`,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWlucHV0LW90cC1zbG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9pbnB1dC1vdHAvc3JjL2xpYi9icm4taW5wdXQtb3RwLXNsb3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFnQjFELE1BQU0sT0FBTyxlQUFlO0lBQzNCLHFDQUFxQztJQUNsQixTQUFTLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztJQUVuRCwrREFBK0Q7SUFDL0MsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQXNCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFFekUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7MEhBUHRFLGVBQWU7OEdBQWYsZUFBZSxtUkFSakI7Ozs7OztFQU1UOzsyRkFFVyxlQUFlO2tCQWQzQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxJQUFJLEVBQUU7d0JBQ0wsb0JBQW9CLEVBQUUsa0JBQWtCO3FCQUN4QztvQkFDRCxRQUFRLEVBQUU7Ozs7OztFQU1UO2lCQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQsIG51bWJlckF0dHJpYnV0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QnJuSW5wdXRPdHAgfSBmcm9tICcuL2Jybi1pbnB1dC1vdHAudG9rZW4nO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdicm4taW5wdXQtb3RwLXNsb3QnLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aG9zdDoge1xuXHRcdCdbYXR0ci5kYXRhLWFjdGl2ZV0nOiAnX3Nsb3QoKS5pc0FjdGl2ZScsXG5cdH0sXG5cdHRlbXBsYXRlOiBgXG5cdFx0e3sgX3Nsb3QoKS5jaGFyIH19XG5cblx0XHRAaWYgKF9zbG90KCkuaGFzRmFrZUNhcmV0KSB7XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdH1cblx0YCxcbn0pXG5leHBvcnQgY2xhc3MgQnJuSW5wdXRPdHBTbG90IHtcblx0LyoqIEFjY2VzcyB0aGUgaW5wdXQtb3RwIGNvbXBvbmVudCAqL1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX2lucHV0T3RwID0gaW5qZWN0QnJuSW5wdXRPdHAoKTtcblxuXHQvKiogVGhlIGluZGV4IG9mIHRoZSBzbG90IHRvIHJlbmRlciB0aGUgY2hhciBvciBhIGZha2UgY2FyZXQgKi9cblx0cHVibGljIHJlYWRvbmx5IGluZGV4ID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyLCBOdW1iZXJJbnB1dD4oeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KTtcblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX3Nsb3QgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9pbnB1dE90cC5jb250ZXh0KClbdGhpcy5pbmRleCgpXSk7XG59XG4iXX0=","import { BrnInputOtp } from './lib/brn-input-otp';\nimport { BrnInputOtpSlot } from './lib/brn-input-otp-slot';\nexport * from './lib/brn-input-otp';\nexport * from './lib/brn-input-otp-slot';\nexport const BrnInputOtpImports = [BrnInputOtp, BrnInputOtpSlot];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2lucHV0LW90cC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMEJBQTBCLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcm5JbnB1dE90cCB9IGZyb20gJy4vbGliL2Jybi1pbnB1dC1vdHAnO1xuaW1wb3J0IHsgQnJuSW5wdXRPdHBTbG90IH0gZnJvbSAnLi9saWIvYnJuLWlucHV0LW90cC1zbG90JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJuLWlucHV0LW90cCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icm4taW5wdXQtb3RwLXNsb3QnO1xuXG5leHBvcnQgY29uc3QgQnJuSW5wdXRPdHBJbXBvcnRzID0gW0JybklucHV0T3RwLCBCcm5JbnB1dE90cFNsb3RdIGFzIGNvbnN0O1xuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcnRhbi1uZy1icmFpbi1pbnB1dC1vdHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2lucHV0LW90cC9zcmMvc3BhcnRhbi1uZy1icmFpbi1pbnB1dC1vdHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-input-otp.mjs","sources":["../tmp-esm2022/input-otp/lib/brn-input-otp.token.js","../tmp-esm2022/input-otp/lib/brn-input-otp.js","../tmp-esm2022/input-otp/lib/brn-input-otp-slot.js","../tmp-esm2022/input-otp/index.js","../tmp-esm2022/input-otp/spartan-ng-brain-input-otp.js"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nexport const BrnInputOtpToken = new InjectionToken('BrnInputOtpToken');\nexport function injectBrnInputOtp() {\n return inject(BrnInputOtpToken);\n}\nexport function provideBrnInputOtp(inputOtp) {\n return { provide: BrnInputOtpToken, useExisting: inputOtp };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWlucHV0LW90cC50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vaW5wdXQtb3RwL3NyYy9saWIvYnJuLWlucHV0LW90cC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXlCLE1BQU0sRUFBRSxjQUFjLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHekYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWMsa0JBQWtCLENBQUMsQ0FBQztBQUVwRixNQUFNLFVBQVUsaUJBQWlCO0lBQ2hDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFnQixDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsUUFBMkI7SUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRXhpc3RpbmdQcm92aWRlciwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgdHlwZSBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEJybklucHV0T3RwIH0gZnJvbSAnLi9icm4taW5wdXQtb3RwJztcblxuZXhwb3J0IGNvbnN0IEJybklucHV0T3RwVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QnJuSW5wdXRPdHA+KCdCcm5JbnB1dE90cFRva2VuJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RCcm5JbnB1dE90cCgpOiBCcm5JbnB1dE90cCB7XG5cdHJldHVybiBpbmplY3QoQnJuSW5wdXRPdHBUb2tlbikgYXMgQnJuSW5wdXRPdHA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQnJuSW5wdXRPdHAoaW5wdXRPdHA6IFR5cGU8QnJuSW5wdXRPdHA+KTogRXhpc3RpbmdQcm92aWRlciB7XG5cdHJldHVybiB7IHByb3ZpZGU6IEJybklucHV0T3RwVG9rZW4sIHVzZUV4aXN0aW5nOiBpbnB1dE90cCB9O1xufVxuIl19","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, forwardRef, input, linkedSignal, model, numberAttribute, output, signal, } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { provideBrnInputOtp } from './brn-input-otp.token';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const BRN_INPUT_OTP_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BrnInputOtp),\n multi: true,\n};\nexport class BrnInputOtp {\n static _id = 0;\n /** Whether the input has focus. */\n _focused = signal(false);\n /** Styles applied to the host element. */\n hostStyles = input('position: relative; cursor: text; user-select: none; pointer-events: none;');\n /** Custom id applied to the input element */\n inputId = input(`brn-input-otp-${++BrnInputOtp._id}`);\n /** Custom autocomplete attribute applied to the input element */\n inputAutocomplete = input('one-time-code');\n /** Styles applied to the input element to make it invisible and clickable. */\n inputStyles = input('position: absolute; inset: 0; width: 100%; height: 100%; display: flex; textAlign: left; opacity: 1; color: transparent; pointerEvents: all; background: transparent; caret-color: transparent; border: 0px solid transparent; outline: transparent solid 0px; box-shadow: none; line-height: 1; letter-spacing: -0.5em; font-family: monospace; font-variant-numeric: tabular-nums;');\n /** Styles applied to the container element. */\n containerStyles = input('position: absolute; inset: 0; pointer-events: none;');\n /** Determine if the date picker is disabled. */\n disabled = input(false, {\n transform: booleanAttribute,\n });\n _disabled = linkedSignal(this.disabled);\n /** The number of slots. */\n maxLength = input.required({ transform: numberAttribute });\n /** Virtual keyboard appearance on mobile */\n inputMode = input('numeric');\n inputClass = input('');\n /**\n * Defines how the pasted text should be transformed before saving to model/form.\n * Allows pasting text which contains extra characters like spaces, dashes, etc. and are longer than the maxLength.\n *\n * \"XXX-XXX\": (pastedText) => pastedText.replaceAll('-', '')\n * \"XXX XXX\": (pastedText) => pastedText.replaceAll(/\\s+/g, '')\n */\n transformPaste = input((text) => text);\n /** The value controlling the input */\n value = model(null);\n /** Emits when the value changes. */\n valueChange = output();\n context = computed(() => {\n const value = this.value() ?? '';\n const focused = this._focused();\n const maxLength = this.maxLength();\n const slots = Array.from({ length: this.maxLength() }).map((_, slotIndex) => {\n const char = value[slotIndex] !== undefined ? value[slotIndex] : null;\n const isActive = focused && (value.length === slotIndex || (value.length === maxLength && slotIndex === maxLength - 1));\n return {\n char,\n isActive,\n hasFakeCaret: isActive && value.length === slotIndex,\n };\n });\n return slots;\n });\n /** Emitted when the input is complete, triggered through input or paste. */\n completed = output();\n _onChange;\n _onTouched;\n onInputChange(event) {\n let newValue = event.target.value;\n const maxLength = this.maxLength();\n if (newValue.length > maxLength) {\n // Replace the last character when max length is exceeded\n newValue = newValue.slice(0, maxLength - 1) + newValue.slice(-1);\n }\n this.updateValue(newValue, maxLength);\n }\n onPaste(event) {\n event.preventDefault();\n const clipboardData = event.clipboardData?.getData('text/plain') || '';\n const maxLength = this.maxLength();\n const content = this.transformPaste()(clipboardData, maxLength);\n const newValue = content.slice(0, maxLength);\n this.updateValue(newValue, maxLength);\n }\n /** CONTROL VALUE ACCESSOR */\n writeValue(value) {\n this.value.set(value);\n if (value?.length === this.maxLength()) {\n this.completed.emit(value ?? '');\n }\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n setDisabledState(isDisabled) {\n this._disabled.set(isDisabled);\n }\n isCompleted(newValue, previousValue, maxLength) {\n return newValue !== previousValue && previousValue.length < maxLength && newValue.length === maxLength;\n }\n updateValue(newValue, maxLength) {\n const previousValue = this.value() ?? '';\n this.value.set(newValue);\n this._onChange?.(newValue);\n if (this.isCompleted(newValue, previousValue, maxLength)) {\n this.completed.emit(newValue);\n }\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnInputOtp, deps: [], target: i0.ɵɵFactoryTarget.Component });\n /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.0.7\", type: BrnInputOtp, isStandalone: true, selector: \"brn-input-otp\", inputs: { hostStyles: { classPropertyName: \"hostStyles\", publicName: \"hostStyles\", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: \"inputId\", publicName: \"inputId\", isSignal: true, isRequired: false, transformFunction: null }, inputAutocomplete: { classPropertyName: \"inputAutocomplete\", publicName: \"inputAutocomplete\", isSignal: true, isRequired: false, transformFunction: null }, inputStyles: { classPropertyName: \"inputStyles\", publicName: \"inputStyles\", isSignal: true, isRequired: false, transformFunction: null }, containerStyles: { classPropertyName: \"containerStyles\", publicName: \"containerStyles\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: \"maxLength\", publicName: \"maxLength\", isSignal: true, isRequired: true, transformFunction: null }, inputMode: { classPropertyName: \"inputMode\", publicName: \"inputMode\", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: \"inputClass\", publicName: \"inputClass\", isSignal: true, isRequired: false, transformFunction: null }, transformPaste: { classPropertyName: \"transformPaste\", publicName: \"transformPaste\", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: \"valueChange\", valueChange: \"valueChange\", completed: \"completed\" }, host: { attributes: { \"data-input-otp-container\": \"true\" }, properties: { \"style\": \"hostStyles()\" } }, providers: [BRN_INPUT_OTP_VALUE_ACCESSOR, provideBrnInputOtp(BrnInputOtp)], ngImport: i0, template: `\n\t\t<ng-content />\n\t\t<div [style]=\"containerStyles()\">\n\t\t\t<input\n\t\t\t\t[id]=\"inputId()\"\n\t\t\t\t[class]=\"inputClass()\"\n\t\t\t\t[autocomplete]=\"inputAutocomplete()\"\n\t\t\t\tdata-slot=\"input-otp\"\n\t\t\t\t[style]=\"inputStyles()\"\n\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t\t[inputMode]=\"inputMode()\"\n\t\t\t\t[ngModel]=\"value()\"\n\t\t\t\t(input)=\"onInputChange($event)\"\n\t\t\t\t(paste)=\"onPaste($event)\"\n\t\t\t\t(focus)=\"_focused.set(true)\"\n\t\t\t\t(blur)=\"_focused.set(false)\"\n\t\t\t/>\n\t\t</div>\n\t`, isInline: true, dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnInputOtp, decorators: [{\n type: Component,\n args: [{\n selector: 'brn-input-otp',\n imports: [FormsModule],\n providers: [BRN_INPUT_OTP_VALUE_ACCESSOR, provideBrnInputOtp(BrnInputOtp)],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style]': 'hostStyles()',\n 'data-input-otp-container': 'true',\n },\n template: `\n\t\t<ng-content />\n\t\t<div [style]=\"containerStyles()\">\n\t\t\t<input\n\t\t\t\t[id]=\"inputId()\"\n\t\t\t\t[class]=\"inputClass()\"\n\t\t\t\t[autocomplete]=\"inputAutocomplete()\"\n\t\t\t\tdata-slot=\"input-otp\"\n\t\t\t\t[style]=\"inputStyles()\"\n\t\t\t\t[disabled]=\"_disabled()\"\n\t\t\t\t[inputMode]=\"inputMode()\"\n\t\t\t\t[ngModel]=\"value()\"\n\t\t\t\t(input)=\"onInputChange($event)\"\n\t\t\t\t(paste)=\"onPaste($event)\"\n\t\t\t\t(focus)=\"_focused.set(true)\"\n\t\t\t\t(blur)=\"_focused.set(false)\"\n\t\t\t/>\n\t\t</div>\n\t`,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWlucHV0LW90cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vaW5wdXQtb3RwL3NyYy9saWIvYnJuLWlucHV0LW90cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ04sZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixLQUFLLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFDTCxlQUFlLEVBQ2YsTUFBTSxFQUNOLE1BQU0sR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTZCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFFM0QsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUc7SUFDM0MsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUMxQyxLQUFLLEVBQUUsSUFBSTtDQUNYLENBQUM7QUFpQ0YsTUFBTSxPQUFPLFdBQVc7SUFDZixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUV2QixtQ0FBbUM7SUFDaEIsUUFBUSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUVyRCwwQ0FBMEM7SUFDMUIsVUFBVSxHQUFHLEtBQUssQ0FDakMsNEVBQTRFLENBQzVFLENBQUM7SUFFRiw2Q0FBNkM7SUFDN0IsT0FBTyxHQUFHLEtBQUssQ0FBUyxpQkFBaUIsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUU5RSxpRUFBaUU7SUFDakQsaUJBQWlCLEdBQUcsS0FBSyxDQUEwQixlQUFlLENBQUMsQ0FBQztJQUVwRiw4RUFBOEU7SUFDOUQsV0FBVyxHQUFHLEtBQUssQ0FDbEMsc1hBQXNYLENBQ3RY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Q0FBQyxRQUFnQixFQUFFLFNBQWlCO1FBQ3RELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNGLENBQUM7MEhBMUlXLFdBQVc7OEdBQVgsV0FBVyxpdURBMUJaLENBQUMsNEJBQTRCLEVBQUUsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsMEJBTWhFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFrQlQsMkRBekJTLFdBQVc7OzJGQTJCVCxXQUFXO2tCQTdCdkIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsZUFBZTtvQkFDekIsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDO29CQUN0QixTQUFTLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxrQkFBa0IsYUFBYSxDQUFDO29CQUMxRSxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsSUFBSSxFQUFFO3dCQUNMLFNBQVMsRUFBRSxjQUFjO3dCQUN6QiwwQkFBMEIsRUFBRSxNQUFNO3FCQUNsQztvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtCVDtpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQm9vbGVhbklucHV0LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuXHRib29sZWFuQXR0cmlidXRlLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Zm9yd2FyZFJlZixcblx0aW5wdXQsXG5cdGxpbmtlZFNpZ25hbCxcblx0bW9kZWwsXG5cdG51bWJlckF0dHJpYnV0ZSxcblx0b3V0cHV0LFxuXHRzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHlwZSBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHR5cGUgeyBDaGFuZ2VGbiwgVG91Y2hGbiB9IGZyb20gJ0BzcGFydGFuLW5nL2JyYWluL2Zvcm1zJztcbmltcG9ydCB0eXBlIHsgQ2xhc3NWYWx1ZSB9IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgcHJvdmlkZUJybklucHV0T3RwIH0gZnJvbSAnLi9icm4taW5wdXQtb3RwLnRva2VuJztcblxuZXhwb3J0IGNvbnN0IEJSTl9JTlBVVF9PVFBfVkFMVUVfQUNDRVNTT1IgPSB7XG5cdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuXHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCcm5JbnB1dE90cCksXG5cdG11bHRpOiB0cnVlLFxufTtcblxuZXhwb3J0IHR5cGUgSW5wdXRNb2RlID0gJ3RleHQnIHwgJ3RlbCcgfCAndXJsJyB8ICdlbWFpbCcgfCAnbnVtZXJpYycgfCAnZGVjaW1hbCcgfCAnc2VhcmNoJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnYnJuLWlucHV0LW90cCcsXG5cdGltcG9ydHM6IFtGb3Jtc01vZHVsZV0sXG5cdHByb3ZpZGVyczogW0JSTl9JTlBVVF9PVFBfVkFMVUVfQUNDRVNTT1IsIHByb3ZpZGVCcm5JbnB1dE90cChCcm5JbnB1dE90cCldLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aG9zdDoge1xuXHRcdCdbc3R5bGVdJzogJ2hvc3RTdHlsZXMoKScsXG5cdFx0J2RhdGEtaW5wdXQtb3RwLWNvbnRhaW5lcic6ICd0cnVlJyxcblx0fSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmctY29udGVudCAvPlxuXHRcdDxkaXYgW3N0eWxlXT1cImNvbnRhaW5lclN0eWxlcygpXCI+XG5cdFx0XHQ8aW5wdXRcblx0XHRcdFx0W2lkXT1cImlucHV0SWQoKVwiXG5cdFx0XHRcdFtjbGFzc109XCJpbnB1dENsYXNzKClcIlxuXHRcdFx0XHRbYXV0b2NvbXBsZXRlXT1cImlucHV0QXV0b2NvbXBsZXRlKClcIlxuXHRcdFx0XHRkYXRhLXNsb3Q9XCJpbnB1dC1vdHBcIlxuXHRcdFx0XHRbc3R5bGVdPVwiaW5wdXRTdHlsZXMoKVwiXG5cdFx0XHRcdFtkaXNhYmxlZF09XCJfZGlzYWJsZWQoKVwiXG5cdFx0XHRcdFtpbnB1dE1vZGVdPVwiaW5wdXRNb2RlKClcIlxuXHRcdFx0XHRbbmdNb2RlbF09XCJ2YWx1ZSgpXCJcblx0XHRcdFx0KGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG5cdFx0XHRcdChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuXHRcdFx0XHQoZm9jdXMpPVwiX2ZvY3VzZWQuc2V0KHRydWUpXCJcblx0XHRcdFx0KGJsdXIpPVwiX2ZvY3VzZWQuc2V0KGZhbHNlKVwiXG5cdFx0XHQvPlxuXHRcdDwvZGl2PlxuXHRgLFxufSlcbmV4cG9ydCBjbGFzcyBCcm5JbnB1dE90cCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblx0cHJpdmF0ZSBzdGF0aWMgX2lkID0gMDtcblxuXHQvKiogV2hldGhlciB0aGUgaW5wdXQgaGFzIGZvY3VzLiAqL1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX2ZvY3VzZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG5cdC8qKiBTdHlsZXMgYXBwbGllZCB0byB0aGUgaG9zdCBlbGVtZW50LiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgaG9zdFN0eWxlcyA9IGlucHV0PHN0cmluZz4oXG5cdFx0J3Bvc2l0aW9uOiByZWxhdGl2ZTsgY3Vyc29yOiB0ZXh0OyB1c2VyLXNlbGVjdDogbm9uZTsgcG9pbnRlci1ldmVudHM6IG5vbmU7Jyxcblx0KTtcblxuXHQvKiogQ3VzdG9tIGlkIGFwcGxpZWQgdG8gdGhlIGlucHV0IGVsZW1lbnQgKi9cblx0cHVibGljIHJlYWRvbmx5IGlucHV0SWQgPSBpbnB1dDxzdHJpbmc+KGBicm4taW5wdXQtb3RwLSR7KytCcm5JbnB1dE90cC5faWR9YCk7XG5cblx0LyoqIEN1c3RvbSBhdXRvY29tcGxldGUgYXR0cmlidXRlIGFwcGxpZWQgdG8gdGhlIGlucHV0IGVsZW1lbnQgKi9cblx0cHVibGljIHJlYWRvbmx5IGlucHV0QXV0b2NvbXBsZXRlID0gaW5wdXQ8J29uZS10aW1lLWNvZGUnIHwgJ29mZic+KCdvbmUtdGltZS1jb2RlJyk7XG5cblx0LyoqIFN0eWxlcyBhcHBsaWVkIHRvIHRoZSBpbnB1dCBlbGVtZW50IHRvIG1ha2UgaXQgaW52aXNpYmxlIGFuZCBjbGlja2FibGUuICovXG5cdHB1YmxpYyByZWFkb25seSBpbnB1dFN0eWxlcyA9IGlucHV0PHN0cmluZz4oXG5cdFx0J3Bvc2l0aW9uOiBhYnNvbHV0ZTsgaW5zZXQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGRpc3BsYXk6IGZsZXg7IHRleHRBbGlnbjogbGVmdDsgb3BhY2l0eTogMTsgY29sb3I6IHRyYW5zcGFyZW50OyBwb2ludGVyRXZlbnRzOiBhbGw7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBjYXJldC1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlcjogMHB4IHNvbGlkIHRyYW5zcGFyZW50OyBvdXRsaW5lOiB0cmFuc3BhcmVudCBzb2xpZCAwcHg7IGJveC1zaGFkb3c6IG5vbmU7IGxpbmUtaGVpZ2h0OiAxOyBsZXR0ZXItc3BhY2luZzogLTAuNWVtOyBmb250LWZhbWlseTogbW9ub3NwYWNlOyBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOycsXG5cdCk7XG5cblx0LyoqIFN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb250YWluZXIgZWxlbWVudC4gKi9cblx0cHVibGljIHJlYWRvbmx5IGNvbnRhaW5lclN0eWxlcyA9IGlucHV0PHN0cmluZz4oJ3Bvc2l0aW9uOiBhYnNvbHV0ZTsgaW5zZXQ6IDA7IHBvaW50ZXItZXZlbnRzOiBub25lOycpO1xuXG5cdC8qKiBEZXRlcm1pbmUgaWYgdGhlIGRhdGUgcGlja2VyIGlzIGRpc2FibGVkLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7XG5cdFx0dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuXHR9KTtcblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX2Rpc2FibGVkID0gbGlua2VkU2lnbmFsKHRoaXMuZGlzYWJsZWQpO1xuXG5cdC8qKiBUaGUgbnVtYmVyIG9mIHNsb3RzLiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgbWF4TGVuZ3RoID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyLCBOdW1iZXJJbnB1dD4oeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KTtcblxuXHQvKiogVmlydHVhbCBrZXlib2FyZCBhcHBlYXJhbmNlIG9uIG1vYmlsZSAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgaW5wdXRNb2RlID0gaW5wdXQ8SW5wdXRNb2RlPignbnVtZXJpYycpO1xuXG5cdHB1YmxpYyByZWFkb25seSBpbnB1dENsYXNzID0gaW5wdXQ8Q2xhc3NWYWx1ZT4oJycpO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyB0aGUgcGFzdGVkIHRleHQgc2hvdWxkIGJlIHRyYW5zZm9ybWVkIGJlZm9yZSBzYXZpbmcgdG8gbW9kZWwvZm9ybS5cblx0ICogQWxsb3dzIHBhc3RpbmcgdGV4dCB3aGljaCBjb250YWlucyBleHRyYSBjaGFyYWN0ZXJzIGxpa2Ugc3BhY2VzLCBkYXNoZXMsIGV0Yy4gYW5kIGFyZSBsb25nZXIgdGhhbiB0aGUgbWF4TGVuZ3RoLlxuXHQgKlxuXHQgKiBcIlhYWC1YWFhcIjogKHBhc3RlZFRleHQpID0+IHBhc3RlZFRleHQucmVwbGFjZUFsbCgnLScsICcnKVxuXHQgKiBcIlhYWCBYWFhcIjogKHBhc3RlZFRleHQpID0+IHBhc3RlZFRleHQucmVwbGFjZUFsbCgvXFxzKy9nLCAnJylcblx0ICovXG5cdHB1YmxpYyByZWFkb25seSB0cmFuc2Zvcm1QYXN0ZSA9IGlucHV0PChwYXN0ZWRUZXh0OiBzdHJpbmcsIG1heExlbmd0aDogbnVtYmVyKSA9PiBzdHJpbmc+KCh0ZXh0KSA9PiB0ZXh0KTtcblxuXHQvKiogVGhlIHZhbHVlIGNvbnRyb2xsaW5nIHRoZSBpbnB1dCAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgdmFsdWUgPSBtb2RlbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuXHQvKiogRW1pdHMgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcy4gKi9cblx0cHVibGljIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gb3V0cHV0PHN0cmluZz4oKTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgY29udGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUoKSA/PyAnJztcblx0XHRjb25zdCBmb2N1c2VkID0gdGhpcy5fZm9jdXNlZCgpO1xuXHRcdGNvbnN0IG1heExlbmd0aCA9IHRoaXMubWF4TGVuZ3RoKCk7XG5cdFx0Y29uc3Qgc2xvdHMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLm1heExlbmd0aCgpIH0pLm1hcCgoXywgc2xvdEluZGV4KSA9PiB7XG5cdFx0XHRjb25zdCBjaGFyID0gdmFsdWVbc2xvdEluZGV4XSAhPT0gdW5kZWZpbmVkID8gdmFsdWVbc2xvdEluZGV4XSA6IG51bGw7XG5cblx0XHRcdGNvbnN0IGlzQWN0aXZlID1cblx0XHRcdFx0Zm9jdXNlZCAmJiAodmFsdWUubGVuZ3RoID09PSBzbG90SW5kZXggfHwgKHZhbHVlLmxlbmd0aCA9PT0gbWF4TGVuZ3RoICYmIHNsb3RJbmRleCA9PT0gbWF4TGVuZ3RoIC0gMSkpO1xuXG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRjaGFyLFxuXHRcdFx0XHRpc0FjdGl2ZSxcblx0XHRcdFx0aGFzRmFrZUNhcmV0OiBpc0FjdGl2ZSAmJiB2YWx1ZS5sZW5ndGggPT09IHNsb3RJbmRleCxcblx0XHRcdH07XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gc2xvdHM7XG5cdH0pO1xuXG5cdC8qKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGlzIGNvbXBsZXRlLCB0cmlnZ2VyZWQgdGhyb3VnaCBpbnB1dCBvciBwYXN0ZS4gICovXG5cdHB1YmxpYyByZWFkb25seSBjb21wbGV0ZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG5cdHByb3RlY3RlZCBfb25DaGFuZ2U/OiBDaGFuZ2VGbjxzdHJpbmc+O1xuXHRwcm90ZWN0ZWQgX29uVG91Y2hlZD86IFRvdWNoRm47XG5cblx0cHJvdGVjdGVkIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG5cdFx0bGV0IG5ld1ZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblx0XHRjb25zdCBtYXhMZW5ndGggPSB0aGlzLm1heExlbmd0aCgpO1xuXG5cdFx0aWYgKG5ld1ZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuXHRcdFx0Ly8gUmVwbGFjZSB0aGUgbGFzdCBjaGFyYWN0ZXIgd2hlbiBtYXggbGVuZ3RoIGlzIGV4Y2VlZGVkXG5cdFx0XHRuZXdWYWx1ZSA9IG5ld1ZhbHVlLnNsaWNlKDAsIG1heExlbmd0aCAtIDEpICsgbmV3VmFsdWUuc2xpY2UoLTEpO1xuXHRcdH1cblxuXHRcdHRoaXMudXBkYXRlVmFsdWUobmV3VmFsdWUsIG1heExlbmd0aCk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGNvbnN0IGNsaXBib2FyZERhdGEgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0L3BsYWluJykgfHwgJyc7XG5cblx0XHRjb25zdCBtYXhMZW5ndGggPSB0aGlzLm1heExlbmd0aCgpO1xuXG5cdFx0Y29uc3QgY29udGVudCA9IHRoaXMudHJhbnNmb3JtUGFzdGUoKShjbGlwYm9hcmREYXRhLCBtYXhMZW5ndGgpO1xuXHRcdGNvbnN0IG5ld1ZhbHVlID0gY29udGVudC5zbGljZSgwLCBtYXhMZW5ndGgpO1xuXG5cdFx0dGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZSwgbWF4TGVuZ3RoKTtcblx0fVxuXG5cdC8qKiBDT05UUk9MIFZBTFVFIEFDQ0VTU09SICovXG5cdHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcblx0XHR0aGlzLnZhbHVlLnNldCh2YWx1ZSk7XG5cdFx0aWYgKHZhbHVlPy5sZW5ndGggPT09IHRoaXMubWF4TGVuZ3RoKCkpIHtcblx0XHRcdHRoaXMuY29tcGxldGVkLmVtaXQodmFsdWUgPz8gJycpO1xuXHRcdH1cblx0fVxuXG5cdHJlZ2lzdGVyT25DaGFuZ2UoZm46IENoYW5nZUZuPHN0cmluZz4pOiB2b2lkIHtcblx0XHR0aGlzLl9vbkNoYW5nZSA9IGZuO1xuXHR9XG5cblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46IFRvdWNoRm4pOiB2b2lkIHtcblx0XHR0aGlzLl9vblRvdWNoZWQgPSBmbjtcblx0fVxuXG5cdHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuX2Rpc2FibGVkLnNldChpc0Rpc2FibGVkKTtcblx0fVxuXG5cdHByaXZhdGUgaXNDb21wbGV0ZWQobmV3VmFsdWU6IHN0cmluZywgcHJldmlvdXNWYWx1ZTogc3RyaW5nLCBtYXhMZW5ndGg6IG51bWJlcikge1xuXHRcdHJldHVybiBuZXdWYWx1ZSAhPT0gcHJldmlvdXNWYWx1ZSAmJiBwcmV2aW91c1ZhbHVlLmxlbmd0aCA8IG1heExlbmd0aCAmJiBuZXdWYWx1ZS5sZW5ndGggPT09IG1heExlbmd0aDtcblx0fVxuXG5cdHByaXZhdGUgdXBkYXRlVmFsdWUobmV3VmFsdWU6IHN0cmluZywgbWF4TGVuZ3RoOiBudW1iZXIpIHtcblx0XHRjb25zdCBwcmV2aW91c1ZhbHVlID0gdGhpcy52YWx1ZSgpID8/ICcnO1xuXG5cdFx0dGhpcy52YWx1ZS5zZXQobmV3VmFsdWUpO1xuXHRcdHRoaXMuX29uQ2hhbmdlPy4obmV3VmFsdWUpO1xuXG5cdFx0aWYgKHRoaXMuaXNDb21wbGV0ZWQobmV3VmFsdWUsIHByZXZpb3VzVmFsdWUsIG1heExlbmd0aCkpIHtcblx0XHRcdHRoaXMuY29tcGxldGVkLmVtaXQobmV3VmFsdWUpO1xuXHRcdH1cblx0fVxufVxuIl19","import { ChangeDetectionStrategy, Component, computed, input, numberAttribute } from '@angular/core';\nimport { injectBrnInputOtp } from './brn-input-otp.token';\nimport * as i0 from \"@angular/core\";\nexport class BrnInputOtpSlot {\n /** Access the input-otp component */\n _inputOtp = injectBrnInputOtp();\n /** The index of the slot to render the char or a fake caret */\n index = input.required({ transform: numberAttribute });\n _slot = computed(() => this._inputOtp.context()[this.index()]);\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnInputOtpSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });\n /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: BrnInputOtpSlot, isStandalone: true, selector: \"brn-input-otp-slot\", inputs: { index: { classPropertyName: \"index\", publicName: \"index\", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { \"attr.data-active\": \"_slot().isActive\" } }, ngImport: i0, template: `\n\t\t{{ _slot().char }}\n\n\t\t@if (_slot().hasFakeCaret) {\n\t\t\t<ng-content />\n\t\t}\n\t`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnInputOtpSlot, decorators: [{\n type: Component,\n args: [{\n selector: 'brn-input-otp-slot',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-active]': '_slot().isActive',\n },\n template: `\n\t\t{{ _slot().char }}\n\n\t\t@if (_slot().hasFakeCaret) {\n\t\t\t<ng-content />\n\t\t}\n\t`,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWlucHV0LW90cC1zbG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9pbnB1dC1vdHAvc3JjL2xpYi9icm4taW5wdXQtb3RwLXNsb3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFnQjFELE1BQU0sT0FBTyxlQUFlO0lBQzNCLHFDQUFxQztJQUNsQixTQUFTLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztJQUVuRCwrREFBK0Q7SUFDL0MsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQXNCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFFekUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7MEhBUHRFLGVBQWU7OEdBQWYsZUFBZSxtUkFSakI7Ozs7OztFQU1UOzsyRkFFVyxlQUFlO2tCQWQzQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxJQUFJLEVBQUU7d0JBQ0wsb0JBQW9CLEVBQUUsa0JBQWtCO3FCQUN4QztvQkFDRCxRQUFRLEVBQUU7Ozs7OztFQU1UO2lCQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQsIG51bWJlckF0dHJpYnV0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QnJuSW5wdXRPdHAgfSBmcm9tICcuL2Jybi1pbnB1dC1vdHAudG9rZW4nO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdicm4taW5wdXQtb3RwLXNsb3QnLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aG9zdDoge1xuXHRcdCdbYXR0ci5kYXRhLWFjdGl2ZV0nOiAnX3Nsb3QoKS5pc0FjdGl2ZScsXG5cdH0sXG5cdHRlbXBsYXRlOiBgXG5cdFx0e3sgX3Nsb3QoKS5jaGFyIH19XG5cblx0XHRAaWYgKF9zbG90KCkuaGFzRmFrZUNhcmV0KSB7XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdH1cblx0YCxcbn0pXG5leHBvcnQgY2xhc3MgQnJuSW5wdXRPdHBTbG90IHtcblx0LyoqIEFjY2VzcyB0aGUgaW5wdXQtb3RwIGNvbXBvbmVudCAqL1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX2lucHV0T3RwID0gaW5qZWN0QnJuSW5wdXRPdHAoKTtcblxuXHQvKiogVGhlIGluZGV4IG9mIHRoZSBzbG90IHRvIHJlbmRlciB0aGUgY2hhciBvciBhIGZha2UgY2FyZXQgKi9cblx0cHVibGljIHJlYWRvbmx5IGluZGV4ID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyLCBOdW1iZXJJbnB1dD4oeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KTtcblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX3Nsb3QgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9pbnB1dE90cC5jb250ZXh0KClbdGhpcy5pbmRleCgpXSk7XG59XG4iXX0=","import { BrnInputOtp } from './lib/brn-input-otp';\nimport { BrnInputOtpSlot } from './lib/brn-input-otp-slot';\nexport * from './lib/brn-input-otp';\nexport * from './lib/brn-input-otp-slot';\nexport const BrnInputOtpImports = [BrnInputOtp, BrnInputOtpSlot];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2lucHV0LW90cC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMEJBQTBCLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcm5JbnB1dE90cCB9IGZyb20gJy4vbGliL2Jybi1pbnB1dC1vdHAnO1xuaW1wb3J0IHsgQnJuSW5wdXRPdHBTbG90IH0gZnJvbSAnLi9saWIvYnJuLWlucHV0LW90cC1zbG90JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJuLWlucHV0LW90cCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icm4taW5wdXQtb3RwLXNsb3QnO1xuXG5leHBvcnQgY29uc3QgQnJuSW5wdXRPdHBJbXBvcnRzID0gW0JybklucHV0T3RwLCBCcm5JbnB1dE90cFNsb3RdIGFzIGNvbnN0O1xuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcnRhbi1uZy1icmFpbi1pbnB1dC1vdHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2lucHV0LW90cC9zcmMvc3BhcnRhbi1uZy1icmFpbi1pbnB1dC1vdHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
@@ -12,10 +12,15 @@ declare const BRN_INPUT_OTP_VALUE_ACCESSOR: {
12
12
  };
13
13
  type InputMode = 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
14
14
  declare class BrnInputOtp implements ControlValueAccessor {
15
+ private static _id;
15
16
  /** Whether the input has focus. */
16
17
  protected readonly _focused: _angular_core.WritableSignal<boolean>;
17
18
  /** Styles applied to the host element. */
18
19
  readonly hostStyles: _angular_core.InputSignal<string>;
20
+ /** Custom id applied to the input element */
21
+ readonly inputId: _angular_core.InputSignal<string>;
22
+ /** Custom autocomplete attribute applied to the input element */
23
+ readonly inputAutocomplete: _angular_core.InputSignal<"one-time-code" | "off">;
19
24
  /** Styles applied to the input element to make it invisible and clickable. */
20
25
  readonly inputStyles: _angular_core.InputSignal<string>;
21
26
  /** Styles applied to the container element. */
@@ -59,7 +64,7 @@ declare class BrnInputOtp implements ControlValueAccessor {
59
64
  private isCompleted;
60
65
  private updateValue;
61
66
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnInputOtp, never>;
62
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BrnInputOtp, "brn-input-otp", never, { "hostStyles": { "alias": "hostStyles"; "required": false; "isSignal": true; }; "inputStyles": { "alias": "inputStyles"; "required": false; "isSignal": true; }; "containerStyles": { "alias": "containerStyles"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": true; "isSignal": true; }; "inputMode": { "alias": "inputMode"; "required": false; "isSignal": true; }; "inputClass": { "alias": "inputClass"; "required": false; "isSignal": true; }; "transformPaste": { "alias": "transformPaste"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "valueChange": "valueChange"; "completed": "completed"; }, never, ["*"], true, never>;
67
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BrnInputOtp, "brn-input-otp", never, { "hostStyles": { "alias": "hostStyles"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "inputAutocomplete": { "alias": "inputAutocomplete"; "required": false; "isSignal": true; }; "inputStyles": { "alias": "inputStyles"; "required": false; "isSignal": true; }; "containerStyles": { "alias": "containerStyles"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": true; "isSignal": true; }; "inputMode": { "alias": "inputMode"; "required": false; "isSignal": true; }; "inputClass": { "alias": "inputClass"; "required": false; "isSignal": true; }; "transformPaste": { "alias": "transformPaste"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "valueChange": "valueChange"; "completed": "completed"; }, never, ["*"], true, never>;
63
68
  }
64
69
 
65
70
  declare class BrnInputOtpSlot {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spartan-ng/brain",
3
- "version": "0.0.1-alpha.605",
3
+ "version": "0.0.1-alpha.606",
4
4
  "sideEffects": false,
5
5
  "exports": {
6
6
  "./hlm-tailwind-preset": {