ngx-tagify
Version:
Angular library that wraps @yaireo/tagify
1 lines • 17.9 kB
Source Map (JSON)
{"version":3,"file":"ngx-tagify.mjs","sources":["../../../projects/ngx-tagify/src/lib/tagify.service.ts","../../../projects/ngx-tagify/src/lib/tagify.component.ts","../../../projects/ngx-tagify/src/lib/tagify.module.ts","../../../projects/ngx-tagify/src/public-api.ts","../../../projects/ngx-tagify/src/ngx-tagify.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport Tagify from '@yaireo/tagify';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TagifyService {\n private tagifyMap = new Map<string, Tagify>();\n\n /**\n * Adds a tagify instance, so it is available via service. Used internally.\n */\n add(name: string, tagify: Tagify): void {\n if (this.tagifyMap.get(name)) {\n console.warn(`There already exists a tagify instance with name ${name}!`);\n return;\n }\n this.tagifyMap.set(name, tagify);\n }\n\n /**\n * Get tagify instance for full access to tagify API.\n */\n get(name: string): Tagify {\n return this.tagifyMap.get(name);\n }\n\n /**\n * Removes a tagify instance from service. Used internally.\n */\n remove(name: string): void {\n this.tagifyMap.delete(name);\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n asyncScheduler,\n BehaviorSubject,\n fromEvent,\n Observable,\n Subject,\n} from 'rxjs';\nimport { takeUntil, throttleTime } from 'rxjs/operators';\nimport Tagify, { TagData, TagifySettings } from '@yaireo/tagify';\nimport { TagifyService } from './tagify.service';\n\n@Component({\n selector: 'tagify',\n template: `<input [ngClass]=\"inputClassValue\" #inputRef />\n <span style=\"display: none\"><ng-content></ng-content></span>`,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TagifyComponent),\n multi: true,\n },\n ],\n})\nexport class TagifyComponent\n implements AfterViewInit, ControlValueAccessor, OnDestroy\n{\n private valueData: string | TagData[];\n private valueType = 'undefined';\n private onChange: any = Function.prototype;\n private onTouched: any = Function.prototype;\n\n private unsubscribe$ = new Subject<void>();\n private value$ = new BehaviorSubject<string | TagData[]>(null);\n private tagify: Tagify;\n private skip = false;\n\n inputClassValue = '';\n private readonlyValue = false;\n private disabledValue = false;\n\n @ViewChild('inputRef', { static: true })\n inputRef: ElementRef<HTMLInputElement>;\n\n @Input() settings: TagifySettings = {};\n\n @Input() name = '';\n\n @Input() whitelist: Observable<string[] | TagData[]>;\n\n @Input() set inputClass(v: string) {\n this.setTagsClass(v);\n this.inputClassValue = v;\n }\n\n @Input() set readonly(v: boolean) {\n this.readonlyValue = !!v;\n this.setReadonly();\n }\n\n @Input() set disabled(v: boolean) {\n this.disabledValue = !!v;\n this.setDisabled();\n }\n\n get value(): string | TagData[] {\n return this.valueData;\n }\n\n set value(v: string | TagData[]) {\n if (v !== this.valueData) {\n this.valueData = v;\n this.onChange(v);\n }\n }\n\n @Output() add = new EventEmitter();\n @Output() remove = new EventEmitter();\n @Output() tInput = new EventEmitter<string>();\n\n constructor(\n private tagifyService: TagifyService,\n private element: ElementRef<HTMLElement>,\n ) {}\n\n ngAfterViewInit(): void {\n this.settings.callbacks = this.settings.callbacks || {};\n\n if (!Object.prototype.hasOwnProperty.call(this.settings.callbacks, 'add')) {\n this.settings.callbacks.add = () =>\n this.add.emit({\n tags: this.tagify.value,\n added: this.tagify.value[this.tagify.value.length - 1],\n });\n }\n\n if (\n !Object.prototype.hasOwnProperty.call(this.settings.callbacks, 'remove')\n ) {\n this.settings.callbacks.remove = () =>\n this.remove.emit(this.tagify.value);\n }\n\n const innerText = this.element.nativeElement.textContent;\n\n this.tagify = new Tagify(this.inputRef.nativeElement, this.settings);\n\n // add to service if name is provided\n if (this.name.length) {\n this.tagifyService.add(this.name, this.tagify);\n }\n\n this.setReadonly();\n this.setDisabled();\n\n // if there is some text inside component, load this value and skip first change check\n if (innerText.length) {\n this.tagify.loadOriginalValues(innerText);\n this.skip = true;\n setTimeout(() => {\n this.setValue();\n });\n }\n\n // listen to value changes from outside\n this.value$.pipe(takeUntil(this.unsubscribe$)).subscribe((tags) => {\n if (tags === null) return;\n\n if (this.skip) {\n this.skip = false;\n return;\n }\n\n if (this.valueType === 'undefined') {\n this.valueType = typeof tags;\n }\n\n // if string is passed, e.g. via reactive forms\n if (typeof tags === 'string') {\n this.tagify.loadOriginalValues(tags);\n setTimeout(() => {\n this.setValue();\n });\n return;\n }\n\n // add all tags (already existing tags will be skipped\n this.tagify.addTags(tags, false, true);\n\n // remove all tags that are not part of value anymore\n this.tagify.value.forEach((v) => {\n if (!tags.find((t) => t.value === v.value)) {\n // somehow removeTags() with string parameter doesn't always find the tag element\n // this is a workaround for finding the right tag element\n const tagElm = this.tagify\n .getTagElms()\n .find(\n (el) =>\n el.attributes.getNamedItem('value').textContent === v.value,\n );\n this.tagify.removeTags(tagElm);\n }\n });\n });\n\n // listen to tagify events\n this.tagify.on('input', (e) => {\n const value = 'value' in e.detail ? e.detail.value : e.detail.textContent;\n this.tInput.emit(value);\n if (this.valueType === 'string' && this.tagify.settings.mode === 'mix') {\n this.value = this.tagify.getMixedTagsAsString();\n }\n });\n\n fromEvent(this.tagify, 'change')\n .pipe(\n // throttle used to reduce number of value changes when adding/removing a bunch of tags\n throttleTime(0, asyncScheduler, { leading: false, trailing: true }),\n takeUntil(this.unsubscribe$),\n )\n .subscribe(() => {\n this.setValue();\n });\n\n // listen to suggestions updates\n if (this.whitelist) {\n this.whitelist.pipe(takeUntil(this.unsubscribe$)).subscribe((list) => {\n this.tagify.settings.whitelist = list;\n });\n }\n }\n\n writeValue(tags: string | TagData[]) {\n this.value$.next(tags);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n private setValue(): void {\n if (this.valueType === 'string') {\n if (this.tagify.settings.mode === 'mix') {\n this.value = this.tagify.getMixedTagsAsString();\n } else {\n this.value = this.tagify.DOM.originalInput.value;\n }\n } else {\n this.value = this.tagify.value.slice();\n }\n }\n\n /**\n * Tagify creates a `tags` element to which the classes of the `input` element are applied.\n * Changes of `inputClass` are applied automatically to the `input` element, but have to be\n * manually applied to the `tags` element.\n */\n private setTagsClass(v: string): void {\n const tagsElement = this.element.nativeElement.querySelector('tags');\n if (tagsElement) {\n tagsElement.classList.remove(...this.inputClassValue.split(/\\s+/));\n tagsElement.classList.add(...v.split(/\\s+/));\n }\n }\n\n private setReadonly() {\n if (this.tagify) {\n this.tagify.setReadonly(this.readonlyValue);\n }\n }\n\n private setDisabled() {\n if (this.tagify) {\n this.tagify.setDisabled(this.disabledValue);\n }\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n\n this.tagify.destroy();\n\n if (this.name.length) {\n this.tagifyService.remove(this.name);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TagifyComponent } from './tagify.component';\n\n@NgModule({\n declarations: [TagifyComponent],\n imports: [CommonModule],\n exports: [TagifyComponent],\n})\nexport class TagifyModule {}\n","/*\n * Public API Surface of ngx-tagify\n */\nimport Tagify, { TagData, TagifySettings } from '@yaireo/tagify';\n\nexport { Tagify, TagData, TagifySettings };\nexport * from './lib/tagify.service';\nexport * from './lib/tagify.component';\nexport * from './lib/tagify.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TagifyService"],"mappings":";;;;;;;;;;MAMa,aAAa,CAAA;AAH1B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAkB;AA0B9C;AAxBC;;AAEG;IACH,GAAG,CAAC,IAAY,EAAE,MAAc,EAAA;QAC9B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,OAAO,CAAC,IAAI,CAAC,oDAAoD,IAAI,CAAA,CAAA,CAAG,CAAC;YACzE;;QAEF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;;AAGlC;;AAEG;AACH,IAAA,GAAG,CAAC,IAAY,EAAA;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGjC;;AAEG;AACH,IAAA,MAAM,CAAC,IAAY,EAAA;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;;+GAzBlB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MC8BY,eAAe,CAAA;IA0B1B,IAAa,UAAU,CAAC,CAAS,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC;;IAG1B,IAAa,QAAQ,CAAC,CAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE;;IAGpB,IAAa,QAAQ,CAAC,CAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE;;AAGpB,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,SAAS;;IAGvB,IAAI,KAAK,CAAC,CAAqB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;;;IAQpB,WACU,CAAA,aAA4B,EAC5B,OAAgC,EAAA;QADhC,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAO,CAAA,OAAA,GAAP,OAAO;QAtDT,IAAS,CAAA,SAAA,GAAG,WAAW;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAQ,QAAQ,CAAC,SAAS;AAClC,QAAA,IAAA,CAAA,SAAS,GAAQ,QAAQ,CAAC,SAAS;AAEnC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAClC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAqB,IAAI,CAAC;QAEtD,IAAI,CAAA,IAAA,GAAG,KAAK;QAEpB,IAAe,CAAA,eAAA,GAAG,EAAE;QACZ,IAAa,CAAA,aAAA,GAAG,KAAK;QACrB,IAAa,CAAA,aAAA,GAAG,KAAK;QAKpB,IAAQ,CAAA,QAAA,GAAmB,EAAE;QAE7B,IAAI,CAAA,IAAA,GAAG,EAAE;AA8BR,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE;AACxB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE;AAC3B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAU;;IAO7C,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE;AAEvD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;AACzE,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,MAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACZ,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACvB,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,aAAA,CAAC;;AAGN,QAAA,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,EACxE;YACA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,MAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;QAGvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW;AAExD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAGpE,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;;QAGhD,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,WAAW,EAAE;;AAGlB,QAAA,IAAI,SAAS,CAAC,MAAM,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC;AACzC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YAChB,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,QAAQ,EAAE;AACjB,aAAC,CAAC;;;AAIJ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YAChE,IAAI,IAAI,KAAK,IAAI;gBAAE;AAEnB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK;gBACjB;;AAGF,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW,EAAE;AAClC,gBAAA,IAAI,CAAC,SAAS,GAAG,OAAO,IAAI;;;AAI9B,YAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,gBAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBACpC,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,QAAQ,EAAE;AACjB,iBAAC,CAAC;gBACF;;;YAIF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;;YAGtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC9B,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;;;AAG1C,oBAAA,MAAM,MAAM,GAAG,IAAI,CAAC;AACjB,yBAAA,UAAU;yBACV,IAAI,CACH,CAAC,EAAE,KACD,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,KAAK,CAC9D;AACH,oBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;;AAElC,aAAC,CAAC;AACJ,SAAC,CAAC;;QAGF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,KAAI;YAC5B,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW;AACzE,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE;gBACtE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;;AAEnD,SAAC,CAAC;AAEF,QAAA,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ;aAC5B,IAAI;;QAEH,YAAY,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EACnE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;aAE7B,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,QAAQ,EAAE;AACjB,SAAC,CAAC;;AAGJ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;gBACnE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI;AACvC,aAAC,CAAC;;;AAIN,IAAA,UAAU,CAAC,IAAwB,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGxB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;IAGb,QAAQ,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;YAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE;gBACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;;iBAC1C;AACL,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK;;;aAE7C;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;;;AAI1C;;;;AAIG;AACK,IAAA,YAAY,CAAC,CAAS,EAAA;AAC5B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC;QACpE,IAAI,WAAW,EAAE;AACf,YAAA,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClE,YAAA,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;;IAIxC,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;;;IAIvC,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;;;IAI/C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAE5B,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAErB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;;+GAhO7B,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EARf,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EARS,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;AACqD,gEAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FASpD,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,QAAQ,EAAE,CAAA;AACqD,gEAAA,CAAA;AAC/D,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;wGAmBC,QAAQ,EAAA,CAAA;sBADP,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAG9B,QAAQ,EAAA,CAAA;sBAAhB;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,SAAS,EAAA,CAAA;sBAAjB;gBAEY,UAAU,EAAA,CAAA;sBAAtB;gBAKY,QAAQ,EAAA,CAAA;sBAApB;gBAKY,QAAQ,EAAA,CAAA;sBAApB;gBAgBS,GAAG,EAAA,CAAA;sBAAZ;gBACS,MAAM,EAAA,CAAA;sBAAf;gBACS,MAAM,EAAA,CAAA;sBAAf;;;MChFU,YAAY,CAAA;+GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EAJR,YAAA,EAAA,CAAA,eAAe,CACpB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,eAAe,CAAA,EAAA,CAAA,CAAA;AAEd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAHb,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,eAAe,CAAC;oBAC/B,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA;;;ACRD;;AAEG;;ACFH;;AAEG;;;;"}