UNPKG

sdk-textbox

Version:

Simple to use (Angular) textbox for controlling input while typing.

1 lines 71.7 kB
{"version":3,"file":"sdk-textbox.mjs","sources":["../../../projects/sdk-textbox/src/lib/components/calendar/calendar.component.ts","../../../projects/sdk-textbox/src/lib/components/calendar/calendar.component.html","../../../projects/sdk-textbox/src/lib/sdk-textbox.component.ts","../../../projects/sdk-textbox/src/lib/sdk-textbox.component.html","../../../projects/sdk-textbox/src/lib/sdk-textbox.module.ts","../../../projects/sdk-textbox/src/public-api.ts","../../../projects/sdk-textbox/src/sdk-textbox.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\n\n@Component({\n\tselector: 'calendar',\n\tstandalone: true,\n\timports: [\n\t\tCommonModule,\n\t],\n\ttemplateUrl: './calendar.component.html',\n\tstyleUrls: ['./calendar.component.scss']\n})\n\nexport class CalendarComponent implements OnInit {\n\t@Input() date: string = \"\";\n\t@Input() show: boolean = false;\n\t@Input() height: string = \"180px\";\n\t@Input() width: string = \"180px\";\n\t@Input() fontSize: string = \"1.0em\";\n\t@Output() setDateEvent: EventEmitter<any> = new EventEmitter();\n\n\t/**************************************************************************\n\t* Component Variables\n\t**************************************************************************/\n\t@ViewChild(\"calendar\") calendar!: ElementRef | undefined;\n\t@ViewChild(\"yearText\") yearText: ElementRef | undefined;\n\n\tpublic showCalendar: boolean = true;\n\tpublic showMonths: boolean = false;\n\tpublic showYears: boolean = false;\n\n\tpublic calendarHtml: string = \"\";\n\n\tpublic year: number = 0;\n\tpublic month: string = \"\";\n\tpublic monthNumber: number = 0;\n\tpublic dayNumber: number = 0;\n\tpublic months: string[] = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\tpublic days: string[] = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\n\tpublic calDays: any;\n\n\tprivate newData: string = \"\";\n\n\tconstructor(private datePipe: DatePipe) {}\n\n\tpublic ngOnInit() {\n\t\tthis.setCalendar();\n\n\t\tsetTimeout(() => {\n\t\t\tthis.setStyle();\n\t\t}, 1);\n\t}\n\n\tpublic ngOnChanges() {\n\t\tthis.newData = this.date;\n\t}\n\n\tpublic setDate(date: string) {\n\t\tthis.setDateEvent.emit(date);\n\t}\n\n\tpublic getToday() {\n\t\tthis.newData = new Date().toString();\n\t\tthis.setCalendar();\n\t}\n\n\tpublic getMonth() {\n\t\tthis.showMonths = true;\n\t\tthis.showCalendar = false;\n\t}\n\n\tpublic setMonth(month: any) {\n\t\tthis.showCalendar = true;\n\t\tthis.showMonths = false;\n\n\t\tthis.newData = new Date(this.year, month, this.dayNumber).toString();\n\t\tthis.setCalendar();\n\t}\n\n\tpublic getYear() {\n\t\tthis.showYears = true;\n\t\tthis.showCalendar = false;\n\t}\n\n\tpublic setYear() {\n\t\tif (this.yearText?.nativeElement.value !== \"\" && this.yearText?.nativeElement.value.length === 4) {\n\t\t\tthis.showCalendar = true;\n\t\t\tthis.showYears = false;\n\n\t\t\tthis.newData = new Date(this.yearText?.nativeElement.value, this.monthNumber - 1, this.dayNumber).toString();\n\t\t\tthis.setCalendar();\n\t\t}\n\t}\n\n\tpublic onKeyDown(event: any) {\n\t\tlet text = event.target.value;\n\n\t\tif (event.key === \"Enter\") {\n\t\t\tthis.setYear();\n\t\t} else if (\n\t\t\tevent.key === \"Backspace\"\n\t\t\t|| event.key === \"Tab\"\n\t\t\t|| event.key === \"ArrowLeft\"\n\t\t\t|| event.key === \"ArrowRight\"\n\t\t\t|| event.key === \"Meta\"\n\t\t\t|| event.key === \"Control\"\n\t\t) {\n\t\t\t// DO NOTHING\n\t\t} else {\n\t\t\tif (!(event.metaKey && event.key === \"v\") && !(event.metaKey && event.key === \"c\")) {\n\t\t\t\tif (!event.key.match(/[0-9]/)\n\t\t\t\t\t|| text.length >= 4\n\t\t\t\t) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**************************************************************************\n\t* Protected Methods\n\t**************************************************************************/\n\tprivate setCalendar() {\n\t\tlet dt = (this.newData && this.newData !== \"\") ? new Date(this.newData) : new Date();\n\n\t\tthis.year = dt.getFullYear();\n\t\tthis.month = this.months[dt.getMonth()];\n\t\tthis.monthNumber = (dt.getMonth() + 1);\n\t\tthis.dayNumber = dt.getDate();\n\n\t\tlet fistDay = new Date(this.year, dt.getMonth(), 1).getDay();\n\t\tlet totalDays = this.getTotalDays(dt.getFullYear(), dt.getMonth() + 1);\n\t\tlet weeks = Math.floor(totalDays / 7);\n\n\t\tlet isToday: boolean = false;\n\t\tlet isSelected: boolean = false;\n\n\t\tif (fistDay > 0) weeks = weeks + 1;\n\t\tif ((totalDays + fistDay) > (weeks * 7)) weeks = weeks + 1;\n\n\t\tlet plotDay: any = 1;\n\n\t\tthis.calDays = [];\n\n\t\tfor (let w = 0; w < weeks; w++) {\n\t\t\tfor (let d = 0; d < 7; d++) {\n\t\t\t\tlet currentDay = ((7 * w) + (d + 1));\n\n\t\t\t\tif (currentDay < (fistDay + 1)) {\n\t\t\t\t\tthis.calDays.push({ date: \"\", day: \"\"});\n\t\t\t\t} else {\n\t\t\t\t\tif (plotDay <= totalDays) {\n\t\t\t\t\t\tif (this.datePipe.transform(new Date(this.year, this.monthNumber - 1, plotDay), 'yyyy-MM-dd') === this.datePipe.transform(new Date(), 'yyyy-MM-dd')) {\n\t\t\t\t\t\t\tisToday = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tisToday = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.datePipe.transform(new Date(this.year, this.monthNumber - 1, plotDay), 'yyyy-MM-dd') === this.datePipe.transform(this.date, 'yyyy-MM-dd')) {\n\t\t\t\t\t\t\tisSelected = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tisSelected = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.calDays.push({ date: this.datePipe.transform(new Date(this.year, this.monthNumber - 1, plotDay), 'yyyy-MM-dd'), day: plotDay.toString(), today: isToday, selected: isSelected });\n\t\t\t\t\t\t\n\t\t\t\t\t\tplotDay++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.calDays.push({ date: \"\", day: \"\"});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getTotalDays(year: any, month: any) {\n\t\treturn new Date(year, month, 0).getDate();\n\t}\n\n\tprivate setStyle() {\n\t\tlet element = this.calendar?.nativeElement;\n\n\t\tif (element) {\n\t\t\telement.style.setProperty(\"--height\", this.height);\n\t\t\telement.style.setProperty(\"--width\", this.width);\n\t\t\telement.style.setProperty(\"--font-size\", this.fontSize);\n\t\t}\n\t}\n}","<div #calendar *ngIf=\"show\" class=\"sdk-textbox-calendar\" [style.height]=\"((calDays.length * 30) + 30) + 'px'\">\n <div class=\"frame\" *ngIf=\"showCalendar\">\n <div class=\"header\">\n <div class=\"month\" (click)=\"getMonth()\">{{ month }}</div>\n <div class=\"today\" (click)=\"getToday()\">Today</div>\n <div class=\"year\" (click)=\"getYear()\">{{ year }}</div>\n </div>\n <div class=\"calendar\">\n <div class=\"grid\">\n <div class=\"label\">Sun</div>\n <div class=\"label\">Mon</div>\n <div class=\"label\">Tue</div>\n <div class=\"label\">Wed</div>\n <div class=\"label\">Thu</div>\n <div class=\"label\">Fri</div>\n <div class=\"label\">Sat</div>\n <div class=\"item\" [ngClass]=\"{ today: day.today, selected: day.selected }\" *ngFor=\"let day of calDays; let i = index\" (mousedown)=\"setDate(day.date)\">{{ day.day }}</div>\n </div>\n </div>\n </div>\n \n <table *ngIf=\"showMonths\" class=\"table\">\n <tbody>\n <tr>\n <td (click)=\"setMonth(0)\">Jan</td>\n <td (click)=\"setMonth(1)\">Feb</td>\n <td (click)=\"setMonth(2)\">Mar</td>\n <td (click)=\"setMonth(3)\">Apr</td>\n </tr>\n <tr>\n <td (click)=\"setMonth(4)\">May</td>\n <td (click)=\"setMonth(5)\">Jun</td>\n <td (click)=\"setMonth(6)\">Jul</td>\n <td (click)=\"setMonth(7)\">Aug</td>\n </tr>\n <tr>\n <td (click)=\"setMonth(8)\">Sep</td>\n <td (click)=\"setMonth(9)\">Oct</td>\n <td (click)=\"setMonth(10)\">Nov</td>\n <td (click)=\"setMonth(11)\">Dec</td>\n </tr>\n </tbody>\n </table>\n\n <table *ngIf=\"showYears\" class=\"table\">\n <tbody>\n <tr>\n <td>\n <div class=\"year-box\">\n <input #yearText class=\"year\" type=\"number\" (keydown)=\"onKeyDown($event)\" [value]=\"year\" />\n <button class=\"set\" (click)=\"setYear()\">SET</button>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { CommonModule, DatePipe, formatCurrency, formatNumber } from '@angular/common';\n\nimport { CalendarComponent } from './components/calendar/calendar.component';\n\n@Component({\n\tselector: 'sdk-textbox',\n\tstandalone: true,\n\timports: [\n\t\tCommonModule,\n\t\tCalendarComponent\n\t],\n\ttemplateUrl: './sdk-textbox.component.html',\n\tstyleUrls: ['./sdk-textbox.component.scss']\n})\n\nexport class SDKTextboxComponent {\n\t/**************************************************************************\n\t* Input/Output Parameters\n\t**************************************************************************/\n\t@Input() validCharacters: string = \"\";\n\t@Input() value: string = \"\";\n\t@Input() hint: string = \"\";\n\t@Input() pattern: string = \"\";\n\t@Input() locale: string = \"en-US\";\n\t@Input() multiLine: boolean = false;\n\t@Input() border: string | undefined;\n\t@Input() padding: string | undefined;\n\t@Input() margin: string | undefined;\n\t@Input() height: string | undefined;\n\t@Input() width: string | undefined;\n\t@Input() style: string | undefined;\n\t@Input() class: string | undefined;\n\t@Input() showCalendarIcon: boolean = true;\n\t@Input() calHeight: string = \"180px\";\n\t@Input() calWidth: string = \"180px\";\n\t@Input() calFontSize: string = \"1.0em\";\n\t@Input() focus: boolean = false;\n\t@Output() blurCallBackEvent: EventEmitter<any> = new EventEmitter();\n\t@Output() changeCallBackEvent: EventEmitter<any> = new EventEmitter();\n\t@Output() enterCallBackEvent: EventEmitter<any> = new EventEmitter();\n\n\t/**************************************************************************\n\t* Component Variables\n\t**************************************************************************/\n\t@ViewChild(\"component\") component: ElementRef | undefined;\n\t@ViewChild(\"text\") text: ElementRef | undefined;\n\t@ViewChild(\"calendar\") calendar: ElementRef | undefined;\n\n\tprotected calendarDate: string = \"\";\n\tprotected showCalendar: boolean = false;\n\tprotected lockCalendar: boolean = false;\n\n\tprivate pArray: any = [];\n\tprivate fArray: any = [];\n\n\t//******************************************************************************\n\t// Component Life-cycle Methods\n\t//******************************************************************************\n\tprotected ngOnInit() {\n\t\tif (this.validCharacters) {\n\t\t\tthis.validCharacters = this.validCharacters.toString().toLocaleLowerCase();\n\n\t\t\tswitch (this.validCharacters) {\n\t\t\t\tcase \"calendar\":\n\t\t\t\t\tif (!this.pattern || this.pattern === \"\") this.pattern = \"YYYY-MM-DD\";\n\n\t\t\t\t\tlet divider = this.pattern.replace(/[ymdYMD]/g, \"\").substring(0, 1);\n\t\t\t\t\tlet dividerArray = this.pattern.split(divider);\n\n\t\t\t\t\tthis.hint = this.pattern;\n\t\t\t\t\tthis.createPattern(dividerArray[0].replace(/[ymdYMD]/g, \"#\") + divider + dividerArray[1].replace(/[ymdYMD]/g, \"#\") + divider + dividerArray[2].replace(/[ymdYMD]/g, \"#\"));\n\n\t\t\t\t\tif (this.value && this.value !== \"\") {\n\t\t\t\t\t\tlet datePipe = new DatePipe(this.locale);\n\t\t\t\t\t\tlet pattern = this.pattern!.replace(/[yY]/g, \"y\").replace(/[mM]/g, \"M\").replace(/[dD]/g, \"d\");\n\t\t\t\t\t\tlet value = this.value.split(\"T\")[0];\n\n\t\t\t\t\t\tthis.value = datePipe.transform(value, pattern) || \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (!this.width) {\n\t\t\t\t\t\t\tthis.text!.nativeElement.style.width = `${this.pattern!.length * 10}px`;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.component!.nativeElement.parentNode.hasAttribute(\"nocomponent\")) {\n\t\t\t\t\t\t\tthis.showCalendarIcon = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 1);\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"email\":\n\t\t\t\t\tthis.hint = \"name@company.com\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"custom\":\n\t\t\t\t\tif (this.pattern\n\t\t\t\t\t\t&& this.pattern.indexOf(\"#\") > -1\n\t\t\t\t\t\t&& !this.pattern.startsWith(\"[\")\n\t\t\t\t\t\t&& !this.pattern.endsWith(\"]\")\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.hint = this.pattern;\n\t\t\t\t\t\tthis.createPattern();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected ngAfterViewInit() {\n\t\tsetTimeout(() => {\n\t\t\tif (this.validCharacters === \"calendar\" && this.component && this.text) {\n\t\t\t\tthis.component.nativeElement.style.width = (this.text.nativeElement.clientWidth + 25) + \"px\";\n\t\t\t}\n\n\t\t\tif (this.focus) {\n\t\t\t\tthis.text!.nativeElement.focus();\n\t\t\t}\n\t\t}, 100);\n\t}\n\n\t//*************************************************************************\n\t// Protected Methods\n\t//*************************************************************************\n\tprotected onKeyDown(event: any) {\n\t\tthis.showCalendar = false;\n\n\t\tif (event.key === \"Enter\" && !event.shiftKey) {\n\t\t\tthis.text!.nativeElement.blur();\n\n\t\t\tif (this.enterCallBackEvent.observed) {\n\t\t\t\tthis.enterCallBackEvent.emit(event.target.value);\n\t\t\t}\n\t\t} else if (\n\t\t\tevent.key === \"Backspace\"\n\t\t\t|| event.key === \"Tab\"\n\t\t\t|| event.key === \"ArrowLeft\"\n\t\t\t|| event.key === \"ArrowRight\"\n\t\t\t|| event.key === \"Meta\"\n\t\t\t|| event.key === \"Control\"\n\t\t) {\n\t\t\t// DO NOTHING\n\t\t} else {\n\t\t\tlet text = this.removeSelection(event);\n\n\t\t\tif (!(event.metaKey && event.key === \"v\") && !(event.metaKey && event.key === \"c\")) {\n\t\t\t\tswitch (this.validCharacters) {\n\t\t\t\t\tcase \"alpha\":\n\t\t\t\t\t\tif (!event.key.match(/[a-zA-Z]/)) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"numeric\":\n\t\t\t\t\t\tif (!event.key.match(/[0-9]/)) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"alphanumeric\":\n\t\t\t\t\t\tif (!event.key.match(/[a-zA-Z0-9]/)) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"decimal\":\n\t\t\t\t\tcase \"currency\":\n\t\t\t\t\t\tif (!event.key.match(/[-0-9.]/)\n\t\t\t\t\t\t\t|| (event.key === \".\" && text.match(/[.]/g))\n\t\t\t\t\t\t\t|| (event.key === \"-\" && (event.target.selectionStart !== 0 || text.match(/[-]/g)))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet periodArray = text.toString().split(\".\");\n\n\t\t\t\t\t\tif (this.validCharacters === \"currency\" && periodArray.length > 1 && periodArray[1].length >= 2) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"calendar\":\n\t\t\t\t\t\tif (!event.key.match(/[0-9]/)\n\t\t\t\t\t\t\t|| text.replace(/[^0-9]/g, \"\").length === this.pattern!.replace(/[^ymdYMD]/g, \"\").length\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"email\":\n\t\t\t\t\t\tif (!event.key.match(/[a-zA-Z0-9._%+-@]/)\n\t\t\t\t\t\t\t|| (event.key === \"@\" && text.match(/[@]/g))\n\t\t\t\t\t\t\t|| (!text.match(/[@]/g) && text.length >= 64)\n\t\t\t\t\t\t\t|| (text.match(/[@]/g) && text.length >= 254)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet atArray = text.toString().split(\"@\");\n\n\t\t\t\t\t\tif (atArray.length > 1\n\t\t\t\t\t\t\t&& event.target.selectionStart > atArray[0].length\n\t\t\t\t\t\t\t&& !event.key.match(/[a-zA-Z0-9-.]/)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"latitude\":\n\t\t\t\t\t\tlet latrx = /^([\\-]?|[\\-]?[1-9]|[\\-]?[1-8][0-9]|[\\-]?90)(?:[.]\\d{0,15})?$/;\n\t\t\t\t\t\tlet lattext = text + event.key;\n\n\t\t\t\t\t\tif (!lattext.match(new RegExp(latrx))) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"longitude\":\n\t\t\t\t\t\tlet longrx = /^([\\-]?|[\\-]?[1-9]|[\\-]?[1-9]\\d|[\\-]?[1][0-7]\\d|[\\-]?180)(?:[.]\\d{0,15})?$/;\n\t\t\t\t\t\tlet longtext = text + event.key;\n\n\t\t\t\t\t\tif (!longtext.match(new RegExp(longrx))) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"custom\":\n\t\t\t\t\t\tif (this.pattern\n\t\t\t\t\t\t\t&& this.pattern.indexOf(\"#\") > -1\n\t\t\t\t\t\t\t&& !this.pattern.startsWith(\"[\")\n\t\t\t\t\t\t\t&& !this.pattern.endsWith(\"]\")\n\t\t\t\t\t\t\t&& (!event.key.match(/[0-9]/) || text.length === this.pattern.length)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.pattern\n\t\t\t\t\t\t\t&& this.pattern.startsWith(\"[\")\n\t\t\t\t\t\t\t&& this.pattern.endsWith(\"]\")\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (!event.key.match(new RegExp(this.pattern, \"g\"))) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.pattern\n\t\t\t\t\t\t\t&& this.pattern.startsWith(\"^\")\n\t\t\t\t\t\t\t&& this.pattern.endsWith(\"$\")\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tlet newText = text + event.key;\n\n\t\t\t\t\t\t\tif (!newText.match(new RegExp(this.pattern))) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected onBlur(event: any) {\n\t\tlet text = event.target.value;\n\n\t\tif (this.validCharacters && text && text !== \"\") {\n\t\t\ttext = this.cleanText(text);\n\t\t\ttext = this.formatText(text);\n\n\t\t\tevent.target.value = text;\n\t\t}\n\n\t\tif (this.validCharacters) {\n\t\t\tthis.validCharacters = this.validCharacters.toString().toLocaleLowerCase();\n\n\t\t\tswitch (this.validCharacters) {\n\t\t\t\tcase \"calendar\":\n\t\t\t\t\tif (!this.lockCalendar) {\n\t\t\t\t\t\tthis.showCalendar = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (this.blurCallBackEvent.observed) {\n\t\t\tthis.blurCallBackEvent.emit(this.text!.nativeElement.value);\n\t\t}\n\t}\n\n\tprotected onInput(event: any) {\n\t\tif (this.validCharacters === \"decimal\"\n\t\t\t|| this.validCharacters === \"currency\"\n\t\t) {\n\t\t\tthis.setNumericText(event);\n\t\t}\n\n\t\tif (this.validCharacters === \"calendar\") {\n\t\t\tthis.setCalendarText(event);\n\t\t}\n\n\t\tif (this.validCharacters === \"email\") {\n\t\t\tthis.setEmailText(event);\n\t\t}\n\n\t\tif (this.validCharacters === \"latitude\") {\n\t\t\tthis.setLatitude(event);\n\t\t}\n\n\t\tif (this.validCharacters === \"longitude\") {\n\t\t\tthis.setLongitude(event);\n\t\t}\n\n\t\tif (this.validCharacters === \"custom\" && this.pArray.length > 0) {\n\t\t\tthis.setCustomText(event);\n\t\t}\n\n\t\tif (this.changeCallBackEvent.observed) {\n\t\t\tthis.changeCallBackEvent.emit(this.text!.nativeElement.value);\n\t\t}\n\t}\n\n\tprotected onCut(event: any) {\n\t\tlet textLeft = event.target.value.toString().substring(0, event.target.selectionStart);\n\t\tlet textRight = event.target.value.toString().substring(event.target.selectionEnd);\n\n\t\tlet text = textLeft + textRight;\n\n\t\tlet clipboardData = event.clipboardData || event.originalEvent.clipboardData;\n\t\tclipboardData.items.add(text, 'text/plain');\n\t}\n\n\tprotected onPaste(event: any) {\n\t\tlet clipboardData = event.clipboardData || event.originalEvent.clipboardData;\n\t\tlet text = clipboardData.getData('text');\n\n\t\tlet textLeft = event.target.value.toString().substring(0, event.target.selectionStart);\n\t\tlet textRight = event.target.value.toString().substring(event.target.selectionEnd);\n\n\t\ttext = textLeft + text + textRight;\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\t\t\t(this.validCharacters === \"custom\" && this.pattern.startsWith(\"^\") && this.pattern.endsWith(\"$\"))\n\t\t\t|| this.validCharacters === \"latitude\"\n\t\t\t|| this.validCharacters === \"longitude\"\n\t\t) {\n\t\t\tevent.target.value = \"\";\n\t\t} else {\n\t\t\ttext = this.cleanText(text);\n\n\t\t\tevent.target.value = text;\n\t\t}\n\n\t\tif (this.changeCallBackEvent.observed) {\n\t\t\tthis.changeCallBackEvent.emit(this.text!.nativeElement.value);\n\t\t}\n\t}\n\n\tprotected showComponent(event: any) {\n\t\tif (this.validCharacters) {\n\t\t\tthis.validCharacters = this.validCharacters.toString().toLocaleLowerCase();\n\n\t\t\tswitch (this.validCharacters) {\n\t\t\t\tcase \"calendar\":\n\t\t\t\t\tif (!this.component!.nativeElement.parentNode.hasAttribute(\"nocomponent\")) {\n\t\t\t\t\t\tthis.calendarDate = this.text!.nativeElement.value;\n\t\t\t\t\t\tthis.showCalendar = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected setDate(date: any) {\n\t\tthis.text!.nativeElement.value = this.formatText(date);\n\n\t\tif (this.changeCallBackEvent.observed) {\n\t\t\tthis.changeCallBackEvent.emit(this.text!.nativeElement.value);\n\t\t}\n\n\t\tthis.showCalendar = false;\n\t}\n\n\t//*************************************************************************\n\t// Private Methods\n\t//*************************************************************************\n\tprivate setNumericText(event: any) {\n\t\tlet text = event.target.value;\n\t\tlet newText = \"\";\n\t\tlet beforeLength = text.length;\n\t\tlet afterLength = 0;\n\t\tlet cursorStart = event.target.selectionStart;\n\t\tlet cursor = 0;\n\n\t\tevent.preventDefault();\n\n\t\tnewText = text.toString().replace(/[^-0-9.]/g, \"\");\n\t\tnewText = newText.toString().replace(/\\B(?=([0-9]{3})+(?![0-9]))/g, \",\");\n\n\t\tlet periodArray = newText.toString().split(\".\");\n\n\t\tif (periodArray.length > 1) {\n\t\t\tnewText = periodArray[0] + \".\" + periodArray[1].replace(/[,]/g, \"\");\n\t\t}\n\n\t\tafterLength = newText.length;\n\n\t\tcursor = cursorStart + (afterLength - beforeLength);\n\n\t\tevent.target.value = newText;\n\t\tevent.target.selectionStart = cursor;\n\t\tevent.target.selectionEnd = cursor;\n\t}\n\n\tprivate setCalendarText(event: any) {\n\t\tlet text = event.target.value;\n\t\tlet newText = \"\";\n\t\tlet beforeLength = text.length;\n\t\tlet afterLength = 0;\n\t\tlet cursorStart = event.target.selectionStart;\n\t\tlet cursor = 0;\n\n\t\tevent.preventDefault();\n\n\t\tnewText = text.toString().replace(/[^0-9]/g, \"\");\n\n\t\tfor (let x = 0; x < this.pArray.length; x++) {\n\t\t\tnewText = newText.replace(new RegExp(this.pArray[x]), this.fArray[x]);\n\t\t}\n\n\t\tafterLength = newText.length;\n\n\t\tcursor = cursorStart + (afterLength - beforeLength);\n\n\t\tevent.target.value = newText;\n\t\tevent.target.selectionStart = cursor;\n\t\tevent.target.selectionEnd = cursor;\n\t}\n\n\tprivate setEmailText(event: any) {\n\t\tlet text = event.target.value;\n\t\tlet newText = \"\";\n\t\tlet beforeLength = text.length;\n\t\tlet afterLength = 0;\n\t\tlet cursorStart = event.target.selectionStart;\n\t\tlet cursor = 0;\n\n\t\tevent.preventDefault();\n\n\t\tnewText = text.toString().replace(/[^a-zA-Z0-9._%+-@]/g, \"\");\n\n\t\tlet atArray = newText.toString().split(\"@\");\n\n\t\tif (atArray.length > 1) {\n\t\t\tnewText = atArray[0].substring(0, 63) + \"@\" + atArray.slice(1).toString().replace(/[^a-zA-Z0-9-.]/g, \"\");\n\t\t} else {\n\t\t\tnewText = newText.substring(0, 63);\n\t\t}\n\n\t\tnewText = newText.substring(0, 253);\n\n\t\tafterLength = newText.length;\n\n\t\tcursor = cursorStart + (afterLength - beforeLength);\n\n\t\tevent.target.value = newText;\n\t\tevent.target.selectionStart = cursor;\n\t\tevent.target.selectionEnd = cursor;\n\t}\n\n\tprivate setLatitude(event: any) {\n\t\tlet text = event.target.value;\n\t\tlet newText = text;\n\n\t\tevent.preventDefault();\n\n\t\tif (Number(text) < -90) {\n\t\t\tnewText = -90;\n\t\t}\n\t\tif (Number(text) > 90) {\n\t\t\tnewText = 90;\n\t\t}\n\n\t\tevent.target.value = newText;\n\t}\n\n\tprivate setLongitude(event: any) {\n\t\tlet text = event.target.value;\n\t\tlet newText = text;\n\n\t\tevent.preventDefault();\n\n\t\tif (Number(text) < -180) {\n\t\t\tnewText = -180;\n\t\t}\n\t\tif (Number(text) > 180) {\n\t\t\tnewText = 180;\n\t\t}\n\n\t\tevent.target.value = newText;\n\t}\n\n\tprivate setCustomText(event: any) {\n\t\tlet text = event.target.value;\n\t\tlet newText = \"\";\n\t\tlet beforeLength = text.length;\n\t\tlet afterLength = 0;\n\t\tlet cursorStart = event.target.selectionStart;\n\t\tlet cursor = 0;\n\n\t\tevent.preventDefault();\n\n\t\tif (text === \"+1 \") text = \"\";\n\t\tnewText = text.toString().replace(/[^0-9]/g, \"\");\n\n\t\tfor (let x = 0; x < this.pArray.length; x++) {\n\t\t\tnewText = newText.replace(new RegExp(this.pArray[x]), this.fArray[x]);\n\t\t}\n\n\t\tafterLength = newText.length;\n\n\t\tcursor = cursorStart + (afterLength - beforeLength);\n\n\t\tevent.target.value = newText;\n\t\tevent.target.selectionStart = cursor;\n\t\tevent.target.selectionEnd = cursor;\n\t}\n\n\tprivate removeSelection(event: any): any {\n\t\tlet textLeft = event.target.value.toString().substring(0, event.target.selectionStart);\n\t\tlet textRight = event.target.value.toString().substring(event.target.selectionEnd + 1);\n\n\t\treturn textLeft + textRight;\n\t}\n\n\tprivate cleanText(text: any): any {\n\t\tif (this.validCharacters?.toString().startsWith(\"[\")) {\n\t\t\tlet format = \"[^\" + this.validCharacters?.toString().split(\"[\")[1];\n\n\t\t\ttext = text.toString().replace(new RegExp(format, \"g\"), \"\");\n\t\t} else {\n\t\t\tswitch (this.validCharacters) {\n\t\t\t\tcase \"alpha\":\n\t\t\t\t\ttext = text.toString().replace(/[^a-zA-Z]/g, \"\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"numeric\":\n\t\t\t\t\ttext = text.toString().replace(/[^0-9]/g, \"\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"alphanumeric\":\n\t\t\t\t\ttext = text.toString().replace(/[^a-zA-Z0-9]/g, \"\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"decimal\":\n\t\t\t\tcase \"currency\":\n\t\t\t\t\ttext = text.toString().replace(/[^0-9.-]|(?:\\/[.].*)[.]|(?!^)-/g, \"\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"calendar\":\n\t\t\t\t\tif (this.pattern) {\n\t\t\t\t\t\tlet re = \"[^0-9\" + this.encodeText(Array.from(new Set(this.pattern.replace(/[a-zA-Z0-9]/g, \"\").split(\"\"))).join(\"\")) + \"]\";\n\n\t\t\t\t\t\ttext = text.toString().replace(new RegExp(re, \"g\"), \"\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"email\":\n\t\t\t\t\ttext = text.toString().replace(/[^a-zA-Z0-9._%+-@]/g, \"\");\n\n\t\t\t\t\tlet atArray = text.toString().split(\"@\");\n\n\t\t\t\t\tif (atArray.length > 1) {\n\t\t\t\t\t\tlet periodArray = atArray[1].toString().split(\".\");\n\n\t\t\t\t\t\tif (periodArray.length > 1) {\n\t\t\t\t\t\t\tlet type = periodArray.slice(periodArray.length - 1);\n\t\t\t\t\t\t\ttype = type.toString().replace(/[^a-zA-Z]/g, \"\");\n\n\t\t\t\t\t\t\tperiodArray.pop();\n\t\t\t\t\t\t\ttext = atArray[0] + \"@\" + periodArray.join(\".\") + \".\" + type;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"latitude\":\n\t\t\t\tcase \"longitude\":\n\t\t\t\t\tlet re = \"(\" + this.pattern + \")\";\n\t\t\t\t\ttext = text.toString().replace(new RegExp(re, \"g\"), \"$1\");\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"custom\":\n\t\t\t\t\tif (this.pattern) {\n\t\t\t\t\t\tif (this.pattern.indexOf(\"#\") > -1 && !this.pattern.startsWith(\"[\") && !this.pattern.endsWith(\"]\")) {\n\t\t\t\t\t\t\tlet re = \"[^0-9\" + this.encodeText(Array.from(new Set(this.pattern.split(\"\"))).join(\"\")) + \"]\";\n\t\t\t\t\t\t\ttext = text.toString().replace(new RegExp(re.replace(\"#\", \"\"), \"g\"), \"\");\n\t\t\t\t\t\t\ttext = text.substring(0, this.pattern.length);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.pattern.startsWith(\"[\") && this.pattern.endsWith(\"]\")) {\n\t\t\t\t\t\t\tlet re = this.pattern.replace(\"[\", \"[^\");\n\n\t\t\t\t\t\t\tif (this.pattern.startsWith(\"[^\")) {\n\t\t\t\t\t\t\t\tre = this.pattern.replace(\"[^\", \"[\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttext = text.toString().replace(new RegExp(re, \"g\"), \"\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.pattern.startsWith(\"^\") && this.pattern.endsWith(\"$\")) {\n\t\t\t\t\t\t\tlet re = \"(\" + this.pattern + \")\";\n\t\t\t\t\t\t\ttext = text.toString().replace(new RegExp(re, \"g\"), \"$1\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn text;\n\t}\n\n\tprivate formatText(text: any): any {\n\t\tif (this.validCharacters === \"currency\") {\n\t\t\ttext = formatCurrency(parseFloat(text), this.locale, this.pattern ?? '$');\n\t\t} else if (this.validCharacters === \"custom\" || this.validCharacters === \"latitude\" || this.validCharacters === \"longitude\") {\n\t\t\t// DO NOTHING\n\t\t} else if (this.validCharacters === \"calendar\") {\n\t\t\tconst datepipe: DatePipe = new DatePipe(this.locale)\n\n\t\t\tlet pattern = this.pattern!.replace(/[yY]/g, \"y\").replace(/[mM]/g, \"M\").replace(/[dD]/g, \"d\");\n\n\t\t\ttry {\n\t\t\t\ttext = datepipe.transform(text, pattern, undefined, this.locale);\n\t\t\t\tthis.text!.nativeElement.style.backgroundColor = \"\";\n\t\t\t} catch {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.text!.nativeElement.style.backgroundColor = \"rgb(255, 210, 217)\";\n\t\t\t\t\tthis.text!.nativeElement.focus();\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.pattern) {\n\t\t\t\ttext = formatNumber(parseFloat(text), this.locale, this.pattern);\n\t\t\t}\n\t\t}\n\n\t\treturn text;\n\t}\n\n\tprivate createPattern(pattern: string = \"\") {\n\t\tif (pattern === \"\") {\n\t\t\tpattern = this.pattern?.trim() ?? \"\";\n\t\t}\n\t\tlet ws: any = pattern.replace(/([\\#])\\1+/g, \"#\");\n\n\t\tlet wsPattern = \"\";\n\t\tlet breakArray = [];\n\t\tlet cnt = 1;\n\t\tlet wsBreak = \"\";\n\n\t\tfor (let x = 0; x < ws.length; x++) {\n\t\t\tif (ws[x] === \"#\") {\n\t\t\t\twsPattern += `$${cnt}`;\n\t\t\t\tcnt++;\n\t\t\t} else {\n\t\t\t\twsPattern += ws[x];\n\t\t\t}\n\n\t\t\twsBreak = ws[x];\n\n\t\t\tif (ws[x] === \" \" || ws[x] === \"-\" || ws[x] === \".\" || ws[x] === \"/\" || ws[x] === \"_\") {\n\t\t\t\tbreakArray.push(wsBreak);\n\t\t\t\twsBreak = \"\";\n\t\t\t}\n\t\t}\n\n\t\tlet charArray = [];\n\t\tlet chars = \"\";\n\n\t\tfor (let x = 0; x < pattern.length; x++) {\n\t\t\tif (pattern[x] === \"#\") {\n\t\t\t\tchars += \"#\";\n\t\t\t} else {\n\t\t\t\tif (chars !== \"\") {\n\t\t\t\t\tcharArray.push(chars);\n\t\t\t\t}\n\t\t\t\tchars = \"\";\n\t\t\t}\n\t\t}\n\n\t\t// Add any remaining chars.\n\t\tif (chars !== \"\") {\n\t\t\tcharArray.push(chars);\n\t\t}\n\n\t\tlet patternArray = [];\n\n\t\tfor (let x = 0; x < charArray.length; x++) {\n\t\t\tpatternArray.push(`[0-9]{1,${charArray[x].length}}`);\n\t\t}\n\n\t\tthis.pArray = [];\n\t\tthis.fArray = [];\n\t\tlet wsFilter = ws;\n\t\tlet wspFilter = wsPattern;\n\t\tlet f = \"\";\n\t\tlet p = \"\";\n\n\t\tfor (let l = 0; l < patternArray.length; l++) {\n\t\t\tf = wsFilter.split(breakArray[l])[0];\n\t\t\twsFilter = wsFilter.substring(f.length + 1);\n\t\t\tp = wspFilter.split(breakArray[l])[0];\n\t\t\twspFilter = wspFilter.substring(p.length + 1);\n\n\t\t\tfor (let x = l; x < patternArray.length; x++) {\n\t\t\t\tif (this.pArray[x] === undefined) this.pArray.push(\"\");\n\t\t\t\tif (this.fArray[x] === undefined) this.fArray.push(\"\");\n\n\t\t\t\tlet m = (l > 0) ? \"*\" : \"\";\n\n\t\t\t\t// build left-side (pArray)\n\t\t\t\tif (f.startsWith(\"#\") && f.endsWith(\"#\")) { // number only\n\t\t\t\t\tif (x === l) {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l] + \")\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.pArray[x] += this.encodeText(f).replace(\"#\", m + \"(\" + patternArray[l].replace(\"1,\", \"\") + \")\") + this.encodeText(breakArray[l]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!f.startsWith(\"#\") && !f.endsWith(\"#\")) { // wrapper\n\t\t\t\t\tif (x === l) {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l] + \")\";\n\t\t\t\t\t} else if (x === (l + 1)) {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l].replace(\"1,\", \"\") + \")\" + this.encodeText(breakArray[l]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.pArray[x] += this.encodeText(f).replace(\"#\", m + \"(\" + patternArray[l].replace(\"1,\", \"\") + \")\") + this.encodeText(breakArray[l]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!f.startsWith(\"#\") && f.endsWith(\"#\")) { // starts with non-digit\n\t\t\t\t\tif (x === l) {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l] + \")\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l].replace(\"1,\", \"\") + \")\" + this.encodeText(breakArray[l]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (f.startsWith(\"#\") && !f.endsWith(\"#\")) { // ends with non-digit\n\t\t\t\t\tif (x === l) {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l] + \")\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.pArray[x] += m + \"(\" + patternArray[l].replace(\"1,\", \"\") + \")\" + this.encodeText(breakArray[l]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// build right-side (fArray)\n\t\t\t\tif (f.startsWith(\"#\") && f.endsWith(\"#\")) { // number only\n\t\t\t\t\tif (l === x) {\n\t\t\t\t\t\tthis.fArray[x] += p;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.fArray[x] += p + (breakArray[l] ?? \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!f.startsWith(\"#\") && !f.endsWith(\"#\")) { // wrapper\n\t\t\t\t\tif (l === x) {\n\t\t\t\t\t\tthis.fArray[x] += p.replace(/[^$0-9]/g, \"\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.fArray[x] += p + (breakArray[l] ?? \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!f.startsWith(\"#\") && f.endsWith(\"#\")) { // starts with non-digit\n\t\t\t\t\tif (l === x) {\n\t\t\t\t\t\tthis.fArray[x] += p;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.fArray[x] += p + (breakArray[l] ?? \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (f.startsWith(\"#\") && !f.endsWith(\"#\")) { // ends with non-digit\n\t\t\t\t\tif (l === x) {\n\t\t\t\t\t\tthis.fArray[x] += p.replace(/[^$0-9]/g, \"\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.fArray[x] += p + (breakArray[l] ?? \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate encodeText(text: any): any {\n\t\treturn text.replace(/[|{}\\\\()[\\]^$+*?.+]/g, '\\\\$&').replace(/\\s/, \"\\\\s\");\n\t}\n}\n","<div #component class=\"sdk_textbox\" style=\"position: relative; padding: 0;\">\n <div *ngIf=\"!multiLine\" [ngStyle]=\"{ 'margin': margin ?? '0', 'border': 'unset', 'height': height ?? 'unset', 'width': width ?? 'unset' }\">\n <input #text type=\"text\" [ngStyle]=\"{ 'padding': padding ?? '5px', 'margin': '0', 'border': border ?? '1px solid rgb(200, 200, 200)', 'height': '100%', 'width': '100%' }\" [class]=\"class\" [style]=\"style\" [placeholder]=\"hint\" (keydown)=\"onKeyDown($event)\" (focus)=\"text.select()\" (blur)=\"onBlur($event)\" (input)=\"onInput($event)\" (cut)=\"onCut($event)\" (paste)=\"onPaste($event)\" (click)=\"!showCalendarIcon ? showComponent($event) : false\" [value]=\"value\" />\n <i *ngIf=\"validCharacters === 'calendar' && showCalendarIcon\" class=\"sdk-icon\" (click)=\"showComponent($event); text.focus(); lockCalendar = true\" (mouseout)=\"lockCalendar = false; showCalendar ? text.focus() : false;\">calendar_month</i>\n <calendar *ngIf=\"showCalendar && validCharacters?.toLocaleLowerCase() === 'calendar'\" #calendar [date]=\"calendarDate\" [show]=\"showCalendar\" [height]=\"calHeight\" [width]=\"calWidth\" [fontSize]=\"calFontSize\" (setDateEvent)=\"setDate($event)\" (mouseover)=\"lockCalendar = true\" (mouseout)=\"lockCalendar = false; text.focus()\"></calendar>\n </div>\n <div *ngIf=\"multiLine\" [ngStyle]=\"{ 'margin': margin ?? '0', 'border': 'unset', 'height': height ?? 'unset', 'width': width ?? 'unset' }\">\n <textarea #text [ngStyle]=\"{ 'padding': padding ?? '5px', 'margin': '0', 'border': border ?? '1px solid rgb(200, 200, 200)', 'height':'100%', 'width': '100%' }\" [class]=\"class\" [style]=\"style\" [placeholder]=\"hint\" (keydown)=\"onKeyDown($event)\" (focus)=\"text.select()\" (blur)=\"onBlur($event)\" (input)=\"onInput($event)\" (cut)=\"onCut($event)\" (paste)=\"onPaste($event)\" (click)=\"!showCalendarIcon ? showComponent($event) : false\" [value]=\"value\"></textarea>\n </div>\n</div>\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { DatePipe } from '@angular/common';\n\nimport { SDKTextboxComponent } from './sdk-textbox.component';\n\n@NgModule({\n imports: [\n SDKTextboxComponent,\n ],\n exports: [\n SDKTextboxComponent\n ],\n providers: [\n DatePipe\n ],\n schemas: [\n NO_ERRORS_SCHEMA\n ]\n})\nexport class SDKTextboxModule { }\n","/*\n * Public API Surface of sdk-textbox\n */\n\nexport { SDKTextboxModule } from './lib/sdk-textbox.module';\nexport { SDKTextboxComponent } from './lib/sdk-textbox.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAaa,iBAAiB,CAAA;AA+B7B,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QA9BnB,IAAI,CAAA,IAAA,GAAW,EAAE;QACjB,IAAI,CAAA,IAAA,GAAY,KAAK;QACrB,IAAM,CAAA,MAAA,GAAW,OAAO;QACxB,IAAK,CAAA,KAAA,GAAW,OAAO;QACvB,IAAQ,CAAA,QAAA,GAAW,OAAO;AACzB,QAAA,IAAA,CAAA,YAAY,GAAsB,IAAI,YAAY,EAAE;QAQvD,IAAY,CAAA,YAAA,GAAY,IAAI;QAC5B,IAAU,CAAA,UAAA,GAAY,KAAK;QAC3B,IAAS,CAAA,SAAA,GAAY,KAAK;QAE1B,IAAY,CAAA,YAAA,GAAW,EAAE;QAEzB,IAAI,CAAA,IAAA,GAAW,CAAC;QAChB,IAAK,CAAA,KAAA,GAAW,EAAE;QAClB,IAAW,CAAA,WAAA,GAAW,CAAC;QACvB,IAAS,CAAA,SAAA,GAAW,CAAC;QACrB,IAAM,CAAA,MAAA,GAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACvG,QAAA,IAAA,CAAA,IAAI,GAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QAIjE,IAAO,CAAA,OAAA,GAAW,EAAE;;IAIrB,QAAQ,GAAA;QACd,IAAI,CAAC,WAAW,EAAE;QAElB,UAAU,CAAC,MAAK;YACf,IAAI,CAAC,QAAQ,EAAE;SACf,EAAE,CAAC,CAAC;;IAGC,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;;AAGlB,IAAA,OAAO,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGtB,QAAQ,GAAA;QACd,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;QACpC,IAAI,CAAC,WAAW,EAAE;;IAGZ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;AAGnB,IAAA,QAAQ,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AAEvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;QACpE,IAAI,CAAC,WAAW,EAAE;;IAGZ,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;IAGnB,OAAO,GAAA;QACb,IAAI,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACjG,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;YAEtB,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;YAC5G,IAAI,CAAC,WAAW,EAAE;;;AAIb,IAAA,SAAS,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;AAE7B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,OAAO,EAAE;;AACR,aAAA,IACN,KAAK,CAAC,GAAG,KAAK;eACX,KAAK,CAAC,GAAG,KAAK;eACd,KAAK,CAAC,GAAG,KAAK;eACd,KAAK,CAAC,GAAG,KAAK;eACd,KAAK,CAAC,GAAG,KAAK;AACd,eAAA,KAAK,CAAC,GAAG,KAAK,SAAS,EACzB;;;aAEK;YACN,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;gBACnF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO;AACxB,uBAAA,IAAI,CAAC,MAAM,IAAI,CAAC,EAClB;oBACD,KAAK,CAAC,cAAc,EAAE;;;;;AAM1B;;AAE2E;IACnE,WAAW,GAAA;AAClB,QAAA,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE;AAEpF,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,OAAO,EAAE;AAE7B,QAAA,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;AAC5D,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QAErC,IAAI,OAAO,GAAY,KAAK;QAC5B,IAAI,UAAU,GAAY,KAAK;QAE/B,IAAI,OAAO,GAAG,CAAC;AAAE,YAAA,KAAK,GAAG,KAAK,GAAG,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,OAAO,KAAK,KAAK,GAAG,CAAC,CAAC;AAAE,YAAA,KAAK,GAAG,KAAK,GAAG,CAAC;QAE1D,IAAI,OAAO,GAAQ,CAAC;AAEpB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AAEjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAC/B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3B,gBAAA,IAAI,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAEpC,IAAI,UAAU,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE;AAC/B,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAC,CAAC;;qBACjC;AACN,oBAAA,IAAI,OAAO,IAAI,SAAS,EAAE;AACzB,wBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE,YAAY,CAAC,EAAE;4BACpJ,OAAO,GAAG,IAAI;;6BACR;4BACN,OAAO,GAAG,KAAK;;AAGhB,wBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE;4BACnJ,UAAU,GAAG,IAAI;;6BACX;4BACN,UAAU,GAAG,KAAK;;wBAGnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAErL,wBAAA,OAAO,EAAE;;yBACH;AACN,wBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAC,CAAC;;;;;;IAOpC,YAAY,CAAC,IAAS,EAAE,KAAU,EAAA;AACzC,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;;IAGlC,QAAQ,GAAA;AACf,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa;QAE1C,IAAI,OAAO,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC;;;+GA7K7C,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb9B,m3EAyDA,EAAA,MAAA,EAAA,CAAA,43FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlDE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAMD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAV7B,SAAS;+BACC,UAAU,EAAA,UAAA,EACR,IAAI,EACP,OAAA,EAAA;wBACR,YAAY;AACZ,qBAAA,EAAA,QAAA,EAAA,m3EAAA,EAAA,MAAA,EAAA,CAAA,43FAAA,CAAA,EAAA;6EAMQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACS,YAAY,EAAA,CAAA;sBAArB;gBAKsB,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU;gBACE,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU;;;METT,mBAAmB,CAAA;AAXhC,IAAA,WAAA,GAAA;AAYC;;AAE2E;QAClE,IAAe,CAAA,eAAA,GAAW,EAAE;QAC5B,IAAK,CAAA,KAAA,GAAW,EAAE;QAClB,IAAI,CAAA,IAAA,GAAW,EAAE;QACjB,IAAO,CAAA,OAAA,GAAW,EAAE;QACpB,IAAM,CAAA,MAAA,GAAW,OAAO;QACxB,IAAS,CAAA,SAAA,GAAY,KAAK;QAQ1B,IAAgB,CAAA,gBAAA,GAAY,IAAI;QAChC,IAAS,CAAA,SAAA,GAAW,OAAO;QAC3B,IAAQ,CAAA,QAAA,GAAW,OAAO;QAC1B,IAAW,CAAA,WAAA,GAAW,OAAO;QAC7B,IAAK,CAAA,KAAA,GAAY,KAAK;AACrB,QAAA,IAAA,CAAA,iBAAiB,GAAsB,IAAI,YAAY,EAAE;AACzD,QAAA,IAAA,CAAA,mBAAmB,GAAsB,IAAI,YAAY,EAAE;AAC3D,QAAA,IAAA,CAAA,kBAAkB,GAAsB,IAAI,YAAY,EAAE;QAS1D,IAAY,CAAA,YAAA,GAAW,EAAE;QACzB,IAAY,CAAA,YAAA,GAAY,KAAK;QAC7B,IAAY,CAAA,YAAA,GAAY,KAAK;QAE/B,IAAM,CAAA,MAAA,GAAQ,EAAE;QAChB,IAAM,CAAA,MAAA,GAAQ,EAAE;AAovBxB;;;;IA/uBU,QAAQ,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,iBAAiB,EAAE;AAE1E,YAAA,QAAQ,IAAI,CAAC,eAAe;AAC3B,gBAAA,KAAK,UAAU;oBACd,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,EAAE;AAAE,wBAAA,IAAI,CAAC,OAAO,GAAG,YAAY;AAErE,oBAAA,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;oBACnE,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AAE9C,oBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO;AACxB,oBAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;oBAEzK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE;wBACpC,IAAI,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;wBACxC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AAC7F,wBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEpC,wBAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE;;oBAGtD,UAAU,CAAC,MAAK;AACf,wBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAChB,4BAAA,IAAI,CAAC,IAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAG,EAAA,IAAI,CAAC,OAAQ,CAAC,MAAM,GAAG,EAAE,IAAI;;AAGxE,wBAAA,IAAI,IAAI,CAAC,SAAU,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;AACzE,4BAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;qBAE9B,EAAE,CAAC,CAAC;oBAEL;AAED,gBAAA,KAAK,OAAO;AACX,oBAAA,IAAI,CAAC,IAAI,GAAG,kBAAkB;oBAC9B;AAED,gBAAA,KAAK,QAAQ;oBACZ,IAAI,IAAI,CAAC;2BACL,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7B,2BAAA,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;2BAC5B,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC7B;AACD,wBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO;wBACxB,IAAI,CAAC,aAAa,EAAE;;oBAErB;;;;IAKM,eAAe,GAAA;QACxB,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,IAAI,CAAC,eAAe,KAAK,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE;gBACvE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,EAAE,IAAI,IAAI;;AAG7F,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACf,gBAAA,IAAI,CAAC,IAAK,CAAC,aAAa,CAAC,KAAK,EAAE;;SAEjC,EAAE,GAAG,CAAC;;;;;AAME,IAAA,SAAS,CAAC,KAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAEzB,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AAC7C,YAAA,IAAI,CAAC,IAAK,CAAC,aAAa,CAAC,IAAI,EAAE;AAE/B,YAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;gBACrC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;;;AAE3C,aAAA,IACN,KAAK,CAAC,GAAG,KAAK;eACX,KAAK,CAAC,GAAG,KAAK;eACd,KAAK,CAAC,GAAG,KAAK;eACd,KAAK,CAAC,GAAG,KAAK;eACd,KAAK,CAAC,GAAG,KAAK;AACd,eAAA,KAAK,CAAC,GAAG,KAAK,SAAS,EACzB;;;aAEK;YACN,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAEtC,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;AACnF,gBAAA,QAAQ,IAAI,CAAC,eAAe;AAC3B,oBAAA,KAAK,OAAO;wBACX,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;4BACjC,KAAK,CAAC,cAAc,EAAE;;wBAGvB;AAED,oBAAA,KAAK,SAAS;wBACb,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;4BAC9B,KAAK,CAAC,cAAc,EAAE;;wBAGvB;AAED,oBAAA,KAAK,cAAc;wBAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;4BACpC,KAAK,CAAC,cAAc,EAAE;;wBAGvB;AAED,oBAAA,KAAK,SAAS;AACd,oBAAA,KAAK,UAAU;wBACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS;AAC1B,gCAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gCACvC,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,KAAK,CAAC,MAAM,CAAC,cAAc,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAClF;4BACD,KAAK,CAAC,cAAc,EAAE;;wBAGvB,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;wBAE5C,IAAI,IAAI,CAAC,eAAe,KAAK,UAAU,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;4BAChG,KAAK,CAAC,cAAc,EAAE;;wBAGvB;AAED,oBAAA,KAAK,UAAU;wBACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO;+BACxB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,OAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,MAAM,EACvF;4BACD,KAAK,CAAC,cAAc,EAAE;;wBAGvB;AAED,oBAAA,KAAK,OAAO;wBACX,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB;AACpC,gCAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACxC,gCAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE;AACzC,gCAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,EAC5C;4BACD,KAAK,CAAC,cAAc,EAAE;;wBAGvB,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AAExC,wBAAA,IAAI,OAAO,CAAC,MAAM,GAAG;+BACjB,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;+BACzC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,EACnC;4BACD,KAAK,CAAC,cAAc,EAAE;;wBAGvB;AAED,oBAAA,KAAK,UAAU;wBACd,IAAI,KAAK,GAAG,8DAA8D;AAC1E,wBAAA,IAAI,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG;AAE9B,wBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;4BACtC,KAAK,CAAC,cAAc,EAAE;;wBAGvB;AAED,oBAAA,KAAK,WAAW;wBACf,IAAI,MAAM,GAAG,4EAA4E;AACzF,wBAAA,IAAI,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG;AAE/B,wBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;4BACxC,KAAK,CAAC,cAAc,EAAE;;wBAGvB;AAED,oBAAA,KAAK,QAAQ;wBACZ,IAAI,IAAI,CAAC;+BACL,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7B,+BAAA,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;AAC5B,+BAAA,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG;gCACzB,CAAC,KAAK,CAAC,GAAG,CAAC,