@ng-nest/ui 21.0.8 → 21.0.9
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/fesm2022/ng-nest-ui-dialog.mjs +0 -1
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-image.mjs +2 -2
- package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input.mjs +64 -9
- package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-scrollable.mjs +60 -8
- package/fesm2022/ng-nest-ui-scrollable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +19 -4
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ng-nest-ui-input.d.ts +23 -1
- package/types/ng-nest-ui-scrollable.d.ts +4 -0
- package/types/ng-nest-ui-select.d.ts +16 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-input.mjs","sources":["../../../../lib/ng-nest/ui/input/input.property.ts","../../../../lib/ng-nest/ui/input/input-group.component.ts","../../../../lib/ng-nest/ui/input/input-group.component.html","../../../../lib/ng-nest/ui/input/input.component.ts","../../../../lib/ng-nest/ui/input/input.component.html","../../../../lib/ng-nest/ui/input/input.module.ts","../../../../lib/ng-nest/ui/input/ng-nest-ui-input.ts"],"sourcesContent":["import { XToBoolean, XToNumber, XToCssPixelValue, XPropertyFunction } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, model, output } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type {\r\n XSize,\r\n XNumber,\r\n XBoolean,\r\n XPositionLeftRight,\r\n XTemplate,\r\n XAlign,\r\n XJustify,\r\n XDirection,\r\n XVariant,\r\n XFloatLabel\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Input\r\n * @selector x-input\r\n * @decorator component\r\n */\r\nexport const XInputPrefix = 'x-input';\r\nconst X_INPUT_CONFIG_NAME = 'input';\r\n\r\n/**\r\n * Input Property\r\n */\r\n@Component({ selector: `${XInputPrefix}-property`, template: '' })\r\nexport class XInputProperty extends XFormControlFunction(X_INPUT_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 输入类型\r\n * @en_US Input type\r\n */\r\n readonly type = input<XInputType>('text');\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n readonly variant = input<XInputVariant>(this.config?.variant ?? 'outlined');\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n readonly clearable = input<boolean, XBoolean>(this.config?.clearable ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n readonly icon = input<string>();\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n readonly iconLayout = input<XInputIconLayoutType>(this.config?.iconLayout ?? 'right');\r\n /**\r\n * @zh_CN 图标动画\r\n * @en_US Icon animation\r\n */\r\n readonly iconSpin = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入最大长度\r\n * @en_US Enter the maximum length\r\n */\r\n readonly maxlength = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Enter the max\r\n */\r\n readonly max = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Enter the min\r\n */\r\n readonly min = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US width\r\n */\r\n readonly width = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入框样式\r\n * @en_US Input Style\r\n */\r\n readonly inputStyle = input<{ [style: string]: any }>();\r\n /**\r\n * @zh_CN 输入框内边距。主要指输入框中的左右内边距\r\n * @en_US Enter the border of the input box.\r\n */\r\n readonly inputPadding = input<string, XNumber>(this.config?.inputPadding ?? '0.75rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 输入框内边距(包含图标)。主要指输入框中的有图标的时候左右内边距\r\n * @en_US Enter the border between the input box (including icon).\r\n */\r\n readonly inputIconPadding = input<string, XNumber>(this.config?.inputPadding ?? '2.15rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n readonly floatLabel = input<XInputFloatLabel | null>(this.config?.floatLabel ?? null);\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n readonly floatFixed = input<boolean, XBoolean>(this.config?.floatFixed ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 初始启用验证,在输入值都自动开启\r\n * @en_US Initial enable validation, which is automatically enabled when the input value is\r\n */\r\n override readonly validator = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n override readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n override readonly pointer = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<XTemplate>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n override readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n override readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n override readonly valueTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n override readonly valueTplContext = input();\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n override readonly before = input<XTemplate>();\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n override readonly after = input<XTemplate>();\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n override readonly pattern = input<RegExp | RegExp[] | any>(null);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n override readonly message = input<string | string[]>([]);\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n override readonly active = model<boolean>(false);\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n override readonly inputValidator = input<(value: any) => boolean>();\r\n /**\r\n * @zh_CN 清除按钮的事件\r\n * @en_US Clear button event\r\n */\r\n readonly clearEmit = output<any>();\r\n /**\r\n * @zh_CN 获取焦点的事件\r\n * @en_US Focus event\r\n */\r\n readonly xFocus = output<any>();\r\n /**\r\n * @zh_CN 失去焦点的事件\r\n * @en_US Blur event\r\n */\r\n readonly xBlur = output<any>();\r\n /**\r\n * @zh_CN Input\r\n * @en_US Input event\r\n */\r\n readonly xInput = output<any>();\r\n /**\r\n * @zh_CN Keydown\r\n * @en_US Keydown event\r\n */\r\n readonly xKeydown = output<KeyboardEvent>();\r\n /**\r\n * @zh_CN Click\r\n * @en_US Click event\r\n */\r\n readonly xClick = output<MouseEvent>();\r\n /**\r\n * @zh_CN Mouseenter\r\n * @en_US Mouseenter event\r\n */\r\n readonly xMouseenter = output<MouseEvent>();\r\n /**\r\n * @zh_CN Mouseleave\r\n * @en_US Mouseleave event\r\n */\r\n readonly xMouseleave = output<MouseEvent>();\r\n /**\r\n * @zh_CN Composition\r\n * @en_US Composition event\r\n */\r\n readonly xComposition = output<any>();\r\n}\r\n\r\n/**\r\n * Input Option\r\n */\r\nexport interface XInputOption extends XFormOption {\r\n /**\r\n * @zh_CN 输入类型\r\n * @en_US Input type\r\n */\r\n type?: XInputType;\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n variant?: XInputVariant;\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n floatLabel?: XInputFloatLabel;\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n floatFixed?: boolean;\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n clearable?: boolean;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n iconLayout?: XInputIconLayoutType;\r\n /**\r\n * @zh_CN 图标动画\r\n * @en_US Icon animation\r\n */\r\n iconSpin?: boolean;\r\n /**\r\n * @zh_CN 输入最大长度\r\n * @en_US Enter the maximum length\r\n */\r\n maxlength?: number;\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Enter the max\r\n */\r\n max?: number;\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Enter the min\r\n */\r\n min?: number;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US width\r\n */\r\n width?: string;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n bordered?: boolean;\r\n /**\r\n * @zh_CN 输入框样式\r\n * @en_US Input Style\r\n */\r\n inputStyle?: { [style: string]: any };\r\n /**\r\n * @zh_CN 输入框内边距。主要指输入框中的左右内边距\r\n * @en_US Enter the border of the input box.\r\n */\r\n inputPadding?: string;\r\n /**\r\n * @zh_CN 输入框内边距(包含图标)。主要指输入框中的有图标的时候左右内边距\r\n * @en_US Enter the border between the input box (including icon).\r\n */\r\n inputIconPadding?: string;\r\n /**\r\n * @zh_CN 初始启用验证,在输入值都自动开启\r\n * @en_US Initial enable validation, which is automatically enabled when the input value is\r\n */\r\n validator?: boolean;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n size?: XSize;\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n pointer?: boolean;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n placeholder?: string;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly?: boolean;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n valueTplContext?: any;\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n before?: XTemplate;\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n after?: XTemplate;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n active?: boolean;\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 清除按钮的事件\r\n * @en_US Clear button event\r\n */\r\n clearEmit?: (value: any) => void;\r\n /**\r\n * @zh_CN 获取焦点的事件\r\n * @en_US Focus event\r\n */\r\n xFocus?: (event: FocusEvent) => void;\r\n /**\r\n * @zh_CN 失去焦点的事件\r\n * @en_US Blur event\r\n */\r\n xBlur?: (event: FocusEvent) => void;\r\n /**\r\n * @zh_CN Input\r\n * @en_US Input event\r\n */\r\n xInput?: (event: Event) => void;\r\n /**\r\n * @zh_CN Keydown\r\n * @en_US Keydown event\r\n */\r\n xKeydown?: (event: KeyboardEvent) => void;\r\n /**\r\n * @zh_CN Click\r\n * @en_US Click event\r\n */\r\n xClick?: (event: MouseEvent) => void;\r\n /**\r\n * @zh_CN Mouseenter\r\n * @en_US Mouseenter event\r\n */\r\n xMouseenter?: (event: MouseEvent) => void;\r\n /**\r\n * @zh_CN Mouseleave\r\n * @en_US Mouseleave event\r\n */\r\n xMouseleave?: (event: MouseEvent) => void;\r\n /**\r\n * @zh_CN Composition\r\n * @en_US Composition event\r\n */\r\n xComposition?: (event: CompositionEvent) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN 输入框类型\r\n * @en_US Input box type\r\n * @value \"text\" 文本\r\n * @value \"password\" 密码\r\n * @value \"number\" 数字\r\n */\r\nexport type XInputType = 'text' | 'password' | 'number';\r\n\r\n/**\r\n * @zh_CN 浮动标签类型\r\n * @en_US Float label type\r\n */\r\nexport type XInputFloatLabel = XFloatLabel;\r\n\r\n/**\r\n * @zh_CN 输入框形态变体\r\n * @en_US Input box variant\r\n */\r\nexport type XInputVariant = XVariant;\r\n\r\n/**\r\n * @zh_CN 图标布局方式,指在输入框中的位置\r\n * @en_US Icon layout, refers to the position in the input box\r\n * @value \"left\" 靠左\r\n * @value \"right\" 靠右\r\n */\r\nexport type XInputIconLayoutType = XPositionLeftRight;\r\n\r\n/**\r\n * Input Group\r\n * @selector x-input-group\r\n * @decorator component\r\n */\r\nexport const XInputGroupPrefix = 'x-input-group';\r\nconst X_INPUT_GROUP_CONFIG_NAME = 'inputGroup';\r\n\r\n/**\r\n * Input Group Property\r\n */\r\n@Component({ selector: `${XInputGroupPrefix}-property`, template: '' })\r\nexport class XInputGroupProperty extends XPropertyFunction(X_INPUT_GROUP_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize | undefined>(this.config?.size);\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否使用紧凑模式\r\n * @en_US Whether to use a compact mode\r\n */\r\n readonly compact = input<boolean, XBoolean>(this.config?.compact ?? false, { transform: XToBoolean });\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation, inject } from '@angular/core';\r\nimport { XInputGroupPrefix, XInputGroupProperty } from './input.property';\r\n\r\n@Component({\r\n selector: `${XInputGroupPrefix}`,\r\n templateUrl: './input-group.component.html',\r\n styleUrls: ['./input-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XInputGroupComponent extends XInputGroupProperty {\r\n elementRef = inject(ElementRef);\r\n}\r\n","<div class=\"x-input-group\" [class.x-input-group-compact]=\"compact()\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n TemplateRef,\r\n HostBinding,\r\n inject,\r\n viewChild,\r\n signal,\r\n computed\r\n} from '@angular/core';\r\nimport { XInputPrefix, XInputProperty } from './input.property';\r\nimport { XIsEmpty, XIsUndefined, XIsFunction, XSize, XIsArray } from '@ng-nest/ui/core';\r\nimport { Subject, distinctUntilChanged, fromEvent, takeUntil } from 'rxjs';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { XInputGroupComponent } from './input-group.component';\r\nimport { NgClass, NgStyle } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\n\r\n@Component({\r\n selector: `${XInputPrefix}`,\r\n imports: [NgClass, NgStyle, FormsModule, ReactiveFormsModule, XIconComponent, XOutletDirective],\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XInputComponent)]\r\n})\r\nexport class XInputComponent extends XInputProperty implements OnInit {\r\n inputElement = viewChild.required('inputElement', { read: ElementRef<HTMLElement> });\r\n inputRef = viewChild.required('inputRef', { read: ElementRef<HTMLInputElement> });\r\n inputValueRef = viewChild('inputValueRef', { read: ElementRef<HTMLElement> });\r\n maxLengthRef = viewChild('maxLengthRef', { read: ElementRef<HTMLElement> });\r\n\r\n @HostBinding('style.width') get getWidth() {\r\n return this.width();\r\n }\r\n\r\n override writeValue(value: any) {\r\n this.value.set(value);\r\n this.validatorValue(value);\r\n this.isWriteValue.set(true);\r\n this.valueChange.next(value);\r\n this.isWriteValue.set(false);\r\n }\r\n\r\n classMap = computed(() => ({\r\n [`${XInputPrefix}-${this.size()}`]: !!this.size(),\r\n [`x-justify-${this.justify()}`]: !!this.justify(),\r\n [`x-align-${this.align()}`]: !!this.align(),\r\n [`x-direction-${this.direction()}`]: !!this.direction()\r\n }));\r\n labelMapSignal = computed(() => ({\r\n [`x-text-align-${this.labelAlign()}`]: !!this.labelAlign()\r\n }));\r\n\r\n valueLength = signal(0);\r\n lengthTotal = signal('');\r\n paddingLeft = computed(() => {\r\n return this.maxlength() && this.icon() && this.iconLayout() === 'right'\r\n ? (this.lengthTotal().length + 2) * 0.5 + 'rem'\r\n : this.icon() && this.iconLayout() === 'left'\r\n ? this.inputIconPadding()\r\n : this.inputPadding();\r\n });\r\n paddingRight = computed(() => {\r\n return this.maxlength() && this.icon() && this.iconLayout() === 'left'\r\n ? (this.lengthTotal().length + 2) * 0.5 + 'rem'\r\n : ((this.icon() || this.clearShow()) && this.iconLayout() === 'right') ||\r\n (this.clearShow() && this.iconLayout() === 'left')\r\n ? this.inputIconPadding()\r\n : this.maxlength() && !this.icon()\r\n ? (this.lengthTotal().length + 2) * 0.5 + 'rem'\r\n : this.inputPadding();\r\n });\r\n clearShow = computed(() => {\r\n if (this.clearable() && !this.disabledComputed()) {\r\n return !XIsEmpty(this.value());\r\n } else {\r\n return false;\r\n }\r\n });\r\n hasValue = computed(() => {\r\n if (XIsArray(this.value())) {\r\n return this.value().length > 0;\r\n } else {\r\n return !XIsEmpty(this.value());\r\n }\r\n });\r\n valueChange = new Subject<any>();\r\n isComposition = signal(false);\r\n isWriteValue = signal(false);\r\n private unSubject = new Subject<void>();\r\n\r\n getIcon = computed(() => {\r\n return !XIsEmpty(this.icon());\r\n });\r\n\r\n getIconLayoutLeft = computed(() => {\r\n return !XIsEmpty(this.icon()) && this.iconLayout() === 'left';\r\n });\r\n\r\n getIconLayoutRight = computed(() => {\r\n return !XIsEmpty(this.icon()) && this.iconLayout() === 'right';\r\n });\r\n\r\n getMaxLengthWidth = computed(() => {\r\n if (this.getIconLayoutRight()) {\r\n return this.paddingLeft();\r\n } else {\r\n return this.paddingRight();\r\n }\r\n });\r\n\r\n beforeIsTemplate = computed(() => this.before() instanceof TemplateRef);\r\n afterIsTemplate = computed(() => this.after() instanceof TemplateRef);\r\n\r\n getTemplateWidth = computed(() => {\r\n return `calc(100% - ${this.paddingLeft()} - ${this.paddingRight()})`;\r\n });\r\n\r\n focused = signal(false);\r\n groupSize = signal<XSize | null>(null);\r\n groupBordered = signal<boolean | null>(null);\r\n\r\n override cdr = inject(ChangeDetectorRef);\r\n private inputGroup = inject(XInputGroupComponent, { optional: true });\r\n elementRef = inject(ElementRef);\r\n\r\n ngOnInit() {\r\n this.setInheritedValue();\r\n this.setEvent();\r\n this.validatorValue(this.value());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n setEvent() {\r\n const inputRef = this.inputRef().nativeElement;\r\n fromEvent(inputRef, 'compositionstart')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.isComposition.set(true);\r\n });\r\n fromEvent(inputRef, 'compositionend')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe((x: any) => {\r\n this.isComposition.set(false);\r\n this.inputCheckValue(x);\r\n });\r\n fromEvent(inputRef, 'focus')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.focused.set(true);\r\n });\r\n fromEvent(inputRef, 'blur')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.focused.set(false);\r\n });\r\n fromEvent<InputEvent>(inputRef, 'input')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe((x: InputEvent) => {\r\n if (!this.isComposition()) {\r\n this.inputCheckValue(x);\r\n }\r\n });\r\n this.valueChange\r\n .pipe(\r\n distinctUntilChanged((a, b) => a === b || (!!this.maxlength() && `${b}`.length > Number(this.maxlength()))),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.change(x);\r\n });\r\n }\r\n\r\n inputCheckValue(x: Event) {\r\n const input = x.target as HTMLInputElement;\r\n let value = input.value;\r\n if (this.type() === 'number') {\r\n if (!XIsEmpty(value)) {\r\n const len = XIsEmpty(value) ? 0 : `${value}`.length;\r\n if (this.maxlength() && len > Number(this.maxlength())) {\r\n input.value = value.slice(0, this.maxlength()!);\r\n }\r\n if (!XIsEmpty(this.min()) && Number(value) <= this.min()!) {\r\n input.value = `${this.min()!}`;\r\n }\r\n if (!XIsEmpty(this.max()) && Number(value) >= this.max()!) {\r\n input.value = `${this.max()!}`;\r\n }\r\n }\r\n }\r\n this.xInput.emit(x);\r\n this.valueChange.next(input.value);\r\n }\r\n\r\n change(value: any) {\r\n if (this.maxlength()) {\r\n this.valueLength.set(XIsEmpty(value) ? 0 : `${value}`.length);\r\n this.lengthTotal.set(`${this.valueLength()}/${this.maxlength()}`);\r\n }\r\n if (this.onChange && !this.isWriteValue()) {\r\n if (this.type() === 'number') {\r\n if (['', undefined, null].includes(value)) {\r\n value = null;\r\n } else {\r\n value = Number(value);\r\n }\r\n }\r\n this.onChange(value);\r\n }\r\n this.validatorValue(value);\r\n }\r\n\r\n validatorValue(value: any) {\r\n if (this.validatorComputed()) {\r\n if (XIsFunction(this.inputValidator())) {\r\n this.invalidInputValidator.set(!this.inputValidator()!(value));\r\n } else {\r\n this.invalidInputValidator.set(this.requiredIsEmpty());\r\n }\r\n }\r\n }\r\n\r\n onClear() {\r\n const clearValue = this.value();\r\n this.value.set('');\r\n this.valueChange.next(this.value());\r\n this.inputRef().nativeElement.focus();\r\n this.clearEmit.emit(clearValue);\r\n }\r\n\r\n setInheritedValue() {\r\n if (!this.inputGroup) return;\r\n if (!XIsUndefined(this.inputGroup.size())) {\r\n this.groupSize.set(this.inputGroup.size()!);\r\n }\r\n if (!XIsUndefined(this.inputGroup.bordered())) {\r\n this.groupBordered.set(this.inputGroup.bordered()!);\r\n }\r\n }\r\n\r\n inputFocus(type: 'focus' | 'select' | 'before' | 'after' = 'after') {\r\n this.inputRef().nativeElement.focus();\r\n if (!this.value()) return;\r\n if (type === 'after') {\r\n this.inputRef().nativeElement.setSelectionRange(this.value().length, this.value().length);\r\n } else if (type === 'before') {\r\n this.inputRef().nativeElement.setSelectionRange(0, 0);\r\n } else if (type === 'select') {\r\n this.inputRef().nativeElement.setSelectionRange(0, this.value().length);\r\n }\r\n }\r\n\r\n formControlChanges() {}\r\n\r\n onClick($event: MouseEvent) {\r\n this.xClick.emit($event);\r\n }\r\n}\r\n","<div\r\n #inputElement\r\n class=\"x-input\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-input-icon]=\"getIcon()\"\r\n [class.x-input-active]=\"active()\"\r\n [class.x-input-focus]=\"focused()\"\r\n [class.x-input-pointer]=\"pointer()\"\r\n [class.x-input-bordered]=\"bordered()\"\r\n [class.x-input-filled]=\"variant() === 'filled'\"\r\n [class.x-input-borderless]=\"variant() === 'borderless' || (variant() === 'outlined' && !bordered())\"\r\n [class.x-input-underlined]=\"variant() === 'underlined'\"\r\n [class.x-input-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-input-icon-right]=\"getIconLayoutRight()\"\r\n [class.x-input-after]=\"after()\"\r\n [class.x-input-before]=\"before()\"\r\n [class.x-input-after-template]=\"afterIsTemplate()\"\r\n [class.x-input-before-template]=\"beforeIsTemplate()\"\r\n [class.x-input-value-template]=\"valueTpl()\"\r\n [class.x-input-float-fixed]=\"floatFixed()\"\r\n [class.x-input-float-label]=\"!!floatLabel()\"\r\n [class.x-input-float-label-over]=\"floatLabel() === 'over'\"\r\n [class.x-input-float-label-in]=\"floatLabel() === 'in'\"\r\n [class.x-input-float-label-on]=\"floatLabel() === 'on'\"\r\n [class.x-input-has-value]=\"hasValue()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-input-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [style.margin-left]=\"!!floatLabel() ? paddingLeft() : null\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-input-row\">\r\n @if (before()) {\r\n <div class=\"x-input-row-before\" [class.x-input-row-before-template]=\"beforeIsTemplate()\">\r\n <ng-container *xOutlet=\"before()\">{{ before() }}</ng-container>\r\n </div>\r\n }\r\n <div class=\"x-input-input\" (mouseenter)=\"xMouseenter.emit($event)\" (mouseleave)=\"xMouseleave.emit($event)\">\r\n @if (valueTpl()) {\r\n <div\r\n #inputValueRef\r\n class=\"x-input-value-template-value\"\r\n [style.left]=\"paddingLeft()\"\r\n [style.padding-left]=\"0\"\r\n [style.padding-right]=\"0\"\r\n [style.width]=\"getTemplateWidth()\"\r\n (click)=\"onClick($event)\"\r\n >\r\n <ng-container\r\n *xOutlet=\"valueTpl()!; context: valueTplContext() ? valueTplContext() : { $value: value() }\"\r\n ></ng-container>\r\n </div>\r\n }\r\n <input\r\n #inputRef\r\n autocomplete=\"off\"\r\n class=\"x-input-frame\"\r\n [class.x-input-has-value-template]=\"!!valueTpl()\"\r\n [ngStyle]=\"inputStyle()\"\r\n [type]=\"type()\"\r\n [placeholder]=\"!floatLabel() ? placeholder() : ''\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"valueChange.next($event)\"\r\n [style.padding-left]=\"paddingLeft()\"\r\n [style.padding-right]=\"paddingRight()\"\r\n (focus)=\"xFocus.emit($event)\"\r\n (blur)=\"xBlur.emit($event)\"\r\n (keydown)=\"formControlValidator(); xKeydown.emit($event)\"\r\n (click)=\"onClick($event)\"\r\n (compositionstart)=\"xComposition.emit($event)\"\r\n (compositionend)=\"xComposition.emit($event)\"\r\n />\r\n @if (clearShow() && !iconSpin()) {\r\n <x-icon class=\"x-input-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft() || iconSpin())) {\r\n <x-icon [type]=\"icon()\" [spin]=\"iconSpin()\" (click)=\"onClick($event)\"></x-icon>\r\n }\r\n @if (maxlength() && lengthTotal()) {\r\n <span class=\"x-input-max-length\" [style.width]=\"getMaxLengthWidth()\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-input-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n </div>\r\n @if (after()) {\r\n <div class=\"x-input-row-after\" [class.x-input-row-after-template]=\"afterIsTemplate()\">\r\n <ng-container *xOutlet=\"after()\">{{ after() }}</ng-container>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XInputComponent } from './input.component';\r\nimport { XInputGroupComponent } from './input-group.component';\r\n@NgModule({\r\n exports: [XInputComponent, XInputGroupComponent],\r\n imports: [XInputComponent, XInputGroupComponent]\r\n})\r\nexport class XInputModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-input.mjs","sources":["../../../../lib/ng-nest/ui/input/input.property.ts","../../../../lib/ng-nest/ui/input/input-group.component.ts","../../../../lib/ng-nest/ui/input/input-group.component.html","../../../../lib/ng-nest/ui/input/input.component.ts","../../../../lib/ng-nest/ui/input/input.component.html","../../../../lib/ng-nest/ui/input/input.module.ts","../../../../lib/ng-nest/ui/input/ng-nest-ui-input.ts"],"sourcesContent":["import { XToBoolean, XToNumber, XToCssPixelValue, XPropertyFunction } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, model, output } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type {\r\n XSize,\r\n XNumber,\r\n XBoolean,\r\n XPositionLeftRight,\r\n XTemplate,\r\n XAlign,\r\n XJustify,\r\n XDirection,\r\n XVariant,\r\n XFloatLabel\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Input\r\n * @selector x-input\r\n * @decorator component\r\n */\r\nexport const XInputPrefix = 'x-input';\r\nconst X_INPUT_CONFIG_NAME = 'input';\r\n\r\n/**\r\n * Input Property\r\n */\r\n@Component({ selector: `${XInputPrefix}-property`, template: '' })\r\nexport class XInputProperty extends XFormControlFunction(X_INPUT_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 输入类型\r\n * @en_US Input type\r\n */\r\n readonly type = input<XInputType>('text');\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n readonly variant = input<XInputVariant>(this.config?.variant ?? 'outlined');\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n readonly clearable = input<boolean, XBoolean>(this.config?.clearable ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n readonly icon = input<string>();\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n readonly iconLayout = input<XInputIconLayoutType>(this.config?.iconLayout ?? 'right');\r\n /**\r\n * @zh_CN 图标动画\r\n * @en_US Icon animation\r\n */\r\n readonly iconSpin = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入最大长度\r\n * @en_US Enter the maximum length\r\n */\r\n readonly maxlength = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Enter the max\r\n */\r\n readonly max = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Enter the min\r\n */\r\n readonly min = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US width\r\n */\r\n readonly width = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 自适应宽度,input 需要有默认值\r\n * @en_US auto width,input needs a default value\r\n */\r\n readonly autoWidth = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 自适应最小的宽度\r\n * @en_US auto min width\r\n */\r\n readonly autoMinWidth = input<number, XNumber>(40, { transform: XToNumber });\r\n /**\r\n * @zh_CN 自适应最大的宽度\r\n * @en_US auto max width,input needs a default value\r\n */\r\n readonly autoMaxWidth = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入框样式\r\n * @en_US Input Style\r\n */\r\n readonly inputStyle = input<{ [style: string]: any }>();\r\n /**\r\n * @zh_CN 输入框内边距。主要指输入框中的左右内边距\r\n * @en_US Enter the border of the input box.\r\n */\r\n readonly inputPadding = input<string, XNumber>(this.config?.inputPadding ?? '0.75rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 输入框内边距(包含图标)。主要指输入框中的有图标的时候左右内边距\r\n * @en_US Enter the border between the input box (including icon).\r\n */\r\n readonly inputIconPadding = input<string, XNumber>(this.config?.inputPadding ?? '2.15rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n readonly floatLabel = input<XInputFloatLabel | null>(this.config?.floatLabel ?? null);\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n readonly floatFixed = input<boolean, XBoolean>(this.config?.floatFixed ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 初始启用验证,在输入值都自动开启\r\n * @en_US Initial enable validation, which is automatically enabled when the input value is\r\n */\r\n override readonly validator = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n override readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n override readonly pointer = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<XTemplate>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n override readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n override readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n override readonly valueTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n override readonly valueTplContext = input();\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n override readonly before = input<XTemplate>();\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n override readonly after = input<XTemplate>();\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n override readonly pattern = input<RegExp | RegExp[] | any>(null);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n override readonly message = input<string | string[]>([]);\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n override readonly active = model<boolean>(false);\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n override readonly inputValidator = input<(value: any) => boolean>();\r\n /**\r\n * @zh_CN 清除按钮的事件\r\n * @en_US Clear button event\r\n */\r\n readonly clearEmit = output<any>();\r\n /**\r\n * @zh_CN 获取焦点的事件\r\n * @en_US Focus event\r\n */\r\n readonly xFocus = output<any>();\r\n /**\r\n * @zh_CN 失去焦点的事件\r\n * @en_US Blur event\r\n */\r\n readonly xBlur = output<any>();\r\n /**\r\n * @zh_CN Input\r\n * @en_US Input event\r\n */\r\n readonly xInput = output<any>();\r\n /**\r\n * @zh_CN Keydown\r\n * @en_US Keydown event\r\n */\r\n readonly xKeydown = output<KeyboardEvent>();\r\n /**\r\n * @zh_CN Click\r\n * @en_US Click event\r\n */\r\n readonly xClick = output<MouseEvent>();\r\n /**\r\n * @zh_CN Mouseenter\r\n * @en_US Mouseenter event\r\n */\r\n readonly xMouseenter = output<MouseEvent>();\r\n /**\r\n * @zh_CN Mouseleave\r\n * @en_US Mouseleave event\r\n */\r\n readonly xMouseleave = output<MouseEvent>();\r\n /**\r\n * @zh_CN Composition\r\n * @en_US Composition event\r\n */\r\n readonly xComposition = output<any>();\r\n}\r\n\r\n/**\r\n * Input Option\r\n */\r\nexport interface XInputOption extends XFormOption {\r\n /**\r\n * @zh_CN 输入类型\r\n * @en_US Input type\r\n */\r\n type?: XInputType;\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n variant?: XInputVariant;\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n floatLabel?: XInputFloatLabel;\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n floatFixed?: boolean;\r\n /**\r\n * @zh_CN 清除按钮\r\n * @en_US Clear button\r\n */\r\n clearable?: boolean;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 图标布局方式\r\n * @en_US Icon layout\r\n */\r\n iconLayout?: XInputIconLayoutType;\r\n /**\r\n * @zh_CN 图标动画\r\n * @en_US Icon animation\r\n */\r\n iconSpin?: boolean;\r\n /**\r\n * @zh_CN 输入最大长度\r\n * @en_US Enter the maximum length\r\n */\r\n maxlength?: number;\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Enter the max\r\n */\r\n max?: number;\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Enter the min\r\n */\r\n min?: number;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US width\r\n */\r\n width?: string;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n bordered?: boolean;\r\n /**\r\n * @zh_CN 输入框样式\r\n * @en_US Input Style\r\n */\r\n inputStyle?: { [style: string]: any };\r\n /**\r\n * @zh_CN 输入框内边距。主要指输入框中的左右内边距\r\n * @en_US Enter the border of the input box.\r\n */\r\n inputPadding?: string;\r\n /**\r\n * @zh_CN 输入框内边距(包含图标)。主要指输入框中的有图标的时候左右内边距\r\n * @en_US Enter the border between the input box (including icon).\r\n */\r\n inputIconPadding?: string;\r\n /**\r\n * @zh_CN 初始启用验证,在输入值都自动开启\r\n * @en_US Initial enable validation, which is automatically enabled when the input value is\r\n */\r\n validator?: boolean;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n size?: XSize;\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n pointer?: boolean;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n placeholder?: string;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly?: boolean;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n valueTplContext?: any;\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n before?: XTemplate;\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n after?: XTemplate;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n active?: boolean;\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 清除按钮的事件\r\n * @en_US Clear button event\r\n */\r\n clearEmit?: (value: any) => void;\r\n /**\r\n * @zh_CN 获取焦点的事件\r\n * @en_US Focus event\r\n */\r\n xFocus?: (event: FocusEvent) => void;\r\n /**\r\n * @zh_CN 失去焦点的事件\r\n * @en_US Blur event\r\n */\r\n xBlur?: (event: FocusEvent) => void;\r\n /**\r\n * @zh_CN Input\r\n * @en_US Input event\r\n */\r\n xInput?: (event: Event) => void;\r\n /**\r\n * @zh_CN Keydown\r\n * @en_US Keydown event\r\n */\r\n xKeydown?: (event: KeyboardEvent) => void;\r\n /**\r\n * @zh_CN Click\r\n * @en_US Click event\r\n */\r\n xClick?: (event: MouseEvent) => void;\r\n /**\r\n * @zh_CN Mouseenter\r\n * @en_US Mouseenter event\r\n */\r\n xMouseenter?: (event: MouseEvent) => void;\r\n /**\r\n * @zh_CN Mouseleave\r\n * @en_US Mouseleave event\r\n */\r\n xMouseleave?: (event: MouseEvent) => void;\r\n /**\r\n * @zh_CN Composition\r\n * @en_US Composition event\r\n */\r\n xComposition?: (event: CompositionEvent) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN 输入框类型\r\n * @en_US Input box type\r\n * @value \"text\" 文本\r\n * @value \"password\" 密码\r\n * @value \"number\" 数字\r\n */\r\nexport type XInputType = 'text' | 'password' | 'number';\r\n\r\n/**\r\n * @zh_CN 浮动标签类型\r\n * @en_US Float label type\r\n */\r\nexport type XInputFloatLabel = XFloatLabel;\r\n\r\n/**\r\n * @zh_CN 输入框形态变体\r\n * @en_US Input box variant\r\n */\r\nexport type XInputVariant = XVariant;\r\n\r\n/**\r\n * @zh_CN 图标布局方式,指在输入框中的位置\r\n * @en_US Icon layout, refers to the position in the input box\r\n * @value \"left\" 靠左\r\n * @value \"right\" 靠右\r\n */\r\nexport type XInputIconLayoutType = XPositionLeftRight;\r\n\r\n/**\r\n * Input Group\r\n * @selector x-input-group\r\n * @decorator component\r\n */\r\nexport const XInputGroupPrefix = 'x-input-group';\r\nconst X_INPUT_GROUP_CONFIG_NAME = 'inputGroup';\r\n\r\n/**\r\n * Input Group Property\r\n */\r\n@Component({ selector: `${XInputGroupPrefix}-property`, template: '' })\r\nexport class XInputGroupProperty extends XPropertyFunction(X_INPUT_GROUP_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize | undefined>(this.config?.size);\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否使用紧凑模式\r\n * @en_US Whether to use a compact mode\r\n */\r\n readonly compact = input<boolean, XBoolean>(this.config?.compact ?? false, { transform: XToBoolean });\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation, inject } from '@angular/core';\r\nimport { XInputGroupPrefix, XInputGroupProperty } from './input.property';\r\n\r\n@Component({\r\n selector: `${XInputGroupPrefix}`,\r\n templateUrl: './input-group.component.html',\r\n styleUrls: ['./input-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XInputGroupComponent extends XInputGroupProperty {\r\n elementRef = inject(ElementRef);\r\n}\r\n","<div class=\"x-input-group\" [class.x-input-group-compact]=\"compact()\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n TemplateRef,\r\n HostBinding,\r\n inject,\r\n viewChild,\r\n signal,\r\n computed\r\n} from '@angular/core';\r\nimport { XInputPrefix, XInputProperty } from './input.property';\r\nimport {\r\n XIsEmpty,\r\n XIsUndefined,\r\n XIsFunction,\r\n XSize,\r\n XIsArray,\r\n XComputedStyle,\r\n XResize,\r\n XResizeObserver\r\n} from '@ng-nest/ui/core';\r\nimport { Subject, debounceTime, distinctUntilChanged, fromEvent, takeUntil, tap } from 'rxjs';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { XInputGroupComponent } from './input-group.component';\r\nimport { NgClass, NgStyle } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XInputPrefix}`,\r\n imports: [NgClass, NgStyle, FormsModule, ReactiveFormsModule, XIconComponent, XOutletDirective],\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XInputComponent)]\r\n})\r\nexport class XInputComponent extends XInputProperty implements OnInit {\r\n inputElement = viewChild.required('inputElement', { read: ElementRef<HTMLElement> });\r\n inputRef = viewChild.required('inputRef', { read: ElementRef<HTMLInputElement> });\r\n inputValueRef = viewChild('inputValueRef', { read: ElementRef<HTMLElement> });\r\n maxLengthRef = viewChild('maxLengthRef', { read: ElementRef<HTMLElement> });\r\n measureRef = viewChild('measureRef', { read: ElementRef<HTMLElement> });\r\n measureRefChanged = signal(false);\r\n\r\n @HostBinding('style.width') get getWidth() {\r\n return this.autoWidth() ? 'auto' : this.width();\r\n }\r\n\r\n override writeValue(value: any) {\r\n this.value.set(value);\r\n this.validatorValue(value);\r\n this.isWriteValue.set(true);\r\n this.valueChange.next(value);\r\n this.isWriteValue.set(false);\r\n }\r\n\r\n classMap = computed(() => ({\r\n [`${XInputPrefix}-${this.size()}`]: !!this.size(),\r\n [`x-justify-${this.justify()}`]: !!this.justify(),\r\n [`x-align-${this.align()}`]: !!this.align(),\r\n [`x-direction-${this.direction()}`]: !!this.direction()\r\n }));\r\n labelMapSignal = computed(() => ({\r\n [`x-text-align-${this.labelAlign()}`]: !!this.labelAlign()\r\n }));\r\n\r\n valueLength = signal(0);\r\n lengthTotal = signal('');\r\n paddingLeft = computed(() => {\r\n return this.maxlength() && this.icon() && this.iconLayout() === 'right'\r\n ? (this.lengthTotal().length + 2) * 0.5 + 'rem'\r\n : this.icon() && this.iconLayout() === 'left'\r\n ? this.inputIconPadding()\r\n : this.inputPadding();\r\n });\r\n paddingRight = computed(() => {\r\n return this.maxlength() && this.icon() && this.iconLayout() === 'left'\r\n ? (this.lengthTotal().length + 2) * 0.5 + 'rem'\r\n : ((this.icon() || this.clearShow()) && this.iconLayout() === 'right') ||\r\n (this.clearShow() && this.iconLayout() === 'left')\r\n ? this.inputIconPadding()\r\n : this.maxlength() && !this.icon()\r\n ? (this.lengthTotal().length + 2) * 0.5 + 'rem'\r\n : this.inputPadding();\r\n });\r\n clearShow = computed(() => {\r\n if (this.clearable() && !this.disabledComputed()) {\r\n return !XIsEmpty(this.value());\r\n } else {\r\n return false;\r\n }\r\n });\r\n hasValue = computed(() => {\r\n if (XIsArray(this.value())) {\r\n return this.value().length > 0;\r\n } else {\r\n return !XIsEmpty(this.value());\r\n }\r\n });\r\n valueChange = new Subject<any>();\r\n valueChangeSignal = toSignal(this.valueChange);\r\n isComposition = signal(false);\r\n isWriteValue = signal(false);\r\n\r\n private unSubject = new Subject<void>();\r\n\r\n getIcon = computed(() => {\r\n return !XIsEmpty(this.icon());\r\n });\r\n\r\n getIconLayoutLeft = computed(() => {\r\n return !XIsEmpty(this.icon()) && this.iconLayout() === 'left';\r\n });\r\n\r\n getIconLayoutRight = computed(() => {\r\n return !XIsEmpty(this.icon()) && this.iconLayout() === 'right';\r\n });\r\n\r\n getMaxLengthWidth = computed(() => {\r\n if (this.getIconLayoutRight()) {\r\n return this.paddingLeft();\r\n } else {\r\n return this.paddingRight();\r\n }\r\n });\r\n\r\n beforeIsTemplate = computed(() => this.before() instanceof TemplateRef);\r\n afterIsTemplate = computed(() => this.after() instanceof TemplateRef);\r\n\r\n getTemplateWidth = computed(() => {\r\n return `calc(100% - ${this.paddingLeft()} - ${this.paddingRight()})`;\r\n });\r\n\r\n inputWidth = computed(() => {\r\n if (!this.autoWidth()) return 'auto';\r\n this.measureRefChanged();\r\n const measureElement = this.measureRef()?.nativeElement;\r\n const inputRef = this.inputRef()?.nativeElement;\r\n const paddingLeft = Number(XComputedStyle(inputRef, 'padding-left')) || 0;\r\n const paddingRight = Number(XComputedStyle(inputRef, 'padding-right')) || 0;\r\n\r\n if (measureElement) {\r\n let finalWidth = measureElement.offsetWidth + paddingLeft + paddingRight + 2;\r\n if (this.autoMinWidth()) {\r\n finalWidth = Math.max(finalWidth, this.autoMinWidth()!);\r\n }\r\n if (this.autoMaxWidth()) {\r\n finalWidth = Math.min(finalWidth, this.autoMaxWidth()!);\r\n }\r\n\r\n console.log(finalWidth);\r\n\r\n return finalWidth + 'px';\r\n }\r\n\r\n return 'auto';\r\n });\r\n\r\n focused = signal(false);\r\n groupSize = signal<XSize | null>(null);\r\n groupBordered = signal<boolean | null>(null);\r\n\r\n override cdr = inject(ChangeDetectorRef);\r\n private inputGroup = inject(XInputGroupComponent, { optional: true });\r\n elementRef = inject(ElementRef);\r\n private resizeObserver!: XResizeObserver;\r\n\r\n ngOnInit() {\r\n this.setInheritedValue();\r\n this.setEvent();\r\n this.validatorValue(this.value());\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setAutoElement();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n setAutoElement() {\r\n if (!this.autoWidth()) return;\r\n\r\n XResize(this.measureRef()?.nativeElement)\r\n .pipe(\r\n debounceTime(16),\r\n tap(({ resizeObserver }) => {\r\n this.resizeObserver = resizeObserver;\r\n this.measureRefChanged.update((x) => !x);\r\n console.log(this.measureRefChanged());\r\n }),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe();\r\n }\r\n\r\n setEvent() {\r\n const inputRef = this.inputRef().nativeElement;\r\n fromEvent(inputRef, 'compositionstart')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.isComposition.set(true);\r\n });\r\n fromEvent(inputRef, 'compositionend')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe((x: any) => {\r\n this.isComposition.set(false);\r\n this.inputCheckValue(x);\r\n });\r\n fromEvent(inputRef, 'focus')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.focused.set(true);\r\n });\r\n fromEvent(inputRef, 'blur')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.focused.set(false);\r\n });\r\n fromEvent<InputEvent>(inputRef, 'input')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe((x: InputEvent) => {\r\n if (!this.isComposition()) {\r\n this.inputCheckValue(x);\r\n }\r\n });\r\n this.valueChange\r\n .pipe(\r\n distinctUntilChanged((a, b) => a === b || (!!this.maxlength() && `${b}`.length > Number(this.maxlength()))),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.change(x);\r\n });\r\n }\r\n\r\n inputCheckValue(x: Event) {\r\n const input = x.target as HTMLInputElement;\r\n let value = input.value;\r\n if (this.type() === 'number') {\r\n if (!XIsEmpty(value)) {\r\n const len = XIsEmpty(value) ? 0 : `${value}`.length;\r\n if (this.maxlength() && len > Number(this.maxlength())) {\r\n input.value = value.slice(0, this.maxlength()!);\r\n }\r\n if (!XIsEmpty(this.min()) && Number(value) <= this.min()!) {\r\n input.value = `${this.min()!}`;\r\n }\r\n if (!XIsEmpty(this.max()) && Number(value) >= this.max()!) {\r\n input.value = `${this.max()!}`;\r\n }\r\n }\r\n }\r\n this.xInput.emit(x);\r\n this.valueChange.next(input.value);\r\n }\r\n\r\n change(value: any) {\r\n if (this.maxlength()) {\r\n this.valueLength.set(XIsEmpty(value) ? 0 : `${value}`.length);\r\n this.lengthTotal.set(`${this.valueLength()}/${this.maxlength()}`);\r\n }\r\n if (this.onChange && !this.isWriteValue()) {\r\n if (this.type() === 'number') {\r\n if (['', undefined, null].includes(value)) {\r\n value = null;\r\n } else {\r\n value = Number(value);\r\n }\r\n }\r\n this.onChange(value);\r\n }\r\n this.validatorValue(value);\r\n }\r\n\r\n validatorValue(value: any) {\r\n if (this.validatorComputed()) {\r\n if (XIsFunction(this.inputValidator())) {\r\n this.invalidInputValidator.set(!this.inputValidator()!(value));\r\n } else {\r\n this.invalidInputValidator.set(this.requiredIsEmpty());\r\n }\r\n }\r\n }\r\n\r\n onClear() {\r\n const clearValue = this.value();\r\n this.value.set('');\r\n this.valueChange.next(this.value());\r\n this.inputRef().nativeElement.focus();\r\n this.clearEmit.emit(clearValue);\r\n }\r\n\r\n setInheritedValue() {\r\n if (!this.inputGroup) return;\r\n if (!XIsUndefined(this.inputGroup.size())) {\r\n this.groupSize.set(this.inputGroup.size()!);\r\n }\r\n if (!XIsUndefined(this.inputGroup.bordered())) {\r\n this.groupBordered.set(this.inputGroup.bordered()!);\r\n }\r\n }\r\n\r\n inputFocus(type: 'focus' | 'select' | 'before' | 'after' = 'after') {\r\n this.inputRef().nativeElement.focus();\r\n if (!this.value()) return;\r\n if (type === 'after') {\r\n this.inputRef().nativeElement.setSelectionRange(this.value().length, this.value().length);\r\n } else if (type === 'before') {\r\n this.inputRef().nativeElement.setSelectionRange(0, 0);\r\n } else if (type === 'select') {\r\n this.inputRef().nativeElement.setSelectionRange(0, this.value().length);\r\n }\r\n }\r\n\r\n formControlChanges() {}\r\n\r\n onClick($event: MouseEvent) {\r\n this.xClick.emit($event);\r\n }\r\n}\r\n","<div\r\n #inputElement\r\n class=\"x-input\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [class.x-clearable]=\"clearable()\"\r\n [class.x-clear-show]=\"clearShow()\"\r\n [class.x-input-icon]=\"getIcon()\"\r\n [class.x-input-active]=\"active()\"\r\n [class.x-input-focus]=\"focused()\"\r\n [class.x-input-pointer]=\"pointer()\"\r\n [class.x-input-bordered]=\"bordered()\"\r\n [class.x-input-filled]=\"variant() === 'filled'\"\r\n [class.x-input-borderless]=\"variant() === 'borderless' || (variant() === 'outlined' && !bordered())\"\r\n [class.x-input-underlined]=\"variant() === 'underlined'\"\r\n [class.x-input-icon-left]=\"getIconLayoutLeft()\"\r\n [class.x-input-icon-right]=\"getIconLayoutRight()\"\r\n [class.x-input-after]=\"after()\"\r\n [class.x-input-before]=\"before()\"\r\n [class.x-input-after-template]=\"afterIsTemplate()\"\r\n [class.x-input-before-template]=\"beforeIsTemplate()\"\r\n [class.x-input-value-template]=\"valueTpl()\"\r\n [class.x-input-float-fixed]=\"floatFixed()\"\r\n [class.x-input-float-label]=\"!!floatLabel()\"\r\n [class.x-input-float-label-over]=\"floatLabel() === 'over'\"\r\n [class.x-input-float-label-in]=\"floatLabel() === 'in'\"\r\n [class.x-input-float-label-on]=\"floatLabel() === 'on'\"\r\n [class.x-input-has-value]=\"hasValue()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-input-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [style.margin-left]=\"!!floatLabel() ? paddingLeft() : null\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-input-row\">\r\n @if (before()) {\r\n <div class=\"x-input-row-before\" [class.x-input-row-before-template]=\"beforeIsTemplate()\">\r\n <ng-container *xOutlet=\"before()\">{{ before() }}</ng-container>\r\n </div>\r\n }\r\n <div class=\"x-input-input\" (mouseenter)=\"xMouseenter.emit($event)\" (mouseleave)=\"xMouseleave.emit($event)\">\r\n @if (valueTpl()) {\r\n <div\r\n #inputValueRef\r\n class=\"x-input-value-template-value\"\r\n [style.left]=\"paddingLeft()\"\r\n [style.padding-left]=\"0\"\r\n [style.padding-right]=\"0\"\r\n [style.width]=\"getTemplateWidth()\"\r\n (click)=\"onClick($event)\"\r\n >\r\n <ng-container\r\n *xOutlet=\"valueTpl()!; context: valueTplContext() ? valueTplContext() : { $value: value() }\"\r\n ></ng-container>\r\n </div>\r\n }\r\n <input\r\n #inputRef\r\n autocomplete=\"off\"\r\n class=\"x-input-frame\"\r\n [class.x-input-has-value-template]=\"!!valueTpl()\"\r\n [ngStyle]=\"inputStyle()\"\r\n [style.width]=\"autoWidth() ? inputWidth() : '100%'\"\r\n [type]=\"type()\"\r\n [placeholder]=\"!floatLabel() ? placeholder() : ''\"\r\n [required]=\"requiredComputed()\"\r\n [disabled]=\"disabledComputed()\"\r\n [readonly]=\"readonly()\"\r\n [maxlength]=\"maxlength()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"valueChange.next($event)\"\r\n [style.padding-left]=\"paddingLeft()\"\r\n [style.padding-right]=\"paddingRight()\"\r\n (focus)=\"xFocus.emit($event)\"\r\n (blur)=\"xBlur.emit($event)\"\r\n (keydown)=\"formControlValidator(); xKeydown.emit($event)\"\r\n (click)=\"onClick($event)\"\r\n (compositionstart)=\"xComposition.emit($event)\"\r\n (compositionend)=\"xComposition.emit($event)\"\r\n />\r\n @if (clearShow() && !iconSpin()) {\r\n <x-icon class=\"x-input-clear\" type=\"fto-x\" (click)=\"onClear()\"></x-icon>\r\n }\r\n @if (icon() && ((!clearShow() && getIconLayoutRight()) || getIconLayoutLeft() || iconSpin())) {\r\n <x-icon [type]=\"icon()\" [spin]=\"iconSpin()\" (click)=\"onClick($event)\"></x-icon>\r\n }\r\n @if (maxlength() && lengthTotal()) {\r\n <span class=\"x-input-max-length\" [style.width]=\"getMaxLengthWidth()\">{{ lengthTotal() }}</span>\r\n }\r\n @if (invalid()) {\r\n <span class=\"x-input-error-message\">{{ invalidMessage() }}</span>\r\n }\r\n @if (requiredIsEmpty() || invalid()) {\r\n <div class=\"x-border-error x-top-left\"></div>\r\n <div class=\"x-border-error x-top-right\"></div>\r\n <div class=\"x-border-error x-bottom-left\"></div>\r\n <div class=\"x-border-error x-bottom-right\"></div>\r\n }\r\n @if (autoWidth()) {\r\n <span\r\n #measureRef\r\n class=\"x-input-measure\"\r\n [style.font]=\"inputRef.style.font\"\r\n [style.font-size.px]=\"inputRef.style.fontSize\"\r\n [style.font-family]=\"inputRef.style.fontFamily\"\r\n >{{ value() || placeholder() }}</span\r\n >\r\n }\r\n </div>\r\n @if (after()) {\r\n <div class=\"x-input-row-after\" [class.x-input-row-after-template]=\"afterIsTemplate()\">\r\n <ng-container *xOutlet=\"after()\">{{ after() }}</ng-container>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XInputComponent } from './input.component';\r\nimport { XInputGroupComponent } from './input-group.component';\r\n@NgModule({\r\n exports: [XInputComponent, XInputGroupComponent],\r\n imports: [XInputComponent, XInputGroupComponent]\r\n})\r\nexport class XInputModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -32,21 +32,70 @@ class XScrollableComponent {
|
|
|
32
32
|
this.dragAxis = null;
|
|
33
33
|
this.dragStart = { x: 0, y: 0 };
|
|
34
34
|
this.initialScroll = { left: 0, top: 0 };
|
|
35
|
+
this.resizeTimeoutId = null;
|
|
36
|
+
this.mutationTimeoutId = null;
|
|
35
37
|
}
|
|
36
38
|
ngAfterViewInit() {
|
|
37
39
|
setTimeout(() => this.updateScrollbars(), 0);
|
|
38
|
-
this.resizeObserver = new ResizeObserver((
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
this.resizeObserver = new ResizeObserver((entries) => {
|
|
41
|
+
for (const entry of entries) {
|
|
42
|
+
if (entry.target === this.contentRef().nativeElement) {
|
|
43
|
+
if (this.resizeTimeoutId !== null) {
|
|
44
|
+
window.clearTimeout(this.resizeTimeoutId);
|
|
45
|
+
}
|
|
46
|
+
this.resizeTimeoutId = window.setTimeout(() => {
|
|
47
|
+
this.updateScrollbars();
|
|
48
|
+
if (entry && entry.borderBoxSize && entry.borderBoxSize.length > 0) {
|
|
49
|
+
this.resizeChange.emit(entry);
|
|
50
|
+
}
|
|
51
|
+
}, 16);
|
|
52
|
+
}
|
|
42
53
|
}
|
|
43
54
|
});
|
|
44
|
-
this.resizeObserver.observe(this.contentRef().nativeElement);
|
|
55
|
+
this.resizeObserver.observe(this.contentRef().nativeElement, { box: 'border-box' });
|
|
56
|
+
this.mutationObserver = new MutationObserver((mutations) => {
|
|
57
|
+
let shouldUpdate = false;
|
|
58
|
+
for (const mutation of mutations) {
|
|
59
|
+
if (mutation.type === 'childList' || mutation.type === 'attributes') {
|
|
60
|
+
shouldUpdate = true;
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (shouldUpdate) {
|
|
65
|
+
if (this.mutationTimeoutId !== null) {
|
|
66
|
+
window.clearTimeout(this.mutationTimeoutId);
|
|
67
|
+
}
|
|
68
|
+
this.mutationTimeoutId = window.setTimeout(() => {
|
|
69
|
+
this.updateScrollbars();
|
|
70
|
+
}, 16);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
this.mutationObserver.observe(this.contentRef().nativeElement, {
|
|
74
|
+
childList: true,
|
|
75
|
+
subtree: true,
|
|
76
|
+
attributes: true,
|
|
77
|
+
attributeFilter: ['style', 'class']
|
|
78
|
+
});
|
|
79
|
+
this.scrollListener = this.renderer.listen(this.contentRef().nativeElement, 'scroll', (event) => {
|
|
80
|
+
this.updateScrollbars(true, event);
|
|
81
|
+
});
|
|
45
82
|
}
|
|
46
83
|
ngOnDestroy() {
|
|
47
84
|
if (this.resizeObserver) {
|
|
48
85
|
this.resizeObserver.disconnect();
|
|
49
86
|
}
|
|
87
|
+
if (this.mutationObserver) {
|
|
88
|
+
this.mutationObserver.disconnect();
|
|
89
|
+
}
|
|
90
|
+
if (this.scrollListener) {
|
|
91
|
+
this.scrollListener();
|
|
92
|
+
}
|
|
93
|
+
if (this.resizeTimeoutId !== null) {
|
|
94
|
+
window.clearTimeout(this.resizeTimeoutId);
|
|
95
|
+
}
|
|
96
|
+
if (this.mutationTimeoutId !== null) {
|
|
97
|
+
window.clearTimeout(this.mutationTimeoutId);
|
|
98
|
+
}
|
|
50
99
|
}
|
|
51
100
|
updateScrollbars(scroll = false, event) {
|
|
52
101
|
this.updateVerticalScrollbar();
|
|
@@ -87,6 +136,9 @@ class XScrollableComponent {
|
|
|
87
136
|
this.renderer.setStyle(trackY, 'right', `${this.yOffsetRight()}px`);
|
|
88
137
|
}
|
|
89
138
|
let visibleRatioY = clientHeight / scrollHeight;
|
|
139
|
+
if (visibleRatioY > 0.99 && visibleRatioY < 1) {
|
|
140
|
+
visibleRatioY = 1;
|
|
141
|
+
}
|
|
90
142
|
if (visibleRatioY >= 1) {
|
|
91
143
|
this.renderer.setStyle(trackY, 'display', 'none');
|
|
92
144
|
}
|
|
@@ -120,7 +172,7 @@ class XScrollableComponent {
|
|
|
120
172
|
}
|
|
121
173
|
else if (this.xOffsetLeft() !== 0 && this.xOffsetRight() !== 0) {
|
|
122
174
|
this.renderer.setStyle(trackX, 'left', `${this.xOffsetLeft()}px`);
|
|
123
|
-
this.renderer.setStyle(trackX, '
|
|
175
|
+
this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetLeft() + this.xOffsetRight()}px)`);
|
|
124
176
|
clientWidth -= this.xOffsetLeft() + this.xOffsetRight();
|
|
125
177
|
scrollWidth -= this.xOffsetLeft() + this.xOffsetRight();
|
|
126
178
|
}
|
|
@@ -213,11 +265,11 @@ class XScrollableComponent {
|
|
|
213
265
|
}
|
|
214
266
|
}
|
|
215
267
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XScrollableComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
216
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.6", type: XScrollableComponent, isStandalone: true, selector: "x-scrollable", inputs: { yOffsetTop: { classPropertyName: "yOffsetTop", publicName: "yOffsetTop", isSignal: true, isRequired: false, transformFunction: null }, yOffsetBottom: { classPropertyName: "yOffsetBottom", publicName: "yOffsetBottom", isSignal: true, isRequired: false, transformFunction: null }, yOffsetLeft: { classPropertyName: "yOffsetLeft", publicName: "yOffsetLeft", isSignal: true, isRequired: false, transformFunction: null }, yOffsetRight: { classPropertyName: "yOffsetRight", publicName: "yOffsetRight", isSignal: true, isRequired: false, transformFunction: null }, xOffsetTop: { classPropertyName: "xOffsetTop", publicName: "xOffsetTop", isSignal: true, isRequired: false, transformFunction: null }, xOffsetBottom: { classPropertyName: "xOffsetBottom", publicName: "xOffsetBottom", isSignal: true, isRequired: false, transformFunction: null }, xOffsetLeft: { classPropertyName: "xOffsetLeft", publicName: "xOffsetLeft", isSignal: true, isRequired: false, transformFunction: null }, xOffsetRight: { classPropertyName: "xOffsetRight", publicName: "xOffsetRight", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { resizeChange: "resizeChange", scrollChange: "scrollChange" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["content"], descendants: true, isSignal: true }, { propertyName: "trackXRef", first: true, predicate: ["trackX"], descendants: true, isSignal: true }, { propertyName: "thumbXRef", first: true, predicate: ["thumbX"], descendants: true, isSignal: true }, { propertyName: "trackYRef", first: true, predicate: ["trackY"], descendants: true, isSignal: true }, { propertyName: "thumbYRef", first: true, predicate: ["thumbY"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div
|
|
268
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.6", type: XScrollableComponent, isStandalone: true, selector: "x-scrollable", inputs: { yOffsetTop: { classPropertyName: "yOffsetTop", publicName: "yOffsetTop", isSignal: true, isRequired: false, transformFunction: null }, yOffsetBottom: { classPropertyName: "yOffsetBottom", publicName: "yOffsetBottom", isSignal: true, isRequired: false, transformFunction: null }, yOffsetLeft: { classPropertyName: "yOffsetLeft", publicName: "yOffsetLeft", isSignal: true, isRequired: false, transformFunction: null }, yOffsetRight: { classPropertyName: "yOffsetRight", publicName: "yOffsetRight", isSignal: true, isRequired: false, transformFunction: null }, xOffsetTop: { classPropertyName: "xOffsetTop", publicName: "xOffsetTop", isSignal: true, isRequired: false, transformFunction: null }, xOffsetBottom: { classPropertyName: "xOffsetBottom", publicName: "xOffsetBottom", isSignal: true, isRequired: false, transformFunction: null }, xOffsetLeft: { classPropertyName: "xOffsetLeft", publicName: "xOffsetLeft", isSignal: true, isRequired: false, transformFunction: null }, xOffsetRight: { classPropertyName: "xOffsetRight", publicName: "xOffsetRight", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { resizeChange: "resizeChange", scrollChange: "scrollChange" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["content"], descendants: true, isSignal: true }, { propertyName: "trackXRef", first: true, predicate: ["trackX"], descendants: true, isSignal: true }, { propertyName: "thumbXRef", first: true, predicate: ["thumbX"], descendants: true, isSignal: true }, { propertyName: "trackYRef", first: true, predicate: ["trackY"], descendants: true, isSignal: true }, { propertyName: "thumbYRef", first: true, predicate: ["thumbY"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div #content class=\"x-scrollable-content\" [style.maxHeight]=\"maxHeight()\" [style.maxWidth]=\"maxWidth()\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div #trackY class=\"x-scrollable-track x-scrollable-track-y\">\r\n <div #thumbY class=\"x-scrollable-thumb x-scrollable-thumb-y\" (mousedown)=\"startDrag($event, 'y')\"></div>\r\n </div>\r\n\r\n <div #trackX class=\"x-scrollable-track x-scrollable-track-x\">\r\n <div #thumbX class=\"x-scrollable-thumb x-scrollable-thumb-x\" (mousedown)=\"startDrag($event, 'x')\"></div>\r\n </div>\r\n</div>\r\n", styles: [".x-scrollable{margin:0;padding:0}.x-scrollable{position:relative;width:100%;height:100%}.x-scrollable .x-scrollable-content{overflow:auto}.x-scrollable .x-scrollable-content::-webkit-scrollbar{width:0;height:0}.x-scrollable .x-scrollable-content{scrollbar-width:none;-ms-overflow-style:none}.x-scrollable .x-scrollable-track{position:absolute;background-color:transparent;opacity:0;transition:opacity .3s ease-in-out;z-index:1000}.x-scrollable .x-scrollable-thumb{position:absolute;background-color:#64646466;cursor:pointer;transition:background-color .2s}.x-scrollable .x-scrollable-thumb:hover{background-color:#646464b3}.x-scrollable .x-scrollable-track-y{top:0;right:0;bottom:12px;width:12px;height:100%}.x-scrollable .x-scrollable-thumb-y{right:0;width:12px;min-height:20px;will-change:transform}.x-scrollable .x-scrollable-track-x{left:0;right:0;bottom:0;height:12px;width:100%}.x-scrollable .x-scrollable-thumb-x{bottom:0;height:12px;min-width:20px;will-change:transform}.x-scrollable.active .x-scrollable-track{opacity:1}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
217
269
|
}
|
|
218
270
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XScrollableComponent, decorators: [{
|
|
219
271
|
type: Component,
|
|
220
|
-
args: [{ selector: 'x-scrollable', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div
|
|
272
|
+
args: [{ selector: 'x-scrollable', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div #content class=\"x-scrollable-content\" [style.maxHeight]=\"maxHeight()\" [style.maxWidth]=\"maxWidth()\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div #trackY class=\"x-scrollable-track x-scrollable-track-y\">\r\n <div #thumbY class=\"x-scrollable-thumb x-scrollable-thumb-y\" (mousedown)=\"startDrag($event, 'y')\"></div>\r\n </div>\r\n\r\n <div #trackX class=\"x-scrollable-track x-scrollable-track-x\">\r\n <div #thumbX class=\"x-scrollable-thumb x-scrollable-thumb-x\" (mousedown)=\"startDrag($event, 'x')\"></div>\r\n </div>\r\n</div>\r\n", styles: [".x-scrollable{margin:0;padding:0}.x-scrollable{position:relative;width:100%;height:100%}.x-scrollable .x-scrollable-content{overflow:auto}.x-scrollable .x-scrollable-content::-webkit-scrollbar{width:0;height:0}.x-scrollable .x-scrollable-content{scrollbar-width:none;-ms-overflow-style:none}.x-scrollable .x-scrollable-track{position:absolute;background-color:transparent;opacity:0;transition:opacity .3s ease-in-out;z-index:1000}.x-scrollable .x-scrollable-thumb{position:absolute;background-color:#64646466;cursor:pointer;transition:background-color .2s}.x-scrollable .x-scrollable-thumb:hover{background-color:#646464b3}.x-scrollable .x-scrollable-track-y{top:0;right:0;bottom:12px;width:12px;height:100%}.x-scrollable .x-scrollable-thumb-y{right:0;width:12px;min-height:20px;will-change:transform}.x-scrollable .x-scrollable-track-x{left:0;right:0;bottom:0;height:12px;width:100%}.x-scrollable .x-scrollable-thumb-x{bottom:0;height:12px;min-width:20px;will-change:transform}.x-scrollable.active .x-scrollable-track{opacity:1}\n"] }]
|
|
221
273
|
}], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { yOffsetTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetTop", required: false }] }], yOffsetBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetBottom", required: false }] }], yOffsetLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetLeft", required: false }] }], yOffsetRight: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetRight", required: false }] }], xOffsetTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetTop", required: false }] }], xOffsetBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetBottom", required: false }] }], xOffsetLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetLeft", required: false }] }], xOffsetRight: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetRight", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], resizeChange: [{ type: i0.Output, args: ["resizeChange"] }], scrollChange: [{ type: i0.Output, args: ["scrollChange"] }], contentRef: [{ type: i0.ViewChild, args: ['content', { isSignal: true }] }], trackXRef: [{ type: i0.ViewChild, args: ['trackX', { isSignal: true }] }], thumbXRef: [{ type: i0.ViewChild, args: ['thumbX', { isSignal: true }] }], trackYRef: [{ type: i0.ViewChild, args: ['trackY', { isSignal: true }] }], thumbYRef: [{ type: i0.ViewChild, args: ['thumbY', { isSignal: true }] }] } });
|
|
222
274
|
|
|
223
275
|
class XScrollableModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-scrollable.mjs","sources":["../../../../lib/ng-nest/ui/scrollable/scrollable.component.ts","../../../../lib/ng-nest/ui/scrollable/scrollable.component.html","../../../../lib/ng-nest/ui/scrollable/scrollable.module.ts","../../../../lib/ng-nest/ui/scrollable/ng-nest-ui-scrollable.ts"],"sourcesContent":["import {\r\n Component,\r\n ElementRef,\r\n AfterViewInit,\r\n OnDestroy,\r\n Renderer2,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n viewChild,\r\n signal,\r\n input,\r\n output\r\n} from '@angular/core';\r\n\r\ntype DragAxis = 'x' | 'y';\r\n\r\n@Component({\r\n selector: 'x-scrollable',\r\n templateUrl: './scrollable.component.html',\r\n styleUrls: ['./scrollable.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XScrollableComponent implements AfterViewInit, OnDestroy {\r\n yOffsetTop = input(0);\r\n yOffsetBottom = input(0);\r\n yOffsetLeft = input(0);\r\n yOffsetRight = input(0);\r\n\r\n xOffsetTop = input(0);\r\n xOffsetBottom = input(0);\r\n xOffsetLeft = input(0);\r\n xOffsetRight = input(0);\r\n\r\n maxHeight = input('100%');\r\n maxWidth = input('100%');\r\n\r\n resizeChange = output<ResizeObserverEntry>();\r\n scrollChange = output<Event>();\r\n\r\n private contentRef = viewChild.required<ElementRef<HTMLElement>>('content');\r\n\r\n private trackXRef = viewChild.required<ElementRef<HTMLElement>>('trackX');\r\n private thumbXRef = viewChild.required<ElementRef<HTMLElement>>('thumbX');\r\n private trackYRef = viewChild.required<ElementRef<HTMLElement>>('trackY');\r\n private thumbYRef = viewChild.required<ElementRef<HTMLElement>>('thumbY');\r\n\r\n isActive = signal(false);\r\n\r\n isAtTop = signal(false);\r\n isAtBottom = signal(false);\r\n isAtLeft = signal(false);\r\n isAtRight = signal(false);\r\n\r\n hasVerticalScrollbar = signal(false);\r\n hasHorizontalScrollbar = signal(false);\r\n\r\n private isDragging = false;\r\n private dragAxis: DragAxis | null = null;\r\n private dragStart = { x: 0, y: 0 };\r\n private initialScroll = { left: 0, top: 0 };\r\n private resizeObserver!: ResizeObserver;\r\n\r\n private unlistenMouseMove!: () => void;\r\n private unlistenMouseUp!: () => void;\r\n\r\n constructor(private renderer: Renderer2) {}\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => this.updateScrollbars(), 0);\r\n\r\n this.resizeObserver = new ResizeObserver((x) => {\r\n this.updateScrollbars();\r\n if (x && x.length > 0) {\r\n this.resizeChange.emit(x[0]);\r\n }\r\n });\r\n this.resizeObserver.observe(this.contentRef().nativeElement);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n\r\n updateScrollbars(scroll = false, event?: Event): void {\r\n this.updateVerticalScrollbar();\r\n this.updateHorizontalScrollbar();\r\n if (scroll && event) {\r\n this.scrollChange.emit(event);\r\n }\r\n }\r\n\r\n private updateVerticalScrollbar(): void {\r\n const thumbY = this.thumbYRef().nativeElement;\r\n const trackY = this.trackYRef().nativeElement;\r\n const content = this.contentRef().nativeElement;\r\n let { clientHeight, scrollHeight, scrollTop } = content;\r\n this.isAtTop.set(scrollTop === 0);\r\n this.isAtBottom.set(scrollTop + clientHeight >= scrollHeight);\r\n this.hasVerticalScrollbar.set(scrollHeight > clientHeight);\r\n\r\n if (this.yOffsetTop() !== 0 && this.yOffsetBottom() === 0) {\r\n this.renderer.setStyle(trackY, 'top', `${this.yOffsetTop()}px`);\r\n this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetTop()}px)`);\r\n clientHeight -= this.yOffsetTop();\r\n scrollHeight -= this.yOffsetTop();\r\n } else if (this.yOffsetTop() === 0 && this.yOffsetBottom() !== 0) {\r\n this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetBottom()}px)`);\r\n clientHeight -= this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetBottom();\r\n } else if (this.yOffsetTop() !== 0 && this.yOffsetBottom() !== 0) {\r\n this.renderer.setStyle(trackY, 'top', `${this.yOffsetTop()}px`);\r\n this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetTop() + this.yOffsetBottom()}px)`);\r\n clientHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n }\r\n if (this.yOffsetLeft() !== 0) {\r\n this.renderer.setStyle(trackY, 'left', `${this.yOffsetLeft()}px`);\r\n }\r\n if (this.yOffsetRight() !== 0) {\r\n this.renderer.setStyle(trackY, 'right', `${this.yOffsetRight()}px`);\r\n }\r\n\r\n let visibleRatioY = clientHeight / scrollHeight;\r\n\r\n if (visibleRatioY >= 1) {\r\n this.renderer.setStyle(trackY, 'display', 'none');\r\n } else {\r\n this.renderer.setStyle(trackY, 'display', 'block');\r\n const thumbHeight = Math.max(visibleRatioY * clientHeight, 20);\r\n this.renderer.setStyle(thumbY, 'height', `${thumbHeight}px`);\r\n const maxThumbTop = clientHeight - thumbHeight;\r\n const thumbTop = Math.min((scrollTop / (scrollHeight - clientHeight)) * maxThumbTop, maxThumbTop);\r\n this.renderer.setStyle(thumbY, 'transform', `translateY(${thumbTop}px)`);\r\n }\r\n }\r\n\r\n private updateHorizontalScrollbar(): void {\r\n const content = this.contentRef().nativeElement;\r\n const thumbX = this.thumbXRef().nativeElement;\r\n const trackX = this.trackXRef().nativeElement;\r\n let { clientWidth, scrollWidth, scrollLeft } = content;\r\n this.isAtLeft.set(scrollLeft === 0);\r\n this.isAtRight.set(scrollLeft + clientWidth >= scrollWidth);\r\n this.hasHorizontalScrollbar.set(scrollWidth > clientWidth);\r\n\r\n if (this.xOffsetLeft() !== 0 && this.xOffsetRight() === 0) {\r\n this.renderer.setStyle(trackX, 'left', `${this.xOffsetLeft()}px`);\r\n this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetLeft()}px)`);\r\n clientWidth -= this.xOffsetLeft();\r\n scrollWidth -= this.xOffsetLeft();\r\n } else if (this.xOffsetLeft() === 0 && this.xOffsetRight() !== 0) {\r\n this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetRight()}px)`);\r\n clientWidth -= this.xOffsetRight();\r\n scrollWidth -= this.xOffsetRight();\r\n } else if (this.xOffsetLeft() !== 0 && this.xOffsetRight() !== 0) {\r\n this.renderer.setStyle(trackX, 'left', `${this.xOffsetLeft()}px`);\r\n this.renderer.setStyle(trackX, 'height', `calc(100% - ${this.xOffsetLeft() + this.xOffsetRight()}px)`);\r\n clientWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n scrollWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n }\r\n if (this.xOffsetTop() !== 0) {\r\n this.renderer.setStyle(trackX, 'top', `${this.xOffsetTop()}px`);\r\n }\r\n if (this.xOffsetBottom() !== 0) {\r\n this.renderer.setStyle(trackX, 'bottom', `${this.xOffsetBottom()}px`);\r\n }\r\n\r\n const visibleRatioX = clientWidth / scrollWidth;\r\n\r\n if (visibleRatioX >= 1) {\r\n this.renderer.setStyle(trackX, 'display', 'none');\r\n } else {\r\n this.renderer.setStyle(trackX, 'display', 'block');\r\n const thumbWidth = Math.max(visibleRatioX * clientWidth, 20);\r\n this.renderer.setStyle(thumbX, 'width', `${thumbWidth}px`);\r\n const maxThumbLeft = clientWidth - thumbWidth;\r\n const thumbLeft = Math.min((scrollLeft / (scrollWidth - clientWidth)) * maxThumbLeft, maxThumbLeft);\r\n this.renderer.setStyle(thumbX, 'transform', `translateX(${thumbLeft}px)`);\r\n }\r\n }\r\n\r\n startDrag(event: MouseEvent, axis: DragAxis): void {\r\n this.isDragging = true;\r\n this.dragAxis = axis;\r\n event.preventDefault();\r\n\r\n this.dragStart = { x: event.pageX, y: event.pageY };\r\n this.initialScroll = {\r\n left: this.contentRef().nativeElement.scrollLeft,\r\n top: this.contentRef().nativeElement.scrollTop\r\n };\r\n\r\n this.unlistenMouseMove = this.renderer.listen('document', 'mousemove', (e) => this.onDrag(e));\r\n this.unlistenMouseUp = this.renderer.listen('document', 'mouseup', () => this.stopDrag());\r\n }\r\n\r\n private onDrag(event: MouseEvent): void {\r\n if (!this.isDragging) return;\r\n\r\n const content = this.contentRef().nativeElement;\r\n let { scrollHeight, clientHeight, scrollWidth, clientWidth } = content;\r\n if (this.dragAxis === 'y') {\r\n if (this.yOffsetTop() !== 0 && this.yOffsetBottom() === 0) {\r\n clientHeight -= this.yOffsetTop();\r\n scrollHeight -= this.yOffsetTop();\r\n } else if (this.yOffsetTop() === 0 && this.yOffsetBottom() !== 0) {\r\n clientHeight -= this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetBottom();\r\n } else if (this.yOffsetTop() !== 0 && this.yOffsetBottom() !== 0) {\r\n clientHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n }\r\n\r\n const mouseDeltaY = event.pageY - this.dragStart.y;\r\n const scrollRatio = scrollHeight / clientHeight;\r\n content.scrollTop = this.initialScroll.top + mouseDeltaY * scrollRatio;\r\n } else if (this.dragAxis === 'x') {\r\n if (this.xOffsetLeft() !== 0 && this.xOffsetRight() === 0) {\r\n clientWidth -= this.xOffsetLeft();\r\n scrollWidth -= this.xOffsetLeft();\r\n } else if (this.xOffsetLeft() === 0 && this.xOffsetRight() !== 0) {\r\n clientWidth -= this.xOffsetRight();\r\n scrollWidth -= this.xOffsetRight();\r\n } else if (this.xOffsetLeft() !== 0 && this.xOffsetRight() !== 0) {\r\n clientWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n scrollWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n }\r\n\r\n const mouseDeltaX = event.pageX - this.dragStart.x;\r\n const scrollRatio = scrollWidth / clientWidth;\r\n content.scrollLeft = this.initialScroll.left + mouseDeltaX * scrollRatio;\r\n }\r\n }\r\n\r\n private stopDrag(): void {\r\n if (this.isDragging) {\r\n this.isDragging = false;\r\n this.dragAxis = null;\r\n this.unlistenMouseMove();\r\n this.unlistenMouseUp();\r\n }\r\n }\r\n\r\n onHostEnter(): void {\r\n this.isActive.set(true);\r\n this.updateScrollbars();\r\n }\r\n\r\n onHostLeave(): void {\r\n if (!this.isDragging) {\r\n this.isActive.set(false);\r\n }\r\n }\r\n}\r\n","<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div\r\n #content\r\n class=\"x-scrollable-content\"\r\n [style.maxHeight]=\"maxHeight()\"\r\n [style.maxWidth]=\"maxWidth()\"\r\n (scroll)=\"updateScrollbars(true, $event)\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div #trackY class=\"x-scrollable-track x-scrollable-track-y\">\r\n <div #thumbY class=\"x-scrollable-thumb x-scrollable-thumb-y\" (mousedown)=\"startDrag($event, 'y')\"></div>\r\n </div>\r\n\r\n <div #trackX class=\"x-scrollable-track x-scrollable-track-x\">\r\n <div #thumbX class=\"x-scrollable-thumb x-scrollable-thumb-x\" (mousedown)=\"startDrag($event, 'x')\"></div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XScrollableComponent } from './scrollable.component';\r\n\r\n@NgModule({\r\n exports: [XScrollableComponent],\r\n imports: [XScrollableComponent]\r\n})\r\nexport class XScrollableModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-scrollable.mjs","sources":["../../../../lib/ng-nest/ui/scrollable/scrollable.component.ts","../../../../lib/ng-nest/ui/scrollable/scrollable.component.html","../../../../lib/ng-nest/ui/scrollable/scrollable.module.ts","../../../../lib/ng-nest/ui/scrollable/ng-nest-ui-scrollable.ts"],"sourcesContent":["import {\r\n Component,\r\n ElementRef,\r\n AfterViewInit,\r\n OnDestroy,\r\n Renderer2,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n viewChild,\r\n signal,\r\n input,\r\n output\r\n} from '@angular/core';\r\n\r\ntype DragAxis = 'x' | 'y';\r\n\r\n@Component({\r\n selector: 'x-scrollable',\r\n templateUrl: './scrollable.component.html',\r\n styleUrls: ['./scrollable.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XScrollableComponent implements AfterViewInit, OnDestroy {\r\n yOffsetTop = input(0);\r\n yOffsetBottom = input(0);\r\n yOffsetLeft = input(0);\r\n yOffsetRight = input(0);\r\n\r\n xOffsetTop = input(0);\r\n xOffsetBottom = input(0);\r\n xOffsetLeft = input(0);\r\n xOffsetRight = input(0);\r\n\r\n maxHeight = input('100%');\r\n maxWidth = input('100%');\r\n\r\n resizeChange = output<ResizeObserverEntry>();\r\n scrollChange = output<Event>();\r\n\r\n private contentRef = viewChild.required<ElementRef<HTMLElement>>('content');\r\n\r\n private trackXRef = viewChild.required<ElementRef<HTMLElement>>('trackX');\r\n private thumbXRef = viewChild.required<ElementRef<HTMLElement>>('thumbX');\r\n private trackYRef = viewChild.required<ElementRef<HTMLElement>>('trackY');\r\n private thumbYRef = viewChild.required<ElementRef<HTMLElement>>('thumbY');\r\n\r\n isActive = signal(false);\r\n\r\n isAtTop = signal(false);\r\n isAtBottom = signal(false);\r\n isAtLeft = signal(false);\r\n isAtRight = signal(false);\r\n\r\n hasVerticalScrollbar = signal(false);\r\n hasHorizontalScrollbar = signal(false);\r\n\r\n private isDragging = false;\r\n private dragAxis: DragAxis | null = null;\r\n private dragStart = { x: 0, y: 0 };\r\n private initialScroll = { left: 0, top: 0 };\r\n private resizeObserver!: ResizeObserver;\r\n private mutationObserver!: MutationObserver;\r\n private scrollListener!: () => void;\r\n\r\n private unlistenMouseMove!: () => void;\r\n private unlistenMouseUp!: () => void;\r\n\r\n private resizeTimeoutId: number | null = null;\r\n private mutationTimeoutId: number | null = null;\r\n\r\n constructor(private renderer: Renderer2) {}\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => this.updateScrollbars(), 0);\r\n\r\n this.resizeObserver = new ResizeObserver((entries) => {\r\n for (const entry of entries) {\r\n if (entry.target === this.contentRef().nativeElement) {\r\n if (this.resizeTimeoutId !== null) {\r\n window.clearTimeout(this.resizeTimeoutId);\r\n }\r\n\r\n this.resizeTimeoutId = window.setTimeout(() => {\r\n this.updateScrollbars();\r\n if (entry && entry.borderBoxSize && entry.borderBoxSize.length > 0) {\r\n this.resizeChange.emit(entry);\r\n }\r\n }, 16);\r\n }\r\n }\r\n });\r\n\r\n this.resizeObserver.observe(this.contentRef().nativeElement, { box: 'border-box' });\r\n\r\n this.mutationObserver = new MutationObserver((mutations) => {\r\n let shouldUpdate = false;\r\n\r\n for (const mutation of mutations) {\r\n if (mutation.type === 'childList' || mutation.type === 'attributes') {\r\n shouldUpdate = true;\r\n break;\r\n }\r\n }\r\n\r\n if (shouldUpdate) {\r\n if (this.mutationTimeoutId !== null) {\r\n window.clearTimeout(this.mutationTimeoutId);\r\n }\r\n\r\n this.mutationTimeoutId = window.setTimeout(() => {\r\n this.updateScrollbars();\r\n }, 16);\r\n }\r\n });\r\n\r\n this.mutationObserver.observe(this.contentRef().nativeElement, {\r\n childList: true,\r\n subtree: true,\r\n attributes: true,\r\n attributeFilter: ['style', 'class']\r\n });\r\n\r\n this.scrollListener = this.renderer.listen(this.contentRef().nativeElement, 'scroll', (event: Event) => {\r\n this.updateScrollbars(true, event);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n\r\n if (this.mutationObserver) {\r\n this.mutationObserver.disconnect();\r\n }\r\n\r\n if (this.scrollListener) {\r\n this.scrollListener();\r\n }\r\n\r\n if (this.resizeTimeoutId !== null) {\r\n window.clearTimeout(this.resizeTimeoutId);\r\n }\r\n\r\n if (this.mutationTimeoutId !== null) {\r\n window.clearTimeout(this.mutationTimeoutId);\r\n }\r\n }\r\n\r\n updateScrollbars(scroll = false, event?: Event): void {\r\n this.updateVerticalScrollbar();\r\n this.updateHorizontalScrollbar();\r\n if (scroll && event) {\r\n this.scrollChange.emit(event);\r\n }\r\n }\r\n\r\n private updateVerticalScrollbar(): void {\r\n const thumbY = this.thumbYRef().nativeElement;\r\n const trackY = this.trackYRef().nativeElement;\r\n const content = this.contentRef().nativeElement;\r\n let { clientHeight, scrollHeight, scrollTop } = content;\r\n this.isAtTop.set(scrollTop === 0);\r\n this.isAtBottom.set(scrollTop + clientHeight >= scrollHeight);\r\n this.hasVerticalScrollbar.set(scrollHeight > clientHeight);\r\n\r\n if (this.yOffsetTop() !== 0 && this.yOffsetBottom() === 0) {\r\n this.renderer.setStyle(trackY, 'top', `${this.yOffsetTop()}px`);\r\n this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetTop()}px)`);\r\n clientHeight -= this.yOffsetTop();\r\n scrollHeight -= this.yOffsetTop();\r\n } else if (this.yOffsetTop() === 0 && this.yOffsetBottom() !== 0) {\r\n this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetBottom()}px)`);\r\n clientHeight -= this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetBottom();\r\n } else if (this.yOffsetTop() !== 0 && this.yOffsetBottom() !== 0) {\r\n this.renderer.setStyle(trackY, 'top', `${this.yOffsetTop()}px`);\r\n this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetTop() + this.yOffsetBottom()}px)`);\r\n clientHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n }\r\n if (this.yOffsetLeft() !== 0) {\r\n this.renderer.setStyle(trackY, 'left', `${this.yOffsetLeft()}px`);\r\n }\r\n if (this.yOffsetRight() !== 0) {\r\n this.renderer.setStyle(trackY, 'right', `${this.yOffsetRight()}px`);\r\n }\r\n\r\n let visibleRatioY = clientHeight / scrollHeight;\r\n\r\n if (visibleRatioY > 0.99 && visibleRatioY < 1) {\r\n visibleRatioY = 1;\r\n }\r\n\r\n if (visibleRatioY >= 1) {\r\n this.renderer.setStyle(trackY, 'display', 'none');\r\n } else {\r\n this.renderer.setStyle(trackY, 'display', 'block');\r\n const thumbHeight = Math.max(visibleRatioY * clientHeight, 20);\r\n this.renderer.setStyle(thumbY, 'height', `${thumbHeight}px`);\r\n const maxThumbTop = clientHeight - thumbHeight;\r\n const thumbTop = Math.min((scrollTop / (scrollHeight - clientHeight)) * maxThumbTop, maxThumbTop);\r\n this.renderer.setStyle(thumbY, 'transform', `translateY(${thumbTop}px)`);\r\n }\r\n }\r\n\r\n private updateHorizontalScrollbar(): void {\r\n const content = this.contentRef().nativeElement;\r\n const thumbX = this.thumbXRef().nativeElement;\r\n const trackX = this.trackXRef().nativeElement;\r\n let { clientWidth, scrollWidth, scrollLeft } = content;\r\n this.isAtLeft.set(scrollLeft === 0);\r\n this.isAtRight.set(scrollLeft + clientWidth >= scrollWidth);\r\n this.hasHorizontalScrollbar.set(scrollWidth > clientWidth);\r\n\r\n if (this.xOffsetLeft() !== 0 && this.xOffsetRight() === 0) {\r\n this.renderer.setStyle(trackX, 'left', `${this.xOffsetLeft()}px`);\r\n this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetLeft()}px)`);\r\n clientWidth -= this.xOffsetLeft();\r\n scrollWidth -= this.xOffsetLeft();\r\n } else if (this.xOffsetLeft() === 0 && this.xOffsetRight() !== 0) {\r\n this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetRight()}px)`);\r\n clientWidth -= this.xOffsetRight();\r\n scrollWidth -= this.xOffsetRight();\r\n } else if (this.xOffsetLeft() !== 0 && this.xOffsetRight() !== 0) {\r\n this.renderer.setStyle(trackX, 'left', `${this.xOffsetLeft()}px`);\r\n this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetLeft() + this.xOffsetRight()}px)`);\r\n clientWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n scrollWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n }\r\n if (this.xOffsetTop() !== 0) {\r\n this.renderer.setStyle(trackX, 'top', `${this.xOffsetTop()}px`);\r\n }\r\n if (this.xOffsetBottom() !== 0) {\r\n this.renderer.setStyle(trackX, 'bottom', `${this.xOffsetBottom()}px`);\r\n }\r\n\r\n const visibleRatioX = clientWidth / scrollWidth;\r\n\r\n if (visibleRatioX >= 1) {\r\n this.renderer.setStyle(trackX, 'display', 'none');\r\n } else {\r\n this.renderer.setStyle(trackX, 'display', 'block');\r\n const thumbWidth = Math.max(visibleRatioX * clientWidth, 20);\r\n this.renderer.setStyle(thumbX, 'width', `${thumbWidth}px`);\r\n const maxThumbLeft = clientWidth - thumbWidth;\r\n const thumbLeft = Math.min((scrollLeft / (scrollWidth - clientWidth)) * maxThumbLeft, maxThumbLeft);\r\n this.renderer.setStyle(thumbX, 'transform', `translateX(${thumbLeft}px)`);\r\n }\r\n }\r\n\r\n startDrag(event: MouseEvent, axis: DragAxis): void {\r\n this.isDragging = true;\r\n this.dragAxis = axis;\r\n event.preventDefault();\r\n\r\n this.dragStart = { x: event.pageX, y: event.pageY };\r\n this.initialScroll = {\r\n left: this.contentRef().nativeElement.scrollLeft,\r\n top: this.contentRef().nativeElement.scrollTop\r\n };\r\n\r\n this.unlistenMouseMove = this.renderer.listen('document', 'mousemove', (e) => this.onDrag(e));\r\n this.unlistenMouseUp = this.renderer.listen('document', 'mouseup', () => this.stopDrag());\r\n }\r\n\r\n private onDrag(event: MouseEvent): void {\r\n if (!this.isDragging) return;\r\n\r\n const content = this.contentRef().nativeElement;\r\n let { scrollHeight, clientHeight, scrollWidth, clientWidth } = content;\r\n if (this.dragAxis === 'y') {\r\n if (this.yOffsetTop() !== 0 && this.yOffsetBottom() === 0) {\r\n clientHeight -= this.yOffsetTop();\r\n scrollHeight -= this.yOffsetTop();\r\n } else if (this.yOffsetTop() === 0 && this.yOffsetBottom() !== 0) {\r\n clientHeight -= this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetBottom();\r\n } else if (this.yOffsetTop() !== 0 && this.yOffsetBottom() !== 0) {\r\n clientHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n }\r\n\r\n const mouseDeltaY = event.pageY - this.dragStart.y;\r\n const scrollRatio = scrollHeight / clientHeight;\r\n content.scrollTop = this.initialScroll.top + mouseDeltaY * scrollRatio;\r\n } else if (this.dragAxis === 'x') {\r\n if (this.xOffsetLeft() !== 0 && this.xOffsetRight() === 0) {\r\n clientWidth -= this.xOffsetLeft();\r\n scrollWidth -= this.xOffsetLeft();\r\n } else if (this.xOffsetLeft() === 0 && this.xOffsetRight() !== 0) {\r\n clientWidth -= this.xOffsetRight();\r\n scrollWidth -= this.xOffsetRight();\r\n } else if (this.xOffsetLeft() !== 0 && this.xOffsetRight() !== 0) {\r\n clientWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n scrollWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n }\r\n\r\n const mouseDeltaX = event.pageX - this.dragStart.x;\r\n const scrollRatio = scrollWidth / clientWidth;\r\n content.scrollLeft = this.initialScroll.left + mouseDeltaX * scrollRatio;\r\n }\r\n }\r\n\r\n private stopDrag(): void {\r\n if (this.isDragging) {\r\n this.isDragging = false;\r\n this.dragAxis = null;\r\n this.unlistenMouseMove();\r\n this.unlistenMouseUp();\r\n }\r\n }\r\n\r\n onHostEnter(): void {\r\n this.isActive.set(true);\r\n this.updateScrollbars();\r\n }\r\n\r\n onHostLeave(): void {\r\n if (!this.isDragging) {\r\n this.isActive.set(false);\r\n }\r\n }\r\n}\r\n","<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div #content class=\"x-scrollable-content\" [style.maxHeight]=\"maxHeight()\" [style.maxWidth]=\"maxWidth()\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div #trackY class=\"x-scrollable-track x-scrollable-track-y\">\r\n <div #thumbY class=\"x-scrollable-thumb x-scrollable-thumb-y\" (mousedown)=\"startDrag($event, 'y')\"></div>\r\n </div>\r\n\r\n <div #trackX class=\"x-scrollable-track x-scrollable-track-x\">\r\n <div #thumbX class=\"x-scrollable-thumb x-scrollable-thumb-x\" (mousedown)=\"startDrag($event, 'x')\"></div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XScrollableComponent } from './scrollable.component';\r\n\r\n@NgModule({\r\n exports: [XScrollableComponent],\r\n imports: [XScrollableComponent]\r\n})\r\nexport class XScrollableModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAuBa,oBAAoB,CAAA;AAgD/B,IAAA,WAAA,CAAoB,QAAmB,EAAA;QAAnB,IAAA,CAAA,QAAQ,GAAR,QAAQ;AA/C5B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,CAAC,sDAAC;AACrB,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,CAAC,yDAAC;AACxB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,CAAC,uDAAC;AACtB,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,CAAC,wDAAC;AAEvB,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,CAAC,sDAAC;AACrB,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,CAAC,yDAAC;AACxB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,CAAC,uDAAC;AACtB,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,CAAC,wDAAC;AAEvB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,MAAM,qDAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,MAAM,oDAAC;QAExB,IAAA,CAAA,YAAY,GAAG,MAAM,EAAuB;QAC5C,IAAA,CAAA,YAAY,GAAG,MAAM,EAAS;AAEtB,QAAA,IAAA,CAAA,UAAU,GAAG,SAAS,CAAC,QAAQ,CAA0B,SAAS,CAAC;AAEnE,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA0B,QAAQ,CAAC;AACjE,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA0B,QAAQ,CAAC;AACjE,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA0B,QAAQ,CAAC;AACjE,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA0B,QAAQ,CAAC;AAEzE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;AAExB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK,mDAAC;AACvB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAC1B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;AACxB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAEzB,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,KAAK,gEAAC;AACpC,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,KAAK,kEAAC;QAE9B,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,QAAQ,GAAoB,IAAI;QAChC,IAAA,CAAA,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QAC1B,IAAA,CAAA,aAAa,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAQnC,IAAA,CAAA,eAAe,GAAkB,IAAI;QACrC,IAAA,CAAA,iBAAiB,GAAkB,IAAI;IAEL;IAE1C,eAAe,GAAA;QACb,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAE5C,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;AACnD,YAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;gBAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE;AACpD,oBAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;AACjC,wBAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;oBAC3C;oBAEA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;wBAC5C,IAAI,CAAC,gBAAgB,EAAE;AACvB,wBAAA,IAAI,KAAK,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAClE,4BAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;wBAC/B;oBACF,CAAC,EAAE,EAAE,CAAC;gBACR;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;QAEnF,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,KAAI;YACzD,IAAI,YAAY,GAAG,KAAK;AAExB,YAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAChC,gBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;oBACnE,YAAY,GAAG,IAAI;oBACnB;gBACF;YACF;YAEA,IAAI,YAAY,EAAE;AAChB,gBAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;AACnC,oBAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC7C;gBAEA,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;oBAC9C,IAAI,CAAC,gBAAgB,EAAE;gBACzB,CAAC,EAAE,EAAE,CAAC;YACR;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE;AAC7D,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO;AACnC,SAAA,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC,KAAY,KAAI;AACrG,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;AACpC,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;QAClC;AAEA,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;QACpC;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,EAAE;QACvB;AAEA,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;AACjC,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;QAC3C;AAEA,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;AACnC,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC7C;IACF;AAEA,IAAA,gBAAgB,CAAC,MAAM,GAAG,KAAK,EAAE,KAAa,EAAA;QAC5C,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,yBAAyB,EAAE;AAChC,QAAA,IAAI,MAAM,IAAI,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B;IACF;IAEQ,uBAAuB,GAAA;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa;QAC/C,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,OAAO;QACvD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,GAAG,YAAY,IAAI,YAAY,CAAC;QAC7D,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC;AAE1D,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,CAAA,EAAA,CAAI,CAAC;AAC/D,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAA,YAAA,EAAe,IAAI,CAAC,UAAU,EAAE,CAAA,GAAA,CAAK,CAAC;AAC/E,YAAA,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,YAAA,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;QACnC;AAAO,aAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;AAChE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAA,YAAA,EAAe,IAAI,CAAC,aAAa,EAAE,CAAA,GAAA,CAAK,CAAC;AAClF,YAAA,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;AACpC,YAAA,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;QACtC;AAAO,aAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;AAChE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,CAAA,EAAA,CAAI,CAAC;YAC/D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAA,YAAA,EAAe,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA,GAAA,CAAK,CAAC;YACtG,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;YACxD,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;QAC1D;AACA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,WAAW,EAAE,CAAA,EAAA,CAAI,CAAC;QACnE;AACA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA,EAAG,IAAI,CAAC,YAAY,EAAE,CAAA,EAAA,CAAI,CAAC;QACrE;AAEA,QAAA,IAAI,aAAa,GAAG,YAAY,GAAG,YAAY;QAE/C,IAAI,aAAa,GAAG,IAAI,IAAI,aAAa,GAAG,CAAC,EAAE;YAC7C,aAAa,GAAG,CAAC;QACnB;AAEA,QAAA,IAAI,aAAa,IAAI,CAAC,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;QACnD;aAAO;YACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;AAClD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,YAAY,EAAE,EAAE,CAAC;AAC9D,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI,CAAC;AAC5D,YAAA,MAAM,WAAW,GAAG,YAAY,GAAG,WAAW;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,YAAY,GAAG,YAAY,CAAC,IAAI,WAAW,EAAE,WAAW,CAAC;AACjG,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA,WAAA,EAAc,QAAQ,CAAA,GAAA,CAAK,CAAC;QAC1E;IACF;IAEQ,yBAAyB,GAAA;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa;QAC7C,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO;QACtD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,IAAI,WAAW,CAAC;QAC3D,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;AAE1D,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,WAAW,EAAE,CAAA,EAAA,CAAI,CAAC;AACjE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA,YAAA,EAAe,IAAI,CAAC,WAAW,EAAE,CAAA,GAAA,CAAK,CAAC;AAC/E,YAAA,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;AACjC,YAAA,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;QACnC;AAAO,aAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;AAChE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA,YAAA,EAAe,IAAI,CAAC,YAAY,EAAE,CAAA,GAAA,CAAK,CAAC;AAChF,YAAA,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE;AAClC,YAAA,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE;QACpC;AAAO,aAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;AAChE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,WAAW,EAAE,CAAA,EAAA,CAAI,CAAC;YACjE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA,YAAA,EAAe,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA,GAAA,CAAK,CAAC;YACrG,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;YACvD,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;QACzD;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,CAAA,EAAA,CAAI,CAAC;QACjE;AACA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAA,EAAG,IAAI,CAAC,aAAa,EAAE,CAAA,EAAA,CAAI,CAAC;QACvE;AAEA,QAAA,MAAM,aAAa,GAAG,WAAW,GAAG,WAAW;AAE/C,QAAA,IAAI,aAAa,IAAI,CAAC,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;QACnD;aAAO;YACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;AAClD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,WAAW,EAAE,EAAE,CAAC;AAC5D,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA,EAAG,UAAU,CAAA,EAAA,CAAI,CAAC;AAC1D,YAAA,MAAM,YAAY,GAAG,WAAW,GAAG,UAAU;YAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,WAAW,GAAG,WAAW,CAAC,IAAI,YAAY,EAAE,YAAY,CAAC;AACnG,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA,WAAA,EAAc,SAAS,CAAA,GAAA,CAAK,CAAC;QAC3E;IACF;IAEA,SAAS,CAAC,KAAiB,EAAE,IAAc,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE;QACnD,IAAI,CAAC,aAAa,GAAG;YACnB,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,UAAU;YAChD,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC;SACtC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3F;AAEQ,IAAA,MAAM,CAAC,KAAiB,EAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;QAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa;QAC/C,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,OAAO;AACtE,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;AACzB,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;AACzD,gBAAA,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,gBAAA,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;YACnC;AAAO,iBAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;AAChE,gBAAA,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;AACpC,gBAAA,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;YACtC;AAAO,iBAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;gBAChE,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;gBACxD,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;YAC1D;YAEA,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AAClD,YAAA,MAAM,WAAW,GAAG,YAAY,GAAG,YAAY;AAC/C,YAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,WAAW,GAAG,WAAW;QACxE;AAAO,aAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;AAChC,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;AACzD,gBAAA,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;AACjC,gBAAA,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;YACnC;AAAO,iBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;AAChE,gBAAA,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE;AAClC,gBAAA,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE;YACpC;AAAO,iBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;gBAChE,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;gBACvD,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;YACzD;YAEA,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AAClD,YAAA,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW;AAC7C,YAAA,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,WAAW,GAAG,WAAW;QAC1E;IACF;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACpB,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,eAAe,EAAE;QACxB;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B;IACF;iIA5SW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,6gECvBjC,4rBAaA,EAAA,MAAA,EAAA,CAAA,ygCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDUa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,iBAGT,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4rBAAA,EAAA,MAAA,EAAA,CAAA,ygCAAA,CAAA,EAAA;AAmBkB,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,SAAS,mEAEV,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACR,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACR,QAAQ,mEACR,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEtC7D,iBAAiB,CAAA;iIAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAjB,iBAAiB,EAAA,OAAA,EAAA,CAFlB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CADpB,oBAAoB,CAAA,EAAA,CAAA,CAAA;kIAGnB,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,oBAAoB,CAAC;oBAC/B,OAAO,EAAE,CAAC,oBAAoB;AAC/B,iBAAA;;;ACND;;AAEG;;;;"}
|