@joster-dev/chaos-control 0.1.0

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.
Files changed (54) hide show
  1. package/README.md +86 -0
  2. package/esm2022/joster-dev-chaos-control.mjs +5 -0
  3. package/esm2022/lib/chaos-control.module.mjs +67 -0
  4. package/esm2022/lib/chaos-control.service.mjs +14 -0
  5. package/esm2022/lib/components/choice/choice.component.mjs +52 -0
  6. package/esm2022/lib/components/color/color.component.mjs +77 -0
  7. package/esm2022/lib/components/file/file.component.mjs +131 -0
  8. package/esm2022/lib/components/index.mjs +8 -0
  9. package/esm2022/lib/components/number/number.component.mjs +134 -0
  10. package/esm2022/lib/components/readonly/readonly.component.mjs +14 -0
  11. package/esm2022/lib/components/select/select.component.mjs +69 -0
  12. package/esm2022/lib/components/text/text.component.mjs +162 -0
  13. package/esm2022/lib/directives/border-radius.directive.mjs +41 -0
  14. package/esm2022/lib/directives/control.directive.mjs +46 -0
  15. package/esm2022/lib/directives/index.mjs +4 -0
  16. package/esm2022/lib/directives/item.directive.mjs +115 -0
  17. package/esm2022/lib/models/index.mjs +7 -0
  18. package/esm2022/lib/models/is-item.function.mjs +8 -0
  19. package/esm2022/lib/models/is-items.function.mjs +5 -0
  20. package/esm2022/lib/models/is-number.function.mjs +5 -0
  21. package/esm2022/lib/models/is-primitive.function.mjs +7 -0
  22. package/esm2022/lib/models/item.interface.mjs +2 -0
  23. package/esm2022/lib/models/primitive.type.mjs +2 -0
  24. package/esm2022/public-api.mjs +6 -0
  25. package/fesm2022/joster-dev-chaos-control.mjs +894 -0
  26. package/fesm2022/joster-dev-chaos-control.mjs.map +1 -0
  27. package/index.d.ts +5 -0
  28. package/lib/LICENSE +9 -0
  29. package/lib/chaos-control.module.d.ts +20 -0
  30. package/lib/chaos-control.service.d.ts +6 -0
  31. package/lib/components/choice/choice.component.d.ts +15 -0
  32. package/lib/components/color/color.component.d.ts +22 -0
  33. package/lib/components/file/file.component.d.ts +31 -0
  34. package/lib/components/index.d.ts +7 -0
  35. package/lib/components/number/number.component.d.ts +33 -0
  36. package/lib/components/readonly/readonly.component.d.ts +8 -0
  37. package/lib/components/select/select.component.d.ts +23 -0
  38. package/lib/components/text/text.component.d.ts +41 -0
  39. package/lib/directives/border-radius.directive.d.ts +12 -0
  40. package/lib/directives/control.directive.d.ts +18 -0
  41. package/lib/directives/index.d.ts +3 -0
  42. package/lib/directives/item.directive.d.ts +35 -0
  43. package/lib/models/index.d.ts +6 -0
  44. package/lib/models/is-item.function.d.ts +2 -0
  45. package/lib/models/is-items.function.d.ts +2 -0
  46. package/lib/models/is-number.function.d.ts +1 -0
  47. package/lib/models/is-primitive.function.d.ts +2 -0
  48. package/lib/models/item.interface.d.ts +6 -0
  49. package/lib/models/primitive.type.d.ts +1 -0
  50. package/package.json +57 -0
  51. package/public-api.d.ts +4 -0
  52. package/src/lib/atomic.scss +87 -0
  53. package/src/lib/styles.scss +83 -0
  54. package/src/lib/variables.scss +3 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joster-dev-chaos-control.mjs","sources":["../../../projects/chaos-control/src/lib/directives/border-radius.directive.ts","../../../projects/chaos-control/src/lib/directives/control.directive.ts","../../../projects/chaos-control/src/lib/models/is-number.function.ts","../../../projects/chaos-control/src/lib/models/is-primitive.function.ts","../../../projects/chaos-control/src/lib/models/is-item.function.ts","../../../projects/chaos-control/src/lib/models/is-items.function.ts","../../../projects/chaos-control/src/lib/directives/item.directive.ts","../../../projects/chaos-control/src/lib/components/choice/choice.component.ts","../../../projects/chaos-control/src/lib/components/choice/choice.component.html","../../../projects/chaos-control/src/lib/components/color/color.component.ts","../../../projects/chaos-control/src/lib/components/color/color.component.html","../../../projects/chaos-control/src/lib/components/file/file.component.ts","../../../projects/chaos-control/src/lib/components/file/file.component.html","../../../projects/chaos-control/src/lib/components/number/number.component.ts","../../../projects/chaos-control/src/lib/components/number/number.component.html","../../../projects/chaos-control/src/lib/components/readonly/readonly.component.ts","../../../projects/chaos-control/src/lib/components/readonly/readonly.component.html","../../../projects/chaos-control/src/lib/components/text/text.component.ts","../../../projects/chaos-control/src/lib/components/text/text.component.html","../../../projects/chaos-control/src/lib/components/select/select.component.ts","../../../projects/chaos-control/src/lib/components/select/select.component.html","../../../projects/chaos-control/src/lib/chaos-control.module.ts","../../../projects/chaos-control/src/lib/chaos-control.service.ts","../../../projects/chaos-control/src/public-api.ts","../../../projects/chaos-control/src/joster-dev-chaos-control.ts"],"sourcesContent":["import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[joBorderRadius]'\r\n})\r\nexport class BorderRadiusDirective {\r\n\r\n @Input()\r\n get borderRadiusRight() {\r\n return this._borderRadiusRight;\r\n }\r\n set borderRadiusRight(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n this._borderRadiusRight = value;\r\n }\r\n _borderRadiusRight = true;\r\n\r\n @Input()\r\n get borderRadiusLeft() {\r\n return this._borderRadiusLeft;\r\n }\r\n set borderRadiusLeft(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n this._borderRadiusLeft = value;\r\n }\r\n _borderRadiusLeft = true;\r\n\r\n constructor() { }\r\n\r\n}\r\n","import { Directive, Input, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { BorderRadiusDirective } from './border-radius.directive';\r\n\r\n@Directive({\r\n selector: '[joControl]'\r\n})\r\nexport class ControlDirective extends BorderRadiusDirective implements OnDestroy {\r\n @Input()\r\n get required() {\r\n return this._required;\r\n }\r\n set required(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n if (typeof value !== 'boolean')\r\n throw new Error('required input must be: boolean');\r\n this._required = value;\r\n this.validation.next();\r\n }\r\n _required = false;\r\n\r\n isDisabled = false;\r\n validation = new Subject<void>();\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.validation.complete();\r\n }\r\n\r\n onTouched() { }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n}\r\n","export function isNumber(value: unknown): value is number {\r\n return typeof value === 'number'\r\n && !isNaN(value);\r\n}\r\n","import { isNumber } from './is-number.function';\r\nimport { primitive } from './primitive.type';\r\n\r\nexport function isPrimitive(value: unknown): value is primitive {\r\n return typeof value === 'boolean'\r\n || isNumber(value)\r\n || typeof value === 'string';\r\n}\r\n","import { isPrimitive } from './is-primitive.function';\r\nimport { Item } from './item.interface';\r\n\r\nexport function isItem(item: Item): item is Item {\r\n return typeof (item) === 'object'\r\n && item !== null\r\n && isPrimitive(item.key)\r\n && typeof item.value === 'string';\r\n}\r\n","import { isItem } from './is-item.function';\r\nimport { Item } from './item.interface';\r\n\r\nexport function isItems(value: Item[]): value is Item[] {\r\n return Array.isArray(value) && value.every(item => isItem(item));\r\n}\r\n","import { Directive, Input, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { isItems, isNumber, isPrimitive, Item, primitive } from '../models';\r\n\r\nimport { ControlDirective } from './control.directive';\r\n\r\n@Directive({\r\n selector: '[joItem]'\r\n})\r\nexport class ItemDirective extends ControlDirective implements ControlValueAccessor {\r\n @Input()\r\n get items() {\r\n return this._items;\r\n }\r\n set items(value: { key: boolean | number | string, value: string, [key: string]: unknown }[]) {\r\n if (!isItems(value))\r\n throw new Error('[items] expects: { key: boolean | number | string, value: string }[]');\r\n this._items = value;\r\n this.validation.next();\r\n }\r\n _items: Item[] = [];\r\n\r\n @Input()\r\n get limit() {\r\n return this._limit;\r\n }\r\n set limit(value: number) {\r\n if (value == null)\r\n value = 0;\r\n\r\n if (!isNumber(value) || value < 0 || !Number.isInteger(value))\r\n throw new Error('limit expects: positive integer');\r\n\r\n this._limit = value;\r\n this.validation.next();\r\n }\r\n _limit = 0;\r\n\r\n @Input()\r\n get isMultiple() {\r\n return this._isMultiple;\r\n }\r\n set isMultiple(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n if (typeof value !== 'boolean')\r\n throw new Error('multiple expects: boolean')\r\n this._isMultiple = value;\r\n }\r\n _isMultiple = false;\r\n\r\n set model(value: primitive[]) {\r\n this._model = value;\r\n this.onChange(\r\n value.length === 0\r\n ? null\r\n : this.isMultiple\r\n ? this._model\r\n : this._model[0]\r\n );\r\n }\r\n _model: primitive[] = [];\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl\r\n ) {\r\n super();\r\n this.validation\r\n .pipe(debounceTime(100))\r\n .subscribe(() => this.validate());\r\n ngControl.valueAccessor = this;\r\n }\r\n\r\n onChange(_value: primitive[] | primitive | null) { }\r\n registerOnChange(fn: () => void) {\r\n this.onChange = fn;\r\n }\r\n\r\n writeValue(value: primitive[] | primitive | null) {\r\n if (value == null)\r\n value = [];\r\n\r\n if (!Array.isArray(value))\r\n value = [value];\r\n\r\n if (value.every(item => isPrimitive(item)))\r\n this._model = value;\r\n }\r\n\r\n private invalidValidator(items: Item[], isMultiple: boolean): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null =>\r\n (\r\n isMultiple\r\n ? Array.isArray(control.value) && control.value.every((key: any) => !items.map(item => item.key).includes(key))\r\n : ![undefined, null].includes(control.value) && !items.map(item => item.key).includes(control.value)\r\n )\r\n ? { invalid: control.value }\r\n : null;\r\n }\r\n\r\n private limitValidator(limit: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null =>\r\n control.value !== null && limit !== 0 && control.value.length > limit\r\n ? { limit: { value: control.value } }\r\n : null;\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [\r\n this.invalidValidator(this._items, this._isMultiple),\r\n ];\r\n\r\n if (this._isMultiple)\r\n validators.push(this.limitValidator(this._limit));\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n if (this.ngControl.control === null)\r\n throw new Error('expected control to be defined');\r\n\r\n this.ngControl.control.setValidators(validators);\r\n this.ngControl.control.updateValueAndValidity();\r\n }\r\n}\r\n","import { Component, Input, Self } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\r\n\r\nimport { ItemDirective } from '../../directives';\r\nimport { Item } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-choice',\r\n templateUrl: './choice.component.html',\r\n styleUrls: [\r\n './choice.component.scss',\r\n '../../styles.scss',\r\n '../../atomic.scss',\r\n ]\r\n})\r\nexport class ChoiceComponent extends ItemDirective implements ControlValueAccessor {\r\n constructor(\r\n @Self() public override ngControl: NgControl,\r\n ) {\r\n super(ngControl);\r\n }\r\n\r\n @Input()\r\n get isColumn() {\r\n return this._isColumn;\r\n }\r\n set isColumn(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n if (typeof value !== 'boolean')\r\n throw new Error('isColumn expects: boolean')\r\n this._isColumn = value;\r\n }\r\n _isColumn = false;\r\n\r\n id = `${Math.random().toString(36).substr(2, 9)}`;\r\n\r\n onClick(item: Item) {\r\n this._model = this._model\r\n .filter(key => this._items.map(item => item.key).includes(key))\r\n\r\n if (this._model.includes(item.key)) {\r\n if (this.required === true && this._model.length === 1)\r\n return;\r\n\r\n this.model = this._model.filter(key => key !== item.key);\r\n return;\r\n }\r\n\r\n if (!this.isMultiple && this._model.length === 1) {\r\n this.model = [item.key];\r\n return;\r\n }\r\n\r\n this.model = [...this._model, item.key];\r\n }\r\n}\r\n","<div class=\"d-flex justify-content-between\">\r\n <label\r\n id=\"choice_{{id}}\"\r\n [class.required]=\"required\"\r\n >\r\n <ng-content></ng-content>\r\n </label>\r\n <div>\r\n <ng-content select=\"[rightAligned]\"></ng-content>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"d-flex flex-wrap align-items-start\"\r\n role=\"group\"\r\n attr.aria-labelledby=\"choice_{{id}}\"\r\n [class.flex-column]=\"isColumn\"\r\n>\r\n <button\r\n *ngFor=\"let item of items; let idx = index\"\r\n type=\"button\"\r\n class=\"d-flex align-items-center text-left\"\r\n role=\"menuitemcheckbox\"\r\n [class.border-radius-right]=\"borderRadiusRight\"\r\n [class.border-radius-left]=\"borderRadiusLeft\"\r\n (click)=\"onClick(item)\"\r\n (blur)=\"onTouched()\"\r\n >\r\n <div\r\n class=\"button margin-right-1 {{isMultiple ? 'br-20' : 'br-50'}}\"\r\n [class.active]=\"_model.includes(item.key)\"\r\n [class.disabled]=\"isDisabled\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n >\r\n <icon\r\n *ngIf=\"_model.includes(item.key)\"\r\n size=\"1em\"\r\n [type]=\"isMultiple ? 'check' : 'dot'\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </div>\r\n {{item.value}}\r\n </button>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['invalid']\">\r\n invalid model\r\n </li>\r\n</ul> -->","import { Component, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { ControlDirective } from '../../directives';\r\n\r\n@Component({\r\n selector: 'jo-color',\r\n templateUrl: './color.component.html',\r\n styleUrls: [\r\n './color.component.scss',\r\n '../../atomic.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class ColorComponent extends ControlDirective implements ControlValueAccessor {\r\n private partialHex = /^[0-9A-Fa-f]{1,6}$/;\r\n fullHex = /^[0-9A-Fa-f]{6}$/;\r\n\r\n get model() {\r\n return this._model;\r\n }\r\n set model(value: string | null) {\r\n this._model = value;\r\n this.onChange(\r\n this._model !== null && this.fullHex.test(this._model)\r\n ? this._model\r\n : null\r\n );\r\n }\r\n _model: string | null = null;\r\n\r\n id = `_${Math.random().toString(36).substring(2, 11)}`;\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl,\r\n ) {\r\n super();\r\n this.validation\r\n .pipe(debounceTime(100))\r\n .subscribe(() => this.validate());\r\n ngControl.valueAccessor = this;\r\n }\r\n\r\n onChangeColor(event: Event) {\r\n const ele = event.target as HTMLInputElement;\r\n this.model = ele.value.substring(1).toUpperCase();\r\n }\r\n\r\n onChange(_model: string | null) { }\r\n registerOnChange(fn: () => void) {\r\n this.onChange = fn;\r\n }\r\n\r\n onBeforeinput(e: Event): void {\r\n const event = e as InputEvent;\r\n if (event.data === null)\r\n return;\r\n const ele = event.target as HTMLInputElement;\r\n const tooLong = event.data.length + (ele.selectionStart || 0) > 6;\r\n const valid = this.partialHex.test(event.data);\r\n if (tooLong || !valid)\r\n event.preventDefault();\r\n }\r\n\r\n writeValue(value: string | null): void {\r\n if (value === undefined || typeof value !== 'string' || !this.partialHex.test(value))\r\n value = null;\r\n\r\n if (value === null || this.partialHex.test(value))\r\n this._model = value;\r\n }\r\n\r\n private invalidValidator(): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null =>\r\n control.value !== null && (typeof control.value !== 'string' || !this.fullHex.test(control.value))\r\n ? { invalid: control.value }\r\n : null;\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [\r\n this.invalidValidator()\r\n ];\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n this.ngControl.control?.setValidators(validators);\r\n this.ngControl.control?.updateValueAndValidity();\r\n }\r\n}\r\n","<label\r\n [for]=\"id\"\r\n [class.required]=\"required\"\r\n>\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex align-items-stretch\">\r\n <button\r\n class=\"d-flex align-items-center\"\r\n title=\"Color\"\r\n [class.border-radius-left]=\"borderRadiusLeft\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"colorInput.click()\"\r\n >\r\n <icon\r\n size=\"1em\"\r\n type=\"square\"\r\n [fill]=\"fullHex.test(_model || '') ? _model : [null, 'current']\"\r\n fillRotate=\"90\"\r\n [stroke]=\"fullHex.test(_model || '') ? _model : ['current']\"\r\n ></icon>\r\n </button>\r\n <input\r\n [(ngModel)]=\"model\"\r\n spellcheck=\"false\"\r\n size=\"5\"\r\n type=\"text\"\r\n [class.active]=\"ngControl.control?.value !== null\"\r\n [class.border-radius-right]=\"borderRadiusRight\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [id]=\"id\"\r\n (beforeinput)=\"onBeforeinput($event)\"\r\n (blur)=\"onTouched()\"\r\n />\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['invalid']\">\r\n invalid model\r\n </li>\r\n</ul> -->\r\n\r\n<input\r\n #colorInput\r\n type=\"color\"\r\n (change)=\"onChangeColor($event)\"\r\n/>","import { Component, Input, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { ControlDirective } from '../../directives';\r\nimport { isNumber } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-file',\r\n templateUrl: './file.component.html',\r\n styleUrls: [\r\n './file.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class FileComponent extends ControlDirective implements ControlValueAccessor {\r\n @Input() get acceptedTypes() {\r\n return this._acceptedTypes;\r\n }\r\n set acceptedTypes(value: string[]) {\r\n if (!Array.isArray(value) || !value.every(item => typeof item === 'string'))\r\n throw new Error(`acceptedTypes expects: string[]`);\r\n this._acceptedTypes = value;\r\n this.validation.next();\r\n }\r\n _acceptedTypes: string[] = [];\r\n\r\n @Input() get sizeLimitMb() {\r\n return this._sizeLimitMb;\r\n }\r\n set sizeLimitMb(value: number) {\r\n if (!isNumber(value) || value < 0)\r\n throw new Error('sizeLimitMb expects: positive number');\r\n this._sizeLimitMb = value;\r\n this.validation.next();\r\n }\r\n _sizeLimitMb = 0;\r\n\r\n @Input() get multiple() {\r\n return this._multiple;\r\n }\r\n set multiple(value: boolean) {\r\n this._multiple = value === true;\r\n this.validation.next();\r\n }\r\n _multiple = false;\r\n\r\n @Input() showSize = false;\r\n\r\n model: '' | null = null;\r\n id = `${Math.random().toString(36).substr(2, 9)}`;\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl,\r\n ) {\r\n super();\r\n this.validation\r\n .pipe(debounceTime(100))\r\n .subscribe(() => this.validate());\r\n ngControl.valueAccessor = this;\r\n }\r\n\r\n get fileNames(): string {\r\n if (this.ngControl.value instanceof FileList)\r\n return Object.values(this.ngControl.value).map(file => file.name).join(', ');\r\n\r\n if (this.ngControl.value instanceof File)\r\n return this.ngControl.value.name;\r\n\r\n return '';\r\n }\r\n\r\n get sizeLimit(): string {\r\n return this.sizeLimitMb < 1\r\n ? `${this.sizeLimitMb * 1000} KB`\r\n : `${this.sizeLimitMb} MB`;\r\n }\r\n\r\n onFileChange(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n this.onChange(\r\n target.files?.length\r\n ? target.files\r\n : null\r\n );\r\n }\r\n\r\n onChange(_model: FileList | null) { }\r\n registerOnChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n writeValue(value: unknown): void {\r\n if (value === undefined)\r\n value = null;\r\n\r\n if (value !== null && !(value instanceof FileList))\r\n throw new Error('control value must be: File or null');\r\n // todo\r\n // this.model = value;\r\n }\r\n\r\n private acceptedTypesValidator(acceptedTypes: string[]): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => control.value !== null\r\n && control.value instanceof FileList\r\n && !Object.values(control.value).map(item => item.type.toLowerCase())\r\n .every(type => acceptedTypes.includes(type.toLowerCase()))\r\n ? { acceptedTypes: { value: control.value } }\r\n : null;\r\n }\r\n\r\n private invalidValidator(multiple: boolean): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => control.value !== null\r\n && (!(control.value instanceof FileList) || (control.value.length > 1 && !multiple))\r\n ? { invalid: { value: control.value } }\r\n : null;\r\n }\r\n\r\n private sizeLimitMbValidator(sizeLimitMb: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => control.value instanceof FileList\r\n && Object.values(control.value).map(item => item.size / 1024 / 1024)\r\n .reduce((acc, cur) => acc + cur, 0) > sizeLimitMb\r\n ? { sizeLimitMb: { value: control.value } }\r\n : null;\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [\r\n this.invalidValidator(this.multiple)\r\n ];\r\n\r\n if (this.acceptedTypes.length > 0)\r\n validators.push(this.acceptedTypesValidator(this.acceptedTypes));\r\n\r\n if (this.sizeLimitMb > 0)\r\n validators.push(this.sizeLimitMbValidator(this.sizeLimitMb));\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n this.ngControl.control?.setValidators(validators);\r\n this.ngControl.control?.updateValueAndValidity();\r\n }\r\n}\r\n","<label [class.required]=\"required\">\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex align-items-center\">\r\n <div>\r\n <button\r\n class=\"white-space-nowrap\"\r\n [class.border-radius-right]=\"borderRadiusRight\"\r\n [class.border-radius-left]=\"borderRadiusLeft\"\r\n [class.active]=\"ngControl.value !== null\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"fileInput.click()\"\r\n >\r\n <icon\r\n type=\"folder\"\r\n size=\"1em\"\r\n class=\"margin-right-1\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n Choose {{multiple ? 'Files' : 'File'}}\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"ngControl.value\"\r\n id=\"filename\"\r\n >\r\n {{fileNames}}\r\n </div>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['acceptedTypes']\">\r\n valid types are {{acceptedTypes.join(', ')}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['sizeLimitMb']\">\r\n max file size is {{sizeLimit}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['invalid']\">\r\n invalid model\r\n </li>\r\n</ul> -->\r\n\r\n<input\r\n [(ngModel)]=\"model\"\r\n #fileInput\r\n type=\"file\"\r\n [accept]=\"acceptedTypes.join()\"\r\n [multiple]=\"multiple\"\r\n [id]=\"id\"\r\n (change)=\"onFileChange($event)\"\r\n/>\r\n","import { Component, Input, Self } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms';\r\nimport { ControlDirective } from '../../directives';\r\nimport { isNumber } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-number',\r\n templateUrl: './number.component.html',\r\n styleUrls: [\r\n './number.component.scss',\r\n '../../atomic.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class NumberComponent extends ControlDirective implements ControlValueAccessor {\r\n @Input()\r\n get min() {\r\n return this._min;\r\n }\r\n set min(value: number) {\r\n if (!isNumber(value))\r\n throw new Error('[min] expects: number');\r\n this._min = value;\r\n this.validation.next();\r\n }\r\n _min = 0;\r\n\r\n @Input()\r\n get max() {\r\n return this._max;\r\n }\r\n set max(value: number) {\r\n if (!isNumber(value))\r\n throw new Error('[max] expects: number');\r\n this._max = value;\r\n this.validation.next();\r\n }\r\n _max = 9;\r\n\r\n @Input()\r\n get step() {\r\n return this._step;\r\n }\r\n set step(value: number) {\r\n if (!isNumber(value))\r\n throw new Error('[step] expects: number');\r\n this._step = value;\r\n this.mustBeInteger = Number.isInteger(this._step);\r\n }\r\n _step = 1;\r\n\r\n mustBeInteger = true;\r\n readonly sizePadding = 5;\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl,\r\n ) {\r\n super();\r\n this.validation.subscribe(() => this.validate());\r\n this.validation.next();\r\n ngControl.valueAccessor = this;\r\n }\r\n\r\n _model: number | null = null;\r\n get model() {\r\n return this._model;\r\n }\r\n set model(value: number | null) {\r\n this._model = value;\r\n this.onChange(this._model);\r\n }\r\n\r\n get isDisabledAdd() {\r\n return this.isDisabled === true\r\n || this.model !== null\r\n && this.model + this.step > this.max;\r\n }\r\n\r\n get isDisabledSubtract() {\r\n return this.isDisabled === true\r\n || this._model !== null\r\n && this._model - this.step < this.min;\r\n }\r\n\r\n get maxDigitSize() {\r\n return Math.max(\r\n this._step.toString().length,\r\n this._max.toString().length,\r\n this._min.toString().length\r\n );\r\n }\r\n\r\n onBeforeinput(e: Event) {\r\n const event = e as InputEvent;\r\n if (event.data === null)\r\n return;\r\n const isDigit = /\\d/.test(event.data);\r\n const isMinus = event.data === '-';\r\n const isMinusAllowed = this.min < 0;\r\n const isBlockedNonDigit = !isDigit && !(isMinus && isMinusAllowed)\r\n const isPastMax = Number((this._model || '') + event.data) > this.max;\r\n if (isBlockedNonDigit || isPastMax)\r\n event.preventDefault();\r\n }\r\n\r\n add(e: HTMLInputElement) {\r\n if (this.model === null) {\r\n this.model = this.max;\r\n return;\r\n }\r\n\r\n e.stepUp();\r\n this.model = e.valueAsNumber;\r\n }\r\n\r\n subtract(e: HTMLInputElement) {\r\n if (this.model === null) {\r\n this.model = this.min;\r\n return;\r\n }\r\n\r\n e.stepDown();\r\n this.model = e.valueAsNumber;\r\n }\r\n\r\n onChange(_model: number | null) { }\r\n registerOnChange(fn: () => void) {\r\n this.onChange = fn;\r\n }\r\n\r\n writeValue(value: number | null) {\r\n if (value === undefined)\r\n value = null;\r\n\r\n if (typeof value === 'string')\r\n value = parseFloat(value);\r\n\r\n if (value === null || isNumber(value))\r\n this._model = value;\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [\r\n Validators.min(this.min),\r\n Validators.max(this.max)\r\n ];\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n this.ngControl.control?.setValidators(validators);\r\n this.ngControl.control?.updateValueAndValidity();\r\n }\r\n}\r\n","<label [class.required]=\"required\">\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex align-items-stretch\">\r\n <input\r\n [(ngModel)]=\"model\"\r\n #numberInput\r\n class=\"d-flex align-items-center\"\r\n type=\"number\"\r\n [size]=\"maxDigitSize + sizePadding\"\r\n [class.active]=\"_model !== null\"\r\n [class.border-radius-left]=\"borderRadiusLeft\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n (beforeinput)=\"onBeforeinput($event)\"\r\n />\r\n <button\r\n class=\"d-flex align-items-center\"\r\n title=\"Subtract\"\r\n type=\"button\"\r\n [disabled]=\"isDisabledSubtract\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n (blur)=\"onTouched()\"\r\n (click)=\"subtract(numberInput)\"\r\n >\r\n <icon\r\n type=\"minus\"\r\n size=\"1em\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </button>\r\n <button\r\n class=\"d-flex align-items-center\"\r\n title=\"Add\"\r\n type=\"button\"\r\n [class.border-radius-right]=\"borderRadiusRight\"\r\n [disabled]=\"isDisabledAdd\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n (blur)=\"onTouched()\"\r\n (click)=\"add(numberInput)\"\r\n >\r\n <icon\r\n type=\"plus\"\r\n size=\"1em\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </button>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['min']\">\r\n minimum number is {{min}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['max']\">\r\n maximum number is {{max}}\r\n </li>\r\n</ul> -->","import { Component, Input } from '@angular/core';\r\nimport { primitive } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-readonly',\r\n templateUrl: './readonly.component.html',\r\n styleUrls: [\r\n './readonly.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class ReadonlyComponent {\r\n @Input() model?: primitive;\r\n\r\n constructor() { }\r\n}\r\n","<label>\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"readonly\">\r\n {{model}}\r\n</div>\r\n","import { Component, ElementRef, HostListener, Input, OnDestroy, Output, Renderer2, Self, ViewChild, EventEmitter } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl, ValidatorFn, Validators } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { ControlDirective } from '../../directives';\r\nimport { isNumber } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-text',\r\n templateUrl: './text.component.html',\r\n styleUrls: [\r\n './text.component.scss',\r\n '../../atomic.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class TextComponent extends ControlDirective implements OnDestroy, ControlValueAccessor {\r\n @Input()\r\n get placeholder() {\r\n return this._placeholder;\r\n }\r\n set placeholder(v: string) {\r\n const value = v as unknown;\r\n if (typeof value !== 'string')\r\n throw new Error('[placeholder] expects: string');\r\n this._placeholder = value;\r\n }\r\n _placeholder = '';\r\n\r\n @Input()\r\n get minLength() {\r\n return this._minLength;\r\n }\r\n set minLength(value: string | number | null | undefined) {\r\n if (typeof value === 'string')\r\n value = parseInt(value, 10);\r\n if (value === undefined)\r\n value = null;\r\n if (!isNumber(value) || value < 0 || !Number.isInteger(value) || value === null)\r\n throw new Error('[minLength] expects: positive integer');\r\n this._minLength = value;\r\n this.validation.next();\r\n }\r\n _minLength: number | null = null;\r\n\r\n @Input()\r\n get maxLength() {\r\n return this._maxLength;\r\n }\r\n set maxLength(value: string | number | null | undefined) {\r\n if (typeof value === 'string')\r\n value = parseInt(value, 10);\r\n if (value === undefined)\r\n value = null;\r\n if (!isNumber(value) || value < 0 || !Number.isInteger(value) || value === null)\r\n throw new Error('[maxLength] expects: positive integer');\r\n this._maxLength = value;\r\n this.validation.next();\r\n }\r\n _maxLength: number | null = null;\r\n\r\n @Input()\r\n isSpellCheck = false;\r\n\r\n @Input()\r\n set isGrow(value: boolean | '') {\r\n if (value === '')\r\n value = true;\r\n if (value == null)\r\n value = false;\r\n if (typeof value !== 'boolean')\r\n throw new Error('[isGrow] expects: boolean');\r\n this._isGrow = value;\r\n }\r\n _isGrow = false;\r\n\r\n @Input() rows = 3;\r\n\r\n @Output() onBlur = new EventEmitter<FocusEvent>();\r\n @Output() onFocus = new EventEmitter<FocusEvent>();\r\n\r\n @ViewChild('textarea') textareaElement?: ElementRef;\r\n @ViewChild('textareaHidden') textareaHiddenElement?: ElementRef;\r\n\r\n get model() {\r\n return this._model;\r\n }\r\n set model(value: string | null) {\r\n if (value === '')\r\n value = null;\r\n\r\n this._model = value;\r\n\r\n this.onChange(this._model);\r\n setTimeout(() => this.setTextareaHeight());\r\n }\r\n _model: string | null = null;\r\n\r\n id = `_${Math.random().toString(36).substring(2, 11)}`;\r\n resizeSubject = new Subject<void>();\r\n\r\n constructor(\r\n @Self() public ngControl: NgControl,\r\n private renderer: Renderer2,\r\n ) {\r\n super();\r\n this.validation.subscribe(() => this.validate());\r\n ngControl.valueAccessor = this;\r\n this.resizeSubject\r\n .pipe(debounceTime(300))\r\n .subscribe(() => this._isGrow && this.setTextareaHeight());\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this.resizeSubject.complete();\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n this.resizeSubject.next();\r\n }\r\n\r\n setTextareaHeight() {\r\n if (!this.textareaElement || !this.textareaHiddenElement)\r\n return;\r\n const textarea = this.textareaElement.nativeElement as HTMLElement;\r\n const textareaHidden = this.textareaHiddenElement.nativeElement as HTMLElement;\r\n this.renderer.setStyle(textareaHidden, 'width', `calc(${textarea.scrollWidth}px - 1em)`);\r\n this.renderer.setStyle(textareaHidden, 'height', 'auto');\r\n this.renderer.setStyle(textarea, 'height', `${textareaHidden.scrollHeight}px`);\r\n }\r\n\r\n onChange(_model: string | null) { }\r\n registerOnChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n writeValue(v: string | null): void {\r\n let value = v as unknown;\r\n if (value === '' || value === undefined)\r\n value = null;\r\n if (isNumber(value))\r\n value = value.toString();\r\n if (value === null || typeof value === 'string') {\r\n this._model = value;\r\n setTimeout(() => this.setTextareaHeight());\r\n }\r\n }\r\n\r\n private validate() {\r\n const validators: ValidatorFn[] = [];\r\n\r\n if (this._minLength != null)\r\n validators.push(Validators.minLength(this._minLength));\r\n\r\n if (this._maxLength != null)\r\n validators.push(Validators.maxLength(this._maxLength));\r\n\r\n if (this.required === true)\r\n validators.push(Validators.required);\r\n\r\n this.ngControl.control?.setValidators(validators);\r\n this.ngControl.control?.updateValueAndValidity();\r\n }\r\n}\r\n","<label\r\n [for]=\"id\"\r\n [class.required]=\"required\"\r\n>\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex\">\r\n <input\r\n *ngIf=\"!_isGrow\"\r\n type=\"text\"\r\n [(ngModel)]=\"model\"\r\n [class.border-radius-right]=\"borderRadiusRight\"\r\n [class.border-radius-left]=\"borderRadiusLeft\"\r\n class=\"flex-1\"\r\n [minlength]=\"_minLength\"\r\n [maxlength]=\"_maxLength\"\r\n [class.active]=\"_model !== null\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [id]=\"id\"\r\n [spellcheck]=\"isSpellCheck\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onTouched(); onBlur.emit($event)\"\r\n (focus)=\"onFocus.emit($event)\"\r\n />\r\n <textarea\r\n *ngIf=\"_isGrow\"\r\n #textarea\r\n [(ngModel)]=\"model\"\r\n [class.border-radius-right]=\"borderRadiusRight\"\r\n [class.border-radius-left]=\"borderRadiusLeft\"\r\n class=\"flex-1\"\r\n [rows]=\"rows\"\r\n [minlength]=\"_minLength\"\r\n [maxlength]=\"_maxLength\"\r\n [class.active]=\"_model !== null\"\r\n [class.invalid]=\"ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n [id]=\"id\"\r\n [spellcheck]=\"isSpellCheck\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onTouched(); onBlur.emit($event)\"\r\n (focus)=\"onFocus.emit($event)\"\r\n ></textarea>\r\n</div>\r\n\r\n<div\r\n *ngIf=\"_isGrow\"\r\n class=\"d-flex\"\r\n>\r\n <textarea\r\n #textareaHidden\r\n [ngModel]=\"model\"\r\n class=\"hidden flex-1\"\r\n [rows]=\"rows\"\r\n ></textarea>\r\n</div>\r\n\r\n<!-- <ul *ngIf=\"ngControl.control?.errors\">\r\n <li *ngIf=\"ngControl.control?.errors?.['minlength']\">\r\n minimum length is {{minLength}}\r\n </li>\r\n <li *ngIf=\"ngControl.control?.errors?.['maxLength']\">\r\n maximum length is {{maxLength}}\r\n </li>\r\n</ul> -->","import { Component, ElementRef, HostListener, Input, Self } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\r\nimport { ItemDirective } from '../../directives';\r\nimport { Item } from '../../models';\r\n\r\n@Component({\r\n selector: 'jo-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: [\r\n './select.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class SelectComponent extends ItemDirective implements ControlValueAccessor {\r\n\r\n @Input() dropdownMaxHeight = '200px';\r\n\r\n set searchTerm(value: string) {\r\n this._searchTerm = value;\r\n }\r\n _searchTerm = '';\r\n\r\n get showDropdown() {\r\n return this._showDropdown;\r\n }\r\n set showDropdown(value: boolean) {\r\n this._showDropdown = value;\r\n if (this._showDropdown === false)\r\n return;\r\n const hostBoundingRect: DOMRect = this.hostElement.nativeElement.getBoundingClientRect();\r\n this.isDropdownCloseToBottom = window.innerHeight < hostBoundingRect.bottom + parseInt(this.dropdownMaxHeight, 10);\r\n }\r\n _showDropdown = false;\r\n\r\n isDropdownCloseToBottom = false;\r\n\r\n constructor(\r\n @Self() public override ngControl: NgControl,\r\n private hostElement: ElementRef,\r\n ) {\r\n super(ngControl);\r\n }\r\n\r\n @HostListener('document:mousedown', ['$event'])\r\n onGlobalClick(event: MouseEvent) {\r\n if (!this.hostElement.nativeElement.contains(event.target))\r\n this._showDropdown = false;\r\n }\r\n\r\n onClickSearch() {\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n\r\n onFocusSearch() {\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n\r\n onClick(item: Item) {\r\n this._model = this._model.filter(key => this._items.map(item => item.key).includes(key))\r\n\r\n if (this._model.includes(item.key)) {\r\n if (this.required === true && this._model.length === 1)\r\n return;\r\n\r\n this.model = this._model.filter(key => key !== item.key);\r\n return;\r\n }\r\n\r\n if (!this.isMultiple && this._model.length === 1) {\r\n this.model = [item.key];\r\n return;\r\n }\r\n\r\n this.model = [...this._model, item.key];\r\n }\r\n}\r\n","<label>\r\n <ng-content></ng-content>\r\n</label>\r\n\r\n<div class=\"d-flex align-items-stretch\">\r\n <jo-text\r\n [borderRadiusLeft]=\"borderRadiusLeft\"\r\n [borderRadiusRight]=\"false\"\r\n [(ngModel)]=\"searchTerm\"\r\n [isGrow]=\"false\"\r\n class=\"flex-1\"\r\n (onFocus)=\"onFocusSearch()\"\r\n ></jo-text>\r\n <button\r\n class=\"d-flex\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"onClickSearch()\"\r\n >\r\n <icon\r\n size=\"1em\"\r\n type=\"chevron\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n [stroke]=\"['current']\"\r\n ></icon>\r\n </button>\r\n</div>\r\n\r\n<div\r\n class=\"drop {{isDropdownCloseToBottom ? 'up' : 'down'}}\"\r\n [hidden]=\"!showDropdown\"\r\n [style.max-height]=\"dropdownMaxHeight\"\r\n>\r\n <!-- <jo-button *ngIf=\"items.length === 0\">\r\n No Results\r\n </jo-button> -->\r\n <button\r\n *ngFor=\"let item of items; let idx = index\"\r\n class=\"d-flex\"\r\n [class.active]=\"_model.includes(item.key)\"\r\n [disabled]=\"isDisabled\"\r\n [class.invalid]=\"!ngControl.control?.invalid\"\r\n [class.border-radius-right]=\"borderRadiusRight && idx === items.length - 1\"\r\n [class.border-radius-left]=\"borderRadiusLeft && idx === 0\"\r\n (click)=\"onClick(item)\"\r\n (blur)=\"onTouched()\"\r\n >\r\n <icon-stack\r\n class=\"margin-right-1\"\r\n size=\"1em\"\r\n >\r\n <icon [type]=\"isMultiple ? 'squircle' : 'circle'\"></icon>\r\n <icon\r\n *ngIf=\"_model.includes(item.key)\"\r\n [type]=\"isMultiple ? 'check' : 'dot'\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </icon-stack>\r\n {{item.value}}\r\n </button>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { IconModule } from '@joster-dev/icon';\r\n\r\nimport {\r\n ReadonlyComponent,\r\n ChoiceComponent,\r\n ColorComponent,\r\n FileComponent,\r\n NumberComponent,\r\n TextComponent,\r\n SelectComponent,\r\n} from './components';\r\nimport {\r\n BorderRadiusDirective,\r\n ControlDirective,\r\n ItemDirective,\r\n} from './directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ReadonlyComponent,\r\n ChoiceComponent,\r\n ColorComponent,\r\n FileComponent,\r\n NumberComponent,\r\n TextComponent,\r\n ControlDirective,\r\n ItemDirective,\r\n SelectComponent,\r\n BorderRadiusDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IconModule,\r\n RouterModule,\r\n ],\r\n exports: [\r\n ReadonlyComponent,\r\n ChoiceComponent,\r\n ColorComponent,\r\n FileComponent,\r\n NumberComponent,\r\n TextComponent,\r\n SelectComponent,\r\n ]\r\n})\r\nexport class ChaosControlModule { }\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChaosControlService {\r\n\r\n constructor() { }\r\n}\r\n","// Public API Surface of chaos-control\r\n\r\nexport * from './lib/chaos-control.module';\r\nexport * from './lib/components';\r\nexport * from './lib/models';\r\nexport * from './lib/chaos-control.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4.TextComponent"],"mappings":";;;;;;;;;;;;MAKa,qBAAqB,CAAA;AAEhC,IAAA,IACI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;IACD,IAAI,iBAAiB,CAAC,KAAmB,EAAA;QACvC,IAAI,KAAK,KAAK,EAAE;YACd,KAAK,GAAG,IAAI,CAAC;QACf,IAAI,KAAK,IAAI,IAAI;YACf,KAAK,GAAG,KAAK,CAAC;AAChB,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACjC;AAGD,IAAA,IACI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;IACD,IAAI,gBAAgB,CAAC,KAAmB,EAAA;QACtC,IAAI,KAAK,KAAK,EAAE;YACd,KAAK,GAAG,IAAI,CAAC;QACf,IAAI,KAAK,IAAI,IAAI;YACf,KAAK,GAAG,KAAK,CAAC;AAChB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;AAGD,IAAA,WAAA,GAAA;QAfA,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;QAa1B,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;KAER;8GA5BN,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA,CAAA;wDAIK,iBAAiB,EAAA,CAAA;sBADpB,KAAK;gBAcF,gBAAgB,EAAA,CAAA;sBADnB,KAAK;;;ACbF,MAAO,gBAAiB,SAAQ,qBAAqB,CAAA;AACzD,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAmB,EAAA;QAC9B,IAAI,KAAK,KAAK,EAAE;YACd,KAAK,GAAG,IAAI,CAAC;QACf,IAAI,KAAK,IAAI,IAAI;YACf,KAAK,GAAG,KAAK,CAAC;QAChB,IAAI,OAAO,KAAK,KAAK,SAAS;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;AAMD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;QANV,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAElB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACnB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;KAIhC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;AAED,IAAA,SAAS,MAAM;AACf,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAC9B;8GAnCU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhB,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACxB,iBAAA,CAAA;wDAGK,QAAQ,EAAA,CAAA;sBADX,KAAK;;;ACRF,SAAU,QAAQ,CAAC,KAAc,EAAA;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ;AAC3B,WAAA,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB;;ACAM,SAAU,WAAW,CAAC,KAAc,EAAA;IACxC,OAAO,OAAO,KAAK,KAAK,SAAS;WAC5B,QAAQ,CAAC,KAAK,CAAC;WACf,OAAO,KAAK,KAAK,QAAQ,CAAC;AACjC;;ACJM,SAAU,MAAM,CAAC,IAAU,EAAA;AAC/B,IAAA,OAAO,QAAQ,IAAI,CAAC,KAAK,QAAQ;AAC5B,WAAA,IAAI,KAAK,IAAI;AACb,WAAA,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACrB,WAAA,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC;AACtC;;ACLM,SAAU,OAAO,CAAC,KAAa,EAAA;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE;;ACKM,MAAO,aAAc,SAAQ,gBAAgB,CAAA;AACjD,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAkF,EAAA;AAC1F,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;AAC1F,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;AAGD,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAa,EAAA;QACrB,IAAI,KAAK,IAAI,IAAI;YACf,KAAK,GAAG,CAAC,CAAC;AAEZ,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;AAC3D,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AAErD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;AAGD,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IACD,IAAI,UAAU,CAAC,KAAmB,EAAA;QAChC,IAAI,KAAK,KAAK,EAAE;YACd,KAAK,GAAG,IAAI,CAAC;QACf,IAAI,KAAK,IAAI,IAAI;YACf,KAAK,GAAG,KAAK,CAAC;QAChB,IAAI,OAAO,KAAK,KAAK,SAAS;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;IAGD,IAAI,KAAK,CAAC,KAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CACX,KAAK,CAAC,MAAM,KAAK,CAAC;AAChB,cAAE,IAAI;cACJ,IAAI,CAAC,UAAU;kBACb,IAAI,CAAC,MAAM;kBACX,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACrB,CAAC;KACH;AAGD,IAAA,WAAA,CACiB,SAAoB,EAAA;AAEnC,QAAA,KAAK,EAAE,CAAC;QAFO,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QA9CrC,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;QAgBpB,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;QAeX,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAYpB,IAAM,CAAA,MAAA,GAAgB,EAAE,CAAC;AAMvB,QAAA,IAAI,CAAC,UAAU;AACZ,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACvB,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,QAAA,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;KAChC;IAED,QAAQ,CAAC,MAAsC,EAAA,GAAK;AACpD,IAAA,gBAAgB,CAAC,EAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,UAAU,CAAC,KAAqC,EAAA;QAC9C,IAAI,KAAK,IAAI,IAAI;YACf,KAAK,GAAG,EAAE,CAAC;AAEb,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACvB,YAAA,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AAElB,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;IAEO,gBAAgB,CAAC,KAAa,EAAE,UAAmB,EAAA;AACzD,QAAA,OAAO,CAAC,OAAwB,KAC9B,CACE,UAAU;AACR,cAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAQ,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC/G,cAAE,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;AAEtG,cAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE;cAC1B,IAAI,CAAC;KACZ;AAEO,IAAA,cAAc,CAAC,KAAa,EAAA;QAClC,OAAO,CAAC,OAAwB,KAC9B,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK;cACjE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;cACnC,IAAI,CAAC;KACZ;IAEO,QAAQ,GAAA;AACd,QAAA,MAAM,UAAU,GAAkB;YAChC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC;SACrD,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW;AAClB,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEpD,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;AACxB,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAEvC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI;AACjC,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAEpD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;KACjD;8GApHU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAb,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA,CAAA;;0BA0DI,IAAI;yCAvDH,KAAK,EAAA,CAAA;sBADR,KAAK;gBAaF,KAAK,EAAA,CAAA;sBADR,KAAK;gBAiBF,UAAU,EAAA,CAAA;sBADb,KAAK;;;ACxBF,MAAO,eAAgB,SAAQ,aAAa,CAAA;AAChD,IAAA,WAAA,CAC0B,SAAoB,EAAA;QAE5C,KAAK,CAAC,SAAS,CAAC,CAAC;QAFO,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QAkB9C,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAElB,QAAA,IAAA,CAAA,EAAE,GAAG,CAAG,EAAA,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;KAjBjD;AAED,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAmB,EAAA;QAC9B,IAAI,KAAK,KAAK,EAAE;YACd,KAAK,GAAG,IAAI,CAAC;QACf,IAAI,KAAK,IAAI,IAAI;YACf,KAAK,GAAG,KAAK,CAAC;QAChB,IAAI,OAAO,KAAK,KAAK,SAAS;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AAKD,IAAA,OAAO,CAAC,IAAU,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;aACtB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;QAEjE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAClC,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBACpD,OAAO;AAET,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;YACzD,OAAO;SACR;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YAChD,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO;SACR;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;KACzC;8GA1CU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,0GCf5B,+8CAkDS,EAAA,MAAA,EAAA,CAAA,4QAAA,EAAA,g/BAAA,EAAA,0vBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDnCI,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;+BACE,WAAW,EAAA,QAAA,EAAA,+8CAAA,EAAA,MAAA,EAAA,CAAA,4QAAA,EAAA,g/BAAA,EAAA,0vBAAA,CAAA,EAAA,CAAA;;0BAUlB,IAAI;yCAMH,QAAQ,EAAA,CAAA;sBADX,KAAK;;;AEPF,MAAO,cAAe,SAAQ,gBAAgB,CAAA;AAIlD,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CACX,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;cAClD,IAAI,CAAC,MAAM;cACX,IAAI,CACT,CAAC;KACH;AAKD,IAAA,WAAA,CACiB,SAAoB,EAAA;AAEnC,QAAA,KAAK,EAAE,CAAC;QAFO,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QAnB7B,IAAU,CAAA,UAAA,GAAG,oBAAoB,CAAC;QAC1C,IAAO,CAAA,OAAA,GAAG,kBAAkB,CAAC;QAa7B,IAAM,CAAA,MAAA,GAAkB,IAAI,CAAC;AAE7B,QAAA,IAAA,CAAA,EAAE,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAMrD,QAAA,IAAI,CAAC,UAAU;AACZ,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACvB,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,QAAA,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;KAChC;AAED,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,MAA0B,CAAC;AAC7C,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KACnD;IAED,QAAQ,CAAC,MAAqB,EAAA,GAAK;AACnC,IAAA,gBAAgB,CAAC,EAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,aAAa,CAAC,CAAQ,EAAA;QACpB,MAAM,KAAK,GAAG,CAAe,CAAC;AAC9B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;YACrB,OAAO;AACT,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,MAA0B,CAAC;AAC7C,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAClE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,OAAO,IAAI,CAAC,KAAK;YACnB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;AAED,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YAClF,KAAK,GAAG,IAAI,CAAC;QAEf,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/C,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;IAEO,gBAAgB,GAAA;AACtB,QAAA,OAAO,CAAC,OAAwB,KAC9B,OAAO,CAAC,KAAK,KAAK,IAAI,KAAK,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChG,cAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE;cAC1B,IAAI,CAAC;KACZ;IAEO,QAAQ,GAAA;AACd,QAAA,MAAM,UAAU,GAAkB;YAChC,IAAI,CAAC,gBAAgB,EAAE;SACxB,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;AACxB,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC;KAClD;8GA3EU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,uECf3B,qyCAgDE,EAAA,MAAA,EAAA,CAAA,sLAAA,EAAA,0vBAAA,EAAA,g/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDjCW,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,SAAS;+BACE,UAAU,EAAA,QAAA,EAAA,qyCAAA,EAAA,MAAA,EAAA,CAAA,sLAAA,EAAA,0vBAAA,EAAA,g/BAAA,CAAA,EAAA,CAAA;;0BA4BjB,IAAI;;;AErBH,MAAO,aAAc,SAAQ,gBAAgB,CAAA;AACjD,IAAA,IAAa,aAAa,GAAA;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IACD,IAAI,aAAa,CAAC,KAAe,EAAA;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;AACzE,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,+BAAA,CAAiC,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;AAGD,IAAA,IAAa,WAAW,GAAA;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IACD,IAAI,WAAW,CAAC,KAAa,EAAA;QAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;AAGD,IAAA,IAAa,QAAQ,GAAA;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,KAAK,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;AAQD,IAAA,WAAA,CACiB,SAAoB,EAAA;AAEnC,QAAA,KAAK,EAAE,CAAC;QAFO,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QA5BrC,IAAc,CAAA,cAAA,GAAa,EAAE,CAAC;QAW9B,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;QASjB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAET,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAE1B,IAAK,CAAA,KAAA,GAAc,IAAI,CAAC;AACxB,QAAA,IAAA,CAAA,EAAE,GAAG,CAAG,EAAA,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAMhD,QAAA,IAAI,CAAC,UAAU;AACZ,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACvB,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,QAAA,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;KAChC;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,YAAY,QAAQ;YAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE/E,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,YAAY,IAAI;AACtC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AAEnC,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC;AACzB,cAAE,CAAG,EAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAK,GAAA,CAAA;AACjC,cAAE,CAAG,EAAA,IAAI,CAAC,WAAW,KAAK,CAAC;KAC9B;AAED,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;AAChD,QAAA,IAAI,CAAC,QAAQ,CACX,MAAM,CAAC,KAAK,EAAE,MAAM;cAChB,MAAM,CAAC,KAAK;cACZ,IAAI,CACT,CAAC;KACH;IAED,QAAQ,CAAC,MAAuB,EAAA,GAAK;AACrC,IAAA,gBAAgB,CAAC,EAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,KAAK,KAAK,SAAS;YACrB,KAAK,GAAG,IAAI,CAAC;QAEf,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,KAAK,YAAY,QAAQ,CAAC;AAChD,YAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;;;KAG1D;AAEO,IAAA,sBAAsB,CAAC,aAAuB,EAAA;QACpD,OAAO,CAAC,OAAwB,KAA8B,OAAO,CAAC,KAAK,KAAK,IAAI;eAC/E,OAAO,CAAC,KAAK,YAAY,QAAQ;eACjC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAClE,iBAAA,KAAK,CAAC,IAAI,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;cAC1D,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;cAC3C,IAAI,CAAC;KACV;AAEO,IAAA,gBAAgB,CAAC,QAAiB,EAAA;QACxC,OAAO,CAAC,OAAwB,KAA8B,OAAO,CAAC,KAAK,KAAK,IAAI;gBAC9E,EAAE,OAAO,CAAC,KAAK,YAAY,QAAQ,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;cAClF,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;cACrC,IAAI,CAAC;KACV;AAEO,IAAA,oBAAoB,CAAC,WAAmB,EAAA;QAC9C,OAAO,CAAC,OAAwB,KAA8B,OAAO,CAAC,KAAK,YAAY,QAAQ;eAC1F,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACjE,iBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,WAAW;cACjD,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;cACzC,IAAI,CAAC;KACV;IAEO,QAAQ,GAAA;AACd,QAAA,MAAM,UAAU,GAAkB;AAChC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;SACrC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;AAC/B,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAEnE,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;AACtB,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAE/D,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;AACxB,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC;KAClD;8GA/HU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,0LCd1B,45CAqDA,EAAA,MAAA,EAAA,CAAA,6DAAA,EAAA,g/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDvCa,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,45CAAA,EAAA,MAAA,EAAA,CAAA,6DAAA,EAAA,g/BAAA,CAAA,EAAA,CAAA;;0BA6ChB,IAAI;yCArCM,aAAa,EAAA,CAAA;sBAAzB,KAAK;gBAWO,WAAW,EAAA,CAAA;sBAAvB,KAAK;gBAWO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBASG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;AEhCF,MAAO,eAAgB,SAAQ,gBAAgB,CAAA;AACnD,IAAA,IACI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;IACD,IAAI,GAAG,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;AAGD,IAAA,IACI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;IACD,IAAI,GAAG,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;AAGD,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnD;AAMD,IAAA,WAAA,CACiB,SAAoB,EAAA;AAEnC,QAAA,KAAK,EAAE,CAAC;QAFO,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QA9BrC,IAAI,CAAA,IAAA,GAAG,CAAC,CAAC;QAYT,IAAI,CAAA,IAAA,GAAG,CAAC,CAAC;QAYT,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;QAEV,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;QACZ,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;QAWzB,IAAM,CAAA,MAAA,GAAkB,IAAI,CAAC;AAL3B,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;KAChC;AAGD,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC5B;AAED,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI;eAC1B,IAAI,CAAC,KAAK,KAAK,IAAI;mBACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;KACxC;AAED,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI;eAC1B,IAAI,CAAC,MAAM,KAAK,IAAI;mBACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;KACzC;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,EAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAC5B,CAAC;KACH;AAED,IAAA,aAAa,CAAC,CAAQ,EAAA;QACpB,MAAM,KAAK,GAAG,CAAe,CAAC;AAC9B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;YACrB,OAAO;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;AACnC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACpC,MAAM,iBAAiB,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,IAAI,cAAc,CAAC,CAAA;QAClE,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QACtE,IAAI,iBAAiB,IAAI,SAAS;YAChC,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;AAED,IAAA,GAAG,CAAC,CAAmB,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACtB,OAAO;SACR;QAED,CAAC,CAAC,MAAM,EAAE,CAAC;AACX,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC;KAC9B;AAED,IAAA,QAAQ,CAAC,CAAmB,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACtB,OAAO;SACR;QAED,CAAC,CAAC,QAAQ,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC;KAC9B;IAED,QAAQ,CAAC,MAAqB,EAAA,GAAK;AACnC,IAAA,gBAAgB,CAAC,EAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC7B,IAAI,KAAK,KAAK,SAAS;YACrB,KAAK,GAAG,IAAI,CAAC;QAEf,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC3B,YAAA,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AAE5B,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;IAEO,QAAQ,GAAA;AACd,QAAA,MAAM,UAAU,GAAkB;AAChC,YAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB,YAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;SACzB,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;AACxB,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC;KAClD;8GA1IU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,0HCd5B,suDA6DS,EAAA,MAAA,EAAA,CAAA,sTAAA,EAAA,0vBAAA,EAAA,g/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD/CI,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;+BACE,WAAW,EAAA,QAAA,EAAA,suDAAA,EAAA,MAAA,EAAA,CAAA,sTAAA,EAAA,0vBAAA,EAAA,g/BAAA,CAAA,EAAA,CAAA;;0BAiDlB,IAAI;yCAvCH,GAAG,EAAA,CAAA;sBADN,KAAK;gBAaF,GAAG,EAAA,CAAA;sBADN,KAAK;gBAaF,IAAI,EAAA,CAAA;sBADP,KAAK;;;ME5BK,iBAAiB,CAAA;AAG5B,IAAA,WAAA,GAAA,GAAiB;8GAHN,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+ECX9B,iHAOA,EAAA,MAAA,EAAA,CAAA,+HAAA,EAAA,g/BAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDIa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,iHAAA,EAAA,MAAA,EAAA,CAAA,+HAAA,EAAA,g/BAAA,CAAA,EAAA,CAAA;wDAQd,KAAK,EAAA,CAAA;sBAAb,KAAK;;;AEKF,MAAO,aAAc,SAAQ,gBAAgB,CAAA;AACjD,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IACD,IAAI,WAAW,CAAC,CAAS,EAAA;QACvB,MAAM,KAAK,GAAG,CAAY,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC3B;AAGD,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAI,SAAS,CAAC,KAAyC,EAAA;QACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC3B,YAAA,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,SAAS;YACrB,KAAK,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI;AAC7E,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;AAGD,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAI,SAAS,CAAC,KAAyC,EAAA;QACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC3B,YAAA,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,SAAS;YACrB,KAAK,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI;AAC7E,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;IAMD,IACI,MAAM,CAAC,KAAmB,EAAA;QAC5B,IAAI,KAAK,KAAK,EAAE;YACd,KAAK,GAAG,IAAI,CAAC;QACf,IAAI,KAAK,IAAI,IAAI;YACf,KAAK,GAAG,KAAK,CAAC;QAChB,IAAI,OAAO,KAAK,KAAK,SAAS;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;AAWD,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAoB,EAAA;QAC5B,IAAI,KAAK,KAAK,EAAE;YACd,KAAK,GAAG,IAAI,CAAC;AAEf,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAEpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,UAAU,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;KAC5C;IAMD,WACiB,CAAA,SAAoB,EAC3B,QAAmB,EAAA;AAE3B,QAAA,KAAK,EAAE,CAAC;QAHO,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QAC3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QA5E7B,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;QAgBlB,IAAU,CAAA,UAAA,GAAkB,IAAI,CAAC;QAgBjC,IAAU,CAAA,UAAA,GAAkB,IAAI,CAAC;QAGjC,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QAYrB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAEP,IAAI,CAAA,IAAA,GAAG,CAAC,CAAC;AAER,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAc,CAAC;AACxC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAc,CAAC;QAiBnD,IAAM,CAAA,MAAA,GAAkB,IAAI,CAAC;AAE7B,QAAA,IAAA,CAAA,EAAE,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACvD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;AAOlC,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjD,QAAA,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa;AACf,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACvB,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;KAC9D;IAEQ,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KAC/B;IAGD,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,qBAAqB;YACtD,OAAO;AACT,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,aAA4B,CAAC;AACnE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAA4B,CAAC;AAC/E,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,QAAQ,CAAC,WAAW,CAAA,SAAA,CAAW,CAAC,CAAC;QACzF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,YAAY,CAAA,EAAA,CAAI,CAAC,CAAC;KAChF;IAED,QAAQ,CAAC,MAAqB,EAAA,GAAK;AACnC,IAAA,gBAAgB,CAAC,EAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,UAAU,CAAC,CAAgB,EAAA;QACzB,IAAI,KAAK,GAAG,CAAY,CAAC;AACzB,QAAA,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS;YACrC,KAAK,GAAG,IAAI,CAAC;QACf,IAAI,QAAQ,CAAC,KAAK,CAAC;AACjB,YAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC/C,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,UAAU,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC5C;KACF;IAEO,QAAQ,GAAA;QACd,MAAM,UAAU,GAAkB,EAAE,CAAC;AAErC,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI;AACzB,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAEzD,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI;AACzB,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAEzD,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;AACxB,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC;KAClD;8GApJU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,oiBCjB1B,+2DAkES,EAAA,MAAA,EAAA,CAAA,sOAAA,EAAA,0vBAAA,EAAA,g/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDjDI,aAAa,EAAA,UAAA,EAAA,CAAA;kBATzB,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,+2DAAA,EAAA,MAAA,EAAA,CAAA,sOAAA,EAAA,0vBAAA,EAAA,g/BAAA,CAAA,EAAA,CAAA;;0BA8FhB,IAAI;iEApFH,WAAW,EAAA,CAAA;sBADd,KAAK;gBAaF,SAAS,EAAA,CAAA;sBADZ,KAAK;gBAiBF,SAAS,EAAA,CAAA;sBADZ,KAAK;gBAiBN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIF,MAAM,EAAA,CAAA;sBADT,KAAK;gBAYG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEI,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBAEgB,eAAe,EAAA,CAAA;sBAArC,SAAS;uBAAC,UAAU,CAAA;gBACQ,qBAAqB,EAAA,CAAA;sBAAjD,SAAS;uBAAC,gBAAgB,CAAA;gBAqC3B,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe,CAAA;;;AE1GzB,MAAO,eAAgB,SAAQ,aAAa,CAAA;IAIhD,IAAI,UAAU,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;AAGD,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IACD,IAAI,YAAY,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK;YAC9B,OAAO;QACT,MAAM,gBAAgB,GAAY,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AACzF,QAAA,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;KACpH;IAKD,WAC0B,CAAA,SAAoB,EACpC,WAAuB,EAAA;QAE/B,KAAK,CAAC,SAAS,CAAC,CAAC;QAHO,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;QAvBxB,IAAiB,CAAA,iBAAA,GAAG,OAAO,CAAC;QAKrC,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;QAYjB,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QAEtB,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;KAO/B;AAGD,IAAA,aAAa,CAAC,KAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AACxD,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;KACxC;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;KACxC;AAED,IAAA,OAAO,CAAC,IAAU,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;QAExF,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAClC,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBACpD,OAAO;AAET,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;YACzD,OAAO;SACR;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YAChD,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO;SACR;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;KACzC;8GA7DU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,oMCb5B,+uDA6DM,EAAA,MAAA,EAAA,CAAA,sKAAA,EAAA,g/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDhDO,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;+BACE,WAAW,EAAA,QAAA,EAAA,+uDAAA,EAAA,MAAA,EAAA,CAAA,sKAAA,EAAA,g/BAAA,CAAA,EAAA,CAAA;;0BA+BlB,IAAI;kEAtBE,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBA6BN,aAAa,EAAA,CAAA;sBADZ,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEOnC,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBA3B3B,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,aAAa;YACb,eAAe;YACf,aAAa;YACb,gBAAgB;YAChB,aAAa;YACb,eAAe;AACf,YAAA,qBAAqB,aAGrB,YAAY;YACZ,WAAW;YACX,UAAU;AACV,YAAA,YAAY,aAGZ,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,aAAa;YACb,eAAe;YACf,aAAa;YACb,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;AAGN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAf3B,YAAY;YACZ,WAAW;YACX,UAAU;YACV,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAYH,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA7B9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;wBACjB,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,eAAe;wBACf,qBAAqB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,UAAU;wBACV,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,eAAe;AAChB,qBAAA;AACF,iBAAA,CAAA;;;MC5CY,mBAAmB,CAAA;AAE9B,IAAA,WAAA,GAAA,GAAiB;8GAFN,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACJD;;ACAA;;AAEG;;;;"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@joster-dev/chaos-control" />
5
+ export * from './public-api';
package/lib/LICENSE ADDED
@@ -0,0 +1,9 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Jacob Osterhout
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,20 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./components/readonly/readonly.component";
3
+ import * as i2 from "./components/choice/choice.component";
4
+ import * as i3 from "./components/color/color.component";
5
+ import * as i4 from "./components/file/file.component";
6
+ import * as i5 from "./components/number/number.component";
7
+ import * as i6 from "./components/text/text.component";
8
+ import * as i7 from "./directives/control.directive";
9
+ import * as i8 from "./directives/item.directive";
10
+ import * as i9 from "./components/select/select.component";
11
+ import * as i10 from "./directives/border-radius.directive";
12
+ import * as i11 from "@angular/common";
13
+ import * as i12 from "@angular/forms";
14
+ import * as i13 from "@joster-dev/icon";
15
+ import * as i14 from "@angular/router";
16
+ export declare class ChaosControlModule {
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChaosControlModule, never>;
18
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ChaosControlModule, [typeof i1.ReadonlyComponent, typeof i2.ChoiceComponent, typeof i3.ColorComponent, typeof i4.FileComponent, typeof i5.NumberComponent, typeof i6.TextComponent, typeof i7.ControlDirective, typeof i8.ItemDirective, typeof i9.SelectComponent, typeof i10.BorderRadiusDirective], [typeof i11.CommonModule, typeof i12.FormsModule, typeof i13.IconModule, typeof i14.RouterModule], [typeof i1.ReadonlyComponent, typeof i2.ChoiceComponent, typeof i3.ColorComponent, typeof i4.FileComponent, typeof i5.NumberComponent, typeof i6.TextComponent, typeof i9.SelectComponent]>;
19
+ static ɵinj: i0.ɵɵInjectorDeclaration<ChaosControlModule>;
20
+ }
@@ -0,0 +1,6 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class ChaosControlService {
3
+ constructor();
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChaosControlService, never>;
5
+ static ɵprov: i0.ɵɵInjectableDeclaration<ChaosControlService>;
6
+ }
@@ -0,0 +1,15 @@
1
+ import { ControlValueAccessor, NgControl } from '@angular/forms';
2
+ import { ItemDirective } from '../../directives';
3
+ import { Item } from '../../models';
4
+ import * as i0 from "@angular/core";
5
+ export declare class ChoiceComponent extends ItemDirective implements ControlValueAccessor {
6
+ ngControl: NgControl;
7
+ constructor(ngControl: NgControl);
8
+ get isColumn(): boolean | '';
9
+ set isColumn(value: boolean | '');
10
+ _isColumn: boolean;
11
+ id: string;
12
+ onClick(item: Item): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChoiceComponent, [{ self: true; }]>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChoiceComponent, "jo-choice", never, { "isColumn": { "alias": "isColumn"; "required": false; }; }, {}, never, ["*", "[rightAligned]"], false, never>;
15
+ }
@@ -0,0 +1,22 @@
1
+ import { ControlValueAccessor, NgControl } from '@angular/forms';
2
+ import { ControlDirective } from '../../directives';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ColorComponent extends ControlDirective implements ControlValueAccessor {
5
+ ngControl: NgControl;
6
+ private partialHex;
7
+ fullHex: RegExp;
8
+ get model(): string | null;
9
+ set model(value: string | null);
10
+ _model: string | null;
11
+ id: string;
12
+ constructor(ngControl: NgControl);
13
+ onChangeColor(event: Event): void;
14
+ onChange(_model: string | null): void;
15
+ registerOnChange(fn: () => void): void;
16
+ onBeforeinput(e: Event): void;
17
+ writeValue(value: string | null): void;
18
+ private invalidValidator;
19
+ private validate;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<ColorComponent, [{ self: true; }]>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<ColorComponent, "jo-color", never, {}, {}, never, ["*"], false, never>;
22
+ }
@@ -0,0 +1,31 @@
1
+ import { ControlValueAccessor, NgControl } from '@angular/forms';
2
+ import { ControlDirective } from '../../directives';
3
+ import * as i0 from "@angular/core";
4
+ export declare class FileComponent extends ControlDirective implements ControlValueAccessor {
5
+ ngControl: NgControl;
6
+ get acceptedTypes(): string[];
7
+ set acceptedTypes(value: string[]);
8
+ _acceptedTypes: string[];
9
+ get sizeLimitMb(): number;
10
+ set sizeLimitMb(value: number);
11
+ _sizeLimitMb: number;
12
+ get multiple(): boolean;
13
+ set multiple(value: boolean);
14
+ _multiple: boolean;
15
+ showSize: boolean;
16
+ model: '' | null;
17
+ id: string;
18
+ constructor(ngControl: NgControl);
19
+ get fileNames(): string;
20
+ get sizeLimit(): string;
21
+ onFileChange(event: Event): void;
22
+ onChange(_model: FileList | null): void;
23
+ registerOnChange(fn: () => void): void;
24
+ writeValue(value: unknown): void;
25
+ private acceptedTypesValidator;
26
+ private invalidValidator;
27
+ private sizeLimitMbValidator;
28
+ private validate;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<FileComponent, [{ self: true; }]>;
30
+ static ɵcmp: i0.ɵɵComponentDeclaration<FileComponent, "jo-file", never, { "acceptedTypes": { "alias": "acceptedTypes"; "required": false; }; "sizeLimitMb": { "alias": "sizeLimitMb"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "showSize": { "alias": "showSize"; "required": false; }; }, {}, never, ["*"], false, never>;
31
+ }
@@ -0,0 +1,7 @@
1
+ export * from './choice/choice.component';
2
+ export * from './color/color.component';
3
+ export * from './file/file.component';
4
+ export * from './number/number.component';
5
+ export * from './readonly/readonly.component';
6
+ export * from './text/text.component';
7
+ export * from './select/select.component';
@@ -0,0 +1,33 @@
1
+ import { ControlValueAccessor, NgControl } from '@angular/forms';
2
+ import { ControlDirective } from '../../directives';
3
+ import * as i0 from "@angular/core";
4
+ export declare class NumberComponent extends ControlDirective implements ControlValueAccessor {
5
+ ngControl: NgControl;
6
+ get min(): number;
7
+ set min(value: number);
8
+ _min: number;
9
+ get max(): number;
10
+ set max(value: number);
11
+ _max: number;
12
+ get step(): number;
13
+ set step(value: number);
14
+ _step: number;
15
+ mustBeInteger: boolean;
16
+ readonly sizePadding = 5;
17
+ constructor(ngControl: NgControl);
18
+ _model: number | null;
19
+ get model(): number | null;
20
+ set model(value: number | null);
21
+ get isDisabledAdd(): boolean;
22
+ get isDisabledSubtract(): boolean;
23
+ get maxDigitSize(): number;
24
+ onBeforeinput(e: Event): void;
25
+ add(e: HTMLInputElement): void;
26
+ subtract(e: HTMLInputElement): void;
27
+ onChange(_model: number | null): void;
28
+ registerOnChange(fn: () => void): void;
29
+ writeValue(value: number | null): void;
30
+ private validate;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<NumberComponent, [{ self: true; }]>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<NumberComponent, "jo-number", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; }, {}, never, ["*"], false, never>;
33
+ }
@@ -0,0 +1,8 @@
1
+ import { primitive } from '../../models';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ReadonlyComponent {
4
+ model?: primitive;
5
+ constructor();
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<ReadonlyComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<ReadonlyComponent, "jo-readonly", never, { "model": { "alias": "model"; "required": false; }; }, {}, never, ["*"], false, never>;
8
+ }
@@ -0,0 +1,23 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { ControlValueAccessor, NgControl } from '@angular/forms';
3
+ import { ItemDirective } from '../../directives';
4
+ import { Item } from '../../models';
5
+ import * as i0 from "@angular/core";
6
+ export declare class SelectComponent extends ItemDirective implements ControlValueAccessor {
7
+ ngControl: NgControl;
8
+ private hostElement;
9
+ dropdownMaxHeight: string;
10
+ set searchTerm(value: string);
11
+ _searchTerm: string;
12
+ get showDropdown(): boolean;
13
+ set showDropdown(value: boolean);
14
+ _showDropdown: boolean;
15
+ isDropdownCloseToBottom: boolean;
16
+ constructor(ngControl: NgControl, hostElement: ElementRef);
17
+ onGlobalClick(event: MouseEvent): void;
18
+ onClickSearch(): void;
19
+ onFocusSearch(): void;
20
+ onClick(item: Item): void;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent, [{ self: true; }, null]>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "jo-select", never, { "dropdownMaxHeight": { "alias": "dropdownMaxHeight"; "required": false; }; }, {}, never, ["*"], false, never>;
23
+ }
@@ -0,0 +1,41 @@
1
+ import { ElementRef, OnDestroy, Renderer2, EventEmitter } from '@angular/core';
2
+ import { ControlValueAccessor, NgControl } from '@angular/forms';
3
+ import { Subject } from 'rxjs';
4
+ import { ControlDirective } from '../../directives';
5
+ import * as i0 from "@angular/core";
6
+ export declare class TextComponent extends ControlDirective implements OnDestroy, ControlValueAccessor {
7
+ ngControl: NgControl;
8
+ private renderer;
9
+ get placeholder(): string;
10
+ set placeholder(v: string);
11
+ _placeholder: string;
12
+ get minLength(): string | number | null | undefined;
13
+ set minLength(value: string | number | null | undefined);
14
+ _minLength: number | null;
15
+ get maxLength(): string | number | null | undefined;
16
+ set maxLength(value: string | number | null | undefined);
17
+ _maxLength: number | null;
18
+ isSpellCheck: boolean;
19
+ set isGrow(value: boolean | '');
20
+ _isGrow: boolean;
21
+ rows: number;
22
+ onBlur: EventEmitter<FocusEvent>;
23
+ onFocus: EventEmitter<FocusEvent>;
24
+ textareaElement?: ElementRef;
25
+ textareaHiddenElement?: ElementRef;
26
+ get model(): string | null;
27
+ set model(value: string | null);
28
+ _model: string | null;
29
+ id: string;
30
+ resizeSubject: Subject<void>;
31
+ constructor(ngControl: NgControl, renderer: Renderer2);
32
+ ngOnDestroy(): void;
33
+ onWindowResize(): void;
34
+ setTextareaHeight(): void;
35
+ onChange(_model: string | null): void;
36
+ registerOnChange(fn: () => void): void;
37
+ writeValue(v: string | null): void;
38
+ private validate;
39
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextComponent, [{ self: true; }, null]>;
40
+ static ɵcmp: i0.ɵɵComponentDeclaration<TextComponent, "jo-text", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "minLength": { "alias": "minLength"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "isSpellCheck": { "alias": "isSpellCheck"; "required": false; }; "isGrow": { "alias": "isGrow"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; }, { "onBlur": "onBlur"; "onFocus": "onFocus"; }, never, ["*"], false, never>;
41
+ }
@@ -0,0 +1,12 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class BorderRadiusDirective {
3
+ get borderRadiusRight(): boolean | '';
4
+ set borderRadiusRight(value: boolean | '');
5
+ _borderRadiusRight: boolean;
6
+ get borderRadiusLeft(): boolean | '';
7
+ set borderRadiusLeft(value: boolean | '');
8
+ _borderRadiusLeft: boolean;
9
+ constructor();
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<BorderRadiusDirective, never>;
11
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BorderRadiusDirective, "[joBorderRadius]", never, { "borderRadiusRight": { "alias": "borderRadiusRight"; "required": false; }; "borderRadiusLeft": { "alias": "borderRadiusLeft"; "required": false; }; }, {}, never, never, false, never>;
12
+ }
@@ -0,0 +1,18 @@
1
+ import { OnDestroy } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { BorderRadiusDirective } from './border-radius.directive';
4
+ import * as i0 from "@angular/core";
5
+ export declare class ControlDirective extends BorderRadiusDirective implements OnDestroy {
6
+ get required(): boolean | '';
7
+ set required(value: boolean | '');
8
+ _required: boolean;
9
+ isDisabled: boolean;
10
+ validation: Subject<void>;
11
+ constructor();
12
+ ngOnDestroy(): void;
13
+ onTouched(): void;
14
+ registerOnTouched(fn: () => void): void;
15
+ setDisabledState(isDisabled: boolean): void;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<ControlDirective, never>;
17
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ControlDirective, "[joControl]", never, { "required": { "alias": "required"; "required": false; }; }, {}, never, never, false, never>;
18
+ }
@@ -0,0 +1,3 @@
1
+ export * from './border-radius.directive';
2
+ export * from './control.directive';
3
+ export * from './item.directive';
@@ -0,0 +1,35 @@
1
+ import { ControlValueAccessor, NgControl } from '@angular/forms';
2
+ import { Item, primitive } from '../models';
3
+ import { ControlDirective } from './control.directive';
4
+ import * as i0 from "@angular/core";
5
+ export declare class ItemDirective extends ControlDirective implements ControlValueAccessor {
6
+ ngControl: NgControl;
7
+ get items(): {
8
+ key: boolean | number | string;
9
+ value: string;
10
+ [key: string]: unknown;
11
+ }[];
12
+ set items(value: {
13
+ key: boolean | number | string;
14
+ value: string;
15
+ [key: string]: unknown;
16
+ }[]);
17
+ _items: Item[];
18
+ get limit(): number;
19
+ set limit(value: number);
20
+ _limit: number;
21
+ get isMultiple(): boolean | '';
22
+ set isMultiple(value: boolean | '');
23
+ _isMultiple: boolean;
24
+ set model(value: primitive[]);
25
+ _model: primitive[];
26
+ constructor(ngControl: NgControl);
27
+ onChange(_value: primitive[] | primitive | null): void;
28
+ registerOnChange(fn: () => void): void;
29
+ writeValue(value: primitive[] | primitive | null): void;
30
+ private invalidValidator;
31
+ private limitValidator;
32
+ private validate;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<ItemDirective, [{ self: true; }]>;
34
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ItemDirective, "[joItem]", never, { "items": { "alias": "items"; "required": false; }; "limit": { "alias": "limit"; "required": false; }; "isMultiple": { "alias": "isMultiple"; "required": false; }; }, {}, never, never, false, never>;
35
+ }
@@ -0,0 +1,6 @@
1
+ export * from './is-item.function';
2
+ export * from './is-items.function';
3
+ export * from './is-number.function';
4
+ export * from './is-primitive.function';
5
+ export * from './item.interface';
6
+ export * from './primitive.type';
@@ -0,0 +1,2 @@
1
+ import { Item } from './item.interface';
2
+ export declare function isItem(item: Item): item is Item;
@@ -0,0 +1,2 @@
1
+ import { Item } from './item.interface';
2
+ export declare function isItems(value: Item[]): value is Item[];
@@ -0,0 +1 @@
1
+ export declare function isNumber(value: unknown): value is number;
@@ -0,0 +1,2 @@
1
+ import { primitive } from './primitive.type';
2
+ export declare function isPrimitive(value: unknown): value is primitive;
@@ -0,0 +1,6 @@
1
+ import { primitive } from './primitive.type';
2
+ export interface Item {
3
+ key: primitive;
4
+ value: string;
5
+ [x: string]: unknown;
6
+ }
@@ -0,0 +1 @@
1
+ export type primitive = boolean | number | string;
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@joster-dev/chaos-control",
3
+ "version": "0.1.0",
4
+ "publishConfig": {
5
+ "registry": "https://registry.npmjs.org/",
6
+ "access": "public"
7
+ },
8
+ "description": "styled controls for your form element",
9
+ "keywords": [
10
+ "form control",
11
+ "text input",
12
+ "text control",
13
+ "toggle input",
14
+ "toggle control",
15
+ "choice",
16
+ "multiple choice",
17
+ "multichoice",
18
+ "color input",
19
+ "color picker",
20
+ "file input",
21
+ "file picker"
22
+ ],
23
+ "repository": "github:joster-dev/chaos-control",
24
+ "homepage": "https://joster-dev.github.io/chaos-control/",
25
+ "bugs": "https://github.com/joster-dev/chaos-control/issues",
26
+ "author": {
27
+ "name": "Jacob Osterhout",
28
+ "url": "https://joster-dev.github.io/"
29
+ },
30
+ "funding": {
31
+ "type": "github sponsors",
32
+ "url": "https://github.com/sponsors/joster-dev"
33
+ },
34
+ "license": "MIT",
35
+ "peerDependencies": {
36
+ "@angular/common": "^18.0.0",
37
+ "@angular/core": "^18.0.0",
38
+ "@joster-dev/icon": "^0.3.1"
39
+ },
40
+ "dependencies": {
41
+ "tslib": "^2.3.0"
42
+ },
43
+ "sideEffects": false,
44
+ "module": "fesm2022/joster-dev-chaos-control.mjs",
45
+ "typings": "index.d.ts",
46
+ "exports": {
47
+ "./package.json": {
48
+ "default": "./package.json"
49
+ },
50
+ ".": {
51
+ "types": "./index.d.ts",
52
+ "esm2022": "./esm2022/joster-dev-chaos-control.mjs",
53
+ "esm": "./esm2022/joster-dev-chaos-control.mjs",
54
+ "default": "./fesm2022/joster-dev-chaos-control.mjs"
55
+ }
56
+ }
57
+ }
@@ -0,0 +1,4 @@
1
+ export * from './lib/chaos-control.module';
2
+ export * from './lib/components';
3
+ export * from './lib/models';
4
+ export * from './lib/chaos-control.service';