ngx-tethys 18.2.10 → 18.2.13
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 +36 -0
- package/date-picker/abstract-picker.component.d.ts +6 -1
- package/date-picker/base-picker.component.d.ts +1 -1
- package/date-picker/lib/calendar/calendar-footer.component.d.ts +2 -1
- package/date-picker/lib/calendar/calendar-table.component.d.ts +4 -3
- package/date-picker/lib/popups/date-popup.component.d.ts +2 -1
- package/date-picker/lib/popups/inner-popup.component.d.ts +2 -1
- package/date-picker/picker.component.d.ts +2 -1
- package/date-picker/picker.util.d.ts +5 -5
- package/esm2022/cascader/cascader.component.mjs +2 -2
- package/esm2022/date-picker/abstract-picker.component.mjs +16 -28
- package/esm2022/date-picker/base-picker.component.mjs +17 -13
- package/esm2022/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +7 -5
- package/esm2022/date-picker/lib/calendar/calendar-table.component.mjs +6 -4
- package/esm2022/date-picker/lib/date/date-table.component.mjs +2 -2
- package/esm2022/date-picker/lib/popups/date-popup.component.mjs +29 -45
- package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +7 -5
- package/esm2022/date-picker/month-picker.component.mjs +3 -3
- package/esm2022/date-picker/picker.component.mjs +9 -4
- package/esm2022/date-picker/picker.util.mjs +21 -15
- package/esm2022/date-picker/quarter-picker.component.mjs +3 -3
- package/esm2022/date-picker/range-picker.component.mjs +3 -3
- package/esm2022/date-picker/week-picker.component.mjs +3 -3
- package/esm2022/date-picker/year-picker.component.mjs +3 -3
- package/esm2022/i18n/i18n.service.mjs +3 -6
- package/esm2022/i18n/locale.mjs +17 -2
- package/esm2022/message/message-container.component.mjs +3 -3
- package/esm2022/notify/notify-container.component.mjs +3 -3
- package/esm2022/select/custom-select/custom-select.component.mjs +2 -2
- package/esm2022/time-picker/inner/inner-time-picker.component.mjs +13 -11
- package/esm2022/time-picker/inner/inner-time-picker.store.mjs +16 -16
- package/esm2022/time-picker/time-picker.utils.mjs +14 -14
- package/esm2022/util/date/tiny-date.mjs +23 -11
- package/esm2022/util/helpers/helpers.mjs +13 -1
- package/esm2022/version.mjs +2 -2
- package/fesm2022/ngx-tethys-cascader.mjs +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +114 -121
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-i18n.mjs +17 -5
- package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
- package/fesm2022/ngx-tethys-message.mjs +2 -2
- package/fesm2022/ngx-tethys-message.mjs.map +1 -1
- package/fesm2022/ngx-tethys-notify.mjs +2 -2
- package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +1 -1
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-time-picker.mjs +40 -38
- package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-util.mjs +422 -398
- package/fesm2022/ngx-tethys-util.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/i18n/locale.d.ts +7 -1
- package/package.json +2 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/table/styles/table.scss +9 -1
- package/time-picker/inner/inner-time-picker.component.d.ts +3 -1
- package/time-picker/inner/inner-time-picker.store.d.ts +5 -5
- package/time-picker/time-picker.utils.d.ts +5 -5
- package/util/helpers/helpers.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-notify.mjs","sources":["../../../src/notify/notify.config.ts","../../../src/notify/notify-queue.service.ts","../../../src/notify/notify.component.ts","../../../src/notify/notify.component.html","../../../src/notify/notify-container.component.ts","../../../src/notify/notify-container.component.html","../../../src/notify/module.ts","../../../src/notify/notify-ref.ts","../../../src/notify/notify.service.ts","../../../src/notify/ngx-tethys-notify.ts"],"sourcesContent":["import { ElementRef, InjectionToken } from '@angular/core';\nimport { ComponentTypeOrTemplateRef } from 'ngx-tethys/core';\nimport { ThyMessageBaseConfig } from 'ngx-tethys/message';\n\nexport type ThyNotifyPlacement = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';\nexport type ThyNotifyType = 'blank' | 'success' | 'error' | 'warning' | 'info';\n\nexport interface ThyGlobalNotifyConfig {\n placement?: ThyNotifyPlacement;\n\n pauseOnHover?: boolean;\n\n duration?: number;\n\n maxStack?: number;\n\n offset?: string;\n}\n\nexport interface ThyNotifyDetail {\n link?: string;\n content?: string;\n action?: (event?: Event) => void;\n}\n\n/**\n * 打开notify通知的配置\n * @public\n * @order 10\n */\nexport interface ThyNotifyConfig extends ThyMessageBaseConfig {\n /**\n * 通知弹出位置\n */\n placement?: ThyNotifyPlacement;\n\n /**\n * 弹出通知的类型\n */\n type?: ThyNotifyType;\n\n /**\n * 标题\n */\n title?: string;\n\n /**\n * 提示内容\n */\n content?: string | ComponentTypeOrTemplateRef<any>;\n\n contentInitialState?: any;\n\n /**\n * 提示内容的详情,是对内容的详情描述,也可以是能够操作的链接,link是链接名,content是详情描述,action是点击的方法\n */\n detail?: string | ThyNotifyDetail;\n\n /**\n * 自定义传入html模板\n */\n html?: ElementRef;\n}\n\nexport const THY_NOTIFY_DEFAULT_CONFIG = new InjectionToken<ThyGlobalNotifyConfig>('thy-notify-default-config');\n\nexport const THY_NOTIFY_DEFAULT_CONFIG_VALUE: ThyGlobalNotifyConfig = {\n placement: 'topRight',\n offset: '20',\n duration: 4500,\n pauseOnHover: true,\n maxStack: 8\n};\n\nexport const THY_NOTIFY_DEFAULT_CONFIG_PROVIDER = {\n provide: THY_NOTIFY_DEFAULT_CONFIG,\n useValue: THY_NOTIFY_DEFAULT_CONFIG_VALUE\n};\n","import { Injectable, inject } from '@angular/core';\nimport { ThyAbstractMessageQueue } from 'ngx-tethys/message';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { ThyNotifyRef } from './notify-ref';\nimport { ThyGlobalNotifyConfig, THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyNotifyQueue extends ThyAbstractMessageQueue<ThyNotifyRef> {\n topLeftQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'topLeft')),\n shareReplay()\n );\n\n topRightQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'topRight')),\n shareReplay()\n );\n\n bottomLeftQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'bottomLeft')),\n shareReplay()\n );\n\n bottomRightQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'bottomRight')),\n shareReplay()\n );\n\n constructor() {\n const defaultConfig = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n super({\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...defaultConfig\n });\n }\n}\n","import { Component, Input, HostBinding, NgZone, OnInit, inject } from '@angular/core';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport { helpers, isString } from 'ngx-tethys/util';\nimport { ThyNotifyConfig, ThyNotifyDetail, ThyNotifyPlacement } from './notify.config';\nimport { ANIMATION_IN_DURATION, ANIMATION_OUT_DURATION, HIDE_STYLE, ThyAbstractMessageComponent } from 'ngx-tethys/message';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyViewOutletDirective } from 'ngx-tethys/shared';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-notify',\n templateUrl: './notify.component.html',\n animations: [\n trigger('flyInOut', [\n state('flyInOutRight', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),\n transition('void => flyInOutRight', [\n style({ transform: 'translateX(100%)', opacity: 0, height: '*' }),\n animate(ANIMATION_IN_DURATION)\n ]),\n transition('flyInOutRight => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),\n state('flyInOutLeft', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),\n transition('void => flyInOutLeft', [\n style({ transform: 'translateX(-100%)', opacity: 0, height: '*' }),\n animate(ANIMATION_IN_DURATION)\n ]),\n transition('flyInOutLeft => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),\n state('componentHide', style(HIDE_STYLE))\n ])\n ],\n standalone: true,\n imports: [ThyIcon, NgClass, ThyViewOutletDirective, NgTemplateOutlet]\n})\nexport class ThyNotify extends ThyAbstractMessageComponent<ThyNotifyConfig> implements OnInit {\n @HostBinding('@flyInOut') animationState: string;\n\n @HostBinding('class') className = '';\n\n config: ThyNotifyConfig;\n\n extendContentClass = false;\n\n isShowDetail = false;\n\n contentIsString = false;\n\n placement: ThyNotifyPlacement;\n\n @Input()\n set thyConfig(value: ThyNotifyConfig) {\n this.config = value;\n const type = value.type;\n this.placement = value.placement || 'topRight';\n if (this.placement === 'topLeft' || this.placement === 'bottomLeft') {\n this.animationState = 'flyInOutLeft';\n } else {\n this.animationState = 'flyInOutRight';\n }\n this.className = `thy-notify thy-notify-${type}`;\n }\n\n constructor() {\n const notifyQueue = inject(ThyNotifyQueue);\n super(notifyQueue);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.contentIsString = isString(this.config.content);\n }\n\n extendContent() {\n this.extendContentClass = true;\n }\n\n showDetailToggle() {\n this.isShowDetail = !this.isShowDetail;\n }\n\n triggerDetail() {\n if (helpers.isFunction((this.config.detail as ThyNotifyDetail).action)) {\n (this.config.detail as ThyNotifyDetail).action();\n }\n if ((this.config.detail as ThyNotifyDetail).content) {\n this.showDetailToggle();\n }\n }\n}\n","@if (config?.html) {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-main\">\n <template [ngTemplateOutlet]=\"config?.html\"></template>\n </div>\n} @else {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-icon-container\">\n <thy-icon [thyIconName]=\"iconName\"></thy-icon>\n </div>\n <div class=\"thy-notify-main\">\n <div class=\"thy-notify-title\">{{ config?.title }}</div>\n @if (config?.detail || config?.content) {\n <div class=\"thy-notify-content\" [ngClass]=\"{ 'thy-notify-content--extend': extendContentClass === true }\" (click)=\"extendContent()\">\n @if (config.content) {\n @if (contentIsString) {\n {{ config.content }}\n } @else {\n <ng-container *thyViewOutlet=\"config.content; context: config.contentInitialState || {}\"></ng-container>\n }\n }\n @if (config?.detail) {\n <a href=\"javascript:;\" class=\"link-secondary\" (click)=\"triggerDetail()\">{{ (config?.detail)['link'] }}</a>\n }\n </div>\n }\n @if (isShowDetail) {\n <div class=\"thy-notify-detail\">{{ (config?.detail)['content'] }}</div>\n }\n </div>\n}\n","import { Component, ElementRef, HostBinding, inject } from '@angular/core';\nimport { ThyAbstractMessageContainerComponent } from 'ngx-tethys/message';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyGlobalNotifyConfig, THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\nimport { ThyNotify } from './notify.component';\nimport { AsyncPipe } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-notify-container',\n templateUrl: './notify-container.component.html',\n standalone: true,\n imports: [ThyNotify, AsyncPipe]\n})\nexport class ThyNotifyContainer extends ThyAbstractMessageContainerComponent {\n notifyQueue = inject(ThyNotifyQueue);\n\n @HostBinding('class') className = 'thy-notify-container';\n\n constructor() {\n const defaultConfig = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n super({\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...defaultConfig\n });\n }\n}\n","<div class=\"thy-notify-bottomRight\" [style.bottom.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.bottomRightQueues$ | async; track $index) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-bottomLeft\" [style.bottom.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.bottomLeftQueues$ | async; track $index) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topLeft\" [style.top.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.topLeftQueues$ | async; track $index) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topRight\" [style.top.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.topRightQueues$ | async; track $index) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyNotify } from './notify.component';\nimport { ThyNotifyContainer } from './notify-container.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { THY_NOTIFY_DEFAULT_CONFIG_PROVIDER } from './notify.config';\nimport { ThySharedModule } from 'ngx-tethys/shared';\n\n@NgModule({\n imports: [CommonModule, ThySharedModule, OverlayModule, PortalModule, ThyIconModule, ThyNotifyContainer, ThyNotify],\n exports: [ThyNotifyContainer, ThyNotify],\n providers: [THY_NOTIFY_DEFAULT_CONFIG_PROVIDER]\n})\nexport class ThyNotifyModule {}\n","import { ThyAbstractMessageRef } from 'ngx-tethys/message';\nimport { ThyNotifyConfig } from './notify.config';\n\nexport class ThyNotifyRef extends ThyAbstractMessageRef<ThyNotifyConfig> {}\n","import { isString } from 'ngx-tethys/util';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { ThyGlobalNotifyConfig, ThyNotifyConfig, THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ThyNotifyRef } from './notify-ref';\nimport { ThyNotifyContainer } from './notify-container.component';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyAbstractMessageService } from 'ngx-tethys/message';\nimport { ComponentTypeOrTemplateRef } from 'ngx-tethys/core';\n\n/**\n * @order 20\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyNotifyService extends ThyAbstractMessageService<ThyNotifyContainer> {\n private notifyQueue: ThyNotifyQueue;\n protected config = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n private _lastNotifyId = 0;\n\n private defaultConfig: ThyGlobalNotifyConfig;\n\n constructor() {\n const overlay = inject(Overlay);\n const injector = inject(Injector);\n const notifyQueue = inject(ThyNotifyQueue);\n\n super(overlay, injector, notifyQueue);\n this.notifyQueue = notifyQueue;\n const config = this.config;\n\n this.defaultConfig = {\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...config\n };\n }\n\n /**\n * 打开自定义配置的 Notify\n */\n public show(config: ThyNotifyConfig): ThyNotifyRef {\n this.container = this.createContainer(ThyNotifyContainer);\n\n const notifyConfig = this.formatOptions(config);\n const notifyRef = new ThyNotifyRef(notifyConfig, this.overlayRef, this.notifyQueue);\n this.notifyQueue.add(notifyRef);\n return notifyRef;\n }\n\n /**\n * 打开类型为\"success\"的 Notify\n */\n public success(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'success',\n title: title || config?.title || '成功',\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"info\"的 Notify\n */\n public info(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'info',\n title: title || config?.title || '提示',\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"warning\"的 Notify\n */\n public warning(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'warning',\n title: title || config?.title || '警告',\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"error\"的 Notify\n */\n public error(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'error',\n title: title || config?.title || '警告',\n content: content || config?.content\n });\n }\n\n private formatOptions(config: ThyNotifyConfig) {\n if (isString(config.detail)) {\n config = { ...config, detail: { link: '[详情]', content: config.detail as string } };\n }\n return Object.assign({ type: 'blank' }, { id: String(this._lastNotifyId++) }, this.defaultConfig, config);\n }\n}\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-notify.mjs","sources":["../../../src/notify/notify.config.ts","../../../src/notify/notify-queue.service.ts","../../../src/notify/notify.component.ts","../../../src/notify/notify.component.html","../../../src/notify/notify-container.component.ts","../../../src/notify/notify-container.component.html","../../../src/notify/module.ts","../../../src/notify/notify-ref.ts","../../../src/notify/notify.service.ts","../../../src/notify/ngx-tethys-notify.ts"],"sourcesContent":["import { ElementRef, InjectionToken } from '@angular/core';\nimport { ComponentTypeOrTemplateRef } from 'ngx-tethys/core';\nimport { ThyMessageBaseConfig } from 'ngx-tethys/message';\n\nexport type ThyNotifyPlacement = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';\nexport type ThyNotifyType = 'blank' | 'success' | 'error' | 'warning' | 'info';\n\nexport interface ThyGlobalNotifyConfig {\n placement?: ThyNotifyPlacement;\n\n pauseOnHover?: boolean;\n\n duration?: number;\n\n maxStack?: number;\n\n offset?: string;\n}\n\nexport interface ThyNotifyDetail {\n link?: string;\n content?: string;\n action?: (event?: Event) => void;\n}\n\n/**\n * 打开notify通知的配置\n * @public\n * @order 10\n */\nexport interface ThyNotifyConfig extends ThyMessageBaseConfig {\n /**\n * 通知弹出位置\n */\n placement?: ThyNotifyPlacement;\n\n /**\n * 弹出通知的类型\n */\n type?: ThyNotifyType;\n\n /**\n * 标题\n */\n title?: string;\n\n /**\n * 提示内容\n */\n content?: string | ComponentTypeOrTemplateRef<any>;\n\n contentInitialState?: any;\n\n /**\n * 提示内容的详情,是对内容的详情描述,也可以是能够操作的链接,link是链接名,content是详情描述,action是点击的方法\n */\n detail?: string | ThyNotifyDetail;\n\n /**\n * 自定义传入html模板\n */\n html?: ElementRef;\n}\n\nexport const THY_NOTIFY_DEFAULT_CONFIG = new InjectionToken<ThyGlobalNotifyConfig>('thy-notify-default-config');\n\nexport const THY_NOTIFY_DEFAULT_CONFIG_VALUE: ThyGlobalNotifyConfig = {\n placement: 'topRight',\n offset: '20',\n duration: 4500,\n pauseOnHover: true,\n maxStack: 8\n};\n\nexport const THY_NOTIFY_DEFAULT_CONFIG_PROVIDER = {\n provide: THY_NOTIFY_DEFAULT_CONFIG,\n useValue: THY_NOTIFY_DEFAULT_CONFIG_VALUE\n};\n","import { Injectable, inject } from '@angular/core';\nimport { ThyAbstractMessageQueue } from 'ngx-tethys/message';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { ThyNotifyRef } from './notify-ref';\nimport { ThyGlobalNotifyConfig, THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyNotifyQueue extends ThyAbstractMessageQueue<ThyNotifyRef> {\n topLeftQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'topLeft')),\n shareReplay()\n );\n\n topRightQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'topRight')),\n shareReplay()\n );\n\n bottomLeftQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'bottomLeft')),\n shareReplay()\n );\n\n bottomRightQueues$ = this.queues$.pipe(\n map(queues => queues.filter(item => item.config.placement === 'bottomRight')),\n shareReplay()\n );\n\n constructor() {\n const defaultConfig = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n super({\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...defaultConfig\n });\n }\n}\n","import { Component, Input, HostBinding, NgZone, OnInit, inject } from '@angular/core';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport { helpers, isString } from 'ngx-tethys/util';\nimport { ThyNotifyConfig, ThyNotifyDetail, ThyNotifyPlacement } from './notify.config';\nimport { ANIMATION_IN_DURATION, ANIMATION_OUT_DURATION, HIDE_STYLE, ThyAbstractMessageComponent } from 'ngx-tethys/message';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyViewOutletDirective } from 'ngx-tethys/shared';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-notify',\n templateUrl: './notify.component.html',\n animations: [\n trigger('flyInOut', [\n state('flyInOutRight', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),\n transition('void => flyInOutRight', [\n style({ transform: 'translateX(100%)', opacity: 0, height: '*' }),\n animate(ANIMATION_IN_DURATION)\n ]),\n transition('flyInOutRight => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),\n state('flyInOutLeft', style({ transform: 'translateX(0)', opacity: 1, height: '*' })),\n transition('void => flyInOutLeft', [\n style({ transform: 'translateX(-100%)', opacity: 0, height: '*' }),\n animate(ANIMATION_IN_DURATION)\n ]),\n transition('flyInOutLeft => componentHide', [animate(ANIMATION_OUT_DURATION, style(HIDE_STYLE))]),\n state('componentHide', style(HIDE_STYLE))\n ])\n ],\n standalone: true,\n imports: [ThyIcon, NgClass, ThyViewOutletDirective, NgTemplateOutlet]\n})\nexport class ThyNotify extends ThyAbstractMessageComponent<ThyNotifyConfig> implements OnInit {\n @HostBinding('@flyInOut') animationState: string;\n\n @HostBinding('class') className = '';\n\n config: ThyNotifyConfig;\n\n extendContentClass = false;\n\n isShowDetail = false;\n\n contentIsString = false;\n\n placement: ThyNotifyPlacement;\n\n @Input()\n set thyConfig(value: ThyNotifyConfig) {\n this.config = value;\n const type = value.type;\n this.placement = value.placement || 'topRight';\n if (this.placement === 'topLeft' || this.placement === 'bottomLeft') {\n this.animationState = 'flyInOutLeft';\n } else {\n this.animationState = 'flyInOutRight';\n }\n this.className = `thy-notify thy-notify-${type}`;\n }\n\n constructor() {\n const notifyQueue = inject(ThyNotifyQueue);\n super(notifyQueue);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.contentIsString = isString(this.config.content);\n }\n\n extendContent() {\n this.extendContentClass = true;\n }\n\n showDetailToggle() {\n this.isShowDetail = !this.isShowDetail;\n }\n\n triggerDetail() {\n if (helpers.isFunction((this.config.detail as ThyNotifyDetail).action)) {\n (this.config.detail as ThyNotifyDetail).action();\n }\n if ((this.config.detail as ThyNotifyDetail).content) {\n this.showDetailToggle();\n }\n }\n}\n","@if (config?.html) {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-main\">\n <template [ngTemplateOutlet]=\"config?.html\"></template>\n </div>\n} @else {\n <a href=\"javascript:;\" class=\"thy-notify-close\" (click)=\"close()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n <div class=\"thy-notify-icon-container\">\n <thy-icon [thyIconName]=\"iconName\"></thy-icon>\n </div>\n <div class=\"thy-notify-main\">\n <div class=\"thy-notify-title\">{{ config?.title }}</div>\n @if (config?.detail || config?.content) {\n <div class=\"thy-notify-content\" [ngClass]=\"{ 'thy-notify-content--extend': extendContentClass === true }\" (click)=\"extendContent()\">\n @if (config.content) {\n @if (contentIsString) {\n {{ config.content }}\n } @else {\n <ng-container *thyViewOutlet=\"config.content; context: config.contentInitialState || {}\"></ng-container>\n }\n }\n @if (config?.detail) {\n <a href=\"javascript:;\" class=\"link-secondary\" (click)=\"triggerDetail()\">{{ (config?.detail)['link'] }}</a>\n }\n </div>\n }\n @if (isShowDetail) {\n <div class=\"thy-notify-detail\">{{ (config?.detail)['content'] }}</div>\n }\n </div>\n}\n","import { Component, ElementRef, HostBinding, inject } from '@angular/core';\nimport { ThyAbstractMessageContainerComponent } from 'ngx-tethys/message';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyGlobalNotifyConfig, THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\nimport { ThyNotify } from './notify.component';\nimport { AsyncPipe } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-notify-container',\n templateUrl: './notify-container.component.html',\n standalone: true,\n imports: [ThyNotify, AsyncPipe]\n})\nexport class ThyNotifyContainer extends ThyAbstractMessageContainerComponent {\n notifyQueue = inject(ThyNotifyQueue);\n\n @HostBinding('class') className = 'thy-notify-container';\n\n constructor() {\n const defaultConfig = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n super({\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...defaultConfig\n });\n }\n}\n","<div class=\"thy-notify-bottomRight\" [style.bottom.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.bottomRightQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-bottomLeft\" [style.bottom.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.bottomLeftQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topLeft\" [style.top.px]=\"offset\" [style.left.px]=\"offset\">\n @for (item of notifyQueue.topLeftQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n<div class=\"thy-notify-topRight\" [style.top.px]=\"offset\" [style.right.px]=\"offset\">\n @for (item of notifyQueue.topRightQueues$ | async; track item.id) {\n <thy-notify [thyConfig]=\"item.config\"></thy-notify>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyNotify } from './notify.component';\nimport { ThyNotifyContainer } from './notify-container.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { THY_NOTIFY_DEFAULT_CONFIG_PROVIDER } from './notify.config';\nimport { ThySharedModule } from 'ngx-tethys/shared';\n\n@NgModule({\n imports: [CommonModule, ThySharedModule, OverlayModule, PortalModule, ThyIconModule, ThyNotifyContainer, ThyNotify],\n exports: [ThyNotifyContainer, ThyNotify],\n providers: [THY_NOTIFY_DEFAULT_CONFIG_PROVIDER]\n})\nexport class ThyNotifyModule {}\n","import { ThyAbstractMessageRef } from 'ngx-tethys/message';\nimport { ThyNotifyConfig } from './notify.config';\n\nexport class ThyNotifyRef extends ThyAbstractMessageRef<ThyNotifyConfig> {}\n","import { isString } from 'ngx-tethys/util';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { ThyGlobalNotifyConfig, ThyNotifyConfig, THY_NOTIFY_DEFAULT_CONFIG, THY_NOTIFY_DEFAULT_CONFIG_VALUE } from './notify.config';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ThyNotifyRef } from './notify-ref';\nimport { ThyNotifyContainer } from './notify-container.component';\nimport { ThyNotifyQueue } from './notify-queue.service';\nimport { ThyAbstractMessageService } from 'ngx-tethys/message';\nimport { ComponentTypeOrTemplateRef } from 'ngx-tethys/core';\n\n/**\n * @order 20\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyNotifyService extends ThyAbstractMessageService<ThyNotifyContainer> {\n private notifyQueue: ThyNotifyQueue;\n protected config = inject(THY_NOTIFY_DEFAULT_CONFIG);\n\n private _lastNotifyId = 0;\n\n private defaultConfig: ThyGlobalNotifyConfig;\n\n constructor() {\n const overlay = inject(Overlay);\n const injector = inject(Injector);\n const notifyQueue = inject(ThyNotifyQueue);\n\n super(overlay, injector, notifyQueue);\n this.notifyQueue = notifyQueue;\n const config = this.config;\n\n this.defaultConfig = {\n ...THY_NOTIFY_DEFAULT_CONFIG_VALUE,\n ...config\n };\n }\n\n /**\n * 打开自定义配置的 Notify\n */\n public show(config: ThyNotifyConfig): ThyNotifyRef {\n this.container = this.createContainer(ThyNotifyContainer);\n\n const notifyConfig = this.formatOptions(config);\n const notifyRef = new ThyNotifyRef(notifyConfig, this.overlayRef, this.notifyQueue);\n this.notifyQueue.add(notifyRef);\n return notifyRef;\n }\n\n /**\n * 打开类型为\"success\"的 Notify\n */\n public success(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'success',\n title: title || config?.title || '成功',\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"info\"的 Notify\n */\n public info(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'info',\n title: title || config?.title || '提示',\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"warning\"的 Notify\n */\n public warning(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'warning',\n title: title || config?.title || '警告',\n content: content || config?.content\n });\n }\n\n /**\n * 打开类型为\"error\"的 Notify\n */\n public error(title?: string, content?: string | ComponentTypeOrTemplateRef<any>, config?: ThyNotifyConfig) {\n return this.show({\n ...(config || {}),\n type: 'error',\n title: title || config?.title || '警告',\n content: content || config?.content\n });\n }\n\n private formatOptions(config: ThyNotifyConfig) {\n if (isString(config.detail)) {\n config = { ...config, detail: { link: '[详情]', content: config.detail as string } };\n }\n return Object.assign({ type: 'blank' }, { id: String(this._lastNotifyId++) }, this.defaultConfig, config);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -752,7 +752,7 @@ class ThySelect extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
752
752
|
this.ngZone.runOutsideAngular(() => {
|
|
753
753
|
this.resizeSubscription = new Observable(observer => {
|
|
754
754
|
const resize = new ResizeObserver((entries) => {
|
|
755
|
-
observer.next();
|
|
755
|
+
observer.next(this.getOriginRectWidth());
|
|
756
756
|
});
|
|
757
757
|
resize.observe(this.trigger.nativeElement);
|
|
758
758
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-select.mjs","sources":["../../../src/select/select.config.ts","../../../src/select/custom-select/custom-select.component.ts","../../../src/select/custom-select/custom-select.component.html","../../../src/select/native-select/native-select.component.ts","../../../src/select/native-select/native-select.component.html","../../../src/select/module.ts","../../../src/select/ngx-tethys-select.ts"],"sourcesContent":["import { Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\nimport { ThyPlacement } from 'ngx-tethys/core';\n\nexport const THY_SELECT_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('thy-select-scroll-strategy');\n\nexport const THY_SELECT_SCROLL_STRATEGY_FACTORY = (overlay: Overlay) => {\n return () => overlay.scrollStrategies.reposition();\n};\n\nexport const THY_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: THY_SELECT_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: THY_SELECT_SCROLL_STRATEGY_FACTORY\n};\n\nexport type ThyDropdownWidthMode = 'match-select' | 'min-width' | { minWidth: number };\n\n/**\n * 打开select下拉菜单的配置\n * @public\n * @order 30\n */\nexport interface ThySelectConfig {\n /**\n * 下拉菜单的最小宽度\n */\n dropdownWidthMode?: ThyDropdownWidthMode;\n\n /**\n * 下拉菜单的弹出位置\n */\n placement?: ThyPlacement;\n}\n\nexport const DEFAULT_SELECT_CONFIG: ThySelectConfig = {\n dropdownWidthMode: 'match-select',\n placement: 'bottom'\n};\n\nexport const THY_SELECT_CONFIG = new InjectionToken<ThySelectConfig>('thy-select-config');\n\nexport const THY_SELECT_CONFIG_PROVIDER = {\n provide: THY_SELECT_CONFIG,\n useValue: DEFAULT_SELECT_CONFIG\n};\n","import {\n getFlexiblePositions,\n injectPanelEmptyIcon,\n scaleMotion,\n scaleXMotion,\n scaleYMotion,\n ScrollToService,\n TabIndexDisabledControlValueAccessorMixin,\n ThyClickDispatcher,\n ThyPlacement\n} from 'ngx-tethys/core';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { ThyLoading } from 'ngx-tethys/loading';\nimport {\n IThyOptionParentComponent,\n SelectControlSize,\n THY_OPTION_PARENT_COMPONENT,\n ThyOption,\n ThyOptionsContainer,\n ThyOptionSelectionChangeEvent,\n ThyScrollDirective,\n ThySelectControl,\n ThySelectOptionGroup,\n ThyStopPropagationDirective\n} from 'ngx-tethys/shared';\nimport {\n A,\n coerceBooleanProperty,\n DOWN_ARROW,\n elementMatchClosest,\n END,\n ENTER,\n FunctionProp,\n hasModifierKey,\n helpers,\n HOME,\n isArray,\n isFunction,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW\n} from 'ngx-tethys/util';\nimport { defer, merge, Observable, Subject, Subscription, timer } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith, switchMap, take, takeUntil } from 'rxjs/operators';\n\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectionPositionPair, Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { isPlatformBrowser, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n NgZone,\n numberAttribute,\n OnDestroy,\n OnInit,\n Output,\n PLATFORM_ID,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n inject,\n Signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {\n DEFAULT_SELECT_CONFIG,\n THY_SELECT_CONFIG,\n THY_SELECT_SCROLL_STRATEGY,\n ThyDropdownWidthMode,\n ThySelectConfig\n} from '../select.config';\nimport { injectLocale, ThySelectLocale } from 'ngx-tethys/i18n';\n\nexport type SelectMode = 'multiple' | '';\n\nexport type ThySelectTriggerType = 'click' | 'hover';\n\nexport const SELECT_PANEL_MAX_HEIGHT = 300;\n\nexport const SELECT_OPTION_MAX_HEIGHT = 40;\n\nexport const SELECT_OPTION_GROUP_MAX_HEIGHT = 30;\n\nexport const SELECT_PANEL_PADDING_TOP = 10;\n\nexport const THY_SELECT_PANEL_MIN_WIDTH = 200;\n\nexport interface OptionValue {\n thyLabelText?: string;\n thyValue?: string;\n thyDisabled?: boolean;\n thyShowOptionCustom?: boolean;\n thySearchKey?: string;\n}\n\nexport interface ThySelectOptionModel {\n value?: string | number;\n disabled?: boolean;\n label?: string;\n icon?: string;\n groupLabel?: string;\n}\n\ninterface ThyOptionGroupModel extends ThySelectOptionModel {\n children?: ThySelectOptionModel[];\n}\n\nconst noop = () => {};\n\n/**\n * 下拉选择组件\n * @name thy-select,thy-custom-select\n * @order 10\n */\n@Component({\n selector: 'thy-select,thy-custom-select',\n templateUrl: './custom-select.component.html',\n exportAs: 'thySelect',\n providers: [\n {\n provide: THY_OPTION_PARENT_COMPONENT,\n useExisting: ThySelect\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThySelect),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CdkOverlayOrigin,\n ThySelectControl,\n CdkConnectedOverlay,\n ThyStopPropagationDirective,\n NgClass,\n ThyScrollDirective,\n ThyLoading,\n ThyEmpty,\n ThyOptionsContainer,\n ThyOption,\n ThySelectOptionGroup,\n NgTemplateOutlet\n ],\n host: {\n '[attr.tabindex]': 'tabIndex',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n },\n animations: [scaleXMotion, scaleYMotion, scaleMotion]\n})\nexport class ThySelect\n extends TabIndexDisabledControlValueAccessorMixin\n implements ControlValueAccessor, IThyOptionParentComponent, OnInit, AfterViewInit, AfterContentInit, OnDestroy\n{\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private overlay = inject(Overlay);\n private thyClickDispatcher = inject(ThyClickDispatcher);\n private platformId = inject(PLATFORM_ID);\n private locale: Signal<ThySelectLocale> = injectLocale('select');\n scrollStrategyFactory = inject<FunctionProp<ScrollStrategy>>(THY_SELECT_SCROLL_STRATEGY, { optional: true })!;\n selectConfig = inject(THY_SELECT_CONFIG, { optional: true })!;\n emptyIcon: Signal<string> = injectPanelEmptyIcon();\n\n disabled = false;\n\n size: SelectControlSize;\n\n mode: SelectMode = '';\n\n emptyStateText = this.locale().empty;\n\n emptySearchMessageText = this.locale().empty;\n\n scrollTop = 0;\n\n modalValue: any = null;\n\n defaultOffset = 4;\n\n dropDownClass: { [key: string]: boolean };\n\n dropDownMinWidth: number | null = null;\n\n /**\n * 设置下拉框的最小宽度,默认值 `match-select`,表示与输入框的宽度一致;`min-width` 表示最小宽度为200px;支持自定义最小宽度,比如传 `{minWidth: 150}` 表示最小宽度为150px\n * @default match-select\n */\n @Input() thyDropdownWidthMode: ThyDropdownWidthMode;\n\n public dropDownPositions: ConnectionPositionPair[];\n\n public selectionModel: SelectionModel<ThyOption>;\n\n public triggerRectWidth: number;\n\n public scrollStrategy: ScrollStrategy;\n\n private resizeSubscription: Subscription;\n\n private selectionModelSubscription: Subscription;\n\n /**\n * 手动聚焦中的标识\n */\n private manualFocusing = false;\n\n private config: ThySelectConfig;\n\n private readonly destroy$ = new Subject<void>();\n\n readonly optionSelectionChanges: Observable<ThyOptionSelectionChangeEvent> = defer(() => {\n if (this.options) {\n return merge(...this.options.map(option => option.selectionChange));\n }\n return this.ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionSelectionChanges)\n );\n }) as Observable<ThyOptionSelectionChangeEvent>;\n\n @ViewChild(CdkConnectedOverlay, { static: true }) cdkConnectedOverlay: CdkConnectedOverlay;\n\n @HostBinding('class.thy-select-custom') isSelectCustom = true;\n\n @HostBinding('class.thy-select') isSelect = true;\n\n keyManager: ActiveDescendantKeyManager<ThyOption>;\n\n @HostBinding('class.menu-is-opened')\n panelOpen = false;\n\n /**\n * 搜索时回调\n */\n @Output() thyOnSearch: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * 下拉菜单滚动到底部事件,可以用这个事件实现滚动加载\n */\n @Output() thyOnScrollToBottom: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * 下拉菜单展开和折叠状态事件\n */\n @Output() thyOnExpandStatusChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /**\n * 下拉列表是否显示搜索框\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyShowSearch: boolean;\n\n /**\n * 选择框默认文字\n */\n @Input() thyPlaceHolder = this.locale().placeholder;\n\n /**\n * 是否使用服务端搜索,当为 true 时,将不再在前端进行过滤\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyServerSearch: boolean;\n\n /**\n * 异步加载 loading 状态,false 表示加载中,true 表示加载完成\n */\n @Input({ transform: coerceBooleanProperty }) thyLoadState = true;\n\n /**\n * 是否自动设置选项第一条为高亮状态\n */\n @Input({ transform: coerceBooleanProperty }) thyAutoActiveFirstItem = true;\n\n /**\n * 下拉选择模式\n * @type 'multiple' | ''\n */\n @Input()\n set thyMode(value: SelectMode) {\n this.mode = value;\n this.instanceSelectionModel();\n this.getPositions();\n this.setDropDownClass();\n }\n\n get thyMode(): SelectMode {\n return this.mode;\n }\n\n /**\n * 操作图标类型\n * @type primary | success | danger | warning\n * @default primary\n */\n @Input()\n get thySize(): SelectControlSize {\n return this.size;\n }\n set thySize(value: SelectControlSize) {\n this.size = value;\n }\n\n /**\n * 数据为空时显示的提示文字\n */\n @Input()\n set thyEmptyStateText(value: string) {\n this.emptyStateText = value;\n }\n\n /**\n * 搜索结果为空时显示的提示文字\n */\n @Input()\n set thyEmptySearchMessageText(value: string) {\n this.emptySearchMessageText = value;\n }\n\n /**\n * 滚动加载是否可用,只能当这个参数可以,下面的thyOnScrollToBottom事件才会触发\n */\n @Input({ transform: coerceBooleanProperty })\n thyEnableScrollLoad = false;\n\n /**\n * 单选( thyMode=\"\" 或者不设置)时,选择框支持清除\n */\n @Input({ transform: coerceBooleanProperty }) thyAllowClear = false;\n\n /**\n * 是否禁用\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyDisabled(value: boolean) {\n this.disabled = value;\n }\n get thyDisabled(): boolean {\n return this.disabled;\n }\n\n /**\n * 排序比较函数\n */\n @Input() thySortComparator: (a: ThyOption, b: ThyOption, options: ThyOption[]) => number;\n\n /**\n * Footer 模板,默认值为空不显示 Footer\n * @type TemplateRef\n */\n @Input()\n thyFooterTemplate: TemplateRef<any>;\n\n /**\n * 弹出位置\n * @type ThyPlacement\n */\n @Input()\n thyPlacement: ThyPlacement;\n\n /**\n * 自定义 Overlay Origin\n */\n @Input()\n thyOrigin: ElementRef | HTMLElement;\n\n /**\n * 自定义 Footer 模板容器 class\n */\n @Input()\n thyFooterClass = 'thy-custom-select-footer';\n\n /**\n * @private\n */\n @ContentChild('selectedDisplay') selectedValueDisplayRef: TemplateRef<any>;\n\n /**\n * 初始化时,是否展开面板\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyAutoExpand: boolean;\n\n /**\n * 是否弹出透明遮罩,如果显示遮罩则会阻止滚动区域滚动\n */\n @Input({ transform: coerceBooleanProperty })\n thyHasBackdrop = false;\n\n /**\n * 设置多选时最大显示的标签数量,0 表示不限制\n */\n @Input({ transform: numberAttribute }) thyMaxTagCount = 0;\n\n /**\n * 是否隐藏选择框边框\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyBorderless = false;\n\n isReactiveDriven = false;\n\n innerOptions: ThySelectOptionModel[];\n\n optionGroups: ThyOptionGroupModel[] = [];\n\n /**\n * option 列表\n * @type ThySelectOptionModel[]\n */\n @Input()\n set thyOptions(value: ThySelectOptionModel[]) {\n if (value === null) {\n value = [];\n }\n this.innerOptions = value;\n this.isReactiveDriven = true;\n this.buildReactiveOptions();\n }\n\n options: QueryList<ThyOption>;\n\n /**\n * 目前只支持多选选中项的展示,默认为空,渲染文字模板,传入tag,渲染展示模板,\n * @default ''|tag\n */\n @Input() thyPreset: string = '';\n\n @ViewChild('trigger', { read: ElementRef, static: true }) trigger: ElementRef<HTMLElement>;\n\n @ViewChild('panel', { read: ElementRef }) panel: ElementRef<HTMLElement>;\n\n /**\n * @private\n */\n @ContentChildren(ThyOption, { descendants: true }) contentOptions: QueryList<ThyOption>;\n\n @ViewChildren(ThyOption) viewOptions: QueryList<ThyOption>;\n\n /**\n * @private\n */\n @ContentChildren(ThySelectOptionGroup) contentGroups: QueryList<ThySelectOptionGroup>;\n\n @ViewChildren(ThySelectOptionGroup) viewGroups: QueryList<ThySelectOptionGroup>;\n\n @HostListener('keydown', ['$event'])\n handleKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n if (event.keyCode === ENTER) {\n event.stopPropagation();\n }\n this.panelOpen ? this.handleOpenKeydown(event) : this.handleClosedKeydown(event);\n }\n }\n\n get optionsChanges$() {\n this.options = this.isReactiveDriven ? this.viewOptions : this.contentOptions;\n let previousOptions: ThyOption[] = this.options.toArray();\n return this.options.changes.pipe(\n map(data => {\n return this.options.toArray();\n }),\n filter(data => {\n const res = previousOptions.length !== data.length || previousOptions.some((op, index) => op !== data[index]);\n previousOptions = data;\n return res;\n })\n );\n }\n\n private buildScrollStrategy() {\n if (this.scrollStrategyFactory && isFunction(this.scrollStrategyFactory)) {\n this.scrollStrategy = this.scrollStrategyFactory();\n } else {\n this.scrollStrategy = this.overlay.scrollStrategies.reposition();\n }\n }\n\n private isSearching = false;\n\n groupBy = (item: ThySelectOptionModel) => item.groupLabel;\n\n get placement(): ThyPlacement {\n return this.thyPlacement || this.config.placement;\n }\n\n constructor() {\n super();\n const selectConfig = this.selectConfig;\n\n this.config = { ...DEFAULT_SELECT_CONFIG, ...selectConfig };\n this.buildScrollStrategy();\n }\n\n writeValue(value: any): void {\n this.modalValue = value;\n this.setSelectionByModelValue(this.modalValue);\n }\n\n ngOnInit() {\n this.getPositions();\n this.dropDownMinWidth = this.getDropdownMinWidth();\n if (!this.selectionModel) {\n this.instanceSelectionModel();\n }\n this.setDropDownClass();\n\n if (isPlatformBrowser(this.platformId)) {\n this.thyClickDispatcher\n .clicked(0)\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n if (!this.elementRef.nativeElement.contains(event.target) && this.panelOpen) {\n this.ngZone.run(() => {\n this.close();\n this.changeDetectorRef.markForCheck();\n });\n }\n });\n }\n }\n\n buildOptionGroups(options: ThySelectOptionModel[]) {\n const optionGroups: ThyOptionGroupModel[] = [];\n const groups = [...new Set(options.filter(item => this.groupBy(item)).map(sub => this.groupBy(sub)))];\n const groupMap = new Map();\n groups.forEach(group => {\n const children = options.filter(item => this.groupBy(item) === group);\n const groupOption = {\n groupLabel: group,\n children: children\n };\n groupMap.set(group, groupOption);\n });\n options.forEach(option => {\n if (this.groupBy(option)) {\n const currentIndex = optionGroups.findIndex(item => item.groupLabel === this.groupBy(option));\n if (currentIndex === -1) {\n const item = groupMap.get(this.groupBy(option));\n optionGroups.push(item);\n }\n } else {\n optionGroups.push(option);\n }\n });\n return optionGroups;\n }\n\n buildReactiveOptions() {\n if (this.innerOptions.filter(item => this.groupBy(item)).length > 0) {\n this.optionGroups = this.buildOptionGroups(this.innerOptions);\n } else {\n this.optionGroups = this.innerOptions;\n }\n }\n\n getDropdownMinWidth(): number | null {\n const mode = this.thyDropdownWidthMode || this.config.dropdownWidthMode;\n let dropdownMinWidth: number | null = null;\n\n if ((mode as { minWidth: number })?.minWidth) {\n dropdownMinWidth = (mode as { minWidth: number }).minWidth;\n } else if (mode === 'min-width') {\n dropdownMinWidth = THY_SELECT_PANEL_MIN_WIDTH;\n } else {\n dropdownMinWidth = null;\n }\n\n return dropdownMinWidth;\n }\n\n ngAfterViewInit(): void {\n if (this.isReactiveDriven) {\n this.setup();\n }\n }\n\n ngAfterContentInit() {\n if (!this.isReactiveDriven) {\n this.setup();\n }\n }\n\n setup() {\n this.optionsChanges$.pipe(startWith(null), takeUntil(this.destroy$)).subscribe(data => {\n this.resetOptions();\n this.initializeSelection();\n this.initKeyManager();\n if (this.isSearching) {\n this.highlightCorrectOption(false);\n this.isSearching = false;\n }\n this.changeDetectorRef.markForCheck();\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n if (this.cdkConnectedOverlay && this.cdkConnectedOverlay.overlayRef) {\n this.cdkConnectedOverlay.overlayRef.updatePosition();\n }\n });\n });\n\n if (this.thyAutoExpand) {\n timer(0).subscribe(() => {\n this.changeDetectorRef.markForCheck();\n this.open();\n this.focus();\n });\n }\n }\n\n public get isHiddenOptions(): boolean {\n return this.options.toArray().every(option => option.hidden);\n }\n\n public onAttached(): void {\n this.cdkConnectedOverlay.positionChange.pipe(take(1)).subscribe(() => {\n if (this.panel) {\n if (this.keyManager.activeItem) {\n ScrollToService.scrollToElement(this.keyManager.activeItem.element.nativeElement, this.panel.nativeElement);\n this.changeDetectorRef.detectChanges();\n } else {\n if (!this.empty) {\n ScrollToService.scrollToElement(this.selectionModel.selected[0].element.nativeElement, this.panel.nativeElement);\n this.changeDetectorRef.detectChanges();\n }\n }\n }\n });\n }\n\n public dropDownMouseMove(event: MouseEvent) {\n if (this.keyManager.activeItem) {\n this.keyManager.setActiveItem(-1);\n }\n }\n\n public onOptionsScrolled(elementRef: ElementRef) {\n const scroll = elementRef.nativeElement.scrollTop,\n height = elementRef.nativeElement.clientHeight,\n scrollHeight = elementRef.nativeElement.scrollHeight;\n\n if (scroll + height + 10 >= scrollHeight) {\n if (this.thyOnScrollToBottom.observers.length > 0) {\n this.ngZone.run(() => {\n this.thyOnScrollToBottom.emit();\n });\n }\n }\n }\n\n public onSearchFilter(searchText: string) {\n searchText = searchText.trim();\n if (this.thyServerSearch) {\n this.isSearching = true;\n this.thyOnSearch.emit(searchText);\n } else {\n const options = this.options.toArray();\n options.forEach(option => {\n if (option.matchSearchText(searchText)) {\n option.showOption();\n } else {\n option.hideOption();\n }\n });\n this.highlightCorrectOption(false);\n this.updateCdkConnectedOverlayPositions();\n }\n }\n\n onBlur(event?: FocusEvent) {\n // Tab 聚焦后自动聚焦到 input 输入框,此分支下直接返回,无需触发 onTouchedFn\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, ['.thy-select-dropdown', 'thy-select'])) {\n return;\n }\n this.onTouchedFn();\n }\n\n onFocus(event?: FocusEvent) {\n // thyShowSearch 与 panelOpen 均为 true 时,点击 thySelectControl 需要触发自动聚焦到 input 的逻辑\n // manualFocusing 如果是手动聚焦,不触发自动聚焦到 input 的逻辑\n if (\n (this.thyShowSearch && this.panelOpen) ||\n (!this.manualFocusing &&\n !elementMatchClosest(event?.relatedTarget as HTMLElement, ['.thy-select-dropdown', 'thy-custom-select']))\n ) {\n const inputElement: HTMLInputElement = this.elementRef.nativeElement.querySelector('input');\n inputElement.focus();\n }\n this.manualFocusing = false;\n }\n\n public focus(options?: FocusOptions): void {\n this.manualFocusing = true;\n this.elementRef.nativeElement.focus(options);\n this.manualFocusing = false;\n }\n\n public remove($event: { item: ThyOption; $eventOrigin: Event }) {\n $event.$eventOrigin.stopPropagation();\n if (this.disabled) {\n return;\n }\n if (!this.options.find(option => option === $event.item)) {\n $event.item.deselect();\n // fix option unselect can not emit changes;\n this.onSelect($event.item, true);\n } else {\n $event.item.deselect();\n }\n }\n\n public clearSelectValue(event?: Event) {\n if (event) {\n event.stopPropagation();\n }\n if (this.disabled) {\n return;\n }\n this.selectionModel.clear();\n this.changeDetectorRef.markForCheck();\n this.emitModelValueChange();\n }\n\n public updateCdkConnectedOverlayPositions(): void {\n setTimeout(() => {\n if (this.cdkConnectedOverlay && this.cdkConnectedOverlay.overlayRef) {\n this.cdkConnectedOverlay.overlayRef.updatePosition();\n }\n });\n }\n\n public get selected(): ThyOption | ThyOption[] {\n return this.isMultiple ? this.selectionModel.selected : this.selectionModel.selected[0];\n }\n\n public get isMultiple(): boolean {\n return this.mode === 'multiple';\n }\n\n public get empty(): boolean {\n return !this.selectionModel || this.selectionModel.isEmpty();\n }\n\n public getItemCount(): number {\n const group = this.isReactiveDriven ? this.viewGroups : this.contentGroups;\n return this.options.length + group.length;\n }\n\n public toggle(event: MouseEvent): void {\n if (this.panelOpen) {\n if (!this.thyShowSearch) {\n this.close();\n }\n } else {\n this.open();\n }\n }\n\n public open(): void {\n if (this.disabled || !this.options || this.panelOpen) {\n return;\n }\n this.triggerRectWidth = this.getOriginRectWidth();\n this.subscribeTriggerResize();\n this.panelOpen = true;\n this.highlightCorrectOption();\n this.thyOnExpandStatusChange.emit(this.panelOpen);\n this.changeDetectorRef.markForCheck();\n }\n\n public close(): void {\n if (this.panelOpen) {\n this.panelOpen = false;\n this.unsubscribeTriggerResize();\n this.thyOnExpandStatusChange.emit(this.panelOpen);\n this.changeDetectorRef.markForCheck();\n this.onTouchedFn();\n }\n }\n\n private emitModelValueChange() {\n const selectedValues = this.selectionModel.selected;\n const changeValue = selectedValues.map((option: ThyOption) => {\n return option.thyValue;\n });\n if (this.isMultiple) {\n this.modalValue = changeValue;\n } else {\n if (changeValue.length === 0) {\n this.modalValue = null;\n } else {\n this.modalValue = changeValue[0];\n }\n }\n this.onChangeFn(this.modalValue);\n this.updateCdkConnectedOverlayPositions();\n }\n\n private highlightCorrectOption(fromOpenPanel: boolean = true): void {\n if (this.keyManager && this.panelOpen) {\n if (fromOpenPanel) {\n if (this.keyManager.activeItem) {\n return;\n }\n if (this.empty) {\n if (!this.thyAutoActiveFirstItem) {\n return;\n }\n this.keyManager.setFirstItemActive();\n } else {\n this.keyManager.setActiveItem(this.selectionModel.selected[0]);\n }\n } else {\n if (!this.thyAutoActiveFirstItem) {\n return;\n }\n // always set first option active\n this.keyManager.setFirstItemActive();\n }\n }\n }\n\n private initKeyManager() {\n if (this.keyManager && this.keyManager.activeItem) {\n this.keyManager.activeItem.setInactiveStyles();\n }\n this.keyManager = new ActiveDescendantKeyManager<ThyOption>(this.options)\n .withTypeAhead()\n .withWrap()\n .withVerticalOrientation()\n .withAllowedModifierKeys(['shiftKey']);\n\n this.keyManager.tabOut.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.focus();\n this.close();\n });\n this.keyManager.change.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.panelOpen && this.panel) {\n if (this.keyManager.activeItem) {\n ScrollToService.scrollToElement(this.keyManager.activeItem.element.nativeElement, this.panel.nativeElement);\n }\n } else if (!this.panelOpen && !this.isMultiple && this.keyManager.activeItem) {\n this.keyManager.activeItem.selectViaInteraction();\n }\n });\n }\n\n private handleClosedKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const manager = this.keyManager;\n\n // Open the select on ALT + arrow key to match the native <select>\n if ((isOpenKey && !hasModifierKey(event)) || ((this.isMultiple || event.altKey) && isArrowKey)) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n } else if (!this.isMultiple) {\n if (keyCode === HOME || keyCode === END) {\n keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n event.preventDefault();\n } else {\n manager.onKeydown(event);\n }\n }\n }\n\n private handleOpenKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n const manager = this.keyManager;\n\n if (keyCode === HOME || keyCode === END) {\n event.preventDefault();\n keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n } else if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n } else if ((keyCode === ENTER || keyCode === SPACE) && (manager.activeItem || !this.empty) && !hasModifierKey(event)) {\n event.preventDefault();\n if (!manager.activeItem) {\n if (manager.activeItemIndex === -1 && !this.empty) {\n manager.setActiveItem(this.selectionModel.selected[0]);\n }\n }\n manager.activeItem.selectViaInteraction();\n } else if (this.isMultiple && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options.some(opt => !opt.disabled && !opt.selected);\n\n this.options.forEach(option => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n } else {\n if (manager.activeItemIndex === -1 && !this.empty) {\n manager.setActiveItem(this.selectionModel.selected[0]);\n }\n const previouslyFocusedIndex = manager.activeItemIndex;\n\n manager.onKeydown(event);\n\n if (\n this.isMultiple &&\n isArrowKey &&\n event.shiftKey &&\n manager.activeItem &&\n manager.activeItemIndex !== previouslyFocusedIndex\n ) {\n manager.activeItem.selectViaInteraction();\n }\n }\n }\n\n private getPositions() {\n this.dropDownPositions = getFlexiblePositions(this.thyPlacement || this.config.placement, this.defaultOffset);\n }\n\n private instanceSelectionModel() {\n if (this.selectionModel) {\n this.selectionModel.clear();\n }\n this.selectionModel = new SelectionModel<ThyOption>(this.isMultiple);\n if (this.selectionModelSubscription) {\n this.selectionModelSubscription.unsubscribe();\n this.selectionModelSubscription = null;\n }\n this.selectionModelSubscription = this.selectionModel.changed.pipe(takeUntil(this.destroy$)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\n }\n\n private resetOptions() {\n const changedOrDestroyed$ = merge(this.optionsChanges$, this.destroy$);\n\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed$)).subscribe((event: ThyOptionSelectionChangeEvent) => {\n this.onSelect(event.option, event.isUserInput);\n if (event.isUserInput && !this.isMultiple && this.panelOpen) {\n this.close();\n this.focus();\n }\n });\n }\n\n private initializeSelection() {\n Promise.resolve().then(() => {\n this.setSelectionByModelValue(this.modalValue);\n });\n }\n\n private setDropDownClass() {\n let modeClass = '';\n if (this.isMultiple) {\n modeClass = `thy-select-dropdown-${this.mode}`;\n } else {\n modeClass = `thy-select-dropdown-single`;\n }\n this.dropDownClass = {\n [`thy-select-dropdown`]: true,\n [modeClass]: true\n };\n }\n\n private setSelectionByModelValue(modalValue: any) {\n if (helpers.isUndefinedOrNull(modalValue)) {\n if (this.selectionModel.selected.length > 0) {\n this.selectionModel.clear();\n this.changeDetectorRef.markForCheck();\n }\n return;\n }\n if (this.isMultiple) {\n if (isArray(modalValue)) {\n const selected = [...this.selectionModel.selected];\n this.selectionModel.clear();\n (modalValue as Array<any>).forEach(itemValue => {\n const option =\n this.options.find(_option => _option.thyValue === itemValue) ||\n selected.find(_option => _option.thyValue === itemValue);\n if (option) {\n this.selectionModel.select(option);\n }\n });\n }\n } else {\n const selectedOption = this.options?.find(option => {\n return option.thyValue === modalValue;\n });\n if (selectedOption) {\n this.selectionModel.select(selectedOption);\n }\n }\n this.changeDetectorRef.markForCheck();\n }\n\n private onSelect(option: ThyOption, isUserInput: boolean) {\n const wasSelected = this.selectionModel.isSelected(option);\n\n if (option.thyValue == null && !this.isMultiple) {\n option.deselect();\n this.selectionModel.clear();\n } else {\n if (wasSelected !== option.selected) {\n option.selected ? this.selectionModel.select(option) : this.selectionModel.deselect(option);\n }\n\n if (isUserInput) {\n this.keyManager.setActiveItem(option);\n }\n\n if (this.isMultiple) {\n this.sortValues();\n if (isUserInput) {\n this.focus();\n }\n }\n }\n\n if (wasSelected !== this.selectionModel.isSelected(option)) {\n this.emitModelValueChange();\n }\n if (!this.isMultiple) {\n this.onTouchedFn();\n }\n this.changeDetectorRef.markForCheck();\n }\n\n private sortValues() {\n if (this.isMultiple) {\n const options = this.options.toArray();\n\n if (this.thySortComparator) {\n this.selectionModel.sort((a, b) => {\n return this.thySortComparator(a, b, options);\n });\n }\n }\n }\n\n private getOriginRectWidth() {\n return this.thyOrigin ? coerceElement(this.thyOrigin).offsetWidth : this.trigger.nativeElement.offsetWidth;\n }\n\n private subscribeTriggerResize(): void {\n this.unsubscribeTriggerResize();\n this.ngZone.runOutsideAngular(() => {\n this.resizeSubscription = new Observable<number>(observer => {\n const resize = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n observer.next();\n });\n resize.observe(this.trigger.nativeElement);\n })\n .pipe(\n startWith(),\n map(() => {\n return this.getOriginRectWidth();\n }),\n distinctUntilChanged()\n )\n .subscribe((width: number) => {\n this.ngZone.run(() => {\n this.triggerRectWidth = width;\n this.updateCdkConnectedOverlayPositions();\n this.changeDetectorRef.markForCheck();\n });\n });\n });\n }\n\n private unsubscribeTriggerResize(): void {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n this.resizeSubscription = null;\n }\n }\n\n ngOnDestroy() {\n this.unsubscribeTriggerResize();\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div\n cdk-overlay-origin\n thySelectControl\n (click)=\"toggle($event)\"\n #origin=\"cdkOverlayOrigin\"\n #trigger\n [thyPanelOpened]=\"panelOpen\"\n [thySelectedOptions]=\"selected\"\n [thyIsMultiple]=\"isMultiple\"\n [thyShowSearch]=\"thyShowSearch\"\n [thyAllowClear]=\"thyAllowClear\"\n [thySize]=\"thySize\"\n [thyPlaceholder]=\"thyPlaceHolder\"\n [customDisplayTemplate]=\"selectedValueDisplayRef\"\n [thyDisabled]=\"disabled\"\n [thyBorderless]=\"thyBorderless\"\n (thyOnClear)=\"clearSelectValue($event)\"\n (thyOnRemove)=\"remove($event)\"\n (thyOnSearch)=\"onSearchFilter($event)\"\n (thyOnBlur)=\"onBlur($event)\"\n [thyMaxTagCount]=\"thyMaxTagCount\"\n [thyPreset]=\"thyPreset\"></div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayHasBackdrop]=\"thyHasBackdrop\"\n [cdkConnectedOverlayPositions]=\"dropDownPositions\"\n [cdkConnectedOverlayOrigin]=\"thyOrigin || origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"triggerRectWidth\"\n [cdkConnectedOverlayMinWidth]=\"dropDownMinWidth\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n cdkConnectedOverlayTransformOriginOn=\".thy-select-dropdown\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n <div\n thyStopPropagation\n [attr.tabindex]=\"-1\"\n [ngClass]=\"dropDownClass\"\n [@scaleYMotion]=\"placement === 'top' || placement === 'bottom' ? 'enter' : 'void'\"\n [@scaleXMotion]=\"placement === 'left' || placement === 'right' ? 'enter' : 'void'\"\n [@scaleMotion]=\"placement !== 'top' && placement !== 'bottom' && placement !== 'left' && placement !== 'right' ? 'enter' : 'void'\"\n (mousemove)=\"dropDownMouseMove($event)\">\n @if (contentOptions?.length > 0 || contentGroups?.length > 0 || innerOptions?.length > 0) {\n <div\n #panel\n class=\"thy-select-dropdown-options thy-select-dropdown-options-{{ size }}\"\n thyScroll\n (thyOnScrolled)=\"onOptionsScrolled($event)\"\n [thyEnable]=\"thyEnableScrollLoad\">\n @if (isReactiveDriven) {\n <ng-template [ngTemplateOutlet]=\"optionsContainer.optionsTemplate\"></ng-template>\n }\n <ng-content></ng-content>\n @if (isHiddenOptions) {\n <thy-loading [thyDone]=\"thyLoadState\" thySize=\"sm\"></thy-loading>\n <div class=\"thy-select-empty-content\">\n @if (thyLoadState) {\n <thy-empty [thyMessage]=\"emptySearchMessageText\" thySize=\"sm\" [thyIconName]=\"emptyIcon()\"></thy-empty>\n }\n </div>\n }\n </div>\n } @else {\n <thy-loading [thyDone]=\"thyLoadState\" thySize=\"sm\"></thy-loading>\n <div class=\"thy-select-empty-content\">\n @if (thyLoadState) {\n <thy-empty [thyMessage]=\"emptyStateText\" thySize=\"sm\" [thyIconName]=\"emptyIcon()\"></thy-empty>\n }\n </div>\n }\n @if (thyFooterTemplate) {\n <div [class]=\"thyFooterClass ? thyFooterClass : 'thy-custom-select-footer'\">\n @if (thyFooterTemplate) {\n <ng-template [ngTemplateOutlet]=\"thyFooterTemplate\"></ng-template>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<thy-options-container #optionsContainer>\n @for (option of optionGroups; track $index) {\n @if (!option.children) {\n <thy-option\n [thyDisabled]=\"option.disabled\"\n [thyLabelText]=\"option.label\"\n [thyValue]=\"option.value\"\n [thyRawValue]=\"option\"></thy-option>\n } @else {\n <thy-option-group [thyGroupLabel]=\"option.groupLabel\">\n @for (sub of option.children; track sub.value) {\n <thy-option [thyDisabled]=\"sub.disabled\" [thyLabelText]=\"sub.label\" [thyValue]=\"sub.value\" [thyRawValue]=\"sub\"></thy-option>\n }\n </thy-option-group>\n }\n }\n</thy-options-container>\n","import { Component, forwardRef, HostBinding, Input, OnInit, inject } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, elementMatchClosest } from 'ngx-tethys/util';\n\nimport { ElementRef, ViewChild } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInputDirective } from 'ngx-tethys/input';\n\nexport type InputSize = 'xs' | 'sm' | 'md' | 'lg' | '';\n\nconst noop = () => {};\n\n/**\n * 下拉选择\n * @name thy-native-select\n * @order 20\n */\n@Component({\n selector: 'thy-native-select',\n templateUrl: './native-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyNativeSelect),\n multi: true\n }\n ],\n standalone: true,\n imports: [ThyInputDirective, FormsModule, ThyIcon],\n host: {\n '[attr.tabindex]': 'tabIndex',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n }\n})\nexport class ThyNativeSelect extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor, OnInit {\n private elementRef = inject(ElementRef);\n\n @ViewChild('select', { static: true }) selectElement: ElementRef<any>;\n\n // The internal data model\n _innerValue: any = null;\n _disabled = false;\n _size: InputSize;\n _expandOptions = false;\n\n private hostRenderer = useHostRenderer();\n\n @HostBinding('class.thy-select') _isSelect = true;\n\n @Input()\n set thySize(value: InputSize) {\n this._size = value;\n }\n\n @Input() name: string;\n\n @Input({ transform: coerceBooleanProperty }) thyAllowClear = false;\n\n writeValue(obj: any): void {\n if (obj !== this._innerValue) {\n this._innerValue = obj;\n }\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this._disabled = isDisabled;\n }\n\n constructor() {\n super();\n }\n\n ngModelChange() {\n this.onChangeFn(this._innerValue);\n this.onTouchedFn();\n }\n\n ngOnInit() {\n const classes = this._size ? [`thy-select-${this._size}`] : [];\n this.hostRenderer.updateClass(classes);\n }\n\n onBlur(event: FocusEvent) {\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, 'thy-native-select')) {\n return;\n }\n this.onTouchedFn();\n }\n\n onFocus(event?: Event) {\n this.selectElement.nativeElement.focus();\n }\n\n clearSelectValue(event: Event) {\n event.stopPropagation();\n this._innerValue = '';\n this.onChangeFn(this._innerValue);\n }\n}\n","<select\n #select\n thyInput\n [tabindex]=\"-1\"\n [thySize]=\"_size\"\n [disabled]=\"_disabled\"\n [(ngModel)]=\"_innerValue\"\n (ngModelChange)=\"ngModelChange()\"\n (blur)=\"onBlur($event)\"\n [class.thy-select-selection-allow-clear]=\"thyAllowClear\">\n <ng-content></ng-content>\n</select>\n<thy-icon thyIconName=\"angle-down\"></thy-icon>\n@if (thyAllowClear && _innerValue) {\n <a class=\"thy-select-remove remove-link\" href=\"javascript:;\" (click)=\"clearSelectValue($event)\">\n <thy-icon class=\"remove-link-icon\" thyIconName=\"close-circle-bold-fill\"></thy-icon>\n </a>\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyEmptyModule } from 'ngx-tethys/empty';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyOptionModule, ThySelectCommonModule, ThySharedModule } from 'ngx-tethys/shared';\nimport { ThySelect } from './custom-select/custom-select.component';\nimport { ThyNativeSelect } from './native-select/native-select.component';\nimport { THY_SELECT_CONFIG_PROVIDER, THY_SELECT_SCROLL_STRATEGY_PROVIDER } from './select.config';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyInputModule,\n OverlayModule,\n ThyLoadingModule,\n ThySharedModule,\n ThyIconModule,\n ThyEmptyModule,\n ThySelectCommonModule,\n ThyOptionModule,\n ThyNativeSelect,\n ThySelect\n ],\n exports: [ThyNativeSelect, ThySelect, ThyOptionModule],\n providers: [THY_SELECT_SCROLL_STRATEGY_PROVIDER, THY_SELECT_CONFIG_PROVIDER]\n})\nexport class ThySelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["noop"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-select.mjs","sources":["../../../src/select/select.config.ts","../../../src/select/custom-select/custom-select.component.ts","../../../src/select/custom-select/custom-select.component.html","../../../src/select/native-select/native-select.component.ts","../../../src/select/native-select/native-select.component.html","../../../src/select/module.ts","../../../src/select/ngx-tethys-select.ts"],"sourcesContent":["import { Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\nimport { ThyPlacement } from 'ngx-tethys/core';\n\nexport const THY_SELECT_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('thy-select-scroll-strategy');\n\nexport const THY_SELECT_SCROLL_STRATEGY_FACTORY = (overlay: Overlay) => {\n return () => overlay.scrollStrategies.reposition();\n};\n\nexport const THY_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: THY_SELECT_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: THY_SELECT_SCROLL_STRATEGY_FACTORY\n};\n\nexport type ThyDropdownWidthMode = 'match-select' | 'min-width' | { minWidth: number };\n\n/**\n * 打开select下拉菜单的配置\n * @public\n * @order 30\n */\nexport interface ThySelectConfig {\n /**\n * 下拉菜单的最小宽度\n */\n dropdownWidthMode?: ThyDropdownWidthMode;\n\n /**\n * 下拉菜单的弹出位置\n */\n placement?: ThyPlacement;\n}\n\nexport const DEFAULT_SELECT_CONFIG: ThySelectConfig = {\n dropdownWidthMode: 'match-select',\n placement: 'bottom'\n};\n\nexport const THY_SELECT_CONFIG = new InjectionToken<ThySelectConfig>('thy-select-config');\n\nexport const THY_SELECT_CONFIG_PROVIDER = {\n provide: THY_SELECT_CONFIG,\n useValue: DEFAULT_SELECT_CONFIG\n};\n","import {\n getFlexiblePositions,\n injectPanelEmptyIcon,\n scaleMotion,\n scaleXMotion,\n scaleYMotion,\n ScrollToService,\n TabIndexDisabledControlValueAccessorMixin,\n ThyClickDispatcher,\n ThyPlacement\n} from 'ngx-tethys/core';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { ThyLoading } from 'ngx-tethys/loading';\nimport {\n IThyOptionParentComponent,\n SelectControlSize,\n THY_OPTION_PARENT_COMPONENT,\n ThyOption,\n ThyOptionsContainer,\n ThyOptionSelectionChangeEvent,\n ThyScrollDirective,\n ThySelectControl,\n ThySelectOptionGroup,\n ThyStopPropagationDirective\n} from 'ngx-tethys/shared';\nimport {\n A,\n coerceBooleanProperty,\n DOWN_ARROW,\n elementMatchClosest,\n END,\n ENTER,\n FunctionProp,\n hasModifierKey,\n helpers,\n HOME,\n isArray,\n isFunction,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW\n} from 'ngx-tethys/util';\nimport { defer, merge, Observable, Subject, Subscription, timer } from 'rxjs';\nimport { distinctUntilChanged, filter, map, startWith, switchMap, take, takeUntil } from 'rxjs/operators';\n\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectionPositionPair, Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { isPlatformBrowser, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n NgZone,\n numberAttribute,\n OnDestroy,\n OnInit,\n Output,\n PLATFORM_ID,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n inject,\n Signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {\n DEFAULT_SELECT_CONFIG,\n THY_SELECT_CONFIG,\n THY_SELECT_SCROLL_STRATEGY,\n ThyDropdownWidthMode,\n ThySelectConfig\n} from '../select.config';\nimport { injectLocale, ThySelectLocale } from 'ngx-tethys/i18n';\n\nexport type SelectMode = 'multiple' | '';\n\nexport type ThySelectTriggerType = 'click' | 'hover';\n\nexport const SELECT_PANEL_MAX_HEIGHT = 300;\n\nexport const SELECT_OPTION_MAX_HEIGHT = 40;\n\nexport const SELECT_OPTION_GROUP_MAX_HEIGHT = 30;\n\nexport const SELECT_PANEL_PADDING_TOP = 10;\n\nexport const THY_SELECT_PANEL_MIN_WIDTH = 200;\n\nexport interface OptionValue {\n thyLabelText?: string;\n thyValue?: string;\n thyDisabled?: boolean;\n thyShowOptionCustom?: boolean;\n thySearchKey?: string;\n}\n\nexport interface ThySelectOptionModel {\n value?: string | number;\n disabled?: boolean;\n label?: string;\n icon?: string;\n groupLabel?: string;\n}\n\ninterface ThyOptionGroupModel extends ThySelectOptionModel {\n children?: ThySelectOptionModel[];\n}\n\nconst noop = () => {};\n\n/**\n * 下拉选择组件\n * @name thy-select,thy-custom-select\n * @order 10\n */\n@Component({\n selector: 'thy-select,thy-custom-select',\n templateUrl: './custom-select.component.html',\n exportAs: 'thySelect',\n providers: [\n {\n provide: THY_OPTION_PARENT_COMPONENT,\n useExisting: ThySelect\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThySelect),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CdkOverlayOrigin,\n ThySelectControl,\n CdkConnectedOverlay,\n ThyStopPropagationDirective,\n NgClass,\n ThyScrollDirective,\n ThyLoading,\n ThyEmpty,\n ThyOptionsContainer,\n ThyOption,\n ThySelectOptionGroup,\n NgTemplateOutlet\n ],\n host: {\n '[attr.tabindex]': 'tabIndex',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n },\n animations: [scaleXMotion, scaleYMotion, scaleMotion]\n})\nexport class ThySelect\n extends TabIndexDisabledControlValueAccessorMixin\n implements ControlValueAccessor, IThyOptionParentComponent, OnInit, AfterViewInit, AfterContentInit, OnDestroy\n{\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n private changeDetectorRef = inject(ChangeDetectorRef);\n private overlay = inject(Overlay);\n private thyClickDispatcher = inject(ThyClickDispatcher);\n private platformId = inject(PLATFORM_ID);\n private locale: Signal<ThySelectLocale> = injectLocale('select');\n scrollStrategyFactory = inject<FunctionProp<ScrollStrategy>>(THY_SELECT_SCROLL_STRATEGY, { optional: true })!;\n selectConfig = inject(THY_SELECT_CONFIG, { optional: true })!;\n emptyIcon: Signal<string> = injectPanelEmptyIcon();\n\n disabled = false;\n\n size: SelectControlSize;\n\n mode: SelectMode = '';\n\n emptyStateText = this.locale().empty;\n\n emptySearchMessageText = this.locale().empty;\n\n scrollTop = 0;\n\n modalValue: any = null;\n\n defaultOffset = 4;\n\n dropDownClass: { [key: string]: boolean };\n\n dropDownMinWidth: number | null = null;\n\n /**\n * 设置下拉框的最小宽度,默认值 `match-select`,表示与输入框的宽度一致;`min-width` 表示最小宽度为200px;支持自定义最小宽度,比如传 `{minWidth: 150}` 表示最小宽度为150px\n * @default match-select\n */\n @Input() thyDropdownWidthMode: ThyDropdownWidthMode;\n\n public dropDownPositions: ConnectionPositionPair[];\n\n public selectionModel: SelectionModel<ThyOption>;\n\n public triggerRectWidth: number;\n\n public scrollStrategy: ScrollStrategy;\n\n private resizeSubscription: Subscription;\n\n private selectionModelSubscription: Subscription;\n\n /**\n * 手动聚焦中的标识\n */\n private manualFocusing = false;\n\n private config: ThySelectConfig;\n\n private readonly destroy$ = new Subject<void>();\n\n readonly optionSelectionChanges: Observable<ThyOptionSelectionChangeEvent> = defer(() => {\n if (this.options) {\n return merge(...this.options.map(option => option.selectionChange));\n }\n return this.ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionSelectionChanges)\n );\n }) as Observable<ThyOptionSelectionChangeEvent>;\n\n @ViewChild(CdkConnectedOverlay, { static: true }) cdkConnectedOverlay: CdkConnectedOverlay;\n\n @HostBinding('class.thy-select-custom') isSelectCustom = true;\n\n @HostBinding('class.thy-select') isSelect = true;\n\n keyManager: ActiveDescendantKeyManager<ThyOption>;\n\n @HostBinding('class.menu-is-opened')\n panelOpen = false;\n\n /**\n * 搜索时回调\n */\n @Output() thyOnSearch: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * 下拉菜单滚动到底部事件,可以用这个事件实现滚动加载\n */\n @Output() thyOnScrollToBottom: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * 下拉菜单展开和折叠状态事件\n */\n @Output() thyOnExpandStatusChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /**\n * 下拉列表是否显示搜索框\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyShowSearch: boolean;\n\n /**\n * 选择框默认文字\n */\n @Input() thyPlaceHolder = this.locale().placeholder;\n\n /**\n * 是否使用服务端搜索,当为 true 时,将不再在前端进行过滤\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyServerSearch: boolean;\n\n /**\n * 异步加载 loading 状态,false 表示加载中,true 表示加载完成\n */\n @Input({ transform: coerceBooleanProperty }) thyLoadState = true;\n\n /**\n * 是否自动设置选项第一条为高亮状态\n */\n @Input({ transform: coerceBooleanProperty }) thyAutoActiveFirstItem = true;\n\n /**\n * 下拉选择模式\n * @type 'multiple' | ''\n */\n @Input()\n set thyMode(value: SelectMode) {\n this.mode = value;\n this.instanceSelectionModel();\n this.getPositions();\n this.setDropDownClass();\n }\n\n get thyMode(): SelectMode {\n return this.mode;\n }\n\n /**\n * 操作图标类型\n * @type primary | success | danger | warning\n * @default primary\n */\n @Input()\n get thySize(): SelectControlSize {\n return this.size;\n }\n set thySize(value: SelectControlSize) {\n this.size = value;\n }\n\n /**\n * 数据为空时显示的提示文字\n */\n @Input()\n set thyEmptyStateText(value: string) {\n this.emptyStateText = value;\n }\n\n /**\n * 搜索结果为空时显示的提示文字\n */\n @Input()\n set thyEmptySearchMessageText(value: string) {\n this.emptySearchMessageText = value;\n }\n\n /**\n * 滚动加载是否可用,只能当这个参数可以,下面的thyOnScrollToBottom事件才会触发\n */\n @Input({ transform: coerceBooleanProperty })\n thyEnableScrollLoad = false;\n\n /**\n * 单选( thyMode=\"\" 或者不设置)时,选择框支持清除\n */\n @Input({ transform: coerceBooleanProperty }) thyAllowClear = false;\n\n /**\n * 是否禁用\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyDisabled(value: boolean) {\n this.disabled = value;\n }\n get thyDisabled(): boolean {\n return this.disabled;\n }\n\n /**\n * 排序比较函数\n */\n @Input() thySortComparator: (a: ThyOption, b: ThyOption, options: ThyOption[]) => number;\n\n /**\n * Footer 模板,默认值为空不显示 Footer\n * @type TemplateRef\n */\n @Input()\n thyFooterTemplate: TemplateRef<any>;\n\n /**\n * 弹出位置\n * @type ThyPlacement\n */\n @Input()\n thyPlacement: ThyPlacement;\n\n /**\n * 自定义 Overlay Origin\n */\n @Input()\n thyOrigin: ElementRef | HTMLElement;\n\n /**\n * 自定义 Footer 模板容器 class\n */\n @Input()\n thyFooterClass = 'thy-custom-select-footer';\n\n /**\n * @private\n */\n @ContentChild('selectedDisplay') selectedValueDisplayRef: TemplateRef<any>;\n\n /**\n * 初始化时,是否展开面板\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyAutoExpand: boolean;\n\n /**\n * 是否弹出透明遮罩,如果显示遮罩则会阻止滚动区域滚动\n */\n @Input({ transform: coerceBooleanProperty })\n thyHasBackdrop = false;\n\n /**\n * 设置多选时最大显示的标签数量,0 表示不限制\n */\n @Input({ transform: numberAttribute }) thyMaxTagCount = 0;\n\n /**\n * 是否隐藏选择框边框\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyBorderless = false;\n\n isReactiveDriven = false;\n\n innerOptions: ThySelectOptionModel[];\n\n optionGroups: ThyOptionGroupModel[] = [];\n\n /**\n * option 列表\n * @type ThySelectOptionModel[]\n */\n @Input()\n set thyOptions(value: ThySelectOptionModel[]) {\n if (value === null) {\n value = [];\n }\n this.innerOptions = value;\n this.isReactiveDriven = true;\n this.buildReactiveOptions();\n }\n\n options: QueryList<ThyOption>;\n\n /**\n * 目前只支持多选选中项的展示,默认为空,渲染文字模板,传入tag,渲染展示模板,\n * @default ''|tag\n */\n @Input() thyPreset: string = '';\n\n @ViewChild('trigger', { read: ElementRef, static: true }) trigger: ElementRef<HTMLElement>;\n\n @ViewChild('panel', { read: ElementRef }) panel: ElementRef<HTMLElement>;\n\n /**\n * @private\n */\n @ContentChildren(ThyOption, { descendants: true }) contentOptions: QueryList<ThyOption>;\n\n @ViewChildren(ThyOption) viewOptions: QueryList<ThyOption>;\n\n /**\n * @private\n */\n @ContentChildren(ThySelectOptionGroup) contentGroups: QueryList<ThySelectOptionGroup>;\n\n @ViewChildren(ThySelectOptionGroup) viewGroups: QueryList<ThySelectOptionGroup>;\n\n @HostListener('keydown', ['$event'])\n handleKeydown(event: KeyboardEvent): void {\n if (!this.disabled) {\n if (event.keyCode === ENTER) {\n event.stopPropagation();\n }\n this.panelOpen ? this.handleOpenKeydown(event) : this.handleClosedKeydown(event);\n }\n }\n\n get optionsChanges$() {\n this.options = this.isReactiveDriven ? this.viewOptions : this.contentOptions;\n let previousOptions: ThyOption[] = this.options.toArray();\n return this.options.changes.pipe(\n map(data => {\n return this.options.toArray();\n }),\n filter(data => {\n const res = previousOptions.length !== data.length || previousOptions.some((op, index) => op !== data[index]);\n previousOptions = data;\n return res;\n })\n );\n }\n\n private buildScrollStrategy() {\n if (this.scrollStrategyFactory && isFunction(this.scrollStrategyFactory)) {\n this.scrollStrategy = this.scrollStrategyFactory();\n } else {\n this.scrollStrategy = this.overlay.scrollStrategies.reposition();\n }\n }\n\n private isSearching = false;\n\n groupBy = (item: ThySelectOptionModel) => item.groupLabel;\n\n get placement(): ThyPlacement {\n return this.thyPlacement || this.config.placement;\n }\n\n constructor() {\n super();\n const selectConfig = this.selectConfig;\n\n this.config = { ...DEFAULT_SELECT_CONFIG, ...selectConfig };\n this.buildScrollStrategy();\n }\n\n writeValue(value: any): void {\n this.modalValue = value;\n this.setSelectionByModelValue(this.modalValue);\n }\n\n ngOnInit() {\n this.getPositions();\n this.dropDownMinWidth = this.getDropdownMinWidth();\n if (!this.selectionModel) {\n this.instanceSelectionModel();\n }\n this.setDropDownClass();\n\n if (isPlatformBrowser(this.platformId)) {\n this.thyClickDispatcher\n .clicked(0)\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n if (!this.elementRef.nativeElement.contains(event.target) && this.panelOpen) {\n this.ngZone.run(() => {\n this.close();\n this.changeDetectorRef.markForCheck();\n });\n }\n });\n }\n }\n\n buildOptionGroups(options: ThySelectOptionModel[]) {\n const optionGroups: ThyOptionGroupModel[] = [];\n const groups = [...new Set(options.filter(item => this.groupBy(item)).map(sub => this.groupBy(sub)))];\n const groupMap = new Map();\n groups.forEach(group => {\n const children = options.filter(item => this.groupBy(item) === group);\n const groupOption = {\n groupLabel: group,\n children: children\n };\n groupMap.set(group, groupOption);\n });\n options.forEach(option => {\n if (this.groupBy(option)) {\n const currentIndex = optionGroups.findIndex(item => item.groupLabel === this.groupBy(option));\n if (currentIndex === -1) {\n const item = groupMap.get(this.groupBy(option));\n optionGroups.push(item);\n }\n } else {\n optionGroups.push(option);\n }\n });\n return optionGroups;\n }\n\n buildReactiveOptions() {\n if (this.innerOptions.filter(item => this.groupBy(item)).length > 0) {\n this.optionGroups = this.buildOptionGroups(this.innerOptions);\n } else {\n this.optionGroups = this.innerOptions;\n }\n }\n\n getDropdownMinWidth(): number | null {\n const mode = this.thyDropdownWidthMode || this.config.dropdownWidthMode;\n let dropdownMinWidth: number | null = null;\n\n if ((mode as { minWidth: number })?.minWidth) {\n dropdownMinWidth = (mode as { minWidth: number }).minWidth;\n } else if (mode === 'min-width') {\n dropdownMinWidth = THY_SELECT_PANEL_MIN_WIDTH;\n } else {\n dropdownMinWidth = null;\n }\n\n return dropdownMinWidth;\n }\n\n ngAfterViewInit(): void {\n if (this.isReactiveDriven) {\n this.setup();\n }\n }\n\n ngAfterContentInit() {\n if (!this.isReactiveDriven) {\n this.setup();\n }\n }\n\n setup() {\n this.optionsChanges$.pipe(startWith(null), takeUntil(this.destroy$)).subscribe(data => {\n this.resetOptions();\n this.initializeSelection();\n this.initKeyManager();\n if (this.isSearching) {\n this.highlightCorrectOption(false);\n this.isSearching = false;\n }\n this.changeDetectorRef.markForCheck();\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n if (this.cdkConnectedOverlay && this.cdkConnectedOverlay.overlayRef) {\n this.cdkConnectedOverlay.overlayRef.updatePosition();\n }\n });\n });\n\n if (this.thyAutoExpand) {\n timer(0).subscribe(() => {\n this.changeDetectorRef.markForCheck();\n this.open();\n this.focus();\n });\n }\n }\n\n public get isHiddenOptions(): boolean {\n return this.options.toArray().every(option => option.hidden);\n }\n\n public onAttached(): void {\n this.cdkConnectedOverlay.positionChange.pipe(take(1)).subscribe(() => {\n if (this.panel) {\n if (this.keyManager.activeItem) {\n ScrollToService.scrollToElement(this.keyManager.activeItem.element.nativeElement, this.panel.nativeElement);\n this.changeDetectorRef.detectChanges();\n } else {\n if (!this.empty) {\n ScrollToService.scrollToElement(this.selectionModel.selected[0].element.nativeElement, this.panel.nativeElement);\n this.changeDetectorRef.detectChanges();\n }\n }\n }\n });\n }\n\n public dropDownMouseMove(event: MouseEvent) {\n if (this.keyManager.activeItem) {\n this.keyManager.setActiveItem(-1);\n }\n }\n\n public onOptionsScrolled(elementRef: ElementRef) {\n const scroll = elementRef.nativeElement.scrollTop,\n height = elementRef.nativeElement.clientHeight,\n scrollHeight = elementRef.nativeElement.scrollHeight;\n\n if (scroll + height + 10 >= scrollHeight) {\n if (this.thyOnScrollToBottom.observers.length > 0) {\n this.ngZone.run(() => {\n this.thyOnScrollToBottom.emit();\n });\n }\n }\n }\n\n public onSearchFilter(searchText: string) {\n searchText = searchText.trim();\n if (this.thyServerSearch) {\n this.isSearching = true;\n this.thyOnSearch.emit(searchText);\n } else {\n const options = this.options.toArray();\n options.forEach(option => {\n if (option.matchSearchText(searchText)) {\n option.showOption();\n } else {\n option.hideOption();\n }\n });\n this.highlightCorrectOption(false);\n this.updateCdkConnectedOverlayPositions();\n }\n }\n\n onBlur(event?: FocusEvent) {\n // Tab 聚焦后自动聚焦到 input 输入框,此分支下直接返回,无需触发 onTouchedFn\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, ['.thy-select-dropdown', 'thy-select'])) {\n return;\n }\n this.onTouchedFn();\n }\n\n onFocus(event?: FocusEvent) {\n // thyShowSearch 与 panelOpen 均为 true 时,点击 thySelectControl 需要触发自动聚焦到 input 的逻辑\n // manualFocusing 如果是手动聚焦,不触发自动聚焦到 input 的逻辑\n if (\n (this.thyShowSearch && this.panelOpen) ||\n (!this.manualFocusing &&\n !elementMatchClosest(event?.relatedTarget as HTMLElement, ['.thy-select-dropdown', 'thy-custom-select']))\n ) {\n const inputElement: HTMLInputElement = this.elementRef.nativeElement.querySelector('input');\n inputElement.focus();\n }\n this.manualFocusing = false;\n }\n\n public focus(options?: FocusOptions): void {\n this.manualFocusing = true;\n this.elementRef.nativeElement.focus(options);\n this.manualFocusing = false;\n }\n\n public remove($event: { item: ThyOption; $eventOrigin: Event }) {\n $event.$eventOrigin.stopPropagation();\n if (this.disabled) {\n return;\n }\n if (!this.options.find(option => option === $event.item)) {\n $event.item.deselect();\n // fix option unselect can not emit changes;\n this.onSelect($event.item, true);\n } else {\n $event.item.deselect();\n }\n }\n\n public clearSelectValue(event?: Event) {\n if (event) {\n event.stopPropagation();\n }\n if (this.disabled) {\n return;\n }\n this.selectionModel.clear();\n this.changeDetectorRef.markForCheck();\n this.emitModelValueChange();\n }\n\n public updateCdkConnectedOverlayPositions(): void {\n setTimeout(() => {\n if (this.cdkConnectedOverlay && this.cdkConnectedOverlay.overlayRef) {\n this.cdkConnectedOverlay.overlayRef.updatePosition();\n }\n });\n }\n\n public get selected(): ThyOption | ThyOption[] {\n return this.isMultiple ? this.selectionModel.selected : this.selectionModel.selected[0];\n }\n\n public get isMultiple(): boolean {\n return this.mode === 'multiple';\n }\n\n public get empty(): boolean {\n return !this.selectionModel || this.selectionModel.isEmpty();\n }\n\n public getItemCount(): number {\n const group = this.isReactiveDriven ? this.viewGroups : this.contentGroups;\n return this.options.length + group.length;\n }\n\n public toggle(event: MouseEvent): void {\n if (this.panelOpen) {\n if (!this.thyShowSearch) {\n this.close();\n }\n } else {\n this.open();\n }\n }\n\n public open(): void {\n if (this.disabled || !this.options || this.panelOpen) {\n return;\n }\n this.triggerRectWidth = this.getOriginRectWidth();\n this.subscribeTriggerResize();\n this.panelOpen = true;\n this.highlightCorrectOption();\n this.thyOnExpandStatusChange.emit(this.panelOpen);\n this.changeDetectorRef.markForCheck();\n }\n\n public close(): void {\n if (this.panelOpen) {\n this.panelOpen = false;\n this.unsubscribeTriggerResize();\n this.thyOnExpandStatusChange.emit(this.panelOpen);\n this.changeDetectorRef.markForCheck();\n this.onTouchedFn();\n }\n }\n\n private emitModelValueChange() {\n const selectedValues = this.selectionModel.selected;\n const changeValue = selectedValues.map((option: ThyOption) => {\n return option.thyValue;\n });\n if (this.isMultiple) {\n this.modalValue = changeValue;\n } else {\n if (changeValue.length === 0) {\n this.modalValue = null;\n } else {\n this.modalValue = changeValue[0];\n }\n }\n this.onChangeFn(this.modalValue);\n this.updateCdkConnectedOverlayPositions();\n }\n\n private highlightCorrectOption(fromOpenPanel: boolean = true): void {\n if (this.keyManager && this.panelOpen) {\n if (fromOpenPanel) {\n if (this.keyManager.activeItem) {\n return;\n }\n if (this.empty) {\n if (!this.thyAutoActiveFirstItem) {\n return;\n }\n this.keyManager.setFirstItemActive();\n } else {\n this.keyManager.setActiveItem(this.selectionModel.selected[0]);\n }\n } else {\n if (!this.thyAutoActiveFirstItem) {\n return;\n }\n // always set first option active\n this.keyManager.setFirstItemActive();\n }\n }\n }\n\n private initKeyManager() {\n if (this.keyManager && this.keyManager.activeItem) {\n this.keyManager.activeItem.setInactiveStyles();\n }\n this.keyManager = new ActiveDescendantKeyManager<ThyOption>(this.options)\n .withTypeAhead()\n .withWrap()\n .withVerticalOrientation()\n .withAllowedModifierKeys(['shiftKey']);\n\n this.keyManager.tabOut.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.focus();\n this.close();\n });\n this.keyManager.change.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.panelOpen && this.panel) {\n if (this.keyManager.activeItem) {\n ScrollToService.scrollToElement(this.keyManager.activeItem.element.nativeElement, this.panel.nativeElement);\n }\n } else if (!this.panelOpen && !this.isMultiple && this.keyManager.activeItem) {\n this.keyManager.activeItem.selectViaInteraction();\n }\n });\n }\n\n private handleClosedKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const manager = this.keyManager;\n\n // Open the select on ALT + arrow key to match the native <select>\n if ((isOpenKey && !hasModifierKey(event)) || ((this.isMultiple || event.altKey) && isArrowKey)) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n } else if (!this.isMultiple) {\n if (keyCode === HOME || keyCode === END) {\n keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n event.preventDefault();\n } else {\n manager.onKeydown(event);\n }\n }\n }\n\n private handleOpenKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n const manager = this.keyManager;\n\n if (keyCode === HOME || keyCode === END) {\n event.preventDefault();\n keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n } else if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n } else if ((keyCode === ENTER || keyCode === SPACE) && (manager.activeItem || !this.empty) && !hasModifierKey(event)) {\n event.preventDefault();\n if (!manager.activeItem) {\n if (manager.activeItemIndex === -1 && !this.empty) {\n manager.setActiveItem(this.selectionModel.selected[0]);\n }\n }\n manager.activeItem.selectViaInteraction();\n } else if (this.isMultiple && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options.some(opt => !opt.disabled && !opt.selected);\n\n this.options.forEach(option => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n } else {\n if (manager.activeItemIndex === -1 && !this.empty) {\n manager.setActiveItem(this.selectionModel.selected[0]);\n }\n const previouslyFocusedIndex = manager.activeItemIndex;\n\n manager.onKeydown(event);\n\n if (\n this.isMultiple &&\n isArrowKey &&\n event.shiftKey &&\n manager.activeItem &&\n manager.activeItemIndex !== previouslyFocusedIndex\n ) {\n manager.activeItem.selectViaInteraction();\n }\n }\n }\n\n private getPositions() {\n this.dropDownPositions = getFlexiblePositions(this.thyPlacement || this.config.placement, this.defaultOffset);\n }\n\n private instanceSelectionModel() {\n if (this.selectionModel) {\n this.selectionModel.clear();\n }\n this.selectionModel = new SelectionModel<ThyOption>(this.isMultiple);\n if (this.selectionModelSubscription) {\n this.selectionModelSubscription.unsubscribe();\n this.selectionModelSubscription = null;\n }\n this.selectionModelSubscription = this.selectionModel.changed.pipe(takeUntil(this.destroy$)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\n }\n\n private resetOptions() {\n const changedOrDestroyed$ = merge(this.optionsChanges$, this.destroy$);\n\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed$)).subscribe((event: ThyOptionSelectionChangeEvent) => {\n this.onSelect(event.option, event.isUserInput);\n if (event.isUserInput && !this.isMultiple && this.panelOpen) {\n this.close();\n this.focus();\n }\n });\n }\n\n private initializeSelection() {\n Promise.resolve().then(() => {\n this.setSelectionByModelValue(this.modalValue);\n });\n }\n\n private setDropDownClass() {\n let modeClass = '';\n if (this.isMultiple) {\n modeClass = `thy-select-dropdown-${this.mode}`;\n } else {\n modeClass = `thy-select-dropdown-single`;\n }\n this.dropDownClass = {\n [`thy-select-dropdown`]: true,\n [modeClass]: true\n };\n }\n\n private setSelectionByModelValue(modalValue: any) {\n if (helpers.isUndefinedOrNull(modalValue)) {\n if (this.selectionModel.selected.length > 0) {\n this.selectionModel.clear();\n this.changeDetectorRef.markForCheck();\n }\n return;\n }\n if (this.isMultiple) {\n if (isArray(modalValue)) {\n const selected = [...this.selectionModel.selected];\n this.selectionModel.clear();\n (modalValue as Array<any>).forEach(itemValue => {\n const option =\n this.options.find(_option => _option.thyValue === itemValue) ||\n selected.find(_option => _option.thyValue === itemValue);\n if (option) {\n this.selectionModel.select(option);\n }\n });\n }\n } else {\n const selectedOption = this.options?.find(option => {\n return option.thyValue === modalValue;\n });\n if (selectedOption) {\n this.selectionModel.select(selectedOption);\n }\n }\n this.changeDetectorRef.markForCheck();\n }\n\n private onSelect(option: ThyOption, isUserInput: boolean) {\n const wasSelected = this.selectionModel.isSelected(option);\n\n if (option.thyValue == null && !this.isMultiple) {\n option.deselect();\n this.selectionModel.clear();\n } else {\n if (wasSelected !== option.selected) {\n option.selected ? this.selectionModel.select(option) : this.selectionModel.deselect(option);\n }\n\n if (isUserInput) {\n this.keyManager.setActiveItem(option);\n }\n\n if (this.isMultiple) {\n this.sortValues();\n if (isUserInput) {\n this.focus();\n }\n }\n }\n\n if (wasSelected !== this.selectionModel.isSelected(option)) {\n this.emitModelValueChange();\n }\n if (!this.isMultiple) {\n this.onTouchedFn();\n }\n this.changeDetectorRef.markForCheck();\n }\n\n private sortValues() {\n if (this.isMultiple) {\n const options = this.options.toArray();\n\n if (this.thySortComparator) {\n this.selectionModel.sort((a, b) => {\n return this.thySortComparator(a, b, options);\n });\n }\n }\n }\n\n private getOriginRectWidth() {\n return this.thyOrigin ? coerceElement(this.thyOrigin).offsetWidth : this.trigger.nativeElement.offsetWidth;\n }\n\n private subscribeTriggerResize(): void {\n this.unsubscribeTriggerResize();\n this.ngZone.runOutsideAngular(() => {\n this.resizeSubscription = new Observable<number>(observer => {\n const resize = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n observer.next(this.getOriginRectWidth());\n });\n resize.observe(this.trigger.nativeElement);\n })\n .pipe(\n startWith(),\n map(() => {\n return this.getOriginRectWidth();\n }),\n distinctUntilChanged()\n )\n .subscribe((width: number) => {\n this.ngZone.run(() => {\n this.triggerRectWidth = width;\n this.updateCdkConnectedOverlayPositions();\n this.changeDetectorRef.markForCheck();\n });\n });\n });\n }\n\n private unsubscribeTriggerResize(): void {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n this.resizeSubscription = null;\n }\n }\n\n ngOnDestroy() {\n this.unsubscribeTriggerResize();\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div\n cdk-overlay-origin\n thySelectControl\n (click)=\"toggle($event)\"\n #origin=\"cdkOverlayOrigin\"\n #trigger\n [thyPanelOpened]=\"panelOpen\"\n [thySelectedOptions]=\"selected\"\n [thyIsMultiple]=\"isMultiple\"\n [thyShowSearch]=\"thyShowSearch\"\n [thyAllowClear]=\"thyAllowClear\"\n [thySize]=\"thySize\"\n [thyPlaceholder]=\"thyPlaceHolder\"\n [customDisplayTemplate]=\"selectedValueDisplayRef\"\n [thyDisabled]=\"disabled\"\n [thyBorderless]=\"thyBorderless\"\n (thyOnClear)=\"clearSelectValue($event)\"\n (thyOnRemove)=\"remove($event)\"\n (thyOnSearch)=\"onSearchFilter($event)\"\n (thyOnBlur)=\"onBlur($event)\"\n [thyMaxTagCount]=\"thyMaxTagCount\"\n [thyPreset]=\"thyPreset\"></div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayHasBackdrop]=\"thyHasBackdrop\"\n [cdkConnectedOverlayPositions]=\"dropDownPositions\"\n [cdkConnectedOverlayOrigin]=\"thyOrigin || origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"triggerRectWidth\"\n [cdkConnectedOverlayMinWidth]=\"dropDownMinWidth\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n cdkConnectedOverlayTransformOriginOn=\".thy-select-dropdown\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n <div\n thyStopPropagation\n [attr.tabindex]=\"-1\"\n [ngClass]=\"dropDownClass\"\n [@scaleYMotion]=\"placement === 'top' || placement === 'bottom' ? 'enter' : 'void'\"\n [@scaleXMotion]=\"placement === 'left' || placement === 'right' ? 'enter' : 'void'\"\n [@scaleMotion]=\"placement !== 'top' && placement !== 'bottom' && placement !== 'left' && placement !== 'right' ? 'enter' : 'void'\"\n (mousemove)=\"dropDownMouseMove($event)\">\n @if (contentOptions?.length > 0 || contentGroups?.length > 0 || innerOptions?.length > 0) {\n <div\n #panel\n class=\"thy-select-dropdown-options thy-select-dropdown-options-{{ size }}\"\n thyScroll\n (thyOnScrolled)=\"onOptionsScrolled($event)\"\n [thyEnable]=\"thyEnableScrollLoad\">\n @if (isReactiveDriven) {\n <ng-template [ngTemplateOutlet]=\"optionsContainer.optionsTemplate\"></ng-template>\n }\n <ng-content></ng-content>\n @if (isHiddenOptions) {\n <thy-loading [thyDone]=\"thyLoadState\" thySize=\"sm\"></thy-loading>\n <div class=\"thy-select-empty-content\">\n @if (thyLoadState) {\n <thy-empty [thyMessage]=\"emptySearchMessageText\" thySize=\"sm\" [thyIconName]=\"emptyIcon()\"></thy-empty>\n }\n </div>\n }\n </div>\n } @else {\n <thy-loading [thyDone]=\"thyLoadState\" thySize=\"sm\"></thy-loading>\n <div class=\"thy-select-empty-content\">\n @if (thyLoadState) {\n <thy-empty [thyMessage]=\"emptyStateText\" thySize=\"sm\" [thyIconName]=\"emptyIcon()\"></thy-empty>\n }\n </div>\n }\n @if (thyFooterTemplate) {\n <div [class]=\"thyFooterClass ? thyFooterClass : 'thy-custom-select-footer'\">\n @if (thyFooterTemplate) {\n <ng-template [ngTemplateOutlet]=\"thyFooterTemplate\"></ng-template>\n }\n </div>\n }\n </div>\n</ng-template>\n\n<thy-options-container #optionsContainer>\n @for (option of optionGroups; track $index) {\n @if (!option.children) {\n <thy-option\n [thyDisabled]=\"option.disabled\"\n [thyLabelText]=\"option.label\"\n [thyValue]=\"option.value\"\n [thyRawValue]=\"option\"></thy-option>\n } @else {\n <thy-option-group [thyGroupLabel]=\"option.groupLabel\">\n @for (sub of option.children; track sub.value) {\n <thy-option [thyDisabled]=\"sub.disabled\" [thyLabelText]=\"sub.label\" [thyValue]=\"sub.value\" [thyRawValue]=\"sub\"></thy-option>\n }\n </thy-option-group>\n }\n }\n</thy-options-container>\n","import { Component, forwardRef, HostBinding, Input, OnInit, inject } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, elementMatchClosest } from 'ngx-tethys/util';\n\nimport { ElementRef, ViewChild } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInputDirective } from 'ngx-tethys/input';\n\nexport type InputSize = 'xs' | 'sm' | 'md' | 'lg' | '';\n\nconst noop = () => {};\n\n/**\n * 下拉选择\n * @name thy-native-select\n * @order 20\n */\n@Component({\n selector: 'thy-native-select',\n templateUrl: './native-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyNativeSelect),\n multi: true\n }\n ],\n standalone: true,\n imports: [ThyInputDirective, FormsModule, ThyIcon],\n host: {\n '[attr.tabindex]': 'tabIndex',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n }\n})\nexport class ThyNativeSelect extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor, OnInit {\n private elementRef = inject(ElementRef);\n\n @ViewChild('select', { static: true }) selectElement: ElementRef<any>;\n\n // The internal data model\n _innerValue: any = null;\n _disabled = false;\n _size: InputSize;\n _expandOptions = false;\n\n private hostRenderer = useHostRenderer();\n\n @HostBinding('class.thy-select') _isSelect = true;\n\n @Input()\n set thySize(value: InputSize) {\n this._size = value;\n }\n\n @Input() name: string;\n\n @Input({ transform: coerceBooleanProperty }) thyAllowClear = false;\n\n writeValue(obj: any): void {\n if (obj !== this._innerValue) {\n this._innerValue = obj;\n }\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this._disabled = isDisabled;\n }\n\n constructor() {\n super();\n }\n\n ngModelChange() {\n this.onChangeFn(this._innerValue);\n this.onTouchedFn();\n }\n\n ngOnInit() {\n const classes = this._size ? [`thy-select-${this._size}`] : [];\n this.hostRenderer.updateClass(classes);\n }\n\n onBlur(event: FocusEvent) {\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, 'thy-native-select')) {\n return;\n }\n this.onTouchedFn();\n }\n\n onFocus(event?: Event) {\n this.selectElement.nativeElement.focus();\n }\n\n clearSelectValue(event: Event) {\n event.stopPropagation();\n this._innerValue = '';\n this.onChangeFn(this._innerValue);\n }\n}\n","<select\n #select\n thyInput\n [tabindex]=\"-1\"\n [thySize]=\"_size\"\n [disabled]=\"_disabled\"\n [(ngModel)]=\"_innerValue\"\n (ngModelChange)=\"ngModelChange()\"\n (blur)=\"onBlur($event)\"\n [class.thy-select-selection-allow-clear]=\"thyAllowClear\">\n <ng-content></ng-content>\n</select>\n<thy-icon thyIconName=\"angle-down\"></thy-icon>\n@if (thyAllowClear && _innerValue) {\n <a class=\"thy-select-remove remove-link\" href=\"javascript:;\" (click)=\"clearSelectValue($event)\">\n <thy-icon class=\"remove-link-icon\" thyIconName=\"close-circle-bold-fill\"></thy-icon>\n </a>\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyEmptyModule } from 'ngx-tethys/empty';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyOptionModule, ThySelectCommonModule, ThySharedModule } from 'ngx-tethys/shared';\nimport { ThySelect } from './custom-select/custom-select.component';\nimport { ThyNativeSelect } from './native-select/native-select.component';\nimport { THY_SELECT_CONFIG_PROVIDER, THY_SELECT_SCROLL_STRATEGY_PROVIDER } from './select.config';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyInputModule,\n OverlayModule,\n ThyLoadingModule,\n ThySharedModule,\n ThyIconModule,\n ThyEmptyModule,\n ThySelectCommonModule,\n ThyOptionModule,\n ThyNativeSelect,\n ThySelect\n ],\n exports: [ThyNativeSelect, ThySelect, ThyOptionModule],\n providers: [THY_SELECT_SCROLL_STRATEGY_PROVIDER, THY_SELECT_CONFIG_PROVIDER]\n})\nexport class ThySelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["noop"],"mappings":";;;;;;;;;;;;;;;;;;;;;MAIa,0BAA0B,GAAG,IAAI,cAAc,CAAuB,4BAA4B,EAAE;AAEpG,MAAA,kCAAkC,GAAG,CAAC,OAAgB,KAAI;IACnE,OAAO,MAAM,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;AACvD,EAAE;AAEW,MAAA,mCAAmC,GAAG;AAC/C,IAAA,OAAO,EAAE,0BAA0B;IACnC,IAAI,EAAE,CAAC,OAAO,CAAC;AACf,IAAA,UAAU,EAAE,kCAAkC;EAChD;AAqBW,MAAA,qBAAqB,GAAoB;AAClD,IAAA,iBAAiB,EAAE,cAAc;AACjC,IAAA,SAAS,EAAE,QAAQ;EACrB;MAEW,iBAAiB,GAAG,IAAI,cAAc,CAAkB,mBAAmB,EAAE;AAE7E,MAAA,0BAA0B,GAAG;AACtC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,QAAQ,EAAE,qBAAqB;;;ACiD5B,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEpC,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAE1C,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEpC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAsB9C,MAAMA,MAAI,GAAG,MAAK,GAAG,CAAC;AAEtB;;;;AAIG;AAuCG,MAAO,SACT,SAAQ,yCAAyC,CAAA;AA4HjD;;;AAGG;IACH,IACI,OAAO,CAAC,KAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;AAED,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;AAED;;;;AAIG;AACH,IAAA,IACI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;IACD,IAAI,OAAO,CAAC,KAAwB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACrB;AAED;;AAEG;IACH,IACI,iBAAiB,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC/B;AAED;;AAEG;IACH,IACI,yBAAyB,CAAC,KAAa,EAAA;AACvC,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;KACvC;AAaD;;;AAGG;IACH,IACI,WAAW,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;AACD,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAmED;;;AAGG;IACH,IACI,UAAU,CAAC,KAA6B,EAAA;AACxC,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;YAChB,KAAK,GAAG,EAAE,CAAC;SACd;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;AA6BD,IAAA,aAAa,CAAC,KAAoB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;gBACzB,KAAK,CAAC,eAAe,EAAE,CAAC;aAC3B;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACpF;KACJ;AAED,IAAA,IAAI,eAAe,GAAA;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;QAC9E,IAAI,eAAe,GAAgB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAC1D,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAC5B,GAAG,CAAC,IAAI,IAAG;AACP,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAClC,SAAC,CAAC,EACF,MAAM,CAAC,IAAI,IAAG;AACV,YAAA,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,KAAK,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9G,eAAe,GAAG,IAAI,CAAC;AACvB,YAAA,OAAO,GAAG,CAAC;SACd,CAAC,CACL,CAAC;KACL;IAEO,mBAAmB,GAAA;QACvB,IAAI,IAAI,CAAC,qBAAqB,IAAI,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;AACtE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;SACtD;aAAM;YACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;SACpE;KACJ;AAMD,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;KACrD;AAED,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AAhVJ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC9C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1B,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,MAAM,GAA4B,YAAY,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAqB,CAAA,qBAAA,GAAG,MAAM,CAA+B,0BAA0B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE,CAAC;QAC9G,IAAY,CAAA,YAAA,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE,CAAC;QAC9D,IAAS,CAAA,SAAA,GAAmB,oBAAoB,EAAE,CAAC;QAEnD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAIjB,IAAI,CAAA,IAAA,GAAe,EAAE,CAAC;AAEtB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;AAErC,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;QAE7C,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;QAEd,IAAU,CAAA,UAAA,GAAQ,IAAI,CAAC;QAEvB,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;QAIlB,IAAgB,CAAA,gBAAA,GAAkB,IAAI,CAAC;AAoBvC;;AAEG;QACK,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAId,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AAEvC,QAAA,IAAA,CAAA,sBAAsB,GAA8C,KAAK,CAAC,MAAK;AACpF,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;aACvE;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAC3C,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,CAC/C,CAAC;AACN,SAAC,CAA8C,CAAC;QAIR,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QAE7B,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAKjD,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAElB;;AAEG;AACO,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAU,CAAC;AAEzE;;AAEG;AACO,QAAA,IAAA,CAAA,mBAAmB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAE7E;;AAEG;AACO,QAAA,IAAA,CAAA,uBAAuB,GAA0B,IAAI,YAAY,EAAW,CAAC;AAQvF;;AAEG;AACM,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC;AAQpD;;AAEG;QAC0C,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;AAEjE;;AAEG;QAC0C,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;AA+C3E;;AAEG;QAEH,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAE5B;;AAEG;QAC0C,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAuCnE;;AAEG;QAEH,IAAc,CAAA,cAAA,GAAG,0BAA0B,CAAC;AAa5C;;AAEG;QAEH,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAEvB;;AAEG;QACoC,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;AAE1D;;;AAGG;QAC0C,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QAEnE,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QAIzB,IAAY,CAAA,YAAA,GAA0B,EAAE,CAAC;AAkBzC;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;QAqDxB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAE5B,IAAO,CAAA,OAAA,GAAG,CAAC,IAA0B,KAAK,IAAI,CAAC,UAAU,CAAC;AAQtD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAEvC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,qBAAqB,EAAE,GAAG,YAAY,EAAE,CAAC;QAC5D,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;AAED,IAAA,UAAU,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAClD;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAExB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,kBAAkB;iBAClB,OAAO,CAAC,CAAC,CAAC;AACV,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC,KAAK,IAAG;AACf,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;AACzE,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;wBACjB,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,wBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC1C,qBAAC,CAAC,CAAC;iBACN;AACL,aAAC,CAAC,CAAC;SACV;KACJ;AAED,IAAA,iBAAiB,CAAC,OAA+B,EAAA;QAC7C,MAAM,YAAY,GAA0B,EAAE,CAAC;AAC/C,QAAA,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtG,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;AAC3B,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AACnB,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;AACtE,YAAA,MAAM,WAAW,GAAG;AAChB,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,QAAQ,EAAE,QAAQ;aACrB,CAAC;AACF,YAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AACrB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACtB,MAAM,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9F,gBAAA,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;AACrB,oBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,oBAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC3B;aACJ;iBAAM;AACH,gBAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC7B;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,YAAY,CAAC;KACvB;IAED,oBAAoB,GAAA;QAChB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACjE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACjE;aAAM;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SACzC;KACJ;IAED,mBAAmB,GAAA;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACxE,IAAI,gBAAgB,GAAkB,IAAI,CAAC;AAE3C,QAAA,IAAK,IAA6B,EAAE,QAAQ,EAAE;AAC1C,YAAA,gBAAgB,GAAI,IAA6B,CAAC,QAAQ,CAAC;SAC9D;AAAM,aAAA,IAAI,IAAI,KAAK,WAAW,EAAE;YAC7B,gBAAgB,GAAG,0BAA0B,CAAC;SACjD;aAAM;YACH,gBAAgB,GAAG,IAAI,CAAC;SAC3B;AAED,QAAA,OAAO,gBAAgB,CAAC;KAC3B;IAED,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;KACJ;IAED,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;KACJ;IAED,KAAK,GAAA;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YAClF,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACnC,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;aAC5B;AACD,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,QAAQ;AACf,iBAAA,YAAY,EAAE;AACd,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACb,SAAS,CAAC,MAAK;gBACZ,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE;AACjE,oBAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;iBACxD;AACL,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACpB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,IAAI,CAAC,KAAK,EAAE,CAAC;AACjB,aAAC,CAAC,CAAC;SACN;KACJ;AAED,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;KAChE;IAEM,UAAU,GAAA;AACb,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACjE,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC5B,oBAAA,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC5G,oBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;iBAC1C;qBAAM;AACH,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;wBACb,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACjH,wBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;qBAC1C;iBACJ;aACJ;AACL,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,iBAAiB,CAAC,KAAiB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;YAC5B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;SACrC;KACJ;AAEM,IAAA,iBAAiB,CAAC,UAAsB,EAAA;QAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,SAAS,EAC7C,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,YAAY,EAC9C,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC;QAEzD,IAAI,MAAM,GAAG,MAAM,GAAG,EAAE,IAAI,YAAY,EAAE;YACtC,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACjB,oBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;AACpC,iBAAC,CAAC,CAAC;aACN;SACJ;KACJ;AAEM,IAAA,cAAc,CAAC,UAAkB,EAAA;AACpC,QAAA,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACrC;aAAM;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACvC,YAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AACrB,gBAAA,IAAI,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;oBACpC,MAAM,CAAC,UAAU,EAAE,CAAC;iBACvB;qBAAM;oBACH,MAAM,CAAC,UAAU,EAAE,CAAC;iBACvB;AACL,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,kCAAkC,EAAE,CAAC;SAC7C;KACJ;AAED,IAAA,MAAM,CAAC,KAAkB,EAAA;;AAErB,QAAA,IAAI,mBAAmB,CAAC,KAAK,EAAE,aAA4B,EAAE,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC,EAAE;YAClG,OAAO;SACV;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;AAED,IAAA,OAAO,CAAC,KAAkB,EAAA;;;QAGtB,IACI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS;aACpC,CAAC,IAAI,CAAC,cAAc;AACjB,gBAAA,CAAC,mBAAmB,CAAC,KAAK,EAAE,aAA4B,EAAE,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC/G;AACE,YAAA,MAAM,YAAY,GAAqB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5F,YAAY,CAAC,KAAK,EAAE,CAAC;SACxB;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC/B;AAEM,IAAA,KAAK,CAAC,OAAsB,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC/B;AAEM,IAAA,MAAM,CAAC,MAAgD,EAAA;AAC1D,QAAA,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;AACtC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE;AACtD,YAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;;YAEvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACpC;aAAM;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;SAC1B;KACJ;AAEM,IAAA,gBAAgB,CAAC,KAAa,EAAA;QACjC,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;AACD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAEM,kCAAkC,GAAA;QACrC,UAAU,CAAC,MAAK;YACZ,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE;AACjE,gBAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;aACxD;AACL,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC3F;AAED,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;KACnC;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;KAChE;IAEM,YAAY,GAAA;AACf,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;QAC3E,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;KAC7C;AAEM,IAAA,MAAM,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACrB,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;SACJ;aAAM;YACH,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;KACJ;IAEM,IAAI,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YAClD,OAAO;SACV;AACD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClD,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACzC;IAEM,KAAK,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClD,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;IAEO,oBAAoB,GAAA;AACxB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QACpD,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAiB,KAAI;YACzD,OAAO,MAAM,CAAC,QAAQ,CAAC;AAC3B,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;SACjC;aAAM;AACH,YAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;aAC1B;iBAAM;AACH,gBAAA,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;aACpC;SACJ;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,IAAI,CAAC,kCAAkC,EAAE,CAAC;KAC7C;IAEO,sBAAsB,CAAC,gBAAyB,IAAI,EAAA;QACxD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;YACnC,IAAI,aAAa,EAAE;AACf,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;oBAC5B,OAAO;iBACV;AACD,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,oBAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;wBAC9B,OAAO;qBACV;AACD,oBAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;iBACxC;qBAAM;AACH,oBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;iBAClE;aACJ;iBAAM;AACH,gBAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;oBAC9B,OAAO;iBACV;;AAED,gBAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;aACxC;SACJ;KACJ;IAEO,cAAc,GAAA;QAClB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC/C,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;SAClD;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,0BAA0B,CAAY,IAAI,CAAC,OAAO,CAAC;AACpE,aAAA,aAAa,EAAE;AACf,aAAA,QAAQ,EAAE;AACV,aAAA,uBAAuB,EAAE;AACzB,aAAA,uBAAuB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAE3C,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACjE,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,EAAE,CAAC;AACjB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACjE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE;AAC9B,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC5B,oBAAA,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;iBAC/G;aACJ;AAAM,iBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC1E,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;aACrD;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,mBAAmB,CAAC,KAAoB,EAAA;AAC5C,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC9B,QAAA,MAAM,UAAU,GAAG,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,WAAW,CAAC;QACvH,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,CAAC;AACzD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;;QAGhC,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE;AAC5F,YAAA,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACzB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,GAAG,EAAE;AACrC,gBAAA,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,kBAAkB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBAC9E,KAAK,CAAC,cAAc,EAAE,CAAC;aAC1B;iBAAM;AACH,gBAAA,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aAC5B;SACJ;KACJ;AAEO,IAAA,iBAAiB,CAAC,KAAoB,EAAA;AAC1C,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,UAAU,GAAG,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,QAAQ,CAAC;AAClE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QAEhC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,GAAG,EAAE;YACrC,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,kBAAkB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;SACjF;AAAM,aAAA,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE;;YAEnC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;aAAM,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAClH,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACrB,gBAAA,IAAI,OAAO,CAAC,eAAe,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC/C,oBAAA,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1D;aACJ;AACD,YAAA,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;SAC7C;AAAM,aAAA,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE;YAC1D,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAEtF,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AAC1B,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AAClB,oBAAA,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;iBAC9D;AACL,aAAC,CAAC,CAAC;SACN;aAAM;AACH,YAAA,IAAI,OAAO,CAAC,eAAe,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC/C,gBAAA,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1D;AACD,YAAA,MAAM,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC;AAEvD,YAAA,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAEzB,IACI,IAAI,CAAC,UAAU;gBACf,UAAU;AACV,gBAAA,KAAK,CAAC,QAAQ;AACd,gBAAA,OAAO,CAAC,UAAU;AAClB,gBAAA,OAAO,CAAC,eAAe,KAAK,sBAAsB,EACpD;AACE,gBAAA,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;aAC7C;SACJ;KACJ;IAEO,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KACjH;IAEO,sBAAsB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;SAC/B;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAY,IAAI,CAAC,UAAU,CAAC,CAAC;AACrE,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACjC,YAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;AAC9C,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;SAC1C;QACD,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAC3G,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/C,YAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;KACN;IAEO,YAAY,GAAA;AAChB,QAAA,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEvE,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAoC,KAAI;YAChH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AAC/C,YAAA,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;gBACzD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;AACL,SAAC,CAAC,CAAC;KACN;IAEO,mBAAmB,GAAA;AACvB,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AACxB,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;KACN;IAEO,gBAAgB,GAAA;QACpB,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,SAAS,GAAG,CAAuB,oBAAA,EAAA,IAAI,CAAC,IAAI,EAAE,CAAC;SAClD;aAAM;YACH,SAAS,GAAG,4BAA4B,CAAC;SAC5C;QACD,IAAI,CAAC,aAAa,GAAG;YACjB,CAAC,CAAA,mBAAA,CAAqB,GAAG,IAAI;YAC7B,CAAC,SAAS,GAAG,IAAI;SACpB,CAAC;KACL;AAEO,IAAA,wBAAwB,CAAC,UAAe,EAAA;AAC5C,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE;YACvC,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAC5B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;aACzC;YACD,OAAO;SACV;AACD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;gBACrB,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACnD,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAC3B,gBAAA,UAAyB,CAAC,OAAO,CAAC,SAAS,IAAG;AAC3C,oBAAA,MAAM,MAAM,GACR,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;AAC5D,wBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;oBAC7D,IAAI,MAAM,EAAE;AACR,wBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBACtC;AACL,iBAAC,CAAC,CAAC;aACN;SACJ;aAAM;YACH,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,IAAG;AAC/C,gBAAA,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC;AAC1C,aAAC,CAAC,CAAC;YACH,IAAI,cAAc,EAAE;AAChB,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;aAC9C;SACJ;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACzC;IAEO,QAAQ,CAAC,MAAiB,EAAE,WAAoB,EAAA;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE3D,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC7C,MAAM,CAAC,QAAQ,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;SAC/B;aAAM;AACH,YAAA,IAAI,WAAW,KAAK,MAAM,CAAC,QAAQ,EAAE;gBACjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aAC/F;YAED,IAAI,WAAW,EAAE;AACb,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aACzC;AAED,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,WAAW,EAAE;oBACb,IAAI,CAAC,KAAK,EAAE,CAAC;iBAChB;aACJ;SACJ;QAED,IAAI,WAAW,KAAK,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACxD,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/B;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACzC;IAEO,UAAU,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAEvC,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;oBAC9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AACjD,iBAAC,CAAC,CAAC;aACN;SACJ;KACJ;IAEO,kBAAkB,GAAA;QACtB,OAAO,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC;KAC9G;IAEO,sBAAsB,GAAA;QAC1B,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YAC/B,IAAI,CAAC,kBAAkB,GAAG,IAAI,UAAU,CAAS,QAAQ,IAAG;gBACxD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,CAAC,OAA8B,KAAI;oBACjE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC7C,iBAAC,CAAC,CAAC;gBACH,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC/C,aAAC,CAAC;AACG,iBAAA,IAAI,CACD,SAAS,EAAE,EACX,GAAG,CAAC,MAAK;AACL,gBAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACrC,aAAC,CAAC,EACF,oBAAoB,EAAE,CACzB;AACA,iBAAA,SAAS,CAAC,CAAC,KAAa,KAAI;AACzB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACjB,oBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;oBAC9B,IAAI,CAAC,kCAAkC,EAAE,CAAC;AAC1C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AAC1C,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;IAEO,wBAAwB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;SAClC;KACJ;IAED,WAAW,GAAA;QACP,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC5B;+GA16BQ,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAsGE,qBAAqB,CAWrB,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,qBAAqB,kDAKrB,qBAAqB,CAAA,EAAA,sBAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAKrB,qBAAqB,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAkDrB,qBAAqB,CAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAMrB,qBAAqB,CAMrB,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,qBAAqB,6NAgDrB,qBAAqB,CAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAKrB,qBAAqB,CAMrB,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,eAAe,CAMf,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,qBAAqB,CA5R9B,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,2BAA2B;AACpC,gBAAA,WAAW,EAAE,SAAS;AACzB,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,SAAS,CAAC;AACxC,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;SACJ,EAuTgB,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,SAAS,mEAOT,oBAAoB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA9N1B,mBAAmB,EAgNA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,uGAEZ,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAOxB,SAAS,EAOT,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAoB,gGChdtC,42HAmGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDiDQ,gBAAgB,EAChB,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,2BAA2B,iGAC3B,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,kBAAkB,EAClB,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,oGACV,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,aAAA,EAAA,SAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,mBAAmB,EACnB,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,iNACT,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,gBAAgB,EAOR,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAE5C,SAAS,EAAA,UAAA,EAAA,CAAA;kBAtCrB,SAAS;+BACI,8BAA8B,EAAA,QAAA,EAE9B,WAAW,EACV,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,2BAA2B;AACpC,4BAAA,WAAW,EAAW,SAAA;AACzB,yBAAA;AACD,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,eAAe,CAAC;AACxC,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACL,gBAAgB;wBAChB,gBAAgB;wBAChB,mBAAmB;wBACnB,2BAA2B;wBAC3B,OAAO;wBACP,kBAAkB;wBAClB,UAAU;wBACV,QAAQ;wBACR,mBAAmB;wBACnB,SAAS;wBACT,oBAAoB;wBACpB,gBAAgB;qBACnB,EACK,IAAA,EAAA;AACF,wBAAA,iBAAiB,EAAE,UAAU;AAC7B,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,QAAQ,EAAE,gBAAgB;AAC7B,qBAAA,EAAA,UAAA,EACW,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,42HAAA,EAAA,CAAA;wDAyC5C,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBAiC4C,mBAAmB,EAAA,CAAA;sBAApE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAER,cAAc,EAAA,CAAA;sBAArD,WAAW;uBAAC,yBAAyB,CAAA;gBAEL,QAAQ,EAAA,CAAA;sBAAxC,WAAW;uBAAC,kBAAkB,CAAA;gBAK/B,SAAS,EAAA,CAAA;sBADR,WAAW;uBAAC,sBAAsB,CAAA;gBAMzB,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAKG,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;gBAKG,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;gBAMsC,aAAa,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;gBAKlC,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAMuC,eAAe,EAAA,CAAA;sBAA3D,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;gBAKE,YAAY,EAAA,CAAA;sBAAxD,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;gBAKE,sBAAsB,EAAA,CAAA;sBAAlE,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;gBAOvC,OAAO,EAAA,CAAA;sBADV,KAAK;gBAkBF,OAAO,EAAA,CAAA;sBADV,KAAK;gBAYF,iBAAiB,EAAA,CAAA;sBADpB,KAAK;gBASF,yBAAyB,EAAA,CAAA;sBAD5B,KAAK;gBASN,mBAAmB,EAAA,CAAA;sBADlB,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;gBAME,aAAa,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;gBAOvC,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;gBAWlC,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAON,iBAAiB,EAAA,CAAA;sBADhB,KAAK;gBAQN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAON,SAAS,EAAA,CAAA;sBADR,KAAK;gBAON,cAAc,EAAA,CAAA;sBADb,KAAK;gBAM2B,uBAAuB,EAAA,CAAA;sBAAvD,YAAY;uBAAC,iBAAiB,CAAA;gBAMc,aAAa,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;gBAM3C,cAAc,EAAA,CAAA;sBADb,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;gBAMJ,cAAc,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA;gBAMQ,aAAa,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;gBAavC,UAAU,EAAA,CAAA;sBADb,KAAK;gBAgBG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEoD,OAAO,EAAA,CAAA;sBAAhE,SAAS;uBAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAEd,KAAK,EAAA,CAAA;sBAA9C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAKW,cAAc,EAAA,CAAA;sBAAhE,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAExB,WAAW,EAAA,CAAA;sBAAnC,YAAY;uBAAC,SAAS,CAAA;gBAKgB,aAAa,EAAA,CAAA;sBAAnD,eAAe;uBAAC,oBAAoB,CAAA;gBAED,UAAU,EAAA,CAAA;sBAA7C,YAAY;uBAAC,oBAAoB,CAAA;gBAGlC,aAAa,EAAA,CAAA;sBADZ,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AEtcvC,MAAM,IAAI,GAAG,MAAK,GAAG,CAAC;AAEtB;;;;AAIG;AAmBG,MAAO,eAAgB,SAAQ,yCAAyC,CAAA;IAe1E,IACI,OAAO,CAAC,KAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AAMD,IAAA,UAAU,CAAC,GAAQ,EAAA;AACf,QAAA,IAAI,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;SAC1B;KACJ;AAED,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;KAC/B;AAED,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AAlCJ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;;QAKxC,IAAW,CAAA,WAAA,GAAQ,IAAI,CAAC;QACxB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAElB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QAEf,IAAY,CAAA,YAAA,GAAG,eAAe,EAAE,CAAC;QAER,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;QASL,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;KAclE;IAED,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAED,QAAQ,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,cAAc,IAAI,CAAC,KAAK,CAAE,CAAA,CAAC,GAAG,EAAE,CAAC;AAC/D,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAC1C;AAED,IAAA,MAAM,CAAC,KAAiB,EAAA;QACpB,IAAI,mBAAmB,CAAC,KAAK,EAAE,aAA4B,EAAE,mBAAmB,CAAC,EAAE;YAC/E,OAAO;SACV;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;AAED,IAAA,OAAO,CAAC,KAAa,EAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC5C;AAED,IAAA,gBAAgB,CAAC,KAAY,EAAA;QACzB,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACrC;+GA/DQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAsBJ,qBAAqB,CArC9B,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BL,8lBAkBA,EDYc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iBAAiB,EAAE,QAAA,EAAA,uDAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,6iBAAE,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,EAAA;;4FAOxC,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlB3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAElB,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;qBACJ,EACW,UAAA,EAAA,IAAI,WACP,CAAC,iBAAiB,EAAE,WAAW,EAAE,OAAO,CAAC,EAC5C,IAAA,EAAA;AACF,wBAAA,iBAAiB,EAAE,UAAU;AAC7B,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,QAAQ,EAAE,gBAAgB;AAC7B,qBAAA,EAAA,QAAA,EAAA,8lBAAA,EAAA,CAAA;wDAKsC,aAAa,EAAA,CAAA;sBAAnD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAUJ,SAAS,EAAA,CAAA;sBAAzC,WAAW;uBAAC,kBAAkB,CAAA;gBAG3B,OAAO,EAAA,CAAA;sBADV,KAAK;gBAKG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEuC,aAAa,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;;;ME5BlC,eAAe,CAAA;+GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAhBpB,YAAY;YACZ,WAAW;YACX,cAAc;YACd,aAAa;YACb,gBAAgB;YAChB,eAAe;YACf,aAAa;YACb,cAAc;YACd,qBAAqB;YACrB,eAAe;YACf,eAAe;AACf,YAAA,SAAS,CAEH,EAAA,OAAA,EAAA,CAAA,eAAe,EAAE,SAAS,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;AAG5C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,aAFb,CAAC,mCAAmC,EAAE,0BAA0B,CAAC,YAdxE,YAAY;YACZ,WAAW;YACX,cAAc;YACd,aAAa;YACb,gBAAgB;YAChB,eAAe;YACf,aAAa;YACb,cAAc;YACd,qBAAqB;YACrB,eAAe;YACf,eAAe;AACf,YAAA,SAAS,EAEyB,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAG5C,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlB3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,cAAc;wBACd,aAAa;wBACb,gBAAgB;wBAChB,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,qBAAqB;wBACrB,eAAe;wBACf,eAAe;wBACf,SAAS;AACZ,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,eAAe,CAAC;AACtD,oBAAA,SAAS,EAAE,CAAC,mCAAmC,EAAE,0BAA0B,CAAC;AAC/E,iBAAA,CAAA;;;AC9BD;;AAEG;;;;"}
|