ngx-tethys 19.1.0-next.0 → 19.1.0-next.1
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/CHANGELOG.md +21 -0
- package/README.md +0 -1
- package/action/action.component.d.ts +7 -8
- package/affix/affix.component.d.ts +3 -4
- package/button/button-group.component.d.ts +5 -12
- package/button/button-icon.component.d.ts +14 -28
- package/button/button.component.d.ts +17 -27
- package/date-picker/styles/calendar.scss +1 -1
- package/date-picker/styles/week-picker.scss +1 -0
- package/dropdown/dropdown-active.directive.d.ts +4 -5
- package/dropdown/dropdown-menu-item.directive.d.ts +7 -15
- package/dropdown/dropdown-menu.component.d.ts +6 -13
- package/dropdown/dropdown-submenu.component.d.ts +2 -4
- package/dropdown/dropdown.directive.d.ts +14 -25
- package/fesm2022/ngx-tethys-action.mjs +15 -16
- package/fesm2022/ngx-tethys-action.mjs.map +1 -1
- package/fesm2022/ngx-tethys-affix.mjs +14 -18
- package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
- package/fesm2022/ngx-tethys-button.mjs +225 -322
- package/fesm2022/ngx-tethys-button.mjs.map +1 -1
- package/fesm2022/ngx-tethys-carousel.mjs +1 -0
- package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2022/ngx-tethys-collapse.mjs +2 -2
- package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +6 -6
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dropdown.mjs +155 -203
- package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-tethys-flexible-text.mjs +67 -86
- package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
- package/fesm2022/ngx-tethys-grid.mjs +10 -15
- package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
- package/fesm2022/ngx-tethys-icon.mjs +44 -59
- package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +40 -36
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2022/ngx-tethys-progress.mjs +7 -11
- package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +8 -19
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +42 -54
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-rate.mjs +115 -157
- package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
- package/fesm2022/ngx-tethys-resizable.mjs +111 -157
- package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2022/ngx-tethys-segment.mjs +84 -103
- package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +2 -1
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slide.mjs +37 -56
- package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-space.mjs +2 -8
- package/fesm2022/ngx-tethys-space.mjs.map +1 -1
- package/fesm2022/ngx-tethys-strength.mjs +52 -66
- package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
- package/fesm2022/ngx-tethys-transfer.mjs +98 -119
- package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +2 -4
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree.mjs +281 -401
- package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys-vote.mjs +53 -99
- package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/flexible-text/flexible-text.component.d.ts +9 -15
- package/grid/flex.d.ts +1 -3
- package/grid/thy-row.directive.d.ts +1 -4
- package/icon/icon.component.d.ts +10 -18
- package/image/image.directive.d.ts +10 -13
- package/image/image.token.d.ts +5 -5
- package/input-number/input-number.component.d.ts +1 -1
- package/package.json +1 -1
- package/progress/progress-circle.component.d.ts +3 -5
- package/progress/progress.component.d.ts +2 -4
- package/property/properties.component.d.ts +0 -2
- package/property/property-item.component.d.ts +3 -10
- package/radio/group/radio-group.component.d.ts +5 -9
- package/rate/rate-item.component.d.ts +8 -11
- package/rate/rate.component.d.ts +18 -29
- package/resizable/resizable.directive.d.ts +18 -31
- package/resizable/resize-handle.component.d.ts +6 -7
- package/resizable/resize-handles.component.d.ts +5 -9
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/segment/segment-item.component.d.ts +9 -15
- package/segment/segment.component.d.ts +11 -15
- package/segment/segment.token.d.ts +4 -3
- package/slide/slide-body/slide-body-section.component.d.ts +2 -6
- package/slide/slide-header/slide-header.component.d.ts +6 -9
- package/space/space.component.d.ts +5 -11
- package/strength/strength.component.d.ts +8 -13
- package/transfer/transfer-list.component.d.ts +15 -15
- package/transfer/transfer.component.d.ts +20 -23
- package/tree/tree-abstract.d.ts +5 -5
- package/tree/tree-node.component.d.ts +24 -37
- package/tree/tree.class.d.ts +4 -4
- package/tree/tree.component.d.ts +47 -75
- package/tree/tree.service.d.ts +3 -4
- package/tree-select/tree-select.component.d.ts +2 -2
- package/vote/vote.component.d.ts +13 -33
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-radio.mjs","sources":["../../../src/radio/radio.token.ts","../../../src/radio/radio.component.ts","../../../src/radio/radio.component.html","../../../src/radio/button/radio-button.component.ts","../../../src/radio/button/radio-button.component.html","../../../src/radio/group/radio-group.component.ts","../../../src/radio/group/radio-group.component.html","../../../src/radio/module.ts","../../../src/radio/ngx-tethys-radio.ts"],"sourcesContent":["import { InjectionToken, InputSignal } from '@angular/core';\n\nexport interface IThyRadioComponent {\n thyValue: InputSignal<string>;\n thyChecked: boolean;\n setDisabledState?(isDisabled: boolean): void;\n}\n\nexport interface IThyRadioGroupComponent {\n addRadio(radio: IThyRadioComponent): void;\n updateValue(value: string, emit: boolean): void;\n setGroup(): void;\n}\n\nexport const THY_RADIO_GROUP_COMPONENT = new InjectionToken<IThyRadioGroupComponent>('THY_RADIO_GROUP_COMPONENT');\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, input, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyFormCheckBaseComponent } from 'ngx-tethys/shared';\nimport { IThyRadioComponent, THY_RADIO_GROUP_COMPONENT } from './radio.token';\n\n/**\n * 单选框组件\n * @name thy-radio,[thyRadio]\n * @order 10\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[thy-radio],[thyRadio]',\n templateUrl: './radio.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyRadio),\n multi: true\n }\n ],\n host: {\n '[attr.tabindex]': `-1`\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass]\n})\nexport class ThyRadio extends ThyFormCheckBaseComponent implements IThyRadioComponent, OnInit {\n thyRadioGroupComponent = inject(THY_RADIO_GROUP_COMPONENT, { optional: true })!;\n\n name: string;\n\n /**\n * 当和 thy-radio-group 配合使用时的值,选中后的 NgModel 值\n */\n readonly thyValue = input<string>();\n\n set thyChecked(value: boolean) {\n this.writeValue(coerceBooleanProperty(value));\n this.changeDetectorRef.markForCheck();\n }\n\n ngOnInit() {\n if (this.thyRadioGroupComponent) {\n this.thyRadioGroupComponent.addRadio(this);\n }\n }\n\n change() {\n if (this.thyRadioGroupComponent) {\n this.thyRadioGroupComponent.updateValue(this.thyValue(), true);\n } else {\n this.updateValue(!this._innerValue);\n }\n }\n}\n","<input\n class=\"form-check-input\"\n [checked]=\"_isChecked\"\n (change)=\"change()\"\n type=\"radio\"\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"_disabled\"\n [attr.name]=\"name\"\n [ngClass]=\"{ 'form-check-no-label-text': !_labelText }\" />\n@if (_labelText) {\n <span class=\"form-check-label\">{{ _labelText }}</span>\n}\n<ng-content></ng-content>\n","import { Component, OnInit, HostBinding, HostListener, input } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ThyRadio } from '../radio.component';\n\n/**\n * @name [thy-radio-button],[thyRadioButton]\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[thy-radio-button],[thyRadioButton]',\n templateUrl: './radio-button.component.html',\n host: {\n '[attr.tabindex]': `tabIndex`\n }\n})\nexport class ThyRadioButton extends ThyRadio implements OnInit {\n @HostBinding('class.btn') isButton = true;\n @HostBinding('class.active') isActive = false;\n @HostBinding('class.disabled') get isDisabled() {\n return this._disabled;\n }\n\n name: string;\n\n readonly thyValue = input<string>();\n\n set thyChecked(value: boolean) {\n this.isActive = !!value;\n this.writeValue(coerceBooleanProperty(value));\n }\n\n ngOnInit() {\n this._isFormCheck = false;\n if (this.thyRadioGroupComponent) {\n this.thyRadioGroupComponent.addRadio(this);\n this.thyRadioGroupComponent.setGroup();\n }\n }\n\n @HostListener('click', ['$event'])\n click($event: MouseEvent) {\n if (!this._disabled) {\n this.change();\n }\n }\n}\n","<ng-container> {{ _labelText }}</ng-container>\n<ng-content></ng-content>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n inject,\n input,\n OnChanges,\n OnInit,\n SimpleChanges\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { ThyRadioButton } from '../button/radio-button.component';\nimport { ThyRadio } from '../radio.component';\nimport { IThyRadioGroupComponent, THY_RADIO_GROUP_COMPONENT } from '../radio.token';\n\nconst buttonGroupSizeMap = {\n sm: ['btn-group-sm'],\n lg: ['btn-group-lg']\n};\n\nconst radioGroupLayoutMap = {\n flex: ['radio-group-layout-flex']\n};\n\n/**\n * @name thy-radio-group\n * @order 20\n */\n@Component({\n selector: 'thy-radio-group',\n templateUrl: './radio-group.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyRadioGroup),\n multi: true\n },\n {\n provide: THY_RADIO_GROUP_COMPONENT,\n useExisting: ThyRadioGroup\n }\n ],\n host: {\n '[attr.tabindex]': `-1`\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThyRadioGroup implements IThyRadioGroupComponent, ControlValueAccessor, OnInit, OnChanges, AfterContentInit {\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n @HostBinding('class.thy-radio-group') thyRadioGroup = true;\n\n @HostBinding('class.btn-group') isButtonGroup = false;\n\n @HostBinding('class.btn-group-outline-default')\n isButtonGroupOutline = false;\n\n /**\n * 大小\n * @type sm | md | lg\n * @default md\n */\n readonly thySize = input<string>('md');\n\n /**\n * 布局\n * @type flex\n */\n readonly thyLayout = input<string>();\n\n _innerValue: string | number;\n\n radios: Array<ThyRadio | ThyRadioButton> = [];\n\n private hostRenderer = useHostRenderer();\n\n /**\n * 是否禁用单选组合框\n * @default false\n */\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n onChange: (_: string) => void = () => null;\n onTouched: () => void = () => null;\n\n addRadio(radio: ThyRadio | ThyRadioButton): void {\n this.radios.push(radio);\n radio.thyChecked = radio.thyValue() === this._innerValue;\n }\n\n updateValue(value: string, emit: boolean): void {\n this._innerValue = value;\n this.radios.forEach(radio => {\n radio.thyChecked = radio.thyValue() === this._innerValue;\n });\n if (emit) {\n this.onChange(value);\n }\n this.onTouched();\n this.changeDetectorRef.detectChanges();\n }\n\n writeValue(value: any): void {\n this.updateValue(value, false);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.radios.forEach(radio => {\n radio.setDisabledState(isDisabled);\n });\n }\n\n setGroup(): void {\n if (!this.isButtonGroup && !this.isButtonGroupOutline) {\n this.isButtonGroup = true;\n this.isButtonGroupOutline = true;\n }\n }\n\n ngOnInit() {\n this._setClasses();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { thyDisabled } = changes;\n if (thyDisabled) {\n this.setDisabledState(this.thyDisabled());\n }\n }\n\n ngAfterContentInit(): void {\n this.setDisabledState(this.thyDisabled());\n }\n\n private _setClasses() {\n const classNames: string[] = [];\n const size = this.thySize();\n if (size && buttonGroupSizeMap[size]) {\n classNames.push(buttonGroupSizeMap[size]);\n }\n const layout = this.thyLayout();\n if (layout && radioGroupLayoutMap[layout]) {\n classNames.push(radioGroupLayoutMap[layout]);\n }\n this.hostRenderer.updateClass(classNames);\n }\n}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyRadio } from './radio.component';\nimport { ThyRadioButton } from './button/radio-button.component';\nimport { ThyRadioGroup } from './group/radio-group.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ThyRadio, ThyRadioGroup, ThyRadioButton],\n exports: [ThyRadio, ThyRadioGroup, ThyRadioButton]\n})\nexport class ThyRadioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["coerceBooleanProperty"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-radio.mjs","sources":["../../../src/radio/radio.token.ts","../../../src/radio/radio.component.ts","../../../src/radio/radio.component.html","../../../src/radio/button/radio-button.component.ts","../../../src/radio/button/radio-button.component.html","../../../src/radio/group/radio-group.component.ts","../../../src/radio/group/radio-group.component.html","../../../src/radio/module.ts","../../../src/radio/ngx-tethys-radio.ts"],"sourcesContent":["import { InjectionToken, InputSignal } from '@angular/core';\n\nexport interface IThyRadioComponent {\n thyValue: InputSignal<string>;\n thyChecked: boolean;\n setDisabledState?(isDisabled: boolean): void;\n}\n\nexport interface IThyRadioGroupComponent {\n addRadio(radio: IThyRadioComponent): void;\n updateValue(value: string, emit: boolean): void;\n setGroup(): void;\n}\n\nexport const THY_RADIO_GROUP_COMPONENT = new InjectionToken<IThyRadioGroupComponent>('THY_RADIO_GROUP_COMPONENT');\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, input, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyFormCheckBaseComponent } from 'ngx-tethys/shared';\nimport { IThyRadioComponent, THY_RADIO_GROUP_COMPONENT } from './radio.token';\n\n/**\n * 单选框组件\n * @name thy-radio,[thyRadio]\n * @order 10\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[thy-radio],[thyRadio]',\n templateUrl: './radio.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyRadio),\n multi: true\n }\n ],\n host: {\n '[attr.tabindex]': `-1`\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass]\n})\nexport class ThyRadio extends ThyFormCheckBaseComponent implements IThyRadioComponent, OnInit {\n thyRadioGroupComponent = inject(THY_RADIO_GROUP_COMPONENT, { optional: true })!;\n\n name: string;\n\n /**\n * 当和 thy-radio-group 配合使用时的值,选中后的 NgModel 值\n */\n readonly thyValue = input<string>();\n\n set thyChecked(value: boolean) {\n this.writeValue(coerceBooleanProperty(value));\n this.changeDetectorRef.markForCheck();\n }\n\n ngOnInit() {\n if (this.thyRadioGroupComponent) {\n this.thyRadioGroupComponent.addRadio(this);\n }\n }\n\n change() {\n if (this.thyRadioGroupComponent) {\n this.thyRadioGroupComponent.updateValue(this.thyValue(), true);\n } else {\n this.updateValue(!this._innerValue);\n }\n }\n}\n","<input\n class=\"form-check-input\"\n [checked]=\"_isChecked\"\n (change)=\"change()\"\n type=\"radio\"\n [attr.tabindex]=\"tabIndex\"\n [disabled]=\"_disabled\"\n [attr.name]=\"name\"\n [ngClass]=\"{ 'form-check-no-label-text': !_labelText }\" />\n@if (_labelText) {\n <span class=\"form-check-label\">{{ _labelText }}</span>\n}\n<ng-content></ng-content>\n","import { Component, OnInit, HostBinding, HostListener, input } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ThyRadio } from '../radio.component';\n\n/**\n * @name [thy-radio-button],[thyRadioButton]\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[thy-radio-button],[thyRadioButton]',\n templateUrl: './radio-button.component.html',\n host: {\n '[attr.tabindex]': `tabIndex`\n }\n})\nexport class ThyRadioButton extends ThyRadio implements OnInit {\n @HostBinding('class.btn') isButton = true;\n @HostBinding('class.active') isActive = false;\n @HostBinding('class.disabled') get isDisabled() {\n return this._disabled;\n }\n\n name: string;\n\n readonly thyValue = input<string>();\n\n set thyChecked(value: boolean) {\n this.isActive = !!value;\n this.writeValue(coerceBooleanProperty(value));\n }\n\n ngOnInit() {\n this._isFormCheck = false;\n if (this.thyRadioGroupComponent) {\n this.thyRadioGroupComponent.addRadio(this);\n this.thyRadioGroupComponent.setGroup();\n }\n }\n\n @HostListener('click', ['$event'])\n click($event: MouseEvent) {\n if (!this._disabled) {\n this.change();\n }\n }\n}\n","<ng-container> {{ _labelText }}</ng-container>\n<ng-content></ng-content>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, effect, forwardRef, inject, input, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { ThyRadioButton } from '../button/radio-button.component';\nimport { ThyRadio } from '../radio.component';\nimport { IThyRadioGroupComponent, THY_RADIO_GROUP_COMPONENT } from '../radio.token';\n\nconst buttonGroupSizeMap = {\n sm: ['btn-group-sm'],\n lg: ['btn-group-lg']\n};\n\nconst radioGroupLayoutMap = {\n flex: ['radio-group-layout-flex']\n};\n\n/**\n * @name thy-radio-group\n * @order 20\n */\n@Component({\n selector: 'thy-radio-group',\n templateUrl: './radio-group.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyRadioGroup),\n multi: true\n },\n {\n provide: THY_RADIO_GROUP_COMPONENT,\n useExisting: ThyRadioGroup\n }\n ],\n host: {\n class: 'thy-radio-group',\n '[class.btn-group]': 'isButtonGroup()',\n '[class.btn-group-outline-default]': 'isButtonGroupOutline()',\n '[attr.tabindex]': `-1`\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThyRadioGroup implements IThyRadioGroupComponent, ControlValueAccessor {\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n isButtonGroup = signal(false);\n\n isButtonGroupOutline = signal(false);\n\n /**\n * 大小\n * @type sm | md | lg\n * @default md\n */\n readonly thySize = input<string>('md');\n\n /**\n * 布局\n * @type flex\n */\n readonly thyLayout = input<string>();\n\n _innerValue: string | number;\n\n radios: Array<ThyRadio | ThyRadioButton> = [];\n\n private hostRenderer = useHostRenderer();\n\n /**\n * 是否禁用单选组合框\n * @default false\n */\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n onChange: (_: string) => void = () => null;\n\n onTouched: () => void = () => null;\n\n addRadio(radio: ThyRadio | ThyRadioButton): void {\n this.radios.push(radio);\n radio.thyChecked = radio.thyValue() === this._innerValue;\n }\n\n updateValue(value: string, emit: boolean): void {\n this._innerValue = value;\n this.radios.forEach(radio => {\n radio.thyChecked = radio.thyValue() === this._innerValue;\n });\n if (emit) {\n this.onChange(value);\n }\n this.onTouched();\n this.changeDetectorRef.detectChanges();\n }\n\n writeValue(value: any): void {\n this.updateValue(value, false);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.radios.forEach(radio => {\n radio.setDisabledState(isDisabled);\n });\n }\n\n setGroup(): void {\n if (!this.isButtonGroup() && !this.isButtonGroupOutline()) {\n this.isButtonGroup.set(true);\n this.isButtonGroupOutline.set(true);\n }\n }\n\n constructor() {\n effect(() => {\n this.setClasses();\n });\n\n effect(() => {\n const disabled = this.thyDisabled();\n this.setDisabledState(disabled);\n });\n }\n\n private setClasses() {\n const classNames: string[] = [];\n const size = this.thySize();\n if (size && buttonGroupSizeMap[size]) {\n classNames.push(buttonGroupSizeMap[size]);\n }\n const layout = this.thyLayout();\n if (layout && radioGroupLayoutMap[layout]) {\n classNames.push(radioGroupLayoutMap[layout]);\n }\n this.hostRenderer.updateClass(classNames);\n }\n}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyRadio } from './radio.component';\nimport { ThyRadioButton } from './button/radio-button.component';\nimport { ThyRadioGroup } from './group/radio-group.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ThyRadio, ThyRadioGroup, ThyRadioButton],\n exports: [ThyRadio, ThyRadioGroup, ThyRadioButton]\n})\nexport class ThyRadioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["coerceBooleanProperty"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NgTemplateOutlet, NgClass, CommonModule } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { input, output, Component, inject, ChangeDetectorRef, model, numberAttribute, computed, TemplateRef, effect, forwardRef, Input, ChangeDetectionStrategy, NgModule } from '@angular/core';
|
|
4
4
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
5
5
|
import { ThyIcon, ThyIconModule } from 'ngx-tethys/icon';
|
|
6
6
|
import { ThyStopPropagationDirective, ThySharedModule } from 'ngx-tethys/shared';
|
|
@@ -13,24 +13,25 @@ import { TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';
|
|
|
13
13
|
*/
|
|
14
14
|
class ThyRateItem {
|
|
15
15
|
constructor() {
|
|
16
|
-
this.allowHalf = false;
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
16
|
+
this.allowHalf = input(false, { transform: coerceBooleanProperty });
|
|
17
|
+
this.iconValue = input();
|
|
18
|
+
this.iconTemplate = input();
|
|
19
|
+
this.itemHover = output();
|
|
20
|
+
this.itemClick = output();
|
|
19
21
|
}
|
|
20
|
-
ngOnInit() { }
|
|
21
22
|
hoverRateItem(isHalf) {
|
|
22
|
-
this.itemHover.
|
|
23
|
+
this.itemHover.emit(isHalf && this.allowHalf());
|
|
23
24
|
}
|
|
24
25
|
clickRateItem(isHalf) {
|
|
25
|
-
this.itemClick.
|
|
26
|
+
this.itemClick.emit(isHalf && this.allowHalf());
|
|
26
27
|
}
|
|
27
28
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyRateItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
29
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: ThyRateItem, isStandalone: true, selector: "thy-rate-item, [thy-rate-item]", inputs: { allowHalf: { classPropertyName: "allowHalf", publicName: "allowHalf", isSignal: true, isRequired: false, transformFunction: null }, iconValue: { classPropertyName: "iconValue", publicName: "iconValue", isSignal: true, isRequired: false, transformFunction: null }, iconTemplate: { classPropertyName: "iconTemplate", publicName: "iconTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemHover: "itemHover", itemClick: "itemClick" }, ngImport: i0, template: `
|
|
29
30
|
<div class="thy-rate-item-left" thyStopPropagation (mouseover)="hoverRateItem(true)" (click)="clickRateItem(true)">
|
|
30
|
-
<ng-template [ngTemplateOutlet]="iconTemplate || (iconValue && character) || defaultTemplate"></ng-template>
|
|
31
|
+
<ng-template [ngTemplateOutlet]="iconTemplate() || (iconValue() && character) || defaultTemplate"></ng-template>
|
|
31
32
|
</div>
|
|
32
33
|
<div class="thy-rate-item-all" thyStopPropagation (mouseover)="hoverRateItem(false)" (click)="clickRateItem(false)">
|
|
33
|
-
<ng-template [ngTemplateOutlet]="iconTemplate || (iconValue && character) || defaultTemplate"></ng-template>
|
|
34
|
+
<ng-template [ngTemplateOutlet]="iconTemplate() || (iconValue() && character) || defaultTemplate"></ng-template>
|
|
34
35
|
</div>
|
|
35
36
|
|
|
36
37
|
<ng-template #defaultTemplate>
|
|
@@ -38,7 +39,7 @@ class ThyRateItem {
|
|
|
38
39
|
</ng-template>
|
|
39
40
|
|
|
40
41
|
<ng-template #character>
|
|
41
|
-
<thy-icon [thyIconName]="iconValue"></thy-icon>
|
|
42
|
+
<thy-icon [thyIconName]="iconValue()"></thy-icon>
|
|
42
43
|
</ng-template>
|
|
43
44
|
`, isInline: true, dependencies: [{ kind: "directive", type: ThyStopPropagationDirective, selector: "[thyStopPropagation]", inputs: ["thyStopPropagation"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }] }); }
|
|
44
45
|
}
|
|
@@ -48,10 +49,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
48
49
|
selector: 'thy-rate-item, [thy-rate-item]',
|
|
49
50
|
template: `
|
|
50
51
|
<div class="thy-rate-item-left" thyStopPropagation (mouseover)="hoverRateItem(true)" (click)="clickRateItem(true)">
|
|
51
|
-
<ng-template [ngTemplateOutlet]="iconTemplate || (iconValue && character) || defaultTemplate"></ng-template>
|
|
52
|
+
<ng-template [ngTemplateOutlet]="iconTemplate() || (iconValue() && character) || defaultTemplate"></ng-template>
|
|
52
53
|
</div>
|
|
53
54
|
<div class="thy-rate-item-all" thyStopPropagation (mouseover)="hoverRateItem(false)" (click)="clickRateItem(false)">
|
|
54
|
-
<ng-template [ngTemplateOutlet]="iconTemplate || (iconValue && character) || defaultTemplate"></ng-template>
|
|
55
|
+
<ng-template [ngTemplateOutlet]="iconTemplate() || (iconValue() && character) || defaultTemplate"></ng-template>
|
|
55
56
|
</div>
|
|
56
57
|
|
|
57
58
|
<ng-template #defaultTemplate>
|
|
@@ -59,23 +60,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
59
60
|
</ng-template>
|
|
60
61
|
|
|
61
62
|
<ng-template #character>
|
|
62
|
-
<thy-icon [thyIconName]="iconValue"></thy-icon>
|
|
63
|
+
<thy-icon [thyIconName]="iconValue()"></thy-icon>
|
|
63
64
|
</ng-template>
|
|
64
65
|
`,
|
|
65
66
|
imports: [ThyStopPropagationDirective, NgTemplateOutlet, ThyIcon]
|
|
66
67
|
}]
|
|
67
|
-
}], ctorParameters: () => []
|
|
68
|
-
type: Input,
|
|
69
|
-
args: [{ transform: coerceBooleanProperty }]
|
|
70
|
-
}], iconValue: [{
|
|
71
|
-
type: Input
|
|
72
|
-
}], iconTemplate: [{
|
|
73
|
-
type: Input
|
|
74
|
-
}], itemHover: [{
|
|
75
|
-
type: Output
|
|
76
|
-
}], itemClick: [{
|
|
77
|
-
type: Output
|
|
78
|
-
}] } });
|
|
68
|
+
}], ctorParameters: () => [] });
|
|
79
69
|
|
|
80
70
|
const noop = () => { };
|
|
81
71
|
/**
|
|
@@ -94,170 +84,157 @@ class ThyRate extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
94
84
|
get thyDisabled() {
|
|
95
85
|
return this.disabled;
|
|
96
86
|
}
|
|
97
|
-
/**
|
|
98
|
-
* 自定义模板,目前支持传单个模板或图标名称、数组(模板 | 图标名称)
|
|
99
|
-
* @type string | TemplateRef<any> | string[] | TemplateRef<any>[]
|
|
100
|
-
*/
|
|
101
|
-
set thyIconTemplate(value) {
|
|
102
|
-
this.icons = value;
|
|
103
|
-
if (!this.icons) {
|
|
104
|
-
this.iconValue = null;
|
|
105
|
-
this.iconTemplate = null;
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
this.setIconTemplate();
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
87
|
constructor() {
|
|
112
88
|
super();
|
|
113
89
|
this.cdr = inject(ChangeDetectorRef);
|
|
114
|
-
this.
|
|
115
|
-
this.currentValue = 0;
|
|
116
|
-
this.hasHalf = false;
|
|
117
|
-
this.rateArray = [];
|
|
118
|
-
this.rateStyleArray = [];
|
|
119
|
-
this.icons = null;
|
|
120
|
-
this.iconValue = null;
|
|
121
|
-
this.iconTemplate = null;
|
|
90
|
+
this.thyValue = model(0);
|
|
91
|
+
this.currentValue = model(0);
|
|
92
|
+
this.hasHalf = model(false);
|
|
122
93
|
this.onTouchedCallback = noop;
|
|
123
94
|
this.onChangeCallback = noop;
|
|
124
95
|
/**
|
|
125
96
|
* 自定义评分的总数
|
|
126
97
|
*/
|
|
127
|
-
this.thyCount = 5;
|
|
98
|
+
this.thyCount = input(5, { transform: numberAttribute });
|
|
128
99
|
this.disabled = false;
|
|
129
100
|
/**
|
|
130
101
|
* 是否允许半选
|
|
131
102
|
* @default false
|
|
132
103
|
*/
|
|
133
|
-
this.thyAllowHalf = false;
|
|
104
|
+
this.thyAllowHalf = input(false, { transform: coerceBooleanProperty });
|
|
134
105
|
/**
|
|
135
106
|
* 是否允许再次点击后清除
|
|
136
107
|
*/
|
|
137
|
-
this.thyAllowClear = true;
|
|
108
|
+
this.thyAllowClear = input(true, { transform: coerceBooleanProperty });
|
|
138
109
|
/**
|
|
139
110
|
* 自定义每项的提示信息
|
|
140
111
|
* @type string[]
|
|
141
112
|
*/
|
|
142
|
-
this.thyTooltips = [];
|
|
113
|
+
this.thyTooltips = input([]);
|
|
114
|
+
/**
|
|
115
|
+
* 自定义模板,目前支持传单个模板或图标名称、数组(模板 | 图标名称)
|
|
116
|
+
* @type string | TemplateRef<any> | string[] | TemplateRef<any>[]
|
|
117
|
+
*/
|
|
118
|
+
this.thyIconTemplate = input(null);
|
|
143
119
|
/**
|
|
144
120
|
* 当前值hover时的回调
|
|
145
121
|
*/
|
|
146
|
-
this.thyItemHoverChange =
|
|
147
|
-
this.
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
122
|
+
this.thyItemHoverChange = output();
|
|
123
|
+
this.iconValue = computed(() => {
|
|
124
|
+
const icons = this.thyIconTemplate();
|
|
125
|
+
const currentValue = this.currentValue();
|
|
126
|
+
if (!icons) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
let iconValue = null;
|
|
131
|
+
if (helpers.isArray(icons) && icons.length > 0) {
|
|
132
|
+
const currentIcon = (currentValue && currentValue - 1) || 0;
|
|
133
|
+
iconValue = icons[currentIcon];
|
|
134
|
+
}
|
|
135
|
+
else if (!helpers.isArray(icons)) {
|
|
136
|
+
iconValue = icons;
|
|
137
|
+
}
|
|
138
|
+
if (iconValue instanceof TemplateRef) {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
return iconValue;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
this.iconTemplate = computed(() => {
|
|
147
|
+
const icons = this.thyIconTemplate();
|
|
148
|
+
const currentValue = this.currentValue();
|
|
149
|
+
if (!icons) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
let iconTemplate = null;
|
|
154
|
+
if (helpers.isArray(icons) && icons.length > 0) {
|
|
155
|
+
const currentIcon = (currentValue && currentValue - 1) || 0;
|
|
156
|
+
iconTemplate = icons[currentIcon];
|
|
157
|
+
}
|
|
158
|
+
else if (!helpers.isArray(icons)) {
|
|
159
|
+
iconTemplate = icons;
|
|
160
|
+
}
|
|
161
|
+
if (iconTemplate instanceof TemplateRef) {
|
|
162
|
+
return iconTemplate;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
this.rateArray = computed(() => {
|
|
170
|
+
return this.updateRateArray();
|
|
171
|
+
});
|
|
172
|
+
this.rateStyleArray = computed(() => {
|
|
173
|
+
return this.updateItemStyle();
|
|
174
|
+
});
|
|
175
|
+
effect(() => {
|
|
176
|
+
this.hasHalf.set(!Number.isInteger(this.thyValue()));
|
|
177
|
+
this.currentValue.set(Math.ceil(this.thyValue()));
|
|
178
|
+
});
|
|
159
179
|
}
|
|
160
180
|
writeValue(value) {
|
|
161
|
-
this.thyValue
|
|
162
|
-
this.updateRateArray();
|
|
181
|
+
this.thyValue.set(value || 0);
|
|
163
182
|
this.cdr.markForCheck();
|
|
164
183
|
}
|
|
165
|
-
ngOnInit() { }
|
|
166
|
-
ngOnChanges(changes) {
|
|
167
|
-
const { thyCount, thyValue } = changes;
|
|
168
|
-
if (thyCount) {
|
|
169
|
-
this.updateRateArray();
|
|
170
|
-
}
|
|
171
|
-
if (thyValue) {
|
|
172
|
-
this.updateItemStyle();
|
|
173
|
-
}
|
|
174
|
-
this.cdr.detectChanges();
|
|
175
|
-
}
|
|
176
184
|
itemHover(isHalf, index) {
|
|
177
|
-
if (this.thyDisabled || (this.currentValue === index + 1 && this.hasHalf === isHalf)) {
|
|
185
|
+
if (this.thyDisabled || (this.currentValue() === index + 1 && this.hasHalf() === isHalf)) {
|
|
178
186
|
return;
|
|
179
187
|
}
|
|
180
|
-
this.currentValue
|
|
181
|
-
this.hasHalf
|
|
182
|
-
const _value = isHalf ? Number(this.currentValue - 0.5) : this.currentValue;
|
|
188
|
+
this.currentValue.set(index + 1);
|
|
189
|
+
this.hasHalf.set(isHalf);
|
|
190
|
+
const _value = isHalf ? Number(this.currentValue() - 0.5) : this.currentValue();
|
|
183
191
|
this.thyItemHoverChange.emit(_value);
|
|
184
|
-
this.updateItemStyle();
|
|
185
192
|
}
|
|
186
193
|
itemClick(isHalf, index) {
|
|
187
194
|
if (this.thyDisabled) {
|
|
188
195
|
return;
|
|
189
196
|
}
|
|
190
|
-
this.currentValue
|
|
197
|
+
this.currentValue.set(index + 1);
|
|
191
198
|
const _value = isHalf ? index + 1 - 0.5 : index + 1;
|
|
192
|
-
if (this.thyValue === _value) {
|
|
193
|
-
if (this.thyAllowClear) {
|
|
194
|
-
this.thyValue
|
|
195
|
-
this.onChangeCallback(this.thyValue);
|
|
199
|
+
if (this.thyValue() === _value) {
|
|
200
|
+
if (this.thyAllowClear()) {
|
|
201
|
+
this.thyValue.set(0);
|
|
202
|
+
this.onChangeCallback(this.thyValue());
|
|
196
203
|
this.onTouchedCallback();
|
|
197
204
|
}
|
|
198
205
|
}
|
|
199
206
|
else {
|
|
200
|
-
this.thyValue
|
|
201
|
-
this.onChangeCallback(this.thyValue);
|
|
207
|
+
this.thyValue.set(_value);
|
|
208
|
+
this.onChangeCallback(this.thyValue());
|
|
202
209
|
this.onTouchedCallback();
|
|
203
210
|
}
|
|
204
|
-
this.updateItemStyle();
|
|
205
211
|
}
|
|
206
212
|
onRateLeave(event) {
|
|
207
213
|
event.stopPropagation();
|
|
208
|
-
this.hasHalf
|
|
209
|
-
this.currentValue
|
|
210
|
-
this.updateItemStyle();
|
|
214
|
+
this.hasHalf.set(!Number.isInteger(this.thyValue()));
|
|
215
|
+
this.currentValue.set(Math.ceil(this.thyValue()));
|
|
211
216
|
}
|
|
212
217
|
updateRateArray() {
|
|
213
|
-
|
|
214
|
-
.
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
218
|
+
return this.thyCount() > 0
|
|
219
|
+
? Array(this.thyCount())
|
|
220
|
+
.fill(0)
|
|
221
|
+
.map((_, i) => {
|
|
222
|
+
return i;
|
|
223
|
+
})
|
|
224
|
+
: [];
|
|
219
225
|
}
|
|
220
226
|
updateItemStyle() {
|
|
221
|
-
this.updateIcon();
|
|
222
227
|
const rateStyle = 'thy-rate-star';
|
|
223
|
-
|
|
228
|
+
return this.rateArray().map(i => {
|
|
224
229
|
const value = i + 1;
|
|
225
230
|
return {
|
|
226
|
-
[`${rateStyle}--full`]: value < this.currentValue || (value === this.currentValue && !this.hasHalf),
|
|
227
|
-
[`${rateStyle}--half`]: this.hasHalf && value === this.currentValue,
|
|
228
|
-
[`${rateStyle}--active`]: this.hasHalf && value === this.currentValue,
|
|
229
|
-
[`${rateStyle}--zero`]: value > this.currentValue
|
|
231
|
+
[`${rateStyle}--full`]: value < this.currentValue() || (value === this.currentValue() && !this.hasHalf()),
|
|
232
|
+
[`${rateStyle}--half`]: this.hasHalf() && value === this.currentValue(),
|
|
233
|
+
[`${rateStyle}--active`]: this.hasHalf() && value === this.currentValue(),
|
|
234
|
+
[`${rateStyle}--zero`]: value > this.currentValue()
|
|
230
235
|
};
|
|
231
236
|
});
|
|
232
237
|
}
|
|
233
|
-
updateIcon() {
|
|
234
|
-
if (!this.icons) {
|
|
235
|
-
this.iconValue = null;
|
|
236
|
-
this.iconTemplate = null;
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
this.setIconTemplate();
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
setIconTemplate() {
|
|
243
|
-
if (helpers.isArray(this.icons) && this.icons.length > 0) {
|
|
244
|
-
const currentIcon = (this.currentValue && this.currentValue - 1) || 0;
|
|
245
|
-
if (this.icons[currentIcon] instanceof TemplateRef) {
|
|
246
|
-
this.iconTemplate = this.icons[currentIcon];
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
this.iconValue = this.icons[currentIcon];
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
else if (!helpers.isArray(this.icons)) {
|
|
253
|
-
if (this.icons instanceof TemplateRef) {
|
|
254
|
-
this.iconTemplate = this.icons;
|
|
255
|
-
}
|
|
256
|
-
else {
|
|
257
|
-
this.iconValue = this.icons;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
238
|
registerOnChange(fn) {
|
|
262
239
|
this.onChangeCallback = fn;
|
|
263
240
|
}
|
|
@@ -268,13 +245,13 @@ class ThyRate extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
268
245
|
return item || index;
|
|
269
246
|
}
|
|
270
247
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyRate, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
271
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyRate, isStandalone: true, selector: "thy-rate", inputs: { thyCount:
|
|
248
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyRate, isStandalone: true, selector: "thy-rate", inputs: { thyValue: { classPropertyName: "thyValue", publicName: "thyValue", isSignal: true, isRequired: false, transformFunction: null }, currentValue: { classPropertyName: "currentValue", publicName: "currentValue", isSignal: true, isRequired: false, transformFunction: null }, hasHalf: { classPropertyName: "hasHalf", publicName: "hasHalf", isSignal: true, isRequired: false, transformFunction: null }, thyCount: { classPropertyName: "thyCount", publicName: "thyCount", isSignal: true, isRequired: false, transformFunction: null }, thyDisabled: { classPropertyName: "thyDisabled", publicName: "thyDisabled", isSignal: false, isRequired: false, transformFunction: coerceBooleanProperty }, thyAllowHalf: { classPropertyName: "thyAllowHalf", publicName: "thyAllowHalf", isSignal: true, isRequired: false, transformFunction: null }, thyAllowClear: { classPropertyName: "thyAllowClear", publicName: "thyAllowClear", isSignal: true, isRequired: false, transformFunction: null }, thyTooltips: { classPropertyName: "thyTooltips", publicName: "thyTooltips", isSignal: true, isRequired: false, transformFunction: null }, thyIconTemplate: { classPropertyName: "thyIconTemplate", publicName: "thyIconTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thyValue: "thyValueChange", currentValue: "currentValueChange", hasHalf: "hasHalfChange", thyItemHoverChange: "thyItemHoverChange" }, host: { properties: { "attr.tabindex": "tabIndex" }, classAttribute: "thy-rate" }, providers: [
|
|
272
249
|
{
|
|
273
250
|
provide: NG_VALUE_ACCESSOR,
|
|
274
251
|
useExisting: forwardRef(() => ThyRate),
|
|
275
252
|
multi: true
|
|
276
253
|
}
|
|
277
|
-
], usesInheritance: true,
|
|
254
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"thy-rate-container\" [class.thy-rate-container--disabled]=\"thyDisabled\" (mouseleave)=\"onRateLeave($event)\">\n @for (star of rateArray(); track trackByFn(index, star); let index = $index) {\n <div\n thyStopPropagation\n class=\"thy-rate-star\"\n [ngClass]=\"rateStyleArray()[index] || ''\"\n thy-rate-item\n [allowHalf]=\"thyAllowHalf()\"\n [iconValue]=\"iconValue()\"\n [iconTemplate]=\"iconTemplate()\"\n (itemHover)=\"itemHover($event, index)\"\n (itemClick)=\"itemClick($event, index)\"\n [thyTooltip]=\"thyTooltips()[index]\"\n thyTooltipPlacement=\"top\"\n ></div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: ThyStopPropagationDirective, selector: "[thyStopPropagation]", inputs: ["thyStopPropagation"] }, { kind: "component", type: ThyRateItem, selector: "thy-rate-item, [thy-rate-item]", inputs: ["allowHalf", "iconValue", "iconTemplate"], outputs: ["itemHover", "itemClick"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
278
255
|
}
|
|
279
256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyRate, decorators: [{
|
|
280
257
|
type: Component,
|
|
@@ -287,29 +264,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
287
264
|
], host: {
|
|
288
265
|
'[attr.tabindex]': `tabIndex`,
|
|
289
266
|
class: 'thy-rate'
|
|
290
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ThyStopPropagationDirective, ThyRateItem, NgClass, ThyTooltipDirective], template: "<div class=\"thy-rate-container\" [class.thy-rate-container--disabled]=\"thyDisabled\" (mouseleave)=\"onRateLeave($event)\">\n @for (star of rateArray; track trackByFn(index, star); let index = $index) {\n <div\n thyStopPropagation\n class=\"thy-rate-star\"\n [ngClass]=\"rateStyleArray[index] || ''\"\n thy-rate-item\n [allowHalf]=\"thyAllowHalf\"\n [iconValue]=\"iconValue\"\n [iconTemplate]=\"iconTemplate\"\n (itemHover)=\"itemHover($event, index)\"\n (itemClick)=\"itemClick($event, index)\"\n [thyTooltip]=\"thyTooltips[index]\"\n thyTooltipPlacement=\"top\"\n ></div>\n }\n</div>\n" }]
|
|
291
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
292
|
-
type: Input,
|
|
293
|
-
args: [{ transform: numberAttribute }]
|
|
294
|
-
}], thyDisabled: [{
|
|
295
|
-
type: Input,
|
|
296
|
-
args: [{ transform: coerceBooleanProperty }]
|
|
297
|
-
}], thyAllowHalf: [{
|
|
267
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ThyStopPropagationDirective, ThyRateItem, NgClass, ThyTooltipDirective], template: "<div class=\"thy-rate-container\" [class.thy-rate-container--disabled]=\"thyDisabled\" (mouseleave)=\"onRateLeave($event)\">\n @for (star of rateArray(); track trackByFn(index, star); let index = $index) {\n <div\n thyStopPropagation\n class=\"thy-rate-star\"\n [ngClass]=\"rateStyleArray()[index] || ''\"\n thy-rate-item\n [allowHalf]=\"thyAllowHalf()\"\n [iconValue]=\"iconValue()\"\n [iconTemplate]=\"iconTemplate()\"\n (itemHover)=\"itemHover($event, index)\"\n (itemClick)=\"itemClick($event, index)\"\n [thyTooltip]=\"thyTooltips()[index]\"\n thyTooltipPlacement=\"top\"\n ></div>\n }\n</div>\n" }]
|
|
268
|
+
}], ctorParameters: () => [], propDecorators: { thyDisabled: [{
|
|
298
269
|
type: Input,
|
|
299
270
|
args: [{ transform: coerceBooleanProperty }]
|
|
300
|
-
}], thyAllowClear: [{
|
|
301
|
-
type: Input,
|
|
302
|
-
args: [{ transform: coerceBooleanProperty }]
|
|
303
|
-
}], thyTooltips: [{
|
|
304
|
-
type: Input
|
|
305
|
-
}], thyIconTemplate: [{
|
|
306
|
-
type: Input,
|
|
307
|
-
args: ['thyIconTemplate']
|
|
308
|
-
}], thyItemHoverChange: [{
|
|
309
|
-
type: Output
|
|
310
|
-
}], className: [{
|
|
311
|
-
type: HostBinding,
|
|
312
|
-
args: ['class.thy-rate']
|
|
313
271
|
}] } });
|
|
314
272
|
|
|
315
273
|
class ThyRateModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-rate.mjs","sources":["../../../src/rate/rate-item.component.ts","../../../src/rate/rate.component.ts","../../../src/rate/rate.component.html","../../../src/rate/module.ts","../../../src/rate/ngx-tethys-rate.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ThyStopPropagationDirective } from 'ngx-tethys/shared';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-rate-item, [thy-rate-item]',\n template: `\n <div class=\"thy-rate-item-left\" thyStopPropagation (mouseover)=\"hoverRateItem(true)\" (click)=\"clickRateItem(true)\">\n <ng-template [ngTemplateOutlet]=\"iconTemplate || (iconValue && character) || defaultTemplate\"></ng-template>\n </div>\n <div class=\"thy-rate-item-all\" thyStopPropagation (mouseover)=\"hoverRateItem(false)\" (click)=\"clickRateItem(false)\">\n <ng-template [ngTemplateOutlet]=\"iconTemplate || (iconValue && character) || defaultTemplate\"></ng-template>\n </div>\n\n <ng-template #defaultTemplate>\n <thy-icon thyIconName=\"star-fill\"></thy-icon>\n </ng-template>\n\n <ng-template #character>\n <thy-icon [thyIconName]=\"iconValue\"></thy-icon>\n </ng-template>\n `,\n imports: [ThyStopPropagationDirective, NgTemplateOutlet, ThyIcon]\n})\nexport class ThyRateItem implements OnInit {\n @Input({ transform: coerceBooleanProperty }) allowHalf = false;\n\n @Input() iconValue: string;\n\n @Input() iconTemplate: TemplateRef<any>;\n\n @Output() readonly itemHover = new EventEmitter<boolean>();\n\n @Output() readonly itemClick = new EventEmitter<boolean>();\n\n constructor() {}\n\n ngOnInit() {}\n\n hoverRateItem(isHalf: boolean): void {\n this.itemHover.next(isHalf && this.allowHalf);\n }\n\n clickRateItem(isHalf: boolean): void {\n this.itemClick.next(isHalf && this.allowHalf);\n }\n}\n","import { TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, helpers } from 'ngx-tethys/util';\n\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n numberAttribute,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n inject\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyStopPropagationDirective } from 'ngx-tethys/shared';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { ThyRateItem } from './rate-item.component';\n\nconst noop = () => {};\n\n/**\n * 评分组件\n * @name thy-rate\n * @order 10\n */\n@Component({\n selector: 'thy-rate',\n templateUrl: './rate.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyRate),\n multi: true\n }\n ],\n host: {\n '[attr.tabindex]': `tabIndex`,\n class: 'thy-rate'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyStopPropagationDirective, ThyRateItem, NgClass, ThyTooltipDirective]\n})\nexport class ThyRate extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor, OnInit, OnChanges {\n private cdr = inject(ChangeDetectorRef);\n\n private _value = 0;\n\n private currentValue = 0;\n\n private hasHalf = false;\n\n public rateArray: number[] = [];\n\n public rateStyleArray: Record<string, boolean>[] = [];\n\n private icons: string | TemplateRef<any> | string[] | TemplateRef<any>[] = null;\n\n public iconValue: string = null;\n\n public iconTemplate: TemplateRef<any> = null;\n\n private onTouchedCallback: () => void = noop;\n\n private onChangeCallback: (_: any) => void = noop;\n\n /**\n * 自定义评分的总数\n */\n @Input({ transform: numberAttribute }) thyCount = 5;\n\n /**\n * 是否只读\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n override set thyDisabled(value: boolean) {\n this.disabled = value;\n }\n override get thyDisabled(): boolean {\n return this.disabled;\n }\n\n disabled = false;\n\n /**\n * 是否允许半选\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyAllowHalf = false;\n\n /**\n * 是否允许再次点击后清除\n */\n @Input({ transform: coerceBooleanProperty }) thyAllowClear = true;\n\n /**\n * 自定义每项的提示信息\n * @type string[]\n */\n @Input() thyTooltips: string[] = [];\n\n /**\n * 自定义模板,目前支持传单个模板或图标名称、数组(模板 | 图标名称)\n * @type string | TemplateRef<any> | string[] | TemplateRef<any>[]\n */\n @Input('thyIconTemplate')\n set thyIconTemplate(value: string | TemplateRef<any> | string[] | TemplateRef<any>[]) {\n this.icons = value;\n if (!this.icons) {\n this.iconValue = null;\n this.iconTemplate = null;\n } else {\n this.setIconTemplate();\n }\n }\n\n /**\n * 当前值hover时的回调\n */\n @Output() readonly thyItemHoverChange = new EventEmitter<number>();\n\n @HostBinding('class.thy-rate') className = true;\n\n constructor() {\n super();\n }\n\n get thyValue(): number {\n return this._value;\n }\n\n set thyValue(value: number) {\n if (this._value === value) {\n return;\n }\n this._value = value;\n this.hasHalf = !Number.isInteger(value);\n this.currentValue = Math.ceil(value);\n }\n\n writeValue(value: number): void {\n this.thyValue = value || 0;\n this.updateRateArray();\n this.cdr.markForCheck();\n }\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n const { thyCount, thyValue } = changes;\n if (thyCount) {\n this.updateRateArray();\n }\n\n if (thyValue) {\n this.updateItemStyle();\n }\n this.cdr.detectChanges();\n }\n\n itemHover(isHalf: boolean, index: number): void {\n if (this.thyDisabled || (this.currentValue === index + 1 && this.hasHalf === isHalf)) {\n return;\n }\n this.currentValue = index + 1;\n this.hasHalf = isHalf;\n const _value = isHalf ? Number(this.currentValue - 0.5) : this.currentValue;\n this.thyItemHoverChange.emit(_value);\n this.updateItemStyle();\n }\n\n itemClick(isHalf: boolean, index: number) {\n if (this.thyDisabled) {\n return;\n }\n this.currentValue = index + 1;\n const _value = isHalf ? index + 1 - 0.5 : index + 1;\n if (this.thyValue === _value) {\n if (this.thyAllowClear) {\n this.thyValue = 0;\n this.onChangeCallback(this.thyValue);\n this.onTouchedCallback();\n }\n } else {\n this.thyValue = _value;\n this.onChangeCallback(this.thyValue);\n this.onTouchedCallback();\n }\n this.updateItemStyle();\n }\n\n onRateLeave(event: Event): void {\n event.stopPropagation();\n this.hasHalf = !Number.isInteger(this.thyValue);\n this.currentValue = Math.ceil(this.thyValue);\n this.updateItemStyle();\n }\n\n updateRateArray(): void {\n this.rateArray = Array(this.thyCount)\n .fill(0)\n .map((_, i) => {\n return i;\n });\n this.updateItemStyle();\n }\n\n updateItemStyle(): void {\n this.updateIcon();\n const rateStyle = 'thy-rate-star';\n this.rateStyleArray = this.rateArray.map(i => {\n const value = i + 1;\n return {\n [`${rateStyle}--full`]: value < this.currentValue || (value === this.currentValue && !this.hasHalf),\n [`${rateStyle}--half`]: this.hasHalf && value === this.currentValue,\n [`${rateStyle}--active`]: this.hasHalf && value === this.currentValue,\n [`${rateStyle}--zero`]: value > this.currentValue\n };\n });\n }\n\n updateIcon(): void {\n if (!this.icons) {\n this.iconValue = null;\n this.iconTemplate = null;\n } else {\n this.setIconTemplate();\n }\n }\n\n setIconTemplate(): void {\n if (helpers.isArray(this.icons) && this.icons.length > 0) {\n const currentIcon = (this.currentValue && this.currentValue - 1) || 0;\n if (this.icons[currentIcon] instanceof TemplateRef) {\n this.iconTemplate = this.icons[currentIcon] as TemplateRef<any>;\n } else {\n this.iconValue = this.icons[currentIcon] as string;\n }\n } else if (!helpers.isArray(this.icons)) {\n if (this.icons instanceof TemplateRef) {\n this.iconTemplate = this.icons;\n } else {\n this.iconValue = this.icons;\n }\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n trackByFn(index: number, item: any) {\n return item || index;\n }\n}\n","<div class=\"thy-rate-container\" [class.thy-rate-container--disabled]=\"thyDisabled\" (mouseleave)=\"onRateLeave($event)\">\n @for (star of rateArray; track trackByFn(index, star); let index = $index) {\n <div\n thyStopPropagation\n class=\"thy-rate-star\"\n [ngClass]=\"rateStyleArray[index] || ''\"\n thy-rate-item\n [allowHalf]=\"thyAllowHalf\"\n [iconValue]=\"iconValue\"\n [iconTemplate]=\"iconTemplate\"\n (itemHover)=\"itemHover($event, index)\"\n (itemClick)=\"itemClick($event, index)\"\n [thyTooltip]=\"thyTooltips[index]\"\n thyTooltipPlacement=\"top\"\n ></div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThyRateItem } from './rate-item.component';\nimport { ThyRate } from './rate.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ThySharedModule, ThyIconModule, ThyTooltipModule, ThyRate, ThyRateItem],\n exports: [ThyRate],\n providers: []\n})\nexport class ThyRateModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-rate.mjs","sources":["../../../src/rate/rate-item.component.ts","../../../src/rate/rate.component.ts","../../../src/rate/rate.component.html","../../../src/rate/module.ts","../../../src/rate/ngx-tethys-rate.ts"],"sourcesContent":["import { Component, TemplateRef, input, output } from '@angular/core';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ThyStopPropagationDirective } from 'ngx-tethys/shared';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-rate-item, [thy-rate-item]',\n template: `\n <div class=\"thy-rate-item-left\" thyStopPropagation (mouseover)=\"hoverRateItem(true)\" (click)=\"clickRateItem(true)\">\n <ng-template [ngTemplateOutlet]=\"iconTemplate() || (iconValue() && character) || defaultTemplate\"></ng-template>\n </div>\n <div class=\"thy-rate-item-all\" thyStopPropagation (mouseover)=\"hoverRateItem(false)\" (click)=\"clickRateItem(false)\">\n <ng-template [ngTemplateOutlet]=\"iconTemplate() || (iconValue() && character) || defaultTemplate\"></ng-template>\n </div>\n\n <ng-template #defaultTemplate>\n <thy-icon thyIconName=\"star-fill\"></thy-icon>\n </ng-template>\n\n <ng-template #character>\n <thy-icon [thyIconName]=\"iconValue()\"></thy-icon>\n </ng-template>\n `,\n imports: [ThyStopPropagationDirective, NgTemplateOutlet, ThyIcon]\n})\nexport class ThyRateItem {\n readonly allowHalf = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n readonly iconValue = input<string>();\n\n readonly iconTemplate = input<TemplateRef<any>>();\n\n readonly itemHover = output<boolean>();\n\n readonly itemClick = output<boolean>();\n\n constructor() {}\n\n hoverRateItem(isHalf: boolean): void {\n this.itemHover.emit(isHalf && this.allowHalf());\n }\n\n clickRateItem(isHalf: boolean): void {\n this.itemClick.emit(isHalf && this.allowHalf());\n }\n}\n","import { TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, helpers, ThyBooleanInput } from 'ngx-tethys/util';\n\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Input,\n numberAttribute,\n TemplateRef,\n inject,\n input,\n output,\n computed,\n model,\n ModelSignal,\n effect\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyStopPropagationDirective } from 'ngx-tethys/shared';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { ThyRateItem } from './rate-item.component';\n\nconst noop = () => {};\n\n/**\n * 评分组件\n * @name thy-rate\n * @order 10\n */\n@Component({\n selector: 'thy-rate',\n templateUrl: './rate.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyRate),\n multi: true\n }\n ],\n host: {\n '[attr.tabindex]': `tabIndex`,\n class: 'thy-rate'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyStopPropagationDirective, ThyRateItem, NgClass, ThyTooltipDirective]\n})\nexport class ThyRate extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n readonly thyValue: ModelSignal<number> = model(0);\n\n readonly currentValue: ModelSignal<number> = model(0);\n\n readonly hasHalf: ModelSignal<boolean> = model(false);\n\n private onTouchedCallback: () => void = noop;\n\n private onChangeCallback: (_: any) => void = noop;\n\n /**\n * 自定义评分的总数\n */\n readonly thyCount = input(5, { transform: numberAttribute });\n\n /**\n * 是否只读\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n override set thyDisabled(value: boolean) {\n this.disabled = value;\n }\n override get thyDisabled(): boolean {\n return this.disabled;\n }\n\n disabled = false;\n\n /**\n * 是否允许半选\n * @default false\n */\n readonly thyAllowHalf = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否允许再次点击后清除\n */\n readonly thyAllowClear = input<boolean, ThyBooleanInput>(true, { transform: coerceBooleanProperty });\n\n /**\n * 自定义每项的提示信息\n * @type string[]\n */\n readonly thyTooltips = input<string[]>([]);\n\n /**\n * 自定义模板,目前支持传单个模板或图标名称、数组(模板 | 图标名称)\n * @type string | TemplateRef<any> | string[] | TemplateRef<any>[]\n */\n readonly thyIconTemplate = input<string | TemplateRef<any> | string[] | TemplateRef<any>[]>(null);\n\n /**\n * 当前值hover时的回调\n */\n readonly thyItemHoverChange = output<number>();\n\n readonly iconValue = computed(() => {\n const icons = this.thyIconTemplate();\n const currentValue = this.currentValue();\n if (!icons) {\n return null;\n } else {\n let iconValue = null;\n if (helpers.isArray(icons) && icons.length > 0) {\n const currentIcon = (currentValue && currentValue - 1) || 0;\n iconValue = icons[currentIcon];\n } else if (!helpers.isArray(icons)) {\n iconValue = icons;\n }\n if (iconValue instanceof TemplateRef) {\n return null;\n } else {\n return iconValue;\n }\n }\n });\n\n readonly iconTemplate = computed(() => {\n const icons = this.thyIconTemplate();\n const currentValue = this.currentValue();\n if (!icons) {\n return null;\n } else {\n let iconTemplate = null;\n if (helpers.isArray(icons) && icons.length > 0) {\n const currentIcon = (currentValue && currentValue - 1) || 0;\n iconTemplate = icons[currentIcon] as TemplateRef<any>;\n } else if (!helpers.isArray(icons)) {\n iconTemplate = icons;\n }\n if (iconTemplate instanceof TemplateRef) {\n return iconTemplate;\n } else {\n return null;\n }\n }\n });\n\n readonly rateArray = computed(() => {\n return this.updateRateArray();\n });\n\n readonly rateStyleArray = computed(() => {\n return this.updateItemStyle();\n });\n\n constructor() {\n super();\n effect(() => {\n this.hasHalf.set(!Number.isInteger(this.thyValue()));\n this.currentValue.set(Math.ceil(this.thyValue()));\n });\n }\n\n writeValue(value: number): void {\n this.thyValue.set(value || 0);\n this.cdr.markForCheck();\n }\n\n itemHover(isHalf: boolean, index: number): void {\n if (this.thyDisabled || (this.currentValue() === index + 1 && this.hasHalf() === isHalf)) {\n return;\n }\n this.currentValue.set(index + 1);\n this.hasHalf.set(isHalf);\n const _value = isHalf ? Number(this.currentValue() - 0.5) : this.currentValue();\n this.thyItemHoverChange.emit(_value);\n }\n\n itemClick(isHalf: boolean, index: number) {\n if (this.thyDisabled) {\n return;\n }\n this.currentValue.set(index + 1);\n const _value = isHalf ? index + 1 - 0.5 : index + 1;\n if (this.thyValue() === _value) {\n if (this.thyAllowClear()) {\n this.thyValue.set(0);\n this.onChangeCallback(this.thyValue());\n this.onTouchedCallback();\n }\n } else {\n this.thyValue.set(_value);\n this.onChangeCallback(this.thyValue());\n this.onTouchedCallback();\n }\n }\n\n onRateLeave(event: Event): void {\n event.stopPropagation();\n this.hasHalf.set(!Number.isInteger(this.thyValue()));\n this.currentValue.set(Math.ceil(this.thyValue()));\n }\n\n updateRateArray(): number[] {\n return this.thyCount() > 0\n ? Array(this.thyCount())\n .fill(0)\n .map((_, i) => {\n return i;\n })\n : [];\n }\n\n updateItemStyle(): Record<string, boolean>[] {\n const rateStyle = 'thy-rate-star';\n return this.rateArray().map(i => {\n const value = i + 1;\n return {\n [`${rateStyle}--full`]: value < this.currentValue() || (value === this.currentValue() && !this.hasHalf()),\n [`${rateStyle}--half`]: this.hasHalf() && value === this.currentValue(),\n [`${rateStyle}--active`]: this.hasHalf() && value === this.currentValue(),\n [`${rateStyle}--zero`]: value > this.currentValue()\n };\n });\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n trackByFn(index: number, item: any) {\n return item || index;\n }\n}\n","<div class=\"thy-rate-container\" [class.thy-rate-container--disabled]=\"thyDisabled\" (mouseleave)=\"onRateLeave($event)\">\n @for (star of rateArray(); track trackByFn(index, star); let index = $index) {\n <div\n thyStopPropagation\n class=\"thy-rate-star\"\n [ngClass]=\"rateStyleArray()[index] || ''\"\n thy-rate-item\n [allowHalf]=\"thyAllowHalf()\"\n [iconValue]=\"iconValue()\"\n [iconTemplate]=\"iconTemplate()\"\n (itemHover)=\"itemHover($event, index)\"\n (itemClick)=\"itemClick($event, index)\"\n [thyTooltip]=\"thyTooltips()[index]\"\n thyTooltipPlacement=\"top\"\n ></div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThyRateItem } from './rate-item.component';\nimport { ThyRate } from './rate.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ThySharedModule, ThyIconModule, ThyTooltipModule, ThyRate, ThyRateItem],\n exports: [ThyRate],\n providers: []\n})\nexport class ThyRateModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAMA;;AAEG;MAqBU,WAAW,CAAA;AAWpB,IAAA,WAAA,GAAA;QAVS,IAAS,CAAA,SAAA,GAAG,KAAK,CAA2B,KAAK,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;QAExF,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU;QAE3B,IAAY,CAAA,YAAA,GAAG,KAAK,EAAoB;QAExC,IAAS,CAAA,SAAA,GAAG,MAAM,EAAW;QAE7B,IAAS,CAAA,SAAA,GAAG,MAAM,EAAW;;AAItC,IAAA,aAAa,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;;AAGnD,IAAA,aAAa,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;;8GAlB1C,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAlBV,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;AAeT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEvD,WAAW,EAAA,UAAA,EAAA,CAAA;kBApBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;AAeT,IAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,2BAA2B,EAAE,gBAAgB,EAAE,OAAO;AACnE,iBAAA;;;ACHD,MAAM,IAAI,GAAG,MAAK,GAAG;AAErB;;;;AAIG;AAkBG,MAAO,OAAQ,SAAQ,yCAAyC,CAAA;AAkBlE;;;AAGG;IACH,IACa,WAAW,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;AAEzB,IAAA,IAAa,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,QAAQ;;AAmFxB,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AA9GH,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE9B,QAAA,IAAA,CAAA,QAAQ,GAAwB,KAAK,CAAC,CAAC,CAAC;AAExC,QAAA,IAAA,CAAA,YAAY,GAAwB,KAAK,CAAC,CAAC,CAAC;AAE5C,QAAA,IAAA,CAAA,OAAO,GAAyB,KAAK,CAAC,KAAK,CAAC;QAE7C,IAAiB,CAAA,iBAAA,GAAe,IAAI;QAEpC,IAAgB,CAAA,gBAAA,GAAqB,IAAI;AAEjD;;AAEG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;QAc5D,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEhB;;;AAGG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK,CAA2B,KAAK,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;AAEpG;;AAEG;QACM,IAAa,CAAA,aAAA,GAAG,KAAK,CAA2B,IAAI,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;AAEpG;;;AAGG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAW,EAAE,CAAC;AAE1C;;;AAGG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAA4D,IAAI,CAAC;AAEjG;;AAEG;QACM,IAAkB,CAAA,kBAAA,GAAG,MAAM,EAAU;AAErC,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC/B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;AACpC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;YACxC,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,OAAO,IAAI;;iBACR;gBACH,IAAI,SAAS,GAAG,IAAI;AACpB,gBAAA,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC5C,MAAM,WAAW,GAAG,CAAC,YAAY,IAAI,YAAY,GAAG,CAAC,KAAK,CAAC;AAC3D,oBAAA,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC;;qBAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAChC,SAAS,GAAG,KAAK;;AAErB,gBAAA,IAAI,SAAS,YAAY,WAAW,EAAE;AAClC,oBAAA,OAAO,IAAI;;qBACR;AACH,oBAAA,OAAO,SAAS;;;AAG5B,SAAC,CAAC;AAEO,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;AACpC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;YACxC,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,OAAO,IAAI;;iBACR;gBACH,IAAI,YAAY,GAAG,IAAI;AACvB,gBAAA,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC5C,MAAM,WAAW,GAAG,CAAC,YAAY,IAAI,YAAY,GAAG,CAAC,KAAK,CAAC;AAC3D,oBAAA,YAAY,GAAG,KAAK,CAAC,WAAW,CAAqB;;qBAClD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAChC,YAAY,GAAG,KAAK;;AAExB,gBAAA,IAAI,YAAY,YAAY,WAAW,EAAE;AACrC,oBAAA,OAAO,YAAY;;qBAChB;AACH,oBAAA,OAAO,IAAI;;;AAGvB,SAAC,CAAC;AAEO,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC/B,YAAA,OAAO,IAAI,CAAC,eAAe,EAAE;AACjC,SAAC,CAAC;AAEO,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,OAAO,IAAI,CAAC,eAAe,EAAE;AACjC,SAAC,CAAC;QAIE,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrD,SAAC,CAAC;;AAGN,IAAA,UAAU,CAAC,KAAa,EAAA;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;IAG3B,SAAS,CAAC,MAAe,EAAE,KAAa,EAAA;QACpC,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC,EAAE;YACtF;;QAEJ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE;AAC/E,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;;IAGxC,SAAS,CAAC,MAAe,EAAE,KAAa,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB;;QAEJ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AAChC,QAAA,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC;AACnD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE;AAC5B,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACtB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtC,IAAI,CAAC,iBAAiB,EAAE;;;aAEzB;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,iBAAiB,EAAE;;;AAIhC,IAAA,WAAW,CAAC,KAAY,EAAA;QACpB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;;IAGrD,eAAe,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG;AACrB,cAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;iBAChB,IAAI,CAAC,CAAC;AACN,iBAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACV,gBAAA,OAAO,CAAC;AACZ,aAAC;cACL,EAAE;;IAGZ,eAAe,GAAA;QACX,MAAM,SAAS,GAAG,eAAe;QACjC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,IAAG;AAC5B,YAAA,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC;YACnB,OAAO;gBACH,CAAC,CAAA,EAAG,SAAS,CAAA,MAAA,CAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACzG,gBAAA,CAAC,CAAG,EAAA,SAAS,CAAQ,MAAA,CAAA,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE;AACvE,gBAAA,CAAC,CAAG,EAAA,SAAS,CAAU,QAAA,CAAA,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE;gBACzE,CAAC,CAAA,EAAG,SAAS,CAAA,MAAA,CAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY;aACpD;AACL,SAAC,CAAC;;AAGN,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;;AAG9B,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;;IAG/B,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;QAC9B,OAAO,IAAI,IAAI,KAAK;;8GA9Lf,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAsBI,qBAAqB,EApC9B,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,OAAO,CAAC;AACtC,gBAAA,KAAK,EAAE;AACV;SACJ,ECzCL,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,ypBAiBA,4CD8Bc,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,EAAE,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,oFAAE,mBAAmB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,2BAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEvE,OAAO,EAAA,UAAA,EAAA,CAAA;kBAjBnB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAET,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC;AACtC,4BAAA,KAAK,EAAE;AACV;qBACJ,EACK,IAAA,EAAA;AACF,wBAAA,iBAAiB,EAAE,CAAU,QAAA,CAAA;AAC7B,wBAAA,KAAK,EAAE;AACV,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,2BAA2B,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,ypBAAA,EAAA;wDAyBpE,WAAW,EAAA,CAAA;sBADvB,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE;;;MEzDlC,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,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,aAAa,EAJZ,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,aACjG,OAAO,CAAA,EAAA,CAAA,CAAA;AAGR,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,aAAa,EAJZ,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,CAAA,EAAA,CAAA,CAAA;;2FAIlG,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,CAAC;oBAC5G,OAAO,EAAE,CAAC,OAAO,CAAC;AAClB,oBAAA,SAAS,EAAE;AACd,iBAAA;;;ACbD;;AAEG;;;;"}
|