@alauda/ui 6.2.2-beta → 6.2.2-beta.11

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 (58) hide show
  1. package/alauda-ui.d.ts +20 -21
  2. package/alauda-ui.metadata.json +1 -1
  3. package/bundles/alauda-ui.umd.js +82 -76
  4. package/bundles/alauda-ui.umd.js.map +1 -1
  5. package/bundles/alauda-ui.umd.min.js +1 -1
  6. package/bundles/alauda-ui.umd.min.js.map +1 -1
  7. package/esm2015/accordion/accordion-item/accordion-item.component.js +1 -1
  8. package/esm2015/accordion/accordion-item/accordion-item.component.scss.ngstyle.js +1 -1
  9. package/esm2015/alauda-ui.js +21 -22
  10. package/esm2015/alauda-ui.ngsummary.json +1 -1
  11. package/esm2015/autocomplete/suggestion/suggestion.component.js +1 -1
  12. package/esm2015/autocomplete/suggestion/suggestion.component.scss.ngstyle.js +1 -1
  13. package/esm2015/button/button.component.js +1 -1
  14. package/esm2015/button/button.component.scss.ngstyle.js +1 -1
  15. package/esm2015/icon/icon.component.js +1 -1
  16. package/esm2015/icon/icon.component.ngfactory.js +1 -1
  17. package/esm2015/icon/icon.component.scss.ngstyle.js +1 -1
  18. package/esm2015/icon/icon.module.ngfactory.js +1 -1
  19. package/esm2015/input/tags-input/tags-input.component.js +1 -1
  20. package/esm2015/input/tags-input/tags-input.component.scss.ngstyle.js +1 -1
  21. package/esm2015/public-api.ngsummary.json +1 -1
  22. package/esm2015/radio/radio-button/radio-button.component.js +1 -1
  23. package/esm2015/radio/radio-button/radio-button.component.scss.ngstyle.js +1 -1
  24. package/esm2015/radio/radio.component.js +1 -1
  25. package/esm2015/radio/radio.component.scss.ngstyle.js +1 -1
  26. package/esm2015/select/multi-select/multi-select.component.js +1 -1
  27. package/esm2015/select/multi-select/multi-select.component.scss.ngstyle.js +1 -1
  28. package/esm2015/select/option/option.component.js +1 -1
  29. package/esm2015/select/option/option.component.scss.ngstyle.js +1 -1
  30. package/esm2015/switch/switch.component.js +1 -1
  31. package/esm2015/switch/switch.component.scss.ngstyle.js +1 -1
  32. package/esm2015/table/table.component.js +1 -1
  33. package/esm2015/table/table.component.scss.ngstyle.js +1 -1
  34. package/esm2015/tag/check-tag/check-tag.component.js +1 -1
  35. package/esm2015/tag/tag.component.js +1 -1
  36. package/esm2015/tag/tag.component.scss.ngstyle.js +1 -1
  37. package/esm2015/theme/public-api.js +3 -2
  38. package/esm2015/theme/public-api.ngsummary.json +1 -1
  39. package/esm2015/theme/theme.module.js +2 -3
  40. package/esm2015/theme/theme.module.ngfactory.js +1 -1
  41. package/esm2015/theme/theme.module.ngsummary.json +1 -1
  42. package/esm2015/theme/theme.pipe.js +61 -0
  43. package/esm2015/theme/theme.pipe.ngsummary.json +1 -0
  44. package/esm2015/theme/utils.js +10 -0
  45. package/esm2015/theme/utils.ngsummary.json +1 -0
  46. package/fesm2015/alauda-ui.js +48 -39
  47. package/fesm2015/alauda-ui.js.map +1 -1
  48. package/package.json +1 -1
  49. package/theme/_mixin.scss +1 -1
  50. package/theme/public-api.d.ts +2 -1
  51. package/theme/style.css +86 -80
  52. package/theme/{theme-picker.pipe.d.ts → theme.pipe.d.ts} +10 -0
  53. package/theme/utils.d.ts +3 -0
  54. package/esm2015/theme/color.pipe.js +0 -26
  55. package/esm2015/theme/color.pipe.ngsummary.json +0 -1
  56. package/esm2015/theme/theme-picker.pipe.js +0 -36
  57. package/esm2015/theme/theme-picker.pipe.ngsummary.json +0 -1
  58. package/theme/color.pipe.d.ts +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"alauda-ui.js","sources":["../../src/types.ts","../../src/utils/async.ts","../../src/utils/bem.ts","../../src/utils/coercion.ts","../../src/utils/fn.ts","../../src/utils/observe-dom.ts","../../src/utils/scroll-into-view.ts","../../src/utils/watch-content-exist.ts","../../src/theme/theme.service.ts","../../src/theme/theme-picker.pipe.ts","../../src/theme/color.pipe.ts","../../src/theme/theme.module.ts","../../src/icon/icons.ts","../../src/icon/utils.ts","../../src/icon/icon-register.service.ts","../../src/icon/icon.component.ts","../../src/icon/icon.module.ts","../../src/table/table-cell-def.directive.ts","../../src/table/table-cell.component.ts","../../src/table/table-cell.directive.ts","../../src/table/table-column-def.directive.ts","../../src/table/table-header-cell-def.directive.ts","../../src/table/table-header-cell.directive.ts","../../src/table/table-header-row-def.directive.ts","../../src/table/table-header-row.component.ts","../../src/table/table-placeholder.directive.ts","../../src/table/table-row-def.directive.ts","../../src/table/table-row.component.ts","../../src/table/table.component.ts","../../src/table/table-scroll.directive.ts","../../src/table/table.module.ts","../../src/sort/sort-errors.ts","../../src/sort/sort.directive.ts","../../src/sort/sort-header.component.ts","../../src/sort/sort.module.ts","../../src/button/button-group/button-group.component.ts","../../src/button/button.types.ts","../../src/button/button.component.ts","../../src/button/button.module.ts","../../src/back-top/back-top.component.ts","../../src/back-top/back-top.module.ts","../../src/tooltip/tooltip.types.ts","../../src/tooltip/tooltip.component.ts","../../src/tooltip/utils/index.ts","../../src/tooltip/base-tooltip.ts","../../src/tooltip/tooltip-active.directive.ts","../../src/tooltip/tooltip-intl.ts","../../src/tooltip/tooltip-copy.directive.ts","../../src/tooltip/tooltip.directive.ts","../../src/tooltip/tooltip.module.ts","../../src/card/section.component.ts","../../src/card/card.component.ts","../../src/card/helper-directives.ts","../../src/card/card.module.ts","../../src/dialog/dialog-ref.ts","../../src/dialog/dialog.types.ts","../../src/dialog/confirm-dialog/confirm-dialog-config.ts","../../src/dialog/confirm-dialog/confirm-dialog.component.ts","../../src/dialog/dialog-config.ts","../../src/dialog/utils/errors.ts","../../src/dialog/utils/index.ts","../../src/dialog/dialog.component.ts","../../src/dialog/dialog.service.ts","../../src/dialog/dialog-content/dialog-close.directive.ts","../../src/dialog/dialog-content/dialog-content.component.ts","../../src/dialog/dialog-content/dialog-footer.component.ts","../../src/dialog/dialog-content/dialog-header.component.ts","../../src/dialog/dialog.module.ts","../../src/form/form.types.ts","../../src/form/form.directive.ts","../../src/form/helper-directives.ts","../../src/form/form-item/form-item.component.ts","../../src/form/form.module.ts","../../src/form/common-form.ts","../../src/radio/radio.types.ts","../../src/radio/radio-group/radio-group.component.ts","../../src/radio/base-radio.ts","../../src/radio/radio.component.ts","../../src/radio/radio-button/radio-button.component.ts","../../src/radio/radio.module.ts","../../src/switch/switch.component.ts","../../src/switch/switch.module.ts","../../src/checkbox/checkbox-group/checkbox-group.component.ts","../../src/checkbox/checkbox.component.ts","../../src/checkbox/checkbox.module.ts","../../src/input/input.component.ts","../../src/input/helper-directives.ts","../../src/input/input-group/input-group.component.ts","../../src/input/search/search.component.ts","../../src/input/tags-input/with-max-row-count.ts","../../src/input/tags-input/tags-input.component.ts","../../src/shared/click-outside.directive.ts","../../src/shared/shared.module.ts","../../src/tag/tag.types.ts","../../src/tag/tag.component.ts","../../src/tag/check-tag/check-tag.component.ts","../../src/tag/tag.module.ts","../../src/input/utils/index.ts","../../src/input/autosize.directive.ts","../../src/input/number-input/number-input.component.ts","../../src/input/input.module.ts","../../src/i18n/language/en.ts","../../src/i18n/i18n.type.ts","../../src/i18n/i18n.service.ts","../../src/i18n/i18n.pipe.ts","../../src/i18n/i18n.module.ts","../../src/i18n/language/zh.ts","../../src/dropdown/dropdown-active.directive.ts","../../src/dropdown/dropdown.directive.ts","../../src/dropdown/dropdown.types.ts","../../src/dropdown/menu-item/menu-item.component.ts","../../src/dropdown/menu/menu-content.directive.ts","../../src/dropdown/menu/menu.component.ts","../../src/dropdown/dropdown-button/dropdown-button.component.ts","../../src/dropdown/menu-group/menu-group.component.ts","../../src/dropdown/submenu/submenu.component.ts","../../src/dropdown/helper-directives.ts","../../src/dropdown/dropdown.module.ts","../../src/select/helper-directives.ts","../../src/select/option/option.component.ts","../../src/select/base-select.ts","../../src/select/select.types.ts","../../src/select/multi-select/multi-select.component.ts","../../src/select/option-group/option-group.component.ts","../../src/select/option-placeholder.component.ts","../../src/select/select.component.ts","../../src/select/validators.ts","../../src/select/select.module.ts","../../src/paginator/paginator-intl.ts","../../src/paginator/paginator.component.ts","../../src/paginator/paginator.module.ts","../../src/inline-alert/inline-alert.types.ts","../../src/inline-alert/helper-directives.ts","../../src/inline-alert/inline-alert.component.ts","../../src/inline-alert/inline-alert.module.ts","../../src/breadcrumb/breadcrumb-item.component.ts","../../src/breadcrumb/breadcrumb.component.ts","../../src/breadcrumb/breadcrumb.module.ts","../../src/message/message-wrapper.component.ts","../../src/message/message-animations.ts","../../src/message/message.config.ts","../../src/message/message.component.ts","../../src/message/base-message.ts","../../src/message/message.service.ts","../../src/message/message.module.ts","../../src/notification/notification-wrapper.component.ts","../../src/notification/notification.component.ts","../../src/notification/notification.config.ts","../../src/notification/notification.service.ts","../../src/notification/notification.module.ts","../../src/tabs/tab-body.component.ts","../../src/tabs/tab-directives.ts","../../src/tabs/tabs.types.ts","../../src/tabs/tab-header-active-indicator.component.ts","../../src/tabs/tab-header.component.ts","../../src/tabs/tab-context.service.ts","../../src/tabs/tab.component.ts","../../src/tabs/tab-group.component.ts","../../src/tabs/tabs.module.ts","../../src/tree-select/tree-node-placeholder.component.ts","../../src/tree-select/tree-select.component.ts","../../src/tree-select/tree-node/tree-node.component.ts","../../src/tree-select/tree-select.module.ts","../../src/autocomplete/autocomplete.directive.ts","../../src/autocomplete/autocomplete-placeholder.component.ts","../../src/autocomplete/suggestion/suggestion.component.ts","../../src/autocomplete/autocomplete.component.ts","../../src/autocomplete/suggestion-group/suggestion-group.component.ts","../../src/autocomplete/helper-directives.ts","../../src/autocomplete/autocomplete.module.ts","../../src/table-of-contents/toc-container.directive.ts","../../src/table-of-contents/toc-content.directive.ts","../../src/table-of-contents/toc-link.directive.ts","../../src/table-of-contents/table-of-contents.module.ts","../../src/status-bar/status-bar.types.ts","../../src/status-bar/status-bar.component.ts","../../src/status-bar/status-bar.module.ts","../../src/color-picker/color-picker.component.ts","../../src/color-picker/color-picker.module.ts","../../src/accordion/accordion.component.ts","../../src/accordion/accordion-item/accordion-item.component.ts","../../src/accordion/accordion.module.ts","../../src/scrolling/fixed-size-table-virtual-scroll-strategy.ts","../../src/scrolling/fixed-size-table-virtual-scroll.directive.ts","../../src/scrolling/fixed-size-virtual-scroll.directive.ts","../../src/scrolling/virtual-for-of.directive.ts","../../src/scrolling/virtual-scroll-viewport.component.ts","../../src/scrolling/scrolling.module.ts","../../src/anchor/anchor.directive.ts","../../src/anchor/utils.ts","../../src/anchor/anchor.component.ts","../../src/anchor/anchor.module.ts","../../src/date-picker/date-picker.type.ts","../../src/date-picker/calendar/constant.ts","../../src/date-picker/calendar/util.ts","../../src/time-picker/time-picker.type.ts","../../src/time-picker/component.ts","../../src/time-picker/constant.ts","../../src/time-picker/panel/panel.component.ts","../../src/time-picker/time-picker.module.ts","../../src/date-picker/calendar/date-picker-panel/component.ts","../../src/date-picker/calendar/footer/component.ts","../../src/date-picker/calendar/header/component.ts","../../src/date-picker/calendar/panel/picker-panel.ts","../../src/date-picker/calendar/range-picker-panel/component.ts","../../src/date-picker/date-picker/date-picker.component.ts","../../src/date-picker/range-picker/range-picker.component.ts","../../src/date-picker/trigger/trigger.component.ts","../../src/date-picker/date-picker.module.ts","../../src/drawer/component/drawer-ref.ts","../../src/drawer/component/helper-directives.ts","../../src/drawer/component/drawer.component.ts","../../src/drawer/drawer.service.ts","../../src/drawer/drawer.module.ts","../../src/steps/types.ts","../../src/steps/steps.component.ts","../../src/steps/steps.module.ts","../../src/alauda-ui.ts"],"sourcesContent":["export type ValueOf<T> = T[keyof T];\n\nexport const ComponentSize = {\n Large: 'large',\n Medium: 'medium',\n Small: 'small',\n Mini: 'mini',\n /**\n * represents default internally, @link https://github.com/angular/vscode-ng-language-service/issues/1147\n */\n Empty: '',\n} as const;\n\nexport type ComponentSize = ValueOf<typeof ComponentSize>;\n","export function sleep(ms = 0) {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\n","// Experimental bem classname helper\nexport class Bem {\n constructor(private readonly namespace: string) {}\n\n block(...modifiers: Array<{ [name: string]: boolean } | string>) {\n const activatedModifiers = getActivatedModifiers(modifiers);\n if (activatedModifiers.length > 0) {\n return `${this.namespace} ${activatedModifiers\n .map(modifier => this.namespace + '--' + modifier)\n .join(' ')}`;\n }\n return this.namespace;\n }\n\n modifier(name: string) {\n return `${this.namespace}--${name}`;\n }\n\n element(\n name: string,\n ...modifiers: Array<{ [name: string]: boolean | '' } | string>\n ) {\n const activatedModifiers = getActivatedModifiers(modifiers);\n\n if (activatedModifiers.length > 0) {\n return `${this.namespace}__${name} ${activatedModifiers\n .map(modifier => this.namespace + '__' + name + '--' + modifier)\n .join(' ')}`;\n }\n\n return `${this.namespace}__${name}`;\n }\n}\n\nfunction getActivatedModifiers(\n modifiers: Array<{ [name: string]: boolean | '' } | string>,\n) {\n return modifiers.reduce<string[]>((acc, modifier) => {\n if (!modifier) {\n return acc;\n }\n return acc.concat(\n typeof modifier === 'string'\n ? [modifier]\n : getActivatedModifiersFromObject(modifier),\n );\n }, []);\n}\n\nfunction getActivatedModifiersFromObject(modifiers: {\n [name: string]: boolean | '';\n}) {\n return Object.keys(modifiers).filter(key => modifiers[key]);\n}\n\nexport function buildBem(namespace: string) {\n return new Bem(namespace);\n}\n","export function coerceString(val: unknown): string {\n return val == null ? '' : val.toString();\n}\n\nexport function coerceAttrBoolean(val: unknown): boolean {\n return val === '' ? true : !!val;\n}\n\nexport function coerceNumber(val: unknown, fallbackValue = 0): number {\n return _isNumberValue(val) ? Number(val) : fallbackValue;\n}\n\nexport function _isNumberValue(value: unknown): boolean {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value as string)) && !isNaN(Number(value));\n}\n","import { TemplateRef } from '@angular/core';\n\nexport function isUndefined(val: unknown): boolean {\n return val === undefined;\n}\n\nexport const last = <T>(values: T[]) => values?.[values.length - 1];\n\nexport const isTemplateRef = (\n label: string | TemplateRef<unknown>,\n): label is TemplateRef<unknown> => label instanceof TemplateRef;\n\nexport const handlePixel = (value: number | string) =>\n Number.isNaN(+value) ? (value as string) : value + 'px';\n","import { Observable } from 'rxjs';\n\nexport const observeResizeOn = <T extends Element>(\n target: T,\n options?: ResizeObserverOptions,\n) =>\n new Observable<T>(observer => {\n const resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n observer.next(entry.target as T);\n }\n });\n resizeObserver.observe(target, options);\n return () => {\n resizeObserver.unobserve(target);\n resizeObserver.disconnect();\n };\n });\n\nexport const observeMutationOn = <T extends Node>(\n target: T,\n options?: MutationObserverInit,\n) =>\n new Observable<MutationRecord>(observer => {\n const mutationObserver = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n observer.next(mutation);\n }\n });\n mutationObserver.observe(target, options);\n return () => mutationObserver.disconnect();\n });\n","export function scrollIntoView(container: HTMLElement, selected: HTMLElement) {\n if (!selected) {\n container.scrollTop = 0;\n return;\n }\n\n const top = selected.offsetTop;\n const bottom = selected.offsetTop + selected.offsetHeight;\n const viewRectTop = container.scrollTop;\n const viewRectBottom = viewRectTop + container.clientHeight;\n\n if (viewRectTop > top) {\n container.scrollTop = top;\n } else if (viewRectBottom < bottom) {\n container.scrollTop = bottom - container.clientHeight;\n }\n}\n","import { QueryList } from '@angular/core';\nimport { map, publishReplay, refCount, startWith } from 'rxjs/operators';\n\nexport function watchContentExist(queryList: QueryList<unknown>) {\n return queryList.changes.pipe(\n startWith(queryList),\n map((list: QueryList<unknown>) => !!list.length),\n publishReplay(1),\n refCount(),\n );\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { Theme, ThemeMode } from './theme.types';\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n private readonly htmlEl: HTMLHtmlElement;\n private browserTheme: Theme;\n private themeMode: ThemeMode;\n\n private readonly currentAppTheme$$ = new ReplaySubject<Theme>(1);\n\n readonly currentTheme$ = this.currentAppTheme$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n constructor() {\n this.htmlEl = document.querySelector('html');\n\n switch (this.htmlEl.getAttribute('aui-theme-mode')) {\n case 'dark':\n this.themeMode = 'dark';\n break;\n case 'light':\n this.themeMode = 'light';\n break;\n case 'system':\n this.themeMode = 'system';\n break;\n default:\n this.themeMode = 'light';\n }\n\n const darkModeQuery = window.matchMedia('(prefers-color-scheme: dark)');\n this.browserTheme = darkModeQuery.matches ? 'dark' : 'light';\n\n darkModeQuery.addEventListener('change', ({ matches }) => {\n this.browserTheme = matches ? 'dark' : 'light';\n if (this.themeMode === 'system') {\n this.themeChanged();\n }\n });\n\n this.themeChanged();\n }\n\n setThemeMode(mode: ThemeMode) {\n this.htmlEl.setAttribute('aui-theme-mode', mode);\n this.themeMode = mode;\n this.themeChanged();\n }\n\n currentTheme() {\n return this.themeMode === 'system' ? this.browserTheme : this.themeMode;\n }\n\n private themeChanged() {\n this.currentAppTheme$$.next(this.currentTheme());\n }\n}\n","import {\n ChangeDetectorRef,\n OnDestroy,\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ThemeService } from './theme.service';\nimport { Theme, ThemeSet } from './theme.types';\n\n@Pipe({ name: 'auiThemePicker', pure: false })\nexport class ThemePickerPipe<T> implements PipeTransform, OnDestroy {\n private currentTheme: Theme;\n private readonly destroy$$ = new Subject<void>();\n\n constructor(themeService: ThemeService, cdr: ChangeDetectorRef) {\n themeService.currentTheme$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(theme => {\n this.currentTheme = theme;\n cdr.markForCheck();\n });\n }\n\n transform(v: ThemeSet<T>) {\n if (v instanceof Function) {\n return v(this.currentTheme);\n }\n if (Array.isArray(v)) {\n return v[this.currentTheme === 'light' ? 0 : 1];\n }\n return v[this.currentTheme];\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'auiRgbColor', pure: true })\nexport class RgbColorPipe implements PipeTransform {\n transform(color: string) {\n return `rgb(var(--aui-color-${color}))`;\n }\n}\n\n@Pipe({ name: 'auiRgbaColor', pure: true })\nexport class RgbaColorPipe implements PipeTransform {\n transform([color, opacity]: [string, number]) {\n return `rgba(var(--aui-color-${color}), ${opacity})`;\n }\n}\n\n@Pipe({ name: 'auiCssVar', pure: true })\nexport class CssVarPipe implements PipeTransform {\n transform(value: string) {\n return `var(--aui-${value})`;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CssVarPipe, RgbColorPipe, RgbaColorPipe } from './color.pipe';\nimport { ThemePickerPipe } from './theme-picker.pipe';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [ThemePickerPipe, RgbColorPipe, RgbaColorPipe, CssVarPipe],\n exports: [ThemePickerPipe, RgbColorPipe, RgbaColorPipe, CssVarPipe],\n})\nexport class ThemeModule {}\n","export const auiIcons =\n '<svg><symbol id=\"aui-icon-square_s\" viewBox=\"0 0 1024 1024\"><path d=\"M950.857143 0a73.142857 73.142857 0 0 1 73.142857 73.142857v877.714286a73.142857 73.142857 0 0 1-73.142857 73.142857H73.142857a73.142857 73.142857 0 0 1-73.142857-73.142857V73.142857a73.142857 73.142857 0 0 1 73.142857-73.142857h877.714286z m-182.857143 219.428571h-512a36.571429 36.571429 0 0 0-35.986286 29.988572L219.428571 256v512a36.571429 36.571429 0 0 0 29.988572 35.986286L256 804.571429h512a36.571429 36.571429 0 0 0 35.986286-29.988572L804.571429 768v-512a36.571429 36.571429 0 0 0-29.988572-35.986286L768 219.428571z\" ></path></symbol><symbol id=\"aui-icon-close_small\" viewBox=\"0 0 1024 1024\"><path d=\"M597.333333 512l170.666667-170.666667a60.672 60.672 0 0 0 0-85.333333 60.672 60.672 0 0 0-85.333333 0L512 426.666667 341.333333 256a60.672 60.672 0 0 0-85.333333 0 60.672 60.672 0 0 0 0 85.333333l170.666667 170.666667-170.666667 170.666667a60.672 60.672 0 0 0 0 85.333333 60.672 60.672 0 0 0 85.333333 0l170.666667-170.666667 170.666667 170.666667a60.672 60.672 0 0 0 85.333333 0 60.672 60.672 0 0 0 0-85.333333L597.333333 512z\" ></path></symbol><symbol id=\"aui-icon-close\" viewBox=\"0 0 1024 1024\"><path d=\"M597.333 512l341.334-341.333a60.672 60.672 0 0 0 0-85.334 60.672 60.672 0 0 0-85.334 0L512 426.667 170.667 85.333a60.672 60.672 0 0 0-85.334 0 60.672 60.672 0 0 0 0 85.334L426.667 512 85.333 853.333a60.672 60.672 0 0 0 0 85.334 60.672 60.672 0 0 0 85.334 0L512 597.333l341.333 341.334a60.672 60.672 0 0 0 85.334 0 60.672 60.672 0 0 0 0-85.334L597.333 512z\" ></path></symbol><symbol id=\"aui-icon-arrow\" viewBox=\"0 0 1024 1024\"><path d=\"M700.352 180.16l301.696 301.696a42.56 42.56 0 0 1 0 60.288l-301.696 301.696a42.688 42.688 0 1 1-60.352-60.288l228.8-228.928H52.16a42.688 42.688 0 0 1 0-85.312h816.64L640 240.448a42.688 42.688 0 0 1 60.352-60.288z\" ></path></symbol><symbol id=\"aui-icon-time\" viewBox=\"0 0 1024 1024\"><path d=\"M567.678 277.319v278.584a20.735 20.735 0 0 1-5.951 15.36 20.735 20.735 0 0 1-15.36 5.951h-192.25a20.735 20.735 0 0 1-15.36-6.016 20.735 20.735 0 0 1-5.952-15.36V523.2c0-6.208 1.984-11.328 6.016-15.36a20.735 20.735 0 0 1 15.36-5.952h145.915v-224.57c0-6.207 1.92-11.327 5.952-15.359a20.735 20.735 0 0 1 15.36-5.952h24.959c6.208 0 11.328 1.984 15.36 6.016a20.735 20.735 0 0 1 6.015 15.36z m318.327 451.443A422.26 422.26 0 0 0 943.988 512a422.26 422.26 0 0 0-57.983-216.762 430.644 430.644 0 0 0-157.243-157.243A422.26 422.26 0 0 0 512 80.012a422.26 422.26 0 0 0-216.762 57.983 430.644 430.644 0 0 0-157.243 157.243A422.26 422.26 0 0 0 80.012 512c0 78.334 19.328 150.588 57.983 216.762a430.644 430.644 0 0 0 157.243 157.243A422.26 422.26 0 0 0 512 943.988a422.26 422.26 0 0 0 216.762-57.983 430.644 430.644 0 0 0 157.243-157.243z m69.31-473.395A499.058 499.058 0 0 1 1023.985 512c0 92.861-22.911 178.555-68.67 257.017a509.681 509.681 0 0 1-186.298 186.298A500.85 500.85 0 0 1 512 1023.985a500.85 500.85 0 0 1-257.017-68.67A509.681 509.681 0 0 1 68.685 769.017 500.85 500.85 0 0 1 0.015 512c0-92.861 22.911-178.555 68.67-257.017A509.681 509.681 0 0 1 254.983 68.685 500.85 500.85 0 0 1 512 0.015c92.861 0 178.555 22.911 257.017 68.67a508.913 508.913 0 0 1 186.298 186.682z\" ></path></symbol><symbol id=\"aui-icon-calendar\" viewBox=\"0 0 1024 1024\"><path d=\"M332.8 25.6L332.736 128h358.4L691.2 25.6H768L767.936 128H947.2v870.4H76.8V128h179.136L256 25.6h76.8zM255.936 209.6H158.4v707.2h707.2V209.6h-97.664L768 256h-76.8l-0.064-46.4h-358.4L332.8 256H256l-0.064-46.4zM704 601.6v76.8H320V601.6h384z m0-192v76.8H320V409.6h384z\" ></path></symbol><symbol id=\"aui-icon-check_circle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 1024A512 512 0 1 1 512 0a512 512 0 0 1 0 1024zM248 536l192 192 336-336L704 320 440 584 320 464 248 536z\" ></path></symbol><symbol id=\"aui-icon-close_circle_small_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 1024A512 512 0 1 1 512 0a512 512 0 0 1 0 1024z m85.333333-512l170.666667-170.666667a60.672 60.672 0 0 0 0-85.333333 60.672 60.672 0 0 0-85.333333 0L512 426.666667 341.333333 256a60.672 60.672 0 0 0-85.333333 0 60.672 60.672 0 0 0 0 85.333333l170.666667 170.666667-170.666667 170.666667a60.672 60.672 0 0 0 0 85.333333 60.672 60.672 0 0 0 85.333333 0l170.666667-170.666667 170.666667 170.666667a60.672 60.672 0 0 0 85.333333 0 60.672 60.672 0 0 0 0-85.333333L597.333333 512z\" ></path></symbol><symbol id=\"aui-icon-angle_down\" viewBox=\"0 0 1024 1024\"><path d=\"M512 678.4a38.4 38.4 0 0 1-27.136-11.264l-256-256a38.272 38.272 0 0 1 0-54.272 38.272 38.272 0 0 1 54.272 0L512 585.664l228.864-228.8a38.272 38.272 0 0 1 54.272 0 38.272 38.272 0 0 1 0 54.272l-256 256A38.4 38.4 0 0 1 512 678.4\" ></path></symbol><symbol id=\"aui-icon-angle_double_left\" viewBox=\"0 0 1024 1024\"><path d=\"M568.64 749.44a19.776 19.776 0 0 1-5.696 13.12l-28.544 28.544a19.584 19.584 0 0 1-13.12 5.696 19.776 19.776 0 0 1-13.12-5.696L241.856 524.8a19.584 19.584 0 0 1-5.696-13.12c0-4.544 2.304-9.728 5.696-13.12L508.16 232.256a19.584 19.584 0 0 1 13.12-5.696c4.544 0 9.728 2.304 13.12 5.696l28.544 28.544a19.584 19.584 0 0 1 5.696 13.12 19.776 19.776 0 0 1-5.696 13.12L338.368 511.616l224.576 224.576a19.584 19.584 0 0 1 5.696 13.12v0.128z m219.456 0a19.776 19.776 0 0 1-5.696 13.12l-28.544 28.544a19.584 19.584 0 0 1-13.12 5.696 19.776 19.776 0 0 1-13.12-5.696L461.312 524.8a19.584 19.584 0 0 1-5.696-13.12c0-4.544 2.304-9.728 5.696-13.12l266.304-266.304a19.584 19.584 0 0 1 13.12-5.696c4.544 0 9.728 2.304 13.12 5.696l28.544 28.544a19.584 19.584 0 0 1 5.696 13.12 19.776 19.776 0 0 1-5.696 13.12L557.824 511.616l224.576 224.576a19.584 19.584 0 0 1 5.696 13.12v0.128z\" ></path></symbol><symbol id=\"aui-icon-angle_double_right\" viewBox=\"0 0 1024 1024\"><path d=\"M568.64 511.552a19.776 19.776 0 0 1-5.696 13.12l-266.304 266.304a19.584 19.584 0 0 1-13.12 5.696 19.776 19.776 0 0 1-13.12-5.696l-28.544-28.544a19.584 19.584 0 0 1-5.696-13.12c0-4.544 2.304-9.728 5.696-13.12l224.576-224.576-224.576-224.576a19.584 19.584 0 0 1-5.696-13.12c0-4.544 2.304-9.728 5.696-13.12l28.544-28.544a19.584 19.584 0 0 1 13.12-5.696c4.544 0 9.728 2.304 13.12 5.696L562.944 498.56a19.584 19.584 0 0 1 5.696 13.12v-0.128z m219.392 0a19.776 19.776 0 0 1-5.696 13.12l-266.304 266.304a19.584 19.584 0 0 1-13.12 5.696 19.776 19.776 0 0 1-13.12-5.696l-28.544-28.544a19.584 19.584 0 0 1-5.696-13.12c0-4.544 2.304-9.728 5.696-13.12l224.576-224.576-224.576-224.576a19.584 19.584 0 0 1-5.696-13.12c0-4.544 2.304-9.728 5.696-13.12l28.544-28.544a19.584 19.584 0 0 1 13.12-5.696c4.544 0 9.728 2.304 13.12 5.696l266.304 266.304a19.584 19.584 0 0 1 5.696 13.12v-0.128z\" ></path></symbol><symbol id=\"aui-icon-caret_down_s\" viewBox=\"0 0 1024 1024\"><path d=\"M269.248 384h485.504a32 32 0 0 1 22.592 54.656l-242.688 242.688a32 32 0 0 1-45.312 0L246.656 438.656A32 32 0 0 1 269.248 384z\" ></path></symbol><symbol id=\"aui-icon-angle_left\" viewBox=\"0 0 1024 1024\"><path d=\"M345.6 512a38.4 38.4 0 0 1 11.264-27.136l256-256a38.272 38.272 0 0 1 54.272 0 38.272 38.272 0 0 1 0 54.272L438.336 512l228.8 228.864a38.272 38.272 0 0 1 0 54.272 38.272 38.272 0 0 1-54.272 0l-256-256A38.4 38.4 0 0 1 345.6 512\" ></path></symbol><symbol id=\"aui-icon-check_triangle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M1024 1024H0L1024 0v1024z m-544-288L640 896l256-256-64-64-192 192-96-96-64 64z\" ></path></symbol><symbol id=\"aui-icon-check\" viewBox=\"0 0 1024 1024\"><path d=\"M974.656 224.96c11.552 12.064 17.344 26.72 17.344 43.968s-5.792 31.904-17.344 43.968L442.016 868.864c-11.552 12.064-25.6 18.112-42.112 18.112s-30.56-6.048-42.112-18.112L49.344 546.912C37.792 534.848 32 520.192 32 502.944s5.792-31.904 17.344-43.968l84.224-87.904c11.552-12.064 25.6-18.112 42.112-18.112s30.56 6.048 42.112 18.112l182.08 190.72L806.176 137.056c11.552-12.064 25.6-18.112 42.112-18.112s30.56 6.048 42.112 18.112l84.224 87.904z\" ></path></symbol><symbol id=\"aui-icon-ellipsis_h_s\" viewBox=\"0 0 1024 1024\"><path d=\"M192 416a96 96 0 1 1 0 192 96 96 0 0 1 0-192z m320 0a96 96 0 1 1 0 192 96 96 0 0 1 0-192z m320 0a96 96 0 1 1 0 192 96 96 0 0 1 0-192z\" ></path></symbol><symbol id=\"aui-icon-exclamation_circle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 0c282.688 0 512 229.312 512 512s-229.312 512-512 512-512-229.312-512-512 229.312-512 512-512z m85.312 831.36v-126.72c0-11.968-9.344-21.952-20.672-21.952h-128a22.208 22.208 0 0 0-21.952 21.952v126.72c0 11.968 9.984 21.952 21.952 21.952h128c11.392 0 20.672-9.984 20.672-21.952z m-1.28-229.376L608 187.968a13.376 13.376 0 0 0-6.656-11.968 25.664 25.664 0 0 0-16-5.312H438.656a25.664 25.664 0 0 0-16 5.312 13.376 13.376 0 0 0-6.656 12.032l11.328 413.952c0 9.344 9.984 16.64 22.656 16.64h123.328c12.032 0 22.016-7.296 22.656-16.64z\" ></path></symbol><symbol id=\"aui-icon-check_s\" viewBox=\"0 0 1024 1024\"><path d=\"M169.024 534.976L247.04 456.96a12.8 12.8 0 0 1 18.048 0L416 608l342.976-342.976a12.8 12.8 0 0 1 18.048 0L855.04 343.04a12.8 12.8 0 0 1 0 18.048L424.96 791.04a12.8 12.8 0 0 1-18.048 0L168.96 552.96a12.8 12.8 0 0 1 0-18.048z\" ></path></symbol><symbol id=\"aui-icon-compress_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 549.952v265.856c0 10.24-3.776 19.2-11.264 26.688a36.48 36.48 0 0 1-26.688 11.264 36.48 36.48 0 0 1-26.752-11.264L361.856 757.12l-196.992 196.992a18.752 18.752 0 0 1-27.264 0L69.952 886.4a18.752 18.752 0 0 1 0-27.264l196.992-196.992L181.504 576.64a36.48 36.48 0 0 1-11.264-26.752c0-10.24 3.712-19.2 11.264-26.688A36.48 36.48 0 0 1 208.192 512h265.856c10.24 0 19.2 3.776 26.688 11.264A36.48 36.48 0 0 1 512 549.952z m442.048-412.352a18.752 18.752 0 0 1 0 27.264L757.12 361.856l85.44 85.44a36.48 36.48 0 0 1 11.264 26.752c0 10.24-3.712 19.2-11.264 26.688a36.48 36.48 0 0 1-26.688 11.264H549.952a36.48 36.48 0 0 1-26.688-11.264A36.48 36.48 0 0 1 512 474.048V208.192c0-10.24 3.776-19.2 11.264-26.688a36.48 36.48 0 0 1 26.688-11.264c10.304 0 19.2 3.712 26.752 11.264l85.44 85.44 196.992-196.992a18.752 18.752 0 0 1 27.264 0l67.648 67.648z\" ></path></symbol><symbol id=\"aui-icon-angle_right\" viewBox=\"0 0 1024 1024\"><path d=\"M678.4 512a38.4 38.4 0 0 1-11.264 27.136l-256 256a38.272 38.272 0 0 1-54.272 0 38.272 38.272 0 0 1 0-54.272L585.664 512 356.864 283.136a38.272 38.272 0 0 1 0-54.272 38.272 38.272 0 0 1 54.272 0l256 256A38.4 38.4 0 0 1 678.4 512\" ></path></symbol><symbol id=\"aui-icon-export\" viewBox=\"0 0 1024 1024\"><path d=\"M729.6 624H448v-96h281.6V452.352a32 32 0 0 1 52.48-24.64l148.48 123.712a32 32 0 0 1 0 49.152l-148.48 123.712a32 32 0 0 1-52.48-24.64V624zM832 384h-64V128H128v768h640v-128h64v128a64 64 0 0 1-64 64H128a64 64 0 0 1-64-64V128a64 64 0 0 1 64-64h640a64 64 0 0 1 64 64v256z\" ></path></symbol><symbol id=\"aui-icon-import\" viewBox=\"0 0 1024 1024\"><path d=\"M678.4 528H960v96h-281.6v75.648a32 32 0 0 1-52.48 24.64L477.44 600.576a32 32 0 0 1 0-49.152l148.48-123.712a32 32 0 0 1 52.48 24.64V528zM832 384h-64V128H128v768h640v-128h64v128a64 64 0 0 1-64 64H128a64 64 0 0 1-64-64V128a64 64 0 0 1 64-64h640a64 64 0 0 1 64 64v256z\" ></path></symbol><symbol id=\"aui-icon-exclamation_triangle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M585.152 849.792V741.12a18.56 18.56 0 0 0-18.304-18.88H457.152a18.56 18.56 0 0 0-18.304 18.88v108.608c0 10.24 8 18.88 18.304 18.88h109.696a18.56 18.56 0 0 0 18.304-18.88z m-1.152-213.76l10.24-262.272a13.824 13.824 0 0 0-5.632-10.88c-3.456-2.816-8.576-6.272-13.76-6.272H449.152c-5.12 0-10.24 3.456-13.696 6.272-3.968 2.88-5.76 8.576-5.76 12.032l9.792 261.12c0 7.488 8.576 13.184 19.392 13.184h105.728c10.304 0 18.88-5.76 19.456-13.12zM576 102.336l438.912 804.672a73.088 73.088 0 0 1-64 108.032H73.088c-25.664 0-49.664-13.76-62.848-36.032a72 72 0 0 1-1.152-72L448 102.272a72.704 72.704 0 0 1 128 0z\" ></path></symbol><symbol id=\"aui-icon-expand_s\" viewBox=\"0 0 1024 1024\"><path d=\"M498.56 591.936a18.432 18.432 0 0 1 0 26.816l-193.664 193.664 84.032 84.032a35.84 35.84 0 0 1 11.072 26.24 35.84 35.84 0 0 1-11.072 26.24 35.84 35.84 0 0 1-26.24 11.072H101.312a35.84 35.84 0 0 1-26.24-11.072 35.84 35.84 0 0 1-11.072-26.24v-261.376a35.84 35.84 0 0 1 11.072-26.24 35.84 35.84 0 0 1 26.24-11.072 35.84 35.84 0 0 1 26.24 11.072l84.032 84.032L405.248 525.44a18.432 18.432 0 0 1 26.88 0L498.56 591.936zM960 101.312v261.376a35.84 35.84 0 0 1-11.072 26.24 35.84 35.84 0 0 1-26.24 11.072 35.84 35.84 0 0 1-26.24-11.072l-84.032-84.032L618.752 498.56a18.432 18.432 0 0 1-26.88 0L525.44 432.064a18.432 18.432 0 0 1 0-26.816l193.664-193.664-84.032-84.032a35.84 35.84 0 0 1-11.072-26.24 35.84 35.84 0 0 1 11.072-26.24 35.84 35.84 0 0 1 26.24-11.072h261.376a35.84 35.84 0 0 1 26.24 11.072 35.84 35.84 0 0 1 11.072 26.24z\" ></path></symbol><symbol id=\"aui-icon-minus_s\" viewBox=\"0 0 1024 1024\"><path d=\"M256 448h512a64 64 0 0 1 0 128H256a64 64 0 0 1 0-128\" ></path></symbol><symbol id=\"aui-icon-minus\" viewBox=\"0 0 1024 1024\"><path d=\"M904 448H120C86.4 448 64 470.4 64 504s22.4 56 56 56h784c33.6 0 56-22.4 56-56S937.6 448 904 448z\" ></path></symbol><symbol id=\"aui-icon-info_circle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 0a512 512 0 1 1 0 1024A512 512 0 0 1 512 0zM448 304v32c0 26.368 21.632 48 48 48h32c26.368 0 48-21.632 48-48v-32A48.192 48.192 0 0 0 528 256h-32a48.192 48.192 0 0 0-48 48zM640 768v-64H576V448H384v64h64v192H384v64h256z\" ></path></symbol><symbol id=\"aui-icon-navigation_expand\" viewBox=\"0 0 1024 1024\"><path d=\"M512 192l256 320-256 320H448V192h64zM256 192h64v640H256V192z\" ></path></symbol><symbol id=\"aui-icon-copy\" viewBox=\"0 0 1024 1024\"><path d=\"M742.848 865.728v40.768c0 29.44-25.088 53.504-55.936 53.504h-503.04C153.152 960 128 936 128 906.496V226.816c0-29.568 25.088-53.568 55.936-53.568h124.096v-40.96c0-37.76 29.824-68.288 66.624-68.288h271.36C784.192 64 896 178.56 896 320v477.44c0 37.76-29.824 68.288-66.624 68.288h-86.528z m0-51.2h86.528c9.152 0 16.64-7.616 16.64-17.024V319.936c0-113.088-89.536-204.8-199.936-204.8h-271.36c-9.28 0-16.704 7.68-16.704 17.088v41.024h192.768c128 127.744 192.064 192.768 192.064 195.008v446.272z m-52.608 95.104V388.864h-197.12V223.68H180.672v685.952h509.568zM533.44 347.52h126.912L533.504 223.488V347.52z\" ></path></symbol><symbol id=\"aui-icon-plus\" viewBox=\"0 0 1024 1024\"><path d=\"M904 456h-336v-336C568 86.4 545.6 64 512 64s-56 22.4-56 56v336h-336C86.4 456 64 478.4 64 512s22.4 56 56 56h336v336c0 33.6 22.4 56 56 56s56-22.4 56-56v-336h336c33.6 0 56-22.4 56-56s-22.4-56-56-56z\" ></path></symbol><symbol id=\"aui-icon-back_top\" viewBox=\"0 0 1024 1024\"><path d=\"M545.07353 181.552571a42.2855 42.2855 0 0 0-34.480914-12.346599l-0.511776 0.063972a37.551571 37.551571 0 0 0-1.471357 0.191916c-0.383832 0-0.703692 0.127944-1.023552 0.191916l-1.023552 0.127944a42.413444 42.413444 0 0 0-1.27944 0.319861l-0.63972 0.127944a37.103767 37.103767 0 0 0-1.471357 0.447804l-0.511776 0.127944a39.150871 39.150871 0 0 0-1.535328 0.511776l-0.447804 0.127944a43.820828 43.820828 0 0 0-1.535328 0.63972l-0.383833 0.063972a36.400075 36.400075 0 0 0-1.5993 0.703692l-0.255888 0.127944a44.460549 44.460549 0 0 0-1.663272 0.831636l-0.191916 0.127944a44.652465 44.652465 0 0 0-10.939214 8.316362L117.804461 551.502718a43.24508 43.24508 0 0 0 0 60.773411c16.632723 16.760667 43.692884 16.760667 60.325607 0l294.271256-296.510277v665.180984a42.861248 42.861248 0 0 0 42.541389 43.053164h-0.191916a42.733304 42.733304 0 0 0 42.477416-43.053164v-665.308928l294.463172 296.446305c16.632723 16.760667 43.692884 16.632723 60.325608-0.255888a42.989192 42.989192 0 0 0 0.063972-60.517523l-367.007435-369.758231zM991.790092 43.181108a42.60536 42.60536 0 0 0-42.477416-42.733304H74.687324C51.209596 0.447804 32.209908 19.575436 32.209908 43.181108c0 23.669645 18.999688 42.861248 42.477416 42.861248h874.625352c23.477728 0 42.477416-19.191604 42.477416-42.861248z\" ></path></symbol><symbol id=\"aui-icon-moon\" viewBox=\"0 0 1024 1024\"><path d=\"M831.68 749.568c-21.952 3.456-44.224 5.248-66.944 5.248a414.592 414.592 0 0 1-204.992-52.48 396.16 396.16 0 0 1-148.992-142.848 372.224 372.224 0 0 1-54.784-196.48c0-74.56 21.12-144 63.296-208.064a381.44 381.44 0 0 0-199.872 133.504 352.256 352.256 0 0 0-77.504 223.872c0 50.496 10.304 98.752 30.976 144.832 20.672 46.08 48.384 85.696 83.072 118.912 34.624 33.28 76.032 59.776 124.096 79.616 48 19.84 98.432 29.696 151.104 29.696 58.432 0 113.92-11.968 166.4-35.84a386.24 386.24 0 0 0 134.144-99.968z m123.456-49.536c-38.144 78.848-95.616 141.888-172.48 189.12A471.424 471.424 0 0 1 531.2 960a471.552 471.552 0 0 1-181.248-35.584 473.088 473.088 0 0 1-149.056-95.552 451.008 451.008 0 0 1-99.712-142.848A420.032 420.032 0 0 1 64 512.32c0-59.52 11.648-116.352 35.008-170.56a442.112 442.112 0 0 1 94.848-140.8 465.856 465.856 0 0 1 143.232-95.872 481.472 481.472 0 0 1 176.448-39.936c17.856-0.768 30.208 6.784 37.12 22.72 7.296 16 4.224 29.952-9.152 41.984a310.912 310.912 0 0 0-80 105.792 301.952 301.952 0 0 0-27.648 127.36c0 57.6 14.784 110.592 44.416 159.168 29.568 48.64 69.76 87.04 120.384 115.456a334.272 334.272 0 0 0 166.08 42.56c47.872 0 94.08-9.92 138.688-29.76 16.64-6.976 31.232-4.48 43.776 7.616a35.648 35.648 0 0 1 10.688 19.84 36.032 36.032 0 0 1-2.752 22.144z\" ></path></symbol><symbol id=\"aui-icon-navigation_collapse\" viewBox=\"0 0 1024 1024\"><path d=\"M512 832L256 512l256-320h64v640H512z m192-640h64v640h-64V192z\" ></path></symbol><symbol id=\"aui-icon-sun\" viewBox=\"0 0 1024 1024\"><path d=\"M787.392 623.808c16-35.712 24.064-73.024 24.064-112 0-39.04-7.936-76.352-23.808-111.872a288.96 288.96 0 0 0-64.32-92.032A303.68 303.68 0 0 0 627.2 246.336a305.792 305.792 0 0 0-116.8-22.72c-40.768 0-79.744 7.552-116.864 22.72-37.12 15.168-69.12 35.712-96.192 61.568a288.96 288.96 0 0 0-64.256 92.032 271.296 271.296 0 0 0-23.808 111.808c0 39.04 7.936 76.288 23.808 111.808a288.96 288.96 0 0 0 64.256 92.032c27.008 25.856 59.072 46.4 96.192 61.568 37.12 15.168 76.096 22.784 116.864 22.784s79.68-7.616 116.8-22.784a303.68 303.68 0 0 0 96.192-61.568 286.272 286.272 0 0 0 64-91.776z m168.32 26.496c-1.408 5.056-4.864 8.32-10.432 10.048l-152.704 48v153.088a15.424 15.424 0 0 1-6.784 12.992c-5.184 3.328-10.24 4.032-15.168 2.048l-152.64-47.04-94.08 124.032a16.64 16.64 0 0 1-13.568 6.528 16.64 16.64 0 0 1-13.632-6.528l-94.08-124.032-152.64 47.04c-4.864 1.92-9.92 1.28-15.168-2.048a15.424 15.424 0 0 1-6.784-12.992v-153.088l-152.64-48c-5.568-1.664-9.088-4.992-10.432-10.048-1.792-5.632-1.088-10.496 2.048-14.464l94.08-124.096-94.08-124.032a15.36 15.36 0 0 1-2.048-14.528c1.344-4.992 4.864-8.32 10.432-10.048l152.64-48V162.048c0-5.312 2.24-9.664 6.784-12.992 5.248-3.328 10.24-4.032 15.168-1.984l152.64 46.976 94.08-124.032A16.256 16.256 0 0 1 510.336 64c5.888 0 10.432 1.984 13.568 6.016l94.08 124.032 152.64-46.976c4.928-2.048 9.984-1.344 15.168 1.92 4.544 3.392 6.784 7.68 6.784 13.056v153.088l152.704 48c5.568 1.728 9.024 5.056 10.432 10.048a15.36 15.36 0 0 1-2.112 14.528l-94.08 124.032 94.08 124.096c3.2 3.968 3.84 8.832 2.112 14.464z\" ></path></symbol><symbol id=\"aui-icon-search_s\" viewBox=\"0 0 1024 1024\"><path d=\"M613.248 613.76c47.36-47.36 71.04-104.32 71.04-170.688 0-66.432-23.552-123.2-70.784-170.432-47.232-47.168-104-70.784-170.432-70.784-66.432 0-123.2 23.616-170.432 70.784-47.168 47.232-70.784 104-70.784 170.432 0 66.432 23.616 123.2 70.784 170.432 47.232 47.232 104 70.784 170.432 70.784A231.872 231.872 0 0 0 613.248 613.76zM960 891.072c0 18.688-6.848 34.816-20.48 48.448-13.632 13.632-29.76 20.48-48.448 20.48a64 64 0 0 1-48.448-20.48l-184.704-184.128a368.704 368.704 0 0 1-214.848 66.752 372.48 372.48 0 0 1-147.264-29.888 379.008 379.008 0 0 1-121.152-80.768 379.008 379.008 0 0 1-80.768-121.152A372.48 372.48 0 0 1 64 443.136c0-51.392 9.984-100.48 29.888-147.328a379.008 379.008 0 0 1 80.768-121.152c33.92-33.92 74.304-60.8 121.152-80.768A372.48 372.48 0 0 1 443.072 64c51.328 0 100.48 9.984 147.264 29.888a379.008 379.008 0 0 1 121.152 80.768c33.92 33.92 60.8 74.304 80.768 121.152a372.48 372.48 0 0 1 29.888 147.264 368.704 368.704 0 0 1-66.752 214.848l184.704 184.704c13.248 13.248 19.904 29.44 19.904 48.448z\" ></path></symbol><symbol id=\"aui-icon-history_s\" viewBox=\"0 0 1024 1024\"><path d=\"M924.416 338.176A435.84 435.84 0 0 1 960 512a435.84 435.84 0 0 1-35.584 173.824 451.968 451.968 0 0 1-95.68 142.912 451.968 451.968 0 0 1-142.912 95.68A435.84 435.84 0 0 1 512 960a444.8 444.8 0 0 1-190.72-42.24 437.952 437.952 0 0 1-154.048-119.36 20.8 20.8 0 0 1-3.776-13.12 17.28 17.28 0 0 1 4.992-11.968l79.872-80.448a20.992 20.992 0 0 1 14.592-5.312c6.208 0.832 10.688 3.2 13.44 7.04a292.8 292.8 0 0 0 104.384 85.76A294.144 294.144 0 0 0 512 810.688c40.448 0 79.04-7.872 115.84-23.68a300.928 300.928 0 0 0 95.36-63.872c26.816-26.816 48.064-58.624 63.872-95.36 15.744-36.736 23.616-75.328 23.616-115.776 0-40.448-7.872-79.04-23.68-115.84A300.928 300.928 0 0 0 723.2 300.8a300.928 300.928 0 0 0-95.36-63.872A290.944 290.944 0 0 0 512 213.312c-38.08 0-74.688 6.912-109.696 20.736a289.792 289.792 0 0 0-93.312 59.2L388.928 373.76c12.032 11.648 14.72 25.088 8.128 40.256-6.592 15.552-18.048 23.296-34.368 23.296H101.312a35.84 35.84 0 0 1-26.24-11.072A35.84 35.84 0 0 1 64 400V138.688c0-16.384 7.808-27.84 23.36-34.432 15.168-6.592 28.544-3.84 40.192 8.192l75.84 75.2a452.8 452.8 0 0 1 142.656-91.264A439.424 439.424 0 0 1 512 64a435.84 435.84 0 0 1 173.824 35.584c55.232 23.68 102.848 55.616 142.912 95.68a451.968 451.968 0 0 1 95.68 142.912z m-337.728 5.824v261.312a18.176 18.176 0 0 1-5.248 13.44 18.176 18.176 0 0 1-13.44 5.248H381.312a18.176 18.176 0 0 1-13.44-5.248 18.176 18.176 0 0 1-5.184-13.44v-37.312c0-5.44 1.728-9.92 5.248-13.44a18.176 18.176 0 0 1 13.44-5.248H512V344c0-5.44 1.728-9.92 5.248-13.44a18.176 18.176 0 0 1 13.44-5.248h37.312c5.44 0 9.92 1.792 13.44 5.248a18.176 18.176 0 0 1 5.248 13.44z\" ></path></symbol><symbol id=\"aui-icon-check_circle\" viewBox=\"0 0 24 24\"><path d=\"M12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 C5.372583,24 0,18.627417 0,12 C0,5.372583 5.372583,0 12,0 Z M12,1 C5.92486775,1 1,5.92486775 1,12 C1,18.0751322 5.92486775,23 12,23 C18.0751322,23 23,18.0751322 23,12 C23,5.92486775 18.0751322,1 12,1 Z M16.5,8 L18,9.588 L11,17 L7,12.765 L8.5,11.176 L11,13.824 L16.5,8 Z\"/></symbol><symbol id=\"aui-icon-sync_circle\" viewBox=\"0 0 24 24\"><path d=\"M11.5,-0.5 C18.127417,-0.5 23.5,4.872583 23.5,11.5 C23.5,18.127417 18.127417,23.5 11.5,23.5 C4.872583,23.5 -0.5,18.127417 -0.5,11.5 C-0.5,4.872583 4.872583,-0.5 11.5,-0.5 Z M11.5,0.5 C5.42486775,0.5 0.5,5.42486775 0.5,11.5 C0.5,17.5751322 5.42486775,22.5 11.5,22.5 C17.5751322,22.5 22.5,17.5751322 22.5,11.5 C22.5,5.42486775 17.5751322,0.5 11.5,0.5 Z M18.0455081,12.4032823 C18.2571452,12.4032823 18.4179194,12.5954153 18.3787702,12.8034113 C17.7680202,16.0465 14.9206008,18.5 11.5,18.5 C9.62445161,18.5 7.92122177,17.7622903 6.66449597,16.5613105 L5.65641129,17.5693952 C5.22966532,17.9961411 4.5,17.6938992 4.5,17.090375 L4.5,13.3064516 C4.5,12.9323185 4.80328629,12.6290323 5.17741935,12.6290323 L8.96134274,12.6290323 C9.56486694,12.6290323 9.86710887,13.3586976 9.4403629,13.7854718 L8.26193548,14.9638992 C9.14433065,15.7901532 10.2895363,16.2430645 11.5044032,16.2419637 C13.6895887,16.2399879 15.5778105,14.7419315 16.0991976,12.6615484 C16.1371331,12.5101734 16.271996,12.4032823 16.4280565,12.4032823 L18.0455081,12.4032823 Z M11.5,4.5 C13.3755484,4.5 15.0787782,5.23770968 16.335504,6.43868952 L17.3435887,5.43060484 C17.7703347,5.00385887 18.5,5.30610081 18.5,5.909625 L18.5,9.69354839 C18.5,10.0676814 18.1967137,10.3709677 17.8225806,10.3709677 L14.0386573,10.3709677 C13.4351331,10.3709677 13.1328911,9.64130242 13.5596371,9.21452823 L14.7380645,8.03612903 C13.8556694,7.20990323 12.7105484,6.75699194 11.4957097,6.75806452 C9.30939516,6.75998387 7.42193548,8.25905645 6.90080242,10.3385081 C6.86286694,10.4898831 6.72800403,10.5967742 6.57194355,10.5967742 L4.95452016,10.5967742 C4.74288306,10.5967742 4.58210887,10.4046411 4.62125806,10.1966452 C5.23197984,6.9535 8.07939919,4.5 11.5,4.5 Z\" transform=\"translate(.5 .5)\"></path></symbol><symbol id=\"aui-icon-close_circle\" viewBox=\"0 0 24 24\"><path d=\"M12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 C5.372583,24 0,18.627417 0,12 C0,5.372583 5.372583,0 12,0 Z M12,1 C5.92486775,1 1,5.92486775 1,12 C1,18.0751322 5.92486775,23 12,23 C18.0751322,23 23,18.0751322 23,12 C23,5.92486775 18.0751322,1 12,1 Z M15.2301716,6.7 C15.4530454,6.7 15.6759193,6.78894965 15.8368282,6.94985857 L17.0501414,8.16317179 C17.2110503,8.32408071 17.3,8.54695455 17.3,8.7698284 C17.3,8.99270224 17.2110503,9.21557609 17.0501414,9.37648501 L14.4266264,12 L17.0501414,14.623515 C17.2110503,14.7844239 17.3,15.0072978 17.3,15.2301716 C17.3,15.4530454 17.2110503,15.6759193 17.0501414,15.8368282 L15.8368282,17.0501414 C15.6759193,17.2110503 15.4530454,17.3 15.2301716,17.3 C15.0072978,17.3 14.7844239,17.2110503 14.623515,17.0501414 L12,14.4266264 L9.37648501,17.0501414 C9.21557609,17.2110503 8.99270224,17.3 8.7698284,17.3 C8.54695455,17.3 8.32408071,17.2110503 8.16317179,17.0501414 L6.94985857,15.8368282 C6.78894965,15.6759193 6.7,15.4530454 6.7,15.2301716 C6.7,15.0072978 6.78894965,14.7844239 6.94985857,14.623515 L9.57337356,12 L6.94985857,9.37648501 C6.78894965,9.21557609 6.7,8.99270224 6.7,8.7698284 C6.7,8.54695455 6.78894965,8.32408071 6.94985857,8.16317179 L8.16317179,6.94985857 C8.32408071,6.78894965 8.54695455,6.7 8.7698284,6.7 C8.99270224,6.7 9.21557609,6.78894965 9.37648501,6.94985857 L12,9.57337356 L14.623515,6.94985857 C14.7844239,6.78894965 15.0072978,6.7 15.2301716,6.7 Z\"></path></symbol><symbol id=\"aui-icon-sync_circle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 1024A512 512 0 1 1 512 0a512 512 0 0 1 0 1024z m148.032-670.336l-53.888 53.888a30.976 30.976 0 0 0 21.888 52.864h172.992A30.976 30.976 0 0 0 832 429.44V256.448a30.976 30.976 0 0 0-52.864-21.888l-46.08 46.08a320.064 320.064 0 0 0-535.488 171.776 15.488 15.488 0 0 0 15.232 18.304H286.72a15.552 15.552 0 0 0 15.04-11.84 217.024 217.024 0 0 1 210.048-163.648c55.552 0 107.904 20.672 148.224 58.432z m-437.12 209.92A30.976 30.976 0 0 0 192 594.56v172.992c0 27.584 33.344 41.408 52.864 21.888l46.08-46.08a320.128 320.128 0 0 0 535.488-171.776 15.488 15.488 0 0 0-15.232-18.304H737.28a15.552 15.552 0 0 0-15.04 11.84 217.024 217.024 0 0 1-210.048 163.648 215.232 215.232 0 0 1-148.224-58.432l53.888-53.888a30.976 30.976 0 0 0-21.888-52.864H222.976z\" ></path></symbol><symbol id=\"aui-icon-close_circle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 0C229.12 0 0 229.12 0 512s229.12 512 512 512 512-229.12 512-512-229.12-512-512-512z m251.072 646.4a24.768 24.768 0 0 1 0 35.072l-81.792 81.6a24.768 24.768 0 0 1-35.072 0L512 627.584l-134.4 135.488a24.768 24.768 0 0 1-35.072 0l-81.6-81.792a24.768 24.768 0 0 1 0-35.072L396.416 512 260.928 377.6a24.768 24.768 0 0 1 0-35.072l81.792-81.792a24.768 24.768 0 0 1 35.072 0L512 396.416l134.4-135.488a24.768 24.768 0 0 1 35.072 0l81.792 81.792a24.768 24.768 0 0 1 0 35.072L627.584 512l135.488 134.4z\" ></path></symbol></svg>';\n","export function getAuiIconNoHttpProviderError(): Error {\n return new Error(\n 'Could not find HttpClient provider for use with Alauda UI icons. Please include the HttpClientModule from @angular/common/http in your app imports.',\n );\n}\n\nexport function getAuiIconFailedToLoadCustomIconFile(url: string) {\n return new Error(`AuiIcon failed to load custom icon file: ${url}.`);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable, Optional, SkipSelf } from '@angular/core';\n\nimport { auiIcons } from './icons';\nimport {\n getAuiIconFailedToLoadCustomIconFile,\n getAuiIconNoHttpProviderError,\n} from './utils';\n\n@Injectable()\nexport class IconRegisterService {\n private defaultIconPrefix = 'aui-icon';\n private readonly doc: Document;\n\n constructor(\n @Optional()\n @Inject(DOCUMENT)\n document: any,\n @Optional() private readonly httpClient: HttpClient,\n ) {\n this.doc = document;\n this.registerSvgSymbolsByString(auiIcons);\n }\n\n getDefaultIconPrefix(): string {\n return this.defaultIconPrefix;\n }\n\n replaceDefaultIconPrefix(prefix: string): void {\n this.defaultIconPrefix = prefix;\n }\n\n registerSvgSymbolsByUrl(url: string) {\n if (!this.httpClient) {\n throw getAuiIconNoHttpProviderError();\n }\n this.httpClient\n .get(url, {\n responseType: 'text',\n })\n .subscribe(\n res => {\n this.registerSvgSymbolsByString(res);\n },\n () => {\n throw getAuiIconFailedToLoadCustomIconFile(url);\n },\n );\n }\n\n registerSvgSymbolsByString(str: string) {\n this.appendSvg(str);\n }\n\n private appendSvg(svgString: string) {\n const setEl = this.doc.createElement('div');\n setEl.className = 'aui-icon-set';\n setEl.style.display = 'none';\n setEl.innerHTML = svgString;\n this.doc.body.append(setEl);\n }\n}\n\nexport function ICON_REGISTER_PROVIDER_FACTORY(\n parentRegister: IconRegisterService,\n document: Document,\n httpClient: HttpClient,\n) {\n return parentRegister || new IconRegisterService(document, httpClient);\n}\n\nexport const ICON_REGISTER_SERVICE_PROVIDER = {\n provide: IconRegisterService,\n deps: [\n [new Optional(), new SkipSelf(), IconRegisterService],\n [new Optional(), DOCUMENT],\n [new Optional(), HttpClient],\n ],\n useFactory: ICON_REGISTER_PROVIDER_FACTORY,\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem, handlePixel } from '../utils';\n\nimport { IconRegisterService } from './icon-register.service';\n\nlet id = 0;\n\n@Component({\n selector: 'aui-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class IconComponent {\n @Input()\n icon: string;\n\n @Input()\n light: string;\n\n @Input()\n dark: string;\n\n @Input()\n link = '';\n\n @Input()\n margin: 'left' | 'right';\n\n @Input()\n size: string;\n\n @Input()\n color: string;\n\n @Input()\n background: 'circle' | 'triangle';\n\n @Input()\n backgroundColor: string;\n\n bem: Bem = buildBem('aui-icon');\n\n id = id++;\n\n constructor(private readonly iconRegisterService: IconRegisterService) {}\n\n private parseIcon(icon: string): [string, string] {\n const defaultPrefix = this.iconRegisterService.getDefaultIconPrefix();\n const arr = (icon || '').split(':');\n return arr.length < 2 ? [defaultPrefix, arr[0]] : [arr[0], arr[1]];\n }\n\n getWidth() {\n if (!this.size) {\n return false;\n }\n return handlePixel((this.size || '').split(',')[0]);\n }\n\n getHeight() {\n if (!this.size) {\n return false;\n }\n const arr = (this.size || '').split(',');\n return handlePixel(arr[1] || arr[0]);\n }\n\n getIconId(icon: string) {\n const [prefix, name] = this.parseIcon(icon);\n return `${prefix}-${name}`;\n }\n\n getClass(id: string) {\n return `${this.bem.block(this.margin)} ${id}`;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ThemeModule } from '../theme/public-api';\n\nimport { ICON_REGISTER_SERVICE_PROVIDER } from './icon-register.service';\nimport { IconComponent } from './icon.component';\n\n@NgModule({\n imports: [CommonModule, ThemeModule],\n declarations: [IconComponent],\n exports: [IconComponent],\n providers: [ICON_REGISTER_SERVICE_PROVIDER],\n})\nexport class IconModule {}\n","import { CdkCellDef } from '@angular/cdk/table';\nimport { Directive } from '@angular/core';\n\n/**\n * Cell definition for the aui-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n selector: '[auiTableCellDef]',\n providers: [\n {\n provide: CdkCellDef,\n useExisting: TableCellDefDirective,\n },\n ],\n})\nexport class TableCellDefDirective extends CdkCellDef {}\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport { CdkCell } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-table-cell[auiExpandButton]',\n template: `\n <button\n type=\"button\"\n class=\"aui-expand-button\"\n [class.isExpanded]=\"expand\"\n [disabled]=\"disabled\"\n (click)=\"expandChange.next()\"\n >\n <aui-icon icon=\"angle_right\"></aui-icon>\n </button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class TableExpandButtonCellComponent extends CdkCell {\n @Input()\n expand = false;\n\n @Input()\n disabled = false;\n\n @Output()\n expandChange = new EventEmitter();\n\n get expanded() {\n return this.expand ? 'expanded' : null;\n }\n}\n@Component({\n selector: 'aui-table-cell[auiExpandPanel]',\n template: `\n <div\n *ngIf=\"expand\"\n class=\"aui-table__cell-expand-panel\"\n [@expand]=\"expanded\"\n >\n <div\n class=\"aui-table__cell-expand-panel-content\"\n [class.hasBackground]=\"background\"\n >\n <ng-content></ng-content>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n animations: [\n trigger('expand', [\n state('*', style({ height: 0 })),\n state('expanded', style({ height: '*', 'margin-bottom': '15px' })),\n transition('* <=> expanded', [animate('0.1s ease-in-out')]),\n ]),\n ],\n})\nexport class TableExpandPanelCellComponent extends CdkCell {\n @Input()\n expand = false;\n\n @Input()\n background = true;\n\n get expanded() {\n return this.expand ? 'expanded' : null;\n }\n}\n","import { CdkCell, CdkColumnDef } from '@angular/cdk/table';\nimport { Directive, ElementRef } from '@angular/core';\n\nimport { buildBem } from '../utils';\n\nconst bem = buildBem('aui-table');\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: 'aui-table-cell',\n host: {\n class: 'aui-table__cell',\n role: 'gridcell',\n },\n})\nexport class TableCellDirective extends CdkCell {\n constructor(columnDef: CdkColumnDef, elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(\n bem.element(`column-${columnDef.cssClassFriendlyName}`),\n );\n }\n}\n","import { CdkColumnDef } from '@angular/cdk/table';\nimport { Directive, Input } from '@angular/core';\n\n/**\n * Column definition for the aui-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n selector: '[auiTableColumnDef]',\n providers: [\n {\n provide: CdkColumnDef,\n useExisting: TableColumnDefDirective,\n },\n ],\n inputs: ['sticky'],\n})\nexport class TableColumnDefDirective extends CdkColumnDef {\n // Unique name for this column\n // Why it does not work in `inputs` property?\n @Input()\n set auiTableColumnDef(value: string) {\n this.name = value;\n }\n}\n","import { CdkHeaderCellDef } from '@angular/cdk/table';\nimport { Directive } from '@angular/core';\n\n/**\n * Header cell definition for the aui-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[auiTableHeaderCellDef]',\n providers: [\n {\n provide: CdkHeaderCellDef,\n useExisting: TableHeaderCellDefDirective,\n },\n ],\n})\nexport class TableHeaderCellDefDirective extends CdkHeaderCellDef {}\n","import { CdkColumnDef, CdkHeaderCell } from '@angular/cdk/table';\nimport { Directive, ElementRef } from '@angular/core';\n\nimport { buildBem } from '../utils';\n\nconst bem = buildBem('aui-table');\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: 'aui-table-header-cell',\n host: {\n class: 'aui-table__header-cell',\n role: 'columnheader',\n },\n})\nexport class TableHeaderCellDirective extends CdkHeaderCell {\n constructor(columnDef: CdkColumnDef, elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(\n bem.element(`column-${columnDef.cssClassFriendlyName}`),\n );\n }\n}\n","import { CdkHeaderRowDef } from '@angular/cdk/table';\nimport { Directive, Input } from '@angular/core';\n\n/**\n * Header row definition for the aui-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n selector: '[auiTableHeaderRowDef]',\n providers: [\n {\n provide: CdkHeaderRowDef,\n useExisting: TableHeaderRowDefDirective,\n },\n ],\n})\nexport class TableHeaderRowDefDirective extends CdkHeaderRowDef {\n @Input('auiTableHeaderRowDef')\n columns: string[];\n\n @Input('auiTableHeaderRowDefSticky')\n sticky: boolean;\n}\n","import { CDK_ROW_TEMPLATE, CdkHeaderRow } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n/** Header template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'aui-table-header-row',\n template: CDK_ROW_TEMPLATE,\n host: {\n class: 'aui-table__header-row',\n role: 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'auiTableHeaderRow',\n preserveWhitespaces: false,\n})\nexport class TableHeaderRowComponent extends CdkHeaderRow {}\n","import { RowOutlet } from '@angular/cdk/table';\nimport {\n Directive,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[auiTablePlaceholderDef]',\n})\nexport class TablePlaceholderDefDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({\n selector: '[auiTablePlaceholderOutlet]',\n})\nexport class TablePlaceholderOutlet implements RowOutlet {\n constructor(\n public viewContainer: ViewContainerRef,\n public elementRef: ElementRef,\n ) {}\n}\n","import { CdkRowDef } from '@angular/cdk/table';\nimport { Directive, Input } from '@angular/core';\n\n/**\n * Data row definition for the aui-table.\n * Captures the header row's template and other row properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n selector: '[auiTableRowDef]',\n providers: [\n {\n provide: CdkRowDef,\n useExisting: TableRowDefDirective,\n },\n ],\n})\nexport class TableRowDefDirective<T> extends CdkRowDef<T> {\n @Input('auiTableRowDefColumns')\n columns: string[];\n\n @Input('auiTableRowDefWhen')\n when: (index: number, rowData: T) => boolean;\n}\n","import { CDK_ROW_TEMPLATE, CdkRow } from '@angular/cdk/table';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'aui-table-row',\n template: CDK_ROW_TEMPLATE,\n host: {\n class: 'aui-table__row',\n role: 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'auiTableRow',\n preserveWhitespaces: false,\n})\nexport class TableRowComponent extends CdkRow implements AfterContentInit {\n @Input()\n @HostBinding('class.isDisabled')\n disabled = false;\n\n @HostBinding('class.hasPanel')\n hasPanel = false;\n\n constructor(private readonly elRef: ElementRef<HTMLElement>) {\n super();\n }\n\n ngAfterContentInit() {\n const panel = this.elRef.nativeElement.querySelector(\n 'aui-table-cell[auiExpandPanel]',\n );\n this.hasPanel = !!panel;\n }\n}\n","import {\n _DisposeViewRepeaterStrategy,\n _VIEW_REPEATER_STRATEGY,\n} from '@angular/cdk/collections';\nimport {\n CDK_TABLE,\n CDK_TABLE_TEMPLATE,\n CdkTable,\n _COALESCED_STYLE_SCHEDULER,\n _CoalescedStyleScheduler,\n} from '@angular/cdk/table';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {\n TablePlaceholderDefDirective,\n TablePlaceholderOutlet,\n} from './table-placeholder.directive';\n\n@Component({\n selector: 'aui-table',\n exportAs: 'auiTable',\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['table.component.scss', 'table-scroll.scss'],\n template: `\n ${CDK_TABLE_TEMPLATE}\n <ng-container auiTablePlaceholderOutlet></ng-container>\n `,\n host: {\n class: 'aui-table',\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: CDK_TABLE,\n useExisting: TableComponent,\n },\n {\n provide: _VIEW_REPEATER_STRATEGY,\n useClass: _DisposeViewRepeaterStrategy,\n },\n {\n provide: _COALESCED_STYLE_SCHEDULER,\n useClass: _CoalescedStyleScheduler,\n },\n ],\n})\nexport class TableComponent<T>\n extends CdkTable<T>\n implements AfterContentInit, OnDestroy {\n @Input()\n enableScrollWrapper: boolean;\n\n @ViewChild(TablePlaceholderOutlet, { static: true })\n _placeholderOutlet: TablePlaceholderOutlet;\n\n @ContentChild(TablePlaceholderDefDirective, { static: true })\n _placeholderDef: TablePlaceholderDefDirective;\n\n // FIXME: workaround to override because it will break constructor if it is field, but why MatTable works?\n // @ts-ignore\n protected get stickyCssClass() {\n return 'aui-table-sticky';\n }\n\n protected set stickyCssClass(_: string) {\n // nothing\n }\n\n ngAfterContentInit() {\n this._createPlaceholder();\n }\n\n private _createPlaceholder() {\n const footerRow = this._placeholderDef;\n if (!this._placeholderDef) {\n return;\n }\n\n const container = this._placeholderOutlet.viewContainer;\n container.createEmbeddedView(footerRow.templateRef);\n }\n\n private _clearPlaceholder() {\n this._placeholderOutlet.viewContainer.clear();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this._clearPlaceholder();\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Host,\n HostBinding,\n OnDestroy,\n} from '@angular/core';\nimport { Subject, fromEvent, merge } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nimport { observeResizeOn } from '../utils';\nimport { TableComponent } from './table.component';\n\nconst CLASS_PREFIX = 'aui-table';\nconst SHADOW_CLASS = `${CLASS_PREFIX}__scroll-shadow`;\nconst HAS_SCROLL_CLASS = `${SHADOW_CLASS}--has-scroll`;\nconst SCROLLING_CLASS = `${SHADOW_CLASS}--scrolling`;\nconst SCROLL_BEFORE_END_CLASS = `${SHADOW_CLASS}--before-end`;\n\nconst HAS_TABLE_TOP_SHADOW = 'hasTableTopShadow';\nconst HAS_TABLE_BOTTOM_SHADOW = 'hasTableBottomShadow';\nconst HAS_TABLE_VERTICAL_SCROLL = 'hasTableVerticalScroll';\n\n@Directive({\n selector: '[auiTableScrollWrapper]',\n host: {\n class: 'aui-table__scroll-wrapper',\n },\n})\nexport class TableScrollWrapperDirective {}\n@Directive({\n selector: '[auiTableScrollShadow]',\n})\nexport class TableScrollShadowDirective implements AfterViewInit, OnDestroy {\n destroy$$ = new Subject<void>();\n constructor(\n private readonly el: ElementRef<HTMLElement>,\n @Host() private readonly table: TableComponent<unknown>,\n ) {}\n\n @HostBinding(`class.${SCROLL_BEFORE_END_CLASS}`)\n SCROLL_BEFORE_END_CLASS = true;\n\n @HostBinding(`class.${SHADOW_CLASS}`)\n SHADOW_CLASS = true;\n\n get containerEl() {\n return this.el.nativeElement;\n }\n\n ngAfterViewInit() {\n requestAnimationFrame(() => {\n this.viewMutation();\n });\n }\n\n viewMutation() {\n merge(\n observeResizeOn(this.containerEl),\n fromEvent(this.containerEl, 'scroll'),\n )\n .pipe(startWith(null as void), takeUntil(this.destroy$$))\n .subscribe(() => {\n this.mutateVerticalScroll();\n this.mutateHorizontalScroll();\n });\n }\n\n mutateVerticalScroll() {\n const scrollDis =\n this.containerEl.scrollHeight - this.containerEl.offsetHeight;\n\n this.placeClassList(\n this.containerEl.classList,\n scrollDis > 0,\n HAS_TABLE_VERTICAL_SCROLL,\n );\n\n const scrollTop = this.containerEl.scrollTop;\n this.placeClassList(\n this.containerEl.classList,\n scrollTop > 0,\n HAS_TABLE_TOP_SHADOW,\n );\n this.placeClassList(\n this.containerEl.classList,\n scrollTop < scrollDis,\n HAS_TABLE_BOTTOM_SHADOW,\n );\n\n // 兼容屏幕缩放是 sticky多列的样式问题\n this.table.updateStickyColumnStyles();\n }\n\n mutateHorizontalScroll() {\n const scrollDis =\n this.containerEl.scrollWidth - this.containerEl.offsetWidth;\n\n this.placeClassList(\n this.containerEl.classList,\n scrollDis > 0,\n HAS_SCROLL_CLASS,\n );\n\n const scrollLeft = this.containerEl.scrollLeft;\n this.placeClassList(\n this.containerEl.classList,\n scrollLeft > 0,\n SCROLLING_CLASS,\n );\n this.placeClassList(\n this.containerEl.classList,\n scrollLeft < scrollDis,\n SCROLL_BEFORE_END_CLASS,\n );\n }\n\n placeClassList(\n classList: DOMTokenList,\n condition: boolean,\n className: string,\n ) {\n classList[condition ? 'add' : 'remove'](className);\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n }\n}\n","import { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/icon.module';\n\nimport { TableCellDefDirective } from './table-cell-def.directive';\nimport {\n TableExpandButtonCellComponent,\n TableExpandPanelCellComponent,\n} from './table-cell.component';\nimport { TableCellDirective } from './table-cell.directive';\nimport { TableColumnDefDirective } from './table-column-def.directive';\nimport { TableHeaderCellDefDirective } from './table-header-cell-def.directive';\nimport { TableHeaderCellDirective } from './table-header-cell.directive';\nimport { TableHeaderRowDefDirective } from './table-header-row-def.directive';\nimport { TableHeaderRowComponent } from './table-header-row.component';\nimport {\n TablePlaceholderDefDirective,\n TablePlaceholderOutlet,\n} from './table-placeholder.directive';\nimport { TableRowDefDirective } from './table-row-def.directive';\nimport { TableRowComponent } from './table-row.component';\nimport {\n TableScrollShadowDirective,\n TableScrollWrapperDirective,\n} from './table-scroll.directive';\nimport { TableComponent } from './table.component';\n\n@NgModule({\n imports: [CommonModule, IconModule, CdkTableModule],\n declarations: [\n TableComponent,\n TableRowComponent,\n TableHeaderRowComponent,\n TableExpandButtonCellComponent,\n TableExpandPanelCellComponent,\n TableCellDirective,\n TableCellDefDirective,\n TableHeaderCellDirective,\n TableRowDefDirective,\n TableHeaderRowDefDirective,\n TableHeaderCellDefDirective,\n TableColumnDefDirective,\n TableScrollShadowDirective,\n TablePlaceholderOutlet,\n TablePlaceholderDefDirective,\n TableScrollWrapperDirective,\n ],\n exports: [\n TableComponent,\n TableRowComponent,\n TableHeaderRowComponent,\n TableExpandButtonCellComponent,\n TableExpandPanelCellComponent,\n TableCellDirective,\n TableCellDefDirective,\n TableHeaderCellDirective,\n TableRowDefDirective,\n TableHeaderRowDefDirective,\n TableHeaderCellDefDirective,\n TableColumnDefDirective,\n TableScrollShadowDirective,\n TablePlaceholderOutlet,\n TablePlaceholderDefDirective,\n TableScrollWrapperDirective,\n ],\n})\nexport class TableModule {}\n","/** @docs-private */\nexport function getSortDuplicateSortableIdError(id: string): Error {\n return new Error(`Cannot have two MatSortables with the same id (${id}).`);\n}\n\n/** @docs-private */\nexport function getSortHeaderNotContainedWithinSortError(): Error {\n return new Error(\n `MatSortHeader must be placed within a parent element with the MatSort directive.`,\n );\n}\n\n/** @docs-private */\nexport function getSortHeaderMissingIdError(): Error {\n return new Error(`MatSortHeader must be provided with a unique id.`);\n}\n\n/** @docs-private */\nexport function getSortInvalidDirectionError(direction: string): Error {\n return new Error(\n `${direction} is not a valid sort direction ('asc' or 'desc').`,\n );\n}\n","// Original code from material2\n\nimport {\n Directive,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n isDevMode,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport {\n getSortDuplicateSortableIdError,\n getSortHeaderMissingIdError,\n getSortInvalidDirectionError,\n} from './sort-errors';\nimport { Sort, SortDirection, Sortable } from './sort.types';\n\n@Directive({\n selector: '[auiSort]',\n exportAs: 'auiSort',\n})\nexport class SortDirective implements OnChanges, OnDestroy {\n sortables = new Map<string, Sortable>();\n\n readonly _stateChanges = new Subject<void>();\n\n @Input()\n active: string;\n\n @Input()\n start: 'asc' | 'desc' = 'asc';\n\n @Input()\n get direction(): SortDirection {\n return this._direction;\n }\n\n set direction(direction: SortDirection) {\n if (\n isDevMode() &&\n direction &&\n direction !== 'asc' &&\n direction !== 'desc'\n ) {\n throw getSortInvalidDirectionError(direction);\n }\n this._direction = direction;\n }\n\n private _direction: SortDirection = '';\n\n @Output()\n readonly sortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n register(sortable: Sortable): void {\n if (!sortable.id) {\n throw getSortHeaderMissingIdError();\n }\n\n if (this.sortables.has(sortable.id)) {\n throw getSortDuplicateSortableIdError(sortable.id);\n }\n\n this.sortables.set(sortable.id, sortable);\n }\n\n deregister(sortable: Sortable): void {\n this.sortables.delete(sortable.id);\n }\n\n sort(sortable: Sortable): void {\n if (this.active !== sortable.id) {\n this.active = sortable.id;\n this.direction = sortable.start ? sortable.start : this.start;\n } else {\n this.direction = this.direction === 'asc' ? 'desc' : 'asc';\n }\n\n this.sortChange.emit({\n active: this.active,\n direction: this.direction,\n });\n }\n\n ngOnChanges() {\n this._stateChanges.next();\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n}\n","import { CdkColumnDef } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subscription, merge } from 'rxjs';\n\n/*\n * TODO: prevent ```public property '' of exported class has or is using name ''\n * from external module '' but cannot be named``` issue.\n */\nimport { Bem, buildBem } from '../utils';\n\nimport { getSortHeaderNotContainedWithinSortError } from './sort-errors';\nimport { SortDirective } from './sort.directive';\nimport { ArrowViewState, SortDirection, Sortable } from './sort.types';\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: '[aui-sort-header]',\n templateUrl: 'sort-header.component.html',\n styleUrls: ['sort-header.component.scss'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SortHeaderComponent implements Sortable, OnInit, OnDestroy {\n private readonly _rerenderSubscription: Subscription;\n\n _viewState: ArrowViewState;\n\n arrowDirection: SortDirection = '';\n\n @Input('aui-sort-header')\n id: string;\n\n @Input()\n start: 'asc' | 'desc';\n\n bem: Bem = buildBem('aui-sort-header');\n\n constructor(\n cdr: ChangeDetectorRef,\n @Optional() public _sort: SortDirective,\n @Optional() public _cdkColumnRef: CdkColumnDef,\n ) {\n if (!_sort) {\n throw getSortHeaderNotContainedWithinSortError();\n }\n\n this._rerenderSubscription = merge(\n _sort.sortChange,\n _sort._stateChanges,\n ).subscribe(() => {\n if (this._isSorted()) {\n this._updateArrowDirection();\n }\n\n if (!this._isSorted() && this._viewState === 'active') {\n this._viewState = '';\n }\n\n cdr.markForCheck();\n });\n }\n\n ngOnInit() {\n if (!this.id && this._cdkColumnRef) {\n this.id = this._cdkColumnRef.name;\n }\n this._updateArrowDirection();\n this._viewState = this._isSorted() ? 'active' : '';\n this._sort.register(this);\n }\n\n ngOnDestroy() {\n this._sort.deregister(this);\n this._rerenderSubscription.unsubscribe();\n }\n\n _handleClick() {\n this._sort.sort(this);\n this._viewState = this._isSorted() ? 'active' : '';\n }\n\n _isSorted() {\n return (\n this._sort.active === this.id &&\n ['asc', 'desc'].includes(this._sort.direction)\n );\n }\n\n _updateArrowDirection() {\n this.arrowDirection = this._isSorted()\n ? this._sort.direction\n : this.start || this._sort.start;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SortHeaderComponent } from './sort-header.component';\nimport { SortDirective } from './sort.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [SortDirective, SortHeaderComponent],\n exports: [SortDirective, SortHeaderComponent],\n})\nexport class SortModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-button-group',\n templateUrl: './button-group.component.html',\n styleUrls: ['./button-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class ButtonGroupComponent {}\n","import { ValueOf } from '../types';\n\nexport const ButtonType = {\n Default: 'default',\n Primary: 'primary',\n Success: 'success',\n Warning: 'warning',\n Danger: 'danger',\n Text: 'text',\n Inline: 'inline',\n /**\n * represents default internally, @link https://github.com/angular/vscode-ng-language-service/issues/1147\n */\n Empty: '',\n /**\n * @deprecated use `ButtonType.Danger` instead\n */\n Error: 'danger',\n /**\n * @deprecated use `ButtonType.Default` instead\n */\n Info: 'default',\n} as const;\n\nexport type ButtonType = ValueOf<typeof ButtonType>;\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n Renderer2,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ComponentSize } from '../types';\n\nimport { ButtonType } from './button.types';\n\nconst prefix = 'aui-button--';\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: 'button[aui-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class ButtonComponent implements OnDestroy {\n @Input('aui-button')\n get type() {\n return this._type;\n }\n\n set type(val) {\n if (!val || val === this._type) {\n return;\n }\n this.renderer.removeClass(this.el.nativeElement, prefix + this._type);\n this.renderer.addClass(this.el.nativeElement, prefix + val);\n this._type = val;\n }\n\n @Input()\n get size() {\n return this._size;\n }\n\n set size(val) {\n // when change from other size to default\n if (!val) {\n val = ComponentSize.Medium;\n }\n if (this._size === val) {\n return;\n }\n this.renderer.removeClass(this.el.nativeElement, prefix + this._size);\n this.renderer.addClass(this.el.nativeElement, prefix + val);\n this._size = val;\n }\n\n @Input()\n get plain() {\n return this._plain;\n }\n\n set plain(val) {\n if (this._plain === val) {\n return;\n }\n this.switchAssertClass('isPlain', val);\n this._plain = val;\n }\n\n @Input()\n get loading() {\n return this._loading;\n }\n\n set loading(val) {\n if (this._loading === val) {\n return;\n }\n this.switchAssertClass('isLoading', val);\n this._loading = val;\n }\n\n @Input()\n get round() {\n return this._round;\n }\n\n set round(val) {\n if (this._round === val) {\n return;\n }\n this.switchAssertClass('isRound', val);\n this._round = val;\n }\n\n @Input()\n get square() {\n return this._square;\n }\n\n set square(val) {\n if (this._square === val) {\n return;\n }\n this.switchAssertClass('isSquare', val);\n this._square = val;\n }\n\n private _type: ButtonType = ButtonType.Default;\n private _size: ComponentSize = ComponentSize.Medium;\n private _plain = false;\n private _loading = false;\n private _round = false;\n private _square = false;\n\n constructor(\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n private readonly focusMonitor: FocusMonitor,\n ) {\n this.renderer.addClass(this.el.nativeElement, 'aui-button');\n this.renderer.addClass(this.el.nativeElement, prefix + this.type);\n this.renderer.addClass(this.el.nativeElement, prefix + this.size);\n\n this.focusMonitor.monitor(this.el.nativeElement, false);\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.el.nativeElement);\n }\n\n private switchAssertClass(className: string, val: boolean) {\n if (val) {\n this.renderer.addClass(this.el.nativeElement, className);\n } else {\n this.renderer.removeClass(this.el.nativeElement, className);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { ButtonGroupComponent } from './button-group/button-group.component';\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [ButtonComponent, ButtonGroupComponent],\n exports: [ButtonComponent, ButtonGroupComponent],\n})\nexport class ButtonModule {}\n","import { CdkScrollable } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Optional,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, fromEvent } from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n switchMap,\n throttleTime,\n} from 'rxjs/operators';\n\ntype TargetType = Element | Window | string;\n\n@Component({\n selector: 'aui-back-top',\n templateUrl: './back-top.component.html',\n styleUrls: ['./back-top.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class BackTopComponent {\n @Input()\n set visibilityHeight(val: number) {\n this._visibilityHeight = val;\n this.visibilityHeight$$.next(val);\n }\n\n get visibilityHeight() {\n return this._visibilityHeight;\n }\n\n @Input()\n set target(val: TargetType) {\n this._target = val;\n this.target$$.next(val);\n }\n\n get target() {\n return this._target;\n }\n\n @Output()\n click = new EventEmitter<Event>();\n\n private _visibilityHeight = 400;\n private readonly target$$ = new BehaviorSubject<TargetType>(this.target);\n private readonly visibilityHeight$$ = new BehaviorSubject<number>(\n this.visibilityHeight,\n );\n\n private _target: Element | Window | string;\n private _scrollTarget: Element | Window;\n\n constructor(@Optional() private readonly cdkScrollable: CdkScrollable) {}\n\n isDisplayed$ = combineLatest([\n this.target$$.asObservable().pipe(\n map(target => this.getTarget(target)),\n switchMap(target =>\n fromEvent(target, 'scroll').pipe(\n // use default scheduler\n throttleTime(50, undefined, { leading: true, trailing: true }),\n map(() => this.getTargetScrollTop(target)),\n ),\n ),\n ),\n this.visibilityHeight$$,\n ]).pipe(\n map(([scrollTop, visibilityHeight]) => scrollTop >= visibilityHeight),\n distinctUntilChanged(),\n );\n\n getTargetScrollTop(target: Element | Window) {\n if (target === window) {\n return document.documentElement.scrollTop;\n }\n return (target as HTMLElement).scrollTop;\n }\n\n handleClick(event: Event) {\n this._scrollTarget.scrollTo({ top: 0, behavior: 'smooth' });\n this.click.emit(event);\n }\n\n getTarget(target: TargetType) {\n if (typeof target === 'string') {\n target = document.querySelector(target);\n }\n // set default value for _target,if no input or selector fail\n if (!target) {\n target = this.cdkScrollable\n ? this.cdkScrollable.getElementRef().nativeElement\n : window;\n }\n this._scrollTarget = target;\n return target;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/icon.module';\n\nimport { BackTopComponent } from './back-top.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [BackTopComponent],\n exports: [BackTopComponent],\n})\nexport class BackTopModule {}\n","export enum TooltipType {\n Default = 'default',\n Primary = 'primary',\n Success = 'success',\n Warning = 'warning',\n Error = 'error',\n Info = 'info',\n Plain = 'plain',\n}\n\nexport enum TooltipTrigger {\n Hover = 'hover',\n Click = 'click',\n Focus = 'focus',\n Manual = 'manual',\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable, Subject, combineLatest } from 'rxjs';\nimport { map, publishReplay, refCount, startWith } from 'rxjs/operators';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { TooltipType } from './tooltip.types';\n\n@Component({\n selector: 'aui-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class TooltipComponent {\n text: string;\n template: TemplateRef<any>;\n bem: Bem = buildBem('aui-tooltip');\n\n inputContent$: Observable<string | TemplateRef<any>>;\n inputType$: Observable<TooltipType>;\n inputPosition$: Observable<string>;\n inputClass$: Observable<string>;\n inputContext$: Observable<any>;\n\n text$: Observable<string>;\n template$: Observable<TemplateRef<any>>;\n class$: Observable<string>;\n context$: Observable<any>;\n\n hover$ = new Subject<boolean>();\n\n constructor(\n public elRef: ElementRef<HTMLElement>,\n public cdr: ChangeDetectorRef,\n ) {}\n\n setupInputs(inputs: {\n inputContent$: Observable<string | TemplateRef<any>>;\n inputType$: Observable<TooltipType>;\n inputPosition$: Observable<string>;\n inputClass$: Observable<string>;\n inputContext$: Observable<any>;\n }) {\n Object.assign(this, inputs);\n this.text$ = this.inputContent$.pipe(\n map(val => {\n if (typeof val === 'string') {\n return val;\n }\n return '';\n }),\n publishReplay(1),\n refCount(),\n );\n this.template$ = this.inputContent$.pipe(\n map(val => {\n if (typeof val !== 'string') {\n return val;\n }\n return null;\n }),\n publishReplay(1),\n refCount(),\n );\n this.class$ = combineLatest([\n this.inputPosition$.pipe(startWith('top')),\n this.inputType$.pipe(startWith(TooltipType.Default)),\n this.inputClass$.pipe(startWith('')),\n ]).pipe(\n map(([inputPosition, inputType, inputClass]) => {\n const b = this.bem.block();\n const dir = inputPosition.split(' ')[0];\n return inputType === TooltipType.Plain\n ? `${b}--${dir} ${inputClass}`\n : `${b} ${b}--${inputType} ${b}--${dir} ${inputClass}`;\n }),\n publishReplay(1),\n refCount(),\n );\n this.context$ = this.inputContext$.pipe(publishReplay(1), refCount());\n }\n}\n","import {\n HorizontalConnectionPos,\n OriginConnectionPosition,\n OverlayConnectionPosition,\n VerticalConnectionPos,\n} from '@angular/cdk/overlay';\n\nexport function getOriginPosition(\n position: string,\n): { main: OriginConnectionPosition; fallback: OriginConnectionPosition } {\n const pos = position.split(' ');\n let isXDir;\n if (pos[0] === 'start' || pos[0] === 'end') {\n isXDir = true;\n }\n const main = {\n originX: (pos[isXDir ? 0 : 1] as HorizontalConnectionPos) || 'center',\n originY: (pos[isXDir ? 1 : 0] as VerticalConnectionPos) || 'center',\n };\n const { x, y } = invertPosition(main.originX, main.originY);\n const fallback = {\n originX: isXDir ? x : main.originX,\n originY: !isXDir ? y : main.originY,\n };\n return { main, fallback };\n}\n\nexport function getOverlayPosition(\n position: string,\n): { main: OverlayConnectionPosition; fallback: OverlayConnectionPosition } {\n const pos = position.split(' ');\n let isXDir;\n if (pos[0] === 'start' || pos[0] === 'end') {\n isXDir = true;\n }\n const horizontal =\n (pos[isXDir ? 0 : 1] as HorizontalConnectionPos) || 'center';\n const vertical = (pos[isXDir ? 1 : 0] as VerticalConnectionPos) || 'center';\n const main = {\n overlayX: isXDir ? invertHorizontal(horizontal) : horizontal,\n overlayY: !isXDir ? invertVertical(vertical) : vertical,\n };\n const { x, y } = invertPosition(main.overlayX, main.overlayY);\n const fallback = {\n overlayX: isXDir ? x : main.overlayX,\n overlayY: !isXDir ? y : main.overlayY,\n };\n return { main, fallback };\n}\n\nexport function invertHorizontal(dir: HorizontalConnectionPos) {\n if (dir === 'start') {\n dir = 'end';\n } else if (dir === 'end') {\n dir = 'start';\n }\n return dir;\n}\n\nexport function invertVertical(dir: VerticalConnectionPos) {\n if (dir === 'top') {\n dir = 'bottom';\n } else if (dir === 'bottom') {\n dir = 'top';\n }\n return dir;\n}\n\nexport function invertPosition(\n x: HorizontalConnectionPos,\n y: VerticalConnectionPos,\n): { x: HorizontalConnectionPos; y: VerticalConnectionPos } {\n return { x: invertHorizontal(x), y: invertVertical(y) };\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n OnDestroy,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { ReplaySubject, merge } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { sleep } from '../utils';\n\nimport { TooltipComponent } from './tooltip.component';\nimport { TooltipTrigger, TooltipType } from './tooltip.types';\nimport { getOriginPosition, getOverlayPosition } from './utils';\n\nexport interface TooltipInterface {\n content: string | TemplateRef<any>;\n context: any;\n class: string;\n type: TooltipType;\n position: string;\n trigger: TooltipTrigger;\n disabled: boolean;\n hideOnClick: boolean;\n show: EventEmitter<void>;\n hide: EventEmitter<void>;\n}\n\nexport const DISPLAY_DELAY = 50;\nexport const HIDDEN_DELAY = 150;\n\n@Directive()\n// tslint:disable-next-line: directive-class-suffix\nexport class BaseTooltip<T = any>\n implements TooltipInterface, AfterViewInit, OnDestroy {\n set content(value: string | TemplateRef<any>) {\n this.inputContent$$.next(value);\n }\n\n get context() {\n return this._context;\n }\n\n set context(value: T) {\n this._context = value;\n this.inputContext$$.next(value);\n }\n\n set class(value: string) {\n this.inputClass$$.next(value);\n }\n\n set type(value: TooltipType) {\n if (!value) {\n return;\n }\n this.inputType$$.next(value);\n }\n\n get position() {\n return this._position;\n }\n\n set position(value: string) {\n if (!value || value === this._position) {\n return;\n }\n this._position = value;\n this.inputPosition$$.next(value);\n this.disposeTooltip();\n }\n\n get trigger() {\n return this._trigger;\n }\n\n set trigger(value) {\n if (!value || value === this._trigger) {\n return;\n }\n this._trigger = value;\n this.disposeTooltip();\n this.ngZone.run(this.updateListeners, this);\n }\n\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value) {\n this._disabled = value;\n if (value) {\n this.disposeTooltip();\n }\n }\n\n hideOnClick = false;\n\n show = new EventEmitter<void>();\n hide = new EventEmitter<void>();\n\n protected overlayRef: OverlayRef;\n protected componentClass: ComponentType<any> = TooltipComponent;\n protected componentIns: TooltipComponent;\n protected hostHovered = false;\n protected tooltipHovered = false;\n protected listeners: Array<() => void> = [];\n protected unlistenBody: () => void;\n\n protected inputContent$$ = new ReplaySubject<string | TemplateRef<any>>(1);\n protected inputType$$ = new ReplaySubject<TooltipType>(1);\n protected inputPosition$$ = new ReplaySubject<string>(1);\n protected inputClass$$ = new ReplaySubject<string>(1);\n protected inputContext$$ = new ReplaySubject<any>(1);\n protected tooltipChanged$ = merge(\n this.inputContent$$,\n this.inputType$$,\n this.inputPosition$$,\n this.inputClass$$,\n this.inputContext$$,\n );\n\n protected _position = 'top';\n protected _trigger = TooltipTrigger.Hover;\n protected _disabled = false;\n protected _context: T;\n\n get isCreated() {\n return !!this.overlayRef;\n }\n\n constructor(\n protected overlay: Overlay,\n protected viewContainerRef: ViewContainerRef,\n protected elRef: ElementRef<HTMLInputElement>,\n protected renderer: Renderer2,\n protected cdr: ChangeDetectorRef,\n protected ngZone: NgZone,\n ) {\n this.tooltipChanged$.pipe(debounceTime(0)).subscribe(() => {\n this.updatePosition();\n });\n }\n\n createTooltip() {\n if (this.disabled || this.isCreated) {\n return;\n }\n this.overlayRef = this.createOverlay();\n const portal = new ComponentPortal(\n this.componentClass,\n this.viewContainerRef,\n );\n this.componentIns = this.overlayRef.attach(portal).instance;\n this.componentIns.setupInputs({\n inputClass$: this.inputClass$$.asObservable(),\n inputContent$: this.inputContent$$.asObservable(),\n inputContext$: this.inputContext$$.asObservable(),\n inputPosition$: this.inputPosition$$.asObservable(),\n inputType$: this.inputType$$.asObservable(),\n });\n\n if (this.trigger === TooltipTrigger.Hover) {\n this.componentIns.hover$.subscribe(hovered => {\n this.onTooltipHovered(hovered);\n });\n }\n if (\n this.trigger === TooltipTrigger.Hover ||\n this.trigger === TooltipTrigger.Click\n ) {\n this.unlistenBody = this.renderer.listen(\n 'body',\n 'click',\n this.onBodyClick.bind(this),\n );\n }\n\n this.show.emit();\n\n this.cdr.markForCheck();\n }\n\n disposeTooltip() {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.componentIns = null;\n this.tooltipHovered = false;\n if (this.unlistenBody) {\n this.unlistenBody();\n this.unlistenBody = null;\n }\n this.hide.emit();\n }\n }\n\n toggleTooltip() {\n if (this.isCreated) {\n this.disposeTooltip();\n } else {\n this.createTooltip();\n }\n }\n\n updatePosition() {\n if (this.overlayRef) {\n this.overlayRef.updatePosition();\n }\n }\n\n ngAfterViewInit() {\n if (this.trigger === TooltipTrigger.Hover) {\n this.updateListeners();\n }\n }\n\n ngOnDestroy() {\n this.disposeTooltip();\n this.clearListeners();\n }\n\n protected updateListeners() {\n this.clearListeners();\n switch (this.trigger) {\n case TooltipTrigger.Click:\n this.listeners.push(\n this.renderer.listen(\n this.elRef.nativeElement,\n 'click',\n this.onClick.bind(this) as () => void,\n ),\n );\n break;\n case TooltipTrigger.Hover:\n this.listeners.push(\n this.renderer.listen(\n this.elRef.nativeElement,\n 'mouseenter',\n this.onMouseEnter.bind(this) as () => void,\n ),\n this.renderer.listen(\n this.elRef.nativeElement,\n 'mouseleave',\n this.onMouseLeave.bind(this) as () => void,\n ),\n );\n break;\n case TooltipTrigger.Focus:\n this.listeners.push(\n this.renderer.listen(\n this.elRef.nativeElement,\n 'focus',\n this.onFocus.bind(this),\n ),\n this.renderer.listen(\n this.elRef.nativeElement,\n 'blur',\n this.onBlur.bind(this),\n ),\n );\n break;\n case TooltipTrigger.Manual:\n break;\n }\n }\n\n protected clearListeners() {\n this.listeners.forEach(unListen => {\n unListen();\n });\n this.listeners = [];\n }\n\n protected createOverlay(): OverlayRef {\n const originPosition = getOriginPosition(this.position);\n const overlayPosition = getOverlayPosition(this.position);\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elRef)\n .withGrowAfterOpen(true)\n .withPositions([\n { ...originPosition.main, ...overlayPosition.main },\n { ...originPosition.fallback, ...overlayPosition.fallback },\n ]);\n\n const scrollStrategy = this.overlay.scrollStrategies.reposition();\n\n const config = new OverlayConfig({\n positionStrategy,\n scrollStrategy,\n });\n return this.overlay.create(config);\n }\n\n protected async onMouseEnter() {\n this.hostHovered = true;\n if (!this.isCreated) {\n await sleep(DISPLAY_DELAY);\n if (this.hostHovered) {\n this.createTooltip();\n }\n }\n }\n\n protected async onMouseLeave() {\n this.hostHovered = false;\n await sleep(HIDDEN_DELAY);\n if (!this.tooltipHovered && !this.hostHovered) {\n this.disposeTooltip();\n }\n }\n\n protected async onTooltipHovered(hovered: boolean) {\n this.tooltipHovered = hovered;\n if (!hovered) {\n await sleep(HIDDEN_DELAY);\n if (!this.tooltipHovered && !this.hostHovered) {\n this.disposeTooltip();\n }\n }\n }\n\n protected onClick() {\n this.toggleTooltip();\n }\n\n protected onBodyClick(event: Event) {\n if (\n !this.elRef.nativeElement.contains(event.target as Node) &&\n (this.hideOnClick ||\n !this.componentIns.elRef.nativeElement.contains(event.target as Node))\n ) {\n this.disposeTooltip();\n }\n }\n\n protected onFocus() {\n this.createTooltip();\n }\n\n protected onBlur() {\n this.disposeTooltip();\n }\n}\n","import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';\n\nimport { BaseTooltip } from './base-tooltip';\n\n@Directive({\n selector: '[auiTooltipActive]',\n})\nexport class TooltipActiveDirective {\n @Input('auiTooltipActive')\n customClass: string | string[];\n\n constructor(\n tooltipDirective: BaseTooltip,\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n ) {\n tooltipDirective.show.subscribe(() => {\n this.addClass();\n });\n tooltipDirective.hide.subscribe(() => {\n this.removeClass();\n });\n }\n\n private addClass() {\n const classArr =\n typeof this.customClass === 'string'\n ? this.customClass.split(' ')\n : this.customClass;\n classArr.forEach(name => {\n this.renderer.addClass(this.el.nativeElement, name);\n });\n }\n\n private removeClass() {\n const classArr =\n typeof this.customClass === 'string'\n ? this.customClass.split(' ')\n : this.customClass;\n classArr.forEach(name => {\n this.renderer.removeClass(this.el.nativeElement, name);\n });\n }\n}\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\n\n/**\n * Texts to render on the code editor.\n */\n@Injectable()\nexport class TooltipCopyIntl {\n copyTip = 'Click to copy';\n\n copySuccessTip = 'Copied to clipboard';\n\n copyFailTip = 'Copy failed';\n}\n\nexport function TOOLTIP_COPY_INTL_PROVIDER_FACTORY(\n parentIntl: TooltipCopyIntl,\n) {\n return parentIntl || new TooltipCopyIntl();\n}\n\n/** @docs-private */\nexport const TOOLTIP_COPY_INTL_INTL_PROVIDER = {\n // If there is already an CodeEditorIntl available, use that. Otherwise, provide a new one.\n provide: TooltipCopyIntl,\n deps: [[new Optional(), new SkipSelf(), TooltipCopyIntl]],\n useFactory: TOOLTIP_COPY_INTL_PROVIDER_FACTORY,\n};\n","import { Overlay } from '@angular/cdk/overlay';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n NgZone,\n OnInit,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\nimport { writeText } from 'clipboard-polyfill';\n\nimport { BaseTooltip } from './base-tooltip';\nimport { TooltipCopyIntl } from './tooltip-intl';\n\n@Directive({\n selector: '[auiTooltipCopy]',\n inputs: ['position:auiTooltipPosition', 'disabled:auiTooltipDisabled'],\n})\nexport class TooltipCopyDirective extends BaseTooltip implements OnInit {\n @HostBinding('class.aui-tooltip-copy')\n className = true;\n\n @Input()\n get auiTooltipCopy() {\n return this._copyText || this.elRef.nativeElement.textContent;\n }\n\n set auiTooltipCopy(value: string) {\n this._copyText = value;\n }\n\n @Input()\n get auiTooltipCopyTip() {\n return this._copyTip || this.toolTipIntl.copyTip;\n }\n\n set auiTooltipCopyTip(value: string) {\n this._copyTip = value;\n }\n\n @Input()\n get auiTooltipCopySuccessTip() {\n return this._copySuccessTip || this.toolTipIntl.copySuccessTip;\n }\n\n set auiTooltipCopySuccessTip(value: string) {\n this._copySuccessTip = value;\n }\n\n @Input()\n get auiTooltipCopyFailTip() {\n return this._copyFailTip || this.toolTipIntl.copyFailTip;\n }\n\n set auiTooltipCopyFailTip(value: string) {\n this._copyFailTip = value;\n }\n\n private _copyText: string;\n private _copyTip: string;\n private _copySuccessTip: string;\n private _copyFailTip: string;\n\n constructor(\n overlay: Overlay,\n viewContainerRef: ViewContainerRef,\n elRef: ElementRef,\n renderer: Renderer2,\n cdr: ChangeDetectorRef,\n ngZone: NgZone,\n private readonly toolTipIntl: TooltipCopyIntl,\n ) {\n super(overlay, viewContainerRef, elRef, renderer, cdr, ngZone);\n }\n\n ngOnInit() {\n this.content = this.auiTooltipCopyTip;\n this.hide.subscribe(() => {\n this.content = this.auiTooltipCopyTip;\n });\n }\n\n @HostListener('click')\n async onSourceClick() {\n if (!this.disabled) {\n try {\n await writeText(this.auiTooltipCopy);\n this.content = this.auiTooltipCopySuccessTip;\n } catch {\n this.content = this.auiTooltipCopyFailTip;\n }\n }\n }\n}\n","// tslint:disable: no-output-rename\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { BaseTooltip } from './base-tooltip';\n\n@Directive({\n selector: '[auiTooltip]',\n providers: [\n {\n provide: BaseTooltip,\n useExisting: TooltipDirective,\n },\n ],\n exportAs: 'auiTooltip',\n inputs: [\n 'content:auiTooltip',\n 'context:auiTooltipContext',\n 'class:auiTooltipClass',\n 'type:auiTooltipType',\n 'position:auiTooltipPosition',\n 'trigger:auiTooltipTrigger',\n 'disabled:auiTooltipDisabled',\n ],\n})\nexport class TooltipDirective extends BaseTooltip {\n @Input('auiTooltipHideOnClick')\n hideOnClick: boolean;\n\n @Output('auiTooltipShow')\n show: EventEmitter<void>;\n\n @Output('auiTooltipHide')\n hide: EventEmitter<void>;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n overlay: Overlay,\n viewContainerRef: ViewContainerRef,\n elRef: ElementRef,\n renderer: Renderer2,\n cdr: ChangeDetectorRef,\n ngZone: NgZone,\n ) {\n super(overlay, viewContainerRef, elRef, renderer, cdr, ngZone);\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TooltipActiveDirective } from './tooltip-active.directive';\nimport { TooltipCopyDirective } from './tooltip-copy.directive';\nimport { TOOLTIP_COPY_INTL_INTL_PROVIDER } from './tooltip-intl';\nimport { TooltipComponent } from './tooltip.component';\nimport { TooltipDirective } from './tooltip.directive';\n\n@NgModule({\n imports: [CommonModule, OverlayModule],\n declarations: [\n TooltipDirective,\n TooltipComponent,\n TooltipActiveDirective,\n TooltipCopyDirective,\n ],\n entryComponents: [TooltipComponent],\n exports: [TooltipDirective, TooltipActiveDirective, TooltipCopyDirective],\n providers: [TOOLTIP_COPY_INTL_INTL_PROVIDER],\n})\nexport class TooltipModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-section',\n templateUrl: './section.component.html',\n styleUrls: ['./section.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class SectionComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class CardComponent {\n @Input() divider = true;\n}\n","// tslint:disable: no-host-metadata-property\nimport { Directive } from '@angular/core';\n\n@Directive({\n selector: '[auiCardHeader]',\n host: {\n '[class.aui-card__header]': 'true',\n },\n})\nexport class CardHeaderDirective {}\n\n@Directive({\n selector: '[auiCardFooter]',\n host: {\n '[class.aui-card__footer]': 'true',\n },\n})\nexport class CardFooterDirective {}\n\n@Directive({\n selector: '[auiSectionTitle]',\n host: {\n '[class.aui-section__title]': 'true',\n },\n})\nexport class SectionTitleDirective {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CardComponent } from './card.component';\nimport {\n CardFooterDirective,\n CardHeaderDirective,\n SectionTitleDirective,\n} from './helper-directives';\nimport { SectionComponent } from './section.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n CardComponent,\n CardHeaderDirective,\n CardFooterDirective,\n SectionComponent,\n SectionTitleDirective,\n ],\n exports: [\n CardComponent,\n CardHeaderDirective,\n CardFooterDirective,\n SectionComponent,\n SectionTitleDirective,\n ],\n})\nexport class CardModule {}\n","import {\n CdkScrollable,\n ComponentType,\n GlobalPositionStrategy,\n OverlayRef,\n ScrollDispatcher,\n} from '@angular/cdk/overlay';\nimport { NgZone } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { DialogComponent } from './dialog.component';\n\nlet uniqueId = 0;\n\nexport class DialogRef<T = ComponentType<any>, R = any> {\n componentInstance?: T;\n readonly id = `aui-dialog-${uniqueId++}`;\n\n private readonly afterOpen$ = new Subject<void>();\n private readonly afterClosed$ = new Subject<R>();\n\n private readonly scrollable: CdkScrollable;\n\n constructor(\n private readonly overlayRef: OverlayRef,\n public dialogInstance: DialogComponent,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone,\n ) {\n dialogInstance.id = this.id;\n this.scrollable = new CdkScrollable(\n { nativeElement: overlayRef.overlayElement },\n scrollDispatcher,\n ngZone,\n );\n this.scrollable.ngOnInit();\n }\n\n close(result: R = null): void {\n this.scrollable.ngOnDestroy();\n this.overlayRef.detachBackdrop();\n this.overlayRef.dispose();\n this.afterClosed$.next(result);\n this.afterClosed$.complete();\n }\n\n afterOpen(): Observable<void> {\n return this.afterOpen$.asObservable();\n }\n\n afterClosed(): Observable<R> {\n return this.afterClosed$.asObservable();\n }\n\n updatePosition(): this {\n this.getPositionStrategy().top('0').left('0');\n this.overlayRef.updatePosition();\n return this;\n }\n\n updateSize(): this {\n this.getPositionStrategy();\n this.overlayRef.updatePosition();\n return this;\n }\n\n private getPositionStrategy(): GlobalPositionStrategy {\n return this.overlayRef.getConfig()\n .positionStrategy as GlobalPositionStrategy;\n }\n}\n","import { Observable } from 'rxjs';\n\nexport enum DialogSize {\n Small = 'small',\n Medium = 'medium',\n Big = 'big',\n Large = 'large',\n Fullscreen = 'fullscreen',\n FitContent = 'fit-content',\n}\n\nexport enum ConfirmType {\n Primary = 'primary',\n Success = 'success',\n Warning = 'warning',\n Danger = 'danger',\n}\n\nexport type PromiseExecutor<T> = (\n resolve: (result?: T | PromiseLike<T>) => void,\n reject: (reason?: unknown) => void,\n) => void;\n\nexport type CustomBeforeAction<T> = () => PromiseLike<T> | Observable<T>;\n\nexport type BeforeAction<T> = PromiseExecutor<T> | CustomBeforeAction<T>;\n","import { BeforeAction, ConfirmType } from '../dialog.types';\n\nexport class ConfirmDialogConfig<T = unknown, R = unknown> {\n title: string;\n content?: string;\n cancelButton? = true;\n confirmType?: ConfirmType = ConfirmType.Primary;\n confirmText? = 'OK';\n cancelText? = 'Cancel';\n\n beforeConfirm?: BeforeAction<T>;\n beforeCancel?: BeforeAction<R>;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { Bem, buildBem } from '../../utils';\nimport { DialogRef } from '../dialog-ref';\nimport {\n BeforeAction,\n ConfirmType,\n CustomBeforeAction,\n PromiseExecutor,\n} from '../dialog.types';\n\nimport { ConfirmDialogConfig } from './confirm-dialog-config';\n\n@Component({\n selector: 'aui-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class ConfirmDialogComponent<T = unknown, R = unknown> {\n bem: Bem = buildBem('aui-confirm-dialog');\n\n config: ConfirmDialogConfig<T, R>;\n\n waitConfirm = false;\n waitCancel = false;\n\n constructor(\n private readonly dialogRef: DialogRef<any>,\n private readonly cdr: ChangeDetectorRef,\n ) {}\n\n setConfig(config: ConfirmDialogConfig<T, R>) {\n this.config = { ...new ConfirmDialogConfig(), ...config };\n }\n\n iconMap(type: ConfirmType) {\n switch (type) {\n case ConfirmType.Success:\n return 'check_circle_s';\n case ConfirmType.Danger:\n return 'exclamation_triangle_s';\n case ConfirmType.Primary:\n case ConfirmType.Warning:\n default:\n return 'exclamation_circle_s';\n }\n }\n\n async confirm() {\n if (!this.config.beforeConfirm) {\n this.dialogRef.close({ confirm: true, result: null });\n return;\n }\n this.waitConfirm = true;\n try {\n const result = await this.toPromise(this.config.beforeConfirm);\n this.dialogRef.close({ confirm: true, result });\n } catch {\n } finally {\n this.waitConfirm = false;\n this.cdr.markForCheck();\n }\n }\n\n async cancel() {\n if (!this.config.beforeCancel) {\n this.dialogRef.close({ confirm: false, result: null });\n return;\n }\n this.waitCancel = true;\n try {\n const result = await this.toPromise(this.config.beforeCancel);\n this.dialogRef.close({ confirm: false, result });\n } catch {\n } finally {\n this.waitCancel = false;\n this.cdr.markForCheck();\n }\n }\n\n private toPromise<T>(beforeAction: BeforeAction<T>) {\n if (beforeAction.length) {\n return new Promise(beforeAction as PromiseExecutor<T>);\n }\n\n const result = (beforeAction as CustomBeforeAction<T>)();\n\n if (result instanceof Observable) {\n return result.pipe(first()).toPromise();\n }\n\n return result;\n }\n}\n","import { ViewContainerRef } from '@angular/core';\n\nimport { DialogSize } from './dialog.types';\n\nexport class DialogConfig<D = any> {\n id?: number;\n viewContainerRef?: ViewContainerRef;\n data?: D;\n size?: DialogSize = DialogSize.Big;\n hasBackdrop? = true;\n fitViewport? = false;\n}\n","export function throwDialogContentAlreadyAttachedError() {\n throw new Error(\n 'Attempting to attach dialog content after content is already attached',\n );\n}\n","import { ElementRef } from '@angular/core';\n\nimport { DialogRef } from '../dialog-ref';\n\nexport function getClosestDialog(\n element: ElementRef,\n openDialogs: Array<DialogRef<any>>,\n) {\n let parent = (element.nativeElement as HTMLElement).parentElement;\n\n while (parent?.tagName !== 'AUI-DIALOG') {\n parent = parent.parentElement;\n }\n\n return parent\n ? openDialogs.find(dialog => dialog.id === parent.dataset.id)\n : null;\n}\n\nexport * from './errors';\n","import {\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { DialogConfig } from './dialog-config';\nimport { throwDialogContentAlreadyAttachedError } from './utils';\n\n@Component({\n selector: 'aui-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n encapsulation: ViewEncapsulation.None,\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n preserveWhitespaces: false,\n})\nexport class DialogComponent {\n @ViewChild(CdkPortalOutlet, { static: true })\n portalOutlet: CdkPortalOutlet;\n\n bem: Bem = buildBem('aui-dialog');\n\n config: DialogConfig;\n\n hidden = false;\n\n get id() {\n return this._id;\n }\n\n set id(value) {\n this.elementRef.nativeElement.dataset.id = value;\n }\n\n private readonly _id: string;\n\n get rootClass() {\n return `${this.bem.block(this.config.size)} ${\n this.config.fitViewport ? this.bem.modifier('fit-viewport') : ''\n }`;\n }\n\n get customStyle() {\n return this.hidden\n ? {\n display: 'none',\n }\n : {};\n }\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\n\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n if (this.portalOutlet.hasAttached()) {\n throwDialogContentAlreadyAttachedError();\n }\n this.blurActiveElement();\n return this.portalOutlet.attachComponentPortal(portal);\n }\n\n attachTemplatePortal<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T> {\n if (this.portalOutlet.hasAttached()) {\n throwDialogContentAlreadyAttachedError();\n }\n this.blurActiveElement();\n return this.portalOutlet.attachTemplatePortal(portal);\n }\n\n private blurActiveElement() {\n if (document) {\n (document.activeElement as HTMLElement).blur();\n }\n }\n}\n","import {\n Overlay,\n OverlayConfig,\n OverlayRef,\n ScrollDispatcher,\n} from '@angular/cdk/overlay';\nimport {\n ComponentPortal,\n ComponentType,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n Injectable,\n InjectionToken,\n Injector,\n NgZone,\n TemplateRef,\n} from '@angular/core';\n\nimport { ConfirmDialogConfig } from './confirm-dialog/confirm-dialog-config';\nimport { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\nimport { DialogConfig } from './dialog-config';\nimport { DialogRef } from './dialog-ref';\nimport { DialogComponent } from './dialog.component';\nimport { DialogSize } from './dialog.types';\n\nexport const DIALOG_DATA = new InjectionToken<any>('aui-dialog-data');\n\n@Injectable()\nexport class DialogService {\n static readonly DIALOG_OVERLAY_PANE_CLASS = 'aui-dialog-overlay-pane';\n static readonly DIALOG_BACKDROP_CLASS = 'aui-dialog-backdrop';\n\n openDialogs: Array<DialogRef<any>> = [];\n\n constructor(\n private readonly overlay: Overlay,\n private readonly injector: Injector,\n private readonly scrollDispatcher: ScrollDispatcher,\n private readonly ngZone: NgZone,\n ) {}\n\n open<T, D = any, R = any>(\n compOrTempRef: ComponentType<T> | TemplateRef<T>,\n config: DialogConfig<D> = null,\n ): DialogRef<T, R> {\n this.hiddenPrevDialog();\n\n config = { ...new DialogConfig(), ...config };\n\n const overlayRef = this.createOverlay(config);\n const dialogIns = this.attachDialog(overlayRef, config);\n const dialogRef = this.attachDialogContent<T, D, R>(\n compOrTempRef,\n dialogIns,\n overlayRef,\n config,\n );\n this.openDialogs.push(dialogRef);\n dialogRef.updatePosition().updateSize();\n dialogRef.afterClosed().subscribe(() => {\n this.removeDialog(dialogRef);\n this.showPrevDialog();\n });\n\n return dialogRef;\n }\n\n confirm<T = unknown, R = unknown>(\n config: ConfirmDialogConfig<T, R>,\n ): Promise<T> {\n const dialogRef = this.open<\n ConfirmDialogComponent<T, R>,\n void,\n { confirm: boolean; result: T | R }\n >(ConfirmDialogComponent, {\n size: DialogSize.FitContent,\n });\n dialogRef.componentInstance.setConfig(config);\n return new Promise((resolve, reject) => {\n dialogRef.afterClosed().subscribe(action => {\n if (action.confirm) {\n resolve(action.result as T);\n } else {\n // eslint-disable-next-line prefer-promise-reject-errors\n reject(action.result as R);\n }\n });\n });\n }\n\n closeAll() {\n this.openDialogs.forEach(dialogRef => {\n dialogRef.close();\n });\n }\n\n private hiddenPrevDialog() {\n if (this.openDialogs.length > 0) {\n this.openDialogs[\n this.openDialogs.length - 1\n ].dialogInstance.hidden = true;\n }\n }\n\n private showPrevDialog() {\n if (this.openDialogs.length > 0) {\n this.openDialogs[\n this.openDialogs.length - 1\n ].dialogInstance.hidden = false;\n }\n }\n\n private createOverlay(config: DialogConfig): OverlayRef {\n const overlayConfig = this.getOverlayConfig(config);\n return this.overlay.create(overlayConfig);\n }\n\n private getOverlayConfig(dialogConfig: DialogConfig): OverlayConfig {\n return {\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n hasBackdrop: dialogConfig.hasBackdrop && !this.openDialogs.length,\n backdropClass: DialogService.DIALOG_BACKDROP_CLASS,\n panelClass: DialogService.DIALOG_OVERLAY_PANE_CLASS,\n width: '100vw',\n height: '100vh',\n };\n }\n\n private attachDialog(\n overlayRef: OverlayRef,\n config: DialogConfig,\n ): DialogComponent {\n const dialogPortal = new ComponentPortal(\n DialogComponent,\n config.viewContainerRef,\n );\n const dialogRef = overlayRef.attach(dialogPortal);\n dialogRef.instance.config = config;\n return dialogRef.instance;\n }\n\n private attachDialogContent<T, D, R>(\n compOrTempRef: ComponentType<T> | TemplateRef<T>,\n dialogIns: DialogComponent,\n overlayRef: OverlayRef,\n config: DialogConfig<D>,\n ): DialogRef<T, R> {\n const dialogRef = new DialogRef<T, R>(\n overlayRef,\n dialogIns,\n this.scrollDispatcher,\n this.ngZone,\n );\n\n if (compOrTempRef instanceof TemplateRef) {\n dialogIns.attachTemplatePortal(\n new TemplatePortal(compOrTempRef, null, {\n $implicit: config.data,\n } as any),\n );\n } else {\n const injector = this.createInjector(config, dialogRef, dialogIns);\n const contentRef = dialogIns.attachComponentPortal<T>(\n new ComponentPortal(compOrTempRef, null, injector),\n );\n dialogRef.componentInstance = contentRef.instance;\n }\n return dialogRef;\n }\n\n private createInjector<T>(\n config: DialogConfig,\n dialogRef: DialogRef<T>,\n dialogIns: DialogComponent,\n ): Injector {\n const userInjector = config?.viewContainerRef?.injector;\n return Injector.create({\n providers: [\n {\n provide: DialogRef,\n useValue: dialogRef,\n },\n {\n provide: DIALOG_DATA,\n useValue: config.data || dialogIns,\n },\n ],\n parent: userInjector || this.injector,\n });\n }\n\n private removeDialog(dialogRef: DialogRef<any>) {\n const index = this.openDialogs.indexOf(dialogRef);\n this.openDialogs.splice(index, 1);\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnInit,\n Optional,\n} from '@angular/core';\n\nimport { DialogRef } from '../dialog-ref';\nimport { DialogService } from '../dialog.service';\nimport { getClosestDialog } from '../utils';\n\n@Directive({\n selector: 'button[auiDialogClose]',\n exportAs: 'auiDialogClose',\n})\nexport class DialogCloseDirective implements OnInit {\n @Input('auiDialogClose')\n result: any;\n\n constructor(\n @Optional() public dialogRef: DialogRef<any>,\n private readonly elementRef: ElementRef,\n private readonly dialogService: DialogService,\n ) {}\n\n ngOnInit() {\n if (!this.dialogRef) {\n this.dialogRef = getClosestDialog(\n this.elementRef,\n this.dialogService.openDialogs,\n );\n }\n }\n\n @HostListener('click')\n closeDialog() {\n this.dialogRef.close(this.result);\n }\n}\n","import { Directionality } from '@angular/cdk/bidi';\nimport { CdkScrollable, ScrollDispatcher } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n NgZone,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../../utils';\n\n@Component({\n selector: 'aui-dialog-content',\n templateUrl: './dialog-content.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class DialogContentComponent extends CdkScrollable {\n bem: Bem = buildBem('aui-dialog');\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n elementRef: ElementRef<HTMLElement>,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone,\n dir?: Directionality,\n ) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../../utils';\n\n@Component({\n selector: 'aui-dialog-footer',\n templateUrl: './dialog-footer.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class DialogFooterComponent {\n bem: Bem = buildBem('aui-dialog');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../../utils';\nimport { DialogRef } from '../dialog-ref';\nimport { DialogService } from '../dialog.service';\nimport { getClosestDialog } from '../utils';\n\n@Component({\n selector: 'aui-dialog-header',\n templateUrl: './dialog-header.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class DialogHeaderComponent implements OnInit {\n bem: Bem = buildBem('aui-dialog');\n\n @Input()\n divider = true;\n\n @Input()\n closeable = true;\n\n @Input()\n result: any = false;\n\n constructor(\n @Optional() public dialogRef: DialogRef<any>,\n private readonly elementRef: ElementRef,\n private readonly dialogService: DialogService,\n ) {}\n\n ngOnInit() {\n if (!this.dialogRef) {\n this.dialogRef = getClosestDialog(\n this.elementRef,\n this.dialogService.openDialogs,\n );\n }\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';\n\nimport { ButtonModule } from '../button/public-api';\nimport { IconModule } from '../icon/public-api';\n\nimport { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\nimport { DialogCloseDirective } from './dialog-content/dialog-close.directive';\nimport { DialogContentComponent } from './dialog-content/dialog-content.component';\nimport { DialogFooterComponent } from './dialog-content/dialog-footer.component';\nimport { DialogHeaderComponent } from './dialog-content/dialog-header.component';\nimport { DialogComponent } from './dialog.component';\nimport { DialogService } from './dialog.service';\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n PortalModule,\n IconModule,\n ButtonModule,\n ],\n declarations: [\n DialogComponent,\n DialogHeaderComponent,\n DialogContentComponent,\n DialogFooterComponent,\n DialogCloseDirective,\n ConfirmDialogComponent,\n ],\n exports: [\n DialogComponent,\n DialogHeaderComponent,\n DialogContentComponent,\n DialogFooterComponent,\n DialogCloseDirective,\n ],\n entryComponents: [DialogComponent, ConfirmDialogComponent],\n providers: [DialogService],\n})\nexport class DialogModule {}\n","import { ValueOf } from '../types';\n\nexport const LabelPosition = {\n Top: 'top',\n Left: 'left',\n Right: 'right',\n} as const;\n\nexport const FormItemWidth = {\n Small: 'small',\n Medium: 'medium',\n Large: 'large',\n} as const;\n\nexport type LabelPosition = ValueOf<typeof LabelPosition>;\n\nexport type FormItemWidth = ValueOf<typeof FormItemWidth>;\n","import { Directive, Inject, Input, Optional } from '@angular/core';\nimport { ControlContainer, FormGroupDirective, NgForm } from '@angular/forms';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { LabelPosition } from './form.types';\n\n@Directive({\n selector: 'form[auiForm]',\n exportAs: 'auiForm',\n host: {\n '[class.aui-form]': 'true',\n '[class.aui-form--inline]': 'inline',\n '[class.ng-submitted]': 'ngClassSubmitted',\n },\n})\nexport class FormDirective {\n get ngClassSubmitted() {\n return (this.controlContainer?.formDirective as NgForm | FormGroupDirective)\n .submitted;\n }\n\n private readonly labelWidth$$ = new BehaviorSubject<string>(null);\n private readonly labelPosition$$ = new BehaviorSubject<LabelPosition>(\n LabelPosition.Right,\n );\n\n private readonly emptyAddon$$ = new BehaviorSubject<boolean>(false);\n\n @Input('auiFormLabelWidth')\n set labelWidth(val: string) {\n this.labelWidth$$.next(val);\n }\n\n @Input('auiFormLabelPosition')\n set labelPosition(val: LabelPosition) {\n this.labelPosition$$.next(val);\n }\n\n @Input('auiFormEmptyAddon')\n set emptyAddon(val: boolean) {\n this.emptyAddon$$.next(val);\n }\n\n @Input('auiFormInline')\n inline = false;\n\n labelWidth$: Observable<string> = this.labelWidth$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n labelPosition$: Observable<LabelPosition> = this.labelPosition$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n emptyAddon$: Observable<boolean> = this.emptyAddon$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n constructor(\n @Inject(ControlContainer)\n @Optional()\n public controlContainer?: ControlContainer,\n ) {}\n}\n","// tslint:disable: no-host-metadata-property\nimport { Directive, Input } from '@angular/core';\n\nimport { coerceAttrBoolean } from '../utils';\n\n@Directive({\n selector: 'label[auiFormItemLabel]',\n host: {\n '[class.aui-form-item__label]': 'true',\n },\n})\nexport class FormItemLabelDirective {}\n\n@Directive({\n selector: '[auiFormItemHint]',\n host: {\n '[class.aui-form-item__hint]': 'true',\n },\n})\nexport class FormItemHintDirective {}\n\n@Directive({\n selector: '[auiFormItemAddon]',\n host: {\n '[class.aui-form-item__addon]': 'true',\n },\n})\nexport class FormItemAddonDirective {}\n\n@Directive({\n selector: '[auiFormItemError]',\n host: {\n '[class.aui-form-item__error]': 'true',\n },\n})\nexport class FormItemErrorDirective {}\n\n@Directive({\n selector: '[auiFormItemControl]',\n host: {\n '[class.aui-form-item__control]': 'true',\n },\n})\nexport class FormItemControlDirective {\n @Input()\n get required() {\n return this._required;\n }\n\n set required(val: boolean | '') {\n this._required = coerceAttrBoolean(val);\n }\n\n private _required = false;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { Observable, Subject, combineLatest, merge } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n takeUntil,\n} from 'rxjs/operators';\n\nimport { Bem, buildBem } from '../../utils';\nimport { FormDirective } from '../form.directive';\nimport { FormItemWidth, LabelPosition } from '../form.types';\nimport {\n FormItemAddonDirective,\n FormItemControlDirective,\n FormItemErrorDirective,\n FormItemHintDirective,\n FormItemLabelDirective,\n} from '../helper-directives';\n\n@Component({\n selector: 'aui-form-item',\n templateUrl: './form-item.component.html',\n styleUrls: ['./form-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class FormItemComponent implements AfterContentInit, OnDestroy {\n bem: Bem = buildBem('aui-form-item');\n\n @Input()\n labelWidth: string = null;\n\n @Input()\n width: FormItemWidth;\n\n @Input()\n labelPosition: LabelPosition = LabelPosition.Right;\n\n @Input()\n emptyAddon = false;\n\n @ContentChild(FormItemLabelDirective, { static: false })\n itemLabel: FormItemLabelDirective;\n\n @ContentChild(FormItemControlDirective, { static: false })\n itemControl: FormItemControlDirective;\n\n @ContentChildren(NgControl, { descendants: true })\n ngControls: QueryList<NgControl>;\n\n @ContentChildren(FormItemAddonDirective)\n addons: QueryList<FormItemAddonDirective>;\n\n @ContentChildren(FormItemErrorDirective)\n errors: QueryList<FormItemErrorDirective>;\n\n @ContentChildren(FormItemHintDirective)\n hints: QueryList<FormItemHintDirective>;\n\n hasError$: Observable<boolean>;\n errorCount$: Observable<number>;\n hintCount$: Observable<number>;\n parentForm: NgForm | FormGroupDirective;\n\n private readonly destroy$$ = new Subject<void>();\n\n get formItemWidthClass() {\n return this.width\n ? this.bem.element('content', { [this.width]: true })\n : '';\n }\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n @Optional() private readonly auiForm: FormDirective,\n @Optional() ngForm: NgForm,\n @Optional() formGroup: FormGroupDirective,\n ) {\n this.parentForm = formGroup || ngForm;\n if (this.auiForm) {\n this.subscribeInputsFromParent();\n }\n }\n\n ngAfterContentInit() {\n this.hasError$ = this.ngControls.changes.pipe(\n startWith(this.ngControls),\n switchMap((controls: QueryList<NgControl>) =>\n combineLatest(\n controls.map(control => this.mapControlStatus(control)),\n ).pipe(map(statuses => statuses.some(status => status))),\n ),\n );\n\n this.errorCount$ = this.errors.changes.pipe(\n map(errors => errors.length),\n startWith(this.errors.length),\n );\n\n this.hintCount$ = this.hints.changes.pipe(\n map(hints => hints.length),\n startWith(this.hints.length),\n );\n }\n\n subscribeInputsFromParent() {\n this.auiForm.labelWidth$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(width => {\n this.labelWidth = width;\n this.cdr.markForCheck();\n });\n this.auiForm.labelPosition$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(position => {\n this.labelPosition = position;\n this.cdr.markForCheck();\n });\n this.auiForm.emptyAddon$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(emptyAddon => {\n this.emptyAddon = emptyAddon;\n this.cdr.markForCheck();\n });\n }\n\n mapControlStatus(control: NgControl) {\n return (this.parentForm\n ? combineLatest([\n control.statusChanges.pipe(startWith(control.status)),\n merge(\n this.parentForm.statusChanges.pipe(\n startWith(this.parentForm.status),\n ),\n this.parentForm.ngSubmit,\n ),\n ]).pipe(map(([status]: string[]) => status))\n : control.statusChanges\n ).pipe(\n map(\n (status: string) =>\n status === 'INVALID' && (control.dirty || this.parentForm?.submitted),\n ),\n publishReplay(1),\n refCount(),\n );\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FormItemComponent } from './form-item/form-item.component';\nimport { FormDirective } from './form.directive';\nimport {\n FormItemAddonDirective,\n FormItemControlDirective,\n FormItemErrorDirective,\n FormItemHintDirective,\n FormItemLabelDirective,\n} from './helper-directives';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n FormDirective,\n FormItemComponent,\n FormItemAddonDirective,\n FormItemErrorDirective,\n FormItemHintDirective,\n FormItemLabelDirective,\n FormItemControlDirective,\n ],\n exports: [\n FormDirective,\n FormItemComponent,\n FormItemAddonDirective,\n FormItemErrorDirective,\n FormItemHintDirective,\n FormItemLabelDirective,\n FormItemControlDirective,\n ],\n})\nexport class FormModule {}\n","import {\n ChangeDetectorRef,\n Directive,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { publishReplay, refCount, tap } from 'rxjs/operators';\n\nimport { coerceAttrBoolean } from '../utils';\n\n/**\n * form control 内部不保持 value 属性,当不使用 ngModel 时可以通过 [(value)] 实现双向绑定;\n * 也可以分别传入 value 和 监听 valueChange 事件以实现阻断用户操作的功能。\n */\n@Directive()\n// tslint:disable-next-line:directive-class-suffix\nexport class CommonFormControl<T, V = T> implements ControlValueAccessor {\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(val: boolean | '') {\n this._disabled = coerceAttrBoolean(val);\n }\n\n @Input()\n get readonly() {\n return this.disabled;\n }\n\n set readonly(val) {\n this.disabled = val;\n }\n\n @Input('value')\n get propValue() {\n return this._propValue;\n }\n\n set propValue(val) {\n if (val === this._propValue) {\n return;\n }\n this._propValue = val;\n this.writeValue(val);\n }\n\n @Output()\n valueChange = new EventEmitter<T>();\n\n protected onChange: (_: T) => void;\n protected onTouched: () => void;\n protected value$$ = new ReplaySubject<V>(1);\n private _propValue: T;\n private _disabled = false;\n\n snapshot: { value: V } = { value: null };\n\n value$: Observable<V> = this.value$$.asObservable().pipe(\n tap(value => {\n this.snapshot.value = value;\n }),\n publishReplay(1),\n refCount(),\n );\n\n constructor(protected cdr: ChangeDetectorRef) {}\n\n registerOnChange(fn: (_: T) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n writeValue(value: T) {\n this.value$$.next(this.valueIn(value));\n }\n\n emitValue(value: V) {\n this.emitValueChange(this.valueOut(value));\n }\n\n emitValueChange(value: T) {\n if (this.onChange) {\n this.onChange(value);\n this.writeValue(value);\n }\n this.valueChange.emit(value);\n }\n\n protected valueIn(v: T): V {\n return v as any;\n }\n\n protected valueOut(v: V): T {\n return v as any;\n }\n}\n\n/**\n * @deprecated use {@link CommonFormControl} instead\n */\nexport const CommonForm = CommonFormControl;\n","import { ValueOf } from '../types';\n\nexport const RadioSize = {\n Medium: 'medium',\n Small: 'small',\n Mini: 'mini',\n} as const;\n\nexport type RadioSize = ValueOf<typeof RadioSize>;\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { CommonFormControl } from '../../form/public-api';\nimport { RadioSize } from '../radio.types';\n\n@Component({\n selector: 'aui-radio-group',\n templateUrl: './radio-group.component.html',\n styleUrls: ['./radio-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupComponent),\n multi: true,\n },\n ],\n})\nexport class RadioGroupComponent extends CommonFormControl<any> {\n private readonly size$$ = new BehaviorSubject<RadioSize>(RadioSize.Medium);\n private readonly isPlain$$ = new BehaviorSubject<boolean>(true);\n private readonly name$$ = new BehaviorSubject<string>('');\n\n @Input()\n set size(val: RadioSize) {\n this.size$$.next(val);\n }\n\n @Input()\n direction: 'row' | 'column' = 'row';\n\n /**\n * @deprecated use `plain` instead\n */\n @Input()\n set isPlain(val: boolean) {\n this.plain = val;\n }\n\n @Input()\n set plain(val: boolean) {\n this.isPlain$$.next(val);\n }\n\n @Input()\n set name(val: string) {\n this.name$$.next(val);\n }\n\n size$: Observable<RadioSize> = this.size$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n isPlain$: Observable<boolean> = this.isPlain$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n name$: Observable<string> = this.name$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n writeValue(value: any) {\n this.value$$.next(value);\n }\n\n onRadioChange(value: any) {\n this.emitValueChange(value);\n }\n\n onRadioBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { BehaviorSubject, Subject, combineLatest } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { RadioGroupComponent } from './radio-group/radio-group.component';\n\nlet uniqueId = 0;\n\n@Directive()\n// tslint:disable-next-line: directive-class-suffix\nexport class BaseRadio implements OnInit, AfterViewInit, OnDestroy {\n id = `aui-radio-${uniqueId++}`;\n\n @Input()\n disabled: boolean | '' = false;\n\n @Input()\n get value() {\n return this._value;\n }\n\n set value(val) {\n this._value = val;\n this.value$$.next(val);\n }\n\n @ViewChild('elRef', { static: true })\n elRef: ElementRef;\n\n checked = false;\n name = '';\n\n protected _value: unknown;\n protected readonly value$$ = new BehaviorSubject(this.value);\n protected destroy$$ = new Subject<void>();\n\n constructor(\n protected radioGroup: RadioGroupComponent,\n protected focusMonitor: FocusMonitor,\n protected cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.radioGroup.name$.pipe(takeUntil(this.destroy$$)).subscribe(name => {\n this.name = name;\n this.cdr.markForCheck();\n });\n\n combineLatest([this.radioGroup.value$, this.value$$])\n .pipe(\n takeUntil(this.destroy$$),\n map(([groupValue, selfValue]) => groupValue === selfValue),\n )\n .subscribe(checked => {\n this.checked = checked;\n this.cdr.markForCheck();\n });\n }\n\n ngAfterViewInit() {\n this.focusMonitor.monitor(this.elRef.nativeElement, true);\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.focusMonitor.stopMonitoring(this.elRef.nativeElement);\n }\n\n onClick() {\n if (this.checked || this.disabled) {\n return;\n }\n this.radioGroup.onRadioChange(this.value);\n }\n\n onBlur() {\n this.radioGroup.onRadioBlur();\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { BaseRadio } from './base-radio';\nimport { RadioGroupComponent } from './radio-group/radio-group.component';\n\n@Component({\n selector: 'aui-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class RadioComponent extends BaseRadio {\n bem: Bem = buildBem('aui-radio');\n\n get rootClass() {\n return `${this.bem.block()} ${this.disabled ? 'isDisabled' : ''} ${\n this.checked ? 'isChecked' : ''\n }`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n radioGroup: RadioGroupComponent,\n focusMonitor: FocusMonitor,\n cdr: ChangeDetectorRef,\n ) {\n super(radioGroup, focusMonitor, cdr);\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Bem, buildBem } from '../../utils';\nimport { BaseRadio } from '../base-radio';\nimport { RadioGroupComponent } from '../radio-group/radio-group.component';\nimport { RadioSize } from '../radio.types';\n\n@Component({\n selector: 'aui-radio-button',\n templateUrl: './radio-button.component.html',\n styleUrls: ['./radio-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class RadioButtonComponent extends BaseRadio implements OnInit {\n bem: Bem = buildBem('aui-radio-button');\n\n size: RadioSize = RadioSize.Medium;\n isPlain = true;\n\n get rootClass() {\n return `${this.bem.block(this.size)} ${this.disabled ? 'isDisabled' : ''} ${\n this.checked ? 'isChecked' : ''\n } ${this.isPlain ? 'isPlain' : ''}`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n radioGroup: RadioGroupComponent,\n focusMonitor: FocusMonitor,\n cdr: ChangeDetectorRef,\n ) {\n super(radioGroup, focusMonitor, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.radioGroup.size$.pipe(takeUntil(this.destroy$$)).subscribe(size => {\n this.size = size;\n this.cdr.markForCheck();\n });\n this.radioGroup.isPlain$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(isPlain => {\n this.isPlain = isPlain;\n this.cdr.markForCheck();\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { RadioButtonComponent } from './radio-button/radio-button.component';\nimport { RadioGroupComponent } from './radio-group/radio-group.component';\nimport { RadioComponent } from './radio.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [RadioComponent, RadioGroupComponent, RadioButtonComponent],\n exports: [RadioComponent, RadioGroupComponent, RadioButtonComponent],\n})\nexport class RadioModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CommonFormControl } from '../form/public-api';\nimport { Bem, buildBem } from '../utils';\n\nconst prefix = 'aui-switch';\n\n@Component({\n selector: 'aui-switch',\n templateUrl: './switch.component.html',\n styleUrls: ['./switch.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true,\n },\n ],\n})\nexport class SwitchComponent extends CommonFormControl<boolean> {\n bem: Bem = buildBem(prefix);\n\n @Input()\n loading = false;\n\n writeValue(value: boolean) {\n this.value$$.next(value);\n }\n\n onSwitch() {\n if (this.disabled) {\n return;\n }\n this.emitValueChange(!this.snapshot.value);\n }\n\n onBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SwitchComponent } from './switch.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [SwitchComponent],\n exports: [SwitchComponent],\n})\nexport class SwitchModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n QueryList,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CommonFormControl } from '../../form/public-api';\nimport { TrackFn } from '../../select/public-api';\nimport { CheckboxComponent } from '../checkbox.component';\n\n@Component({\n selector: 'aui-checkbox-group',\n templateUrl: './checkbox-group.component.html',\n styleUrls: ['./checkbox-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxGroupComponent),\n multi: true,\n },\n ],\n})\nexport class CheckboxGroupComponent<T> extends CommonFormControl<T[]> {\n private _trackFn: TrackFn<T>;\n\n @Input()\n direction: 'row' | 'column' = 'row';\n\n @Input()\n get trackFn() {\n return this._trackFn;\n }\n\n set trackFn(val) {\n if (val !== this._trackFn) {\n this._trackFn = val;\n }\n }\n\n @ContentChildren(forwardRef(() => CheckboxComponent), {\n descendants: true,\n })\n checkboxes: QueryList<CheckboxComponent<T>>;\n\n writeValue(val: T[]) {\n this.value$$.next(val);\n }\n\n onCheckboxChange(checkbox: CheckboxComponent<T>) {\n if (this.onTouched) {\n this.onTouched();\n }\n const values = this.checkboxes\n .filter(item =>\n item === checkbox ? !item.snapshot.value : item.snapshot.value,\n )\n .map(item => item.label);\n this.emitValueChange(values);\n }\n\n onCheckboxBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject, Subject, combineLatest } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { CommonFormControl } from '../form/public-api';\n\nimport { CheckboxGroupComponent } from './checkbox-group/checkbox-group.component';\n\nlet uniqueId = 0;\n@Component({\n selector: 'aui-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class CheckboxComponent<T>\n extends CommonFormControl<boolean>\n implements AfterViewInit, OnDestroy {\n id = `aui-checkbox-${uniqueId++}`;\n\n @Input()\n name = '';\n\n @Input()\n type = 'label';\n\n @Input()\n get label() {\n return this._label;\n }\n\n set label(val) {\n this._label = val;\n this.label$$.next(val);\n }\n\n @Input()\n get indeterminate(): boolean {\n return this._indeterminate;\n }\n\n set indeterminate(value: boolean) {\n this._indeterminate = value;\n }\n\n @ViewChild('elRef', { static: true })\n elRef: ElementRef;\n\n private readonly checkboxGroup: CheckboxGroupComponent<T>;\n private _label: T;\n private readonly label$$ = new BehaviorSubject(this.label);\n private _indeterminate = false;\n private readonly destroy$$ = new Subject<void>();\n\n constructor(\n cdr: ChangeDetectorRef,\n @Optional()\n @Inject(forwardRef(() => CheckboxGroupComponent))\n checkboxGroup: CheckboxGroupComponent<T>,\n private readonly focusMonitor: FocusMonitor,\n ) {\n super(cdr);\n this.checkboxGroup = checkboxGroup;\n if (this.checkboxGroup) {\n combineLatest([this.checkboxGroup.value$, this.label$$])\n .pipe(\n takeUntil(this.destroy$$),\n map(([value, label]) => {\n if (this.checkboxGroup.trackFn) {\n return value?.some(\n v =>\n this.checkboxGroup.trackFn(v) ===\n this.checkboxGroup.trackFn(label),\n );\n }\n return value?.includes(label);\n }),\n )\n .subscribe(this.value$$);\n }\n }\n\n ngAfterViewInit() {\n this.focusMonitor.monitor(this.elRef.nativeElement, true);\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.focusMonitor.stopMonitoring(this.elRef.nativeElement);\n }\n\n writeValue(value: boolean) {\n this.value$$.next(value);\n }\n\n onClick() {\n if (this.disabled) {\n return;\n }\n if (this.indeterminate) {\n this._indeterminate = false;\n }\n this.emitValueChange(!this.snapshot.value);\n if (this.checkboxGroup) {\n this.checkboxGroup.onCheckboxChange(this);\n }\n }\n\n onBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n if (this.checkboxGroup) {\n this.checkboxGroup.onCheckboxBlur();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { CheckboxGroupComponent } from './checkbox-group/checkbox-group.component';\nimport { CheckboxComponent } from './checkbox.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [CheckboxComponent, CheckboxGroupComponent],\n exports: [CheckboxComponent, CheckboxGroupComponent],\n})\nexport class CheckboxModule {}\n","/* eslint-disable sonarjs/no-duplicate-string */\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n Renderer2,\n ViewEncapsulation,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ComponentSize } from '../types';\nimport { coerceAttrBoolean } from '../utils';\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: 'input[aui-input],textarea[aui-input]',\n template: '<ng-content></ng-content>',\n styleUrls: ['./input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class InputComponent {\n @Input()\n get size() {\n return this._size;\n }\n\n set size(val) {\n if (!val || this._size === val) {\n return;\n }\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n 'aui-input--' + this._size,\n );\n this.renderer.addClass(this.elementRef.nativeElement, 'aui-input--' + val);\n this._size = val;\n this.size$.next(val);\n }\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(val: boolean | '') {\n const booleanVal = coerceAttrBoolean(val);\n if (booleanVal === this._disabled) {\n return;\n }\n if (booleanVal) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'disabled', '');\n } else {\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'disabled');\n }\n this._disabled = booleanVal;\n this.disabled$.next(booleanVal);\n }\n\n private _size: ComponentSize = ComponentSize.Medium;\n private _disabled = false;\n\n size$ = new BehaviorSubject<ComponentSize>(this.size);\n\n /**\n * workaround for @link https://github.com/microsoft/TypeScript/pull/42425\n */\n disabled$ = new BehaviorSubject<boolean>(this.disabled as boolean);\n\n constructor(\n public elementRef: ElementRef<HTMLInputElement>,\n private readonly renderer: Renderer2,\n ) {\n this.renderer.addClass(this.elementRef.nativeElement, 'aui-input');\n this.renderer.addClass(\n this.elementRef.nativeElement,\n 'aui-input--' + this.size,\n );\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[auiInputAddonBefore]',\n})\nexport class InputAddonBeforeDirective {}\n\n@Directive({\n selector: '[auiInputAddonAfter]',\n})\nexport class InputAddonAfterDirective {}\n\n@Directive({\n selector: '[auiInputPrefix]',\n})\nexport class InputPrefixDirective {}\n\n@Directive({\n selector: '[auiInputSuffix]',\n})\nexport class InputSuffixDirective {}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { Bem, buildBem, watchContentExist } from '../../utils';\nimport {\n InputAddonAfterDirective,\n InputAddonBeforeDirective,\n InputPrefixDirective,\n InputSuffixDirective,\n} from '../helper-directives';\nimport { InputComponent } from '../input.component';\n\n@Component({\n selector: 'aui-input-group',\n templateUrl: './input-group.component.html',\n styleUrls: ['./input-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class InputGroupComponent implements AfterContentInit {\n bem: Bem = buildBem('aui-input-group');\n\n @ContentChildren(InputAddonBeforeDirective)\n private readonly addonBeforeRefs: QueryList<InputAddonBeforeDirective>;\n\n @ContentChildren(InputAddonAfterDirective)\n private readonly addonAfterRefs: QueryList<InputAddonAfterDirective>;\n\n @ContentChildren(InputPrefixDirective)\n private readonly prefixRefs: QueryList<InputPrefixDirective>;\n\n @ContentChildren(InputSuffixDirective)\n private readonly suffixRefs: QueryList<InputSuffixDirective>;\n\n @ContentChild(InputComponent, { static: false })\n inputRef: InputComponent;\n\n hasAddonBefore$: Observable<boolean>;\n hasAddonAfter$: Observable<boolean>;\n hasPrefix$: Observable<boolean>;\n hasSuffix$: Observable<boolean>;\n\n ngAfterContentInit() {\n this.hasAddonBefore$ = watchContentExist(this.addonBeforeRefs);\n this.hasAddonAfter$ = watchContentExist(this.addonAfterRefs);\n this.hasPrefix$ = watchContentExist(this.prefixRefs);\n this.hasSuffix$ = watchContentExist(this.suffixRefs);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem } from '../../utils';\n\n@Component({\n selector: 'aui-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class SearchComponent {\n bem: Bem = buildBem('aui-search');\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n @Input()\n searchButton = false;\n\n @Input()\n clearable = true;\n\n @Input()\n searching = false;\n\n @Input()\n placeholder = '';\n\n @Input()\n disabled = false;\n\n @Input()\n get keyword() {\n return this.value;\n }\n\n set keyword(value: string) {\n this.value = value;\n }\n\n @Output()\n keywordChange = new EventEmitter<string>();\n\n @Output()\n search = new EventEmitter<string>();\n\n @Output()\n clear = new EventEmitter<void>();\n\n value = '';\n\n get showSpinner() {\n return this.searching && !this.searchButton;\n }\n\n get showClear() {\n return !this.disabled && this.clearable && this.value && !this.showSpinner;\n }\n\n emitChange(value: string): void {\n this.value = value;\n this.keywordChange.emit(value);\n }\n\n emitSearch(): void {\n if (this.disabled) {\n return;\n }\n this.search.emit(this.value);\n }\n\n emitClear(): void {\n if (this.disabled) {\n return;\n }\n this.value = '';\n this.keywordChange.emit('');\n this.search.emit('');\n this.clear.emit();\n }\n}\n","import { ComponentSize } from '../../types';\n\nfunction getRowHeight(size: ComponentSize) {\n switch (size) {\n case ComponentSize.Large:\n return 33;\n case ComponentSize.Small:\n return 23;\n case ComponentSize.Mini:\n return 21;\n default:\n return 25;\n }\n}\n\nfunction getContainerPaddingPatch(size: ComponentSize) {\n switch (size) {\n case ComponentSize.Mini:\n return 3;\n case ComponentSize.Small:\n return 5;\n default:\n return 7;\n }\n}\n\nexport function createWithMaxRowCount<\n T extends {\n maxRowCount: number;\n customRowHeight?: number;\n size: ComponentSize;\n }\n>(component: T) {\n const hostPosition = () => (component.maxRowCount > 0 ? 'relative' : null);\n const hostDisplay = () => (component.maxRowCount ? 'block' : null);\n const maxHeight = () => {\n if (component.maxRowCount <= 0) {\n return null;\n }\n\n const paddingPatch = getContainerPaddingPatch(component.size);\n\n const rowHeight =\n isNaN(component.customRowHeight) || component.customRowHeight <= 0\n ? getRowHeight(component.size)\n : component.customRowHeight;\n\n return `${rowHeight * component.maxRowCount + paddingPatch}px`;\n };\n\n return {\n hostPosition,\n hostDisplay,\n maxHeight,\n };\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Injector,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport {\n AsyncValidatorFn,\n FormBuilder,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { map, publishReplay, refCount, take, tap } from 'rxjs/operators';\n\nimport { CommonFormControl } from '../../form/public-api';\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem } from '../../utils';\n\nimport { createWithMaxRowCount } from './with-max-row-count';\n\nexport const INPUT_ERROR_KEY = 'input_data_error';\n\n@Component({\n selector: 'aui-tags-input',\n templateUrl: './tags-input.component.html',\n styleUrls: [\n '../../input/input.component.scss',\n '../../tag/tag.component.scss',\n './tags-input.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TagsInputComponent),\n multi: true,\n },\n ],\n})\nexport class TagsInputComponent\n extends CommonFormControl<string[]>\n implements AfterViewInit, OnChanges {\n bem: Bem = buildBem('aui-tags-input');\n\n @Input()\n placeholder = '';\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n // TODO: implement this feature\n @Input()\n clearable: boolean | '' = false;\n\n @Input()\n allowRepeat: boolean | '' = false;\n\n @Input()\n allowEmpty: boolean | '' = false;\n\n @Input()\n readonlyTags: string[] | readonly string[] = [];\n\n @Input()\n maxRowCount = 0;\n\n @Input()\n customRowHeight = 0; // 0: use default style const value, > 1: for ```tagClassFn``` maybe affect lineHeight\n\n _inputValidator: ValidatorFn;\n _inputAsyncValidator: AsyncValidatorFn;\n\n @Input()\n set inputValidator(fn: ValidatorFn | ValidatorFn[]) {\n this._inputValidator = Array.isArray(fn) ? Validators.compose(fn) : fn;\n }\n\n get inputValidator() {\n return this._inputValidator;\n }\n\n @Input()\n set inputAsyncValidator(fn: AsyncValidatorFn | AsyncValidatorFn[]) {\n this._inputAsyncValidator = Array.isArray(fn)\n ? Validators.composeAsync(fn)\n : fn;\n }\n\n get inputAsyncValidator() {\n return this._inputAsyncValidator;\n }\n\n @ViewChild('inputRef', { static: true })\n inputRef: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputValueMirror', { static: true })\n inputValueMirror: ElementRef<HTMLElement>;\n\n @HostBinding('style.position')\n get hostPosition() {\n return this.withMaxRowCount.hostPosition();\n }\n\n @HostBinding('style.display')\n get hostDisplay() {\n return this.withMaxRowCount.hostDisplay();\n }\n\n get maxHeight() {\n return this.withMaxRowCount.maxHeight();\n }\n\n private readonly withMaxRowCount = createWithMaxRowCount(this);\n\n snapshot = {\n value: [] as string[],\n };\n\n value$: Observable<string[]> = this.value$$.asObservable().pipe(\n map(value => this.sortByReadonly(value)),\n tap(value => {\n this.snapshot.value = value;\n this.clearInput();\n }),\n publishReplay(1),\n refCount(),\n );\n\n focused = false;\n\n // 内置form control,仅作校验使用\n readonly inputControl = this.fb.control('');\n // 外层 FormControl,所有的校验逻辑针对输入数据\n controlContainer: NgControl;\n\n get rootClass() {\n const size = this.size || ComponentSize.Medium;\n return `aui-input ${this.bem.block(size)} ${\n this.disabled ? 'isDisabled' : ''\n } ${this.focused ? 'isFocused' : ''} ${\n this.clearable ? 'isClearable' : ''\n } ${this.maxRowCount > 0 ? 'withHeightLimit' : ''}`;\n }\n\n get tagSize() {\n return this.size === ComponentSize.Large\n ? ComponentSize.Medium\n : ComponentSize.Mini;\n }\n\n get inputClass() {\n return `${this.bem.element('input', {\n hidden:\n this.disabled || (!this.focused && !this.inputRef?.nativeElement.value),\n })} aui-tag aui-tag--${this.tagSize}`;\n }\n\n constructor(\n cdr: ChangeDetectorRef,\n private readonly fb: FormBuilder,\n private readonly renderer: Renderer2,\n private readonly injector: Injector,\n ) {\n super(cdr);\n }\n\n ngOnChanges({\n inputValidator,\n inputAsyncValidator,\n disabled,\n }: SimpleChanges) {\n if (disabled) {\n this.inputControl[disabled.currentValue ? 'disable' : 'enable']({\n emitEvent: false,\n });\n }\n if (inputValidator) {\n this.inputControl.setValidators(this.inputValidator);\n }\n if (inputAsyncValidator) {\n this.inputControl.setAsyncValidators(this.inputAsyncValidator);\n }\n }\n\n ngAfterViewInit() {\n this.controlContainer = this.injector.get(NgControl, null);\n }\n\n writeValue(val: string[]) {\n this.value$$.next(val || []);\n }\n\n onRemove(index: number) {\n const target = this.snapshot.value[index];\n if (target && this.readonlyTags.includes(target)) {\n return;\n }\n this.emitValueChange(this.snapshot.value.filter((_, i) => i !== index));\n }\n\n onInput() {\n const value = this.inputRef.nativeElement.value;\n // make sure value sync to span element\n requestAnimationFrame(() => {\n if (!value.length) {\n this.renderer.removeStyle(this.inputRef.nativeElement, 'width');\n } else {\n this.renderer.setStyle(\n this.inputRef.nativeElement,\n 'width',\n this.inputValueMirror.nativeElement.scrollWidth + 'px',\n );\n }\n });\n if (\n this.controlContainer?.control?.errors?.[INPUT_ERROR_KEY] &&\n Object.keys(this.controlContainer.control.errors).length === 1\n ) {\n this.controlContainer.control.setErrors(null);\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n const inputEl = event.target as HTMLInputElement;\n if (event.key === 'Backspace' && inputEl.value === '') {\n this.onRemove(this.snapshot.value.length - 1);\n event.stopPropagation();\n event.preventDefault();\n } else if (event.key === 'Enter') {\n event.stopPropagation();\n event.preventDefault();\n requestAnimationFrame(() => {\n this.pushValue(inputEl.value);\n });\n }\n }\n\n onInputFocus() {\n this.focused = true;\n }\n\n onInputBlur(event: Event) {\n this.focused = false;\n this.pushValue((event.target as HTMLInputElement).value);\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n trackByValue(_: number, value: string) {\n return value;\n }\n\n private sortByReadonly(items: string[]) {\n return this.readonlyTags.length\n ? [\n ...items.reduce(\n (acc, curr) => acc.add(curr),\n new Set(this.readonlyTags),\n ),\n ]\n : items;\n }\n\n private pushValue(value: string) {\n if (!this.allowEmpty && !value) {\n this.removeInputControlError();\n return;\n }\n if (!this.allowRepeat && this.snapshot.value.includes(value)) {\n return;\n }\n this.inputControl.setValue(this.inputRef.nativeElement.value);\n // inputControl 自身的状态为同步计算\n this.syncControlStatus();\n if (this.inputControl.valid) {\n this.emitValueChange(this.snapshot.value.concat(value));\n } else if (this.inputControl.pending) {\n // PENDING 后只会变为 VALID 或 INVALID 的决议状态\n this.inputControl.statusChanges.pipe(take(1)).subscribe(_ => {\n this.syncControlStatus();\n if (this.inputControl.valid) {\n this.emitValueChange(this.snapshot.value.concat(value));\n }\n });\n }\n }\n\n private syncControlStatus() {\n const { pending, valid, invalid, disabled, errors } = this.inputControl;\n if (valid) {\n this.removeInputControlError();\n this.controlContainer?.control.markAsDirty();\n } else if (pending) {\n this.controlContainer?.control.markAsPending();\n } else if (invalid) {\n this.controlContainer?.control.markAsDirty();\n this.controlContainer?.control.setErrors({\n ...(this.controlContainer?.control?.errors || {}),\n [INPUT_ERROR_KEY]: errors,\n });\n } else if (disabled) {\n // 与当前 input 校验脱离\n this.controlContainer?.control?.updateValueAndValidity();\n }\n }\n\n private removeInputControlError() {\n let errors = this.controlContainer?.control.errors;\n if (errors?.[INPUT_ERROR_KEY]) {\n delete errors[INPUT_ERROR_KEY];\n }\n if (Object.keys(errors || {}).length === 0) {\n errors = null;\n }\n this.controlContainer?.control.setErrors(errors);\n }\n\n private clearInput() {\n this.renderer.removeStyle(this.inputRef.nativeElement, 'width');\n this.inputRef.nativeElement.value = '';\n this.inputControl.setValue('');\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Output,\n} from '@angular/core';\n\n@Directive({\n selector: '[auiClickOutside]',\n exportAs: 'auiClickOutside',\n})\nexport class ClickOutsideDirective {\n @Output()\n auiClickOutside = new EventEmitter<Event>();\n\n @HostListener('document:click', ['$event'])\n onBodyClick(event: Event) {\n if (!this.el.nativeElement.contains(event.target as Node)) {\n this.auiClickOutside.emit(event);\n }\n }\n\n constructor(private readonly el: ElementRef<HTMLElement>) {}\n}\n","import { NgModule } from '@angular/core';\n\nimport { ClickOutsideDirective } from './click-outside.directive';\n\n@NgModule({\n declarations: [ClickOutsideDirective],\n exports: [ClickOutsideDirective],\n})\nexport class SharedModule {}\n","import { ValueOf } from '../types';\n\nexport const TagType = {\n Primary: 'primary',\n Success: 'success',\n Warning: 'warning',\n Error: 'error',\n Info: 'info',\n} as const;\n\nexport type TagType = ValueOf<typeof TagType>;\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ComponentSize } from '../types';\nimport { Bem, buildBem } from '../utils';\n\nimport { TagType } from './tag.types';\n\n@Component({\n selector: 'aui-tag',\n templateUrl: './tag.component.html',\n styleUrls: ['./tag.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class TagComponent {\n bem: Bem = buildBem('aui-tag');\n\n @Input()\n type: TagType = TagType.Primary;\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n @Input()\n closeable = false;\n\n @Input()\n border = false;\n\n @Input()\n solid = false;\n\n @Input()\n invalid = false;\n\n @Input()\n round = true;\n\n @Input()\n color = '';\n\n @Input()\n allowClick = false;\n\n @Output()\n close = new EventEmitter<void>();\n\n get rootClass() {\n return `${this.bem.block(\n this.type || TagType.Primary,\n this.size || ComponentSize.Medium,\n )} ${this.solid ? 'isSolid' : ''} ${this.border ? 'hasBorder' : ''} ${\n this.invalid ? 'isInvalid' : ''\n } ${this.round ? 'isRound' : ''} ${\n this.allowClick && this.isNormalTag ? 'allowClick' : ''\n }`;\n }\n\n // 只有常规标签支持单击样式\n get isNormalTag() {\n return !this.solid && !this.closeable && !this.invalid;\n }\n\n get customStyle() {\n const arr = this.color.split(',');\n return {\n color: arr[0],\n 'border-color': arr[0],\n 'background-color': arr[1] || arr[0],\n };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem } from '../../utils';\nimport { TagType } from '../tag.types';\n\n@Component({\n selector: 'aui-check-tag',\n templateUrl: './check-tag.component.html',\n styleUrls: ['./check-tag.component.scss', '../tag.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class CheckTagComponent {\n bem: Bem = buildBem('aui-tag');\n hovered = false;\n\n @Input()\n checked = false;\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n @Input()\n round = true;\n\n @Output()\n checkedChange = new EventEmitter<boolean>();\n\n get rootClass() {\n return `aui-check-tag ${this.bem.block(\n this.size,\n this.checked || this.hovered ? TagType.Primary : TagType.Info,\n )} ${this.round ? 'isRound' : ''}`;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { CheckTagComponent } from './check-tag/check-tag.component';\nimport { TagComponent } from './tag.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [TagComponent, CheckTagComponent],\n exports: [TagComponent, CheckTagComponent],\n})\nexport class TagModule {}\n","let hiddenTextarea: HTMLTextAreaElement;\n\nconst HIDDEN_STYLE = `\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n`;\n\nconst CONTEXT_STYLE = [\n 'letter-spacing',\n 'line-height',\n 'padding-top',\n 'padding-bottom',\n 'font-family',\n 'font-weight',\n 'font-size',\n 'text-rendering',\n 'text-transform',\n 'width',\n 'text-indent',\n 'padding-left',\n 'padding-right',\n 'border-width',\n 'box-sizing',\n];\n\nfunction calculateNodeStyling(targetElement: HTMLTextAreaElement) {\n const style = window.getComputedStyle(targetElement);\n\n const boxSizing = style.getPropertyValue('box-sizing');\n\n const paddingSize =\n parseFloat(style.getPropertyValue('padding-bottom')) +\n parseFloat(style.getPropertyValue('padding-top'));\n\n const borderSize =\n parseFloat(style.getPropertyValue('border-bottom-width')) +\n parseFloat(style.getPropertyValue('border-top-width'));\n\n const contextStyle = CONTEXT_STYLE.map(\n name => `${name}:${style.getPropertyValue(name)}`,\n ).join(';');\n\n return { contextStyle, paddingSize, borderSize, boxSizing };\n}\n\nexport function calcTextareaHeight(\n targetElement: HTMLTextAreaElement,\n minRows = 1,\n maxRows: number = null,\n) {\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n document.body.append(hiddenTextarea);\n }\n\n const { paddingSize, borderSize, contextStyle } = calculateNodeStyling(\n targetElement,\n );\n\n hiddenTextarea.setAttribute('style', `${contextStyle};${HIDDEN_STYLE}`);\n hiddenTextarea.value = targetElement.value || targetElement.placeholder || '';\n\n let height = hiddenTextarea.scrollHeight + borderSize;\n\n hiddenTextarea.value = '';\n const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n const result: {\n minHeight?: string;\n maxHeight?: string;\n height?: string;\n } = {};\n\n if (minRows !== null) {\n const minHeight = singleRowHeight * minRows + paddingSize + borderSize;\n height = Math.max(minHeight, height);\n result.minHeight = `${minHeight}px`;\n }\n if (maxRows !== null) {\n const maxHeight = singleRowHeight * maxRows + paddingSize + borderSize;\n height = Math.min(maxHeight, height);\n result.maxHeight = `${maxHeight}px`;\n }\n result.height = `${height}px`;\n\n if (hiddenTextarea.parentNode) {\n hiddenTextarea.remove();\n }\n hiddenTextarea = null;\n\n return result;\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nimport { calcTextareaHeight } from './utils';\n\nconst DEFAULT_VALUE = {\n minRows: 3,\n maxRows: 6,\n};\n\nexport interface AutoSizeValue {\n minRows: number;\n maxRows?: number;\n}\n\n/**\n * Directive to automatically resize a textarea to fit its content.\n */\n@Directive({\n selector:\n // tslint:disable-next-line: directive-selector\n 'textarea[autosize][ngModel],textarea[autosize][formControl],textarea[autosize][formControlName]',\n exportAs: 'TextareaAutosize',\n})\nexport class AutosizeDirective implements AfterViewInit, OnDestroy {\n private _autoSize: AutoSizeValue = DEFAULT_VALUE;\n\n private readonly destroy$$ = new Subject<void>();\n\n @Input('autosize')\n get autoSize() {\n return this._autoSize;\n }\n\n set autoSize(value: AutoSizeValue | '') {\n if (!value) {\n value = DEFAULT_VALUE;\n }\n this._autoSize = value;\n this.resizeTextarea();\n }\n\n constructor(\n private readonly elRef: ElementRef<HTMLTextAreaElement>,\n private readonly ngControl: NgControl,\n ) {}\n\n resizeTextarea() {\n const el = this.elRef.nativeElement;\n const autoSize = this._autoSize;\n Object.assign(\n el.style,\n calcTextareaHeight(\n el,\n autoSize.minRows ?? DEFAULT_VALUE.minRows,\n autoSize.maxRows || DEFAULT_VALUE.maxRows, // 0 is unacceptable\n ),\n );\n }\n\n ngAfterViewInit() {\n this.ngControl.valueChanges\n .pipe(startWith(null as void), takeUntil(this.destroy$$))\n .subscribe(() => this.resizeTextarea());\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CommonFormControl } from '../../form/public-api';\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem, coerceNumber } from '../../utils';\n\n@Component({\n selector: 'aui-number-input',\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberInputComponent),\n multi: true,\n },\n ],\n})\nexport class NumberInputComponent\n extends CommonFormControl<number>\n implements AfterViewInit {\n bem: Bem = buildBem('aui-number-input');\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n @Input()\n min: string | number = Number.MIN_SAFE_INTEGER;\n\n @Input()\n max: string | number = Number.MAX_SAFE_INTEGER;\n\n @Input()\n step = 1;\n\n @Input()\n precision: number;\n\n @Input()\n controls = true;\n\n @Input()\n placeholder = '';\n\n @Input()\n controlsPosition = '';\n\n @ViewChild('inputRef', { read: ElementRef })\n inputRef: ElementRef<HTMLInputElement>;\n\n isFocus = false;\n\n ngAfterViewInit() {\n this.inputRef.nativeElement.value = (this.snapshot.value ?? '') + '';\n }\n\n valueIn(v: number) {\n if (this.inputRef) {\n this.inputRef.nativeElement.value = (v ?? '') + '';\n }\n return v;\n }\n\n valueOut(value: number) {\n return Math.max(\n coerceNumber(this.min, Number.MIN_SAFE_INTEGER),\n Math.min(\n coerceNumber(this.max, Number.MAX_SAFE_INTEGER),\n this.parsePrecision(value),\n ),\n );\n }\n\n inputChanged(value: string) {\n this.emitValue(coerceNumber(value, this.snapshot.value));\n }\n\n takeOneStep(positive: boolean) {\n if (positive) {\n this.emitValue((this.snapshot.value ?? 0) + this.step);\n } else {\n this.emitValue((this.snapshot.value ?? 0) - this.step);\n }\n }\n\n private parsePrecision(value: number) {\n const precision = this.precision ?? this.getStepPrecision();\n return parseFloat(value.toFixed(precision));\n }\n\n private getStepPrecision() {\n const step = this.step + '';\n const index = step.indexOf('.');\n return index < 0 ? 0 : step.slice(index + 1).length;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '../button/public-api';\nimport { IconModule } from '../icon/public-api';\nimport { SharedModule } from '../shared/shared.module';\nimport { TagModule } from '../tag/public-api';\n\nimport { AutosizeDirective } from './autosize.directive';\nimport {\n InputAddonAfterDirective,\n InputAddonBeforeDirective,\n InputPrefixDirective,\n InputSuffixDirective,\n} from './helper-directives';\nimport { InputGroupComponent } from './input-group/input-group.component';\nimport { InputComponent } from './input.component';\nimport { NumberInputComponent } from './number-input/number-input.component';\nimport { SearchComponent } from './search/search.component';\nimport { TagsInputComponent } from './tags-input/tags-input.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule,\n IconModule,\n TagModule,\n SharedModule,\n ],\n declarations: [\n AutosizeDirective,\n InputComponent,\n InputGroupComponent,\n InputAddonBeforeDirective,\n InputAddonAfterDirective,\n InputPrefixDirective,\n InputSuffixDirective,\n SearchComponent,\n TagsInputComponent,\n NumberInputComponent,\n ],\n exports: [\n AutosizeDirective,\n InputComponent,\n InputGroupComponent,\n InputAddonBeforeDirective,\n InputAddonAfterDirective,\n InputPrefixDirective,\n InputSuffixDirective,\n SearchComponent,\n TagsInputComponent,\n NumberInputComponent,\n ],\n})\nexport class InputModule {}\n","import { I18NInterface } from '../i18n.type';\n\nexport const en: I18NInterface = {\n locale: 'en',\n translation: {\n start_date: 'Start Date',\n end_date: 'End Date',\n select_date: 'Select Date',\n select_time: 'Select time',\n clear: 'clear',\n confirm: 'confirm',\n to: 'To',\n year_suffix: '',\n month_suffix: '',\n monday: 'Mon',\n tuesday: 'Tues',\n wednesday: 'Wed',\n thursday: 'Thur',\n friday: 'Fri',\n saturday: 'Sat',\n sunday: 'Sun',\n now: 'Now',\n select_all: 'Select All',\n today: 'Today',\n },\n};\n","import { InjectionToken } from '@angular/core';\n\nimport { en } from './language/en';\n\nexport interface I18NInterface {\n locale: string;\n translation: Record<string, string>;\n}\nexport type StringMap = Record<string, string>;\n\nexport const I18NInterfaceToken = new InjectionToken('i18n token', {\n factory: () => en,\n});\n","import { Inject, Injectable, isDevMode } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { pluck } from 'rxjs/operators';\n\nimport { I18NInterface, I18NInterfaceToken, StringMap } from './i18n.type';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class I18nService {\n private readonly i18nChange$$ = new BehaviorSubject<I18NInterface>(\n this._i18n,\n );\n\n localeChange$ = this.i18nChange$$.asObservable().pipe(pluck('locale'));\n\n constructor(@Inject(I18NInterfaceToken) private _i18n: I18NInterface) {}\n\n setI18n(i18n: I18NInterface) {\n this._i18n = i18n;\n this.i18nChange$$.next(i18n);\n }\n\n get i18n() {\n return this._i18n;\n }\n\n translate(key: string, data?: StringMap, ignoreNonExist = false) {\n let content = this._i18n.translation[key];\n if (content == null) {\n if (isDevMode() && !ignoreNonExist) {\n console.warn(`No exist translate key for ${key}`);\n }\n return key;\n }\n if (data) {\n content = content.replaceAll(\n /{{([^{}]+)}}/,\n (_matched, $0: string) => data[$0.trim()],\n );\n }\n return content;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { I18nService } from './i18n.service';\nimport { StringMap } from './i18n.type';\n\n@Pipe({\n name: 'auiI18n',\n})\nexport class I18nPipe implements PipeTransform {\n constructor(private readonly i18n: I18nService) {}\n transform(value: any, data?: StringMap) {\n return this.i18n.translate(value, data);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { I18nPipe } from './i18n.pipe';\n\n@NgModule({\n declarations: [I18nPipe],\n exports: [I18nPipe],\n})\nexport class I18nModule {}\n","import { I18NInterface } from '../i18n.type';\n\nexport const zh: I18NInterface = {\n locale: 'zh',\n translation: {\n start_date: '开始日期',\n end_date: '结束日期',\n select_time: '选择时间',\n select_date: '选择日期',\n clear: '清除',\n confirm: '确定',\n to: '至',\n year_suffix: '年',\n month_suffix: '月',\n monday: '一',\n tuesday: '二',\n wednesday: '三',\n thursday: '四',\n friday: '五',\n saturday: '六',\n sunday: '日',\n now: '此刻',\n select_all: '全选',\n today: '今天',\n },\n};\n","import { Directive, Input } from '@angular/core';\n\nimport { TooltipActiveDirective } from '../tooltip/public-api';\n\n@Directive({\n selector: '[auiDropdownActive]',\n})\nexport class DropdownActiveDirective extends TooltipActiveDirective {\n @Input('auiDropdownActive')\n customClass: string | string[];\n}\n","// tslint:disable: no-output-rename\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnInit,\n Output,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\n\nimport {\n BaseTooltip,\n TooltipTrigger,\n TooltipType,\n} from '../tooltip/public-api';\n\nimport { DropdownActiveDirective } from './dropdown-active.directive';\nimport { MenuComponent } from './menu/menu.component';\n\n@Directive({\n selector: '[auiDropdown]',\n exportAs: 'auiDropdown',\n inputs: [\n 'class:auiDropdownClass',\n 'disabled:auiDropdownDisabled',\n 'position:auiDropdownPosition',\n 'trigger:auiDropdownTrigger',\n ],\n providers: [\n {\n provide: BaseTooltip,\n useExisting: DropdownDirective,\n },\n ],\n})\nexport class DropdownDirective extends BaseTooltip implements OnInit {\n @Input('auiDropdown')\n get menu() {\n return this._menu;\n }\n\n set menu(value) {\n if (value === this._menu) {\n return;\n }\n this._menu = value;\n this.content = value.template;\n }\n\n @Input('auiDropdownContext')\n lazyContentContext: any;\n\n @Input('auiDropdownHideOnClick')\n hideOnClick = true;\n\n @Output('auiDropdownShow')\n show: EventEmitter<void>;\n\n @Output('auiDropdownHide')\n hide: EventEmitter<void>;\n\n private _menu: MenuComponent;\n\n constructor(\n overlay: Overlay,\n viewContainerRef: ViewContainerRef,\n elRef: ElementRef,\n renderer: Renderer2,\n cdr: ChangeDetectorRef,\n ngZone: NgZone,\n ) {\n super(overlay, viewContainerRef, elRef, renderer, cdr, ngZone);\n new DropdownActiveDirective(this, elRef, renderer).customClass = 'isActive';\n this.type = TooltipType.Plain;\n this.position = 'bottom end';\n this.trigger = TooltipTrigger.Click;\n }\n\n ngOnInit() {\n this.show.pipe(debounceTime(0)).subscribe(() => {\n if (this.menu.lazyContent) {\n this.menu.lazyContent.attach(this.lazyContentContext);\n this.updatePosition();\n }\n });\n\n this.hide.subscribe(() => {\n if (this.menu.lazyContent) {\n this.menu.lazyContent.detach();\n }\n });\n }\n}\n","import { ValueOf } from '../types';\n\nexport const MenuItemType = {\n Default: 'default',\n Primary: 'primary',\n Success: 'success',\n Warning: 'warning',\n Danger: 'danger',\n} as const;\n\nexport type MenuItemType = ValueOf<typeof MenuItemType>;\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../../utils';\nimport { MenuItemType } from '../dropdown.types';\n\n@Component({\n selector: 'aui-menu-item',\n templateUrl: './menu-item.component.html',\n styleUrls: ['./menu-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MenuItemComponent {\n bem: Bem = buildBem('aui-menu-item');\n\n protected _disabled = false;\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value) {\n this._disabled = value;\n }\n\n @Input()\n divide = false;\n\n @Input()\n type: MenuItemType = MenuItemType.Default;\n\n @Input()\n actived = false;\n\n get className() {\n return `${this.bem.block(this.type)} ${this.divide ? 'hasDivider' : ''} ${\n this.actived ? 'isActive' : ''\n }`;\n }\n}\n","import { DomPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ApplicationRef,\n ComponentFactoryResolver,\n Directive,\n Inject,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\n@Directive({\n selector: '*[auiMenuContent]',\n exportAs: 'auiMenuContent',\n})\nexport class MenuContentDirective implements OnDestroy {\n private portal: TemplatePortal;\n private outlet: DomPortalOutlet;\n\n private readonly doc: Document;\n\n constructor(\n private readonly templateRef: TemplateRef<unknown>,\n private readonly appRef: ApplicationRef,\n private readonly viewContainerRef: ViewContainerRef,\n private readonly componentFactoryResolver: ComponentFactoryResolver,\n private readonly injector: Injector,\n @Inject(DOCUMENT) document: any,\n ) {\n this.doc = document;\n }\n\n attach(context?: any) {\n if (this.portal?.isAttached) {\n return;\n }\n if (!this.portal) {\n this.portal = new TemplatePortal(this.templateRef, this.viewContainerRef);\n }\n if (!this.outlet) {\n this.outlet = new DomPortalOutlet(\n this.doc.createElement('div'),\n this.componentFactoryResolver,\n this.appRef,\n this.injector,\n );\n }\n const el = this.templateRef.elementRef.nativeElement as HTMLElement;\n el.parentNode.insertBefore(this.outlet.outletElement, el);\n this.portal.attach(this.outlet, context);\n }\n\n detach() {\n if (this.portal?.isAttached) {\n this.portal.detach();\n }\n }\n\n ngOnDestroy() {\n if (this.outlet) {\n this.outlet.dispose();\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem } from '../../utils';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\n\nimport { MenuContentDirective } from './menu-content.directive';\n\n@Component({\n selector: 'aui-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MenuComponent {\n bem: Bem = buildBem('aui-menu');\n\n @Input()\n size: ComponentSize = ComponentSize.Small;\n\n @ViewChild(TemplateRef, { static: true })\n template: TemplateRef<any>;\n\n @ContentChild(MenuContentDirective, { static: true })\n lazyContent: MenuContentDirective;\n\n @ContentChildren(MenuItemComponent, { descendants: true })\n menuItems: QueryList<MenuItemComponent>;\n\n get hasEnabledItem() {\n return this.menuItems?.length > 0;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ButtonType } from '../../button/public-api';\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem, coerceAttrBoolean } from '../../utils';\nimport { MenuComponent } from '../menu/menu.component';\n\n@Component({\n selector: 'aui-dropdown-button',\n templateUrl: './dropdown-button.component.html',\n styleUrls: ['./dropdown-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class DropdownButtonComponent {\n bem: Bem = buildBem('aui-dropdown-button');\n\n @Input()\n type: ButtonType = ButtonType.Default;\n\n @Input()\n plain = true;\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n @Input()\n loading = false;\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(val: boolean | '') {\n this._disabled = coerceAttrBoolean(val);\n }\n\n @Output()\n buttonClick = new EventEmitter<Event>();\n\n @ContentChild(MenuComponent, { static: true })\n menu: MenuComponent;\n\n get disableTrigger() {\n return !this.menu?.hasEnabledItem;\n }\n\n private _disabled = false;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-menu-group',\n templateUrl: './menu-group.component.html',\n styleUrls: ['./menu-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MenuGroupComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { TooltipTrigger } from '../../tooltip/public-api';\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem } from '../../utils';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\n\n@Component({\n selector: 'aui-submenu',\n templateUrl: './submenu.component.html',\n styleUrls: ['./submenu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class SubmenuComponent extends MenuItemComponent {\n bem: Bem = buildBem('aui-submenu');\n\n @Input()\n trigger = TooltipTrigger.Hover;\n\n @Input()\n size: ComponentSize = ComponentSize.Small;\n\n @Input()\n get disabled() {\n return this._disabled || !this.hasEnabledItem;\n }\n\n @ContentChildren(MenuItemComponent, { descendants: true })\n menuItems: QueryList<MenuItemComponent>;\n\n get hasEnabledItem() {\n return this.menuItems?.length > 0;\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[auiMenuGroupTitle]',\n exportAs: 'auiMenuGroupTitle',\n host: {\n '[class.aui-menu-group__title]': 'true',\n },\n})\nexport class MenuGroupTitleDirective {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ButtonModule } from '../button/public-api';\nimport { IconModule } from '../icon/public-api';\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport { DropdownActiveDirective } from './dropdown-active.directive';\nimport { DropdownButtonComponent } from './dropdown-button/dropdown-button.component';\nimport { DropdownDirective } from './dropdown.directive';\nimport { MenuGroupTitleDirective } from './helper-directives';\nimport { MenuGroupComponent } from './menu-group/menu-group.component';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\nimport { MenuContentDirective } from './menu/menu-content.directive';\nimport { MenuComponent } from './menu/menu.component';\nimport { SubmenuComponent } from './submenu/submenu.component';\n\n@NgModule({\n imports: [CommonModule, TooltipModule, IconModule, ButtonModule],\n declarations: [\n DropdownDirective,\n DropdownActiveDirective,\n DropdownButtonComponent,\n MenuComponent,\n MenuGroupComponent,\n MenuGroupTitleDirective,\n MenuItemComponent,\n SubmenuComponent,\n MenuContentDirective,\n ],\n exports: [\n DropdownDirective,\n DropdownActiveDirective,\n DropdownButtonComponent,\n MenuComponent,\n MenuGroupComponent,\n MenuGroupTitleDirective,\n MenuItemComponent,\n SubmenuComponent,\n MenuContentDirective,\n ],\n})\nexport class DropdownModule {}\n","import { Directive } from '@angular/core';\n\nimport { MenuContentDirective } from '../dropdown/public-api';\n\n@Directive({\n selector: '[auiOptionGroupTitle]',\n exportAs: 'auiOptionGroupTitle',\n host: {\n '[class.aui-option-group__title]': 'true',\n },\n})\nexport class OptionGroupTitleDirective {}\n\n@Directive({\n selector: '*[auiOptionContent]',\n exportAs: 'auiOptionContent',\n})\nexport class OptionContentDirective extends MenuContentDirective {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n publishReplay,\n refCount,\n tap,\n} from 'rxjs/operators';\n\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem, coerceAttrBoolean } from '../../utils';\nimport { BaseSelect } from '../base-select';\nimport { MultiSelectComponent } from '../multi-select/multi-select.component';\n\n@Component({\n selector: 'aui-option',\n templateUrl: './option.component.html',\n styleUrls: ['./option.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class OptionComponent<T> {\n bem: Bem = buildBem('aui-option');\n\n private _disabled = false;\n private _label: string | TemplateRef<unknown> = '';\n private _labelContext: unknown = {};\n private _value: T;\n private readonly label$$ = new BehaviorSubject(this.label);\n\n private readonly labelContext$$ = new BehaviorSubject(this.labelContext);\n\n private readonly value$$ = new BehaviorSubject(this.value);\n\n @Input()\n get label() {\n return this._label;\n }\n\n set label(val) {\n this._label = val;\n this.label$$.next(val);\n }\n\n @Input()\n get labelContext() {\n return this._labelContext;\n }\n\n set labelContext(val) {\n this._labelContext = val;\n this.labelContext$$.next(val);\n }\n\n @Input()\n get value() {\n return this._value;\n }\n\n set value(val) {\n this._value = val;\n this.value$$.next(val);\n }\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(val: boolean | '') {\n this._disabled = coerceAttrBoolean(val);\n }\n\n isMulti = false;\n\n @ViewChild('elRef', { static: true })\n elRef: ElementRef;\n\n private readonly select: BaseSelect<T>;\n selected = false;\n visible = true;\n size: ComponentSize = ComponentSize.Medium;\n focused = false;\n\n value$ = this.value$$.asObservable();\n label$ = this.label$$.asObservable();\n labelContext$ = this.labelContext$$.asObservable();\n\n selected$: Observable<boolean>;\n size$: Observable<ComponentSize>;\n visible$: Observable<boolean>;\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n @Inject(forwardRef(() => BaseSelect))\n select: any, // FIXME: workaround temporarily\n ) {\n this.isMulti = select instanceof MultiSelectComponent;\n this.select = select;\n this.selected$ = combineLatest([this.select.values$, this.value$$]).pipe(\n map(([selectValue, selfValue]) =>\n selectValue\n ?.map(this.select.trackFn)\n .includes(this.select.trackFn(selfValue)),\n ),\n distinctUntilChanged(),\n tap(selected => {\n this.selected = selected;\n }),\n publishReplay(1),\n refCount(),\n );\n this.size$ = this.select.size$.pipe(\n tap(size => {\n this.size = size;\n }),\n );\n this.visible$ = combineLatest([\n this.select.filterString$,\n combineLatest([this.label$, this.value$, this.labelContext$]).pipe(\n map(([label, value, labelContext]) => ({ label, value, labelContext })),\n ),\n ]).pipe(\n map(([filterString, option]) =>\n this.select.filterFn(filterString, option),\n ),\n distinctUntilChanged(),\n tap(visible => {\n this.visible = visible;\n }),\n publishReplay(1),\n refCount(),\n );\n }\n\n onClick() {\n if (this.disabled) {\n return;\n }\n this.select.onOptionClick(this);\n }\n\n focus() {\n if (this.disabled) {\n return;\n }\n this.focused = true;\n this.cdr.markForCheck();\n }\n\n blur() {\n this.focused = false;\n this.cdr.markForCheck();\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { BehaviorSubject, Observable, Subject, combineLatest, of } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n takeUntil,\n} from 'rxjs/operators';\n\nimport { CommonFormControl } from '../form/public-api';\nimport { TooltipDirective } from '../tooltip/public-api';\nimport { ComponentSize } from '../types';\nimport {\n coerceAttrBoolean,\n coerceString,\n isTemplateRef,\n scrollIntoView,\n} from '../utils';\n\nimport { OptionContentDirective } from './helper-directives';\nimport { OptionComponent } from './option/option.component';\nimport { OptionFilterFn, SelectFilterOption, TrackFn } from './select.types';\n\n@Directive()\n// tslint:disable-next-line: directive-class-suffix\nexport abstract class BaseSelect<T, V = T>\n extends CommonFormControl<V>\n implements AfterContentInit, AfterViewInit, OnDestroy {\n @Input()\n get size() {\n return this._size;\n }\n\n set size(val) {\n if (!val || this._size === val) {\n return;\n }\n this._size = val;\n this.size$$.next(val);\n }\n\n @Input()\n get filterable() {\n return this._filterable;\n }\n\n set filterable(val: boolean | '') {\n this._filterable = coerceAttrBoolean(val);\n }\n\n @Input()\n get clearable() {\n return this._clearable;\n }\n\n set clearable(val: boolean | '') {\n this._clearable = coerceAttrBoolean(val);\n }\n\n @Input()\n filterFn: OptionFilterFn<T> = this._filterFn.bind(this);\n\n @Input()\n trackFn: TrackFn<T> = this._trackFn;\n\n @Input()\n labelFn?: (value: T) => string;\n\n @Input()\n get allowCreate() {\n return this._allowCreate;\n }\n\n set allowCreate(val: boolean | '') {\n this._allowCreate = coerceAttrBoolean(val);\n }\n\n get allOptions() {\n return [\n ...(this.customOptions ? this.customOptions.toArray() : []),\n ...(this.contentOptions ? this.contentOptions.toArray() : []),\n ];\n }\n\n get opened() {\n return this.tooltipRef.isCreated;\n }\n\n get inputReadonly() {\n return !(this.filterable && this.opened);\n }\n\n get filterString() {\n return this._filterString;\n }\n\n set filterString(val) {\n if (val !== this._filterString) {\n this._filterString = val;\n this.filterString$$.next(val);\n this.filterChange.emit(val);\n }\n }\n\n @Input()\n loading = false;\n\n @Input()\n placeholder = '';\n\n @Input()\n defaultFirstOption = true;\n\n @Input()\n lazy = true;\n\n @Output()\n filterChange = new EventEmitter<string>();\n\n @Output()\n show = new EventEmitter<void>();\n\n @Output()\n hide = new EventEmitter<void>();\n\n @ViewChild('selectRef', { static: true })\n protected selectRef: ElementRef<HTMLElement>;\n\n @ViewChild('tooltipRef', { static: true })\n protected tooltipRef: TooltipDirective;\n\n @ViewChild('optionListRef', { static: false })\n protected optionListRef: ElementRef;\n\n @ViewChild('inputtingOption', { static: false })\n protected inputtingOption: OptionComponent<T>;\n\n @ContentChild(OptionContentDirective)\n protected optionContent?: OptionContentDirective;\n\n @ViewChildren(OptionComponent)\n customOptions: QueryList<OptionComponent<T>>;\n\n @ContentChildren(OptionComponent, { descendants: true })\n contentOptions: QueryList<OptionComponent<T>>;\n\n isTemplateRef = isTemplateRef;\n\n /**\n * Utility field to make sure the users always see the value as type array\n */\n abstract readonly values$: Observable<T[]>;\n\n allOptions$: Observable<Array<OptionComponent<T>>>;\n\n protected focusedOption: OptionComponent<T>;\n\n private _size: ComponentSize = ComponentSize.Medium;\n private _filterable = true;\n private _clearable = false;\n private _allowCreate = false;\n private _filterString = '';\n\n protected destroy$$ = new Subject<void>();\n protected size$$ = new BehaviorSubject<ComponentSize>(this.size);\n private readonly filterString$$ = new BehaviorSubject<string>(\n this.filterString,\n );\n\n size$ = this.size$$.asObservable();\n filterString$ = this.filterString$$.asObservable();\n hasVisibleOption$: Observable<boolean>;\n hasMatchedOption$: Observable<boolean>;\n customCreatedOptions$: Observable<Array<SelectFilterOption<T>>>;\n containerWidth: string;\n\n ngAfterContentInit() {\n this.customCreatedOptions$ = combineLatest([\n this.values$,\n this.contentOptions.changes.pipe(\n startWith(this.contentOptions),\n switchMap((options: QueryList<OptionComponent<T>>) =>\n options.length > 0\n ? combineLatest(options.map(option => option.value$))\n : of([] as T[]),\n ),\n ),\n ]).pipe(\n map(([values, optionValues]) =>\n values.reduce<Array<SelectFilterOption<T>>>((acc, value) => {\n const included = optionValues\n .map(value => this.trackFn(value))\n .includes(this.trackFn(value));\n if (!included) {\n const label =\n this.labelFn?.(value) || coerceString(this.trackFn(value));\n if (label) {\n acc.push({\n label,\n value,\n });\n }\n }\n return acc;\n }, []),\n ),\n publishReplay(1),\n refCount(),\n );\n }\n\n ngAfterViewInit() {\n this.allOptions$ = combineLatest([\n this.customOptions.changes.pipe(startWith(this.customOptions)),\n this.contentOptions.changes.pipe(startWith(this.contentOptions)),\n ]).pipe(\n map(\n ([customOptions, contentOptions]: [\n QueryList<OptionComponent<T>>,\n QueryList<OptionComponent<T>>,\n ]) => [...customOptions.toArray(), ...contentOptions.toArray()],\n ),\n publishReplay(1),\n refCount(),\n );\n\n // support dynamic options loading on filtering\n this.allOptions$.pipe(takeUntil(this.destroy$$)).subscribe(() => {\n if (this.opened) {\n requestAnimationFrame(() => {\n this.autoFocusFirstOption();\n });\n }\n });\n\n this.hasMatchedOption$ = combineLatest([\n this.allOptions$.pipe(\n map(customOptions =>\n customOptions.filter(option => option !== this.inputtingOption),\n ),\n // eslint-disable-next-line sonarjs/no-identical-functions\n switchMap(options =>\n options.length > 0\n ? combineLatest(options.map(option => option.value$))\n : of([] as T[]),\n ),\n ),\n this.filterString$,\n ]).pipe(\n map(([values, filterString]) =>\n values.some(value => this.trackFn(value) === filterString),\n ),\n publishReplay(1),\n refCount(),\n );\n\n this.hasVisibleOption$ = this.contentOptions.changes.pipe(\n startWith(this.contentOptions),\n switchMap((options: QueryList<OptionComponent<T>>) =>\n options.length > 0\n ? combineLatest(options.map(option => option.visible$))\n : of([] as boolean[]),\n ),\n map(visible => visible.some(value => value)),\n publishReplay(1),\n refCount(),\n );\n }\n\n ngOnDestroy() {\n this.optionContent?.detach();\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n\n openOption() {\n this.tooltipRef.createTooltip();\n }\n\n closeOption() {\n this.tooltipRef.disposeTooltip();\n }\n\n onShowOptions() {\n const exec = () => {\n this.containerWidth = this.selectRef.nativeElement.offsetWidth + 'px';\n\n requestAnimationFrame(() => {\n this.autoFocusFirstOption();\n });\n\n this.show.emit();\n };\n\n if (this.optionContent) {\n requestAnimationFrame(() => {\n this.optionContent.attach();\n exec();\n });\n } else {\n exec();\n }\n }\n\n onHideOptions() {\n if (this.onTouched) {\n this.onTouched();\n }\n if (!this.lazy) {\n this.optionContent?.detach();\n }\n this.resetFocusedOption();\n this.filterString = '';\n this.hide.emit();\n }\n\n onInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.filterString = value;\n\n requestAnimationFrame(() => {\n this.autoFocusFirstOption();\n });\n\n this.cdr.markForCheck();\n }\n\n onKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case 'ArrowDown':\n this.focusOptionDir('down');\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.focusOptionDir('up');\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Enter':\n this.selectFocusedOption();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n this.escSelect();\n event.stopPropagation();\n event.preventDefault();\n break;\n }\n }\n\n onOptionClick(option: OptionComponent<T>) {\n this.resetFocusedOption(option);\n this.selectOption(option);\n }\n\n protected autoFocusFirstOption() {\n if (this.defaultFirstOption && this.allowCreate && this.filterString) {\n const matchedOption = this.contentOptions.find(\n option => this.trackFn(option.value) === this.filterString,\n );\n this.resetFocusedOption(matchedOption || this.customOptions.first);\n return;\n }\n\n const selectedOption = this.allOptions.find(\n option => option.selected && option.visible,\n );\n if (this.defaultFirstOption) {\n this.resetFocusedOption(\n selectedOption ||\n this.allOptions.find(option => option.visible && !option.disabled),\n );\n } else if (selectedOption) {\n this.scrollToOption(selectedOption);\n }\n }\n\n protected focusOptionDir(dir: 'down' | 'up') {\n if (!this.opened) {\n this.openOption();\n return;\n }\n const visibleOptions = this.allOptions.filter(\n option => option.visible && !option.disabled,\n );\n if (visibleOptions.length === 0) {\n return;\n }\n const step = dir === 'down' ? 1 : -1;\n let i = visibleOptions.indexOf(this.focusedOption);\n i = i + step;\n if (i >= visibleOptions.length) {\n i = 0;\n } else if (i < 0) {\n i = visibleOptions.length - 1;\n }\n this.resetFocusedOption(visibleOptions[i]);\n }\n\n protected resetFocusedOption(focusedOption?: OptionComponent<T>) {\n if (this.focusedOption === focusedOption) {\n return;\n }\n\n if (this.focusedOption) {\n this.focusedOption.blur();\n }\n\n this.focusedOption = focusedOption;\n\n if (this.focusedOption) {\n this.focusedOption.focus();\n this.scrollToOption(this.focusedOption);\n }\n }\n\n protected scrollToOption(option: OptionComponent<T>) {\n if (this.optionListRef) {\n scrollIntoView(\n this.optionListRef.nativeElement,\n option.elRef.nativeElement,\n );\n }\n }\n\n protected selectFocusedOption() {\n if (!this.opened) {\n this.openOption();\n return;\n }\n if (this.focusedOption) {\n this.selectOption(this.focusedOption);\n }\n }\n\n protected escSelect() {\n this.closeOption();\n }\n\n private _trackFn<T>(value: T) {\n return value;\n }\n\n private _filterFn(\n filterString: string,\n { label, value }: SelectFilterOption<T>,\n ) {\n return (\n (typeof label === 'string' && label) ||\n this.labelFn?.(value) ||\n coerceString(this.trackFn(value))\n )\n ?.toLowerCase()\n .includes(filterString?.toLowerCase() ?? '');\n }\n\n abstract selectOption(option: OptionComponent<T>): void;\n abstract clearValue(event: Event): void;\n}\n","import { TemplateRef } from '@angular/core';\n\nexport interface SelectOption {\n label: string | TemplateRef<unknown>;\n labelContext?: unknown;\n}\n\nexport interface SelectFilterOption<T> extends SelectOption {\n value: T;\n}\n\nexport type OptionFilterFn<T> = (\n filter: string,\n option: SelectFilterOption<T>,\n) => boolean;\n\nexport type TrackFn<T, R = unknown> = (value: T) => R;\n\nexport type TagClassFn<\n V,\n T extends string | TemplateRef<unknown> = string | TemplateRef<unknown>\n> = (\n label: T,\n value: V,\n) => // tslint:disable-next-line: max-union-size\nstring | string[] | Set<string> | { [className: string]: unknown };\n\nexport enum SelectAllStatus {\n Empty = '',\n Checked = 'checked',\n Indeterminate = 'indeterminate',\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Input,\n QueryList,\n Renderer2,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\nimport { createWithMaxRowCount } from '../../input/tags-input/with-max-row-count';\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem, coerceAttrBoolean, coerceString } from '../../utils';\nimport { BaseSelect } from '../base-select';\nimport { OptionComponent } from '../option/option.component';\nimport {\n SelectAllStatus,\n SelectFilterOption,\n TagClassFn,\n} from '../select.types';\n\n@Component({\n selector: 'aui-multi-select',\n templateUrl: './multi-select.component.html',\n styleUrls: [\n '../../input/input.component.scss',\n '../../tag/tag.component.scss',\n './multi-select.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent),\n multi: true,\n },\n {\n provide: BaseSelect,\n useExisting: MultiSelectComponent,\n },\n ],\n})\nexport class MultiSelectComponent<T = unknown>\n extends BaseSelect<T, T[]>\n implements AfterContentInit, AfterViewInit {\n bem: Bem = buildBem('aui-multi-select');\n bemSelectAll: Bem = buildBem('aui-option');\n selectedOptions$: Observable<Array<SelectFilterOption<T>>>;\n selectAllStatus$: Observable<SelectAllStatus>;\n selectAllStatus: SelectAllStatus;\n hasEnabledOptions$: Observable<boolean>;\n\n private _allowSelectAll = false;\n selectedValues: T[] = [];\n values$ = this.value$$.asObservable();\n\n @Input()\n tagClassFn: TagClassFn<T>;\n\n @Input()\n maxRowCount = 0;\n\n @Input()\n customRowHeight = 0; // 0: use default style const value, > 1: for ```tagClassFn``` maybe affect lineHeight\n\n @Input()\n get allowSelectAll() {\n return this._allowSelectAll;\n }\n\n set allowSelectAll(val: boolean | '') {\n this._allowSelectAll = coerceAttrBoolean(val);\n }\n\n @ViewChild('inputRef', { static: true })\n inputRef: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputValueMirror', { static: true })\n inputValueMirror: ElementRef<HTMLElement>;\n\n @HostBinding('style.position')\n get hostPosition() {\n return this.withMaxRowCount.hostPosition();\n }\n\n @HostBinding('style.display')\n get hostDisplay() {\n return this.withMaxRowCount.hostDisplay();\n }\n\n inputValue = '';\n\n get rootClass() {\n const size = this.size || ComponentSize.Medium;\n return `aui-input ${this.bem.block(size)} ${\n this.disabled ? 'isDisabled' : ''\n } ${this.focused ? 'isFocused' : ''} ${\n this.displayClearBtn ? 'isClearable' : ''\n } ${this.maxRowCount > 0 ? 'withHeightLimit' : ''}`;\n }\n\n get tagSize() {\n return this.size === ComponentSize.Large\n ? ComponentSize.Medium\n : ComponentSize.Mini;\n }\n\n get inputClass() {\n return `${this.bem.element('input', {\n hidden: this.inputReadonly,\n })} aui-tag aui-tag--${this.tagSize}`;\n }\n\n get displayClearBtn() {\n return !this.disabled && this.clearable && this.selectedValues.length;\n }\n\n get maxHeight() {\n return this.withMaxRowCount.maxHeight();\n }\n\n private readonly withMaxRowCount = createWithMaxRowCount(this);\n\n focused = false;\n\n trackByValue = (_: number, item: SelectFilterOption<T>) =>\n this.trackFn(item.value);\n\n constructor(cdr: ChangeDetectorRef, private readonly renderer: Renderer2) {\n super(cdr);\n this.values$.pipe(takeUntil(this.destroy$$)).subscribe(values => {\n this.selectedValues = values;\n });\n }\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n\n this.selectedOptions$ = combineLatest([\n this.value$,\n this.contentOptions.changes.pipe(\n startWith(this.contentOptions),\n switchMap((options: QueryList<OptionComponent<T>>) =>\n options.length > 0\n ? combineLatest(\n options.map(option =>\n combineLatest([\n option.value$,\n option.label$,\n option.labelContext$,\n ]).pipe(\n map(([value, label, labelContext]) => ({\n value,\n label,\n labelContext,\n })),\n ),\n ),\n )\n : of([] as Array<SelectFilterOption<T>>),\n ),\n ),\n ]).pipe(\n map(([values, options]) =>\n values.map(value => {\n const option = options.find(\n option => this.trackFn(option.value) === this.trackFn(value),\n );\n return option\n ? {\n label: option.label || coerceString(this.trackFn(option.value)),\n labelContext: option.labelContext,\n value: option.value,\n }\n : {\n label:\n this.labelFn?.(value) || coerceString(this.trackFn(value)),\n value,\n };\n }),\n ),\n publishReplay(1),\n refCount(),\n );\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.selectAllStatus$ = combineLatest([\n this.allOptions$,\n this.filterString$,\n ]).pipe(\n switchMap(([allOptions]) =>\n combineLatest([\n ...allOptions\n .filter(({ visible, disabled }) => visible && !disabled)\n ?.map(({ selected$ }) => selected$),\n ]),\n ),\n map(statuses => {\n const selected = statuses.filter(i => i);\n return selected.length === 0\n ? SelectAllStatus.Empty\n : selected.length !== statuses.length\n ? SelectAllStatus.Indeterminate\n : SelectAllStatus.Checked;\n }),\n startWith(SelectAllStatus.Empty),\n tap(selectAllStatus => (this.selectAllStatus = selectAllStatus)),\n publishReplay(1),\n refCount(),\n );\n this.hasEnabledOptions$ = combineLatest([\n this.allOptions$,\n this.filterString$,\n ]).pipe(\n map(\n ([allOptions]) =>\n !!allOptions.filter(({ visible, disabled }) => visible && !disabled)\n .length,\n ),\n );\n }\n\n onShowOptions() {\n super.onShowOptions();\n this.inputRef.nativeElement.focus();\n }\n\n onHideOptions() {\n super.onHideOptions();\n this.inputRef.nativeElement.value = '';\n this.renderer.removeStyle(this.inputRef.nativeElement, 'width');\n }\n\n onInput(event: Event) {\n super.onInput(event);\n this.setInputWidth();\n this.tooltipRef.updatePosition();\n }\n\n onInputFocus() {\n this.focused = true;\n }\n\n onInputBlur() {\n this.focused = false;\n this.closeOption();\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (\n event.key === 'Backspace' &&\n this.filterString === '' &&\n this.selectedValues.length > 0\n ) {\n this.removeValue(this.selectedValues[this.selectedValues.length - 1]);\n event.stopPropagation();\n event.preventDefault();\n } else if (event.key === 'Enter') {\n if (\n this.selectedValues\n .map(value => this.trackFn(value))\n .includes((event.target as HTMLInputElement).value)\n ) {\n return;\n }\n this.selectFocusedOption();\n event.stopPropagation();\n event.preventDefault();\n } else {\n super.onKeyDown(event);\n }\n }\n\n writeValue(val: T[]) {\n this.value$$.next(val || []);\n this.resetInput();\n requestAnimationFrame(() => {\n this.tooltipRef.updatePosition();\n });\n }\n\n selectOption(option: OptionComponent<T>) {\n if (option.selected) {\n this.removeValue(option.value);\n } else {\n this.addValue(option.value);\n }\n const isCustom = !this.contentOptions.some(\n ({ value }) => value === option.value,\n );\n if (isCustom) {\n this.resetFocusedOption();\n }\n }\n\n addValue(value: T) {\n const values = this.selectedValues.concat(value);\n this.emitValueChange(values);\n if (this.onChange) {\n this.resetInput();\n requestAnimationFrame(() => {\n this.tooltipRef.updatePosition();\n });\n }\n }\n\n removeValue(value: T) {\n const values = this.selectedValues.filter(\n item => this.trackFn(item) !== this.trackFn(value),\n );\n this.emitValueChange(values);\n if (this.onChange) {\n this.resetInput();\n requestAnimationFrame(() => {\n this.tooltipRef.updatePosition();\n });\n }\n }\n\n clearValue(event: Event) {\n this.emitValueChange([]);\n event.stopPropagation();\n event.preventDefault();\n }\n\n onSelectAllClick() {\n if (this.disabled) {\n return;\n }\n const visibleOptionsValue = this.allOptions\n .filter(({ visible, disabled }) => visible && !disabled)\n .map(({ value }) => value);\n if (this.selectAllStatus === SelectAllStatus.Checked) {\n this.emitValueChange(\n this.snapshot.value.filter(\n value => !visibleOptionsValue.includes(value),\n ),\n );\n } else {\n this.emitValueChange([\n ...new Set(this.snapshot.value.concat(visibleOptionsValue)),\n ]);\n }\n }\n\n private resetInput() {\n this.inputRef.nativeElement.value = '';\n this.setInputWidth();\n this.filterString = '';\n }\n\n // calculate input element width according to its value\n private setInputWidth() {\n const { value } = this.inputRef.nativeElement;\n if (!value.length) {\n this.inputValue = '';\n requestAnimationFrame(() => {\n this.renderer.removeStyle(this.inputRef.nativeElement, 'width');\n });\n } else {\n this.inputValue = value;\n requestAnimationFrame(() => {\n this.renderer.setStyle(\n this.inputRef.nativeElement,\n 'width',\n `${this.inputValueMirror.nativeElement.scrollWidth}px`,\n );\n });\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n QueryList,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n} from 'rxjs/operators';\n\nimport { OptionComponent } from '../option/option.component';\n\n@Component({\n selector: 'aui-option-group',\n templateUrl: './option-group.component.html',\n styleUrls: ['./option-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class OptionGroupComponent<T> implements AfterContentInit {\n @ContentChildren(forwardRef(() => OptionComponent))\n options: QueryList<OptionComponent<T>>;\n\n hasVisibleOption$: Observable<boolean>;\n\n ngAfterContentInit() {\n this.hasVisibleOption$ = this.options.changes.pipe(\n startWith(this.options),\n switchMap((options: QueryList<OptionComponent<T>>) =>\n options.length > 0\n ? combineLatest(options.map(node => node.visible$))\n : of([false]),\n ),\n map(visible => visible.some(value => value)),\n publishReplay(1),\n refCount(),\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-option-placeholder',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class OptionPlaceholderComponent {}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n} from 'rxjs/operators';\n\nimport { InputComponent } from '../input/public-api';\nimport { coerceString } from '../utils';\n\nimport { BaseSelect } from './base-select';\nimport { OptionComponent } from './option/option.component';\nimport { SelectOption } from './select.types';\n\n@Component({\n selector: 'aui-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n {\n provide: BaseSelect,\n useExisting: SelectComponent,\n },\n ],\n})\nexport class SelectComponent<T = unknown>\n extends BaseSelect<T>\n implements AfterContentInit {\n @ViewChild('inputRef', { static: true })\n inputRef: InputComponent;\n\n values$ = this.value$$.asObservable().pipe(map(val => [val]));\n\n selectedOption$: Observable<SelectOption>;\n\n hasSelected$: Observable<boolean>;\n\n get rootClass() {\n return `aui-select aui-select--${this.size}`;\n }\n\n get containerClass() {\n return `aui-option-container aui-option-container--${this.size}`;\n }\n\n isClearable = (hasSelected: boolean) =>\n !this.disabled && this.clearable && hasSelected;\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n\n this.selectedOption$ = combineLatest([\n this.contentOptions.changes.pipe(\n startWith(this.contentOptions),\n switchMap((options: QueryList<OptionComponent<T>>) =>\n combineLatest(options.map(option => option.selected$)).pipe(\n startWith(null as void),\n map(() => options.find(option => option.selected)),\n distinctUntilChanged(),\n switchMap(option =>\n option\n ? combineLatest([\n option.value$,\n option.label$,\n option.labelContext$,\n ]).pipe(\n map(([value, label, labelContext]) => ({\n value,\n label,\n labelContext,\n })),\n )\n : of(null as void),\n ),\n ),\n ),\n ),\n this.value$,\n ]).pipe(\n map(([option, value]) =>\n option\n ? {\n label:\n option.label ||\n this.labelFn?.(option.value) ||\n coerceString(this.trackFn(option.value)),\n // https://github.com/angular/angular/issues/24515\n labelContext: {\n ...(option.labelContext as Record<string, unknown>),\n },\n }\n : {\n label: this.labelFn?.(value) || coerceString(this.trackFn(value)),\n },\n ),\n publishReplay(1),\n refCount(),\n );\n\n this.hasSelected$ = this.selectedOption$.pipe(\n map(({ label }) => !!label),\n publishReplay(1),\n refCount(),\n );\n }\n\n onShowOptions() {\n super.onShowOptions();\n }\n\n onHideOptions() {\n super.onHideOptions();\n this.inputRef.elementRef.nativeElement.value = '';\n }\n\n writeValue(val: T) {\n this.value$$.next(val);\n this.closeOption();\n }\n\n selectOption(option: OptionComponent<T>) {\n this.emitValueChange(option.value);\n this.closeOption();\n }\n\n clearValue(event: Event) {\n this.emitValueChange(null);\n event.stopPropagation();\n event.preventDefault();\n }\n}\n","import { AfterContentInit, Directive, Input, forwardRef } from '@angular/core';\nimport {\n AbstractControl,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n ValidatorFn,\n} from '@angular/forms';\n\nimport { coerceAttrBoolean } from '../utils';\n\nimport { SelectComponent } from './select.component';\nimport { TrackFn } from './select.types';\n\n// @dynamic\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class AuiSelectValidators {\n static includes<T>(\n options: T[],\n trackFn: TrackFn<T> = val => val,\n ): ValidatorFn {\n return (control: AbstractControl) =>\n options.some(option => trackFn(option) === trackFn(control.value))\n ? null\n : {\n includes: control.value,\n };\n }\n}\n\n@Directive({\n selector:\n // tslint:disable-next-line: directive-selector\n 'aui-select[ngModel][includes],aui-select[formControl][includes],aui-select[formControlName][includes]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => IncludesDirective),\n multi: true,\n },\n ],\n})\nexport class IncludesDirective<T> implements Validator, AfterContentInit {\n @Input()\n get includes() {\n return this._includes;\n }\n\n set includes(val: boolean | '') {\n this._includes = coerceAttrBoolean(val);\n if (this.onValidatorChange) {\n this.onValidatorChange();\n }\n }\n\n @Input()\n trackFn: TrackFn<T>;\n\n private _includes = false;\n\n onValidatorChange: () => void;\n\n constructor(private readonly selectRef: SelectComponent<T>) {}\n\n ngAfterContentInit() {\n this.selectRef.contentOptions.changes.subscribe(() => {\n if (this.onValidatorChange) {\n this.onValidatorChange();\n }\n });\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChange = fn;\n }\n\n validate(control: AbstractControl): ValidationErrors {\n if (!this.selectRef.contentOptions || !control.value) {\n return;\n }\n return !this.includes\n ? null\n : AuiSelectValidators.includes(\n this.selectRef.contentOptions\n .filter(option => !option.disabled)\n .map(option => option.value),\n this.trackFn,\n )(control);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { I18nModule } from '../i18n/public-api';\nimport { IconModule } from '../icon/public-api';\nimport { InputModule } from '../input/public-api';\nimport { TagModule } from '../tag/public-api';\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport {\n OptionContentDirective,\n OptionGroupTitleDirective,\n} from './helper-directives';\nimport { MultiSelectComponent } from './multi-select/multi-select.component';\nimport { OptionGroupComponent } from './option-group/option-group.component';\nimport { OptionPlaceholderComponent } from './option-placeholder.component';\nimport { OptionComponent } from './option/option.component';\nimport { SelectComponent } from './select.component';\nimport { IncludesDirective } from './validators';\n\n@NgModule({\n imports: [\n CommonModule,\n InputModule,\n I18nModule,\n IconModule,\n TooltipModule,\n TagModule,\n ],\n declarations: [\n SelectComponent,\n OptionComponent,\n OptionGroupComponent,\n OptionPlaceholderComponent,\n MultiSelectComponent,\n IncludesDirective,\n OptionGroupTitleDirective,\n OptionContentDirective,\n ],\n exports: [\n SelectComponent,\n OptionComponent,\n OptionGroupComponent,\n OptionPlaceholderComponent,\n MultiSelectComponent,\n IncludesDirective,\n OptionGroupTitleDirective,\n OptionContentDirective,\n ],\n})\nexport class SelectModule {}\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of MatPaginatorIntl and\n * include it in a custom provider\n */\n@Injectable()\nexport class PaginatorIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the page size selector. */\n itemsPerPageLabel = 'perPage';\n\n jumperLabelPrefix = 'Goto';\n jumperLabelSuffix = '';\n\n getTotalLabel = (length: number) => `Total ${length}`;\n}\n\nexport function PAGINATOR_INTL_PROVIDER_FACTORY(parentIntl: PaginatorIntl) {\n return parentIntl || new PaginatorIntl();\n}\n\nexport const PAGINATOR_INTL_PROVIDER = {\n // If there is already an PaginatorIntl available, use that. Otherwise, provide a new one.\n provide: PaginatorIntl,\n deps: [[new Optional(), new SkipSelf(), PaginatorIntl]],\n useFactory: PAGINATOR_INTL_PROVIDER_FACTORY,\n};\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { PaginatorIntl } from './paginator-intl';\n\n/**\n * Change event object that is emitted when the user selects a\n * different page size or navigates to another page.\n * @deprecated use Output events directly instead\n */\nexport class PageEvent {\n /** The current page index. */\n pageIndex: number;\n\n /**\n * Index of the page that was selected previously.\n */\n previousPageIndex: number;\n\n /** The current page size */\n pageSize: number;\n\n /** The current total number of items being paged */\n length: number;\n}\n\n@Component({\n selector: 'aui-paginator',\n templateUrl: 'paginator.component.html',\n styleUrls: ['paginator.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class PaginatorComponent implements OnDestroy {\n bem: Bem = buildBem('aui-paginator');\n\n @Input()\n get pageIndex() {\n return this.currentPage - 1;\n }\n\n set pageIndex(val) {\n this.currentPage = val + 1;\n }\n\n @Input()\n currentPage = 1;\n\n @Input()\n pageSize = 20;\n\n @Input()\n pageSizeOptions: number[] = [20, 50, 100];\n\n @Input()\n total = 0;\n\n /**\n * @deprecated use `total` instead\n */\n @Input()\n get length() {\n return this.total;\n }\n\n set length(val) {\n this.total = val;\n }\n\n @Input()\n layout: string | string[] = 'total,pager,sizes';\n\n @Input()\n disabled = false;\n\n @Output()\n readonly currentPageChange = new EventEmitter<number>();\n\n @Output()\n readonly pageSizeChange = new EventEmitter<number>();\n\n private readonly intlChangeSub: Subscription;\n\n get pageCount() {\n return Math.ceil(this.total / this.pageSize);\n }\n\n constructor(\n public intl: PaginatorIntl,\n private readonly cdr: ChangeDetectorRef,\n ) {\n this.intlChangeSub = intl.changes.subscribe(() => this.cdr.markForCheck());\n }\n\n ngOnDestroy() {\n this.intlChangeSub.unsubscribe();\n }\n\n getLayoutArr() {\n return typeof this.layout === 'string'\n ? this.layout.split(',').map(item => item.trim())\n : this.layout;\n }\n\n getCenterPages() {\n const start = Math.min(\n Math.max(0, this.currentPage - 4),\n Math.max(0, this.pageCount - 7),\n );\n return Array.from({ length: Math.max(this.pageCount - 2, 0) })\n .fill(null)\n .map((_, index) => index + 2)\n .slice(start, start + 5);\n }\n\n jumpTo(page: number) {\n if (page === this.currentPage) {\n return;\n }\n this.currentPageChange.emit(page);\n }\n\n navigate(step: number) {\n this.jumpTo(Math.min(Math.max(this.currentPage + step, 1), this.pageCount));\n }\n\n changePageSize(size: number) {\n if (size === this.pageSize) {\n return;\n }\n this.pageSizeChange.emit(size);\n }\n\n onKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n const inputEl = event.target as HTMLInputElement;\n const nextPage = parseInt(inputEl.value, 10);\n if (nextPage > 0 && nextPage <= this.pageCount) {\n this.jumpTo(nextPage);\n } else {\n inputEl.value = this.currentPage + '';\n }\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n trackByIndex(index: number) {\n return index;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ButtonModule } from '../button/public-api';\nimport { IconModule } from '../icon/public-api';\nimport { InputModule } from '../input/public-api';\nimport { SelectModule } from '../select/public-api';\n\nimport { PAGINATOR_INTL_PROVIDER } from './paginator-intl';\nimport { PaginatorComponent } from './paginator.component';\n\n@NgModule({\n imports: [CommonModule, ButtonModule, IconModule, SelectModule, InputModule],\n declarations: [PaginatorComponent],\n exports: [PaginatorComponent],\n providers: [PAGINATOR_INTL_PROVIDER],\n})\nexport class PaginatorModule {}\n","import { ValueOf } from '../types';\n\nexport const InlineAlertType = {\n Primary: 'primary',\n Success: 'success',\n Warning: 'warning',\n Danger: 'danger',\n Error: 'error',\n Info: 'info',\n} as const;\n\nexport type InlineAlertType = ValueOf<typeof InlineAlertType>;\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[auiInlineAlertTitle]',\n exportAs: 'auiInlineAlertTitle',\n})\nexport class InlineAlertTitleDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { InlineAlertTitleDirective } from './helper-directives';\nimport { InlineAlertType } from './inline-alert.types';\n\n@Component({\n selector: 'aui-inline-alert',\n templateUrl: './inline-alert.component.html',\n styleUrls: ['./inline-alert.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class InlineAlertComponent {\n bem: Bem = buildBem('aui-inline-alert');\n\n @Input()\n title: string;\n\n @Input()\n content: string;\n\n @Input()\n closable = false;\n\n @Input()\n type: InlineAlertType = InlineAlertType.Info;\n\n @Output()\n close = new EventEmitter<void>();\n\n @ContentChild(InlineAlertTitleDirective)\n titleRef: InlineAlertTitleDirective;\n\n visible = true;\n\n iconMap(type: InlineAlertType) {\n switch (type) {\n case InlineAlertType.Success:\n return 'check_circle_s';\n case InlineAlertType.Warning:\n return 'exclamation_circle_s';\n case InlineAlertType.Danger:\n case InlineAlertType.Error:\n return 'exclamation_triangle_s';\n case InlineAlertType.Primary:\n case InlineAlertType.Info:\n default:\n return 'info_circle_s';\n }\n }\n\n closeSelf() {\n this.visible = false;\n this.close.emit();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { InlineAlertTitleDirective } from './helper-directives';\nimport { InlineAlertComponent } from './inline-alert.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [InlineAlertComponent, InlineAlertTitleDirective],\n exports: [InlineAlertComponent, InlineAlertTitleDirective],\n})\nexport class InlineAlertModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-breadcrumb-item',\n templateUrl: './breadcrumb-item.component.html',\n styleUrls: ['./breadcrumb-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class BreadcrumbItemComponent {\n get separator() {\n return this._separator;\n }\n\n set separator(val) {\n this._separator = val;\n this.cdr.markForCheck();\n }\n\n get separatorIcon() {\n return this._separatorIcon;\n }\n\n set separatorIcon(val) {\n this._separatorIcon = val;\n this.cdr.markForCheck();\n }\n\n private _separator = '/';\n private _separatorIcon = '';\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\n\n@Component({\n selector: 'aui-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class BreadcrumbComponent implements AfterContentInit {\n @Input()\n get separator() {\n return this._separator;\n }\n\n set separator(val) {\n if (val === this._separator) {\n return;\n }\n this._separator = val;\n if (this.items) {\n this.items.forEach(item => {\n item.separator = val;\n });\n }\n }\n\n @Input()\n get separatorIcon() {\n return this._separatorIcon;\n }\n\n set separatorIcon(val) {\n if (val === this._separatorIcon) {\n return;\n }\n this._separatorIcon = val;\n if (this.items) {\n this.items.forEach(item => {\n item.separatorIcon = val;\n });\n }\n }\n\n @ContentChildren(BreadcrumbItemComponent)\n items: QueryList<BreadcrumbItemComponent>;\n\n private _separator = '/';\n private _separatorIcon = '';\n\n ngAfterContentInit() {\n this.items.forEach(item => {\n item.separator = this.separator;\n item.separatorIcon = this.separatorIcon;\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { BreadcrumbComponent } from './breadcrumb.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [BreadcrumbComponent, BreadcrumbItemComponent],\n exports: [BreadcrumbComponent, BreadcrumbItemComponent],\n})\nexport class BreadcrumbModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-message-wrapper',\n styleUrls: ['./message-wrapper.component.scss'],\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class MessageWrapperComponent {\n constructor(public elementRef: ElementRef) {}\n}\n","import {\n AnimationTriggerMetadata,\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\n\nexport const MessageAnimations: {\n readonly inOut: AnimationTriggerMetadata;\n} = {\n inOut: trigger('inOut', [\n state(\n 'flyRight, flyLeft',\n style({ opacity: 1, transform: 'translateX(0)' }),\n ),\n state('slideDown', style({ opacity: 1, transform: 'translateY(0)' })),\n transition('* => slideDown', [\n style({ opacity: 0, transform: 'translateY(-50%)' }),\n animate('100ms ease-in-out'),\n ]),\n state('slideUp', style({ opacity: 0, 'margin-top': '-50%' })),\n transition('* => slideUp', [\n style({ opacity: 1, 'margin-top': '0' }),\n animate('100ms 200ms ease-in-out'),\n ]),\n\n state('flyLeft', style({ opacity: 1, transform: 'translateX(0)' })),\n transition('* => flyLeft', [\n style({ opacity: 0, transform: 'translateX(5%)' }),\n animate('100ms ease-in-out'),\n ]),\n state('flyUp', style({ opacity: 0, 'margin-top': '-30%' })),\n transition('* => flyUp', [\n style({ opacity: 1, 'margin-top': '0' }),\n animate('100ms 150ms ease-in-out'),\n ]),\n state('void', style({ opacity: 0 })),\n state('true', style({ opacity: 1 })),\n state('false', style({ opacity: 0 })),\n transition('* => true', animate('150ms cubic-bezier(0.0, 0.0, 0.2, 1)')),\n transition('* => void', animate('150ms cubic-bezier(0.4, 0.0, 1, 1)')),\n ]),\n};\n","import { InjectionToken } from '@angular/core';\n\nexport enum MessageType {\n Error = 'error',\n Success = 'success',\n Warning = 'warning',\n Info = 'info',\n}\n\n/**\n * messageOptions: contains Basic configuration\n * Just for some containers like Message-Container\n * Detailed document: http://confluence.alaudatech.com/pages/viewpage.action?pageId=23383163\n */\n\nexport class MessageConfig {\n /**\n * the message type\n */\n type?: MessageType;\n\n /**\n * The id of this message, The same ID can only have one at the same time\n */\n id?: string | number;\n\n /**\n * automatically shut down after a few seconds, if <= 0 ,non automatic closure\n */\n duration?: number;\n\n /**\n * message content\n */\n content?: string;\n}\n\nexport interface MessageGlobalConfig {\n /**\n * max instance in one time\n */\n maxStack: number;\n duration: number | { [key in MessageType]: number };\n}\n\nexport const MESSAGE_CONFIG = new InjectionToken<MessageGlobalConfig>(\n 'MESSAGE_CONFIG',\n);\n\nexport const MESSAGE_DEFAULT_CONFIG = {\n duration: 3000,\n maxStack: 8,\n};\n","import { AnimationEvent } from '@angular/animations';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { MessageAnimations } from './message-animations';\nimport { MessageConfig, MessageType } from './message.config';\n\nlet uniqueId = 0;\n\nconst typeIcon: { [key: string]: string } = {\n [MessageType.Error]: 'exclamation_triangle_s',\n [MessageType.Success]: 'check_circle_s',\n [MessageType.Warning]: 'exclamation_circle_s',\n [MessageType.Info]: 'info_circle_s',\n};\n\n@Component({\n selector: 'aui-message',\n templateUrl: './message.component.html',\n animations: [MessageAnimations.inOut],\n styleUrls: ['./message.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class MessageComponent implements AfterViewInit {\n protected readonly animateStartState: string = 'slideDown';\n protected readonly animateStartEnd: string = 'slideUp';\n\n bem: Bem = buildBem('aui-message');\n animateState = this.animateStartState;\n uniqueId = `aui-message-${uniqueId++}`;\n beforeClosed: Subject<void> = new Subject();\n afterClosed: Subject<void> = new Subject();\n\n id: string | number;\n type: MessageType;\n content: string;\n duration: number;\n\n get icon(): string {\n return typeIcon[this.type];\n }\n\n protected timerId: number;\n\n constructor(\n protected viewContainerRef: ViewContainerRef,\n protected cdr: ChangeDetectorRef,\n ) {}\n\n ngAfterViewInit(): void {\n if (this.duration > 0) {\n this.timerId = window.setTimeout(() => {\n this.remove();\n }, this.duration);\n }\n }\n\n setConfig(config: MessageConfig) {\n this.id = config.id;\n this.type = config.type;\n this.content = config.content;\n this.duration = config.duration;\n }\n\n remove() {\n clearTimeout(this.timerId);\n this.beforeClosed.next();\n this.beforeClosed.complete();\n this.animateState = this.animateStartEnd;\n this.cdr.markForCheck();\n }\n\n onAnimationEnd(event: AnimationEvent) {\n try {\n if (\n this.viewContainerRef.element &&\n event.toState === this.animateStartEnd\n ) {\n (this.viewContainerRef.element.nativeElement as HTMLElement).remove();\n this.afterClosed.next();\n this.afterClosed.complete();\n }\n } catch {\n throw new Error('No outer layer can be found!');\n }\n }\n}\n","import { Overlay } from '@angular/cdk/overlay';\nimport {\n ComponentPortal,\n ComponentType,\n DomPortalOutlet,\n} from '@angular/cdk/portal';\nimport {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n ElementRef,\n Injector,\n} from '@angular/core';\n\nimport { MessageWrapperComponent } from './message-wrapper.component';\nimport { MessageComponent } from './message.component';\nimport {\n MessageConfig,\n MessageGlobalConfig,\n MessageType,\n} from './message.config';\n\nexport abstract class BaseMessage<\n Wrapper extends MessageWrapperComponent,\n Component extends MessageComponent,\n Config extends MessageConfig\n> {\n wrapperInstance: { elementRef: ElementRef<HTMLElement> };\n componentRefs: Array<ComponentRef<Component>> = [];\n\n constructor(\n protected overlay: Overlay,\n protected injector: Injector,\n protected applicationRef: ApplicationRef,\n protected cfr: ComponentFactoryResolver,\n protected overlayPaneClassName: string,\n protected wrapperClass: ComponentType<Wrapper>,\n protected componentClass: ComponentType<Component>,\n protected globalConfig: MessageGlobalConfig,\n ) {\n this.initWrapperContainer();\n }\n\n create(config: Config): ComponentRef<Component>;\n create(config: MessageType, content: string): ComponentRef<Component>;\n create(config: Config | MessageType, content?: string) {\n const type = content ? (config as MessageType) : (config as Config).type;\n const mergedConfig = {\n duration:\n typeof this.globalConfig.duration === 'number'\n ? this.globalConfig.duration\n : this.globalConfig.duration[type],\n ...(content\n ? { type: config as MessageType, content }\n : (config as Config)),\n } as Config;\n\n this.removeNeedless(mergedConfig.id);\n\n const componentRef = this.initComponentRef(mergedConfig);\n componentRef.instance.afterClosed.subscribe(() => {\n componentRef.destroy();\n this.remove(componentRef.instance.uniqueId);\n });\n this.componentRefs.push(componentRef);\n return componentRef;\n }\n\n createType(type: MessageType, option: Config | string) {\n return typeof option === 'string'\n ? this.create(type, option)\n : this.create({ ...option, type } as Config);\n }\n\n success(option: Config | string): ComponentRef<Component> {\n return this.createType(MessageType.Success, option);\n }\n\n warning(option: Config | string): ComponentRef<Component> {\n return this.createType(MessageType.Warning, option);\n }\n\n error(option: Config | string): ComponentRef<Component> {\n return this.createType(MessageType.Error, option);\n }\n\n info(option: Config | string): ComponentRef<Component> {\n return this.createType(MessageType.Info, option);\n }\n\n remove(id: string | number) {\n const index = this.componentRefs.findIndex(\n ref => ref.instance.uniqueId === id || ref.instance.id === id,\n );\n if (index >= 0) {\n this.componentRefs[index].instance.remove();\n this.componentRefs.splice(index, 1);\n }\n }\n\n removeAll() {\n this.componentRefs.forEach(ref => {\n ref.instance.remove();\n });\n this.componentRefs = [];\n }\n\n protected initWrapperContainer() {\n this.wrapperInstance = this.overlay\n .create({\n panelClass: this.overlayPaneClassName,\n })\n .attach(new ComponentPortal(this.wrapperClass)).instance;\n }\n\n protected initComponentRef(config: Config): ComponentRef<Component> {\n const portalHost = new DomPortalOutlet(\n this.wrapperInstance.elementRef.nativeElement,\n this.cfr,\n this.applicationRef,\n this.injector,\n );\n const componentRef = portalHost.attachComponentPortal(\n new ComponentPortal(this.componentClass),\n );\n componentRef.instance.setConfig(config);\n return componentRef;\n }\n\n protected removeNeedless(id: string | number) {\n if (id) {\n this.remove(id);\n }\n if (\n this.globalConfig.maxStack &&\n this.componentRefs.length >= this.globalConfig.maxStack\n ) {\n this.componentRefs\n .slice(0, this.componentRefs.length - this.globalConfig.maxStack + 1)\n .forEach(ref => this.remove(ref.instance.uniqueId));\n }\n }\n}\n","import { Overlay } from '@angular/cdk/overlay';\nimport {\n ApplicationRef,\n ComponentFactoryResolver,\n Inject,\n Injectable,\n Injector,\n Optional,\n} from '@angular/core';\n\nimport { BaseMessage } from './base-message';\nimport { MessageWrapperComponent } from './message-wrapper.component';\nimport { MessageComponent } from './message.component';\nimport {\n MESSAGE_CONFIG,\n MESSAGE_DEFAULT_CONFIG,\n MessageConfig,\n MessageGlobalConfig,\n} from './message.config';\n\n@Injectable()\nexport class MessageService extends BaseMessage<\n MessageWrapperComponent,\n MessageComponent,\n MessageConfig\n> {\n constructor(\n overlay: Overlay,\n injector: Injector,\n applicationRef: ApplicationRef,\n cfr: ComponentFactoryResolver,\n @Optional()\n @Inject(MESSAGE_CONFIG)\n globalConfig: MessageGlobalConfig,\n ) {\n super(\n overlay,\n injector,\n applicationRef,\n cfr,\n 'aui-message-overlay-pane',\n MessageWrapperComponent,\n MessageComponent,\n {\n ...MESSAGE_DEFAULT_CONFIG,\n ...globalConfig,\n },\n );\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/icon.module';\n\nimport { MessageWrapperComponent } from './message-wrapper.component';\nimport { MessageComponent } from './message.component';\nimport { MessageService } from './message.service';\n\n@NgModule({\n imports: [CommonModule, OverlayModule, IconModule],\n declarations: [MessageWrapperComponent, MessageComponent],\n entryComponents: [MessageWrapperComponent, MessageComponent],\n providers: [MessageService],\n})\nexport class MessageModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { MessageWrapperComponent } from '../message/message-wrapper.component';\n\n@Component({\n selector: 'aui-notification-wrapper',\n styleUrls: ['./notification-wrapper.component.scss'],\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class NotificationWrapperComponent extends MessageWrapperComponent {\n constructor(public elementRef: ElementRef) {\n super(elementRef);\n }\n}\n","import { CdkPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentFactory,\n ComponentFactoryResolver,\n EmbeddedViewRef,\n HostListener,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { MessageAnimations } from '../message/message-animations';\nimport { MessageComponent } from '../message/message.component';\nimport { Bem, buildBem } from '../utils';\n\nimport { NotificationConfig } from './notification.config';\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'aui-notification',\n templateUrl: './notification.component.html',\n animations: [MessageAnimations.inOut],\n styleUrls: ['./notification.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class NotificationComponent\n extends MessageComponent\n implements AfterViewInit {\n protected readonly animateStartState = 'flyLeft';\n protected readonly animateStartEnd = 'flyUp';\n\n bem: Bem = buildBem('aui-notification');\n animateState = this.animateStartState;\n uniqueId = `aui-notification-${uniqueId++}`;\n isHover = false;\n\n title: string;\n remains: number;\n childComponentInstance: unknown;\n customClass = '';\n footerPortal: TemplatePortal<unknown>;\n\n @ViewChild(CdkPortalOutlet, { static: true })\n private readonly portalOutlet: CdkPortalOutlet;\n\n @ViewChild('modalComponent', { read: ViewContainerRef, static: true })\n private readonly modalEl: ViewContainerRef;\n\n constructor(\n viewContainerRef: ViewContainerRef,\n cdr: ChangeDetectorRef,\n private readonly cfr: ComponentFactoryResolver,\n ) {\n super(viewContainerRef, cdr);\n }\n\n @HostListener('mouseenter')\n onMouseEnter() {\n if (this.duration <= 0) {\n return;\n }\n this.isHover = true;\n clearTimeout(this.timerId);\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n if (this.duration <= 0) {\n return;\n }\n this.isHover = false;\n this.countDown();\n }\n\n ngAfterViewInit() {\n if (this.remains > 0) {\n this.countDown();\n }\n }\n\n setConfig(config: NotificationConfig) {\n super.setConfig(config);\n this.title = config.title;\n this.remains = Math.ceil(this.duration / 1000);\n this.customClass = config.customClass || '';\n\n if (config.contentRef) {\n if (config.contentRef instanceof TemplateRef) {\n const portal = new TemplatePortal(config.contentRef, null, {\n $implicit: config.context,\n });\n this.attachTemplatePortal(portal);\n } else {\n this.attachComponentRef(\n this.cfr.resolveComponentFactory(config.contentRef),\n );\n }\n }\n\n if (config.footerRef && config.footerRef instanceof TemplateRef) {\n this.footerPortal = new TemplatePortal(config.footerRef, null, {\n $implicit: config.context,\n });\n }\n }\n\n /**\n * Attach a TemplatePortal as content to this modal container.\n * @param portal Portal to be attached as the modal content.\n */\n private attachTemplatePortal<C>(\n portal: TemplatePortal<C>,\n ): EmbeddedViewRef<C> {\n return this.portalOutlet.attachTemplatePortal(portal);\n }\n\n private attachComponentRef(componentRef: ComponentFactory<unknown>) {\n this.childComponentInstance = this.modalEl.createComponent(\n componentRef,\n null,\n this.viewContainerRef.injector,\n ).instance;\n return this.childComponentInstance;\n }\n\n private countDown() {\n this.timerId = window.setTimeout(() => {\n this.remains -= 1;\n if (this.remains === 0) {\n this.remove();\n } else {\n this.countDown();\n }\n this.cdr.markForCheck();\n }, 1000);\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { InjectionToken, TemplateRef } from '@angular/core';\n\nimport { MessageConfig, MessageGlobalConfig } from '../message/public-api';\n\nexport interface NotificationConfig extends MessageConfig {\n title?: string;\n contentRef?: TemplateRef<any> | ComponentType<void>;\n footerRef?: TemplateRef<any>;\n context?: unknown;\n customClass?: string;\n}\n\nexport type NotificationGlobalConfig = MessageGlobalConfig;\n\nexport const NOTIFICATION_CONFIG = new InjectionToken<NotificationGlobalConfig>(\n 'NOTIFICATION_CONFIG',\n);\n\nexport const NOTIFICATION_DEFAULT_CONFIG = {\n duration: 6000,\n maxStack: 8,\n};\n","import { Overlay } from '@angular/cdk/overlay';\nimport {\n ApplicationRef,\n ComponentFactoryResolver,\n Inject,\n Injectable,\n Injector,\n Optional,\n} from '@angular/core';\n\nimport { BaseMessage } from '../message/base-message';\n\nimport { NotificationWrapperComponent } from './notification-wrapper.component';\nimport { NotificationComponent } from './notification.component';\nimport {\n NOTIFICATION_CONFIG,\n NOTIFICATION_DEFAULT_CONFIG,\n NotificationConfig,\n NotificationGlobalConfig,\n} from './notification.config';\n\n@Injectable()\nexport class NotificationService extends BaseMessage<\n NotificationWrapperComponent,\n NotificationComponent,\n NotificationConfig\n> {\n constructor(\n overlay: Overlay,\n injector: Injector,\n applicationRef: ApplicationRef,\n cfr: ComponentFactoryResolver,\n @Optional()\n @Inject(NOTIFICATION_CONFIG)\n globalConfig: NotificationGlobalConfig,\n ) {\n super(\n overlay,\n injector,\n applicationRef,\n cfr,\n 'aui-notification-overlay-pane',\n NotificationWrapperComponent,\n NotificationComponent,\n {\n ...NOTIFICATION_DEFAULT_CONFIG,\n ...globalConfig,\n },\n );\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';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { NotificationWrapperComponent } from './notification-wrapper.component';\nimport { NotificationComponent } from './notification.component';\nimport { NotificationService } from './notification.service';\n\n@NgModule({\n imports: [CommonModule, OverlayModule, PortalModule, IconModule],\n declarations: [NotificationWrapperComponent, NotificationComponent],\n entryComponents: [NotificationWrapperComponent, NotificationComponent],\n providers: [NotificationService],\n})\nexport class NotificationModule {}\n","import { CdkPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n selector: 'aui-tab-body',\n templateUrl: './tab-body.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class TabBodyComponent implements OnDestroy {\n private _content: TemplatePortal;\n\n content$ = new BehaviorSubject<TemplatePortal>(null);\n\n /** The portal host inside of this container into which the tab body content will be loaded. */\n @ViewChild(CdkPortalOutlet, { static: true })\n _portalOutlet: CdkPortalOutlet;\n\n /** The tab body content to display. */\n @Input()\n get content() {\n return this._content;\n }\n\n set content(content: TemplatePortal) {\n if (this._content !== content) {\n this.content$.next(content);\n }\n this._content = content;\n }\n\n ngOnDestroy() {\n this.content$.complete();\n }\n}\n","import { CdkPortal, CdkPortalOutlet } from '@angular/cdk/portal';\nimport {\n ComponentFactoryResolver,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { coerceAttrBoolean } from '../utils';\n\nimport { TabBodyComponent } from './tab-body.component';\n\n/** Used to flag tab labels for use with the portal directive */\n@Directive({\n selector: '[auiTabLabel]',\n})\nexport class TabLabelDirective extends CdkPortal {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef,\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\n/**\n * Lazy load the embedded template for a tab content.\n */\n@Directive({\n selector: '[auiTabContent]',\n})\nexport class TabContentDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n\n/** Used to project additional template from host to the tab header. */\n@Directive({\n selector: '[auiTabHeaderAddon]',\n})\nexport class TabHeaderAddonDirective extends CdkPortal {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef,\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\n/**\n * Used in the `aui-tab-group` view to display tab labels.\n */\n@Directive({\n selector: '[auiTabLabelWrapper]',\n host: {\n '[class.aui-tab-label]': 'true',\n '[class.aui-tab-label--disabled]': '!!disabled',\n },\n})\nexport class TabLabelWrapperDirective {\n private _disabled: boolean;\n\n /** Whether or not the tab is disabled */\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value: boolean | '') {\n this._disabled = coerceAttrBoolean(value);\n }\n\n getOffsetLeft(): number {\n return this.elementRef.nativeElement.offsetLeft;\n }\n\n getOffsetWidth(): number {\n return this.elementRef.nativeElement.offsetWidth;\n }\n\n /** Sets focus on the wrapper element */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n}\n\n@Directive({\n selector: '[auiTabTitle]',\n})\nexport class TabTitleDirective extends CdkPortal {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef,\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\n/**\n * The portal host directive for the contents of the tab.\n */\n@Directive({\n selector: '[auiTabBodyHost]',\n})\nexport class TabBodyPortalDirective\n extends CdkPortalOutlet\n implements OnInit, OnDestroy {\n private _hostSubscription = Subscription.EMPTY;\n\n constructor(\n componentFactoryResolver: ComponentFactoryResolver,\n viewContainerRef: ViewContainerRef,\n private readonly _host: TabBodyComponent,\n ) {\n super(componentFactoryResolver, viewContainerRef);\n }\n\n /** Set initial visibility or set up subscription for changing visibility. */\n ngOnInit(): void {\n super.ngOnInit();\n this._hostSubscription = this._host.content$.subscribe(content => {\n if (this.hasAttached) {\n this.detach();\n }\n this.attach(content);\n });\n }\n\n ngOnDestroy() {\n this._hostSubscription.unsubscribe();\n }\n}\n","import { ValueOf } from '../types';\n\nexport const TabSize = {\n /** 卡片级尺寸 */\n Large: 'large',\n\n /** 页面级尺寸 */\n Medium: 'medium',\n\n /** 小尺寸 */\n Small: 'small',\n} as const;\n\nexport type TabSize = ValueOf<typeof TabSize>;\n\nexport const TabType = {\n Line: 'line',\n Card: 'card',\n} as const;\n\nexport type TabType = ValueOf<typeof TabType>;\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n NgZone,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { TabType } from './tabs.types';\n\n@Component({\n selector: 'aui-tab-header-active-indicator',\n templateUrl: './tab-header-active-indicator.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class TabHeaderActiveIndicatorComponent {\n @Input()\n type: TabType = TabType.Line;\n\n bem: Bem = buildBem('aui-tab-header-active-indicator');\n\n constructor(\n private readonly _elementRef: ElementRef<HTMLElement>,\n private readonly _ngZone: NgZone,\n ) {}\n\n /**\n * Calculates the styles from the provided element in order to align the indicator to that element.\n * Shows the indicator if previously set as hidden.\n * @param element\n */\n alignToElement(element: HTMLElement) {\n if (typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => this._setStyles(element));\n });\n } else {\n this._setStyles(element);\n }\n }\n\n /**\n * Sets the proper styles to the element.\n * @param element\n */\n private _setStyles(element: HTMLElement) {\n const positions = this._getElementPosition(element);\n const nativeEl = this._elementRef.nativeElement;\n nativeEl.style.left = positions.left;\n nativeEl.style.width = positions.width;\n }\n\n private _getElementPosition(element: HTMLElement) {\n return {\n left: element ? (element.offsetLeft || 0) + 'px' : '0',\n width: element ? (element.offsetWidth || 0) + 'px' : '0',\n };\n }\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Bem, buildBem, coerceNumber } from '../utils';\n\nimport {\n TabHeaderAddonDirective,\n TabLabelWrapperDirective,\n TabTitleDirective,\n} from './tab-directives';\nimport { TabHeaderActiveIndicatorComponent } from './tab-header-active-indicator.component';\nimport { TabSize, TabType } from './tabs.types';\n\n/**\n * The directions that scrolling can go in when the header's tabs exceed the header width. 'After'\n * will scroll the header towards the end of the tabs list and 'before' will scroll towards the\n * beginning of the list.\n */\nexport type ScrollDirection = 'after' | 'before';\n/**\n * The distance in pixels that will be overshot when scrolling a tab label into view. This helps\n * provide a small affordance to the label next to it.\n */\nconst EXAGGERATED_OVERSCROLL = 60;\n\n@Component({\n selector: 'aui-tab-header',\n templateUrl: './tab-header.component.html',\n styleUrls: ['./tab-header.component.scss'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabHeaderComponent\n implements OnDestroy, AfterContentChecked, AfterContentInit {\n bem: Bem = buildBem('aui-tab-header');\n\n _showAddon = false;\n\n /** Whether the controls for pagination should be displayed */\n _showPaginationControls = false;\n\n /** Whether the tab list can be scrolled more towards the end of the tab label list. */\n _disableScrollAfter = true;\n\n /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */\n _disableScrollBefore = true;\n\n /** Whether the scroll distance has changed and should be applied after the view is checked. */\n private _scrollDistanceChanged: boolean;\n\n /** Whether the header should scroll to the selected index after the view has been checked. */\n private _selectedIndexChanged = false;\n\n /** The distance in pixels that the tab labels should be translated to the left. */\n private _scrollDistance = 0;\n\n private _selectedIndex = 0;\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Used to manage focus between the tabs. */\n private _keyManager: FocusKeyManager<TabLabelWrapperDirective>;\n\n /**\n * The number of tab labels that are displayed on the header. When this changes, the header\n * should re-evaluate the scroll position.\n */\n private _tabLabelCount: number;\n\n @Input()\n type: TabType = TabType.Line;\n\n @Input()\n size: TabSize = TabSize.Medium;\n\n /** The index of the active tab. */\n @Input()\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n set selectedIndex(value: number) {\n value = coerceNumber(value);\n this._selectedIndexChanged = this._selectedIndex !== value;\n this._selectedIndex = value;\n\n if (this._keyManager) {\n this._keyManager.updateActiveItem(value);\n }\n }\n\n /** Event emitted when the option is selected. */\n @Output()\n readonly selectFocusedIndex = new EventEmitter<number>();\n\n /** Event emitted when a label is focused. */\n @Output()\n readonly indexFocused = new EventEmitter<number>();\n\n @ContentChild(TabHeaderAddonDirective, { static: false })\n _headerAddon: TabHeaderAddonDirective;\n\n @ContentChild(TabTitleDirective, { static: false })\n _title: TabTitleDirective;\n\n @ContentChildren(TabLabelWrapperDirective)\n /**\n * workaround for @link https://github.com/microsoft/TypeScript/pull/42425\n */\n _labelWrappers: QueryList<TabLabelWrapperDirective & { disabled?: boolean }>;\n\n @ViewChild('tabListContainer', { static: true })\n _tabListContainer: ElementRef<HTMLElement>;\n\n @ViewChild('tabList', { static: true })\n _tabList: ElementRef<HTMLElement>;\n\n @ViewChild('paginationWrapper', { static: true })\n _paginationWrapper: ElementRef<HTMLElement>;\n\n @ViewChild(TabHeaderActiveIndicatorComponent, { static: true })\n _activeIndicator: TabHeaderActiveIndicatorComponent;\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n ngAfterContentChecked(): void {\n // If the number of tab labels have changed, check if scrolling should be enabled\n if (this._tabLabelCount !== this._labelWrappers.length) {\n this._updatePagination();\n this._tabLabelCount = this._labelWrappers.length;\n this._changeDetectorRef.markForCheck();\n }\n\n // If the selected index has changed, scroll to the label and check if the scrolling controls\n // should be disabled.\n if (this._selectedIndexChanged) {\n this._scrollToLabel(this._selectedIndex);\n this._checkScrollingControls();\n this._alignActiveIndicatorToSelectedTab();\n this._selectedIndexChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n\n // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n // then translate the header to reflect this.\n if (this._scrollDistanceChanged) {\n this._updateTabScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n\n if (this._showAddon !== !!this._headerAddon) {\n this._showAddon = !!this._headerAddon;\n this._updatePagination();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Aligns the ink bar to the selected tab on load.\n */\n ngAfterContentInit() {\n const resize = this._viewportRuler.change(150);\n const realign = () => {\n this._updatePagination();\n this._alignActiveIndicatorToSelectedTab();\n };\n\n this._keyManager = new FocusKeyManager(this._labelWrappers)\n .withHorizontalOrientation('ltr')\n .withWrap();\n this._keyManager.updateActiveItem(0);\n\n // Defer the first call in order to allow for slower browsers to lay out the elements.\n // This helps in cases where the user lands directly on a page with paginated tabs.\n typeof requestAnimationFrame !== 'undefined'\n ? requestAnimationFrame(realign)\n : realign();\n\n // On window resize, realign the ink bar and update the orientation of\n // the key manager if the direction has changed.\n resize.pipe(takeUntil(this._destroyed)).subscribe(() => {\n realign();\n });\n\n // If there is a change in the focus key manager we need to emit the `indexFocused`\n // event in order to provide a public event that notifies about focus changes. Also we realign\n // the tabs container by scrolling the new focused tab into the visible section.\n this._keyManager.change\n .pipe(takeUntil(this._destroyed))\n .subscribe(newFocusIndex => {\n this.indexFocused.emit(newFocusIndex);\n this._setTabFocus(newFocusIndex);\n });\n }\n\n /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\n get scrollDistance(): number {\n return this._scrollDistance;\n }\n\n set scrollDistance(v: number) {\n this._scrollDistance = Math.max(\n 0,\n Math.min(this._getMaxScrollDistance(), v),\n );\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n }\n\n /** Tracks which element has focus; used for keyboard navigation */\n get focusIndex(): number {\n return this._keyManager ? this._keyManager.activeItemIndex : 0;\n }\n\n /** When the focus index is set, we must manually send focus to the correct label */\n set focusIndex(value: number) {\n if (\n !this._isValidIndex(value) ||\n this.focusIndex === value ||\n !this._keyManager\n ) {\n return;\n }\n this._keyManager.setActiveItem(value);\n }\n\n /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n */\n _isValidIndex(index: number): boolean {\n if (!this._labelWrappers) {\n return true;\n }\n const tab = this._labelWrappers\n ? this._labelWrappers.toArray()[index]\n : null;\n return !!tab && !tab.disabled;\n }\n\n _handleKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Home':\n this._keyManager.setFirstItemActive();\n event.preventDefault();\n break;\n case 'End':\n this._keyManager.setLastItemActive();\n event.preventDefault();\n break;\n case 'Enter':\n case 'Space':\n this.selectFocusedIndex.emit(this.focusIndex);\n event.preventDefault();\n break;\n default:\n this._keyManager.onKeydown(event);\n }\n }\n\n /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n */\n _setTabFocus(tabIndex: number) {\n if (this._showPaginationControls) {\n this._scrollToLabel(tabIndex);\n }\n if (this._labelWrappers?.length > 0) {\n this._labelWrappers.toArray()[tabIndex].focus();\n // Do not let the browser manage scrolling to focus the element, this will be handled\n // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n // should be the full width minus the offset width.\n const containerEl = this._tabListContainer.nativeElement;\n containerEl.scrollLeft = 0;\n }\n }\n\n /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollToLabel(labelIndex: number) {\n const selectedLabel = this._labelWrappers\n ? this._labelWrappers.toArray()[labelIndex]\n : null;\n if (!selectedLabel) {\n return;\n }\n // The view length is the visible width of the tab labels.\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n const labelBeforePos = selectedLabel.getOffsetLeft();\n const labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();\n const beforeVisiblePos = this.scrollDistance;\n const afterVisiblePos = this.scrollDistance + viewLength;\n if (labelBeforePos < beforeVisiblePos) {\n // Scroll header to move label to the before direction\n this.scrollDistance -=\n beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\n } else if (labelAfterPos > afterVisiblePos) {\n // Scroll header to move label to the after direction\n this.scrollDistance +=\n labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\n }\n }\n\n /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollHeader(scrollDir: ScrollDirection) {\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n // Move the scroll distance one-third the length of the tab list's viewport.\n this.scrollDistance += ((scrollDir === 'before' ? -1 : 1) * viewLength) / 3;\n }\n\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n */\n _onContentChanges() {\n this._updatePagination();\n this._alignActiveIndicatorToSelectedTab();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Updating the view whether pagination should be enabled or not\n */\n _updatePagination() {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\n }\n\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkPaginationEnabled() {\n const isEnabled =\n this._tabList.nativeElement.scrollWidth >\n this._paginationWrapper.nativeElement.offsetWidth + 2; // 2 is the border size\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n const detectChanges = isEnabled !== this._showPaginationControls;\n this._showPaginationControls = isEnabled;\n\n if (detectChanges) {\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkScrollingControls() {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance === 0;\n this._disableScrollAfter =\n this.scrollDistance === this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _getMaxScrollDistance(): number {\n const lengthOfTabList = this._tabList.nativeElement.scrollWidth;\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n return lengthOfTabList - viewLength || 0;\n }\n\n /** Performs the CSS transformation on the tab list that will cause the list to scroll. */\n _updateTabScrollPosition() {\n const scrollDistance = this.scrollDistance;\n const translateX = -scrollDistance;\n // Don't use `translate3d` here because we don't want to create a new layer. A new layer\n // seems to cause flickering and overflow in Internet Explorer. For example, the ink bar\n // and ripples will exceed the boundaries of the visible tab bar.\n // See: https://github.com/angular/material2/issues/10276\n this._tabList.nativeElement.style.transform = `translateX(${translateX}px)`;\n }\n\n /** Tells the active indicator to align itself to the current label wrapper */\n _alignActiveIndicatorToSelectedTab(): void {\n const selectedLabelWrapper =\n this._labelWrappers?.length > 0\n ? this._labelWrappers.toArray()[this.selectedIndex].elementRef\n .nativeElement\n : null;\n this._activeIndicator.alignToElement(selectedLabelWrapper);\n }\n\n constructor(\n private readonly _changeDetectorRef: ChangeDetectorRef,\n private readonly _viewportRuler: ViewportRuler,\n ) {}\n}\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\n\n@Injectable()\nexport class TabContextService {\n private readonly active$$ = new BehaviorSubject(false);\n\n /**\n * Whether the tab is currently active.\n */\n get isActive() {\n return this.active$$.value;\n }\n\n set isActive(isActive: boolean) {\n this.active$$.next(isActive);\n }\n\n readonly active$: Observable<boolean> = (this._parent\n ? combineLatest([this._parent.active$, this.active$$]).pipe(\n map(([a, b]) => a && b),\n )\n : this.active$$\n ).pipe(distinctUntilChanged());\n\n constructor(\n @Optional()\n @SkipSelf()\n private readonly _parent: TabContextService,\n ) {}\n}\n","/* eslint-disable no-prototype-builtins */\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { coerceAttrBoolean } from '../utils';\n\nimport { TabContextService } from './tab-context.service';\nimport { TabContentDirective, TabLabelDirective } from './tab-directives';\n\n@Component({\n selector: 'aui-tab',\n exportAs: 'auiTab',\n templateUrl: './tab.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n providers: [TabContextService],\n})\nexport class TabComponent implements AfterContentInit, OnDestroy, OnChanges {\n @Input()\n name: string;\n\n /** Plain text label for the tab, used when there is no template label. */\n @Input('label')\n textLabel = '';\n\n /** Whether or not to show the close button in the header */\n @Input()\n closeable = false;\n\n /** Whether or not the tab is disabled */\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value: boolean | '') {\n this._disabled = coerceAttrBoolean(value);\n }\n\n @Output()\n close = new EventEmitter<void>();\n\n /** Content for the tab label given by `<ng-template [auiTabLabel]>`. */\n @ContentChild(TabLabelDirective, { static: false })\n templateLabel: TabLabelDirective;\n\n /**\n * Template provided in the tab content that will be used if present, used to enable lazy-loading\n */\n @ContentChild(TabContentDirective, { read: TemplateRef, static: false })\n _explicitContent: TemplateRef<any>;\n\n /** Template inside the AuiTab view that contains an `<ng-content>`. */\n @ViewChild(TemplateRef, { static: true })\n _implicitContent: TemplateRef<any>;\n\n get content(): TemplatePortal | null {\n return this._contentPortal;\n }\n\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n */\n position: number | null = null;\n\n /**\n * The initial relatively index origin of the tab if it was created and selected after there\n * was already a selected tab. Provides context of what position the tab should originate from.\n */\n origin: number | null = null;\n\n /** Emits whenever the internal state of the tab changes. */\n readonly _stateChanges = new Subject<void>();\n\n /** Portal that will be the hosted content of the tab */\n private _contentPortal: TemplatePortal | null = null;\n\n private _disabled = false;\n\n constructor(\n private readonly _viewContainerRef: ViewContainerRef,\n public readonly tabContext: TabContextService,\n ) {}\n\n ngAfterContentInit(): void {\n this._contentPortal = new TemplatePortal(\n this._explicitContent || this._implicitContent,\n this._viewContainerRef,\n );\n }\n\n ngOnDestroy(): void {\n this._stateChanges.complete();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.hasOwnProperty('textLabel') ||\n changes.hasOwnProperty('disabled') ||\n changes.hasOwnProperty('closeable')\n ) {\n this._stateChanges.next();\n }\n }\n}\n","/* eslint-disable no-prototype-builtins */\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, Subscription, merge } from 'rxjs';\n\nimport { Bem, buildBem, coerceNumber } from '../utils';\n\nimport { TabHeaderAddonDirective, TabTitleDirective } from './tab-directives';\nimport { TabHeaderComponent } from './tab-header.component';\nimport { TabComponent } from './tab.component';\nimport { TabSize, TabType } from './tabs.types';\n\n/** A simple change event emitted on focus or selection changes. */\nexport class TabChangeEvent {\n /** Index of the currently-selected tab. */\n index: number;\n /** Reference to the currently-selected tab. */\n tab: TabComponent;\n}\n\n@Component({\n selector: 'aui-tab-group',\n exportAs: 'auiTabGroup',\n templateUrl: './tab-group.component.html',\n styleUrls: ['./tab-group.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class TabGroupComponent\n implements OnChanges, AfterContentChecked, AfterContentInit, OnDestroy {\n bem: Bem = buildBem('aui-tab-group');\n\n @ContentChildren(TabComponent)\n _tabs: QueryList<TabComponent>;\n\n @ContentChild(TabHeaderAddonDirective, { static: false })\n _headerAddon: TabHeaderAddonDirective;\n\n @ViewChild(TabHeaderComponent, { static: false })\n _tabHeader: TabHeaderComponent;\n\n @ContentChild(TabTitleDirective, { static: false })\n _tabTitle: TabTitleDirective;\n\n /** The tab index that should be selected after the content has been checked. */\n private _indexToSelect: number | null = 0;\n\n /** Subscription to tabs being added/removed. */\n private _tabsSubscription = Subscription.EMPTY;\n\n /** Subscription to changes in the tab labels. */\n private _tabLabelSubscription = Subscription.EMPTY;\n\n private _selectedIndex: number | null = null;\n private _tab: string = null;\n private _type: TabType = TabType.Line;\n private _size: TabSize = TabSize.Medium;\n\n /** true lazy mode for template ref children */\n private _lazy: boolean;\n\n private _previousHeaderAddon: TabHeaderAddonDirective;\n\n /** Emits whenever the type changes */\n readonly _typeChange = new Subject<void>();\n\n /** Emits whenever the size changes */\n readonly _sizeChange = new Subject<void>();\n\n /** The index of the active tab. */\n @Input()\n get selectedIndex(): number | null {\n return this._selectedIndex;\n }\n\n set selectedIndex(value: number | null) {\n this._indexToSelect = coerceNumber(value, null);\n this._changeActivatedTabs();\n }\n\n @Input()\n get tab(): string {\n return this._tab;\n }\n\n set tab(value: string) {\n this._tab = value;\n if (this._tabs) {\n this.selectedIndex = this._findIndexByTab(value);\n }\n }\n\n @Input()\n get type() {\n return this._type;\n }\n\n set type(type: TabType) {\n this._type = type;\n }\n\n @Input()\n title: string | TemplateRef<unknown>;\n\n @Input()\n get size() {\n return this._size;\n }\n\n set size(val) {\n if (!val || this._size === val) {\n return;\n }\n this._size = val;\n }\n\n @Input()\n get lazy() {\n return this._lazy;\n }\n\n set lazy(lazy: boolean) {\n if (this._lazy === lazy) {\n return;\n }\n this._lazy = lazy;\n if (lazy) {\n this._changeActivatedTabs();\n } else {\n this.activatedTabs.length = 0;\n }\n }\n\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\n @Output()\n readonly selectedIndexChange = new EventEmitter<number>();\n\n @Output()\n readonly tabChange = new EventEmitter<string>();\n\n /** Event emitted when the tab selection has changed. */\n @Output()\n readonly selectedTabChange = new EventEmitter<TabChangeEvent>(true);\n\n /** Event emitted when focus has changed within a tab group. */\n @Output()\n readonly focusChange: EventEmitter<TabChangeEvent> = new EventEmitter<TabChangeEvent>();\n\n constructor(private readonly _changeDetectorRef: ChangeDetectorRef) {}\n\n activatedTabs: TabComponent[] = [];\n\n get activeTab() {\n return this._tabs.length > 0 && this.selectedIndex !== null\n ? this._tabs.toArray()[this.selectedIndex]\n : null;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hasOwnProperty('type')) {\n this._typeChange.next();\n }\n\n if (changes.hasOwnProperty('size')) {\n this._sizeChange.next();\n }\n }\n\n /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index.\n */\n ngAfterContentChecked(): void {\n // Don't clamp the `indexToSelect` immediately in the setter because it can happen that\n // the amount of tabs changes before the actual change detection runs.\n const indexToSelect = (this._indexToSelect = this._clampTabIndex(\n this._indexToSelect,\n ));\n\n // If there is a change in selected index, emit a change event. Should not trigger if\n // the selected index has not yet been initialized.\n if (this._selectedIndex !== indexToSelect && this._selectedIndex != null) {\n this._changeActivatedTabs();\n const tabChangeEvent = this._createChangeEvent(indexToSelect);\n this.selectedTabChange.emit(tabChangeEvent);\n // Emitting this value after change detection has run\n // since the checked content may contain this variable'\n Promise.resolve().then(() => {\n this.selectedIndexChange.emit(indexToSelect);\n this.tabChange.emit(this._tabs.get(indexToSelect).name);\n });\n }\n\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this._tabs.forEach((tab: TabComponent, index: number) => {\n tab.position = index - indexToSelect;\n tab.tabContext.isActive = index === indexToSelect;\n // If there is already a selected tab, then set up an origin for the next selected tab\n // if it doesn't have one already.\n if (this._selectedIndex != null && tab.position === 0 && !tab.origin) {\n tab.origin = indexToSelect - this._selectedIndex;\n }\n });\n\n if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._changeDetectorRef.markForCheck();\n }\n\n if (this._previousHeaderAddon !== this._headerAddon) {\n this._previousHeaderAddon = this._headerAddon;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngAfterContentInit() {\n if (this.tab) {\n this._indexToSelect = this._findIndexByTab(this.tab);\n }\n\n this._changeActivatedTabs();\n this._subscribeToTabLabels();\n // Subscribe to changes in the amount of tabs, in order to be\n // able to re-render the content as new tabs are added or removed.\n this._tabsSubscription = this._tabs.changes.subscribe(() => {\n const tabs = this._tabs.toArray();\n if (this._lazy) {\n this.activatedTabs = this.activatedTabs.filter(tab =>\n tabs.includes(tab),\n );\n }\n const indexToSelect = this._clampTabIndex(this._indexToSelect);\n // Maintain the previously-selected tab if a new tab is added or removed and there is no\n // explicit change that selects a different tab.\n if (indexToSelect === this._selectedIndex) {\n for (const [i, tab] of tabs.entries()) {\n if (tab.tabContext.isActive) {\n // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed\n // event, otherwise the consumer may end up in an infinite loop in some edge cases like\n // adding a tab within the `selectedIndexChange` event.\n this._indexToSelect = this._selectedIndex = i;\n break;\n }\n }\n }\n this._changeActivatedTabs();\n this._subscribeToTabLabels();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n\n this._typeChange.complete();\n this._sizeChange.complete();\n }\n\n /** Handle click events, setting new selected index if appropriate. */\n _handleClick(tab: TabComponent, idx: number) {\n if (!tab.disabled) {\n this.selectedIndex = this._tabHeader.focusIndex = idx;\n }\n }\n\n _focusChanged(index: number) {\n this.focusChange.emit(this._createChangeEvent(index));\n }\n\n /** Re-aligns the ink bar to the selected tab element. */\n realignActiveIndicator() {\n if (this._tabHeader) {\n this._tabHeader._alignActiveIndicatorToSelectedTab();\n }\n }\n\n private _changeActivatedTabs() {\n if (\n !this._lazy ||\n !this._tabs ||\n this._indexToSelect < 0 ||\n this._indexToSelect >= this._tabs.length\n ) {\n return;\n }\n const tab = this._tabs.find((_, index) => index === this._indexToSelect);\n if (tab && !this.activatedTabs.includes(tab)) {\n this.activatedTabs.push(tab);\n }\n }\n\n /** Clamps the given index to the bounds of 0 and the tabs length. */\n private _clampTabIndex(index: number | null): number {\n // Note the `|| 0`, which ensures that values like NaN can't get through\n // and which would otherwise throw the component into an infinite loop\n // (since Math.max(NaN, 0) === NaN).\n return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\n }\n\n private _findIndexByTab(name: string) {\n return Math.max(\n this._tabs.toArray().findIndex(tab => tab.name === name),\n 0,\n );\n }\n\n private _createChangeEvent(index: number): TabChangeEvent {\n const event = new TabChangeEvent();\n event.index = index;\n if (this._tabs?.length > 0) {\n event.tab = this._tabs.toArray()[index];\n }\n return event;\n }\n\n /**\n * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is\n * on the Tab component, whereas the data binding is inside the TabGroup. In order for the\n * binding to be updated, we need to subscribe to changes in it and trigger change detection\n * manually.\n */\n private _subscribeToTabLabels() {\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n this._tabLabelSubscription = merge(\n ...this._tabs.map(tab => tab._stateChanges),\n this._typeChange,\n this._sizeChange,\n ).subscribe(() => {\n this.realignActiveIndicator();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** Retrieves the tabindex for the tab. */\n _getTabIndex(tab: TabComponent, idx: number): number | null {\n if (tab.disabled) {\n return null;\n }\n return this.selectedIndex === idx ? 0 : -1;\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '../button/public-api';\nimport { IconModule } from '../icon/public-api';\n\nimport { TabBodyComponent } from './tab-body.component';\nimport {\n TabBodyPortalDirective,\n TabContentDirective,\n TabHeaderAddonDirective,\n TabLabelDirective,\n TabLabelWrapperDirective,\n TabTitleDirective,\n} from './tab-directives';\nimport { TabGroupComponent } from './tab-group.component';\nimport { TabHeaderActiveIndicatorComponent } from './tab-header-active-indicator.component';\nimport { TabHeaderComponent } from './tab-header.component';\nimport { TabComponent } from './tab.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n PortalModule,\n ButtonModule,\n IconModule,\n A11yModule,\n ObserversModule,\n ],\n declarations: [\n TabGroupComponent,\n TabComponent,\n TabLabelDirective,\n TabContentDirective,\n TabHeaderAddonDirective,\n TabTitleDirective,\n TabHeaderComponent,\n TabBodyComponent,\n TabBodyPortalDirective,\n TabLabelWrapperDirective,\n TabHeaderActiveIndicatorComponent,\n ],\n exports: [\n TabGroupComponent,\n TabComponent,\n TabLabelDirective,\n TabContentDirective,\n TabHeaderAddonDirective,\n TabTitleDirective,\n TabLabelWrapperDirective,\n TabHeaderComponent,\n ],\n})\nexport class TabsModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-tree-node-placeholder',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class TreeNodePlaceholderComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { CommonFormControl } from '../form/public-api';\nimport { InputComponent } from '../input/public-api';\nimport { TrackFn } from '../select/select.types';\nimport { TooltipDirective } from '../tooltip/public-api';\nimport { coerceAttrBoolean, coerceString } from '../utils';\n\nimport { TreeNodeComponent } from './tree-node/tree-node.component';\nimport { TreeNode } from './tree-select.types';\n\n@Component({\n selector: 'aui-tree-select',\n templateUrl: './tree-select.component.html',\n styleUrls: ['./tree-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TreeSelectComponent),\n multi: true,\n },\n ],\n})\nexport class TreeSelectComponent<T = unknown> extends CommonFormControl<T> {\n @Input()\n get nodesData() {\n return this._nodesData;\n }\n\n set nodesData(val) {\n if (!val || val === this._nodesData) {\n return;\n }\n this._nodesData = val;\n this.flattedNodes = this.flatNodesData(val);\n this.updateSelectDisplay(this.propValue);\n }\n\n @Input()\n loading = false;\n\n @Input()\n placeholder = '';\n\n @Input()\n get filterable() {\n return this._filterable;\n }\n\n set filterable(val: boolean | '') {\n this._filterable = coerceAttrBoolean(val);\n }\n\n @Input()\n get clearable() {\n return this._clearable;\n }\n\n set clearable(val: boolean | '') {\n this._clearable = coerceAttrBoolean(val);\n }\n\n @Input()\n get leafOnly() {\n return this._leafOnly;\n }\n\n set leafOnly(val: boolean | '') {\n this._leafOnly = coerceAttrBoolean(val);\n }\n\n @Input()\n filterFn = this._filterFn;\n\n @Input()\n trackFn: TrackFn<T> = this._trackFn;\n\n @Input()\n labelFn?: (value: T) => string;\n\n @Output()\n filterChange = new EventEmitter<string>();\n\n @Output()\n show = new EventEmitter<void>();\n\n @Output()\n hide = new EventEmitter<void>();\n\n @ViewChild('selectRef', { static: true })\n protected selectRef: ElementRef<HTMLElement>;\n\n @ViewChild('tooltipRef', { static: true })\n protected tooltipRef: TooltipDirective;\n\n @ViewChild('nodeListRef', { static: true })\n nodeListRef: ElementRef;\n\n @ViewChild('inputRef', { static: true })\n inputRef: InputComponent;\n\n private _nodesData: Array<TreeNode<T>> = [];\n private _filterString = '';\n private _filterable = false;\n private _clearable = false;\n private _leafOnly = false;\n private readonly filterString$$ = new BehaviorSubject(this.filterString);\n\n filterString$: Observable<string> = this.filterString$$.asObservable();\n\n containerWidth: string;\n displayText = '';\n flattedNodes: Array<TreeNode<T>> = [];\n\n get isClearable() {\n return !this.disabled && this.clearable && this.getInputValue();\n }\n\n get opened() {\n return this.tooltipRef.isCreated;\n }\n\n get inputReadonly() {\n return !(this.filterable && this.opened);\n }\n\n get filterString() {\n return this._filterString;\n }\n\n set filterString(val) {\n if (val !== this._filterString) {\n this._filterString = val;\n this.filterString$$.next(val);\n this.filterChange.emit(val);\n }\n }\n\n openNodes() {\n this.tooltipRef.createTooltip();\n }\n\n closeNodes() {\n this.tooltipRef.disposeTooltip();\n }\n\n updatePosition() {\n this.tooltipRef.updatePosition();\n }\n\n onShowNodes() {\n this.containerWidth = this.selectRef.nativeElement.offsetWidth + 'px';\n this.show.emit();\n this.cdr.detectChanges();\n }\n\n onHideNodes() {\n if (this.onTouched) {\n this.onTouched();\n }\n this.filterString = '';\n this.hide.emit();\n }\n\n onInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.filterString = value;\n this.cdr.markForCheck();\n }\n\n onNodeClick(node: TreeNodeComponent<T>) {\n this.selectNode(node);\n }\n\n getVisibleNodeCount() {\n return this.flattedNodes.filter(node =>\n this.filterFn(this.filterString, node),\n ).length;\n }\n\n selectNode(node: TreeNodeComponent<T>) {\n if (!node.selected) {\n this.emitValueChange(node.nodeData.value);\n if (this.onChange) {\n this.closeNodes();\n }\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.closeOption();\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n closeOption() {\n this.tooltipRef.disposeTooltip();\n }\n\n updateSelectDisplay(value: any) {\n const pickedNode = this.flattedNodes.find(\n node => this.trackFn(node.value) === this.trackFn(value),\n );\n if (pickedNode) {\n this.displayText = this.getLabelFromNode(pickedNode).toString();\n } else {\n this.displayText = coerceString(this.trackFn(value));\n }\n }\n\n clearValue(event: Event) {\n this.emitValueChange(null);\n event.stopPropagation();\n event.preventDefault();\n }\n\n writeValue(value: T) {\n this.value$$.next(value);\n this.updateSelectDisplay(value);\n this.closeNodes();\n }\n\n getPlaceholder() {\n return this.filterable && this.opened ? this.displayText : this.placeholder;\n }\n\n getInputValue() {\n return this.filterable && this.opened ? '' : this.displayText;\n }\n\n // `this` is not available in `trackBy`...\n trackByLabel = (_: number, node: TreeNode<T>) => this.getLabelFromNode(node);\n\n private flatNodesData(nodes: Array<TreeNode<T>> = []): Array<TreeNode<T>> {\n return nodes.reduce(\n (prevValue: Array<TreeNode<T>>, currentNode) =>\n prevValue.concat(currentNode, this.flatNodesData(currentNode.children)),\n [],\n );\n }\n\n private getLabelFromNode(node: TreeNode<T>) {\n return (\n node.label ||\n this.labelFn?.(node.value) ||\n coerceString(this.trackFn(node.value))\n );\n }\n\n private _filterFn(filterString: string, node: TreeNode<T>) {\n return this.getLabelFromNode(node)?.includes(filterString ?? '');\n }\n\n private _trackFn<T>(value: T) {\n return value;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { BehaviorSubject, Observable, Subject, combineLatest, of } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\nimport { Bem, buildBem, coerceAttrBoolean, scrollIntoView } from '../../utils';\nimport { TreeSelectComponent } from '../tree-select.component';\nimport { TreeNode } from '../tree-select.types';\n\n@Component({\n selector: 'aui-tree-node',\n templateUrl: './tree-node.component.html',\n styleUrls: ['./tree-node.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class TreeNodeComponent<T> implements AfterViewInit, OnDestroy {\n bem: Bem = buildBem('aui-tree-node');\n\n private _nodeData: TreeNode<T>;\n private readonly nodeData$$ = new BehaviorSubject<TreeNode<T>>(this.nodeData);\n private readonly destroy$$ = new Subject<void>();\n\n @Input()\n get nodeData() {\n return this._nodeData;\n }\n\n set nodeData(val) {\n if (val === this._nodeData) {\n return;\n }\n this._nodeData = val;\n this.nodeData$$.next(val);\n }\n\n @Input()\n get leafOnly() {\n return this._leafOnly;\n }\n\n set leafOnly(val: boolean | '') {\n this._leafOnly = coerceAttrBoolean(val);\n }\n\n @ViewChild('titleRef', { static: true })\n titleRef: ElementRef;\n\n @ViewChildren(TreeNodeComponent)\n childNodes: QueryList<TreeNodeComponent<T>>;\n\n selected = false;\n visible = true;\n isLeaf = false;\n\n private _leafOnly = true;\n private readonly select: TreeSelectComponent<T>;\n selected$: Observable<boolean>;\n selfVisible$: Observable<boolean>;\n visible$: Observable<boolean>;\n\n constructor(\n @Inject(forwardRef(() => TreeSelectComponent))\n select: any, // FIXME: workaround temporarily\n private readonly cdr: ChangeDetectorRef,\n ) {\n this.select = select;\n this.selected$ = combineLatest([\n this.select.value$,\n this.nodeData$$.pipe(map(data => data.value)),\n ]).pipe(\n map(\n ([selectValue, selfValue]) =>\n selectValue &&\n this.select.trackFn(selectValue) === this.select.trackFn(selfValue),\n ),\n tap(selected => {\n this.selected = selected;\n }),\n publishReplay(1),\n refCount(),\n );\n this.selfVisible$ = combineLatest([\n this.select.filterString$,\n this.nodeData$$,\n ]).pipe(\n map(([filterString, nodeData]) =>\n this.select.filterFn(filterString, nodeData),\n ),\n publishReplay(1),\n refCount(),\n );\n }\n\n ngAfterViewInit() {\n const hasVisibleChildNodes$ = this.childNodes.changes.pipe(\n startWith(this.childNodes),\n switchMap((nodes: QueryList<TreeNodeComponent<T>>) =>\n nodes.length > 0\n ? combineLatest(nodes.map(node => node.visible$))\n : of([false]),\n ),\n map(visible => visible.some(value => value)),\n tap(hasVisibleChildren => (this.isLeaf = !hasVisibleChildren)),\n );\n this.visible$ = combineLatest([\n this.selfVisible$,\n hasVisibleChildNodes$,\n ]).pipe(\n map(visible => visible.some(value => value)),\n publishReplay(1),\n refCount(),\n );\n\n this.visible$.pipe(takeUntil(this.destroy$$)).subscribe(visible => {\n this.visible = visible;\n this.cdr.markForCheck();\n });\n this.selected$.pipe(takeUntil(this.destroy$$)).subscribe(selected => {\n this.selected = selected;\n this.cdr.markForCheck();\n });\n\n if (this.selected) {\n requestAnimationFrame(() => {\n this.scrollToNode(this);\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n\n onClick() {\n if (this.nodeData.disabled) {\n return;\n }\n if (this.leafOnly && !this.isLeaf) {\n this.switchExpanded();\n return;\n }\n this.select.onNodeClick(this);\n }\n\n switchExpanded() {\n this.nodeData.expanded = !this.nodeData.expanded;\n if (this.nodeData.expanded && this.childNodes.last) {\n requestAnimationFrame(() => {\n this.scrollToNode(this.childNodes.last);\n });\n }\n requestAnimationFrame(() => {\n this.select.updatePosition();\n });\n }\n\n getIcon() {\n return this.nodeData.expanded\n ? this.nodeData.expandedIcon || this.nodeData.icon\n : this.nodeData.icon;\n }\n\n trackByLabel(_: number, data: TreeNode<T>) {\n return data.label;\n }\n\n scrollToNode(node: TreeNodeComponent<T>) {\n if (this.select.nodeListRef) {\n scrollIntoView(\n this.select.nodeListRef.nativeElement,\n node.titleRef.nativeElement,\n );\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\nimport { InputModule } from '../input/public-api';\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport { TreeNodePlaceholderComponent } from './tree-node-placeholder.component';\nimport { TreeNodeComponent } from './tree-node/tree-node.component';\nimport { TreeSelectComponent } from './tree-select.component';\n\n@NgModule({\n imports: [CommonModule, TooltipModule, IconModule, InputModule],\n declarations: [\n TreeSelectComponent,\n TreeNodeComponent,\n TreeNodePlaceholderComponent,\n ],\n exports: [\n TreeSelectComponent,\n TreeNodeComponent,\n TreeNodePlaceholderComponent,\n ],\n})\nexport class TreeSelectModule {}\n","// tslint:disable: no-output-rename\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Host,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { BehaviorSubject, Observable, Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n BaseTooltip,\n TooltipTrigger,\n TooltipType,\n} from '../tooltip/public-api';\nimport { scrollIntoView } from '../utils';\n\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { AutoCompleteContext, SuggestionFilterFn } from './autocomplete.types';\nimport { SuggestionComponent } from './suggestion/suggestion.component';\n\n@Directive({\n selector: 'input[auiAutocomplete],textarea[auiAutocomplete]',\n exportAs: 'auiAutocomplete',\n inputs: ['class:auiAutocompleteClass'],\n host: {\n autocomplete: 'off',\n },\n})\nexport class AutoCompleteDirective\n extends BaseTooltip<AutoCompleteContext>\n implements OnInit, OnDestroy, AfterViewInit {\n @Input('auiAutocomplete')\n get autocomplete() {\n return this._autocomplete;\n }\n\n set autocomplete(val) {\n if (val === this._autocomplete) {\n return;\n }\n val.directive$$.next(this);\n this._autocomplete = val;\n this.content = val.template;\n }\n\n @Input('auiAutocompleteFilterFn')\n @Input()\n get filterFn() {\n return this._filterFn;\n }\n\n set filterFn(val) {\n if (val !== this._filterFn) {\n this._filterFn = val;\n this.filterFn$$.next(val);\n }\n }\n\n @Input('auiAutocompleteDefaultFirstSuggestion')\n defaultFirstSuggestion = true;\n\n @Input('auiAutocompleteTrigger')\n suggestionTrigger: 'auto' | 'input' = 'auto';\n\n declare innerSelector: string;\n\n @Output('auiAutocompleteShow')\n show: EventEmitter<void>;\n\n @Output('auiAutocompleteHide')\n hide: EventEmitter<void>;\n\n @Output('auiAutocompleteSelected')\n selected = new EventEmitter<string>();\n\n private _autocomplete: AutocompleteComponent;\n private focusedSuggestion: SuggestionComponent;\n\n private readonly inputValue$$ = new BehaviorSubject<string>('');\n private readonly filterFn$$ = new BehaviorSubject<SuggestionFilterFn>(\n this.filterFn,\n );\n\n private readonly unsubscribe$ = new Subject<void>();\n\n inputValue$: Observable<string> = this.inputValue$$.asObservable();\n filterFn$: Observable<SuggestionFilterFn> = this.filterFn$$.asObservable();\n\n get input(): HTMLInputElement {\n const el = this.elRef.nativeElement;\n return this.innerSelector ? el.querySelector(this.innerSelector) : el;\n }\n\n constructor(\n overlay: Overlay,\n viewContainerRef: ViewContainerRef,\n elRef: ElementRef<HTMLInputElement>,\n renderer: Renderer2,\n cdr: ChangeDetectorRef,\n ngZone: NgZone,\n @Optional()\n @Host()\n private readonly ngControl: NgControl,\n ) {\n super(overlay, viewContainerRef, elRef, renderer, cdr, ngZone);\n this.type = TooltipType.Plain;\n this.trigger = TooltipTrigger.Manual;\n this.position = 'bottom start';\n this.hideOnClick = true;\n }\n\n ngOnInit() {\n this.show.subscribe(() => {\n this.updateSuggestionsContext();\n });\n this.hide.subscribe(() => {\n this.resetFocusedSuggestion();\n });\n\n if (this.ngControl) {\n this.ngControl.valueChanges\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((value: string | string[]) => {\n if (!Array.isArray(value)) {\n this.inputValue$$.next(value);\n }\n });\n }\n }\n\n ngAfterViewInit() {\n const input = this.input;\n\n fromEvent(input, 'focus')\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => this.onFocus());\n\n fromEvent(input, 'blur')\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => this.onBlur());\n\n fromEvent(input, 'input')\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(ev => this.onInput(ev));\n\n fromEvent(input, 'keydown')\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((ev: KeyboardEvent) => this.onKeyDown(ev));\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n onFocus() {\n if (this.suggestionTrigger === 'auto') {\n super.onFocus();\n }\n }\n\n onInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.inputValue$$.next(value);\n this.createTooltip();\n }\n\n onKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case 'ArrowDown':\n this.focusSuggestionDir('down');\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.focusSuggestionDir('up');\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Enter':\n if (this.focusedSuggestion) {\n this.selectFocusedOption();\n event.stopPropagation();\n event.preventDefault();\n }\n break;\n case 'Escape':\n this.disposeTooltip();\n event.stopPropagation();\n event.preventDefault();\n break;\n }\n }\n\n updateSuggestionsContext() {\n this.context = {\n ...this.context,\n width: this.elRef.nativeElement.offsetWidth + 'px',\n };\n }\n\n onSuggestionClick(value: string) {\n let isArrCtrl = false;\n\n if (this.ngControl) {\n const { control } = this.ngControl;\n isArrCtrl = Array.isArray(control.value);\n control.patchValue(isArrCtrl ? [...control.value, value] : value);\n } else {\n this.input.value = value;\n }\n\n this.inputValue$$.next(isArrCtrl ? '' : value);\n\n this.selected.emit(value);\n this.disposeTooltip();\n }\n\n createTooltip() {\n super.createTooltip();\n this.autoFocusFirstSuggestion();\n }\n\n private autoFocusFirstSuggestion() {\n const selectedSuggestion = this.autocomplete.suggestions.find(\n suggestion => suggestion.selected,\n );\n if (selectedSuggestion) {\n this.resetFocusedSuggestion(selectedSuggestion);\n requestAnimationFrame(() => {\n this.scrollToSuggestion(selectedSuggestion);\n });\n } else if (this.defaultFirstSuggestion) {\n const firstFocusableSuggestion = this.autocomplete.suggestions.find(\n suggestion => suggestion.visible && !suggestion.disabled,\n );\n this.resetFocusedSuggestion(firstFocusableSuggestion);\n if (firstFocusableSuggestion) {\n requestAnimationFrame(() => {\n this.scrollToSuggestion(firstFocusableSuggestion);\n });\n }\n }\n }\n\n private focusSuggestionDir(dir: 'down' | 'up') {\n if (!this.isCreated) {\n this.createTooltip();\n return;\n }\n const visibleSuggestions = this.autocomplete.suggestions.filter(\n suggestion => suggestion.visible && !suggestion.disabled,\n );\n if (visibleSuggestions.length === 0) {\n return;\n }\n const step = dir === 'down' ? 1 : -1;\n let i = visibleSuggestions.indexOf(this.focusedSuggestion);\n i = i + step;\n if (i >= visibleSuggestions.length) {\n i = 0;\n } else if (i < 0) {\n i = visibleSuggestions.length - 1;\n }\n this.resetFocusedSuggestion(visibleSuggestions[i]);\n this.scrollToSuggestion(this.focusedSuggestion);\n }\n\n private resetFocusedSuggestion(\n focusedSuggestion: SuggestionComponent = null,\n ) {\n if (this.focusedSuggestion) {\n this.focusedSuggestion.blur();\n }\n this.focusedSuggestion = focusedSuggestion;\n if (this.focusedSuggestion) {\n this.focusedSuggestion.focus();\n }\n }\n\n private scrollToSuggestion(suggestion: SuggestionComponent) {\n if (this.autocomplete.suggestionListRef) {\n scrollIntoView(\n this.autocomplete.suggestionListRef.nativeElement,\n suggestion.elRef.nativeElement,\n );\n }\n }\n\n protected selectFocusedOption() {\n if (this.focusedSuggestion) {\n this.onSuggestionClick(this.focusedSuggestion.value);\n }\n }\n\n private _filterFn(inputValue: string, suggestion: string) {\n return suggestion?.toLowerCase().includes(inputValue?.toLowerCase() ?? '');\n }\n}\n\n@Directive({\n selector: '[auiAutocomplete]:not(input):not(textarea)',\n exportAs: 'auiAutocomplete',\n inputs: ['class:auiAutocompleteClass'],\n host: {\n autocomplete: 'off',\n },\n})\nexport class CustomAutoCompleteDirective extends AutoCompleteDirective {\n @Input('auiAutocompleteInnerSelector')\n innerSelector = 'input,textarea';\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-autocomplete-placeholder',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class AutocompletePlaceholderComponent {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n switchMap,\n take,\n tap,\n} from 'rxjs/operators';\n\nimport { Bem, buildBem, coerceAttrBoolean } from '../../utils';\nimport { AutocompleteComponent } from '../autocomplete.component';\n\n@Component({\n selector: 'aui-suggestion',\n templateUrl: './suggestion.component.html',\n styleUrls: ['./suggestion.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class SuggestionComponent {\n bem: Bem = buildBem('aui-suggestion');\n\n private _disabled = false;\n private _value: string;\n private readonly value$$ = new BehaviorSubject<string>(this.value);\n\n @Input()\n get value() {\n return this._value;\n }\n\n set value(val) {\n this._value = val;\n this.value$$.next(val);\n }\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(val: boolean | '') {\n this._disabled = coerceAttrBoolean(val);\n }\n\n @ViewChild('elRef', { static: true })\n elRef: ElementRef;\n\n selected = false;\n visible = true;\n focused = false;\n\n private readonly autocomplete: AutocompleteComponent;\n selected$: Observable<boolean>;\n visible$: Observable<boolean>;\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n @Inject(forwardRef(() => AutocompleteComponent))\n autocomplete: any, // FIXME: workaround temporarily\n ) {\n this.autocomplete = autocomplete;\n this.selected$ = combineLatest([\n this.autocomplete.directive$$.pipe(\n switchMap(directive => directive.inputValue$),\n ),\n this.value$$,\n ]).pipe(\n map(([inputValue, selfValue]) => inputValue === selfValue),\n tap(selected => {\n this.selected = selected;\n }),\n publishReplay(1),\n refCount(),\n );\n this.visible$ = combineLatest([\n this.autocomplete.directive$$.pipe(\n switchMap(directive => directive.filterFn$),\n ),\n this.autocomplete.directive$$.pipe(\n switchMap(directive => directive.inputValue$),\n ),\n this.value$$,\n ]).pipe(\n map(([filterFn, filterString, suggestion]) =>\n filterFn(filterString, suggestion),\n ),\n tap(visible => {\n this.visible = visible;\n }),\n publishReplay(1),\n refCount(),\n );\n }\n\n onClick() {\n if (this.disabled) {\n return;\n }\n this.autocomplete.directive$$.pipe(take(1)).subscribe(directive => {\n directive.onSuggestionClick(this.value);\n });\n }\n\n focus() {\n this.focused = true;\n this.cdr.markForCheck();\n }\n\n blur() {\n this.focused = false;\n this.cdr.markForCheck();\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable, ReplaySubject, combineLatest } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n tap,\n} from 'rxjs/operators';\n\nimport { AutocompletePlaceholderComponent } from './autocomplete-placeholder.component';\nimport { AutoCompleteDirective } from './autocomplete.directive';\nimport { SuggestionComponent } from './suggestion/suggestion.component';\n\n@Component({\n selector: 'aui-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class AutocompleteComponent implements AfterContentInit {\n @ContentChildren(SuggestionComponent, { descendants: true })\n suggestions: QueryList<SuggestionComponent>;\n\n @ContentChildren(AutocompletePlaceholderComponent)\n placeholder: QueryList<AutocompletePlaceholderComponent>;\n\n @ViewChild(TemplateRef, { static: true })\n template: TemplateRef<any>;\n\n @ViewChild('suggestionListRef', { static: true })\n suggestionListRef: ElementRef;\n\n hasVisibleSuggestion$: Observable<boolean>;\n hasContent$: Observable<boolean>;\n\n directive$$ = new ReplaySubject<AutoCompleteDirective>(1);\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n ngAfterContentInit() {\n this.hasVisibleSuggestion$ = this.suggestions.changes.pipe(\n startWith(this.suggestions),\n switchMap((suggestions: QueryList<SuggestionComponent>) =>\n combineLatest(suggestions.map(suggestion => suggestion.visible$)),\n ),\n map(visible => visible.some(value => value)),\n distinctUntilChanged(),\n debounceTime(0),\n tap(() => {\n this.cdr.markForCheck();\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.hasContent$ = combineLatest([\n this.hasVisibleSuggestion$,\n this.placeholder.changes.pipe(\n startWith(this.placeholder),\n map(\n (list: QueryList<AutocompletePlaceholderComponent>) => !!list.length,\n ),\n ),\n ]).pipe(\n map(\n ([hasVisibleSuggestion, hasPlaceholder]) =>\n hasVisibleSuggestion || hasPlaceholder,\n ),\n );\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n QueryList,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n} from 'rxjs/operators';\n\nimport { SuggestionComponent } from '../suggestion/suggestion.component';\n\n@Component({\n selector: 'aui-suggestion-group',\n templateUrl: './suggestion-group.component.html',\n styleUrls: ['./suggestion-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class SuggestionGroupComponent implements AfterContentInit {\n @ContentChildren(forwardRef(() => SuggestionComponent))\n suggestions: QueryList<SuggestionComponent>;\n\n hasVisibleSuggestion$: Observable<boolean>;\n\n ngAfterContentInit() {\n this.hasVisibleSuggestion$ = this.suggestions.changes.pipe(\n startWith(this.suggestions),\n switchMap((options: QueryList<SuggestionComponent>) =>\n options.length > 0\n ? combineLatest(options.map(node => node.visible$))\n : of([false]),\n ),\n map(visible => visible.some(value => value)),\n publishReplay(1),\n refCount(),\n );\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[auiSuggestionGroupTitle]',\n exportAs: 'auiSuggestionGroupTitle',\n host: {\n '[class.aui-suggestion-group__title]': 'true',\n },\n})\nexport class SuggestionGroupTitleDirective {}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport { AutocompletePlaceholderComponent } from './autocomplete-placeholder.component';\nimport { AutocompleteComponent } from './autocomplete.component';\nimport {\n AutoCompleteDirective,\n CustomAutoCompleteDirective,\n} from './autocomplete.directive';\nimport { SuggestionGroupTitleDirective } from './helper-directives';\nimport { SuggestionGroupComponent } from './suggestion-group/suggestion-group.component';\nimport { SuggestionComponent } from './suggestion/suggestion.component';\n\n@NgModule({\n imports: [CommonModule, OverlayModule, TooltipModule],\n declarations: [\n AutoCompleteDirective,\n CustomAutoCompleteDirective,\n AutocompleteComponent,\n SuggestionComponent,\n AutocompletePlaceholderComponent,\n SuggestionGroupComponent,\n SuggestionGroupTitleDirective,\n ],\n exports: [\n AutoCompleteDirective,\n CustomAutoCompleteDirective,\n AutocompleteComponent,\n SuggestionComponent,\n AutocompletePlaceholderComponent,\n SuggestionGroupComponent,\n SuggestionGroupTitleDirective,\n ],\n})\nexport class AutocompleteModule {}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport {\n EMPTY,\n Subject,\n Subscription,\n animationFrameScheduler,\n of,\n} from 'rxjs';\nimport {\n debounceTime,\n endWith,\n map,\n observeOn,\n repeat,\n startWith,\n switchMap,\n takeUntil,\n takeWhile,\n tap,\n} from 'rxjs/operators';\n\nimport { TocContentDirective } from './toc-content.directive';\n\n@Directive({\n selector: '[auiTocContainer]',\n exportAs: 'auiTocContainer',\n})\nexport class TocContainerDirective implements AfterContentInit, OnDestroy {\n @Output()\n activedChange = new EventEmitter<string>();\n\n private _contents: TocContentDirective[] = [];\n private readonly _scrollTop$ = new Subject<number>();\n private readonly _scrollTo$ = new Subject<string>();\n private readonly _onDestroy$ = new Subject<void>();\n private readonly _subs: Subscription[] = [];\n private _nativeElement: HTMLElement;\n\n get scrollTop(): number {\n return this._nativeElement.scrollTop || 0;\n }\n\n set scrollTop(value: number) {\n this._nativeElement.scrollTop = value;\n }\n\n get isScrollEnd() {\n return (\n this._nativeElement.scrollHeight - this._nativeElement.scrollTop ===\n this._nativeElement.clientHeight\n );\n }\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private readonly cdr: ChangeDetectorRef,\n ) {\n this._nativeElement = elementRef.nativeElement;\n }\n\n getOffsetTop(element: HTMLElement): number {\n if (element.parentElement === this._nativeElement) {\n return element.offsetTop;\n }\n return element.offsetTop + this.getOffsetTop(element.parentElement);\n }\n\n private getMinContent(scrollTop: number) {\n return (minContent: TocContentDirective, content: TocContentDirective) => {\n if (\n Math.abs(scrollTop - this.getOffsetTop(content.nativeElement)) <\n Math.abs(scrollTop - this.getOffsetTop(minContent.nativeElement))\n ) {\n minContent = content;\n }\n return minContent;\n };\n }\n\n private getMaxContent(\n maxContent: TocContentDirective,\n content: TocContentDirective,\n ) {\n if (\n this.getOffsetTop(content.nativeElement) >\n this.getOffsetTop(maxContent.nativeElement)\n ) {\n maxContent = content;\n }\n return maxContent;\n }\n\n @HostListener('scroll')\n onScroll() {\n this._scrollTop$.next(this.scrollTop);\n }\n\n ngAfterContentInit() {\n const actived$ = this._scrollTop$\n .pipe(\n startWith(this.scrollTop),\n debounceTime(200),\n map(scrollTop =>\n this._contents.reduce(\n this.isScrollEnd\n ? this.getMaxContent.bind(this)\n : this.getMinContent(scrollTop),\n ),\n ),\n map(actived => actived.auiTocContent),\n )\n .pipe(\n tap(actived => {\n this._contents.forEach(content => {\n content.active = actived === content.auiTocContent;\n });\n this.cdr.detectChanges();\n }),\n );\n\n const scrollTween$ = this._scrollTo$.pipe(\n switchMap(name => {\n const target = this._contents.find(\n content => content.auiTocContent === name,\n );\n\n if (!target) {\n return EMPTY;\n }\n const destination = this.getOffsetTop(target.nativeElement);\n\n const start = performance.now();\n const source = this.scrollTop;\n const duration = 500;\n\n return of(0).pipe(\n observeOn(animationFrameScheduler),\n repeat(),\n map(() => (performance.now() - start) / duration),\n takeWhile(t => t < 1),\n endWith(1),\n map(t => t * t * t),\n map(t => source * (1 - t) + destination * t),\n );\n }),\n takeUntil(this._onDestroy$),\n );\n\n this._subs.push(\n actived$.subscribe(this.activedChange),\n scrollTween$.subscribe(tweenValue => {\n this.scrollTop = tweenValue;\n }),\n );\n }\n\n ngOnDestroy() {\n this._subs.forEach(sub => sub.unsubscribe());\n this._onDestroy$.next();\n }\n\n scrollTo(content: string | string[]) {\n if (Array.isArray(content)) {\n this._scrollTo$.next(content[0]);\n } else {\n this._scrollTo$.next(content);\n }\n }\n\n registerContent(tocContent: TocContentDirective) {\n this._contents = [...this._contents, tocContent];\n }\n\n deregisterContent(tocContent: TocContentDirective) {\n this._contents = this._contents.filter(\n content => content.auiTocContent !== tocContent.auiTocContent,\n );\n }\n}\n","import {\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\n\nimport { TocContainerDirective } from './toc-container.directive';\n\n@Directive({\n selector: '[auiTocContent]',\n})\nexport class TocContentDirective implements OnInit, OnDestroy {\n @HostBinding('class.isActive')\n active: boolean;\n\n @Input()\n auiTocContent: string;\n\n nativeElement: HTMLElement;\n\n constructor(\n elemRef: ElementRef<HTMLElement>,\n @Optional() private readonly containerDirective: TocContainerDirective,\n ) {\n this.nativeElement = elemRef.nativeElement;\n }\n\n ngOnInit(): void {\n if (this.containerDirective) {\n this.containerDirective.registerContent(this);\n }\n }\n\n ngOnDestroy(): void {\n if (this.containerDirective) {\n this.containerDirective.deregisterContent(this);\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { TocContainerDirective } from './toc-container.directive';\n\n@Directive({\n selector: '[auiTocLink]',\n})\nexport class TocLinkDirective implements OnInit, OnDestroy {\n @HostBinding('class.isActive')\n active: boolean;\n\n @Input()\n for: TocContainerDirective;\n\n @Input()\n auiTocLink: string | string[];\n\n private readonly _subs: Subscription[] = [];\n\n @HostListener('click')\n onClick() {\n this.for.scrollTo(this.auiTocLink);\n }\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n if (!this.for || !this.auiTocLink) {\n return;\n }\n this._subs.push(\n this.for.activedChange.subscribe((actived: string) => {\n if (Array.isArray(this.auiTocLink)) {\n this.active = this.auiTocLink.includes(actived);\n } else {\n this.active = actived === this.auiTocLink;\n }\n this.cdr.detectChanges();\n }),\n );\n }\n\n ngOnDestroy() {\n this._subs.forEach(sub => sub.unsubscribe());\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TocContainerDirective } from './toc-container.directive';\nimport { TocContentDirective } from './toc-content.directive';\nimport { TocLinkDirective } from './toc-link.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TocContentDirective, TocContainerDirective, TocLinkDirective],\n exports: [TocContentDirective, TocContainerDirective, TocLinkDirective],\n})\nexport class TableOfContentsModule {}\n","import { ValueOf } from '../types';\n\nexport interface Status {\n type?: StatusType;\n class?: string;\n scale: number;\n [key: string]: unknown;\n}\n\nexport const StatusType = {\n Primary: 'primary',\n Success: 'success',\n Warning: 'warning',\n Error: 'error',\n Info: 'info',\n Pending: 'pending',\n} as const;\n\nexport type StatusType = ValueOf<typeof StatusType>;\n\nexport const StatusBarSize = {\n Medium: 'medium',\n Small: 'small',\n} as const;\n\nexport type StatusBarSize = ValueOf<typeof StatusBarSize>;\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { Status, StatusBarSize } from './status-bar.types';\n\n@Component({\n selector: 'aui-status-bar',\n templateUrl: './status-bar.component.html',\n styleUrls: ['./status-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class StatusBarComponent {\n bem: Bem = buildBem('aui-status-bar');\n\n @Input()\n status: Status[] = [];\n\n @Input()\n size: StatusBarSize = StatusBarSize.Medium;\n\n @Input()\n template: TemplateRef<any>;\n\n @Output()\n statusClick = new EventEmitter<Status>();\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport { StatusBarComponent } from './status-bar.component';\n\n@NgModule({\n imports: [CommonModule, TooltipModule],\n declarations: [StatusBarComponent],\n exports: [StatusBarComponent],\n})\nexport class StatusBarModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CommonFormControl } from '../form/public-api';\n\n@Component({\n selector: 'aui-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent),\n multi: true,\n },\n ],\n})\nexport class ColorPickerComponent extends CommonFormControl<string> {\n writeValue(val: string) {\n this.value$$.next(val);\n }\n\n onInput(event: Event) {\n this.emitValueChange((event.target as HTMLInputElement).value);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ColorPickerComponent } from './color-picker.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [ColorPickerComponent],\n exports: [ColorPickerComponent],\n})\nexport class ColorPickerModule {}\n","import { CdkAccordion } from '@angular/cdk/accordion';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n Optional,\n SkipSelf,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class AccordionComponent extends CdkAccordion {\n @Input()\n background = true;\n\n @HostBinding('attr.accordion-depth')\n depth: number;\n\n constructor(\n @SkipSelf()\n @Optional()\n public parent: AccordionComponent,\n ) {\n super();\n this.depth = parent ? parent.depth + 1 : 0;\n }\n}\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport { CdkAccordionItem } from '@angular/cdk/accordion';\nimport { UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n Input,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { filter, startWith, take } from 'rxjs/operators';\n\nimport { AccordionComponent } from '../accordion.component';\n\n@Directive({\n selector: '[auiAccordionItemHeader]',\n})\nexport class AccordionItemHeaderDirective {}\n@Directive({\n selector: '[auiAccordionContent]',\n})\nexport class AccordionItemContentDirective {}\n@Component({\n selector: 'aui-accordion-item',\n templateUrl: 'accordion-item.component.html',\n styleUrls: ['accordion-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n animations: [\n trigger('expand', [\n state('*', style({ height: 0 })),\n state('expanded', style({ height: '*' })),\n transition('* <=> expanded', [animate('0.1s ease-in-out')]),\n ]),\n ],\n viewProviders: [AccordionItemComponent],\n})\nexport class AccordionItemComponent\n extends CdkAccordionItem\n implements AfterContentInit {\n @Input()\n background = true;\n\n @ContentChild(AccordionItemContentDirective, {\n read: TemplateRef,\n static: true,\n })\n _lazyContentTpl: TemplateRef<unknown>;\n\n lazyContentTpl: TemplateRef<unknown>;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n accordion: AccordionComponent,\n cdr: ChangeDetectorRef,\n uniqueSelectionDispatcher: UniqueSelectionDispatcher,\n ) {\n super(accordion, cdr, uniqueSelectionDispatcher);\n }\n\n ngAfterContentInit() {\n if (this._lazyContentTpl) {\n // Render the content as soon as the accordion becomes open.\n this.opened\n .pipe(\n startWith(null as void),\n filter(() => !!this.expanded),\n take(1),\n )\n .subscribe(() => {\n this.lazyContentTpl = this._lazyContentTpl;\n });\n }\n }\n}\n","import { CdkAccordionModule } from '@angular/cdk/accordion';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ButtonModule } from '../button/public-api';\nimport { IconModule } from '../icon/public-api';\n\nimport {\n AccordionItemComponent,\n AccordionItemContentDirective,\n AccordionItemHeaderDirective,\n} from './accordion-item/accordion-item.component';\nimport { AccordionComponent } from './accordion.component';\n\n@NgModule({\n declarations: [\n AccordionComponent,\n AccordionItemComponent,\n AccordionItemHeaderDirective,\n AccordionItemContentDirective,\n ],\n imports: [CommonModule, CdkAccordionModule, IconModule, ButtonModule],\n exports: [\n AccordionComponent,\n AccordionItemComponent,\n AccordionItemHeaderDirective,\n AccordionItemContentDirective,\n ],\n providers: [],\n})\nexport class AccordionModule {}\n","import { ListRange } from '@angular/cdk/collections';\nimport {\n CdkVirtualScrollViewport,\n VirtualScrollStrategy,\n} from '@angular/cdk/scrolling';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Injectable()\nexport class FixedSizeTableVirtualScrollStrategy\n implements VirtualScrollStrategy {\n private _rowHeight = 42;\n private _headerHeight = 42;\n private _bufferSize = 10;\n private readonly _indexChange = new Subject<number>();\n viewport: CdkVirtualScrollViewport;\n\n scrolledIndexChange = this._indexChange.pipe(distinctUntilChanged());\n stickyChange = new Subject<number>();\n\n renderedRangeStream = new BehaviorSubject<ListRange>({ start: 0, end: 0 });\n\n get dataLength(): number {\n return this._dataLength;\n }\n\n set dataLength(value: number) {\n if (value !== this._dataLength) {\n this._dataLength = value;\n this.onDataLengthChanged();\n }\n }\n\n private _dataLength = 0;\n\n attach(viewport: CdkVirtualScrollViewport): void {\n this.viewport = viewport;\n this.viewport.renderedRangeStream.subscribe(this.renderedRangeStream);\n this.onDataLengthChanged();\n }\n\n detach(): void {\n this._indexChange.complete();\n this.renderedRangeStream.complete();\n this.stickyChange.complete();\n }\n\n onContentScrolled(): void {\n this._updateContent();\n }\n\n onDataLengthChanged(): void {\n if (this.viewport) {\n this.viewport.setTotalContentSize(this._rowHeight * this.dataLength);\n }\n this._updateContent();\n }\n\n onContentRendered(): void {\n // no-op\n }\n\n onRenderedOffsetChanged(): void {\n // no-op\n }\n\n scrollToIndex(index: number, behavior: ScrollBehavior): void {\n if (!this.viewport || !this._rowHeight) {\n return;\n }\n this.viewport.scrollToOffset(\n (index - 1) * this._rowHeight + this._headerHeight,\n behavior,\n );\n }\n\n setConfig(rowHeight: number, headerHeight: number, bufferSize: number) {\n this._rowHeight = rowHeight;\n this._headerHeight = headerHeight;\n this._bufferSize = bufferSize;\n this.onDataLengthChanged();\n }\n\n private _updateContent() {\n if (!this.viewport) {\n return;\n }\n const newIndex =\n Math.round(\n (this.viewport.measureScrollOffset() - this._headerHeight) /\n this._rowHeight,\n ) + 1;\n const start = Math.max(0, newIndex - this._bufferSize);\n const end = Math.min(\n this._dataLength,\n newIndex +\n Math.ceil(this.viewport.getViewportSize() / this._rowHeight) +\n this._bufferSize,\n );\n const renderedOffset = start * this._rowHeight;\n this.viewport.setRenderedContentOffset(renderedOffset);\n this.viewport.setRenderedRange({ start, end });\n this.stickyChange.next(renderedOffset);\n this._indexChange.next(newIndex);\n }\n}\n","import { VIRTUAL_SCROLL_STRATEGY } from '@angular/cdk/scrolling';\nimport { CdkHeaderRowDef } from '@angular/cdk/table';\nimport {\n AfterContentInit,\n ContentChild,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n forwardRef,\n} from '@angular/core';\nimport { BehaviorSubject, Subject, combineLatest } from 'rxjs';\nimport { filter, map, takeUntil, tap } from 'rxjs/operators';\n\nimport { TableComponent } from '../table/public-api';\n\nimport { FixedSizeTableVirtualScrollStrategy } from './fixed-size-table-virtual-scroll-strategy';\n\nexport function _tableVirtualScrollDirectiveStrategyFactory(\n tableDir: FixedSizeTableVirtualScrollDirective,\n) {\n return tableDir.scrollStrategy;\n}\n\nconst stickyHeaderSelector = '.aui-table__header-row.aui-table-sticky';\n\nconst defaults = {\n rowHeight: 42,\n headerHeight: 42,\n buffer: 10,\n};\n\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: 'aui-virtual-scroll-viewport[fixedSize]',\n exportAs: 'viewPort',\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _tableVirtualScrollDirectiveStrategyFactory,\n deps: [forwardRef(() => FixedSizeTableVirtualScrollDirective)],\n },\n ],\n})\nexport class FixedSizeTableVirtualScrollDirective<T = unknown>\n implements AfterContentInit, OnChanges, OnDestroy {\n private readonly onDestroy$ = new Subject();\n private readonly _dataSource$$ = new BehaviorSubject<T[]>([]);\n\n @Input()\n rowHeight: number = defaults.rowHeight;\n\n @Input()\n headerHeight: number = defaults.headerHeight;\n\n @Input()\n buffer: number = defaults.buffer;\n\n @Input()\n set dataSource(dataSource: T[]) {\n this._dataSource$$.next(dataSource);\n this.scrollStrategy.dataLength = dataSource?.length;\n }\n\n @ContentChild(TableComponent, { static: false })\n table: TableComponent<any>;\n\n scrollStrategy = new FixedSizeTableVirtualScrollStrategy();\n\n private stickyPositions: Map<HTMLElement, number>;\n\n ngAfterContentInit() {\n this.scrollStrategy.stickyChange\n .pipe(\n filter(() => this.isStickyEnabled()),\n tap(() => {\n if (!this.stickyPositions) {\n this.initStickyPositions();\n }\n }),\n takeUntil(this.onDestroy$),\n )\n .subscribe(stickyOffset => {\n this.setSticky(stickyOffset);\n });\n combineLatest([this.scrollStrategy.renderedRangeStream, this._dataSource$$])\n .pipe(\n map(([{ start, end }, dataSource]) =>\n typeof start !== 'number' || typeof end !== 'number'\n ? dataSource\n : dataSource?.slice(start, end),\n ),\n takeUntil(this.onDestroy$),\n )\n .subscribe(data => {\n this.table.dataSource = data;\n });\n }\n\n ngOnChanges({ rowHeight, headerHeight, buffer }: SimpleChanges) {\n if (rowHeight || headerHeight || buffer) {\n this.scrollStrategy.setConfig(\n this.rowHeight,\n this.headerHeight,\n this.buffer,\n );\n }\n }\n\n ngOnDestroy() {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n }\n\n private isStickyEnabled(): boolean {\n return (\n !!this.scrollStrategy.viewport &&\n // @ts-expect-error\n (this.table._headerRowDefs as CdkHeaderRowDef[])\n .map(def => def.sticky)\n .reduce((prev, curr) => prev && curr, true)\n );\n }\n\n private initStickyPositions() {\n this.stickyPositions = new Map<HTMLElement, number>();\n this.scrollStrategy.viewport.elementRef.nativeElement\n .querySelectorAll(stickyHeaderSelector)\n .forEach(el => {\n const parent = el.parentElement;\n if (!this.stickyPositions.has(parent)) {\n this.stickyPositions.set(parent, parent.offsetTop);\n }\n });\n }\n\n private setSticky(offset: number) {\n this.scrollStrategy.viewport.elementRef.nativeElement\n .querySelectorAll(stickyHeaderSelector)\n .forEach((el: HTMLElement) => {\n const parent = el.parentElement;\n let baseOffset = 0;\n if (this.stickyPositions.has(parent)) {\n baseOffset = this.stickyPositions.get(parent);\n }\n el.style.top = `${baseOffset - offset}px`;\n });\n }\n}\n","import {\n CdkFixedSizeVirtualScroll,\n VIRTUAL_SCROLL_STRATEGY,\n _fixedSizeVirtualScrollStrategyFactory,\n} from '@angular/cdk/scrolling';\nimport { Directive, forwardRef } from '@angular/core';\n\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: 'aui-virtual-scroll-viewport[itemSize]',\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => FixedSizeVirtualScrollDirective)],\n },\n ],\n})\nexport class FixedSizeVirtualScrollDirective extends CdkFixedSizeVirtualScroll {}\n","import { DataSource } from '@angular/cdk/collections';\nimport {\n CdkVirtualForOf,\n CdkVirtualForOfContext,\n} from '@angular/cdk/scrolling';\nimport {\n Directive,\n Input,\n NgIterable,\n TemplateRef,\n TrackByFunction,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Directive({\n selector: '[auiVirtualFor][auiVirtualForOf]',\n})\nexport class VirtualForOfDirective<T> extends CdkVirtualForOf<T> {\n @Input()\n set auiVirtualForOf(\n // tslint:disable-next-line: max-union-size\n value: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined,\n ) {\n this.cdkVirtualForOf = value;\n }\n\n @Input()\n set auiVirtualForTrackBy(fn: TrackByFunction<T> | undefined) {\n this.cdkVirtualForTrackBy = fn;\n }\n\n @Input()\n set auiVirtualForTemplate(value: TemplateRef<CdkVirtualForOfContext<T>>) {\n this.cdkVirtualForTemplate = value;\n }\n\n @Input()\n set auiVirtualForTemplateCacheSize(size: number) {\n this.cdkVirtualForTemplateCacheSize = size;\n }\n}\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-virtual-scroll-viewport',\n templateUrl: 'virtual-scroll-viewport.component.html',\n styleUrls: ['virtual-scroll-viewport.component.scss'],\n host: {\n class: 'aui-virtual-scroll-viewport',\n '[class.aui-virtual-scroll-orientation-horizontal]':\n 'orientation === \"horizontal\"',\n '[class.aui-virtual-scroll-orientation-vertical]':\n 'orientation !== \"horizontal\"',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: CdkVirtualScrollViewport,\n useExisting: VirtualScrollViewportComponent,\n },\n ],\n})\nexport class VirtualScrollViewportComponent extends CdkVirtualScrollViewport {}\n","import { NgModule } from '@angular/core';\n\nimport { FixedSizeTableVirtualScrollDirective } from './fixed-size-table-virtual-scroll.directive';\nimport { FixedSizeVirtualScrollDirective } from './fixed-size-virtual-scroll.directive';\nimport { VirtualForOfDirective } from './virtual-for-of.directive';\nimport { VirtualScrollViewportComponent } from './virtual-scroll-viewport.component';\n\nconst EXPORTABLE_COMPONENTS = [VirtualScrollViewportComponent];\nconst EXPORTABLE_DIRECTIVES = [\n FixedSizeTableVirtualScrollDirective,\n FixedSizeVirtualScrollDirective,\n VirtualForOfDirective,\n];\n\nconst EXPORTABLE = [...EXPORTABLE_COMPONENTS, ...EXPORTABLE_DIRECTIVES];\n\n@NgModule({\n declarations: EXPORTABLE,\n exports: EXPORTABLE,\n})\nexport class ScrollingModule {}\n","import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ApplicationRef,\n ComponentFactoryResolver,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n} from '@angular/core';\nimport { Subject, fromEvent, merge } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nimport { observeResizeOn } from '../utils';\n\nimport { AnchorComponent } from './anchor.component';\n\nlet uid = 0;\n\n@Directive()\n// tslint:disable-next-line: directive-class-suffix\nexport class AnchorDirectiveChild {\n readonly parent: AnchorDirective;\n\n constructor(protected injector: Injector) {\n this.parent = this.injector.get(AnchorDirective);\n }\n}\n\n@Directive({\n selector: '[auiAnchorLabel]',\n})\nexport class AnchorLabelDirective\n extends AnchorDirectiveChild\n implements OnInit, AfterContentChecked {\n @HostBinding('class.aui-anchor__label')\n @Input('auiAnchorLabel')\n get label() {\n return this._label || this.elRef.nativeElement.textContent;\n }\n\n set label(value) {\n this._label = value;\n this.labelChange.emit(value);\n }\n\n private _label: string | TemplateRef<unknown>;\n\n @Input('auiAnchorLabelContext')\n labelContext: unknown;\n\n get target() {\n return this.elRef.nativeElement;\n }\n\n @Input()\n set id(id) {\n if (this.parent.injectId && !this.id) {\n this.elRef.nativeElement.id = id;\n }\n this._id = id;\n }\n\n get id() {\n return this._id;\n }\n\n private _id: string = this.elRef.nativeElement.id;\n\n @Input()\n set level(value: number | '') {\n this._level = value === '' ? 1 : value;\n }\n\n get level() {\n return this._level;\n }\n\n private _level = 0;\n\n @Output()\n labelChange = new EventEmitter<string | TemplateRef<unknown>>();\n\n constructor(\n protected injector: Injector,\n public readonly elRef: ElementRef<HTMLElement>,\n ) {\n super(injector);\n }\n\n ngOnInit() {\n if (!this.id) {\n this.id = 'anchor-uid-' + uid++;\n }\n }\n\n ngAfterContentChecked() {\n if (!this._label) {\n this.labelChange.emit(this.label);\n }\n }\n}\n\n@Directive({\n selector: '[auiAnchor]',\n})\nexport class AnchorDirective implements AfterContentInit, OnDestroy {\n @Input()\n auiAnchor: HTMLElement | '';\n\n @Input()\n adaptPosition = true;\n\n @Input()\n padding = 20;\n\n @Input()\n minTop: number;\n\n @Input()\n injectId = window === window.top;\n\n @ContentChildren(AnchorLabelDirective, { descendants: true })\n anchorLabels: QueryList<AnchorLabelDirective>;\n\n get containerEl() {\n return this.elRef.nativeElement;\n }\n\n get scrollableEl() {\n const el = this.containerEl;\n return (\n this.auiAnchor ||\n this.cdkScrollable?.getElementRef().nativeElement ||\n (el.scrollHeight > el.offsetHeight ? el : window)\n );\n }\n\n anchorPortal: ComponentPortal<AnchorComponent>;\n\n destroy$$ = new Subject<void>();\n\n constructor(\n private readonly cfr: ComponentFactoryResolver,\n private readonly appRef: ApplicationRef,\n private readonly injector: Injector,\n public readonly elRef: ElementRef<HTMLElement>,\n @Optional() private readonly cdkScrollable: CdkScrollable,\n ) {}\n\n ngAfterContentInit() {\n const containerEl = this.containerEl;\n this.anchorPortal = new ComponentPortal(AnchorComponent);\n const portalOutlet = new DomPortalOutlet(\n document.body,\n this.cfr,\n this.appRef,\n this.injector,\n );\n const anchorComponentRef = this.anchorPortal.attach(portalOutlet);\n const anchorEl = anchorComponentRef.injector.get(ElementRef)\n .nativeElement as HTMLElement;\n\n requestAnimationFrame(() =>\n this.adaptAnchorPosition(containerEl, anchorEl),\n );\n\n this.anchorLabels.changes\n .pipe(startWith(this.anchorLabels), takeUntil(this.destroy$$))\n .subscribe((anchorLabels: QueryList<AnchorLabelDirective>) => {\n Object.assign(anchorComponentRef.instance, {\n items: anchorLabels.toArray(),\n });\n });\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n this.anchorPortal.detach();\n }\n\n adaptAnchorPosition(containerEl: HTMLElement, anchorEl: HTMLElement) {\n const pageContentEl = containerEl.closest('.aui-page__content');\n const anchorContentEl = anchorEl.querySelector('.aui-anchor');\n\n merge(observeResizeOn(containerEl), fromEvent(window, 'scroll'))\n .pipe(startWith(null as void), takeUntil(this.destroy$$))\n .subscribe(() => {\n const containerRect = containerEl.getBoundingClientRect();\n Object.assign(anchorEl.style, {\n display: !containerRect.width || !containerRect.height ? 'none' : '',\n left:\n containerRect.right -\n anchorContentEl.getBoundingClientRect().width +\n 'px',\n top:\n Math.max(\n containerRect.top,\n (this.minTop ??\n (pageContentEl &&\n +getComputedStyle(pageContentEl).paddingTop.slice(0, -2))) ||\n 0,\n ) + 'px',\n });\n });\n\n if (this.adaptPosition) {\n observeResizeOn(anchorContentEl)\n .pipe(takeUntil(this.destroy$$))\n .subscribe(el => {\n const width = el.getBoundingClientRect().width;\n const padding = width + this.padding;\n containerEl.style.paddingRight = padding + 'px';\n });\n }\n }\n}\n","import { last } from '../utils';\n\nimport { AnchorItem, AnchorTreeItem } from './types';\n\nexport const getAnchorTreeItems = (items: AnchorItem[], level = 0) => {\n const treeItems: AnchorTreeItem[] = [];\n const subItems: AnchorItem[] = [];\n for (const item of items) {\n if (item.level === level) {\n const lastTreeItem = last(treeItems);\n if (lastTreeItem) {\n const children = getAnchorTreeItems(subItems, level + 1);\n if (children.length) {\n lastTreeItem.children = children;\n }\n }\n treeItems.push(item);\n subItems.length = 0;\n } else {\n subItems.push(item);\n }\n }\n if (subItems.length) {\n last(treeItems).children = getAnchorTreeItems(subItems, level + 1);\n }\n return treeItems;\n};\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { EMPTY, Subject, combineLatest, fromEvent, of } from 'rxjs';\nimport { debounceTime, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { buildBem, isTemplateRef, last } from '../utils';\n\nimport { AnchorDirectiveChild } from './anchor.directive';\nimport { AnchorItem, AnchorTreeItem } from './types';\nimport { getAnchorTreeItems } from './utils';\n\nconst bem = buildBem('aui-anchor');\n\n@Component({\n selector: 'aui-anchor-tree',\n templateUrl: 'anchor-tree.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AnchorTreeComponent\n extends AnchorDirectiveChild\n implements OnDestroy {\n @Input()\n set treeItems(treeItems) {\n this._treeItems = treeItems;\n this.watchLabelsChange();\n }\n\n get treeItems() {\n return this._treeItems;\n }\n\n private _treeItems: AnchorTreeItem[];\n\n @Input()\n activeId: string;\n\n @Output()\n activeIdChange = new EventEmitter<string>();\n\n bem = bem;\n\n isTemplateRef = isTemplateRef;\n\n private readonly depose$$ = new Subject<void>();\n\n watchLabelsChange() {\n this.depose$$.next();\n const cdr = this.injector.get(ChangeDetectorRef);\n // FIXME: Is there any better way to achieve this?\n combineLatest(\n this.treeItems.map(({ labelChange }) => labelChange).filter(Boolean),\n )\n .pipe(debounceTime(0), takeUntil(this.depose$$))\n .subscribe(() => cdr.markForCheck());\n }\n\n ngOnDestroy() {\n this.depose$$.next();\n this.depose$$.complete();\n }\n\n isActive(item: AnchorTreeItem): boolean {\n return (\n item.id === this.activeId ||\n item.children?.some(subItem => this.isActive(subItem))\n );\n }\n\n onItemClick(e: Event, item: AnchorTreeItem) {\n e.preventDefault();\n\n if (this.parent.injectId) {\n const selector = '#' + item.id;\n\n if (location.hash === selector) {\n return;\n }\n\n history.pushState(\n null,\n null,\n location.pathname + location.search + selector,\n );\n }\n\n item.target.scrollIntoView({ behavior: 'smooth' });\n\n this.activeIdChange.emit(item.id);\n }\n\n trackById(_index: number, item: AnchorItem) {\n return item.id;\n }\n}\n\n@Component({\n selector: 'aui-anchor',\n templateUrl: 'anchor.component.html',\n styleUrls: ['anchor.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AnchorComponent\n extends AnchorDirectiveChild\n implements AfterViewInit, OnDestroy {\n @Input()\n get items() {\n return this._items;\n }\n\n set items(items) {\n this._items = items;\n this.treeItems = getAnchorTreeItems(items);\n const anchorId =\n (this.parent.injectId && location.hash.slice(1)) || this.activeId;\n const activeItem =\n (anchorId && items.find(({ id }) => id === anchorId)) || items[0];\n if (activeItem) {\n if (this.parent.injectId && this.parent.scrollableEl !== window) {\n activeItem.target.scrollIntoView();\n }\n this.activeId = activeItem.id;\n }\n }\n\n private _items: AnchorItem[];\n\n @Input()\n treeItems: AnchorTreeItem[];\n\n @Input()\n activeId: string;\n\n bem = bem;\n\n private readonly destroy$$ = new Subject<void>();\n\n constructor(\n protected injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n ) {\n super(injector);\n }\n\n ngAfterViewInit() {\n const { injectId, containerEl, scrollableEl } = this.parent;\n const pageContentEl = containerEl.closest('.aui-page__content');\n const paddingTop = pageContentEl\n ? +getComputedStyle(pageContentEl).paddingTop.slice(0, -2)\n : 0;\n fromEvent(scrollableEl, 'scroll')\n .pipe(\n debounceTime(100),\n switchMap(() => {\n const { scrollTop } =\n scrollableEl === window\n ? document.documentElement\n : (scrollableEl as HTMLElement);\n const activedItem =\n this.items.find(\n ({ target }) =>\n target.offsetTop +\n target.offsetHeight / 2 +\n ((scrollableEl === window &&\n (target.offsetParent as HTMLElement)?.offsetTop) ||\n 0) >\n scrollTop + paddingTop,\n ) || last(this.items);\n return activedItem ? of(activedItem) : EMPTY;\n }),\n tap(activedItem => {\n if (activedItem.id) {\n this.activeId = activedItem.id;\n this.cdr.markForCheck();\n }\n }),\n debounceTime(100),\n tap(activedItem => {\n if (injectId && activedItem.id) {\n history.replaceState(\n null,\n null,\n location.pathname + location.search + '#' + activedItem.id,\n );\n }\n }),\n takeUntil(this.destroy$$),\n )\n .subscribe();\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AnchorComponent, AnchorTreeComponent } from './anchor.component';\nimport { AnchorDirective, AnchorLabelDirective } from './anchor.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n AnchorComponent,\n AnchorTreeComponent,\n AnchorDirective,\n AnchorLabelDirective,\n ],\n exports: [\n AnchorComponent,\n AnchorTreeComponent,\n AnchorDirective,\n AnchorLabelDirective,\n ],\n entryComponents: [AnchorComponent],\n})\nexport class AnchorModule {}\n","import { ConfigType, Dayjs } from 'dayjs';\n\nexport enum Side {\n Left = 'left',\n Right = 'right',\n}\n\nexport type DisabledTimeFn = (\n date?: ConfigType,\n) => {\n hours: () => number[];\n minutes: (hour?: number) => number[];\n seconds: (hour?: number, minute?: number) => number[];\n};\n\nexport interface CalendarHeaderRange {\n start: Dayjs;\n end?: Dayjs;\n}\n\nexport enum DateNavRange {\n Decade = 'decade',\n Year = 'year',\n Month = 'month',\n}\n\nexport type DisabledDateFn = (date: Dayjs, type: DateNavRange) => boolean;\n","import { DateNavRange } from '../date-picker.type';\n\nexport const DATE = 'date';\nexport const DAY = 'day';\nexport const MONTH = 'month';\nexport const YEAR = 'year';\nexport const HOUR = 'hour';\nexport const MINUTE = 'minute';\nexport const SECOND = 'second';\n\n// 根据日期类型,分为年,月,日\nexport enum DatePickerType {\n Day = 'date',\n Month = 'month',\n Year = 'year',\n}\n\nexport const MONTH_PANEL_COLUMN_COUNT = 3;\nexport const MONTH_PANEL_ROW_COUNT = 4;\n\nexport const YEAR_PANEL_COLUMN_COUNT = 3;\nexport const YEAR_PANEL_ROW_COUNT = 4;\n\nexport const DAY_PANEL_COLUMN_COUNT = 7;\nexport const DAY_PANEL_ROW_COUNT = 6;\n\nexport const DATE_TYPES = [\n DatePickerType.Year,\n DatePickerType.Month,\n DatePickerType.Day,\n];\n\nexport const DATE_NAV_RANGES = [\n DateNavRange.Decade,\n DateNavRange.Year,\n DateNavRange.Month,\n];\n","import { Dayjs, UnitType } from 'dayjs';\n\nimport { TimePickerModel } from '../../time-picker/time-picker.type';\nimport { DateNavRange, DisabledDateFn } from '../date-picker.type';\n\nimport {\n DATE_NAV_RANGES,\n DATE_TYPES,\n DAY,\n DAY_PANEL_COLUMN_COUNT,\n DAY_PANEL_ROW_COUNT,\n DatePickerType,\n MONTH,\n MONTH_PANEL_COLUMN_COUNT,\n MONTH_PANEL_ROW_COUNT,\n YEAR,\n YEAR_PANEL_COLUMN_COUNT,\n YEAR_PANEL_ROW_COUNT,\n} from './constant';\n\nexport class DateCell {\n isBackground?: boolean; // 面板中非本月日期\n inRange?: boolean; // 在范围组件的范围内\n isRangeStart?: boolean; // 范围组件的范围开始日期\n isRangeEnd?: boolean; // 范围组件的范围结束日期\n isDisabled?: boolean;\n\n constructor(public value: Dayjs, public label: string | number) {}\n}\n\nexport function getDatePanelIterable(\n date: Dayjs,\n navRange: DateNavRange,\n weekStartDay: number,\n): Iterable<Dayjs> & Iterator<Dayjs> {\n let firstData: Dayjs;\n let counts = 0;\n date = date.clone();\n if (navRange === DateNavRange.Month) {\n firstData = date.date(-1).day(weekStartDay);\n if (firstData.isAfter(date)) {\n firstData = firstData.subtract(1, 'week');\n }\n counts = DAY_PANEL_COLUMN_COUNT * DAY_PANEL_ROW_COUNT;\n } else if (navRange === DateNavRange.Year) {\n firstData = date.month(0);\n counts = MONTH_PANEL_COLUMN_COUNT * MONTH_PANEL_ROW_COUNT;\n } else if (navRange === DateNavRange.Decade) {\n firstData = date.subtract(1, YEAR);\n counts = YEAR_PANEL_COLUMN_COUNT * YEAR_PANEL_ROW_COUNT;\n }\n let i = 0;\n return {\n [Symbol.iterator]() {\n return this;\n },\n next: () => {\n if (i < counts) {\n return {\n value: firstData.add(\n i++,\n navRange === DateNavRange.Month\n ? DAY\n : navRange === DateNavRange.Year\n ? MONTH\n : YEAR,\n ),\n done: false,\n };\n }\n return {\n done: true,\n value: null,\n };\n },\n };\n}\n\nexport function formatDate(type: DateNavRange, dateValue: Dayjs, date: Dayjs) {\n if (!dateValue) {\n return null;\n }\n const label =\n type === DateNavRange.Decade\n ? dateValue.year()\n : type === DateNavRange.Year\n ? dateValue.month() + 1\n : dateValue.date();\n const cell = new DateCell(dateValue, label);\n if (type === DateNavRange.Month && date.month() !== dateValue.month()) {\n cell.isBackground = true;\n }\n return cell;\n}\n\nexport function nextDatePickerType(\n current: DatePickerType,\n guard?: DatePickerType,\n) {\n const guardIndex = guard ? DATE_TYPES.indexOf(guard) : DATE_TYPES.length - 1;\n const currentIndex = DATE_TYPES.indexOf(current);\n if (currentIndex < guardIndex) {\n return DATE_TYPES[currentIndex + 1];\n }\n return current;\n}\n\nexport function nextNavRangeType(current: DateNavRange, guard?: DateNavRange) {\n const guardIndex = guard\n ? DATE_NAV_RANGES.indexOf(guard)\n : DATE_NAV_RANGES.length - 1;\n const currentIndex = DATE_NAV_RANGES.indexOf(current);\n if (currentIndex < guardIndex) {\n return DATE_NAV_RANGES[currentIndex + 1];\n }\n return current;\n}\n\nexport function updateDate(\n sourceValue: Dayjs,\n newValue: Dayjs,\n type: DatePickerType,\n) {\n const updateTypes = DATE_TYPES.slice(0, DATE_TYPES.indexOf(type) + 1);\n return updateTypes.reduce(\n (acc, curr) => acc.set(curr, newValue.get(curr)),\n sourceValue.clone(),\n );\n}\n\nexport function calcRangeValue(type: DateNavRange, date: Dayjs) {\n date = date.clone();\n return [DateNavRange.Month, DatePickerType.Year].includes(type)\n ? {\n start: date,\n }\n : {\n start: date.subtract(date.year() % 10, YEAR),\n end: date.add(9 - (date.year() % 10), YEAR),\n };\n}\n\nexport function sortDates(dates: Dayjs[]) {\n return [...(dates || [])].sort((a, b) =>\n a.isBefore(b) ? -1 : a.isSame(b) ? 0 : 1,\n );\n}\n\nexport function getNavRangeByType(type: DatePickerType) {\n return {\n [DatePickerType.Day]: DateNavRange.Month,\n [DatePickerType.Month]: DateNavRange.Year,\n [DatePickerType.Year]: DateNavRange.Decade,\n }[type];\n}\n\nexport function getTypeByNavRange(navRange: DateNavRange) {\n return {\n [DateNavRange.Month]: DatePickerType.Day,\n [DateNavRange.Year]: DatePickerType.Month,\n [DateNavRange.Decade]: DatePickerType.Year,\n }[navRange];\n}\n\nexport function getTimePickerModel(date: Dayjs): TimePickerModel {\n return date\n ? {\n second: date.second(),\n minute: date.minute(),\n hour: date.hour(),\n }\n : null;\n}\n\nexport function updateDateByTimeModel(date: Dayjs, time: TimePickerModel) {\n return time\n ? date.hour(time.hour).minute(time.minute).second(time.second)\n : date;\n}\n\nexport const composeDisabledDateFn = (...fns: DisabledDateFn[]) => (\n date: Dayjs,\n navRange: DateNavRange,\n) => !fns.filter(i => !!i).every(fn => !fn(date, navRange));\n\nexport function minDate(a: Dayjs, b: Dayjs, unit: UnitType = 'date') {\n return !a ? b : !b ? a : a.isBefore(b, unit) ? a : b;\n}\n\nexport function maxDate(a: Dayjs, b: Dayjs, unit: UnitType = 'date') {\n return !a ? b : !b ? a : a.isAfter(b, unit) ? a : b;\n}\n","import { ConfigType } from 'dayjs';\n\nimport { _isNumberValue } from '../utils';\n\nexport enum TimePickerControlType {\n Hour = 'hour',\n Minute = 'minute',\n Second = 'second',\n}\n\nexport interface TimePickerModel {\n hour?: number;\n minute?: number;\n second?: number;\n}\n\nexport type TimePickerDataLike = ConfigType | TimePickerModel;\n\nexport function isTimePickerModel(item: any): item is TimePickerModel {\n return (\n _isNumberValue(item?.second) &&\n _isNumberValue(item?.minute) &&\n _isNumberValue(item?.hour)\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport dayjs, { Dayjs } from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\nimport { updateDateByTimeModel } from '../date-picker/calendar/util';\nimport { CommonFormControl } from '../form/common-form';\nimport { TooltipDirective } from '../tooltip/public-api';\nimport { ComponentSize } from '../types';\n\nimport {\n TimePickerDataLike,\n TimePickerModel,\n isTimePickerModel,\n} from './time-picker.type';\n\ndayjs.extend(customParseFormat);\n\n@Component({\n selector: 'aui-time-picker',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true,\n },\n ],\n})\nexport class TimePickerComponent extends CommonFormControl<\n TimePickerDataLike,\n TimePickerModel\n> {\n @Input()\n format = 'HH:mm:ss';\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n @Input()\n placeholder = '';\n\n @Input()\n clearable = true;\n\n @Input()\n showIcon = true;\n\n @Input()\n disableHours: () => number[];\n\n @Input()\n disableMinutes: (hour?: number) => number[];\n\n @Input()\n disableSeconds: (hour?: number, minute?: number) => number[];\n\n @Input()\n hourStep = 1;\n\n @Input()\n minuteStep = 1;\n\n @Input()\n secondStep = 1;\n\n @Input()\n footerTemplate: TemplateRef<void>;\n\n @Output()\n readonly open = new EventEmitter<void>();\n\n @Output()\n readonly close = new EventEmitter<void>();\n\n @ViewChild('tooltipRef')\n tooltipRef: TooltipDirective;\n\n timeValue: Dayjs = null;\n timeFormatValue = '';\n\n writeValue(value: TimePickerDataLike) {\n super.writeValue(value);\n if (!value) {\n return this.setValue(null);\n }\n let result: Dayjs;\n if (isTimePickerModel(value)) {\n result = updateDateByTimeModel(dayjs(), value);\n } else {\n result = dayjs(value);\n this.submit(false, result);\n }\n this.setValue(result);\n }\n\n setValue(value: Dayjs) {\n this.timeValue = value;\n this.timeFormatValue = value ? dayjs(value).format(this.format) : null;\n this.cdr.markForCheck();\n }\n\n changeFromPanel(value: Dayjs) {\n this.timeFormatValue = value?.format(this.format);\n }\n\n changeFromInput(source: string) {\n if (!source) {\n this.timeValue = null;\n } else {\n const afterParsed = dayjs(source, this.format);\n if (afterParsed.isValid()) {\n this.timeValue = afterParsed;\n }\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Enter':\n this.openPanel();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n this.closePanel();\n event.stopPropagation();\n event.preventDefault();\n break;\n }\n }\n\n onBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n this.setValue(this.timeValue);\n this.submit();\n }\n\n openPanel() {\n if (this.tooltipRef.isCreated) {\n return;\n }\n this.tooltipRef.createTooltip();\n this.open.next();\n }\n\n closePanel() {\n if (!this.tooltipRef.isCreated) {\n return;\n }\n this.tooltipRef.disposeTooltip();\n this.close.next();\n }\n\n clearValue(event: Event) {\n this.setValue(null);\n this.submit();\n event.stopPropagation();\n event.preventDefault();\n }\n\n submit(close = true, value?: Dayjs) {\n const refer = value ?? this.timeValue;\n this.emitValue(\n refer\n ? {\n second: refer.second(),\n minute: refer.minute(),\n hour: refer.hour(),\n }\n : null,\n );\n if (close) {\n this.closePanel();\n }\n }\n}\n","export const HOUR_ITEMS = Array.from({ length: 24 }).map((_, index) => index);\nexport const MINUTE_ITEMS = Array.from({ length: 60 }).map((_, index) => index);\nexport const SECOND_ITEMS = Array.from({ length: 60 }).map((_, index) => index);\n\nexport const CONTROL_ITEM_HEIGHT = 28;\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport dayjs, { Dayjs } from 'dayjs';\n\nimport { CommonFormControl } from '../../form/common-form';\nimport { ComponentSize } from '../../types';\nimport { buildBem } from '../../utils';\nimport {\n CONTROL_ITEM_HEIGHT,\n HOUR_ITEMS,\n MINUTE_ITEMS,\n SECOND_ITEMS,\n} from '../constant';\nimport { TimePickerControlType } from '../time-picker.type';\n\nconst TIME_PICKER_COLUMN_WIDTH = 80;\nconst bem = buildBem('aui-time-picker-panel');\n\n@Component({\n selector: 'aui-time-picker-panel',\n templateUrl: './panel.template.html',\n styleUrls: ['./panel.style.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePickerPanelComponent),\n multi: true,\n },\n ],\n host: {\n mousedown: '$event.preventDefault()',\n },\n})\nexport class TimePickerPanelComponent\n extends CommonFormControl<Dayjs>\n implements OnChanges {\n @Input()\n set format(value: string) {\n if (value != null) {\n this._format = value;\n const charSet = new Set(value);\n this.hourEnabled = charSet.has('H') || charSet.has('h');\n this.minuteEnabled = charSet.has('m');\n this.secondEnabled = charSet.has('s');\n this.enabledColumns = [\n this.hourEnabled,\n this.minuteEnabled,\n this.secondEnabled,\n ].filter(i => i).length;\n }\n }\n\n get format(): string {\n return this._format;\n }\n\n private _format: string;\n\n get totalWidth() {\n return this.enabledColumns * TIME_PICKER_COLUMN_WIDTH;\n }\n\n @Input()\n hourStep = 1;\n\n @Input()\n minuteStep = 1;\n\n @Input()\n secondStep = 1;\n\n @Input()\n footerTemplate: TemplateRef<void>;\n\n @Output()\n confirm = new EventEmitter<void>();\n\n @Input()\n disableHours: () => number[];\n\n @Input()\n disableMinutes: (hour?: number) => number[];\n\n @Input()\n disableSeconds: (hour?: number, minute?: number) => number[];\n\n hourEnabled: boolean;\n minuteEnabled: boolean;\n secondEnabled: boolean;\n\n TimePickerControlType = TimePickerControlType;\n HOUR_ITEM_CONFIG = HOUR_ITEMS;\n MINUTE_ITEM_CONFIG = MINUTE_ITEMS;\n SECOND_ITEM_CONFIG = SECOND_ITEMS;\n\n CONTROL_ITEM_HEIGHT = CONTROL_ITEM_HEIGHT;\n ComponentSize = ComponentSize;\n bem = bem;\n\n @ViewChild('hourRef', { static: false })\n hourRef: ElementRef<HTMLElement>;\n\n @ViewChild('minuteRef', { static: false })\n minuteRef: ElementRef<HTMLElement>;\n\n @ViewChild('secondRef', { static: false })\n secondRef: ElementRef<HTMLElement>;\n\n enabledColumns = 0;\n\n // 用于控制初次滚动,是否展示滚动动画效果\n firstScrolled = false;\n\n constructor(protected cdr: ChangeDetectorRef) {\n super(cdr);\n this.value$.subscribe(_ => {\n this.cdr.markForCheck();\n });\n }\n\n isDisabled(value: number, type: TimePickerControlType) {\n const currentValue = this.snapshot.value;\n if (this.disabled) {\n return true;\n }\n if (type === TimePickerControlType.Hour) {\n return (!this.disableHours ? [] : this.disableHours()).includes(value);\n }\n if (type === TimePickerControlType.Minute) {\n return (!this.disableMinutes\n ? []\n : this.disableMinutes(currentValue?.hour())\n ).includes(value);\n }\n if (type === TimePickerControlType.Second) {\n return (!this.disableSeconds\n ? []\n : this.disableSeconds(currentValue?.hour(), currentValue?.minute())\n ).includes(value);\n }\n }\n\n ngOnChanges({ hourStep, minuteStep, secondStep }: SimpleChanges): void {\n if (hourStep?.currentValue > 0) {\n this.HOUR_ITEM_CONFIG = HOUR_ITEMS.filter(\n i => i % hourStep.currentValue === 0,\n );\n }\n if (minuteStep?.currentValue > 0) {\n this.MINUTE_ITEM_CONFIG = MINUTE_ITEMS.filter(\n i => i % minuteStep.currentValue === 0,\n );\n }\n if (secondStep?.currentValue > 0) {\n this.SECOND_ITEM_CONFIG = SECOND_ITEMS.filter(\n i => i % secondStep.currentValue === 0,\n );\n }\n this.cdr.markForCheck();\n }\n\n writeValue(value: Dayjs) {\n super.writeValue(value);\n this.syncScrollOffset(!this.firstScrolled ? 0 : 120, value);\n }\n\n selectValue(value: number, type: TimePickerControlType): void {\n if (this.isDisabled(value, type)) {\n return;\n }\n this.firstScrolled = true;\n const result = this.syncValue(value, type, this.snapshot.value);\n this.syncScrollOffset(120, result);\n }\n\n syncValue(value: number, type: TimePickerControlType, currentValue: Dayjs) {\n if (!type) {\n return;\n }\n const result = (currentValue || dayjs()).set(type, value);\n this.emitValue(result);\n return result;\n }\n\n syncScrollOffset(duration: number, value: Dayjs) {\n const empty = !value;\n const config = [\n {\n ref: this.hourRef,\n enabled: this.hourEnabled,\n step: this.hourStep,\n type: 'hour',\n },\n {\n ref: this.minuteRef,\n enabled: this.minuteEnabled,\n step: this.minuteStep,\n type: 'minute',\n },\n {\n ref: this.secondRef,\n enabled: this.secondEnabled,\n step: this.secondStep,\n type: 'second',\n },\n ] as const;\n\n config.forEach(cf => {\n if (cf.enabled && cf.ref) {\n this.scrollByValue(\n cf.ref.nativeElement,\n empty ? 0 : value.get(cf.type),\n cf.step,\n empty ? 0 : duration,\n );\n }\n });\n if (!empty) {\n this.firstScrolled = true;\n }\n }\n\n private scrollByValue(\n element: HTMLElement,\n value: number,\n divideBy: number,\n duration: number,\n ) {\n const targetOffset = (value * CONTROL_ITEM_HEIGHT) / divideBy;\n const currentTop = element.scrollTop;\n if (currentTop === targetOffset) {\n return;\n }\n if (!duration) {\n element.scrollTop = targetOffset;\n } else {\n const difference = targetOffset - currentTop;\n // 每个tick滚动距离\n const perTick = (difference / duration) * 10;\n\n requestAnimationFrame(() => {\n element.scrollTop = currentTop + perTick;\n if (element.scrollTop === targetOffset) {\n return;\n }\n this.scrollByValue(element, value, divideBy, duration - 10);\n });\n }\n }\n\n matchValue(\n value: number,\n type: TimePickerControlType,\n currDate: Dayjs,\n ): boolean {\n return currDate?.get(type) === value;\n }\n\n getControlTypeConfig(type: TimePickerControlType): number[] {\n return {\n [TimePickerControlType.Hour]: this.HOUR_ITEM_CONFIG,\n [TimePickerControlType.Minute]: this.MINUTE_ITEM_CONFIG,\n [TimePickerControlType.Second]: this.SECOND_ITEM_CONFIG,\n }[type];\n }\n\n selectNow() {\n this.firstScrolled = true;\n this.emitValue(dayjs());\n }\n\n trackBy(_index: number, content: number) {\n return content;\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, ReactiveFormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '../button/public-api';\nimport { I18nModule } from '../i18n/public-api';\nimport { IconModule } from '../icon/public-api';\nimport { InputModule } from '../input/public-api';\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport { TimePickerComponent } from './component';\nimport { TimePickerPanelComponent } from './panel/panel.component';\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n PortalModule,\n OverlayModule,\n CommonModule,\n InputModule,\n TooltipModule,\n IconModule,\n ButtonModule,\n I18nModule,\n ],\n declarations: [TimePickerComponent, TimePickerPanelComponent],\n exports: [TimePickerComponent, TimePickerPanelComponent],\n})\nexport class TimePickerModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport dayjs, { ConfigType, Dayjs } from 'dayjs';\n\nimport { CommonFormControl } from '../../../form/common-form';\nimport { TimePickerModel } from '../../../time-picker/time-picker.type';\nimport { DateNavRange, DisabledTimeFn } from '../../date-picker.type';\nimport { DatePickerType } from '../constant';\nimport {\n getNavRangeByType,\n getTimePickerModel,\n getTypeByNavRange,\n nextNavRangeType,\n updateDate,\n updateDateByTimeModel,\n} from '../util';\n\n@Component({\n selector: 'aui-date-picker-panel',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerPanelComponent),\n multi: true,\n },\n ],\n})\nexport class DatePickerPanelComponent extends CommonFormControl<Dayjs> {\n @Input()\n clearable = true;\n\n @Input()\n clearText: string;\n\n @Input()\n set type(type: DatePickerType) {\n this.navRange = getNavRangeByType(type);\n this._type = type;\n }\n\n get type() {\n return this._type;\n }\n\n private _type: DatePickerType;\n\n @Input()\n showTime = false;\n\n @Input()\n disabledDate: (date: Dayjs, type: DateNavRange) => boolean = () => false;\n\n @Input()\n disabledTime: DisabledTimeFn = () => null;\n\n @Input()\n weekStartDay = 0;\n\n @Input()\n showFooter = true;\n\n @Input()\n footerTemplate: TemplateRef<unknown>;\n\n @Input()\n extraFooter: TemplateRef<unknown>;\n\n @Input()\n minDate: Dayjs;\n\n @Input()\n maxDate: Dayjs;\n\n @Output()\n confirm = new EventEmitter<Dayjs>();\n\n @Output()\n clear = new EventEmitter<void>();\n\n private _cacheSelectedDate: Dayjs;\n private _cacheDisabledTimeFn: ReturnType<DisabledTimeFn>;\n\n getDisabledTimeFn(\n selectedDate: Dayjs,\n type: keyof ReturnType<DisabledTimeFn>,\n ) {\n if (selectedDate !== this._cacheSelectedDate) {\n this._cacheDisabledTimeFn = this.disabledTime(selectedDate);\n this._cacheSelectedDate = selectedDate;\n }\n return this._cacheDisabledTimeFn?.[type];\n }\n\n navRange: DateNavRange;\n\n get currentNavType() {\n return getTypeByNavRange(this.navRange);\n }\n\n anchor: Dayjs;\n\n selectedDate: Dayjs;\n\n selectedTime: TimePickerModel;\n\n DateNavRange = DateNavRange;\n DatePickerType = DatePickerType;\n\n writeValue(obj: Dayjs) {\n super.writeValue(obj);\n this.selectedDate = obj;\n this.selectedTime = getTimePickerModel(obj);\n this.anchor = obj || dayjs();\n this.cdr.markForCheck();\n }\n\n panelValueChange(value: Dayjs) {\n this.selectedDate = updateDate(\n this.selectedDate || dayjs(),\n value,\n this.currentNavType,\n );\n this.anchor = this.selectedDate;\n this.selectedDate = updateDateByTimeModel(\n this.selectedDate,\n this.selectedTime,\n );\n if (this.type === this.currentNavType) {\n this.confirmValue(this.selectedDate, !this.showTime);\n }\n const nextNavRange = nextNavRangeType(\n this.navRange,\n getNavRangeByType(this.type),\n );\n if (this.navRange !== nextNavRange) {\n this.navRange = nextNavRange;\n }\n }\n\n confirmValue(value?: ConfigType, closeAfterConfirm = true) {\n this.emitValueChange(value ? dayjs(value) : this.selectedDate);\n closeAfterConfirm && this.confirm.next();\n }\n\n timeDateChange(time: TimePickerModel) {\n if (!this.selectedDate) {\n return;\n }\n this.selectedDate = updateDateByTimeModel(this.selectedDate, time);\n this.emitValueChange(this.selectedDate);\n }\n\n setToday() {\n this.confirmValue(dayjs(), true);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-calendar-footer',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalendarFooterComponent {\n @Input()\n clearable = true;\n\n @Input()\n clearText: string;\n\n @Input()\n customAction: TemplateRef<any>;\n\n @Output()\n confirm = new EventEmitter<void>();\n\n @Output()\n clear = new EventEmitter<void>();\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport dayjs, { ConfigType, Dayjs } from 'dayjs';\n\nimport { buildBem } from '../../../utils';\nimport {\n CalendarHeaderRange,\n DateNavRange,\n Side,\n} from '../../date-picker.type';\nimport { MONTH, YEAR } from '../constant';\nimport { calcRangeValue } from '../util';\n\nconst bem = buildBem('aui-calendar-header');\n\n@Component({\n selector: 'aui-calendar-header',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalendarHeaderComponent {\n @Input()\n dateNavRange = DateNavRange.Month;\n\n @Input()\n anchor = dayjs();\n\n @Input()\n maxAvail?: ConfigType;\n\n private get _maxAvail() {\n return this.maxAvail ? dayjs(this.maxAvail) : null;\n }\n\n @Input()\n minAvail?: ConfigType;\n\n private get _minAvail() {\n return this.minAvail ? dayjs(this.minAvail) : null;\n }\n\n @Output()\n navRangeChange = new EventEmitter<DateNavRange>();\n\n @Output()\n anchorChange = new EventEmitter<Dayjs>();\n\n get headerRange(): CalendarHeaderRange {\n return calcRangeValue(this.dateNavRange, this.anchor);\n }\n\n bem = bem;\n\n DateNavRange = DateNavRange;\n\n // maxAvail > current date :right btn hide\n // minAvail > current date :left btn hide\n shouldShowNav(type: DateNavRange, side: Side) {\n const availValue = (side === Side.Left\n ? this._minAvail\n : this._maxAvail\n )?.clone();\n if (!availValue) {\n return true;\n }\n // 对于年的判别,2014-5-1至2015-6-1日,仍当展示按钮\n const constrainDate = [DateNavRange.Month, DateNavRange.Year].includes(type)\n ? availValue.add(side === Side.Left ? 1 : -1, type as 'month' | 'year')\n : availValue;\n return (\n this.compareNavValue(type, constrainDate, this.anchor) ===\n (side === Side.Left ? -1 : 1)\n );\n }\n\n // @return isBetween|isEqual:0, isBefore:-1,isAfter:1\n compareNavValue(type: DateNavRange, constrain: Dayjs, anchor: Dayjs) {\n const range = calcRangeValue(type, anchor);\n const constrainValue = constrain;\n if (type === DateNavRange.Decade) {\n if (constrainValue.isBetween(range.start, range.end, YEAR)) {\n return 0;\n }\n return constrainValue.isBefore(range.start) ? -1 : 1;\n }\n return constrainValue.isSame(range.start, MONTH)\n ? 0\n : constrainValue.isBefore(range.start, MONTH)\n ? -1\n : 1;\n }\n\n navHead(range: DateNavRange, value: number) {\n let anchor: Dayjs;\n switch (range) {\n case DateNavRange.Month: {\n anchor = this.anchor.add(value, MONTH);\n break;\n }\n case DateNavRange.Year: {\n anchor = this.anchor.add(value, YEAR);\n break;\n }\n case DateNavRange.Decade:\n anchor = this.anchor.add(value, YEAR);\n break;\n }\n this.anchorChange.next(anchor);\n }\n\n clickNav = (range: DateNavRange) => {\n if (![DateNavRange.Month, DateNavRange.Year].includes(range)) {\n return;\n }\n this.navRangeChange.next(\n range === DateNavRange.Month ? DateNavRange.Year : DateNavRange.Decade,\n );\n };\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport dayjs, { Dayjs } from 'dayjs';\nimport isBetween from 'dayjs/plugin/isBetween';\n\nimport { buildBem } from '../../../utils';\nimport { DateNavRange } from '../../date-picker.type';\nimport {\n DAY,\n DAY_PANEL_COLUMN_COUNT,\n DAY_PANEL_ROW_COUNT,\n DatePickerType,\n MONTH,\n MONTH_PANEL_COLUMN_COUNT,\n MONTH_PANEL_ROW_COUNT,\n YEAR,\n YEAR_PANEL_COLUMN_COUNT,\n YEAR_PANEL_ROW_COUNT,\n} from '../constant';\nimport {\n DateCell,\n calcRangeValue,\n composeDisabledDateFn,\n formatDate,\n getDatePanelIterable,\n getNavRangeByType,\n getTypeByNavRange,\n sortDates,\n} from '../util';\n\ndayjs.extend(isBetween);\n\nconst bem = buildBem('aui-picker-panel');\n\n@Component({\n selector: 'aui-picker-panel',\n templateUrl: './picker-panel.template.html',\n styleUrls: ['./picker-panel.style.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PickerPanelComponent implements OnChanges {\n @Input()\n navRange!: DateNavRange;\n\n @Input()\n type!: DatePickerType;\n\n @Input()\n anchor = dayjs();\n\n @Input()\n matchDates: Dayjs[];\n\n @Input()\n disabledDate: (date: Dayjs, navRange: DateNavRange) => boolean = () => false;\n\n @Input()\n set weekStartDay(day: number) {\n const normalized = Math.max(Math.min(Math.round(day), 6), 0);\n this.weekDefs = [\n ...this.weekDefs.slice(normalized),\n ...this.weekDefs.slice(0, normalized),\n ];\n this._weekStartDay = normalized;\n }\n\n get weekStartDay() {\n return this._weekStartDay;\n }\n\n @Input()\n minDate: Dayjs;\n\n @Input()\n maxDate: Dayjs;\n\n get disabledDateFn() {\n return composeDisabledDateFn(\n date => this.minDate && date.isBefore(this.minDate),\n date => this.maxDate && date.isAfter(this.maxDate),\n this.disabledDate,\n );\n }\n\n private _weekStartDay = 0;\n\n panelData: DateCell[][];\n\n @Output()\n select = new EventEmitter<Dayjs>();\n\n @Output()\n hovered = new EventEmitter<Dayjs>();\n\n bem = bem;\n DateNavRange = DateNavRange;\n\n weekDefs = [\n 'sunday',\n 'monday',\n 'tuesday',\n 'wednesday',\n 'thursday',\n 'friday',\n 'saturday',\n ];\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n ngOnChanges() {\n // 如果 dateValue 是一个数组,必然是同一个面板上,否则应当给与不同的面板不同的dateValue值\n const headerRange = calcRangeValue(this.navRange, this.anchor);\n this.renderPanelData(headerRange.start, this.navRange);\n }\n\n // 根据当前数据,计算渲染表格\n // eslint-disable-next-line sonarjs/cognitive-complexity\n renderPanelData(date: Dayjs, navRange: DateNavRange) {\n const value = [];\n let colCounts = 0;\n let rowCounts = 0;\n if (!this.panelData) {\n this.panelData = [[]];\n }\n const [...values] = getDatePanelIterable(date, navRange, this.weekStartDay);\n if (navRange === DateNavRange.Month) {\n colCounts = DAY_PANEL_COLUMN_COUNT;\n rowCounts = DAY_PANEL_ROW_COUNT;\n } else if (navRange === DateNavRange.Decade) {\n colCounts = YEAR_PANEL_COLUMN_COUNT;\n rowCounts = YEAR_PANEL_ROW_COUNT;\n } else if (navRange === DateNavRange.Year) {\n colCounts = MONTH_PANEL_COLUMN_COUNT;\n rowCounts = MONTH_PANEL_ROW_COUNT;\n }\n for (let k = 0; k < rowCounts; k++) {\n const row = [];\n for (let i = 0; i < colCounts; i++) {\n const cell = formatDate(navRange, values[k * colCounts + i], date);\n cell.isDisabled = this.disabledDateFn(cell.value, navRange);\n const sortedDates = sortDates(this.matchDates);\n if (sortedDates?.length === 2 && navRange === DateNavRange.Month) {\n if (\n cell.value.isBetween(sortedDates[0], sortedDates[1]) &&\n !cell.isBackground\n ) {\n cell.inRange = true;\n }\n cell.isRangeStart =\n cell.value.isSame(sortedDates[0], DAY) && !cell.isBackground;\n cell.isRangeEnd =\n cell.value.isSame(sortedDates[1], DAY) && !cell.isBackground;\n if (cell.isRangeStart && cell.isRangeEnd) {\n cell.isRangeStart = false;\n cell.isRangeEnd = false;\n }\n }\n row.push(cell);\n }\n value.push(row);\n }\n this.panelData = value.slice();\n this.cdr.markForCheck();\n }\n\n match(value: Dayjs) {\n if (\n !this.matchDates?.filter(v => !!v)?.length ||\n getNavRangeByType(this.type) !== this.navRange\n ) {\n return false;\n }\n return this.matchDates?.some(dateValue =>\n this.navRange === DateNavRange.Decade\n ? value.isSame(dateValue, YEAR)\n : this.navRange === DateNavRange.Year\n ? value.isSame(dateValue, MONTH)\n : value.isSame(dateValue, DAY),\n );\n }\n\n matchToday(value: Dayjs) {\n return value.isSame(dayjs(), getTypeByNavRange(this.navRange));\n }\n\n selectValue(value: Dayjs) {\n this.select.next(value);\n }\n\n trackByFn() {\n return this.navRange;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport dayjs, { Dayjs } from 'dayjs';\n\nimport { CommonFormControl } from '../../../form/common-form';\nimport { TimePickerModel } from '../../../time-picker/time-picker.type';\nimport { buildBem } from '../../../utils';\nimport { DateNavRange, DisabledTimeFn, Side } from '../../date-picker.type';\nimport { DatePickerType, MONTH, YEAR } from '../constant';\nimport {\n composeDisabledDateFn,\n getTimePickerModel,\n getTypeByNavRange,\n maxDate,\n minDate,\n nextNavRangeType,\n sortDates,\n updateDate,\n updateDateByTimeModel,\n} from '../util';\n\nconst bem = buildBem('aui-date-range-picker-panel');\n\n@Component({\n selector: 'aui-date-range-picker-panel',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangePickerPanelComponent),\n multi: true,\n },\n ],\n})\nexport class DateRangePickerPanelComponent extends CommonFormControl<Dayjs[]> {\n @Input()\n clearable = true;\n\n @Input()\n clearText: string;\n\n @Input()\n showTime = true;\n\n @Input()\n showFooter = true;\n\n @Input()\n disabledDate: (date: Dayjs, navRange: DateNavRange) => boolean = () => false;\n\n @Input()\n disabledTime: { left: DisabledTimeFn; right: DisabledTimeFn } = {\n left: () => null,\n right: () => null,\n };\n\n @Input()\n weekStartDay = 0;\n\n @Input()\n minDate: Dayjs;\n\n @Input()\n maxDate: Dayjs;\n\n @Output()\n clear = new EventEmitter<void>();\n\n @Output()\n confirm = new EventEmitter<void>();\n\n bem = bem;\n Side = Side;\n DatePickerType = DatePickerType;\n leftDateRange = DateNavRange.Month;\n rightDateRange = DateNavRange.Month;\n\n FOOTER_DATE_FORMAT = 'YYYY-MM-dd';\n\n leftAnchor = dayjs();\n rightAnchor = dayjs().add(1, MONTH);\n\n get maxHeaderAvail() {\n return minDate(this.rightAnchor, this.maxDate);\n }\n\n get minHeaderAvail() {\n return maxDate(this.minDate, this.leftAnchor);\n }\n\n // 用于存放 range data 序列,数量为 2 时清除\n rangeValue: Dayjs[] = [];\n\n // 用于组装匹配日期序列\n matchValues: Dayjs[];\n\n startTime: TimePickerModel;\n endTime: TimePickerModel;\n\n writeValue(obj: Dayjs[]) {\n super.writeValue(obj);\n this.rangeValue = obj || [];\n this.matchValues = [...this.rangeValue];\n this.startTime = getTimePickerModel(obj?.[0]);\n this.endTime = getTimePickerModel(obj?.[1]);\n if (obj?.length === 2) {\n this.reorder(sortDates(obj));\n }\n this.cdr.markForCheck();\n }\n\n calendarRangeChange(type: DateNavRange, side: Side) {\n if (side === Side.Left) {\n this.leftDateRange = type;\n } else {\n this.rightDateRange = type;\n }\n }\n\n // range 组件范围受控\n getDateDisabledFn(side: Side, constrainValue: Dayjs) {\n return composeDisabledDateFn((date: Dayjs, navRange: DateNavRange) => {\n if (navRange === DateNavRange.Month) {\n return false;\n }\n if (navRange === DateNavRange.Decade) {\n return date[side === Side.Left ? 'isAfter' : 'isBefore'](\n constrainValue,\n YEAR,\n );\n }\n return !date[side === Side.Left ? 'isBefore' : 'isAfter'](\n constrainValue,\n MONTH,\n );\n }, this.disabledDate);\n }\n\n private getDisabledTimeCachedFn(side: Side) {\n let cacheSelectedDate: Dayjs;\n let cacheDisabledTimeFn: ReturnType<DisabledTimeFn>;\n return (value: Dayjs, key: keyof ReturnType<DisabledTimeFn>) => {\n if (value !== cacheSelectedDate) {\n cacheDisabledTimeFn = (this.disabledTime?.[side] || (() => null))(\n value,\n );\n cacheSelectedDate = value;\n }\n return cacheDisabledTimeFn?.[key];\n };\n }\n\n leftDisabledTimeFn = this.getDisabledTimeCachedFn(Side.Left);\n rightDisabledTimeFn = this.getDisabledTimeCachedFn(Side.Right);\n\n selectPickerPanel(value: Dayjs, side: Side) {\n const navRange =\n side === Side.Left ? this.leftDateRange : this.rightDateRange;\n const type = getTypeByNavRange(navRange);\n const dateValue = updateDate(\n side === Side.Left ? this.leftAnchor : this.rightAnchor,\n value,\n type,\n );\n const nextRange = nextNavRangeType(navRange, DateNavRange.Month);\n\n if (side === Side.Left) {\n this.leftAnchor = dateValue;\n this.leftDateRange = nextRange;\n } else {\n this.rightAnchor = dateValue;\n this.rightDateRange = nextRange;\n }\n\n if (navRange !== DateNavRange.Month) {\n return;\n }\n\n if (this.leftAnchor.isSame(this.rightAnchor, MONTH)) {\n this.rightAnchor = this.rightAnchor.add(1, MONTH);\n }\n\n this.rangeValue =\n this.rangeValue.length === 2\n ? [dateValue]\n : sortDates([...this.rangeValue, dateValue]);\n this.matchValues = [...this.rangeValue];\n this.syncTime();\n if (this.rangeValue.length === 2) {\n this.reorder(this.rangeValue);\n this.confirmValue(this.rangeValue, !this.showTime);\n }\n }\n\n reorder(sortedDate: Dayjs[]) {\n if (!sortedDate[0].isSame(sortedDate[1], MONTH)) {\n this.leftAnchor = updateDate(\n this.leftAnchor,\n sortedDate[0],\n DatePickerType.Day,\n );\n this.rightAnchor = updateDate(\n this.leftAnchor,\n sortedDate[1],\n DatePickerType.Day,\n );\n }\n }\n\n hoverItem(date: Dayjs) {\n if (this.rangeValue.length === 1) {\n this.matchValues[1] = date;\n }\n }\n\n confirmValue(value: Dayjs[], closeThen = true) {\n this.emitValueChange(value);\n closeThen && this.confirm.next();\n }\n\n timeChange(time: TimePickerModel) {\n if (!time) {\n return;\n }\n this.syncTime();\n if (!this.rangeValue?.length) {\n const date = updateDateByTimeModel(dayjs(), time);\n this.rangeValue = [date, date];\n this.matchValues = [...this.rangeValue];\n this.startTime = this.endTime = time;\n }\n this.emitValueChange(this.rangeValue);\n }\n\n syncTime() {\n if (this.showTime && !!this.rangeValue?.length) {\n const startDate = this.rangeValue[0]\n ? updateDateByTimeModel(this.rangeValue[0], this.startTime)\n : null;\n const endDate = this.rangeValue[1]\n ? updateDateByTimeModel(this.rangeValue[1], this.endTime)\n : null;\n if (!this.startTime && startDate) {\n this.startTime = getTimePickerModel(this.rangeValue[0]);\n }\n if (!this.endTime && endDate) {\n this.endTime = getTimePickerModel(this.rangeValue[1]);\n }\n this.rangeValue = [startDate, endDate].filter(i => !!i);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport dayjs, { ConfigType, Dayjs } from 'dayjs';\n\nimport { CommonFormControl } from '../../form/common-form';\nimport { ComponentSize } from '../../types';\nimport { DatePickerType } from '../calendar/constant';\nimport { DateNavRange, DisabledTimeFn } from '../date-picker.type';\n\n@Component({\n selector: 'aui-date-picker',\n templateUrl: './date-picker.template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n // tslint:disable-next-line: validate-decorators\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n },\n ],\n styleUrls: ['./date-picker.style.scss'],\n})\nexport class DatePickerComponent\n extends CommonFormControl<ConfigType, Dayjs>\n implements OnInit {\n @Input()\n clearable = true;\n\n @Input()\n clearText: string;\n\n @Input()\n format: string;\n\n @Input()\n showTime = false;\n\n @Input()\n type = DatePickerType.Day;\n\n @Input()\n size = ComponentSize.Medium;\n\n @Input()\n disabledDate: (date: Dayjs, type: DateNavRange) => boolean = () => false;\n\n @Input()\n disabledTime: DisabledTimeFn = () => null;\n\n @Input()\n minDate: Dayjs;\n\n @Input()\n maxDate: Dayjs;\n\n @Input()\n weekStartDay = 0;\n\n @Input()\n showFooter = true;\n\n @Input()\n footerTemplate: TemplateRef<unknown>;\n\n @Input()\n extraFooter: TemplateRef<unknown>;\n\n @Input()\n placeholder: string;\n\n @Output()\n openChange = new EventEmitter<boolean>();\n\n value: Dayjs;\n DatePickerType = DatePickerType;\n\n ngOnInit() {\n if (!this.format) {\n this.format = this.getDefaultFormat(this.type);\n this.cdr.markForCheck();\n }\n }\n\n valueIn(obj: ConfigType) {\n return obj ? dayjs(obj) : null;\n }\n\n writeValue(obj: Dayjs) {\n super.writeValue(obj);\n this.value = obj;\n this.cdr.markForCheck();\n }\n\n private getDefaultFormat(type = DatePickerType.Day) {\n return type === DatePickerType.Year\n ? 'YYYY'\n : type === DatePickerType.Month\n ? 'YYYY-MM'\n : this.showTime\n ? 'YYYY-MM-DD HH:mm:ss'\n : 'YYYY-MM-DD';\n }\n\n clearValue() {\n this.value = null;\n this.emitValueChange(null);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport dayjs, { ConfigType, Dayjs } from 'dayjs';\n\nimport { CommonFormControl } from '../../form/common-form';\nimport { ComponentSize } from '../../types';\nimport { DisabledDateFn, DisabledTimeFn } from '../date-picker.type';\n\n@Component({\n selector: 'aui-range-picker',\n templateUrl: './range-picker.template.html',\n // provide tooltip class\n // tslint:disable-next-line: validate-decorators\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RangePickerComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./range-picker.style.scss'],\n})\nexport class RangePickerComponent extends CommonFormControl<\n ConfigType[],\n Dayjs[]\n> {\n @Input()\n clearable = true;\n\n @Input()\n clearText: string;\n\n @Input()\n format = 'YYYY-MM-DD';\n\n @Input()\n showFooter = true;\n\n @Input()\n showTime = true;\n\n @Input()\n disabledDate: DisabledDateFn = () => false;\n\n @Input()\n minDate: Dayjs;\n\n @Input()\n maxDate: Dayjs;\n\n @Input()\n disabledTime: { left: DisabledTimeFn; right: DisabledTimeFn } = {\n left: () => null,\n right: () => null,\n };\n\n @Input()\n weekStartDay = 0;\n\n @Input()\n size: ComponentSize;\n\n @Output()\n openChange = new EventEmitter<boolean>();\n\n value: [Dayjs, Dayjs];\n\n valueIn(obj: [ConfigType, ConfigType]) {\n return obj?.map(i => dayjs(i));\n }\n\n writeValue(obj: [Dayjs, Dayjs]) {\n super.writeValue(obj);\n this.value = obj;\n this.cdr.markForCheck();\n }\n\n clearValue() {\n this.value = null;\n this.emitValueChange(null);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Dayjs } from 'dayjs';\n\nimport { InputComponent } from '../../input/input.component';\nimport { ComponentSize } from '../../types';\nimport { buildBem } from '../../utils';\n\nconst bem = buildBem('aui-date-picker-trigger');\n\n@Component({\n selector: 'aui-date-picker-trigger',\n templateUrl: './trigger.template.html',\n // tslint:disable-next-line: validate-decorators\n encapsulation: ViewEncapsulation.Emulated,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./trigger.style.scss'],\n})\nexport class DatePickerTriggerComponent {\n @Input()\n format = 'YYYY-MM-DD';\n\n @Input()\n size: ComponentSize;\n\n @Input()\n isRange: boolean;\n\n @Input()\n value: Dayjs | Dayjs[];\n\n @Input()\n clearable = true;\n\n @Input()\n placeholder: string;\n\n @Input()\n startPlaceholder: string;\n\n @Input()\n endPlaceholder: string;\n\n @Input()\n disabled = false;\n\n @Output()\n blur = new EventEmitter<void>();\n\n @Output()\n clear = new EventEmitter<void>();\n\n @ViewChild('focusRef', { static: false })\n focusInputRef: InputComponent;\n\n centerFocus = false;\n leftFocus = false;\n rightFocus = false;\n hovered = false;\n bem = bem;\n\n get isFocus() {\n return this.isRange ? this.leftFocus || this.rightFocus : this.centerFocus;\n }\n\n get hasValue() {\n return !this.isRange\n ? !!this.value\n : (this.value as Dayjs[])?.[0] || (this.value as Dayjs[])?.[1];\n }\n\n get showClear() {\n return !this.disabled && this.clearable && this.hasValue && this.hovered;\n }\n\n constructor() {\n this.focusInput = this.focusInput.bind(this);\n }\n\n focusInput() {\n this.focusInputRef.elementRef.nativeElement.focus();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '../button/public-api';\nimport { I18nModule } from '../i18n/public-api';\nimport { IconModule } from '../icon/icon.module';\nimport { InputModule } from '../input/public-api';\nimport { TimePickerModule } from '../time-picker/public-api';\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport { DatePickerPanelComponent } from './calendar/date-picker-panel/component';\nimport { CalendarFooterComponent } from './calendar/footer/component';\nimport { CalendarHeaderComponent } from './calendar/header/component';\nimport { PickerPanelComponent } from './calendar/panel/picker-panel';\nimport { DateRangePickerPanelComponent } from './calendar/range-picker-panel/component';\nimport { DatePickerComponent } from './date-picker/date-picker.component';\nimport { RangePickerComponent } from './range-picker/range-picker.component';\nimport { DatePickerTriggerComponent } from './trigger/trigger.component';\n\nconst COMPONENTS = [\n CalendarHeaderComponent,\n CalendarFooterComponent,\n DateRangePickerPanelComponent,\n PickerPanelComponent,\n RangePickerComponent,\n DatePickerPanelComponent,\n DatePickerComponent,\n DatePickerTriggerComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n InputModule,\n ButtonModule,\n TooltipModule,\n ReactiveFormsModule,\n FormsModule,\n TimePickerModule,\n IconModule,\n I18nModule,\n ],\n declarations: [...COMPONENTS],\n exports: [...COMPONENTS],\n})\nexport class DatePickerModule {}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport enum DrawerSize {\n Small = 'small',\n Medium = 'medium',\n Big = 'big',\n}\n\nexport abstract class DrawerRef<T = ComponentType<any>, R = any> {\n abstract afterClosed: Observable<R>;\n abstract afterOpen: Observable<void>;\n abstract dispose(result?: R): void;\n abstract open(): void;\n abstract componentInstance: T | null;\n\n abstract title?: string | TemplateRef<unknown>;\n abstract footer?: string | TemplateRef<unknown>;\n abstract size?: DrawerSize;\n abstract offsetY?: string;\n abstract visible?: boolean;\n abstract hideOnClickOutside?: boolean;\n abstract showClose?: boolean;\n abstract drawerClass?: string;\n abstract mask?: boolean;\n abstract maskClosable?: boolean;\n abstract width?: number;\n abstract divider?: boolean;\n}\n","/**\n * @packageDocumentation\n * @module page-guard\n */\n\nimport { Directive } from '@angular/core';\n\n@Directive({\n selector: '[auiDrawerHeader]',\n})\nexport class DrawerHeaderDirective {}\n\n@Directive({\n selector: '[auiDrawerContent]',\n})\nexport class DrawerContentDirective {}\n\n@Directive({\n selector: '[auiDrawerFooter]',\n})\nexport class DrawerFooterDirective {}\n","import {\n ComponentType,\n Overlay,\n OverlayConfig,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport {\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n InjectionToken,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { isTemplateRef } from '../../utils';\n\nimport { DrawerRef, DrawerSize } from './drawer-ref';\nimport {\n DrawerContentDirective,\n DrawerFooterDirective,\n DrawerHeaderDirective,\n} from './helper-directives';\n\nexport const DATA = new InjectionToken('drawer-data');\n\nconst DRAWER_OVERLAY_CLASS = 'aui-drawer-overlay';\n\nconst SIZE_MAPPER = {\n [DrawerSize.Small]: 400,\n [DrawerSize.Medium]: 600,\n [DrawerSize.Big]: 800,\n};\n\n@Component({\n selector: 'aui-drawer',\n templateUrl: './drawer.component.html',\n styleUrls: ['./drawer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DrawerComponent<\n T = ComponentType<unknown>,\n R = unknown,\n D = unknown\n >\n extends DrawerRef<T, R>\n implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n @Input()\n title: string | TemplateRef<unknown>;\n\n @Input()\n footer: string | TemplateRef<unknown>;\n\n @Input()\n size: DrawerSize = DrawerSize.Medium;\n\n @Input()\n offsetY = '0px';\n\n @Input() visible: boolean;\n\n @Input()\n content: TemplateRef<T> | ComponentType<T>;\n\n @Input()\n hideOnClickOutside = false;\n\n @Input()\n showClose = true;\n\n @Input()\n drawerClass: string;\n\n @Input()\n mask: boolean;\n\n @Input()\n maskClosable: boolean;\n\n @Input()\n divider = true;\n\n private _value = SIZE_MAPPER[DrawerSize.Medium];\n @Input()\n set width(value: number) {\n this._value = value;\n }\n\n get width() {\n return this._value;\n }\n\n get drawerClasses(): Record<string, boolean> {\n return {\n 'aui-drawer': true,\n hasDivider: this.divider,\n ...(!this.drawerClass ? null : { [this.drawerClass]: true }),\n };\n }\n\n private readonly afterClosed$ = new Subject<R>();\n\n get afterClosed(): Observable<R> {\n return this.afterClosed$.asObservable();\n }\n\n private readonly afterOpen$ = new Subject<void>();\n\n get afterOpen(): Observable<void> {\n return this.afterOpen$.asObservable();\n }\n\n @Output()\n drawerViewInit = new EventEmitter<void>();\n\n @Output() readonly close = new EventEmitter<MouseEvent>();\n\n @ViewChild('drawerTemplate', { static: true })\n drawerTemplate: TemplateRef<void>;\n\n @ViewChild(CdkPortalOutlet, { static: false })\n bodyPortalOutlet: CdkPortalOutlet;\n\n @ContentChild(DrawerHeaderDirective, { read: TemplateRef })\n titleTemplate: TemplateRef<T>;\n\n @ContentChild(DrawerContentDirective, { read: TemplateRef })\n contentTemplate: TemplateRef<T> | ComponentType<T>;\n\n @ContentChild(DrawerFooterDirective, { read: TemplateRef })\n footerTemplate: TemplateRef<T>;\n\n onDestroy$ = new Subject<void>();\n\n isTemplateRef = isTemplateRef;\n\n componentInstance: T | null = null;\n\n contentParams: D;\n overlayRef: OverlayRef;\n portal: TemplatePortal;\n templateContext: unknown = {};\n get transform() {\n return `translateX(${this.visible ? 0 : '100%'})`;\n }\n\n constructor(\n private readonly viewContainerRef: ViewContainerRef,\n private readonly overlay: Overlay,\n private readonly injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit() {\n this.attachOverlay();\n this.updateBodyOverflow();\n this.templateContext = { $implicit: this.contentParams };\n this.cdr.detectChanges();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { visible } = changes;\n if (visible) {\n const value = visible.currentValue;\n if (value) {\n this.open();\n } else {\n this.dispose();\n }\n }\n }\n\n ngAfterViewInit() {\n this.attachBodyContent();\n setTimeout(() => {\n this.drawerViewInit.emit();\n }, 0);\n }\n\n private attachOverlay() {\n if (!this.overlayRef) {\n this.portal = new TemplatePortal(\n this.drawerTemplate,\n this.viewContainerRef,\n );\n this.overlayRef = this.overlay.create(this.getOverlayConfig());\n }\n if (this.overlayRef) {\n this.overlayRef.attach(this.portal);\n this.overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.onDestroy$))\n .subscribe(event => {\n // 判断鼠标点击事件的 target 是否为 overlay-container 的子节点,如果是,则不关闭 drawer。\n // 为了避免点击 drawer 里的 tooltip 后 drawer 被关闭。\n if (\n this.visible &&\n this.hideOnClickOutside &&\n event.target instanceof Node &&\n !this.overlayRef.hostElement?.parentNode?.contains(event.target)\n ) {\n event.stopPropagation();\n event.preventDefault();\n this.dispose();\n }\n });\n }\n }\n\n private getOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n panelClass: DRAWER_OVERLAY_CLASS,\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n }\n\n private attachBodyContent(): void {\n this.bodyPortalOutlet?.dispose();\n const content = this.content || this.contentTemplate;\n if (content instanceof Type) {\n const componentPortal = new ComponentPortal<T>(\n content,\n null,\n Injector.create({\n providers: [\n {\n provide: DATA,\n useValue: this.contentParams,\n },\n ],\n parent: this.injector,\n }),\n );\n const componentRef = this.bodyPortalOutlet?.attachComponentPortal(\n componentPortal,\n );\n this.componentInstance = componentRef.instance;\n Object.assign(componentRef.instance, this.contentParams);\n componentRef.changeDetectorRef.detectChanges();\n }\n }\n\n private updateBodyOverflow(): void {\n if (this.overlayRef) {\n if (this.visible) {\n this.overlayRef.getConfig().scrollStrategy.enable();\n } else {\n this.overlayRef.getConfig().scrollStrategy.disable();\n }\n }\n }\n\n open() {\n this.visible = true;\n this.afterOpen$.next();\n this.afterOpen$.complete();\n this.updateBodyOverflow();\n this.cdr.markForCheck();\n }\n\n dispose(result: R = null) {\n this.visible = false;\n this.close.emit();\n this.afterClosed$.next(result);\n this.afterClosed$.complete();\n this.updateBodyOverflow();\n this.cdr.markForCheck();\n }\n\n private disposeOverlay(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n this.overlayRef = null;\n }\n\n maskClick() {\n if (this.maskClosable && this.mask) {\n this.dispose();\n }\n }\n\n ngOnDestroy(): void {\n this.onDestroy$.next();\n this.disposeOverlay();\n }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, TemplateRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { DrawerComponent } from './component/drawer.component';\nimport { DrawerSize } from './public-api';\n\nexport interface DrawerOptions<T = any, D = any> {\n title?: string | TemplateRef<unknown>;\n width?: number;\n content?: ComponentType<T> | TemplateRef<T>;\n contentParams?: D;\n footer?: string | TemplateRef<unknown>;\n offsetY?: string;\n divider?: boolean;\n drawerClass?: string;\n size?: DrawerSize;\n visible?: boolean;\n hideOnClickOutside?: boolean;\n showClose?: boolean;\n mask?: boolean;\n maskClosable?: boolean;\n}\n@Injectable()\nexport class DrawerService {\n private drawerRef: ComponentRef<DrawerComponent>;\n private overlayRef: OverlayRef;\n private readonly unsubscribe$ = new Subject<void>();\n\n constructor(private readonly overlay: Overlay) {}\n\n open<T = unknown>(options: DrawerOptions<T>) {\n this.drawerRef?.instance?.dispose();\n this.createDrawer();\n this.updateOptions(options);\n return this.drawerRef?.instance;\n }\n\n updateOptions(options: DrawerOptions): void {\n Object.assign(this.drawerRef.instance, options);\n }\n\n private createDrawer(): void {\n this.overlayRef = this.overlay.create();\n this.drawerRef = this.overlayRef.attach(\n new ComponentPortal(DrawerComponent),\n );\n this.drawerRef.instance.drawerViewInit\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n this.drawerRef.instance.open();\n });\n\n this.drawerRef.instance.afterClosed\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n this.overlayRef.dispose();\n this.drawerRef = null;\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n });\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';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { DrawerComponent } from './component/drawer.component';\nimport {\n DrawerContentDirective,\n DrawerFooterDirective,\n DrawerHeaderDirective,\n} from './component/helper-directives';\nimport { DrawerService } from './drawer.service';\n\nconst COMMON = [\n DrawerComponent,\n DrawerHeaderDirective,\n DrawerContentDirective,\n DrawerFooterDirective,\n];\n\n@NgModule({\n imports: [CommonModule, IconModule, IconModule, OverlayModule, PortalModule],\n declarations: COMMON,\n exports: COMMON,\n entryComponents: [DrawerComponent],\n providers: [DrawerService],\n})\nexport class DrawerModule {}\n","import { ValueOf } from '../types';\n\nexport const StepState = {\n Default: 'default',\n Done: 'done',\n Error: 'error',\n Pending: 'pending',\n} as const;\n\nexport type StepState = ValueOf<typeof StepState>;\n\nexport interface StepItem {\n label: string;\n description?: string;\n state?: StepState;\n optional?: boolean;\n /**\n * @deprecated 每个步骤不再需要单独控制。通过组件参数 selectable 统一控制\n */\n editable?: boolean;\n}\n\nexport type StepsOrientation = 'horizontal' | 'vertical';\n\nexport type StepsType = 'step' | 'progress';\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { StepItem, StepState, StepsOrientation, StepsType } from './types';\n\nconst StepDefaultIcon = {\n [StepState.Default]: 'number',\n [StepState.Done]: 'check_circle',\n [StepState.Error]: 'close_circle',\n [StepState.Pending]: 'sync_circle',\n};\n\nconst StepSelectedIcon = {\n [StepState.Default]: 'number',\n [StepState.Done]: 'check_circle_s',\n [StepState.Error]: 'close_circle_s',\n [StepState.Pending]: 'sync_circle_s',\n};\n\n@Component({\n selector: 'aui-steps',\n exportAs: 'auiSteps',\n templateUrl: './steps.component.html',\n styleUrls: ['./steps.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class StepsComponent implements OnInit, OnDestroy {\n _currentIndex: number;\n private _steps: StepItem[] = [];\n @Input()\n get steps() {\n return this._steps;\n }\n\n set steps(val: StepItem[]) {\n this._steps = val;\n this.stepsChange$$.next(val);\n }\n\n /**\n * @deprecated type 为 step 时一般在使用上下文中控制是否可以进行下一步;type 为 progress 时强制按顺序执行\n */\n @Input()\n linear = false;\n\n @Input()\n get currentIndex() {\n return this._currentIndex;\n }\n\n set currentIndex(index: number) {\n this.currentIndexChange$$.next(index);\n }\n\n @Input()\n orientation: StepsOrientation = 'horizontal';\n\n @Input()\n type: StepsType = 'step';\n\n @Input()\n selectable = false;\n\n @Output()\n currentIndexChange = new EventEmitter<number>();\n\n @Output()\n selectedIndexChange = new EventEmitter<number>();\n\n currentIndexChange$$ = new BehaviorSubject<number>(0);\n stepsChange$$ = new BehaviorSubject<StepItem[]>([]);\n\n selectedIndex: number;\n\n private readonly destroy$$ = new Subject<void>();\n\n ngOnInit() {\n this.currentIndexChange$$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(index => {\n if (this.type === 'step') {\n this.setCurrentIndex(index);\n }\n });\n this.stepsChange$$.pipe(takeUntil(this.destroy$$)).subscribe(steps => {\n if (this.type === 'progress') {\n this.getProgressCurrentIndex(steps);\n }\n });\n }\n\n private setCurrentIndex(index: number) {\n if (this.linear) {\n if (this.steps?.length) {\n const ret = Math.min(Math.max(0, index), this.steps.length - 1);\n const reversedPrevSteps = this.steps.slice(0, ret).reverse();\n const doneIndex = reversedPrevSteps.findIndex(\n step => step.state === StepState.Done || step.optional,\n );\n const lastDoneStepIndex =\n doneIndex > -1 ? reversedPrevSteps.length - doneIndex : 0;\n this._currentIndex = this.selectedIndex = Math.min(\n lastDoneStepIndex,\n ret,\n );\n }\n } else {\n this._currentIndex = this.selectedIndex = index;\n }\n }\n\n private getProgressCurrentIndex(steps: StepItem[]) {\n if (!steps?.length) {\n if (this._currentIndex !== 0) {\n this.currentIndexChange.emit(0);\n }\n this._currentIndex = 0;\n } else {\n const reversedSteps = this.steps.slice(0).reverse();\n const doneStepIndex = reversedSteps.findIndex(\n step => step.state === StepState.Done,\n );\n const lastDoneStepIndex =\n doneStepIndex > -1 ? reversedSteps.length - doneStepIndex : 0;\n const newIndex = Math.min(lastDoneStepIndex, steps.length - 1);\n if (this._currentIndex !== newIndex) {\n this.currentIndexChange.emit(newIndex);\n }\n if (this._currentIndex === this.selectedIndex) {\n this._currentIndex = this.selectedIndex = newIndex;\n } else {\n this._currentIndex = newIndex;\n }\n }\n }\n\n get isVertical() {\n return this.orientation === 'vertical';\n }\n\n get isProgress() {\n return this.type === 'progress';\n }\n\n getIcon(i: number, state: StepState): string {\n if (!state) {\n return StepDefaultIcon.default;\n }\n return this.getActiveIndex() === i\n ? StepSelectedIcon[state]\n : StepDefaultIcon[state];\n }\n\n select(i: number) {\n if (this.isSelectable(i)) {\n if (this.isProgress) {\n this.selectedIndexChange.emit(i);\n this.selectedIndex = i;\n } else {\n this.currentIndexChange.emit(i);\n this._currentIndex = i;\n this.selectedIndex = i;\n }\n }\n }\n\n isSelectable(i: number) {\n const currentStep = this.steps[this._currentIndex];\n if (!this.selectable || this.selectedIndex === i) {\n return false;\n }\n const isLinear = this.isProgress ? true : this.linear;\n if (\n isLinear &&\n !currentStep.optional &&\n ((currentStep.state === StepState.Done && i > this._currentIndex + 1) ||\n (currentStep.state !== StepState.Done && i > this._currentIndex))\n ) {\n return false;\n }\n if (i < this._currentIndex && !this.selectable) {\n return false;\n }\n return true;\n }\n\n getActiveIndex() {\n return this.selectedIndex !== undefined\n ? this.selectedIndex\n : this._currentIndex;\n }\n\n isLastActive(i: number, steps: StepItem[]) {\n const firstDefaultIndex = steps.findIndex(\n step => !step.state || step.state === StepState.Default,\n );\n return i === this.selectedIndex\n ? true\n : firstDefaultIndex === 0\n ? false\n : firstDefaultIndex === i;\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { StepsComponent } from './steps.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [StepsComponent],\n exports: [StepsComponent],\n})\nexport class StepsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {DatePickerComponent as ɵbb} from './date-picker/date-picker/date-picker.component';\nexport {ConfirmDialogComponent as ɵj} from './dialog/confirm-dialog/confirm-dialog.component';\nexport {DialogComponent as ɵi} from './dialog/dialog.component';\nexport {MenuGroupTitleDirective as ɵt} from './dropdown/helper-directives';\nexport {AutosizeDirective as ɵr} from './input/autosize.directive';\nexport {InputAddonAfterDirective as ɵm,InputAddonBeforeDirective as ɵl,InputPrefixDirective as ɵn,InputSuffixDirective as ɵo} from './input/helper-directives';\nexport {BaseMessage as ɵx} from './message/base-message';\nexport {MessageAnimations as ɵw} from './message/message-animations';\nexport {MessageWrapperComponent as ɵu} from './message/message-wrapper.component';\nexport {MessageComponent as ɵv} from './message/message.component';\nexport {NotificationWrapperComponent as ɵy} from './notification/notification-wrapper.component';\nexport {BaseRadio as ɵk} from './radio/base-radio';\nexport {VirtualForOfDirective as ɵz} from './scrolling/virtual-for-of.directive';\nexport {BaseSelect as ɵs} from './select/base-select';\nexport {ClickOutsideDirective as ɵq} from './shared/click-outside.directive';\nexport {SharedModule as ɵp} from './shared/shared.module';\nexport {TableExpandButtonCellComponent as ɵf,TableExpandPanelCellComponent as ɵg} from './table/table-cell.component';\nexport {TablePlaceholderDefDirective as ɵd,TablePlaceholderOutlet as ɵe} from './table/table-placeholder.directive';\nexport {CssVarPipe as ɵc,RgbColorPipe as ɵa,RgbaColorPipe as ɵb} from './theme/color.pipe';\nexport {TooltipCopyDirective as ɵh} from './tooltip/tooltip-copy.directive';\nexport {_isNumberValue as ɵba} from './utils';"],"names":["bem","uniqueId","prefix","CdkScrollable"],"mappings":"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"}
1
+ {"version":3,"file":"alauda-ui.js","sources":["../../src/types.ts","../../src/utils/async.ts","../../src/utils/bem.ts","../../src/utils/coercion.ts","../../src/utils/fn.ts","../../src/utils/observe-dom.ts","../../src/utils/scroll-into-view.ts","../../src/utils/watch-content-exist.ts","../../src/theme/theme.service.ts","../../src/theme/utils.ts","../../src/theme/theme.pipe.ts","../../src/theme/theme.module.ts","../../src/icon/icons.ts","../../src/icon/utils.ts","../../src/icon/icon-register.service.ts","../../src/icon/icon.component.ts","../../src/icon/icon.module.ts","../../src/table/table-cell-def.directive.ts","../../src/table/table-cell.component.ts","../../src/table/table-cell.directive.ts","../../src/table/table-column-def.directive.ts","../../src/table/table-header-cell-def.directive.ts","../../src/table/table-header-cell.directive.ts","../../src/table/table-header-row-def.directive.ts","../../src/table/table-header-row.component.ts","../../src/table/table-placeholder.directive.ts","../../src/table/table-row-def.directive.ts","../../src/table/table-row.component.ts","../../src/table/table.component.ts","../../src/table/table-scroll.directive.ts","../../src/table/table.module.ts","../../src/sort/sort-errors.ts","../../src/sort/sort.directive.ts","../../src/sort/sort-header.component.ts","../../src/sort/sort.module.ts","../../src/button/button-group/button-group.component.ts","../../src/button/button.types.ts","../../src/button/button.component.ts","../../src/button/button.module.ts","../../src/back-top/back-top.component.ts","../../src/back-top/back-top.module.ts","../../src/tooltip/tooltip.types.ts","../../src/tooltip/tooltip.component.ts","../../src/tooltip/utils/index.ts","../../src/tooltip/base-tooltip.ts","../../src/tooltip/tooltip-active.directive.ts","../../src/tooltip/tooltip-intl.ts","../../src/tooltip/tooltip-copy.directive.ts","../../src/tooltip/tooltip.directive.ts","../../src/tooltip/tooltip.module.ts","../../src/card/section.component.ts","../../src/card/card.component.ts","../../src/card/helper-directives.ts","../../src/card/card.module.ts","../../src/dialog/dialog-ref.ts","../../src/dialog/dialog.types.ts","../../src/dialog/confirm-dialog/confirm-dialog-config.ts","../../src/dialog/confirm-dialog/confirm-dialog.component.ts","../../src/dialog/dialog-config.ts","../../src/dialog/utils/errors.ts","../../src/dialog/utils/index.ts","../../src/dialog/dialog.component.ts","../../src/dialog/dialog.service.ts","../../src/dialog/dialog-content/dialog-close.directive.ts","../../src/dialog/dialog-content/dialog-content.component.ts","../../src/dialog/dialog-content/dialog-footer.component.ts","../../src/dialog/dialog-content/dialog-header.component.ts","../../src/dialog/dialog.module.ts","../../src/form/form.types.ts","../../src/form/form.directive.ts","../../src/form/helper-directives.ts","../../src/form/form-item/form-item.component.ts","../../src/form/form.module.ts","../../src/form/common-form.ts","../../src/radio/radio.types.ts","../../src/radio/radio-group/radio-group.component.ts","../../src/radio/base-radio.ts","../../src/radio/radio.component.ts","../../src/radio/radio-button/radio-button.component.ts","../../src/radio/radio.module.ts","../../src/switch/switch.component.ts","../../src/switch/switch.module.ts","../../src/checkbox/checkbox-group/checkbox-group.component.ts","../../src/checkbox/checkbox.component.ts","../../src/checkbox/checkbox.module.ts","../../src/input/input.component.ts","../../src/input/helper-directives.ts","../../src/input/input-group/input-group.component.ts","../../src/input/search/search.component.ts","../../src/input/tags-input/with-max-row-count.ts","../../src/input/tags-input/tags-input.component.ts","../../src/shared/click-outside.directive.ts","../../src/shared/shared.module.ts","../../src/tag/tag.types.ts","../../src/tag/tag.component.ts","../../src/tag/check-tag/check-tag.component.ts","../../src/tag/tag.module.ts","../../src/input/utils/index.ts","../../src/input/autosize.directive.ts","../../src/input/number-input/number-input.component.ts","../../src/input/input.module.ts","../../src/i18n/language/en.ts","../../src/i18n/i18n.type.ts","../../src/i18n/i18n.service.ts","../../src/i18n/i18n.pipe.ts","../../src/i18n/i18n.module.ts","../../src/i18n/language/zh.ts","../../src/dropdown/dropdown-active.directive.ts","../../src/dropdown/dropdown.directive.ts","../../src/dropdown/dropdown.types.ts","../../src/dropdown/menu-item/menu-item.component.ts","../../src/dropdown/menu/menu-content.directive.ts","../../src/dropdown/menu/menu.component.ts","../../src/dropdown/dropdown-button/dropdown-button.component.ts","../../src/dropdown/menu-group/menu-group.component.ts","../../src/dropdown/submenu/submenu.component.ts","../../src/dropdown/helper-directives.ts","../../src/dropdown/dropdown.module.ts","../../src/select/helper-directives.ts","../../src/select/option/option.component.ts","../../src/select/base-select.ts","../../src/select/select.types.ts","../../src/select/multi-select/multi-select.component.ts","../../src/select/option-group/option-group.component.ts","../../src/select/option-placeholder.component.ts","../../src/select/select.component.ts","../../src/select/validators.ts","../../src/select/select.module.ts","../../src/paginator/paginator-intl.ts","../../src/paginator/paginator.component.ts","../../src/paginator/paginator.module.ts","../../src/inline-alert/inline-alert.types.ts","../../src/inline-alert/helper-directives.ts","../../src/inline-alert/inline-alert.component.ts","../../src/inline-alert/inline-alert.module.ts","../../src/breadcrumb/breadcrumb-item.component.ts","../../src/breadcrumb/breadcrumb.component.ts","../../src/breadcrumb/breadcrumb.module.ts","../../src/message/message-wrapper.component.ts","../../src/message/message-animations.ts","../../src/message/message.config.ts","../../src/message/message.component.ts","../../src/message/base-message.ts","../../src/message/message.service.ts","../../src/message/message.module.ts","../../src/notification/notification-wrapper.component.ts","../../src/notification/notification.component.ts","../../src/notification/notification.config.ts","../../src/notification/notification.service.ts","../../src/notification/notification.module.ts","../../src/tabs/tab-body.component.ts","../../src/tabs/tab-directives.ts","../../src/tabs/tabs.types.ts","../../src/tabs/tab-header-active-indicator.component.ts","../../src/tabs/tab-header.component.ts","../../src/tabs/tab-context.service.ts","../../src/tabs/tab.component.ts","../../src/tabs/tab-group.component.ts","../../src/tabs/tabs.module.ts","../../src/tree-select/tree-node-placeholder.component.ts","../../src/tree-select/tree-select.component.ts","../../src/tree-select/tree-node/tree-node.component.ts","../../src/tree-select/tree-select.module.ts","../../src/autocomplete/autocomplete.directive.ts","../../src/autocomplete/autocomplete-placeholder.component.ts","../../src/autocomplete/suggestion/suggestion.component.ts","../../src/autocomplete/autocomplete.component.ts","../../src/autocomplete/suggestion-group/suggestion-group.component.ts","../../src/autocomplete/helper-directives.ts","../../src/autocomplete/autocomplete.module.ts","../../src/table-of-contents/toc-container.directive.ts","../../src/table-of-contents/toc-content.directive.ts","../../src/table-of-contents/toc-link.directive.ts","../../src/table-of-contents/table-of-contents.module.ts","../../src/status-bar/status-bar.types.ts","../../src/status-bar/status-bar.component.ts","../../src/status-bar/status-bar.module.ts","../../src/color-picker/color-picker.component.ts","../../src/color-picker/color-picker.module.ts","../../src/accordion/accordion.component.ts","../../src/accordion/accordion-item/accordion-item.component.ts","../../src/accordion/accordion.module.ts","../../src/scrolling/fixed-size-table-virtual-scroll-strategy.ts","../../src/scrolling/fixed-size-table-virtual-scroll.directive.ts","../../src/scrolling/fixed-size-virtual-scroll.directive.ts","../../src/scrolling/virtual-for-of.directive.ts","../../src/scrolling/virtual-scroll-viewport.component.ts","../../src/scrolling/scrolling.module.ts","../../src/anchor/anchor.directive.ts","../../src/anchor/utils.ts","../../src/anchor/anchor.component.ts","../../src/anchor/anchor.module.ts","../../src/date-picker/date-picker.type.ts","../../src/date-picker/calendar/constant.ts","../../src/date-picker/calendar/util.ts","../../src/time-picker/time-picker.type.ts","../../src/time-picker/component.ts","../../src/time-picker/constant.ts","../../src/time-picker/panel/panel.component.ts","../../src/time-picker/time-picker.module.ts","../../src/date-picker/calendar/date-picker-panel/component.ts","../../src/date-picker/calendar/footer/component.ts","../../src/date-picker/calendar/header/component.ts","../../src/date-picker/calendar/panel/picker-panel.ts","../../src/date-picker/calendar/range-picker-panel/component.ts","../../src/date-picker/date-picker/date-picker.component.ts","../../src/date-picker/range-picker/range-picker.component.ts","../../src/date-picker/trigger/trigger.component.ts","../../src/date-picker/date-picker.module.ts","../../src/drawer/component/drawer-ref.ts","../../src/drawer/component/helper-directives.ts","../../src/drawer/component/drawer.component.ts","../../src/drawer/drawer.service.ts","../../src/drawer/drawer.module.ts","../../src/steps/types.ts","../../src/steps/steps.component.ts","../../src/steps/steps.module.ts","../../src/alauda-ui.ts"],"sourcesContent":["export type ValueOf<T> = T[keyof T];\n\nexport const ComponentSize = {\n Large: 'large',\n Medium: 'medium',\n Small: 'small',\n Mini: 'mini',\n /**\n * represents default internally, @link https://github.com/angular/vscode-ng-language-service/issues/1147\n */\n Empty: '',\n} as const;\n\nexport type ComponentSize = ValueOf<typeof ComponentSize>;\n","export function sleep(ms = 0) {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\n","// Experimental bem classname helper\nexport class Bem {\n constructor(private readonly namespace: string) {}\n\n block(...modifiers: Array<{ [name: string]: boolean } | string>) {\n const activatedModifiers = getActivatedModifiers(modifiers);\n if (activatedModifiers.length > 0) {\n return `${this.namespace} ${activatedModifiers\n .map(modifier => this.namespace + '--' + modifier)\n .join(' ')}`;\n }\n return this.namespace;\n }\n\n modifier(name: string) {\n return `${this.namespace}--${name}`;\n }\n\n element(\n name: string,\n ...modifiers: Array<{ [name: string]: boolean | '' } | string>\n ) {\n const activatedModifiers = getActivatedModifiers(modifiers);\n\n if (activatedModifiers.length > 0) {\n return `${this.namespace}__${name} ${activatedModifiers\n .map(modifier => this.namespace + '__' + name + '--' + modifier)\n .join(' ')}`;\n }\n\n return `${this.namespace}__${name}`;\n }\n}\n\nfunction getActivatedModifiers(\n modifiers: Array<{ [name: string]: boolean | '' } | string>,\n) {\n return modifiers.reduce<string[]>((acc, modifier) => {\n if (!modifier) {\n return acc;\n }\n return acc.concat(\n typeof modifier === 'string'\n ? [modifier]\n : getActivatedModifiersFromObject(modifier),\n );\n }, []);\n}\n\nfunction getActivatedModifiersFromObject(modifiers: {\n [name: string]: boolean | '';\n}) {\n return Object.keys(modifiers).filter(key => modifiers[key]);\n}\n\nexport function buildBem(namespace: string) {\n return new Bem(namespace);\n}\n","export function coerceString(val: unknown): string {\n return val == null ? '' : val.toString();\n}\n\nexport function coerceAttrBoolean(val: unknown): boolean {\n return val === '' ? true : !!val;\n}\n\nexport function coerceNumber(val: unknown, fallbackValue = 0): number {\n return _isNumberValue(val) ? Number(val) : fallbackValue;\n}\n\nexport function _isNumberValue(value: unknown): boolean {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value as string)) && !isNaN(Number(value));\n}\n","import { TemplateRef } from '@angular/core';\n\nexport function isUndefined(val: unknown): boolean {\n return val === undefined;\n}\n\nexport const last = <T>(values: T[]) => values?.[values.length - 1];\n\nexport const isTemplateRef = (\n label: string | TemplateRef<unknown>,\n): label is TemplateRef<unknown> => label instanceof TemplateRef;\n\nexport const handlePixel = (value: number | string) =>\n Number.isNaN(+value) ? (value as string) : value + 'px';\n","import { Observable } from 'rxjs';\n\nexport const observeResizeOn = <T extends Element>(\n target: T,\n options?: ResizeObserverOptions,\n) =>\n new Observable<T>(observer => {\n const resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n observer.next(entry.target as T);\n }\n });\n resizeObserver.observe(target, options);\n return () => {\n resizeObserver.unobserve(target);\n resizeObserver.disconnect();\n };\n });\n\nexport const observeMutationOn = <T extends Node>(\n target: T,\n options?: MutationObserverInit,\n) =>\n new Observable<MutationRecord>(observer => {\n const mutationObserver = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n observer.next(mutation);\n }\n });\n mutationObserver.observe(target, options);\n return () => mutationObserver.disconnect();\n });\n","export function scrollIntoView(container: HTMLElement, selected: HTMLElement) {\n if (!selected) {\n container.scrollTop = 0;\n return;\n }\n\n const top = selected.offsetTop;\n const bottom = selected.offsetTop + selected.offsetHeight;\n const viewRectTop = container.scrollTop;\n const viewRectBottom = viewRectTop + container.clientHeight;\n\n if (viewRectTop > top) {\n container.scrollTop = top;\n } else if (viewRectBottom < bottom) {\n container.scrollTop = bottom - container.clientHeight;\n }\n}\n","import { QueryList } from '@angular/core';\nimport { map, publishReplay, refCount, startWith } from 'rxjs/operators';\n\nexport function watchContentExist(queryList: QueryList<unknown>) {\n return queryList.changes.pipe(\n startWith(queryList),\n map((list: QueryList<unknown>) => !!list.length),\n publishReplay(1),\n refCount(),\n );\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { Theme, ThemeMode } from './theme.types';\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n private readonly htmlEl: HTMLHtmlElement;\n private browserTheme: Theme;\n private themeMode: ThemeMode;\n\n private readonly currentAppTheme$$ = new ReplaySubject<Theme>(1);\n\n readonly currentTheme$ = this.currentAppTheme$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n constructor() {\n this.htmlEl = document.querySelector('html');\n\n switch (this.htmlEl.getAttribute('aui-theme-mode')) {\n case 'dark':\n this.themeMode = 'dark';\n break;\n case 'light':\n this.themeMode = 'light';\n break;\n case 'system':\n this.themeMode = 'system';\n break;\n default:\n this.themeMode = 'light';\n }\n\n const darkModeQuery = window.matchMedia('(prefers-color-scheme: dark)');\n this.browserTheme = darkModeQuery.matches ? 'dark' : 'light';\n\n darkModeQuery.addEventListener('change', ({ matches }) => {\n this.browserTheme = matches ? 'dark' : 'light';\n if (this.themeMode === 'system') {\n this.themeChanged();\n }\n });\n\n this.themeChanged();\n }\n\n setThemeMode(mode: ThemeMode) {\n this.htmlEl.setAttribute('aui-theme-mode', mode);\n this.themeMode = mode;\n this.themeChanged();\n }\n\n currentTheme() {\n return this.themeMode === 'system' ? this.browserTheme : this.themeMode;\n }\n\n private themeChanged() {\n this.currentAppTheme$$.next(this.currentTheme());\n }\n}\n","export function rgbColor(color: string): string {\n return `rgb(var(--aui-color-${color}))`;\n}\n\nexport function rgbaColor([color, opacity]: [string, number]) {\n return `rgba(var(--aui-color-${color}), ${opacity})`;\n}\n\nexport function cssVar(value: string) {\n return `var(--aui-${value})`;\n}\n","import {\n ChangeDetectorRef,\n OnDestroy,\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ThemeService } from './theme.service';\nimport { Theme, ThemeSet } from './theme.types';\nimport { cssVar, rgbColor, rgbaColor } from './utils';\n\n@Pipe({ name: 'auiRgbColor', pure: true })\nexport class RgbColorPipe implements PipeTransform {\n transform = rgbColor;\n}\n\n@Pipe({ name: 'auiRgbaColor', pure: true })\nexport class RgbaColorPipe implements PipeTransform {\n transform = rgbaColor;\n}\n\n@Pipe({ name: 'auiCssVar', pure: true })\nexport class CssVarPipe implements PipeTransform {\n transform = cssVar;\n}\n\n@Pipe({ name: 'auiThemePicker', pure: false })\nexport class ThemePickerPipe<T> implements PipeTransform, OnDestroy {\n private currentTheme: Theme;\n private readonly destroy$$ = new Subject<void>();\n\n constructor(themeService: ThemeService, cdr: ChangeDetectorRef) {\n themeService.currentTheme$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(theme => {\n this.currentTheme = theme;\n cdr.markForCheck();\n });\n }\n\n transform(v: ThemeSet<T>) {\n if (v instanceof Function) {\n return v(this.currentTheme);\n }\n if (Array.isArray(v)) {\n return v[this.currentTheme === 'light' ? 0 : 1];\n }\n return v[this.currentTheme];\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport {\n CssVarPipe,\n RgbColorPipe,\n RgbaColorPipe,\n ThemePickerPipe,\n} from './theme.pipe';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [ThemePickerPipe, RgbColorPipe, RgbaColorPipe, CssVarPipe],\n exports: [ThemePickerPipe, RgbColorPipe, RgbaColorPipe, CssVarPipe],\n})\nexport class ThemeModule {}\n","export const auiIcons =\n '<svg><symbol id=\"aui-icon-square_s\" viewBox=\"0 0 1024 1024\"><path d=\"M950.857143 0a73.142857 73.142857 0 0 1 73.142857 73.142857v877.714286a73.142857 73.142857 0 0 1-73.142857 73.142857H73.142857a73.142857 73.142857 0 0 1-73.142857-73.142857V73.142857a73.142857 73.142857 0 0 1 73.142857-73.142857h877.714286z m-182.857143 219.428571h-512a36.571429 36.571429 0 0 0-35.986286 29.988572L219.428571 256v512a36.571429 36.571429 0 0 0 29.988572 35.986286L256 804.571429h512a36.571429 36.571429 0 0 0 35.986286-29.988572L804.571429 768v-512a36.571429 36.571429 0 0 0-29.988572-35.986286L768 219.428571z\" ></path></symbol><symbol id=\"aui-icon-close_small\" viewBox=\"0 0 1024 1024\"><path d=\"M597.333333 512l170.666667-170.666667a60.672 60.672 0 0 0 0-85.333333 60.672 60.672 0 0 0-85.333333 0L512 426.666667 341.333333 256a60.672 60.672 0 0 0-85.333333 0 60.672 60.672 0 0 0 0 85.333333l170.666667 170.666667-170.666667 170.666667a60.672 60.672 0 0 0 0 85.333333 60.672 60.672 0 0 0 85.333333 0l170.666667-170.666667 170.666667 170.666667a60.672 60.672 0 0 0 85.333333 0 60.672 60.672 0 0 0 0-85.333333L597.333333 512z\" ></path></symbol><symbol id=\"aui-icon-close\" viewBox=\"0 0 1024 1024\"><path d=\"M597.333 512l341.334-341.333a60.672 60.672 0 0 0 0-85.334 60.672 60.672 0 0 0-85.334 0L512 426.667 170.667 85.333a60.672 60.672 0 0 0-85.334 0 60.672 60.672 0 0 0 0 85.334L426.667 512 85.333 853.333a60.672 60.672 0 0 0 0 85.334 60.672 60.672 0 0 0 85.334 0L512 597.333l341.333 341.334a60.672 60.672 0 0 0 85.334 0 60.672 60.672 0 0 0 0-85.334L597.333 512z\" ></path></symbol><symbol id=\"aui-icon-arrow\" viewBox=\"0 0 1024 1024\"><path d=\"M700.352 180.16l301.696 301.696a42.56 42.56 0 0 1 0 60.288l-301.696 301.696a42.688 42.688 0 1 1-60.352-60.288l228.8-228.928H52.16a42.688 42.688 0 0 1 0-85.312h816.64L640 240.448a42.688 42.688 0 0 1 60.352-60.288z\" ></path></symbol><symbol id=\"aui-icon-time\" viewBox=\"0 0 1024 1024\"><path d=\"M567.678 277.319v278.584a20.735 20.735 0 0 1-5.951 15.36 20.735 20.735 0 0 1-15.36 5.951h-192.25a20.735 20.735 0 0 1-15.36-6.016 20.735 20.735 0 0 1-5.952-15.36V523.2c0-6.208 1.984-11.328 6.016-15.36a20.735 20.735 0 0 1 15.36-5.952h145.915v-224.57c0-6.207 1.92-11.327 5.952-15.359a20.735 20.735 0 0 1 15.36-5.952h24.959c6.208 0 11.328 1.984 15.36 6.016a20.735 20.735 0 0 1 6.015 15.36z m318.327 451.443A422.26 422.26 0 0 0 943.988 512a422.26 422.26 0 0 0-57.983-216.762 430.644 430.644 0 0 0-157.243-157.243A422.26 422.26 0 0 0 512 80.012a422.26 422.26 0 0 0-216.762 57.983 430.644 430.644 0 0 0-157.243 157.243A422.26 422.26 0 0 0 80.012 512c0 78.334 19.328 150.588 57.983 216.762a430.644 430.644 0 0 0 157.243 157.243A422.26 422.26 0 0 0 512 943.988a422.26 422.26 0 0 0 216.762-57.983 430.644 430.644 0 0 0 157.243-157.243z m69.31-473.395A499.058 499.058 0 0 1 1023.985 512c0 92.861-22.911 178.555-68.67 257.017a509.681 509.681 0 0 1-186.298 186.298A500.85 500.85 0 0 1 512 1023.985a500.85 500.85 0 0 1-257.017-68.67A509.681 509.681 0 0 1 68.685 769.017 500.85 500.85 0 0 1 0.015 512c0-92.861 22.911-178.555 68.67-257.017A509.681 509.681 0 0 1 254.983 68.685 500.85 500.85 0 0 1 512 0.015c92.861 0 178.555 22.911 257.017 68.67a508.913 508.913 0 0 1 186.298 186.682z\" ></path></symbol><symbol id=\"aui-icon-calendar\" viewBox=\"0 0 1024 1024\"><path d=\"M332.8 25.6L332.736 128h358.4L691.2 25.6H768L767.936 128H947.2v870.4H76.8V128h179.136L256 25.6h76.8zM255.936 209.6H158.4v707.2h707.2V209.6h-97.664L768 256h-76.8l-0.064-46.4h-358.4L332.8 256H256l-0.064-46.4zM704 601.6v76.8H320V601.6h384z m0-192v76.8H320V409.6h384z\" ></path></symbol><symbol id=\"aui-icon-check_circle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 1024A512 512 0 1 1 512 0a512 512 0 0 1 0 1024zM248 536l192 192 336-336L704 320 440 584 320 464 248 536z\" ></path></symbol><symbol id=\"aui-icon-close_circle_small_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 1024A512 512 0 1 1 512 0a512 512 0 0 1 0 1024z m85.333333-512l170.666667-170.666667a60.672 60.672 0 0 0 0-85.333333 60.672 60.672 0 0 0-85.333333 0L512 426.666667 341.333333 256a60.672 60.672 0 0 0-85.333333 0 60.672 60.672 0 0 0 0 85.333333l170.666667 170.666667-170.666667 170.666667a60.672 60.672 0 0 0 0 85.333333 60.672 60.672 0 0 0 85.333333 0l170.666667-170.666667 170.666667 170.666667a60.672 60.672 0 0 0 85.333333 0 60.672 60.672 0 0 0 0-85.333333L597.333333 512z\" ></path></symbol><symbol id=\"aui-icon-angle_down\" viewBox=\"0 0 1024 1024\"><path d=\"M512 678.4a38.4 38.4 0 0 1-27.136-11.264l-256-256a38.272 38.272 0 0 1 0-54.272 38.272 38.272 0 0 1 54.272 0L512 585.664l228.864-228.8a38.272 38.272 0 0 1 54.272 0 38.272 38.272 0 0 1 0 54.272l-256 256A38.4 38.4 0 0 1 512 678.4\" ></path></symbol><symbol id=\"aui-icon-angle_double_left\" viewBox=\"0 0 1024 1024\"><path d=\"M568.64 749.44a19.776 19.776 0 0 1-5.696 13.12l-28.544 28.544a19.584 19.584 0 0 1-13.12 5.696 19.776 19.776 0 0 1-13.12-5.696L241.856 524.8a19.584 19.584 0 0 1-5.696-13.12c0-4.544 2.304-9.728 5.696-13.12L508.16 232.256a19.584 19.584 0 0 1 13.12-5.696c4.544 0 9.728 2.304 13.12 5.696l28.544 28.544a19.584 19.584 0 0 1 5.696 13.12 19.776 19.776 0 0 1-5.696 13.12L338.368 511.616l224.576 224.576a19.584 19.584 0 0 1 5.696 13.12v0.128z m219.456 0a19.776 19.776 0 0 1-5.696 13.12l-28.544 28.544a19.584 19.584 0 0 1-13.12 5.696 19.776 19.776 0 0 1-13.12-5.696L461.312 524.8a19.584 19.584 0 0 1-5.696-13.12c0-4.544 2.304-9.728 5.696-13.12l266.304-266.304a19.584 19.584 0 0 1 13.12-5.696c4.544 0 9.728 2.304 13.12 5.696l28.544 28.544a19.584 19.584 0 0 1 5.696 13.12 19.776 19.776 0 0 1-5.696 13.12L557.824 511.616l224.576 224.576a19.584 19.584 0 0 1 5.696 13.12v0.128z\" ></path></symbol><symbol id=\"aui-icon-angle_double_right\" viewBox=\"0 0 1024 1024\"><path d=\"M568.64 511.552a19.776 19.776 0 0 1-5.696 13.12l-266.304 266.304a19.584 19.584 0 0 1-13.12 5.696 19.776 19.776 0 0 1-13.12-5.696l-28.544-28.544a19.584 19.584 0 0 1-5.696-13.12c0-4.544 2.304-9.728 5.696-13.12l224.576-224.576-224.576-224.576a19.584 19.584 0 0 1-5.696-13.12c0-4.544 2.304-9.728 5.696-13.12l28.544-28.544a19.584 19.584 0 0 1 13.12-5.696c4.544 0 9.728 2.304 13.12 5.696L562.944 498.56a19.584 19.584 0 0 1 5.696 13.12v-0.128z m219.392 0a19.776 19.776 0 0 1-5.696 13.12l-266.304 266.304a19.584 19.584 0 0 1-13.12 5.696 19.776 19.776 0 0 1-13.12-5.696l-28.544-28.544a19.584 19.584 0 0 1-5.696-13.12c0-4.544 2.304-9.728 5.696-13.12l224.576-224.576-224.576-224.576a19.584 19.584 0 0 1-5.696-13.12c0-4.544 2.304-9.728 5.696-13.12l28.544-28.544a19.584 19.584 0 0 1 13.12-5.696c4.544 0 9.728 2.304 13.12 5.696l266.304 266.304a19.584 19.584 0 0 1 5.696 13.12v-0.128z\" ></path></symbol><symbol id=\"aui-icon-caret_down_s\" viewBox=\"0 0 1024 1024\"><path d=\"M269.248 384h485.504a32 32 0 0 1 22.592 54.656l-242.688 242.688a32 32 0 0 1-45.312 0L246.656 438.656A32 32 0 0 1 269.248 384z\" ></path></symbol><symbol id=\"aui-icon-angle_left\" viewBox=\"0 0 1024 1024\"><path d=\"M345.6 512a38.4 38.4 0 0 1 11.264-27.136l256-256a38.272 38.272 0 0 1 54.272 0 38.272 38.272 0 0 1 0 54.272L438.336 512l228.8 228.864a38.272 38.272 0 0 1 0 54.272 38.272 38.272 0 0 1-54.272 0l-256-256A38.4 38.4 0 0 1 345.6 512\" ></path></symbol><symbol id=\"aui-icon-check_triangle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M1024 1024H0L1024 0v1024z m-544-288L640 896l256-256-64-64-192 192-96-96-64 64z\" ></path></symbol><symbol id=\"aui-icon-check\" viewBox=\"0 0 1024 1024\"><path d=\"M974.656 224.96c11.552 12.064 17.344 26.72 17.344 43.968s-5.792 31.904-17.344 43.968L442.016 868.864c-11.552 12.064-25.6 18.112-42.112 18.112s-30.56-6.048-42.112-18.112L49.344 546.912C37.792 534.848 32 520.192 32 502.944s5.792-31.904 17.344-43.968l84.224-87.904c11.552-12.064 25.6-18.112 42.112-18.112s30.56 6.048 42.112 18.112l182.08 190.72L806.176 137.056c11.552-12.064 25.6-18.112 42.112-18.112s30.56 6.048 42.112 18.112l84.224 87.904z\" ></path></symbol><symbol id=\"aui-icon-ellipsis_h_s\" viewBox=\"0 0 1024 1024\"><path d=\"M192 416a96 96 0 1 1 0 192 96 96 0 0 1 0-192z m320 0a96 96 0 1 1 0 192 96 96 0 0 1 0-192z m320 0a96 96 0 1 1 0 192 96 96 0 0 1 0-192z\" ></path></symbol><symbol id=\"aui-icon-exclamation_circle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 0c282.688 0 512 229.312 512 512s-229.312 512-512 512-512-229.312-512-512 229.312-512 512-512z m85.312 831.36v-126.72c0-11.968-9.344-21.952-20.672-21.952h-128a22.208 22.208 0 0 0-21.952 21.952v126.72c0 11.968 9.984 21.952 21.952 21.952h128c11.392 0 20.672-9.984 20.672-21.952z m-1.28-229.376L608 187.968a13.376 13.376 0 0 0-6.656-11.968 25.664 25.664 0 0 0-16-5.312H438.656a25.664 25.664 0 0 0-16 5.312 13.376 13.376 0 0 0-6.656 12.032l11.328 413.952c0 9.344 9.984 16.64 22.656 16.64h123.328c12.032 0 22.016-7.296 22.656-16.64z\" ></path></symbol><symbol id=\"aui-icon-check_s\" viewBox=\"0 0 1024 1024\"><path d=\"M169.024 534.976L247.04 456.96a12.8 12.8 0 0 1 18.048 0L416 608l342.976-342.976a12.8 12.8 0 0 1 18.048 0L855.04 343.04a12.8 12.8 0 0 1 0 18.048L424.96 791.04a12.8 12.8 0 0 1-18.048 0L168.96 552.96a12.8 12.8 0 0 1 0-18.048z\" ></path></symbol><symbol id=\"aui-icon-compress_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 549.952v265.856c0 10.24-3.776 19.2-11.264 26.688a36.48 36.48 0 0 1-26.688 11.264 36.48 36.48 0 0 1-26.752-11.264L361.856 757.12l-196.992 196.992a18.752 18.752 0 0 1-27.264 0L69.952 886.4a18.752 18.752 0 0 1 0-27.264l196.992-196.992L181.504 576.64a36.48 36.48 0 0 1-11.264-26.752c0-10.24 3.712-19.2 11.264-26.688A36.48 36.48 0 0 1 208.192 512h265.856c10.24 0 19.2 3.776 26.688 11.264A36.48 36.48 0 0 1 512 549.952z m442.048-412.352a18.752 18.752 0 0 1 0 27.264L757.12 361.856l85.44 85.44a36.48 36.48 0 0 1 11.264 26.752c0 10.24-3.712 19.2-11.264 26.688a36.48 36.48 0 0 1-26.688 11.264H549.952a36.48 36.48 0 0 1-26.688-11.264A36.48 36.48 0 0 1 512 474.048V208.192c0-10.24 3.776-19.2 11.264-26.688a36.48 36.48 0 0 1 26.688-11.264c10.304 0 19.2 3.712 26.752 11.264l85.44 85.44 196.992-196.992a18.752 18.752 0 0 1 27.264 0l67.648 67.648z\" ></path></symbol><symbol id=\"aui-icon-angle_right\" viewBox=\"0 0 1024 1024\"><path d=\"M678.4 512a38.4 38.4 0 0 1-11.264 27.136l-256 256a38.272 38.272 0 0 1-54.272 0 38.272 38.272 0 0 1 0-54.272L585.664 512 356.864 283.136a38.272 38.272 0 0 1 0-54.272 38.272 38.272 0 0 1 54.272 0l256 256A38.4 38.4 0 0 1 678.4 512\" ></path></symbol><symbol id=\"aui-icon-export\" viewBox=\"0 0 1024 1024\"><path d=\"M729.6 624H448v-96h281.6V452.352a32 32 0 0 1 52.48-24.64l148.48 123.712a32 32 0 0 1 0 49.152l-148.48 123.712a32 32 0 0 1-52.48-24.64V624zM832 384h-64V128H128v768h640v-128h64v128a64 64 0 0 1-64 64H128a64 64 0 0 1-64-64V128a64 64 0 0 1 64-64h640a64 64 0 0 1 64 64v256z\" ></path></symbol><symbol id=\"aui-icon-import\" viewBox=\"0 0 1024 1024\"><path d=\"M678.4 528H960v96h-281.6v75.648a32 32 0 0 1-52.48 24.64L477.44 600.576a32 32 0 0 1 0-49.152l148.48-123.712a32 32 0 0 1 52.48 24.64V528zM832 384h-64V128H128v768h640v-128h64v128a64 64 0 0 1-64 64H128a64 64 0 0 1-64-64V128a64 64 0 0 1 64-64h640a64 64 0 0 1 64 64v256z\" ></path></symbol><symbol id=\"aui-icon-exclamation_triangle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M585.152 849.792V741.12a18.56 18.56 0 0 0-18.304-18.88H457.152a18.56 18.56 0 0 0-18.304 18.88v108.608c0 10.24 8 18.88 18.304 18.88h109.696a18.56 18.56 0 0 0 18.304-18.88z m-1.152-213.76l10.24-262.272a13.824 13.824 0 0 0-5.632-10.88c-3.456-2.816-8.576-6.272-13.76-6.272H449.152c-5.12 0-10.24 3.456-13.696 6.272-3.968 2.88-5.76 8.576-5.76 12.032l9.792 261.12c0 7.488 8.576 13.184 19.392 13.184h105.728c10.304 0 18.88-5.76 19.456-13.12zM576 102.336l438.912 804.672a73.088 73.088 0 0 1-64 108.032H73.088c-25.664 0-49.664-13.76-62.848-36.032a72 72 0 0 1-1.152-72L448 102.272a72.704 72.704 0 0 1 128 0z\" ></path></symbol><symbol id=\"aui-icon-expand_s\" viewBox=\"0 0 1024 1024\"><path d=\"M498.56 591.936a18.432 18.432 0 0 1 0 26.816l-193.664 193.664 84.032 84.032a35.84 35.84 0 0 1 11.072 26.24 35.84 35.84 0 0 1-11.072 26.24 35.84 35.84 0 0 1-26.24 11.072H101.312a35.84 35.84 0 0 1-26.24-11.072 35.84 35.84 0 0 1-11.072-26.24v-261.376a35.84 35.84 0 0 1 11.072-26.24 35.84 35.84 0 0 1 26.24-11.072 35.84 35.84 0 0 1 26.24 11.072l84.032 84.032L405.248 525.44a18.432 18.432 0 0 1 26.88 0L498.56 591.936zM960 101.312v261.376a35.84 35.84 0 0 1-11.072 26.24 35.84 35.84 0 0 1-26.24 11.072 35.84 35.84 0 0 1-26.24-11.072l-84.032-84.032L618.752 498.56a18.432 18.432 0 0 1-26.88 0L525.44 432.064a18.432 18.432 0 0 1 0-26.816l193.664-193.664-84.032-84.032a35.84 35.84 0 0 1-11.072-26.24 35.84 35.84 0 0 1 11.072-26.24 35.84 35.84 0 0 1 26.24-11.072h261.376a35.84 35.84 0 0 1 26.24 11.072 35.84 35.84 0 0 1 11.072 26.24z\" ></path></symbol><symbol id=\"aui-icon-minus_s\" viewBox=\"0 0 1024 1024\"><path d=\"M256 448h512a64 64 0 0 1 0 128H256a64 64 0 0 1 0-128\" ></path></symbol><symbol id=\"aui-icon-minus\" viewBox=\"0 0 1024 1024\"><path d=\"M904 448H120C86.4 448 64 470.4 64 504s22.4 56 56 56h784c33.6 0 56-22.4 56-56S937.6 448 904 448z\" ></path></symbol><symbol id=\"aui-icon-info_circle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 0a512 512 0 1 1 0 1024A512 512 0 0 1 512 0zM448 304v32c0 26.368 21.632 48 48 48h32c26.368 0 48-21.632 48-48v-32A48.192 48.192 0 0 0 528 256h-32a48.192 48.192 0 0 0-48 48zM640 768v-64H576V448H384v64h64v192H384v64h256z\" ></path></symbol><symbol id=\"aui-icon-navigation_expand\" viewBox=\"0 0 1024 1024\"><path d=\"M512 192l256 320-256 320H448V192h64zM256 192h64v640H256V192z\" ></path></symbol><symbol id=\"aui-icon-copy\" viewBox=\"0 0 1024 1024\"><path d=\"M742.848 865.728v40.768c0 29.44-25.088 53.504-55.936 53.504h-503.04C153.152 960 128 936 128 906.496V226.816c0-29.568 25.088-53.568 55.936-53.568h124.096v-40.96c0-37.76 29.824-68.288 66.624-68.288h271.36C784.192 64 896 178.56 896 320v477.44c0 37.76-29.824 68.288-66.624 68.288h-86.528z m0-51.2h86.528c9.152 0 16.64-7.616 16.64-17.024V319.936c0-113.088-89.536-204.8-199.936-204.8h-271.36c-9.28 0-16.704 7.68-16.704 17.088v41.024h192.768c128 127.744 192.064 192.768 192.064 195.008v446.272z m-52.608 95.104V388.864h-197.12V223.68H180.672v685.952h509.568zM533.44 347.52h126.912L533.504 223.488V347.52z\" ></path></symbol><symbol id=\"aui-icon-plus\" viewBox=\"0 0 1024 1024\"><path d=\"M904 456h-336v-336C568 86.4 545.6 64 512 64s-56 22.4-56 56v336h-336C86.4 456 64 478.4 64 512s22.4 56 56 56h336v336c0 33.6 22.4 56 56 56s56-22.4 56-56v-336h336c33.6 0 56-22.4 56-56s-22.4-56-56-56z\" ></path></symbol><symbol id=\"aui-icon-back_top\" viewBox=\"0 0 1024 1024\"><path d=\"M545.07353 181.552571a42.2855 42.2855 0 0 0-34.480914-12.346599l-0.511776 0.063972a37.551571 37.551571 0 0 0-1.471357 0.191916c-0.383832 0-0.703692 0.127944-1.023552 0.191916l-1.023552 0.127944a42.413444 42.413444 0 0 0-1.27944 0.319861l-0.63972 0.127944a37.103767 37.103767 0 0 0-1.471357 0.447804l-0.511776 0.127944a39.150871 39.150871 0 0 0-1.535328 0.511776l-0.447804 0.127944a43.820828 43.820828 0 0 0-1.535328 0.63972l-0.383833 0.063972a36.400075 36.400075 0 0 0-1.5993 0.703692l-0.255888 0.127944a44.460549 44.460549 0 0 0-1.663272 0.831636l-0.191916 0.127944a44.652465 44.652465 0 0 0-10.939214 8.316362L117.804461 551.502718a43.24508 43.24508 0 0 0 0 60.773411c16.632723 16.760667 43.692884 16.760667 60.325607 0l294.271256-296.510277v665.180984a42.861248 42.861248 0 0 0 42.541389 43.053164h-0.191916a42.733304 42.733304 0 0 0 42.477416-43.053164v-665.308928l294.463172 296.446305c16.632723 16.760667 43.692884 16.632723 60.325608-0.255888a42.989192 42.989192 0 0 0 0.063972-60.517523l-367.007435-369.758231zM991.790092 43.181108a42.60536 42.60536 0 0 0-42.477416-42.733304H74.687324C51.209596 0.447804 32.209908 19.575436 32.209908 43.181108c0 23.669645 18.999688 42.861248 42.477416 42.861248h874.625352c23.477728 0 42.477416-19.191604 42.477416-42.861248z\" ></path></symbol><symbol id=\"aui-icon-moon\" viewBox=\"0 0 1024 1024\"><path d=\"M831.68 749.568c-21.952 3.456-44.224 5.248-66.944 5.248a414.592 414.592 0 0 1-204.992-52.48 396.16 396.16 0 0 1-148.992-142.848 372.224 372.224 0 0 1-54.784-196.48c0-74.56 21.12-144 63.296-208.064a381.44 381.44 0 0 0-199.872 133.504 352.256 352.256 0 0 0-77.504 223.872c0 50.496 10.304 98.752 30.976 144.832 20.672 46.08 48.384 85.696 83.072 118.912 34.624 33.28 76.032 59.776 124.096 79.616 48 19.84 98.432 29.696 151.104 29.696 58.432 0 113.92-11.968 166.4-35.84a386.24 386.24 0 0 0 134.144-99.968z m123.456-49.536c-38.144 78.848-95.616 141.888-172.48 189.12A471.424 471.424 0 0 1 531.2 960a471.552 471.552 0 0 1-181.248-35.584 473.088 473.088 0 0 1-149.056-95.552 451.008 451.008 0 0 1-99.712-142.848A420.032 420.032 0 0 1 64 512.32c0-59.52 11.648-116.352 35.008-170.56a442.112 442.112 0 0 1 94.848-140.8 465.856 465.856 0 0 1 143.232-95.872 481.472 481.472 0 0 1 176.448-39.936c17.856-0.768 30.208 6.784 37.12 22.72 7.296 16 4.224 29.952-9.152 41.984a310.912 310.912 0 0 0-80 105.792 301.952 301.952 0 0 0-27.648 127.36c0 57.6 14.784 110.592 44.416 159.168 29.568 48.64 69.76 87.04 120.384 115.456a334.272 334.272 0 0 0 166.08 42.56c47.872 0 94.08-9.92 138.688-29.76 16.64-6.976 31.232-4.48 43.776 7.616a35.648 35.648 0 0 1 10.688 19.84 36.032 36.032 0 0 1-2.752 22.144z\" ></path></symbol><symbol id=\"aui-icon-navigation_collapse\" viewBox=\"0 0 1024 1024\"><path d=\"M512 832L256 512l256-320h64v640H512z m192-640h64v640h-64V192z\" ></path></symbol><symbol id=\"aui-icon-sun\" viewBox=\"0 0 1024 1024\"><path d=\"M787.392 623.808c16-35.712 24.064-73.024 24.064-112 0-39.04-7.936-76.352-23.808-111.872a288.96 288.96 0 0 0-64.32-92.032A303.68 303.68 0 0 0 627.2 246.336a305.792 305.792 0 0 0-116.8-22.72c-40.768 0-79.744 7.552-116.864 22.72-37.12 15.168-69.12 35.712-96.192 61.568a288.96 288.96 0 0 0-64.256 92.032 271.296 271.296 0 0 0-23.808 111.808c0 39.04 7.936 76.288 23.808 111.808a288.96 288.96 0 0 0 64.256 92.032c27.008 25.856 59.072 46.4 96.192 61.568 37.12 15.168 76.096 22.784 116.864 22.784s79.68-7.616 116.8-22.784a303.68 303.68 0 0 0 96.192-61.568 286.272 286.272 0 0 0 64-91.776z m168.32 26.496c-1.408 5.056-4.864 8.32-10.432 10.048l-152.704 48v153.088a15.424 15.424 0 0 1-6.784 12.992c-5.184 3.328-10.24 4.032-15.168 2.048l-152.64-47.04-94.08 124.032a16.64 16.64 0 0 1-13.568 6.528 16.64 16.64 0 0 1-13.632-6.528l-94.08-124.032-152.64 47.04c-4.864 1.92-9.92 1.28-15.168-2.048a15.424 15.424 0 0 1-6.784-12.992v-153.088l-152.64-48c-5.568-1.664-9.088-4.992-10.432-10.048-1.792-5.632-1.088-10.496 2.048-14.464l94.08-124.096-94.08-124.032a15.36 15.36 0 0 1-2.048-14.528c1.344-4.992 4.864-8.32 10.432-10.048l152.64-48V162.048c0-5.312 2.24-9.664 6.784-12.992 5.248-3.328 10.24-4.032 15.168-1.984l152.64 46.976 94.08-124.032A16.256 16.256 0 0 1 510.336 64c5.888 0 10.432 1.984 13.568 6.016l94.08 124.032 152.64-46.976c4.928-2.048 9.984-1.344 15.168 1.92 4.544 3.392 6.784 7.68 6.784 13.056v153.088l152.704 48c5.568 1.728 9.024 5.056 10.432 10.048a15.36 15.36 0 0 1-2.112 14.528l-94.08 124.032 94.08 124.096c3.2 3.968 3.84 8.832 2.112 14.464z\" ></path></symbol><symbol id=\"aui-icon-search_s\" viewBox=\"0 0 1024 1024\"><path d=\"M613.248 613.76c47.36-47.36 71.04-104.32 71.04-170.688 0-66.432-23.552-123.2-70.784-170.432-47.232-47.168-104-70.784-170.432-70.784-66.432 0-123.2 23.616-170.432 70.784-47.168 47.232-70.784 104-70.784 170.432 0 66.432 23.616 123.2 70.784 170.432 47.232 47.232 104 70.784 170.432 70.784A231.872 231.872 0 0 0 613.248 613.76zM960 891.072c0 18.688-6.848 34.816-20.48 48.448-13.632 13.632-29.76 20.48-48.448 20.48a64 64 0 0 1-48.448-20.48l-184.704-184.128a368.704 368.704 0 0 1-214.848 66.752 372.48 372.48 0 0 1-147.264-29.888 379.008 379.008 0 0 1-121.152-80.768 379.008 379.008 0 0 1-80.768-121.152A372.48 372.48 0 0 1 64 443.136c0-51.392 9.984-100.48 29.888-147.328a379.008 379.008 0 0 1 80.768-121.152c33.92-33.92 74.304-60.8 121.152-80.768A372.48 372.48 0 0 1 443.072 64c51.328 0 100.48 9.984 147.264 29.888a379.008 379.008 0 0 1 121.152 80.768c33.92 33.92 60.8 74.304 80.768 121.152a372.48 372.48 0 0 1 29.888 147.264 368.704 368.704 0 0 1-66.752 214.848l184.704 184.704c13.248 13.248 19.904 29.44 19.904 48.448z\" ></path></symbol><symbol id=\"aui-icon-history_s\" viewBox=\"0 0 1024 1024\"><path d=\"M924.416 338.176A435.84 435.84 0 0 1 960 512a435.84 435.84 0 0 1-35.584 173.824 451.968 451.968 0 0 1-95.68 142.912 451.968 451.968 0 0 1-142.912 95.68A435.84 435.84 0 0 1 512 960a444.8 444.8 0 0 1-190.72-42.24 437.952 437.952 0 0 1-154.048-119.36 20.8 20.8 0 0 1-3.776-13.12 17.28 17.28 0 0 1 4.992-11.968l79.872-80.448a20.992 20.992 0 0 1 14.592-5.312c6.208 0.832 10.688 3.2 13.44 7.04a292.8 292.8 0 0 0 104.384 85.76A294.144 294.144 0 0 0 512 810.688c40.448 0 79.04-7.872 115.84-23.68a300.928 300.928 0 0 0 95.36-63.872c26.816-26.816 48.064-58.624 63.872-95.36 15.744-36.736 23.616-75.328 23.616-115.776 0-40.448-7.872-79.04-23.68-115.84A300.928 300.928 0 0 0 723.2 300.8a300.928 300.928 0 0 0-95.36-63.872A290.944 290.944 0 0 0 512 213.312c-38.08 0-74.688 6.912-109.696 20.736a289.792 289.792 0 0 0-93.312 59.2L388.928 373.76c12.032 11.648 14.72 25.088 8.128 40.256-6.592 15.552-18.048 23.296-34.368 23.296H101.312a35.84 35.84 0 0 1-26.24-11.072A35.84 35.84 0 0 1 64 400V138.688c0-16.384 7.808-27.84 23.36-34.432 15.168-6.592 28.544-3.84 40.192 8.192l75.84 75.2a452.8 452.8 0 0 1 142.656-91.264A439.424 439.424 0 0 1 512 64a435.84 435.84 0 0 1 173.824 35.584c55.232 23.68 102.848 55.616 142.912 95.68a451.968 451.968 0 0 1 95.68 142.912z m-337.728 5.824v261.312a18.176 18.176 0 0 1-5.248 13.44 18.176 18.176 0 0 1-13.44 5.248H381.312a18.176 18.176 0 0 1-13.44-5.248 18.176 18.176 0 0 1-5.184-13.44v-37.312c0-5.44 1.728-9.92 5.248-13.44a18.176 18.176 0 0 1 13.44-5.248H512V344c0-5.44 1.728-9.92 5.248-13.44a18.176 18.176 0 0 1 13.44-5.248h37.312c5.44 0 9.92 1.792 13.44 5.248a18.176 18.176 0 0 1 5.248 13.44z\" ></path></symbol><symbol id=\"aui-icon-check_circle\" viewBox=\"0 0 24 24\"><path d=\"M12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 C5.372583,24 0,18.627417 0,12 C0,5.372583 5.372583,0 12,0 Z M12,1 C5.92486775,1 1,5.92486775 1,12 C1,18.0751322 5.92486775,23 12,23 C18.0751322,23 23,18.0751322 23,12 C23,5.92486775 18.0751322,1 12,1 Z M16.5,8 L18,9.588 L11,17 L7,12.765 L8.5,11.176 L11,13.824 L16.5,8 Z\"/></symbol><symbol id=\"aui-icon-sync_circle\" viewBox=\"0 0 24 24\"><path d=\"M11.5,-0.5 C18.127417,-0.5 23.5,4.872583 23.5,11.5 C23.5,18.127417 18.127417,23.5 11.5,23.5 C4.872583,23.5 -0.5,18.127417 -0.5,11.5 C-0.5,4.872583 4.872583,-0.5 11.5,-0.5 Z M11.5,0.5 C5.42486775,0.5 0.5,5.42486775 0.5,11.5 C0.5,17.5751322 5.42486775,22.5 11.5,22.5 C17.5751322,22.5 22.5,17.5751322 22.5,11.5 C22.5,5.42486775 17.5751322,0.5 11.5,0.5 Z M18.0455081,12.4032823 C18.2571452,12.4032823 18.4179194,12.5954153 18.3787702,12.8034113 C17.7680202,16.0465 14.9206008,18.5 11.5,18.5 C9.62445161,18.5 7.92122177,17.7622903 6.66449597,16.5613105 L5.65641129,17.5693952 C5.22966532,17.9961411 4.5,17.6938992 4.5,17.090375 L4.5,13.3064516 C4.5,12.9323185 4.80328629,12.6290323 5.17741935,12.6290323 L8.96134274,12.6290323 C9.56486694,12.6290323 9.86710887,13.3586976 9.4403629,13.7854718 L8.26193548,14.9638992 C9.14433065,15.7901532 10.2895363,16.2430645 11.5044032,16.2419637 C13.6895887,16.2399879 15.5778105,14.7419315 16.0991976,12.6615484 C16.1371331,12.5101734 16.271996,12.4032823 16.4280565,12.4032823 L18.0455081,12.4032823 Z M11.5,4.5 C13.3755484,4.5 15.0787782,5.23770968 16.335504,6.43868952 L17.3435887,5.43060484 C17.7703347,5.00385887 18.5,5.30610081 18.5,5.909625 L18.5,9.69354839 C18.5,10.0676814 18.1967137,10.3709677 17.8225806,10.3709677 L14.0386573,10.3709677 C13.4351331,10.3709677 13.1328911,9.64130242 13.5596371,9.21452823 L14.7380645,8.03612903 C13.8556694,7.20990323 12.7105484,6.75699194 11.4957097,6.75806452 C9.30939516,6.75998387 7.42193548,8.25905645 6.90080242,10.3385081 C6.86286694,10.4898831 6.72800403,10.5967742 6.57194355,10.5967742 L4.95452016,10.5967742 C4.74288306,10.5967742 4.58210887,10.4046411 4.62125806,10.1966452 C5.23197984,6.9535 8.07939919,4.5 11.5,4.5 Z\" transform=\"translate(.5 .5)\"></path></symbol><symbol id=\"aui-icon-close_circle\" viewBox=\"0 0 24 24\"><path d=\"M12,0 C18.627417,0 24,5.372583 24,12 C24,18.627417 18.627417,24 12,24 C5.372583,24 0,18.627417 0,12 C0,5.372583 5.372583,0 12,0 Z M12,1 C5.92486775,1 1,5.92486775 1,12 C1,18.0751322 5.92486775,23 12,23 C18.0751322,23 23,18.0751322 23,12 C23,5.92486775 18.0751322,1 12,1 Z M15.2301716,6.7 C15.4530454,6.7 15.6759193,6.78894965 15.8368282,6.94985857 L17.0501414,8.16317179 C17.2110503,8.32408071 17.3,8.54695455 17.3,8.7698284 C17.3,8.99270224 17.2110503,9.21557609 17.0501414,9.37648501 L14.4266264,12 L17.0501414,14.623515 C17.2110503,14.7844239 17.3,15.0072978 17.3,15.2301716 C17.3,15.4530454 17.2110503,15.6759193 17.0501414,15.8368282 L15.8368282,17.0501414 C15.6759193,17.2110503 15.4530454,17.3 15.2301716,17.3 C15.0072978,17.3 14.7844239,17.2110503 14.623515,17.0501414 L12,14.4266264 L9.37648501,17.0501414 C9.21557609,17.2110503 8.99270224,17.3 8.7698284,17.3 C8.54695455,17.3 8.32408071,17.2110503 8.16317179,17.0501414 L6.94985857,15.8368282 C6.78894965,15.6759193 6.7,15.4530454 6.7,15.2301716 C6.7,15.0072978 6.78894965,14.7844239 6.94985857,14.623515 L9.57337356,12 L6.94985857,9.37648501 C6.78894965,9.21557609 6.7,8.99270224 6.7,8.7698284 C6.7,8.54695455 6.78894965,8.32408071 6.94985857,8.16317179 L8.16317179,6.94985857 C8.32408071,6.78894965 8.54695455,6.7 8.7698284,6.7 C8.99270224,6.7 9.21557609,6.78894965 9.37648501,6.94985857 L12,9.57337356 L14.623515,6.94985857 C14.7844239,6.78894965 15.0072978,6.7 15.2301716,6.7 Z\"></path></symbol><symbol id=\"aui-icon-sync_circle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 1024A512 512 0 1 1 512 0a512 512 0 0 1 0 1024z m148.032-670.336l-53.888 53.888a30.976 30.976 0 0 0 21.888 52.864h172.992A30.976 30.976 0 0 0 832 429.44V256.448a30.976 30.976 0 0 0-52.864-21.888l-46.08 46.08a320.064 320.064 0 0 0-535.488 171.776 15.488 15.488 0 0 0 15.232 18.304H286.72a15.552 15.552 0 0 0 15.04-11.84 217.024 217.024 0 0 1 210.048-163.648c55.552 0 107.904 20.672 148.224 58.432z m-437.12 209.92A30.976 30.976 0 0 0 192 594.56v172.992c0 27.584 33.344 41.408 52.864 21.888l46.08-46.08a320.128 320.128 0 0 0 535.488-171.776 15.488 15.488 0 0 0-15.232-18.304H737.28a15.552 15.552 0 0 0-15.04 11.84 217.024 217.024 0 0 1-210.048 163.648 215.232 215.232 0 0 1-148.224-58.432l53.888-53.888a30.976 30.976 0 0 0-21.888-52.864H222.976z\" ></path></symbol><symbol id=\"aui-icon-close_circle_s\" viewBox=\"0 0 1024 1024\"><path d=\"M512 0C229.12 0 0 229.12 0 512s229.12 512 512 512 512-229.12 512-512-229.12-512-512-512z m251.072 646.4a24.768 24.768 0 0 1 0 35.072l-81.792 81.6a24.768 24.768 0 0 1-35.072 0L512 627.584l-134.4 135.488a24.768 24.768 0 0 1-35.072 0l-81.6-81.792a24.768 24.768 0 0 1 0-35.072L396.416 512 260.928 377.6a24.768 24.768 0 0 1 0-35.072l81.792-81.792a24.768 24.768 0 0 1 35.072 0L512 396.416l134.4-135.488a24.768 24.768 0 0 1 35.072 0l81.792 81.792a24.768 24.768 0 0 1 0 35.072L627.584 512l135.488 134.4z\" ></path></symbol></svg>';\n","export function getAuiIconNoHttpProviderError(): Error {\n return new Error(\n 'Could not find HttpClient provider for use with Alauda UI icons. Please include the HttpClientModule from @angular/common/http in your app imports.',\n );\n}\n\nexport function getAuiIconFailedToLoadCustomIconFile(url: string) {\n return new Error(`AuiIcon failed to load custom icon file: ${url}.`);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable, Optional, SkipSelf } from '@angular/core';\n\nimport { auiIcons } from './icons';\nimport {\n getAuiIconFailedToLoadCustomIconFile,\n getAuiIconNoHttpProviderError,\n} from './utils';\n\n@Injectable()\nexport class IconRegisterService {\n private defaultIconPrefix = 'aui-icon';\n private readonly doc: Document;\n\n constructor(\n @Optional()\n @Inject(DOCUMENT)\n document: any,\n @Optional() private readonly httpClient: HttpClient,\n ) {\n this.doc = document;\n this.registerSvgSymbolsByString(auiIcons);\n }\n\n getDefaultIconPrefix(): string {\n return this.defaultIconPrefix;\n }\n\n replaceDefaultIconPrefix(prefix: string): void {\n this.defaultIconPrefix = prefix;\n }\n\n registerSvgSymbolsByUrl(url: string) {\n if (!this.httpClient) {\n throw getAuiIconNoHttpProviderError();\n }\n this.httpClient\n .get(url, {\n responseType: 'text',\n })\n .subscribe(\n res => {\n this.registerSvgSymbolsByString(res);\n },\n () => {\n throw getAuiIconFailedToLoadCustomIconFile(url);\n },\n );\n }\n\n registerSvgSymbolsByString(str: string) {\n this.appendSvg(str);\n }\n\n private appendSvg(svgString: string) {\n const setEl = this.doc.createElement('div');\n setEl.className = 'aui-icon-set';\n setEl.style.display = 'none';\n setEl.innerHTML = svgString;\n this.doc.body.append(setEl);\n }\n}\n\nexport function ICON_REGISTER_PROVIDER_FACTORY(\n parentRegister: IconRegisterService,\n document: Document,\n httpClient: HttpClient,\n) {\n return parentRegister || new IconRegisterService(document, httpClient);\n}\n\nexport const ICON_REGISTER_SERVICE_PROVIDER = {\n provide: IconRegisterService,\n deps: [\n [new Optional(), new SkipSelf(), IconRegisterService],\n [new Optional(), DOCUMENT],\n [new Optional(), HttpClient],\n ],\n useFactory: ICON_REGISTER_PROVIDER_FACTORY,\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem, handlePixel } from '../utils';\n\nimport { IconRegisterService } from './icon-register.service';\n\nlet id = 0;\n\n@Component({\n selector: 'aui-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class IconComponent {\n @Input()\n icon: string;\n\n @Input()\n light: string;\n\n @Input()\n dark: string;\n\n @Input()\n link = '';\n\n @Input()\n margin: 'left' | 'right';\n\n @Input()\n size: string;\n\n @Input()\n color: string;\n\n @Input()\n background: 'circle' | 'triangle';\n\n @Input()\n backgroundColor: string;\n\n bem: Bem = buildBem('aui-icon');\n\n id = id++;\n\n constructor(private readonly iconRegisterService: IconRegisterService) {}\n\n private parseIcon(icon: string): [string, string] {\n const defaultPrefix = this.iconRegisterService.getDefaultIconPrefix();\n const arr = (icon || '').split(':');\n return arr.length < 2 ? [defaultPrefix, arr[0]] : [arr[0], arr[1]];\n }\n\n getWidth() {\n if (!this.size) {\n return false;\n }\n return handlePixel((this.size || '').split(',')[0]);\n }\n\n getHeight() {\n if (!this.size) {\n return false;\n }\n const arr = (this.size || '').split(',');\n return handlePixel(arr[1] || arr[0]);\n }\n\n getIconId(icon: string) {\n const [prefix, name] = this.parseIcon(icon);\n return `${prefix}-${name}`;\n }\n\n getClass(id: string) {\n return `${this.bem.block(this.margin)} ${id}`;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ThemeModule } from '../theme/public-api';\n\nimport { ICON_REGISTER_SERVICE_PROVIDER } from './icon-register.service';\nimport { IconComponent } from './icon.component';\n\n@NgModule({\n imports: [CommonModule, ThemeModule],\n declarations: [IconComponent],\n exports: [IconComponent],\n providers: [ICON_REGISTER_SERVICE_PROVIDER],\n})\nexport class IconModule {}\n","import { CdkCellDef } from '@angular/cdk/table';\nimport { Directive } from '@angular/core';\n\n/**\n * Cell definition for the aui-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n selector: '[auiTableCellDef]',\n providers: [\n {\n provide: CdkCellDef,\n useExisting: TableCellDefDirective,\n },\n ],\n})\nexport class TableCellDefDirective extends CdkCellDef {}\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport { CdkCell } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-table-cell[auiExpandButton]',\n template: `\n <button\n type=\"button\"\n class=\"aui-expand-button\"\n [class.isExpanded]=\"expand\"\n [disabled]=\"disabled\"\n (click)=\"expandChange.next()\"\n >\n <aui-icon icon=\"angle_right\"></aui-icon>\n </button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class TableExpandButtonCellComponent extends CdkCell {\n @Input()\n expand = false;\n\n @Input()\n disabled = false;\n\n @Output()\n expandChange = new EventEmitter();\n\n get expanded() {\n return this.expand ? 'expanded' : null;\n }\n}\n@Component({\n selector: 'aui-table-cell[auiExpandPanel]',\n template: `\n <div\n *ngIf=\"expand\"\n class=\"aui-table__cell-expand-panel\"\n [@expand]=\"expanded\"\n >\n <div\n class=\"aui-table__cell-expand-panel-content\"\n [class.hasBackground]=\"background\"\n >\n <ng-content></ng-content>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n animations: [\n trigger('expand', [\n state('*', style({ height: 0 })),\n state('expanded', style({ height: '*', 'margin-bottom': '15px' })),\n transition('* <=> expanded', [animate('0.1s ease-in-out')]),\n ]),\n ],\n})\nexport class TableExpandPanelCellComponent extends CdkCell {\n @Input()\n expand = false;\n\n @Input()\n background = true;\n\n get expanded() {\n return this.expand ? 'expanded' : null;\n }\n}\n","import { CdkCell, CdkColumnDef } from '@angular/cdk/table';\nimport { Directive, ElementRef } from '@angular/core';\n\nimport { buildBem } from '../utils';\n\nconst bem = buildBem('aui-table');\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: 'aui-table-cell',\n host: {\n class: 'aui-table__cell',\n role: 'gridcell',\n },\n})\nexport class TableCellDirective extends CdkCell {\n constructor(columnDef: CdkColumnDef, elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(\n bem.element(`column-${columnDef.cssClassFriendlyName}`),\n );\n }\n}\n","import { CdkColumnDef } from '@angular/cdk/table';\nimport { Directive, Input } from '@angular/core';\n\n/**\n * Column definition for the aui-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n selector: '[auiTableColumnDef]',\n providers: [\n {\n provide: CdkColumnDef,\n useExisting: TableColumnDefDirective,\n },\n ],\n inputs: ['sticky'],\n})\nexport class TableColumnDefDirective extends CdkColumnDef {\n // Unique name for this column\n // Why it does not work in `inputs` property?\n @Input()\n set auiTableColumnDef(value: string) {\n this.name = value;\n }\n}\n","import { CdkHeaderCellDef } from '@angular/cdk/table';\nimport { Directive } from '@angular/core';\n\n/**\n * Header cell definition for the aui-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[auiTableHeaderCellDef]',\n providers: [\n {\n provide: CdkHeaderCellDef,\n useExisting: TableHeaderCellDefDirective,\n },\n ],\n})\nexport class TableHeaderCellDefDirective extends CdkHeaderCellDef {}\n","import { CdkColumnDef, CdkHeaderCell } from '@angular/cdk/table';\nimport { Directive, ElementRef } from '@angular/core';\n\nimport { buildBem } from '../utils';\n\nconst bem = buildBem('aui-table');\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: 'aui-table-header-cell',\n host: {\n class: 'aui-table__header-cell',\n role: 'columnheader',\n },\n})\nexport class TableHeaderCellDirective extends CdkHeaderCell {\n constructor(columnDef: CdkColumnDef, elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(\n bem.element(`column-${columnDef.cssClassFriendlyName}`),\n );\n }\n}\n","import { CdkHeaderRowDef } from '@angular/cdk/table';\nimport { Directive, Input } from '@angular/core';\n\n/**\n * Header row definition for the aui-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n selector: '[auiTableHeaderRowDef]',\n providers: [\n {\n provide: CdkHeaderRowDef,\n useExisting: TableHeaderRowDefDirective,\n },\n ],\n})\nexport class TableHeaderRowDefDirective extends CdkHeaderRowDef {\n @Input('auiTableHeaderRowDef')\n columns: string[];\n\n @Input('auiTableHeaderRowDefSticky')\n sticky: boolean;\n}\n","import { CDK_ROW_TEMPLATE, CdkHeaderRow } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n/** Header template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'aui-table-header-row',\n template: CDK_ROW_TEMPLATE,\n host: {\n class: 'aui-table__header-row',\n role: 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'auiTableHeaderRow',\n preserveWhitespaces: false,\n})\nexport class TableHeaderRowComponent extends CdkHeaderRow {}\n","import { RowOutlet } from '@angular/cdk/table';\nimport {\n Directive,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[auiTablePlaceholderDef]',\n})\nexport class TablePlaceholderDefDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({\n selector: '[auiTablePlaceholderOutlet]',\n})\nexport class TablePlaceholderOutlet implements RowOutlet {\n constructor(\n public viewContainer: ViewContainerRef,\n public elementRef: ElementRef,\n ) {}\n}\n","import { CdkRowDef } from '@angular/cdk/table';\nimport { Directive, Input } from '@angular/core';\n\n/**\n * Data row definition for the aui-table.\n * Captures the header row's template and other row properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n selector: '[auiTableRowDef]',\n providers: [\n {\n provide: CdkRowDef,\n useExisting: TableRowDefDirective,\n },\n ],\n})\nexport class TableRowDefDirective<T> extends CdkRowDef<T> {\n @Input('auiTableRowDefColumns')\n columns: string[];\n\n @Input('auiTableRowDefWhen')\n when: (index: number, rowData: T) => boolean;\n}\n","import { CDK_ROW_TEMPLATE, CdkRow } from '@angular/cdk/table';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'aui-table-row',\n template: CDK_ROW_TEMPLATE,\n host: {\n class: 'aui-table__row',\n role: 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'auiTableRow',\n preserveWhitespaces: false,\n})\nexport class TableRowComponent extends CdkRow implements AfterContentInit {\n @Input()\n @HostBinding('class.isDisabled')\n disabled = false;\n\n @HostBinding('class.hasPanel')\n hasPanel = false;\n\n constructor(private readonly elRef: ElementRef<HTMLElement>) {\n super();\n }\n\n ngAfterContentInit() {\n const panel = this.elRef.nativeElement.querySelector(\n 'aui-table-cell[auiExpandPanel]',\n );\n this.hasPanel = !!panel;\n }\n}\n","import {\n _DisposeViewRepeaterStrategy,\n _VIEW_REPEATER_STRATEGY,\n} from '@angular/cdk/collections';\nimport {\n CDK_TABLE,\n CDK_TABLE_TEMPLATE,\n CdkTable,\n _COALESCED_STYLE_SCHEDULER,\n _CoalescedStyleScheduler,\n} from '@angular/cdk/table';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {\n TablePlaceholderDefDirective,\n TablePlaceholderOutlet,\n} from './table-placeholder.directive';\n\n@Component({\n selector: 'aui-table',\n exportAs: 'auiTable',\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['table.component.scss', 'table-scroll.scss'],\n template: `\n ${CDK_TABLE_TEMPLATE}\n <ng-container auiTablePlaceholderOutlet></ng-container>\n `,\n host: {\n class: 'aui-table',\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: CDK_TABLE,\n useExisting: TableComponent,\n },\n {\n provide: _VIEW_REPEATER_STRATEGY,\n useClass: _DisposeViewRepeaterStrategy,\n },\n {\n provide: _COALESCED_STYLE_SCHEDULER,\n useClass: _CoalescedStyleScheduler,\n },\n ],\n})\nexport class TableComponent<T>\n extends CdkTable<T>\n implements AfterContentInit, OnDestroy {\n @Input()\n enableScrollWrapper: boolean;\n\n @ViewChild(TablePlaceholderOutlet, { static: true })\n _placeholderOutlet: TablePlaceholderOutlet;\n\n @ContentChild(TablePlaceholderDefDirective, { static: true })\n _placeholderDef: TablePlaceholderDefDirective;\n\n // FIXME: workaround to override because it will break constructor if it is field, but why MatTable works?\n // @ts-ignore\n protected get stickyCssClass() {\n return 'aui-table-sticky';\n }\n\n protected set stickyCssClass(_: string) {\n // nothing\n }\n\n ngAfterContentInit() {\n this._createPlaceholder();\n }\n\n private _createPlaceholder() {\n const footerRow = this._placeholderDef;\n if (!this._placeholderDef) {\n return;\n }\n\n const container = this._placeholderOutlet.viewContainer;\n container.createEmbeddedView(footerRow.templateRef);\n }\n\n private _clearPlaceholder() {\n this._placeholderOutlet.viewContainer.clear();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this._clearPlaceholder();\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Host,\n HostBinding,\n OnDestroy,\n} from '@angular/core';\nimport { Subject, fromEvent, merge } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nimport { observeResizeOn } from '../utils';\nimport { TableComponent } from './table.component';\n\nconst CLASS_PREFIX = 'aui-table';\nconst SHADOW_CLASS = `${CLASS_PREFIX}__scroll-shadow`;\nconst HAS_SCROLL_CLASS = `${SHADOW_CLASS}--has-scroll`;\nconst SCROLLING_CLASS = `${SHADOW_CLASS}--scrolling`;\nconst SCROLL_BEFORE_END_CLASS = `${SHADOW_CLASS}--before-end`;\n\nconst HAS_TABLE_TOP_SHADOW = 'hasTableTopShadow';\nconst HAS_TABLE_BOTTOM_SHADOW = 'hasTableBottomShadow';\nconst HAS_TABLE_VERTICAL_SCROLL = 'hasTableVerticalScroll';\n\n@Directive({\n selector: '[auiTableScrollWrapper]',\n host: {\n class: 'aui-table__scroll-wrapper',\n },\n})\nexport class TableScrollWrapperDirective {}\n@Directive({\n selector: '[auiTableScrollShadow]',\n})\nexport class TableScrollShadowDirective implements AfterViewInit, OnDestroy {\n destroy$$ = new Subject<void>();\n constructor(\n private readonly el: ElementRef<HTMLElement>,\n @Host() private readonly table: TableComponent<unknown>,\n ) {}\n\n @HostBinding(`class.${SCROLL_BEFORE_END_CLASS}`)\n SCROLL_BEFORE_END_CLASS = true;\n\n @HostBinding(`class.${SHADOW_CLASS}`)\n SHADOW_CLASS = true;\n\n get containerEl() {\n return this.el.nativeElement;\n }\n\n ngAfterViewInit() {\n requestAnimationFrame(() => {\n this.viewMutation();\n });\n }\n\n viewMutation() {\n merge(\n observeResizeOn(this.containerEl),\n fromEvent(this.containerEl, 'scroll'),\n )\n .pipe(startWith(null as void), takeUntil(this.destroy$$))\n .subscribe(() => {\n this.mutateVerticalScroll();\n this.mutateHorizontalScroll();\n });\n }\n\n mutateVerticalScroll() {\n const scrollDis =\n this.containerEl.scrollHeight - this.containerEl.offsetHeight;\n\n this.placeClassList(\n this.containerEl.classList,\n scrollDis > 0,\n HAS_TABLE_VERTICAL_SCROLL,\n );\n\n const scrollTop = this.containerEl.scrollTop;\n this.placeClassList(\n this.containerEl.classList,\n scrollTop > 0,\n HAS_TABLE_TOP_SHADOW,\n );\n this.placeClassList(\n this.containerEl.classList,\n scrollTop < scrollDis,\n HAS_TABLE_BOTTOM_SHADOW,\n );\n\n // 兼容屏幕缩放是 sticky多列的样式问题\n this.table.updateStickyColumnStyles();\n }\n\n mutateHorizontalScroll() {\n const scrollDis =\n this.containerEl.scrollWidth - this.containerEl.offsetWidth;\n\n this.placeClassList(\n this.containerEl.classList,\n scrollDis > 0,\n HAS_SCROLL_CLASS,\n );\n\n const scrollLeft = this.containerEl.scrollLeft;\n this.placeClassList(\n this.containerEl.classList,\n scrollLeft > 0,\n SCROLLING_CLASS,\n );\n this.placeClassList(\n this.containerEl.classList,\n scrollLeft < scrollDis,\n SCROLL_BEFORE_END_CLASS,\n );\n }\n\n placeClassList(\n classList: DOMTokenList,\n condition: boolean,\n className: string,\n ) {\n classList[condition ? 'add' : 'remove'](className);\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n }\n}\n","import { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/icon.module';\n\nimport { TableCellDefDirective } from './table-cell-def.directive';\nimport {\n TableExpandButtonCellComponent,\n TableExpandPanelCellComponent,\n} from './table-cell.component';\nimport { TableCellDirective } from './table-cell.directive';\nimport { TableColumnDefDirective } from './table-column-def.directive';\nimport { TableHeaderCellDefDirective } from './table-header-cell-def.directive';\nimport { TableHeaderCellDirective } from './table-header-cell.directive';\nimport { TableHeaderRowDefDirective } from './table-header-row-def.directive';\nimport { TableHeaderRowComponent } from './table-header-row.component';\nimport {\n TablePlaceholderDefDirective,\n TablePlaceholderOutlet,\n} from './table-placeholder.directive';\nimport { TableRowDefDirective } from './table-row-def.directive';\nimport { TableRowComponent } from './table-row.component';\nimport {\n TableScrollShadowDirective,\n TableScrollWrapperDirective,\n} from './table-scroll.directive';\nimport { TableComponent } from './table.component';\n\n@NgModule({\n imports: [CommonModule, IconModule, CdkTableModule],\n declarations: [\n TableComponent,\n TableRowComponent,\n TableHeaderRowComponent,\n TableExpandButtonCellComponent,\n TableExpandPanelCellComponent,\n TableCellDirective,\n TableCellDefDirective,\n TableHeaderCellDirective,\n TableRowDefDirective,\n TableHeaderRowDefDirective,\n TableHeaderCellDefDirective,\n TableColumnDefDirective,\n TableScrollShadowDirective,\n TablePlaceholderOutlet,\n TablePlaceholderDefDirective,\n TableScrollWrapperDirective,\n ],\n exports: [\n TableComponent,\n TableRowComponent,\n TableHeaderRowComponent,\n TableExpandButtonCellComponent,\n TableExpandPanelCellComponent,\n TableCellDirective,\n TableCellDefDirective,\n TableHeaderCellDirective,\n TableRowDefDirective,\n TableHeaderRowDefDirective,\n TableHeaderCellDefDirective,\n TableColumnDefDirective,\n TableScrollShadowDirective,\n TablePlaceholderOutlet,\n TablePlaceholderDefDirective,\n TableScrollWrapperDirective,\n ],\n})\nexport class TableModule {}\n","/** @docs-private */\nexport function getSortDuplicateSortableIdError(id: string): Error {\n return new Error(`Cannot have two MatSortables with the same id (${id}).`);\n}\n\n/** @docs-private */\nexport function getSortHeaderNotContainedWithinSortError(): Error {\n return new Error(\n `MatSortHeader must be placed within a parent element with the MatSort directive.`,\n );\n}\n\n/** @docs-private */\nexport function getSortHeaderMissingIdError(): Error {\n return new Error(`MatSortHeader must be provided with a unique id.`);\n}\n\n/** @docs-private */\nexport function getSortInvalidDirectionError(direction: string): Error {\n return new Error(\n `${direction} is not a valid sort direction ('asc' or 'desc').`,\n );\n}\n","// Original code from material2\n\nimport {\n Directive,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n isDevMode,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport {\n getSortDuplicateSortableIdError,\n getSortHeaderMissingIdError,\n getSortInvalidDirectionError,\n} from './sort-errors';\nimport { Sort, SortDirection, Sortable } from './sort.types';\n\n@Directive({\n selector: '[auiSort]',\n exportAs: 'auiSort',\n})\nexport class SortDirective implements OnChanges, OnDestroy {\n sortables = new Map<string, Sortable>();\n\n readonly _stateChanges = new Subject<void>();\n\n @Input()\n active: string;\n\n @Input()\n start: 'asc' | 'desc' = 'asc';\n\n @Input()\n get direction(): SortDirection {\n return this._direction;\n }\n\n set direction(direction: SortDirection) {\n if (\n isDevMode() &&\n direction &&\n direction !== 'asc' &&\n direction !== 'desc'\n ) {\n throw getSortInvalidDirectionError(direction);\n }\n this._direction = direction;\n }\n\n private _direction: SortDirection = '';\n\n @Output()\n readonly sortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n register(sortable: Sortable): void {\n if (!sortable.id) {\n throw getSortHeaderMissingIdError();\n }\n\n if (this.sortables.has(sortable.id)) {\n throw getSortDuplicateSortableIdError(sortable.id);\n }\n\n this.sortables.set(sortable.id, sortable);\n }\n\n deregister(sortable: Sortable): void {\n this.sortables.delete(sortable.id);\n }\n\n sort(sortable: Sortable): void {\n if (this.active !== sortable.id) {\n this.active = sortable.id;\n this.direction = sortable.start ? sortable.start : this.start;\n } else {\n this.direction = this.direction === 'asc' ? 'desc' : 'asc';\n }\n\n this.sortChange.emit({\n active: this.active,\n direction: this.direction,\n });\n }\n\n ngOnChanges() {\n this._stateChanges.next();\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n}\n","import { CdkColumnDef } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subscription, merge } from 'rxjs';\n\n/*\n * TODO: prevent ```public property '' of exported class has or is using name ''\n * from external module '' but cannot be named``` issue.\n */\nimport { Bem, buildBem } from '../utils';\n\nimport { getSortHeaderNotContainedWithinSortError } from './sort-errors';\nimport { SortDirective } from './sort.directive';\nimport { ArrowViewState, SortDirection, Sortable } from './sort.types';\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: '[aui-sort-header]',\n templateUrl: 'sort-header.component.html',\n styleUrls: ['sort-header.component.scss'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SortHeaderComponent implements Sortable, OnInit, OnDestroy {\n private readonly _rerenderSubscription: Subscription;\n\n _viewState: ArrowViewState;\n\n arrowDirection: SortDirection = '';\n\n @Input('aui-sort-header')\n id: string;\n\n @Input()\n start: 'asc' | 'desc';\n\n bem: Bem = buildBem('aui-sort-header');\n\n constructor(\n cdr: ChangeDetectorRef,\n @Optional() public _sort: SortDirective,\n @Optional() public _cdkColumnRef: CdkColumnDef,\n ) {\n if (!_sort) {\n throw getSortHeaderNotContainedWithinSortError();\n }\n\n this._rerenderSubscription = merge(\n _sort.sortChange,\n _sort._stateChanges,\n ).subscribe(() => {\n if (this._isSorted()) {\n this._updateArrowDirection();\n }\n\n if (!this._isSorted() && this._viewState === 'active') {\n this._viewState = '';\n }\n\n cdr.markForCheck();\n });\n }\n\n ngOnInit() {\n if (!this.id && this._cdkColumnRef) {\n this.id = this._cdkColumnRef.name;\n }\n this._updateArrowDirection();\n this._viewState = this._isSorted() ? 'active' : '';\n this._sort.register(this);\n }\n\n ngOnDestroy() {\n this._sort.deregister(this);\n this._rerenderSubscription.unsubscribe();\n }\n\n _handleClick() {\n this._sort.sort(this);\n this._viewState = this._isSorted() ? 'active' : '';\n }\n\n _isSorted() {\n return (\n this._sort.active === this.id &&\n ['asc', 'desc'].includes(this._sort.direction)\n );\n }\n\n _updateArrowDirection() {\n this.arrowDirection = this._isSorted()\n ? this._sort.direction\n : this.start || this._sort.start;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SortHeaderComponent } from './sort-header.component';\nimport { SortDirective } from './sort.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [SortDirective, SortHeaderComponent],\n exports: [SortDirective, SortHeaderComponent],\n})\nexport class SortModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-button-group',\n templateUrl: './button-group.component.html',\n styleUrls: ['./button-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class ButtonGroupComponent {}\n","import { ValueOf } from '../types';\n\nexport const ButtonType = {\n Default: 'default',\n Primary: 'primary',\n Success: 'success',\n Warning: 'warning',\n Danger: 'danger',\n Text: 'text',\n Inline: 'inline',\n /**\n * represents default internally, @link https://github.com/angular/vscode-ng-language-service/issues/1147\n */\n Empty: '',\n /**\n * @deprecated use `ButtonType.Danger` instead\n */\n Error: 'danger',\n /**\n * @deprecated use `ButtonType.Default` instead\n */\n Info: 'default',\n} as const;\n\nexport type ButtonType = ValueOf<typeof ButtonType>;\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n Renderer2,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ComponentSize } from '../types';\n\nimport { ButtonType } from './button.types';\n\nconst prefix = 'aui-button--';\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: 'button[aui-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class ButtonComponent implements OnDestroy {\n @Input('aui-button')\n get type() {\n return this._type;\n }\n\n set type(val) {\n if (!val || val === this._type) {\n return;\n }\n this.renderer.removeClass(this.el.nativeElement, prefix + this._type);\n this.renderer.addClass(this.el.nativeElement, prefix + val);\n this._type = val;\n }\n\n @Input()\n get size() {\n return this._size;\n }\n\n set size(val) {\n // when change from other size to default\n if (!val) {\n val = ComponentSize.Medium;\n }\n if (this._size === val) {\n return;\n }\n this.renderer.removeClass(this.el.nativeElement, prefix + this._size);\n this.renderer.addClass(this.el.nativeElement, prefix + val);\n this._size = val;\n }\n\n @Input()\n get plain() {\n return this._plain;\n }\n\n set plain(val) {\n if (this._plain === val) {\n return;\n }\n this.switchAssertClass('isPlain', val);\n this._plain = val;\n }\n\n @Input()\n get loading() {\n return this._loading;\n }\n\n set loading(val) {\n if (this._loading === val) {\n return;\n }\n this.switchAssertClass('isLoading', val);\n this._loading = val;\n }\n\n @Input()\n get round() {\n return this._round;\n }\n\n set round(val) {\n if (this._round === val) {\n return;\n }\n this.switchAssertClass('isRound', val);\n this._round = val;\n }\n\n @Input()\n get square() {\n return this._square;\n }\n\n set square(val) {\n if (this._square === val) {\n return;\n }\n this.switchAssertClass('isSquare', val);\n this._square = val;\n }\n\n private _type: ButtonType = ButtonType.Default;\n private _size: ComponentSize = ComponentSize.Medium;\n private _plain = false;\n private _loading = false;\n private _round = false;\n private _square = false;\n\n constructor(\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n private readonly focusMonitor: FocusMonitor,\n ) {\n this.renderer.addClass(this.el.nativeElement, 'aui-button');\n this.renderer.addClass(this.el.nativeElement, prefix + this.type);\n this.renderer.addClass(this.el.nativeElement, prefix + this.size);\n\n this.focusMonitor.monitor(this.el.nativeElement, false);\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.el.nativeElement);\n }\n\n private switchAssertClass(className: string, val: boolean) {\n if (val) {\n this.renderer.addClass(this.el.nativeElement, className);\n } else {\n this.renderer.removeClass(this.el.nativeElement, className);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { ButtonGroupComponent } from './button-group/button-group.component';\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [ButtonComponent, ButtonGroupComponent],\n exports: [ButtonComponent, ButtonGroupComponent],\n})\nexport class ButtonModule {}\n","import { CdkScrollable } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Optional,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, fromEvent } from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n switchMap,\n throttleTime,\n} from 'rxjs/operators';\n\ntype TargetType = Element | Window | string;\n\n@Component({\n selector: 'aui-back-top',\n templateUrl: './back-top.component.html',\n styleUrls: ['./back-top.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class BackTopComponent {\n @Input()\n set visibilityHeight(val: number) {\n this._visibilityHeight = val;\n this.visibilityHeight$$.next(val);\n }\n\n get visibilityHeight() {\n return this._visibilityHeight;\n }\n\n @Input()\n set target(val: TargetType) {\n this._target = val;\n this.target$$.next(val);\n }\n\n get target() {\n return this._target;\n }\n\n @Output()\n click = new EventEmitter<Event>();\n\n private _visibilityHeight = 400;\n private readonly target$$ = new BehaviorSubject<TargetType>(this.target);\n private readonly visibilityHeight$$ = new BehaviorSubject<number>(\n this.visibilityHeight,\n );\n\n private _target: Element | Window | string;\n private _scrollTarget: Element | Window;\n\n constructor(@Optional() private readonly cdkScrollable: CdkScrollable) {}\n\n isDisplayed$ = combineLatest([\n this.target$$.asObservable().pipe(\n map(target => this.getTarget(target)),\n switchMap(target =>\n fromEvent(target, 'scroll').pipe(\n // use default scheduler\n throttleTime(50, undefined, { leading: true, trailing: true }),\n map(() => this.getTargetScrollTop(target)),\n ),\n ),\n ),\n this.visibilityHeight$$,\n ]).pipe(\n map(([scrollTop, visibilityHeight]) => scrollTop >= visibilityHeight),\n distinctUntilChanged(),\n );\n\n getTargetScrollTop(target: Element | Window) {\n if (target === window) {\n return document.documentElement.scrollTop;\n }\n return (target as HTMLElement).scrollTop;\n }\n\n handleClick(event: Event) {\n this._scrollTarget.scrollTo({ top: 0, behavior: 'smooth' });\n this.click.emit(event);\n }\n\n getTarget(target: TargetType) {\n if (typeof target === 'string') {\n target = document.querySelector(target);\n }\n // set default value for _target,if no input or selector fail\n if (!target) {\n target = this.cdkScrollable\n ? this.cdkScrollable.getElementRef().nativeElement\n : window;\n }\n this._scrollTarget = target;\n return target;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/icon.module';\n\nimport { BackTopComponent } from './back-top.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [BackTopComponent],\n exports: [BackTopComponent],\n})\nexport class BackTopModule {}\n","export enum TooltipType {\n Default = 'default',\n Primary = 'primary',\n Success = 'success',\n Warning = 'warning',\n Error = 'error',\n Info = 'info',\n Plain = 'plain',\n}\n\nexport enum TooltipTrigger {\n Hover = 'hover',\n Click = 'click',\n Focus = 'focus',\n Manual = 'manual',\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable, Subject, combineLatest } from 'rxjs';\nimport { map, publishReplay, refCount, startWith } from 'rxjs/operators';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { TooltipType } from './tooltip.types';\n\n@Component({\n selector: 'aui-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class TooltipComponent {\n text: string;\n template: TemplateRef<any>;\n bem: Bem = buildBem('aui-tooltip');\n\n inputContent$: Observable<string | TemplateRef<any>>;\n inputType$: Observable<TooltipType>;\n inputPosition$: Observable<string>;\n inputClass$: Observable<string>;\n inputContext$: Observable<any>;\n\n text$: Observable<string>;\n template$: Observable<TemplateRef<any>>;\n class$: Observable<string>;\n context$: Observable<any>;\n\n hover$ = new Subject<boolean>();\n\n constructor(\n public elRef: ElementRef<HTMLElement>,\n public cdr: ChangeDetectorRef,\n ) {}\n\n setupInputs(inputs: {\n inputContent$: Observable<string | TemplateRef<any>>;\n inputType$: Observable<TooltipType>;\n inputPosition$: Observable<string>;\n inputClass$: Observable<string>;\n inputContext$: Observable<any>;\n }) {\n Object.assign(this, inputs);\n this.text$ = this.inputContent$.pipe(\n map(val => {\n if (typeof val === 'string') {\n return val;\n }\n return '';\n }),\n publishReplay(1),\n refCount(),\n );\n this.template$ = this.inputContent$.pipe(\n map(val => {\n if (typeof val !== 'string') {\n return val;\n }\n return null;\n }),\n publishReplay(1),\n refCount(),\n );\n this.class$ = combineLatest([\n this.inputPosition$.pipe(startWith('top')),\n this.inputType$.pipe(startWith(TooltipType.Default)),\n this.inputClass$.pipe(startWith('')),\n ]).pipe(\n map(([inputPosition, inputType, inputClass]) => {\n const b = this.bem.block();\n const dir = inputPosition.split(' ')[0];\n return inputType === TooltipType.Plain\n ? `${b}--${dir} ${inputClass}`\n : `${b} ${b}--${inputType} ${b}--${dir} ${inputClass}`;\n }),\n publishReplay(1),\n refCount(),\n );\n this.context$ = this.inputContext$.pipe(publishReplay(1), refCount());\n }\n}\n","import {\n HorizontalConnectionPos,\n OriginConnectionPosition,\n OverlayConnectionPosition,\n VerticalConnectionPos,\n} from '@angular/cdk/overlay';\n\nexport function getOriginPosition(\n position: string,\n): { main: OriginConnectionPosition; fallback: OriginConnectionPosition } {\n const pos = position.split(' ');\n let isXDir;\n if (pos[0] === 'start' || pos[0] === 'end') {\n isXDir = true;\n }\n const main = {\n originX: (pos[isXDir ? 0 : 1] as HorizontalConnectionPos) || 'center',\n originY: (pos[isXDir ? 1 : 0] as VerticalConnectionPos) || 'center',\n };\n const { x, y } = invertPosition(main.originX, main.originY);\n const fallback = {\n originX: isXDir ? x : main.originX,\n originY: !isXDir ? y : main.originY,\n };\n return { main, fallback };\n}\n\nexport function getOverlayPosition(\n position: string,\n): { main: OverlayConnectionPosition; fallback: OverlayConnectionPosition } {\n const pos = position.split(' ');\n let isXDir;\n if (pos[0] === 'start' || pos[0] === 'end') {\n isXDir = true;\n }\n const horizontal =\n (pos[isXDir ? 0 : 1] as HorizontalConnectionPos) || 'center';\n const vertical = (pos[isXDir ? 1 : 0] as VerticalConnectionPos) || 'center';\n const main = {\n overlayX: isXDir ? invertHorizontal(horizontal) : horizontal,\n overlayY: !isXDir ? invertVertical(vertical) : vertical,\n };\n const { x, y } = invertPosition(main.overlayX, main.overlayY);\n const fallback = {\n overlayX: isXDir ? x : main.overlayX,\n overlayY: !isXDir ? y : main.overlayY,\n };\n return { main, fallback };\n}\n\nexport function invertHorizontal(dir: HorizontalConnectionPos) {\n if (dir === 'start') {\n dir = 'end';\n } else if (dir === 'end') {\n dir = 'start';\n }\n return dir;\n}\n\nexport function invertVertical(dir: VerticalConnectionPos) {\n if (dir === 'top') {\n dir = 'bottom';\n } else if (dir === 'bottom') {\n dir = 'top';\n }\n return dir;\n}\n\nexport function invertPosition(\n x: HorizontalConnectionPos,\n y: VerticalConnectionPos,\n): { x: HorizontalConnectionPos; y: VerticalConnectionPos } {\n return { x: invertHorizontal(x), y: invertVertical(y) };\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n OnDestroy,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { ReplaySubject, merge } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { sleep } from '../utils';\n\nimport { TooltipComponent } from './tooltip.component';\nimport { TooltipTrigger, TooltipType } from './tooltip.types';\nimport { getOriginPosition, getOverlayPosition } from './utils';\n\nexport interface TooltipInterface {\n content: string | TemplateRef<any>;\n context: any;\n class: string;\n type: TooltipType;\n position: string;\n trigger: TooltipTrigger;\n disabled: boolean;\n hideOnClick: boolean;\n show: EventEmitter<void>;\n hide: EventEmitter<void>;\n}\n\nexport const DISPLAY_DELAY = 50;\nexport const HIDDEN_DELAY = 150;\n\n@Directive()\n// tslint:disable-next-line: directive-class-suffix\nexport class BaseTooltip<T = any>\n implements TooltipInterface, AfterViewInit, OnDestroy {\n set content(value: string | TemplateRef<any>) {\n this.inputContent$$.next(value);\n }\n\n get context() {\n return this._context;\n }\n\n set context(value: T) {\n this._context = value;\n this.inputContext$$.next(value);\n }\n\n set class(value: string) {\n this.inputClass$$.next(value);\n }\n\n set type(value: TooltipType) {\n if (!value) {\n return;\n }\n this.inputType$$.next(value);\n }\n\n get position() {\n return this._position;\n }\n\n set position(value: string) {\n if (!value || value === this._position) {\n return;\n }\n this._position = value;\n this.inputPosition$$.next(value);\n this.disposeTooltip();\n }\n\n get trigger() {\n return this._trigger;\n }\n\n set trigger(value) {\n if (!value || value === this._trigger) {\n return;\n }\n this._trigger = value;\n this.disposeTooltip();\n this.ngZone.run(this.updateListeners, this);\n }\n\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value) {\n this._disabled = value;\n if (value) {\n this.disposeTooltip();\n }\n }\n\n hideOnClick = false;\n\n show = new EventEmitter<void>();\n hide = new EventEmitter<void>();\n\n protected overlayRef: OverlayRef;\n protected componentClass: ComponentType<any> = TooltipComponent;\n protected componentIns: TooltipComponent;\n protected hostHovered = false;\n protected tooltipHovered = false;\n protected listeners: Array<() => void> = [];\n protected unlistenBody: () => void;\n\n protected inputContent$$ = new ReplaySubject<string | TemplateRef<any>>(1);\n protected inputType$$ = new ReplaySubject<TooltipType>(1);\n protected inputPosition$$ = new ReplaySubject<string>(1);\n protected inputClass$$ = new ReplaySubject<string>(1);\n protected inputContext$$ = new ReplaySubject<any>(1);\n protected tooltipChanged$ = merge(\n this.inputContent$$,\n this.inputType$$,\n this.inputPosition$$,\n this.inputClass$$,\n this.inputContext$$,\n );\n\n protected _position = 'top';\n protected _trigger = TooltipTrigger.Hover;\n protected _disabled = false;\n protected _context: T;\n\n get isCreated() {\n return !!this.overlayRef;\n }\n\n constructor(\n protected overlay: Overlay,\n protected viewContainerRef: ViewContainerRef,\n protected elRef: ElementRef<HTMLInputElement>,\n protected renderer: Renderer2,\n protected cdr: ChangeDetectorRef,\n protected ngZone: NgZone,\n ) {\n this.tooltipChanged$.pipe(debounceTime(0)).subscribe(() => {\n this.updatePosition();\n });\n }\n\n createTooltip() {\n if (this.disabled || this.isCreated) {\n return;\n }\n this.overlayRef = this.createOverlay();\n const portal = new ComponentPortal(\n this.componentClass,\n this.viewContainerRef,\n );\n this.componentIns = this.overlayRef.attach(portal).instance;\n this.componentIns.setupInputs({\n inputClass$: this.inputClass$$.asObservable(),\n inputContent$: this.inputContent$$.asObservable(),\n inputContext$: this.inputContext$$.asObservable(),\n inputPosition$: this.inputPosition$$.asObservable(),\n inputType$: this.inputType$$.asObservable(),\n });\n\n if (this.trigger === TooltipTrigger.Hover) {\n this.componentIns.hover$.subscribe(hovered => {\n this.onTooltipHovered(hovered);\n });\n }\n if (\n this.trigger === TooltipTrigger.Hover ||\n this.trigger === TooltipTrigger.Click\n ) {\n this.unlistenBody = this.renderer.listen(\n 'body',\n 'click',\n this.onBodyClick.bind(this),\n );\n }\n\n this.show.emit();\n\n this.cdr.markForCheck();\n }\n\n disposeTooltip() {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.componentIns = null;\n this.tooltipHovered = false;\n if (this.unlistenBody) {\n this.unlistenBody();\n this.unlistenBody = null;\n }\n this.hide.emit();\n }\n }\n\n toggleTooltip() {\n if (this.isCreated) {\n this.disposeTooltip();\n } else {\n this.createTooltip();\n }\n }\n\n updatePosition() {\n if (this.overlayRef) {\n this.overlayRef.updatePosition();\n }\n }\n\n ngAfterViewInit() {\n if (this.trigger === TooltipTrigger.Hover) {\n this.updateListeners();\n }\n }\n\n ngOnDestroy() {\n this.disposeTooltip();\n this.clearListeners();\n }\n\n protected updateListeners() {\n this.clearListeners();\n switch (this.trigger) {\n case TooltipTrigger.Click:\n this.listeners.push(\n this.renderer.listen(\n this.elRef.nativeElement,\n 'click',\n this.onClick.bind(this) as () => void,\n ),\n );\n break;\n case TooltipTrigger.Hover:\n this.listeners.push(\n this.renderer.listen(\n this.elRef.nativeElement,\n 'mouseenter',\n this.onMouseEnter.bind(this) as () => void,\n ),\n this.renderer.listen(\n this.elRef.nativeElement,\n 'mouseleave',\n this.onMouseLeave.bind(this) as () => void,\n ),\n );\n break;\n case TooltipTrigger.Focus:\n this.listeners.push(\n this.renderer.listen(\n this.elRef.nativeElement,\n 'focus',\n this.onFocus.bind(this),\n ),\n this.renderer.listen(\n this.elRef.nativeElement,\n 'blur',\n this.onBlur.bind(this),\n ),\n );\n break;\n case TooltipTrigger.Manual:\n break;\n }\n }\n\n protected clearListeners() {\n this.listeners.forEach(unListen => {\n unListen();\n });\n this.listeners = [];\n }\n\n protected createOverlay(): OverlayRef {\n const originPosition = getOriginPosition(this.position);\n const overlayPosition = getOverlayPosition(this.position);\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elRef)\n .withGrowAfterOpen(true)\n .withPositions([\n { ...originPosition.main, ...overlayPosition.main },\n { ...originPosition.fallback, ...overlayPosition.fallback },\n ]);\n\n const scrollStrategy = this.overlay.scrollStrategies.reposition();\n\n const config = new OverlayConfig({\n positionStrategy,\n scrollStrategy,\n });\n return this.overlay.create(config);\n }\n\n protected async onMouseEnter() {\n this.hostHovered = true;\n if (!this.isCreated) {\n await sleep(DISPLAY_DELAY);\n if (this.hostHovered) {\n this.createTooltip();\n }\n }\n }\n\n protected async onMouseLeave() {\n this.hostHovered = false;\n await sleep(HIDDEN_DELAY);\n if (!this.tooltipHovered && !this.hostHovered) {\n this.disposeTooltip();\n }\n }\n\n protected async onTooltipHovered(hovered: boolean) {\n this.tooltipHovered = hovered;\n if (!hovered) {\n await sleep(HIDDEN_DELAY);\n if (!this.tooltipHovered && !this.hostHovered) {\n this.disposeTooltip();\n }\n }\n }\n\n protected onClick() {\n this.toggleTooltip();\n }\n\n protected onBodyClick(event: Event) {\n if (\n !this.elRef.nativeElement.contains(event.target as Node) &&\n (this.hideOnClick ||\n !this.componentIns.elRef.nativeElement.contains(event.target as Node))\n ) {\n this.disposeTooltip();\n }\n }\n\n protected onFocus() {\n this.createTooltip();\n }\n\n protected onBlur() {\n this.disposeTooltip();\n }\n}\n","import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';\n\nimport { BaseTooltip } from './base-tooltip';\n\n@Directive({\n selector: '[auiTooltipActive]',\n})\nexport class TooltipActiveDirective {\n @Input('auiTooltipActive')\n customClass: string | string[];\n\n constructor(\n tooltipDirective: BaseTooltip,\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n ) {\n tooltipDirective.show.subscribe(() => {\n this.addClass();\n });\n tooltipDirective.hide.subscribe(() => {\n this.removeClass();\n });\n }\n\n private addClass() {\n const classArr =\n typeof this.customClass === 'string'\n ? this.customClass.split(' ')\n : this.customClass;\n classArr.forEach(name => {\n this.renderer.addClass(this.el.nativeElement, name);\n });\n }\n\n private removeClass() {\n const classArr =\n typeof this.customClass === 'string'\n ? this.customClass.split(' ')\n : this.customClass;\n classArr.forEach(name => {\n this.renderer.removeClass(this.el.nativeElement, name);\n });\n }\n}\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\n\n/**\n * Texts to render on the code editor.\n */\n@Injectable()\nexport class TooltipCopyIntl {\n copyTip = 'Click to copy';\n\n copySuccessTip = 'Copied to clipboard';\n\n copyFailTip = 'Copy failed';\n}\n\nexport function TOOLTIP_COPY_INTL_PROVIDER_FACTORY(\n parentIntl: TooltipCopyIntl,\n) {\n return parentIntl || new TooltipCopyIntl();\n}\n\n/** @docs-private */\nexport const TOOLTIP_COPY_INTL_INTL_PROVIDER = {\n // If there is already an CodeEditorIntl available, use that. Otherwise, provide a new one.\n provide: TooltipCopyIntl,\n deps: [[new Optional(), new SkipSelf(), TooltipCopyIntl]],\n useFactory: TOOLTIP_COPY_INTL_PROVIDER_FACTORY,\n};\n","import { Overlay } from '@angular/cdk/overlay';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n NgZone,\n OnInit,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\nimport { writeText } from 'clipboard-polyfill';\n\nimport { BaseTooltip } from './base-tooltip';\nimport { TooltipCopyIntl } from './tooltip-intl';\n\n@Directive({\n selector: '[auiTooltipCopy]',\n inputs: ['position:auiTooltipPosition', 'disabled:auiTooltipDisabled'],\n})\nexport class TooltipCopyDirective extends BaseTooltip implements OnInit {\n @HostBinding('class.aui-tooltip-copy')\n className = true;\n\n @Input()\n get auiTooltipCopy() {\n return this._copyText || this.elRef.nativeElement.textContent;\n }\n\n set auiTooltipCopy(value: string) {\n this._copyText = value;\n }\n\n @Input()\n get auiTooltipCopyTip() {\n return this._copyTip || this.toolTipIntl.copyTip;\n }\n\n set auiTooltipCopyTip(value: string) {\n this._copyTip = value;\n }\n\n @Input()\n get auiTooltipCopySuccessTip() {\n return this._copySuccessTip || this.toolTipIntl.copySuccessTip;\n }\n\n set auiTooltipCopySuccessTip(value: string) {\n this._copySuccessTip = value;\n }\n\n @Input()\n get auiTooltipCopyFailTip() {\n return this._copyFailTip || this.toolTipIntl.copyFailTip;\n }\n\n set auiTooltipCopyFailTip(value: string) {\n this._copyFailTip = value;\n }\n\n private _copyText: string;\n private _copyTip: string;\n private _copySuccessTip: string;\n private _copyFailTip: string;\n\n constructor(\n overlay: Overlay,\n viewContainerRef: ViewContainerRef,\n elRef: ElementRef,\n renderer: Renderer2,\n cdr: ChangeDetectorRef,\n ngZone: NgZone,\n private readonly toolTipIntl: TooltipCopyIntl,\n ) {\n super(overlay, viewContainerRef, elRef, renderer, cdr, ngZone);\n }\n\n ngOnInit() {\n this.content = this.auiTooltipCopyTip;\n this.hide.subscribe(() => {\n this.content = this.auiTooltipCopyTip;\n });\n }\n\n @HostListener('click')\n async onSourceClick() {\n if (!this.disabled) {\n try {\n await writeText(this.auiTooltipCopy);\n this.content = this.auiTooltipCopySuccessTip;\n } catch {\n this.content = this.auiTooltipCopyFailTip;\n }\n }\n }\n}\n","// tslint:disable: no-output-rename\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { BaseTooltip } from './base-tooltip';\n\n@Directive({\n selector: '[auiTooltip]',\n providers: [\n {\n provide: BaseTooltip,\n useExisting: TooltipDirective,\n },\n ],\n exportAs: 'auiTooltip',\n inputs: [\n 'content:auiTooltip',\n 'context:auiTooltipContext',\n 'class:auiTooltipClass',\n 'type:auiTooltipType',\n 'position:auiTooltipPosition',\n 'trigger:auiTooltipTrigger',\n 'disabled:auiTooltipDisabled',\n ],\n})\nexport class TooltipDirective extends BaseTooltip {\n @Input('auiTooltipHideOnClick')\n hideOnClick: boolean;\n\n @Output('auiTooltipShow')\n show: EventEmitter<void>;\n\n @Output('auiTooltipHide')\n hide: EventEmitter<void>;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n overlay: Overlay,\n viewContainerRef: ViewContainerRef,\n elRef: ElementRef,\n renderer: Renderer2,\n cdr: ChangeDetectorRef,\n ngZone: NgZone,\n ) {\n super(overlay, viewContainerRef, elRef, renderer, cdr, ngZone);\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TooltipActiveDirective } from './tooltip-active.directive';\nimport { TooltipCopyDirective } from './tooltip-copy.directive';\nimport { TOOLTIP_COPY_INTL_INTL_PROVIDER } from './tooltip-intl';\nimport { TooltipComponent } from './tooltip.component';\nimport { TooltipDirective } from './tooltip.directive';\n\n@NgModule({\n imports: [CommonModule, OverlayModule],\n declarations: [\n TooltipDirective,\n TooltipComponent,\n TooltipActiveDirective,\n TooltipCopyDirective,\n ],\n entryComponents: [TooltipComponent],\n exports: [TooltipDirective, TooltipActiveDirective, TooltipCopyDirective],\n providers: [TOOLTIP_COPY_INTL_INTL_PROVIDER],\n})\nexport class TooltipModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-section',\n templateUrl: './section.component.html',\n styleUrls: ['./section.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class SectionComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class CardComponent {\n @Input() divider = true;\n}\n","// tslint:disable: no-host-metadata-property\nimport { Directive } from '@angular/core';\n\n@Directive({\n selector: '[auiCardHeader]',\n host: {\n '[class.aui-card__header]': 'true',\n },\n})\nexport class CardHeaderDirective {}\n\n@Directive({\n selector: '[auiCardFooter]',\n host: {\n '[class.aui-card__footer]': 'true',\n },\n})\nexport class CardFooterDirective {}\n\n@Directive({\n selector: '[auiSectionTitle]',\n host: {\n '[class.aui-section__title]': 'true',\n },\n})\nexport class SectionTitleDirective {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CardComponent } from './card.component';\nimport {\n CardFooterDirective,\n CardHeaderDirective,\n SectionTitleDirective,\n} from './helper-directives';\nimport { SectionComponent } from './section.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n CardComponent,\n CardHeaderDirective,\n CardFooterDirective,\n SectionComponent,\n SectionTitleDirective,\n ],\n exports: [\n CardComponent,\n CardHeaderDirective,\n CardFooterDirective,\n SectionComponent,\n SectionTitleDirective,\n ],\n})\nexport class CardModule {}\n","import {\n CdkScrollable,\n ComponentType,\n GlobalPositionStrategy,\n OverlayRef,\n ScrollDispatcher,\n} from '@angular/cdk/overlay';\nimport { NgZone } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { DialogComponent } from './dialog.component';\n\nlet uniqueId = 0;\n\nexport class DialogRef<T = ComponentType<any>, R = any> {\n componentInstance?: T;\n readonly id = `aui-dialog-${uniqueId++}`;\n\n private readonly afterOpen$ = new Subject<void>();\n private readonly afterClosed$ = new Subject<R>();\n\n private readonly scrollable: CdkScrollable;\n\n constructor(\n private readonly overlayRef: OverlayRef,\n public dialogInstance: DialogComponent,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone,\n ) {\n dialogInstance.id = this.id;\n this.scrollable = new CdkScrollable(\n { nativeElement: overlayRef.overlayElement },\n scrollDispatcher,\n ngZone,\n );\n this.scrollable.ngOnInit();\n }\n\n close(result: R = null): void {\n this.scrollable.ngOnDestroy();\n this.overlayRef.detachBackdrop();\n this.overlayRef.dispose();\n this.afterClosed$.next(result);\n this.afterClosed$.complete();\n }\n\n afterOpen(): Observable<void> {\n return this.afterOpen$.asObservable();\n }\n\n afterClosed(): Observable<R> {\n return this.afterClosed$.asObservable();\n }\n\n updatePosition(): this {\n this.getPositionStrategy().top('0').left('0');\n this.overlayRef.updatePosition();\n return this;\n }\n\n updateSize(): this {\n this.getPositionStrategy();\n this.overlayRef.updatePosition();\n return this;\n }\n\n private getPositionStrategy(): GlobalPositionStrategy {\n return this.overlayRef.getConfig()\n .positionStrategy as GlobalPositionStrategy;\n }\n}\n","import { Observable } from 'rxjs';\n\nexport enum DialogSize {\n Small = 'small',\n Medium = 'medium',\n Big = 'big',\n Large = 'large',\n Fullscreen = 'fullscreen',\n FitContent = 'fit-content',\n}\n\nexport enum ConfirmType {\n Primary = 'primary',\n Success = 'success',\n Warning = 'warning',\n Danger = 'danger',\n}\n\nexport type PromiseExecutor<T> = (\n resolve: (result?: T | PromiseLike<T>) => void,\n reject: (reason?: unknown) => void,\n) => void;\n\nexport type CustomBeforeAction<T> = () => PromiseLike<T> | Observable<T>;\n\nexport type BeforeAction<T> = PromiseExecutor<T> | CustomBeforeAction<T>;\n","import { BeforeAction, ConfirmType } from '../dialog.types';\n\nexport class ConfirmDialogConfig<T = unknown, R = unknown> {\n title: string;\n content?: string;\n cancelButton? = true;\n confirmType?: ConfirmType = ConfirmType.Primary;\n confirmText? = 'OK';\n cancelText? = 'Cancel';\n\n beforeConfirm?: BeforeAction<T>;\n beforeCancel?: BeforeAction<R>;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { Bem, buildBem } from '../../utils';\nimport { DialogRef } from '../dialog-ref';\nimport {\n BeforeAction,\n ConfirmType,\n CustomBeforeAction,\n PromiseExecutor,\n} from '../dialog.types';\n\nimport { ConfirmDialogConfig } from './confirm-dialog-config';\n\n@Component({\n selector: 'aui-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class ConfirmDialogComponent<T = unknown, R = unknown> {\n bem: Bem = buildBem('aui-confirm-dialog');\n\n config: ConfirmDialogConfig<T, R>;\n\n waitConfirm = false;\n waitCancel = false;\n\n constructor(\n private readonly dialogRef: DialogRef<any>,\n private readonly cdr: ChangeDetectorRef,\n ) {}\n\n setConfig(config: ConfirmDialogConfig<T, R>) {\n this.config = { ...new ConfirmDialogConfig(), ...config };\n }\n\n iconMap(type: ConfirmType) {\n switch (type) {\n case ConfirmType.Success:\n return 'check_circle_s';\n case ConfirmType.Danger:\n return 'exclamation_triangle_s';\n case ConfirmType.Primary:\n case ConfirmType.Warning:\n default:\n return 'exclamation_circle_s';\n }\n }\n\n async confirm() {\n if (!this.config.beforeConfirm) {\n this.dialogRef.close({ confirm: true, result: null });\n return;\n }\n this.waitConfirm = true;\n try {\n const result = await this.toPromise(this.config.beforeConfirm);\n this.dialogRef.close({ confirm: true, result });\n } catch {\n } finally {\n this.waitConfirm = false;\n this.cdr.markForCheck();\n }\n }\n\n async cancel() {\n if (!this.config.beforeCancel) {\n this.dialogRef.close({ confirm: false, result: null });\n return;\n }\n this.waitCancel = true;\n try {\n const result = await this.toPromise(this.config.beforeCancel);\n this.dialogRef.close({ confirm: false, result });\n } catch {\n } finally {\n this.waitCancel = false;\n this.cdr.markForCheck();\n }\n }\n\n private toPromise<T>(beforeAction: BeforeAction<T>) {\n if (beforeAction.length) {\n return new Promise(beforeAction as PromiseExecutor<T>);\n }\n\n const result = (beforeAction as CustomBeforeAction<T>)();\n\n if (result instanceof Observable) {\n return result.pipe(first()).toPromise();\n }\n\n return result;\n }\n}\n","import { ViewContainerRef } from '@angular/core';\n\nimport { DialogSize } from './dialog.types';\n\nexport class DialogConfig<D = any> {\n id?: number;\n viewContainerRef?: ViewContainerRef;\n data?: D;\n size?: DialogSize = DialogSize.Big;\n hasBackdrop? = true;\n fitViewport? = false;\n}\n","export function throwDialogContentAlreadyAttachedError() {\n throw new Error(\n 'Attempting to attach dialog content after content is already attached',\n );\n}\n","import { ElementRef } from '@angular/core';\n\nimport { DialogRef } from '../dialog-ref';\n\nexport function getClosestDialog(\n element: ElementRef,\n openDialogs: Array<DialogRef<any>>,\n) {\n let parent = (element.nativeElement as HTMLElement).parentElement;\n\n while (parent?.tagName !== 'AUI-DIALOG') {\n parent = parent.parentElement;\n }\n\n return parent\n ? openDialogs.find(dialog => dialog.id === parent.dataset.id)\n : null;\n}\n\nexport * from './errors';\n","import {\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { DialogConfig } from './dialog-config';\nimport { throwDialogContentAlreadyAttachedError } from './utils';\n\n@Component({\n selector: 'aui-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n encapsulation: ViewEncapsulation.None,\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n preserveWhitespaces: false,\n})\nexport class DialogComponent {\n @ViewChild(CdkPortalOutlet, { static: true })\n portalOutlet: CdkPortalOutlet;\n\n bem: Bem = buildBem('aui-dialog');\n\n config: DialogConfig;\n\n hidden = false;\n\n get id() {\n return this._id;\n }\n\n set id(value) {\n this.elementRef.nativeElement.dataset.id = value;\n }\n\n private readonly _id: string;\n\n get rootClass() {\n return `${this.bem.block(this.config.size)} ${\n this.config.fitViewport ? this.bem.modifier('fit-viewport') : ''\n }`;\n }\n\n get customStyle() {\n return this.hidden\n ? {\n display: 'none',\n }\n : {};\n }\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\n\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n if (this.portalOutlet.hasAttached()) {\n throwDialogContentAlreadyAttachedError();\n }\n this.blurActiveElement();\n return this.portalOutlet.attachComponentPortal(portal);\n }\n\n attachTemplatePortal<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T> {\n if (this.portalOutlet.hasAttached()) {\n throwDialogContentAlreadyAttachedError();\n }\n this.blurActiveElement();\n return this.portalOutlet.attachTemplatePortal(portal);\n }\n\n private blurActiveElement() {\n if (document) {\n (document.activeElement as HTMLElement).blur();\n }\n }\n}\n","import {\n Overlay,\n OverlayConfig,\n OverlayRef,\n ScrollDispatcher,\n} from '@angular/cdk/overlay';\nimport {\n ComponentPortal,\n ComponentType,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n Injectable,\n InjectionToken,\n Injector,\n NgZone,\n TemplateRef,\n} from '@angular/core';\n\nimport { ConfirmDialogConfig } from './confirm-dialog/confirm-dialog-config';\nimport { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\nimport { DialogConfig } from './dialog-config';\nimport { DialogRef } from './dialog-ref';\nimport { DialogComponent } from './dialog.component';\nimport { DialogSize } from './dialog.types';\n\nexport const DIALOG_DATA = new InjectionToken<any>('aui-dialog-data');\n\n@Injectable()\nexport class DialogService {\n static readonly DIALOG_OVERLAY_PANE_CLASS = 'aui-dialog-overlay-pane';\n static readonly DIALOG_BACKDROP_CLASS = 'aui-dialog-backdrop';\n\n openDialogs: Array<DialogRef<any>> = [];\n\n constructor(\n private readonly overlay: Overlay,\n private readonly injector: Injector,\n private readonly scrollDispatcher: ScrollDispatcher,\n private readonly ngZone: NgZone,\n ) {}\n\n open<T, D = any, R = any>(\n compOrTempRef: ComponentType<T> | TemplateRef<T>,\n config: DialogConfig<D> = null,\n ): DialogRef<T, R> {\n this.hiddenPrevDialog();\n\n config = { ...new DialogConfig(), ...config };\n\n const overlayRef = this.createOverlay(config);\n const dialogIns = this.attachDialog(overlayRef, config);\n const dialogRef = this.attachDialogContent<T, D, R>(\n compOrTempRef,\n dialogIns,\n overlayRef,\n config,\n );\n this.openDialogs.push(dialogRef);\n dialogRef.updatePosition().updateSize();\n dialogRef.afterClosed().subscribe(() => {\n this.removeDialog(dialogRef);\n this.showPrevDialog();\n });\n\n return dialogRef;\n }\n\n confirm<T = unknown, R = unknown>(\n config: ConfirmDialogConfig<T, R>,\n ): Promise<T> {\n const dialogRef = this.open<\n ConfirmDialogComponent<T, R>,\n void,\n { confirm: boolean; result: T | R }\n >(ConfirmDialogComponent, {\n size: DialogSize.FitContent,\n });\n dialogRef.componentInstance.setConfig(config);\n return new Promise((resolve, reject) => {\n dialogRef.afterClosed().subscribe(action => {\n if (action.confirm) {\n resolve(action.result as T);\n } else {\n // eslint-disable-next-line prefer-promise-reject-errors\n reject(action.result as R);\n }\n });\n });\n }\n\n closeAll() {\n this.openDialogs.forEach(dialogRef => {\n dialogRef.close();\n });\n }\n\n private hiddenPrevDialog() {\n if (this.openDialogs.length > 0) {\n this.openDialogs[\n this.openDialogs.length - 1\n ].dialogInstance.hidden = true;\n }\n }\n\n private showPrevDialog() {\n if (this.openDialogs.length > 0) {\n this.openDialogs[\n this.openDialogs.length - 1\n ].dialogInstance.hidden = false;\n }\n }\n\n private createOverlay(config: DialogConfig): OverlayRef {\n const overlayConfig = this.getOverlayConfig(config);\n return this.overlay.create(overlayConfig);\n }\n\n private getOverlayConfig(dialogConfig: DialogConfig): OverlayConfig {\n return {\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n hasBackdrop: dialogConfig.hasBackdrop && !this.openDialogs.length,\n backdropClass: DialogService.DIALOG_BACKDROP_CLASS,\n panelClass: DialogService.DIALOG_OVERLAY_PANE_CLASS,\n width: '100vw',\n height: '100vh',\n };\n }\n\n private attachDialog(\n overlayRef: OverlayRef,\n config: DialogConfig,\n ): DialogComponent {\n const dialogPortal = new ComponentPortal(\n DialogComponent,\n config.viewContainerRef,\n );\n const dialogRef = overlayRef.attach(dialogPortal);\n dialogRef.instance.config = config;\n return dialogRef.instance;\n }\n\n private attachDialogContent<T, D, R>(\n compOrTempRef: ComponentType<T> | TemplateRef<T>,\n dialogIns: DialogComponent,\n overlayRef: OverlayRef,\n config: DialogConfig<D>,\n ): DialogRef<T, R> {\n const dialogRef = new DialogRef<T, R>(\n overlayRef,\n dialogIns,\n this.scrollDispatcher,\n this.ngZone,\n );\n\n if (compOrTempRef instanceof TemplateRef) {\n dialogIns.attachTemplatePortal(\n new TemplatePortal(compOrTempRef, null, {\n $implicit: config.data,\n } as any),\n );\n } else {\n const injector = this.createInjector(config, dialogRef, dialogIns);\n const contentRef = dialogIns.attachComponentPortal<T>(\n new ComponentPortal(compOrTempRef, null, injector),\n );\n dialogRef.componentInstance = contentRef.instance;\n }\n return dialogRef;\n }\n\n private createInjector<T>(\n config: DialogConfig,\n dialogRef: DialogRef<T>,\n dialogIns: DialogComponent,\n ): Injector {\n const userInjector = config?.viewContainerRef?.injector;\n return Injector.create({\n providers: [\n {\n provide: DialogRef,\n useValue: dialogRef,\n },\n {\n provide: DIALOG_DATA,\n useValue: config.data || dialogIns,\n },\n ],\n parent: userInjector || this.injector,\n });\n }\n\n private removeDialog(dialogRef: DialogRef<any>) {\n const index = this.openDialogs.indexOf(dialogRef);\n this.openDialogs.splice(index, 1);\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnInit,\n Optional,\n} from '@angular/core';\n\nimport { DialogRef } from '../dialog-ref';\nimport { DialogService } from '../dialog.service';\nimport { getClosestDialog } from '../utils';\n\n@Directive({\n selector: 'button[auiDialogClose]',\n exportAs: 'auiDialogClose',\n})\nexport class DialogCloseDirective implements OnInit {\n @Input('auiDialogClose')\n result: any;\n\n constructor(\n @Optional() public dialogRef: DialogRef<any>,\n private readonly elementRef: ElementRef,\n private readonly dialogService: DialogService,\n ) {}\n\n ngOnInit() {\n if (!this.dialogRef) {\n this.dialogRef = getClosestDialog(\n this.elementRef,\n this.dialogService.openDialogs,\n );\n }\n }\n\n @HostListener('click')\n closeDialog() {\n this.dialogRef.close(this.result);\n }\n}\n","import { Directionality } from '@angular/cdk/bidi';\nimport { CdkScrollable, ScrollDispatcher } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n NgZone,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../../utils';\n\n@Component({\n selector: 'aui-dialog-content',\n templateUrl: './dialog-content.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class DialogContentComponent extends CdkScrollable {\n bem: Bem = buildBem('aui-dialog');\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n elementRef: ElementRef<HTMLElement>,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone,\n dir?: Directionality,\n ) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../../utils';\n\n@Component({\n selector: 'aui-dialog-footer',\n templateUrl: './dialog-footer.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class DialogFooterComponent {\n bem: Bem = buildBem('aui-dialog');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../../utils';\nimport { DialogRef } from '../dialog-ref';\nimport { DialogService } from '../dialog.service';\nimport { getClosestDialog } from '../utils';\n\n@Component({\n selector: 'aui-dialog-header',\n templateUrl: './dialog-header.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class DialogHeaderComponent implements OnInit {\n bem: Bem = buildBem('aui-dialog');\n\n @Input()\n divider = true;\n\n @Input()\n closeable = true;\n\n @Input()\n result: any = false;\n\n constructor(\n @Optional() public dialogRef: DialogRef<any>,\n private readonly elementRef: ElementRef,\n private readonly dialogService: DialogService,\n ) {}\n\n ngOnInit() {\n if (!this.dialogRef) {\n this.dialogRef = getClosestDialog(\n this.elementRef,\n this.dialogService.openDialogs,\n );\n }\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';\n\nimport { ButtonModule } from '../button/public-api';\nimport { IconModule } from '../icon/public-api';\n\nimport { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\nimport { DialogCloseDirective } from './dialog-content/dialog-close.directive';\nimport { DialogContentComponent } from './dialog-content/dialog-content.component';\nimport { DialogFooterComponent } from './dialog-content/dialog-footer.component';\nimport { DialogHeaderComponent } from './dialog-content/dialog-header.component';\nimport { DialogComponent } from './dialog.component';\nimport { DialogService } from './dialog.service';\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n PortalModule,\n IconModule,\n ButtonModule,\n ],\n declarations: [\n DialogComponent,\n DialogHeaderComponent,\n DialogContentComponent,\n DialogFooterComponent,\n DialogCloseDirective,\n ConfirmDialogComponent,\n ],\n exports: [\n DialogComponent,\n DialogHeaderComponent,\n DialogContentComponent,\n DialogFooterComponent,\n DialogCloseDirective,\n ],\n entryComponents: [DialogComponent, ConfirmDialogComponent],\n providers: [DialogService],\n})\nexport class DialogModule {}\n","import { ValueOf } from '../types';\n\nexport const LabelPosition = {\n Top: 'top',\n Left: 'left',\n Right: 'right',\n} as const;\n\nexport const FormItemWidth = {\n Small: 'small',\n Medium: 'medium',\n Large: 'large',\n} as const;\n\nexport type LabelPosition = ValueOf<typeof LabelPosition>;\n\nexport type FormItemWidth = ValueOf<typeof FormItemWidth>;\n","import { Directive, Inject, Input, Optional } from '@angular/core';\nimport { ControlContainer, FormGroupDirective, NgForm } from '@angular/forms';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { LabelPosition } from './form.types';\n\n@Directive({\n selector: 'form[auiForm]',\n exportAs: 'auiForm',\n host: {\n '[class.aui-form]': 'true',\n '[class.aui-form--inline]': 'inline',\n '[class.ng-submitted]': 'ngClassSubmitted',\n },\n})\nexport class FormDirective {\n get ngClassSubmitted() {\n return (this.controlContainer?.formDirective as NgForm | FormGroupDirective)\n .submitted;\n }\n\n private readonly labelWidth$$ = new BehaviorSubject<string>(null);\n private readonly labelPosition$$ = new BehaviorSubject<LabelPosition>(\n LabelPosition.Right,\n );\n\n private readonly emptyAddon$$ = new BehaviorSubject<boolean>(false);\n\n @Input('auiFormLabelWidth')\n set labelWidth(val: string) {\n this.labelWidth$$.next(val);\n }\n\n @Input('auiFormLabelPosition')\n set labelPosition(val: LabelPosition) {\n this.labelPosition$$.next(val);\n }\n\n @Input('auiFormEmptyAddon')\n set emptyAddon(val: boolean) {\n this.emptyAddon$$.next(val);\n }\n\n @Input('auiFormInline')\n inline = false;\n\n labelWidth$: Observable<string> = this.labelWidth$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n labelPosition$: Observable<LabelPosition> = this.labelPosition$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n emptyAddon$: Observable<boolean> = this.emptyAddon$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n constructor(\n @Inject(ControlContainer)\n @Optional()\n public controlContainer?: ControlContainer,\n ) {}\n}\n","// tslint:disable: no-host-metadata-property\nimport { Directive, Input } from '@angular/core';\n\nimport { coerceAttrBoolean } from '../utils';\n\n@Directive({\n selector: 'label[auiFormItemLabel]',\n host: {\n '[class.aui-form-item__label]': 'true',\n },\n})\nexport class FormItemLabelDirective {}\n\n@Directive({\n selector: '[auiFormItemHint]',\n host: {\n '[class.aui-form-item__hint]': 'true',\n },\n})\nexport class FormItemHintDirective {}\n\n@Directive({\n selector: '[auiFormItemAddon]',\n host: {\n '[class.aui-form-item__addon]': 'true',\n },\n})\nexport class FormItemAddonDirective {}\n\n@Directive({\n selector: '[auiFormItemError]',\n host: {\n '[class.aui-form-item__error]': 'true',\n },\n})\nexport class FormItemErrorDirective {}\n\n@Directive({\n selector: '[auiFormItemControl]',\n host: {\n '[class.aui-form-item__control]': 'true',\n },\n})\nexport class FormItemControlDirective {\n @Input()\n get required() {\n return this._required;\n }\n\n set required(val: boolean | '') {\n this._required = coerceAttrBoolean(val);\n }\n\n private _required = false;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { Observable, Subject, combineLatest, merge } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n takeUntil,\n} from 'rxjs/operators';\n\nimport { Bem, buildBem } from '../../utils';\nimport { FormDirective } from '../form.directive';\nimport { FormItemWidth, LabelPosition } from '../form.types';\nimport {\n FormItemAddonDirective,\n FormItemControlDirective,\n FormItemErrorDirective,\n FormItemHintDirective,\n FormItemLabelDirective,\n} from '../helper-directives';\n\n@Component({\n selector: 'aui-form-item',\n templateUrl: './form-item.component.html',\n styleUrls: ['./form-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class FormItemComponent implements AfterContentInit, OnDestroy {\n bem: Bem = buildBem('aui-form-item');\n\n @Input()\n labelWidth: string = null;\n\n @Input()\n width: FormItemWidth;\n\n @Input()\n labelPosition: LabelPosition = LabelPosition.Right;\n\n @Input()\n emptyAddon = false;\n\n @ContentChild(FormItemLabelDirective, { static: false })\n itemLabel: FormItemLabelDirective;\n\n @ContentChild(FormItemControlDirective, { static: false })\n itemControl: FormItemControlDirective;\n\n @ContentChildren(NgControl, { descendants: true })\n ngControls: QueryList<NgControl>;\n\n @ContentChildren(FormItemAddonDirective)\n addons: QueryList<FormItemAddonDirective>;\n\n @ContentChildren(FormItemErrorDirective)\n errors: QueryList<FormItemErrorDirective>;\n\n @ContentChildren(FormItemHintDirective)\n hints: QueryList<FormItemHintDirective>;\n\n hasError$: Observable<boolean>;\n errorCount$: Observable<number>;\n hintCount$: Observable<number>;\n parentForm: NgForm | FormGroupDirective;\n\n private readonly destroy$$ = new Subject<void>();\n\n get formItemWidthClass() {\n return this.width\n ? this.bem.element('content', { [this.width]: true })\n : '';\n }\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n @Optional() private readonly auiForm: FormDirective,\n @Optional() ngForm: NgForm,\n @Optional() formGroup: FormGroupDirective,\n ) {\n this.parentForm = formGroup || ngForm;\n if (this.auiForm) {\n this.subscribeInputsFromParent();\n }\n }\n\n ngAfterContentInit() {\n this.hasError$ = this.ngControls.changes.pipe(\n startWith(this.ngControls),\n switchMap((controls: QueryList<NgControl>) =>\n combineLatest(\n controls.map(control => this.mapControlStatus(control)),\n ).pipe(map(statuses => statuses.some(status => status))),\n ),\n );\n\n this.errorCount$ = this.errors.changes.pipe(\n map(errors => errors.length),\n startWith(this.errors.length),\n );\n\n this.hintCount$ = this.hints.changes.pipe(\n map(hints => hints.length),\n startWith(this.hints.length),\n );\n }\n\n subscribeInputsFromParent() {\n this.auiForm.labelWidth$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(width => {\n this.labelWidth = width;\n this.cdr.markForCheck();\n });\n this.auiForm.labelPosition$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(position => {\n this.labelPosition = position;\n this.cdr.markForCheck();\n });\n this.auiForm.emptyAddon$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(emptyAddon => {\n this.emptyAddon = emptyAddon;\n this.cdr.markForCheck();\n });\n }\n\n mapControlStatus(control: NgControl) {\n return (this.parentForm\n ? combineLatest([\n control.statusChanges.pipe(startWith(control.status)),\n merge(\n this.parentForm.statusChanges.pipe(\n startWith(this.parentForm.status),\n ),\n this.parentForm.ngSubmit,\n ),\n ]).pipe(map(([status]: string[]) => status))\n : control.statusChanges\n ).pipe(\n map(\n (status: string) =>\n status === 'INVALID' && (control.dirty || this.parentForm?.submitted),\n ),\n publishReplay(1),\n refCount(),\n );\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FormItemComponent } from './form-item/form-item.component';\nimport { FormDirective } from './form.directive';\nimport {\n FormItemAddonDirective,\n FormItemControlDirective,\n FormItemErrorDirective,\n FormItemHintDirective,\n FormItemLabelDirective,\n} from './helper-directives';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n FormDirective,\n FormItemComponent,\n FormItemAddonDirective,\n FormItemErrorDirective,\n FormItemHintDirective,\n FormItemLabelDirective,\n FormItemControlDirective,\n ],\n exports: [\n FormDirective,\n FormItemComponent,\n FormItemAddonDirective,\n FormItemErrorDirective,\n FormItemHintDirective,\n FormItemLabelDirective,\n FormItemControlDirective,\n ],\n})\nexport class FormModule {}\n","import {\n ChangeDetectorRef,\n Directive,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { publishReplay, refCount, tap } from 'rxjs/operators';\n\nimport { coerceAttrBoolean } from '../utils';\n\n/**\n * form control 内部不保持 value 属性,当不使用 ngModel 时可以通过 [(value)] 实现双向绑定;\n * 也可以分别传入 value 和 监听 valueChange 事件以实现阻断用户操作的功能。\n */\n@Directive()\n// tslint:disable-next-line:directive-class-suffix\nexport class CommonFormControl<T, V = T> implements ControlValueAccessor {\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(val: boolean | '') {\n this._disabled = coerceAttrBoolean(val);\n }\n\n @Input()\n get readonly() {\n return this.disabled;\n }\n\n set readonly(val) {\n this.disabled = val;\n }\n\n @Input('value')\n get propValue() {\n return this._propValue;\n }\n\n set propValue(val) {\n if (val === this._propValue) {\n return;\n }\n this._propValue = val;\n this.writeValue(val);\n }\n\n @Output()\n valueChange = new EventEmitter<T>();\n\n protected onChange: (_: T) => void;\n protected onTouched: () => void;\n protected value$$ = new ReplaySubject<V>(1);\n private _propValue: T;\n private _disabled = false;\n\n snapshot: { value: V } = { value: null };\n\n value$: Observable<V> = this.value$$.asObservable().pipe(\n tap(value => {\n this.snapshot.value = value;\n }),\n publishReplay(1),\n refCount(),\n );\n\n constructor(protected cdr: ChangeDetectorRef) {}\n\n registerOnChange(fn: (_: T) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n writeValue(value: T) {\n this.value$$.next(this.valueIn(value));\n }\n\n emitValue(value: V) {\n this.emitValueChange(this.valueOut(value));\n }\n\n emitValueChange(value: T) {\n if (this.onChange) {\n this.onChange(value);\n this.writeValue(value);\n }\n this.valueChange.emit(value);\n }\n\n protected valueIn(v: T): V {\n return v as any;\n }\n\n protected valueOut(v: V): T {\n return v as any;\n }\n}\n\n/**\n * @deprecated use {@link CommonFormControl} instead\n */\nexport const CommonForm = CommonFormControl;\n","import { ValueOf } from '../types';\n\nexport const RadioSize = {\n Medium: 'medium',\n Small: 'small',\n Mini: 'mini',\n} as const;\n\nexport type RadioSize = ValueOf<typeof RadioSize>;\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { CommonFormControl } from '../../form/public-api';\nimport { RadioSize } from '../radio.types';\n\n@Component({\n selector: 'aui-radio-group',\n templateUrl: './radio-group.component.html',\n styleUrls: ['./radio-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupComponent),\n multi: true,\n },\n ],\n})\nexport class RadioGroupComponent extends CommonFormControl<any> {\n private readonly size$$ = new BehaviorSubject<RadioSize>(RadioSize.Medium);\n private readonly isPlain$$ = new BehaviorSubject<boolean>(true);\n private readonly name$$ = new BehaviorSubject<string>('');\n\n @Input()\n set size(val: RadioSize) {\n this.size$$.next(val);\n }\n\n @Input()\n direction: 'row' | 'column' = 'row';\n\n /**\n * @deprecated use `plain` instead\n */\n @Input()\n set isPlain(val: boolean) {\n this.plain = val;\n }\n\n @Input()\n set plain(val: boolean) {\n this.isPlain$$.next(val);\n }\n\n @Input()\n set name(val: string) {\n this.name$$.next(val);\n }\n\n size$: Observable<RadioSize> = this.size$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n isPlain$: Observable<boolean> = this.isPlain$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n name$: Observable<string> = this.name$$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n writeValue(value: any) {\n this.value$$.next(value);\n }\n\n onRadioChange(value: any) {\n this.emitValueChange(value);\n }\n\n onRadioBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { BehaviorSubject, Subject, combineLatest } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { RadioGroupComponent } from './radio-group/radio-group.component';\n\nlet uniqueId = 0;\n\n@Directive()\n// tslint:disable-next-line: directive-class-suffix\nexport class BaseRadio implements OnInit, AfterViewInit, OnDestroy {\n id = `aui-radio-${uniqueId++}`;\n\n @Input()\n disabled: boolean | '' = false;\n\n @Input()\n get value() {\n return this._value;\n }\n\n set value(val) {\n this._value = val;\n this.value$$.next(val);\n }\n\n @ViewChild('elRef', { static: true })\n elRef: ElementRef;\n\n checked = false;\n name = '';\n\n protected _value: unknown;\n protected readonly value$$ = new BehaviorSubject(this.value);\n protected destroy$$ = new Subject<void>();\n\n constructor(\n protected radioGroup: RadioGroupComponent,\n protected focusMonitor: FocusMonitor,\n protected cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.radioGroup.name$.pipe(takeUntil(this.destroy$$)).subscribe(name => {\n this.name = name;\n this.cdr.markForCheck();\n });\n\n combineLatest([this.radioGroup.value$, this.value$$])\n .pipe(\n takeUntil(this.destroy$$),\n map(([groupValue, selfValue]) => groupValue === selfValue),\n )\n .subscribe(checked => {\n this.checked = checked;\n this.cdr.markForCheck();\n });\n }\n\n ngAfterViewInit() {\n this.focusMonitor.monitor(this.elRef.nativeElement, true);\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.focusMonitor.stopMonitoring(this.elRef.nativeElement);\n }\n\n onClick() {\n if (this.checked || this.disabled) {\n return;\n }\n this.radioGroup.onRadioChange(this.value);\n }\n\n onBlur() {\n this.radioGroup.onRadioBlur();\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { BaseRadio } from './base-radio';\nimport { RadioGroupComponent } from './radio-group/radio-group.component';\n\n@Component({\n selector: 'aui-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class RadioComponent extends BaseRadio {\n bem: Bem = buildBem('aui-radio');\n\n get rootClass() {\n return `${this.bem.block()} ${this.disabled ? 'isDisabled' : ''} ${\n this.checked ? 'isChecked' : ''\n }`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n radioGroup: RadioGroupComponent,\n focusMonitor: FocusMonitor,\n cdr: ChangeDetectorRef,\n ) {\n super(radioGroup, focusMonitor, cdr);\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Bem, buildBem } from '../../utils';\nimport { BaseRadio } from '../base-radio';\nimport { RadioGroupComponent } from '../radio-group/radio-group.component';\nimport { RadioSize } from '../radio.types';\n\n@Component({\n selector: 'aui-radio-button',\n templateUrl: './radio-button.component.html',\n styleUrls: ['./radio-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class RadioButtonComponent extends BaseRadio implements OnInit {\n bem: Bem = buildBem('aui-radio-button');\n\n size: RadioSize = RadioSize.Medium;\n isPlain = true;\n\n get rootClass() {\n return `${this.bem.block(this.size)} ${this.disabled ? 'isDisabled' : ''} ${\n this.checked ? 'isChecked' : ''\n } ${this.isPlain ? 'isPlain' : ''}`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n radioGroup: RadioGroupComponent,\n focusMonitor: FocusMonitor,\n cdr: ChangeDetectorRef,\n ) {\n super(radioGroup, focusMonitor, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.radioGroup.size$.pipe(takeUntil(this.destroy$$)).subscribe(size => {\n this.size = size;\n this.cdr.markForCheck();\n });\n this.radioGroup.isPlain$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(isPlain => {\n this.isPlain = isPlain;\n this.cdr.markForCheck();\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { RadioButtonComponent } from './radio-button/radio-button.component';\nimport { RadioGroupComponent } from './radio-group/radio-group.component';\nimport { RadioComponent } from './radio.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [RadioComponent, RadioGroupComponent, RadioButtonComponent],\n exports: [RadioComponent, RadioGroupComponent, RadioButtonComponent],\n})\nexport class RadioModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CommonFormControl } from '../form/public-api';\nimport { Bem, buildBem } from '../utils';\n\nconst prefix = 'aui-switch';\n\n@Component({\n selector: 'aui-switch',\n templateUrl: './switch.component.html',\n styleUrls: ['./switch.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true,\n },\n ],\n})\nexport class SwitchComponent extends CommonFormControl<boolean> {\n bem: Bem = buildBem(prefix);\n\n @Input()\n loading = false;\n\n writeValue(value: boolean) {\n this.value$$.next(value);\n }\n\n onSwitch() {\n if (this.disabled) {\n return;\n }\n this.emitValueChange(!this.snapshot.value);\n }\n\n onBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SwitchComponent } from './switch.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [SwitchComponent],\n exports: [SwitchComponent],\n})\nexport class SwitchModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n QueryList,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CommonFormControl } from '../../form/public-api';\nimport { TrackFn } from '../../select/public-api';\nimport { CheckboxComponent } from '../checkbox.component';\n\n@Component({\n selector: 'aui-checkbox-group',\n templateUrl: './checkbox-group.component.html',\n styleUrls: ['./checkbox-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxGroupComponent),\n multi: true,\n },\n ],\n})\nexport class CheckboxGroupComponent<T> extends CommonFormControl<T[]> {\n private _trackFn: TrackFn<T>;\n\n @Input()\n direction: 'row' | 'column' = 'row';\n\n @Input()\n get trackFn() {\n return this._trackFn;\n }\n\n set trackFn(val) {\n if (val !== this._trackFn) {\n this._trackFn = val;\n }\n }\n\n @ContentChildren(forwardRef(() => CheckboxComponent), {\n descendants: true,\n })\n checkboxes: QueryList<CheckboxComponent<T>>;\n\n writeValue(val: T[]) {\n this.value$$.next(val);\n }\n\n onCheckboxChange(checkbox: CheckboxComponent<T>) {\n if (this.onTouched) {\n this.onTouched();\n }\n const values = this.checkboxes\n .filter(item =>\n item === checkbox ? !item.snapshot.value : item.snapshot.value,\n )\n .map(item => item.label);\n this.emitValueChange(values);\n }\n\n onCheckboxBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject, Subject, combineLatest } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { CommonFormControl } from '../form/public-api';\n\nimport { CheckboxGroupComponent } from './checkbox-group/checkbox-group.component';\n\nlet uniqueId = 0;\n@Component({\n selector: 'aui-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class CheckboxComponent<T>\n extends CommonFormControl<boolean>\n implements AfterViewInit, OnDestroy {\n id = `aui-checkbox-${uniqueId++}`;\n\n @Input()\n name = '';\n\n @Input()\n type = 'label';\n\n @Input()\n get label() {\n return this._label;\n }\n\n set label(val) {\n this._label = val;\n this.label$$.next(val);\n }\n\n @Input()\n get indeterminate(): boolean {\n return this._indeterminate;\n }\n\n set indeterminate(value: boolean) {\n this._indeterminate = value;\n }\n\n @ViewChild('elRef', { static: true })\n elRef: ElementRef;\n\n private readonly checkboxGroup: CheckboxGroupComponent<T>;\n private _label: T;\n private readonly label$$ = new BehaviorSubject(this.label);\n private _indeterminate = false;\n private readonly destroy$$ = new Subject<void>();\n\n constructor(\n cdr: ChangeDetectorRef,\n @Optional()\n @Inject(forwardRef(() => CheckboxGroupComponent))\n checkboxGroup: CheckboxGroupComponent<T>,\n private readonly focusMonitor: FocusMonitor,\n ) {\n super(cdr);\n this.checkboxGroup = checkboxGroup;\n if (this.checkboxGroup) {\n combineLatest([this.checkboxGroup.value$, this.label$$])\n .pipe(\n takeUntil(this.destroy$$),\n map(([value, label]) => {\n if (this.checkboxGroup.trackFn) {\n return value?.some(\n v =>\n this.checkboxGroup.trackFn(v) ===\n this.checkboxGroup.trackFn(label),\n );\n }\n return value?.includes(label);\n }),\n )\n .subscribe(this.value$$);\n }\n }\n\n ngAfterViewInit() {\n this.focusMonitor.monitor(this.elRef.nativeElement, true);\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.focusMonitor.stopMonitoring(this.elRef.nativeElement);\n }\n\n writeValue(value: boolean) {\n this.value$$.next(value);\n }\n\n onClick() {\n if (this.disabled) {\n return;\n }\n if (this.indeterminate) {\n this._indeterminate = false;\n }\n this.emitValueChange(!this.snapshot.value);\n if (this.checkboxGroup) {\n this.checkboxGroup.onCheckboxChange(this);\n }\n }\n\n onBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n if (this.checkboxGroup) {\n this.checkboxGroup.onCheckboxBlur();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { CheckboxGroupComponent } from './checkbox-group/checkbox-group.component';\nimport { CheckboxComponent } from './checkbox.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [CheckboxComponent, CheckboxGroupComponent],\n exports: [CheckboxComponent, CheckboxGroupComponent],\n})\nexport class CheckboxModule {}\n","/* eslint-disable sonarjs/no-duplicate-string */\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n Renderer2,\n ViewEncapsulation,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ComponentSize } from '../types';\nimport { coerceAttrBoolean } from '../utils';\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: 'input[aui-input],textarea[aui-input]',\n template: '<ng-content></ng-content>',\n styleUrls: ['./input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class InputComponent {\n @Input()\n get size() {\n return this._size;\n }\n\n set size(val) {\n if (!val || this._size === val) {\n return;\n }\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n 'aui-input--' + this._size,\n );\n this.renderer.addClass(this.elementRef.nativeElement, 'aui-input--' + val);\n this._size = val;\n this.size$.next(val);\n }\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(val: boolean | '') {\n const booleanVal = coerceAttrBoolean(val);\n if (booleanVal === this._disabled) {\n return;\n }\n if (booleanVal) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'disabled', '');\n } else {\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'disabled');\n }\n this._disabled = booleanVal;\n this.disabled$.next(booleanVal);\n }\n\n private _size: ComponentSize = ComponentSize.Medium;\n private _disabled = false;\n\n size$ = new BehaviorSubject<ComponentSize>(this.size);\n\n /**\n * workaround for @link https://github.com/microsoft/TypeScript/pull/42425\n */\n disabled$ = new BehaviorSubject<boolean>(this.disabled as boolean);\n\n constructor(\n public elementRef: ElementRef<HTMLInputElement>,\n private readonly renderer: Renderer2,\n ) {\n this.renderer.addClass(this.elementRef.nativeElement, 'aui-input');\n this.renderer.addClass(\n this.elementRef.nativeElement,\n 'aui-input--' + this.size,\n );\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[auiInputAddonBefore]',\n})\nexport class InputAddonBeforeDirective {}\n\n@Directive({\n selector: '[auiInputAddonAfter]',\n})\nexport class InputAddonAfterDirective {}\n\n@Directive({\n selector: '[auiInputPrefix]',\n})\nexport class InputPrefixDirective {}\n\n@Directive({\n selector: '[auiInputSuffix]',\n})\nexport class InputSuffixDirective {}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { Bem, buildBem, watchContentExist } from '../../utils';\nimport {\n InputAddonAfterDirective,\n InputAddonBeforeDirective,\n InputPrefixDirective,\n InputSuffixDirective,\n} from '../helper-directives';\nimport { InputComponent } from '../input.component';\n\n@Component({\n selector: 'aui-input-group',\n templateUrl: './input-group.component.html',\n styleUrls: ['./input-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class InputGroupComponent implements AfterContentInit {\n bem: Bem = buildBem('aui-input-group');\n\n @ContentChildren(InputAddonBeforeDirective)\n private readonly addonBeforeRefs: QueryList<InputAddonBeforeDirective>;\n\n @ContentChildren(InputAddonAfterDirective)\n private readonly addonAfterRefs: QueryList<InputAddonAfterDirective>;\n\n @ContentChildren(InputPrefixDirective)\n private readonly prefixRefs: QueryList<InputPrefixDirective>;\n\n @ContentChildren(InputSuffixDirective)\n private readonly suffixRefs: QueryList<InputSuffixDirective>;\n\n @ContentChild(InputComponent, { static: false })\n inputRef: InputComponent;\n\n hasAddonBefore$: Observable<boolean>;\n hasAddonAfter$: Observable<boolean>;\n hasPrefix$: Observable<boolean>;\n hasSuffix$: Observable<boolean>;\n\n ngAfterContentInit() {\n this.hasAddonBefore$ = watchContentExist(this.addonBeforeRefs);\n this.hasAddonAfter$ = watchContentExist(this.addonAfterRefs);\n this.hasPrefix$ = watchContentExist(this.prefixRefs);\n this.hasSuffix$ = watchContentExist(this.suffixRefs);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem } from '../../utils';\n\n@Component({\n selector: 'aui-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class SearchComponent {\n bem: Bem = buildBem('aui-search');\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n @Input()\n searchButton = false;\n\n @Input()\n clearable = true;\n\n @Input()\n searching = false;\n\n @Input()\n placeholder = '';\n\n @Input()\n disabled = false;\n\n @Input()\n get keyword() {\n return this.value;\n }\n\n set keyword(value: string) {\n this.value = value;\n }\n\n @Output()\n keywordChange = new EventEmitter<string>();\n\n @Output()\n search = new EventEmitter<string>();\n\n @Output()\n clear = new EventEmitter<void>();\n\n value = '';\n\n get showSpinner() {\n return this.searching && !this.searchButton;\n }\n\n get showClear() {\n return !this.disabled && this.clearable && this.value && !this.showSpinner;\n }\n\n emitChange(value: string): void {\n this.value = value;\n this.keywordChange.emit(value);\n }\n\n emitSearch(): void {\n if (this.disabled) {\n return;\n }\n this.search.emit(this.value);\n }\n\n emitClear(): void {\n if (this.disabled) {\n return;\n }\n this.value = '';\n this.keywordChange.emit('');\n this.search.emit('');\n this.clear.emit();\n }\n}\n","import { ComponentSize } from '../../types';\n\nfunction getRowHeight(size: ComponentSize) {\n switch (size) {\n case ComponentSize.Large:\n return 33;\n case ComponentSize.Small:\n return 23;\n case ComponentSize.Mini:\n return 21;\n default:\n return 25;\n }\n}\n\nfunction getContainerPaddingPatch(size: ComponentSize) {\n switch (size) {\n case ComponentSize.Mini:\n return 3;\n case ComponentSize.Small:\n return 5;\n default:\n return 7;\n }\n}\n\nexport function createWithMaxRowCount<\n T extends {\n maxRowCount: number;\n customRowHeight?: number;\n size: ComponentSize;\n }\n>(component: T) {\n const hostPosition = () => (component.maxRowCount > 0 ? 'relative' : null);\n const hostDisplay = () => (component.maxRowCount ? 'block' : null);\n const maxHeight = () => {\n if (component.maxRowCount <= 0) {\n return null;\n }\n\n const paddingPatch = getContainerPaddingPatch(component.size);\n\n const rowHeight =\n isNaN(component.customRowHeight) || component.customRowHeight <= 0\n ? getRowHeight(component.size)\n : component.customRowHeight;\n\n return `${rowHeight * component.maxRowCount + paddingPatch}px`;\n };\n\n return {\n hostPosition,\n hostDisplay,\n maxHeight,\n };\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Injector,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport {\n AsyncValidatorFn,\n FormBuilder,\n NG_VALUE_ACCESSOR,\n NgControl,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { map, publishReplay, refCount, take, tap } from 'rxjs/operators';\n\nimport { CommonFormControl } from '../../form/public-api';\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem } from '../../utils';\n\nimport { createWithMaxRowCount } from './with-max-row-count';\n\nexport const INPUT_ERROR_KEY = 'input_data_error';\n\n@Component({\n selector: 'aui-tags-input',\n templateUrl: './tags-input.component.html',\n styleUrls: [\n '../../input/input.component.scss',\n '../../tag/tag.component.scss',\n './tags-input.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TagsInputComponent),\n multi: true,\n },\n ],\n})\nexport class TagsInputComponent\n extends CommonFormControl<string[]>\n implements AfterViewInit, OnChanges {\n bem: Bem = buildBem('aui-tags-input');\n\n @Input()\n placeholder = '';\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n // TODO: implement this feature\n @Input()\n clearable: boolean | '' = false;\n\n @Input()\n allowRepeat: boolean | '' = false;\n\n @Input()\n allowEmpty: boolean | '' = false;\n\n @Input()\n readonlyTags: string[] | readonly string[] = [];\n\n @Input()\n maxRowCount = 0;\n\n @Input()\n customRowHeight = 0; // 0: use default style const value, > 1: for ```tagClassFn``` maybe affect lineHeight\n\n _inputValidator: ValidatorFn;\n _inputAsyncValidator: AsyncValidatorFn;\n\n @Input()\n set inputValidator(fn: ValidatorFn | ValidatorFn[]) {\n this._inputValidator = Array.isArray(fn) ? Validators.compose(fn) : fn;\n }\n\n get inputValidator() {\n return this._inputValidator;\n }\n\n @Input()\n set inputAsyncValidator(fn: AsyncValidatorFn | AsyncValidatorFn[]) {\n this._inputAsyncValidator = Array.isArray(fn)\n ? Validators.composeAsync(fn)\n : fn;\n }\n\n get inputAsyncValidator() {\n return this._inputAsyncValidator;\n }\n\n @ViewChild('inputRef', { static: true })\n inputRef: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputValueMirror', { static: true })\n inputValueMirror: ElementRef<HTMLElement>;\n\n @HostBinding('style.position')\n get hostPosition() {\n return this.withMaxRowCount.hostPosition();\n }\n\n @HostBinding('style.display')\n get hostDisplay() {\n return this.withMaxRowCount.hostDisplay();\n }\n\n get maxHeight() {\n return this.withMaxRowCount.maxHeight();\n }\n\n private readonly withMaxRowCount = createWithMaxRowCount(this);\n\n snapshot = {\n value: [] as string[],\n };\n\n value$: Observable<string[]> = this.value$$.asObservable().pipe(\n map(value => this.sortByReadonly(value)),\n tap(value => {\n this.snapshot.value = value;\n this.clearInput();\n }),\n publishReplay(1),\n refCount(),\n );\n\n focused = false;\n\n // 内置form control,仅作校验使用\n readonly inputControl = this.fb.control('');\n // 外层 FormControl,所有的校验逻辑针对输入数据\n controlContainer: NgControl;\n\n get rootClass() {\n const size = this.size || ComponentSize.Medium;\n return `aui-input ${this.bem.block(size)} ${\n this.disabled ? 'isDisabled' : ''\n } ${this.focused ? 'isFocused' : ''} ${\n this.clearable ? 'isClearable' : ''\n } ${this.maxRowCount > 0 ? 'withHeightLimit' : ''}`;\n }\n\n get tagSize() {\n return this.size === ComponentSize.Large\n ? ComponentSize.Medium\n : ComponentSize.Mini;\n }\n\n get inputClass() {\n return `${this.bem.element('input', {\n hidden:\n this.disabled || (!this.focused && !this.inputRef?.nativeElement.value),\n })} aui-tag aui-tag--${this.tagSize}`;\n }\n\n constructor(\n cdr: ChangeDetectorRef,\n private readonly fb: FormBuilder,\n private readonly renderer: Renderer2,\n private readonly injector: Injector,\n ) {\n super(cdr);\n }\n\n ngOnChanges({\n inputValidator,\n inputAsyncValidator,\n disabled,\n }: SimpleChanges) {\n if (disabled) {\n this.inputControl[disabled.currentValue ? 'disable' : 'enable']({\n emitEvent: false,\n });\n }\n if (inputValidator) {\n this.inputControl.setValidators(this.inputValidator);\n }\n if (inputAsyncValidator) {\n this.inputControl.setAsyncValidators(this.inputAsyncValidator);\n }\n }\n\n ngAfterViewInit() {\n this.controlContainer = this.injector.get(NgControl, null);\n }\n\n writeValue(val: string[]) {\n this.value$$.next(val || []);\n }\n\n onRemove(index: number) {\n const target = this.snapshot.value[index];\n if (target && this.readonlyTags.includes(target)) {\n return;\n }\n this.emitValueChange(this.snapshot.value.filter((_, i) => i !== index));\n }\n\n onInput() {\n const value = this.inputRef.nativeElement.value;\n // make sure value sync to span element\n requestAnimationFrame(() => {\n if (!value.length) {\n this.renderer.removeStyle(this.inputRef.nativeElement, 'width');\n } else {\n this.renderer.setStyle(\n this.inputRef.nativeElement,\n 'width',\n this.inputValueMirror.nativeElement.scrollWidth + 'px',\n );\n }\n });\n if (\n this.controlContainer?.control?.errors?.[INPUT_ERROR_KEY] &&\n Object.keys(this.controlContainer.control.errors).length === 1\n ) {\n this.controlContainer.control.setErrors(null);\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n const inputEl = event.target as HTMLInputElement;\n if (event.key === 'Backspace' && inputEl.value === '') {\n this.onRemove(this.snapshot.value.length - 1);\n event.stopPropagation();\n event.preventDefault();\n } else if (event.key === 'Enter') {\n event.stopPropagation();\n event.preventDefault();\n requestAnimationFrame(() => {\n this.pushValue(inputEl.value);\n });\n }\n }\n\n onInputFocus() {\n this.focused = true;\n }\n\n onInputBlur(event: Event) {\n this.focused = false;\n this.pushValue((event.target as HTMLInputElement).value);\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n trackByValue(_: number, value: string) {\n return value;\n }\n\n private sortByReadonly(items: string[]) {\n return this.readonlyTags.length\n ? [\n ...items.reduce(\n (acc, curr) => acc.add(curr),\n new Set(this.readonlyTags),\n ),\n ]\n : items;\n }\n\n private pushValue(value: string) {\n if (!this.allowEmpty && !value) {\n this.removeInputControlError();\n return;\n }\n if (!this.allowRepeat && this.snapshot.value.includes(value)) {\n return;\n }\n this.inputControl.setValue(this.inputRef.nativeElement.value);\n // inputControl 自身的状态为同步计算\n this.syncControlStatus();\n if (this.inputControl.valid) {\n this.emitValueChange(this.snapshot.value.concat(value));\n } else if (this.inputControl.pending) {\n // PENDING 后只会变为 VALID 或 INVALID 的决议状态\n this.inputControl.statusChanges.pipe(take(1)).subscribe(_ => {\n this.syncControlStatus();\n if (this.inputControl.valid) {\n this.emitValueChange(this.snapshot.value.concat(value));\n }\n });\n }\n }\n\n private syncControlStatus() {\n const { pending, valid, invalid, disabled, errors } = this.inputControl;\n if (valid) {\n this.removeInputControlError();\n this.controlContainer?.control.markAsDirty();\n } else if (pending) {\n this.controlContainer?.control.markAsPending();\n } else if (invalid) {\n this.controlContainer?.control.markAsDirty();\n this.controlContainer?.control.setErrors({\n ...(this.controlContainer?.control?.errors || {}),\n [INPUT_ERROR_KEY]: errors,\n });\n } else if (disabled) {\n // 与当前 input 校验脱离\n this.controlContainer?.control?.updateValueAndValidity();\n }\n }\n\n private removeInputControlError() {\n let errors = this.controlContainer?.control.errors;\n if (errors?.[INPUT_ERROR_KEY]) {\n delete errors[INPUT_ERROR_KEY];\n }\n if (Object.keys(errors || {}).length === 0) {\n errors = null;\n }\n this.controlContainer?.control.setErrors(errors);\n }\n\n private clearInput() {\n this.renderer.removeStyle(this.inputRef.nativeElement, 'width');\n this.inputRef.nativeElement.value = '';\n this.inputControl.setValue('');\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Output,\n} from '@angular/core';\n\n@Directive({\n selector: '[auiClickOutside]',\n exportAs: 'auiClickOutside',\n})\nexport class ClickOutsideDirective {\n @Output()\n auiClickOutside = new EventEmitter<Event>();\n\n @HostListener('document:click', ['$event'])\n onBodyClick(event: Event) {\n if (!this.el.nativeElement.contains(event.target as Node)) {\n this.auiClickOutside.emit(event);\n }\n }\n\n constructor(private readonly el: ElementRef<HTMLElement>) {}\n}\n","import { NgModule } from '@angular/core';\n\nimport { ClickOutsideDirective } from './click-outside.directive';\n\n@NgModule({\n declarations: [ClickOutsideDirective],\n exports: [ClickOutsideDirective],\n})\nexport class SharedModule {}\n","import { ValueOf } from '../types';\n\nexport const TagType = {\n Primary: 'primary',\n Success: 'success',\n Warning: 'warning',\n Error: 'error',\n Info: 'info',\n} as const;\n\nexport type TagType = ValueOf<typeof TagType>;\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ComponentSize } from '../types';\nimport { Bem, buildBem } from '../utils';\n\nimport { TagType } from './tag.types';\n\n@Component({\n selector: 'aui-tag',\n templateUrl: './tag.component.html',\n styleUrls: ['./tag.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class TagComponent {\n bem: Bem = buildBem('aui-tag');\n\n @Input()\n type: TagType = TagType.Primary;\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n @Input()\n closeable = false;\n\n @Input()\n border = false;\n\n @Input()\n solid = false;\n\n @Input()\n invalid = false;\n\n @Input()\n round = true;\n\n @Input()\n color = '';\n\n @Input()\n allowClick = false;\n\n @Output()\n close = new EventEmitter<void>();\n\n get rootClass() {\n return `${this.bem.block(\n this.type || TagType.Primary,\n this.size || ComponentSize.Medium,\n )} ${this.solid ? 'isSolid' : ''} ${this.border ? 'hasBorder' : ''} ${\n this.invalid ? 'isInvalid' : ''\n } ${this.round ? 'isRound' : ''} ${\n this.allowClick && this.isNormalTag ? 'allowClick' : ''\n }`;\n }\n\n // 只有常规标签支持单击样式\n get isNormalTag() {\n return !this.solid && !this.closeable && !this.invalid;\n }\n\n get customStyle() {\n const arr = this.color.split(',');\n return {\n color: arr[0],\n 'border-color': arr[0],\n 'background-color': arr[1] || arr[0],\n };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem } from '../../utils';\nimport { TagType } from '../tag.types';\n\n@Component({\n selector: 'aui-check-tag',\n templateUrl: './check-tag.component.html',\n styleUrls: ['./check-tag.component.scss', '../tag.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class CheckTagComponent {\n bem: Bem = buildBem('aui-tag');\n hovered = false;\n\n @Input()\n checked = false;\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n @Input()\n round = true;\n\n @Output()\n checkedChange = new EventEmitter<boolean>();\n\n get rootClass() {\n return `aui-check-tag ${this.bem.block(\n this.size,\n this.checked || this.hovered ? TagType.Primary : TagType.Info,\n )} ${this.round ? 'isRound' : ''}`;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { CheckTagComponent } from './check-tag/check-tag.component';\nimport { TagComponent } from './tag.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [TagComponent, CheckTagComponent],\n exports: [TagComponent, CheckTagComponent],\n})\nexport class TagModule {}\n","let hiddenTextarea: HTMLTextAreaElement;\n\nconst HIDDEN_STYLE = `\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n`;\n\nconst CONTEXT_STYLE = [\n 'letter-spacing',\n 'line-height',\n 'padding-top',\n 'padding-bottom',\n 'font-family',\n 'font-weight',\n 'font-size',\n 'text-rendering',\n 'text-transform',\n 'width',\n 'text-indent',\n 'padding-left',\n 'padding-right',\n 'border-width',\n 'box-sizing',\n];\n\nfunction calculateNodeStyling(targetElement: HTMLTextAreaElement) {\n const style = window.getComputedStyle(targetElement);\n\n const boxSizing = style.getPropertyValue('box-sizing');\n\n const paddingSize =\n parseFloat(style.getPropertyValue('padding-bottom')) +\n parseFloat(style.getPropertyValue('padding-top'));\n\n const borderSize =\n parseFloat(style.getPropertyValue('border-bottom-width')) +\n parseFloat(style.getPropertyValue('border-top-width'));\n\n const contextStyle = CONTEXT_STYLE.map(\n name => `${name}:${style.getPropertyValue(name)}`,\n ).join(';');\n\n return { contextStyle, paddingSize, borderSize, boxSizing };\n}\n\nexport function calcTextareaHeight(\n targetElement: HTMLTextAreaElement,\n minRows = 1,\n maxRows: number = null,\n) {\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n document.body.append(hiddenTextarea);\n }\n\n const { paddingSize, borderSize, contextStyle } = calculateNodeStyling(\n targetElement,\n );\n\n hiddenTextarea.setAttribute('style', `${contextStyle};${HIDDEN_STYLE}`);\n hiddenTextarea.value = targetElement.value || targetElement.placeholder || '';\n\n let height = hiddenTextarea.scrollHeight + borderSize;\n\n hiddenTextarea.value = '';\n const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n const result: {\n minHeight?: string;\n maxHeight?: string;\n height?: string;\n } = {};\n\n if (minRows !== null) {\n const minHeight = singleRowHeight * minRows + paddingSize + borderSize;\n height = Math.max(minHeight, height);\n result.minHeight = `${minHeight}px`;\n }\n if (maxRows !== null) {\n const maxHeight = singleRowHeight * maxRows + paddingSize + borderSize;\n height = Math.min(maxHeight, height);\n result.maxHeight = `${maxHeight}px`;\n }\n result.height = `${height}px`;\n\n if (hiddenTextarea.parentNode) {\n hiddenTextarea.remove();\n }\n hiddenTextarea = null;\n\n return result;\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nimport { calcTextareaHeight } from './utils';\n\nconst DEFAULT_VALUE = {\n minRows: 3,\n maxRows: 6,\n};\n\nexport interface AutoSizeValue {\n minRows: number;\n maxRows?: number;\n}\n\n/**\n * Directive to automatically resize a textarea to fit its content.\n */\n@Directive({\n selector:\n // tslint:disable-next-line: directive-selector\n 'textarea[autosize][ngModel],textarea[autosize][formControl],textarea[autosize][formControlName]',\n exportAs: 'TextareaAutosize',\n})\nexport class AutosizeDirective implements AfterViewInit, OnDestroy {\n private _autoSize: AutoSizeValue = DEFAULT_VALUE;\n\n private readonly destroy$$ = new Subject<void>();\n\n @Input('autosize')\n get autoSize() {\n return this._autoSize;\n }\n\n set autoSize(value: AutoSizeValue | '') {\n if (!value) {\n value = DEFAULT_VALUE;\n }\n this._autoSize = value;\n this.resizeTextarea();\n }\n\n constructor(\n private readonly elRef: ElementRef<HTMLTextAreaElement>,\n private readonly ngControl: NgControl,\n ) {}\n\n resizeTextarea() {\n const el = this.elRef.nativeElement;\n const autoSize = this._autoSize;\n Object.assign(\n el.style,\n calcTextareaHeight(\n el,\n autoSize.minRows ?? DEFAULT_VALUE.minRows,\n autoSize.maxRows || DEFAULT_VALUE.maxRows, // 0 is unacceptable\n ),\n );\n }\n\n ngAfterViewInit() {\n this.ngControl.valueChanges\n .pipe(startWith(null as void), takeUntil(this.destroy$$))\n .subscribe(() => this.resizeTextarea());\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CommonFormControl } from '../../form/public-api';\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem, coerceNumber } from '../../utils';\n\n@Component({\n selector: 'aui-number-input',\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberInputComponent),\n multi: true,\n },\n ],\n})\nexport class NumberInputComponent\n extends CommonFormControl<number>\n implements AfterViewInit {\n bem: Bem = buildBem('aui-number-input');\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n @Input()\n min: string | number = Number.MIN_SAFE_INTEGER;\n\n @Input()\n max: string | number = Number.MAX_SAFE_INTEGER;\n\n @Input()\n step = 1;\n\n @Input()\n precision: number;\n\n @Input()\n controls = true;\n\n @Input()\n placeholder = '';\n\n @Input()\n controlsPosition = '';\n\n @ViewChild('inputRef', { read: ElementRef })\n inputRef: ElementRef<HTMLInputElement>;\n\n isFocus = false;\n\n ngAfterViewInit() {\n this.inputRef.nativeElement.value = (this.snapshot.value ?? '') + '';\n }\n\n valueIn(v: number) {\n if (this.inputRef) {\n this.inputRef.nativeElement.value = (v ?? '') + '';\n }\n return v;\n }\n\n valueOut(value: number) {\n return Math.max(\n coerceNumber(this.min, Number.MIN_SAFE_INTEGER),\n Math.min(\n coerceNumber(this.max, Number.MAX_SAFE_INTEGER),\n this.parsePrecision(value),\n ),\n );\n }\n\n inputChanged(value: string) {\n this.emitValue(coerceNumber(value, this.snapshot.value));\n }\n\n takeOneStep(positive: boolean) {\n if (positive) {\n this.emitValue((this.snapshot.value ?? 0) + this.step);\n } else {\n this.emitValue((this.snapshot.value ?? 0) - this.step);\n }\n }\n\n private parsePrecision(value: number) {\n const precision = this.precision ?? this.getStepPrecision();\n return parseFloat(value.toFixed(precision));\n }\n\n private getStepPrecision() {\n const step = this.step + '';\n const index = step.indexOf('.');\n return index < 0 ? 0 : step.slice(index + 1).length;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '../button/public-api';\nimport { IconModule } from '../icon/public-api';\nimport { SharedModule } from '../shared/shared.module';\nimport { TagModule } from '../tag/public-api';\n\nimport { AutosizeDirective } from './autosize.directive';\nimport {\n InputAddonAfterDirective,\n InputAddonBeforeDirective,\n InputPrefixDirective,\n InputSuffixDirective,\n} from './helper-directives';\nimport { InputGroupComponent } from './input-group/input-group.component';\nimport { InputComponent } from './input.component';\nimport { NumberInputComponent } from './number-input/number-input.component';\nimport { SearchComponent } from './search/search.component';\nimport { TagsInputComponent } from './tags-input/tags-input.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule,\n IconModule,\n TagModule,\n SharedModule,\n ],\n declarations: [\n AutosizeDirective,\n InputComponent,\n InputGroupComponent,\n InputAddonBeforeDirective,\n InputAddonAfterDirective,\n InputPrefixDirective,\n InputSuffixDirective,\n SearchComponent,\n TagsInputComponent,\n NumberInputComponent,\n ],\n exports: [\n AutosizeDirective,\n InputComponent,\n InputGroupComponent,\n InputAddonBeforeDirective,\n InputAddonAfterDirective,\n InputPrefixDirective,\n InputSuffixDirective,\n SearchComponent,\n TagsInputComponent,\n NumberInputComponent,\n ],\n})\nexport class InputModule {}\n","import { I18NInterface } from '../i18n.type';\n\nexport const en: I18NInterface = {\n locale: 'en',\n translation: {\n start_date: 'Start Date',\n end_date: 'End Date',\n select_date: 'Select Date',\n select_time: 'Select time',\n clear: 'clear',\n confirm: 'confirm',\n to: 'To',\n year_suffix: '',\n month_suffix: '',\n monday: 'Mon',\n tuesday: 'Tues',\n wednesday: 'Wed',\n thursday: 'Thur',\n friday: 'Fri',\n saturday: 'Sat',\n sunday: 'Sun',\n now: 'Now',\n select_all: 'Select All',\n today: 'Today',\n },\n};\n","import { InjectionToken } from '@angular/core';\n\nimport { en } from './language/en';\n\nexport interface I18NInterface {\n locale: string;\n translation: Record<string, string>;\n}\nexport type StringMap = Record<string, string>;\n\nexport const I18NInterfaceToken = new InjectionToken('i18n token', {\n factory: () => en,\n});\n","import { Inject, Injectable, isDevMode } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { pluck } from 'rxjs/operators';\n\nimport { I18NInterface, I18NInterfaceToken, StringMap } from './i18n.type';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class I18nService {\n private readonly i18nChange$$ = new BehaviorSubject<I18NInterface>(\n this._i18n,\n );\n\n localeChange$ = this.i18nChange$$.asObservable().pipe(pluck('locale'));\n\n constructor(@Inject(I18NInterfaceToken) private _i18n: I18NInterface) {}\n\n setI18n(i18n: I18NInterface) {\n this._i18n = i18n;\n this.i18nChange$$.next(i18n);\n }\n\n get i18n() {\n return this._i18n;\n }\n\n translate(key: string, data?: StringMap, ignoreNonExist = false) {\n let content = this._i18n.translation[key];\n if (content == null) {\n if (isDevMode() && !ignoreNonExist) {\n console.warn(`No exist translate key for ${key}`);\n }\n return key;\n }\n if (data) {\n content = content.replaceAll(\n /{{([^{}]+)}}/,\n (_matched, $0: string) => data[$0.trim()],\n );\n }\n return content;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { I18nService } from './i18n.service';\nimport { StringMap } from './i18n.type';\n\n@Pipe({\n name: 'auiI18n',\n})\nexport class I18nPipe implements PipeTransform {\n constructor(private readonly i18n: I18nService) {}\n transform(value: any, data?: StringMap) {\n return this.i18n.translate(value, data);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { I18nPipe } from './i18n.pipe';\n\n@NgModule({\n declarations: [I18nPipe],\n exports: [I18nPipe],\n})\nexport class I18nModule {}\n","import { I18NInterface } from '../i18n.type';\n\nexport const zh: I18NInterface = {\n locale: 'zh',\n translation: {\n start_date: '开始日期',\n end_date: '结束日期',\n select_time: '选择时间',\n select_date: '选择日期',\n clear: '清除',\n confirm: '确定',\n to: '至',\n year_suffix: '年',\n month_suffix: '月',\n monday: '一',\n tuesday: '二',\n wednesday: '三',\n thursday: '四',\n friday: '五',\n saturday: '六',\n sunday: '日',\n now: '此刻',\n select_all: '全选',\n today: '今天',\n },\n};\n","import { Directive, Input } from '@angular/core';\n\nimport { TooltipActiveDirective } from '../tooltip/public-api';\n\n@Directive({\n selector: '[auiDropdownActive]',\n})\nexport class DropdownActiveDirective extends TooltipActiveDirective {\n @Input('auiDropdownActive')\n customClass: string | string[];\n}\n","// tslint:disable: no-output-rename\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnInit,\n Output,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\n\nimport {\n BaseTooltip,\n TooltipTrigger,\n TooltipType,\n} from '../tooltip/public-api';\n\nimport { DropdownActiveDirective } from './dropdown-active.directive';\nimport { MenuComponent } from './menu/menu.component';\n\n@Directive({\n selector: '[auiDropdown]',\n exportAs: 'auiDropdown',\n inputs: [\n 'class:auiDropdownClass',\n 'disabled:auiDropdownDisabled',\n 'position:auiDropdownPosition',\n 'trigger:auiDropdownTrigger',\n ],\n providers: [\n {\n provide: BaseTooltip,\n useExisting: DropdownDirective,\n },\n ],\n})\nexport class DropdownDirective extends BaseTooltip implements OnInit {\n @Input('auiDropdown')\n get menu() {\n return this._menu;\n }\n\n set menu(value) {\n if (value === this._menu) {\n return;\n }\n this._menu = value;\n this.content = value.template;\n }\n\n @Input('auiDropdownContext')\n lazyContentContext: any;\n\n @Input('auiDropdownHideOnClick')\n hideOnClick = true;\n\n @Output('auiDropdownShow')\n show: EventEmitter<void>;\n\n @Output('auiDropdownHide')\n hide: EventEmitter<void>;\n\n private _menu: MenuComponent;\n\n constructor(\n overlay: Overlay,\n viewContainerRef: ViewContainerRef,\n elRef: ElementRef,\n renderer: Renderer2,\n cdr: ChangeDetectorRef,\n ngZone: NgZone,\n ) {\n super(overlay, viewContainerRef, elRef, renderer, cdr, ngZone);\n new DropdownActiveDirective(this, elRef, renderer).customClass = 'isActive';\n this.type = TooltipType.Plain;\n this.position = 'bottom end';\n this.trigger = TooltipTrigger.Click;\n }\n\n ngOnInit() {\n this.show.pipe(debounceTime(0)).subscribe(() => {\n if (this.menu.lazyContent) {\n this.menu.lazyContent.attach(this.lazyContentContext);\n this.updatePosition();\n }\n });\n\n this.hide.subscribe(() => {\n if (this.menu.lazyContent) {\n this.menu.lazyContent.detach();\n }\n });\n }\n}\n","import { ValueOf } from '../types';\n\nexport const MenuItemType = {\n Default: 'default',\n Primary: 'primary',\n Success: 'success',\n Warning: 'warning',\n Danger: 'danger',\n} as const;\n\nexport type MenuItemType = ValueOf<typeof MenuItemType>;\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../../utils';\nimport { MenuItemType } from '../dropdown.types';\n\n@Component({\n selector: 'aui-menu-item',\n templateUrl: './menu-item.component.html',\n styleUrls: ['./menu-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MenuItemComponent {\n bem: Bem = buildBem('aui-menu-item');\n\n protected _disabled = false;\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value) {\n this._disabled = value;\n }\n\n @Input()\n divide = false;\n\n @Input()\n type: MenuItemType = MenuItemType.Default;\n\n @Input()\n actived = false;\n\n get className() {\n return `${this.bem.block(this.type)} ${this.divide ? 'hasDivider' : ''} ${\n this.actived ? 'isActive' : ''\n }`;\n }\n}\n","import { DomPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ApplicationRef,\n ComponentFactoryResolver,\n Directive,\n Inject,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\n@Directive({\n selector: '*[auiMenuContent]',\n exportAs: 'auiMenuContent',\n})\nexport class MenuContentDirective implements OnDestroy {\n private portal: TemplatePortal;\n private outlet: DomPortalOutlet;\n\n private readonly doc: Document;\n\n constructor(\n private readonly templateRef: TemplateRef<unknown>,\n private readonly appRef: ApplicationRef,\n private readonly viewContainerRef: ViewContainerRef,\n private readonly componentFactoryResolver: ComponentFactoryResolver,\n private readonly injector: Injector,\n @Inject(DOCUMENT) document: any,\n ) {\n this.doc = document;\n }\n\n attach(context?: any) {\n if (this.portal?.isAttached) {\n return;\n }\n if (!this.portal) {\n this.portal = new TemplatePortal(this.templateRef, this.viewContainerRef);\n }\n if (!this.outlet) {\n this.outlet = new DomPortalOutlet(\n this.doc.createElement('div'),\n this.componentFactoryResolver,\n this.appRef,\n this.injector,\n );\n }\n const el = this.templateRef.elementRef.nativeElement as HTMLElement;\n el.parentNode.insertBefore(this.outlet.outletElement, el);\n this.portal.attach(this.outlet, context);\n }\n\n detach() {\n if (this.portal?.isAttached) {\n this.portal.detach();\n }\n }\n\n ngOnDestroy() {\n if (this.outlet) {\n this.outlet.dispose();\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem } from '../../utils';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\n\nimport { MenuContentDirective } from './menu-content.directive';\n\n@Component({\n selector: 'aui-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MenuComponent {\n bem: Bem = buildBem('aui-menu');\n\n @Input()\n size: ComponentSize = ComponentSize.Small;\n\n @ViewChild(TemplateRef, { static: true })\n template: TemplateRef<any>;\n\n @ContentChild(MenuContentDirective, { static: true })\n lazyContent: MenuContentDirective;\n\n @ContentChildren(MenuItemComponent, { descendants: true })\n menuItems: QueryList<MenuItemComponent>;\n\n get hasEnabledItem() {\n return this.menuItems?.length > 0;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ButtonType } from '../../button/public-api';\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem, coerceAttrBoolean } from '../../utils';\nimport { MenuComponent } from '../menu/menu.component';\n\n@Component({\n selector: 'aui-dropdown-button',\n templateUrl: './dropdown-button.component.html',\n styleUrls: ['./dropdown-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class DropdownButtonComponent {\n bem: Bem = buildBem('aui-dropdown-button');\n\n @Input()\n type: ButtonType = ButtonType.Default;\n\n @Input()\n plain = true;\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n @Input()\n loading = false;\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(val: boolean | '') {\n this._disabled = coerceAttrBoolean(val);\n }\n\n @Output()\n buttonClick = new EventEmitter<Event>();\n\n @ContentChild(MenuComponent, { static: true })\n menu: MenuComponent;\n\n get disableTrigger() {\n return !this.menu?.hasEnabledItem;\n }\n\n private _disabled = false;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-menu-group',\n templateUrl: './menu-group.component.html',\n styleUrls: ['./menu-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class MenuGroupComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { TooltipTrigger } from '../../tooltip/public-api';\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem } from '../../utils';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\n\n@Component({\n selector: 'aui-submenu',\n templateUrl: './submenu.component.html',\n styleUrls: ['./submenu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class SubmenuComponent extends MenuItemComponent {\n bem: Bem = buildBem('aui-submenu');\n\n @Input()\n trigger = TooltipTrigger.Hover;\n\n @Input()\n size: ComponentSize = ComponentSize.Small;\n\n @Input()\n get disabled() {\n return this._disabled || !this.hasEnabledItem;\n }\n\n @ContentChildren(MenuItemComponent, { descendants: true })\n menuItems: QueryList<MenuItemComponent>;\n\n get hasEnabledItem() {\n return this.menuItems?.length > 0;\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[auiMenuGroupTitle]',\n exportAs: 'auiMenuGroupTitle',\n host: {\n '[class.aui-menu-group__title]': 'true',\n },\n})\nexport class MenuGroupTitleDirective {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ButtonModule } from '../button/public-api';\nimport { IconModule } from '../icon/public-api';\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport { DropdownActiveDirective } from './dropdown-active.directive';\nimport { DropdownButtonComponent } from './dropdown-button/dropdown-button.component';\nimport { DropdownDirective } from './dropdown.directive';\nimport { MenuGroupTitleDirective } from './helper-directives';\nimport { MenuGroupComponent } from './menu-group/menu-group.component';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\nimport { MenuContentDirective } from './menu/menu-content.directive';\nimport { MenuComponent } from './menu/menu.component';\nimport { SubmenuComponent } from './submenu/submenu.component';\n\n@NgModule({\n imports: [CommonModule, TooltipModule, IconModule, ButtonModule],\n declarations: [\n DropdownDirective,\n DropdownActiveDirective,\n DropdownButtonComponent,\n MenuComponent,\n MenuGroupComponent,\n MenuGroupTitleDirective,\n MenuItemComponent,\n SubmenuComponent,\n MenuContentDirective,\n ],\n exports: [\n DropdownDirective,\n DropdownActiveDirective,\n DropdownButtonComponent,\n MenuComponent,\n MenuGroupComponent,\n MenuGroupTitleDirective,\n MenuItemComponent,\n SubmenuComponent,\n MenuContentDirective,\n ],\n})\nexport class DropdownModule {}\n","import { Directive } from '@angular/core';\n\nimport { MenuContentDirective } from '../dropdown/public-api';\n\n@Directive({\n selector: '[auiOptionGroupTitle]',\n exportAs: 'auiOptionGroupTitle',\n host: {\n '[class.aui-option-group__title]': 'true',\n },\n})\nexport class OptionGroupTitleDirective {}\n\n@Directive({\n selector: '*[auiOptionContent]',\n exportAs: 'auiOptionContent',\n})\nexport class OptionContentDirective extends MenuContentDirective {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n publishReplay,\n refCount,\n tap,\n} from 'rxjs/operators';\n\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem, coerceAttrBoolean } from '../../utils';\nimport { BaseSelect } from '../base-select';\nimport { MultiSelectComponent } from '../multi-select/multi-select.component';\n\n@Component({\n selector: 'aui-option',\n templateUrl: './option.component.html',\n styleUrls: ['./option.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class OptionComponent<T> {\n bem: Bem = buildBem('aui-option');\n\n private _disabled = false;\n private _label: string | TemplateRef<unknown> = '';\n private _labelContext: unknown = {};\n private _value: T;\n private readonly label$$ = new BehaviorSubject(this.label);\n\n private readonly labelContext$$ = new BehaviorSubject(this.labelContext);\n\n private readonly value$$ = new BehaviorSubject(this.value);\n\n @Input()\n get label() {\n return this._label;\n }\n\n set label(val) {\n this._label = val;\n this.label$$.next(val);\n }\n\n @Input()\n get labelContext() {\n return this._labelContext;\n }\n\n set labelContext(val) {\n this._labelContext = val;\n this.labelContext$$.next(val);\n }\n\n @Input()\n get value() {\n return this._value;\n }\n\n set value(val) {\n this._value = val;\n this.value$$.next(val);\n }\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(val: boolean | '') {\n this._disabled = coerceAttrBoolean(val);\n }\n\n isMulti = false;\n\n @ViewChild('elRef', { static: true })\n elRef: ElementRef;\n\n private readonly select: BaseSelect<T>;\n selected = false;\n visible = true;\n size: ComponentSize = ComponentSize.Medium;\n focused = false;\n\n value$ = this.value$$.asObservable();\n label$ = this.label$$.asObservable();\n labelContext$ = this.labelContext$$.asObservable();\n\n selected$: Observable<boolean>;\n size$: Observable<ComponentSize>;\n visible$: Observable<boolean>;\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n @Inject(forwardRef(() => BaseSelect))\n select: any, // FIXME: workaround temporarily\n ) {\n this.isMulti = select instanceof MultiSelectComponent;\n this.select = select;\n this.selected$ = combineLatest([this.select.values$, this.value$$]).pipe(\n map(([selectValue, selfValue]) =>\n selectValue\n ?.map(this.select.trackFn)\n .includes(this.select.trackFn(selfValue)),\n ),\n distinctUntilChanged(),\n tap(selected => {\n this.selected = selected;\n }),\n publishReplay(1),\n refCount(),\n );\n this.size$ = this.select.size$.pipe(\n tap(size => {\n this.size = size;\n }),\n );\n this.visible$ = combineLatest([\n this.select.filterString$,\n combineLatest([this.label$, this.value$, this.labelContext$]).pipe(\n map(([label, value, labelContext]) => ({ label, value, labelContext })),\n ),\n ]).pipe(\n map(([filterString, option]) =>\n this.select.filterFn(filterString, option),\n ),\n distinctUntilChanged(),\n tap(visible => {\n this.visible = visible;\n }),\n publishReplay(1),\n refCount(),\n );\n }\n\n onClick() {\n if (this.disabled) {\n return;\n }\n this.select.onOptionClick(this);\n }\n\n focus() {\n if (this.disabled) {\n return;\n }\n this.focused = true;\n this.cdr.markForCheck();\n }\n\n blur() {\n this.focused = false;\n this.cdr.markForCheck();\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { BehaviorSubject, Observable, Subject, combineLatest, of } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n takeUntil,\n} from 'rxjs/operators';\n\nimport { CommonFormControl } from '../form/public-api';\nimport { TooltipDirective } from '../tooltip/public-api';\nimport { ComponentSize } from '../types';\nimport {\n coerceAttrBoolean,\n coerceString,\n isTemplateRef,\n scrollIntoView,\n} from '../utils';\n\nimport { OptionContentDirective } from './helper-directives';\nimport { OptionComponent } from './option/option.component';\nimport { OptionFilterFn, SelectFilterOption, TrackFn } from './select.types';\n\n@Directive()\n// tslint:disable-next-line: directive-class-suffix\nexport abstract class BaseSelect<T, V = T>\n extends CommonFormControl<V>\n implements AfterContentInit, AfterViewInit, OnDestroy {\n @Input()\n get size() {\n return this._size;\n }\n\n set size(val) {\n if (!val || this._size === val) {\n return;\n }\n this._size = val;\n this.size$$.next(val);\n }\n\n @Input()\n get filterable() {\n return this._filterable;\n }\n\n set filterable(val: boolean | '') {\n this._filterable = coerceAttrBoolean(val);\n }\n\n @Input()\n get clearable() {\n return this._clearable;\n }\n\n set clearable(val: boolean | '') {\n this._clearable = coerceAttrBoolean(val);\n }\n\n @Input()\n filterFn: OptionFilterFn<T> = this._filterFn.bind(this);\n\n @Input()\n trackFn: TrackFn<T> = this._trackFn;\n\n @Input()\n labelFn?: (value: T) => string;\n\n @Input()\n get allowCreate() {\n return this._allowCreate;\n }\n\n set allowCreate(val: boolean | '') {\n this._allowCreate = coerceAttrBoolean(val);\n }\n\n get allOptions() {\n return [\n ...(this.customOptions ? this.customOptions.toArray() : []),\n ...(this.contentOptions ? this.contentOptions.toArray() : []),\n ];\n }\n\n get opened() {\n return this.tooltipRef.isCreated;\n }\n\n get inputReadonly() {\n return !(this.filterable && this.opened);\n }\n\n get filterString() {\n return this._filterString;\n }\n\n set filterString(val) {\n if (val !== this._filterString) {\n this._filterString = val;\n this.filterString$$.next(val);\n this.filterChange.emit(val);\n }\n }\n\n @Input()\n loading = false;\n\n @Input()\n placeholder = '';\n\n @Input()\n defaultFirstOption = true;\n\n @Input()\n lazy = true;\n\n @Output()\n filterChange = new EventEmitter<string>();\n\n @Output()\n show = new EventEmitter<void>();\n\n @Output()\n hide = new EventEmitter<void>();\n\n @ViewChild('selectRef', { static: true })\n protected selectRef: ElementRef<HTMLElement>;\n\n @ViewChild('tooltipRef', { static: true })\n protected tooltipRef: TooltipDirective;\n\n @ViewChild('optionListRef', { static: false })\n protected optionListRef: ElementRef;\n\n @ViewChild('inputtingOption', { static: false })\n protected inputtingOption: OptionComponent<T>;\n\n @ContentChild(OptionContentDirective)\n protected optionContent?: OptionContentDirective;\n\n @ViewChildren(OptionComponent)\n customOptions: QueryList<OptionComponent<T>>;\n\n @ContentChildren(OptionComponent, { descendants: true })\n contentOptions: QueryList<OptionComponent<T>>;\n\n isTemplateRef = isTemplateRef;\n\n /**\n * Utility field to make sure the users always see the value as type array\n */\n abstract readonly values$: Observable<T[]>;\n\n allOptions$: Observable<Array<OptionComponent<T>>>;\n\n protected focusedOption: OptionComponent<T>;\n\n private _size: ComponentSize = ComponentSize.Medium;\n private _filterable = true;\n private _clearable = false;\n private _allowCreate = false;\n private _filterString = '';\n\n protected destroy$$ = new Subject<void>();\n protected size$$ = new BehaviorSubject<ComponentSize>(this.size);\n private readonly filterString$$ = new BehaviorSubject<string>(\n this.filterString,\n );\n\n size$ = this.size$$.asObservable();\n filterString$ = this.filterString$$.asObservable();\n hasVisibleOption$: Observable<boolean>;\n hasMatchedOption$: Observable<boolean>;\n customCreatedOptions$: Observable<Array<SelectFilterOption<T>>>;\n containerWidth: string;\n\n ngAfterContentInit() {\n this.customCreatedOptions$ = combineLatest([\n this.values$,\n this.contentOptions.changes.pipe(\n startWith(this.contentOptions),\n switchMap((options: QueryList<OptionComponent<T>>) =>\n options.length > 0\n ? combineLatest(options.map(option => option.value$))\n : of([] as T[]),\n ),\n ),\n ]).pipe(\n map(([values, optionValues]) =>\n values.reduce<Array<SelectFilterOption<T>>>((acc, value) => {\n const included = optionValues\n .map(value => this.trackFn(value))\n .includes(this.trackFn(value));\n if (!included) {\n const label =\n this.labelFn?.(value) || coerceString(this.trackFn(value));\n if (label) {\n acc.push({\n label,\n value,\n });\n }\n }\n return acc;\n }, []),\n ),\n publishReplay(1),\n refCount(),\n );\n }\n\n ngAfterViewInit() {\n this.allOptions$ = combineLatest([\n this.customOptions.changes.pipe(startWith(this.customOptions)),\n this.contentOptions.changes.pipe(startWith(this.contentOptions)),\n ]).pipe(\n map(\n ([customOptions, contentOptions]: [\n QueryList<OptionComponent<T>>,\n QueryList<OptionComponent<T>>,\n ]) => [...customOptions.toArray(), ...contentOptions.toArray()],\n ),\n publishReplay(1),\n refCount(),\n );\n\n // support dynamic options loading on filtering\n this.allOptions$.pipe(takeUntil(this.destroy$$)).subscribe(() => {\n if (this.opened) {\n requestAnimationFrame(() => {\n this.autoFocusFirstOption();\n });\n }\n });\n\n this.hasMatchedOption$ = combineLatest([\n this.allOptions$.pipe(\n map(customOptions =>\n customOptions.filter(option => option !== this.inputtingOption),\n ),\n // eslint-disable-next-line sonarjs/no-identical-functions\n switchMap(options =>\n options.length > 0\n ? combineLatest(options.map(option => option.value$))\n : of([] as T[]),\n ),\n ),\n this.filterString$,\n ]).pipe(\n map(([values, filterString]) =>\n values.some(value => this.trackFn(value) === filterString),\n ),\n publishReplay(1),\n refCount(),\n );\n\n this.hasVisibleOption$ = this.contentOptions.changes.pipe(\n startWith(this.contentOptions),\n switchMap((options: QueryList<OptionComponent<T>>) =>\n options.length > 0\n ? combineLatest(options.map(option => option.visible$))\n : of([] as boolean[]),\n ),\n map(visible => visible.some(value => value)),\n publishReplay(1),\n refCount(),\n );\n }\n\n ngOnDestroy() {\n this.optionContent?.detach();\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n\n openOption() {\n this.tooltipRef.createTooltip();\n }\n\n closeOption() {\n this.tooltipRef.disposeTooltip();\n }\n\n onShowOptions() {\n const exec = () => {\n this.containerWidth = this.selectRef.nativeElement.offsetWidth + 'px';\n\n requestAnimationFrame(() => {\n this.autoFocusFirstOption();\n });\n\n this.show.emit();\n };\n\n if (this.optionContent) {\n requestAnimationFrame(() => {\n this.optionContent.attach();\n exec();\n });\n } else {\n exec();\n }\n }\n\n onHideOptions() {\n if (this.onTouched) {\n this.onTouched();\n }\n if (!this.lazy) {\n this.optionContent?.detach();\n }\n this.resetFocusedOption();\n this.filterString = '';\n this.hide.emit();\n }\n\n onInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.filterString = value;\n\n requestAnimationFrame(() => {\n this.autoFocusFirstOption();\n });\n\n this.cdr.markForCheck();\n }\n\n onKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case 'ArrowDown':\n this.focusOptionDir('down');\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.focusOptionDir('up');\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Enter':\n this.selectFocusedOption();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n this.escSelect();\n event.stopPropagation();\n event.preventDefault();\n break;\n }\n }\n\n onOptionClick(option: OptionComponent<T>) {\n this.resetFocusedOption(option);\n this.selectOption(option);\n }\n\n protected autoFocusFirstOption() {\n if (this.defaultFirstOption && this.allowCreate && this.filterString) {\n const matchedOption = this.contentOptions.find(\n option => this.trackFn(option.value) === this.filterString,\n );\n this.resetFocusedOption(matchedOption || this.customOptions.first);\n return;\n }\n\n const selectedOption = this.allOptions.find(\n option => option.selected && option.visible,\n );\n if (this.defaultFirstOption) {\n this.resetFocusedOption(\n selectedOption ||\n this.allOptions.find(option => option.visible && !option.disabled),\n );\n } else if (selectedOption) {\n this.scrollToOption(selectedOption);\n }\n }\n\n protected focusOptionDir(dir: 'down' | 'up') {\n if (!this.opened) {\n this.openOption();\n return;\n }\n const visibleOptions = this.allOptions.filter(\n option => option.visible && !option.disabled,\n );\n if (visibleOptions.length === 0) {\n return;\n }\n const step = dir === 'down' ? 1 : -1;\n let i = visibleOptions.indexOf(this.focusedOption);\n i = i + step;\n if (i >= visibleOptions.length) {\n i = 0;\n } else if (i < 0) {\n i = visibleOptions.length - 1;\n }\n this.resetFocusedOption(visibleOptions[i]);\n }\n\n protected resetFocusedOption(focusedOption?: OptionComponent<T>) {\n if (this.focusedOption === focusedOption) {\n return;\n }\n\n if (this.focusedOption) {\n this.focusedOption.blur();\n }\n\n this.focusedOption = focusedOption;\n\n if (this.focusedOption) {\n this.focusedOption.focus();\n this.scrollToOption(this.focusedOption);\n }\n }\n\n protected scrollToOption(option: OptionComponent<T>) {\n if (this.optionListRef) {\n scrollIntoView(\n this.optionListRef.nativeElement,\n option.elRef.nativeElement,\n );\n }\n }\n\n protected selectFocusedOption() {\n if (!this.opened) {\n this.openOption();\n return;\n }\n if (this.focusedOption) {\n this.selectOption(this.focusedOption);\n }\n }\n\n protected escSelect() {\n this.closeOption();\n }\n\n private _trackFn<T>(value: T) {\n return value;\n }\n\n private _filterFn(\n filterString: string,\n { label, value }: SelectFilterOption<T>,\n ) {\n return (\n (typeof label === 'string' && label) ||\n this.labelFn?.(value) ||\n coerceString(this.trackFn(value))\n )\n ?.toLowerCase()\n .includes(filterString?.toLowerCase() ?? '');\n }\n\n abstract selectOption(option: OptionComponent<T>): void;\n abstract clearValue(event: Event): void;\n}\n","import { TemplateRef } from '@angular/core';\n\nexport interface SelectOption {\n label: string | TemplateRef<unknown>;\n labelContext?: unknown;\n}\n\nexport interface SelectFilterOption<T> extends SelectOption {\n value: T;\n}\n\nexport type OptionFilterFn<T> = (\n filter: string,\n option: SelectFilterOption<T>,\n) => boolean;\n\nexport type TrackFn<T, R = unknown> = (value: T) => R;\n\nexport type TagClassFn<\n V,\n T extends string | TemplateRef<unknown> = string | TemplateRef<unknown>\n> = (\n label: T,\n value: V,\n) => // tslint:disable-next-line: max-union-size\nstring | string[] | Set<string> | { [className: string]: unknown };\n\nexport enum SelectAllStatus {\n Empty = '',\n Checked = 'checked',\n Indeterminate = 'indeterminate',\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Input,\n QueryList,\n Renderer2,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\nimport { createWithMaxRowCount } from '../../input/tags-input/with-max-row-count';\nimport { ComponentSize } from '../../types';\nimport { Bem, buildBem, coerceAttrBoolean, coerceString } from '../../utils';\nimport { BaseSelect } from '../base-select';\nimport { OptionComponent } from '../option/option.component';\nimport {\n SelectAllStatus,\n SelectFilterOption,\n TagClassFn,\n} from '../select.types';\n\n@Component({\n selector: 'aui-multi-select',\n templateUrl: './multi-select.component.html',\n styleUrls: [\n '../../input/input.component.scss',\n '../../tag/tag.component.scss',\n './multi-select.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent),\n multi: true,\n },\n {\n provide: BaseSelect,\n useExisting: MultiSelectComponent,\n },\n ],\n})\nexport class MultiSelectComponent<T = unknown>\n extends BaseSelect<T, T[]>\n implements AfterContentInit, AfterViewInit {\n bem: Bem = buildBem('aui-multi-select');\n bemSelectAll: Bem = buildBem('aui-option');\n selectedOptions$: Observable<Array<SelectFilterOption<T>>>;\n selectAllStatus$: Observable<SelectAllStatus>;\n selectAllStatus: SelectAllStatus;\n hasEnabledOptions$: Observable<boolean>;\n\n private _allowSelectAll = false;\n selectedValues: T[] = [];\n values$ = this.value$$.asObservable();\n\n @Input()\n tagClassFn: TagClassFn<T>;\n\n @Input()\n maxRowCount = 0;\n\n @Input()\n customRowHeight = 0; // 0: use default style const value, > 1: for ```tagClassFn``` maybe affect lineHeight\n\n @Input()\n get allowSelectAll() {\n return this._allowSelectAll;\n }\n\n set allowSelectAll(val: boolean | '') {\n this._allowSelectAll = coerceAttrBoolean(val);\n }\n\n @ViewChild('inputRef', { static: true })\n inputRef: ElementRef<HTMLInputElement>;\n\n @ViewChild('inputValueMirror', { static: true })\n inputValueMirror: ElementRef<HTMLElement>;\n\n @HostBinding('style.position')\n get hostPosition() {\n return this.withMaxRowCount.hostPosition();\n }\n\n @HostBinding('style.display')\n get hostDisplay() {\n return this.withMaxRowCount.hostDisplay();\n }\n\n inputValue = '';\n\n get rootClass() {\n const size = this.size || ComponentSize.Medium;\n return `aui-input ${this.bem.block(size)} ${\n this.disabled ? 'isDisabled' : ''\n } ${this.focused ? 'isFocused' : ''} ${\n this.displayClearBtn ? 'isClearable' : ''\n } ${this.maxRowCount > 0 ? 'withHeightLimit' : ''}`;\n }\n\n get tagSize() {\n return this.size === ComponentSize.Large\n ? ComponentSize.Medium\n : ComponentSize.Mini;\n }\n\n get inputClass() {\n return `${this.bem.element('input', {\n hidden: this.inputReadonly,\n })} aui-tag aui-tag--${this.tagSize}`;\n }\n\n get displayClearBtn() {\n return !this.disabled && this.clearable && this.selectedValues.length;\n }\n\n get maxHeight() {\n return this.withMaxRowCount.maxHeight();\n }\n\n private readonly withMaxRowCount = createWithMaxRowCount(this);\n\n focused = false;\n\n trackByValue = (_: number, item: SelectFilterOption<T>) =>\n this.trackFn(item.value);\n\n constructor(cdr: ChangeDetectorRef, private readonly renderer: Renderer2) {\n super(cdr);\n this.values$.pipe(takeUntil(this.destroy$$)).subscribe(values => {\n this.selectedValues = values;\n });\n }\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n\n this.selectedOptions$ = combineLatest([\n this.value$,\n this.contentOptions.changes.pipe(\n startWith(this.contentOptions),\n switchMap((options: QueryList<OptionComponent<T>>) =>\n options.length > 0\n ? combineLatest(\n options.map(option =>\n combineLatest([\n option.value$,\n option.label$,\n option.labelContext$,\n ]).pipe(\n map(([value, label, labelContext]) => ({\n value,\n label,\n labelContext,\n })),\n ),\n ),\n )\n : of([] as Array<SelectFilterOption<T>>),\n ),\n ),\n ]).pipe(\n map(([values, options]) =>\n values.map(value => {\n const option = options.find(\n option => this.trackFn(option.value) === this.trackFn(value),\n );\n return option\n ? {\n label: option.label || coerceString(this.trackFn(option.value)),\n labelContext: option.labelContext,\n value: option.value,\n }\n : {\n label:\n this.labelFn?.(value) || coerceString(this.trackFn(value)),\n value,\n };\n }),\n ),\n publishReplay(1),\n refCount(),\n );\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.selectAllStatus$ = combineLatest([\n this.allOptions$,\n this.filterString$,\n ]).pipe(\n switchMap(([allOptions]) =>\n combineLatest([\n ...allOptions\n .filter(({ visible, disabled }) => visible && !disabled)\n ?.map(({ selected$ }) => selected$),\n ]),\n ),\n map(statuses => {\n const selected = statuses.filter(i => i);\n return selected.length === 0\n ? SelectAllStatus.Empty\n : selected.length !== statuses.length\n ? SelectAllStatus.Indeterminate\n : SelectAllStatus.Checked;\n }),\n startWith(SelectAllStatus.Empty),\n tap(selectAllStatus => (this.selectAllStatus = selectAllStatus)),\n publishReplay(1),\n refCount(),\n );\n this.hasEnabledOptions$ = combineLatest([\n this.allOptions$,\n this.filterString$,\n ]).pipe(\n map(\n ([allOptions]) =>\n !!allOptions.filter(({ visible, disabled }) => visible && !disabled)\n .length,\n ),\n );\n }\n\n onShowOptions() {\n super.onShowOptions();\n this.inputRef.nativeElement.focus();\n }\n\n onHideOptions() {\n super.onHideOptions();\n this.inputRef.nativeElement.value = '';\n this.renderer.removeStyle(this.inputRef.nativeElement, 'width');\n }\n\n onInput(event: Event) {\n super.onInput(event);\n this.setInputWidth();\n this.tooltipRef.updatePosition();\n }\n\n onInputFocus() {\n this.focused = true;\n }\n\n onInputBlur() {\n this.focused = false;\n this.closeOption();\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (\n event.key === 'Backspace' &&\n this.filterString === '' &&\n this.selectedValues.length > 0\n ) {\n this.removeValue(this.selectedValues[this.selectedValues.length - 1]);\n event.stopPropagation();\n event.preventDefault();\n } else if (event.key === 'Enter') {\n if (\n this.selectedValues\n .map(value => this.trackFn(value))\n .includes((event.target as HTMLInputElement).value)\n ) {\n return;\n }\n this.selectFocusedOption();\n event.stopPropagation();\n event.preventDefault();\n } else {\n super.onKeyDown(event);\n }\n }\n\n writeValue(val: T[]) {\n this.value$$.next(val || []);\n this.resetInput();\n requestAnimationFrame(() => {\n this.tooltipRef.updatePosition();\n });\n }\n\n selectOption(option: OptionComponent<T>) {\n if (option.selected) {\n this.removeValue(option.value);\n } else {\n this.addValue(option.value);\n }\n const isCustom = !this.contentOptions.some(\n ({ value }) => value === option.value,\n );\n if (isCustom) {\n this.resetFocusedOption();\n }\n }\n\n addValue(value: T) {\n const values = this.selectedValues.concat(value);\n this.emitValueChange(values);\n if (this.onChange) {\n this.resetInput();\n requestAnimationFrame(() => {\n this.tooltipRef.updatePosition();\n });\n }\n }\n\n removeValue(value: T) {\n const values = this.selectedValues.filter(\n item => this.trackFn(item) !== this.trackFn(value),\n );\n this.emitValueChange(values);\n if (this.onChange) {\n this.resetInput();\n requestAnimationFrame(() => {\n this.tooltipRef.updatePosition();\n });\n }\n }\n\n clearValue(event: Event) {\n this.emitValueChange([]);\n event.stopPropagation();\n event.preventDefault();\n }\n\n onSelectAllClick() {\n if (this.disabled) {\n return;\n }\n const visibleOptionsValue = this.allOptions\n .filter(({ visible, disabled }) => visible && !disabled)\n .map(({ value }) => value);\n if (this.selectAllStatus === SelectAllStatus.Checked) {\n this.emitValueChange(\n this.snapshot.value.filter(\n value => !visibleOptionsValue.includes(value),\n ),\n );\n } else {\n this.emitValueChange([\n ...new Set(this.snapshot.value.concat(visibleOptionsValue)),\n ]);\n }\n }\n\n private resetInput() {\n this.inputRef.nativeElement.value = '';\n this.setInputWidth();\n this.filterString = '';\n }\n\n // calculate input element width according to its value\n private setInputWidth() {\n const { value } = this.inputRef.nativeElement;\n if (!value.length) {\n this.inputValue = '';\n requestAnimationFrame(() => {\n this.renderer.removeStyle(this.inputRef.nativeElement, 'width');\n });\n } else {\n this.inputValue = value;\n requestAnimationFrame(() => {\n this.renderer.setStyle(\n this.inputRef.nativeElement,\n 'width',\n `${this.inputValueMirror.nativeElement.scrollWidth}px`,\n );\n });\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n QueryList,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n} from 'rxjs/operators';\n\nimport { OptionComponent } from '../option/option.component';\n\n@Component({\n selector: 'aui-option-group',\n templateUrl: './option-group.component.html',\n styleUrls: ['./option-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class OptionGroupComponent<T> implements AfterContentInit {\n @ContentChildren(forwardRef(() => OptionComponent))\n options: QueryList<OptionComponent<T>>;\n\n hasVisibleOption$: Observable<boolean>;\n\n ngAfterContentInit() {\n this.hasVisibleOption$ = this.options.changes.pipe(\n startWith(this.options),\n switchMap((options: QueryList<OptionComponent<T>>) =>\n options.length > 0\n ? combineLatest(options.map(node => node.visible$))\n : of([false]),\n ),\n map(visible => visible.some(value => value)),\n publishReplay(1),\n refCount(),\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-option-placeholder',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class OptionPlaceholderComponent {}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n} from 'rxjs/operators';\n\nimport { InputComponent } from '../input/public-api';\nimport { coerceString } from '../utils';\n\nimport { BaseSelect } from './base-select';\nimport { OptionComponent } from './option/option.component';\nimport { SelectOption } from './select.types';\n\n@Component({\n selector: 'aui-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n {\n provide: BaseSelect,\n useExisting: SelectComponent,\n },\n ],\n})\nexport class SelectComponent<T = unknown>\n extends BaseSelect<T>\n implements AfterContentInit {\n @ViewChild('inputRef', { static: true })\n inputRef: InputComponent;\n\n values$ = this.value$$.asObservable().pipe(map(val => [val]));\n\n selectedOption$: Observable<SelectOption>;\n\n hasSelected$: Observable<boolean>;\n\n get rootClass() {\n return `aui-select aui-select--${this.size}`;\n }\n\n get containerClass() {\n return `aui-option-container aui-option-container--${this.size}`;\n }\n\n isClearable = (hasSelected: boolean) =>\n !this.disabled && this.clearable && hasSelected;\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n\n this.selectedOption$ = combineLatest([\n this.contentOptions.changes.pipe(\n startWith(this.contentOptions),\n switchMap((options: QueryList<OptionComponent<T>>) =>\n combineLatest(options.map(option => option.selected$)).pipe(\n startWith(null as void),\n map(() => options.find(option => option.selected)),\n distinctUntilChanged(),\n switchMap(option =>\n option\n ? combineLatest([\n option.value$,\n option.label$,\n option.labelContext$,\n ]).pipe(\n map(([value, label, labelContext]) => ({\n value,\n label,\n labelContext,\n })),\n )\n : of(null as void),\n ),\n ),\n ),\n ),\n this.value$,\n ]).pipe(\n map(([option, value]) =>\n option\n ? {\n label:\n option.label ||\n this.labelFn?.(option.value) ||\n coerceString(this.trackFn(option.value)),\n // https://github.com/angular/angular/issues/24515\n labelContext: {\n ...(option.labelContext as Record<string, unknown>),\n },\n }\n : {\n label: this.labelFn?.(value) || coerceString(this.trackFn(value)),\n },\n ),\n publishReplay(1),\n refCount(),\n );\n\n this.hasSelected$ = this.selectedOption$.pipe(\n map(({ label }) => !!label),\n publishReplay(1),\n refCount(),\n );\n }\n\n onShowOptions() {\n super.onShowOptions();\n }\n\n onHideOptions() {\n super.onHideOptions();\n this.inputRef.elementRef.nativeElement.value = '';\n }\n\n writeValue(val: T) {\n this.value$$.next(val);\n this.closeOption();\n }\n\n selectOption(option: OptionComponent<T>) {\n this.emitValueChange(option.value);\n this.closeOption();\n }\n\n clearValue(event: Event) {\n this.emitValueChange(null);\n event.stopPropagation();\n event.preventDefault();\n }\n}\n","import { AfterContentInit, Directive, Input, forwardRef } from '@angular/core';\nimport {\n AbstractControl,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n ValidatorFn,\n} from '@angular/forms';\n\nimport { coerceAttrBoolean } from '../utils';\n\nimport { SelectComponent } from './select.component';\nimport { TrackFn } from './select.types';\n\n// @dynamic\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class AuiSelectValidators {\n static includes<T>(\n options: T[],\n trackFn: TrackFn<T> = val => val,\n ): ValidatorFn {\n return (control: AbstractControl) =>\n options.some(option => trackFn(option) === trackFn(control.value))\n ? null\n : {\n includes: control.value,\n };\n }\n}\n\n@Directive({\n selector:\n // tslint:disable-next-line: directive-selector\n 'aui-select[ngModel][includes],aui-select[formControl][includes],aui-select[formControlName][includes]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => IncludesDirective),\n multi: true,\n },\n ],\n})\nexport class IncludesDirective<T> implements Validator, AfterContentInit {\n @Input()\n get includes() {\n return this._includes;\n }\n\n set includes(val: boolean | '') {\n this._includes = coerceAttrBoolean(val);\n if (this.onValidatorChange) {\n this.onValidatorChange();\n }\n }\n\n @Input()\n trackFn: TrackFn<T>;\n\n private _includes = false;\n\n onValidatorChange: () => void;\n\n constructor(private readonly selectRef: SelectComponent<T>) {}\n\n ngAfterContentInit() {\n this.selectRef.contentOptions.changes.subscribe(() => {\n if (this.onValidatorChange) {\n this.onValidatorChange();\n }\n });\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChange = fn;\n }\n\n validate(control: AbstractControl): ValidationErrors {\n if (!this.selectRef.contentOptions || !control.value) {\n return;\n }\n return !this.includes\n ? null\n : AuiSelectValidators.includes(\n this.selectRef.contentOptions\n .filter(option => !option.disabled)\n .map(option => option.value),\n this.trackFn,\n )(control);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { I18nModule } from '../i18n/public-api';\nimport { IconModule } from '../icon/public-api';\nimport { InputModule } from '../input/public-api';\nimport { TagModule } from '../tag/public-api';\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport {\n OptionContentDirective,\n OptionGroupTitleDirective,\n} from './helper-directives';\nimport { MultiSelectComponent } from './multi-select/multi-select.component';\nimport { OptionGroupComponent } from './option-group/option-group.component';\nimport { OptionPlaceholderComponent } from './option-placeholder.component';\nimport { OptionComponent } from './option/option.component';\nimport { SelectComponent } from './select.component';\nimport { IncludesDirective } from './validators';\n\n@NgModule({\n imports: [\n CommonModule,\n InputModule,\n I18nModule,\n IconModule,\n TooltipModule,\n TagModule,\n ],\n declarations: [\n SelectComponent,\n OptionComponent,\n OptionGroupComponent,\n OptionPlaceholderComponent,\n MultiSelectComponent,\n IncludesDirective,\n OptionGroupTitleDirective,\n OptionContentDirective,\n ],\n exports: [\n SelectComponent,\n OptionComponent,\n OptionGroupComponent,\n OptionPlaceholderComponent,\n MultiSelectComponent,\n IncludesDirective,\n OptionGroupTitleDirective,\n OptionContentDirective,\n ],\n})\nexport class SelectModule {}\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of MatPaginatorIntl and\n * include it in a custom provider\n */\n@Injectable()\nexport class PaginatorIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the page size selector. */\n itemsPerPageLabel = 'perPage';\n\n jumperLabelPrefix = 'Goto';\n jumperLabelSuffix = '';\n\n getTotalLabel = (length: number) => `Total ${length}`;\n}\n\nexport function PAGINATOR_INTL_PROVIDER_FACTORY(parentIntl: PaginatorIntl) {\n return parentIntl || new PaginatorIntl();\n}\n\nexport const PAGINATOR_INTL_PROVIDER = {\n // If there is already an PaginatorIntl available, use that. Otherwise, provide a new one.\n provide: PaginatorIntl,\n deps: [[new Optional(), new SkipSelf(), PaginatorIntl]],\n useFactory: PAGINATOR_INTL_PROVIDER_FACTORY,\n};\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { PaginatorIntl } from './paginator-intl';\n\n/**\n * Change event object that is emitted when the user selects a\n * different page size or navigates to another page.\n * @deprecated use Output events directly instead\n */\nexport class PageEvent {\n /** The current page index. */\n pageIndex: number;\n\n /**\n * Index of the page that was selected previously.\n */\n previousPageIndex: number;\n\n /** The current page size */\n pageSize: number;\n\n /** The current total number of items being paged */\n length: number;\n}\n\n@Component({\n selector: 'aui-paginator',\n templateUrl: 'paginator.component.html',\n styleUrls: ['paginator.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class PaginatorComponent implements OnDestroy {\n bem: Bem = buildBem('aui-paginator');\n\n @Input()\n get pageIndex() {\n return this.currentPage - 1;\n }\n\n set pageIndex(val) {\n this.currentPage = val + 1;\n }\n\n @Input()\n currentPage = 1;\n\n @Input()\n pageSize = 20;\n\n @Input()\n pageSizeOptions: number[] = [20, 50, 100];\n\n @Input()\n total = 0;\n\n /**\n * @deprecated use `total` instead\n */\n @Input()\n get length() {\n return this.total;\n }\n\n set length(val) {\n this.total = val;\n }\n\n @Input()\n layout: string | string[] = 'total,pager,sizes';\n\n @Input()\n disabled = false;\n\n @Output()\n readonly currentPageChange = new EventEmitter<number>();\n\n @Output()\n readonly pageSizeChange = new EventEmitter<number>();\n\n private readonly intlChangeSub: Subscription;\n\n get pageCount() {\n return Math.ceil(this.total / this.pageSize);\n }\n\n constructor(\n public intl: PaginatorIntl,\n private readonly cdr: ChangeDetectorRef,\n ) {\n this.intlChangeSub = intl.changes.subscribe(() => this.cdr.markForCheck());\n }\n\n ngOnDestroy() {\n this.intlChangeSub.unsubscribe();\n }\n\n getLayoutArr() {\n return typeof this.layout === 'string'\n ? this.layout.split(',').map(item => item.trim())\n : this.layout;\n }\n\n getCenterPages() {\n const start = Math.min(\n Math.max(0, this.currentPage - 4),\n Math.max(0, this.pageCount - 7),\n );\n return Array.from({ length: Math.max(this.pageCount - 2, 0) })\n .fill(null)\n .map((_, index) => index + 2)\n .slice(start, start + 5);\n }\n\n jumpTo(page: number) {\n if (page === this.currentPage) {\n return;\n }\n this.currentPageChange.emit(page);\n }\n\n navigate(step: number) {\n this.jumpTo(Math.min(Math.max(this.currentPage + step, 1), this.pageCount));\n }\n\n changePageSize(size: number) {\n if (size === this.pageSize) {\n return;\n }\n this.pageSizeChange.emit(size);\n }\n\n onKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n const inputEl = event.target as HTMLInputElement;\n const nextPage = parseInt(inputEl.value, 10);\n if (nextPage > 0 && nextPage <= this.pageCount) {\n this.jumpTo(nextPage);\n } else {\n inputEl.value = this.currentPage + '';\n }\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n trackByIndex(index: number) {\n return index;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ButtonModule } from '../button/public-api';\nimport { IconModule } from '../icon/public-api';\nimport { InputModule } from '../input/public-api';\nimport { SelectModule } from '../select/public-api';\n\nimport { PAGINATOR_INTL_PROVIDER } from './paginator-intl';\nimport { PaginatorComponent } from './paginator.component';\n\n@NgModule({\n imports: [CommonModule, ButtonModule, IconModule, SelectModule, InputModule],\n declarations: [PaginatorComponent],\n exports: [PaginatorComponent],\n providers: [PAGINATOR_INTL_PROVIDER],\n})\nexport class PaginatorModule {}\n","import { ValueOf } from '../types';\n\nexport const InlineAlertType = {\n Primary: 'primary',\n Success: 'success',\n Warning: 'warning',\n Danger: 'danger',\n Error: 'error',\n Info: 'info',\n} as const;\n\nexport type InlineAlertType = ValueOf<typeof InlineAlertType>;\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[auiInlineAlertTitle]',\n exportAs: 'auiInlineAlertTitle',\n})\nexport class InlineAlertTitleDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { InlineAlertTitleDirective } from './helper-directives';\nimport { InlineAlertType } from './inline-alert.types';\n\n@Component({\n selector: 'aui-inline-alert',\n templateUrl: './inline-alert.component.html',\n styleUrls: ['./inline-alert.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class InlineAlertComponent {\n bem: Bem = buildBem('aui-inline-alert');\n\n @Input()\n title: string;\n\n @Input()\n content: string;\n\n @Input()\n closable = false;\n\n @Input()\n type: InlineAlertType = InlineAlertType.Info;\n\n @Output()\n close = new EventEmitter<void>();\n\n @ContentChild(InlineAlertTitleDirective)\n titleRef: InlineAlertTitleDirective;\n\n visible = true;\n\n iconMap(type: InlineAlertType) {\n switch (type) {\n case InlineAlertType.Success:\n return 'check_circle_s';\n case InlineAlertType.Warning:\n return 'exclamation_circle_s';\n case InlineAlertType.Danger:\n case InlineAlertType.Error:\n return 'exclamation_triangle_s';\n case InlineAlertType.Primary:\n case InlineAlertType.Info:\n default:\n return 'info_circle_s';\n }\n }\n\n closeSelf() {\n this.visible = false;\n this.close.emit();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { InlineAlertTitleDirective } from './helper-directives';\nimport { InlineAlertComponent } from './inline-alert.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [InlineAlertComponent, InlineAlertTitleDirective],\n exports: [InlineAlertComponent, InlineAlertTitleDirective],\n})\nexport class InlineAlertModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-breadcrumb-item',\n templateUrl: './breadcrumb-item.component.html',\n styleUrls: ['./breadcrumb-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class BreadcrumbItemComponent {\n get separator() {\n return this._separator;\n }\n\n set separator(val) {\n this._separator = val;\n this.cdr.markForCheck();\n }\n\n get separatorIcon() {\n return this._separatorIcon;\n }\n\n set separatorIcon(val) {\n this._separatorIcon = val;\n this.cdr.markForCheck();\n }\n\n private _separator = '/';\n private _separatorIcon = '';\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\n\n@Component({\n selector: 'aui-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class BreadcrumbComponent implements AfterContentInit {\n @Input()\n get separator() {\n return this._separator;\n }\n\n set separator(val) {\n if (val === this._separator) {\n return;\n }\n this._separator = val;\n if (this.items) {\n this.items.forEach(item => {\n item.separator = val;\n });\n }\n }\n\n @Input()\n get separatorIcon() {\n return this._separatorIcon;\n }\n\n set separatorIcon(val) {\n if (val === this._separatorIcon) {\n return;\n }\n this._separatorIcon = val;\n if (this.items) {\n this.items.forEach(item => {\n item.separatorIcon = val;\n });\n }\n }\n\n @ContentChildren(BreadcrumbItemComponent)\n items: QueryList<BreadcrumbItemComponent>;\n\n private _separator = '/';\n private _separatorIcon = '';\n\n ngAfterContentInit() {\n this.items.forEach(item => {\n item.separator = this.separator;\n item.separatorIcon = this.separatorIcon;\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { BreadcrumbComponent } from './breadcrumb.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [BreadcrumbComponent, BreadcrumbItemComponent],\n exports: [BreadcrumbComponent, BreadcrumbItemComponent],\n})\nexport class BreadcrumbModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-message-wrapper',\n styleUrls: ['./message-wrapper.component.scss'],\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class MessageWrapperComponent {\n constructor(public elementRef: ElementRef) {}\n}\n","import {\n AnimationTriggerMetadata,\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\n\nexport const MessageAnimations: {\n readonly inOut: AnimationTriggerMetadata;\n} = {\n inOut: trigger('inOut', [\n state(\n 'flyRight, flyLeft',\n style({ opacity: 1, transform: 'translateX(0)' }),\n ),\n state('slideDown', style({ opacity: 1, transform: 'translateY(0)' })),\n transition('* => slideDown', [\n style({ opacity: 0, transform: 'translateY(-50%)' }),\n animate('100ms ease-in-out'),\n ]),\n state('slideUp', style({ opacity: 0, 'margin-top': '-50%' })),\n transition('* => slideUp', [\n style({ opacity: 1, 'margin-top': '0' }),\n animate('100ms 200ms ease-in-out'),\n ]),\n\n state('flyLeft', style({ opacity: 1, transform: 'translateX(0)' })),\n transition('* => flyLeft', [\n style({ opacity: 0, transform: 'translateX(5%)' }),\n animate('100ms ease-in-out'),\n ]),\n state('flyUp', style({ opacity: 0, 'margin-top': '-30%' })),\n transition('* => flyUp', [\n style({ opacity: 1, 'margin-top': '0' }),\n animate('100ms 150ms ease-in-out'),\n ]),\n state('void', style({ opacity: 0 })),\n state('true', style({ opacity: 1 })),\n state('false', style({ opacity: 0 })),\n transition('* => true', animate('150ms cubic-bezier(0.0, 0.0, 0.2, 1)')),\n transition('* => void', animate('150ms cubic-bezier(0.4, 0.0, 1, 1)')),\n ]),\n};\n","import { InjectionToken } from '@angular/core';\n\nexport enum MessageType {\n Error = 'error',\n Success = 'success',\n Warning = 'warning',\n Info = 'info',\n}\n\n/**\n * messageOptions: contains Basic configuration\n * Just for some containers like Message-Container\n * Detailed document: http://confluence.alaudatech.com/pages/viewpage.action?pageId=23383163\n */\n\nexport class MessageConfig {\n /**\n * the message type\n */\n type?: MessageType;\n\n /**\n * The id of this message, The same ID can only have one at the same time\n */\n id?: string | number;\n\n /**\n * automatically shut down after a few seconds, if <= 0 ,non automatic closure\n */\n duration?: number;\n\n /**\n * message content\n */\n content?: string;\n}\n\nexport interface MessageGlobalConfig {\n /**\n * max instance in one time\n */\n maxStack: number;\n duration: number | { [key in MessageType]: number };\n}\n\nexport const MESSAGE_CONFIG = new InjectionToken<MessageGlobalConfig>(\n 'MESSAGE_CONFIG',\n);\n\nexport const MESSAGE_DEFAULT_CONFIG = {\n duration: 3000,\n maxStack: 8,\n};\n","import { AnimationEvent } from '@angular/animations';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { MessageAnimations } from './message-animations';\nimport { MessageConfig, MessageType } from './message.config';\n\nlet uniqueId = 0;\n\nconst typeIcon: { [key: string]: string } = {\n [MessageType.Error]: 'exclamation_triangle_s',\n [MessageType.Success]: 'check_circle_s',\n [MessageType.Warning]: 'exclamation_circle_s',\n [MessageType.Info]: 'info_circle_s',\n};\n\n@Component({\n selector: 'aui-message',\n templateUrl: './message.component.html',\n animations: [MessageAnimations.inOut],\n styleUrls: ['./message.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class MessageComponent implements AfterViewInit {\n protected readonly animateStartState: string = 'slideDown';\n protected readonly animateStartEnd: string = 'slideUp';\n\n bem: Bem = buildBem('aui-message');\n animateState = this.animateStartState;\n uniqueId = `aui-message-${uniqueId++}`;\n beforeClosed: Subject<void> = new Subject();\n afterClosed: Subject<void> = new Subject();\n\n id: string | number;\n type: MessageType;\n content: string;\n duration: number;\n\n get icon(): string {\n return typeIcon[this.type];\n }\n\n protected timerId: number;\n\n constructor(\n protected viewContainerRef: ViewContainerRef,\n protected cdr: ChangeDetectorRef,\n ) {}\n\n ngAfterViewInit(): void {\n if (this.duration > 0) {\n this.timerId = window.setTimeout(() => {\n this.remove();\n }, this.duration);\n }\n }\n\n setConfig(config: MessageConfig) {\n this.id = config.id;\n this.type = config.type;\n this.content = config.content;\n this.duration = config.duration;\n }\n\n remove() {\n clearTimeout(this.timerId);\n this.beforeClosed.next();\n this.beforeClosed.complete();\n this.animateState = this.animateStartEnd;\n this.cdr.markForCheck();\n }\n\n onAnimationEnd(event: AnimationEvent) {\n try {\n if (\n this.viewContainerRef.element &&\n event.toState === this.animateStartEnd\n ) {\n (this.viewContainerRef.element.nativeElement as HTMLElement).remove();\n this.afterClosed.next();\n this.afterClosed.complete();\n }\n } catch {\n throw new Error('No outer layer can be found!');\n }\n }\n}\n","import { Overlay } from '@angular/cdk/overlay';\nimport {\n ComponentPortal,\n ComponentType,\n DomPortalOutlet,\n} from '@angular/cdk/portal';\nimport {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n ElementRef,\n Injector,\n} from '@angular/core';\n\nimport { MessageWrapperComponent } from './message-wrapper.component';\nimport { MessageComponent } from './message.component';\nimport {\n MessageConfig,\n MessageGlobalConfig,\n MessageType,\n} from './message.config';\n\nexport abstract class BaseMessage<\n Wrapper extends MessageWrapperComponent,\n Component extends MessageComponent,\n Config extends MessageConfig\n> {\n wrapperInstance: { elementRef: ElementRef<HTMLElement> };\n componentRefs: Array<ComponentRef<Component>> = [];\n\n constructor(\n protected overlay: Overlay,\n protected injector: Injector,\n protected applicationRef: ApplicationRef,\n protected cfr: ComponentFactoryResolver,\n protected overlayPaneClassName: string,\n protected wrapperClass: ComponentType<Wrapper>,\n protected componentClass: ComponentType<Component>,\n protected globalConfig: MessageGlobalConfig,\n ) {\n this.initWrapperContainer();\n }\n\n create(config: Config): ComponentRef<Component>;\n create(config: MessageType, content: string): ComponentRef<Component>;\n create(config: Config | MessageType, content?: string) {\n const type = content ? (config as MessageType) : (config as Config).type;\n const mergedConfig = {\n duration:\n typeof this.globalConfig.duration === 'number'\n ? this.globalConfig.duration\n : this.globalConfig.duration[type],\n ...(content\n ? { type: config as MessageType, content }\n : (config as Config)),\n } as Config;\n\n this.removeNeedless(mergedConfig.id);\n\n const componentRef = this.initComponentRef(mergedConfig);\n componentRef.instance.afterClosed.subscribe(() => {\n componentRef.destroy();\n this.remove(componentRef.instance.uniqueId);\n });\n this.componentRefs.push(componentRef);\n return componentRef;\n }\n\n createType(type: MessageType, option: Config | string) {\n return typeof option === 'string'\n ? this.create(type, option)\n : this.create({ ...option, type } as Config);\n }\n\n success(option: Config | string): ComponentRef<Component> {\n return this.createType(MessageType.Success, option);\n }\n\n warning(option: Config | string): ComponentRef<Component> {\n return this.createType(MessageType.Warning, option);\n }\n\n error(option: Config | string): ComponentRef<Component> {\n return this.createType(MessageType.Error, option);\n }\n\n info(option: Config | string): ComponentRef<Component> {\n return this.createType(MessageType.Info, option);\n }\n\n remove(id: string | number) {\n const index = this.componentRefs.findIndex(\n ref => ref.instance.uniqueId === id || ref.instance.id === id,\n );\n if (index >= 0) {\n this.componentRefs[index].instance.remove();\n this.componentRefs.splice(index, 1);\n }\n }\n\n removeAll() {\n this.componentRefs.forEach(ref => {\n ref.instance.remove();\n });\n this.componentRefs = [];\n }\n\n protected initWrapperContainer() {\n this.wrapperInstance = this.overlay\n .create({\n panelClass: this.overlayPaneClassName,\n })\n .attach(new ComponentPortal(this.wrapperClass)).instance;\n }\n\n protected initComponentRef(config: Config): ComponentRef<Component> {\n const portalHost = new DomPortalOutlet(\n this.wrapperInstance.elementRef.nativeElement,\n this.cfr,\n this.applicationRef,\n this.injector,\n );\n const componentRef = portalHost.attachComponentPortal(\n new ComponentPortal(this.componentClass),\n );\n componentRef.instance.setConfig(config);\n return componentRef;\n }\n\n protected removeNeedless(id: string | number) {\n if (id) {\n this.remove(id);\n }\n if (\n this.globalConfig.maxStack &&\n this.componentRefs.length >= this.globalConfig.maxStack\n ) {\n this.componentRefs\n .slice(0, this.componentRefs.length - this.globalConfig.maxStack + 1)\n .forEach(ref => this.remove(ref.instance.uniqueId));\n }\n }\n}\n","import { Overlay } from '@angular/cdk/overlay';\nimport {\n ApplicationRef,\n ComponentFactoryResolver,\n Inject,\n Injectable,\n Injector,\n Optional,\n} from '@angular/core';\n\nimport { BaseMessage } from './base-message';\nimport { MessageWrapperComponent } from './message-wrapper.component';\nimport { MessageComponent } from './message.component';\nimport {\n MESSAGE_CONFIG,\n MESSAGE_DEFAULT_CONFIG,\n MessageConfig,\n MessageGlobalConfig,\n} from './message.config';\n\n@Injectable()\nexport class MessageService extends BaseMessage<\n MessageWrapperComponent,\n MessageComponent,\n MessageConfig\n> {\n constructor(\n overlay: Overlay,\n injector: Injector,\n applicationRef: ApplicationRef,\n cfr: ComponentFactoryResolver,\n @Optional()\n @Inject(MESSAGE_CONFIG)\n globalConfig: MessageGlobalConfig,\n ) {\n super(\n overlay,\n injector,\n applicationRef,\n cfr,\n 'aui-message-overlay-pane',\n MessageWrapperComponent,\n MessageComponent,\n {\n ...MESSAGE_DEFAULT_CONFIG,\n ...globalConfig,\n },\n );\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/icon.module';\n\nimport { MessageWrapperComponent } from './message-wrapper.component';\nimport { MessageComponent } from './message.component';\nimport { MessageService } from './message.service';\n\n@NgModule({\n imports: [CommonModule, OverlayModule, IconModule],\n declarations: [MessageWrapperComponent, MessageComponent],\n entryComponents: [MessageWrapperComponent, MessageComponent],\n providers: [MessageService],\n})\nexport class MessageModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { MessageWrapperComponent } from '../message/message-wrapper.component';\n\n@Component({\n selector: 'aui-notification-wrapper',\n styleUrls: ['./notification-wrapper.component.scss'],\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class NotificationWrapperComponent extends MessageWrapperComponent {\n constructor(public elementRef: ElementRef) {\n super(elementRef);\n }\n}\n","import { CdkPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentFactory,\n ComponentFactoryResolver,\n EmbeddedViewRef,\n HostListener,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { MessageAnimations } from '../message/message-animations';\nimport { MessageComponent } from '../message/message.component';\nimport { Bem, buildBem } from '../utils';\n\nimport { NotificationConfig } from './notification.config';\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'aui-notification',\n templateUrl: './notification.component.html',\n animations: [MessageAnimations.inOut],\n styleUrls: ['./notification.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class NotificationComponent\n extends MessageComponent\n implements AfterViewInit {\n protected readonly animateStartState = 'flyLeft';\n protected readonly animateStartEnd = 'flyUp';\n\n bem: Bem = buildBem('aui-notification');\n animateState = this.animateStartState;\n uniqueId = `aui-notification-${uniqueId++}`;\n isHover = false;\n\n title: string;\n remains: number;\n childComponentInstance: unknown;\n customClass = '';\n footerPortal: TemplatePortal<unknown>;\n\n @ViewChild(CdkPortalOutlet, { static: true })\n private readonly portalOutlet: CdkPortalOutlet;\n\n @ViewChild('modalComponent', { read: ViewContainerRef, static: true })\n private readonly modalEl: ViewContainerRef;\n\n constructor(\n viewContainerRef: ViewContainerRef,\n cdr: ChangeDetectorRef,\n private readonly cfr: ComponentFactoryResolver,\n ) {\n super(viewContainerRef, cdr);\n }\n\n @HostListener('mouseenter')\n onMouseEnter() {\n if (this.duration <= 0) {\n return;\n }\n this.isHover = true;\n clearTimeout(this.timerId);\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n if (this.duration <= 0) {\n return;\n }\n this.isHover = false;\n this.countDown();\n }\n\n ngAfterViewInit() {\n if (this.remains > 0) {\n this.countDown();\n }\n }\n\n setConfig(config: NotificationConfig) {\n super.setConfig(config);\n this.title = config.title;\n this.remains = Math.ceil(this.duration / 1000);\n this.customClass = config.customClass || '';\n\n if (config.contentRef) {\n if (config.contentRef instanceof TemplateRef) {\n const portal = new TemplatePortal(config.contentRef, null, {\n $implicit: config.context,\n });\n this.attachTemplatePortal(portal);\n } else {\n this.attachComponentRef(\n this.cfr.resolveComponentFactory(config.contentRef),\n );\n }\n }\n\n if (config.footerRef && config.footerRef instanceof TemplateRef) {\n this.footerPortal = new TemplatePortal(config.footerRef, null, {\n $implicit: config.context,\n });\n }\n }\n\n /**\n * Attach a TemplatePortal as content to this modal container.\n * @param portal Portal to be attached as the modal content.\n */\n private attachTemplatePortal<C>(\n portal: TemplatePortal<C>,\n ): EmbeddedViewRef<C> {\n return this.portalOutlet.attachTemplatePortal(portal);\n }\n\n private attachComponentRef(componentRef: ComponentFactory<unknown>) {\n this.childComponentInstance = this.modalEl.createComponent(\n componentRef,\n null,\n this.viewContainerRef.injector,\n ).instance;\n return this.childComponentInstance;\n }\n\n private countDown() {\n this.timerId = window.setTimeout(() => {\n this.remains -= 1;\n if (this.remains === 0) {\n this.remove();\n } else {\n this.countDown();\n }\n this.cdr.markForCheck();\n }, 1000);\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { InjectionToken, TemplateRef } from '@angular/core';\n\nimport { MessageConfig, MessageGlobalConfig } from '../message/public-api';\n\nexport interface NotificationConfig extends MessageConfig {\n title?: string;\n contentRef?: TemplateRef<any> | ComponentType<void>;\n footerRef?: TemplateRef<any>;\n context?: unknown;\n customClass?: string;\n}\n\nexport type NotificationGlobalConfig = MessageGlobalConfig;\n\nexport const NOTIFICATION_CONFIG = new InjectionToken<NotificationGlobalConfig>(\n 'NOTIFICATION_CONFIG',\n);\n\nexport const NOTIFICATION_DEFAULT_CONFIG = {\n duration: 6000,\n maxStack: 8,\n};\n","import { Overlay } from '@angular/cdk/overlay';\nimport {\n ApplicationRef,\n ComponentFactoryResolver,\n Inject,\n Injectable,\n Injector,\n Optional,\n} from '@angular/core';\n\nimport { BaseMessage } from '../message/base-message';\n\nimport { NotificationWrapperComponent } from './notification-wrapper.component';\nimport { NotificationComponent } from './notification.component';\nimport {\n NOTIFICATION_CONFIG,\n NOTIFICATION_DEFAULT_CONFIG,\n NotificationConfig,\n NotificationGlobalConfig,\n} from './notification.config';\n\n@Injectable()\nexport class NotificationService extends BaseMessage<\n NotificationWrapperComponent,\n NotificationComponent,\n NotificationConfig\n> {\n constructor(\n overlay: Overlay,\n injector: Injector,\n applicationRef: ApplicationRef,\n cfr: ComponentFactoryResolver,\n @Optional()\n @Inject(NOTIFICATION_CONFIG)\n globalConfig: NotificationGlobalConfig,\n ) {\n super(\n overlay,\n injector,\n applicationRef,\n cfr,\n 'aui-notification-overlay-pane',\n NotificationWrapperComponent,\n NotificationComponent,\n {\n ...NOTIFICATION_DEFAULT_CONFIG,\n ...globalConfig,\n },\n );\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';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { NotificationWrapperComponent } from './notification-wrapper.component';\nimport { NotificationComponent } from './notification.component';\nimport { NotificationService } from './notification.service';\n\n@NgModule({\n imports: [CommonModule, OverlayModule, PortalModule, IconModule],\n declarations: [NotificationWrapperComponent, NotificationComponent],\n entryComponents: [NotificationWrapperComponent, NotificationComponent],\n providers: [NotificationService],\n})\nexport class NotificationModule {}\n","import { CdkPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n selector: 'aui-tab-body',\n templateUrl: './tab-body.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class TabBodyComponent implements OnDestroy {\n private _content: TemplatePortal;\n\n content$ = new BehaviorSubject<TemplatePortal>(null);\n\n /** The portal host inside of this container into which the tab body content will be loaded. */\n @ViewChild(CdkPortalOutlet, { static: true })\n _portalOutlet: CdkPortalOutlet;\n\n /** The tab body content to display. */\n @Input()\n get content() {\n return this._content;\n }\n\n set content(content: TemplatePortal) {\n if (this._content !== content) {\n this.content$.next(content);\n }\n this._content = content;\n }\n\n ngOnDestroy() {\n this.content$.complete();\n }\n}\n","import { CdkPortal, CdkPortalOutlet } from '@angular/cdk/portal';\nimport {\n ComponentFactoryResolver,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { coerceAttrBoolean } from '../utils';\n\nimport { TabBodyComponent } from './tab-body.component';\n\n/** Used to flag tab labels for use with the portal directive */\n@Directive({\n selector: '[auiTabLabel]',\n})\nexport class TabLabelDirective extends CdkPortal {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef,\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\n/**\n * Lazy load the embedded template for a tab content.\n */\n@Directive({\n selector: '[auiTabContent]',\n})\nexport class TabContentDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n\n/** Used to project additional template from host to the tab header. */\n@Directive({\n selector: '[auiTabHeaderAddon]',\n})\nexport class TabHeaderAddonDirective extends CdkPortal {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef,\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\n/**\n * Used in the `aui-tab-group` view to display tab labels.\n */\n@Directive({\n selector: '[auiTabLabelWrapper]',\n host: {\n '[class.aui-tab-label]': 'true',\n '[class.aui-tab-label--disabled]': '!!disabled',\n },\n})\nexport class TabLabelWrapperDirective {\n private _disabled: boolean;\n\n /** Whether or not the tab is disabled */\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value: boolean | '') {\n this._disabled = coerceAttrBoolean(value);\n }\n\n getOffsetLeft(): number {\n return this.elementRef.nativeElement.offsetLeft;\n }\n\n getOffsetWidth(): number {\n return this.elementRef.nativeElement.offsetWidth;\n }\n\n /** Sets focus on the wrapper element */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n}\n\n@Directive({\n selector: '[auiTabTitle]',\n})\nexport class TabTitleDirective extends CdkPortal {\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef,\n ) {\n super(templateRef, viewContainerRef);\n }\n}\n\n/**\n * The portal host directive for the contents of the tab.\n */\n@Directive({\n selector: '[auiTabBodyHost]',\n})\nexport class TabBodyPortalDirective\n extends CdkPortalOutlet\n implements OnInit, OnDestroy {\n private _hostSubscription = Subscription.EMPTY;\n\n constructor(\n componentFactoryResolver: ComponentFactoryResolver,\n viewContainerRef: ViewContainerRef,\n private readonly _host: TabBodyComponent,\n ) {\n super(componentFactoryResolver, viewContainerRef);\n }\n\n /** Set initial visibility or set up subscription for changing visibility. */\n ngOnInit(): void {\n super.ngOnInit();\n this._hostSubscription = this._host.content$.subscribe(content => {\n if (this.hasAttached) {\n this.detach();\n }\n this.attach(content);\n });\n }\n\n ngOnDestroy() {\n this._hostSubscription.unsubscribe();\n }\n}\n","import { ValueOf } from '../types';\n\nexport const TabSize = {\n /** 卡片级尺寸 */\n Large: 'large',\n\n /** 页面级尺寸 */\n Medium: 'medium',\n\n /** 小尺寸 */\n Small: 'small',\n} as const;\n\nexport type TabSize = ValueOf<typeof TabSize>;\n\nexport const TabType = {\n Line: 'line',\n Card: 'card',\n} as const;\n\nexport type TabType = ValueOf<typeof TabType>;\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n NgZone,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { TabType } from './tabs.types';\n\n@Component({\n selector: 'aui-tab-header-active-indicator',\n templateUrl: './tab-header-active-indicator.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class TabHeaderActiveIndicatorComponent {\n @Input()\n type: TabType = TabType.Line;\n\n bem: Bem = buildBem('aui-tab-header-active-indicator');\n\n constructor(\n private readonly _elementRef: ElementRef<HTMLElement>,\n private readonly _ngZone: NgZone,\n ) {}\n\n /**\n * Calculates the styles from the provided element in order to align the indicator to that element.\n * Shows the indicator if previously set as hidden.\n * @param element\n */\n alignToElement(element: HTMLElement) {\n if (typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => this._setStyles(element));\n });\n } else {\n this._setStyles(element);\n }\n }\n\n /**\n * Sets the proper styles to the element.\n * @param element\n */\n private _setStyles(element: HTMLElement) {\n const positions = this._getElementPosition(element);\n const nativeEl = this._elementRef.nativeElement;\n nativeEl.style.left = positions.left;\n nativeEl.style.width = positions.width;\n }\n\n private _getElementPosition(element: HTMLElement) {\n return {\n left: element ? (element.offsetLeft || 0) + 'px' : '0',\n width: element ? (element.offsetWidth || 0) + 'px' : '0',\n };\n }\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Bem, buildBem, coerceNumber } from '../utils';\n\nimport {\n TabHeaderAddonDirective,\n TabLabelWrapperDirective,\n TabTitleDirective,\n} from './tab-directives';\nimport { TabHeaderActiveIndicatorComponent } from './tab-header-active-indicator.component';\nimport { TabSize, TabType } from './tabs.types';\n\n/**\n * The directions that scrolling can go in when the header's tabs exceed the header width. 'After'\n * will scroll the header towards the end of the tabs list and 'before' will scroll towards the\n * beginning of the list.\n */\nexport type ScrollDirection = 'after' | 'before';\n/**\n * The distance in pixels that will be overshot when scrolling a tab label into view. This helps\n * provide a small affordance to the label next to it.\n */\nconst EXAGGERATED_OVERSCROLL = 60;\n\n@Component({\n selector: 'aui-tab-header',\n templateUrl: './tab-header.component.html',\n styleUrls: ['./tab-header.component.scss'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabHeaderComponent\n implements OnDestroy, AfterContentChecked, AfterContentInit {\n bem: Bem = buildBem('aui-tab-header');\n\n _showAddon = false;\n\n /** Whether the controls for pagination should be displayed */\n _showPaginationControls = false;\n\n /** Whether the tab list can be scrolled more towards the end of the tab label list. */\n _disableScrollAfter = true;\n\n /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */\n _disableScrollBefore = true;\n\n /** Whether the scroll distance has changed and should be applied after the view is checked. */\n private _scrollDistanceChanged: boolean;\n\n /** Whether the header should scroll to the selected index after the view has been checked. */\n private _selectedIndexChanged = false;\n\n /** The distance in pixels that the tab labels should be translated to the left. */\n private _scrollDistance = 0;\n\n private _selectedIndex = 0;\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Used to manage focus between the tabs. */\n private _keyManager: FocusKeyManager<TabLabelWrapperDirective>;\n\n /**\n * The number of tab labels that are displayed on the header. When this changes, the header\n * should re-evaluate the scroll position.\n */\n private _tabLabelCount: number;\n\n @Input()\n type: TabType = TabType.Line;\n\n @Input()\n size: TabSize = TabSize.Medium;\n\n /** The index of the active tab. */\n @Input()\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n set selectedIndex(value: number) {\n value = coerceNumber(value);\n this._selectedIndexChanged = this._selectedIndex !== value;\n this._selectedIndex = value;\n\n if (this._keyManager) {\n this._keyManager.updateActiveItem(value);\n }\n }\n\n /** Event emitted when the option is selected. */\n @Output()\n readonly selectFocusedIndex = new EventEmitter<number>();\n\n /** Event emitted when a label is focused. */\n @Output()\n readonly indexFocused = new EventEmitter<number>();\n\n @ContentChild(TabHeaderAddonDirective, { static: false })\n _headerAddon: TabHeaderAddonDirective;\n\n @ContentChild(TabTitleDirective, { static: false })\n _title: TabTitleDirective;\n\n @ContentChildren(TabLabelWrapperDirective)\n /**\n * workaround for @link https://github.com/microsoft/TypeScript/pull/42425\n */\n _labelWrappers: QueryList<TabLabelWrapperDirective & { disabled?: boolean }>;\n\n @ViewChild('tabListContainer', { static: true })\n _tabListContainer: ElementRef<HTMLElement>;\n\n @ViewChild('tabList', { static: true })\n _tabList: ElementRef<HTMLElement>;\n\n @ViewChild('paginationWrapper', { static: true })\n _paginationWrapper: ElementRef<HTMLElement>;\n\n @ViewChild(TabHeaderActiveIndicatorComponent, { static: true })\n _activeIndicator: TabHeaderActiveIndicatorComponent;\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n ngAfterContentChecked(): void {\n // If the number of tab labels have changed, check if scrolling should be enabled\n if (this._tabLabelCount !== this._labelWrappers.length) {\n this._updatePagination();\n this._tabLabelCount = this._labelWrappers.length;\n this._changeDetectorRef.markForCheck();\n }\n\n // If the selected index has changed, scroll to the label and check if the scrolling controls\n // should be disabled.\n if (this._selectedIndexChanged) {\n this._scrollToLabel(this._selectedIndex);\n this._checkScrollingControls();\n this._alignActiveIndicatorToSelectedTab();\n this._selectedIndexChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n\n // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n // then translate the header to reflect this.\n if (this._scrollDistanceChanged) {\n this._updateTabScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n\n if (this._showAddon !== !!this._headerAddon) {\n this._showAddon = !!this._headerAddon;\n this._updatePagination();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Aligns the ink bar to the selected tab on load.\n */\n ngAfterContentInit() {\n const resize = this._viewportRuler.change(150);\n const realign = () => {\n this._updatePagination();\n this._alignActiveIndicatorToSelectedTab();\n };\n\n this._keyManager = new FocusKeyManager(this._labelWrappers)\n .withHorizontalOrientation('ltr')\n .withWrap();\n this._keyManager.updateActiveItem(0);\n\n // Defer the first call in order to allow for slower browsers to lay out the elements.\n // This helps in cases where the user lands directly on a page with paginated tabs.\n typeof requestAnimationFrame !== 'undefined'\n ? requestAnimationFrame(realign)\n : realign();\n\n // On window resize, realign the ink bar and update the orientation of\n // the key manager if the direction has changed.\n resize.pipe(takeUntil(this._destroyed)).subscribe(() => {\n realign();\n });\n\n // If there is a change in the focus key manager we need to emit the `indexFocused`\n // event in order to provide a public event that notifies about focus changes. Also we realign\n // the tabs container by scrolling the new focused tab into the visible section.\n this._keyManager.change\n .pipe(takeUntil(this._destroyed))\n .subscribe(newFocusIndex => {\n this.indexFocused.emit(newFocusIndex);\n this._setTabFocus(newFocusIndex);\n });\n }\n\n /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\n get scrollDistance(): number {\n return this._scrollDistance;\n }\n\n set scrollDistance(v: number) {\n this._scrollDistance = Math.max(\n 0,\n Math.min(this._getMaxScrollDistance(), v),\n );\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n }\n\n /** Tracks which element has focus; used for keyboard navigation */\n get focusIndex(): number {\n return this._keyManager ? this._keyManager.activeItemIndex : 0;\n }\n\n /** When the focus index is set, we must manually send focus to the correct label */\n set focusIndex(value: number) {\n if (\n !this._isValidIndex(value) ||\n this.focusIndex === value ||\n !this._keyManager\n ) {\n return;\n }\n this._keyManager.setActiveItem(value);\n }\n\n /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n */\n _isValidIndex(index: number): boolean {\n if (!this._labelWrappers) {\n return true;\n }\n const tab = this._labelWrappers\n ? this._labelWrappers.toArray()[index]\n : null;\n return !!tab && !tab.disabled;\n }\n\n _handleKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Home':\n this._keyManager.setFirstItemActive();\n event.preventDefault();\n break;\n case 'End':\n this._keyManager.setLastItemActive();\n event.preventDefault();\n break;\n case 'Enter':\n case 'Space':\n this.selectFocusedIndex.emit(this.focusIndex);\n event.preventDefault();\n break;\n default:\n this._keyManager.onKeydown(event);\n }\n }\n\n /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n */\n _setTabFocus(tabIndex: number) {\n if (this._showPaginationControls) {\n this._scrollToLabel(tabIndex);\n }\n if (this._labelWrappers?.length > 0) {\n this._labelWrappers.toArray()[tabIndex].focus();\n // Do not let the browser manage scrolling to focus the element, this will be handled\n // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n // should be the full width minus the offset width.\n const containerEl = this._tabListContainer.nativeElement;\n containerEl.scrollLeft = 0;\n }\n }\n\n /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollToLabel(labelIndex: number) {\n const selectedLabel = this._labelWrappers\n ? this._labelWrappers.toArray()[labelIndex]\n : null;\n if (!selectedLabel) {\n return;\n }\n // The view length is the visible width of the tab labels.\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n const labelBeforePos = selectedLabel.getOffsetLeft();\n const labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();\n const beforeVisiblePos = this.scrollDistance;\n const afterVisiblePos = this.scrollDistance + viewLength;\n if (labelBeforePos < beforeVisiblePos) {\n // Scroll header to move label to the before direction\n this.scrollDistance -=\n beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\n } else if (labelAfterPos > afterVisiblePos) {\n // Scroll header to move label to the after direction\n this.scrollDistance +=\n labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\n }\n }\n\n /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollHeader(scrollDir: ScrollDirection) {\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n // Move the scroll distance one-third the length of the tab list's viewport.\n this.scrollDistance += ((scrollDir === 'before' ? -1 : 1) * viewLength) / 3;\n }\n\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n */\n _onContentChanges() {\n this._updatePagination();\n this._alignActiveIndicatorToSelectedTab();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Updating the view whether pagination should be enabled or not\n */\n _updatePagination() {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\n }\n\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkPaginationEnabled() {\n const isEnabled =\n this._tabList.nativeElement.scrollWidth >\n this._paginationWrapper.nativeElement.offsetWidth + 2; // 2 is the border size\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n const detectChanges = isEnabled !== this._showPaginationControls;\n this._showPaginationControls = isEnabled;\n\n if (detectChanges) {\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkScrollingControls() {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance === 0;\n this._disableScrollAfter =\n this.scrollDistance === this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _getMaxScrollDistance(): number {\n const lengthOfTabList = this._tabList.nativeElement.scrollWidth;\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n return lengthOfTabList - viewLength || 0;\n }\n\n /** Performs the CSS transformation on the tab list that will cause the list to scroll. */\n _updateTabScrollPosition() {\n const scrollDistance = this.scrollDistance;\n const translateX = -scrollDistance;\n // Don't use `translate3d` here because we don't want to create a new layer. A new layer\n // seems to cause flickering and overflow in Internet Explorer. For example, the ink bar\n // and ripples will exceed the boundaries of the visible tab bar.\n // See: https://github.com/angular/material2/issues/10276\n this._tabList.nativeElement.style.transform = `translateX(${translateX}px)`;\n }\n\n /** Tells the active indicator to align itself to the current label wrapper */\n _alignActiveIndicatorToSelectedTab(): void {\n const selectedLabelWrapper =\n this._labelWrappers?.length > 0\n ? this._labelWrappers.toArray()[this.selectedIndex].elementRef\n .nativeElement\n : null;\n this._activeIndicator.alignToElement(selectedLabelWrapper);\n }\n\n constructor(\n private readonly _changeDetectorRef: ChangeDetectorRef,\n private readonly _viewportRuler: ViewportRuler,\n ) {}\n}\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\n\n@Injectable()\nexport class TabContextService {\n private readonly active$$ = new BehaviorSubject(false);\n\n /**\n * Whether the tab is currently active.\n */\n get isActive() {\n return this.active$$.value;\n }\n\n set isActive(isActive: boolean) {\n this.active$$.next(isActive);\n }\n\n readonly active$: Observable<boolean> = (this._parent\n ? combineLatest([this._parent.active$, this.active$$]).pipe(\n map(([a, b]) => a && b),\n )\n : this.active$$\n ).pipe(distinctUntilChanged());\n\n constructor(\n @Optional()\n @SkipSelf()\n private readonly _parent: TabContextService,\n ) {}\n}\n","/* eslint-disable no-prototype-builtins */\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { coerceAttrBoolean } from '../utils';\n\nimport { TabContextService } from './tab-context.service';\nimport { TabContentDirective, TabLabelDirective } from './tab-directives';\n\n@Component({\n selector: 'aui-tab',\n exportAs: 'auiTab',\n templateUrl: './tab.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n providers: [TabContextService],\n})\nexport class TabComponent implements AfterContentInit, OnDestroy, OnChanges {\n @Input()\n name: string;\n\n /** Plain text label for the tab, used when there is no template label. */\n @Input('label')\n textLabel = '';\n\n /** Whether or not to show the close button in the header */\n @Input()\n closeable = false;\n\n /** Whether or not the tab is disabled */\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value: boolean | '') {\n this._disabled = coerceAttrBoolean(value);\n }\n\n @Output()\n close = new EventEmitter<void>();\n\n /** Content for the tab label given by `<ng-template [auiTabLabel]>`. */\n @ContentChild(TabLabelDirective, { static: false })\n templateLabel: TabLabelDirective;\n\n /**\n * Template provided in the tab content that will be used if present, used to enable lazy-loading\n */\n @ContentChild(TabContentDirective, { read: TemplateRef, static: false })\n _explicitContent: TemplateRef<any>;\n\n /** Template inside the AuiTab view that contains an `<ng-content>`. */\n @ViewChild(TemplateRef, { static: true })\n _implicitContent: TemplateRef<any>;\n\n get content(): TemplatePortal | null {\n return this._contentPortal;\n }\n\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n */\n position: number | null = null;\n\n /**\n * The initial relatively index origin of the tab if it was created and selected after there\n * was already a selected tab. Provides context of what position the tab should originate from.\n */\n origin: number | null = null;\n\n /** Emits whenever the internal state of the tab changes. */\n readonly _stateChanges = new Subject<void>();\n\n /** Portal that will be the hosted content of the tab */\n private _contentPortal: TemplatePortal | null = null;\n\n private _disabled = false;\n\n constructor(\n private readonly _viewContainerRef: ViewContainerRef,\n public readonly tabContext: TabContextService,\n ) {}\n\n ngAfterContentInit(): void {\n this._contentPortal = new TemplatePortal(\n this._explicitContent || this._implicitContent,\n this._viewContainerRef,\n );\n }\n\n ngOnDestroy(): void {\n this._stateChanges.complete();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.hasOwnProperty('textLabel') ||\n changes.hasOwnProperty('disabled') ||\n changes.hasOwnProperty('closeable')\n ) {\n this._stateChanges.next();\n }\n }\n}\n","/* eslint-disable no-prototype-builtins */\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, Subscription, merge } from 'rxjs';\n\nimport { Bem, buildBem, coerceNumber } from '../utils';\n\nimport { TabHeaderAddonDirective, TabTitleDirective } from './tab-directives';\nimport { TabHeaderComponent } from './tab-header.component';\nimport { TabComponent } from './tab.component';\nimport { TabSize, TabType } from './tabs.types';\n\n/** A simple change event emitted on focus or selection changes. */\nexport class TabChangeEvent {\n /** Index of the currently-selected tab. */\n index: number;\n /** Reference to the currently-selected tab. */\n tab: TabComponent;\n}\n\n@Component({\n selector: 'aui-tab-group',\n exportAs: 'auiTabGroup',\n templateUrl: './tab-group.component.html',\n styleUrls: ['./tab-group.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class TabGroupComponent\n implements OnChanges, AfterContentChecked, AfterContentInit, OnDestroy {\n bem: Bem = buildBem('aui-tab-group');\n\n @ContentChildren(TabComponent)\n _tabs: QueryList<TabComponent>;\n\n @ContentChild(TabHeaderAddonDirective, { static: false })\n _headerAddon: TabHeaderAddonDirective;\n\n @ViewChild(TabHeaderComponent, { static: false })\n _tabHeader: TabHeaderComponent;\n\n @ContentChild(TabTitleDirective, { static: false })\n _tabTitle: TabTitleDirective;\n\n /** The tab index that should be selected after the content has been checked. */\n private _indexToSelect: number | null = 0;\n\n /** Subscription to tabs being added/removed. */\n private _tabsSubscription = Subscription.EMPTY;\n\n /** Subscription to changes in the tab labels. */\n private _tabLabelSubscription = Subscription.EMPTY;\n\n private _selectedIndex: number | null = null;\n private _tab: string = null;\n private _type: TabType = TabType.Line;\n private _size: TabSize = TabSize.Medium;\n\n /** true lazy mode for template ref children */\n private _lazy: boolean;\n\n private _previousHeaderAddon: TabHeaderAddonDirective;\n\n /** Emits whenever the type changes */\n readonly _typeChange = new Subject<void>();\n\n /** Emits whenever the size changes */\n readonly _sizeChange = new Subject<void>();\n\n /** The index of the active tab. */\n @Input()\n get selectedIndex(): number | null {\n return this._selectedIndex;\n }\n\n set selectedIndex(value: number | null) {\n this._indexToSelect = coerceNumber(value, null);\n this._changeActivatedTabs();\n }\n\n @Input()\n get tab(): string {\n return this._tab;\n }\n\n set tab(value: string) {\n this._tab = value;\n if (this._tabs) {\n this.selectedIndex = this._findIndexByTab(value);\n }\n }\n\n @Input()\n get type() {\n return this._type;\n }\n\n set type(type: TabType) {\n this._type = type;\n }\n\n @Input()\n title: string | TemplateRef<unknown>;\n\n @Input()\n get size() {\n return this._size;\n }\n\n set size(val) {\n if (!val || this._size === val) {\n return;\n }\n this._size = val;\n }\n\n @Input()\n get lazy() {\n return this._lazy;\n }\n\n set lazy(lazy: boolean) {\n if (this._lazy === lazy) {\n return;\n }\n this._lazy = lazy;\n if (lazy) {\n this._changeActivatedTabs();\n } else {\n this.activatedTabs.length = 0;\n }\n }\n\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\n @Output()\n readonly selectedIndexChange = new EventEmitter<number>();\n\n @Output()\n readonly tabChange = new EventEmitter<string>();\n\n /** Event emitted when the tab selection has changed. */\n @Output()\n readonly selectedTabChange = new EventEmitter<TabChangeEvent>(true);\n\n /** Event emitted when focus has changed within a tab group. */\n @Output()\n readonly focusChange: EventEmitter<TabChangeEvent> = new EventEmitter<TabChangeEvent>();\n\n constructor(private readonly _changeDetectorRef: ChangeDetectorRef) {}\n\n activatedTabs: TabComponent[] = [];\n\n get activeTab() {\n return this._tabs.length > 0 && this.selectedIndex !== null\n ? this._tabs.toArray()[this.selectedIndex]\n : null;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hasOwnProperty('type')) {\n this._typeChange.next();\n }\n\n if (changes.hasOwnProperty('size')) {\n this._sizeChange.next();\n }\n }\n\n /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index.\n */\n ngAfterContentChecked(): void {\n // Don't clamp the `indexToSelect` immediately in the setter because it can happen that\n // the amount of tabs changes before the actual change detection runs.\n const indexToSelect = (this._indexToSelect = this._clampTabIndex(\n this._indexToSelect,\n ));\n\n // If there is a change in selected index, emit a change event. Should not trigger if\n // the selected index has not yet been initialized.\n if (this._selectedIndex !== indexToSelect && this._selectedIndex != null) {\n this._changeActivatedTabs();\n const tabChangeEvent = this._createChangeEvent(indexToSelect);\n this.selectedTabChange.emit(tabChangeEvent);\n // Emitting this value after change detection has run\n // since the checked content may contain this variable'\n Promise.resolve().then(() => {\n this.selectedIndexChange.emit(indexToSelect);\n this.tabChange.emit(this._tabs.get(indexToSelect).name);\n });\n }\n\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this._tabs.forEach((tab: TabComponent, index: number) => {\n tab.position = index - indexToSelect;\n tab.tabContext.isActive = index === indexToSelect;\n // If there is already a selected tab, then set up an origin for the next selected tab\n // if it doesn't have one already.\n if (this._selectedIndex != null && tab.position === 0 && !tab.origin) {\n tab.origin = indexToSelect - this._selectedIndex;\n }\n });\n\n if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._changeDetectorRef.markForCheck();\n }\n\n if (this._previousHeaderAddon !== this._headerAddon) {\n this._previousHeaderAddon = this._headerAddon;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngAfterContentInit() {\n if (this.tab) {\n this._indexToSelect = this._findIndexByTab(this.tab);\n }\n\n this._changeActivatedTabs();\n this._subscribeToTabLabels();\n // Subscribe to changes in the amount of tabs, in order to be\n // able to re-render the content as new tabs are added or removed.\n this._tabsSubscription = this._tabs.changes.subscribe(() => {\n const tabs = this._tabs.toArray();\n if (this._lazy) {\n this.activatedTabs = this.activatedTabs.filter(tab =>\n tabs.includes(tab),\n );\n }\n const indexToSelect = this._clampTabIndex(this._indexToSelect);\n // Maintain the previously-selected tab if a new tab is added or removed and there is no\n // explicit change that selects a different tab.\n if (indexToSelect === this._selectedIndex) {\n for (const [i, tab] of tabs.entries()) {\n if (tab.tabContext.isActive) {\n // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed\n // event, otherwise the consumer may end up in an infinite loop in some edge cases like\n // adding a tab within the `selectedIndexChange` event.\n this._indexToSelect = this._selectedIndex = i;\n break;\n }\n }\n }\n this._changeActivatedTabs();\n this._subscribeToTabLabels();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n\n this._typeChange.complete();\n this._sizeChange.complete();\n }\n\n /** Handle click events, setting new selected index if appropriate. */\n _handleClick(tab: TabComponent, idx: number) {\n if (!tab.disabled) {\n this.selectedIndex = this._tabHeader.focusIndex = idx;\n }\n }\n\n _focusChanged(index: number) {\n this.focusChange.emit(this._createChangeEvent(index));\n }\n\n /** Re-aligns the ink bar to the selected tab element. */\n realignActiveIndicator() {\n if (this._tabHeader) {\n this._tabHeader._alignActiveIndicatorToSelectedTab();\n }\n }\n\n private _changeActivatedTabs() {\n if (\n !this._lazy ||\n !this._tabs ||\n this._indexToSelect < 0 ||\n this._indexToSelect >= this._tabs.length\n ) {\n return;\n }\n const tab = this._tabs.find((_, index) => index === this._indexToSelect);\n if (tab && !this.activatedTabs.includes(tab)) {\n this.activatedTabs.push(tab);\n }\n }\n\n /** Clamps the given index to the bounds of 0 and the tabs length. */\n private _clampTabIndex(index: number | null): number {\n // Note the `|| 0`, which ensures that values like NaN can't get through\n // and which would otherwise throw the component into an infinite loop\n // (since Math.max(NaN, 0) === NaN).\n return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\n }\n\n private _findIndexByTab(name: string) {\n return Math.max(\n this._tabs.toArray().findIndex(tab => tab.name === name),\n 0,\n );\n }\n\n private _createChangeEvent(index: number): TabChangeEvent {\n const event = new TabChangeEvent();\n event.index = index;\n if (this._tabs?.length > 0) {\n event.tab = this._tabs.toArray()[index];\n }\n return event;\n }\n\n /**\n * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is\n * on the Tab component, whereas the data binding is inside the TabGroup. In order for the\n * binding to be updated, we need to subscribe to changes in it and trigger change detection\n * manually.\n */\n private _subscribeToTabLabels() {\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n this._tabLabelSubscription = merge(\n ...this._tabs.map(tab => tab._stateChanges),\n this._typeChange,\n this._sizeChange,\n ).subscribe(() => {\n this.realignActiveIndicator();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** Retrieves the tabindex for the tab. */\n _getTabIndex(tab: TabComponent, idx: number): number | null {\n if (tab.disabled) {\n return null;\n }\n return this.selectedIndex === idx ? 0 : -1;\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '../button/public-api';\nimport { IconModule } from '../icon/public-api';\n\nimport { TabBodyComponent } from './tab-body.component';\nimport {\n TabBodyPortalDirective,\n TabContentDirective,\n TabHeaderAddonDirective,\n TabLabelDirective,\n TabLabelWrapperDirective,\n TabTitleDirective,\n} from './tab-directives';\nimport { TabGroupComponent } from './tab-group.component';\nimport { TabHeaderActiveIndicatorComponent } from './tab-header-active-indicator.component';\nimport { TabHeaderComponent } from './tab-header.component';\nimport { TabComponent } from './tab.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n PortalModule,\n ButtonModule,\n IconModule,\n A11yModule,\n ObserversModule,\n ],\n declarations: [\n TabGroupComponent,\n TabComponent,\n TabLabelDirective,\n TabContentDirective,\n TabHeaderAddonDirective,\n TabTitleDirective,\n TabHeaderComponent,\n TabBodyComponent,\n TabBodyPortalDirective,\n TabLabelWrapperDirective,\n TabHeaderActiveIndicatorComponent,\n ],\n exports: [\n TabGroupComponent,\n TabComponent,\n TabLabelDirective,\n TabContentDirective,\n TabHeaderAddonDirective,\n TabTitleDirective,\n TabLabelWrapperDirective,\n TabHeaderComponent,\n ],\n})\nexport class TabsModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-tree-node-placeholder',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class TreeNodePlaceholderComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { CommonFormControl } from '../form/public-api';\nimport { InputComponent } from '../input/public-api';\nimport { TrackFn } from '../select/select.types';\nimport { TooltipDirective } from '../tooltip/public-api';\nimport { coerceAttrBoolean, coerceString } from '../utils';\n\nimport { TreeNodeComponent } from './tree-node/tree-node.component';\nimport { TreeNode } from './tree-select.types';\n\n@Component({\n selector: 'aui-tree-select',\n templateUrl: './tree-select.component.html',\n styleUrls: ['./tree-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TreeSelectComponent),\n multi: true,\n },\n ],\n})\nexport class TreeSelectComponent<T = unknown> extends CommonFormControl<T> {\n @Input()\n get nodesData() {\n return this._nodesData;\n }\n\n set nodesData(val) {\n if (!val || val === this._nodesData) {\n return;\n }\n this._nodesData = val;\n this.flattedNodes = this.flatNodesData(val);\n this.updateSelectDisplay(this.propValue);\n }\n\n @Input()\n loading = false;\n\n @Input()\n placeholder = '';\n\n @Input()\n get filterable() {\n return this._filterable;\n }\n\n set filterable(val: boolean | '') {\n this._filterable = coerceAttrBoolean(val);\n }\n\n @Input()\n get clearable() {\n return this._clearable;\n }\n\n set clearable(val: boolean | '') {\n this._clearable = coerceAttrBoolean(val);\n }\n\n @Input()\n get leafOnly() {\n return this._leafOnly;\n }\n\n set leafOnly(val: boolean | '') {\n this._leafOnly = coerceAttrBoolean(val);\n }\n\n @Input()\n filterFn = this._filterFn;\n\n @Input()\n trackFn: TrackFn<T> = this._trackFn;\n\n @Input()\n labelFn?: (value: T) => string;\n\n @Output()\n filterChange = new EventEmitter<string>();\n\n @Output()\n show = new EventEmitter<void>();\n\n @Output()\n hide = new EventEmitter<void>();\n\n @ViewChild('selectRef', { static: true })\n protected selectRef: ElementRef<HTMLElement>;\n\n @ViewChild('tooltipRef', { static: true })\n protected tooltipRef: TooltipDirective;\n\n @ViewChild('nodeListRef', { static: true })\n nodeListRef: ElementRef;\n\n @ViewChild('inputRef', { static: true })\n inputRef: InputComponent;\n\n private _nodesData: Array<TreeNode<T>> = [];\n private _filterString = '';\n private _filterable = false;\n private _clearable = false;\n private _leafOnly = false;\n private readonly filterString$$ = new BehaviorSubject(this.filterString);\n\n filterString$: Observable<string> = this.filterString$$.asObservable();\n\n containerWidth: string;\n displayText = '';\n flattedNodes: Array<TreeNode<T>> = [];\n\n get isClearable() {\n return !this.disabled && this.clearable && this.getInputValue();\n }\n\n get opened() {\n return this.tooltipRef.isCreated;\n }\n\n get inputReadonly() {\n return !(this.filterable && this.opened);\n }\n\n get filterString() {\n return this._filterString;\n }\n\n set filterString(val) {\n if (val !== this._filterString) {\n this._filterString = val;\n this.filterString$$.next(val);\n this.filterChange.emit(val);\n }\n }\n\n openNodes() {\n this.tooltipRef.createTooltip();\n }\n\n closeNodes() {\n this.tooltipRef.disposeTooltip();\n }\n\n updatePosition() {\n this.tooltipRef.updatePosition();\n }\n\n onShowNodes() {\n this.containerWidth = this.selectRef.nativeElement.offsetWidth + 'px';\n this.show.emit();\n this.cdr.detectChanges();\n }\n\n onHideNodes() {\n if (this.onTouched) {\n this.onTouched();\n }\n this.filterString = '';\n this.hide.emit();\n }\n\n onInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.filterString = value;\n this.cdr.markForCheck();\n }\n\n onNodeClick(node: TreeNodeComponent<T>) {\n this.selectNode(node);\n }\n\n getVisibleNodeCount() {\n return this.flattedNodes.filter(node =>\n this.filterFn(this.filterString, node),\n ).length;\n }\n\n selectNode(node: TreeNodeComponent<T>) {\n if (!node.selected) {\n this.emitValueChange(node.nodeData.value);\n if (this.onChange) {\n this.closeNodes();\n }\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.closeOption();\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n closeOption() {\n this.tooltipRef.disposeTooltip();\n }\n\n updateSelectDisplay(value: any) {\n const pickedNode = this.flattedNodes.find(\n node => this.trackFn(node.value) === this.trackFn(value),\n );\n if (pickedNode) {\n this.displayText = this.getLabelFromNode(pickedNode).toString();\n } else {\n this.displayText = coerceString(this.trackFn(value));\n }\n }\n\n clearValue(event: Event) {\n this.emitValueChange(null);\n event.stopPropagation();\n event.preventDefault();\n }\n\n writeValue(value: T) {\n this.value$$.next(value);\n this.updateSelectDisplay(value);\n this.closeNodes();\n }\n\n getPlaceholder() {\n return this.filterable && this.opened ? this.displayText : this.placeholder;\n }\n\n getInputValue() {\n return this.filterable && this.opened ? '' : this.displayText;\n }\n\n // `this` is not available in `trackBy`...\n trackByLabel = (_: number, node: TreeNode<T>) => this.getLabelFromNode(node);\n\n private flatNodesData(nodes: Array<TreeNode<T>> = []): Array<TreeNode<T>> {\n return nodes.reduce(\n (prevValue: Array<TreeNode<T>>, currentNode) =>\n prevValue.concat(currentNode, this.flatNodesData(currentNode.children)),\n [],\n );\n }\n\n private getLabelFromNode(node: TreeNode<T>) {\n return (\n node.label ||\n this.labelFn?.(node.value) ||\n coerceString(this.trackFn(node.value))\n );\n }\n\n private _filterFn(filterString: string, node: TreeNode<T>) {\n return this.getLabelFromNode(node)?.includes(filterString ?? '');\n }\n\n private _trackFn<T>(value: T) {\n return value;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { BehaviorSubject, Observable, Subject, combineLatest, of } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\nimport { Bem, buildBem, coerceAttrBoolean, scrollIntoView } from '../../utils';\nimport { TreeSelectComponent } from '../tree-select.component';\nimport { TreeNode } from '../tree-select.types';\n\n@Component({\n selector: 'aui-tree-node',\n templateUrl: './tree-node.component.html',\n styleUrls: ['./tree-node.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class TreeNodeComponent<T> implements AfterViewInit, OnDestroy {\n bem: Bem = buildBem('aui-tree-node');\n\n private _nodeData: TreeNode<T>;\n private readonly nodeData$$ = new BehaviorSubject<TreeNode<T>>(this.nodeData);\n private readonly destroy$$ = new Subject<void>();\n\n @Input()\n get nodeData() {\n return this._nodeData;\n }\n\n set nodeData(val) {\n if (val === this._nodeData) {\n return;\n }\n this._nodeData = val;\n this.nodeData$$.next(val);\n }\n\n @Input()\n get leafOnly() {\n return this._leafOnly;\n }\n\n set leafOnly(val: boolean | '') {\n this._leafOnly = coerceAttrBoolean(val);\n }\n\n @ViewChild('titleRef', { static: true })\n titleRef: ElementRef;\n\n @ViewChildren(TreeNodeComponent)\n childNodes: QueryList<TreeNodeComponent<T>>;\n\n selected = false;\n visible = true;\n isLeaf = false;\n\n private _leafOnly = true;\n private readonly select: TreeSelectComponent<T>;\n selected$: Observable<boolean>;\n selfVisible$: Observable<boolean>;\n visible$: Observable<boolean>;\n\n constructor(\n @Inject(forwardRef(() => TreeSelectComponent))\n select: any, // FIXME: workaround temporarily\n private readonly cdr: ChangeDetectorRef,\n ) {\n this.select = select;\n this.selected$ = combineLatest([\n this.select.value$,\n this.nodeData$$.pipe(map(data => data.value)),\n ]).pipe(\n map(\n ([selectValue, selfValue]) =>\n selectValue &&\n this.select.trackFn(selectValue) === this.select.trackFn(selfValue),\n ),\n tap(selected => {\n this.selected = selected;\n }),\n publishReplay(1),\n refCount(),\n );\n this.selfVisible$ = combineLatest([\n this.select.filterString$,\n this.nodeData$$,\n ]).pipe(\n map(([filterString, nodeData]) =>\n this.select.filterFn(filterString, nodeData),\n ),\n publishReplay(1),\n refCount(),\n );\n }\n\n ngAfterViewInit() {\n const hasVisibleChildNodes$ = this.childNodes.changes.pipe(\n startWith(this.childNodes),\n switchMap((nodes: QueryList<TreeNodeComponent<T>>) =>\n nodes.length > 0\n ? combineLatest(nodes.map(node => node.visible$))\n : of([false]),\n ),\n map(visible => visible.some(value => value)),\n tap(hasVisibleChildren => (this.isLeaf = !hasVisibleChildren)),\n );\n this.visible$ = combineLatest([\n this.selfVisible$,\n hasVisibleChildNodes$,\n ]).pipe(\n map(visible => visible.some(value => value)),\n publishReplay(1),\n refCount(),\n );\n\n this.visible$.pipe(takeUntil(this.destroy$$)).subscribe(visible => {\n this.visible = visible;\n this.cdr.markForCheck();\n });\n this.selected$.pipe(takeUntil(this.destroy$$)).subscribe(selected => {\n this.selected = selected;\n this.cdr.markForCheck();\n });\n\n if (this.selected) {\n requestAnimationFrame(() => {\n this.scrollToNode(this);\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n\n onClick() {\n if (this.nodeData.disabled) {\n return;\n }\n if (this.leafOnly && !this.isLeaf) {\n this.switchExpanded();\n return;\n }\n this.select.onNodeClick(this);\n }\n\n switchExpanded() {\n this.nodeData.expanded = !this.nodeData.expanded;\n if (this.nodeData.expanded && this.childNodes.last) {\n requestAnimationFrame(() => {\n this.scrollToNode(this.childNodes.last);\n });\n }\n requestAnimationFrame(() => {\n this.select.updatePosition();\n });\n }\n\n getIcon() {\n return this.nodeData.expanded\n ? this.nodeData.expandedIcon || this.nodeData.icon\n : this.nodeData.icon;\n }\n\n trackByLabel(_: number, data: TreeNode<T>) {\n return data.label;\n }\n\n scrollToNode(node: TreeNodeComponent<T>) {\n if (this.select.nodeListRef) {\n scrollIntoView(\n this.select.nodeListRef.nativeElement,\n node.titleRef.nativeElement,\n );\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\nimport { InputModule } from '../input/public-api';\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport { TreeNodePlaceholderComponent } from './tree-node-placeholder.component';\nimport { TreeNodeComponent } from './tree-node/tree-node.component';\nimport { TreeSelectComponent } from './tree-select.component';\n\n@NgModule({\n imports: [CommonModule, TooltipModule, IconModule, InputModule],\n declarations: [\n TreeSelectComponent,\n TreeNodeComponent,\n TreeNodePlaceholderComponent,\n ],\n exports: [\n TreeSelectComponent,\n TreeNodeComponent,\n TreeNodePlaceholderComponent,\n ],\n})\nexport class TreeSelectModule {}\n","// tslint:disable: no-output-rename\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Host,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { BehaviorSubject, Observable, Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n BaseTooltip,\n TooltipTrigger,\n TooltipType,\n} from '../tooltip/public-api';\nimport { scrollIntoView } from '../utils';\n\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { AutoCompleteContext, SuggestionFilterFn } from './autocomplete.types';\nimport { SuggestionComponent } from './suggestion/suggestion.component';\n\n@Directive({\n selector: 'input[auiAutocomplete],textarea[auiAutocomplete]',\n exportAs: 'auiAutocomplete',\n inputs: ['class:auiAutocompleteClass'],\n host: {\n autocomplete: 'off',\n },\n})\nexport class AutoCompleteDirective\n extends BaseTooltip<AutoCompleteContext>\n implements OnInit, OnDestroy, AfterViewInit {\n @Input('auiAutocomplete')\n get autocomplete() {\n return this._autocomplete;\n }\n\n set autocomplete(val) {\n if (val === this._autocomplete) {\n return;\n }\n val.directive$$.next(this);\n this._autocomplete = val;\n this.content = val.template;\n }\n\n @Input('auiAutocompleteFilterFn')\n @Input()\n get filterFn() {\n return this._filterFn;\n }\n\n set filterFn(val) {\n if (val !== this._filterFn) {\n this._filterFn = val;\n this.filterFn$$.next(val);\n }\n }\n\n @Input('auiAutocompleteDefaultFirstSuggestion')\n defaultFirstSuggestion = true;\n\n @Input('auiAutocompleteTrigger')\n suggestionTrigger: 'auto' | 'input' = 'auto';\n\n declare innerSelector: string;\n\n @Output('auiAutocompleteShow')\n show: EventEmitter<void>;\n\n @Output('auiAutocompleteHide')\n hide: EventEmitter<void>;\n\n @Output('auiAutocompleteSelected')\n selected = new EventEmitter<string>();\n\n private _autocomplete: AutocompleteComponent;\n private focusedSuggestion: SuggestionComponent;\n\n private readonly inputValue$$ = new BehaviorSubject<string>('');\n private readonly filterFn$$ = new BehaviorSubject<SuggestionFilterFn>(\n this.filterFn,\n );\n\n private readonly unsubscribe$ = new Subject<void>();\n\n inputValue$: Observable<string> = this.inputValue$$.asObservable();\n filterFn$: Observable<SuggestionFilterFn> = this.filterFn$$.asObservable();\n\n get input(): HTMLInputElement {\n const el = this.elRef.nativeElement;\n return this.innerSelector ? el.querySelector(this.innerSelector) : el;\n }\n\n constructor(\n overlay: Overlay,\n viewContainerRef: ViewContainerRef,\n elRef: ElementRef<HTMLInputElement>,\n renderer: Renderer2,\n cdr: ChangeDetectorRef,\n ngZone: NgZone,\n @Optional()\n @Host()\n private readonly ngControl: NgControl,\n ) {\n super(overlay, viewContainerRef, elRef, renderer, cdr, ngZone);\n this.type = TooltipType.Plain;\n this.trigger = TooltipTrigger.Manual;\n this.position = 'bottom start';\n this.hideOnClick = true;\n }\n\n ngOnInit() {\n this.show.subscribe(() => {\n this.updateSuggestionsContext();\n });\n this.hide.subscribe(() => {\n this.resetFocusedSuggestion();\n });\n\n if (this.ngControl) {\n this.ngControl.valueChanges\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((value: string | string[]) => {\n if (!Array.isArray(value)) {\n this.inputValue$$.next(value);\n }\n });\n }\n }\n\n ngAfterViewInit() {\n const input = this.input;\n\n fromEvent(input, 'focus')\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => this.onFocus());\n\n fromEvent(input, 'blur')\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => this.onBlur());\n\n fromEvent(input, 'input')\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(ev => this.onInput(ev));\n\n fromEvent(input, 'keydown')\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((ev: KeyboardEvent) => this.onKeyDown(ev));\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n onFocus() {\n if (this.suggestionTrigger === 'auto') {\n super.onFocus();\n }\n }\n\n onInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.inputValue$$.next(value);\n this.createTooltip();\n }\n\n onKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case 'ArrowDown':\n this.focusSuggestionDir('down');\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.focusSuggestionDir('up');\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Enter':\n if (this.focusedSuggestion) {\n this.selectFocusedOption();\n event.stopPropagation();\n event.preventDefault();\n }\n break;\n case 'Escape':\n this.disposeTooltip();\n event.stopPropagation();\n event.preventDefault();\n break;\n }\n }\n\n updateSuggestionsContext() {\n this.context = {\n ...this.context,\n width: this.elRef.nativeElement.offsetWidth + 'px',\n };\n }\n\n onSuggestionClick(value: string) {\n let isArrCtrl = false;\n\n if (this.ngControl) {\n const { control } = this.ngControl;\n isArrCtrl = Array.isArray(control.value);\n control.patchValue(isArrCtrl ? [...control.value, value] : value);\n } else {\n this.input.value = value;\n }\n\n this.inputValue$$.next(isArrCtrl ? '' : value);\n\n this.selected.emit(value);\n this.disposeTooltip();\n }\n\n createTooltip() {\n super.createTooltip();\n this.autoFocusFirstSuggestion();\n }\n\n private autoFocusFirstSuggestion() {\n const selectedSuggestion = this.autocomplete.suggestions.find(\n suggestion => suggestion.selected,\n );\n if (selectedSuggestion) {\n this.resetFocusedSuggestion(selectedSuggestion);\n requestAnimationFrame(() => {\n this.scrollToSuggestion(selectedSuggestion);\n });\n } else if (this.defaultFirstSuggestion) {\n const firstFocusableSuggestion = this.autocomplete.suggestions.find(\n suggestion => suggestion.visible && !suggestion.disabled,\n );\n this.resetFocusedSuggestion(firstFocusableSuggestion);\n if (firstFocusableSuggestion) {\n requestAnimationFrame(() => {\n this.scrollToSuggestion(firstFocusableSuggestion);\n });\n }\n }\n }\n\n private focusSuggestionDir(dir: 'down' | 'up') {\n if (!this.isCreated) {\n this.createTooltip();\n return;\n }\n const visibleSuggestions = this.autocomplete.suggestions.filter(\n suggestion => suggestion.visible && !suggestion.disabled,\n );\n if (visibleSuggestions.length === 0) {\n return;\n }\n const step = dir === 'down' ? 1 : -1;\n let i = visibleSuggestions.indexOf(this.focusedSuggestion);\n i = i + step;\n if (i >= visibleSuggestions.length) {\n i = 0;\n } else if (i < 0) {\n i = visibleSuggestions.length - 1;\n }\n this.resetFocusedSuggestion(visibleSuggestions[i]);\n this.scrollToSuggestion(this.focusedSuggestion);\n }\n\n private resetFocusedSuggestion(\n focusedSuggestion: SuggestionComponent = null,\n ) {\n if (this.focusedSuggestion) {\n this.focusedSuggestion.blur();\n }\n this.focusedSuggestion = focusedSuggestion;\n if (this.focusedSuggestion) {\n this.focusedSuggestion.focus();\n }\n }\n\n private scrollToSuggestion(suggestion: SuggestionComponent) {\n if (this.autocomplete.suggestionListRef) {\n scrollIntoView(\n this.autocomplete.suggestionListRef.nativeElement,\n suggestion.elRef.nativeElement,\n );\n }\n }\n\n protected selectFocusedOption() {\n if (this.focusedSuggestion) {\n this.onSuggestionClick(this.focusedSuggestion.value);\n }\n }\n\n private _filterFn(inputValue: string, suggestion: string) {\n return suggestion?.toLowerCase().includes(inputValue?.toLowerCase() ?? '');\n }\n}\n\n@Directive({\n selector: '[auiAutocomplete]:not(input):not(textarea)',\n exportAs: 'auiAutocomplete',\n inputs: ['class:auiAutocompleteClass'],\n host: {\n autocomplete: 'off',\n },\n})\nexport class CustomAutoCompleteDirective extends AutoCompleteDirective {\n @Input('auiAutocompleteInnerSelector')\n innerSelector = 'input,textarea';\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-autocomplete-placeholder',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class AutocompletePlaceholderComponent {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n switchMap,\n take,\n tap,\n} from 'rxjs/operators';\n\nimport { Bem, buildBem, coerceAttrBoolean } from '../../utils';\nimport { AutocompleteComponent } from '../autocomplete.component';\n\n@Component({\n selector: 'aui-suggestion',\n templateUrl: './suggestion.component.html',\n styleUrls: ['./suggestion.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class SuggestionComponent {\n bem: Bem = buildBem('aui-suggestion');\n\n private _disabled = false;\n private _value: string;\n private readonly value$$ = new BehaviorSubject<string>(this.value);\n\n @Input()\n get value() {\n return this._value;\n }\n\n set value(val) {\n this._value = val;\n this.value$$.next(val);\n }\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(val: boolean | '') {\n this._disabled = coerceAttrBoolean(val);\n }\n\n @ViewChild('elRef', { static: true })\n elRef: ElementRef;\n\n selected = false;\n visible = true;\n focused = false;\n\n private readonly autocomplete: AutocompleteComponent;\n selected$: Observable<boolean>;\n visible$: Observable<boolean>;\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n @Inject(forwardRef(() => AutocompleteComponent))\n autocomplete: any, // FIXME: workaround temporarily\n ) {\n this.autocomplete = autocomplete;\n this.selected$ = combineLatest([\n this.autocomplete.directive$$.pipe(\n switchMap(directive => directive.inputValue$),\n ),\n this.value$$,\n ]).pipe(\n map(([inputValue, selfValue]) => inputValue === selfValue),\n tap(selected => {\n this.selected = selected;\n }),\n publishReplay(1),\n refCount(),\n );\n this.visible$ = combineLatest([\n this.autocomplete.directive$$.pipe(\n switchMap(directive => directive.filterFn$),\n ),\n this.autocomplete.directive$$.pipe(\n switchMap(directive => directive.inputValue$),\n ),\n this.value$$,\n ]).pipe(\n map(([filterFn, filterString, suggestion]) =>\n filterFn(filterString, suggestion),\n ),\n tap(visible => {\n this.visible = visible;\n }),\n publishReplay(1),\n refCount(),\n );\n }\n\n onClick() {\n if (this.disabled) {\n return;\n }\n this.autocomplete.directive$$.pipe(take(1)).subscribe(directive => {\n directive.onSuggestionClick(this.value);\n });\n }\n\n focus() {\n this.focused = true;\n this.cdr.markForCheck();\n }\n\n blur() {\n this.focused = false;\n this.cdr.markForCheck();\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable, ReplaySubject, combineLatest } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n tap,\n} from 'rxjs/operators';\n\nimport { AutocompletePlaceholderComponent } from './autocomplete-placeholder.component';\nimport { AutoCompleteDirective } from './autocomplete.directive';\nimport { SuggestionComponent } from './suggestion/suggestion.component';\n\n@Component({\n selector: 'aui-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class AutocompleteComponent implements AfterContentInit {\n @ContentChildren(SuggestionComponent, { descendants: true })\n suggestions: QueryList<SuggestionComponent>;\n\n @ContentChildren(AutocompletePlaceholderComponent)\n placeholder: QueryList<AutocompletePlaceholderComponent>;\n\n @ViewChild(TemplateRef, { static: true })\n template: TemplateRef<any>;\n\n @ViewChild('suggestionListRef', { static: true })\n suggestionListRef: ElementRef;\n\n hasVisibleSuggestion$: Observable<boolean>;\n hasContent$: Observable<boolean>;\n\n directive$$ = new ReplaySubject<AutoCompleteDirective>(1);\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n ngAfterContentInit() {\n this.hasVisibleSuggestion$ = this.suggestions.changes.pipe(\n startWith(this.suggestions),\n switchMap((suggestions: QueryList<SuggestionComponent>) =>\n combineLatest(suggestions.map(suggestion => suggestion.visible$)),\n ),\n map(visible => visible.some(value => value)),\n distinctUntilChanged(),\n debounceTime(0),\n tap(() => {\n this.cdr.markForCheck();\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.hasContent$ = combineLatest([\n this.hasVisibleSuggestion$,\n this.placeholder.changes.pipe(\n startWith(this.placeholder),\n map(\n (list: QueryList<AutocompletePlaceholderComponent>) => !!list.length,\n ),\n ),\n ]).pipe(\n map(\n ([hasVisibleSuggestion, hasPlaceholder]) =>\n hasVisibleSuggestion || hasPlaceholder,\n ),\n );\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n QueryList,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport {\n map,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n} from 'rxjs/operators';\n\nimport { SuggestionComponent } from '../suggestion/suggestion.component';\n\n@Component({\n selector: 'aui-suggestion-group',\n templateUrl: './suggestion-group.component.html',\n styleUrls: ['./suggestion-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class SuggestionGroupComponent implements AfterContentInit {\n @ContentChildren(forwardRef(() => SuggestionComponent))\n suggestions: QueryList<SuggestionComponent>;\n\n hasVisibleSuggestion$: Observable<boolean>;\n\n ngAfterContentInit() {\n this.hasVisibleSuggestion$ = this.suggestions.changes.pipe(\n startWith(this.suggestions),\n switchMap((options: QueryList<SuggestionComponent>) =>\n options.length > 0\n ? combineLatest(options.map(node => node.visible$))\n : of([false]),\n ),\n map(visible => visible.some(value => value)),\n publishReplay(1),\n refCount(),\n );\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[auiSuggestionGroupTitle]',\n exportAs: 'auiSuggestionGroupTitle',\n host: {\n '[class.aui-suggestion-group__title]': 'true',\n },\n})\nexport class SuggestionGroupTitleDirective {}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport { AutocompletePlaceholderComponent } from './autocomplete-placeholder.component';\nimport { AutocompleteComponent } from './autocomplete.component';\nimport {\n AutoCompleteDirective,\n CustomAutoCompleteDirective,\n} from './autocomplete.directive';\nimport { SuggestionGroupTitleDirective } from './helper-directives';\nimport { SuggestionGroupComponent } from './suggestion-group/suggestion-group.component';\nimport { SuggestionComponent } from './suggestion/suggestion.component';\n\n@NgModule({\n imports: [CommonModule, OverlayModule, TooltipModule],\n declarations: [\n AutoCompleteDirective,\n CustomAutoCompleteDirective,\n AutocompleteComponent,\n SuggestionComponent,\n AutocompletePlaceholderComponent,\n SuggestionGroupComponent,\n SuggestionGroupTitleDirective,\n ],\n exports: [\n AutoCompleteDirective,\n CustomAutoCompleteDirective,\n AutocompleteComponent,\n SuggestionComponent,\n AutocompletePlaceholderComponent,\n SuggestionGroupComponent,\n SuggestionGroupTitleDirective,\n ],\n})\nexport class AutocompleteModule {}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport {\n EMPTY,\n Subject,\n Subscription,\n animationFrameScheduler,\n of,\n} from 'rxjs';\nimport {\n debounceTime,\n endWith,\n map,\n observeOn,\n repeat,\n startWith,\n switchMap,\n takeUntil,\n takeWhile,\n tap,\n} from 'rxjs/operators';\n\nimport { TocContentDirective } from './toc-content.directive';\n\n@Directive({\n selector: '[auiTocContainer]',\n exportAs: 'auiTocContainer',\n})\nexport class TocContainerDirective implements AfterContentInit, OnDestroy {\n @Output()\n activedChange = new EventEmitter<string>();\n\n private _contents: TocContentDirective[] = [];\n private readonly _scrollTop$ = new Subject<number>();\n private readonly _scrollTo$ = new Subject<string>();\n private readonly _onDestroy$ = new Subject<void>();\n private readonly _subs: Subscription[] = [];\n private _nativeElement: HTMLElement;\n\n get scrollTop(): number {\n return this._nativeElement.scrollTop || 0;\n }\n\n set scrollTop(value: number) {\n this._nativeElement.scrollTop = value;\n }\n\n get isScrollEnd() {\n return (\n this._nativeElement.scrollHeight - this._nativeElement.scrollTop ===\n this._nativeElement.clientHeight\n );\n }\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private readonly cdr: ChangeDetectorRef,\n ) {\n this._nativeElement = elementRef.nativeElement;\n }\n\n getOffsetTop(element: HTMLElement): number {\n if (element.parentElement === this._nativeElement) {\n return element.offsetTop;\n }\n return element.offsetTop + this.getOffsetTop(element.parentElement);\n }\n\n private getMinContent(scrollTop: number) {\n return (minContent: TocContentDirective, content: TocContentDirective) => {\n if (\n Math.abs(scrollTop - this.getOffsetTop(content.nativeElement)) <\n Math.abs(scrollTop - this.getOffsetTop(minContent.nativeElement))\n ) {\n minContent = content;\n }\n return minContent;\n };\n }\n\n private getMaxContent(\n maxContent: TocContentDirective,\n content: TocContentDirective,\n ) {\n if (\n this.getOffsetTop(content.nativeElement) >\n this.getOffsetTop(maxContent.nativeElement)\n ) {\n maxContent = content;\n }\n return maxContent;\n }\n\n @HostListener('scroll')\n onScroll() {\n this._scrollTop$.next(this.scrollTop);\n }\n\n ngAfterContentInit() {\n const actived$ = this._scrollTop$\n .pipe(\n startWith(this.scrollTop),\n debounceTime(200),\n map(scrollTop =>\n this._contents.reduce(\n this.isScrollEnd\n ? this.getMaxContent.bind(this)\n : this.getMinContent(scrollTop),\n ),\n ),\n map(actived => actived.auiTocContent),\n )\n .pipe(\n tap(actived => {\n this._contents.forEach(content => {\n content.active = actived === content.auiTocContent;\n });\n this.cdr.detectChanges();\n }),\n );\n\n const scrollTween$ = this._scrollTo$.pipe(\n switchMap(name => {\n const target = this._contents.find(\n content => content.auiTocContent === name,\n );\n\n if (!target) {\n return EMPTY;\n }\n const destination = this.getOffsetTop(target.nativeElement);\n\n const start = performance.now();\n const source = this.scrollTop;\n const duration = 500;\n\n return of(0).pipe(\n observeOn(animationFrameScheduler),\n repeat(),\n map(() => (performance.now() - start) / duration),\n takeWhile(t => t < 1),\n endWith(1),\n map(t => t * t * t),\n map(t => source * (1 - t) + destination * t),\n );\n }),\n takeUntil(this._onDestroy$),\n );\n\n this._subs.push(\n actived$.subscribe(this.activedChange),\n scrollTween$.subscribe(tweenValue => {\n this.scrollTop = tweenValue;\n }),\n );\n }\n\n ngOnDestroy() {\n this._subs.forEach(sub => sub.unsubscribe());\n this._onDestroy$.next();\n }\n\n scrollTo(content: string | string[]) {\n if (Array.isArray(content)) {\n this._scrollTo$.next(content[0]);\n } else {\n this._scrollTo$.next(content);\n }\n }\n\n registerContent(tocContent: TocContentDirective) {\n this._contents = [...this._contents, tocContent];\n }\n\n deregisterContent(tocContent: TocContentDirective) {\n this._contents = this._contents.filter(\n content => content.auiTocContent !== tocContent.auiTocContent,\n );\n }\n}\n","import {\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\n\nimport { TocContainerDirective } from './toc-container.directive';\n\n@Directive({\n selector: '[auiTocContent]',\n})\nexport class TocContentDirective implements OnInit, OnDestroy {\n @HostBinding('class.isActive')\n active: boolean;\n\n @Input()\n auiTocContent: string;\n\n nativeElement: HTMLElement;\n\n constructor(\n elemRef: ElementRef<HTMLElement>,\n @Optional() private readonly containerDirective: TocContainerDirective,\n ) {\n this.nativeElement = elemRef.nativeElement;\n }\n\n ngOnInit(): void {\n if (this.containerDirective) {\n this.containerDirective.registerContent(this);\n }\n }\n\n ngOnDestroy(): void {\n if (this.containerDirective) {\n this.containerDirective.deregisterContent(this);\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { TocContainerDirective } from './toc-container.directive';\n\n@Directive({\n selector: '[auiTocLink]',\n})\nexport class TocLinkDirective implements OnInit, OnDestroy {\n @HostBinding('class.isActive')\n active: boolean;\n\n @Input()\n for: TocContainerDirective;\n\n @Input()\n auiTocLink: string | string[];\n\n private readonly _subs: Subscription[] = [];\n\n @HostListener('click')\n onClick() {\n this.for.scrollTo(this.auiTocLink);\n }\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n if (!this.for || !this.auiTocLink) {\n return;\n }\n this._subs.push(\n this.for.activedChange.subscribe((actived: string) => {\n if (Array.isArray(this.auiTocLink)) {\n this.active = this.auiTocLink.includes(actived);\n } else {\n this.active = actived === this.auiTocLink;\n }\n this.cdr.detectChanges();\n }),\n );\n }\n\n ngOnDestroy() {\n this._subs.forEach(sub => sub.unsubscribe());\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TocContainerDirective } from './toc-container.directive';\nimport { TocContentDirective } from './toc-content.directive';\nimport { TocLinkDirective } from './toc-link.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TocContentDirective, TocContainerDirective, TocLinkDirective],\n exports: [TocContentDirective, TocContainerDirective, TocLinkDirective],\n})\nexport class TableOfContentsModule {}\n","import { ValueOf } from '../types';\n\nexport interface Status {\n type?: StatusType;\n class?: string;\n scale: number;\n [key: string]: unknown;\n}\n\nexport const StatusType = {\n Primary: 'primary',\n Success: 'success',\n Warning: 'warning',\n Error: 'error',\n Info: 'info',\n Pending: 'pending',\n} as const;\n\nexport type StatusType = ValueOf<typeof StatusType>;\n\nexport const StatusBarSize = {\n Medium: 'medium',\n Small: 'small',\n} as const;\n\nexport type StatusBarSize = ValueOf<typeof StatusBarSize>;\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Bem, buildBem } from '../utils';\n\nimport { Status, StatusBarSize } from './status-bar.types';\n\n@Component({\n selector: 'aui-status-bar',\n templateUrl: './status-bar.component.html',\n styleUrls: ['./status-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n})\nexport class StatusBarComponent {\n bem: Bem = buildBem('aui-status-bar');\n\n @Input()\n status: Status[] = [];\n\n @Input()\n size: StatusBarSize = StatusBarSize.Medium;\n\n @Input()\n template: TemplateRef<any>;\n\n @Output()\n statusClick = new EventEmitter<Status>();\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport { StatusBarComponent } from './status-bar.component';\n\n@NgModule({\n imports: [CommonModule, TooltipModule],\n declarations: [StatusBarComponent],\n exports: [StatusBarComponent],\n})\nexport class StatusBarModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CommonFormControl } from '../form/public-api';\n\n@Component({\n selector: 'aui-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent),\n multi: true,\n },\n ],\n})\nexport class ColorPickerComponent extends CommonFormControl<string> {\n writeValue(val: string) {\n this.value$$.next(val);\n }\n\n onInput(event: Event) {\n this.emitValueChange((event.target as HTMLInputElement).value);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ColorPickerComponent } from './color-picker.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [ColorPickerComponent],\n exports: [ColorPickerComponent],\n})\nexport class ColorPickerModule {}\n","import { CdkAccordion } from '@angular/cdk/accordion';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n Optional,\n SkipSelf,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class AccordionComponent extends CdkAccordion {\n @Input()\n background = true;\n\n @HostBinding('attr.accordion-depth')\n depth: number;\n\n constructor(\n @SkipSelf()\n @Optional()\n public parent: AccordionComponent,\n ) {\n super();\n this.depth = parent ? parent.depth + 1 : 0;\n }\n}\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport { CdkAccordionItem } from '@angular/cdk/accordion';\nimport { UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n Input,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { filter, startWith, take } from 'rxjs/operators';\n\nimport { AccordionComponent } from '../accordion.component';\n\n@Directive({\n selector: '[auiAccordionItemHeader]',\n})\nexport class AccordionItemHeaderDirective {}\n@Directive({\n selector: '[auiAccordionContent]',\n})\nexport class AccordionItemContentDirective {}\n@Component({\n selector: 'aui-accordion-item',\n templateUrl: 'accordion-item.component.html',\n styleUrls: ['accordion-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n animations: [\n trigger('expand', [\n state('*', style({ height: 0 })),\n state('expanded', style({ height: '*' })),\n transition('* <=> expanded', [animate('0.1s ease-in-out')]),\n ]),\n ],\n viewProviders: [AccordionItemComponent],\n})\nexport class AccordionItemComponent\n extends CdkAccordionItem\n implements AfterContentInit {\n @Input()\n background = true;\n\n @ContentChild(AccordionItemContentDirective, {\n read: TemplateRef,\n static: true,\n })\n _lazyContentTpl: TemplateRef<unknown>;\n\n lazyContentTpl: TemplateRef<unknown>;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n accordion: AccordionComponent,\n cdr: ChangeDetectorRef,\n uniqueSelectionDispatcher: UniqueSelectionDispatcher,\n ) {\n super(accordion, cdr, uniqueSelectionDispatcher);\n }\n\n ngAfterContentInit() {\n if (this._lazyContentTpl) {\n // Render the content as soon as the accordion becomes open.\n this.opened\n .pipe(\n startWith(null as void),\n filter(() => !!this.expanded),\n take(1),\n )\n .subscribe(() => {\n this.lazyContentTpl = this._lazyContentTpl;\n });\n }\n }\n}\n","import { CdkAccordionModule } from '@angular/cdk/accordion';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ButtonModule } from '../button/public-api';\nimport { IconModule } from '../icon/public-api';\n\nimport {\n AccordionItemComponent,\n AccordionItemContentDirective,\n AccordionItemHeaderDirective,\n} from './accordion-item/accordion-item.component';\nimport { AccordionComponent } from './accordion.component';\n\n@NgModule({\n declarations: [\n AccordionComponent,\n AccordionItemComponent,\n AccordionItemHeaderDirective,\n AccordionItemContentDirective,\n ],\n imports: [CommonModule, CdkAccordionModule, IconModule, ButtonModule],\n exports: [\n AccordionComponent,\n AccordionItemComponent,\n AccordionItemHeaderDirective,\n AccordionItemContentDirective,\n ],\n providers: [],\n})\nexport class AccordionModule {}\n","import { ListRange } from '@angular/cdk/collections';\nimport {\n CdkVirtualScrollViewport,\n VirtualScrollStrategy,\n} from '@angular/cdk/scrolling';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Injectable()\nexport class FixedSizeTableVirtualScrollStrategy\n implements VirtualScrollStrategy {\n private _rowHeight = 42;\n private _headerHeight = 42;\n private _bufferSize = 10;\n private readonly _indexChange = new Subject<number>();\n viewport: CdkVirtualScrollViewport;\n\n scrolledIndexChange = this._indexChange.pipe(distinctUntilChanged());\n stickyChange = new Subject<number>();\n\n renderedRangeStream = new BehaviorSubject<ListRange>({ start: 0, end: 0 });\n\n get dataLength(): number {\n return this._dataLength;\n }\n\n set dataLength(value: number) {\n if (value !== this._dataLength) {\n this._dataLength = value;\n this.onDataLengthChanged();\n }\n }\n\n private _dataLength = 0;\n\n attach(viewport: CdkVirtualScrollViewport): void {\n this.viewport = viewport;\n this.viewport.renderedRangeStream.subscribe(this.renderedRangeStream);\n this.onDataLengthChanged();\n }\n\n detach(): void {\n this._indexChange.complete();\n this.renderedRangeStream.complete();\n this.stickyChange.complete();\n }\n\n onContentScrolled(): void {\n this._updateContent();\n }\n\n onDataLengthChanged(): void {\n if (this.viewport) {\n this.viewport.setTotalContentSize(this._rowHeight * this.dataLength);\n }\n this._updateContent();\n }\n\n onContentRendered(): void {\n // no-op\n }\n\n onRenderedOffsetChanged(): void {\n // no-op\n }\n\n scrollToIndex(index: number, behavior: ScrollBehavior): void {\n if (!this.viewport || !this._rowHeight) {\n return;\n }\n this.viewport.scrollToOffset(\n (index - 1) * this._rowHeight + this._headerHeight,\n behavior,\n );\n }\n\n setConfig(rowHeight: number, headerHeight: number, bufferSize: number) {\n this._rowHeight = rowHeight;\n this._headerHeight = headerHeight;\n this._bufferSize = bufferSize;\n this.onDataLengthChanged();\n }\n\n private _updateContent() {\n if (!this.viewport) {\n return;\n }\n const newIndex =\n Math.round(\n (this.viewport.measureScrollOffset() - this._headerHeight) /\n this._rowHeight,\n ) + 1;\n const start = Math.max(0, newIndex - this._bufferSize);\n const end = Math.min(\n this._dataLength,\n newIndex +\n Math.ceil(this.viewport.getViewportSize() / this._rowHeight) +\n this._bufferSize,\n );\n const renderedOffset = start * this._rowHeight;\n this.viewport.setRenderedContentOffset(renderedOffset);\n this.viewport.setRenderedRange({ start, end });\n this.stickyChange.next(renderedOffset);\n this._indexChange.next(newIndex);\n }\n}\n","import { VIRTUAL_SCROLL_STRATEGY } from '@angular/cdk/scrolling';\nimport { CdkHeaderRowDef } from '@angular/cdk/table';\nimport {\n AfterContentInit,\n ContentChild,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n forwardRef,\n} from '@angular/core';\nimport { BehaviorSubject, Subject, combineLatest } from 'rxjs';\nimport { filter, map, takeUntil, tap } from 'rxjs/operators';\n\nimport { TableComponent } from '../table/public-api';\n\nimport { FixedSizeTableVirtualScrollStrategy } from './fixed-size-table-virtual-scroll-strategy';\n\nexport function _tableVirtualScrollDirectiveStrategyFactory(\n tableDir: FixedSizeTableVirtualScrollDirective,\n) {\n return tableDir.scrollStrategy;\n}\n\nconst stickyHeaderSelector = '.aui-table__header-row.aui-table-sticky';\n\nconst defaults = {\n rowHeight: 42,\n headerHeight: 42,\n buffer: 10,\n};\n\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: 'aui-virtual-scroll-viewport[fixedSize]',\n exportAs: 'viewPort',\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _tableVirtualScrollDirectiveStrategyFactory,\n deps: [forwardRef(() => FixedSizeTableVirtualScrollDirective)],\n },\n ],\n})\nexport class FixedSizeTableVirtualScrollDirective<T = unknown>\n implements AfterContentInit, OnChanges, OnDestroy {\n private readonly onDestroy$ = new Subject();\n private readonly _dataSource$$ = new BehaviorSubject<T[]>([]);\n\n @Input()\n rowHeight: number = defaults.rowHeight;\n\n @Input()\n headerHeight: number = defaults.headerHeight;\n\n @Input()\n buffer: number = defaults.buffer;\n\n @Input()\n set dataSource(dataSource: T[]) {\n this._dataSource$$.next(dataSource);\n this.scrollStrategy.dataLength = dataSource?.length;\n }\n\n @ContentChild(TableComponent, { static: false })\n table: TableComponent<any>;\n\n scrollStrategy = new FixedSizeTableVirtualScrollStrategy();\n\n private stickyPositions: Map<HTMLElement, number>;\n\n ngAfterContentInit() {\n this.scrollStrategy.stickyChange\n .pipe(\n filter(() => this.isStickyEnabled()),\n tap(() => {\n if (!this.stickyPositions) {\n this.initStickyPositions();\n }\n }),\n takeUntil(this.onDestroy$),\n )\n .subscribe(stickyOffset => {\n this.setSticky(stickyOffset);\n });\n combineLatest([this.scrollStrategy.renderedRangeStream, this._dataSource$$])\n .pipe(\n map(([{ start, end }, dataSource]) =>\n typeof start !== 'number' || typeof end !== 'number'\n ? dataSource\n : dataSource?.slice(start, end),\n ),\n takeUntil(this.onDestroy$),\n )\n .subscribe(data => {\n this.table.dataSource = data;\n });\n }\n\n ngOnChanges({ rowHeight, headerHeight, buffer }: SimpleChanges) {\n if (rowHeight || headerHeight || buffer) {\n this.scrollStrategy.setConfig(\n this.rowHeight,\n this.headerHeight,\n this.buffer,\n );\n }\n }\n\n ngOnDestroy() {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n }\n\n private isStickyEnabled(): boolean {\n return (\n !!this.scrollStrategy.viewport &&\n // @ts-expect-error\n (this.table._headerRowDefs as CdkHeaderRowDef[])\n .map(def => def.sticky)\n .reduce((prev, curr) => prev && curr, true)\n );\n }\n\n private initStickyPositions() {\n this.stickyPositions = new Map<HTMLElement, number>();\n this.scrollStrategy.viewport.elementRef.nativeElement\n .querySelectorAll(stickyHeaderSelector)\n .forEach(el => {\n const parent = el.parentElement;\n if (!this.stickyPositions.has(parent)) {\n this.stickyPositions.set(parent, parent.offsetTop);\n }\n });\n }\n\n private setSticky(offset: number) {\n this.scrollStrategy.viewport.elementRef.nativeElement\n .querySelectorAll(stickyHeaderSelector)\n .forEach((el: HTMLElement) => {\n const parent = el.parentElement;\n let baseOffset = 0;\n if (this.stickyPositions.has(parent)) {\n baseOffset = this.stickyPositions.get(parent);\n }\n el.style.top = `${baseOffset - offset}px`;\n });\n }\n}\n","import {\n CdkFixedSizeVirtualScroll,\n VIRTUAL_SCROLL_STRATEGY,\n _fixedSizeVirtualScrollStrategyFactory,\n} from '@angular/cdk/scrolling';\nimport { Directive, forwardRef } from '@angular/core';\n\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: 'aui-virtual-scroll-viewport[itemSize]',\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => FixedSizeVirtualScrollDirective)],\n },\n ],\n})\nexport class FixedSizeVirtualScrollDirective extends CdkFixedSizeVirtualScroll {}\n","import { DataSource } from '@angular/cdk/collections';\nimport {\n CdkVirtualForOf,\n CdkVirtualForOfContext,\n} from '@angular/cdk/scrolling';\nimport {\n Directive,\n Input,\n NgIterable,\n TemplateRef,\n TrackByFunction,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Directive({\n selector: '[auiVirtualFor][auiVirtualForOf]',\n})\nexport class VirtualForOfDirective<T> extends CdkVirtualForOf<T> {\n @Input()\n set auiVirtualForOf(\n // tslint:disable-next-line: max-union-size\n value: DataSource<T> | Observable<T[]> | NgIterable<T> | null | undefined,\n ) {\n this.cdkVirtualForOf = value;\n }\n\n @Input()\n set auiVirtualForTrackBy(fn: TrackByFunction<T> | undefined) {\n this.cdkVirtualForTrackBy = fn;\n }\n\n @Input()\n set auiVirtualForTemplate(value: TemplateRef<CdkVirtualForOfContext<T>>) {\n this.cdkVirtualForTemplate = value;\n }\n\n @Input()\n set auiVirtualForTemplateCacheSize(size: number) {\n this.cdkVirtualForTemplateCacheSize = size;\n }\n}\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-virtual-scroll-viewport',\n templateUrl: 'virtual-scroll-viewport.component.html',\n styleUrls: ['virtual-scroll-viewport.component.scss'],\n host: {\n class: 'aui-virtual-scroll-viewport',\n '[class.aui-virtual-scroll-orientation-horizontal]':\n 'orientation === \"horizontal\"',\n '[class.aui-virtual-scroll-orientation-vertical]':\n 'orientation !== \"horizontal\"',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {\n provide: CdkVirtualScrollViewport,\n useExisting: VirtualScrollViewportComponent,\n },\n ],\n})\nexport class VirtualScrollViewportComponent extends CdkVirtualScrollViewport {}\n","import { NgModule } from '@angular/core';\n\nimport { FixedSizeTableVirtualScrollDirective } from './fixed-size-table-virtual-scroll.directive';\nimport { FixedSizeVirtualScrollDirective } from './fixed-size-virtual-scroll.directive';\nimport { VirtualForOfDirective } from './virtual-for-of.directive';\nimport { VirtualScrollViewportComponent } from './virtual-scroll-viewport.component';\n\nconst EXPORTABLE_COMPONENTS = [VirtualScrollViewportComponent];\nconst EXPORTABLE_DIRECTIVES = [\n FixedSizeTableVirtualScrollDirective,\n FixedSizeVirtualScrollDirective,\n VirtualForOfDirective,\n];\n\nconst EXPORTABLE = [...EXPORTABLE_COMPONENTS, ...EXPORTABLE_DIRECTIVES];\n\n@NgModule({\n declarations: EXPORTABLE,\n exports: EXPORTABLE,\n})\nexport class ScrollingModule {}\n","import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ApplicationRef,\n ComponentFactoryResolver,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n} from '@angular/core';\nimport { Subject, fromEvent, merge } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nimport { observeResizeOn } from '../utils';\n\nimport { AnchorComponent } from './anchor.component';\n\nlet uid = 0;\n\n@Directive()\n// tslint:disable-next-line: directive-class-suffix\nexport class AnchorDirectiveChild {\n readonly parent: AnchorDirective;\n\n constructor(protected injector: Injector) {\n this.parent = this.injector.get(AnchorDirective);\n }\n}\n\n@Directive({\n selector: '[auiAnchorLabel]',\n})\nexport class AnchorLabelDirective\n extends AnchorDirectiveChild\n implements OnInit, AfterContentChecked {\n @HostBinding('class.aui-anchor__label')\n @Input('auiAnchorLabel')\n get label() {\n return this._label || this.elRef.nativeElement.textContent;\n }\n\n set label(value) {\n this._label = value;\n this.labelChange.emit(value);\n }\n\n private _label: string | TemplateRef<unknown>;\n\n @Input('auiAnchorLabelContext')\n labelContext: unknown;\n\n get target() {\n return this.elRef.nativeElement;\n }\n\n @Input()\n set id(id) {\n if (this.parent.injectId && !this.id) {\n this.elRef.nativeElement.id = id;\n }\n this._id = id;\n }\n\n get id() {\n return this._id;\n }\n\n private _id: string = this.elRef.nativeElement.id;\n\n @Input()\n set level(value: number | '') {\n this._level = value === '' ? 1 : value;\n }\n\n get level() {\n return this._level;\n }\n\n private _level = 0;\n\n @Output()\n labelChange = new EventEmitter<string | TemplateRef<unknown>>();\n\n constructor(\n protected injector: Injector,\n public readonly elRef: ElementRef<HTMLElement>,\n ) {\n super(injector);\n }\n\n ngOnInit() {\n if (!this.id) {\n this.id = 'anchor-uid-' + uid++;\n }\n }\n\n ngAfterContentChecked() {\n if (!this._label) {\n this.labelChange.emit(this.label);\n }\n }\n}\n\n@Directive({\n selector: '[auiAnchor]',\n})\nexport class AnchorDirective implements AfterContentInit, OnDestroy {\n @Input()\n auiAnchor: HTMLElement | '';\n\n @Input()\n adaptPosition = true;\n\n @Input()\n padding = 20;\n\n @Input()\n minTop: number;\n\n @Input()\n injectId = window === window.top;\n\n @ContentChildren(AnchorLabelDirective, { descendants: true })\n anchorLabels: QueryList<AnchorLabelDirective>;\n\n get containerEl() {\n return this.elRef.nativeElement;\n }\n\n get scrollableEl() {\n const el = this.containerEl;\n return (\n this.auiAnchor ||\n this.cdkScrollable?.getElementRef().nativeElement ||\n (el.scrollHeight > el.offsetHeight ? el : window)\n );\n }\n\n anchorPortal: ComponentPortal<AnchorComponent>;\n\n destroy$$ = new Subject<void>();\n\n constructor(\n private readonly cfr: ComponentFactoryResolver,\n private readonly appRef: ApplicationRef,\n private readonly injector: Injector,\n public readonly elRef: ElementRef<HTMLElement>,\n @Optional() private readonly cdkScrollable: CdkScrollable,\n ) {}\n\n ngAfterContentInit() {\n const containerEl = this.containerEl;\n this.anchorPortal = new ComponentPortal(AnchorComponent);\n const portalOutlet = new DomPortalOutlet(\n document.body,\n this.cfr,\n this.appRef,\n this.injector,\n );\n const anchorComponentRef = this.anchorPortal.attach(portalOutlet);\n const anchorEl = anchorComponentRef.injector.get(ElementRef)\n .nativeElement as HTMLElement;\n\n requestAnimationFrame(() =>\n this.adaptAnchorPosition(containerEl, anchorEl),\n );\n\n this.anchorLabels.changes\n .pipe(startWith(this.anchorLabels), takeUntil(this.destroy$$))\n .subscribe((anchorLabels: QueryList<AnchorLabelDirective>) => {\n Object.assign(anchorComponentRef.instance, {\n items: anchorLabels.toArray(),\n });\n });\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n this.anchorPortal.detach();\n }\n\n adaptAnchorPosition(containerEl: HTMLElement, anchorEl: HTMLElement) {\n const pageContentEl = containerEl.closest('.aui-page__content');\n const anchorContentEl = anchorEl.querySelector('.aui-anchor');\n\n merge(observeResizeOn(containerEl), fromEvent(window, 'scroll'))\n .pipe(startWith(null as void), takeUntil(this.destroy$$))\n .subscribe(() => {\n const containerRect = containerEl.getBoundingClientRect();\n Object.assign(anchorEl.style, {\n display: !containerRect.width || !containerRect.height ? 'none' : '',\n left:\n containerRect.right -\n anchorContentEl.getBoundingClientRect().width +\n 'px',\n top:\n Math.max(\n containerRect.top,\n (this.minTop ??\n (pageContentEl &&\n +getComputedStyle(pageContentEl).paddingTop.slice(0, -2))) ||\n 0,\n ) + 'px',\n });\n });\n\n if (this.adaptPosition) {\n observeResizeOn(anchorContentEl)\n .pipe(takeUntil(this.destroy$$))\n .subscribe(el => {\n const width = el.getBoundingClientRect().width;\n const padding = width + this.padding;\n containerEl.style.paddingRight = padding + 'px';\n });\n }\n }\n}\n","import { last } from '../utils';\n\nimport { AnchorItem, AnchorTreeItem } from './types';\n\nexport const getAnchorTreeItems = (items: AnchorItem[], level = 0) => {\n const treeItems: AnchorTreeItem[] = [];\n const subItems: AnchorItem[] = [];\n for (const item of items) {\n if (item.level === level) {\n const lastTreeItem = last(treeItems);\n if (lastTreeItem) {\n const children = getAnchorTreeItems(subItems, level + 1);\n if (children.length) {\n lastTreeItem.children = children;\n }\n }\n treeItems.push(item);\n subItems.length = 0;\n } else {\n subItems.push(item);\n }\n }\n if (subItems.length) {\n last(treeItems).children = getAnchorTreeItems(subItems, level + 1);\n }\n return treeItems;\n};\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { EMPTY, Subject, combineLatest, fromEvent, of } from 'rxjs';\nimport { debounceTime, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { buildBem, isTemplateRef, last } from '../utils';\n\nimport { AnchorDirectiveChild } from './anchor.directive';\nimport { AnchorItem, AnchorTreeItem } from './types';\nimport { getAnchorTreeItems } from './utils';\n\nconst bem = buildBem('aui-anchor');\n\n@Component({\n selector: 'aui-anchor-tree',\n templateUrl: 'anchor-tree.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AnchorTreeComponent\n extends AnchorDirectiveChild\n implements OnDestroy {\n @Input()\n set treeItems(treeItems) {\n this._treeItems = treeItems;\n this.watchLabelsChange();\n }\n\n get treeItems() {\n return this._treeItems;\n }\n\n private _treeItems: AnchorTreeItem[];\n\n @Input()\n activeId: string;\n\n @Output()\n activeIdChange = new EventEmitter<string>();\n\n bem = bem;\n\n isTemplateRef = isTemplateRef;\n\n private readonly depose$$ = new Subject<void>();\n\n watchLabelsChange() {\n this.depose$$.next();\n const cdr = this.injector.get(ChangeDetectorRef);\n // FIXME: Is there any better way to achieve this?\n combineLatest(\n this.treeItems.map(({ labelChange }) => labelChange).filter(Boolean),\n )\n .pipe(debounceTime(0), takeUntil(this.depose$$))\n .subscribe(() => cdr.markForCheck());\n }\n\n ngOnDestroy() {\n this.depose$$.next();\n this.depose$$.complete();\n }\n\n isActive(item: AnchorTreeItem): boolean {\n return (\n item.id === this.activeId ||\n item.children?.some(subItem => this.isActive(subItem))\n );\n }\n\n onItemClick(e: Event, item: AnchorTreeItem) {\n e.preventDefault();\n\n if (this.parent.injectId) {\n const selector = '#' + item.id;\n\n if (location.hash === selector) {\n return;\n }\n\n history.pushState(\n null,\n null,\n location.pathname + location.search + selector,\n );\n }\n\n item.target.scrollIntoView({ behavior: 'smooth' });\n\n this.activeIdChange.emit(item.id);\n }\n\n trackById(_index: number, item: AnchorItem) {\n return item.id;\n }\n}\n\n@Component({\n selector: 'aui-anchor',\n templateUrl: 'anchor.component.html',\n styleUrls: ['anchor.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AnchorComponent\n extends AnchorDirectiveChild\n implements AfterViewInit, OnDestroy {\n @Input()\n get items() {\n return this._items;\n }\n\n set items(items) {\n this._items = items;\n this.treeItems = getAnchorTreeItems(items);\n const anchorId =\n (this.parent.injectId && location.hash.slice(1)) || this.activeId;\n const activeItem =\n (anchorId && items.find(({ id }) => id === anchorId)) || items[0];\n if (activeItem) {\n if (this.parent.injectId && this.parent.scrollableEl !== window) {\n activeItem.target.scrollIntoView();\n }\n this.activeId = activeItem.id;\n }\n }\n\n private _items: AnchorItem[];\n\n @Input()\n treeItems: AnchorTreeItem[];\n\n @Input()\n activeId: string;\n\n bem = bem;\n\n private readonly destroy$$ = new Subject<void>();\n\n constructor(\n protected injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n ) {\n super(injector);\n }\n\n ngAfterViewInit() {\n const { injectId, containerEl, scrollableEl } = this.parent;\n const pageContentEl = containerEl.closest('.aui-page__content');\n const paddingTop = pageContentEl\n ? +getComputedStyle(pageContentEl).paddingTop.slice(0, -2)\n : 0;\n fromEvent(scrollableEl, 'scroll')\n .pipe(\n debounceTime(100),\n switchMap(() => {\n const { scrollTop } =\n scrollableEl === window\n ? document.documentElement\n : (scrollableEl as HTMLElement);\n const activedItem =\n this.items.find(\n ({ target }) =>\n target.offsetTop +\n target.offsetHeight / 2 +\n ((scrollableEl === window &&\n (target.offsetParent as HTMLElement)?.offsetTop) ||\n 0) >\n scrollTop + paddingTop,\n ) || last(this.items);\n return activedItem ? of(activedItem) : EMPTY;\n }),\n tap(activedItem => {\n if (activedItem.id) {\n this.activeId = activedItem.id;\n this.cdr.markForCheck();\n }\n }),\n debounceTime(100),\n tap(activedItem => {\n if (injectId && activedItem.id) {\n history.replaceState(\n null,\n null,\n location.pathname + location.search + '#' + activedItem.id,\n );\n }\n }),\n takeUntil(this.destroy$$),\n )\n .subscribe();\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AnchorComponent, AnchorTreeComponent } from './anchor.component';\nimport { AnchorDirective, AnchorLabelDirective } from './anchor.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n AnchorComponent,\n AnchorTreeComponent,\n AnchorDirective,\n AnchorLabelDirective,\n ],\n exports: [\n AnchorComponent,\n AnchorTreeComponent,\n AnchorDirective,\n AnchorLabelDirective,\n ],\n entryComponents: [AnchorComponent],\n})\nexport class AnchorModule {}\n","import { ConfigType, Dayjs } from 'dayjs';\n\nexport enum Side {\n Left = 'left',\n Right = 'right',\n}\n\nexport type DisabledTimeFn = (\n date?: ConfigType,\n) => {\n hours: () => number[];\n minutes: (hour?: number) => number[];\n seconds: (hour?: number, minute?: number) => number[];\n};\n\nexport interface CalendarHeaderRange {\n start: Dayjs;\n end?: Dayjs;\n}\n\nexport enum DateNavRange {\n Decade = 'decade',\n Year = 'year',\n Month = 'month',\n}\n\nexport type DisabledDateFn = (date: Dayjs, type: DateNavRange) => boolean;\n","import { DateNavRange } from '../date-picker.type';\n\nexport const DATE = 'date';\nexport const DAY = 'day';\nexport const MONTH = 'month';\nexport const YEAR = 'year';\nexport const HOUR = 'hour';\nexport const MINUTE = 'minute';\nexport const SECOND = 'second';\n\n// 根据日期类型,分为年,月,日\nexport enum DatePickerType {\n Day = 'date',\n Month = 'month',\n Year = 'year',\n}\n\nexport const MONTH_PANEL_COLUMN_COUNT = 3;\nexport const MONTH_PANEL_ROW_COUNT = 4;\n\nexport const YEAR_PANEL_COLUMN_COUNT = 3;\nexport const YEAR_PANEL_ROW_COUNT = 4;\n\nexport const DAY_PANEL_COLUMN_COUNT = 7;\nexport const DAY_PANEL_ROW_COUNT = 6;\n\nexport const DATE_TYPES = [\n DatePickerType.Year,\n DatePickerType.Month,\n DatePickerType.Day,\n];\n\nexport const DATE_NAV_RANGES = [\n DateNavRange.Decade,\n DateNavRange.Year,\n DateNavRange.Month,\n];\n","import { Dayjs, UnitType } from 'dayjs';\n\nimport { TimePickerModel } from '../../time-picker/time-picker.type';\nimport { DateNavRange, DisabledDateFn } from '../date-picker.type';\n\nimport {\n DATE_NAV_RANGES,\n DATE_TYPES,\n DAY,\n DAY_PANEL_COLUMN_COUNT,\n DAY_PANEL_ROW_COUNT,\n DatePickerType,\n MONTH,\n MONTH_PANEL_COLUMN_COUNT,\n MONTH_PANEL_ROW_COUNT,\n YEAR,\n YEAR_PANEL_COLUMN_COUNT,\n YEAR_PANEL_ROW_COUNT,\n} from './constant';\n\nexport class DateCell {\n isBackground?: boolean; // 面板中非本月日期\n inRange?: boolean; // 在范围组件的范围内\n isRangeStart?: boolean; // 范围组件的范围开始日期\n isRangeEnd?: boolean; // 范围组件的范围结束日期\n isDisabled?: boolean;\n\n constructor(public value: Dayjs, public label: string | number) {}\n}\n\nexport function getDatePanelIterable(\n date: Dayjs,\n navRange: DateNavRange,\n weekStartDay: number,\n): Iterable<Dayjs> & Iterator<Dayjs> {\n let firstData: Dayjs;\n let counts = 0;\n date = date.clone();\n if (navRange === DateNavRange.Month) {\n firstData = date.date(-1).day(weekStartDay);\n if (firstData.isAfter(date)) {\n firstData = firstData.subtract(1, 'week');\n }\n counts = DAY_PANEL_COLUMN_COUNT * DAY_PANEL_ROW_COUNT;\n } else if (navRange === DateNavRange.Year) {\n firstData = date.month(0);\n counts = MONTH_PANEL_COLUMN_COUNT * MONTH_PANEL_ROW_COUNT;\n } else if (navRange === DateNavRange.Decade) {\n firstData = date.subtract(1, YEAR);\n counts = YEAR_PANEL_COLUMN_COUNT * YEAR_PANEL_ROW_COUNT;\n }\n let i = 0;\n return {\n [Symbol.iterator]() {\n return this;\n },\n next: () => {\n if (i < counts) {\n return {\n value: firstData.add(\n i++,\n navRange === DateNavRange.Month\n ? DAY\n : navRange === DateNavRange.Year\n ? MONTH\n : YEAR,\n ),\n done: false,\n };\n }\n return {\n done: true,\n value: null,\n };\n },\n };\n}\n\nexport function formatDate(type: DateNavRange, dateValue: Dayjs, date: Dayjs) {\n if (!dateValue) {\n return null;\n }\n const label =\n type === DateNavRange.Decade\n ? dateValue.year()\n : type === DateNavRange.Year\n ? dateValue.month() + 1\n : dateValue.date();\n const cell = new DateCell(dateValue, label);\n if (type === DateNavRange.Month && date.month() !== dateValue.month()) {\n cell.isBackground = true;\n }\n return cell;\n}\n\nexport function nextDatePickerType(\n current: DatePickerType,\n guard?: DatePickerType,\n) {\n const guardIndex = guard ? DATE_TYPES.indexOf(guard) : DATE_TYPES.length - 1;\n const currentIndex = DATE_TYPES.indexOf(current);\n if (currentIndex < guardIndex) {\n return DATE_TYPES[currentIndex + 1];\n }\n return current;\n}\n\nexport function nextNavRangeType(current: DateNavRange, guard?: DateNavRange) {\n const guardIndex = guard\n ? DATE_NAV_RANGES.indexOf(guard)\n : DATE_NAV_RANGES.length - 1;\n const currentIndex = DATE_NAV_RANGES.indexOf(current);\n if (currentIndex < guardIndex) {\n return DATE_NAV_RANGES[currentIndex + 1];\n }\n return current;\n}\n\nexport function updateDate(\n sourceValue: Dayjs,\n newValue: Dayjs,\n type: DatePickerType,\n) {\n const updateTypes = DATE_TYPES.slice(0, DATE_TYPES.indexOf(type) + 1);\n return updateTypes.reduce(\n (acc, curr) => acc.set(curr, newValue.get(curr)),\n sourceValue.clone(),\n );\n}\n\nexport function calcRangeValue(type: DateNavRange, date: Dayjs) {\n date = date.clone();\n return [DateNavRange.Month, DatePickerType.Year].includes(type)\n ? {\n start: date,\n }\n : {\n start: date.subtract(date.year() % 10, YEAR),\n end: date.add(9 - (date.year() % 10), YEAR),\n };\n}\n\nexport function sortDates(dates: Dayjs[]) {\n return [...(dates || [])].sort((a, b) =>\n a.isBefore(b) ? -1 : a.isSame(b) ? 0 : 1,\n );\n}\n\nexport function getNavRangeByType(type: DatePickerType) {\n return {\n [DatePickerType.Day]: DateNavRange.Month,\n [DatePickerType.Month]: DateNavRange.Year,\n [DatePickerType.Year]: DateNavRange.Decade,\n }[type];\n}\n\nexport function getTypeByNavRange(navRange: DateNavRange) {\n return {\n [DateNavRange.Month]: DatePickerType.Day,\n [DateNavRange.Year]: DatePickerType.Month,\n [DateNavRange.Decade]: DatePickerType.Year,\n }[navRange];\n}\n\nexport function getTimePickerModel(date: Dayjs): TimePickerModel {\n return date\n ? {\n second: date.second(),\n minute: date.minute(),\n hour: date.hour(),\n }\n : null;\n}\n\nexport function updateDateByTimeModel(date: Dayjs, time: TimePickerModel) {\n return time\n ? date.hour(time.hour).minute(time.minute).second(time.second)\n : date;\n}\n\nexport const composeDisabledDateFn = (...fns: DisabledDateFn[]) => (\n date: Dayjs,\n navRange: DateNavRange,\n) => !fns.filter(i => !!i).every(fn => !fn(date, navRange));\n\nexport function minDate(a: Dayjs, b: Dayjs, unit: UnitType = 'date') {\n return !a ? b : !b ? a : a.isBefore(b, unit) ? a : b;\n}\n\nexport function maxDate(a: Dayjs, b: Dayjs, unit: UnitType = 'date') {\n return !a ? b : !b ? a : a.isAfter(b, unit) ? a : b;\n}\n","import { ConfigType } from 'dayjs';\n\nimport { _isNumberValue } from '../utils';\n\nexport enum TimePickerControlType {\n Hour = 'hour',\n Minute = 'minute',\n Second = 'second',\n}\n\nexport interface TimePickerModel {\n hour?: number;\n minute?: number;\n second?: number;\n}\n\nexport type TimePickerDataLike = ConfigType | TimePickerModel;\n\nexport function isTimePickerModel(item: any): item is TimePickerModel {\n return (\n _isNumberValue(item?.second) &&\n _isNumberValue(item?.minute) &&\n _isNumberValue(item?.hour)\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport dayjs, { Dayjs } from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\nimport { updateDateByTimeModel } from '../date-picker/calendar/util';\nimport { CommonFormControl } from '../form/common-form';\nimport { TooltipDirective } from '../tooltip/public-api';\nimport { ComponentSize } from '../types';\n\nimport {\n TimePickerDataLike,\n TimePickerModel,\n isTimePickerModel,\n} from './time-picker.type';\n\ndayjs.extend(customParseFormat);\n\n@Component({\n selector: 'aui-time-picker',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true,\n },\n ],\n})\nexport class TimePickerComponent extends CommonFormControl<\n TimePickerDataLike,\n TimePickerModel\n> {\n @Input()\n format = 'HH:mm:ss';\n\n @Input()\n size: ComponentSize = ComponentSize.Medium;\n\n @Input()\n placeholder = '';\n\n @Input()\n clearable = true;\n\n @Input()\n showIcon = true;\n\n @Input()\n disableHours: () => number[];\n\n @Input()\n disableMinutes: (hour?: number) => number[];\n\n @Input()\n disableSeconds: (hour?: number, minute?: number) => number[];\n\n @Input()\n hourStep = 1;\n\n @Input()\n minuteStep = 1;\n\n @Input()\n secondStep = 1;\n\n @Input()\n footerTemplate: TemplateRef<void>;\n\n @Output()\n readonly open = new EventEmitter<void>();\n\n @Output()\n readonly close = new EventEmitter<void>();\n\n @ViewChild('tooltipRef')\n tooltipRef: TooltipDirective;\n\n timeValue: Dayjs = null;\n timeFormatValue = '';\n\n writeValue(value: TimePickerDataLike) {\n super.writeValue(value);\n if (!value) {\n return this.setValue(null);\n }\n let result: Dayjs;\n if (isTimePickerModel(value)) {\n result = updateDateByTimeModel(dayjs(), value);\n } else {\n result = dayjs(value);\n this.submit(false, result);\n }\n this.setValue(result);\n }\n\n setValue(value: Dayjs) {\n this.timeValue = value;\n this.timeFormatValue = value ? dayjs(value).format(this.format) : null;\n this.cdr.markForCheck();\n }\n\n changeFromPanel(value: Dayjs) {\n this.timeFormatValue = value?.format(this.format);\n }\n\n changeFromInput(source: string) {\n if (!source) {\n this.timeValue = null;\n } else {\n const afterParsed = dayjs(source, this.format);\n if (afterParsed.isValid()) {\n this.timeValue = afterParsed;\n }\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Enter':\n this.openPanel();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n this.closePanel();\n event.stopPropagation();\n event.preventDefault();\n break;\n }\n }\n\n onBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n this.setValue(this.timeValue);\n this.submit();\n }\n\n openPanel() {\n if (this.tooltipRef.isCreated) {\n return;\n }\n this.tooltipRef.createTooltip();\n this.open.next();\n }\n\n closePanel() {\n if (!this.tooltipRef.isCreated) {\n return;\n }\n this.tooltipRef.disposeTooltip();\n this.close.next();\n }\n\n clearValue(event: Event) {\n this.setValue(null);\n this.submit();\n event.stopPropagation();\n event.preventDefault();\n }\n\n submit(close = true, value?: Dayjs) {\n const refer = value ?? this.timeValue;\n this.emitValue(\n refer\n ? {\n second: refer.second(),\n minute: refer.minute(),\n hour: refer.hour(),\n }\n : null,\n );\n if (close) {\n this.closePanel();\n }\n }\n}\n","export const HOUR_ITEMS = Array.from({ length: 24 }).map((_, index) => index);\nexport const MINUTE_ITEMS = Array.from({ length: 60 }).map((_, index) => index);\nexport const SECOND_ITEMS = Array.from({ length: 60 }).map((_, index) => index);\n\nexport const CONTROL_ITEM_HEIGHT = 28;\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport dayjs, { Dayjs } from 'dayjs';\n\nimport { CommonFormControl } from '../../form/common-form';\nimport { ComponentSize } from '../../types';\nimport { buildBem } from '../../utils';\nimport {\n CONTROL_ITEM_HEIGHT,\n HOUR_ITEMS,\n MINUTE_ITEMS,\n SECOND_ITEMS,\n} from '../constant';\nimport { TimePickerControlType } from '../time-picker.type';\n\nconst TIME_PICKER_COLUMN_WIDTH = 80;\nconst bem = buildBem('aui-time-picker-panel');\n\n@Component({\n selector: 'aui-time-picker-panel',\n templateUrl: './panel.template.html',\n styleUrls: ['./panel.style.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePickerPanelComponent),\n multi: true,\n },\n ],\n host: {\n mousedown: '$event.preventDefault()',\n },\n})\nexport class TimePickerPanelComponent\n extends CommonFormControl<Dayjs>\n implements OnChanges {\n @Input()\n set format(value: string) {\n if (value != null) {\n this._format = value;\n const charSet = new Set(value);\n this.hourEnabled = charSet.has('H') || charSet.has('h');\n this.minuteEnabled = charSet.has('m');\n this.secondEnabled = charSet.has('s');\n this.enabledColumns = [\n this.hourEnabled,\n this.minuteEnabled,\n this.secondEnabled,\n ].filter(i => i).length;\n }\n }\n\n get format(): string {\n return this._format;\n }\n\n private _format: string;\n\n get totalWidth() {\n return this.enabledColumns * TIME_PICKER_COLUMN_WIDTH;\n }\n\n @Input()\n hourStep = 1;\n\n @Input()\n minuteStep = 1;\n\n @Input()\n secondStep = 1;\n\n @Input()\n footerTemplate: TemplateRef<void>;\n\n @Output()\n confirm = new EventEmitter<void>();\n\n @Input()\n disableHours: () => number[];\n\n @Input()\n disableMinutes: (hour?: number) => number[];\n\n @Input()\n disableSeconds: (hour?: number, minute?: number) => number[];\n\n hourEnabled: boolean;\n minuteEnabled: boolean;\n secondEnabled: boolean;\n\n TimePickerControlType = TimePickerControlType;\n HOUR_ITEM_CONFIG = HOUR_ITEMS;\n MINUTE_ITEM_CONFIG = MINUTE_ITEMS;\n SECOND_ITEM_CONFIG = SECOND_ITEMS;\n\n CONTROL_ITEM_HEIGHT = CONTROL_ITEM_HEIGHT;\n ComponentSize = ComponentSize;\n bem = bem;\n\n @ViewChild('hourRef', { static: false })\n hourRef: ElementRef<HTMLElement>;\n\n @ViewChild('minuteRef', { static: false })\n minuteRef: ElementRef<HTMLElement>;\n\n @ViewChild('secondRef', { static: false })\n secondRef: ElementRef<HTMLElement>;\n\n enabledColumns = 0;\n\n // 用于控制初次滚动,是否展示滚动动画效果\n firstScrolled = false;\n\n constructor(protected cdr: ChangeDetectorRef) {\n super(cdr);\n this.value$.subscribe(_ => {\n this.cdr.markForCheck();\n });\n }\n\n isDisabled(value: number, type: TimePickerControlType) {\n const currentValue = this.snapshot.value;\n if (this.disabled) {\n return true;\n }\n if (type === TimePickerControlType.Hour) {\n return (!this.disableHours ? [] : this.disableHours()).includes(value);\n }\n if (type === TimePickerControlType.Minute) {\n return (!this.disableMinutes\n ? []\n : this.disableMinutes(currentValue?.hour())\n ).includes(value);\n }\n if (type === TimePickerControlType.Second) {\n return (!this.disableSeconds\n ? []\n : this.disableSeconds(currentValue?.hour(), currentValue?.minute())\n ).includes(value);\n }\n }\n\n ngOnChanges({ hourStep, minuteStep, secondStep }: SimpleChanges): void {\n if (hourStep?.currentValue > 0) {\n this.HOUR_ITEM_CONFIG = HOUR_ITEMS.filter(\n i => i % hourStep.currentValue === 0,\n );\n }\n if (minuteStep?.currentValue > 0) {\n this.MINUTE_ITEM_CONFIG = MINUTE_ITEMS.filter(\n i => i % minuteStep.currentValue === 0,\n );\n }\n if (secondStep?.currentValue > 0) {\n this.SECOND_ITEM_CONFIG = SECOND_ITEMS.filter(\n i => i % secondStep.currentValue === 0,\n );\n }\n this.cdr.markForCheck();\n }\n\n writeValue(value: Dayjs) {\n super.writeValue(value);\n this.syncScrollOffset(!this.firstScrolled ? 0 : 120, value);\n }\n\n selectValue(value: number, type: TimePickerControlType): void {\n if (this.isDisabled(value, type)) {\n return;\n }\n this.firstScrolled = true;\n const result = this.syncValue(value, type, this.snapshot.value);\n this.syncScrollOffset(120, result);\n }\n\n syncValue(value: number, type: TimePickerControlType, currentValue: Dayjs) {\n if (!type) {\n return;\n }\n const result = (currentValue || dayjs()).set(type, value);\n this.emitValue(result);\n return result;\n }\n\n syncScrollOffset(duration: number, value: Dayjs) {\n const empty = !value;\n const config = [\n {\n ref: this.hourRef,\n enabled: this.hourEnabled,\n step: this.hourStep,\n type: 'hour',\n },\n {\n ref: this.minuteRef,\n enabled: this.minuteEnabled,\n step: this.minuteStep,\n type: 'minute',\n },\n {\n ref: this.secondRef,\n enabled: this.secondEnabled,\n step: this.secondStep,\n type: 'second',\n },\n ] as const;\n\n config.forEach(cf => {\n if (cf.enabled && cf.ref) {\n this.scrollByValue(\n cf.ref.nativeElement,\n empty ? 0 : value.get(cf.type),\n cf.step,\n empty ? 0 : duration,\n );\n }\n });\n if (!empty) {\n this.firstScrolled = true;\n }\n }\n\n private scrollByValue(\n element: HTMLElement,\n value: number,\n divideBy: number,\n duration: number,\n ) {\n const targetOffset = (value * CONTROL_ITEM_HEIGHT) / divideBy;\n const currentTop = element.scrollTop;\n if (currentTop === targetOffset) {\n return;\n }\n if (!duration) {\n element.scrollTop = targetOffset;\n } else {\n const difference = targetOffset - currentTop;\n // 每个tick滚动距离\n const perTick = (difference / duration) * 10;\n\n requestAnimationFrame(() => {\n element.scrollTop = currentTop + perTick;\n if (element.scrollTop === targetOffset) {\n return;\n }\n this.scrollByValue(element, value, divideBy, duration - 10);\n });\n }\n }\n\n matchValue(\n value: number,\n type: TimePickerControlType,\n currDate: Dayjs,\n ): boolean {\n return currDate?.get(type) === value;\n }\n\n getControlTypeConfig(type: TimePickerControlType): number[] {\n return {\n [TimePickerControlType.Hour]: this.HOUR_ITEM_CONFIG,\n [TimePickerControlType.Minute]: this.MINUTE_ITEM_CONFIG,\n [TimePickerControlType.Second]: this.SECOND_ITEM_CONFIG,\n }[type];\n }\n\n selectNow() {\n this.firstScrolled = true;\n this.emitValue(dayjs());\n }\n\n trackBy(_index: number, content: number) {\n return content;\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, ReactiveFormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '../button/public-api';\nimport { I18nModule } from '../i18n/public-api';\nimport { IconModule } from '../icon/public-api';\nimport { InputModule } from '../input/public-api';\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport { TimePickerComponent } from './component';\nimport { TimePickerPanelComponent } from './panel/panel.component';\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n PortalModule,\n OverlayModule,\n CommonModule,\n InputModule,\n TooltipModule,\n IconModule,\n ButtonModule,\n I18nModule,\n ],\n declarations: [TimePickerComponent, TimePickerPanelComponent],\n exports: [TimePickerComponent, TimePickerPanelComponent],\n})\nexport class TimePickerModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport dayjs, { ConfigType, Dayjs } from 'dayjs';\n\nimport { CommonFormControl } from '../../../form/common-form';\nimport { TimePickerModel } from '../../../time-picker/time-picker.type';\nimport { DateNavRange, DisabledTimeFn } from '../../date-picker.type';\nimport { DatePickerType } from '../constant';\nimport {\n getNavRangeByType,\n getTimePickerModel,\n getTypeByNavRange,\n nextNavRangeType,\n updateDate,\n updateDateByTimeModel,\n} from '../util';\n\n@Component({\n selector: 'aui-date-picker-panel',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerPanelComponent),\n multi: true,\n },\n ],\n})\nexport class DatePickerPanelComponent extends CommonFormControl<Dayjs> {\n @Input()\n clearable = true;\n\n @Input()\n clearText: string;\n\n @Input()\n set type(type: DatePickerType) {\n this.navRange = getNavRangeByType(type);\n this._type = type;\n }\n\n get type() {\n return this._type;\n }\n\n private _type: DatePickerType;\n\n @Input()\n showTime = false;\n\n @Input()\n disabledDate: (date: Dayjs, type: DateNavRange) => boolean = () => false;\n\n @Input()\n disabledTime: DisabledTimeFn = () => null;\n\n @Input()\n weekStartDay = 0;\n\n @Input()\n showFooter = true;\n\n @Input()\n footerTemplate: TemplateRef<unknown>;\n\n @Input()\n extraFooter: TemplateRef<unknown>;\n\n @Input()\n minDate: Dayjs;\n\n @Input()\n maxDate: Dayjs;\n\n @Output()\n confirm = new EventEmitter<Dayjs>();\n\n @Output()\n clear = new EventEmitter<void>();\n\n private _cacheSelectedDate: Dayjs;\n private _cacheDisabledTimeFn: ReturnType<DisabledTimeFn>;\n\n getDisabledTimeFn(\n selectedDate: Dayjs,\n type: keyof ReturnType<DisabledTimeFn>,\n ) {\n if (selectedDate !== this._cacheSelectedDate) {\n this._cacheDisabledTimeFn = this.disabledTime(selectedDate);\n this._cacheSelectedDate = selectedDate;\n }\n return this._cacheDisabledTimeFn?.[type];\n }\n\n navRange: DateNavRange;\n\n get currentNavType() {\n return getTypeByNavRange(this.navRange);\n }\n\n anchor: Dayjs;\n\n selectedDate: Dayjs;\n\n selectedTime: TimePickerModel;\n\n DateNavRange = DateNavRange;\n DatePickerType = DatePickerType;\n\n writeValue(obj: Dayjs) {\n super.writeValue(obj);\n this.selectedDate = obj;\n this.selectedTime = getTimePickerModel(obj);\n this.anchor = obj || dayjs();\n this.cdr.markForCheck();\n }\n\n panelValueChange(value: Dayjs) {\n this.selectedDate = updateDate(\n this.selectedDate || dayjs(),\n value,\n this.currentNavType,\n );\n this.anchor = this.selectedDate;\n this.selectedDate = updateDateByTimeModel(\n this.selectedDate,\n this.selectedTime,\n );\n if (this.type === this.currentNavType) {\n this.confirmValue(this.selectedDate, !this.showTime);\n }\n const nextNavRange = nextNavRangeType(\n this.navRange,\n getNavRangeByType(this.type),\n );\n if (this.navRange !== nextNavRange) {\n this.navRange = nextNavRange;\n }\n }\n\n confirmValue(value?: ConfigType, closeAfterConfirm = true) {\n this.emitValueChange(value ? dayjs(value) : this.selectedDate);\n closeAfterConfirm && this.confirm.next();\n }\n\n timeDateChange(time: TimePickerModel) {\n if (!this.selectedDate) {\n return;\n }\n this.selectedDate = updateDateByTimeModel(this.selectedDate, time);\n this.emitValueChange(this.selectedDate);\n }\n\n setToday() {\n this.confirmValue(dayjs(), true);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'aui-calendar-footer',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalendarFooterComponent {\n @Input()\n clearable = true;\n\n @Input()\n clearText: string;\n\n @Input()\n customAction: TemplateRef<any>;\n\n @Output()\n confirm = new EventEmitter<void>();\n\n @Output()\n clear = new EventEmitter<void>();\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport dayjs, { ConfigType, Dayjs } from 'dayjs';\n\nimport { buildBem } from '../../../utils';\nimport {\n CalendarHeaderRange,\n DateNavRange,\n Side,\n} from '../../date-picker.type';\nimport { MONTH, YEAR } from '../constant';\nimport { calcRangeValue } from '../util';\n\nconst bem = buildBem('aui-calendar-header');\n\n@Component({\n selector: 'aui-calendar-header',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalendarHeaderComponent {\n @Input()\n dateNavRange = DateNavRange.Month;\n\n @Input()\n anchor = dayjs();\n\n @Input()\n maxAvail?: ConfigType;\n\n private get _maxAvail() {\n return this.maxAvail ? dayjs(this.maxAvail) : null;\n }\n\n @Input()\n minAvail?: ConfigType;\n\n private get _minAvail() {\n return this.minAvail ? dayjs(this.minAvail) : null;\n }\n\n @Output()\n navRangeChange = new EventEmitter<DateNavRange>();\n\n @Output()\n anchorChange = new EventEmitter<Dayjs>();\n\n get headerRange(): CalendarHeaderRange {\n return calcRangeValue(this.dateNavRange, this.anchor);\n }\n\n bem = bem;\n\n DateNavRange = DateNavRange;\n\n // maxAvail > current date :right btn hide\n // minAvail > current date :left btn hide\n shouldShowNav(type: DateNavRange, side: Side) {\n const availValue = (side === Side.Left\n ? this._minAvail\n : this._maxAvail\n )?.clone();\n if (!availValue) {\n return true;\n }\n // 对于年的判别,2014-5-1至2015-6-1日,仍当展示按钮\n const constrainDate = [DateNavRange.Month, DateNavRange.Year].includes(type)\n ? availValue.add(side === Side.Left ? 1 : -1, type as 'month' | 'year')\n : availValue;\n return (\n this.compareNavValue(type, constrainDate, this.anchor) ===\n (side === Side.Left ? -1 : 1)\n );\n }\n\n // @return isBetween|isEqual:0, isBefore:-1,isAfter:1\n compareNavValue(type: DateNavRange, constrain: Dayjs, anchor: Dayjs) {\n const range = calcRangeValue(type, anchor);\n const constrainValue = constrain;\n if (type === DateNavRange.Decade) {\n if (constrainValue.isBetween(range.start, range.end, YEAR)) {\n return 0;\n }\n return constrainValue.isBefore(range.start) ? -1 : 1;\n }\n return constrainValue.isSame(range.start, MONTH)\n ? 0\n : constrainValue.isBefore(range.start, MONTH)\n ? -1\n : 1;\n }\n\n navHead(range: DateNavRange, value: number) {\n let anchor: Dayjs;\n switch (range) {\n case DateNavRange.Month: {\n anchor = this.anchor.add(value, MONTH);\n break;\n }\n case DateNavRange.Year: {\n anchor = this.anchor.add(value, YEAR);\n break;\n }\n case DateNavRange.Decade:\n anchor = this.anchor.add(value, YEAR);\n break;\n }\n this.anchorChange.next(anchor);\n }\n\n clickNav = (range: DateNavRange) => {\n if (![DateNavRange.Month, DateNavRange.Year].includes(range)) {\n return;\n }\n this.navRangeChange.next(\n range === DateNavRange.Month ? DateNavRange.Year : DateNavRange.Decade,\n );\n };\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport dayjs, { Dayjs } from 'dayjs';\nimport isBetween from 'dayjs/plugin/isBetween';\n\nimport { buildBem } from '../../../utils';\nimport { DateNavRange } from '../../date-picker.type';\nimport {\n DAY,\n DAY_PANEL_COLUMN_COUNT,\n DAY_PANEL_ROW_COUNT,\n DatePickerType,\n MONTH,\n MONTH_PANEL_COLUMN_COUNT,\n MONTH_PANEL_ROW_COUNT,\n YEAR,\n YEAR_PANEL_COLUMN_COUNT,\n YEAR_PANEL_ROW_COUNT,\n} from '../constant';\nimport {\n DateCell,\n calcRangeValue,\n composeDisabledDateFn,\n formatDate,\n getDatePanelIterable,\n getNavRangeByType,\n getTypeByNavRange,\n sortDates,\n} from '../util';\n\ndayjs.extend(isBetween);\n\nconst bem = buildBem('aui-picker-panel');\n\n@Component({\n selector: 'aui-picker-panel',\n templateUrl: './picker-panel.template.html',\n styleUrls: ['./picker-panel.style.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PickerPanelComponent implements OnChanges {\n @Input()\n navRange!: DateNavRange;\n\n @Input()\n type!: DatePickerType;\n\n @Input()\n anchor = dayjs();\n\n @Input()\n matchDates: Dayjs[];\n\n @Input()\n disabledDate: (date: Dayjs, navRange: DateNavRange) => boolean = () => false;\n\n @Input()\n set weekStartDay(day: number) {\n const normalized = Math.max(Math.min(Math.round(day), 6), 0);\n this.weekDefs = [\n ...this.weekDefs.slice(normalized),\n ...this.weekDefs.slice(0, normalized),\n ];\n this._weekStartDay = normalized;\n }\n\n get weekStartDay() {\n return this._weekStartDay;\n }\n\n @Input()\n minDate: Dayjs;\n\n @Input()\n maxDate: Dayjs;\n\n get disabledDateFn() {\n return composeDisabledDateFn(\n date => this.minDate && date.isBefore(this.minDate),\n date => this.maxDate && date.isAfter(this.maxDate),\n this.disabledDate,\n );\n }\n\n private _weekStartDay = 0;\n\n panelData: DateCell[][];\n\n @Output()\n select = new EventEmitter<Dayjs>();\n\n @Output()\n hovered = new EventEmitter<Dayjs>();\n\n bem = bem;\n DateNavRange = DateNavRange;\n\n weekDefs = [\n 'sunday',\n 'monday',\n 'tuesday',\n 'wednesday',\n 'thursday',\n 'friday',\n 'saturday',\n ];\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n ngOnChanges() {\n // 如果 dateValue 是一个数组,必然是同一个面板上,否则应当给与不同的面板不同的dateValue值\n const headerRange = calcRangeValue(this.navRange, this.anchor);\n this.renderPanelData(headerRange.start, this.navRange);\n }\n\n // 根据当前数据,计算渲染表格\n // eslint-disable-next-line sonarjs/cognitive-complexity\n renderPanelData(date: Dayjs, navRange: DateNavRange) {\n const value = [];\n let colCounts = 0;\n let rowCounts = 0;\n if (!this.panelData) {\n this.panelData = [[]];\n }\n const [...values] = getDatePanelIterable(date, navRange, this.weekStartDay);\n if (navRange === DateNavRange.Month) {\n colCounts = DAY_PANEL_COLUMN_COUNT;\n rowCounts = DAY_PANEL_ROW_COUNT;\n } else if (navRange === DateNavRange.Decade) {\n colCounts = YEAR_PANEL_COLUMN_COUNT;\n rowCounts = YEAR_PANEL_ROW_COUNT;\n } else if (navRange === DateNavRange.Year) {\n colCounts = MONTH_PANEL_COLUMN_COUNT;\n rowCounts = MONTH_PANEL_ROW_COUNT;\n }\n for (let k = 0; k < rowCounts; k++) {\n const row = [];\n for (let i = 0; i < colCounts; i++) {\n const cell = formatDate(navRange, values[k * colCounts + i], date);\n cell.isDisabled = this.disabledDateFn(cell.value, navRange);\n const sortedDates = sortDates(this.matchDates);\n if (sortedDates?.length === 2 && navRange === DateNavRange.Month) {\n if (\n cell.value.isBetween(sortedDates[0], sortedDates[1]) &&\n !cell.isBackground\n ) {\n cell.inRange = true;\n }\n cell.isRangeStart =\n cell.value.isSame(sortedDates[0], DAY) && !cell.isBackground;\n cell.isRangeEnd =\n cell.value.isSame(sortedDates[1], DAY) && !cell.isBackground;\n if (cell.isRangeStart && cell.isRangeEnd) {\n cell.isRangeStart = false;\n cell.isRangeEnd = false;\n }\n }\n row.push(cell);\n }\n value.push(row);\n }\n this.panelData = value.slice();\n this.cdr.markForCheck();\n }\n\n match(value: Dayjs) {\n if (\n !this.matchDates?.filter(v => !!v)?.length ||\n getNavRangeByType(this.type) !== this.navRange\n ) {\n return false;\n }\n return this.matchDates?.some(dateValue =>\n this.navRange === DateNavRange.Decade\n ? value.isSame(dateValue, YEAR)\n : this.navRange === DateNavRange.Year\n ? value.isSame(dateValue, MONTH)\n : value.isSame(dateValue, DAY),\n );\n }\n\n matchToday(value: Dayjs) {\n return value.isSame(dayjs(), getTypeByNavRange(this.navRange));\n }\n\n selectValue(value: Dayjs) {\n this.select.next(value);\n }\n\n trackByFn() {\n return this.navRange;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport dayjs, { Dayjs } from 'dayjs';\n\nimport { CommonFormControl } from '../../../form/common-form';\nimport { TimePickerModel } from '../../../time-picker/time-picker.type';\nimport { buildBem } from '../../../utils';\nimport { DateNavRange, DisabledTimeFn, Side } from '../../date-picker.type';\nimport { DatePickerType, MONTH, YEAR } from '../constant';\nimport {\n composeDisabledDateFn,\n getTimePickerModel,\n getTypeByNavRange,\n maxDate,\n minDate,\n nextNavRangeType,\n sortDates,\n updateDate,\n updateDateByTimeModel,\n} from '../util';\n\nconst bem = buildBem('aui-date-range-picker-panel');\n\n@Component({\n selector: 'aui-date-range-picker-panel',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangePickerPanelComponent),\n multi: true,\n },\n ],\n})\nexport class DateRangePickerPanelComponent extends CommonFormControl<Dayjs[]> {\n @Input()\n clearable = true;\n\n @Input()\n clearText: string;\n\n @Input()\n showTime = true;\n\n @Input()\n showFooter = true;\n\n @Input()\n disabledDate: (date: Dayjs, navRange: DateNavRange) => boolean = () => false;\n\n @Input()\n disabledTime: { left: DisabledTimeFn; right: DisabledTimeFn } = {\n left: () => null,\n right: () => null,\n };\n\n @Input()\n weekStartDay = 0;\n\n @Input()\n minDate: Dayjs;\n\n @Input()\n maxDate: Dayjs;\n\n @Output()\n clear = new EventEmitter<void>();\n\n @Output()\n confirm = new EventEmitter<void>();\n\n bem = bem;\n Side = Side;\n DatePickerType = DatePickerType;\n leftDateRange = DateNavRange.Month;\n rightDateRange = DateNavRange.Month;\n\n FOOTER_DATE_FORMAT = 'YYYY-MM-dd';\n\n leftAnchor = dayjs();\n rightAnchor = dayjs().add(1, MONTH);\n\n get maxHeaderAvail() {\n return minDate(this.rightAnchor, this.maxDate);\n }\n\n get minHeaderAvail() {\n return maxDate(this.minDate, this.leftAnchor);\n }\n\n // 用于存放 range data 序列,数量为 2 时清除\n rangeValue: Dayjs[] = [];\n\n // 用于组装匹配日期序列\n matchValues: Dayjs[];\n\n startTime: TimePickerModel;\n endTime: TimePickerModel;\n\n writeValue(obj: Dayjs[]) {\n super.writeValue(obj);\n this.rangeValue = obj || [];\n this.matchValues = [...this.rangeValue];\n this.startTime = getTimePickerModel(obj?.[0]);\n this.endTime = getTimePickerModel(obj?.[1]);\n if (obj?.length === 2) {\n this.reorder(sortDates(obj));\n }\n this.cdr.markForCheck();\n }\n\n calendarRangeChange(type: DateNavRange, side: Side) {\n if (side === Side.Left) {\n this.leftDateRange = type;\n } else {\n this.rightDateRange = type;\n }\n }\n\n // range 组件范围受控\n getDateDisabledFn(side: Side, constrainValue: Dayjs) {\n return composeDisabledDateFn((date: Dayjs, navRange: DateNavRange) => {\n if (navRange === DateNavRange.Month) {\n return false;\n }\n if (navRange === DateNavRange.Decade) {\n return date[side === Side.Left ? 'isAfter' : 'isBefore'](\n constrainValue,\n YEAR,\n );\n }\n return !date[side === Side.Left ? 'isBefore' : 'isAfter'](\n constrainValue,\n MONTH,\n );\n }, this.disabledDate);\n }\n\n private getDisabledTimeCachedFn(side: Side) {\n let cacheSelectedDate: Dayjs;\n let cacheDisabledTimeFn: ReturnType<DisabledTimeFn>;\n return (value: Dayjs, key: keyof ReturnType<DisabledTimeFn>) => {\n if (value !== cacheSelectedDate) {\n cacheDisabledTimeFn = (this.disabledTime?.[side] || (() => null))(\n value,\n );\n cacheSelectedDate = value;\n }\n return cacheDisabledTimeFn?.[key];\n };\n }\n\n leftDisabledTimeFn = this.getDisabledTimeCachedFn(Side.Left);\n rightDisabledTimeFn = this.getDisabledTimeCachedFn(Side.Right);\n\n selectPickerPanel(value: Dayjs, side: Side) {\n const navRange =\n side === Side.Left ? this.leftDateRange : this.rightDateRange;\n const type = getTypeByNavRange(navRange);\n const dateValue = updateDate(\n side === Side.Left ? this.leftAnchor : this.rightAnchor,\n value,\n type,\n );\n const nextRange = nextNavRangeType(navRange, DateNavRange.Month);\n\n if (side === Side.Left) {\n this.leftAnchor = dateValue;\n this.leftDateRange = nextRange;\n } else {\n this.rightAnchor = dateValue;\n this.rightDateRange = nextRange;\n }\n\n if (navRange !== DateNavRange.Month) {\n return;\n }\n\n if (this.leftAnchor.isSame(this.rightAnchor, MONTH)) {\n this.rightAnchor = this.rightAnchor.add(1, MONTH);\n }\n\n this.rangeValue =\n this.rangeValue.length === 2\n ? [dateValue]\n : sortDates([...this.rangeValue, dateValue]);\n this.matchValues = [...this.rangeValue];\n this.syncTime();\n if (this.rangeValue.length === 2) {\n this.reorder(this.rangeValue);\n this.confirmValue(this.rangeValue, !this.showTime);\n }\n }\n\n reorder(sortedDate: Dayjs[]) {\n if (!sortedDate[0].isSame(sortedDate[1], MONTH)) {\n this.leftAnchor = updateDate(\n this.leftAnchor,\n sortedDate[0],\n DatePickerType.Day,\n );\n this.rightAnchor = updateDate(\n this.leftAnchor,\n sortedDate[1],\n DatePickerType.Day,\n );\n }\n }\n\n hoverItem(date: Dayjs) {\n if (this.rangeValue.length === 1) {\n this.matchValues[1] = date;\n }\n }\n\n confirmValue(value: Dayjs[], closeThen = true) {\n this.emitValueChange(value);\n closeThen && this.confirm.next();\n }\n\n timeChange(time: TimePickerModel) {\n if (!time) {\n return;\n }\n this.syncTime();\n if (!this.rangeValue?.length) {\n const date = updateDateByTimeModel(dayjs(), time);\n this.rangeValue = [date, date];\n this.matchValues = [...this.rangeValue];\n this.startTime = this.endTime = time;\n }\n this.emitValueChange(this.rangeValue);\n }\n\n syncTime() {\n if (this.showTime && !!this.rangeValue?.length) {\n const startDate = this.rangeValue[0]\n ? updateDateByTimeModel(this.rangeValue[0], this.startTime)\n : null;\n const endDate = this.rangeValue[1]\n ? updateDateByTimeModel(this.rangeValue[1], this.endTime)\n : null;\n if (!this.startTime && startDate) {\n this.startTime = getTimePickerModel(this.rangeValue[0]);\n }\n if (!this.endTime && endDate) {\n this.endTime = getTimePickerModel(this.rangeValue[1]);\n }\n this.rangeValue = [startDate, endDate].filter(i => !!i);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport dayjs, { ConfigType, Dayjs } from 'dayjs';\n\nimport { CommonFormControl } from '../../form/common-form';\nimport { ComponentSize } from '../../types';\nimport { DatePickerType } from '../calendar/constant';\nimport { DateNavRange, DisabledTimeFn } from '../date-picker.type';\n\n@Component({\n selector: 'aui-date-picker',\n templateUrl: './date-picker.template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n // tslint:disable-next-line: validate-decorators\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n },\n ],\n styleUrls: ['./date-picker.style.scss'],\n})\nexport class DatePickerComponent\n extends CommonFormControl<ConfigType, Dayjs>\n implements OnInit {\n @Input()\n clearable = true;\n\n @Input()\n clearText: string;\n\n @Input()\n format: string;\n\n @Input()\n showTime = false;\n\n @Input()\n type = DatePickerType.Day;\n\n @Input()\n size = ComponentSize.Medium;\n\n @Input()\n disabledDate: (date: Dayjs, type: DateNavRange) => boolean = () => false;\n\n @Input()\n disabledTime: DisabledTimeFn = () => null;\n\n @Input()\n minDate: Dayjs;\n\n @Input()\n maxDate: Dayjs;\n\n @Input()\n weekStartDay = 0;\n\n @Input()\n showFooter = true;\n\n @Input()\n footerTemplate: TemplateRef<unknown>;\n\n @Input()\n extraFooter: TemplateRef<unknown>;\n\n @Input()\n placeholder: string;\n\n @Output()\n openChange = new EventEmitter<boolean>();\n\n value: Dayjs;\n DatePickerType = DatePickerType;\n\n ngOnInit() {\n if (!this.format) {\n this.format = this.getDefaultFormat(this.type);\n this.cdr.markForCheck();\n }\n }\n\n valueIn(obj: ConfigType) {\n return obj ? dayjs(obj) : null;\n }\n\n writeValue(obj: Dayjs) {\n super.writeValue(obj);\n this.value = obj;\n this.cdr.markForCheck();\n }\n\n private getDefaultFormat(type = DatePickerType.Day) {\n return type === DatePickerType.Year\n ? 'YYYY'\n : type === DatePickerType.Month\n ? 'YYYY-MM'\n : this.showTime\n ? 'YYYY-MM-DD HH:mm:ss'\n : 'YYYY-MM-DD';\n }\n\n clearValue() {\n this.value = null;\n this.emitValueChange(null);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport dayjs, { ConfigType, Dayjs } from 'dayjs';\n\nimport { CommonFormControl } from '../../form/common-form';\nimport { ComponentSize } from '../../types';\nimport { DisabledDateFn, DisabledTimeFn } from '../date-picker.type';\n\n@Component({\n selector: 'aui-range-picker',\n templateUrl: './range-picker.template.html',\n // provide tooltip class\n // tslint:disable-next-line: validate-decorators\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RangePickerComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./range-picker.style.scss'],\n})\nexport class RangePickerComponent extends CommonFormControl<\n ConfigType[],\n Dayjs[]\n> {\n @Input()\n clearable = true;\n\n @Input()\n clearText: string;\n\n @Input()\n format = 'YYYY-MM-DD';\n\n @Input()\n showFooter = true;\n\n @Input()\n showTime = true;\n\n @Input()\n disabledDate: DisabledDateFn = () => false;\n\n @Input()\n minDate: Dayjs;\n\n @Input()\n maxDate: Dayjs;\n\n @Input()\n disabledTime: { left: DisabledTimeFn; right: DisabledTimeFn } = {\n left: () => null,\n right: () => null,\n };\n\n @Input()\n weekStartDay = 0;\n\n @Input()\n size: ComponentSize;\n\n @Output()\n openChange = new EventEmitter<boolean>();\n\n value: [Dayjs, Dayjs];\n\n valueIn(obj: [ConfigType, ConfigType]) {\n return obj?.map(i => dayjs(i));\n }\n\n writeValue(obj: [Dayjs, Dayjs]) {\n super.writeValue(obj);\n this.value = obj;\n this.cdr.markForCheck();\n }\n\n clearValue() {\n this.value = null;\n this.emitValueChange(null);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Dayjs } from 'dayjs';\n\nimport { InputComponent } from '../../input/input.component';\nimport { ComponentSize } from '../../types';\nimport { buildBem } from '../../utils';\n\nconst bem = buildBem('aui-date-picker-trigger');\n\n@Component({\n selector: 'aui-date-picker-trigger',\n templateUrl: './trigger.template.html',\n // tslint:disable-next-line: validate-decorators\n encapsulation: ViewEncapsulation.Emulated,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./trigger.style.scss'],\n})\nexport class DatePickerTriggerComponent {\n @Input()\n format = 'YYYY-MM-DD';\n\n @Input()\n size: ComponentSize;\n\n @Input()\n isRange: boolean;\n\n @Input()\n value: Dayjs | Dayjs[];\n\n @Input()\n clearable = true;\n\n @Input()\n placeholder: string;\n\n @Input()\n startPlaceholder: string;\n\n @Input()\n endPlaceholder: string;\n\n @Input()\n disabled = false;\n\n @Output()\n blur = new EventEmitter<void>();\n\n @Output()\n clear = new EventEmitter<void>();\n\n @ViewChild('focusRef', { static: false })\n focusInputRef: InputComponent;\n\n centerFocus = false;\n leftFocus = false;\n rightFocus = false;\n hovered = false;\n bem = bem;\n\n get isFocus() {\n return this.isRange ? this.leftFocus || this.rightFocus : this.centerFocus;\n }\n\n get hasValue() {\n return !this.isRange\n ? !!this.value\n : (this.value as Dayjs[])?.[0] || (this.value as Dayjs[])?.[1];\n }\n\n get showClear() {\n return !this.disabled && this.clearable && this.hasValue && this.hovered;\n }\n\n constructor() {\n this.focusInput = this.focusInput.bind(this);\n }\n\n focusInput() {\n this.focusInputRef.elementRef.nativeElement.focus();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '../button/public-api';\nimport { I18nModule } from '../i18n/public-api';\nimport { IconModule } from '../icon/icon.module';\nimport { InputModule } from '../input/public-api';\nimport { TimePickerModule } from '../time-picker/public-api';\nimport { TooltipModule } from '../tooltip/public-api';\n\nimport { DatePickerPanelComponent } from './calendar/date-picker-panel/component';\nimport { CalendarFooterComponent } from './calendar/footer/component';\nimport { CalendarHeaderComponent } from './calendar/header/component';\nimport { PickerPanelComponent } from './calendar/panel/picker-panel';\nimport { DateRangePickerPanelComponent } from './calendar/range-picker-panel/component';\nimport { DatePickerComponent } from './date-picker/date-picker.component';\nimport { RangePickerComponent } from './range-picker/range-picker.component';\nimport { DatePickerTriggerComponent } from './trigger/trigger.component';\n\nconst COMPONENTS = [\n CalendarHeaderComponent,\n CalendarFooterComponent,\n DateRangePickerPanelComponent,\n PickerPanelComponent,\n RangePickerComponent,\n DatePickerPanelComponent,\n DatePickerComponent,\n DatePickerTriggerComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n InputModule,\n ButtonModule,\n TooltipModule,\n ReactiveFormsModule,\n FormsModule,\n TimePickerModule,\n IconModule,\n I18nModule,\n ],\n declarations: [...COMPONENTS],\n exports: [...COMPONENTS],\n})\nexport class DatePickerModule {}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport enum DrawerSize {\n Small = 'small',\n Medium = 'medium',\n Big = 'big',\n}\n\nexport abstract class DrawerRef<T = ComponentType<any>, R = any> {\n abstract afterClosed: Observable<R>;\n abstract afterOpen: Observable<void>;\n abstract dispose(result?: R): void;\n abstract open(): void;\n abstract componentInstance: T | null;\n\n abstract title?: string | TemplateRef<unknown>;\n abstract footer?: string | TemplateRef<unknown>;\n abstract size?: DrawerSize;\n abstract offsetY?: string;\n abstract visible?: boolean;\n abstract hideOnClickOutside?: boolean;\n abstract showClose?: boolean;\n abstract drawerClass?: string;\n abstract mask?: boolean;\n abstract maskClosable?: boolean;\n abstract width?: number;\n abstract divider?: boolean;\n}\n","/**\n * @packageDocumentation\n * @module page-guard\n */\n\nimport { Directive } from '@angular/core';\n\n@Directive({\n selector: '[auiDrawerHeader]',\n})\nexport class DrawerHeaderDirective {}\n\n@Directive({\n selector: '[auiDrawerContent]',\n})\nexport class DrawerContentDirective {}\n\n@Directive({\n selector: '[auiDrawerFooter]',\n})\nexport class DrawerFooterDirective {}\n","import {\n ComponentType,\n Overlay,\n OverlayConfig,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport {\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n InjectionToken,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { isTemplateRef } from '../../utils';\n\nimport { DrawerRef, DrawerSize } from './drawer-ref';\nimport {\n DrawerContentDirective,\n DrawerFooterDirective,\n DrawerHeaderDirective,\n} from './helper-directives';\n\nexport const DATA = new InjectionToken('drawer-data');\n\nconst DRAWER_OVERLAY_CLASS = 'aui-drawer-overlay';\n\nconst SIZE_MAPPER = {\n [DrawerSize.Small]: 400,\n [DrawerSize.Medium]: 600,\n [DrawerSize.Big]: 800,\n};\n\n@Component({\n selector: 'aui-drawer',\n templateUrl: './drawer.component.html',\n styleUrls: ['./drawer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DrawerComponent<\n T = ComponentType<unknown>,\n R = unknown,\n D = unknown\n >\n extends DrawerRef<T, R>\n implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n @Input()\n title: string | TemplateRef<unknown>;\n\n @Input()\n footer: string | TemplateRef<unknown>;\n\n @Input()\n size: DrawerSize = DrawerSize.Medium;\n\n @Input()\n offsetY = '0px';\n\n @Input() visible: boolean;\n\n @Input()\n content: TemplateRef<T> | ComponentType<T>;\n\n @Input()\n hideOnClickOutside = false;\n\n @Input()\n showClose = true;\n\n @Input()\n drawerClass: string;\n\n @Input()\n mask: boolean;\n\n @Input()\n maskClosable: boolean;\n\n @Input()\n divider = true;\n\n private _value = SIZE_MAPPER[DrawerSize.Medium];\n @Input()\n set width(value: number) {\n this._value = value;\n }\n\n get width() {\n return this._value;\n }\n\n get drawerClasses(): Record<string, boolean> {\n return {\n 'aui-drawer': true,\n hasDivider: this.divider,\n ...(!this.drawerClass ? null : { [this.drawerClass]: true }),\n };\n }\n\n private readonly afterClosed$ = new Subject<R>();\n\n get afterClosed(): Observable<R> {\n return this.afterClosed$.asObservable();\n }\n\n private readonly afterOpen$ = new Subject<void>();\n\n get afterOpen(): Observable<void> {\n return this.afterOpen$.asObservable();\n }\n\n @Output()\n drawerViewInit = new EventEmitter<void>();\n\n @Output() readonly close = new EventEmitter<MouseEvent>();\n\n @ViewChild('drawerTemplate', { static: true })\n drawerTemplate: TemplateRef<void>;\n\n @ViewChild(CdkPortalOutlet, { static: false })\n bodyPortalOutlet: CdkPortalOutlet;\n\n @ContentChild(DrawerHeaderDirective, { read: TemplateRef })\n titleTemplate: TemplateRef<T>;\n\n @ContentChild(DrawerContentDirective, { read: TemplateRef })\n contentTemplate: TemplateRef<T> | ComponentType<T>;\n\n @ContentChild(DrawerFooterDirective, { read: TemplateRef })\n footerTemplate: TemplateRef<T>;\n\n onDestroy$ = new Subject<void>();\n\n isTemplateRef = isTemplateRef;\n\n componentInstance: T | null = null;\n\n contentParams: D;\n overlayRef: OverlayRef;\n portal: TemplatePortal;\n templateContext: unknown = {};\n get transform() {\n return `translateX(${this.visible ? 0 : '100%'})`;\n }\n\n constructor(\n private readonly viewContainerRef: ViewContainerRef,\n private readonly overlay: Overlay,\n private readonly injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit() {\n this.attachOverlay();\n this.updateBodyOverflow();\n this.templateContext = { $implicit: this.contentParams };\n this.cdr.detectChanges();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { visible } = changes;\n if (visible) {\n const value = visible.currentValue;\n if (value) {\n this.open();\n } else {\n this.dispose();\n }\n }\n }\n\n ngAfterViewInit() {\n this.attachBodyContent();\n setTimeout(() => {\n this.drawerViewInit.emit();\n }, 0);\n }\n\n private attachOverlay() {\n if (!this.overlayRef) {\n this.portal = new TemplatePortal(\n this.drawerTemplate,\n this.viewContainerRef,\n );\n this.overlayRef = this.overlay.create(this.getOverlayConfig());\n }\n if (this.overlayRef) {\n this.overlayRef.attach(this.portal);\n this.overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.onDestroy$))\n .subscribe(event => {\n // 判断鼠标点击事件的 target 是否为 overlay-container 的子节点,如果是,则不关闭 drawer。\n // 为了避免点击 drawer 里的 tooltip 后 drawer 被关闭。\n if (\n this.visible &&\n this.hideOnClickOutside &&\n event.target instanceof Node &&\n !this.overlayRef.hostElement?.parentNode?.contains(event.target)\n ) {\n event.stopPropagation();\n event.preventDefault();\n this.dispose();\n }\n });\n }\n }\n\n private getOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n panelClass: DRAWER_OVERLAY_CLASS,\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n }\n\n private attachBodyContent(): void {\n this.bodyPortalOutlet?.dispose();\n const content = this.content || this.contentTemplate;\n if (content instanceof Type) {\n const componentPortal = new ComponentPortal<T>(\n content,\n null,\n Injector.create({\n providers: [\n {\n provide: DATA,\n useValue: this.contentParams,\n },\n ],\n parent: this.injector,\n }),\n );\n const componentRef = this.bodyPortalOutlet?.attachComponentPortal(\n componentPortal,\n );\n this.componentInstance = componentRef.instance;\n Object.assign(componentRef.instance, this.contentParams);\n componentRef.changeDetectorRef.detectChanges();\n }\n }\n\n private updateBodyOverflow(): void {\n if (this.overlayRef) {\n if (this.visible) {\n this.overlayRef.getConfig().scrollStrategy.enable();\n } else {\n this.overlayRef.getConfig().scrollStrategy.disable();\n }\n }\n }\n\n open() {\n this.visible = true;\n this.afterOpen$.next();\n this.afterOpen$.complete();\n this.updateBodyOverflow();\n this.cdr.markForCheck();\n }\n\n dispose(result: R = null) {\n this.visible = false;\n this.close.emit();\n this.afterClosed$.next(result);\n this.afterClosed$.complete();\n this.updateBodyOverflow();\n this.cdr.markForCheck();\n }\n\n private disposeOverlay(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n this.overlayRef = null;\n }\n\n maskClick() {\n if (this.maskClosable && this.mask) {\n this.dispose();\n }\n }\n\n ngOnDestroy(): void {\n this.onDestroy$.next();\n this.disposeOverlay();\n }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, TemplateRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { DrawerComponent } from './component/drawer.component';\nimport { DrawerSize } from './public-api';\n\nexport interface DrawerOptions<T = any, D = any> {\n title?: string | TemplateRef<unknown>;\n width?: number;\n content?: ComponentType<T> | TemplateRef<T>;\n contentParams?: D;\n footer?: string | TemplateRef<unknown>;\n offsetY?: string;\n divider?: boolean;\n drawerClass?: string;\n size?: DrawerSize;\n visible?: boolean;\n hideOnClickOutside?: boolean;\n showClose?: boolean;\n mask?: boolean;\n maskClosable?: boolean;\n}\n@Injectable()\nexport class DrawerService {\n private drawerRef: ComponentRef<DrawerComponent>;\n private overlayRef: OverlayRef;\n private readonly unsubscribe$ = new Subject<void>();\n\n constructor(private readonly overlay: Overlay) {}\n\n open<T = unknown>(options: DrawerOptions<T>) {\n this.drawerRef?.instance?.dispose();\n this.createDrawer();\n this.updateOptions(options);\n return this.drawerRef?.instance;\n }\n\n updateOptions(options: DrawerOptions): void {\n Object.assign(this.drawerRef.instance, options);\n }\n\n private createDrawer(): void {\n this.overlayRef = this.overlay.create();\n this.drawerRef = this.overlayRef.attach(\n new ComponentPortal(DrawerComponent),\n );\n this.drawerRef.instance.drawerViewInit\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n this.drawerRef.instance.open();\n });\n\n this.drawerRef.instance.afterClosed\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n this.overlayRef.dispose();\n this.drawerRef = null;\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n });\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';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { DrawerComponent } from './component/drawer.component';\nimport {\n DrawerContentDirective,\n DrawerFooterDirective,\n DrawerHeaderDirective,\n} from './component/helper-directives';\nimport { DrawerService } from './drawer.service';\n\nconst COMMON = [\n DrawerComponent,\n DrawerHeaderDirective,\n DrawerContentDirective,\n DrawerFooterDirective,\n];\n\n@NgModule({\n imports: [CommonModule, IconModule, IconModule, OverlayModule, PortalModule],\n declarations: COMMON,\n exports: COMMON,\n entryComponents: [DrawerComponent],\n providers: [DrawerService],\n})\nexport class DrawerModule {}\n","import { ValueOf } from '../types';\n\nexport const StepState = {\n Default: 'default',\n Done: 'done',\n Error: 'error',\n Pending: 'pending',\n} as const;\n\nexport type StepState = ValueOf<typeof StepState>;\n\nexport interface StepItem {\n label: string;\n description?: string;\n state?: StepState;\n optional?: boolean;\n /**\n * @deprecated 每个步骤不再需要单独控制。通过组件参数 selectable 统一控制\n */\n editable?: boolean;\n}\n\nexport type StepsOrientation = 'horizontal' | 'vertical';\n\nexport type StepsType = 'step' | 'progress';\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { StepItem, StepState, StepsOrientation, StepsType } from './types';\n\nconst StepDefaultIcon = {\n [StepState.Default]: 'number',\n [StepState.Done]: 'check_circle',\n [StepState.Error]: 'close_circle',\n [StepState.Pending]: 'sync_circle',\n};\n\nconst StepSelectedIcon = {\n [StepState.Default]: 'number',\n [StepState.Done]: 'check_circle_s',\n [StepState.Error]: 'close_circle_s',\n [StepState.Pending]: 'sync_circle_s',\n};\n\n@Component({\n selector: 'aui-steps',\n exportAs: 'auiSteps',\n templateUrl: './steps.component.html',\n styleUrls: ['./steps.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class StepsComponent implements OnInit, OnDestroy {\n _currentIndex: number;\n private _steps: StepItem[] = [];\n @Input()\n get steps() {\n return this._steps;\n }\n\n set steps(val: StepItem[]) {\n this._steps = val;\n this.stepsChange$$.next(val);\n }\n\n /**\n * @deprecated type 为 step 时一般在使用上下文中控制是否可以进行下一步;type 为 progress 时强制按顺序执行\n */\n @Input()\n linear = false;\n\n @Input()\n get currentIndex() {\n return this._currentIndex;\n }\n\n set currentIndex(index: number) {\n this.currentIndexChange$$.next(index);\n }\n\n @Input()\n orientation: StepsOrientation = 'horizontal';\n\n @Input()\n type: StepsType = 'step';\n\n @Input()\n selectable = false;\n\n @Output()\n currentIndexChange = new EventEmitter<number>();\n\n @Output()\n selectedIndexChange = new EventEmitter<number>();\n\n currentIndexChange$$ = new BehaviorSubject<number>(0);\n stepsChange$$ = new BehaviorSubject<StepItem[]>([]);\n\n selectedIndex: number;\n\n private readonly destroy$$ = new Subject<void>();\n\n ngOnInit() {\n this.currentIndexChange$$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(index => {\n if (this.type === 'step') {\n this.setCurrentIndex(index);\n }\n });\n this.stepsChange$$.pipe(takeUntil(this.destroy$$)).subscribe(steps => {\n if (this.type === 'progress') {\n this.getProgressCurrentIndex(steps);\n }\n });\n }\n\n private setCurrentIndex(index: number) {\n if (this.linear) {\n if (this.steps?.length) {\n const ret = Math.min(Math.max(0, index), this.steps.length - 1);\n const reversedPrevSteps = this.steps.slice(0, ret).reverse();\n const doneIndex = reversedPrevSteps.findIndex(\n step => step.state === StepState.Done || step.optional,\n );\n const lastDoneStepIndex =\n doneIndex > -1 ? reversedPrevSteps.length - doneIndex : 0;\n this._currentIndex = this.selectedIndex = Math.min(\n lastDoneStepIndex,\n ret,\n );\n }\n } else {\n this._currentIndex = this.selectedIndex = index;\n }\n }\n\n private getProgressCurrentIndex(steps: StepItem[]) {\n if (!steps?.length) {\n if (this._currentIndex !== 0) {\n this.currentIndexChange.emit(0);\n }\n this._currentIndex = 0;\n } else {\n const reversedSteps = this.steps.slice(0).reverse();\n const doneStepIndex = reversedSteps.findIndex(\n step => step.state === StepState.Done,\n );\n const lastDoneStepIndex =\n doneStepIndex > -1 ? reversedSteps.length - doneStepIndex : 0;\n const newIndex = Math.min(lastDoneStepIndex, steps.length - 1);\n if (this._currentIndex !== newIndex) {\n this.currentIndexChange.emit(newIndex);\n }\n if (this._currentIndex === this.selectedIndex) {\n this._currentIndex = this.selectedIndex = newIndex;\n } else {\n this._currentIndex = newIndex;\n }\n }\n }\n\n get isVertical() {\n return this.orientation === 'vertical';\n }\n\n get isProgress() {\n return this.type === 'progress';\n }\n\n getIcon(i: number, state: StepState): string {\n if (!state) {\n return StepDefaultIcon.default;\n }\n return this.getActiveIndex() === i\n ? StepSelectedIcon[state]\n : StepDefaultIcon[state];\n }\n\n select(i: number) {\n if (this.isSelectable(i)) {\n if (this.isProgress) {\n this.selectedIndexChange.emit(i);\n this.selectedIndex = i;\n } else {\n this.currentIndexChange.emit(i);\n this._currentIndex = i;\n this.selectedIndex = i;\n }\n }\n }\n\n isSelectable(i: number) {\n const currentStep = this.steps[this._currentIndex];\n if (!this.selectable || this.selectedIndex === i) {\n return false;\n }\n const isLinear = this.isProgress ? true : this.linear;\n if (\n isLinear &&\n !currentStep.optional &&\n ((currentStep.state === StepState.Done && i > this._currentIndex + 1) ||\n (currentStep.state !== StepState.Done && i > this._currentIndex))\n ) {\n return false;\n }\n if (i < this._currentIndex && !this.selectable) {\n return false;\n }\n return true;\n }\n\n getActiveIndex() {\n return this.selectedIndex !== undefined\n ? this.selectedIndex\n : this._currentIndex;\n }\n\n isLastActive(i: number, steps: StepItem[]) {\n const firstDefaultIndex = steps.findIndex(\n step => !step.state || step.state === StepState.Default,\n );\n return i === this.selectedIndex\n ? true\n : firstDefaultIndex === 0\n ? false\n : firstDefaultIndex === i;\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { IconModule } from '../icon/public-api';\n\nimport { StepsComponent } from './steps.component';\n\n@NgModule({\n imports: [CommonModule, IconModule],\n declarations: [StepsComponent],\n exports: [StepsComponent],\n})\nexport class StepsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {DatePickerComponent as ɵy} from './date-picker/date-picker/date-picker.component';\nexport {ConfirmDialogComponent as ɵg} from './dialog/confirm-dialog/confirm-dialog.component';\nexport {DialogComponent as ɵf} from './dialog/dialog.component';\nexport {MenuGroupTitleDirective as ɵq} from './dropdown/helper-directives';\nexport {AutosizeDirective as ɵo} from './input/autosize.directive';\nexport {InputAddonAfterDirective as ɵj,InputAddonBeforeDirective as ɵi,InputPrefixDirective as ɵk,InputSuffixDirective as ɵl} from './input/helper-directives';\nexport {BaseMessage as ɵu} from './message/base-message';\nexport {MessageAnimations as ɵt} from './message/message-animations';\nexport {MessageWrapperComponent as ɵr} from './message/message-wrapper.component';\nexport {MessageComponent as ɵs} from './message/message.component';\nexport {NotificationWrapperComponent as ɵv} from './notification/notification-wrapper.component';\nexport {BaseRadio as ɵh} from './radio/base-radio';\nexport {VirtualForOfDirective as ɵw} from './scrolling/virtual-for-of.directive';\nexport {BaseSelect as ɵp} from './select/base-select';\nexport {ClickOutsideDirective as ɵn} from './shared/click-outside.directive';\nexport {SharedModule as ɵm} from './shared/shared.module';\nexport {TableExpandButtonCellComponent as ɵc,TableExpandPanelCellComponent as ɵd} from './table/table-cell.component';\nexport {TablePlaceholderDefDirective as ɵa,TablePlaceholderOutlet as ɵb} from './table/table-placeholder.directive';\nexport {TooltipCopyDirective as ɵe} from './tooltip/tooltip-copy.directive';\nexport {_isNumberValue as ɵx} from './utils';"],"names":["bem","uniqueId","prefix","CdkScrollable"],"mappings":"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"}