@ng-nest/ui 18.0.4 → 18.0.5
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/auto-complete/auto-complete.component.d.ts +0 -2
- package/cascade/cascade.component.d.ts +0 -2
- package/checkbox/checkbox.component.d.ts +1 -3
- package/color-picker/color-picker.component.d.ts +0 -2
- package/esm2022/auto-complete/auto-complete.component.mjs +1 -10
- package/esm2022/cascade/cascade.component.mjs +1 -8
- package/esm2022/checkbox/checkbox.component.mjs +1 -7
- package/esm2022/color-picker/color-picker.component.mjs +1 -7
- package/esm2022/dialog/dialog.component.mjs +1 -3
- package/esm2022/find/find.component.mjs +1 -7
- package/esm2022/form/control.component.mjs +7 -5
- package/esm2022/input-number/input-number.component.mjs +1 -5
- package/esm2022/radio/radio.component.mjs +1 -7
- package/esm2022/resizable/resizable.directive.mjs +1 -2
- package/esm2022/select/select-portal.component.mjs +3 -3
- package/esm2022/select/select.component.mjs +48 -28
- package/esm2022/select/select.property.mjs +7 -2
- package/esm2022/slider-select/slider-select.component.mjs +6 -2
- package/esm2022/switch/switch.component.mjs +1 -5
- package/esm2022/table/table-body.component.mjs +1 -2
- package/esm2022/textarea/textarea.component.mjs +1 -5
- package/esm2022/tree-select/tree-select.component.mjs +1 -7
- package/fesm2022/ng-nest-ui-auto-complete.mjs +0 -9
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +0 -7
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-checkbox.mjs +0 -6
- package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +0 -6
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +0 -2
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-find.mjs +0 -6
- package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-form.mjs +6 -4
- package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input-number.mjs +0 -4
- package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-radio.mjs +0 -6
- package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-resizable.mjs +0 -1
- package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +55 -30
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider-select.mjs +5 -1
- package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-switch.mjs +0 -4
- package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table.mjs +0 -1
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +0 -4
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +0 -6
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/find/find.component.d.ts +0 -2
- package/input-number/input-number.component.d.ts +0 -2
- package/package.json +91 -91
- package/radio/radio.component.d.ts +1 -3
- package/select/select.component.d.ts +1 -1
- package/select/select.property.d.ts +11 -6
- package/slider-select/slider-select.component.d.ts +1 -1
- package/switch/switch.component.d.ts +0 -2
- package/textarea/textarea.component.d.ts +0 -2
- package/tree-select/tree-select.component.d.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-find.mjs","sources":["../../../../lib/ng-nest/ui/find/find.property.ts","../../../../lib/ng-nest/ui/find/find.component.ts","../../../../lib/ng-nest/ui/find/find.component.html","../../../../lib/ng-nest/ui/find/find.module.ts","../../../../lib/ng-nest/ui/find/ng-nest-ui-find.ts"],"sourcesContent":["import { XToBoolean, XToNumber, XToCssPixelValue, XToDataConvert } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, model, output } from '@angular/core';\r\nimport { XTableColumn, XTableRow } from '@ng-nest/ui/table';\r\nimport { XTreeNode } from '@ng-nest/ui/tree';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type {\r\n XBoolean,\r\n XData,\r\n XNumber,\r\n XSort,\r\n XQuery,\r\n XFilter,\r\n XSize,\r\n XAlign,\r\n XJustify,\r\n XDirection,\r\n XTemplate\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Find\r\n * @selector x-find\r\n * @decorator component\r\n */\r\nexport const XFindPrefix = 'x-find';\r\nconst X_FIND_CONFIG_NAME = 'find';\r\n\r\n/**\r\n * Find search option\r\n */\r\nexport interface XFindSearchOption extends XFilter {\r\n label?: string;\r\n button?: string;\r\n}\r\n\r\n/**\r\n * Find Property\r\n */\r\n@Component({ selector: `${XFindPrefix}-property`, template: '' })\r\nexport class XFindProperty extends XFormControlFunction(X_FIND_CONFIG_NAME) {\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 Multiple choice\r\n */\r\n readonly multiple = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 选中 label 名称字段\r\n * @en_US Check the label name field\r\n */\r\n readonly columnLabel = input<string>(this.config?.columnLabel ?? 'label');\r\n /**\r\n * @zh_CN 弹框标题\r\n * @en_US Bullet title\r\n */\r\n readonly dialogTitle = input<string>(this.config?.dialogTitle ?? '查找选择');\r\n /**\r\n * @zh_CN 弹框表格选择列头名称\r\n * @en_US Ball Form Select List Name\r\n */\r\n readonly dialogCheckboxLabel = input<string>(this.config?.dialogCheckboxLabel ?? '选择');\r\n /**\r\n * @zh_CN 弹框表格选择列宽\r\n * @en_US Ball Form Select List width\r\n */\r\n readonly dialogCheckboxWidth = input<string, XNumber>(this.config?.dialogCheckboxWidth ?? '60px', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 弹框选择数据为空的提示信息\r\n * @en_US Ball box selection data empty prompt information\r\n */\r\n readonly dialogEmptyContent = input<string>(this.config?.dialogEmptyContent ?? '请选择数据');\r\n /**\r\n * @zh_CN 弹框宽度\r\n * @en_US Bullet frame width\r\n */\r\n readonly dialogWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 弹框高度\r\n * @en_US Height of bullet frame\r\n */\r\n readonly dialogHeight = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 弹框显示,隐藏\r\n * @en_US Bullet box display, hide\r\n */\r\n readonly dialogVisible = model<boolean>(false);\r\n /**\r\n * @zh_CN 按钮居中\r\n * @en_US Button centered\r\n */\r\n readonly dialogButtonsCenter = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 表格行数据\r\n * @en_US Table row data\r\n */\r\n readonly tableData = input<XData<XTableRow>, XData<XTableRow>>([], { transform: XToDataConvert });\r\n /**\r\n * @zh_CN 表格页码\r\n * @en_US Table page number\r\n */\r\n readonly tableIndex = model<number>(this.config?.tableIndex ?? 1);\r\n /**\r\n * @zh_CN 表每页数据条数\r\n * @en_US Number of data items per page\r\n */\r\n readonly tableSize = model<number>(this.config?.tableSize ?? 10);\r\n /**\r\n * @zh_CN 表格查询条件\r\n * @en_US Number of data items per page\r\n */\r\n readonly tableQuery = model<XQuery>({});\r\n /**\r\n * @zh_CN 表格数据总条数\r\n * @en_US Total number of table data\r\n */\r\n readonly tableTotal = model<number>(0);\r\n /**\r\n * @zh_CN 排序点击的事件\r\n * @en_US Sort click events\r\n */\r\n readonly tableSortChange = output<XSort[]>();\r\n /**\r\n * @zh_CN 表格列参数\r\n * @en_US Table column parameters\r\n */\r\n readonly tableColumns = input<XTableColumn[]>([]);\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n readonly tableActivatedRow = model<any>();\r\n /**\r\n * @zh_CN 表格行点击事件\r\n * @en_US Table row click event\r\n */\r\n readonly tableRowEmit = output<any>();\r\n /**\r\n * @zh_CN 表格行点击事件\r\n * @en_US Table row click event\r\n */\r\n readonly tableCheckedRow = model<{ [property: string]: any[] }>({});\r\n /**\r\n * @zh_CN 是否启用加载 loading\r\n * @en_US Whether to enable loading loading\r\n */\r\n readonly tableLoading = input<boolean, XBoolean>(this.config?.tableLoading ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 表格开启虚拟滚动\r\n * @en_US Table opens virtual scrolling\r\n */\r\n readonly tableVirtualScroll = input<boolean, XBoolean>(this.config?.tableVirtualScroll ?? false, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @zh_CN 表格 body 数据高度\r\n * @en_US Table body data height\r\n */\r\n readonly tableBodyHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 表格超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数\r\n * @en_US The table exceeds the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly tableMinBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 表格渲染新数据缓冲区的像素,对应 cdk scroll 中的参数\r\n * @en_US The pixels of the new data buffer for the table rendering, corresponding to the parameters in cdk scroll\r\n */\r\n readonly tableMaxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 表格自适应高度,table 高度等于屏幕高度减掉此处设置的数值\r\n * @en_US Table adaptive height, table height is equal to the screen height minus the value set here\r\n */\r\n readonly tableAdaptionHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 表格文档高度百分比,弹窗百分比高度用到\r\n * @en_US Table document height percentage, used for pop-up window percentage height\r\n */\r\n readonly tableDocPercent = input<number, XNumber>(1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 表格行高度,单位 px\r\n * @en_US Table row height, unit px\r\n */\r\n readonly tableRowHeight = input<number, XNumber>(this.config?.tableRowHeight ?? 42, { transform: XToNumber });\r\n /**\r\n * @zh_CN 树节点数据\r\n * @en_US Tree node data\r\n */\r\n readonly treeData = input<XData<XTreeNode>, XData<XTreeNode>>([], { transform: XToDataConvert });\r\n /**\r\n * @zh_CN 树当前激活的节点 Id\r\n * @en_US Id of the currently active node of the tree\r\n */\r\n readonly treeActivatedId = model<any>();\r\n /**\r\n * @zh_CN 树默认展开的层级\r\n * @en_US The level of the tree expanded by default\r\n */\r\n readonly treeExpandedLevel = input<number, XNumber>(this.config?.treeExpandedLevel ?? 0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 树 checkbox 选中的节点\r\n * @en_US Tree checkbox selected node\r\n */\r\n readonly treeChecked = model<any[]>([]);\r\n /**\r\n * @zh_CN 树显示多选框\r\n * @en_US Tree display checkbox\r\n */\r\n readonly treeCheckbox = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 树和表格同时存在的时候,树节点 id 对应表格的属性,用来做表格数据过滤\r\n * @en_US When the tree and the table exist at the same time, the tree node id corresponds to the attribute of the table, which is used to filter the table data\r\n */\r\n readonly treeTableConnect = input<any>();\r\n /**\r\n * @zh_CN 数据查询过滤表单\r\n * @en_US form for data filter\r\n */\r\n readonly search = model<XFindSearchOption | null>(null);\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<string>('');\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\r\n/**\r\n * Find Option\r\n */\r\nexport interface XFindOption extends XFormOption {\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 Multiple choice\r\n */\r\n multiple?: boolean;\r\n /**\r\n * @zh_CN 选中 label 名称字段\r\n * @en_US Check the label name field\r\n */\r\n columnLabel?: string;\r\n /**\r\n * @zh_CN 弹框标题\r\n * @en_US Bullet title\r\n */\r\n dialogTitle?: string;\r\n /**\r\n * @zh_CN 弹框表格选择列头名称\r\n * @en_US Ball Form Select List Name\r\n */\r\n dialogCheckboxLabel?: string;\r\n /**\r\n * @zh_CN 弹框表格选择列宽\r\n * @en_US Ball Form Select List width\r\n */\r\n dialogCheckboxWidth?: string;\r\n /**\r\n * @zh_CN 弹框选择数据为空的提示信息\r\n * @en_US Ball box selection data empty prompt information\r\n */\r\n dialogEmptyContent?: string;\r\n /**\r\n * @zh_CN 弹框宽度\r\n * @en_US Bullet frame width\r\n */\r\n dialogWidth?: string;\r\n /**\r\n * @zh_CN 弹框高度\r\n * @en_US Height of bullet frame\r\n */\r\n dialogHeight?: string;\r\n /**\r\n * @zh_CN 弹框显示,隐藏\r\n * @en_US Bullet box display, hide\r\n */\r\n dialogVisible?: boolean;\r\n /**\r\n * @zh_CN 按钮居中\r\n * @en_US Button centered\r\n */\r\n dialogButtonsCenter?: boolean;\r\n /**\r\n * @zh_CN 表格行数据\r\n * @en_US Table row data\r\n */\r\n tableData?: XData<XTableRow>;\r\n /**\r\n * @zh_CN 表格页码\r\n * @en_US Table page number\r\n */\r\n tableIndex?: number;\r\n /**\r\n * @zh_CN 表每页数据条数\r\n * @en_US Number of data items per page\r\n */\r\n tableSize?: number;\r\n /**\r\n * @zh_CN 表格查询条件\r\n * @en_US Number of data items per page\r\n */\r\n tableQuery?: XQuery;\r\n /**\r\n * @zh_CN 表格数据总条数\r\n * @en_US Total number of table data\r\n */\r\n tableTotal?: number;\r\n /**\r\n * @zh_CN 排序点击的事件\r\n * @en_US Sort click events\r\n */\r\n tableSortChange?: XSort[];\r\n /**\r\n * @zh_CN 表格列参数\r\n * @en_US Table column parameters\r\n */\r\n tableColumns?: XTableColumn[];\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n tableActivatedRow?: any;\r\n /**\r\n * @zh_CN 表格行点击事件\r\n * @en_US Table row click event\r\n */\r\n tableRowEmit?: any;\r\n /**\r\n * @zh_CN 表格行点击事件\r\n * @en_US Table row click event\r\n */\r\n tableCheckedRow?: { [property: string]: any[] };\r\n /**\r\n * @zh_CN 是否启用加载 loading\r\n * @en_US Whether to enable loading loading\r\n */\r\n tableLoading?: boolean;\r\n /**\r\n * @zh_CN 表格开启虚拟滚动\r\n * @en_US Table opens virtual scrolling\r\n */\r\n tableVirtualScroll?: boolean;\r\n /**\r\n * @zh_CN 表格 body 数据高度\r\n * @en_US Table body data height\r\n */\r\n tableBodyHeight?: number;\r\n /**\r\n * @zh_CN 表格超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数\r\n * @en_US The table exceeds the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n tableMinBufferPx?: number;\r\n /**\r\n * @zh_CN 表格渲染新数据缓冲区的像素,对应 cdk scroll 中的参数\r\n * @en_US The pixels of the new data buffer for the table rendering, corresponding to the parameters in cdk scroll\r\n */\r\n tableMaxBufferPx?: number;\r\n /**\r\n * @zh_CN 表格自适应高度,table 高度等于屏幕高度减掉此处设置的数值\r\n * @en_US Table adaptive height, table height is equal to the screen height minus the value set here\r\n */\r\n tableAdaptionHeight?: number;\r\n /**\r\n * @zh_CN 表格文档高度百分比,弹窗百分比高度用到\r\n * @en_US Table document height percentage, used for pop-up window percentage height\r\n */\r\n tableDocPercent?: number;\r\n /**\r\n * @zh_CN 表格行高度,单位 px\r\n * @en_US Table row height, unit px\r\n */\r\n tableRowHeight?: number;\r\n /**\r\n * @zh_CN 树节点数据\r\n * @en_US Tree node data\r\n */\r\n treeData?: XData<XTreeNode>;\r\n /**\r\n * @zh_CN 树当前激活的节点 Id\r\n * @en_US Id of the currently active node of the tree\r\n */\r\n treeActivatedId?: any;\r\n /**\r\n * @zh_CN 树默认展开的层级\r\n * @en_US The level of the tree expanded by default\r\n */\r\n treeExpandedLevel?: number;\r\n /**\r\n * @zh_CN 树 checkbox 选中的节点\r\n * @en_US Tree checkbox selected node\r\n */\r\n treeChecked?: any[];\r\n /**\r\n * @zh_CN 树显示多选框\r\n * @en_US Tree display checkbox\r\n */\r\n treeCheckbox?: boolean;\r\n /**\r\n * @zh_CN 树和表格同时存在的时候,树节点 id 对应表格的属性,用来做表格数据过滤\r\n * @en_US When the tree and the table exist at the same time, the tree node id corresponds to the attribute of the table, which is used to filter the table data\r\n */\r\n treeTableConnect?: any;\r\n /**\r\n * @zh_CN 数据查询过滤表单\r\n * @en_US form for data filter\r\n */\r\n search?: XFindSearchOption;\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","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n SimpleChanges,\r\n OnChanges,\r\n OnDestroy,\r\n computed,\r\n viewChild,\r\n signal\r\n} from '@angular/core';\r\nimport { XFindProperty, XFindPrefix } from './find.property';\r\nimport { XResize, XIsUndefined, XIsChange, XResizeObserver, XIsEmpty } from '@ng-nest/ui/core';\r\nimport { XTableColumn, XTableComponent, XTableRow } from '@ng-nest/ui/table';\r\nimport { XDialogComponent } from '@ng-nest/ui/dialog';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { XTreeNode, XTreeComponent } from '@ng-nest/ui/tree';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { XTagComponent } from '@ng-nest/ui/tag';\r\nimport { XEmptyComponent } from '@ng-nest/ui/empty';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { NgClass } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XFindPrefix}`,\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n XTagComponent,\r\n XButtonComponent,\r\n XDialogComponent,\r\n XTableComponent,\r\n XTreeComponent,\r\n XIconComponent,\r\n XEmptyComponent,\r\n XInputComponent\r\n ],\r\n templateUrl: './find.component.html',\r\n styleUrls: ['./find.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XFindComponent)]\r\n})\r\nexport class XFindComponent extends XFindProperty implements OnChanges, OnDestroy {\r\n find = viewChild.required<ElementRef<HTMLElement>>('find');\r\n dialogCom = viewChild.required<XDialogComponent>('dialogCom');\r\n tableCom = viewChild<XTableComponent>('tableCom');\r\n treeCom = viewChild<XTreeComponent>('treeCom');\r\n buttonCom = viewChild.required<XButtonComponent>('buttonCom');\r\n tableRef = viewChild<ElementRef<HTMLElement>>('tableRef');\r\n treeRef = viewChild<ElementRef<HTMLElement>>('treeRef');\r\n tableRefChanged = toObservable(this.tableRef)\r\n .pipe(tap((x) => x && this.multiple() && this.setSubscribe()))\r\n .subscribe();\r\n treeRefChanged = toObservable(this.treeRef)\r\n .pipe(tap((x) => x && this.multiple() && this.setSubscribe()))\r\n .subscribe();\r\n\r\n tableColumnsSignal = computed(() => {\r\n if (!this.multiple()) return this.tableColumns();\r\n if (this.hasTable()) {\r\n if (!this.tableColumns().find((x) => x.rowChecked)) {\r\n return [\r\n {\r\n id: '$checked',\r\n label: this.dialogCheckboxLabel(),\r\n rowChecked: true,\r\n type: 'checkbox',\r\n width: this.dialogCheckboxWidth()\r\n },\r\n ...this.tableColumns()\r\n ] as XTableColumn[];\r\n }\r\n }\r\n return this.tableColumns();\r\n });\r\n\r\n getEmpty = computed(() => !this.temp() || this.temp().length === 0);\r\n hasTable = computed(() => this.tableColumns().length > 0);\r\n hasTree = computed(\r\n () =>\r\n (Array.isArray(this.treeData()) && (this.treeData() as Array<XTreeNode>).length > 0) ||\r\n this.treeData() instanceof Function ||\r\n this.treeData() instanceof Observable\r\n );\r\n hasTreeTable = computed(() => this.hasTable() && this.hasTree());\r\n hasTreeMultiple = computed(() => this.hasTree() && !this.hasTreeTable() && this.multiple());\r\n hasSearch = computed(() => this.search() && this.hasTable());\r\n dialogWidthSignal = computed(() => {\r\n if (XIsUndefined(this.dialogWidth())) {\r\n if ((this.hasTable() && this.hasTree()) || this.hasTable()) {\r\n return '50rem';\r\n } else if (this.hasTree() && this.multiple()) {\r\n return '30rem';\r\n } else if (this.hasTree()) {\r\n return '20rem';\r\n }\r\n }\r\n return this.dialogWidth();\r\n });\r\n\r\n temp = signal<any>(undefined);\r\n height = signal(100);\r\n\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n\r\n override writeValue(value: any) {\r\n this.value.set(value);\r\n }\r\n\r\n classMap = computed(() => ({\r\n [`${XFindPrefix}-${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 ngOnChanges(simples: SimpleChanges) {\r\n const { tableData } = simples;\r\n XIsChange(tableData) && this.setTableCheckedRow();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n setSubscribe() {\r\n let resizeRef: Element[] = [];\r\n if (this.hasTable()) {\r\n resizeRef = [this.tableRef()!.nativeElement];\r\n }\r\n if (this.hasTree() && !this.hasTreeTable()) {\r\n resizeRef.push(this.treeRef()!.nativeElement);\r\n }\r\n this.unSubject.next();\r\n if (resizeRef.length === 0) return;\r\n XResize(...resizeRef)\r\n .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n .subscribe((x) => {\r\n this.resizeObserver = x.resizeObserver;\r\n if (this.tableRef()) {\r\n this.height.set(this.tableRef()!.nativeElement.clientHeight);\r\n } else if (this.hasTree()) {\r\n this.height.set(this.treeRef()!.nativeElement.clientHeight);\r\n }\r\n });\r\n }\r\n\r\n showModal() {\r\n if (this.disabledComputed()) return;\r\n this.dialogVisible.set(true);\r\n if (this.value()) {\r\n if (this.multiple()) {\r\n this.temp.set((this.value() as Array<any>).map((x) => Object.assign({}, x)));\r\n this.setTableCheckedRow();\r\n this.setTreeChecked();\r\n } else {\r\n this.tableActivatedRow.set(this.value());\r\n if (!this.hasTreeTable() && this.hasTree()) {\r\n this.treeActivatedId.set(this.value().id);\r\n }\r\n }\r\n } else {\r\n this.temp.set(this.multiple() ? [] : undefined);\r\n }\r\n if (this.hasTable()) {\r\n this.tableCom()?.virtualBody()?.scrollToIndex(0);\r\n this.tableCom()?.virtualBody()?.checkViewportSize();\r\n }\r\n }\r\n\r\n setTableCheckedRow() {\r\n if (!this.multiple() || XIsUndefined(this.temp())) return;\r\n const ids = (this.temp() as Array<any>).map((x) => x.id);\r\n this.tableCheckedRow.update((x) => ({\r\n ...x,\r\n $checked: ids\r\n }));\r\n }\r\n\r\n setTreeChecked() {\r\n if (this.hasTreeMultiple()) this.treeChecked.set(this.temp().map((x: any) => x.id));\r\n }\r\n\r\n sure() {\r\n this.value.set(this.temp());\r\n this.onChange && this.onChange(this.value());\r\n this.formControlValidator();\r\n }\r\n\r\n dialogCloseDone() {\r\n if (this.hasTree()) {\r\n this.treeActivatedId.set(null);\r\n this.temp.set(null);\r\n }\r\n }\r\n\r\n tempClose(index: number, item: any) {\r\n this.temp.update((x) => {\r\n x.splice(index, 1);\r\n return [...x];\r\n });\r\n if (this.hasTable()) {\r\n let it = this.tableCom()!\r\n .tableData()\r\n .find((x) => item.id === x.id);\r\n if (it) {\r\n it['$checked'] = false;\r\n }\r\n } else if (this.hasTree()) {\r\n let it = this.treeCom()!\r\n .treeData()\r\n .find((x) => item.id === x.id);\r\n if (it) {\r\n it.checked = false;\r\n it.change && it.change();\r\n }\r\n }\r\n }\r\n\r\n tagClose(index: number = -1) {\r\n if (index >= 0) {\r\n this.value.update((x) => {\r\n x.splice(index, 1);\r\n return [...x];\r\n });\r\n } else {\r\n this.value.set(null);\r\n this.tableActivatedRow.set(null);\r\n if (!this.hasTreeTable() && this.hasTree()) {\r\n this.treeActivatedId.set(null);\r\n }\r\n }\r\n this.onChange && this.onChange(this.value());\r\n this.formControlValidator();\r\n }\r\n\r\n tableActivatedRowChange(data: XTableRow) {\r\n if (this.multiple()) {\r\n this.rowMultiple(data);\r\n } else {\r\n this.temp.set(data);\r\n this.dialogVisible.set(false);\r\n this.sure();\r\n }\r\n }\r\n\r\n rowMultiple(data: XTableRow) {\r\n if (typeof this.temp() === 'undefined') this.temp.set([]);\r\n if (data['$checked']) {\r\n this.temp.update((x) => {\r\n if (XIsEmpty(x)) x = [];\r\n x.push(data);\r\n return x;\r\n });\r\n } else {\r\n this.temp.update((x) => {\r\n x.splice(\r\n x.findIndex((x: any) => x.id === data.id),\r\n 1\r\n );\r\n return [...x];\r\n });\r\n }\r\n }\r\n\r\n treeMultiple(node: XTreeNode) {\r\n if (typeof this.temp() === 'undefined') this.temp.set([]);\r\n if (node.checked) {\r\n this.temp.update((x) => [...x, node]);\r\n } else {\r\n this.temp.update((x) => {\r\n x.splice(\r\n x.findIndex((x: any) => x.id === node.id),\r\n 1\r\n );\r\n return [...x];\r\n });\r\n }\r\n }\r\n\r\n treeActivatedClick(node: XTreeNode) {\r\n if (!this.hasTreeTable() && this.hasTree()) {\r\n if (!this.multiple()) {\r\n this.temp.set(node);\r\n }\r\n } else if (this.hasTreeTable() && this.treeTableConnect()) {\r\n const tableQuery = this.tableQuery();\r\n if (!tableQuery.filter) tableQuery.filter = [];\r\n let field = tableQuery.filter.find((x) => x.field === this.treeTableConnect());\r\n if (field) {\r\n field.value = node.id;\r\n field.operation = '=';\r\n } else {\r\n tableQuery.filter = [...tableQuery.filter, { field: this.treeTableConnect(), value: node.id, operation: '=' }];\r\n }\r\n this.tableQuery.set(tableQuery);\r\n this.tableCom()!.change(1);\r\n this.treeActivatedId.set(node.id);\r\n }\r\n }\r\n\r\n treeCheckboxChange(node: XTreeNode) {\r\n this.treeMultiple(node);\r\n }\r\n\r\n formControlChanges() {\r\n this.treeCom()?.setData();\r\n }\r\n\r\n searchKeyDown(event: KeyboardEvent): void {\r\n if (event.key === 'Enter') {\r\n this.searchClick();\r\n } else if (event.key === 'Delete') {\r\n this.search.update((x) => {\r\n x!.value = '';\r\n return { ...x };\r\n });\r\n }\r\n }\r\n\r\n searchClick(): void {\r\n if (!this.hasSearch()) {\r\n return;\r\n }\r\n const tableQuery = this.tableQuery() || {};\r\n tableQuery.filter = tableQuery.filter || [];\r\n const field = tableQuery.filter.find((x) => x.field === this.search()!.field);\r\n\r\n if (field) {\r\n field.value = this.search()!.value || '';\r\n } else {\r\n tableQuery.filter = [...tableQuery.filter, this.search()!];\r\n }\r\n this.tableQuery.set(tableQuery);\r\n this.tableCom()!.change(1);\r\n }\r\n}\r\n","<div\r\n #find\r\n class=\"x-find\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-checked]=\"value()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-find-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-find-row\">\r\n <x-button\r\n #buttonCom\r\n icon=\"fto-search\"\r\n [onlyIcon]=\"!bordered()\"\r\n [size]=\"size()\"\r\n [disabled]=\"disabledComputed()\"\r\n attrType=\"button\"\r\n (click)=\"showModal()\"\r\n flat\r\n plain\r\n ></x-button>\r\n <div class=\"x-find-tags\">\r\n @if (multiple()) {\r\n @for (item of value(); track item.id; let i = $index) {\r\n <x-tag\r\n closable\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [disabled]=\"disabledComputed()\"\r\n (close)=\"tagClose(i)\"\r\n >{{ item[columnLabel()] }}</x-tag\r\n >\r\n }\r\n } @else if (value()) {\r\n <x-tag closable [disabled]=\"disabledComputed()\" [bordered]=\"bordered()\" [size]=\"size()\" (close)=\"tagClose()\">{{\r\n value()[columnLabel()]\r\n }}</x-tag>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<x-dialog\r\n #dialogCom\r\n [title]=\"dialogTitle()\"\r\n [width]=\"dialogWidthSignal()\"\r\n [height]=\"dialogHeight()\"\r\n [buttonsCenter]=\"dialogButtonsCenter()\"\r\n [className]=\"'x-find-dialog-container'\"\r\n [(visible)]=\"dialogVisible\"\r\n (closeDone)=\"dialogCloseDone()\"\r\n (confirm)=\"sure()\"\r\n>\r\n <div class=\"x-find-dialog\" [class.x-find-dialog-tree-table]=\"hasTable() && hasTree()\">\r\n @if (hasTree()) {\r\n <div class=\"x-find-dialog-tree\" #treeRef [style.height.px]=\"hasTreeTable() && multiple() && height()\">\r\n <x-tree\r\n #treeCom\r\n [data]=\"treeData()\"\r\n [nodeHeight]=\"'1.8rem'\"\r\n [(manual)]=\"dialogVisible\"\r\n [activatedId]=\"treeActivatedId()\"\r\n [expandedLevel]=\"treeExpandedLevel()\"\r\n (activatedChange)=\"treeActivatedClick($event)\"\r\n [checkbox]=\"hasTreeMultiple()\"\r\n [checked]=\"treeChecked()\"\r\n (checkboxChange)=\"treeCheckboxChange($event)\"\r\n [levelCheck]=\"!hasTreeMultiple()\"\r\n ></x-tree>\r\n </div>\r\n }\r\n @if (hasTable()) {\r\n <div class=\"x-find-dialog-table\" #tableRef>\r\n @if (hasSearch()) {\r\n <div class=\"x-find-search\">\r\n <x-input\r\n [label]=\"search()!.label!\"\r\n direction=\"row\"\r\n (xKeydown)=\"searchKeyDown($event)\"\r\n [(ngModel)]=\"search()!.value\"\r\n ></x-input>\r\n <x-button plain text (click)=\"searchClick()\">{{ search()!.button || '查询' }}</x-button>\r\n </div>\r\n }\r\n <x-table\r\n #tableCom\r\n [data]=\"tableData()\"\r\n [columns]=\"tableColumnsSignal()\"\r\n [(manual)]=\"dialogVisible\"\r\n [(index)]=\"tableIndex\"\r\n [(size)]=\"tableSize\"\r\n [(query)]=\"tableQuery\"\r\n [(total)]=\"tableTotal\"\r\n [allowSelectRow]=\"!multiple()\"\r\n [allowCheckRow]=\"multiple()\"\r\n [checkedRow]=\"tableCheckedRow()\"\r\n [loading]=\"tableLoading()\"\r\n (sortChange)=\"tableSortChange.emit($event)\"\r\n [(activatedRow)]=\"tableActivatedRow\"\r\n (activatedRowChange)=\"tableActivatedRowChange($event!)\"\r\n [rowHeight]=\"tableRowHeight()\"\r\n [bodyHeight]=\"tableBodyHeight()!\"\r\n [virtualScroll]=\"tableVirtualScroll()\"\r\n [minBufferPx]=\"tableMinBufferPx()\"\r\n [maxBufferPx]=\"tableMaxBufferPx()\"\r\n [adaptionHeight]=\"tableAdaptionHeight()!\"\r\n [docPercent]=\"tableDocPercent()\"\r\n ></x-table>\r\n </div>\r\n }\r\n @if (multiple()) {\r\n <div class=\"x-find-dialog-checked\" [class.x-find-empty]=\"getEmpty()\" [style.height.px]=\"height()\">\r\n @if (getEmpty()) {\r\n <x-empty [content]=\"dialogEmptyContent()\"></x-empty>\r\n }\r\n <div class=\"x-find-dialog-tags\">\r\n @for (item of temp(); track item.id; let i = $index) {\r\n <x-tag closable (close)=\"tempClose(i, item)\">\r\n <span>{{ item[columnLabel()] }}</span>\r\n </x-tag>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</x-dialog>\r\n\r\n<ng-template #treeLabelTpl let-node=\"$node\">\r\n <div class=\"x-find-dialog-tree-node\">\r\n <span>{{ node.label }} </span>\r\n @if (node.$checked) {\r\n <x-icon type=\"fto-check\"></x-icon>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XFindComponent } from './find.component';\r\n\r\n@NgModule({\r\n exports: [XFindComponent],\r\n imports: [XFindComponent]\r\n})\r\nexport class XFindModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAmBA;;;;AAIG;AACI,MAAM,WAAW,GAAG,SAAS;AACpC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAUlC;;AAEG;MAEU,aAAc,SAAQ,oBAAoB,CAAC,kBAAkB,CAAC,CAAA;AAD3E,IAAA,WAAA,GAAA;;AAEE;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAoB,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACvG;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AAC/E;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,OAAO,CAAC,CAAC;AAC1E;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,MAAM,CAAC,CAAC;AACzE;;;AAGG;QACM,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,mBAAmB,IAAI,IAAI,CAAC,CAAC;AACvF;;;AAGG;QACM,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,mBAAmB,IAAI,MAAM,EAAE;AAChG,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC,CAAC;AACH;;;AAGG;QACM,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,OAAO,CAAC,CAAC;AACxF;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACnF;;;AAGG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACpF;;;AAGG;AACM,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AAC/C;;;AAGG;QACM,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AAC1F;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAqC,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;AAClG;;;AAGG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;AAClE;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;AACjE;;;AAGG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AACxC;;;AAGG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,CAAC,CAAC,CAAC;AACvC;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,MAAM,EAAW,CAAC;AAC7C;;;AAGG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAiB,EAAE,CAAC,CAAC;AAClD;;;AAGG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK,EAAO,CAAC;AAC1C;;;AAGG;QACM,IAAY,CAAA,YAAA,GAAG,MAAM,EAAO,CAAC;AACtC;;;AAGG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAgC,EAAE,CAAC,CAAC;AACpE;;;AAGG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAoB,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AAChH;;;AAGG;QACM,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAoB,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,KAAK,EAAE;AAC/F,YAAA,SAAS,EAAE,UAAU;AACtB,SAAA,CAAC,CAAC;AACH;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,KAAK,CAAyB,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AACzF;;;AAGG;QACM,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAkB,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAClF;;;AAGG;QACM,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAkB,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAClF;;;AAGG;QACM,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAyB,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7F;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,KAAK,CAAkB,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAC/E;;;AAGG;AACM,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,cAAc,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAC9G;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAqC,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;AACjG;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,KAAK,EAAO,CAAC;AACxC;;;AAGG;AACM,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,iBAAiB,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AACnH;;;AAGG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAQ,EAAE,CAAC,CAAC;AACxC;;;AAGG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACnF;;;AAGG;QACM,IAAgB,CAAA,gBAAA,GAAG,KAAK,EAAO,CAAC;AACzC;;;AAGG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAA2B,IAAI,CAAC,CAAC;AACxD;;;AAGG;QACe,IAAI,CAAA,IAAA,GAAG,KAAK,CAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC;AACrE;;;AAGG;QACe,IAAO,CAAA,OAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACvF;;;AAGG;AACe,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAC5C;;;AAGG;QACe,IAAU,CAAA,UAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAC3F;;;AAGG;AACe,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,OAAO,CAAC,CAAC;AACtD;;;AAGG;AACe,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,OAAO,CAAC,CAAC;AACrD;;;AAGG;AACe,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,OAAO,CAAC,CAAC;AACjD;;;AAGG;AACe,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAa,QAAQ,CAAC,CAAC;AAC1D;;;AAGG;AACe,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAoB,EAAE,CAAC,CAAC;AAC7D;;;AAGG;QACe,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACxF;;;AAGG;QACe,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACxF;;;AAGG;QACe,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACxF;;;AAGG;QACe,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAoB,CAAC;AACvD;;;AAGG;QACe,IAAe,CAAA,eAAA,GAAG,KAAK,EAAE,CAAC;AAC5C;;;AAGG;QACe,IAAM,CAAA,MAAA,GAAG,KAAK,EAAa,CAAC;AAC9C;;;AAGG;QACe,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;AAC7C;;;AAGG;AACe,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA0B,IAAI,CAAC,CAAC;AACjE;;;AAGG;AACe,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,CAAC,CAAC;AACzD;;;AAGG;AACe,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AACjD;;;AAGG;QACe,IAAc,CAAA,cAAA,GAAG,KAAK,EAA2B,CAAC;AACrE,KAAA;iIA7RY,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,g3PADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FACjD,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAG,EAAA,WAAW,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;;;ACa1D,MAAO,cAAe,SAAQ,aAAa,CAAA;AAtBjD,IAAA,WAAA,GAAA;;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,SAAS,CAAC,QAAQ,CAA0B,MAAM,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAmB,WAAW,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,QAAQ,GAAG,SAAS,CAAkB,UAAU,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAiB,SAAS,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAmB,WAAW,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,QAAQ,GAAG,SAAS,CAA0B,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAA0B,SAAS,CAAC,CAAC;AACxD,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC1C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7D,aAAA,SAAS,EAAE,CAAC;AACf,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;aACxC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7D,aAAA,SAAS,EAAE,CAAC;AAEf,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AACjC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AACjD,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE;oBAClD,OAAO;AACL,wBAAA;AACE,4BAAA,EAAE,EAAE,UAAU;AACd,4BAAA,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE;AACjC,4BAAA,UAAU,EAAE,IAAI;AAChB,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAClC,yBAAA;wBACD,GAAG,IAAI,CAAC,YAAY,EAAE;qBACL,CAAC;iBACrB;aACF;AACD,YAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;QAEH,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AACpE,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1D,IAAO,CAAA,OAAA,GAAG,QAAQ,CAChB,MACE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAK,IAAI,CAAC,QAAQ,EAAuB,CAAC,MAAM,GAAG,CAAC;AACnF,YAAA,IAAI,CAAC,QAAQ,EAAE,YAAY,QAAQ;AACnC,YAAA,IAAI,CAAC,QAAQ,EAAE,YAAY,UAAU,CACxC,CAAC;AACF,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,IAAe,CAAA,eAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5F,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7D,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;YAChC,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;AACpC,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC1D,oBAAA,OAAO,OAAO,CAAC;iBAChB;qBAAM,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC5C,oBAAA,OAAO,OAAO,CAAC;iBAChB;AAAM,qBAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACzB,oBAAA,OAAO,OAAO,CAAC;iBAChB;aACF;AACD,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,SAAC,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAM,SAAS,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAEb,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAOxC,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO;AACzB,YAAA,CAAC,CAAG,EAAA,WAAW,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,EAAE,CAAE,CAAA,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;AAChD,YAAA,CAAC,CAAa,UAAA,EAAA,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;AACjD,YAAA,CAAC,CAAW,QAAA,EAAA,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AAC3C,YAAA,CAAC,CAAe,YAAA,EAAA,IAAI,CAAC,SAAS,EAAE,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AACxD,SAAA,CAAC,CAAC,CAAC;AACJ,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,OAAO;AAC/B,YAAA,CAAC,CAAgB,aAAA,EAAA,IAAI,CAAC,UAAU,EAAE,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;AAC3D,SAAA,CAAC,CAAC,CAAC;AAgOL,KAAA;AA5OU,IAAA,UAAU,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACvB;AAYD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAC9B,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;KACnD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC;KACnC;IAED,YAAY,GAAA;QACV,IAAI,SAAS,GAAc,EAAE,CAAC;AAC9B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,aAAa,CAAC,CAAC;SAC9C;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;YAC1C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAG,CAAC,aAAa,CAAC,CAAC;SAC/C;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACnC,OAAO,CAAC,GAAG,SAAS,CAAC;AAClB,aAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;AACvC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;aAC9D;AAAM,iBAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACzB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;aAC7D;AACH,SAAC,CAAC,CAAC;KACN;IAED,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAAE,OAAO;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,KAAK,EAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7E,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;iBAAM;gBACL,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC1C,oBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC3C;aACF;SACF;aAAM;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;SACjD;AACD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,CAAC;SACrD;KACF;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAAE,OAAO;AAC1D,QAAA,MAAM,GAAG,GAAI,IAAI,CAAC,IAAI,EAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;AAClC,YAAA,GAAG,CAAC;AACJ,YAAA,QAAQ,EAAE,GAAG;AACd,SAAA,CAAC,CAAC,CAAC;KACL;IAED,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,eAAe,EAAE;YAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACrF;IAED,IAAI,GAAA;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAED,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACrB;KACF;IAED,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACrB,YAAA,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACnB,YAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAChB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAG;AACtB,iBAAA,SAAS,EAAE;AACX,iBAAA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,EAAE;AACN,gBAAA,EAAE,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;aACxB;SACF;AAAM,aAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACzB,YAAA,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,EAAG;AACrB,iBAAA,QAAQ,EAAE;AACV,iBAAA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,EAAE;AACN,gBAAA,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC;AACnB,gBAAA,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;aAC1B;SACF;KACF;IAED,QAAQ,CAAC,KAAgB,GAAA,CAAC,CAAC,EAAA;AACzB,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACtB,gBAAA,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACnB,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAChB,aAAC,CAAC,CAAC;SACJ;aAAM;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC1C,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAChC;SACF;AACD,QAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,uBAAuB,CAAC,IAAe,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACxB;aAAM;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;KACF;AAED,IAAA,WAAW,CAAC,IAAe,EAAA;AACzB,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1D,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;gBACrB,IAAI,QAAQ,CAAC,CAAC,CAAC;oBAAE,CAAC,GAAG,EAAE,CAAC;AACxB,gBAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACb,gBAAA,OAAO,CAAC,CAAC;AACX,aAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;gBACrB,CAAC,CAAC,MAAM,CACN,CAAC,CAAC,SAAS,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EACzC,CAAC,CACF,CAAC;AACF,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAChB,aAAC,CAAC,CAAC;SACJ;KACF;AAED,IAAA,YAAY,CAAC,IAAe,EAAA;AAC1B,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1D,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;SACvC;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;gBACrB,CAAC,CAAC,MAAM,CACN,CAAC,CAAC,SAAS,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EACzC,CAAC,CACF,CAAC;AACF,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAChB,aAAC,CAAC,CAAC;SACJ;KACF;AAED,IAAA,kBAAkB,CAAC,IAAe,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC1C,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACrB;SACF;aAAM,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACzD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,MAAM;AAAE,gBAAA,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC;YAC/C,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC/E,IAAI,KAAK,EAAE;AACT,gBAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;AACtB,gBAAA,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;aACvB;iBAAM;AACL,gBAAA,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;aAChH;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,EAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACnC;KACF;AAED,IAAA,kBAAkB,CAAC,IAAe,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KACzB;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC;KAC3B;AAED,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACzB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;AAAM,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACvB,gBAAA,CAAE,CAAC,KAAK,GAAG,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;AAClB,aAAC,CAAC,CAAC;SACJ;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,OAAO;SACR;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;QAC3C,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,EAAG,CAAC,KAAK,CAAC,CAAC;QAE9E,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SAC1C;aAAM;AACL,YAAA,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAG,CAAC,CAAC;SAC5D;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,EAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC5B;iIA3SU,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAFd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjD7C,kgKAgJA,EAAA,MAAA,EAAA,CAAA,khHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/GI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,EACb,QAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,EACf,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,EACd,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,EACd,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,oDACf,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAQN,cAAc,EAAA,UAAA,EAAA,CAAA;kBAtB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAG,WAAW,CAAA,CAAE,EACd,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,OAAO;wBACP,WAAW;wBACX,mBAAmB;wBACnB,aAAa;wBACb,gBAAgB;wBAChB,gBAAgB;wBAChB,eAAe;wBACf,cAAc;wBACd,cAAc;wBACd,eAAe;wBACf,eAAe;qBAChB,EAGc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,cAAc,CAAA,cAAA,CAAgB,CAAC,EAAA,QAAA,EAAA,kgKAAA,EAAA,MAAA,EAAA,CAAA,khHAAA,CAAA,EAAA,CAAA;;;ME1ChC,WAAW,CAAA;iIAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;kIAAX,WAAW,EAAA,OAAA,EAAA,CAFZ,cAAc,CAAA,EAAA,OAAA,EAAA,CADd,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;AAGb,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAFZ,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEb,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,cAAc,CAAC;oBACzB,OAAO,EAAE,CAAC,cAAc,CAAC;AAC1B,iBAAA,CAAA;;;ACND;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-find.mjs","sources":["../../../../lib/ng-nest/ui/find/find.property.ts","../../../../lib/ng-nest/ui/find/find.component.ts","../../../../lib/ng-nest/ui/find/find.component.html","../../../../lib/ng-nest/ui/find/find.module.ts","../../../../lib/ng-nest/ui/find/ng-nest-ui-find.ts"],"sourcesContent":["import { XToBoolean, XToNumber, XToCssPixelValue, XToDataConvert } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, model, output } from '@angular/core';\r\nimport { XTableColumn, XTableRow } from '@ng-nest/ui/table';\r\nimport { XTreeNode } from '@ng-nest/ui/tree';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type {\r\n XBoolean,\r\n XData,\r\n XNumber,\r\n XSort,\r\n XQuery,\r\n XFilter,\r\n XSize,\r\n XAlign,\r\n XJustify,\r\n XDirection,\r\n XTemplate\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Find\r\n * @selector x-find\r\n * @decorator component\r\n */\r\nexport const XFindPrefix = 'x-find';\r\nconst X_FIND_CONFIG_NAME = 'find';\r\n\r\n/**\r\n * Find search option\r\n */\r\nexport interface XFindSearchOption extends XFilter {\r\n label?: string;\r\n button?: string;\r\n}\r\n\r\n/**\r\n * Find Property\r\n */\r\n@Component({ selector: `${XFindPrefix}-property`, template: '' })\r\nexport class XFindProperty extends XFormControlFunction(X_FIND_CONFIG_NAME) {\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 Multiple choice\r\n */\r\n readonly multiple = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 选中 label 名称字段\r\n * @en_US Check the label name field\r\n */\r\n readonly columnLabel = input<string>(this.config?.columnLabel ?? 'label');\r\n /**\r\n * @zh_CN 弹框标题\r\n * @en_US Bullet title\r\n */\r\n readonly dialogTitle = input<string>(this.config?.dialogTitle ?? '查找选择');\r\n /**\r\n * @zh_CN 弹框表格选择列头名称\r\n * @en_US Ball Form Select List Name\r\n */\r\n readonly dialogCheckboxLabel = input<string>(this.config?.dialogCheckboxLabel ?? '选择');\r\n /**\r\n * @zh_CN 弹框表格选择列宽\r\n * @en_US Ball Form Select List width\r\n */\r\n readonly dialogCheckboxWidth = input<string, XNumber>(this.config?.dialogCheckboxWidth ?? '60px', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 弹框选择数据为空的提示信息\r\n * @en_US Ball box selection data empty prompt information\r\n */\r\n readonly dialogEmptyContent = input<string>(this.config?.dialogEmptyContent ?? '请选择数据');\r\n /**\r\n * @zh_CN 弹框宽度\r\n * @en_US Bullet frame width\r\n */\r\n readonly dialogWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 弹框高度\r\n * @en_US Height of bullet frame\r\n */\r\n readonly dialogHeight = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 弹框显示,隐藏\r\n * @en_US Bullet box display, hide\r\n */\r\n readonly dialogVisible = model<boolean>(false);\r\n /**\r\n * @zh_CN 按钮居中\r\n * @en_US Button centered\r\n */\r\n readonly dialogButtonsCenter = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 表格行数据\r\n * @en_US Table row data\r\n */\r\n readonly tableData = input<XData<XTableRow>, XData<XTableRow>>([], { transform: XToDataConvert });\r\n /**\r\n * @zh_CN 表格页码\r\n * @en_US Table page number\r\n */\r\n readonly tableIndex = model<number>(this.config?.tableIndex ?? 1);\r\n /**\r\n * @zh_CN 表每页数据条数\r\n * @en_US Number of data items per page\r\n */\r\n readonly tableSize = model<number>(this.config?.tableSize ?? 10);\r\n /**\r\n * @zh_CN 表格查询条件\r\n * @en_US Number of data items per page\r\n */\r\n readonly tableQuery = model<XQuery>({});\r\n /**\r\n * @zh_CN 表格数据总条数\r\n * @en_US Total number of table data\r\n */\r\n readonly tableTotal = model<number>(0);\r\n /**\r\n * @zh_CN 排序点击的事件\r\n * @en_US Sort click events\r\n */\r\n readonly tableSortChange = output<XSort[]>();\r\n /**\r\n * @zh_CN 表格列参数\r\n * @en_US Table column parameters\r\n */\r\n readonly tableColumns = input<XTableColumn[]>([]);\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n readonly tableActivatedRow = model<any>();\r\n /**\r\n * @zh_CN 表格行点击事件\r\n * @en_US Table row click event\r\n */\r\n readonly tableRowEmit = output<any>();\r\n /**\r\n * @zh_CN 表格行点击事件\r\n * @en_US Table row click event\r\n */\r\n readonly tableCheckedRow = model<{ [property: string]: any[] }>({});\r\n /**\r\n * @zh_CN 是否启用加载 loading\r\n * @en_US Whether to enable loading loading\r\n */\r\n readonly tableLoading = input<boolean, XBoolean>(this.config?.tableLoading ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 表格开启虚拟滚动\r\n * @en_US Table opens virtual scrolling\r\n */\r\n readonly tableVirtualScroll = input<boolean, XBoolean>(this.config?.tableVirtualScroll ?? false, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @zh_CN 表格 body 数据高度\r\n * @en_US Table body data height\r\n */\r\n readonly tableBodyHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 表格超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数\r\n * @en_US The table exceeds the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly tableMinBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 表格渲染新数据缓冲区的像素,对应 cdk scroll 中的参数\r\n * @en_US The pixels of the new data buffer for the table rendering, corresponding to the parameters in cdk scroll\r\n */\r\n readonly tableMaxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 表格自适应高度,table 高度等于屏幕高度减掉此处设置的数值\r\n * @en_US Table adaptive height, table height is equal to the screen height minus the value set here\r\n */\r\n readonly tableAdaptionHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 表格文档高度百分比,弹窗百分比高度用到\r\n * @en_US Table document height percentage, used for pop-up window percentage height\r\n */\r\n readonly tableDocPercent = input<number, XNumber>(1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 表格行高度,单位 px\r\n * @en_US Table row height, unit px\r\n */\r\n readonly tableRowHeight = input<number, XNumber>(this.config?.tableRowHeight ?? 42, { transform: XToNumber });\r\n /**\r\n * @zh_CN 树节点数据\r\n * @en_US Tree node data\r\n */\r\n readonly treeData = input<XData<XTreeNode>, XData<XTreeNode>>([], { transform: XToDataConvert });\r\n /**\r\n * @zh_CN 树当前激活的节点 Id\r\n * @en_US Id of the currently active node of the tree\r\n */\r\n readonly treeActivatedId = model<any>();\r\n /**\r\n * @zh_CN 树默认展开的层级\r\n * @en_US The level of the tree expanded by default\r\n */\r\n readonly treeExpandedLevel = input<number, XNumber>(this.config?.treeExpandedLevel ?? 0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 树 checkbox 选中的节点\r\n * @en_US Tree checkbox selected node\r\n */\r\n readonly treeChecked = model<any[]>([]);\r\n /**\r\n * @zh_CN 树显示多选框\r\n * @en_US Tree display checkbox\r\n */\r\n readonly treeCheckbox = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 树和表格同时存在的时候,树节点 id 对应表格的属性,用来做表格数据过滤\r\n * @en_US When the tree and the table exist at the same time, the tree node id corresponds to the attribute of the table, which is used to filter the table data\r\n */\r\n readonly treeTableConnect = input<any>();\r\n /**\r\n * @zh_CN 数据查询过滤表单\r\n * @en_US form for data filter\r\n */\r\n readonly search = model<XFindSearchOption | null>(null);\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<string>('');\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\r\n/**\r\n * Find Option\r\n */\r\nexport interface XFindOption extends XFormOption {\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 Multiple choice\r\n */\r\n multiple?: boolean;\r\n /**\r\n * @zh_CN 选中 label 名称字段\r\n * @en_US Check the label name field\r\n */\r\n columnLabel?: string;\r\n /**\r\n * @zh_CN 弹框标题\r\n * @en_US Bullet title\r\n */\r\n dialogTitle?: string;\r\n /**\r\n * @zh_CN 弹框表格选择列头名称\r\n * @en_US Ball Form Select List Name\r\n */\r\n dialogCheckboxLabel?: string;\r\n /**\r\n * @zh_CN 弹框表格选择列宽\r\n * @en_US Ball Form Select List width\r\n */\r\n dialogCheckboxWidth?: string;\r\n /**\r\n * @zh_CN 弹框选择数据为空的提示信息\r\n * @en_US Ball box selection data empty prompt information\r\n */\r\n dialogEmptyContent?: string;\r\n /**\r\n * @zh_CN 弹框宽度\r\n * @en_US Bullet frame width\r\n */\r\n dialogWidth?: string;\r\n /**\r\n * @zh_CN 弹框高度\r\n * @en_US Height of bullet frame\r\n */\r\n dialogHeight?: string;\r\n /**\r\n * @zh_CN 弹框显示,隐藏\r\n * @en_US Bullet box display, hide\r\n */\r\n dialogVisible?: boolean;\r\n /**\r\n * @zh_CN 按钮居中\r\n * @en_US Button centered\r\n */\r\n dialogButtonsCenter?: boolean;\r\n /**\r\n * @zh_CN 表格行数据\r\n * @en_US Table row data\r\n */\r\n tableData?: XData<XTableRow>;\r\n /**\r\n * @zh_CN 表格页码\r\n * @en_US Table page number\r\n */\r\n tableIndex?: number;\r\n /**\r\n * @zh_CN 表每页数据条数\r\n * @en_US Number of data items per page\r\n */\r\n tableSize?: number;\r\n /**\r\n * @zh_CN 表格查询条件\r\n * @en_US Number of data items per page\r\n */\r\n tableQuery?: XQuery;\r\n /**\r\n * @zh_CN 表格数据总条数\r\n * @en_US Total number of table data\r\n */\r\n tableTotal?: number;\r\n /**\r\n * @zh_CN 排序点击的事件\r\n * @en_US Sort click events\r\n */\r\n tableSortChange?: XSort[];\r\n /**\r\n * @zh_CN 表格列参数\r\n * @en_US Table column parameters\r\n */\r\n tableColumns?: XTableColumn[];\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n tableActivatedRow?: any;\r\n /**\r\n * @zh_CN 表格行点击事件\r\n * @en_US Table row click event\r\n */\r\n tableRowEmit?: any;\r\n /**\r\n * @zh_CN 表格行点击事件\r\n * @en_US Table row click event\r\n */\r\n tableCheckedRow?: { [property: string]: any[] };\r\n /**\r\n * @zh_CN 是否启用加载 loading\r\n * @en_US Whether to enable loading loading\r\n */\r\n tableLoading?: boolean;\r\n /**\r\n * @zh_CN 表格开启虚拟滚动\r\n * @en_US Table opens virtual scrolling\r\n */\r\n tableVirtualScroll?: boolean;\r\n /**\r\n * @zh_CN 表格 body 数据高度\r\n * @en_US Table body data height\r\n */\r\n tableBodyHeight?: number;\r\n /**\r\n * @zh_CN 表格超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数\r\n * @en_US The table exceeds the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n tableMinBufferPx?: number;\r\n /**\r\n * @zh_CN 表格渲染新数据缓冲区的像素,对应 cdk scroll 中的参数\r\n * @en_US The pixels of the new data buffer for the table rendering, corresponding to the parameters in cdk scroll\r\n */\r\n tableMaxBufferPx?: number;\r\n /**\r\n * @zh_CN 表格自适应高度,table 高度等于屏幕高度减掉此处设置的数值\r\n * @en_US Table adaptive height, table height is equal to the screen height minus the value set here\r\n */\r\n tableAdaptionHeight?: number;\r\n /**\r\n * @zh_CN 表格文档高度百分比,弹窗百分比高度用到\r\n * @en_US Table document height percentage, used for pop-up window percentage height\r\n */\r\n tableDocPercent?: number;\r\n /**\r\n * @zh_CN 表格行高度,单位 px\r\n * @en_US Table row height, unit px\r\n */\r\n tableRowHeight?: number;\r\n /**\r\n * @zh_CN 树节点数据\r\n * @en_US Tree node data\r\n */\r\n treeData?: XData<XTreeNode>;\r\n /**\r\n * @zh_CN 树当前激活的节点 Id\r\n * @en_US Id of the currently active node of the tree\r\n */\r\n treeActivatedId?: any;\r\n /**\r\n * @zh_CN 树默认展开的层级\r\n * @en_US The level of the tree expanded by default\r\n */\r\n treeExpandedLevel?: number;\r\n /**\r\n * @zh_CN 树 checkbox 选中的节点\r\n * @en_US Tree checkbox selected node\r\n */\r\n treeChecked?: any[];\r\n /**\r\n * @zh_CN 树显示多选框\r\n * @en_US Tree display checkbox\r\n */\r\n treeCheckbox?: boolean;\r\n /**\r\n * @zh_CN 树和表格同时存在的时候,树节点 id 对应表格的属性,用来做表格数据过滤\r\n * @en_US When the tree and the table exist at the same time, the tree node id corresponds to the attribute of the table, which is used to filter the table data\r\n */\r\n treeTableConnect?: any;\r\n /**\r\n * @zh_CN 数据查询过滤表单\r\n * @en_US form for data filter\r\n */\r\n search?: XFindSearchOption;\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","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n SimpleChanges,\r\n OnChanges,\r\n OnDestroy,\r\n computed,\r\n viewChild,\r\n signal\r\n} from '@angular/core';\r\nimport { XFindProperty, XFindPrefix } from './find.property';\r\nimport { XResize, XIsUndefined, XIsChange, XResizeObserver, XIsEmpty } from '@ng-nest/ui/core';\r\nimport { XTableColumn, XTableComponent, XTableRow } from '@ng-nest/ui/table';\r\nimport { XDialogComponent } from '@ng-nest/ui/dialog';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { XTreeNode, XTreeComponent } from '@ng-nest/ui/tree';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { XTagComponent } from '@ng-nest/ui/tag';\r\nimport { XEmptyComponent } from '@ng-nest/ui/empty';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { NgClass } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XFindPrefix}`,\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n XTagComponent,\r\n XButtonComponent,\r\n XDialogComponent,\r\n XTableComponent,\r\n XTreeComponent,\r\n XIconComponent,\r\n XEmptyComponent,\r\n XInputComponent\r\n ],\r\n templateUrl: './find.component.html',\r\n styleUrls: ['./find.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XFindComponent)]\r\n})\r\nexport class XFindComponent extends XFindProperty implements OnChanges, OnDestroy {\r\n find = viewChild.required<ElementRef<HTMLElement>>('find');\r\n dialogCom = viewChild.required<XDialogComponent>('dialogCom');\r\n tableCom = viewChild<XTableComponent>('tableCom');\r\n treeCom = viewChild<XTreeComponent>('treeCom');\r\n buttonCom = viewChild.required<XButtonComponent>('buttonCom');\r\n tableRef = viewChild<ElementRef<HTMLElement>>('tableRef');\r\n treeRef = viewChild<ElementRef<HTMLElement>>('treeRef');\r\n tableRefChanged = toObservable(this.tableRef)\r\n .pipe(tap((x) => x && this.multiple() && this.setSubscribe()))\r\n .subscribe();\r\n treeRefChanged = toObservable(this.treeRef)\r\n .pipe(tap((x) => x && this.multiple() && this.setSubscribe()))\r\n .subscribe();\r\n\r\n tableColumnsSignal = computed(() => {\r\n if (!this.multiple()) return this.tableColumns();\r\n if (this.hasTable()) {\r\n if (!this.tableColumns().find((x) => x.rowChecked)) {\r\n return [\r\n {\r\n id: '$checked',\r\n label: this.dialogCheckboxLabel(),\r\n rowChecked: true,\r\n type: 'checkbox',\r\n width: this.dialogCheckboxWidth()\r\n },\r\n ...this.tableColumns()\r\n ] as XTableColumn[];\r\n }\r\n }\r\n return this.tableColumns();\r\n });\r\n\r\n getEmpty = computed(() => !this.temp() || this.temp().length === 0);\r\n hasTable = computed(() => this.tableColumns().length > 0);\r\n hasTree = computed(\r\n () =>\r\n (Array.isArray(this.treeData()) && (this.treeData() as Array<XTreeNode>).length > 0) ||\r\n this.treeData() instanceof Function ||\r\n this.treeData() instanceof Observable\r\n );\r\n hasTreeTable = computed(() => this.hasTable() && this.hasTree());\r\n hasTreeMultiple = computed(() => this.hasTree() && !this.hasTreeTable() && this.multiple());\r\n hasSearch = computed(() => this.search() && this.hasTable());\r\n dialogWidthSignal = computed(() => {\r\n if (XIsUndefined(this.dialogWidth())) {\r\n if ((this.hasTable() && this.hasTree()) || this.hasTable()) {\r\n return '50rem';\r\n } else if (this.hasTree() && this.multiple()) {\r\n return '30rem';\r\n } else if (this.hasTree()) {\r\n return '20rem';\r\n }\r\n }\r\n return this.dialogWidth();\r\n });\r\n\r\n temp = signal<any>(undefined);\r\n height = signal(100);\r\n\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n\r\n classMap = computed(() => ({\r\n [`${XFindPrefix}-${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 ngOnChanges(simples: SimpleChanges) {\r\n const { tableData } = simples;\r\n XIsChange(tableData) && this.setTableCheckedRow();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n setSubscribe() {\r\n let resizeRef: Element[] = [];\r\n if (this.hasTable()) {\r\n resizeRef = [this.tableRef()!.nativeElement];\r\n }\r\n if (this.hasTree() && !this.hasTreeTable()) {\r\n resizeRef.push(this.treeRef()!.nativeElement);\r\n }\r\n this.unSubject.next();\r\n if (resizeRef.length === 0) return;\r\n XResize(...resizeRef)\r\n .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n .subscribe((x) => {\r\n this.resizeObserver = x.resizeObserver;\r\n if (this.tableRef()) {\r\n this.height.set(this.tableRef()!.nativeElement.clientHeight);\r\n } else if (this.hasTree()) {\r\n this.height.set(this.treeRef()!.nativeElement.clientHeight);\r\n }\r\n });\r\n }\r\n\r\n showModal() {\r\n if (this.disabledComputed()) return;\r\n this.dialogVisible.set(true);\r\n if (this.value()) {\r\n if (this.multiple()) {\r\n this.temp.set((this.value() as Array<any>).map((x) => Object.assign({}, x)));\r\n this.setTableCheckedRow();\r\n this.setTreeChecked();\r\n } else {\r\n this.tableActivatedRow.set(this.value());\r\n if (!this.hasTreeTable() && this.hasTree()) {\r\n this.treeActivatedId.set(this.value().id);\r\n }\r\n }\r\n } else {\r\n this.temp.set(this.multiple() ? [] : undefined);\r\n }\r\n if (this.hasTable()) {\r\n this.tableCom()?.virtualBody()?.scrollToIndex(0);\r\n this.tableCom()?.virtualBody()?.checkViewportSize();\r\n }\r\n }\r\n\r\n setTableCheckedRow() {\r\n if (!this.multiple() || XIsUndefined(this.temp())) return;\r\n const ids = (this.temp() as Array<any>).map((x) => x.id);\r\n this.tableCheckedRow.update((x) => ({\r\n ...x,\r\n $checked: ids\r\n }));\r\n }\r\n\r\n setTreeChecked() {\r\n if (this.hasTreeMultiple()) this.treeChecked.set(this.temp().map((x: any) => x.id));\r\n }\r\n\r\n sure() {\r\n this.value.set(this.temp());\r\n this.onChange && this.onChange(this.value());\r\n this.formControlValidator();\r\n }\r\n\r\n dialogCloseDone() {\r\n if (this.hasTree()) {\r\n this.treeActivatedId.set(null);\r\n this.temp.set(null);\r\n }\r\n }\r\n\r\n tempClose(index: number, item: any) {\r\n this.temp.update((x) => {\r\n x.splice(index, 1);\r\n return [...x];\r\n });\r\n if (this.hasTable()) {\r\n let it = this.tableCom()!\r\n .tableData()\r\n .find((x) => item.id === x.id);\r\n if (it) {\r\n it['$checked'] = false;\r\n }\r\n } else if (this.hasTree()) {\r\n let it = this.treeCom()!\r\n .treeData()\r\n .find((x) => item.id === x.id);\r\n if (it) {\r\n it.checked = false;\r\n it.change && it.change();\r\n }\r\n }\r\n }\r\n\r\n tagClose(index: number = -1) {\r\n if (index >= 0) {\r\n this.value.update((x) => {\r\n x.splice(index, 1);\r\n return [...x];\r\n });\r\n } else {\r\n this.value.set(null);\r\n this.tableActivatedRow.set(null);\r\n if (!this.hasTreeTable() && this.hasTree()) {\r\n this.treeActivatedId.set(null);\r\n }\r\n }\r\n this.onChange && this.onChange(this.value());\r\n this.formControlValidator();\r\n }\r\n\r\n tableActivatedRowChange(data: XTableRow) {\r\n if (this.multiple()) {\r\n this.rowMultiple(data);\r\n } else {\r\n this.temp.set(data);\r\n this.dialogVisible.set(false);\r\n this.sure();\r\n }\r\n }\r\n\r\n rowMultiple(data: XTableRow) {\r\n if (typeof this.temp() === 'undefined') this.temp.set([]);\r\n if (data['$checked']) {\r\n this.temp.update((x) => {\r\n if (XIsEmpty(x)) x = [];\r\n x.push(data);\r\n return x;\r\n });\r\n } else {\r\n this.temp.update((x) => {\r\n x.splice(\r\n x.findIndex((x: any) => x.id === data.id),\r\n 1\r\n );\r\n return [...x];\r\n });\r\n }\r\n }\r\n\r\n treeMultiple(node: XTreeNode) {\r\n if (typeof this.temp() === 'undefined') this.temp.set([]);\r\n if (node.checked) {\r\n this.temp.update((x) => [...x, node]);\r\n } else {\r\n this.temp.update((x) => {\r\n x.splice(\r\n x.findIndex((x: any) => x.id === node.id),\r\n 1\r\n );\r\n return [...x];\r\n });\r\n }\r\n }\r\n\r\n treeActivatedClick(node: XTreeNode) {\r\n if (!this.hasTreeTable() && this.hasTree()) {\r\n if (!this.multiple()) {\r\n this.temp.set(node);\r\n }\r\n } else if (this.hasTreeTable() && this.treeTableConnect()) {\r\n const tableQuery = this.tableQuery();\r\n if (!tableQuery.filter) tableQuery.filter = [];\r\n let field = tableQuery.filter.find((x) => x.field === this.treeTableConnect());\r\n if (field) {\r\n field.value = node.id;\r\n field.operation = '=';\r\n } else {\r\n tableQuery.filter = [...tableQuery.filter, { field: this.treeTableConnect(), value: node.id, operation: '=' }];\r\n }\r\n this.tableQuery.set(tableQuery);\r\n this.tableCom()!.change(1);\r\n this.treeActivatedId.set(node.id);\r\n }\r\n }\r\n\r\n treeCheckboxChange(node: XTreeNode) {\r\n this.treeMultiple(node);\r\n }\r\n\r\n searchKeyDown(event: KeyboardEvent): void {\r\n if (event.key === 'Enter') {\r\n this.searchClick();\r\n } else if (event.key === 'Delete') {\r\n this.search.update((x) => {\r\n x!.value = '';\r\n return { ...x };\r\n });\r\n }\r\n }\r\n\r\n searchClick(): void {\r\n if (!this.hasSearch()) {\r\n return;\r\n }\r\n const tableQuery = this.tableQuery() || {};\r\n tableQuery.filter = tableQuery.filter || [];\r\n const field = tableQuery.filter.find((x) => x.field === this.search()!.field);\r\n\r\n if (field) {\r\n field.value = this.search()!.value || '';\r\n } else {\r\n tableQuery.filter = [...tableQuery.filter, this.search()!];\r\n }\r\n this.tableQuery.set(tableQuery);\r\n this.tableCom()!.change(1);\r\n }\r\n}\r\n","<div\r\n #find\r\n class=\"x-find\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-checked]=\"value()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-find-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n >{{ label() }}</label\r\n >\r\n }\r\n <div class=\"x-find-row\">\r\n <x-button\r\n #buttonCom\r\n icon=\"fto-search\"\r\n [onlyIcon]=\"!bordered()\"\r\n [size]=\"size()\"\r\n [disabled]=\"disabledComputed()\"\r\n attrType=\"button\"\r\n (click)=\"showModal()\"\r\n flat\r\n plain\r\n ></x-button>\r\n <div class=\"x-find-tags\">\r\n @if (multiple()) {\r\n @for (item of value(); track item.id; let i = $index) {\r\n <x-tag\r\n closable\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [disabled]=\"disabledComputed()\"\r\n (close)=\"tagClose(i)\"\r\n >{{ item[columnLabel()] }}</x-tag\r\n >\r\n }\r\n } @else if (value()) {\r\n <x-tag closable [disabled]=\"disabledComputed()\" [bordered]=\"bordered()\" [size]=\"size()\" (close)=\"tagClose()\">{{\r\n value()[columnLabel()]\r\n }}</x-tag>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<x-dialog\r\n #dialogCom\r\n [title]=\"dialogTitle()\"\r\n [width]=\"dialogWidthSignal()\"\r\n [height]=\"dialogHeight()\"\r\n [buttonsCenter]=\"dialogButtonsCenter()\"\r\n [className]=\"'x-find-dialog-container'\"\r\n [(visible)]=\"dialogVisible\"\r\n (closeDone)=\"dialogCloseDone()\"\r\n (confirm)=\"sure()\"\r\n>\r\n <div class=\"x-find-dialog\" [class.x-find-dialog-tree-table]=\"hasTable() && hasTree()\">\r\n @if (hasTree()) {\r\n <div class=\"x-find-dialog-tree\" #treeRef [style.height.px]=\"hasTreeTable() && multiple() && height()\">\r\n <x-tree\r\n #treeCom\r\n [data]=\"treeData()\"\r\n [nodeHeight]=\"'1.8rem'\"\r\n [(manual)]=\"dialogVisible\"\r\n [activatedId]=\"treeActivatedId()\"\r\n [expandedLevel]=\"treeExpandedLevel()\"\r\n (activatedChange)=\"treeActivatedClick($event)\"\r\n [checkbox]=\"hasTreeMultiple()\"\r\n [checked]=\"treeChecked()\"\r\n (checkboxChange)=\"treeCheckboxChange($event)\"\r\n [levelCheck]=\"!hasTreeMultiple()\"\r\n ></x-tree>\r\n </div>\r\n }\r\n @if (hasTable()) {\r\n <div class=\"x-find-dialog-table\" #tableRef>\r\n @if (hasSearch()) {\r\n <div class=\"x-find-search\">\r\n <x-input\r\n [label]=\"search()!.label!\"\r\n direction=\"row\"\r\n (xKeydown)=\"searchKeyDown($event)\"\r\n [(ngModel)]=\"search()!.value\"\r\n ></x-input>\r\n <x-button plain text (click)=\"searchClick()\">{{ search()!.button || '查询' }}</x-button>\r\n </div>\r\n }\r\n <x-table\r\n #tableCom\r\n [data]=\"tableData()\"\r\n [columns]=\"tableColumnsSignal()\"\r\n [(manual)]=\"dialogVisible\"\r\n [(index)]=\"tableIndex\"\r\n [(size)]=\"tableSize\"\r\n [(query)]=\"tableQuery\"\r\n [(total)]=\"tableTotal\"\r\n [allowSelectRow]=\"!multiple()\"\r\n [allowCheckRow]=\"multiple()\"\r\n [checkedRow]=\"tableCheckedRow()\"\r\n [loading]=\"tableLoading()\"\r\n (sortChange)=\"tableSortChange.emit($event)\"\r\n [(activatedRow)]=\"tableActivatedRow\"\r\n (activatedRowChange)=\"tableActivatedRowChange($event!)\"\r\n [rowHeight]=\"tableRowHeight()\"\r\n [bodyHeight]=\"tableBodyHeight()!\"\r\n [virtualScroll]=\"tableVirtualScroll()\"\r\n [minBufferPx]=\"tableMinBufferPx()\"\r\n [maxBufferPx]=\"tableMaxBufferPx()\"\r\n [adaptionHeight]=\"tableAdaptionHeight()!\"\r\n [docPercent]=\"tableDocPercent()\"\r\n ></x-table>\r\n </div>\r\n }\r\n @if (multiple()) {\r\n <div class=\"x-find-dialog-checked\" [class.x-find-empty]=\"getEmpty()\" [style.height.px]=\"height()\">\r\n @if (getEmpty()) {\r\n <x-empty [content]=\"dialogEmptyContent()\"></x-empty>\r\n }\r\n <div class=\"x-find-dialog-tags\">\r\n @for (item of temp(); track item.id; let i = $index) {\r\n <x-tag closable (close)=\"tempClose(i, item)\">\r\n <span>{{ item[columnLabel()] }}</span>\r\n </x-tag>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</x-dialog>\r\n\r\n<ng-template #treeLabelTpl let-node=\"$node\">\r\n <div class=\"x-find-dialog-tree-node\">\r\n <span>{{ node.label }} </span>\r\n @if (node.$checked) {\r\n <x-icon type=\"fto-check\"></x-icon>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XFindComponent } from './find.component';\r\n\r\n@NgModule({\r\n exports: [XFindComponent],\r\n imports: [XFindComponent]\r\n})\r\nexport class XFindModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAmBA;;;;AAIG;AACI,MAAM,WAAW,GAAG,SAAS;AACpC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAUlC;;AAEG;MAEU,aAAc,SAAQ,oBAAoB,CAAC,kBAAkB,CAAC,CAAA;AAD3E,IAAA,WAAA,GAAA;;AAEE;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAoB,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACvG;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AAC/E;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,OAAO,CAAC,CAAC;AAC1E;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,MAAM,CAAC,CAAC;AACzE;;;AAGG;QACM,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,mBAAmB,IAAI,IAAI,CAAC,CAAC;AACvF;;;AAGG;QACM,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,mBAAmB,IAAI,MAAM,EAAE;AAChG,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC,CAAC;AACH;;;AAGG;QACM,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,OAAO,CAAC,CAAC;AACxF;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACnF;;;AAGG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACpF;;;AAGG;AACM,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AAC/C;;;AAGG;QACM,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AAC1F;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAqC,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;AAClG;;;AAGG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;AAClE;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;AACjE;;;AAGG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AACxC;;;AAGG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,CAAC,CAAC,CAAC;AACvC;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,MAAM,EAAW,CAAC;AAC7C;;;AAGG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAiB,EAAE,CAAC,CAAC;AAClD;;;AAGG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK,EAAO,CAAC;AAC1C;;;AAGG;QACM,IAAY,CAAA,YAAA,GAAG,MAAM,EAAO,CAAC;AACtC;;;AAGG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAgC,EAAE,CAAC,CAAC;AACpE;;;AAGG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAoB,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AAChH;;;AAGG;QACM,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAoB,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,KAAK,EAAE;AAC/F,YAAA,SAAS,EAAE,UAAU;AACtB,SAAA,CAAC,CAAC;AACH;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,KAAK,CAAyB,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AACzF;;;AAGG;QACM,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAkB,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAClF;;;AAGG;QACM,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAkB,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAClF;;;AAGG;QACM,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAyB,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7F;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,KAAK,CAAkB,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAC/E;;;AAGG;AACM,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,cAAc,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAC9G;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAqC,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;AACjG;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,KAAK,EAAO,CAAC;AACxC;;;AAGG;AACM,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,iBAAiB,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AACnH;;;AAGG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAQ,EAAE,CAAC,CAAC;AACxC;;;AAGG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACnF;;;AAGG;QACM,IAAgB,CAAA,gBAAA,GAAG,KAAK,EAAO,CAAC;AACzC;;;AAGG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAA2B,IAAI,CAAC,CAAC;AACxD;;;AAGG;QACe,IAAI,CAAA,IAAA,GAAG,KAAK,CAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC;AACrE;;;AAGG;QACe,IAAO,CAAA,OAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACvF;;;AAGG;AACe,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAC5C;;;AAGG;QACe,IAAU,CAAA,UAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAC3F;;;AAGG;AACe,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,OAAO,CAAC,CAAC;AACtD;;;AAGG;AACe,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,OAAO,CAAC,CAAC;AACrD;;;AAGG;AACe,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,OAAO,CAAC,CAAC;AACjD;;;AAGG;AACe,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAa,QAAQ,CAAC,CAAC;AAC1D;;;AAGG;AACe,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAoB,EAAE,CAAC,CAAC;AAC7D;;;AAGG;QACe,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACxF;;;AAGG;QACe,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACxF;;;AAGG;QACe,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACxF;;;AAGG;QACe,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAoB,CAAC;AACvD;;;AAGG;QACe,IAAe,CAAA,eAAA,GAAG,KAAK,EAAE,CAAC;AAC5C;;;AAGG;QACe,IAAM,CAAA,MAAA,GAAG,KAAK,EAAa,CAAC;AAC9C;;;AAGG;QACe,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;AAC7C;;;AAGG;AACe,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA0B,IAAI,CAAC,CAAC;AACjE;;;AAGG;AACe,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,CAAC,CAAC;AACzD;;;AAGG;AACe,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AACjD;;;AAGG;QACe,IAAc,CAAA,cAAA,GAAG,KAAK,EAA2B,CAAC;AACrE,KAAA;iIA7RY,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,g3PADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FACjD,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAG,EAAA,WAAW,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;;;ACa1D,MAAO,cAAe,SAAQ,aAAa,CAAA;AAtBjD,IAAA,WAAA,GAAA;;AAuBE,QAAA,IAAA,CAAA,IAAI,GAAG,SAAS,CAAC,QAAQ,CAA0B,MAAM,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAmB,WAAW,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,QAAQ,GAAG,SAAS,CAAkB,UAAU,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAiB,SAAS,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAmB,WAAW,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,QAAQ,GAAG,SAAS,CAA0B,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAA0B,SAAS,CAAC,CAAC;AACxD,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC1C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7D,aAAA,SAAS,EAAE,CAAC;AACf,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;aACxC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7D,aAAA,SAAS,EAAE,CAAC;AAEf,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AACjC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AACjD,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE;oBAClD,OAAO;AACL,wBAAA;AACE,4BAAA,EAAE,EAAE,UAAU;AACd,4BAAA,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE;AACjC,4BAAA,UAAU,EAAE,IAAI;AAChB,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAClC,yBAAA;wBACD,GAAG,IAAI,CAAC,YAAY,EAAE;qBACL,CAAC;iBACrB;aACF;AACD,YAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;QAEH,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AACpE,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1D,IAAO,CAAA,OAAA,GAAG,QAAQ,CAChB,MACE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAK,IAAI,CAAC,QAAQ,EAAuB,CAAC,MAAM,GAAG,CAAC;AACnF,YAAA,IAAI,CAAC,QAAQ,EAAE,YAAY,QAAQ;AACnC,YAAA,IAAI,CAAC,QAAQ,EAAE,YAAY,UAAU,CACxC,CAAC;AACF,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,IAAe,CAAA,eAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5F,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7D,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;YAChC,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;AACpC,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC1D,oBAAA,OAAO,OAAO,CAAC;iBAChB;qBAAM,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC5C,oBAAA,OAAO,OAAO,CAAC;iBAChB;AAAM,qBAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACzB,oBAAA,OAAO,OAAO,CAAC;iBAChB;aACF;AACD,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,SAAC,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAM,SAAS,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAEb,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAGxC,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO;AACzB,YAAA,CAAC,CAAG,EAAA,WAAW,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,EAAE,CAAE,CAAA,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;AAChD,YAAA,CAAC,CAAa,UAAA,EAAA,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;AACjD,YAAA,CAAC,CAAW,QAAA,EAAA,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AAC3C,YAAA,CAAC,CAAe,YAAA,EAAA,IAAI,CAAC,SAAS,EAAE,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AACxD,SAAA,CAAC,CAAC,CAAC;AACJ,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,OAAO;AAC/B,YAAA,CAAC,CAAgB,aAAA,EAAA,IAAI,CAAC,UAAU,EAAE,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;AAC3D,SAAA,CAAC,CAAC,CAAC;AA4NL,KAAA;AA1NC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAC9B,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;KACnD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC;KACnC;IAED,YAAY,GAAA;QACV,IAAI,SAAS,GAAc,EAAE,CAAC;AAC9B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,aAAa,CAAC,CAAC;SAC9C;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;YAC1C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAG,CAAC,aAAa,CAAC,CAAC;SAC/C;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACnC,OAAO,CAAC,GAAG,SAAS,CAAC;AAClB,aAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;AACvC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;aAC9D;AAAM,iBAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACzB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;aAC7D;AACH,SAAC,CAAC,CAAC;KACN;IAED,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAAE,OAAO;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,KAAK,EAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7E,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;iBAAM;gBACL,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC1C,oBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC3C;aACF;SACF;aAAM;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;SACjD;AACD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,CAAC;SACrD;KACF;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAAE,OAAO;AAC1D,QAAA,MAAM,GAAG,GAAI,IAAI,CAAC,IAAI,EAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;AAClC,YAAA,GAAG,CAAC;AACJ,YAAA,QAAQ,EAAE,GAAG;AACd,SAAA,CAAC,CAAC,CAAC;KACL;IAED,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,eAAe,EAAE;YAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACrF;IAED,IAAI,GAAA;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAED,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACrB;KACF;IAED,SAAS,CAAC,KAAa,EAAE,IAAS,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACrB,YAAA,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACnB,YAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAChB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAG;AACtB,iBAAA,SAAS,EAAE;AACX,iBAAA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,EAAE;AACN,gBAAA,EAAE,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;aACxB;SACF;AAAM,aAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACzB,YAAA,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,EAAG;AACrB,iBAAA,QAAQ,EAAE;AACV,iBAAA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,EAAE;AACN,gBAAA,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC;AACnB,gBAAA,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;aAC1B;SACF;KACF;IAED,QAAQ,CAAC,KAAgB,GAAA,CAAC,CAAC,EAAA;AACzB,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACtB,gBAAA,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACnB,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAChB,aAAC,CAAC,CAAC;SACJ;aAAM;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC1C,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAChC;SACF;AACD,QAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,uBAAuB,CAAC,IAAe,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACxB;aAAM;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;KACF;AAED,IAAA,WAAW,CAAC,IAAe,EAAA;AACzB,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1D,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;gBACrB,IAAI,QAAQ,CAAC,CAAC,CAAC;oBAAE,CAAC,GAAG,EAAE,CAAC;AACxB,gBAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACb,gBAAA,OAAO,CAAC,CAAC;AACX,aAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;gBACrB,CAAC,CAAC,MAAM,CACN,CAAC,CAAC,SAAS,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EACzC,CAAC,CACF,CAAC;AACF,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAChB,aAAC,CAAC,CAAC;SACJ;KACF;AAED,IAAA,YAAY,CAAC,IAAe,EAAA;AAC1B,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1D,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;SACvC;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;gBACrB,CAAC,CAAC,MAAM,CACN,CAAC,CAAC,SAAS,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EACzC,CAAC,CACF,CAAC;AACF,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAChB,aAAC,CAAC,CAAC;SACJ;KACF;AAED,IAAA,kBAAkB,CAAC,IAAe,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC1C,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACrB;SACF;aAAM,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACzD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,MAAM;AAAE,gBAAA,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC;YAC/C,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC/E,IAAI,KAAK,EAAE;AACT,gBAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;AACtB,gBAAA,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;aACvB;iBAAM;AACL,gBAAA,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;aAChH;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,EAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACnC;KACF;AAED,IAAA,kBAAkB,CAAC,IAAe,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KACzB;AAED,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACzB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;AAAM,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACvB,gBAAA,CAAE,CAAC,KAAK,GAAG,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;AAClB,aAAC,CAAC,CAAC;SACJ;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,OAAO;SACR;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;QAC3C,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,EAAG,CAAC,KAAK,CAAC,CAAC;QAE9E,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SAC1C;aAAM;AACL,YAAA,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAG,CAAC,CAAC;SAC5D;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,EAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC5B;iIAnSU,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAFd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjD7C,kgKAgJA,EAAA,MAAA,EAAA,CAAA,khHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/GI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,EACb,QAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,EACf,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,EACd,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,EACd,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,oDACf,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAQN,cAAc,EAAA,UAAA,EAAA,CAAA;kBAtB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAG,WAAW,CAAA,CAAE,EACd,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,OAAO;wBACP,WAAW;wBACX,mBAAmB;wBACnB,aAAa;wBACb,gBAAgB;wBAChB,gBAAgB;wBAChB,eAAe;wBACf,cAAc;wBACd,cAAc;wBACd,eAAe;wBACf,eAAe;qBAChB,EAGc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,cAAc,CAAA,cAAA,CAAgB,CAAC,EAAA,QAAA,EAAA,kgKAAA,EAAA,MAAA,EAAA,CAAA,khHAAA,CAAA,EAAA,CAAA;;;ME1ChC,WAAW,CAAA;iIAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;kIAAX,WAAW,EAAA,OAAA,EAAA,CAFZ,cAAc,CAAA,EAAA,OAAA,EAAA,CADd,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;AAGb,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAFZ,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEb,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,cAAc,CAAC;oBACzB,OAAO,EAAE,CAAC,cAAc,CAAC;AAC1B,iBAAA,CAAA;;;ACND;;AAEG;;;;"}
|
|
@@ -242,7 +242,7 @@ class XControlComponent extends XControlProperty {
|
|
|
242
242
|
this.portal = signal(null);
|
|
243
243
|
this.portalOutlet = viewChild.required(CdkPortalOutlet);
|
|
244
244
|
effect(() => {
|
|
245
|
-
this.formControl()
|
|
245
|
+
this.formControl().patchValue(this.value());
|
|
246
246
|
}, { allowSignalWrites: true });
|
|
247
247
|
}
|
|
248
248
|
ngOnInit() {
|
|
@@ -259,8 +259,7 @@ class XControlComponent extends XControlProperty {
|
|
|
259
259
|
this.formControl()
|
|
260
260
|
.valueChanges.pipe(takeUntil(this._unSubject))
|
|
261
261
|
.subscribe((x) => {
|
|
262
|
-
this.
|
|
263
|
-
this.componentRef?.instance.writeValue(x);
|
|
262
|
+
this.componentRef.instance.writeValue(x);
|
|
264
263
|
});
|
|
265
264
|
this.option().setValidators = () => this.setValidators();
|
|
266
265
|
this.form.formGroup().addControl(this.option().id, this.formControl());
|
|
@@ -292,7 +291,10 @@ class XControlComponent extends XControlProperty {
|
|
|
292
291
|
}
|
|
293
292
|
}
|
|
294
293
|
// value
|
|
295
|
-
this.value
|
|
294
|
+
if (this.option().value !== undefined) {
|
|
295
|
+
this.componentRef.instance.writeValue(this.option().value);
|
|
296
|
+
}
|
|
297
|
+
this.value = this.componentRef.instance.value;
|
|
296
298
|
this.form.controlTypes[this.option().id] = this.option();
|
|
297
299
|
this.form.controlComponents[this.option().id] = this.componentRef.instance;
|
|
298
300
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-form.mjs","sources":["../../../../lib/ng-nest/ui/form/form.property.ts","../../../../lib/ng-nest/ui/form/control.component.ts","../../../../lib/ng-nest/ui/form/control.component.html","../../../../lib/ng-nest/ui/form/form.component.ts","../../../../lib/ng-nest/ui/form/form.component.html","../../../../lib/ng-nest/ui/form/form.module.ts","../../../../lib/ng-nest/ui/form/ng-nest-ui-form.ts"],"sourcesContent":["import {\r\n XIdentity,\r\n XBoolean,\r\n XIsEmpty,\r\n XNumber,\r\n XToCssPixelValue,\r\n XToNumber,\r\n XToBoolean\r\n} from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, model, input, output } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { XInputOption, XInputComponent } from '@ng-nest/ui/input';\r\nimport { XSelectOption, XSelectComponent } from '@ng-nest/ui/select';\r\nimport { XCascadeOption, XCascadeComponent } from '@ng-nest/ui/cascade';\r\nimport { XCheckboxOption, XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XColorPickerOption, XColorPickerComponent } from '@ng-nest/ui/color-picker';\r\nimport { XDatePickerOption, XDatePickerComponent } from '@ng-nest/ui/date-picker';\r\nimport { XInputNumberOption, XInputNumberComponent } from '@ng-nest/ui/input-number';\r\nimport { XRadioOption, XRadioComponent } from '@ng-nest/ui/radio';\r\nimport { XRateOption, XRateComponent } from '@ng-nest/ui/rate';\r\nimport { XSliderSelectOption, XSliderSelectComponent } from '@ng-nest/ui/slider-select';\r\nimport { XSwitchOption, XSwitchComponent } from '@ng-nest/ui/switch';\r\nimport { XTimePickerOption, XTimePickerComponent } from '@ng-nest/ui/time-picker';\r\nimport { XTextareaOption, XTextareaComponent } from '@ng-nest/ui/textarea';\r\nimport { XFindOption, XFindComponent } from '@ng-nest/ui/find';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport { XAutoCompleteOption, XAutoCompleteComponent } from '@ng-nest/ui/auto-complete';\r\n\r\n/**\r\n * Form\r\n * @selector x-form\r\n * @decorator component\r\n */\r\nexport const XFormPrefix = 'x-form';\r\nconst X_FORM_CONFIG_NAME = 'form';\r\n\r\n/**\r\n * @zh_CN 模板\r\n * @en_US Template\r\n */\r\nexport type XFormTemplate = { [property: string]: TemplateRef<any> };\r\n/**\r\n * Form Property\r\n */\r\n@Component({ selector: `${XFormPrefix}-property`, template: '' })\r\nexport class XFormProperty extends XFormControlFunction(X_FORM_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 表单 FormGroup\r\n * @en_US Form FormGroup\r\n * @default new UntypedFormGroup({})\r\n */\r\n readonly formGroup = input<UntypedFormGroup>(new UntypedFormGroup({}));\r\n /**\r\n * @zh_CN 表单名称\r\n * @en_US Form name\r\n */\r\n readonly title = input<string>('');\r\n /**\r\n * @zh_CN 控件间距\r\n * @en_US Control spacing\r\n */\r\n readonly space = input<string, XNumber>(this.config?.space ?? '1.75rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 控件宽度,24栅格\r\n * @en_US Control width, 24 grid\r\n */\r\n readonly span = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 标签后缀\r\n * @en_US Label suffix\r\n */\r\n readonly labelSuffix = input<string>(this.config?.labelSuffix ?? '');\r\n /**\r\n * @zh_CN 表单控件\r\n * @en_US Form control\r\n */\r\n readonly controls = input<XFormControlOption[] | XFormRow[]>([]);\r\n /**\r\n * @zh_CN 表单宽度\r\n * @en_US Form width\r\n */\r\n readonly width = input<string, XNumber>(this.config?.width ?? '100%', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n readonly controlTpl = input<XFormTemplate>({});\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 Submit\r\n * @en_US Submit\r\n */\r\n readonly xSubmit = output<SubmitEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\nexport interface XControlOption {\r\n /**\r\n * @zh_CN 列 Id\r\n * @en_US The column Id\r\n */\r\n id?: any;\r\n /**\r\n * @zh_CN 值\r\n * @en_US Value\r\n */\r\n value?: any;\r\n /**\r\n * @zh_CN 初始默认值\r\n * @en_US Default value\r\n */\r\n defaultValue?: any;\r\n /**\r\n * @zh_CN 控件类型\r\n * @en_US Control type\r\n */\r\n control?: XControlType;\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 Read only\r\n */\r\n readonly?: 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 Hide\r\n */\r\n hidden?: boolean;\r\n /**\r\n * @zh_CN 列宽\r\n * @en_US Column width\r\n */\r\n span?: number;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular validation rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verification failed prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入框的验证函数\r\n * @en_US Validation function of input box\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 外部改变事件\r\n * @en_US External change event\r\n */\r\n change?: () => void;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\nexport class XControl extends XIdentity implements XControlOption {\r\n /**\r\n * @zh_CN 值\r\n * @en_US Value\r\n */\r\n value?: any;\r\n /**\r\n * @zh_CN 开启这个,执行 reset 的时候初始为设置的 value,默认为 null\r\n * @en_US Enable this. When performing a reset, the initial value is the set value, which defaults to null\r\n */\r\n nonNullable?: any;\r\n /**\r\n * @zh_CN 控件类型\r\n * @en_US Control type\r\n */\r\n control?: XControlType;\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 Read only\r\n */\r\n readonly?: 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 Hide\r\n */\r\n hidden?: boolean;\r\n /**\r\n * @zh_CN 列宽\r\n * @en_US Column width\r\n */\r\n span?: number;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular validation rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verification failed prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入框的验证函数\r\n * @en_US Validation function of input box\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 外部改变事件\r\n * @en_US External change event\r\n */\r\n change?: () => void;\r\n /**\r\n * @zh_CN 设置验证\r\n * @en_US Set verification\r\n */\r\n setValidators?: () => void;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n\r\n constructor(option: XControlOption = {}) {\r\n super();\r\n if (XIsEmpty(this.value)) this.value = '';\r\n Object.assign(this, option);\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 表单行对象\r\n * @en_US Form row object\r\n */\r\nexport interface XFormRow {\r\n /**\r\n * @zh_CN 行标题\r\n * @en_US Row header\r\n */\r\n title?: string;\r\n /**\r\n * @zh_CN 行图标\r\n * @en_US Row icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 行中的控件\r\n * @en_US Control in row\r\n */\r\n controls: XFormControlOption[];\r\n /**\r\n * @zh_CN 隐藏\r\n * @en_US Hidden\r\n */\r\n hidden?: XBoolean;\r\n}\r\n\r\n/**\r\n * Control\r\n * @selector x-control\r\n * @decorator component\r\n */\r\nexport const XControlPrefix = 'x-control';\r\n\r\n/**\r\n * Control Property\r\n */\r\n@Component({ selector: `${XControlPrefix}-property`, template: '' })\r\nexport class XControlProperty {\r\n /**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\n readonly option = model.required<XControl>({});\r\n}\r\n\r\n/**\r\n * Form control\r\n */\r\nexport class XFormControl extends UntypedFormControl {\r\n /**\r\n * @zh_CN 提示信息\r\n * @en_US Prompt information\r\n */\r\n messages?: string[] = [];\r\n}\r\n\r\n/**\r\n * @zh_CN 表单控件参数\r\n * @en_US Form control option\r\n */\r\nexport type XFormControlOption =\r\n | XInputControlOption\r\n | XSelectControlOption\r\n | XCascadeControlOption\r\n | XCheckboxControlOption\r\n | XColorPickerControlOption\r\n | XDatePickerControlOption\r\n | XInputNumberControlOption\r\n | XRadioControlOption\r\n | XRateControlOption\r\n | XSliderSelectControlOption\r\n | XSwitchControlOption\r\n | XTimePickerControlOption\r\n | XFindControlOption\r\n | XTemplateControlOption;\r\n\r\n/**\r\n * @zh_CN 表单控件组件\r\n * @en_US Form control component\r\n */\r\nexport type XFormControlComponent =\r\n | XInputComponent\r\n | XSelectComponent\r\n | XCascadeComponent\r\n | XCheckboxComponent\r\n | XColorPickerComponent\r\n | XDatePickerComponent\r\n | XInputNumberComponent\r\n | XRadioComponent\r\n | XRateComponent\r\n | XSliderSelectComponent\r\n | XSwitchComponent\r\n | XTimePickerComponent\r\n | XTextareaComponent\r\n | XFindComponent\r\n | XAutoCompleteComponent;\r\n\r\n/**\r\n * @zh_CN 表单控件类型\r\n * @en_US Form control type\r\n */\r\nexport type XFormControlType =\r\n | XInputControl\r\n | XSelectControl\r\n | XCascadeControl\r\n | XCheckboxControl\r\n | XColorPickerControl\r\n | XDatePickerControl\r\n | XInputNumberControl\r\n | XRadioControl\r\n | XRateControl\r\n | XSliderSelectControl\r\n | XSwitchControl\r\n | XTimePickerControl\r\n | XTextareaControl\r\n | XFindControl\r\n | XAutoCompleteControl;\r\n\r\n/**\r\n * @zh_CN 表单控件类型\r\n * @en_US Form control type\r\n */\r\nexport type XControlType =\r\n | 'input'\r\n | 'select'\r\n | 'cascade'\r\n | 'checkbox'\r\n | 'color-picker'\r\n | 'date-picker'\r\n | 'input-number'\r\n | 'radio'\r\n | 'rate'\r\n | 'slider-select'\r\n | 'switch'\r\n | 'time-picker'\r\n | 'textarea'\r\n | 'find'\r\n | 'auto-complete'\r\n | 'template';\r\n\r\n/**\r\n * Input Control\r\n */\r\nexport interface XInputControlOption extends XControlOption, XInputOption {}\r\nexport class XInputControl extends XControl {\r\n constructor(option: XInputControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Select Control\r\n */\r\nexport interface XSelectControlOption extends XControlOption, XSelectOption {}\r\nexport class XSelectControl extends XControl {\r\n constructor(option: XSelectControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Cascade Control\r\n */\r\nexport interface XCascadeControlOption extends XControlOption, XCascadeOption {}\r\nexport class XCascadeControl extends XControl {\r\n constructor(option: XCascadeControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Checkbox Control\r\n */\r\nexport interface XCheckboxControlOption extends XControlOption, XCheckboxOption {}\r\nexport class XCheckboxControl extends XControl {\r\n constructor(option: XCheckboxControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * ColorPicker Control\r\n */\r\nexport interface XColorPickerControlOption extends XControlOption, XColorPickerOption {}\r\nexport class XColorPickerControl extends XControl {\r\n constructor(option: XColorPickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * DatePicker Control\r\n */\r\nexport interface XDatePickerControlOption extends XControlOption, XDatePickerOption {}\r\nexport class XDatePickerControl extends XControl {\r\n constructor(option: XDatePickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * InputNumber Control\r\n */\r\nexport interface XInputNumberControlOption extends XControlOption, XInputNumberOption {}\r\nexport class XInputNumberControl extends XControl {\r\n constructor(option: XInputNumberControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Radio Control\r\n */\r\nexport interface XRadioControlOption extends XControlOption, XRadioOption {}\r\nexport class XRadioControl extends XControl {\r\n constructor(option: XRadioControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Rate Control\r\n */\r\nexport interface XRateControlOption extends XControlOption, XRateOption {}\r\nexport class XRateControl extends XControl {\r\n constructor(option: XRateControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * SliderSelect Control\r\n */\r\nexport interface XSliderSelectControlOption extends XControlOption, XSliderSelectOption {}\r\nexport class XSliderSelectControl extends XControl {\r\n constructor(option: XSliderSelectControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Switch Control\r\n */\r\nexport interface XSwitchControlOption extends XControlOption, XSwitchOption {}\r\nexport class XSwitchControl extends XControl {\r\n constructor(option: XSwitchControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * TimePicker Control\r\n */\r\nexport interface XTimePickerControlOption extends XControlOption, XTimePickerOption {}\r\nexport class XTimePickerControl extends XControl {\r\n constructor(option: XTimePickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Textarea Control\r\n */\r\nexport interface XTextareaControlOption extends XControlOption, XTextareaOption {}\r\nexport class XTextareaControl extends XControl {\r\n constructor(option: XTextareaControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Find Control\r\n */\r\nexport interface XFindControlOption extends XControlOption, XFindOption {}\r\nexport class XFindControl extends XControl {\r\n constructor(option: XFindControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * AutoComplete Control\r\n */\r\nexport interface XAutoCompleteControlOption extends XControlOption, XAutoCompleteOption {}\r\nexport class XAutoCompleteControl extends XControl {\r\n constructor(option: XAutoCompleteControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Template Control\r\n */\r\nexport interface XTemplateControlOption extends XControlOption, XFormOption {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n AfterViewInit,\r\n OnDestroy,\r\n inject,\r\n viewChild,\r\n signal,\r\n ViewContainerRef,\r\n ComponentRef,\r\n OutputEmitterRef,\r\n effect\r\n} from '@angular/core';\r\nimport { XControlProperty, XFormControlOption, XFormControlComponent, XFormControl } from './form.property';\r\nimport {\r\n Validators,\r\n UntypedFormControl,\r\n ValidatorFn,\r\n FormControlStatus,\r\n FormsModule,\r\n ReactiveFormsModule\r\n} from '@angular/forms';\r\nimport { XIsEmpty, XIsFunction } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { XI18nForm, XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { XFormInputValidator } from '@ng-nest/ui/base-form';\r\nimport { XFormComponent } from './form.component';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { CdkPortalOutlet, ComponentPortal, Portal, PortalModule } from '@angular/cdk/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XAutoCompleteComponent } from '@ng-nest/ui/auto-complete';\r\nimport { XCascadeComponent } from '@ng-nest/ui/cascade';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XColorPickerComponent } from '@ng-nest/ui/color-picker';\r\nimport { XDatePickerComponent } from '@ng-nest/ui/date-picker';\r\nimport { XFindComponent } from '@ng-nest/ui/find';\r\nimport { XInputNumberComponent } from '@ng-nest/ui/input-number';\r\nimport { XRadioComponent } from '@ng-nest/ui/radio';\r\nimport { XRateComponent } from '@ng-nest/ui/rate';\r\nimport { XSelectComponent } from '@ng-nest/ui/select';\r\nimport { XSliderSelectComponent } from '@ng-nest/ui/slider-select';\r\nimport { XSwitchComponent } from '@ng-nest/ui/switch';\r\nimport { XTextareaComponent } from '@ng-nest/ui/textarea';\r\nimport { XTimePickerComponent, XTimePickerModule } from '@ng-nest/ui/time-picker';\r\n\r\n@Component({\r\n selector: 'x-control',\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n PortalModule,\r\n\r\n XInputComponent,\r\n XSelectComponent,\r\n XCascadeComponent,\r\n XCheckboxComponent,\r\n XColorPickerComponent,\r\n XDatePickerComponent,\r\n XInputNumberComponent,\r\n XRadioComponent,\r\n XRateComponent,\r\n XSliderSelectComponent,\r\n XSwitchComponent,\r\n XTimePickerModule,\r\n XTextareaComponent,\r\n XFindComponent,\r\n XAutoCompleteComponent\r\n ],\r\n templateUrl: './control.component.html',\r\n styleUrls: ['./control.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XControlComponent extends XControlProperty implements OnInit, AfterViewInit, OnDestroy {\r\n private i18n = inject(XI18nService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private _sharedProps = signal(['span', 'direction', 'justify', 'align', 'labelWidth', 'labelAlign']);\r\n private validatorFns = signal<ValidatorFn[]>([]);\r\n private formControl = signal<UntypedFormControl | null>(null);\r\n private _unSubject = new Subject<void>();\r\n value = signal<any>(null);\r\n\r\n form = inject(XFormComponent, { optional: true })!;\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.form as XI18nForm)), { initialValue: zh_CN.form });\r\n portal = signal<Portal<any> | null>(null);\r\n componentPortal!: ComponentPortal<XFormControlComponent>;\r\n componentRef!: ComponentRef<XFormControlComponent>;\r\n portalOutlet = viewChild.required(CdkPortalOutlet);\r\n\r\n constructor() {\r\n super();\r\n effect(\r\n () => {\r\n this.formControl()?.setValue(this.value());\r\n },\r\n { allowSignalWrites: true }\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.setOption();\r\n\r\n this.formControl.set(\r\n new UntypedFormControl(this.option().value, {\r\n nonNullable: this.option().nonNullable\r\n })\r\n );\r\n this.setValidators();\r\n this.formControl()!\r\n .statusChanges.pipe(takeUntil(this._unSubject))\r\n .subscribe((x) => {\r\n this.setMessages(x);\r\n });\r\n this.formControl()!\r\n .valueChanges.pipe(takeUntil(this._unSubject))\r\n .subscribe((x) => {\r\n this.value.set(x);\r\n this.componentRef?.instance.writeValue(x);\r\n });\r\n this.option().setValidators = () => this.setValidators();\r\n this.form.formGroup().addControl(this.option().id, this.formControl());\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentPortal = this.createComponentPortal(this.option());\r\n this.componentRef = this.portalOutlet().attachComponentPortal(this.componentPortal);\r\n\r\n for (let key in this.option()) {\r\n if (key in this.componentRef.instance) {\r\n const val = (this.componentRef.instance as any)[key];\r\n if (XIsFunction(val)) {\r\n const valSymbols = Object.getOwnPropertySymbols(val);\r\n if (valSymbols.length !== 1) break;\r\n const valSymbol = val[valSymbols[0]];\r\n if (valSymbol.hasOwnProperty('transformFn')) {\r\n // input\r\n this.componentRef.setInput(key, this.option()[key]);\r\n } else {\r\n // signal\r\n val.set(this.option()[key]);\r\n }\r\n } else if (val instanceof OutputEmitterRef) {\r\n // output\r\n val.subscribe((x) => this.option()[key](x));\r\n }\r\n }\r\n }\r\n\r\n // value\r\n this.value = this.componentRef.instance['value'];\r\n\r\n this.form.controlTypes[this.option().id] = this.option();\r\n this.form.controlComponents[this.option().id] = this.componentRef.instance;\r\n }\r\n\r\n ngOnDestroy() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setValidators() {\r\n this.validatorFns.set([]);\r\n if (this.option().disabled || this.form.disabled()) {\r\n this.formControl()!.disable();\r\n } else {\r\n this.formControl()!.enable();\r\n }\r\n if (this.option().required && !this.form.disabled()) {\r\n this.validatorFns.update((x) => [...x, Validators.required]);\r\n }\r\n if (this.option().pattern) {\r\n this.setPattern();\r\n }\r\n if (XIsFunction(this.option().inputValidator)) {\r\n this.validatorFns.update((x) => [...x, XFormInputValidator(this.option().inputValidator!)]);\r\n }\r\n this.formControl()!.setValidators(this.validatorFns());\r\n this.formControl()!.updateValueAndValidity();\r\n }\r\n\r\n setOption() {\r\n for (let prop of this._sharedProps()) {\r\n if (XIsEmpty(this.option()[prop])) {\r\n this.option.update((x) => {\r\n x[prop] = (this.form as any)[prop]();\r\n return x;\r\n });\r\n }\r\n }\r\n if (XIsEmpty(this.option().label)) {\r\n this.option.update((x) => {\r\n x.label = '';\r\n return x;\r\n });\r\n }\r\n this.option.update((x) => {\r\n x.label = `${this.option().label}${this.form.labelSuffix()}`;\r\n return x;\r\n });\r\n }\r\n\r\n setPattern() {\r\n const pattern = this.option().pattern;\r\n if (Array.isArray(pattern)) {\r\n for (const pt of pattern) {\r\n this.validatorFns.update((x) => [...x, Validators.pattern(pt)]);\r\n }\r\n } else {\r\n this.validatorFns.update((x) => [...x, Validators.pattern(pattern as RegExp)]);\r\n }\r\n }\r\n\r\n getPatternMsg(pattern: string) {\r\n const controlPattern = this.option().pattern;\r\n if (Array.isArray(controlPattern)) {\r\n return (this.option().message as Array<any>)[controlPattern.findIndex((x) => String(x) === pattern)];\r\n } else {\r\n return this.option().message;\r\n }\r\n }\r\n\r\n setMessages(state: FormControlStatus) {\r\n let control = this.formControl()! as XFormControl;\r\n if (state === 'INVALID' && this.formControl()!.errors !== null) {\r\n let messages: string[] = [];\r\n for (const key in control.errors) {\r\n const label = this.option().label || this.option().id;\r\n if (key === 'required') {\r\n messages = [...messages, `${label} ${this.locale().required || 'required'}`];\r\n } else if (key === 'pattern') {\r\n messages = [...messages, `${label} ${this.getPatternMsg(control.errors[key].requiredPattern)}`];\r\n } else if (key === 'inputValidator') {\r\n messages = [...messages, `${label} ${this.option().message}`];\r\n }\r\n }\r\n control.messages = messages;\r\n } else if (state === 'VALID') {\r\n control.messages = [];\r\n }\r\n }\r\n\r\n createComponentPortal(option: XFormControlOption) {\r\n switch (option.control) {\r\n case 'input':\r\n return new ComponentPortal(XInputComponent, this.viewContainerRef);\r\n case 'select':\r\n return new ComponentPortal(XSelectComponent, this.viewContainerRef);\r\n case 'checkbox':\r\n return new ComponentPortal(XCheckboxComponent, this.viewContainerRef);\r\n case 'radio':\r\n return new ComponentPortal(XRadioComponent, this.viewContainerRef);\r\n case 'switch':\r\n return new ComponentPortal(XSwitchComponent, this.viewContainerRef);\r\n case 'rate':\r\n return new ComponentPortal(XRateComponent, this.viewContainerRef);\r\n case 'date-picker':\r\n return new ComponentPortal(XDatePickerComponent, this.viewContainerRef);\r\n case 'time-picker':\r\n return new ComponentPortal(XTimePickerComponent, this.viewContainerRef);\r\n case 'input-number':\r\n return new ComponentPortal(XInputNumberComponent, this.viewContainerRef);\r\n case 'slider-select':\r\n return new ComponentPortal(XSliderSelectComponent, this.viewContainerRef);\r\n case 'cascade':\r\n return new ComponentPortal(XCascadeComponent, this.viewContainerRef);\r\n case 'color-picker':\r\n return new ComponentPortal(XColorPickerComponent, this.viewContainerRef);\r\n case 'textarea':\r\n return new ComponentPortal(XTextareaComponent, this.viewContainerRef);\r\n case 'find':\r\n return new ComponentPortal(XFindComponent, this.viewContainerRef);\r\n case 'auto-complete':\r\n return new ComponentPortal(XAutoCompleteComponent, this.viewContainerRef);\r\n default:\r\n return new ComponentPortal(XInputComponent, this.viewContainerRef);\r\n }\r\n }\r\n}\r\n","<div class=\"x-control\" [formGroup]=\"form.formGroup()\">\r\n <ng-template cdkPortalOutlet></ng-template>\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n AfterViewInit,\r\n computed\r\n} from '@angular/core';\r\nimport {\r\n XFormProperty,\r\n XFormRow,\r\n XFormPrefix,\r\n XFormControlOption,\r\n XFormControl,\r\n XFormControlComponent,\r\n XControl\r\n} from './form.property';\r\nimport { XIsChange } from '@ng-nest/ui/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XColComponent, XRowComponent } from '@ng-nest/ui/layout';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XControlComponent } from './control.component';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\n\r\n@Component({\r\n selector: `${XFormPrefix}`,\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n NgTemplateOutlet,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n XRowComponent,\r\n XColComponent,\r\n XOutletDirective,\r\n XIconComponent,\r\n XControlComponent\r\n ],\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XFormComponent extends XFormProperty implements OnChanges, AfterViewInit {\r\n controlsType = computed(() => {\r\n const controls = this.controls();\r\n return controls && controls.length > 0 && (controls[0] as XFormRow).controls ? 'rows' : 'controls';\r\n });\r\n controlComponents: { [property: string]: XFormControlComponent } = {};\r\n controlTypes: { [property: string]: XControl } = {};\r\n formId = Number(Math.random().toString().substring(2, 6) + Date.now()).toString(36);\r\n classMap = computed(() => ({\r\n [`${XFormPrefix}-${this.controlsType()}`]: true\r\n }));\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { disabled } = changes;\r\n XIsChange(disabled) && this.setDisabled();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setDisabled();\r\n }\r\n\r\n setDisabled() {\r\n if (Object.keys(this.controlComponents).length === 0) return;\r\n if (this.disabled()) {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.disabledSignal.set(true);\r\n control.requiredSignal.set(false);\r\n control.patternSignal.set([]);\r\n type.setValidators && type.setValidators();\r\n }\r\n } else {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.disabledSignal.set(type.disabled!);\r\n control.requiredSignal.set(type.required!);\r\n control.patternSignal.set(type.pattern as RegExp | RegExp[]);\r\n type.setValidators && type.setValidators();\r\n }\r\n }\r\n this.formGroup().updateValueAndValidity();\r\n }\r\n\r\n setValidator() {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.formControlValidator();\r\n type.setValidators && type.setValidators();\r\n control.cdr.detectChanges();\r\n }\r\n }\r\n\r\n resetValidator() {\r\n for (let key in this.controlComponents) {\r\n let [control] = [this.controlComponents[key]];\r\n control.validatorSignal.set(false);\r\n control.cdr.detectChanges();\r\n }\r\n }\r\n\r\n getValidatorMessages(): string[] {\r\n let result: string[] = [];\r\n if (this.formGroup().valid) return result;\r\n else {\r\n const eachControls = (array: XFormControlOption[]) => {\r\n for (const ctr of array) {\r\n const formCtr = this.formGroup().controls[ctr.id] as XFormControl;\r\n if (formCtr && formCtr.invalid) {\r\n result = [...result, ...(formCtr.messages as string[])];\r\n }\r\n }\r\n };\r\n if (this.controlsType() === 'rows') {\r\n for (const row of this.controls() as XFormRow[]) {\r\n eachControls(row.controls);\r\n }\r\n } else {\r\n eachControls(this.controls() as XFormControlOption[]);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n onSubmit(event: SubmitEvent) {\r\n this.setValidator();\r\n this.xSubmit.emit(event);\r\n }\r\n}\r\n","<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup()\"\r\n [style.width]=\"width()\"\r\n [style.padding-bottom]=\"controlsType() === 'controls' ? this.space() : '0px'\"\r\n [ngClass]=\"classMap()\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n @switch (controlsType()) {\r\n @case ('controls') {\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls() }\"> </ng-container>\r\n }\r\n @case ('rows') {\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls() }\"></ng-container>\r\n }\r\n }\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n @for (row of rows; track row) {\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space()\">\r\n @for (control of controls; track control) {\r\n <x-col [style.padding-top]=\"space()\" [span]=\"!control.span ? span() : control.span\" [hidden]=\"control.hidden\">\r\n <ng-container *xOutlet=\"controlTpl()[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n }\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n @if (row.icon) {\r\n <x-icon [type]=\"row.icon\"></x-icon>\r\n }\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XFormComponent } from './form.component';\r\nimport { XControlComponent } from './control.component';\r\n\r\n@NgModule({\r\n exports: [XFormComponent, XControlComponent],\r\n imports: [XFormComponent, XControlComponent]\r\n})\r\nexport class XFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA;;;;AAIG;AACI,MAAM,WAAW,GAAG,SAAS;AACpC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAOlC;;AAEG;MAEU,aAAc,SAAQ,oBAAoB,CAAC,kBAAkB,CAAC,CAAA;AAD3E,IAAA,WAAA,GAAA;;AAEE;;;;AAIG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAmB,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;AACvE;;;AAGG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AACnC;;;AAGG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,SAAS,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAC1G;;;AAGG;QACM,IAAI,CAAA,IAAA,GAAG,KAAK,CAAyB,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAC9E;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;AACrE;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAoC,EAAE,CAAC,CAAC;AACjE;;;AAGG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACvG;;;AAGG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAgB,EAAE,CAAC,CAAC;AAC/C;;;AAGG;QACe,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACxF;;;AAGG;QACM,IAAO,CAAA,OAAA,GAAG,MAAM,EAAe,CAAC;AAC1C,KAAA;iIApDY,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,+uCADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FACjD,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAG,EAAA,WAAW,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;;AAoIhE;;;AAGG;AACG,MAAO,QAAS,SAAQ,SAAS,CAAA;AAwErC,IAAA,WAAA,CAAY,SAAyB,EAAE,EAAA;AACrC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAC1C,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC7B;AACF,CAAA;AA6BD;;;;AAIG;AACI,MAAM,cAAc,GAAG,YAAY;AAE1C;;AAEG;MAEU,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;AAEE;;;AAGG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAW,EAAE,CAAC,CAAC;AAChD,KAAA;iIANY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,qOADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FACpD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAG,EAAA,cAAc,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;;AASnE;;AAEG;AACG,MAAO,YAAa,SAAQ,kBAAkB,CAAA;AAApD,IAAA,WAAA,GAAA;;AACE;;;AAGG;QACH,IAAQ,CAAA,QAAA,GAAc,EAAE,CAAC;KAC1B;AAAA,CAAA;AA0FK,MAAO,aAAc,SAAQ,QAAQ,CAAA;AACzC,IAAA,WAAA,CAAY,SAA8B,EAAE,EAAA;QAC1C,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,cAAe,SAAQ,QAAQ,CAAA;AAC1C,IAAA,WAAA,CAAY,SAA+B,EAAE,EAAA;QAC3C,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,eAAgB,SAAQ,QAAQ,CAAA;AAC3C,IAAA,WAAA,CAAY,SAAgC,EAAE,EAAA;QAC5C,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,gBAAiB,SAAQ,QAAQ,CAAA;AAC5C,IAAA,WAAA,CAAY,SAAiC,EAAE,EAAA;QAC7C,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,mBAAoB,SAAQ,QAAQ,CAAA;AAC/C,IAAA,WAAA,CAAY,SAAoC,EAAE,EAAA;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,kBAAmB,SAAQ,QAAQ,CAAA;AAC9C,IAAA,WAAA,CAAY,SAAmC,EAAE,EAAA;QAC/C,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,mBAAoB,SAAQ,QAAQ,CAAA;AAC/C,IAAA,WAAA,CAAY,SAAoC,EAAE,EAAA;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,aAAc,SAAQ,QAAQ,CAAA;AACzC,IAAA,WAAA,CAAY,SAA8B,EAAE,EAAA;QAC1C,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,YAAa,SAAQ,QAAQ,CAAA;AACxC,IAAA,WAAA,CAAY,SAA6B,EAAE,EAAA;QACzC,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,oBAAqB,SAAQ,QAAQ,CAAA;AAChD,IAAA,WAAA,CAAY,SAAqC,EAAE,EAAA;QACjD,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,cAAe,SAAQ,QAAQ,CAAA;AAC1C,IAAA,WAAA,CAAY,SAA+B,EAAE,EAAA;QAC3C,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,kBAAmB,SAAQ,QAAQ,CAAA;AAC9C,IAAA,WAAA,CAAY,SAAmC,EAAE,EAAA;QAC/C,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,gBAAiB,SAAQ,QAAQ,CAAA;AAC5C,IAAA,WAAA,CAAY,SAAiC,EAAE,EAAA;QAC7C,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,YAAa,SAAQ,QAAQ,CAAA;AACxC,IAAA,WAAA,CAAY,SAA6B,EAAE,EAAA;QACzC,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF,CAAA;AAMK,MAAO,oBAAqB,SAAQ,QAAQ,CAAA;AAChD,IAAA,WAAA,CAAY,SAAqC,EAAE,EAAA;QACjD,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;AACF;;ACvdK,MAAO,iBAAkB,SAAQ,gBAAgB,CAAA;AAgBrD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;AAhBF,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;AAC7F,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAgB,EAAE,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAA4B,IAAI,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;AACzC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAM,IAAI,CAAC,CAAC;QAE1B,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE,CAAC;AACnD,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAiB,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9G,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;AAG1C,QAAA,IAAA,CAAA,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAIjD,MAAM,CACJ,MAAK;YACH,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7C,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC5B,CAAC;KACH;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,EAAE,CAAC;AAEjB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAClB,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;AAC1C,YAAA,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,WAAW;AACvC,SAAA,CAAC,CACH,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAG;aAChB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9C,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACtB,SAAC,CAAC,CAAC;QACL,IAAI,CAAC,WAAW,EAAG;aAChB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7C,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;AACL,QAAA,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;KACxE;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEpF,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAC7B,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;gBACrC,MAAM,GAAG,GAAI,IAAI,CAAC,YAAY,CAAC,QAAgB,CAAC,GAAG,CAAC,CAAC;AACrD,gBAAA,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;oBACpB,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACrD,oBAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;wBAAE,MAAM;oBACnC,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,oBAAA,IAAI,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;;AAE3C,wBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;qBACrD;yBAAM;;wBAEL,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;qBAC7B;iBACF;AAAM,qBAAA,IAAI,GAAG,YAAY,gBAAgB,EAAE;;AAE1C,oBAAA,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7C;aACF;SACF;;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAEjD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;KAC5E;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KAC/B;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AAClD,YAAA,IAAI,CAAC,WAAW,EAAG,CAAC,OAAO,EAAE,CAAC;SAC/B;aAAM;AACL,YAAA,IAAI,CAAC,WAAW,EAAG,CAAC,MAAM,EAAE,CAAC;SAC9B;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnD,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC9D;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;YACzB,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;QACD,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE;YAC7C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,cAAe,CAAC,CAAC,CAAC,CAAC;SAC7F;QACD,IAAI,CAAC,WAAW,EAAG,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,WAAW,EAAG,CAAC,sBAAsB,EAAE,CAAC;KAC9C;IAED,SAAS,GAAA;QACP,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE;gBACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;oBACvB,CAAC,CAAC,IAAI,CAAC,GAAI,IAAI,CAAC,IAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AACrC,oBAAA,OAAO,CAAC,CAAC;AACX,iBAAC,CAAC,CAAC;aACJ;SACF;QACD,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACvB,gBAAA,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;AACb,gBAAA,OAAO,CAAC,CAAC;AACX,aAAC,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACvB,YAAA,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;AAC7D,YAAA,OAAO,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACJ;IAED,UAAU,GAAA;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC;AACtC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC1B,YAAA,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE;gBACxB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACjE;SACF;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC,CAAC,CAAC;SAChF;KACF;AAED,IAAA,aAAa,CAAC,OAAe,EAAA;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC;AAC7C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;YACjC,OAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,OAAsB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;SACtG;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC;SAC9B;KACF;AAED,IAAA,WAAW,CAAC,KAAwB,EAAA;AAClC,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,EAAmB,CAAC;AAClD,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,EAAG,CAAC,MAAM,KAAK,IAAI,EAAE;YAC9D,IAAI,QAAQ,GAAa,EAAE,CAAC;AAC5B,YAAA,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE;AAChC,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AACtD,gBAAA,IAAI,GAAG,KAAK,UAAU,EAAE;AACtB,oBAAA,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAA,EAAG,KAAK,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,IAAI,UAAU,CAAA,CAAE,CAAC,CAAC;iBAC9E;AAAM,qBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;oBAC5B,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAE,CAAA,CAAC,CAAC;iBACjG;AAAM,qBAAA,IAAI,GAAG,KAAK,gBAAgB,EAAE;AACnC,oBAAA,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC;iBAC/D;aACF;AACD,YAAA,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC7B;AAAM,aAAA,IAAI,KAAK,KAAK,OAAO,EAAE;AAC5B,YAAA,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;SACvB;KACF;AAED,IAAA,qBAAqB,CAAC,MAA0B,EAAA;AAC9C,QAAA,QAAQ,MAAM,CAAC,OAAO;AACpB,YAAA,KAAK,OAAO;gBACV,OAAO,IAAI,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACrE,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACtE,YAAA,KAAK,UAAU;gBACb,OAAO,IAAI,eAAe,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACxE,YAAA,KAAK,OAAO;gBACV,OAAO,IAAI,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACrE,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACtE,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACpE,YAAA,KAAK,aAAa;gBAChB,OAAO,IAAI,eAAe,CAAC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC1E,YAAA,KAAK,aAAa;gBAChB,OAAO,IAAI,eAAe,CAAC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC1E,YAAA,KAAK,cAAc;gBACjB,OAAO,IAAI,eAAe,CAAC,qBAAqB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC3E,YAAA,KAAK,eAAe;gBAClB,OAAO,IAAI,eAAe,CAAC,sBAAsB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC5E,YAAA,KAAK,SAAS;gBACZ,OAAO,IAAI,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACvE,YAAA,KAAK,cAAc;gBACjB,OAAO,IAAI,eAAe,CAAC,qBAAqB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC3E,YAAA,KAAK,UAAU;gBACb,OAAO,IAAI,eAAe,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACxE,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACpE,YAAA,KAAK,eAAe;gBAClB,OAAO,IAAI,eAAe,CAAC,sBAAsB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC5E,YAAA;gBACE,OAAO,IAAI,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACtE;KACF;iIA3MU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAcM,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3FnD,2HAGA,EAAA,MAAA,EAAA,CAAA,2RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDiDI,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAaZ,iBAAiB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAUR,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA7B7B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EACP,OAAA,EAAA;wBACP,WAAW;wBACX,mBAAmB;wBACnB,YAAY;wBAEZ,eAAe;wBACf,gBAAgB;wBAChB,iBAAiB;wBACjB,kBAAkB;wBAClB,qBAAqB;wBACrB,oBAAoB;wBACpB,qBAAqB;wBACrB,eAAe;wBACf,cAAc;wBACd,sBAAsB;wBACtB,gBAAgB;wBAChB,iBAAiB;wBACjB,kBAAkB;wBAClB,cAAc;wBACd,sBAAsB;AACvB,qBAAA,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2HAAA,EAAA,MAAA,EAAA,CAAA,2RAAA,CAAA,EAAA,CAAA;;;AE9B3C,MAAO,cAAe,SAAQ,aAAa,CAAA;AAnBjD,IAAA,WAAA,GAAA;;AAoBE,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC3B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,OAAO,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAK,QAAQ,CAAC,CAAC,CAAc,CAAC,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AACrG,SAAC,CAAC,CAAC;QACH,IAAiB,CAAA,iBAAA,GAAkD,EAAE,CAAC;QACtE,IAAY,CAAA,YAAA,GAAqC,EAAE,CAAC;AACpD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpF,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO;YACzB,CAAC,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,YAAY,EAAE,CAAA,CAAE,GAAG,IAAI;AAChD,SAAA,CAAC,CAAC,CAAC;AA6EL,KAAA;AA3EC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC7B,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;KAC3C;IAED,eAAe,GAAA;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,WAAW,GAAA;QACT,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAC7D,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACtC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5E,gBAAA,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,gBAAA,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClC,gBAAA,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9B,gBAAA,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;aAC5C;SACF;aAAM;AACL,YAAA,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACtC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5E,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAS,CAAC,CAAC;gBAC3C,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAS,CAAC,CAAC;gBAC3C,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAA4B,CAAC,CAAC;AAC7D,gBAAA,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;aAC5C;SACF;AACD,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,sBAAsB,EAAE,CAAC;KAC3C;IAED,YAAY,GAAA;AACV,QAAA,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACtC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,oBAAoB,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3C,YAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC7B;KACF;IAED,cAAc,GAAA;AACZ,QAAA,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACtC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,YAAA,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnC,YAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC7B;KACF;IAED,oBAAoB,GAAA;QAClB,IAAI,MAAM,GAAa,EAAE,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK;AAAE,YAAA,OAAO,MAAM,CAAC;aACrC;AACH,YAAA,MAAM,YAAY,GAAG,CAAC,KAA2B,KAAI;AACnD,gBAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACvB,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAiB,CAAC;AAClE,oBAAA,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;wBAC9B,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAI,OAAO,CAAC,QAAqB,CAAC,CAAC;qBACzD;iBACF;AACH,aAAC,CAAC;AACF,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,MAAM,EAAE;gBAClC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAgB,EAAE;AAC/C,oBAAA,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC5B;aACF;iBAAM;AACL,gBAAA,YAAY,CAAC,IAAI,CAAC,QAAQ,EAA0B,CAAC,CAAC;aACvD;SACF;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,QAAQ,CAAC,KAAkB,EAAA;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;iIAtFU,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,8GC7C3B,40DAkDA,EAAA,MAAA,EAAA,CAAA,0aAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpBI,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,mJAChB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,kDACb,aAAa,EAAA,QAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,gBAAgB,EAChB,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,mDACd,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAOR,cAAc,EAAA,UAAA,EAAA,CAAA;kBAnB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAG,WAAW,CAAA,CAAE,EACd,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,OAAO;wBACP,gBAAgB;wBAChB,WAAW;wBACX,mBAAmB;wBACnB,aAAa;wBACb,aAAa;wBACb,gBAAgB;wBAChB,cAAc;wBACd,iBAAiB;AAClB,qBAAA,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,40DAAA,EAAA,MAAA,EAAA,CAAA,0aAAA,CAAA,EAAA,CAAA;;;MEnCpC,WAAW,CAAA;iIAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAX,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAFZ,cAAc,EAAE,iBAAiB,CADjC,EAAA,OAAA,EAAA,CAAA,cAAc,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;kIAGhC,WAAW,EAAA,OAAA,EAAA,CAFZ,cAAc,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEhC,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;AAC5C,oBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;AAC7C,iBAAA,CAAA;;;ACPD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-form.mjs","sources":["../../../../lib/ng-nest/ui/form/form.property.ts","../../../../lib/ng-nest/ui/form/control.component.ts","../../../../lib/ng-nest/ui/form/control.component.html","../../../../lib/ng-nest/ui/form/form.component.ts","../../../../lib/ng-nest/ui/form/form.component.html","../../../../lib/ng-nest/ui/form/form.module.ts","../../../../lib/ng-nest/ui/form/ng-nest-ui-form.ts"],"sourcesContent":["import {\r\n XIdentity,\r\n XBoolean,\r\n XIsEmpty,\r\n XNumber,\r\n XToCssPixelValue,\r\n XToNumber,\r\n XToBoolean\r\n} from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, model, input, output } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { XInputOption, XInputComponent } from '@ng-nest/ui/input';\r\nimport { XSelectOption, XSelectComponent } from '@ng-nest/ui/select';\r\nimport { XCascadeOption, XCascadeComponent } from '@ng-nest/ui/cascade';\r\nimport { XCheckboxOption, XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XColorPickerOption, XColorPickerComponent } from '@ng-nest/ui/color-picker';\r\nimport { XDatePickerOption, XDatePickerComponent } from '@ng-nest/ui/date-picker';\r\nimport { XInputNumberOption, XInputNumberComponent } from '@ng-nest/ui/input-number';\r\nimport { XRadioOption, XRadioComponent } from '@ng-nest/ui/radio';\r\nimport { XRateOption, XRateComponent } from '@ng-nest/ui/rate';\r\nimport { XSliderSelectOption, XSliderSelectComponent } from '@ng-nest/ui/slider-select';\r\nimport { XSwitchOption, XSwitchComponent } from '@ng-nest/ui/switch';\r\nimport { XTimePickerOption, XTimePickerComponent } from '@ng-nest/ui/time-picker';\r\nimport { XTextareaOption, XTextareaComponent } from '@ng-nest/ui/textarea';\r\nimport { XFindOption, XFindComponent } from '@ng-nest/ui/find';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport { XAutoCompleteOption, XAutoCompleteComponent } from '@ng-nest/ui/auto-complete';\r\n\r\n/**\r\n * Form\r\n * @selector x-form\r\n * @decorator component\r\n */\r\nexport const XFormPrefix = 'x-form';\r\nconst X_FORM_CONFIG_NAME = 'form';\r\n\r\n/**\r\n * @zh_CN 模板\r\n * @en_US Template\r\n */\r\nexport type XFormTemplate = { [property: string]: TemplateRef<any> };\r\n/**\r\n * Form Property\r\n */\r\n@Component({ selector: `${XFormPrefix}-property`, template: '' })\r\nexport class XFormProperty extends XFormControlFunction(X_FORM_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 表单 FormGroup\r\n * @en_US Form FormGroup\r\n * @default new UntypedFormGroup({})\r\n */\r\n readonly formGroup = input<UntypedFormGroup>(new UntypedFormGroup({}));\r\n /**\r\n * @zh_CN 表单名称\r\n * @en_US Form name\r\n */\r\n readonly title = input<string>('');\r\n /**\r\n * @zh_CN 控件间距\r\n * @en_US Control spacing\r\n */\r\n readonly space = input<string, XNumber>(this.config?.space ?? '1.75rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 控件宽度,24栅格\r\n * @en_US Control width, 24 grid\r\n */\r\n readonly span = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 标签后缀\r\n * @en_US Label suffix\r\n */\r\n readonly labelSuffix = input<string>(this.config?.labelSuffix ?? '');\r\n /**\r\n * @zh_CN 表单控件\r\n * @en_US Form control\r\n */\r\n readonly controls = input<XFormControlOption[] | XFormRow[]>([]);\r\n /**\r\n * @zh_CN 表单宽度\r\n * @en_US Form width\r\n */\r\n readonly width = input<string, XNumber>(this.config?.width ?? '100%', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n readonly controlTpl = input<XFormTemplate>({});\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 Submit\r\n * @en_US Submit\r\n */\r\n readonly xSubmit = output<SubmitEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\nexport interface XControlOption {\r\n /**\r\n * @zh_CN 列 Id\r\n * @en_US The column Id\r\n */\r\n id?: any;\r\n /**\r\n * @zh_CN 值\r\n * @en_US Value\r\n */\r\n value?: any;\r\n /**\r\n * @zh_CN 初始默认值\r\n * @en_US Default value\r\n */\r\n defaultValue?: any;\r\n /**\r\n * @zh_CN 控件类型\r\n * @en_US Control type\r\n */\r\n control?: XControlType;\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 Read only\r\n */\r\n readonly?: 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 Hide\r\n */\r\n hidden?: boolean;\r\n /**\r\n * @zh_CN 列宽\r\n * @en_US Column width\r\n */\r\n span?: number;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular validation rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verification failed prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入框的验证函数\r\n * @en_US Validation function of input box\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 外部改变事件\r\n * @en_US External change event\r\n */\r\n change?: () => void;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\nexport class XControl extends XIdentity implements XControlOption {\r\n /**\r\n * @zh_CN 值\r\n * @en_US Value\r\n */\r\n value?: any;\r\n /**\r\n * @zh_CN 开启这个,执行 reset 的时候初始为设置的 value,默认为 null\r\n * @en_US Enable this. When performing a reset, the initial value is the set value, which defaults to null\r\n */\r\n nonNullable?: any;\r\n /**\r\n * @zh_CN 控件类型\r\n * @en_US Control type\r\n */\r\n control?: XControlType;\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 Read only\r\n */\r\n readonly?: 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 Hide\r\n */\r\n hidden?: boolean;\r\n /**\r\n * @zh_CN 列宽\r\n * @en_US Column width\r\n */\r\n span?: number;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular validation rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verification failed prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 输入框的验证函数\r\n * @en_US Validation function of input box\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 外部改变事件\r\n * @en_US External change event\r\n */\r\n change?: () => void;\r\n /**\r\n * @zh_CN 设置验证\r\n * @en_US Set verification\r\n */\r\n setValidators?: () => void;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n\r\n constructor(option: XControlOption = {}) {\r\n super();\r\n if (XIsEmpty(this.value)) this.value = '';\r\n Object.assign(this, option);\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 表单行对象\r\n * @en_US Form row object\r\n */\r\nexport interface XFormRow {\r\n /**\r\n * @zh_CN 行标题\r\n * @en_US Row header\r\n */\r\n title?: string;\r\n /**\r\n * @zh_CN 行图标\r\n * @en_US Row icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 行中的控件\r\n * @en_US Control in row\r\n */\r\n controls: XFormControlOption[];\r\n /**\r\n * @zh_CN 隐藏\r\n * @en_US Hidden\r\n */\r\n hidden?: XBoolean;\r\n}\r\n\r\n/**\r\n * Control\r\n * @selector x-control\r\n * @decorator component\r\n */\r\nexport const XControlPrefix = 'x-control';\r\n\r\n/**\r\n * Control Property\r\n */\r\n@Component({ selector: `${XControlPrefix}-property`, template: '' })\r\nexport class XControlProperty {\r\n /**\r\n * @zh_CN 控件对象\r\n * @en_US Control object\r\n */\r\n readonly option = model.required<XControl>({});\r\n}\r\n\r\n/**\r\n * Form control\r\n */\r\nexport class XFormControl extends UntypedFormControl {\r\n /**\r\n * @zh_CN 提示信息\r\n * @en_US Prompt information\r\n */\r\n messages?: string[] = [];\r\n}\r\n\r\n/**\r\n * @zh_CN 表单控件参数\r\n * @en_US Form control option\r\n */\r\nexport type XFormControlOption =\r\n | XInputControlOption\r\n | XSelectControlOption\r\n | XCascadeControlOption\r\n | XCheckboxControlOption\r\n | XColorPickerControlOption\r\n | XDatePickerControlOption\r\n | XInputNumberControlOption\r\n | XRadioControlOption\r\n | XRateControlOption\r\n | XSliderSelectControlOption\r\n | XSwitchControlOption\r\n | XTimePickerControlOption\r\n | XFindControlOption\r\n | XTemplateControlOption;\r\n\r\n/**\r\n * @zh_CN 表单控件组件\r\n * @en_US Form control component\r\n */\r\nexport type XFormControlComponent =\r\n | XInputComponent\r\n | XSelectComponent\r\n | XCascadeComponent\r\n | XCheckboxComponent\r\n | XColorPickerComponent\r\n | XDatePickerComponent\r\n | XInputNumberComponent\r\n | XRadioComponent\r\n | XRateComponent\r\n | XSliderSelectComponent\r\n | XSwitchComponent\r\n | XTimePickerComponent\r\n | XTextareaComponent\r\n | XFindComponent\r\n | XAutoCompleteComponent;\r\n\r\n/**\r\n * @zh_CN 表单控件类型\r\n * @en_US Form control type\r\n */\r\nexport type XFormControlType =\r\n | XInputControl\r\n | XSelectControl\r\n | XCascadeControl\r\n | XCheckboxControl\r\n | XColorPickerControl\r\n | XDatePickerControl\r\n | XInputNumberControl\r\n | XRadioControl\r\n | XRateControl\r\n | XSliderSelectControl\r\n | XSwitchControl\r\n | XTimePickerControl\r\n | XTextareaControl\r\n | XFindControl\r\n | XAutoCompleteControl;\r\n\r\n/**\r\n * @zh_CN 表单控件类型\r\n * @en_US Form control type\r\n */\r\nexport type XControlType =\r\n | 'input'\r\n | 'select'\r\n | 'cascade'\r\n | 'checkbox'\r\n | 'color-picker'\r\n | 'date-picker'\r\n | 'input-number'\r\n | 'radio'\r\n | 'rate'\r\n | 'slider-select'\r\n | 'switch'\r\n | 'time-picker'\r\n | 'textarea'\r\n | 'find'\r\n | 'auto-complete'\r\n | 'template';\r\n\r\n/**\r\n * Input Control\r\n */\r\nexport interface XInputControlOption extends XControlOption, XInputOption {}\r\nexport class XInputControl extends XControl {\r\n constructor(option: XInputControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Select Control\r\n */\r\nexport interface XSelectControlOption extends XControlOption, XSelectOption {}\r\nexport class XSelectControl extends XControl {\r\n constructor(option: XSelectControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Cascade Control\r\n */\r\nexport interface XCascadeControlOption extends XControlOption, XCascadeOption {}\r\nexport class XCascadeControl extends XControl {\r\n constructor(option: XCascadeControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Checkbox Control\r\n */\r\nexport interface XCheckboxControlOption extends XControlOption, XCheckboxOption {}\r\nexport class XCheckboxControl extends XControl {\r\n constructor(option: XCheckboxControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * ColorPicker Control\r\n */\r\nexport interface XColorPickerControlOption extends XControlOption, XColorPickerOption {}\r\nexport class XColorPickerControl extends XControl {\r\n constructor(option: XColorPickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * DatePicker Control\r\n */\r\nexport interface XDatePickerControlOption extends XControlOption, XDatePickerOption {}\r\nexport class XDatePickerControl extends XControl {\r\n constructor(option: XDatePickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * InputNumber Control\r\n */\r\nexport interface XInputNumberControlOption extends XControlOption, XInputNumberOption {}\r\nexport class XInputNumberControl extends XControl {\r\n constructor(option: XInputNumberControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Radio Control\r\n */\r\nexport interface XRadioControlOption extends XControlOption, XRadioOption {}\r\nexport class XRadioControl extends XControl {\r\n constructor(option: XRadioControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Rate Control\r\n */\r\nexport interface XRateControlOption extends XControlOption, XRateOption {}\r\nexport class XRateControl extends XControl {\r\n constructor(option: XRateControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * SliderSelect Control\r\n */\r\nexport interface XSliderSelectControlOption extends XControlOption, XSliderSelectOption {}\r\nexport class XSliderSelectControl extends XControl {\r\n constructor(option: XSliderSelectControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Switch Control\r\n */\r\nexport interface XSwitchControlOption extends XControlOption, XSwitchOption {}\r\nexport class XSwitchControl extends XControl {\r\n constructor(option: XSwitchControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * TimePicker Control\r\n */\r\nexport interface XTimePickerControlOption extends XControlOption, XTimePickerOption {}\r\nexport class XTimePickerControl extends XControl {\r\n constructor(option: XTimePickerControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Textarea Control\r\n */\r\nexport interface XTextareaControlOption extends XControlOption, XTextareaOption {}\r\nexport class XTextareaControl extends XControl {\r\n constructor(option: XTextareaControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Find Control\r\n */\r\nexport interface XFindControlOption extends XControlOption, XFindOption {}\r\nexport class XFindControl extends XControl {\r\n constructor(option: XFindControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * AutoComplete Control\r\n */\r\nexport interface XAutoCompleteControlOption extends XControlOption, XAutoCompleteOption {}\r\nexport class XAutoCompleteControl extends XControl {\r\n constructor(option: XAutoCompleteControlOption = {}) {\r\n super(option);\r\n }\r\n}\r\n\r\n/**\r\n * Template Control\r\n */\r\nexport interface XTemplateControlOption extends XControlOption, XFormOption {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n AfterViewInit,\r\n OnDestroy,\r\n inject,\r\n viewChild,\r\n signal,\r\n ViewContainerRef,\r\n ComponentRef,\r\n OutputEmitterRef,\r\n effect\r\n} from '@angular/core';\r\nimport { XControlProperty, XFormControlOption, XFormControlComponent, XFormControl } from './form.property';\r\nimport {\r\n Validators,\r\n UntypedFormControl,\r\n ValidatorFn,\r\n FormControlStatus,\r\n FormsModule,\r\n ReactiveFormsModule\r\n} from '@angular/forms';\r\nimport { XIsEmpty, XIsFunction } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { XI18nForm, XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { XFormInputValidator } from '@ng-nest/ui/base-form';\r\nimport { XFormComponent } from './form.component';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { CdkPortalOutlet, ComponentPortal, Portal, PortalModule } from '@angular/cdk/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XAutoCompleteComponent } from '@ng-nest/ui/auto-complete';\r\nimport { XCascadeComponent } from '@ng-nest/ui/cascade';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XColorPickerComponent } from '@ng-nest/ui/color-picker';\r\nimport { XDatePickerComponent } from '@ng-nest/ui/date-picker';\r\nimport { XFindComponent } from '@ng-nest/ui/find';\r\nimport { XInputNumberComponent } from '@ng-nest/ui/input-number';\r\nimport { XRadioComponent } from '@ng-nest/ui/radio';\r\nimport { XRateComponent } from '@ng-nest/ui/rate';\r\nimport { XSelectComponent } from '@ng-nest/ui/select';\r\nimport { XSliderSelectComponent } from '@ng-nest/ui/slider-select';\r\nimport { XSwitchComponent } from '@ng-nest/ui/switch';\r\nimport { XTextareaComponent } from '@ng-nest/ui/textarea';\r\nimport { XTimePickerComponent, XTimePickerModule } from '@ng-nest/ui/time-picker';\r\n\r\n@Component({\r\n selector: 'x-control',\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n PortalModule,\r\n\r\n XInputComponent,\r\n XSelectComponent,\r\n XCascadeComponent,\r\n XCheckboxComponent,\r\n XColorPickerComponent,\r\n XDatePickerComponent,\r\n XInputNumberComponent,\r\n XRadioComponent,\r\n XRateComponent,\r\n XSliderSelectComponent,\r\n XSwitchComponent,\r\n XTimePickerModule,\r\n XTextareaComponent,\r\n XFindComponent,\r\n XAutoCompleteComponent\r\n ],\r\n templateUrl: './control.component.html',\r\n styleUrls: ['./control.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XControlComponent extends XControlProperty implements OnInit, AfterViewInit, OnDestroy {\r\n private i18n = inject(XI18nService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private _sharedProps = signal(['span', 'direction', 'justify', 'align', 'labelWidth', 'labelAlign']);\r\n private validatorFns = signal<ValidatorFn[]>([]);\r\n private formControl = signal<UntypedFormControl | null>(null);\r\n private _unSubject = new Subject<void>();\r\n value = signal<any>(null);\r\n\r\n form = inject(XFormComponent, { optional: true })!;\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.form as XI18nForm)), { initialValue: zh_CN.form });\r\n portal = signal<Portal<any> | null>(null);\r\n componentPortal!: ComponentPortal<XFormControlComponent>;\r\n componentRef!: ComponentRef<XFormControlComponent>;\r\n portalOutlet = viewChild.required(CdkPortalOutlet);\r\n\r\n constructor() {\r\n super();\r\n\r\n effect(\r\n () => {\r\n this.formControl()!.patchValue(this.value());\r\n },\r\n { allowSignalWrites: true }\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.setOption();\r\n\r\n this.formControl.set(\r\n new UntypedFormControl(this.option().value, {\r\n nonNullable: this.option().nonNullable\r\n })\r\n );\r\n this.setValidators();\r\n this.formControl()!\r\n .statusChanges.pipe(takeUntil(this._unSubject))\r\n .subscribe((x) => {\r\n this.setMessages(x);\r\n });\r\n this.formControl()!\r\n .valueChanges.pipe(takeUntil(this._unSubject))\r\n .subscribe((x) => {\r\n this.componentRef.instance.writeValue(x);\r\n });\r\n this.option().setValidators = () => this.setValidators();\r\n this.form.formGroup().addControl(this.option().id, this.formControl());\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentPortal = this.createComponentPortal(this.option());\r\n this.componentRef = this.portalOutlet().attachComponentPortal(this.componentPortal);\r\n\r\n for (let key in this.option()) {\r\n if (key in this.componentRef.instance) {\r\n const val = (this.componentRef.instance as any)[key];\r\n if (XIsFunction(val)) {\r\n const valSymbols = Object.getOwnPropertySymbols(val);\r\n if (valSymbols.length !== 1) break;\r\n const valSymbol = val[valSymbols[0]];\r\n if (valSymbol.hasOwnProperty('transformFn')) {\r\n // input\r\n this.componentRef.setInput(key, this.option()[key]);\r\n } else {\r\n // signal\r\n val.set(this.option()[key]);\r\n }\r\n } else if (val instanceof OutputEmitterRef) {\r\n // output\r\n val.subscribe((x) => this.option()[key](x));\r\n }\r\n }\r\n }\r\n\r\n // value\r\n if (this.option().value !== undefined) {\r\n this.componentRef.instance.writeValue(this.option().value);\r\n }\r\n\r\n this.value = this.componentRef.instance.value;\r\n\r\n this.form.controlTypes[this.option().id] = this.option();\r\n this.form.controlComponents[this.option().id] = this.componentRef.instance;\r\n }\r\n\r\n ngOnDestroy() {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setValidators() {\r\n this.validatorFns.set([]);\r\n if (this.option().disabled || this.form.disabled()) {\r\n this.formControl()!.disable();\r\n } else {\r\n this.formControl()!.enable();\r\n }\r\n if (this.option().required && !this.form.disabled()) {\r\n this.validatorFns.update((x) => [...x, Validators.required]);\r\n }\r\n if (this.option().pattern) {\r\n this.setPattern();\r\n }\r\n if (XIsFunction(this.option().inputValidator)) {\r\n this.validatorFns.update((x) => [...x, XFormInputValidator(this.option().inputValidator!)]);\r\n }\r\n this.formControl()!.setValidators(this.validatorFns());\r\n this.formControl()!.updateValueAndValidity();\r\n }\r\n\r\n setOption() {\r\n for (let prop of this._sharedProps()) {\r\n if (XIsEmpty(this.option()[prop])) {\r\n this.option.update((x) => {\r\n x[prop] = (this.form as any)[prop]();\r\n return x;\r\n });\r\n }\r\n }\r\n if (XIsEmpty(this.option().label)) {\r\n this.option.update((x) => {\r\n x.label = '';\r\n return x;\r\n });\r\n }\r\n this.option.update((x) => {\r\n x.label = `${this.option().label}${this.form.labelSuffix()}`;\r\n return x;\r\n });\r\n }\r\n\r\n setPattern() {\r\n const pattern = this.option().pattern;\r\n if (Array.isArray(pattern)) {\r\n for (const pt of pattern) {\r\n this.validatorFns.update((x) => [...x, Validators.pattern(pt)]);\r\n }\r\n } else {\r\n this.validatorFns.update((x) => [...x, Validators.pattern(pattern as RegExp)]);\r\n }\r\n }\r\n\r\n getPatternMsg(pattern: string) {\r\n const controlPattern = this.option().pattern;\r\n if (Array.isArray(controlPattern)) {\r\n return (this.option().message as Array<any>)[controlPattern.findIndex((x) => String(x) === pattern)];\r\n } else {\r\n return this.option().message;\r\n }\r\n }\r\n\r\n setMessages(state: FormControlStatus) {\r\n let control = this.formControl()! as XFormControl;\r\n if (state === 'INVALID' && this.formControl()!.errors !== null) {\r\n let messages: string[] = [];\r\n for (const key in control.errors) {\r\n const label = this.option().label || this.option().id;\r\n if (key === 'required') {\r\n messages = [...messages, `${label} ${this.locale().required || 'required'}`];\r\n } else if (key === 'pattern') {\r\n messages = [...messages, `${label} ${this.getPatternMsg(control.errors[key].requiredPattern)}`];\r\n } else if (key === 'inputValidator') {\r\n messages = [...messages, `${label} ${this.option().message}`];\r\n }\r\n }\r\n control.messages = messages;\r\n } else if (state === 'VALID') {\r\n control.messages = [];\r\n }\r\n }\r\n\r\n createComponentPortal(option: XFormControlOption) {\r\n switch (option.control) {\r\n case 'input':\r\n return new ComponentPortal(XInputComponent, this.viewContainerRef);\r\n case 'select':\r\n return new ComponentPortal(XSelectComponent, this.viewContainerRef);\r\n case 'checkbox':\r\n return new ComponentPortal(XCheckboxComponent, this.viewContainerRef);\r\n case 'radio':\r\n return new ComponentPortal(XRadioComponent, this.viewContainerRef);\r\n case 'switch':\r\n return new ComponentPortal(XSwitchComponent, this.viewContainerRef);\r\n case 'rate':\r\n return new ComponentPortal(XRateComponent, this.viewContainerRef);\r\n case 'date-picker':\r\n return new ComponentPortal(XDatePickerComponent, this.viewContainerRef);\r\n case 'time-picker':\r\n return new ComponentPortal(XTimePickerComponent, this.viewContainerRef);\r\n case 'input-number':\r\n return new ComponentPortal(XInputNumberComponent, this.viewContainerRef);\r\n case 'slider-select':\r\n return new ComponentPortal(XSliderSelectComponent, this.viewContainerRef);\r\n case 'cascade':\r\n return new ComponentPortal(XCascadeComponent, this.viewContainerRef);\r\n case 'color-picker':\r\n return new ComponentPortal(XColorPickerComponent, this.viewContainerRef);\r\n case 'textarea':\r\n return new ComponentPortal(XTextareaComponent, this.viewContainerRef);\r\n case 'find':\r\n return new ComponentPortal(XFindComponent, this.viewContainerRef);\r\n case 'auto-complete':\r\n return new ComponentPortal(XAutoCompleteComponent, this.viewContainerRef);\r\n default:\r\n return new ComponentPortal(XInputComponent, this.viewContainerRef);\r\n }\r\n }\r\n}\r\n","<div class=\"x-control\" [formGroup]=\"form.formGroup()\">\r\n <ng-template cdkPortalOutlet></ng-template>\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n AfterViewInit,\r\n computed\r\n} from '@angular/core';\r\nimport {\r\n XFormProperty,\r\n XFormRow,\r\n XFormPrefix,\r\n XFormControlOption,\r\n XFormControl,\r\n XFormControlComponent,\r\n XControl\r\n} from './form.property';\r\nimport { XIsChange } from '@ng-nest/ui/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XColComponent, XRowComponent } from '@ng-nest/ui/layout';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XControlComponent } from './control.component';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\n\r\n@Component({\r\n selector: `${XFormPrefix}`,\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n NgTemplateOutlet,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n XRowComponent,\r\n XColComponent,\r\n XOutletDirective,\r\n XIconComponent,\r\n XControlComponent\r\n ],\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XFormComponent extends XFormProperty implements OnChanges, AfterViewInit {\r\n controlsType = computed(() => {\r\n const controls = this.controls();\r\n return controls && controls.length > 0 && (controls[0] as XFormRow).controls ? 'rows' : 'controls';\r\n });\r\n controlComponents: { [property: string]: XFormControlComponent } = {};\r\n controlTypes: { [property: string]: XControl } = {};\r\n formId = Number(Math.random().toString().substring(2, 6) + Date.now()).toString(36);\r\n classMap = computed(() => ({\r\n [`${XFormPrefix}-${this.controlsType()}`]: true\r\n }));\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { disabled } = changes;\r\n XIsChange(disabled) && this.setDisabled();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setDisabled();\r\n }\r\n\r\n setDisabled() {\r\n if (Object.keys(this.controlComponents).length === 0) return;\r\n if (this.disabled()) {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.disabledSignal.set(true);\r\n control.requiredSignal.set(false);\r\n control.patternSignal.set([]);\r\n type.setValidators && type.setValidators();\r\n }\r\n } else {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.disabledSignal.set(type.disabled!);\r\n control.requiredSignal.set(type.required!);\r\n control.patternSignal.set(type.pattern as RegExp | RegExp[]);\r\n type.setValidators && type.setValidators();\r\n }\r\n }\r\n this.formGroup().updateValueAndValidity();\r\n }\r\n\r\n setValidator() {\r\n for (let key in this.controlComponents) {\r\n let [control, type] = [this.controlComponents[key], this.controlTypes[key]];\r\n control.formControlValidator();\r\n type.setValidators && type.setValidators();\r\n control.cdr.detectChanges();\r\n }\r\n }\r\n\r\n resetValidator() {\r\n for (let key in this.controlComponents) {\r\n let [control] = [this.controlComponents[key]];\r\n control.validatorSignal.set(false);\r\n control.cdr.detectChanges();\r\n }\r\n }\r\n\r\n getValidatorMessages(): string[] {\r\n let result: string[] = [];\r\n if (this.formGroup().valid) return result;\r\n else {\r\n const eachControls = (array: XFormControlOption[]) => {\r\n for (const ctr of array) {\r\n const formCtr = this.formGroup().controls[ctr.id] as XFormControl;\r\n if (formCtr && formCtr.invalid) {\r\n result = [...result, ...(formCtr.messages as string[])];\r\n }\r\n }\r\n };\r\n if (this.controlsType() === 'rows') {\r\n for (const row of this.controls() as XFormRow[]) {\r\n eachControls(row.controls);\r\n }\r\n } else {\r\n eachControls(this.controls() as XFormControlOption[]);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n onSubmit(event: SubmitEvent) {\r\n this.setValidator();\r\n this.xSubmit.emit(event);\r\n }\r\n}\r\n","<form\r\n #form\r\n class=\"x-form\"\r\n [class.x-form-has-content]=\"content.innerHTML.trim()\"\r\n [formGroup]=\"formGroup()\"\r\n [style.width]=\"width()\"\r\n [style.padding-bottom]=\"controlsType() === 'controls' ? this.space() : '0px'\"\r\n [ngClass]=\"classMap()\"\r\n (ngSubmit)=\"onSubmit($event)\"\r\n>\r\n @switch (controlsType()) {\r\n @case ('controls') {\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: controls() }\"> </ng-container>\r\n }\r\n @case ('rows') {\r\n <ng-container *ngTemplateOutlet=\"rowsTemp; context: { rows: controls() }\"></ng-container>\r\n }\r\n }\r\n <div class=\"x-form-content\" #content><ng-content></ng-content></div>\r\n</form>\r\n\r\n<ng-template #rowsTemp let-rows=\"rows\">\r\n @for (row of rows; track row) {\r\n <div class=\"x-form-category\" [hidden]=\"row.hidden\">\r\n <ng-container *ngTemplateOutlet=\"titleTemp; context: { row: row }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"controlsTemp; context: { controls: row.controls }\"></ng-container>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #controlsTemp let-controls=\"controls\">\r\n <x-row [space]=\"space()\">\r\n @for (control of controls; track control) {\r\n <x-col [style.padding-top]=\"space()\" [span]=\"!control.span ? span() : control.span\" [hidden]=\"control.hidden\">\r\n <ng-container *xOutlet=\"controlTpl()[control.id]; context: { $option: control }\">\r\n <x-control [option]=\"control\"></x-control>\r\n </ng-container>\r\n </x-col>\r\n }\r\n </x-row>\r\n</ng-template>\r\n\r\n<ng-template #titleTemp let-row=\"row\">\r\n <label class=\"x-form-title\">\r\n @if (row.icon) {\r\n <x-icon [type]=\"row.icon\"></x-icon>\r\n }\r\n <span>{{ row.title }}</span>\r\n </label>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XFormComponent } from './form.component';\r\nimport { XControlComponent } from './control.component';\r\n\r\n@NgModule({\r\n exports: [XFormComponent, XControlComponent],\r\n imports: [XFormComponent, XControlComponent]\r\n})\r\nexport class XFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|