ngx-tethys 19.0.4 → 19.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/anchor/anchor-link.component.d.ts +2 -1
  3. package/anchor/anchor.component.d.ts +2 -1
  4. package/anchor/anchor.token.d.ts +9 -0
  5. package/calendar/calendar-header.component.d.ts +3 -2
  6. package/carousel/carousel.component.d.ts +2 -1
  7. package/carousel/carousel.token.d.ts +7 -0
  8. package/carousel/engine/carousel-base.d.ts +3 -3
  9. package/carousel/engine/carousel-fade.d.ts +2 -2
  10. package/carousel/engine/carousel-noop.d.ts +2 -2
  11. package/carousel/engine/carousel-slide.d.ts +2 -2
  12. package/collapse/collapse-item.component.d.ts +2 -1
  13. package/collapse/collapse.component.d.ts +5 -5
  14. package/collapse/collapse.token.d.ts +15 -0
  15. package/color-picker/color-picker.component.d.ts +15 -3
  16. package/core/theme/enum.d.ts +5 -0
  17. package/core/theme/index.d.ts +1 -0
  18. package/core/theme/store.d.ts +1 -1
  19. package/core/theme/theme.d.ts +0 -5
  20. package/date-picker/abstract-picker.component.d.ts +6 -1
  21. package/date-picker/base-picker.component.d.ts +1 -1
  22. package/date-picker/lib/calendar/calendar-footer.component.d.ts +2 -1
  23. package/date-picker/lib/calendar/calendar-table.component.d.ts +4 -3
  24. package/date-picker/lib/popups/date-popup.component.d.ts +2 -1
  25. package/date-picker/lib/popups/inner-popup.component.d.ts +2 -1
  26. package/date-picker/picker.component.d.ts +2 -1
  27. package/date-picker/picker.util.d.ts +5 -5
  28. package/date-picker/standard-types.d.ts +7 -2
  29. package/drag-drop/drag-drop.service.d.ts +2 -2
  30. package/drag-drop/{drop-container.class.d.ts → drag-drop.token.d.ts} +12 -7
  31. package/drag-drop/drag-handle.directive.d.ts +2 -1
  32. package/drag-drop/drag-ref.d.ts +3 -5
  33. package/drag-drop/drag.directive.d.ts +3 -3
  34. package/drag-drop/drop-container.directive.d.ts +1 -1
  35. package/drag-drop/index.d.ts +1 -1
  36. package/fesm2022/ngx-tethys-action.mjs +11 -12
  37. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  38. package/fesm2022/ngx-tethys-affix.mjs +8 -9
  39. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  40. package/fesm2022/ngx-tethys-alert.mjs +11 -12
  41. package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
  42. package/fesm2022/ngx-tethys-anchor.mjs +26 -13
  43. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  44. package/fesm2022/ngx-tethys-arrow-switcher.mjs +7 -7
  45. package/fesm2022/ngx-tethys-autocomplete.mjs +17 -18
  46. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  47. package/fesm2022/ngx-tethys-avatar.mjs +25 -28
  48. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  49. package/fesm2022/ngx-tethys-back-top.mjs +7 -7
  50. package/fesm2022/ngx-tethys-badge.mjs +7 -7
  51. package/fesm2022/ngx-tethys-breadcrumb.mjs +10 -10
  52. package/fesm2022/ngx-tethys-button.mjs +14 -15
  53. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  54. package/fesm2022/ngx-tethys-calendar.mjs +18 -20
  55. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  56. package/fesm2022/ngx-tethys-card.mjs +15 -17
  57. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  58. package/fesm2022/ngx-tethys-carousel.mjs +28 -17
  59. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  60. package/fesm2022/ngx-tethys-cascader.mjs +16 -16
  61. package/fesm2022/ngx-tethys-checkbox.mjs +7 -7
  62. package/fesm2022/ngx-tethys-collapse.mjs +97 -85
  63. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  64. package/fesm2022/ngx-tethys-color-picker.mjs +34 -36
  65. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  66. package/fesm2022/ngx-tethys-comment.mjs +15 -17
  67. package/fesm2022/ngx-tethys-comment.mjs.map +1 -1
  68. package/fesm2022/ngx-tethys-copy.mjs +8 -9
  69. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  70. package/fesm2022/ngx-tethys-core.mjs +21 -22
  71. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  72. package/fesm2022/ngx-tethys-date-picker.mjs +232 -248
  73. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  74. package/fesm2022/ngx-tethys-date-range.mjs +10 -10
  75. package/fesm2022/ngx-tethys-dialog.mjs +22 -23
  76. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  77. package/fesm2022/ngx-tethys-divider.mjs +7 -7
  78. package/fesm2022/ngx-tethys-dot.mjs +8 -9
  79. package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
  80. package/fesm2022/ngx-tethys-drag-drop.mjs +23 -30
  81. package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
  82. package/fesm2022/ngx-tethys-dropdown.mjs +58 -70
  83. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  84. package/fesm2022/ngx-tethys-empty.mjs +10 -10
  85. package/fesm2022/ngx-tethys-flexible-text.mjs +8 -8
  86. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  87. package/fesm2022/ngx-tethys-form.mjs +47 -54
  88. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  89. package/fesm2022/ngx-tethys-fullscreen.mjs +15 -16
  90. package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
  91. package/fesm2022/ngx-tethys-grid.mjs +46 -51
  92. package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
  93. package/fesm2022/ngx-tethys-guider.mjs +55 -61
  94. package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
  95. package/fesm2022/ngx-tethys-i18n.mjs +51 -54
  96. package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
  97. package/fesm2022/ngx-tethys-icon.mjs +11 -12
  98. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  99. package/fesm2022/ngx-tethys-image.mjs +32 -21
  100. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  101. package/fesm2022/ngx-tethys-input-number.mjs +7 -7
  102. package/fesm2022/ngx-tethys-input.mjs +21 -23
  103. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  104. package/fesm2022/ngx-tethys-layout.mjs +73 -88
  105. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  106. package/fesm2022/ngx-tethys-list.mjs +19 -22
  107. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  108. package/fesm2022/ngx-tethys-loading.mjs +7 -7
  109. package/fesm2022/ngx-tethys-mention.mjs +11 -12
  110. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  111. package/fesm2022/ngx-tethys-menu.mjs +30 -30
  112. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  113. package/fesm2022/ngx-tethys-message.mjs +24 -24
  114. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  115. package/fesm2022/ngx-tethys-nav.mjs +26 -29
  116. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  117. package/fesm2022/ngx-tethys-notify.mjs +17 -17
  118. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  119. package/fesm2022/ngx-tethys-pagination.mjs +15 -17
  120. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  121. package/fesm2022/ngx-tethys-popover.mjs +21 -23
  122. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  123. package/fesm2022/ngx-tethys-progress.mjs +13 -13
  124. package/fesm2022/ngx-tethys-property-operation.mjs +11 -11
  125. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  126. package/fesm2022/ngx-tethys-property.mjs +11 -11
  127. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  128. package/fesm2022/ngx-tethys-radio.mjs +125 -115
  129. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  130. package/fesm2022/ngx-tethys-rate.mjs +10 -10
  131. package/fesm2022/ngx-tethys-resizable.mjs +18 -18
  132. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  133. package/fesm2022/ngx-tethys-result.mjs +7 -7
  134. package/fesm2022/ngx-tethys-segment.mjs +10 -10
  135. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  136. package/fesm2022/ngx-tethys-select.mjs +10 -10
  137. package/fesm2022/ngx-tethys-shared.mjs +81 -109
  138. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  139. package/fesm2022/ngx-tethys-skeleton.mjs +23 -24
  140. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  141. package/fesm2022/ngx-tethys-slide.mjs +36 -41
  142. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  143. package/fesm2022/ngx-tethys-slider.mjs +7 -7
  144. package/fesm2022/ngx-tethys-space.mjs +11 -12
  145. package/fesm2022/ngx-tethys-space.mjs.map +1 -1
  146. package/fesm2022/ngx-tethys-statistic.mjs +7 -7
  147. package/fesm2022/ngx-tethys-stepper.mjs +22 -24
  148. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  149. package/fesm2022/ngx-tethys-strength.mjs +8 -8
  150. package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
  151. package/fesm2022/ngx-tethys-switch.mjs +7 -7
  152. package/fesm2022/ngx-tethys-table.mjs +22 -25
  153. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  154. package/fesm2022/ngx-tethys-tabs.mjs +14 -15
  155. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  156. package/fesm2022/ngx-tethys-tag.mjs +12 -13
  157. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  158. package/fesm2022/ngx-tethys-time-picker.mjs +58 -56
  159. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  160. package/fesm2022/ngx-tethys-timeline.mjs +13 -13
  161. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  162. package/fesm2022/ngx-tethys-tooltip.mjs +14 -15
  163. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  164. package/fesm2022/ngx-tethys-transfer.mjs +10 -10
  165. package/fesm2022/ngx-tethys-tree-select.mjs +10 -10
  166. package/fesm2022/ngx-tethys-tree.mjs +17 -21
  167. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  168. package/fesm2022/ngx-tethys-typography.mjs +15 -17
  169. package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
  170. package/fesm2022/ngx-tethys-upload.mjs +18 -19
  171. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  172. package/fesm2022/ngx-tethys-util.mjs +418 -396
  173. package/fesm2022/ngx-tethys-util.mjs.map +1 -1
  174. package/fesm2022/ngx-tethys-vote.mjs +7 -7
  175. package/fesm2022/ngx-tethys-watermark.mjs +8 -9
  176. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  177. package/fesm2022/ngx-tethys.mjs +1 -1
  178. package/fesm2022/ngx-tethys.mjs.map +1 -1
  179. package/grid/grid.type.d.ts +5 -0
  180. package/grid/index.d.ts +1 -0
  181. package/grid/thy-grid-item.component.d.ts +1 -1
  182. package/grid/thy-grid.component.d.ts +1 -11
  183. package/guider/guider-manager.d.ts +2 -1
  184. package/guider/guider-ref.d.ts +6 -6
  185. package/guider/guider-step-ref.d.ts +3 -4
  186. package/guider/guider.interface.d.ts +26 -0
  187. package/i18n/i18n.service.d.ts +1 -1
  188. package/i18n/index.d.ts +2 -5
  189. package/i18n/locale.d.ts +1 -7
  190. package/i18n/locales/index.d.ts +5 -0
  191. package/i18n/util.d.ts +3 -0
  192. package/icon/index.d.ts +1 -1
  193. package/image/image-group.component.d.ts +4 -4
  194. package/image/image.directive.d.ts +2 -1
  195. package/image/image.token.d.ts +17 -0
  196. package/layout/header.component.d.ts +6 -18
  197. package/list/selection/selection-list.d.ts +2 -1
  198. package/list/selection/selection.interface.d.ts +2 -3
  199. package/message/abstract/abstract-message-queue.service.d.ts +2 -2
  200. package/message/abstract/abstract-message-ref.d.ts +6 -2
  201. package/package.json +2 -1
  202. package/popover/popover.directive.d.ts +6 -2
  203. package/radio/group/radio-group.component.d.ts +2 -1
  204. package/radio/radio.component.d.ts +3 -3
  205. package/radio/radio.token.d.ts +12 -0
  206. package/resizable/interface.d.ts +5 -0
  207. package/resizable/resizable.directive.d.ts +9 -3
  208. package/resizable/resizable.service.d.ts +1 -1
  209. package/resizable/resize-handle.component.d.ts +1 -6
  210. package/schematics/version.d.ts +1 -1
  211. package/schematics/version.js +1 -1
  212. package/segment/segment-item.component.d.ts +2 -1
  213. package/segment/segment.token.d.ts +10 -4
  214. package/shared/index.d.ts +1 -0
  215. package/shared/option/list-option/list-option.component.d.ts +10 -5
  216. package/shared/option/option.component.d.ts +1 -3
  217. package/shared/option/option.token.d.ts +11 -11
  218. package/shared/shared.type.d.ts +1 -0
  219. package/table/index.d.ts +1 -0
  220. package/table/styles/table.scss +9 -1
  221. package/table/table-column.component.d.ts +5 -30
  222. package/table/table-skeleton.component.d.ts +11 -3
  223. package/table/table.component.d.ts +1 -3
  224. package/table/table.type.d.ts +3 -0
  225. package/tag/tag.component.d.ts +2 -4
  226. package/time-picker/inner/inner-time-picker.component.d.ts +3 -1
  227. package/time-picker/inner/inner-time-picker.store.d.ts +5 -5
  228. package/time-picker/time-picker.utils.d.ts +5 -5
  229. package/timeline/index.d.ts +1 -0
  230. package/timeline/timeline-item.component.d.ts +1 -1
  231. package/timeline/timeline.component.d.ts +1 -1
  232. package/timeline/timeline.type.d.ts +1 -0
  233. package/tooltip/tooltip.directive.d.ts +2 -10
  234. package/tree/index.d.ts +0 -1
  235. package/tree/tree-abstract.d.ts +1 -1
  236. package/tree/tree-node.component.d.ts +17 -8
  237. package/tree/tree.class.d.ts +40 -1
  238. package/tree/tree.component.d.ts +1 -1
  239. package/tree/tree.pipe.d.ts +1 -1
  240. package/tree/tree.service.d.ts +3 -9
  241. package/util/helpers/helpers.d.ts +1 -0
  242. package/tree/tree-node.class.d.ts +0 -29
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-anchor.mjs","sources":["../../../src/anchor/anchor.component.ts","../../../src/anchor/anchor-link.component.ts","../../../src/anchor/anchor.module.ts","../../../src/anchor/ngx-tethys-anchor.ts"],"sourcesContent":["import { Platform } from '@angular/cdk/platform';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n numberAttribute,\n inject\n} from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil, throttleTime } from 'rxjs/operators';\n\nimport { DOCUMENT, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ThyAffix } from 'ngx-tethys/affix';\nimport { ThyScrollService } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, getOffset } from 'ngx-tethys/util';\nimport { ThyAnchorLink } from './anchor-link.component';\n\ninterface Section {\n linkComponent: ThyAnchorLink;\n top: number;\n}\n\nconst sharpMatcherRegx = /#([^#]+)$/;\n\n/**\n * 锚点组件\n * @name thy-anchor\n */\n@Component({\n selector: 'thy-anchor',\n exportAs: 'thyAnchor',\n preserveWhitespaces: false,\n template: `\n @if (thyAffix) {\n <thy-affix [thyOffsetTop]=\"thyOffsetTop\" [thyContainer]=\"container\">\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </thy-affix>\n } @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n <ng-template #content>\n <div\n class=\"thy-anchor-wrapper\"\n [ngClass]=\"{ 'thy-anchor-wrapper-horizontal': thyDirection === 'horizontal' }\"\n [ngStyle]=\"wrapperStyle\">\n <div class=\"thy-anchor\">\n <div class=\"thy-anchor-ink\">\n <div class=\"thy-anchor-ink-full\" #ink></div>\n </div>\n <ng-content></ng-content>\n </div>\n </div>\n </ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyAffix, NgTemplateOutlet, NgStyle, NgClass]\n})\nexport class ThyAnchor implements OnDestroy, AfterViewInit, OnChanges {\n private document = inject(DOCUMENT);\n private cdr = inject(ChangeDetectorRef);\n private platform = inject(Platform);\n private zone = inject(NgZone);\n private renderer = inject(Renderer2);\n private scrollService = inject(ThyScrollService);\n\n @ViewChild('ink') private ink!: ElementRef;\n\n /**\n * 固定模式\n */\n @Input({ transform: coerceBooleanProperty }) thyAffix = true;\n\n /**\n * 锚点区域边界,单位:px\n */\n @Input({ transform: numberAttribute })\n thyBounds = 5;\n\n /**\n * 缓冲的偏移量阈值\n */\n @Input({ transform: numberAttribute })\n thyOffsetTop?: number = undefined;\n\n /**\n * 指定滚动的容器\n * @type string | HTMLElement\n */\n @Input() thyContainer?: string | HTMLElement;\n\n /**\n * 设置导航方向\n * @type 'vertical' | 'horizontal'\n */\n @Input() thyDirection: 'vertical' | 'horizontal' = 'vertical';\n\n /**\n * 点击项触发\n */\n @Output() readonly thyClick = new EventEmitter<ThyAnchorLink>();\n\n /**\n * 滚动到某锚点时触发\n */\n @Output() readonly thyScroll = new EventEmitter<ThyAnchorLink>();\n\n visible = false;\n\n wrapperStyle = { 'max-height': '100vh' };\n\n container?: HTMLElement | Window;\n\n private links: ThyAnchorLink[] = [];\n\n private animating = false;\n\n private destroy$ = new Subject<void>();\n\n private handleScrollTimeoutID: any = -1;\n\n registerLink(link: ThyAnchorLink): void {\n this.links.push(link);\n }\n\n unregisterLink(link: ThyAnchorLink): void {\n this.links.splice(this.links.indexOf(link), 1);\n }\n\n private getContainer(): HTMLElement | Window {\n return this.container || window;\n }\n\n ngAfterViewInit(): void {\n this.warningPrompt();\n this.registerScrollEvent();\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.handleScrollTimeoutID);\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private warningPrompt() {\n if (this.thyDirection === 'horizontal') {\n const hasChildren = this.links.some(link =>\n Array.from(link?.elementRef?.nativeElement?.childNodes)?.some((item: HTMLElement) => item?.nodeName === 'THY-ANCHOR-LINK')\n );\n if (hasChildren) {\n console.warn(\"Anchor link nesting is not supported when 'Anchor' direction is horizontal.\");\n }\n }\n }\n\n private registerScrollEvent(): void {\n if (!this.platform.isBrowser) {\n return;\n }\n this.destroy$.next();\n this.zone.runOutsideAngular(() => {\n fromEvent(this.getContainer(), 'scroll', { passive: true })\n .pipe(throttleTime(50), takeUntil(this.destroy$))\n .subscribe(() => this.handleScroll());\n });\n // Browser would maintain the scrolling position when refreshing.\n // So we have to delay calculation in avoid of getting a incorrect result.\n this.handleScrollTimeoutID = setTimeout(() => this.handleScroll());\n }\n\n handleScroll(): void {\n if (typeof document === 'undefined' || this.animating) {\n return;\n }\n const container: HTMLElement = this.container instanceof HTMLElement ? this.container : (this.document as unknown as HTMLElement);\n\n const sections: Section[] = [];\n const scope = (this.thyOffsetTop || 0) + this.thyBounds;\n this.links.forEach(linkComponent => {\n const sharpLinkMatch = sharpMatcherRegx.exec(linkComponent.thyHref.toString());\n if (!sharpLinkMatch) {\n return;\n }\n const target = container.querySelector(`#${sharpLinkMatch[1]}`) as HTMLElement;\n if (target) {\n const top = getOffset(target, this.getContainer()).top;\n if (top < scope) {\n sections.push({\n top,\n linkComponent\n });\n }\n }\n });\n\n this.visible = !!sections.length;\n if (!this.visible) {\n this.clearActive();\n this.cdr.detectChanges();\n } else {\n const maxSection = sections.reduce((prev, curr) => (curr.top > prev.top ? curr : prev));\n this.handleActive(maxSection.linkComponent);\n }\n this.setVisible();\n }\n\n private clearActive(): void {\n this.links.forEach(i => {\n i.unsetActive();\n });\n }\n\n private handleActive(linkComponent: ThyAnchorLink): void {\n this.clearActive();\n linkComponent.setActive();\n const linkNode = linkComponent.getLinkTitleElement();\n const horizontalAnchor = this.thyDirection === 'horizontal';\n\n this.ink.nativeElement.style.top = horizontalAnchor ? '' : `${linkNode.offsetTop}px`;\n this.ink.nativeElement.style.height = horizontalAnchor ? '' : `${linkNode.clientHeight}px`;\n this.ink.nativeElement.style.left = horizontalAnchor ? `${linkNode.offsetLeft}px` : '';\n this.ink.nativeElement.style.width = horizontalAnchor ? `${linkNode.clientWidth}px` : '';\n this.visible = true;\n this.setVisible();\n this.thyScroll.emit(linkComponent);\n }\n\n private setVisible(): void {\n const visible = this.visible;\n const visibleClassname = 'visible';\n if (this.ink) {\n if (visible) {\n this.renderer.addClass(this.ink.nativeElement, visibleClassname);\n } else {\n this.renderer.removeClass(this.ink.nativeElement, visibleClassname);\n }\n }\n }\n\n handleScrollTo(linkComponent: ThyAnchorLink): void {\n const container: HTMLElement = this.container instanceof HTMLElement ? this.container : (this.document as unknown as HTMLElement);\n const linkElement: HTMLElement = container.querySelector(linkComponent.thyHref);\n if (!linkElement) {\n return;\n }\n\n this.animating = true;\n const containerScrollTop = this.scrollService.getScroll(this.getContainer());\n const elementOffsetTop = getOffset(linkElement, this.getContainer()).top;\n const targetScrollTop = containerScrollTop + elementOffsetTop - (this.thyOffsetTop || 0);\n this.scrollService.scrollTo(this.getContainer(), targetScrollTop, undefined, () => {\n this.animating = false;\n });\n this.handleActive(linkComponent);\n this.thyClick.emit(linkComponent);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { thyOffsetTop, thyContainer } = changes;\n if (thyOffsetTop) {\n this.wrapperStyle = {\n 'max-height': `calc(100vh - ${this.thyOffsetTop}px)`\n };\n }\n if (thyContainer && this.thyContainer) {\n const container = this.thyContainer;\n this.container = typeof container === 'string' ? (this.document.querySelector(container) as HTMLElement) : container;\n this.registerScrollEvent();\n }\n }\n}\n","import { Platform } from '@angular/cdk/platform';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { ThyAnchor } from './anchor.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/**\n * 锚点链接组件,可供锚点跳转\n * @name thy-anchor-link,thyAnchorLink\n */\n@Component({\n selector: 'thy-link,thy-anchor-link',\n exportAs: 'thyLink,thyAnchorLink',\n preserveWhitespaces: false,\n template: `\n <a #linkTitle (click)=\"goToClick($event)\" href=\"{{ thyHref }}\" class=\"thy-anchor-link-title\" title=\"{{ title }}\">\n @if (title) {\n <span>{{ title }}</span>\n } @else {\n <ng-template [ngTemplateOutlet]=\"titleTemplate || thyTemplate\"></ng-template>\n }\n </a>\n <ng-content></ng-content>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\n})\nexport class ThyAnchorLink implements OnInit, OnDestroy {\n elementRef = inject(ElementRef);\n private anchorComponent = inject(ThyAnchor);\n private platform = inject(Platform);\n\n title: string | null = '';\n\n titleTemplate?: TemplateRef<any>;\n\n private hostRenderer = useHostRenderer();\n\n /**\n * 锚点链接\n */\n @Input() thyHref = '#';\n\n /**\n * 文字内容\n */\n @Input()\n set thyTitle(value: string | TemplateRef<void>) {\n if (value instanceof TemplateRef) {\n this.title = null;\n this.titleTemplate = value;\n } else {\n this.title = value;\n }\n }\n\n @ContentChild('thyTemplate') thyTemplate!: TemplateRef<void>;\n\n @ViewChild('linkTitle', { static: true }) linkTitle!: ElementRef<HTMLAnchorElement>;\n\n constructor() {\n const elementRef = this.elementRef;\n\n this.hostRenderer.addClass('thy-anchor-link');\n if (elementRef.nativeElement.tagName.toLowerCase() === 'thy-link') {\n console.warn(`'thy-link' and 'thyLink' are deprecated, please use 'thy-anchor-link' and 'thyAnchorLink' instead.`);\n }\n }\n\n ngOnInit(): void {\n this.anchorComponent.registerLink(this);\n }\n\n getLinkTitleElement(): HTMLAnchorElement {\n return this.linkTitle.nativeElement;\n }\n\n setActive(): void {\n this.hostRenderer.addClass('thy-anchor-link-active');\n }\n\n unsetActive(): void {\n this.hostRenderer.removeClass('thy-anchor-link-active');\n }\n\n goToClick(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n if (this.platform.isBrowser) {\n this.anchorComponent.handleScrollTo(this);\n }\n }\n\n ngOnDestroy(): void {\n this.anchorComponent.unregisterLink(this);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { ThyAnchor } from './anchor.component';\nimport { ThyAnchorLink } from './anchor-link.component';\nimport { ThyAffixModule } from 'ngx-tethys/affix';\n\n@NgModule({\n exports: [ThyAnchor, ThyAnchorLink],\n imports: [CommonModule, PlatformModule, ThyAffixModule, ThyAnchor, ThyAnchorLink]\n})\nexport class ThyAnchorModule {}\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-anchor.mjs","sources":["../../../src/anchor/anchor.token.ts","../../../src/anchor/anchor.component.ts","../../../src/anchor/anchor-link.component.ts","../../../src/anchor/anchor.module.ts","../../../src/anchor/ngx-tethys-anchor.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface IThyAnchorLinkComponent {}\n\nexport interface IThyAnchorComponent {\n registerLink(link: IThyAnchorLinkComponent): void;\n unregisterLink(link: IThyAnchorLinkComponent): void;\n handleScrollTo(linkComponent: IThyAnchorLinkComponent): void;\n}\n\nexport const THY_ANCHOR_COMPONENT = new InjectionToken<IThyAnchorComponent>('THY_ANCHOR_COMPONENT');\n","import { Platform } from '@angular/cdk/platform';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n numberAttribute,\n inject\n} from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil, throttleTime } from 'rxjs/operators';\n\nimport { DOCUMENT, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ThyAffix } from 'ngx-tethys/affix';\nimport { ThyScrollService } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, getOffset } from 'ngx-tethys/util';\nimport { ThyAnchorLink } from './anchor-link.component';\nimport { IThyAnchorComponent, THY_ANCHOR_COMPONENT } from './anchor.token';\n\ninterface Section {\n linkComponent: ThyAnchorLink;\n top: number;\n}\n\nconst sharpMatcherRegx = /#([^#]+)$/;\n\n/**\n * 锚点组件\n * @name thy-anchor\n */\n@Component({\n selector: 'thy-anchor',\n exportAs: 'thyAnchor',\n preserveWhitespaces: false,\n template: `\n @if (thyAffix) {\n <thy-affix [thyOffsetTop]=\"thyOffsetTop\" [thyContainer]=\"container\">\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </thy-affix>\n } @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n <ng-template #content>\n <div\n class=\"thy-anchor-wrapper\"\n [ngClass]=\"{ 'thy-anchor-wrapper-horizontal': thyDirection === 'horizontal' }\"\n [ngStyle]=\"wrapperStyle\">\n <div class=\"thy-anchor\">\n <div class=\"thy-anchor-ink\">\n <div class=\"thy-anchor-ink-full\" #ink></div>\n </div>\n <ng-content></ng-content>\n </div>\n </div>\n </ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyAffix, NgTemplateOutlet, NgStyle, NgClass],\n providers: [\n {\n provide: THY_ANCHOR_COMPONENT,\n useExisting: ThyAnchor\n }\n ]\n})\nexport class ThyAnchor implements IThyAnchorComponent, OnDestroy, AfterViewInit, OnChanges {\n private document = inject(DOCUMENT);\n private cdr = inject(ChangeDetectorRef);\n private platform = inject(Platform);\n private zone = inject(NgZone);\n private renderer = inject(Renderer2);\n private scrollService = inject(ThyScrollService);\n\n @ViewChild('ink') private ink!: ElementRef;\n\n /**\n * 固定模式\n */\n @Input({ transform: coerceBooleanProperty }) thyAffix = true;\n\n /**\n * 锚点区域边界,单位:px\n */\n @Input({ transform: numberAttribute })\n thyBounds = 5;\n\n /**\n * 缓冲的偏移量阈值\n */\n @Input({ transform: numberAttribute })\n thyOffsetTop?: number = undefined;\n\n /**\n * 指定滚动的容器\n * @type string | HTMLElement\n */\n @Input() thyContainer?: string | HTMLElement;\n\n /**\n * 设置导航方向\n * @type 'vertical' | 'horizontal'\n */\n @Input() thyDirection: 'vertical' | 'horizontal' = 'vertical';\n\n /**\n * 点击项触发\n */\n @Output() readonly thyClick = new EventEmitter<ThyAnchorLink>();\n\n /**\n * 滚动到某锚点时触发\n */\n @Output() readonly thyScroll = new EventEmitter<ThyAnchorLink>();\n\n visible = false;\n\n wrapperStyle = { 'max-height': '100vh' };\n\n container?: HTMLElement | Window;\n\n private links: ThyAnchorLink[] = [];\n\n private animating = false;\n\n private destroy$ = new Subject<void>();\n\n private handleScrollTimeoutID: any = -1;\n\n registerLink(link: ThyAnchorLink): void {\n this.links.push(link);\n }\n\n unregisterLink(link: ThyAnchorLink): void {\n this.links.splice(this.links.indexOf(link), 1);\n }\n\n private getContainer(): HTMLElement | Window {\n return this.container || window;\n }\n\n ngAfterViewInit(): void {\n this.warningPrompt();\n this.registerScrollEvent();\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.handleScrollTimeoutID);\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private warningPrompt() {\n if (this.thyDirection === 'horizontal') {\n const hasChildren = this.links.some(link =>\n Array.from(link?.elementRef?.nativeElement?.childNodes)?.some((item: HTMLElement) => item?.nodeName === 'THY-ANCHOR-LINK')\n );\n if (hasChildren) {\n console.warn(\"Anchor link nesting is not supported when 'Anchor' direction is horizontal.\");\n }\n }\n }\n\n private registerScrollEvent(): void {\n if (!this.platform.isBrowser) {\n return;\n }\n this.destroy$.next();\n this.zone.runOutsideAngular(() => {\n fromEvent(this.getContainer(), 'scroll', { passive: true })\n .pipe(throttleTime(50), takeUntil(this.destroy$))\n .subscribe(() => this.handleScroll());\n });\n // Browser would maintain the scrolling position when refreshing.\n // So we have to delay calculation in avoid of getting a incorrect result.\n this.handleScrollTimeoutID = setTimeout(() => this.handleScroll());\n }\n\n handleScroll(): void {\n if (typeof document === 'undefined' || this.animating) {\n return;\n }\n const container: HTMLElement = this.container instanceof HTMLElement ? this.container : (this.document as unknown as HTMLElement);\n\n const sections: Section[] = [];\n const scope = (this.thyOffsetTop || 0) + this.thyBounds;\n this.links.forEach(linkComponent => {\n const sharpLinkMatch = sharpMatcherRegx.exec(linkComponent.thyHref.toString());\n if (!sharpLinkMatch) {\n return;\n }\n const target = container.querySelector(`#${sharpLinkMatch[1]}`) as HTMLElement;\n if (target) {\n const top = getOffset(target, this.getContainer()).top;\n if (top < scope) {\n sections.push({\n top,\n linkComponent\n });\n }\n }\n });\n\n this.visible = !!sections.length;\n if (!this.visible) {\n this.clearActive();\n this.cdr.detectChanges();\n } else {\n const maxSection = sections.reduce((prev, curr) => (curr.top > prev.top ? curr : prev));\n this.handleActive(maxSection.linkComponent);\n }\n this.setVisible();\n }\n\n private clearActive(): void {\n this.links.forEach(i => {\n i.unsetActive();\n });\n }\n\n private handleActive(linkComponent: ThyAnchorLink): void {\n this.clearActive();\n linkComponent.setActive();\n const linkNode = linkComponent.getLinkTitleElement();\n const horizontalAnchor = this.thyDirection === 'horizontal';\n\n this.ink.nativeElement.style.top = horizontalAnchor ? '' : `${linkNode.offsetTop}px`;\n this.ink.nativeElement.style.height = horizontalAnchor ? '' : `${linkNode.clientHeight}px`;\n this.ink.nativeElement.style.left = horizontalAnchor ? `${linkNode.offsetLeft}px` : '';\n this.ink.nativeElement.style.width = horizontalAnchor ? `${linkNode.clientWidth}px` : '';\n this.visible = true;\n this.setVisible();\n this.thyScroll.emit(linkComponent);\n }\n\n private setVisible(): void {\n const visible = this.visible;\n const visibleClassname = 'visible';\n if (this.ink) {\n if (visible) {\n this.renderer.addClass(this.ink.nativeElement, visibleClassname);\n } else {\n this.renderer.removeClass(this.ink.nativeElement, visibleClassname);\n }\n }\n }\n\n handleScrollTo(linkComponent: ThyAnchorLink): void {\n const container: HTMLElement = this.container instanceof HTMLElement ? this.container : (this.document as unknown as HTMLElement);\n const linkElement: HTMLElement = container.querySelector(linkComponent.thyHref);\n if (!linkElement) {\n return;\n }\n\n this.animating = true;\n const containerScrollTop = this.scrollService.getScroll(this.getContainer());\n const elementOffsetTop = getOffset(linkElement, this.getContainer()).top;\n const targetScrollTop = containerScrollTop + elementOffsetTop - (this.thyOffsetTop || 0);\n this.scrollService.scrollTo(this.getContainer(), targetScrollTop, undefined, () => {\n this.animating = false;\n });\n this.handleActive(linkComponent);\n this.thyClick.emit(linkComponent);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { thyOffsetTop, thyContainer } = changes;\n if (thyOffsetTop) {\n this.wrapperStyle = {\n 'max-height': `calc(100vh - ${this.thyOffsetTop}px)`\n };\n }\n if (thyContainer && this.thyContainer) {\n const container = this.thyContainer;\n this.container = typeof container === 'string' ? (this.document.querySelector(container) as HTMLElement) : container;\n this.registerScrollEvent();\n }\n }\n}\n","import { Platform } from '@angular/cdk/platform';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { IThyAnchorLinkComponent, THY_ANCHOR_COMPONENT } from './anchor.token';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/**\n * 锚点链接组件,可供锚点跳转\n * @name thy-anchor-link,thyAnchorLink\n */\n@Component({\n selector: 'thy-link,thy-anchor-link',\n exportAs: 'thyLink,thyAnchorLink',\n preserveWhitespaces: false,\n template: `\n <a #linkTitle (click)=\"goToClick($event)\" href=\"{{ thyHref }}\" class=\"thy-anchor-link-title\" title=\"{{ title }}\">\n @if (title) {\n <span>{{ title }}</span>\n } @else {\n <ng-template [ngTemplateOutlet]=\"titleTemplate || thyTemplate\"></ng-template>\n }\n </a>\n <ng-content></ng-content>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\n})\nexport class ThyAnchorLink implements IThyAnchorLinkComponent, OnInit, OnDestroy {\n elementRef = inject(ElementRef);\n private anchorComponent = inject(THY_ANCHOR_COMPONENT, { optional: true })!;\n private platform = inject(Platform);\n\n title: string | null = '';\n\n titleTemplate?: TemplateRef<any>;\n\n private hostRenderer = useHostRenderer();\n\n /**\n * 锚点链接\n */\n @Input() thyHref = '#';\n\n /**\n * 文字内容\n */\n @Input()\n set thyTitle(value: string | TemplateRef<void>) {\n if (value instanceof TemplateRef) {\n this.title = null;\n this.titleTemplate = value;\n } else {\n this.title = value;\n }\n }\n\n @ContentChild('thyTemplate') thyTemplate!: TemplateRef<void>;\n\n @ViewChild('linkTitle', { static: true }) linkTitle!: ElementRef<HTMLAnchorElement>;\n\n constructor() {\n const elementRef = this.elementRef;\n\n this.hostRenderer.addClass('thy-anchor-link');\n if (elementRef.nativeElement.tagName.toLowerCase() === 'thy-link') {\n console.warn(`'thy-link' and 'thyLink' are deprecated, please use 'thy-anchor-link' and 'thyAnchorLink' instead.`);\n }\n }\n\n ngOnInit(): void {\n this.anchorComponent.registerLink(this);\n }\n\n getLinkTitleElement(): HTMLAnchorElement {\n return this.linkTitle.nativeElement;\n }\n\n setActive(): void {\n this.hostRenderer.addClass('thy-anchor-link-active');\n }\n\n unsetActive(): void {\n this.hostRenderer.removeClass('thy-anchor-link-active');\n }\n\n goToClick(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n if (this.platform.isBrowser) {\n this.anchorComponent.handleScrollTo(this);\n }\n }\n\n ngOnDestroy(): void {\n this.anchorComponent.unregisterLink(this);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { ThyAnchor } from './anchor.component';\nimport { ThyAnchorLink } from './anchor-link.component';\nimport { ThyAffixModule } from 'ngx-tethys/affix';\n\n@NgModule({\n exports: [ThyAnchor, ThyAnchorLink],\n imports: [CommonModule, PlatformModule, ThyAffixModule, ThyAnchor, ThyAnchorLink]\n})\nexport class ThyAnchorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -89,8 +89,8 @@ class ThyArrowSwitcher {
89
89
  this.getDisabled();
90
90
  this.thyNext.emit({ index: this.index, event });
91
91
  }
92
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyArrowSwitcher, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: ThyArrowSwitcher, isStandalone: true, selector: "thy-arrow-switcher", inputs: { thyPreviousTooltip: "thyPreviousTooltip", thyNextTooltip: "thyNextTooltip", thyTheme: "thyTheme", thyTotal: ["thyTotal", "thyTotal", numberAttribute], thySize: "thySize" }, outputs: { thyPrevious: "thyPrevious", thyNext: "thyNext" }, host: { properties: { "class.thy-arrow-switcher": "this._isArrowSwitcher", "class.thy-arrow-switcher-small": "this._isSmallSize" } }, providers: [
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyArrowSwitcher, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: ThyArrowSwitcher, isStandalone: true, selector: "thy-arrow-switcher", inputs: { thyPreviousTooltip: "thyPreviousTooltip", thyNextTooltip: "thyNextTooltip", thyTheme: "thyTheme", thyTotal: ["thyTotal", "thyTotal", numberAttribute], thySize: "thySize" }, outputs: { thyPrevious: "thyPrevious", thyNext: "thyNext" }, host: { properties: { "class.thy-arrow-switcher": "this._isArrowSwitcher", "class.thy-arrow-switcher-small": "this._isSmallSize" } }, providers: [
94
94
  {
95
95
  provide: NG_VALUE_ACCESSOR,
96
96
  useExisting: forwardRef(() => ThyArrowSwitcher),
@@ -98,7 +98,7 @@ class ThyArrowSwitcher {
98
98
  }
99
99
  ], ngImport: i0, template: "@if (theme === 'lite') {\n <div class=\"switcher-wrapper\">\n <a\n thyAction\n [thyTooltip]=\"thyPreviousTooltip\"\n href=\"javascript:;\"\n [thyDisabled]=\"previousDisabled\"\n class=\"mr-2\"\n (click)=\"onPreviousClick($event)\"\n ><thy-icon thyIconName=\"angle-up\"></thy-icon\n ></a>\n <a thyAction [thyTooltip]=\"thyNextTooltip\" href=\"javascript:;\" [thyDisabled]=\"nextDisabled\" (click)=\"onNextClick($event)\"\n ><thy-icon thyIconName=\"angle-down\"></thy-icon\n ></a>\n </div>\n} @else {\n <div class=\"switcher-wrapper\">\n <button\n thyButtonIcon=\"angle-left\"\n [thyTooltip]=\"thyPreviousTooltip\"\n [disabled]=\"previousDisabled\"\n (click)=\"onPreviousClick($event)\"\n ></button>\n <span>{{ index + 1 }} / {{ total }}</span>\n <button thyButtonIcon=\"angle-right\" [thyTooltip]=\"thyNextTooltip\" [disabled]=\"nextDisabled\" (click)=\"onNextClick($event)\"></button>\n </div>\n}\n\n", dependencies: [{ kind: "component", type: ThyAction, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: ThyButtonIcon, selector: "thy-button-icon,[thy-button-icon],[thyButtonIcon]", inputs: ["thySize", "thyIcon", "thyButtonIcon", "thyShape", "thyLight", "thyActive", "thyTheme", "thyColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
100
100
  }
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyArrowSwitcher, decorators: [{
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyArrowSwitcher, decorators: [{
102
102
  type: Component,
103
103
  args: [{ selector: 'thy-arrow-switcher', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
104
104
  {
@@ -131,11 +131,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
131
131
  }] } });
132
132
 
133
133
  class ThyArrowSwitcherModule {
134
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyArrowSwitcherModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
135
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: ThyArrowSwitcherModule, imports: [CommonModule, ThyButtonModule, ThyIconModule, ThyActionModule, ThyTooltipModule, ThyArrowSwitcher], exports: [ThyArrowSwitcher] }); }
136
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyArrowSwitcherModule, imports: [CommonModule, ThyButtonModule, ThyIconModule, ThyActionModule, ThyTooltipModule, ThyArrowSwitcher] }); }
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyArrowSwitcherModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
135
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: ThyArrowSwitcherModule, imports: [CommonModule, ThyButtonModule, ThyIconModule, ThyActionModule, ThyTooltipModule, ThyArrowSwitcher], exports: [ThyArrowSwitcher] }); }
136
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyArrowSwitcherModule, imports: [CommonModule, ThyButtonModule, ThyIconModule, ThyActionModule, ThyTooltipModule, ThyArrowSwitcher] }); }
137
137
  }
138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyArrowSwitcherModule, decorators: [{
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyArrowSwitcherModule, decorators: [{
139
139
  type: NgModule,
140
140
  args: [{
141
141
  imports: [CommonModule, ThyButtonModule, ThyIconModule, ThyActionModule, ThyTooltipModule, ThyArrowSwitcher],
@@ -152,15 +152,15 @@ class ThyAutocomplete {
152
152
  this.ngUnsubscribe$.next();
153
153
  this.ngUnsubscribe$.complete();
154
154
  }
155
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyAutocomplete, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
156
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: ThyAutocomplete, isStandalone: true, selector: "thy-autocomplete", inputs: { thyEmptyText: "thyEmptyText", thyAutoActiveFirstOption: ["thyAutoActiveFirstOption", "thyAutoActiveFirstOption", coerceBooleanProperty] }, outputs: { thyOptionSelected: "thyOptionSelected", thyOpened: "thyOpened", thyClosed: "thyClosed", thyOptionActivated: "thyOptionActivated" }, providers: [
155
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyAutocomplete, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
156
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: ThyAutocomplete, isStandalone: true, selector: "thy-autocomplete", inputs: { thyEmptyText: "thyEmptyText", thyAutoActiveFirstOption: ["thyAutoActiveFirstOption", "thyAutoActiveFirstOption", coerceBooleanProperty] }, outputs: { thyOptionSelected: "thyOptionSelected", thyOpened: "thyOpened", thyClosed: "thyClosed", thyOptionActivated: "thyOptionActivated" }, providers: [
157
157
  {
158
158
  provide: THY_OPTION_PARENT_COMPONENT,
159
159
  useExisting: ThyAutocomplete
160
160
  }
161
161
  ], queries: [{ propertyName: "options", predicate: ThyOption, descendants: true }], viewQueries: [{ propertyName: "contentTemplateRef", first: true, predicate: ["contentTemplate"], descendants: true, static: true }, { propertyName: "optionsContainer", first: true, predicate: ["panel"], descendants: true }], ngImport: i0, template: "<ng-template #contentTemplate>\n <div thyStopPropagation [ngClass]=\"dropDownClass\">\n <div #panel class=\"thy-select-dropdown-options\">\n <ng-content></ng-content>\n @if (isEmptyOptions) {\n <thy-empty [thyMessage]=\"thyEmptyText\" [thyIconName]=\"emptyIcon()\"></thy-empty>\n }\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: ThyStopPropagationDirective, selector: "[thyStopPropagation]", inputs: ["thyStopPropagation"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ThyEmpty, selector: "thy-empty", inputs: ["thyMessage", "thyTranslationKey", "thyTranslationValues", "thyEntityName", "thyEntityNameTranslateKey", "thyIconName", "thySize", "thyMarginTop", "thyTopAuto", "thyContainer", "thyImageUrl", "thyImageLoading", "thyImageFetchPriority", "thyDescription"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
162
162
  }
163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyAutocomplete, decorators: [{
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyAutocomplete, decorators: [{
164
164
  type: Component,
165
165
  args: [{ selector: 'thy-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
166
166
  {
@@ -260,10 +260,10 @@ class ThyAutocompleteContainer extends ThyAbstractOverlayContainer {
260
260
  this.animationState = 'exit';
261
261
  this.changeDetectorRef.markForCheck();
262
262
  }
263
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyAutocompleteContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
264
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: ThyAutocompleteContainer, isStandalone: true, selector: "thy-autocomplete-container", host: { attributes: { "tabindex": "-1" }, listeners: { "@autocompleteContainer.start": "onAnimationStart($event)", "@autocompleteContainer.done": "onAnimationDone($event)" }, properties: { "attr.role": "'autocomplete'", "@autocompleteContainer": "animationState" }, classAttribute: "thy-autocomplete-container" }, viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: ThyPortalOutlet, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template thyPortalOutlet></ng-template>\n", dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: ThyPortalOutlet, selector: "[thyPortalOutlet]", inputs: ["thyPortalOutlet"], exportAs: ["thyPortalOutlet"] }], animations: [thyAutocompleteAnimations.autocompleteContainer] }); }
263
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyAutocompleteContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
264
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: ThyAutocompleteContainer, isStandalone: true, selector: "thy-autocomplete-container", host: { attributes: { "tabindex": "-1" }, listeners: { "@autocompleteContainer.start": "onAnimationStart($event)", "@autocompleteContainer.done": "onAnimationDone($event)" }, properties: { "attr.role": "'autocomplete'", "@autocompleteContainer": "animationState" }, classAttribute: "thy-autocomplete-container" }, viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: ThyPortalOutlet, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template thyPortalOutlet></ng-template>\n", dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: ThyPortalOutlet, selector: "[thyPortalOutlet]", inputs: ["thyPortalOutlet"], exportAs: ["thyPortalOutlet"] }], animations: [thyAutocompleteAnimations.autocompleteContainer] }); }
265
265
  }
266
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyAutocompleteContainer, decorators: [{
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyAutocompleteContainer, decorators: [{
267
267
  type: Component,
268
268
  args: [{ selector: 'thy-autocomplete-container', animations: [thyAutocompleteAnimations.autocompleteContainer], host: {
269
269
  class: 'thy-autocomplete-container',
@@ -398,10 +398,10 @@ class ThyAutocompleteService extends ThyAbstractOverlayService {
398
398
  ngOnDestroy() {
399
399
  this.dispose();
400
400
  }
401
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyAutocompleteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
402
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyAutocompleteService }); }
401
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyAutocompleteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
402
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyAutocompleteService }); }
403
403
  }
404
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyAutocompleteService, decorators: [{
404
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyAutocompleteService, decorators: [{
405
405
  type: Injectable
406
406
  }], ctorParameters: () => [] });
407
407
 
@@ -631,10 +631,10 @@ class ThyAutocompleteTriggerDirective {
631
631
  this.closeKeyEventStream.complete();
632
632
  this.destroyPanel();
633
633
  }
634
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyAutocompleteTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
635
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.4", type: ThyAutocompleteTriggerDirective, isStandalone: true, selector: "input[thyAutocompleteTrigger], textarea[thyAutocompleteTrigger], thy-input[thyAutocompleteTrigger], thy-input-search[thyAutocompleteTrigger], input[thyAutocomplete], textarea[thyAutocomplete], thy-input[thyAutocomplete], thy-input-search[thyAutocomplete]", inputs: { autocompleteComponent: ["thyAutocompleteComponent", "autocompleteComponent"], autocomplete: ["thyAutocomplete", "autocomplete"], thyOffset: ["thyOffset", "thyOffset", numberAttribute], thyAutocompleteWidth: ["thyAutocompleteWidth", "thyAutocompleteWidth", numberAttribute], thyPlacement: "thyPlacement", thyIsFocusOpen: ["thyIsFocusOpen", "thyIsFocusOpen", coerceBooleanProperty] }, host: { listeners: { "input": "handleInput($event)", "focusin": "onFocus()", "keydown": "onKeydown($event)" }, properties: { "class.thy-autocomplete-opened": "this.panelOpened" } }, exportAs: ["thyAutocompleteTrigger", "thyAutocomplete"], ngImport: i0 }); }
634
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyAutocompleteTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
635
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.6", type: ThyAutocompleteTriggerDirective, isStandalone: true, selector: "input[thyAutocompleteTrigger], textarea[thyAutocompleteTrigger], thy-input[thyAutocompleteTrigger], thy-input-search[thyAutocompleteTrigger], input[thyAutocomplete], textarea[thyAutocomplete], thy-input[thyAutocomplete], thy-input-search[thyAutocomplete]", inputs: { autocompleteComponent: ["thyAutocompleteComponent", "autocompleteComponent"], autocomplete: ["thyAutocomplete", "autocomplete"], thyOffset: ["thyOffset", "thyOffset", numberAttribute], thyAutocompleteWidth: ["thyAutocompleteWidth", "thyAutocompleteWidth", numberAttribute], thyPlacement: "thyPlacement", thyIsFocusOpen: ["thyIsFocusOpen", "thyIsFocusOpen", coerceBooleanProperty] }, host: { listeners: { "input": "handleInput($event)", "focusin": "onFocus()", "keydown": "onKeydown($event)" }, properties: { "class.thy-autocomplete-opened": "this.panelOpened" } }, exportAs: ["thyAutocompleteTrigger", "thyAutocomplete"], ngImport: i0 }); }
636
636
  }
637
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyAutocompleteTriggerDirective, decorators: [{
637
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyAutocompleteTriggerDirective, decorators: [{
638
638
  type: Directive,
639
639
  args: [{
640
640
  selector: 'input[thyAutocompleteTrigger], textarea[thyAutocompleteTrigger], thy-input[thyAutocompleteTrigger], thy-input-search[thyAutocompleteTrigger], input[thyAutocomplete], textarea[thyAutocomplete], thy-input[thyAutocomplete], thy-input-search[thyAutocomplete]',
@@ -643,8 +643,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
643
643
  '(input)': 'handleInput($event)',
644
644
  '(focusin)': 'onFocus()',
645
645
  '(keydown)': 'onKeydown($event)'
646
- },
647
- standalone: true
646
+ }
648
647
  }]
649
648
  }], propDecorators: { panelOpened: [{
650
649
  type: HostBinding,
@@ -669,8 +668,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
669
668
  }] } });
670
669
 
671
670
  class ThyAutocompleteModule {
672
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
673
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: ThyAutocompleteModule, imports: [CommonModule,
671
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
672
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: ThyAutocompleteModule, imports: [CommonModule,
674
673
  FormsModule,
675
674
  ThyInputModule,
676
675
  OverlayModule,
@@ -683,7 +682,7 @@ class ThyAutocompleteModule {
683
682
  ThyAutocompleteTriggerDirective,
684
683
  ThyAutocomplete,
685
684
  ThyAutocompleteContainer], exports: [ThyAutocompleteTriggerDirective, ThyAutocomplete, ThyAutocompleteContainer, ThyOptionModule] }); }
686
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyAutocompleteModule, providers: [THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER, ThyAutocompleteService], imports: [CommonModule,
685
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyAutocompleteModule, providers: [THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER, ThyAutocompleteService], imports: [CommonModule,
687
686
  FormsModule,
688
687
  ThyInputModule,
689
688
  OverlayModule,
@@ -696,7 +695,7 @@ class ThyAutocompleteModule {
696
695
  ThyAutocomplete,
697
696
  ThyAutocompleteContainer, ThyOptionModule] }); }
698
697
  }
699
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyAutocompleteModule, decorators: [{
698
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyAutocompleteModule, decorators: [{
700
699
  type: NgModule,
701
700
  args: [{
702
701
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-autocomplete.mjs","sources":["../../../src/autocomplete/autocomplete.component.ts","../../../src/autocomplete/autocomplete.component.html","../../../src/autocomplete/overlay/autocomplete-animations.ts","../../../src/autocomplete/overlay/autocomplete.config.ts","../../../src/autocomplete/overlay/autocomplete.options.ts","../../../src/autocomplete/overlay/autocomplete-container.component.ts","../../../src/autocomplete/overlay/autocomplete-container.component.html","../../../src/autocomplete/overlay/autocomplete-ref.ts","../../../src/autocomplete/overlay/autocomplete.service.ts","../../../src/autocomplete/autocomplete.trigger.directive.ts","../../../src/autocomplete/module.ts","../../../src/autocomplete/ngx-tethys-autocomplete.ts"],"sourcesContent":["import {\n Component,\n TemplateRef,\n ViewChild,\n ChangeDetectionStrategy,\n ContentChildren,\n QueryList,\n OnInit,\n Output,\n EventEmitter,\n NgZone,\n OnDestroy,\n AfterContentInit,\n ChangeDetectorRef,\n Input,\n ElementRef,\n inject,\n Signal\n} from '@angular/core';\nimport { defer, merge, Observable, Subject, timer } from 'rxjs';\nimport { take, switchMap, takeUntil, startWith } from 'rxjs/operators';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n THY_OPTION_PARENT_COMPONENT,\n IThyOptionParentComponent,\n ThyOption,\n ThyOptionSelectionChangeEvent,\n ThyStopPropagationDirective\n} from 'ngx-tethys/shared';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { NgClass } from '@angular/common';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { injectLocale, ThyAutoCompleteLocale } from 'ngx-tethys/i18n';\nimport { injectPanelEmptyIcon } from 'ngx-tethys/core';\n\n/** Event object that is emitted when an autocomplete option is activated. */\nexport interface ThyAutocompleteActivatedEvent {\n /** Reference to the autocomplete panel that emitted the event. */\n source: ThyAutocomplete;\n\n /** Option that was selected. */\n option: ThyOption | null;\n}\n\n/**\n * 自动完成组件\n * @name thy-autocomplete\n */\n@Component({\n selector: 'thy-autocomplete',\n templateUrl: 'autocomplete.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: THY_OPTION_PARENT_COMPONENT,\n useExisting: ThyAutocomplete\n }\n ],\n imports: [ThyStopPropagationDirective, NgClass, ThyEmpty]\n})\nexport class ThyAutocomplete implements IThyOptionParentComponent, OnInit, AfterContentInit, OnDestroy {\n private ngZone = inject(NgZone);\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n private ngUnsubscribe$ = new Subject<void>();\n\n private locale: Signal<ThyAutoCompleteLocale> = injectLocale('autocomplete');\n\n emptyIcon: Signal<string> = injectPanelEmptyIcon();\n\n dropDownClass: { [key: string]: boolean };\n\n isMultiple = false;\n\n mode = '';\n\n isEmptyOptions = false;\n\n selectionModel: SelectionModel<ThyOption>;\n\n isOpened = false;\n\n /** Manages active item in option list based on key events. */\n keyManager: ActiveDescendantKeyManager<ThyOption>;\n\n @ViewChild('contentTemplate', { static: true })\n contentTemplateRef: TemplateRef<any>;\n\n // scroll element container\n @ViewChild('panel')\n optionsContainer: ElementRef<any>;\n\n /**\n * @private\n */\n @ContentChildren(ThyOption, { descendants: true }) options: QueryList<ThyOption>;\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 /**\n * 空选项时的文本\n * @default 没有任何数据\n */\n @Input() thyEmptyText = this.locale().empty;\n\n /**\n * 是否默认高亮第一个选项\n * @type boolean\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyAutoActiveFirstOption: boolean;\n\n /**\n * 被选中时调用,参数包含选中项的 value 值\n * @type EventEmitter<ThyOptionSelectionChangeEvent>\n */\n @Output() thyOptionSelected: EventEmitter<ThyOptionSelectionChangeEvent> = new EventEmitter<ThyOptionSelectionChangeEvent>();\n\n /**\n * 只读,展开下拉菜单的回调\n * @type EventEmitter<void>\n */\n @Output() readonly thyOpened: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * 只读,关闭下拉菜单的回调\n * @type EventEmitter<void>\n */\n @Output() readonly thyClosed: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits whenever an option is activated using the keyboard. */\n /**\n * 只读,option 激活状态变化时,调用此函数\n * @type EventEmitter<ThyAutocompleteActivatedEvent>\n */\n @Output() readonly thyOptionActivated: EventEmitter<ThyAutocompleteActivatedEvent> = new EventEmitter<ThyAutocompleteActivatedEvent>();\n\n ngOnInit() {\n this.setDropDownClass();\n this.instanceSelectionModel();\n }\n\n ngAfterContentInit() {\n this.options.changes.pipe(startWith(null), takeUntil(this.ngUnsubscribe$)).subscribe(() => {\n this.resetOptions();\n timer(0).subscribe(() => {\n this.isEmptyOptions = this.options.length <= 0;\n this.changeDetectorRef.detectChanges();\n });\n this.initKeyManager();\n });\n }\n\n initKeyManager() {\n const changedOrDestroyed$ = merge(this.options.changes, this.ngUnsubscribe$);\n this.keyManager = new ActiveDescendantKeyManager<ThyOption>(this.options).withWrap();\n this.keyManager.change.pipe(takeUntil(changedOrDestroyed$)).subscribe(index => {\n this.thyOptionActivated.emit({ source: this, option: this.options.toArray()[index] || null });\n });\n }\n\n open() {\n this.isOpened = true;\n this.changeDetectorRef.markForCheck();\n this.thyOpened.emit();\n }\n\n close() {\n this.isOpened = false;\n this.thyClosed.emit();\n }\n\n private resetOptions() {\n const changedOrDestroyed$ = merge(this.options.changes, this.ngUnsubscribe$);\n\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed$)).subscribe((event: ThyOptionSelectionChangeEvent) => {\n this.onSelect(event.option, event.isUserInput);\n });\n }\n\n private instanceSelectionModel() {\n if (this.selectionModel) {\n this.selectionModel.clear();\n }\n this.selectionModel = new SelectionModel<ThyOption>(this.isMultiple);\n this.selectionModel.changed.pipe(takeUntil(this.ngUnsubscribe$)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\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\n if (wasSelected !== this.selectionModel.isSelected(option)) {\n this.thyOptionSelected.emit(new ThyOptionSelectionChangeEvent(option, false));\n }\n this.changeDetectorRef.markForCheck();\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 ngOnDestroy() {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n}\n","<ng-template #contentTemplate>\n <div thyStopPropagation [ngClass]=\"dropDownClass\">\n <div #panel class=\"thy-select-dropdown-options\">\n <ng-content></ng-content>\n @if (isEmptyOptions) {\n <thy-empty [thyMessage]=\"thyEmptyText\" [thyIconName]=\"emptyIcon()\"></thy-empty>\n }\n </div>\n </div>\n</ng-template>\n","import { animate, state, style, transition, trigger, AnimationTriggerMetadata } from '@angular/animations';\n\nconst animationBody = [state('void, exit', style({ opacity: 0, transform: 'scale(0.1)' })), state('enter', style({ transform: 'none' }))];\n\n/**\n * Animations used by ThyAutocomplete.\n * @docs-private\n */\nexport const thyAutocompleteAnimations: {\n readonly autocompleteContainer: AnimationTriggerMetadata;\n} = {\n autocompleteContainer: trigger('autocompleteContainer', animationBody)\n};\n","import { ElementRef, ViewContainerRef, InjectionToken } from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ThyPlacement, ThyAbstractOverlayConfig } from 'ngx-tethys/core';\nimport { ScrollStrategy, PositionStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\n\nexport class ThyAutocompleteConfig<TData = any> extends ThyAbstractOverlayConfig<TData> {\n /** Origin Element, for overlay flexible connected to */\n origin: ElementRef<any> | HTMLElement;\n\n /** Placement be relative to origin, topCenter, topLeft, topRight, bottomCenter, bottomLeft, bottomRight ...*/\n placement?: ThyPlacement;\n\n /** Click inside can been close */\n insideClosable?: boolean;\n\n /** Offset be relative to origin, default is 4*/\n offset?: number;\n\n /** Manually close it, default rules is which auto close last autocomplete when open a new unless set manualClosure as true */\n manualClosure?: boolean;\n\n /** Origin active class when autocomplete is opened */\n originActiveClass?: string | string[];\n\n /**\n * 滚动策略\n */\n scrollStrategy?: ScrollStrategy;\n\n /** Click outside can been close */\n outsideClosable?: boolean;\n}\n\nexport const THY_AUTOCOMPLETE_DEFAULT_CONFIG = new InjectionToken<ThyAutocompleteConfig>('thy-autocomplete-default-config');\n\nexport const THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER = {\n provide: THY_AUTOCOMPLETE_DEFAULT_CONFIG,\n useValue: {\n hasBackdrop: false,\n panelClass: '',\n closeOnNavigation: true,\n insideClosable: true,\n manualClosure: false,\n outsideClosable: true,\n originActiveClass: 'thy-autocomplete-origin-active'\n }\n};\n","import { ThyAbstractOverlayOptions } from 'ngx-tethys/core';\n\nexport const autocompleteAbstractOverlayOptions: ThyAbstractOverlayOptions = {\n name: 'autocomplete',\n animationEnabled: true,\n disposeWhenClose: true\n};\n","import { ThyAbstractOverlayContainer, ThyClickDispatcher, ThyPortalOutlet } from 'ngx-tethys/core';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { AnimationEvent } from '@angular/animations';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, NgZone, ViewChild, inject } from '@angular/core';\n\nimport { thyAutocompleteAnimations } from './autocomplete-animations';\nimport { ThyAutocompleteConfig } from './autocomplete.config';\nimport { autocompleteAbstractOverlayOptions } from './autocomplete.options';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-autocomplete-container',\n templateUrl: './autocomplete-container.component.html',\n animations: [thyAutocompleteAnimations.autocompleteContainer],\n host: {\n class: 'thy-autocomplete-container',\n tabindex: '-1',\n '[attr.role]': `'autocomplete'`,\n '[@autocompleteContainer]': 'animationState',\n '(@autocompleteContainer.start)': 'onAnimationStart($event)',\n '(@autocompleteContainer.done)': 'onAnimationDone($event)'\n },\n imports: [PortalModule, ThyPortalOutlet]\n})\nexport class ThyAutocompleteContainer extends ThyAbstractOverlayContainer implements AfterViewInit {\n private elementRef = inject(ElementRef);\n private document = inject(DOCUMENT);\n config = inject(ThyAutocompleteConfig);\n private thyClickDispatcher = inject(ThyClickDispatcher);\n private ngZone = inject(NgZone);\n\n @ViewChild(ThyPortalOutlet, { static: true })\n portalOutlet: ThyPortalOutlet;\n\n /** State of the autocomplete animation. */\n animationState: 'void' | 'enter' | 'exit' = 'enter';\n\n /** Emits when an animation state changes. */\n animationStateChanged = new EventEmitter<AnimationEvent>();\n\n animationOpeningDone: Observable<AnimationEvent>;\n animationClosingDone: Observable<AnimationEvent>;\n\n beforeAttachPortal(): void {}\n\n constructor() {\n const changeDetectorRef = inject(ChangeDetectorRef);\n\n super(autocompleteAbstractOverlayOptions, changeDetectorRef);\n\n this.animationOpeningDone = this.animationStateChanged.pipe(\n filter((event: AnimationEvent) => {\n return event.phaseName === 'done' && event.toState === 'enter';\n })\n );\n this.animationClosingDone = this.animationStateChanged.pipe(\n filter((event: AnimationEvent) => {\n return event.phaseName === 'done' && event.toState === 'exit';\n })\n );\n }\n\n ngAfterViewInit() {}\n\n /** Callback, invoked whenever an animation on the host completes. */\n onAnimationDone(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n /** Callback, invoked when an animation on the host starts. */\n onAnimationStart(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n startExitAnimation(): void {\n this.animationState = 'exit';\n this.changeDetectorRef.markForCheck();\n }\n}\n","<ng-template thyPortalOutlet></ng-template>\n","import { ThyAbstractInternalOverlayRef, ThyAbstractOverlayRef } from 'ngx-tethys/core';\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { ThyAutocompleteContainer } from './autocomplete-container.component';\nimport { ThyAutocompleteConfig } from './autocomplete.config';\nimport { autocompleteAbstractOverlayOptions } from './autocomplete.options';\n\nexport abstract class ThyAutocompleteRef<T, TResult = any> extends ThyAbstractOverlayRef<T, ThyAutocompleteContainer, TResult> {}\n\nexport class ThyInternalAutocompleteRef<T, TResult = any>\n extends ThyAbstractInternalOverlayRef<T, ThyAutocompleteContainer, TResult>\n implements ThyAutocompleteRef<T, TResult>\n{\n constructor(overlayRef: OverlayRef, containerInstance: ThyAutocompleteContainer, config: ThyAutocompleteConfig) {\n super(autocompleteAbstractOverlayOptions, overlayRef, containerInstance, config);\n }\n\n /**\n * Updates the autocomplete's position.\n * @param position New autocomplete position.\n */\n updatePosition(): this {\n this.overlayRef.updatePosition();\n return this;\n }\n}\n","import { getFlexiblePositions, ThyAbstractOverlayService } from 'ngx-tethys/core';\nimport { of, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceArray, coerceElement } from '@angular/cdk/coercion';\nimport {\n ComponentType,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n PositionStrategy,\n ScrollDispatcher\n} from '@angular/cdk/overlay';\nimport { Platform } from '@angular/cdk/platform';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport { ElementRef, Injectable, Injector, NgZone, OnDestroy, StaticProvider, TemplateRef, inject } from '@angular/core';\n\nimport { ThyAutocompleteContainer } from './autocomplete-container.component';\nimport { ThyAutocompleteRef, ThyInternalAutocompleteRef } from './autocomplete-ref';\nimport { THY_AUTOCOMPLETE_DEFAULT_CONFIG, ThyAutocompleteConfig } from './autocomplete.config';\nimport { autocompleteAbstractOverlayOptions } from './autocomplete.options';\n\n/**\n * @private\n */\n@Injectable()\nexport class ThyAutocompleteService\n extends ThyAbstractOverlayService<ThyAutocompleteConfig, ThyAutocompleteContainer>\n implements OnDestroy\n{\n private scrollDispatcher = inject(ScrollDispatcher);\n private ngZone = inject(NgZone);\n private _viewportRuler = inject(ViewportRuler);\n private _document = inject(DOCUMENT);\n private _platform = inject(Platform);\n private _overlayContainer = inject(OverlayContainer);\n\n private readonly ngUnsubscribe$ = new Subject();\n\n private originInstancesMap = new Map<\n ElementRef | HTMLElement,\n {\n config: ThyAutocompleteConfig;\n autocompleteRef: ThyAutocompleteRef<any, any>;\n }\n >();\n\n private buildPositionStrategy<TData>(config: ThyAutocompleteConfig<TData>): PositionStrategy {\n const positionStrategy = new FlexibleConnectedPositionStrategy(\n config.origin,\n this._viewportRuler,\n this._document,\n this._platform,\n this._overlayContainer\n );\n const positions = getFlexiblePositions(config.placement, config.offset, 'thy-autocomplete');\n positionStrategy.withPositions(positions);\n positionStrategy.withGrowAfterOpen(true);\n positionStrategy.positionChanges.pipe(takeUntil(this.ngUnsubscribe$)).subscribe(change => {\n if (change.scrollableViewProperties.isOverlayClipped) {\n // After position changes occur and the overlay is clipped by\n // a parent scrollable then close the tooltip.\n this.ngZone.run(() => this.close());\n }\n });\n return positionStrategy;\n }\n\n protected buildOverlayConfig<TData>(config: ThyAutocompleteConfig<TData>): OverlayConfig {\n const strategy = this.buildPositionStrategy(config);\n const overlayConfig = this.buildBaseOverlayConfig(config);\n overlayConfig.positionStrategy = strategy;\n overlayConfig.scrollStrategy = config.scrollStrategy || this.overlay.scrollStrategies.block();\n overlayConfig.width = config.width;\n return overlayConfig;\n }\n\n protected attachOverlayContainer(overlay: OverlayRef, config: ThyAutocompleteConfig<any>): ThyAutocompleteContainer {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this.injector,\n providers: [{ provide: ThyAutocompleteConfig, useValue: config }]\n });\n const containerPortal = new ComponentPortal(ThyAutocompleteContainer, config.viewContainerRef, injector);\n const containerRef = overlay.attach<ThyAutocompleteContainer>(containerPortal);\n return containerRef.instance;\n }\n\n protected createAbstractOverlayRef<T>(\n overlayRef: OverlayRef,\n containerInstance: ThyAutocompleteContainer,\n config: ThyAutocompleteConfig<any>\n ): ThyInternalAutocompleteRef<T> {\n return new ThyInternalAutocompleteRef<T>(overlayRef, containerInstance, config);\n }\n\n protected createInjector<T>(\n config: ThyAutocompleteConfig,\n autocompleteRef: ThyAutocompleteRef<T>,\n autocompleteContainer: ThyAutocompleteContainer\n ): Injector {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injectionTokens: StaticProvider[] = [\n {\n provide: ThyAutocompleteContainer,\n useValue: autocompleteContainer\n },\n {\n provide: ThyAutocompleteRef,\n useValue: autocompleteRef\n }\n ];\n\n if (config.direction && (!userInjector || !userInjector.get<Directionality | null>(Directionality, null))) {\n injectionTokens.push({\n provide: Directionality,\n useValue: {\n value: config.direction,\n change: of()\n }\n });\n }\n\n return Injector.create({ parent: userInjector || this.injector, providers: injectionTokens });\n }\n\n private originElementAddActiveClass(config: ThyAutocompleteConfig) {\n if (config.originActiveClass) {\n coerceElement<HTMLElement>(config.origin).classList.add(...coerceArray(config.originActiveClass));\n }\n }\n\n private originElementRemoveActiveClass(config: ThyAutocompleteConfig) {\n if (config.originActiveClass) {\n coerceElement<HTMLElement>(config.origin).classList.remove(...coerceArray(config.originActiveClass));\n }\n }\n\n constructor() {\n const overlay = inject(Overlay);\n const injector = inject(Injector);\n const defaultConfig = inject(THY_AUTOCOMPLETE_DEFAULT_CONFIG);\n\n super(autocompleteAbstractOverlayOptions, overlay, injector, defaultConfig);\n }\n\n open<T, TData = any, TResult = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: ThyAutocompleteConfig<TData>\n ): ThyAutocompleteRef<T, TResult> {\n const originElement = coerceElement(config.origin);\n const autocompleteRef = this.openOverlay(componentOrTemplateRef, config) as ThyAutocompleteRef<T>;\n config = autocompleteRef.containerInstance.config;\n autocompleteRef.afterClosed().subscribe(() => {\n this.originElementRemoveActiveClass(config);\n this.originInstancesMap.delete(originElement);\n });\n\n this.originElementAddActiveClass(config);\n this.originInstancesMap.set(originElement, {\n config,\n autocompleteRef\n });\n\n return autocompleteRef;\n }\n\n ngOnDestroy() {\n this.dispose();\n }\n}\n","import {\n Directive,\n ElementRef,\n NgZone,\n OnDestroy,\n Input,\n OnInit,\n ViewContainerRef,\n HostBinding,\n ChangeDetectorRef,\n numberAttribute,\n inject\n} from '@angular/core';\nimport { OverlayRef, Overlay } from '@angular/cdk/overlay';\nimport { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyAutocompleteService } from './overlay/autocomplete.service';\nimport { ThyAutocompleteRef } from './overlay/autocomplete-ref';\nimport { ThyAutocomplete } from './autocomplete.component';\nimport { ThyOption, ThyOptionSelectionChangeEvent } from 'ngx-tethys/shared';\nimport { DOCUMENT } from '@angular/common';\nimport { Subject, Observable, merge, fromEvent, of, Subscription } from 'rxjs';\nimport { ESCAPE, UP_ARROW, ENTER, DOWN_ARROW, TAB, coerceBooleanProperty } from 'ngx-tethys/util';\nimport { filter, map, take, delay, switchMap } from 'rxjs/operators';\nimport { ScrollToService } from 'ngx-tethys/core';\nimport { warnDeprecation } from 'ngx-tethys/util';\n\n/**\n * 自动完成触发指令\n * @name thyAutocomplete\n */\n@Directive({\n selector:\n 'input[thyAutocompleteTrigger], textarea[thyAutocompleteTrigger], thy-input[thyAutocompleteTrigger], thy-input-search[thyAutocompleteTrigger], input[thyAutocomplete], textarea[thyAutocomplete], thy-input[thyAutocomplete], thy-input-search[thyAutocomplete]',\n exportAs: 'thyAutocompleteTrigger, thyAutocomplete',\n host: {\n '(input)': 'handleInput($event)',\n '(focusin)': 'onFocus()',\n '(keydown)': 'onKeydown($event)'\n },\n standalone: true\n})\nexport class ThyAutocompleteTriggerDirective implements OnInit, OnDestroy {\n private elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n private overlay = inject(Overlay);\n private autocompleteService = inject(ThyAutocompleteService);\n private viewContainerRef = inject(ViewContainerRef);\n private document = inject(DOCUMENT, { optional: true })!;\n private cdr = inject(ChangeDetectorRef);\n\n protected overlayRef: OverlayRef;\n\n private autocompleteRef: ThyAutocompleteRef<ThyAutocomplete>;\n\n private readonly closeKeyEventStream = new Subject<void>();\n\n private closingActionsSubscription: Subscription;\n\n private _autocompleteComponent: ThyAutocomplete;\n\n @HostBinding(`class.thy-autocomplete-opened`) panelOpened = false;\n\n /**\n * 下拉菜单组件实例。已废弃,请使用 thyAutocomplete\n * @type thyAutocompleteComponent\n * @deprecated\n */\n @Input('thyAutocompleteComponent')\n set autocompleteComponent(data: ThyAutocomplete) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warnDeprecation(`The property thyAutocompleteComponent will be deprecated, please use thyAutocomplete instead.`);\n }\n this._autocompleteComponent = data;\n }\n\n /**\n * 下拉菜单组件实例\n * @type thyAutocompleteComponent\n */\n @Input('thyAutocomplete')\n set autocomplete(data: ThyAutocomplete) {\n this._autocompleteComponent = data;\n }\n\n get autocompleteComponent() {\n return this._autocompleteComponent;\n }\n\n /**\n * 弹出框默认 offset\n * @type number\n */\n @Input({ transform: numberAttribute }) thyOffset = 4;\n\n /**\n * 下拉菜单的宽度,不设置默认与输入框同宽\n * @type number\n */\n @Input({ transform: numberAttribute }) thyAutocompleteWidth: number;\n\n /**\n * 下拉菜单的显示位置,'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight' | 'left' | 'leftTop' | 'leftBottom' | 'right' | 'rightTop' | 'rightBottom'\n * @type string\n */\n @Input() thyPlacement: ThyPlacement = 'bottomLeft';\n\n /**\n * 是否允许聚焦时打开下拉菜单\n * @type boolean\n */\n @Input({ transform: coerceBooleanProperty }) thyIsFocusOpen = true;\n\n get activeOption(): ThyOption | null {\n if (this.autocompleteComponent && this.autocompleteComponent.keyManager) {\n return this.autocompleteComponent.keyManager.activeItem;\n }\n\n return null;\n }\n\n get panelClosingActions(): Observable<ThyOptionSelectionChangeEvent | null> {\n return merge(\n this.autocompleteComponent.thyOptionSelected,\n this.autocompleteComponent.keyManager.tabOut.pipe(filter(() => this.panelOpened)),\n this.closeKeyEventStream,\n this.getOutsideClickStream(),\n this.overlayRef ? this.overlayRef.detachments().pipe(filter(() => this.panelOpened)) : of()\n ).pipe(\n // Normalize the output so we return a consistent type.\n map(event => (event instanceof ThyOptionSelectionChangeEvent ? event : null))\n );\n }\n\n ngOnInit(): void {}\n\n onFocus() {\n if (this.canOpen() && this.thyIsFocusOpen) {\n this.openPanel();\n }\n }\n\n onKeydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE) {\n event.preventDefault();\n }\n if (this.activeOption && keyCode === ENTER && this.panelOpened) {\n this.activeOption.selectViaInteraction();\n this.resetActiveItem();\n event.preventDefault();\n } else if (this.autocompleteComponent) {\n const prevActiveItem = this.autocompleteComponent.keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (this.panelOpened || keyCode === TAB) {\n this.autocompleteComponent.keyManager.onKeydown(event);\n } else if (isArrowKey && this.canOpen()) {\n this.openPanel();\n }\n if (\n (isArrowKey || this.autocompleteComponent.keyManager.activeItem !== prevActiveItem) &&\n this.autocompleteComponent.keyManager.activeItem\n ) {\n ScrollToService.scrollToElement(\n this.autocompleteComponent.keyManager.activeItem.element.nativeElement,\n this.autocompleteComponent.optionsContainer.nativeElement\n );\n }\n }\n }\n\n handleInput(event: KeyboardEvent) {\n if (this.canOpen() && document.activeElement === event.target) {\n this.openPanel();\n }\n }\n\n openPanel() {\n if (this.overlayRef && this.overlayRef.hasAttached()) {\n return;\n }\n const overlayRef = this.createOverlay();\n this.overlayRef = overlayRef;\n overlayRef.keydownEvents().subscribe(event => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if (event.keyCode === ESCAPE || (event.keyCode === UP_ARROW && event.altKey)) {\n this.resetActiveItem();\n this.closeKeyEventStream.next();\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n });\n this.panelOpened = true;\n this.autocompleteComponent.open();\n }\n\n closePanel() {\n if (this.autocompleteRef) {\n this.autocompleteRef.close();\n this.cdr.detectChanges();\n this.closingActionsSubscription.unsubscribe();\n }\n }\n\n createOverlay(): OverlayRef {\n const config = Object.assign({\n origin: this.elementRef.nativeElement,\n viewContainerRef: this.viewContainerRef,\n placement: this.thyPlacement,\n offset: this.thyOffset,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: this.thyAutocompleteWidth || this.elementRef.nativeElement.clientWidth\n });\n this.autocompleteRef = this.autocompleteService.open(this.autocompleteComponent.contentTemplateRef, config);\n this.autocompleteRef.afterClosed().subscribe(() => {\n this.panelOpened = false;\n this.autocompleteComponent.close();\n });\n // delay 200ms to prevent emit document click rightnow\n this.autocompleteRef\n .afterOpened()\n .pipe(delay(200))\n .subscribe(() => {\n this.closingActionsSubscription = this.subscribeToClosingActions();\n });\n return this.autocompleteRef.getOverlayRef();\n }\n\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n private subscribeToClosingActions(): Subscription {\n const firstStable = this.ngZone.onStable.asObservable().pipe(take(1));\n const optionChanges = this.autocompleteComponent.options.changes.pipe(\n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0)\n );\n // When the zone is stable initially, and when the option list changes...\n return (\n merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n this.resetActiveItem();\n\n if (this.panelOpened) {\n this.overlayRef.updatePosition();\n }\n return this.panelClosingActions;\n }),\n // when the first closing event occurs...\n take(1)\n )\n // set the value, close the panel, and complete.\n .subscribe(event => this.setValueAndClose(event))\n );\n }\n\n private setValueAndClose(event: ThyOptionSelectionChangeEvent | null): void {\n if (event && event.option) {\n this.setValue(event.option.thyLabelText);\n }\n this.closePanel();\n }\n\n /** Stream of clicks outside of the autocomplete panel. */\n private getOutsideClickStream(): Observable<any> {\n return merge(\n fromEvent(this.document, 'click') as Observable<MouseEvent>,\n fromEvent(this.document, 'touchend') as Observable<TouchEvent>\n ).pipe(\n filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = event.target as HTMLElement;\n const formField: any = null;\n\n return (\n this.panelOpened &&\n clickTarget !== this.elementRef.nativeElement &&\n !this.elementRef.nativeElement.contains(clickTarget) &&\n (!formField || !formField.contains(clickTarget)) &&\n !!this.overlayRef &&\n !this.overlayRef.overlayElement.contains(clickTarget)\n );\n })\n );\n }\n\n private setValue(value: string) {\n const input = this.elementRef.nativeElement.querySelector('input');\n const element = input ? input : this.elementRef.nativeElement;\n element.value = value;\n element.focus();\n }\n\n private canOpen(): boolean {\n const element: HTMLInputElement = this.elementRef.nativeElement;\n return !element.readOnly && !element.disabled;\n }\n\n private resetActiveItem(): void {\n this.autocompleteComponent.keyManager.setActiveItem(this.autocompleteComponent.thyAutoActiveFirstOption ? 0 : -1);\n }\n\n private destroyPanel(): void {\n if (this.overlayRef) {\n this.closePanel();\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n\n ngOnDestroy() {\n this.closeKeyEventStream.complete();\n this.destroyPanel();\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\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, ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyAutocomplete } from './autocomplete.component';\nimport { ThyAutocompleteTriggerDirective } from './autocomplete.trigger.directive';\nimport { ThyAutocompleteContainer } from './overlay/autocomplete-container.component';\nimport { THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER } from './overlay/autocomplete.config';\nimport { ThyAutocompleteService } from './overlay/autocomplete.service';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyInputModule,\n OverlayModule,\n PortalModule,\n ThyLoadingModule,\n ThySharedModule,\n ThyIconModule,\n ThyEmptyModule,\n ThyOptionModule,\n ThyAutocompleteTriggerDirective,\n ThyAutocomplete,\n ThyAutocompleteContainer\n ],\n exports: [ThyAutocompleteTriggerDirective, ThyAutocomplete, ThyAutocompleteContainer, ThyOptionModule],\n providers: [THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER, ThyAutocompleteService]\n})\nexport class ThyAutocompleteModule {}\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-autocomplete.mjs","sources":["../../../src/autocomplete/autocomplete.component.ts","../../../src/autocomplete/autocomplete.component.html","../../../src/autocomplete/overlay/autocomplete-animations.ts","../../../src/autocomplete/overlay/autocomplete.config.ts","../../../src/autocomplete/overlay/autocomplete.options.ts","../../../src/autocomplete/overlay/autocomplete-container.component.ts","../../../src/autocomplete/overlay/autocomplete-container.component.html","../../../src/autocomplete/overlay/autocomplete-ref.ts","../../../src/autocomplete/overlay/autocomplete.service.ts","../../../src/autocomplete/autocomplete.trigger.directive.ts","../../../src/autocomplete/module.ts","../../../src/autocomplete/ngx-tethys-autocomplete.ts"],"sourcesContent":["import {\n Component,\n TemplateRef,\n ViewChild,\n ChangeDetectionStrategy,\n ContentChildren,\n QueryList,\n OnInit,\n Output,\n EventEmitter,\n NgZone,\n OnDestroy,\n AfterContentInit,\n ChangeDetectorRef,\n Input,\n ElementRef,\n inject,\n Signal\n} from '@angular/core';\nimport { defer, merge, Observable, Subject, timer } from 'rxjs';\nimport { take, switchMap, takeUntil, startWith } from 'rxjs/operators';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n THY_OPTION_PARENT_COMPONENT,\n IThyOptionParentComponent,\n ThyOption,\n ThyOptionSelectionChangeEvent,\n ThyStopPropagationDirective\n} from 'ngx-tethys/shared';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { NgClass } from '@angular/common';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { injectLocale, ThyAutoCompleteLocale } from 'ngx-tethys/i18n';\nimport { injectPanelEmptyIcon } from 'ngx-tethys/core';\n\n/** Event object that is emitted when an autocomplete option is activated. */\nexport interface ThyAutocompleteActivatedEvent {\n /** Reference to the autocomplete panel that emitted the event. */\n source: ThyAutocomplete;\n\n /** Option that was selected. */\n option: ThyOption | null;\n}\n\n/**\n * 自动完成组件\n * @name thy-autocomplete\n */\n@Component({\n selector: 'thy-autocomplete',\n templateUrl: 'autocomplete.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: THY_OPTION_PARENT_COMPONENT,\n useExisting: ThyAutocomplete\n }\n ],\n imports: [ThyStopPropagationDirective, NgClass, ThyEmpty]\n})\nexport class ThyAutocomplete implements IThyOptionParentComponent, OnInit, AfterContentInit, OnDestroy {\n private ngZone = inject(NgZone);\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n private ngUnsubscribe$ = new Subject<void>();\n\n private locale: Signal<ThyAutoCompleteLocale> = injectLocale('autocomplete');\n\n emptyIcon: Signal<string> = injectPanelEmptyIcon();\n\n dropDownClass: { [key: string]: boolean };\n\n isMultiple = false;\n\n mode = '';\n\n isEmptyOptions = false;\n\n selectionModel: SelectionModel<ThyOption>;\n\n isOpened = false;\n\n /** Manages active item in option list based on key events. */\n keyManager: ActiveDescendantKeyManager<ThyOption>;\n\n @ViewChild('contentTemplate', { static: true })\n contentTemplateRef: TemplateRef<any>;\n\n // scroll element container\n @ViewChild('panel')\n optionsContainer: ElementRef<any>;\n\n /**\n * @private\n */\n @ContentChildren(ThyOption, { descendants: true }) options: QueryList<ThyOption>;\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 /**\n * 空选项时的文本\n * @default 没有任何数据\n */\n @Input() thyEmptyText = this.locale().empty;\n\n /**\n * 是否默认高亮第一个选项\n * @type boolean\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyAutoActiveFirstOption: boolean;\n\n /**\n * 被选中时调用,参数包含选中项的 value 值\n * @type EventEmitter<ThyOptionSelectionChangeEvent>\n */\n @Output() thyOptionSelected: EventEmitter<ThyOptionSelectionChangeEvent> = new EventEmitter<ThyOptionSelectionChangeEvent>();\n\n /**\n * 只读,展开下拉菜单的回调\n * @type EventEmitter<void>\n */\n @Output() readonly thyOpened: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * 只读,关闭下拉菜单的回调\n * @type EventEmitter<void>\n */\n @Output() readonly thyClosed: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits whenever an option is activated using the keyboard. */\n /**\n * 只读,option 激活状态变化时,调用此函数\n * @type EventEmitter<ThyAutocompleteActivatedEvent>\n */\n @Output() readonly thyOptionActivated: EventEmitter<ThyAutocompleteActivatedEvent> = new EventEmitter<ThyAutocompleteActivatedEvent>();\n\n ngOnInit() {\n this.setDropDownClass();\n this.instanceSelectionModel();\n }\n\n ngAfterContentInit() {\n this.options.changes.pipe(startWith(null), takeUntil(this.ngUnsubscribe$)).subscribe(() => {\n this.resetOptions();\n timer(0).subscribe(() => {\n this.isEmptyOptions = this.options.length <= 0;\n this.changeDetectorRef.detectChanges();\n });\n this.initKeyManager();\n });\n }\n\n initKeyManager() {\n const changedOrDestroyed$ = merge(this.options.changes, this.ngUnsubscribe$);\n this.keyManager = new ActiveDescendantKeyManager<ThyOption>(this.options).withWrap();\n this.keyManager.change.pipe(takeUntil(changedOrDestroyed$)).subscribe(index => {\n this.thyOptionActivated.emit({ source: this, option: this.options.toArray()[index] || null });\n });\n }\n\n open() {\n this.isOpened = true;\n this.changeDetectorRef.markForCheck();\n this.thyOpened.emit();\n }\n\n close() {\n this.isOpened = false;\n this.thyClosed.emit();\n }\n\n private resetOptions() {\n const changedOrDestroyed$ = merge(this.options.changes, this.ngUnsubscribe$);\n\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed$)).subscribe((event: ThyOptionSelectionChangeEvent) => {\n this.onSelect(event.option, event.isUserInput);\n });\n }\n\n private instanceSelectionModel() {\n if (this.selectionModel) {\n this.selectionModel.clear();\n }\n this.selectionModel = new SelectionModel<ThyOption>(this.isMultiple);\n this.selectionModel.changed.pipe(takeUntil(this.ngUnsubscribe$)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\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\n if (wasSelected !== this.selectionModel.isSelected(option)) {\n this.thyOptionSelected.emit(new ThyOptionSelectionChangeEvent(option, false));\n }\n this.changeDetectorRef.markForCheck();\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 ngOnDestroy() {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n}\n","<ng-template #contentTemplate>\n <div thyStopPropagation [ngClass]=\"dropDownClass\">\n <div #panel class=\"thy-select-dropdown-options\">\n <ng-content></ng-content>\n @if (isEmptyOptions) {\n <thy-empty [thyMessage]=\"thyEmptyText\" [thyIconName]=\"emptyIcon()\"></thy-empty>\n }\n </div>\n </div>\n</ng-template>\n","import { animate, state, style, transition, trigger, AnimationTriggerMetadata } from '@angular/animations';\n\nconst animationBody = [state('void, exit', style({ opacity: 0, transform: 'scale(0.1)' })), state('enter', style({ transform: 'none' }))];\n\n/**\n * Animations used by ThyAutocomplete.\n * @docs-private\n */\nexport const thyAutocompleteAnimations: {\n readonly autocompleteContainer: AnimationTriggerMetadata;\n} = {\n autocompleteContainer: trigger('autocompleteContainer', animationBody)\n};\n","import { ElementRef, ViewContainerRef, InjectionToken } from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ThyPlacement, ThyAbstractOverlayConfig } from 'ngx-tethys/core';\nimport { ScrollStrategy, PositionStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\n\nexport class ThyAutocompleteConfig<TData = any> extends ThyAbstractOverlayConfig<TData> {\n /** Origin Element, for overlay flexible connected to */\n origin: ElementRef<any> | HTMLElement;\n\n /** Placement be relative to origin, topCenter, topLeft, topRight, bottomCenter, bottomLeft, bottomRight ...*/\n placement?: ThyPlacement;\n\n /** Click inside can been close */\n insideClosable?: boolean;\n\n /** Offset be relative to origin, default is 4*/\n offset?: number;\n\n /** Manually close it, default rules is which auto close last autocomplete when open a new unless set manualClosure as true */\n manualClosure?: boolean;\n\n /** Origin active class when autocomplete is opened */\n originActiveClass?: string | string[];\n\n /**\n * 滚动策略\n */\n scrollStrategy?: ScrollStrategy;\n\n /** Click outside can been close */\n outsideClosable?: boolean;\n}\n\nexport const THY_AUTOCOMPLETE_DEFAULT_CONFIG = new InjectionToken<ThyAutocompleteConfig>('thy-autocomplete-default-config');\n\nexport const THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER = {\n provide: THY_AUTOCOMPLETE_DEFAULT_CONFIG,\n useValue: {\n hasBackdrop: false,\n panelClass: '',\n closeOnNavigation: true,\n insideClosable: true,\n manualClosure: false,\n outsideClosable: true,\n originActiveClass: 'thy-autocomplete-origin-active'\n }\n};\n","import { ThyAbstractOverlayOptions } from 'ngx-tethys/core';\n\nexport const autocompleteAbstractOverlayOptions: ThyAbstractOverlayOptions = {\n name: 'autocomplete',\n animationEnabled: true,\n disposeWhenClose: true\n};\n","import { ThyAbstractOverlayContainer, ThyClickDispatcher, ThyPortalOutlet } from 'ngx-tethys/core';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { AnimationEvent } from '@angular/animations';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, NgZone, ViewChild, inject } from '@angular/core';\n\nimport { thyAutocompleteAnimations } from './autocomplete-animations';\nimport { ThyAutocompleteConfig } from './autocomplete.config';\nimport { autocompleteAbstractOverlayOptions } from './autocomplete.options';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-autocomplete-container',\n templateUrl: './autocomplete-container.component.html',\n animations: [thyAutocompleteAnimations.autocompleteContainer],\n host: {\n class: 'thy-autocomplete-container',\n tabindex: '-1',\n '[attr.role]': `'autocomplete'`,\n '[@autocompleteContainer]': 'animationState',\n '(@autocompleteContainer.start)': 'onAnimationStart($event)',\n '(@autocompleteContainer.done)': 'onAnimationDone($event)'\n },\n imports: [PortalModule, ThyPortalOutlet]\n})\nexport class ThyAutocompleteContainer extends ThyAbstractOverlayContainer implements AfterViewInit {\n private elementRef = inject(ElementRef);\n private document = inject(DOCUMENT);\n config = inject(ThyAutocompleteConfig);\n private thyClickDispatcher = inject(ThyClickDispatcher);\n private ngZone = inject(NgZone);\n\n @ViewChild(ThyPortalOutlet, { static: true })\n portalOutlet: ThyPortalOutlet;\n\n /** State of the autocomplete animation. */\n animationState: 'void' | 'enter' | 'exit' = 'enter';\n\n /** Emits when an animation state changes. */\n animationStateChanged = new EventEmitter<AnimationEvent>();\n\n animationOpeningDone: Observable<AnimationEvent>;\n animationClosingDone: Observable<AnimationEvent>;\n\n beforeAttachPortal(): void {}\n\n constructor() {\n const changeDetectorRef = inject(ChangeDetectorRef);\n\n super(autocompleteAbstractOverlayOptions, changeDetectorRef);\n\n this.animationOpeningDone = this.animationStateChanged.pipe(\n filter((event: AnimationEvent) => {\n return event.phaseName === 'done' && event.toState === 'enter';\n })\n );\n this.animationClosingDone = this.animationStateChanged.pipe(\n filter((event: AnimationEvent) => {\n return event.phaseName === 'done' && event.toState === 'exit';\n })\n );\n }\n\n ngAfterViewInit() {}\n\n /** Callback, invoked whenever an animation on the host completes. */\n onAnimationDone(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n /** Callback, invoked when an animation on the host starts. */\n onAnimationStart(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n startExitAnimation(): void {\n this.animationState = 'exit';\n this.changeDetectorRef.markForCheck();\n }\n}\n","<ng-template thyPortalOutlet></ng-template>\n","import { ThyAbstractInternalOverlayRef, ThyAbstractOverlayRef } from 'ngx-tethys/core';\n\nimport { OverlayRef } from '@angular/cdk/overlay';\n\nimport { ThyAutocompleteContainer } from './autocomplete-container.component';\nimport { ThyAutocompleteConfig } from './autocomplete.config';\nimport { autocompleteAbstractOverlayOptions } from './autocomplete.options';\n\nexport abstract class ThyAutocompleteRef<T, TResult = any> extends ThyAbstractOverlayRef<T, ThyAutocompleteContainer, TResult> {}\n\nexport class ThyInternalAutocompleteRef<T, TResult = any>\n extends ThyAbstractInternalOverlayRef<T, ThyAutocompleteContainer, TResult>\n implements ThyAutocompleteRef<T, TResult>\n{\n constructor(overlayRef: OverlayRef, containerInstance: ThyAutocompleteContainer, config: ThyAutocompleteConfig) {\n super(autocompleteAbstractOverlayOptions, overlayRef, containerInstance, config);\n }\n\n /**\n * Updates the autocomplete's position.\n * @param position New autocomplete position.\n */\n updatePosition(): this {\n this.overlayRef.updatePosition();\n return this;\n }\n}\n","import { getFlexiblePositions, ThyAbstractOverlayService } from 'ngx-tethys/core';\nimport { of, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceArray, coerceElement } from '@angular/cdk/coercion';\nimport {\n ComponentType,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n PositionStrategy,\n ScrollDispatcher\n} from '@angular/cdk/overlay';\nimport { Platform } from '@angular/cdk/platform';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport { ElementRef, Injectable, Injector, NgZone, OnDestroy, StaticProvider, TemplateRef, inject } from '@angular/core';\n\nimport { ThyAutocompleteContainer } from './autocomplete-container.component';\nimport { ThyAutocompleteRef, ThyInternalAutocompleteRef } from './autocomplete-ref';\nimport { THY_AUTOCOMPLETE_DEFAULT_CONFIG, ThyAutocompleteConfig } from './autocomplete.config';\nimport { autocompleteAbstractOverlayOptions } from './autocomplete.options';\n\n/**\n * @private\n */\n@Injectable()\nexport class ThyAutocompleteService\n extends ThyAbstractOverlayService<ThyAutocompleteConfig, ThyAutocompleteContainer>\n implements OnDestroy\n{\n private scrollDispatcher = inject(ScrollDispatcher);\n private ngZone = inject(NgZone);\n private _viewportRuler = inject(ViewportRuler);\n private _document = inject(DOCUMENT);\n private _platform = inject(Platform);\n private _overlayContainer = inject(OverlayContainer);\n\n private readonly ngUnsubscribe$ = new Subject();\n\n private originInstancesMap = new Map<\n ElementRef | HTMLElement,\n {\n config: ThyAutocompleteConfig;\n autocompleteRef: ThyAutocompleteRef<any, any>;\n }\n >();\n\n private buildPositionStrategy<TData>(config: ThyAutocompleteConfig<TData>): PositionStrategy {\n const positionStrategy = new FlexibleConnectedPositionStrategy(\n config.origin,\n this._viewportRuler,\n this._document,\n this._platform,\n this._overlayContainer\n );\n const positions = getFlexiblePositions(config.placement, config.offset, 'thy-autocomplete');\n positionStrategy.withPositions(positions);\n positionStrategy.withGrowAfterOpen(true);\n positionStrategy.positionChanges.pipe(takeUntil(this.ngUnsubscribe$)).subscribe(change => {\n if (change.scrollableViewProperties.isOverlayClipped) {\n // After position changes occur and the overlay is clipped by\n // a parent scrollable then close the tooltip.\n this.ngZone.run(() => this.close());\n }\n });\n return positionStrategy;\n }\n\n protected buildOverlayConfig<TData>(config: ThyAutocompleteConfig<TData>): OverlayConfig {\n const strategy = this.buildPositionStrategy(config);\n const overlayConfig = this.buildBaseOverlayConfig(config);\n overlayConfig.positionStrategy = strategy;\n overlayConfig.scrollStrategy = config.scrollStrategy || this.overlay.scrollStrategies.block();\n overlayConfig.width = config.width;\n return overlayConfig;\n }\n\n protected attachOverlayContainer(overlay: OverlayRef, config: ThyAutocompleteConfig<any>): ThyAutocompleteContainer {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this.injector,\n providers: [{ provide: ThyAutocompleteConfig, useValue: config }]\n });\n const containerPortal = new ComponentPortal(ThyAutocompleteContainer, config.viewContainerRef, injector);\n const containerRef = overlay.attach<ThyAutocompleteContainer>(containerPortal);\n return containerRef.instance;\n }\n\n protected createAbstractOverlayRef<T>(\n overlayRef: OverlayRef,\n containerInstance: ThyAutocompleteContainer,\n config: ThyAutocompleteConfig<any>\n ): ThyInternalAutocompleteRef<T> {\n return new ThyInternalAutocompleteRef<T>(overlayRef, containerInstance, config);\n }\n\n protected createInjector<T>(\n config: ThyAutocompleteConfig,\n autocompleteRef: ThyAutocompleteRef<T>,\n autocompleteContainer: ThyAutocompleteContainer\n ): Injector {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injectionTokens: StaticProvider[] = [\n {\n provide: ThyAutocompleteContainer,\n useValue: autocompleteContainer\n },\n {\n provide: ThyAutocompleteRef,\n useValue: autocompleteRef\n }\n ];\n\n if (config.direction && (!userInjector || !userInjector.get<Directionality | null>(Directionality, null))) {\n injectionTokens.push({\n provide: Directionality,\n useValue: {\n value: config.direction,\n change: of()\n }\n });\n }\n\n return Injector.create({ parent: userInjector || this.injector, providers: injectionTokens });\n }\n\n private originElementAddActiveClass(config: ThyAutocompleteConfig) {\n if (config.originActiveClass) {\n coerceElement<HTMLElement>(config.origin).classList.add(...coerceArray(config.originActiveClass));\n }\n }\n\n private originElementRemoveActiveClass(config: ThyAutocompleteConfig) {\n if (config.originActiveClass) {\n coerceElement<HTMLElement>(config.origin).classList.remove(...coerceArray(config.originActiveClass));\n }\n }\n\n constructor() {\n const overlay = inject(Overlay);\n const injector = inject(Injector);\n const defaultConfig = inject(THY_AUTOCOMPLETE_DEFAULT_CONFIG);\n\n super(autocompleteAbstractOverlayOptions, overlay, injector, defaultConfig);\n }\n\n open<T, TData = any, TResult = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: ThyAutocompleteConfig<TData>\n ): ThyAutocompleteRef<T, TResult> {\n const originElement = coerceElement(config.origin);\n const autocompleteRef = this.openOverlay(componentOrTemplateRef, config) as ThyAutocompleteRef<T>;\n config = autocompleteRef.containerInstance.config;\n autocompleteRef.afterClosed().subscribe(() => {\n this.originElementRemoveActiveClass(config);\n this.originInstancesMap.delete(originElement);\n });\n\n this.originElementAddActiveClass(config);\n this.originInstancesMap.set(originElement, {\n config,\n autocompleteRef\n });\n\n return autocompleteRef;\n }\n\n ngOnDestroy() {\n this.dispose();\n }\n}\n","import {\n Directive,\n ElementRef,\n NgZone,\n OnDestroy,\n Input,\n OnInit,\n ViewContainerRef,\n HostBinding,\n ChangeDetectorRef,\n numberAttribute,\n inject\n} from '@angular/core';\nimport { OverlayRef, Overlay } from '@angular/cdk/overlay';\nimport { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyAutocompleteService } from './overlay/autocomplete.service';\nimport { ThyAutocompleteRef } from './overlay/autocomplete-ref';\nimport { ThyAutocomplete } from './autocomplete.component';\nimport { ThyOption, ThyOptionSelectionChangeEvent } from 'ngx-tethys/shared';\nimport { DOCUMENT } from '@angular/common';\nimport { Subject, Observable, merge, fromEvent, of, Subscription } from 'rxjs';\nimport { ESCAPE, UP_ARROW, ENTER, DOWN_ARROW, TAB, coerceBooleanProperty } from 'ngx-tethys/util';\nimport { filter, map, take, delay, switchMap } from 'rxjs/operators';\nimport { ScrollToService } from 'ngx-tethys/core';\nimport { warnDeprecation } from 'ngx-tethys/util';\n\n/**\n * 自动完成触发指令\n * @name thyAutocomplete\n */\n@Directive({\n selector:\n 'input[thyAutocompleteTrigger], textarea[thyAutocompleteTrigger], thy-input[thyAutocompleteTrigger], thy-input-search[thyAutocompleteTrigger], input[thyAutocomplete], textarea[thyAutocomplete], thy-input[thyAutocomplete], thy-input-search[thyAutocomplete]',\n exportAs: 'thyAutocompleteTrigger, thyAutocomplete',\n host: {\n '(input)': 'handleInput($event)',\n '(focusin)': 'onFocus()',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class ThyAutocompleteTriggerDirective implements OnInit, OnDestroy {\n private elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n private overlay = inject(Overlay);\n private autocompleteService = inject(ThyAutocompleteService);\n private viewContainerRef = inject(ViewContainerRef);\n private document = inject(DOCUMENT, { optional: true })!;\n private cdr = inject(ChangeDetectorRef);\n\n protected overlayRef: OverlayRef;\n\n private autocompleteRef: ThyAutocompleteRef<ThyAutocomplete>;\n\n private readonly closeKeyEventStream = new Subject<void>();\n\n private closingActionsSubscription: Subscription;\n\n private _autocompleteComponent: ThyAutocomplete;\n\n @HostBinding(`class.thy-autocomplete-opened`) panelOpened = false;\n\n /**\n * 下拉菜单组件实例。已废弃,请使用 thyAutocomplete\n * @type thyAutocompleteComponent\n * @deprecated\n */\n @Input('thyAutocompleteComponent')\n set autocompleteComponent(data: ThyAutocomplete) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warnDeprecation(`The property thyAutocompleteComponent will be deprecated, please use thyAutocomplete instead.`);\n }\n this._autocompleteComponent = data;\n }\n\n /**\n * 下拉菜单组件实例\n * @type thyAutocompleteComponent\n */\n @Input('thyAutocomplete')\n set autocomplete(data: ThyAutocomplete) {\n this._autocompleteComponent = data;\n }\n\n get autocompleteComponent() {\n return this._autocompleteComponent;\n }\n\n /**\n * 弹出框默认 offset\n * @type number\n */\n @Input({ transform: numberAttribute }) thyOffset = 4;\n\n /**\n * 下拉菜单的宽度,不设置默认与输入框同宽\n * @type number\n */\n @Input({ transform: numberAttribute }) thyAutocompleteWidth: number;\n\n /**\n * 下拉菜单的显示位置,'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight' | 'left' | 'leftTop' | 'leftBottom' | 'right' | 'rightTop' | 'rightBottom'\n * @type string\n */\n @Input() thyPlacement: ThyPlacement = 'bottomLeft';\n\n /**\n * 是否允许聚焦时打开下拉菜单\n * @type boolean\n */\n @Input({ transform: coerceBooleanProperty }) thyIsFocusOpen = true;\n\n get activeOption(): ThyOption | null {\n if (this.autocompleteComponent && this.autocompleteComponent.keyManager) {\n return this.autocompleteComponent.keyManager.activeItem;\n }\n\n return null;\n }\n\n get panelClosingActions(): Observable<ThyOptionSelectionChangeEvent | null> {\n return merge(\n this.autocompleteComponent.thyOptionSelected,\n this.autocompleteComponent.keyManager.tabOut.pipe(filter(() => this.panelOpened)),\n this.closeKeyEventStream,\n this.getOutsideClickStream(),\n this.overlayRef ? this.overlayRef.detachments().pipe(filter(() => this.panelOpened)) : of()\n ).pipe(\n // Normalize the output so we return a consistent type.\n map(event => (event instanceof ThyOptionSelectionChangeEvent ? event : null))\n );\n }\n\n ngOnInit(): void {}\n\n onFocus() {\n if (this.canOpen() && this.thyIsFocusOpen) {\n this.openPanel();\n }\n }\n\n onKeydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE) {\n event.preventDefault();\n }\n if (this.activeOption && keyCode === ENTER && this.panelOpened) {\n this.activeOption.selectViaInteraction();\n this.resetActiveItem();\n event.preventDefault();\n } else if (this.autocompleteComponent) {\n const prevActiveItem = this.autocompleteComponent.keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (this.panelOpened || keyCode === TAB) {\n this.autocompleteComponent.keyManager.onKeydown(event);\n } else if (isArrowKey && this.canOpen()) {\n this.openPanel();\n }\n if (\n (isArrowKey || this.autocompleteComponent.keyManager.activeItem !== prevActiveItem) &&\n this.autocompleteComponent.keyManager.activeItem\n ) {\n ScrollToService.scrollToElement(\n this.autocompleteComponent.keyManager.activeItem.element.nativeElement,\n this.autocompleteComponent.optionsContainer.nativeElement\n );\n }\n }\n }\n\n handleInput(event: KeyboardEvent) {\n if (this.canOpen() && document.activeElement === event.target) {\n this.openPanel();\n }\n }\n\n openPanel() {\n if (this.overlayRef && this.overlayRef.hasAttached()) {\n return;\n }\n const overlayRef = this.createOverlay();\n this.overlayRef = overlayRef;\n overlayRef.keydownEvents().subscribe(event => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if (event.keyCode === ESCAPE || (event.keyCode === UP_ARROW && event.altKey)) {\n this.resetActiveItem();\n this.closeKeyEventStream.next();\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n });\n this.panelOpened = true;\n this.autocompleteComponent.open();\n }\n\n closePanel() {\n if (this.autocompleteRef) {\n this.autocompleteRef.close();\n this.cdr.detectChanges();\n this.closingActionsSubscription.unsubscribe();\n }\n }\n\n createOverlay(): OverlayRef {\n const config = Object.assign({\n origin: this.elementRef.nativeElement,\n viewContainerRef: this.viewContainerRef,\n placement: this.thyPlacement,\n offset: this.thyOffset,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: this.thyAutocompleteWidth || this.elementRef.nativeElement.clientWidth\n });\n this.autocompleteRef = this.autocompleteService.open(this.autocompleteComponent.contentTemplateRef, config);\n this.autocompleteRef.afterClosed().subscribe(() => {\n this.panelOpened = false;\n this.autocompleteComponent.close();\n });\n // delay 200ms to prevent emit document click rightnow\n this.autocompleteRef\n .afterOpened()\n .pipe(delay(200))\n .subscribe(() => {\n this.closingActionsSubscription = this.subscribeToClosingActions();\n });\n return this.autocompleteRef.getOverlayRef();\n }\n\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n private subscribeToClosingActions(): Subscription {\n const firstStable = this.ngZone.onStable.asObservable().pipe(take(1));\n const optionChanges = this.autocompleteComponent.options.changes.pipe(\n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0)\n );\n // When the zone is stable initially, and when the option list changes...\n return (\n merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n this.resetActiveItem();\n\n if (this.panelOpened) {\n this.overlayRef.updatePosition();\n }\n return this.panelClosingActions;\n }),\n // when the first closing event occurs...\n take(1)\n )\n // set the value, close the panel, and complete.\n .subscribe(event => this.setValueAndClose(event))\n );\n }\n\n private setValueAndClose(event: ThyOptionSelectionChangeEvent | null): void {\n if (event && event.option) {\n this.setValue(event.option.thyLabelText);\n }\n this.closePanel();\n }\n\n /** Stream of clicks outside of the autocomplete panel. */\n private getOutsideClickStream(): Observable<any> {\n return merge(\n fromEvent(this.document, 'click') as Observable<MouseEvent>,\n fromEvent(this.document, 'touchend') as Observable<TouchEvent>\n ).pipe(\n filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = event.target as HTMLElement;\n const formField: any = null;\n\n return (\n this.panelOpened &&\n clickTarget !== this.elementRef.nativeElement &&\n !this.elementRef.nativeElement.contains(clickTarget) &&\n (!formField || !formField.contains(clickTarget)) &&\n !!this.overlayRef &&\n !this.overlayRef.overlayElement.contains(clickTarget)\n );\n })\n );\n }\n\n private setValue(value: string) {\n const input = this.elementRef.nativeElement.querySelector('input');\n const element = input ? input : this.elementRef.nativeElement;\n element.value = value;\n element.focus();\n }\n\n private canOpen(): boolean {\n const element: HTMLInputElement = this.elementRef.nativeElement;\n return !element.readOnly && !element.disabled;\n }\n\n private resetActiveItem(): void {\n this.autocompleteComponent.keyManager.setActiveItem(this.autocompleteComponent.thyAutoActiveFirstOption ? 0 : -1);\n }\n\n private destroyPanel(): void {\n if (this.overlayRef) {\n this.closePanel();\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n\n ngOnDestroy() {\n this.closeKeyEventStream.complete();\n this.destroyPanel();\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\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, ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyAutocomplete } from './autocomplete.component';\nimport { ThyAutocompleteTriggerDirective } from './autocomplete.trigger.directive';\nimport { ThyAutocompleteContainer } from './overlay/autocomplete-container.component';\nimport { THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER } from './overlay/autocomplete.config';\nimport { ThyAutocompleteService } from './overlay/autocomplete.service';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyInputModule,\n OverlayModule,\n PortalModule,\n ThyLoadingModule,\n ThySharedModule,\n ThyIconModule,\n ThyEmptyModule,\n ThyOptionModule,\n ThyAutocompleteTriggerDirective,\n ThyAutocomplete,\n ThyAutocompleteContainer\n ],\n exports: [ThyAutocompleteTriggerDirective, ThyAutocomplete, ThyAutocompleteContainer, ThyOptionModule],\n providers: [THY_AUTOCOMPLETE_DEFAULT_CONFIG_PROVIDER, ThyAutocompleteService]\n})\nexport class ThyAutocompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA6CA;;;AAGG;MAaU,eAAe,CAAA;AAZ5B,IAAA,WAAA,GAAA;AAaY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE7C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;AAEpC,QAAA,IAAA,CAAA,MAAM,GAAkC,YAAY,CAAC,cAAc,CAAC;QAE5E,IAAS,CAAA,SAAA,GAAmB,oBAAoB,EAAE;QAIlD,IAAU,CAAA,UAAA,GAAG,KAAK;QAElB,IAAI,CAAA,IAAA,GAAG,EAAE;QAET,IAAc,CAAA,cAAA,GAAG,KAAK;QAItB,IAAQ,CAAA,QAAA,GAAG,KAAK;AAiBP,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;;YAEvE,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;AACL,SAAC,CAA8C;AAE/C;;;AAGG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK;AAS3C;;;AAGG;AACO,QAAA,IAAA,CAAA,iBAAiB,GAAgD,IAAI,YAAY,EAAiC;AAE5H;;;AAGG;AACgB,QAAA,IAAA,CAAA,SAAS,GAAuB,IAAI,YAAY,EAAQ;AAE3E;;;AAGG;AACgB,QAAA,IAAA,CAAA,SAAS,GAAuB,IAAI,YAAY,EAAQ;;AAG3E;;;AAGG;AACgB,QAAA,IAAA,CAAA,kBAAkB,GAAgD,IAAI,YAAY,EAAiC;AA+FzI;IA7FG,QAAQ,GAAA;QACJ,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,sBAAsB,EAAE;;IAGjC,kBAAkB,GAAA;QACd,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACtF,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;gBACpB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;AAC9C,gBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC1C,aAAC,CAAC;YACF,IAAI,CAAC,cAAc,EAAE;AACzB,SAAC,CAAC;;IAGN,cAAc,GAAA;AACV,QAAA,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;AAC5E,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,0BAA0B,CAAY,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;AACpF,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;YAC1E,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;AACjG,SAAC,CAAC;;IAGN,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACrC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;IAGzB,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;IAGjB,YAAY,GAAA;AAChB,QAAA,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;AAE5E,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;AAClD,SAAC,CAAC;;IAGE,sBAAsB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;;QAE/B,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAY,IAAI,CAAC,UAAU,CAAC;AACpE,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAC/E,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;AAC9C,YAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AACtD,SAAC,CAAC;;IAGE,QAAQ,CAAC,MAAiB,EAAE,WAAoB,EAAA;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;QAE1D,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC7C,MAAM,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;;aACxB;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;;YAG/F,IAAI,WAAW,EAAE;AACb,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC;;;QAI7C,IAAI,WAAW,KAAK,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACxD,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,6BAA6B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;;AAEjF,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;IAGjC,gBAAgB,GAAA;QACpB,IAAI,SAAS,GAAG,EAAE;AAClB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,SAAS,GAAG,CAAuB,oBAAA,EAAA,IAAI,CAAC,IAAI,EAAE;;aAC3C;YACH,SAAS,GAAG,4BAA4B;;QAE5C,IAAI,CAAC,aAAa,GAAG;YACjB,CAAC,CAAA,mBAAA,CAAqB,GAAG,IAAI;YAC7B,CAAC,SAAS,GAAG;SAChB;;IAGL,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;;8GAhLzB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,CAAA,0BAAA,EAAA,0BAAA,EA0DJ,qBAAqB,CAlE9B,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,2BAA2B;AACpC,gBAAA,WAAW,EAAE;AAChB;SACJ,EAsCgB,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAS,iRChG9B,6VAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDiDc,2BAA2B,EAAE,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,oFAAE,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,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE/C,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAEX,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,2BAA2B;AACpC,4BAAA,WAAW,EAAiB;AAC/B;AACJ,qBAAA,EAAA,OAAA,EACQ,CAAC,2BAA2B,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAA,QAAA,EAAA,6VAAA,EAAA;8BA4BzD,kBAAkB,EAAA,CAAA;sBADjB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAK9C,gBAAgB,EAAA,CAAA;sBADf,SAAS;uBAAC,OAAO;gBAMiC,OAAO,EAAA,CAAA;sBAAzD,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAgBxC,YAAY,EAAA,CAAA;sBAApB;gBAO4C,wBAAwB,EAAA,CAAA;sBAApE,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE;gBAMjC,iBAAiB,EAAA,CAAA;sBAA1B;gBAMkB,SAAS,EAAA,CAAA;sBAA3B;gBAMkB,SAAS,EAAA,CAAA;sBAA3B;gBAOkB,kBAAkB,EAAA,CAAA;sBAApC;;;AE9IL,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAEzI;;;AAGG;AACU,MAAA,yBAAyB,GAElC;AACA,IAAA,qBAAqB,EAAE,OAAO,CAAC,uBAAuB,EAAE,aAAa;;;ACNnE,MAAO,qBAAmC,SAAQ,wBAA+B,CAAA;AA0BtF;MAEY,+BAA+B,GAAG,IAAI,cAAc,CAAwB,iCAAiC;AAE7G,MAAA,wCAAwC,GAAG;AACpD,IAAA,OAAO,EAAE,+BAA+B;AACxC,IAAA,QAAQ,EAAE;AACN,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,iBAAiB,EAAE,IAAI;AACvB,QAAA,cAAc,EAAE,IAAI;AACpB,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,iBAAiB,EAAE;AACtB;;;AC3CE,MAAM,kCAAkC,GAA8B;AACzE,IAAA,IAAI,EAAE,cAAc;AACpB,IAAA,gBAAgB,EAAE,IAAI;AACtB,IAAA,gBAAgB,EAAE;CACrB;;ACOD;;AAEG;AAeG,MAAO,wBAAyB,SAAQ,2BAA2B,CAAA;AAmBrE,IAAA,kBAAkB;AAElB,IAAA,WAAA,GAAA;AACI,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEnD,QAAA,KAAK,CAAC,kCAAkC,EAAE,iBAAiB,CAAC;AAvBxD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC9B,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;QAM/B,IAAc,CAAA,cAAA,GAA8B,OAAO;;AAGnD,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAkB;AAYtD,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CACvD,MAAM,CAAC,CAAC,KAAqB,KAAI;YAC7B,OAAO,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO;SACjE,CAAC,CACL;AACD,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CACvD,MAAM,CAAC,CAAC,KAAqB,KAAI;YAC7B,OAAO,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM;SAChE,CAAC,CACL;;AAGL,IAAA,eAAe;;AAGf,IAAA,eAAe,CAAC,KAAqB,EAAA;AACjC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAI1C,IAAA,gBAAgB,CAAC,KAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG1C,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM;AAC5B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;8GApDhC,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAOtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,8BAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,eAAe,ECrC9B,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+CACA,ED2Bc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,EAT3B,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,yBAAyB,CAAC,qBAAqB,CAAC,EAAA,CAAA,CAAA;;2FAWpD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,cAE1B,CAAC,yBAAyB,CAAC,qBAAqB,CAAC,EACvD,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,4BAA4B;AACnC,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,aAAa,EAAE,CAAgB,cAAA,CAAA;AAC/B,wBAAA,0BAA0B,EAAE,gBAAgB;AAC5C,wBAAA,gCAAgC,EAAE,0BAA0B;AAC5D,wBAAA,+BAA+B,EAAE;AACpC,qBAAA,EAAA,OAAA,EACQ,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,+CAAA,EAAA;wDAUxC,YAAY,EAAA,CAAA;sBADX,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AE7B1C,MAAgB,kBAAqC,SAAQ,qBAA2D,CAAA;AAAG;AAE3H,MAAO,0BACT,SAAQ,6BAAmE,CAAA;AAG3E,IAAA,WAAA,CAAY,UAAsB,EAAE,iBAA2C,EAAE,MAA6B,EAAA;QAC1G,KAAK,CAAC,kCAAkC,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,CAAC;;AAGpF;;;AAGG;IACH,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;AAChC,QAAA,OAAO,IAAI;;AAElB;;ACCD;;AAEG;AAEG,MAAO,sBACT,SAAQ,yBAA0E,CAAA;AAoB1E,IAAA,qBAAqB,CAAQ,MAAoC,EAAA;QACrE,MAAM,gBAAgB,GAAG,IAAI,iCAAiC,CAC1D,MAAM,CAAC,MAAM,EACb,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,CACzB;AACD,QAAA,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC;AAC3F,QAAA,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC;AACzC,QAAA,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACxC,QAAA,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AACrF,YAAA,IAAI,MAAM,CAAC,wBAAwB,CAAC,gBAAgB,EAAE;;;AAGlD,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;;AAE3C,SAAC,CAAC;AACF,QAAA,OAAO,gBAAgB;;AAGjB,IAAA,kBAAkB,CAAQ,MAAoC,EAAA;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACnD,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;AACzD,QAAA,aAAa,CAAC,gBAAgB,GAAG,QAAQ;AACzC,QAAA,aAAa,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC7F,QAAA,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AAClC,QAAA,OAAO,aAAa;;IAGd,sBAAsB,CAAC,OAAmB,EAAE,MAAkC,EAAA;AACpF,QAAA,MAAM,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ;AAC1F,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC7B,YAAA,MAAM,EAAE,YAAY,IAAI,IAAI,CAAC,QAAQ;YACrC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE;AACnE,SAAA,CAAC;AACF,QAAA,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,wBAAwB,EAAE,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC;QACxG,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAA2B,eAAe,CAAC;QAC9E,OAAO,YAAY,CAAC,QAAQ;;AAGtB,IAAA,wBAAwB,CAC9B,UAAsB,EACtB,iBAA2C,EAC3C,MAAkC,EAAA;QAElC,OAAO,IAAI,0BAA0B,CAAI,UAAU,EAAE,iBAAiB,EAAE,MAAM,CAAC;;AAGzE,IAAA,cAAc,CACpB,MAA6B,EAC7B,eAAsC,EACtC,qBAA+C,EAAA;AAE/C,QAAA,MAAM,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ;AAC1F,QAAA,MAAM,eAAe,GAAqB;AACtC,YAAA;AACI,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,QAAQ,EAAE;AACb,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,QAAQ,EAAE;AACb;SACJ;AAED,QAAA,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAwB,cAAc,EAAE,IAAI,CAAC,CAAC,EAAE;YACvG,eAAe,CAAC,IAAI,CAAC;AACjB,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,QAAQ,EAAE;oBACN,KAAK,EAAE,MAAM,CAAC,SAAS;oBACvB,MAAM,EAAE,EAAE;AACb;AACJ,aAAA,CAAC;;AAGN,QAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;;AAGzF,IAAA,2BAA2B,CAAC,MAA6B,EAAA;AAC7D,QAAA,IAAI,MAAM,CAAC,iBAAiB,EAAE;AAC1B,YAAA,aAAa,CAAc,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;;;AAIjG,IAAA,8BAA8B,CAAC,MAA6B,EAAA;AAChE,QAAA,IAAI,MAAM,CAAC,iBAAiB,EAAE;AAC1B,YAAA,aAAa,CAAc,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;;;AAI5G,IAAA,WAAA,GAAA;AACI,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC/B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,+BAA+B,CAAC;QAE7D,KAAK,CAAC,kCAAkC,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC;AAjHvE,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AACtC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEnC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAE;AAEvC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,GAAG,EAMjC;;IAqGH,IAAI,CACA,sBAAyD,EACzD,MAAqC,EAAA;QAErC,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC;QAClD,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,MAAM,CAA0B;AACjG,QAAA,MAAM,GAAG,eAAe,CAAC,iBAAiB,CAAC,MAAM;AACjD,QAAA,eAAe,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAK;AACzC,YAAA,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC;AAC3C,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC;AACjD,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;AACxC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,EAAE;YACvC,MAAM;YACN;AACH,SAAA,CAAC;AAEF,QAAA,OAAO,eAAe;;IAG1B,WAAW,GAAA;QACP,IAAI,CAAC,OAAO,EAAE;;8GA9IT,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACJD;;;AAGG;MAWU,+BAA+B,CAAA;AAV5C,IAAA,WAAA,GAAA;AAWY,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACpD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC3C,IAAQ,CAAA,QAAA,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE;AAChD,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAMtB,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAQ;QAMZ,IAAW,CAAA,WAAA,GAAG,KAAK;AA4BjE;;;AAGG;QACoC,IAAS,CAAA,SAAA,GAAG,CAAC;AAQpD;;;AAGG;QACM,IAAY,CAAA,YAAA,GAAiB,YAAY;AAElD;;;AAGG;QAC0C,IAAc,CAAA,cAAA,GAAG,IAAI;AAwNrE;AAxQG;;;;AAIG;IACH,IACI,qBAAqB,CAAC,IAAqB,EAAA;AAC3C,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;YAC/C,eAAe,CAAC,CAA+F,6FAAA,CAAA,CAAC;;AAEpH,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;;AAGtC;;;AAGG;IACH,IACI,YAAY,CAAC,IAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;;AAGtC,IAAA,IAAI,qBAAqB,GAAA;QACrB,OAAO,IAAI,CAAC,sBAAsB;;AA2BtC,IAAA,IAAI,YAAY,GAAA;QACZ,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE;AACrE,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,UAAU;;AAG3D,QAAA,OAAO,IAAI;;AAGf,IAAA,IAAI,mBAAmB,GAAA;AACnB,QAAA,OAAO,KAAK,CACR,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAC5C,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,EACjF,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,qBAAqB,EAAE,EAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE,CAC9F,CAAC,IAAI;;QAEF,GAAG,CAAC,KAAK,KAAK,KAAK,YAAY,6BAA6B,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAChF;;AAGL,IAAA,QAAQ;IAER,OAAO,GAAA;QACH,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;YACvC,IAAI,CAAC,SAAS,EAAE;;;AAIxB,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;;;;;AAK7B,QAAA,IAAI,OAAO,KAAK,MAAM,EAAE;YACpB,KAAK,CAAC,cAAc,EAAE;;AAE1B,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE;AAC5D,YAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE;YACxC,IAAI,CAAC,eAAe,EAAE;YACtB,KAAK,CAAC,cAAc,EAAE;;AACnB,aAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACnC,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,UAAU;YACvE,MAAM,UAAU,GAAG,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,UAAU;YACjE,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO,KAAK,GAAG,EAAE;gBACrC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;;AACnD,iBAAA,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBACrC,IAAI,CAAC,SAAS,EAAE;;AAEpB,YAAA,IACI,CAAC,UAAU,IAAI,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,UAAU,KAAK,cAAc;AAClF,gBAAA,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,UAAU,EAClD;gBACE,eAAe,CAAC,eAAe,CAC3B,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EACtE,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,aAAa,CAC5D;;;;AAKb,IAAA,WAAW,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,EAAE;YAC3D,IAAI,CAAC,SAAS,EAAE;;;IAIxB,SAAS,GAAA;QACL,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;YAClD;;AAEJ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;QAC5B,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,KAAK,IAAG;;;AAGzC,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,KAAK,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;gBAC1E,IAAI,CAAC,eAAe,EAAE;AACtB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;;;gBAG/B,KAAK,CAAC,eAAe,EAAE;gBACvB,KAAK,CAAC,cAAc,EAAE;;AAE9B,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE;;IAGrC,UAAU,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,YAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE;;;IAIrD,aAAa,GAAA;AACT,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACzB,YAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;YACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,SAAS,EAAE,IAAI,CAAC,YAAY;YAC5B,MAAM,EAAE,IAAI,CAAC,SAAS;YACtB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;YAC1D,KAAK,EAAE,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACrE,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,MAAM,CAAC;QAC3G,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAK;AAC9C,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE;AACtC,SAAC,CAAC;;AAEF,QAAA,IAAI,CAAC;AACA,aAAA,WAAW;AACX,aAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACf,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,yBAAyB,EAAE;AACtE,SAAC,CAAC;AACN,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;AAG/C;;;AAGG;IACK,yBAAyB,GAAA;AAC7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;;;AAGjE,QAAA,KAAK,CAAC,CAAC,CAAC,CACX;;AAED,QAAA,QACI,KAAK,CAAC,WAAW,EAAE,aAAa;aAC3B,IAAI;;;QAGD,SAAS,CAAC,MAAK;YACX,IAAI,CAAC,eAAe,EAAE;AAEtB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;;YAEpC,OAAO,IAAI,CAAC,mBAAmB;AACnC,SAAC,CAAC;;QAEF,IAAI,CAAC,CAAC,CAAC;;AAGV,aAAA,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;;AAIrD,IAAA,gBAAgB,CAAC,KAA2C,EAAA;AAChE,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;;QAE5C,IAAI,CAAC,UAAU,EAAE;;;IAIb,qBAAqB,GAAA;QACzB,OAAO,KAAK,CACR,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAA2B,EAC3D,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAA2B,CACjE,CAAC,IAAI,CACF,MAAM,CAAC,KAAK,IAAG;;;AAGX,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAqB;YAC/C,MAAM,SAAS,GAAQ,IAAI;YAE3B,QACI,IAAI,CAAC,WAAW;AAChB,gBAAA,WAAW,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa;gBAC7C,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC;iBACnD,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAChD,CAAC,CAAC,IAAI,CAAC,UAAU;gBACjB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC;SAE5D,CAAC,CACL;;AAGG,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC1B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;AAClE,QAAA,MAAM,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC7D,QAAA,OAAO,CAAC,KAAK,GAAG,KAAK;QACrB,OAAO,CAAC,KAAK,EAAE;;IAGX,OAAO,GAAA;AACX,QAAA,MAAM,OAAO,GAAqB,IAAI,CAAC,UAAU,CAAC,aAAa;QAC/D,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ;;IAGzC,eAAe,GAAA;QACnB,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;;IAG7G,YAAY,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;;IAI9B,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;QACnC,IAAI,CAAC,YAAY,EAAE;;8GA3Rd,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAmDpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gQAAA,EAAA,MAAA,EAAA,EAAA,qBAAA,EAAA,CAAA,0BAAA,EAAA,uBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,SAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,eAAe,CAMf,EAAA,oBAAA,EAAA,CAAA,sBAAA,EAAA,sBAAA,EAAA,eAAe,sFAYf,qBAAqB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FArEhC,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAV3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EACJ,gQAAgQ;AACpQ,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,qBAAqB;AAChC,wBAAA,WAAW,EAAE,WAAW;AACxB,wBAAA,WAAW,EAAE;AAChB;AACJ,iBAAA;8BAoBiD,WAAW,EAAA,CAAA;sBAAxD,WAAW;uBAAC,CAA+B,6BAAA,CAAA;gBAQxC,qBAAqB,EAAA,CAAA;sBADxB,KAAK;uBAAC,0BAA0B;gBAa7B,YAAY,EAAA,CAAA;sBADf,KAAK;uBAAC,iBAAiB;gBAae,SAAS,EAAA,CAAA;sBAA/C,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;gBAME,oBAAoB,EAAA,CAAA;sBAA1D,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;gBAM5B,YAAY,EAAA,CAAA;sBAApB;gBAM4C,cAAc,EAAA,CAAA;sBAA1D,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE;;;MC1ElC,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAjB1B,YAAY;YACZ,WAAW;YACX,cAAc;YACd,aAAa;YACb,YAAY;YACZ,gBAAgB;YAChB,eAAe;YACf,aAAa;YACb,cAAc;YACd,eAAe;YACf,+BAA+B;YAC/B,eAAe;AACf,YAAA,wBAAwB,aAElB,+BAA+B,EAAE,eAAe,EAAE,wBAAwB,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;AAG5F,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,aAFnB,CAAC,wCAAwC,EAAE,sBAAsB,CAAC,YAfzE,YAAY;YACZ,WAAW;YACX,cAAc;YACd,aAAa;YACb,YAAY;YACZ,gBAAgB;YAChB,eAAe;YACf,aAAa;YACb,cAAc;YACd,eAAe;YAEf,eAAe;AACf,YAAA,wBAAwB,EAE0D,eAAe,CAAA,EAAA,CAAA,CAAA;;2FAG5F,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAnBjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,cAAc;wBACd,aAAa;wBACb,YAAY;wBACZ,gBAAgB;wBAChB,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,eAAe;wBACf,+BAA+B;wBAC/B,eAAe;wBACf;AACH,qBAAA;oBACD,OAAO,EAAE,CAAC,+BAA+B,EAAE,eAAe,EAAE,wBAAwB,EAAE,eAAe,CAAC;AACtG,oBAAA,SAAS,EAAE,CAAC,wCAAwC,EAAE,sBAAsB;AAC/E,iBAAA;;;AClCD;;AAEG;;;;"}