@joster-dev/chaos-control 0.1.1 → 0.2.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.
- package/esm2022/lib/chaos-control.module.mjs +19 -9
- package/esm2022/lib/components/busy/busy.component.mjs +11 -0
- package/esm2022/lib/components/choice/choice.component.mjs +5 -4
- package/esm2022/lib/components/color/color.component.mjs +5 -4
- package/esm2022/lib/components/file/file.component.mjs +8 -4
- package/esm2022/lib/components/icon/icon.component.mjs +117 -0
- package/esm2022/lib/components/icon-stack/icon-stack.component.mjs +29 -0
- package/esm2022/lib/components/index.mjs +5 -2
- package/esm2022/lib/components/number/number.component.mjs +5 -4
- package/esm2022/lib/components/readonly/readonly.component.mjs +3 -3
- package/esm2022/lib/components/select/select.component.mjs +55 -25
- package/esm2022/lib/components/text/text.component.mjs +3 -3
- package/esm2022/lib/directives/busy.directive.mjs +71 -0
- package/esm2022/lib/directives/index.mjs +3 -1
- package/esm2022/lib/directives/item.directive.mjs +3 -1
- package/esm2022/lib/directives/size.directive.mjs +38 -0
- package/esm2022/lib/models/icon-types.const.mjs +33 -0
- package/esm2022/lib/models/icon.type.mjs +2 -0
- package/esm2022/lib/models/index.mjs +3 -1
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/joster-dev-chaos-control.mjs +410 -84
- package/fesm2022/joster-dev-chaos-control.mjs.map +1 -1
- package/lib/chaos-control.module.d.ts +8 -5
- package/lib/components/busy/busy.component.d.ts +5 -0
- package/lib/components/file/file.component.d.ts +2 -1
- package/lib/components/icon/icon.component.d.ts +31 -0
- package/lib/components/icon-stack/icon-stack.component.d.ts +9 -0
- package/lib/components/index.d.ts +4 -1
- package/lib/components/select/select.component.d.ts +12 -7
- package/lib/directives/busy.directive.d.ts +20 -0
- package/lib/directives/index.d.ts +2 -0
- package/lib/directives/item.directive.d.ts +1 -0
- package/lib/directives/size.directive.d.ts +12 -0
- package/lib/models/icon-types.const.d.ts +1 -0
- package/lib/models/icon.type.d.ts +2 -0
- package/lib/models/index.d.ts +2 -0
- package/package.json +2 -2
- package/public-api.d.ts +1 -0
- package/src/lib/styles.scss +7 -62
- package/src/lib/atomic.scss +0 -87
- package/src/lib/variables.scss +0 -3
|
@@ -1 +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;;;;"}
|
|
1
|
+
{"version":3,"file":"joster-dev-chaos-control.mjs","sources":["../../../projects/chaos-control/src/lib/components/busy/busy.component.ts","../../../projects/chaos-control/src/lib/components/busy/busy.component.html","../../../projects/chaos-control/src/lib/directives/border-radius.directive.ts","../../../projects/chaos-control/src/lib/directives/busy.directive.ts","../../../projects/chaos-control/src/lib/directives/control.directive.ts","../../../projects/chaos-control/src/lib/models/icon-types.const.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/directives/size.directive.ts","../../../projects/chaos-control/src/lib/components/icon/icon.component.ts","../../../projects/chaos-control/src/lib/components/icon/icon.component.html","../../../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/icon-stack/icon-stack.component.ts","../../../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/select/select.component.ts","../../../projects/chaos-control/src/lib/components/select/select.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/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 { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'jo-busy',\r\n templateUrl: './busy.component.html',\r\n styleUrls: [\r\n './busy.component.scss',\r\n '../../styles.scss',\r\n ]\r\n})\r\nexport class BusyComponent {\r\n\r\n}\r\n","<!-- <div class=\"spinner spinner-1\"></div> -->\r\n<div class=\"spinner big\"></div>\r\n<div class=\"spinner small\"></div>\r\n","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 { ComponentFactoryResolver, Directive, ElementRef, Input, Renderer2, SimpleChanges, ViewContainerRef } from '@angular/core';\r\nimport { filter, from, interval, map, Subject, Subscription, take, takeUntil } from 'rxjs';\r\nimport { BusyComponent } from '../components';\r\n\r\n@Directive({\r\n selector: '[joBusy]'\r\n})\r\nexport class BusyDirective {\r\n @Input('joBusy') asyncEvents?: Subscription | Subscription[] | Promise<any> | Promise<any>[];\r\n\r\n host: HTMLElement = this.element.nativeElement;\r\n insertedNode?: Node;\r\n endSubscription$ = new Subject<void>();\r\n busySubscription?: Subscription;\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private viewContainerRef: ViewContainerRef,\r\n private renderer: Renderer2,\r\n ) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['asyncEvents'].currentValue) {\r\n const valueArray = Array.isArray(changes['asyncEvents'].currentValue)\r\n ? changes['asyncEvents'].currentValue\r\n : [changes['asyncEvents'].currentValue];\r\n\r\n const subscriptionValueArray = valueArray\r\n .filter(item => Boolean(item))\r\n .map(item => {\r\n if (item instanceof Promise) {\r\n return from(item).subscribe();\r\n }\r\n return item;\r\n });\r\n\r\n if (subscriptionValueArray.length > 0) {\r\n if (this.busySubscription && !this.busySubscription.closed) {\r\n this.endSubscription$.next();\r\n }\r\n this.addSpinner(subscriptionValueArray);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.endSubscription$.complete();\r\n }\r\n\r\n private addSpinner(asyncEvents: Subscription[]): void {\r\n const componentRef = this.viewContainerRef.createComponent(BusyComponent);\r\n this.insertedNode = this.host.insertBefore(componentRef.location.nativeElement, this.host.firstChild);\r\n this.renderer.addClass(this.host, 'position-relative');\r\n this.renderer.addClass(this.host, 'overflow-hidden');\r\n this.busySubscription = interval()\r\n .pipe(\r\n map(() => asyncEvents.every(item => item.closed)),\r\n filter(everySubscriptionClosed => Boolean(everySubscriptionClosed)),\r\n take(1),\r\n takeUntil(this.endSubscription$),\r\n )\r\n .subscribe(({\r\n complete: () => {\r\n this.removeSpinner();\r\n },\r\n error: () => {\r\n this.removeSpinner();\r\n },\r\n }));\r\n }\r\n\r\n private removeSpinner(): void {\r\n if (this.insertedNode)\r\n this.host.removeChild(this.insertedNode);\r\n this.renderer.removeClass(this.host, 'position-relative');\r\n this.renderer.removeClass(this.host, 'overflow-hidden');\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 const iconTypes = [\r\n 'circle',\r\n 'dot',\r\n 'ring',\r\n 'square',\r\n 'squircle',\r\n 'check',\r\n 'times',\r\n 'plus',\r\n 'minus',\r\n 'row',\r\n 'column',\r\n 'bomb',\r\n 'flag',\r\n 'gear',\r\n 'star',\r\n 'user',\r\n 'refresh',\r\n 'ascend',\r\n 'descend',\r\n 'search',\r\n 'crown',\r\n 'ogre',\r\n 'folder',\r\n 'chevron',\r\n 'ankh',\r\n 'sun',\r\n 'moon',\r\n 'clear',\r\n 'amphora',\r\n 'speech'\r\n] as const;\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.filteredItems = value;\r\n this.validation.next();\r\n }\r\n _items: Item[] = [];\r\n filteredItems: 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 { Directive, Input, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[size]'\r\n})\r\nexport class SizeDirective implements OnDestroy {\r\n @Input()\r\n get size() {\r\n return this._size;\r\n }\r\n set size(value: any) {\r\n if (value === null || value === undefined)\r\n value = '100%';\r\n if (typeof value === 'number' && value >= 0 && value <= 100)\r\n value = `${value}%`;\r\n if (typeof value !== 'string')\r\n throw new Error('size input must be: string');\r\n // todo: write regex\r\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/height\r\n this._size = value;\r\n this.sizeChangesSubject.next();\r\n }\r\n _size = '100%';\r\n sizeChangesSubject = new Subject<void>();\r\n\r\n ngOnDestroy(): void {\r\n this.sizeChangesSubject.complete();\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { SizeDirective } from '../../directives/size.directive';\r\nimport { icon, iconTypes } from '../../models';\r\n\r\n@Component({\r\n selector: 'icon[type]',\r\n templateUrl: './icon.component.html',\r\n styleUrls: ['./icon.component.scss'],\r\n})\r\nexport class IconComponent extends SizeDirective {\r\n @Input()\r\n get type() {\r\n return this._type;\r\n }\r\n set type(value: icon) {\r\n if (typeof value === 'string')\r\n value = value.toLowerCase().trim() as icon;\r\n if (!iconTypes.includes(value))\r\n throw new Error(`expected [type] to be: ${iconTypes.join(' | ')}`);\r\n this._type = value;\r\n }\r\n _type!: icon;\r\n\r\n @Input()\r\n get fill() {\r\n return this._fill;\r\n }\r\n set fill(value: string | null | (string | null)[]) {\r\n if (typeof value === 'string')\r\n value = [value];\r\n if (value === null || value === undefined)\r\n value = [null];\r\n if (!Array.isArray(value) || !value.every(item => item === null || typeof item === 'string'))\r\n throw new Error('expected [fill] to be: string | null | (string | null)[]');\r\n this._fill = value;\r\n }\r\n _fill: (string | null)[] = [null];\r\n\r\n @Input()\r\n get fillRotate() {\r\n return this._fillRotate;\r\n }\r\n set fillRotate(value: string | number) {\r\n if (typeof value === 'string')\r\n value = Number(value);\r\n if (typeof value !== 'number')\r\n throw new Error('expected [fillRotate] to be: string | number');\r\n this._fillRotate = value;\r\n }\r\n _fillRotate = 0;\r\n\r\n @Input()\r\n get fillOpacity() {\r\n return this._fillOpacity;\r\n }\r\n set fillOpacity(value: number) {\r\n if (typeof value !== 'number' || value < 0)\r\n throw new Error('expected [fillOpacity] to be: number >= 0');\r\n this._fillOpacity = value;\r\n }\r\n _fillOpacity = 1;\r\n\r\n @Input()\r\n get stroke() {\r\n return this._stroke;\r\n }\r\n set stroke(value: string | null | (string | null)[]) {\r\n if (typeof value === 'string')\r\n value = [value];\r\n if (value === null || value === undefined)\r\n value = [null];\r\n if (!Array.isArray(value) || !value.every(item => item === null || typeof item === 'string'))\r\n throw new Error('expected [stroke] to be: string | null | (string | null)[]');\r\n this._stroke = value;\r\n }\r\n _stroke: (string | null)[] = ['current'];\r\n\r\n @Input()\r\n get strokeRotate() {\r\n return this._strokeRotate;\r\n }\r\n set strokeRotate(value: string | number) {\r\n if (typeof value === 'string')\r\n value = Number(value);\r\n if (typeof value !== 'number')\r\n throw new Error('expected [strokeRotate] to be: string | number');\r\n this._strokeRotate = value;\r\n }\r\n _strokeRotate = 0;\r\n\r\n @Input()\r\n spin: 'x' | 'y' | 'z' | null = null;\r\n\r\n id = `${Math.random().toString(36).substring(2, 13)}`;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n linearGradientStopColor(item: string | null) {\r\n if (item === 'current')\r\n return 'currentColor';\r\n\r\n return item === null\r\n ? ''\r\n : `#${item}`;\r\n }\r\n\r\n linearGradientStopOpacity(item: string | null) {\r\n return item === null\r\n ? 0\r\n : 1;\r\n }\r\n\r\n linearGradientStopOffset(index: number, items: unknown[]) {\r\n if (items.length === 1)\r\n return '0%';\r\n return `${100 - (((items.length - 1 - index) / (items.length - 1)) * 100)}%`;\r\n }\r\n}\r\n","<svg\r\n attr.height=\"{{size}}\"\r\n attr.width=\"{{size}}\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 100 100\"\r\n [class.spin-x]=\"spin === 'x'\"\r\n [class.spin-y]=\"spin === 'y'\"\r\n [class.spin-z]=\"spin === 'z'\"\r\n>\r\n <linearGradient\r\n id=\"fill-gradient-{{id}}\"\r\n attr.gradientTransform=\"rotate({{_fillRotate}}) translate({{(_fillRotate / 180) % 0.5}})\"\r\n >\r\n <stop\r\n *ngFor=\"let item of _fill; let idx = index\"\r\n [attr.offset]=\"linearGradientStopOffset(idx, _fill)\"\r\n [attr.stop-color]=\"linearGradientStopColor(item)\"\r\n [attr.stop-opacity]=\"linearGradientStopOpacity(item)\"\r\n />\r\n </linearGradient>\r\n <linearGradient\r\n id=\"stroke-gradient-{{id}}\"\r\n attr.gradientTransform=\"rotate({{_strokeRotate}}) translate({{(_strokeRotate / 180) % 0.5}})\"\r\n >\r\n <stop\r\n *ngFor=\"let item of _stroke; let idx = index\"\r\n [attr.offset]=\"linearGradientStopOffset(idx, _stroke)\"\r\n [attr.stop-color]=\"linearGradientStopColor(item)\"\r\n />\r\n </linearGradient>\r\n <circle\r\n *ngIf=\"type === 'circle'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n cx=\"50\"\r\n cy=\"50\"\r\n r=\"47.5\"\r\n />\r\n <circle\r\n *ngIf=\"type === 'dot'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n cx=\"50\"\r\n cy=\"50\"\r\n r=\"30\"\r\n />\r\n <path\r\n *ngIf=\"type === 'ring'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n d=\"M50,2.5C23.767,2.5,2.5,23.767,2.5,50S23.767,97.5,50,97.5S97.5,76.233,97.5,50S76.233,2.5,50,2.5z M50,80c-16.568,0-30-13.432-30-30c0-16.568,13.432-30,30-30s30,13.432,30,30C80,66.568,66.568,80,50,80z\"\r\n />\r\n <rect\r\n *ngIf=\"type === 'square'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n x=\"2.5\"\r\n y=\"2.5\"\r\n width=\"95\"\r\n height=\"95\"\r\n />\r\n <rect\r\n *ngIf=\"type === 'squircle'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n x=\"2.5\"\r\n y=\"2.5\"\r\n width=\"95\"\r\n height=\"95\"\r\n rx=\"15\"\r\n />\r\n <rect\r\n *ngIf=\"type === 'minus'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n x=\"2.5\"\r\n y=\"37.5\"\r\n width=\"95\"\r\n height=\"25\"\r\n />\r\n <polygon\r\n *ngIf=\"type === 'check'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n points=\"96.465,27.488 82.322,13.347,37.257,58.367 17.675,38.785 3.535,52.928 37.259,86.652\"\r\n />\r\n <polygon\r\n *ngIf=\"type === 'times'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n points=\"64.143,50 96.465,17.678 82.323,3.535,50,35.857 17.678,3.535 3.535,17.676 35.858,50 3.535,82.323 17.678,96.465 50.001,64.142 82.323,96.465 96.465,82.322\"\r\n />\r\n <polygon\r\n *ngIf=\"type === 'plus'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n points=\"97.5,37.5 62.5,37.5 62.5,2.5 37.5,2.5 37.5,37.5 2.5,37.5 2.5,62.5 37.5,62.5 37.5,97.5 62.5,97.5 62.5,62.5 97.5,62.5\"\r\n />\r\n <polygon\r\n *ngIf=\"type === 'row'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n points=\"96,50 66.5,20 66.5,37.5 33.5,37.5 33.5,20 4,50 33.5,80 33.5,62.5 66.5,62.5 66.5,80\"\r\n />\r\n <polygon\r\n *ngIf=\"type === 'column'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n points=\"62.5,33.535 80,33.535 50,3.535 20,33.535 37.5,33.535 37.5,66.465 20,66.465 50,96.465 80,66.465 62.5,66.465\"\r\n />\r\n <polygon\r\n *ngIf=\"type === 'flag'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n points=\"93,33.86 22.5,7.368 22.5,2.5 2.5,2.5 2.5,97.5 22.5,97.5 22.5,59.915\"\r\n />\r\n <path\r\n *ngIf=\"type === 'gear'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n d=\"M96.35,39.625C95.178,34.369,93.14,29.44,90.385,25H80l-5-5V9.618C70.554,6.859,65.617,4.82,60.353,3.65L56.61,7.761L50,15.022l-6.61-7.261L39.647,3.65C34.382,4.82,29.447,6.859,25,9.618V20l-5,5H9.615C6.86,29.44,4.822,34.369,3.65,39.625l4.165,3.764L15.132,50l-7.316,6.61L3.65,60.375C4.822,65.631,6.86,70.56,9.615,75H20l5,5v10.382c4.441,2.755,9.371,4.793,14.628,5.964l3.761-4.162L50,84.867l6.61,7.316l3.761,4.162c5.258-1.171,10.188-3.209,14.629-5.964V80l5-5h10.385c2.755-4.44,4.793-9.369,5.965-14.625l-4.165-3.765L84.869,50l7.315-6.611L96.35,39.625z M50,72.5c-12.427,0-22.5-10.073-22.5-22.5c0-12.426,10.073-22.5,22.5-22.5S72.5,37.574,72.5,50C72.5,62.427,62.427,72.5,50,72.5z\"\r\n />\r\n <polygon\r\n *ngIf=\"type === 'star'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n points=\"50,9.91 62.022,38.363 92.798,41.005\r\n69.453,61.23 76.45,91.316 50,75.364 23.55,91.315 30.547,61.23 7.203,41.005 37.978,38.363 \"\r\n />\r\n <!-- start user -->\r\n <circle\r\n *ngIf=\"type === 'user'\"\r\n fill=\"#FFFFFF\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n cx=\"50\"\r\n cy=\"27.5\"\r\n r=\"25\"\r\n />\r\n <path\r\n *ngIf=\"type === 'user'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n d=\"M86.6,52.5H71.646 C67.324,59.971,59.252,65,50,65s-17.324-5.029-21.646-12.5H14.4c-6.297,0-11.9,5.373-11.9,12v33h95v-33 C97.5,57.873,92.896,52.5,86.6,52.5z\"\r\n />\r\n <!-- end user -->\r\n <path\r\n *ngIf=\"type === 'bomb'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n d=\"M93.634,34.651c4.687-4.686,5.182-11.789,1.107-15.863L81.213,5.261c-4.074-4.076-11.178-3.58-15.863,1.105l-1.252,1.252C59.294,5.929,54.132,5,48.75,5C23.207,5,2.5,25.707,2.5,51.25S23.207,97.5,48.75,97.5S95,76.793,95,51.25c0-5.381-0.929-10.543-2.618-15.347L93.634,34.651z M70.4,64.681l-12.009-1.009l-1.091,12.001l-8.551-8.492l-8.55,8.492l-1.091-12.001L27.1,64.681l6.878-9.896L24.13,47.84l11.63-3.159l-3.08-11.65l10.939,5.056l5.13-10.905l5.131,10.905L64.82,33.03l-3.08,11.65l11.63,3.159l-9.849,6.945L70.4,64.681z\"\r\n />\r\n <!-- start refresh -->\r\n <path\r\n *ngIf=\"type === 'refresh'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n d=\"M50,80c-9.186,0-17.391-4.141-22.893-10.643L37.5,58.965h-35v35l12.204-12.204C23.395,91.42,35.982,97.5,50,97.5c26.232,0,47.5-21.268,47.5-47.5H80C80,66.568,66.568,80,50,80z\"\r\n />\r\n <path\r\n *ngIf=\"type === 'refresh'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n d=\"M85.296,18.24C76.605,8.58,64.018,2.5,50,2.5C23.768,2.5,2.5,23.768,2.5,50H20c0-16.568,13.432-30,30-30c9.186,0,17.393,4.141,22.893,10.643L62.5,41.036h35v-35L85.296,18.24z\"\r\n />\r\n <!-- end refresh -->\r\n <polygon\r\n *ngIf=\"type === 'ascend'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n points=\"50,3.841 20,38.842 80,38.842\"\r\n />\r\n <polygon\r\n *ngIf=\"type === 'descend'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n points=\"50,96.158 20,61.158 80,61.158\"\r\n />\r\n <path\r\n *ngIf=\"type === 'search'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n d=\"M96.465,87.627L70.56,61.721C74.924,55.591,77.5,48.099,77.5,40C77.5,19.29,60.711,2.5,40,2.5C19.29,2.5,2.5,19.29,2.5,40c0,20.711,16.79,37.5,37.5,37.5c8.098,0,15.591-2.575,21.72-6.94l25.906,25.905L96.465,87.627z M40,65c-13.807,0-25-11.192-25-25c0-13.807,11.193-25,25-25c13.808,0,25,11.193,25,25C65,53.808,53.808,65,40,65z\"\r\n />\r\n <path\r\n *ngIf=\"type === 'crown'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n d=\"M95,22.5c0-4.143-3.357-7.5-7.5-7.5\r\n\tS80,18.357,80,22.5c0,2.145,0.904,4.073,2.347,5.44L67.673,66.273l-13.37-50.136C56.234,14.781,57.5,12.54,57.5,10\r\n\tc0-4.143-3.357-7.5-7.5-7.5s-7.5,3.357-7.5,7.5c0,2.54,1.266,4.78,3.197,6.137l-13.37,50.136L17.654,27.939\r\n\tC19.096,26.573,20,24.644,20,22.5c0-4.143-3.357-7.5-7.5-7.5S5,18.357,5,22.5c0,3.673,2.642,6.724,6.128,7.369L14.857,72.5H12.5v15\r\n\tH10v10h80v-10h-2.5v-15h-2.356l3.729-42.631C92.358,29.223,95,26.173,95,22.5z\"\r\n />\r\n <path\r\n *ngIf=\"type === 'ogre'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n d=\"M82.5,5.721c0,0,5,5,5,15s-10,10-10,10h-3.519\r\n\tC72.018,28.728,69.393,27.5,66.5,27.5h-33c-2.894,0-5.518,1.228-7.481,3.221H22.5c0,0-10,0-10-10s5-15,5-15s-15,5-15,20\r\n\tc0,13.263,7.821,22.61,20,24.6V60.5c0,6.583,4.861,11.923,10.881,11.993C33.869,79.732,35,87.834,35,90c0,4.143,3.357,7.5,7.5,7.5\r\n\th15c4.143,0,7.5-3.357,7.5-7.5c0-2.166,1.131-10.268,1.62-17.507c6.019-0.07,10.88-5.41,10.88-11.993V50.32\r\n\tc12.179-1.989,20-11.337,20-24.6C97.5,10.721,82.5,5.721,82.5,5.721z M37.5,65c-4.143,0-7.5-3.357-7.5-7.5s3.357-7.5,7.5-7.5\r\n\ts7.5,3.357,7.5,7.5S41.643,65,37.5,65z M62.5,65c-4.143,0-7.5-3.357-7.5-7.5s3.357-7.5,7.5-7.5s7.5,3.357,7.5,7.5S66.643,65,62.5,65\r\n\tz\"\r\n />\r\n <path\r\n *ngIf=\"type === 'folder'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n d=\"M42.503,10.5c-9.836,0-28.103,0-28.103,0\r\n\tc-6.296,0-11.9,5.373-11.9,12v56c0,6.627,5.604,12,11.9,12h72.2c6.296,0,10.9-5.373,10.9-12c0,0,0-37.406,0-44\r\n\ts-4.467-11.989-10.9-12s-33.807,0-33.807,0S52.339,10.5,42.503,10.5z\"\r\n />\r\n <path\r\n *ngIf=\"type === 'chevron'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n d=\"M 81.371204,80.734189 96.459378,65.734039 50.000001,19.268573 3.5406224,65.734039 18.628797,80.734189 50.000001,49.268874 Z\"\r\n />\r\n <path\r\n *ngIf=\"type === 'ankh'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n d=\"M85,60l-5-15H60.938\r\n\tC65.605,36.781,70,27.677,70,22.5c0-11.046-8.955-20-20-20c-11.046,0-20,8.954-20,20c0,5.177,4.394,14.281,9.062,22.5H19.999L15,60\r\n\tl28.965-4.138L40,97.5h20l-3.967-41.638L85,60z M49.999,12.551c5.524,0,10.001,4.478,10.001,10c0,5.523-10.001,20-10.001,20\r\n\ts-10-14.477-10-20C40,17.028,44.477,12.551,49.999,12.551z\"\r\n />\r\n <polygon\r\n *ngIf=\"type === 'sun'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n points=\"50.001,5.864 57.541,21.864\r\n\t72.068,11.778 70.6,29.403 88.224,27.933 78.14,42.461 94.137,50 78.14,57.541 88.224,72.07 70.6,70.6 72.068,88.225 57.541,78.141\r\n\t50.001,94.137 42.461,78.141 27.933,88.225 29.403,70.6 11.777,72.07 21.863,57.541 5.864,50 21.863,42.461 11.777,27.933\r\n\t29.403,29.403 27.933,11.778 42.461,21.864 \"\r\n />\r\n <path\r\n *ngIf=\"type === 'moon'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n d=\"M90.029,62.626\r\n\tc-14.54,14.54-38.115,14.539-52.654,0c-14.54-14.54-14.54-38.114,0-52.654c2.739-2.74,5.802-4.963,9.061-6.67\r\n\tC35.463,4.049,24.701,8.604,16.313,16.991c-18.417,18.418-18.417,48.278,0,66.696c18.417,18.416,48.278,18.416,66.694,0\r\n\tc8.389-8.389,12.942-19.149,13.69-30.123C94.989,56.825,92.768,59.886,90.029,62.626z\"\r\n />\r\n <rect\r\n *ngIf=\"type === 'clear'\"\r\n x=\"2.5\"\r\n y=\"2.5\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n width=\"75\"\r\n height=\"75\"\r\n />\r\n <rect\r\n *ngIf=\"type === 'clear'\"\r\n x=\"22.5\"\r\n y=\"22.5\"\r\n fill=\"none\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n stroke-dasharray=\"13.25 5.5\"\r\n width=\"75\"\r\n height=\"75\"\r\n />\r\n <path\r\n *ngIf=\"type === 'amphora'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n d=\"M92.5,28c0-11.046-7.835-20-17.5-20\r\n\tc-3.586,0-6.917,1.237-9.691,3.352c0.025-0.749,0.084-1.409,0.191-1.852c0.471-1.918,3.5-7,3.5-7H31c0,0,3.03,5.082,3.5,7\r\n\tc0.108,0.442,0.166,1.103,0.192,1.852C31.917,9.237,28.586,8,25,8C15.335,8,7.5,16.954,7.5,28c0,7.019,3.17,13.182,7.956,16.751\r\n\tC15.165,46.438,15,48.187,15,50c0,13.744,18.5,40.5,18.5,40.5l-2.5,7h38l-2.5-7c0,0,18.5-26.756,18.5-40.5\r\n\tc0-1.813-0.164-3.563-0.456-5.249C89.33,41.182,92.5,35.019,92.5,28z M15,28c0-6.903,4.478-12.5,10-12.5\r\n\tc2.789,0,5.309,1.43,7.122,3.732c-3.582,2.808-10.347,8.93-14.215,17.577C16.111,34.549,15,31.437,15,28z M82.093,36.809\r\n\tc-3.866-8.647-10.634-14.769-14.215-17.577C69.691,16.93,72.211,15.5,75,15.5c5.521,0,10,5.597,10,12.5\r\n\tC85,31.437,83.889,34.549,82.093,36.809z\"\r\n />\r\n <path\r\n *ngIf=\"type === 'speech'\"\r\n attr.fill=\"url(#fill-gradient-{{id}})\"\r\n [attr.fill-opacity]=\"fillOpacity\"\r\n attr.stroke=\"url(#stroke-gradient-{{id}})\"\r\n stroke-width=\"5\"\r\n stroke-miterlimit=\"10\"\r\n d=\"M50,2.5C26.702,2.5,2.5,22.339,2.5,45\r\n\tc0,8.368,3.307,16.347,8.641,23.084L3.979,94.813l23.196-13.393c7.078,3.83,15,6.076,22.825,6.076c23.299,0,47.5-19.838,47.5-42.5\r\n\tC97.5,22.336,73.299,2.5,50,2.5z M75,60.001H25c-2.762,0-5-2.238-5-5s2.238-5,5-5h50c2.762,0,5,2.239,5,5\r\n\tC80,57.763,77.762,60.001,75,60.001z M75,40H25c-2.762,0-5-2.239-5-5s2.238-5,5-5h50c2.762,0,5,2.239,5,5C80,37.763,77.762,40,75,40\r\n\tz\"\r\n />\r\n</svg>\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 ]\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 gap-2 text-start\"\r\n role=\"menuitemcheckbox\"\r\n [class.br-end]=\"borderRadiusRight\"\r\n [class.br-start]=\"borderRadiusLeft\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"onClick(item)\"\r\n (blur)=\"onTouched()\"\r\n >\r\n <div\r\n class=\"jo-button {{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=\"1rem\"\r\n [type]=\"isMultiple ? 'check' : 'dot'\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n </div>\r\n <span>{{item.value}}</span>\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 '../../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.br-start]=\"borderRadiusLeft\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"colorInput.click()\"\r\n >\r\n <icon\r\n size=\"1rem\"\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.br-end]=\"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 onFileCancel(): void {\r\n this.onChange(null);\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","<div class=\"d-flex justify-content-between\">\r\n <label [class.required]=\"required\">\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 class=\"d-flex align-items-stretch\">\r\n <button\r\n class=\"d-flex align-items-center gap-2\"\r\n [class.br-start]=\"borderRadiusLeft\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"fileInput.click()\"\r\n >\r\n <icon\r\n type=\"folder\"\r\n size=\"1rem\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n ></icon>\r\n Browse...\r\n </button>\r\n <button\r\n class=\"d-flex align-items-center\"\r\n [class.br-end]=\"borderRadiusRight\"\r\n [class.active]=\"ngControl.value !== null\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"fileInput.click()\"\r\n >\r\n <ng-container *ngIf=\"!ngControl.value\">\r\n No {{multiple ? 'files' : 'file'}} selected\r\n </ng-container>\r\n <ng-container *ngIf=\"ngControl.value\">\r\n {{fileNames}}\r\n </ng-container>\r\n </button>\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 (cancel)=\"onFileCancel()\"\r\n/>\r\n","import { Component, HostBinding } from '@angular/core';\r\nimport { SizeDirective } from '../../directives';\r\n\r\n@Component({\r\n selector: 'icon-stack',\r\n template: `<ng-content></ng-content>`,\r\n styleUrls: ['./icon-stack.component.scss']\r\n})\r\nexport class IconStackComponent extends SizeDirective {\r\n @HostBinding('style.width') width = this.size;\r\n @HostBinding('style.height') height = this.size;\r\n\r\n constructor() {\r\n super();\r\n this.sizeChangesSubject.subscribe({\r\n next: () => {\r\n this.width = this.size;\r\n this.height = this.size;\r\n }\r\n });\r\n }\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 '../../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.br-start]=\"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=\"1rem\"\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.br-end]=\"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=\"1rem\"\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 p-2\">\r\n {{model}}\r\n</div>","import { Component, ElementRef, HostBinding, HostListener, Input, Self, ViewChild } 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 @ViewChild('dropGroup') dropGroup!: ElementRef<HTMLDivElement>;\r\n @ViewChild('dropup') dropup!: ElementRef<HTMLDialogElement>;\r\n @ViewChild('dropdown') dropdown!: ElementRef<HTMLDialogElement>;\r\n\r\n @Input()\r\n @HostBinding('style.--dropHeightPx')\r\n dropHeightPx = 200;\r\n\r\n get searchTerm(): string {\r\n return this._searchTerm;\r\n }\r\n set searchTerm(value: string) {\r\n this._searchTerm = value;\r\n this.filteredItems = value\r\n ? this._items.filter(item => item.value.toLowerCase().includes(value.toLowerCase()))\r\n : this._items;\r\n }\r\n _searchTerm = '';\r\n\r\n isDropdownCloseToBottom = false;\r\n id = `${Math.random().toString(36).substr(2, 9)}`;\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 get activeItemValues(): string {\r\n return this._items\r\n .filter(item => this._model.includes(item.key))\r\n .map(item => item.value)\r\n .join(', ');\r\n }\r\n\r\n get isSelectedAll(): boolean {\r\n return this._items.every(item => this._model.includes(item.key));\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.closeDropdown();\r\n }\r\n\r\n onClickGroup() {\r\n this.closeDropdown();\r\n if (this.dropGroup.nativeElement.getBoundingClientRect().bottom + this.dropHeightPx > window.innerHeight) {\r\n this.dropup.nativeElement.show();\r\n } else {\r\n this.dropdown.nativeElement.show();\r\n }\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 onClickSelectAll() {\r\n this.model = this.isSelectedAll\r\n ? []\r\n : this._items.map(item => item.key);\r\n }\r\n\r\n closeDropdown() {\r\n this.searchTerm = '';\r\n this.dropdown.nativeElement.close();\r\n this.dropup.nativeElement.close();\r\n }\r\n}\r\n","<div class=\"d-flex justify-content-between\">\r\n <label\r\n id=\"select_{{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 class=\"position-relative\">\r\n <dialog #dropup>\r\n <ng-template [ngTemplateOutlet]=\"dropContent\"></ng-template>\r\n </dialog>\r\n</div>\r\n\r\n<div\r\n #dropGroup\r\n class=\"d-flex align-items-stretch\"\r\n role=\"group\"\r\n attr.aria-labelledby=\"select_{{id}}\"\r\n>\r\n <button\r\n class=\"flex-1 br-start text-start\"\r\n type=\"button\"\r\n [class.active]=\"_model.length > 0\"\r\n [class.invalid]=\"!ngControl.control?.invalid\"\r\n (click)=\"onClickGroup()\"\r\n (blur)=\"onTouched()\"\r\n >\r\n {{activeItemValues}}\r\n </button>\r\n <button\r\n class=\"d-flex br-end d-flex align-items-center justify-content-center\"\r\n [class.invalid]=\"!ngControl.control?.invalid\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"onClickGroup()\"\r\n (blur)=\"onTouched()\"\r\n >\r\n <icon\r\n size=\"1rem\"\r\n type=\"chevron\"\r\n [fill]=\"[null, 'current']\"\r\n fillRotate=\"90\"\r\n [stroke]=\"['current']\"\r\n [class.up]=\"dropup.open\"\r\n [class.down]=\"dropdown.open\"\r\n ></icon>\r\n </button>\r\n</div>\r\n\r\n<dialog #dropdown>\r\n <ng-template [ngTemplateOutlet]=\"dropContent\"></ng-template>\r\n</dialog>\r\n\r\n<ng-template #dropContent>\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"d-flex gap-2 align-items-stretch\">\r\n <input\r\n [(ngModel)]=\"searchTerm\"\r\n class=\"flex-1 br-start br-end\"\r\n />\r\n <button\r\n *ngIf=\"_isMultiple\"\r\n type=\"button\"\r\n class=\"br-start br-end\"\r\n (click)=\"onClickSelectAll()\"\r\n >\r\n {{isSelectedAll ? 'Deselect' : 'Select'}} All\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column\">\r\n <button\r\n *ngFor=\"let item of filteredItems\"\r\n class=\"d-flex flex-1 align-items-center text-start gap-2\"\r\n [disabled]=\"isDisabled\"\r\n [class.active]=\"_model.includes(item.key)\"\r\n (click)=\"onClick(item)\"\r\n >\r\n <div\r\n class=\"jo-button {{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=\"1rem\"\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 </div>\r\n</ng-template>","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 '../../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.br-end]=\"borderRadiusRight\"\r\n [class.br-start]=\"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.br-end]=\"borderRadiusRight\"\r\n [class.br-start]=\"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 { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport {\r\n ChoiceComponent,\r\n ColorComponent,\r\n FileComponent,\r\n IconComponent,\r\n IconStackComponent,\r\n NumberComponent,\r\n ReadonlyComponent,\r\n SelectComponent,\r\n TextComponent,\r\n} from './components';\r\nimport {\r\n BorderRadiusDirective,\r\n BusyDirective,\r\n ControlDirective,\r\n ItemDirective,\r\n SizeDirective,\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 BusyDirective,\r\n IconComponent,\r\n IconStackComponent,\r\n SizeDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\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 BusyDirective,\r\n IconComponent,\r\n IconStackComponent,\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/directives';\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":["i1","i3.IconComponent","i4.SizeDirective","i2.IconComponent","i3.SizeDirective"],"mappings":"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"}
|
|
@@ -9,12 +9,15 @@ import * as i7 from "./directives/control.directive";
|
|
|
9
9
|
import * as i8 from "./directives/item.directive";
|
|
10
10
|
import * as i9 from "./components/select/select.component";
|
|
11
11
|
import * as i10 from "./directives/border-radius.directive";
|
|
12
|
-
import * as i11 from "
|
|
13
|
-
import * as i12 from "
|
|
14
|
-
import * as i13 from "
|
|
15
|
-
import * as i14 from "
|
|
12
|
+
import * as i11 from "./directives/busy.directive";
|
|
13
|
+
import * as i12 from "./components/icon/icon.component";
|
|
14
|
+
import * as i13 from "./components/icon-stack/icon-stack.component";
|
|
15
|
+
import * as i14 from "./directives/size.directive";
|
|
16
|
+
import * as i15 from "@angular/common";
|
|
17
|
+
import * as i16 from "@angular/forms";
|
|
18
|
+
import * as i17 from "@angular/router";
|
|
16
19
|
export declare class ChaosControlModule {
|
|
17
20
|
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
|
|
21
|
+
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.BusyDirective, typeof i12.IconComponent, typeof i13.IconStackComponent, typeof i14.SizeDirective], [typeof i15.CommonModule, typeof i16.FormsModule, typeof i17.RouterModule], [typeof i1.ReadonlyComponent, typeof i2.ChoiceComponent, typeof i3.ColorComponent, typeof i4.FileComponent, typeof i5.NumberComponent, typeof i6.TextComponent, typeof i9.SelectComponent, typeof i11.BusyDirective, typeof i12.IconComponent, typeof i13.IconStackComponent]>;
|
|
19
22
|
static ɵinj: i0.ɵɵInjectorDeclaration<ChaosControlModule>;
|
|
20
23
|
}
|
|
@@ -19,6 +19,7 @@ export declare class FileComponent extends ControlDirective implements ControlVa
|
|
|
19
19
|
get fileNames(): string;
|
|
20
20
|
get sizeLimit(): string;
|
|
21
21
|
onFileChange(event: Event): void;
|
|
22
|
+
onFileCancel(): void;
|
|
22
23
|
onChange(_model: FileList | null): void;
|
|
23
24
|
registerOnChange(fn: () => void): void;
|
|
24
25
|
writeValue(value: unknown): void;
|
|
@@ -27,5 +28,5 @@ export declare class FileComponent extends ControlDirective implements ControlVa
|
|
|
27
28
|
private sizeLimitMbValidator;
|
|
28
29
|
private validate;
|
|
29
30
|
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
|
+
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, ["*", "[rightAligned]"], false, never>;
|
|
31
32
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SizeDirective } from '../../directives/size.directive';
|
|
2
|
+
import { icon } from '../../models';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class IconComponent extends SizeDirective {
|
|
5
|
+
get type(): icon;
|
|
6
|
+
set type(value: icon);
|
|
7
|
+
_type: icon;
|
|
8
|
+
get fill(): string | null | (string | null)[];
|
|
9
|
+
set fill(value: string | null | (string | null)[]);
|
|
10
|
+
_fill: (string | null)[];
|
|
11
|
+
get fillRotate(): string | number;
|
|
12
|
+
set fillRotate(value: string | number);
|
|
13
|
+
_fillRotate: number;
|
|
14
|
+
get fillOpacity(): number;
|
|
15
|
+
set fillOpacity(value: number);
|
|
16
|
+
_fillOpacity: number;
|
|
17
|
+
get stroke(): string | null | (string | null)[];
|
|
18
|
+
set stroke(value: string | null | (string | null)[]);
|
|
19
|
+
_stroke: (string | null)[];
|
|
20
|
+
get strokeRotate(): string | number;
|
|
21
|
+
set strokeRotate(value: string | number);
|
|
22
|
+
_strokeRotate: number;
|
|
23
|
+
spin: 'x' | 'y' | 'z' | null;
|
|
24
|
+
id: string;
|
|
25
|
+
constructor();
|
|
26
|
+
linearGradientStopColor(item: string | null): string;
|
|
27
|
+
linearGradientStopOpacity(item: string | null): 0 | 1;
|
|
28
|
+
linearGradientStopOffset(index: number, items: unknown[]): string;
|
|
29
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IconComponent, never>;
|
|
30
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "icon[type]", never, { "type": { "alias": "type"; "required": false; }; "fill": { "alias": "fill"; "required": false; }; "fillRotate": { "alias": "fillRotate"; "required": false; }; "fillOpacity": { "alias": "fillOpacity"; "required": false; }; "stroke": { "alias": "stroke"; "required": false; }; "strokeRotate": { "alias": "strokeRotate"; "required": false; }; "spin": { "alias": "spin"; "required": false; }; }, {}, never, never, false, never>;
|
|
31
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SizeDirective } from '../../directives';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class IconStackComponent extends SizeDirective {
|
|
4
|
+
width: any;
|
|
5
|
+
height: any;
|
|
6
|
+
constructor();
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IconStackComponent, never>;
|
|
8
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<IconStackComponent, "icon-stack", never, {}, {}, never, ["*"], false, never>;
|
|
9
|
+
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
export * from './busy/busy.component';
|
|
1
2
|
export * from './choice/choice.component';
|
|
2
3
|
export * from './color/color.component';
|
|
3
4
|
export * from './file/file.component';
|
|
5
|
+
export * from './icon-stack/icon-stack.component';
|
|
6
|
+
export * from './icon/icon.component';
|
|
4
7
|
export * from './number/number.component';
|
|
5
8
|
export * from './readonly/readonly.component';
|
|
6
|
-
export * from './text/text.component';
|
|
7
9
|
export * from './select/select.component';
|
|
10
|
+
export * from './text/text.component';
|