ngx-tethys 17.0.2 → 17.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/autocomplete/autocomplete.component.d.ts +2 -5
- package/cascader/cascader.component.d.ts +9 -1
- package/cascader/cascader.service.d.ts +3 -0
- package/drag-drop/drag.directive.d.ts +1 -4
- package/drag-drop/drop-container.directive.d.ts +4 -5
- package/dropdown/dropdown-submenu.component.d.ts +3 -6
- package/esm2022/autocomplete/autocomplete.component.mjs +7 -14
- package/esm2022/button/button-group.component.mjs +2 -2
- package/esm2022/cascader/cascader.component.mjs +27 -5
- package/esm2022/cascader/cascader.service.mjs +33 -3
- package/esm2022/core/behaviors/disabled.mjs +2 -2
- package/esm2022/date-picker/abstract-picker.directive.mjs +3 -3
- package/esm2022/date-picker/base-picker.component.mjs +3 -2
- package/esm2022/drag-drop/drag.directive.mjs +3 -7
- package/esm2022/drag-drop/drop-container.directive.mjs +9 -7
- package/esm2022/dropdown/dropdown-submenu.component.mjs +7 -12
- package/esm2022/form/form.directive.mjs +3 -2
- package/esm2022/grid/thy-grid-item.component.mjs +7 -11
- package/esm2022/image/preview/image-preview.component.mjs +9 -13
- package/esm2022/input/input-count.component.mjs +9 -10
- package/esm2022/input/input-group.component.mjs +9 -9
- package/esm2022/nav/nav-item.directive.mjs +7 -13
- package/esm2022/nav/nav.component.mjs +8 -13
- package/esm2022/radio/button/radio-button.component.mjs +2 -2
- package/esm2022/radio/group/radio-group.component.mjs +6 -1
- package/esm2022/radio/radio.component.mjs +2 -2
- package/esm2022/resizable/resizable.directive.mjs +11 -14
- package/esm2022/resizable/resize-handle.component.mjs +8 -13
- package/esm2022/shared/directives/thy-drag-drop.directive.mjs +8 -8
- package/esm2022/space/space.component.mjs +7 -9
- package/esm2022/table/table-column.component.mjs +3 -2
- package/esm2022/table/table.component.mjs +11 -12
- package/esm2022/tabs/tabs.component.mjs +8 -10
- package/esm2022/time-picker/time-picker.utils.mjs +8 -8
- package/esm2022/util/helpers/helpers.mjs +10 -1
- package/esm2022/version.mjs +2 -2
- package/esm2022/watermark/watermark.directive.mjs +9 -14
- package/fesm2022/ngx-tethys-autocomplete.mjs +8 -14
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-button.mjs +2 -1
- package/fesm2022/ngx-tethys-button.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +58 -6
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-core.mjs +2 -2
- package/fesm2022/ngx-tethys-core.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +2 -2
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-drag-drop.mjs +9 -10
- package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dropdown.mjs +8 -11
- package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-tethys-form.mjs +2 -1
- package/fesm2022/ngx-tethys-form.mjs.map +1 -1
- package/fesm2022/ngx-tethys-grid.mjs +6 -10
- package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +10 -12
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input.mjs +13 -14
- package/fesm2022/ngx-tethys-input.mjs.map +1 -1
- package/fesm2022/ngx-tethys-nav.mjs +11 -21
- package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +6 -1
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-resizable.mjs +15 -22
- package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +8 -7
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys-space.mjs +7 -8
- package/fesm2022/ngx-tethys-space.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +12 -12
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tabs.mjs +7 -9
- package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
- package/fesm2022/ngx-tethys-time-picker.mjs +8 -7
- package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-util.mjs +9 -0
- package/fesm2022/ngx-tethys-util.mjs.map +1 -1
- package/fesm2022/ngx-tethys-watermark.mjs +8 -13
- package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/grid/thy-grid-item.component.d.ts +3 -6
- package/image/preview/image-preview.component.d.ts +3 -6
- package/input/input-count.component.d.ts +2 -4
- package/input/input-group.component.d.ts +3 -4
- package/nav/nav-item.directive.d.ts +3 -6
- package/nav/nav.component.d.ts +3 -6
- package/package.json +1 -1
- package/resizable/resizable.directive.d.ts +2 -4
- package/resizable/resize-handle.component.d.ts +3 -6
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/shared/directives/thy-drag-drop.directive.d.ts +2 -4
- package/space/space.component.d.ts +2 -4
- package/table/table.component.d.ts +3 -3
- package/tabs/tabs.component.d.ts +2 -4
- package/util/helpers/helpers.d.ts +12 -0
- package/watermark/watermark.directive.d.ts +3 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-grid.mjs","sources":["../../../src/grid/thy-row.directive.ts","../../../src/grid/thy-col.directive.ts","../../../src/grid/grid.token.ts","../../../src/grid/thy-grid-item.component.ts","../../../src/grid/thy-grid.component.ts","../../../src/grid/flex.ts","../../../src/grid/module.ts","../../../src/grid/ngx-tethys-grid.ts"],"sourcesContent":["import { Directive, Input, OnChanges, OnInit, AfterViewInit, OnDestroy, ChangeDetectionStrategy } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { isString } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nexport type ThyRowJustify = 'start' | 'end' | 'center' | 'space-around' | 'space-between';\nexport type ThyRowAlign = 'top' | 'middle' | 'bottom';\n\n/**\n * 栅格行指令\n * @name thyRow\n * @order 30\n */\n@Directive({\n selector: '[thyRow]',\n host: {\n class: 'thy-row'\n },\n standalone: true\n})\nexport class ThyRowDirective implements OnInit, OnChanges, AfterViewInit {\n /**\n * 栅格的间距\n */\n @Input() thyGutter: number | { xs?: number; sm?: number; md?: number; lg?: number; xl?: number; xxl?: number };\n\n public actualGutter$ = new ReplaySubject<[number, number]>(1);\n\n private hostRenderer = useHostRenderer();\n\n constructor() {}\n\n ngOnInit() {\n this.setGutterStyle();\n }\n\n ngOnChanges() {\n this.setGutterStyle();\n }\n\n ngAfterViewInit(): void {}\n\n private setGutterStyle() {\n const [horizontalGutter, verticalGutter] = this.getGutter();\n this.actualGutter$.next([horizontalGutter, verticalGutter]);\n const renderGutter = (name: string, gutter: number) => {\n this.hostRenderer.setStyle(name, `-${gutter / 2}px`);\n };\n if (horizontalGutter > 0) {\n renderGutter('margin-left', horizontalGutter);\n renderGutter('margin-right', horizontalGutter);\n }\n if (verticalGutter > 0) {\n renderGutter('margin-top', verticalGutter);\n renderGutter('margin-bottom', verticalGutter);\n }\n }\n\n private getGutter() {\n if (isString(this.thyGutter)) {\n throw Error(`thyGutter value can not be string type`);\n }\n return [this.thyGutter as number, 0];\n }\n}\n","import { Directive, Input, OnChanges, Optional, Host, AfterViewInit, OnInit, SimpleChanges } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyRowDirective } from './thy-row.directive';\n\nexport interface ThyColEmbeddedProperty {\n span?: number;\n pull?: number;\n push?: number;\n offset?: number;\n order?: number;\n}\n\nexport type ThySpan = number | null | 'auto';\n\n/**\n * 栅格列指令\n * @name thyCol\n * @order 35\n */\n@Directive({\n selector: '[thyCol]',\n host: {\n class: 'thy-col'\n },\n standalone: true\n})\nexport class ThyColDirective implements OnInit, OnChanges, AfterViewInit {\n /**\n * 栅格项的占位列数,thySpan 如果传递了值,以 thySpan 为准\n */\n @Input() thyCol: ThySpan;\n\n /**\n * 栅格项的占位列数\n */\n @Input() thySpan: ThySpan;\n\n get span() {\n const span = this.thySpan ?? this.thyCol;\n return span || 24;\n }\n\n private hostRenderer = useHostRenderer();\n\n private takeUntilDestroyed = takeUntilDestroyed();\n\n constructor(@Optional() @Host() public thyRowDirective: ThyRowDirective) {}\n\n ngOnInit() {\n this.updateHostClass();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.updateHostClass();\n }\n\n ngAfterViewInit(): void {\n if (this.thyRowDirective) {\n this.thyRowDirective.actualGutter$.pipe(this.takeUntilDestroyed).subscribe(([horizontalGutter, verticalGutter]) => {\n const renderGutter = (name: string, gutter: number) => {\n this.hostRenderer.setStyle(name, `${gutter / 2}px`);\n };\n if (horizontalGutter > 0) {\n renderGutter('padding-left', horizontalGutter);\n renderGutter('padding-right', horizontalGutter);\n }\n if (verticalGutter > 0) {\n renderGutter('padding-top', verticalGutter);\n renderGutter('padding-bottom', verticalGutter);\n }\n });\n }\n }\n\n private updateHostClass() {\n this.hostRenderer.updateClassByMap({\n [`thy-col-${this.span}`]: true\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport abstract class ThyGridToken {\n xGap: number;\n gridItemPropValueChange$: Subject<void>;\n}\n\nexport const THY_GRID_COMPONENT = new InjectionToken<ThyGridToken>('THY_GRID_COMPONENT');\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, Optional, OnDestroy, OnInit, Inject } from '@angular/core';\nimport { MixinBase, mixinUnsubscribe } from 'ngx-tethys/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { ThyGridToken, THY_GRID_COMPONENT } from './grid.token';\nimport { ThyGridResponsiveDescription, THY_GRID_ITEM_DEFAULT_SPAN } from './thy-grid.component';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\n/**\n * 栅格项组件\n * @name thy-grid-item,[thyGridItem]\n * @order 15\n */\n@Component({\n selector: 'thy-grid-item,[thyGridItem]',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-grid-item'\n },\n standalone: true\n})\nexport class ThyGridItem extends mixinUnsubscribe(MixinBase) implements OnInit, OnDestroy {\n /**\n * 栅格项的占位列数,为 0 时会隐藏该栅格项\n * @default 1\n */\n @Input() thySpan: number | ThyGridResponsiveDescription = THY_GRID_ITEM_DEFAULT_SPAN;\n\n /**\n * 栅格项左侧的偏移列数\n */\n @Input() thyOffset: number | ThyGridResponsiveDescription = 0;\n\n private hostRenderer = useHostRenderer();\n\n public span: number = THY_GRID_ITEM_DEFAULT_SPAN;\n\n public offset: number = 0;\n\n constructor(public elementRef: ElementRef, @Optional() @Inject(THY_GRID_COMPONENT) private grid: ThyGridToken) {\n super();\n }\n\n ngOnInit(): void {\n this.grid.gridItemPropValueChange$.pipe(takeUntil(this.ngUnsubscribe$)).subscribe(() => {\n this.setGridItemStyle();\n });\n }\n\n private setGridItemStyle() {\n const xGap: number = this.grid?.xGap || 0;\n\n this.hostRenderer.setStyle('display', this.span === 0 ? 'none' : '');\n\n this.hostRenderer.setStyle('grid-column', `span ${this.span}`);\n\n this.hostRenderer.setStyle(\n 'margin-left',\n this.offset ? `calc(((100% - ${(this.span - 1) * xGap}px) / ${this.span} + ${xGap}px) * ${this.offset})` : ''\n );\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { ViewportRuler } from '@angular/cdk/scrolling';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n QueryList,\n SimpleChanges,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, Subject } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { ThyGridToken, THY_GRID_COMPONENT } from './grid.token';\nimport { ThyGridItem } from './thy-grid-item.component';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { hasLaterChange } from 'ngx-tethys/util';\n\nexport type ThyGridResponsiveMode = 'none' | 'self' | 'screen';\n\nexport type ThyGridResponsiveDescription = string;\n\nexport const THY_GRID_DEFAULT_COLUMNS = 24;\n\nexport const THY_GRID_ITEM_DEFAULT_SPAN = 1;\n\nexport const screenBreakpointsMap = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\n\n/**\n * 栅格组件\n * @name thy-grid, [thyGrid]\n * @order 10\n */\n@Directive({\n selector: '[thyGrid]',\n providers: [\n {\n provide: THY_GRID_COMPONENT,\n useExisting: ThyGrid\n }\n ],\n host: {\n class: 'thy-grid'\n },\n standalone: true\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyGrid implements ThyGridToken, OnInit, OnChanges, AfterContentInit {\n /**\n * @internal\n */\n @ContentChildren(ThyGridItem) gridItems!: QueryList<ThyGridItem>;\n\n /**\n * 栅格的列数\n * @default 24\n */\n @Input() thyCols: number | ThyGridResponsiveDescription = THY_GRID_DEFAULT_COLUMNS;\n\n /**\n * 栅格的水平间隔\n */\n @Input() thyXGap: number | ThyGridResponsiveDescription = 0;\n\n /**\n * 栅格的垂直间隔\n */\n @Input() thyYGap: number | ThyGridResponsiveDescription = 0;\n\n /**\n * 栅格的水平和垂直间隔\n */\n @Input() thyGap: number | ThyGridResponsiveDescription = 0;\n\n /**\n * 响应式栅格列数<br/>\n * none: 不进行响应式布局。<br/>\n * self:根据grid的自身宽度进行响应式布局。<br/>\n * screen:根据屏幕断点进行响应式布局,目前预设了5种响应式尺寸:`xs: 0, sm: 576, md: 768, lg: 992, xl: 1200`。\n */\n @Input() thyResponsive: ThyGridResponsiveMode = 'none';\n\n private hostRenderer = useHostRenderer();\n\n private cols: number;\n\n public xGap: number;\n\n private yGap: number;\n\n private numRegex = /^\\d+$/;\n\n private responsiveContainerWidth: number;\n\n public gridItemPropValueChange$ = new Subject<void>();\n\n private takeUntilDestroyed = takeUntilDestroyed();\n\n constructor(private elementRef: ElementRef, private viewportRuler: ViewportRuler, private ngZone: NgZone) {}\n\n ngOnInit(): void {\n this.setGridStyle();\n\n if (this.thyResponsive !== 'none') {\n this.listenResizeEvent();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {}\n\n ngAfterContentInit(): void {\n this.handleGridItems();\n\n this.gridItems.changes.pipe(this.takeUntilDestroyed).subscribe(() => {\n Promise.resolve().then(() => {\n this.handleGridItems();\n });\n });\n }\n\n private setGridStyle() {\n this.cols = this.calculateActualValue(this.thyCols || THY_GRID_DEFAULT_COLUMNS, THY_GRID_DEFAULT_COLUMNS);\n if (!this.thyXGap && !this.thyYGap) {\n this.xGap = this.calculateActualValue(this.thyGap || 0);\n this.yGap = this.xGap;\n } else {\n this.xGap = this.calculateActualValue(this.thyXGap || this.thyGap);\n this.yGap = this.calculateActualValue(this.thyYGap || this.thyGap);\n }\n\n this.hostRenderer.setStyle('display', 'grid');\n this.hostRenderer.setStyle('grid-template-columns', `repeat(${this.cols}, minmax(0, 1fr))`);\n this.hostRenderer.setStyle('gap', `${this.yGap}px ${this.xGap}px`);\n }\n\n private listenResizeEvent() {\n if (this.thyResponsive === 'screen') {\n this.viewportRuler\n .change(100)\n .pipe(this.takeUntilDestroyed)\n .subscribe(() => {\n this.responsiveContainerWidth = this.viewportRuler.getViewportSize().width;\n this.setGridStyle();\n this.handleGridItems();\n });\n } else {\n this.ngZone.runOutsideAngular(() => {\n this.gridResizeObserver(this.elementRef.nativeElement)\n .pipe(throttleTime(100), this.takeUntilDestroyed)\n .subscribe(data => {\n this.responsiveContainerWidth = data[0]?.contentRect?.width;\n this.setGridStyle();\n this.handleGridItems();\n });\n });\n }\n }\n\n private handleGridItems() {\n this.gridItems.forEach((gridItem: ThyGridItem) => {\n const rawSpan = getRawSpan(gridItem.thySpan);\n const span = this.calculateActualValue(rawSpan, THY_GRID_ITEM_DEFAULT_SPAN);\n const offset = this.calculateActualValue(gridItem.thyOffset || 0);\n\n gridItem.span = Math.min(span + offset, this.cols);\n gridItem.offset = offset;\n });\n\n this.gridItemPropValueChange$.next();\n }\n\n private calculateActualValue(rawValue: number | ThyGridResponsiveDescription, defaultValue?: number): number {\n if (this.numRegex.test(rawValue.toString().trim())) {\n return Number(rawValue);\n } else {\n const responsiveValueMap = this.getResponsiveValueMap(rawValue as ThyGridResponsiveDescription);\n const breakpointKeys = Object.keys(responsiveValueMap);\n const breakpoint = this.calculateBreakPoint(breakpointKeys);\n\n if (this.thyResponsive !== 'none' && breakpoint) {\n return responsiveValueMap[breakpoint];\n } else if (breakpointKeys.includes('0')) {\n return responsiveValueMap['0'];\n } else {\n return defaultValue || 0;\n }\n }\n }\n\n private getResponsiveValueMap(responsiveValue: string): { [key: string]: number } {\n return responsiveValue.split(' ').reduce((map: { [key: string]: number }, item: string) => {\n if (this.numRegex.test(item.toString())) {\n item = `0:${item}`;\n }\n const [key, value] = item.split(':');\n map[key] = Number(value);\n return map;\n }, {});\n }\n\n private calculateBreakPoint(breakpointKeys: string[]): string {\n if (this.thyResponsive === 'screen') {\n const width = this.responsiveContainerWidth || this.viewportRuler.getViewportSize().width;\n return breakpointKeys.find((key: string, index: number) => {\n return index < breakpointKeys.length - 1\n ? width >= screenBreakpointsMap[key] && width < screenBreakpointsMap[breakpointKeys[index + 1]]\n : width >= screenBreakpointsMap[key];\n });\n } else {\n const width = this.responsiveContainerWidth || this.elementRef.nativeElement.getBoundingClientRect().width;\n return breakpointKeys.find((key: string, index: number) => {\n return index < breakpointKeys.length - 1\n ? width >= Number(key) && width < Number(breakpointKeys[index + 1])\n : width >= Number(key);\n });\n }\n }\n\n private gridResizeObserver(element: HTMLElement): Observable<ResizeObserverEntry[]> {\n return new Observable(observer => {\n const resize = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n observer.next(entries);\n });\n resize.observe(element);\n return () => {\n resize.disconnect();\n };\n });\n }\n}\n\n/**\n * @internal\n */\n@Component({\n selector: 'thy-grid',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ThyGrid],\n providers: [\n {\n provide: THY_GRID_COMPONENT,\n useExisting: ThyGrid\n }\n ],\n hostDirectives: [\n {\n directive: ThyGrid,\n inputs: ['thyCols', 'thyXGap', 'thyYGap', 'thyGap', 'thyResponsive']\n }\n ]\n})\nexport class ThyGridComponent {\n grid = inject(ThyGrid);\n}\n\nfunction getRawSpan(span: number | ThyGridResponsiveDescription | undefined | null): number | ThyGridResponsiveDescription {\n return span === undefined || span === null ? THY_GRID_ITEM_DEFAULT_SPAN : span;\n}\n","import { ChangeDetectionStrategy, Component, Directive, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { isUndefinedOrNull } from '@tethys/cdk/is';\nimport { hasLaterChange } from 'ngx-tethys/util';\n\nexport type ThyFlexDirection = 'row' | 'column' | 'row-reverse' | 'column-reverse';\nexport type ThyFlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\nexport type ThyFlexJustifyContent =\n | 'start'\n | 'end'\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'space-between'\n | 'space-around'\n | 'initial'\n | 'inherit';\nexport type ThyFlexAlignItems = 'start' | 'end' | 'stretch' | 'center' | 'flex-start' | 'flex-end' | 'baseline' | 'initial' | 'inherit';\nexport type ThyFlexGrow = '1' | '0' | 0 | 1;\nexport type ThyFlexShrink = '1' | '0' | 0 | 1;\n\n/**\n * 设置容器为 Flex 布局组件\n * @name thy-flex, [thyFlex]\n * @order 20\n */\n@Directive({\n selector: '[thyFlex]',\n standalone: true,\n host: {\n class: 'thy-flex d-flex'\n }\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyFlex implements OnInit, OnChanges {\n private hostRenderer = useHostRenderer();\n\n /**\n * Flex 方向,为 row 或者 column\n * @default row\n */\n @Input() thyDirection: ThyFlexDirection;\n\n /**\n * Flex Wrap\n * @default nowrap\n */\n @Input() thyWrap: ThyFlexWrap;\n\n /**\n * Justify Content\n */\n @Input() thyJustifyContent: ThyFlexJustifyContent;\n\n /**\n * Align Items\n */\n @Input() thyAlignItems: ThyFlexAlignItems;\n\n /**\n * Flex Item 之间的间隙 Gap\n * @default 0\n */\n @Input() thyGap: number;\n\n get direction() {\n const direction = this.thyDirection ?? this.thyDirection;\n return direction || 'row';\n }\n\n constructor() {}\n\n ngOnInit(): void {\n this.updateClasses();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (hasLaterChange(changes)) {\n this.updateClasses();\n }\n }\n\n private updateClasses() {\n const classes: string[] = [];\n if (!isUndefinedOrNull(this.thyJustifyContent)) {\n classes.push(`justify-content-${normalizeStartEnd(this.thyJustifyContent)}`);\n }\n if (!isUndefinedOrNull(this.thyAlignItems)) {\n classes.push(`align-items-${normalizeStartEnd(this.thyAlignItems)}`);\n }\n if (!isUndefinedOrNull(this.thyWrap)) {\n classes.push(`flex-${this.thyWrap}`);\n }\n if (!isUndefinedOrNull(this.direction)) {\n classes.push(`flex-${this.direction}`);\n }\n this.hostRenderer.updateClass(classes);\n this.hostRenderer.setStyle('gap', `${this.thyGap ?? '0'}px`);\n }\n}\n\n/**\n * @internal\n */\n@Component({\n selector: 'thy-flex',\n template: `<ng-content></ng-content>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: ThyFlex,\n inputs: ['thyDirection', 'thyWrap', 'thyJustifyContent', 'thyAlignItems', 'thyGap']\n }\n ],\n imports: [ThyFlex]\n})\nexport class ThyFlexComponent {}\n\n/**\n * 设置为 Flex Item 组件\n * @name thy-flex-item, [thyFlexItem]\n * @order 25\n */\n@Directive({\n selector: '[thyFlexItem]',\n standalone: true,\n host: {\n class: 'thy-flex-item'\n }\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyFlexItem implements OnInit, OnChanges {\n private hostRenderer = useHostRenderer();\n\n /**\n * Flex Item 属性,表示 grow 、shrink 、basis\n */\n @Input() thyFlexItem: 'fill' | string;\n\n /**\n * Flew Grow,设置或检索弹性盒子的扩展比率,设置 1 为填充剩余区域\n */\n @Input() thyGrow: ThyFlexGrow;\n\n /**\n * Flex Shrink,设置或检索弹性盒收缩比例\n * @default 1\n */\n @Input() thyShrink: ThyFlexShrink;\n\n /**\n * Flex Basis,设置或检索弹性盒伸缩基准值\n * @default 1\n */\n @Input() thyBasis: string;\n\n constructor() {}\n\n ngOnInit(): void {\n this.updateClasses();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (hasLaterChange(changes)) {\n this.updateClasses();\n }\n }\n\n private updateClasses() {\n const classes: string[] = [];\n this.hostRenderer.setStyle('flex', '');\n this.hostRenderer.setStyle('basis', '');\n if (this.thyFlexItem) {\n if (this.thyFlexItem === 'fill') {\n classes.push(`flex-${this.thyFlexItem}`);\n } else {\n this.hostRenderer.setStyle('flex', this.thyFlexItem);\n }\n }\n if (!isUndefinedOrNull(this.thyGrow)) {\n classes.push(`flex-grow-${this.thyGrow}`);\n }\n if (!isUndefinedOrNull(this.thyShrink)) {\n classes.push(`flex-shrink-${this.thyShrink}`);\n }\n if (!isUndefinedOrNull(this.thyBasis)) {\n this.hostRenderer.setStyle('flex-basis', this.thyBasis);\n }\n this.hostRenderer.updateClass(classes);\n }\n}\n\n/**\n * @internal\n */\n@Component({\n selector: 'thy-flex-item',\n template: `<ng-content></ng-content>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyFlexItem],\n hostDirectives: [\n {\n directive: ThyFlexItem,\n inputs: ['thyFlexItem', 'thyGrow', 'thyShrink', 'thyBasis']\n }\n ]\n})\nexport class ThyFlexItemComponent {}\n\nfunction normalizeStartEnd(value: string): string {\n return value === 'flex-start' ? 'start' : value === 'flex-end' ? 'end' : value;\n}\n","import { NgModule } from '@angular/core';\nimport { ThyRowDirective } from './thy-row.directive';\nimport { ThyColDirective } from './thy-col.directive';\nimport { ThyGrid, ThyGridComponent } from './thy-grid.component';\nimport { ThyGridItem } from './thy-grid-item.component';\nimport { ThyFlex, ThyFlexComponent, ThyFlexItem, ThyFlexItemComponent } from './flex';\n\n@NgModule({\n exports: [\n ThyGrid,\n ThyGridComponent,\n ThyGridItem,\n ThyRowDirective,\n ThyColDirective,\n ThyFlex,\n ThyFlexItem,\n ThyFlexComponent,\n ThyFlexItemComponent\n ],\n imports: [\n ThyGrid,\n ThyGridComponent,\n ThyGridItem,\n ThyRowDirective,\n ThyColDirective,\n ThyFlex,\n ThyFlexItem,\n ThyFlexComponent,\n ThyFlexItemComponent\n ]\n})\nexport class ThyGridModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ThyRowDirective"],"mappings":";;;;;;;;;;;AAQA;;;;AAIG;MAQU,eAAe,CAAA;AAUxB,IAAA,WAAA,GAAA;AAJO,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,aAAa,CAAmB,CAAC,CAAC,CAAC;QAEtD,IAAY,CAAA,YAAA,GAAG,eAAe,EAAE,CAAC;KAEzB;IAEhB,QAAQ,GAAA;QACJ,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAED,WAAW,GAAA;QACP,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;AAED,IAAA,eAAe,MAAW;IAElB,cAAc,GAAA;QAClB,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC;AAC5D,QAAA,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,MAAc,KAAI;AAClD,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA,CAAA,EAAI,MAAM,GAAG,CAAC,CAAA,EAAA,CAAI,CAAC,CAAC;AACzD,SAAC,CAAC;AACF,QAAA,IAAI,gBAAgB,GAAG,CAAC,EAAE;AACtB,YAAA,YAAY,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAC9C,YAAA,YAAY,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;SAClD;AACD,QAAA,IAAI,cAAc,GAAG,CAAC,EAAE;AACpB,YAAA,YAAY,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;AAC3C,YAAA,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;SACjD;KACJ;IAEO,SAAS,GAAA;AACb,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC1B,YAAA,MAAM,KAAK,CAAC,CAAwC,sCAAA,CAAA,CAAC,CAAC;SACzD;AACD,QAAA,OAAO,CAAC,IAAI,CAAC,SAAmB,EAAE,CAAC,CAAC,CAAC;KACxC;8GA3CQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,SAAS;AACnB,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;wDAKY,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;ACTV;;;;AAIG;MAQU,eAAe,CAAA;AAWxB,IAAA,IAAI,IAAI,GAAA;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC;QACzC,OAAO,IAAI,IAAI,EAAE,CAAC;KACrB;AAMD,IAAA,WAAA,CAAuC,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAJ/D,IAAY,CAAA,YAAA,GAAG,eAAe,EAAE,CAAC;QAEjC,IAAkB,CAAA,kBAAA,GAAG,kBAAkB,EAAE,CAAC;KAEyB;IAE3E,QAAQ,GAAA;QACJ,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAED,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,EAAE,cAAc,CAAC,KAAI;AAC9G,gBAAA,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,MAAc,KAAI;AAClD,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA,EAAG,MAAM,GAAG,CAAC,CAAA,EAAA,CAAI,CAAC,CAAC;AACxD,iBAAC,CAAC;AACF,gBAAA,IAAI,gBAAgB,GAAG,CAAC,EAAE;AACtB,oBAAA,YAAY,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAC/C,oBAAA,YAAY,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;iBACnD;AACD,gBAAA,IAAI,cAAc,GAAG,CAAC,EAAE;AACpB,oBAAA,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAC5C,oBAAA,YAAY,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;iBAClD;AACL,aAAC,CAAC,CAAC;SACN;KACJ;IAEO,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC;AAC/B,YAAA,CAAC,WAAW,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG,IAAI;AACjC,SAAA,CAAC,CAAC;KACN;8GApDQ,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,SAAS;AACnB,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;0BAqBgB,QAAQ;;0BAAI,IAAI;yCAhBpB,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAKG,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MCjCY,YAAY,CAAA;AAGjC,CAAA;AAEM,MAAM,kBAAkB,GAAG,IAAI,cAAc,CAAe,oBAAoB,CAAC;;ACDxF;;;;AAIG;MAUU,WAAY,SAAQ,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAkBxD,WAAmB,CAAA,UAAsB,EAAkD,IAAkB,EAAA;AACzG,QAAA,KAAK,EAAE,CAAC;QADO,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAkD,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAc;AAjB7G;;;AAGG;QACM,IAAO,CAAA,OAAA,GAA0C,0BAA0B,CAAC;AAErF;;AAEG;QACM,IAAS,CAAA,SAAA,GAA0C,CAAC,CAAC;QAEtD,IAAY,CAAA,YAAA,GAAG,eAAe,EAAE,CAAC;QAElC,IAAI,CAAA,IAAA,GAAW,0BAA0B,CAAC;QAE1C,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC;KAIzB;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACnF,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,SAAC,CAAC,CAAC;KACN;IAEO,gBAAgB,GAAA;QACpB,MAAM,IAAI,GAAW,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;AAErE,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC,CAAC;AAE/D,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CACtB,aAAa,EACb,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAA,MAAA,EAAS,IAAI,CAAC,IAAI,MAAM,IAAI,CAAA,MAAA,EAAS,IAAI,CAAC,MAAM,CAAG,CAAA,CAAA,GAAG,EAAE,CAChH,CAAC;KACL;IAED,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE,CAAC;KACvB;AA3CQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,4CAkB2C,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAlBxE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,iNAPV,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAO5B,WAAW,EAAA,UAAA,EAAA,CAAA;kBATvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,QAAQ,EAAE,2BAA2B;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,eAAe;AACzB,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;0BAmB+C,QAAQ;;0BAAI,MAAM;2BAAC,kBAAkB,CAAA;yCAbxE,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;ACHH,MAAM,wBAAwB,GAAG,GAAG;AAEpC,MAAM,0BAA0B,GAAG,EAAE;AAE/B,MAAA,oBAAoB,GAAG;AAChC,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,EAAE,EAAE,IAAI;EACV;AAEF;;;;AAIG;AAcH;MACa,OAAO,CAAA;AAmDhB,IAAA,WAAA,CAAoB,UAAsB,EAAU,aAA4B,EAAU,MAAc,EAAA;QAApF,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAU,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AA7CxG;;;AAGG;QACM,IAAO,CAAA,OAAA,GAA0C,wBAAwB,CAAC;AAEnF;;AAEG;QACM,IAAO,CAAA,OAAA,GAA0C,CAAC,CAAC;AAE5D;;AAEG;QACM,IAAO,CAAA,OAAA,GAA0C,CAAC,CAAC;AAE5D;;AAEG;QACM,IAAM,CAAA,MAAA,GAA0C,CAAC,CAAC;AAE3D;;;;;AAKG;QACM,IAAa,CAAA,aAAA,GAA0B,MAAM,CAAC;QAE/C,IAAY,CAAA,YAAA,GAAG,eAAe,EAAE,CAAC;QAQjC,IAAQ,CAAA,QAAA,GAAG,OAAO,CAAC;AAIpB,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,OAAO,EAAQ,CAAC;QAE9C,IAAkB,CAAA,kBAAA,GAAG,kBAAkB,EAAE,CAAC;KAE0D;IAE5G,QAAQ,GAAA;QACJ,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpB,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;YAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;KACJ;IAED,WAAW,CAAC,OAAsB,EAAA,GAAU;IAE5C,kBAAkB,GAAA;QACd,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,MAAK;AAChE,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;gBACxB,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;IAEO,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,IAAI,wBAAwB,EAAE,wBAAwB,CAAC,CAAC;QAC1G,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAChC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SACzB;aAAM;AACH,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;SACtE;QAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,CAAA,iBAAA,CAAmB,CAAC,CAAC;AAC5F,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAM,GAAA,EAAA,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;KACtE;IAEO,iBAAiB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE;AACjC,YAAA,IAAI,CAAC,aAAa;iBACb,MAAM,CAAC,GAAG,CAAC;AACX,iBAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;iBAC7B,SAAS,CAAC,MAAK;gBACZ,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC;gBAC3E,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAC;SACV;aAAM;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;gBAC/B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;qBACjD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC;qBAChD,SAAS,CAAC,IAAI,IAAG;oBACd,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC;oBAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,iBAAC,CAAC,CAAC;AACX,aAAC,CAAC,CAAC;SACN;KACJ;IAEO,eAAe,GAAA;QACnB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAqB,KAAI;YAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;AAC5E,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;AAElE,YAAA,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,YAAA,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;KACxC;IAEO,oBAAoB,CAAC,QAA+C,EAAE,YAAqB,EAAA;AAC/F,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE;AAChD,YAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;SAC3B;aAAM;YACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAwC,CAAC,CAAC;YAChG,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;YAE5D,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,IAAI,UAAU,EAAE;AAC7C,gBAAA,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;aACzC;AAAM,iBAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrC,gBAAA,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;aAClC;iBAAM;gBACH,OAAO,YAAY,IAAI,CAAC,CAAC;aAC5B;SACJ;KACJ;AAEO,IAAA,qBAAqB,CAAC,eAAuB,EAAA;AACjD,QAAA,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAA8B,EAAE,IAAY,KAAI;AACtF,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AACrC,gBAAA,IAAI,GAAG,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,CAAC;aACtB;AACD,YAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,YAAA,OAAO,GAAG,CAAC;SACd,EAAE,EAAE,CAAC,CAAC;KACV;AAEO,IAAA,mBAAmB,CAAC,cAAwB,EAAA;AAChD,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE;AACjC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC;YAC1F,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,GAAW,EAAE,KAAa,KAAI;AACtD,gBAAA,OAAO,KAAK,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC;AACpC,sBAAE,KAAK,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,oBAAoB,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC/F,sBAAE,KAAK,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC7C,aAAC,CAAC,CAAC;SACN;aAAM;AACH,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;YAC3G,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,GAAW,EAAE,KAAa,KAAI;AACtD,gBAAA,OAAO,KAAK,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC;AACpC,sBAAE,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACnE,sBAAE,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;SACN;KACJ;AAEO,IAAA,kBAAkB,CAAC,OAAoB,EAAA;AAC3C,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;YAC7B,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,CAAC,OAA8B,KAAI;AACjE,gBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,aAAC,CAAC,CAAC;AACH,YAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACxB,YAAA,OAAO,MAAK;gBACR,MAAM,CAAC,UAAU,EAAE,CAAC;AACxB,aAAC,CAAC;AACN,SAAC,CAAC,CAAC;KACN;8GArLQ,OAAO,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,EAZL,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE,OAAO;AACvB,aAAA;AACJ,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAWgB,WAAW,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAJnB,OAAO,EAAA,UAAA,EAAA,CAAA;kBAdnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAS,OAAA;AACvB,yBAAA;AACJ,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,UAAU;AACpB,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;gIAMiC,SAAS,EAAA,CAAA;sBAAtC,eAAe;uBAAC,WAAW,CAAA;gBAMnB,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAQG,aAAa,EAAA,CAAA;sBAArB,KAAK;;AAuJV;;AAEG;MAoBU,gBAAgB,CAAA;AAnB7B,IAAA,WAAA,GAAA;AAoBI,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1B,KAAA;8GAFY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAbd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE,OAAO;AACvB,aAAA;SACJ,EAtMQ,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAO,+JA6LN,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAiB5B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAnB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,2BAA2B;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,OAAO,CAAC;AAClB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAE,OAAO;AACvB,yBAAA;AACJ,qBAAA;AACD,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,OAAO;4BAClB,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC;AACvE,yBAAA;AACJ,qBAAA;AACJ,iBAAA,CAAA;;AAKD,SAAS,UAAU,CAAC,IAA8D,EAAA;AAC9E,IAAA,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,GAAG,0BAA0B,GAAG,IAAI,CAAC;AACnF;;AC1PA;;;;AAIG;AAQH;MACa,OAAO,CAAA;AA+BhB,IAAA,IAAI,SAAS,GAAA;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;QACzD,OAAO,SAAS,IAAI,KAAK,CAAC;KAC7B;AAED,IAAA,WAAA,GAAA;QAnCQ,IAAY,CAAA,YAAA,GAAG,eAAe,EAAE,CAAC;KAmCzB;IAEhB,QAAQ,GAAA;QACJ,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;YACzB,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;IAEO,aAAa,GAAA;QACjB,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;AAC5C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,gBAAA,EAAmB,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAE,CAAA,CAAC,CAAC;SAChF;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AACxC,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAE,CAAA,CAAC,CAAC;SACxE;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAClC,OAAO,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,OAAO,CAAE,CAAA,CAAC,CAAC;SACxC;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACpC,OAAO,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,SAAS,CAAE,CAAA,CAAC,CAAC;SAC1C;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAG,EAAA,IAAI,CAAC,MAAM,IAAI,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC;KAChE;8GAhEQ,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBARnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,iBAAiB;AAC3B,qBAAA;AACJ,iBAAA,CAAA;wDASY,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAMG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAKG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAMG,MAAM,EAAA,CAAA;sBAAd,KAAK;;AAsCV;;AAEG;MAcU,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAnFhB,OAAO,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAwEN,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAW5B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,OAAO;4BAClB,MAAM,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,mBAAmB,EAAE,eAAe,EAAE,QAAQ,CAAC;AACtF,yBAAA;AACJ,qBAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;AACrB,iBAAA,CAAA;;AAGD;;;;AAIG;AAQH;MACa,WAAW,CAAA;AAyBpB,IAAA,WAAA,GAAA;QAxBQ,IAAY,CAAA,YAAA,GAAG,eAAe,EAAE,CAAC;KAwBzB;IAEhB,QAAQ,GAAA;QACJ,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;YACzB,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;KACJ;IAEO,aAAa,GAAA;QACjB,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACxC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE;gBAC7B,OAAO,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,WAAW,CAAE,CAAA,CAAC,CAAC;aAC5C;iBAAM;gBACH,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;aACxD;SACJ;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAClC,OAAO,CAAC,IAAI,CAAC,CAAA,UAAA,EAAa,IAAI,CAAC,OAAO,CAAE,CAAA,CAAC,CAAC;SAC7C;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACpC,OAAO,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,IAAI,CAAC,SAAS,CAAE,CAAA,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACnC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC3D;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAC1C;8GA1DQ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBARvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,eAAe;AACzB,qBAAA;AACJ,iBAAA,CAAA;wDAQY,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAKG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAMG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAMG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;AAsCV;;AAEG;MAcU,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EA7EpB,WAAW,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAkEV,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAW5B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,WAAW,CAAC;AACtB,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,WAAW;4BACtB,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;AAC9D,yBAAA;AACJ,qBAAA;AACJ,iBAAA,CAAA;;AAGD,SAAS,iBAAiB,CAAC,KAAa,EAAA;IACpC,OAAO,KAAK,KAAK,YAAY,GAAG,OAAO,GAAG,KAAK,KAAK,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;AACnF;;MCtLa,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAXlB,OAAO;YACP,gBAAgB;YAChB,WAAW;YACX,eAAe;YACf,eAAe;YACf,OAAO;YACP,WAAW;YACX,gBAAgB;AAChB,YAAA,oBAAoB,aAnBpB,OAAO;YACP,gBAAgB;YAChB,WAAW;YACX,eAAe;YACf,eAAe;YACf,OAAO;YACP,WAAW;YACX,gBAAgB;YAChB,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAcf,aAAa,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAxBzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,OAAO;wBACP,gBAAgB;wBAChB,WAAW;wBACX,eAAe;wBACf,eAAe;wBACf,OAAO;wBACP,WAAW;wBACX,gBAAgB;wBAChB,oBAAoB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,OAAO;wBACP,gBAAgB;wBAChB,WAAW;wBACX,eAAe;wBACf,eAAe;wBACf,OAAO;wBACP,WAAW;wBACX,gBAAgB;wBAChB,oBAAoB;AACvB,qBAAA;AACJ,iBAAA,CAAA;;;AC9BD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-grid.mjs","sources":["../../../src/grid/thy-row.directive.ts","../../../src/grid/thy-col.directive.ts","../../../src/grid/grid.token.ts","../../../src/grid/thy-grid-item.component.ts","../../../src/grid/thy-grid.component.ts","../../../src/grid/flex.ts","../../../src/grid/module.ts","../../../src/grid/ngx-tethys-grid.ts"],"sourcesContent":["import { Directive, Input, OnChanges, OnInit, AfterViewInit, OnDestroy, ChangeDetectionStrategy } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { isString } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nexport type ThyRowJustify = 'start' | 'end' | 'center' | 'space-around' | 'space-between';\nexport type ThyRowAlign = 'top' | 'middle' | 'bottom';\n\n/**\n * 栅格行指令\n * @name thyRow\n * @order 30\n */\n@Directive({\n selector: '[thyRow]',\n host: {\n class: 'thy-row'\n },\n standalone: true\n})\nexport class ThyRowDirective implements OnInit, OnChanges, AfterViewInit {\n /**\n * 栅格的间距\n */\n @Input() thyGutter: number | { xs?: number; sm?: number; md?: number; lg?: number; xl?: number; xxl?: number };\n\n public actualGutter$ = new ReplaySubject<[number, number]>(1);\n\n private hostRenderer = useHostRenderer();\n\n constructor() {}\n\n ngOnInit() {\n this.setGutterStyle();\n }\n\n ngOnChanges() {\n this.setGutterStyle();\n }\n\n ngAfterViewInit(): void {}\n\n private setGutterStyle() {\n const [horizontalGutter, verticalGutter] = this.getGutter();\n this.actualGutter$.next([horizontalGutter, verticalGutter]);\n const renderGutter = (name: string, gutter: number) => {\n this.hostRenderer.setStyle(name, `-${gutter / 2}px`);\n };\n if (horizontalGutter > 0) {\n renderGutter('margin-left', horizontalGutter);\n renderGutter('margin-right', horizontalGutter);\n }\n if (verticalGutter > 0) {\n renderGutter('margin-top', verticalGutter);\n renderGutter('margin-bottom', verticalGutter);\n }\n }\n\n private getGutter() {\n if (isString(this.thyGutter)) {\n throw Error(`thyGutter value can not be string type`);\n }\n return [this.thyGutter as number, 0];\n }\n}\n","import { Directive, Input, OnChanges, Optional, Host, AfterViewInit, OnInit, SimpleChanges } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyRowDirective } from './thy-row.directive';\n\nexport interface ThyColEmbeddedProperty {\n span?: number;\n pull?: number;\n push?: number;\n offset?: number;\n order?: number;\n}\n\nexport type ThySpan = number | null | 'auto';\n\n/**\n * 栅格列指令\n * @name thyCol\n * @order 35\n */\n@Directive({\n selector: '[thyCol]',\n host: {\n class: 'thy-col'\n },\n standalone: true\n})\nexport class ThyColDirective implements OnInit, OnChanges, AfterViewInit {\n /**\n * 栅格项的占位列数,thySpan 如果传递了值,以 thySpan 为准\n */\n @Input() thyCol: ThySpan;\n\n /**\n * 栅格项的占位列数\n */\n @Input() thySpan: ThySpan;\n\n get span() {\n const span = this.thySpan ?? this.thyCol;\n return span || 24;\n }\n\n private hostRenderer = useHostRenderer();\n\n private takeUntilDestroyed = takeUntilDestroyed();\n\n constructor(@Optional() @Host() public thyRowDirective: ThyRowDirective) {}\n\n ngOnInit() {\n this.updateHostClass();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.updateHostClass();\n }\n\n ngAfterViewInit(): void {\n if (this.thyRowDirective) {\n this.thyRowDirective.actualGutter$.pipe(this.takeUntilDestroyed).subscribe(([horizontalGutter, verticalGutter]) => {\n const renderGutter = (name: string, gutter: number) => {\n this.hostRenderer.setStyle(name, `${gutter / 2}px`);\n };\n if (horizontalGutter > 0) {\n renderGutter('padding-left', horizontalGutter);\n renderGutter('padding-right', horizontalGutter);\n }\n if (verticalGutter > 0) {\n renderGutter('padding-top', verticalGutter);\n renderGutter('padding-bottom', verticalGutter);\n }\n });\n }\n }\n\n private updateHostClass() {\n this.hostRenderer.updateClassByMap({\n [`thy-col-${this.span}`]: true\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport abstract class ThyGridToken {\n xGap: number;\n gridItemPropValueChange$: Subject<void>;\n}\n\nexport const THY_GRID_COMPONENT = new InjectionToken<ThyGridToken>('THY_GRID_COMPONENT');\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, Optional, OnInit, Inject, inject, DestroyRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ThyGridToken, THY_GRID_COMPONENT } from './grid.token';\nimport { ThyGridResponsiveDescription, THY_GRID_ITEM_DEFAULT_SPAN } from './thy-grid.component';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\n/**\n * 栅格项组件\n * @name thy-grid-item,[thyGridItem]\n * @order 15\n */\n@Component({\n selector: 'thy-grid-item,[thyGridItem]',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-grid-item'\n },\n standalone: true\n})\nexport class ThyGridItem implements OnInit {\n /**\n * 栅格项的占位列数,为 0 时会隐藏该栅格项\n * @default 1\n */\n @Input() thySpan: number | ThyGridResponsiveDescription = THY_GRID_ITEM_DEFAULT_SPAN;\n\n /**\n * 栅格项左侧的偏移列数\n */\n @Input() thyOffset: number | ThyGridResponsiveDescription = 0;\n\n private readonly destroyRef = inject(DestroyRef);\n\n private hostRenderer = useHostRenderer();\n\n public span: number = THY_GRID_ITEM_DEFAULT_SPAN;\n\n public offset: number = 0;\n\n constructor(public elementRef: ElementRef, @Optional() @Inject(THY_GRID_COMPONENT) private grid: ThyGridToken) {}\n\n ngOnInit(): void {\n this.grid.gridItemPropValueChange$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.setGridItemStyle();\n });\n }\n\n private setGridItemStyle() {\n const xGap: number = this.grid?.xGap || 0;\n\n this.hostRenderer.setStyle('display', this.span === 0 ? 'none' : '');\n\n this.hostRenderer.setStyle('grid-column', `span ${this.span}`);\n\n this.hostRenderer.setStyle(\n 'margin-left',\n this.offset ? `calc(((100% - ${(this.span - 1) * xGap}px) / ${this.span} + ${xGap}px) * ${this.offset})` : ''\n );\n }\n}\n","import { ViewportRuler } from '@angular/cdk/scrolling';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n QueryList,\n SimpleChanges,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, Subject } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { ThyGridToken, THY_GRID_COMPONENT } from './grid.token';\nimport { ThyGridItem } from './thy-grid-item.component';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { hasLaterChange } from 'ngx-tethys/util';\n\nexport type ThyGridResponsiveMode = 'none' | 'self' | 'screen';\n\nexport type ThyGridResponsiveDescription = string;\n\nexport const THY_GRID_DEFAULT_COLUMNS = 24;\n\nexport const THY_GRID_ITEM_DEFAULT_SPAN = 1;\n\nexport const screenBreakpointsMap = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\n\n/**\n * 栅格组件\n * @name thy-grid, [thyGrid]\n * @order 10\n */\n@Directive({\n selector: '[thyGrid]',\n providers: [\n {\n provide: THY_GRID_COMPONENT,\n useExisting: ThyGrid\n }\n ],\n host: {\n class: 'thy-grid'\n },\n standalone: true\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyGrid implements ThyGridToken, OnInit, OnChanges, AfterContentInit {\n /**\n * @internal\n */\n @ContentChildren(ThyGridItem) gridItems!: QueryList<ThyGridItem>;\n\n /**\n * 栅格的列数\n * @default 24\n */\n @Input() thyCols: number | ThyGridResponsiveDescription = THY_GRID_DEFAULT_COLUMNS;\n\n /**\n * 栅格的水平间隔\n */\n @Input() thyXGap: number | ThyGridResponsiveDescription = 0;\n\n /**\n * 栅格的垂直间隔\n */\n @Input() thyYGap: number | ThyGridResponsiveDescription = 0;\n\n /**\n * 栅格的水平和垂直间隔\n */\n @Input() thyGap: number | ThyGridResponsiveDescription = 0;\n\n /**\n * 响应式栅格列数<br/>\n * none: 不进行响应式布局。<br/>\n * self:根据grid的自身宽度进行响应式布局。<br/>\n * screen:根据屏幕断点进行响应式布局,目前预设了5种响应式尺寸:`xs: 0, sm: 576, md: 768, lg: 992, xl: 1200`。\n */\n @Input() thyResponsive: ThyGridResponsiveMode = 'none';\n\n private hostRenderer = useHostRenderer();\n\n private cols: number;\n\n public xGap: number;\n\n private yGap: number;\n\n private numRegex = /^\\d+$/;\n\n private responsiveContainerWidth: number;\n\n public gridItemPropValueChange$ = new Subject<void>();\n\n private takeUntilDestroyed = takeUntilDestroyed();\n\n constructor(private elementRef: ElementRef, private viewportRuler: ViewportRuler, private ngZone: NgZone) {}\n\n ngOnInit(): void {\n this.setGridStyle();\n\n if (this.thyResponsive !== 'none') {\n this.listenResizeEvent();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {}\n\n ngAfterContentInit(): void {\n this.handleGridItems();\n\n this.gridItems.changes.pipe(this.takeUntilDestroyed).subscribe(() => {\n Promise.resolve().then(() => {\n this.handleGridItems();\n });\n });\n }\n\n private setGridStyle() {\n this.cols = this.calculateActualValue(this.thyCols || THY_GRID_DEFAULT_COLUMNS, THY_GRID_DEFAULT_COLUMNS);\n if (!this.thyXGap && !this.thyYGap) {\n this.xGap = this.calculateActualValue(this.thyGap || 0);\n this.yGap = this.xGap;\n } else {\n this.xGap = this.calculateActualValue(this.thyXGap || this.thyGap);\n this.yGap = this.calculateActualValue(this.thyYGap || this.thyGap);\n }\n\n this.hostRenderer.setStyle('display', 'grid');\n this.hostRenderer.setStyle('grid-template-columns', `repeat(${this.cols}, minmax(0, 1fr))`);\n this.hostRenderer.setStyle('gap', `${this.yGap}px ${this.xGap}px`);\n }\n\n private listenResizeEvent() {\n if (this.thyResponsive === 'screen') {\n this.viewportRuler\n .change(100)\n .pipe(this.takeUntilDestroyed)\n .subscribe(() => {\n this.responsiveContainerWidth = this.viewportRuler.getViewportSize().width;\n this.setGridStyle();\n this.handleGridItems();\n });\n } else {\n this.ngZone.runOutsideAngular(() => {\n this.gridResizeObserver(this.elementRef.nativeElement)\n .pipe(throttleTime(100), this.takeUntilDestroyed)\n .subscribe(data => {\n this.responsiveContainerWidth = data[0]?.contentRect?.width;\n this.setGridStyle();\n this.handleGridItems();\n });\n });\n }\n }\n\n private handleGridItems() {\n this.gridItems.forEach((gridItem: ThyGridItem) => {\n const rawSpan = getRawSpan(gridItem.thySpan);\n const span = this.calculateActualValue(rawSpan, THY_GRID_ITEM_DEFAULT_SPAN);\n const offset = this.calculateActualValue(gridItem.thyOffset || 0);\n\n gridItem.span = Math.min(span + offset, this.cols);\n gridItem.offset = offset;\n });\n\n this.gridItemPropValueChange$.next();\n }\n\n private calculateActualValue(rawValue: number | ThyGridResponsiveDescription, defaultValue?: number): number {\n if (this.numRegex.test(rawValue.toString().trim())) {\n return Number(rawValue);\n } else {\n const responsiveValueMap = this.getResponsiveValueMap(rawValue as ThyGridResponsiveDescription);\n const breakpointKeys = Object.keys(responsiveValueMap);\n const breakpoint = this.calculateBreakPoint(breakpointKeys);\n\n if (this.thyResponsive !== 'none' && breakpoint) {\n return responsiveValueMap[breakpoint];\n } else if (breakpointKeys.includes('0')) {\n return responsiveValueMap['0'];\n } else {\n return defaultValue || 0;\n }\n }\n }\n\n private getResponsiveValueMap(responsiveValue: string): { [key: string]: number } {\n return responsiveValue.split(' ').reduce((map: { [key: string]: number }, item: string) => {\n if (this.numRegex.test(item.toString())) {\n item = `0:${item}`;\n }\n const [key, value] = item.split(':');\n map[key] = Number(value);\n return map;\n }, {});\n }\n\n private calculateBreakPoint(breakpointKeys: string[]): string {\n if (this.thyResponsive === 'screen') {\n const width = this.responsiveContainerWidth || this.viewportRuler.getViewportSize().width;\n return breakpointKeys.find((key: string, index: number) => {\n return index < breakpointKeys.length - 1\n ? width >= screenBreakpointsMap[key] && width < screenBreakpointsMap[breakpointKeys[index + 1]]\n : width >= screenBreakpointsMap[key];\n });\n } else {\n const width = this.responsiveContainerWidth || this.elementRef.nativeElement.getBoundingClientRect().width;\n return breakpointKeys.find((key: string, index: number) => {\n return index < breakpointKeys.length - 1\n ? width >= Number(key) && width < Number(breakpointKeys[index + 1])\n : width >= Number(key);\n });\n }\n }\n\n private gridResizeObserver(element: HTMLElement): Observable<ResizeObserverEntry[]> {\n return new Observable(observer => {\n const resize = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n observer.next(entries);\n });\n resize.observe(element);\n return () => {\n resize.disconnect();\n };\n });\n }\n}\n\n/**\n * @internal\n */\n@Component({\n selector: 'thy-grid',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ThyGrid],\n providers: [\n {\n provide: THY_GRID_COMPONENT,\n useExisting: ThyGrid\n }\n ],\n hostDirectives: [\n {\n directive: ThyGrid,\n inputs: ['thyCols', 'thyXGap', 'thyYGap', 'thyGap', 'thyResponsive']\n }\n ]\n})\nexport class ThyGridComponent {\n grid = inject(ThyGrid);\n}\n\nfunction getRawSpan(span: number | ThyGridResponsiveDescription | undefined | null): number | ThyGridResponsiveDescription {\n return span === undefined || span === null ? THY_GRID_ITEM_DEFAULT_SPAN : span;\n}\n","import { ChangeDetectionStrategy, Component, Directive, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { isUndefinedOrNull } from '@tethys/cdk/is';\nimport { hasLaterChange } from 'ngx-tethys/util';\n\nexport type ThyFlexDirection = 'row' | 'column' | 'row-reverse' | 'column-reverse';\nexport type ThyFlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\nexport type ThyFlexJustifyContent =\n | 'start'\n | 'end'\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'space-between'\n | 'space-around'\n | 'initial'\n | 'inherit';\nexport type ThyFlexAlignItems = 'start' | 'end' | 'stretch' | 'center' | 'flex-start' | 'flex-end' | 'baseline' | 'initial' | 'inherit';\nexport type ThyFlexGrow = '1' | '0' | 0 | 1;\nexport type ThyFlexShrink = '1' | '0' | 0 | 1;\n\n/**\n * 设置容器为 Flex 布局组件\n * @name thy-flex, [thyFlex]\n * @order 20\n */\n@Directive({\n selector: '[thyFlex]',\n standalone: true,\n host: {\n class: 'thy-flex d-flex'\n }\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyFlex implements OnInit, OnChanges {\n private hostRenderer = useHostRenderer();\n\n /**\n * Flex 方向,为 row 或者 column\n * @default row\n */\n @Input() thyDirection: ThyFlexDirection;\n\n /**\n * Flex Wrap\n * @default nowrap\n */\n @Input() thyWrap: ThyFlexWrap;\n\n /**\n * Justify Content\n */\n @Input() thyJustifyContent: ThyFlexJustifyContent;\n\n /**\n * Align Items\n */\n @Input() thyAlignItems: ThyFlexAlignItems;\n\n /**\n * Flex Item 之间的间隙 Gap\n * @default 0\n */\n @Input() thyGap: number;\n\n get direction() {\n const direction = this.thyDirection ?? this.thyDirection;\n return direction || 'row';\n }\n\n constructor() {}\n\n ngOnInit(): void {\n this.updateClasses();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (hasLaterChange(changes)) {\n this.updateClasses();\n }\n }\n\n private updateClasses() {\n const classes: string[] = [];\n if (!isUndefinedOrNull(this.thyJustifyContent)) {\n classes.push(`justify-content-${normalizeStartEnd(this.thyJustifyContent)}`);\n }\n if (!isUndefinedOrNull(this.thyAlignItems)) {\n classes.push(`align-items-${normalizeStartEnd(this.thyAlignItems)}`);\n }\n if (!isUndefinedOrNull(this.thyWrap)) {\n classes.push(`flex-${this.thyWrap}`);\n }\n if (!isUndefinedOrNull(this.direction)) {\n classes.push(`flex-${this.direction}`);\n }\n this.hostRenderer.updateClass(classes);\n this.hostRenderer.setStyle('gap', `${this.thyGap ?? '0'}px`);\n }\n}\n\n/**\n * @internal\n */\n@Component({\n selector: 'thy-flex',\n template: `<ng-content></ng-content>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: ThyFlex,\n inputs: ['thyDirection', 'thyWrap', 'thyJustifyContent', 'thyAlignItems', 'thyGap']\n }\n ],\n imports: [ThyFlex]\n})\nexport class ThyFlexComponent {}\n\n/**\n * 设置为 Flex Item 组件\n * @name thy-flex-item, [thyFlexItem]\n * @order 25\n */\n@Directive({\n selector: '[thyFlexItem]',\n standalone: true,\n host: {\n class: 'thy-flex-item'\n }\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyFlexItem implements OnInit, OnChanges {\n private hostRenderer = useHostRenderer();\n\n /**\n * Flex Item 属性,表示 grow 、shrink 、basis\n */\n @Input() thyFlexItem: 'fill' | string;\n\n /**\n * Flew Grow,设置或检索弹性盒子的扩展比率,设置 1 为填充剩余区域\n */\n @Input() thyGrow: ThyFlexGrow;\n\n /**\n * Flex Shrink,设置或检索弹性盒收缩比例\n * @default 1\n */\n @Input() thyShrink: ThyFlexShrink;\n\n /**\n * Flex Basis,设置或检索弹性盒伸缩基准值\n * @default 1\n */\n @Input() thyBasis: string;\n\n constructor() {}\n\n ngOnInit(): void {\n this.updateClasses();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (hasLaterChange(changes)) {\n this.updateClasses();\n }\n }\n\n private updateClasses() {\n const classes: string[] = [];\n this.hostRenderer.setStyle('flex', '');\n this.hostRenderer.setStyle('basis', '');\n if (this.thyFlexItem) {\n if (this.thyFlexItem === 'fill') {\n classes.push(`flex-${this.thyFlexItem}`);\n } else {\n this.hostRenderer.setStyle('flex', this.thyFlexItem);\n }\n }\n if (!isUndefinedOrNull(this.thyGrow)) {\n classes.push(`flex-grow-${this.thyGrow}`);\n }\n if (!isUndefinedOrNull(this.thyShrink)) {\n classes.push(`flex-shrink-${this.thyShrink}`);\n }\n if (!isUndefinedOrNull(this.thyBasis)) {\n this.hostRenderer.setStyle('flex-basis', this.thyBasis);\n }\n this.hostRenderer.updateClass(classes);\n }\n}\n\n/**\n * @internal\n */\n@Component({\n selector: 'thy-flex-item',\n template: `<ng-content></ng-content>`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyFlexItem],\n hostDirectives: [\n {\n directive: ThyFlexItem,\n inputs: ['thyFlexItem', 'thyGrow', 'thyShrink', 'thyBasis']\n }\n ]\n})\nexport class ThyFlexItemComponent {}\n\nfunction normalizeStartEnd(value: string): string {\n return value === 'flex-start' ? 'start' : value === 'flex-end' ? 'end' : value;\n}\n","import { NgModule } from '@angular/core';\nimport { ThyRowDirective } from './thy-row.directive';\nimport { ThyColDirective } from './thy-col.directive';\nimport { ThyGrid, ThyGridComponent } from './thy-grid.component';\nimport { ThyGridItem } from './thy-grid-item.component';\nimport { ThyFlex, ThyFlexComponent, ThyFlexItem, ThyFlexItemComponent } from './flex';\n\n@NgModule({\n exports: [\n ThyGrid,\n ThyGridComponent,\n ThyGridItem,\n ThyRowDirective,\n ThyColDirective,\n ThyFlex,\n ThyFlexItem,\n ThyFlexComponent,\n ThyFlexItemComponent\n ],\n imports: [\n ThyGrid,\n ThyGridComponent,\n ThyGridItem,\n ThyRowDirective,\n ThyColDirective,\n ThyFlex,\n ThyFlexItem,\n ThyFlexComponent,\n ThyFlexItemComponent\n ]\n})\nexport class ThyGridModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ThyRowDirective"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, ChangeDetectionStrategy, ViewEncapsulation, InjectionToken, EventEmitter, Output, ViewChild, Injectable, Optional, Inject, InjectFlags, booleanAttribute, Directive, Input, NgModule } from '@angular/core';
|
|
2
|
+
import { Component, ChangeDetectionStrategy, ViewEncapsulation, InjectionToken, EventEmitter, inject, DestroyRef, Output, ViewChild, Injectable, Optional, Inject, InjectFlags, booleanAttribute, Directive, Input, NgModule } from '@angular/core';
|
|
3
3
|
import { NgIf, NgFor, CommonModule } from '@angular/common';
|
|
4
|
-
import { ThyAbstractOverlayConfig
|
|
4
|
+
import { ThyAbstractOverlayConfig } from 'ngx-tethys/core';
|
|
5
5
|
import { fromEvent, Observable, Subject } from 'rxjs';
|
|
6
|
-
import {
|
|
6
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
7
7
|
import * as i1 from 'ngx-tethys/dialog';
|
|
8
8
|
import { ThyDialogSizes, ThyDialogModule } from 'ngx-tethys/dialog';
|
|
9
9
|
import { isNumber, humanizeBytes, getClientSize, getOffset, getFitContentPosition, isUndefinedOrNull } from 'ngx-tethys/util';
|
|
@@ -11,6 +11,7 @@ import * as i2 from 'ngx-tethys/fullscreen';
|
|
|
11
11
|
import { ThyCopyDirective, ThyCopyModule } from 'ngx-tethys/copy';
|
|
12
12
|
import * as i3 from 'ngx-tethys/notify';
|
|
13
13
|
import * as i4 from '@angular/platform-browser';
|
|
14
|
+
import { take, map, takeUntil } from 'rxjs/operators';
|
|
14
15
|
import { ThyDivider, ThyDividerModule } from 'ngx-tethys/divider';
|
|
15
16
|
import { ThyIcon, ThyIconModule } from 'ngx-tethys/icon';
|
|
16
17
|
import { ThyLoading, ThyLoadingModule } from 'ngx-tethys/loading';
|
|
@@ -93,7 +94,7 @@ const VERTICAL_SPACE = 96 + 106; // top: 96px; bottom: 106px
|
|
|
93
94
|
* @name thy-image-preview
|
|
94
95
|
* @order 20
|
|
95
96
|
*/
|
|
96
|
-
class ThyImagePreview
|
|
97
|
+
class ThyImagePreview {
|
|
97
98
|
get previewImage() {
|
|
98
99
|
const image = this.images[this.previewIndex];
|
|
99
100
|
if (image.size) {
|
|
@@ -118,7 +119,6 @@ class ThyImagePreview extends mixinUnsubscribe(MixinBase) {
|
|
|
118
119
|
}
|
|
119
120
|
}
|
|
120
121
|
constructor(thyDialog, thyFullscreen, cdr, ngZone, notifyService, host, sanitizer) {
|
|
121
|
-
super();
|
|
122
122
|
this.thyDialog = thyDialog;
|
|
123
123
|
this.thyFullscreen = thyFullscreen;
|
|
124
124
|
this.cdr = cdr;
|
|
@@ -127,6 +127,7 @@ class ThyImagePreview extends mixinUnsubscribe(MixinBase) {
|
|
|
127
127
|
this.host = host;
|
|
128
128
|
this.sanitizer = sanitizer;
|
|
129
129
|
this.downloadClicked = new EventEmitter();
|
|
130
|
+
this.destroyRef = inject(DestroyRef);
|
|
130
131
|
this.images = [];
|
|
131
132
|
this.previewIndex = 0;
|
|
132
133
|
this.previewImageTransform = '';
|
|
@@ -215,7 +216,7 @@ class ThyImagePreview extends mixinUnsubscribe(MixinBase) {
|
|
|
215
216
|
this.initPreview();
|
|
216
217
|
this.ngZone.runOutsideAngular(() => {
|
|
217
218
|
fromEvent(this.host.nativeElement, 'click')
|
|
218
|
-
.pipe(
|
|
219
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
219
220
|
.subscribe(event => {
|
|
220
221
|
if ((event.target === event.currentTarget ||
|
|
221
222
|
(this.isInsideScreen && this.imagePreviewWrapper.nativeElement.contains(event.target))) &&
|
|
@@ -224,7 +225,7 @@ class ThyImagePreview extends mixinUnsubscribe(MixinBase) {
|
|
|
224
225
|
}
|
|
225
226
|
});
|
|
226
227
|
fromEvent(this.imagePreviewWrapper.nativeElement, 'mousedown')
|
|
227
|
-
.pipe(
|
|
228
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
228
229
|
.subscribe(() => {
|
|
229
230
|
this.isDragging = !this.isInsideScreen && true;
|
|
230
231
|
});
|
|
@@ -338,7 +339,7 @@ class ThyImagePreview extends mixinUnsubscribe(MixinBase) {
|
|
|
338
339
|
this.downloadClicked.emit(image);
|
|
339
340
|
const src = image.origin?.src || image.src;
|
|
340
341
|
fetchImageBlob(src)
|
|
341
|
-
.pipe(
|
|
342
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
342
343
|
.subscribe(blob => {
|
|
343
344
|
const urlCreator = window.URL || window.webkitURL;
|
|
344
345
|
const objectURL = urlCreator.createObjectURL(blob);
|
|
@@ -449,11 +450,8 @@ class ThyImagePreview extends mixinUnsubscribe(MixinBase) {
|
|
|
449
450
|
updatePreviewImageWrapperTransform() {
|
|
450
451
|
this.previewImageWrapperTransform = `translate3d(${this.position.x}px, ${this.position.y}px, 0)`;
|
|
451
452
|
}
|
|
452
|
-
ngOnDestroy() {
|
|
453
|
-
super.ngOnDestroy();
|
|
454
|
-
}
|
|
455
453
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyImagePreview, deps: [{ token: i1.ThyDialog }, { token: i2.ThyFullscreen }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i3.ThyNotifyService }, { token: i0.ElementRef }, { token: i4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
456
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: ThyImagePreview, isStandalone: true, selector: "thy-image-preview", outputs: { downloadClicked: "downloadClicked" }, host: { properties: { "class.thy-image-preview-moving": "isDragging" }, classAttribute: "thy-image-preview-wrap" }, viewQueries: [{ propertyName: "imageRef", first: true, predicate: ["imgRef"], descendants: true }, { propertyName: "imagePreviewWrapper", first: true, predicate: ["imagePreviewWrapper"], descendants: true, static: true }], exportAs: ["thyImagePreview"],
|
|
454
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: ThyImagePreview, isStandalone: true, selector: "thy-image-preview", outputs: { downloadClicked: "downloadClicked" }, host: { properties: { "class.thy-image-preview-moving": "isDragging" }, classAttribute: "thy-image-preview-wrap" }, viewQueries: [{ propertyName: "imageRef", first: true, predicate: ["imgRef"], descendants: true }, { propertyName: "imagePreviewWrapper", first: true, predicate: ["imagePreviewWrapper"], descendants: true, static: true }], exportAs: ["thyImagePreview"], ngImport: i0, template: "<div class=\"thy-image-preview\" [class.thy-image-preview-fullscreen]=\"isFullScreen\">\n <div class=\"thy-image-preview-header pl-10 pr-8\" *ngIf=\"!isFullScreen\">\n <div class=\"thy-image-preview-header-info\">\n <p class=\"thy-image-name text-truncate\" [thyTooltipDisabled]=\"previewImage?.name?.length < 32\" [thyTooltip]=\"previewImage?.name\">\n {{ previewImage?.name }}\n </p>\n <span class=\"thy-image-size\"> {{ previewImage?.size }}</span>\n </div>\n <a thyAction thyIcon=\"close\" thyTooltip=\"\u9000\u51FA\u9884\u89C8\" href=\"javascript:;\" (click)=\"thyDialog.close()\"></a>\n </div>\n <a\n class=\"thy-image-preview-exit-fullscreen\"\n *ngIf=\"isFullScreen\"\n thyAction\n thyIcon=\"close\"\n thyTooltip=\"\u9000\u51FA\u9884\u89C8\"\n href=\"javascript:;\"\n (click)=\"thyFullscreen.exit()\"\n thyTooltip=\"\u9000\u51FA\u5168\u5C4F\"\n ></a>\n <div\n class=\"thy-image-preview-img-wrapper\"\n #imagePreviewWrapper\n cdkDrag\n [class.thy-image-preview-inside]=\"isInsideScreen\"\n [style.transform]=\"previewImageWrapperTransform\"\n [cdkDragFreeDragPosition]=\"position\"\n (cdkDragReleased)=\"dragReleased()\"\n >\n <ng-container *ngFor=\"let image of images; index as imageIndex\">\n <img\n #imgRef\n *ngIf=\"previewIndex === imageIndex && isLoadingDone\"\n class=\"thy-image-preview-img\"\n [src]=\"image.objectURL || image.src\"\n [style.transform]=\"previewImageTransform\"\n />\n </ng-container>\n <thy-loading [thyDone]=\"isLoadingDone\"></thy-loading>\n </div>\n\n <ng-container *ngIf=\"images.length > 1 && !isFullScreen\">\n <div\n class=\"thy-image-preview-switch-left\"\n [thyTooltipDisabled]=\"previewIndex <= 0\"\n thyTooltip=\"\u4E0A\u4E00\u5F20\"\n [class.thy-image-preview-switch-left-disabled]=\"previewIndex <= 0\"\n (click)=\"prev()\"\n >\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n <div\n class=\"thy-image-preview-switch-right\"\n thyTooltip=\"\u4E0B\u4E00\u5F20\"\n [thyTooltipDisabled]=\"previewIndex >= images.length - 1\"\n [class.thy-image-preview-switch-right-disabled]=\"previewIndex >= images.length - 1\"\n (click)=\"next()\"\n >\n <thy-icon thyIconName=\"angle-right-bold\"> </thy-icon>\n </div>\n </ng-container>\n <thy-actions thySize=\"xs\" class=\"thy-image-preview-operations py-3 px-4\" *ngIf=\"!isFullScreen\">\n <ng-container *ngFor=\"let option of previewOperations; let i = index\">\n <a\n *ngIf=\"!['original-scale', 'fit-screen', 'copyLink'].includes(option.type) || currentImageMode === option.type\"\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"option.icon\"\n [thyTooltip]=\"option.name\"\n [thyTooltipOffset]=\"13\"\n (click)=\"option.action(previewImage)\"\n ></a>\n <span class=\"mr-2\" *ngIf=\"option?.type === 'zoom-out'\"> {{ (zoom * 100).toFixed(0) + '%' }} </span>\n <thy-divider class=\"ml-2\" [thyVertical]=\"true\" *ngIf=\"option?.type === 'rotate-right'\"></thy-divider>\n <a\n *ngIf=\"option.type === 'copyLink'\"\n href=\"javascript:;\"\n thyAction\n [thyCopyTips]=\"option.name\"\n [thyActionIcon]=\"option.icon\"\n [thyCopyTipsOffset]=\"13\"\n (thyCopy)=\"copyLink($event)\"\n [thyCopyContent]=\"previewImageOriginSrc\"\n [thyShowNotify]=\"false\"\n ></a>\n </ng-container>\n <thy-divider [thyVertical]=\"true\"></thy-divider>\n <span class=\"thy-image-preview-operations-text\"> {{ previewIndex + 1 }} / {{ images.length }} </span>\n </thy-actions>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: ThyAction, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ThyLoading, selector: "thy-loading", inputs: ["thyDone", "thyTip", "thyIsMask"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: ThyActions, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: ThyDivider, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "directive", type: ThyCopyDirective, selector: "[thyCopy]", inputs: ["thyCopySuccessText", "thyCopyTips", "thyCopyTipsOffset", "thyCopyContent", "thyShowNotify"], outputs: ["thyCopy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
457
455
|
}
|
|
458
456
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyImagePreview, decorators: [{
|
|
459
457
|
type: Component,
|