{"version":3,"file":"ng-nest-ui-table.mjs","sources":["../../../../lib/ng-nest/ui/table/table.property.ts","../../../../lib/ng-nest/ui/table/table.token.ts","../../../../lib/ng-nest/ui/table/table-head.component.ts","../../../../lib/ng-nest/ui/table/table-head.component.html","../../../../lib/ng-nest/ui/table/table-foot.component.ts","../../../../lib/ng-nest/ui/table/table-foot.component.html","../../../../lib/ng-nest/ui/table/checkbox-drag-select.service.ts","../../../../lib/ng-nest/ui/table/checkbox-drag-select.directive.ts","../../../../lib/ng-nest/ui/table/table-body.component.ts","../../../../lib/ng-nest/ui/table/table-body.component.html","../../../../lib/ng-nest/ui/table/table.component.ts","../../../../lib/ng-nest/ui/table/table.component.html","../../../../lib/ng-nest/ui/table/table.module.ts","../../../../lib/ng-nest/ui/table/ng-nest-ui-table.ts"],"sourcesContent":["import {\r\n  XProperty,\r\n  XPropertyFunction,\r\n  XToCssPixelValue,\r\n  XToBoolean,\r\n  XToNumber,\r\n  XToDataConvert\r\n} from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, model, output } from '@angular/core';\r\nimport { XPaginationInputIndexSizeSureType, XPaginationSizeData } from '@ng-nest/ui/pagination';\r\nimport { XSelectNode } from '@ng-nest/ui/select';\r\nimport type {\r\n  XNumber,\r\n  XSort,\r\n  XBoolean,\r\n  XData,\r\n  XTextAlign,\r\n  XSize,\r\n  XParentIdentityProperty,\r\n  XIdentityProperty,\r\n  XTemplate,\r\n  XQuery,\r\n  XDataArray\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Table\r\n * @selector x-table\r\n * @decorator component\r\n */\r\nexport const XTablePrefix = 'x-table';\r\nconst X_TABLE_CONFIG_NAME = 'table';\r\n\r\n/**\r\n * Table Property\r\n */\r\n@Component({ selector: `${XTablePrefix}-property`, template: '' })\r\nexport class XTableProperty extends XPropertyFunction(X_TABLE_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 行数据\r\n   * @en_US Row data\r\n   */\r\n  readonly data = input<XData<XTableRow>, XData<XTableRow>>([], { transform: XToDataConvert });\r\n  /**\r\n   * @zh_CN 列集合\r\n   * @en_US Column set\r\n   */\r\n  readonly columns = input<XTableColumn[]>([]);\r\n  /**\r\n   * @zh_CN 表头高度，单位 px\r\n   * @en_US Header height, unit px\r\n   */\r\n  readonly headerHeight = input<number | null, XNumber>(this.config?.headerHeight ?? null, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 行高，单位 px\r\n   * @en_US Row height, unit px\r\n   */\r\n  readonly rowHeight = input<number, XNumber>(this.config?.rowHeight ?? 42, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 是否启用加载 loading\r\n   * @en_US Whether to enable loading\r\n   */\r\n  readonly loading = input<boolean, XBoolean>(this.config?.loading ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 是否展示列边框\r\n   * @en_US Whether to show column borders\r\n   */\r\n  readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 是否显示列头\r\n   * @en_US Whether to display the column headers\r\n   */\r\n  readonly showHeader = input<boolean, XBoolean>(this.config?.showHeader ?? true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 列头显示位置\r\n   * @en_US Whether to display the column headers\r\n   */\r\n  readonly headerPosition = input<XTableHeaderPosition>(this.config?.headerPosition ?? 'top');\r\n  /**\r\n   * @zh_CN 列内容支持 innerHTML 渲染 html 标签\r\n   * @en_US Column content supports innerHTML rendering of HTML tags\r\n   */\r\n  readonly bodyInnerHTML = input<boolean, XBoolean>(this.config?.bodyInnerHTML ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 当前选中行数据\r\n   * @en_US Currently selected row data\r\n   */\r\n  readonly activatedRow = model<XTableRow>();\r\n  /**\r\n   * @zh_CN 列头自定义模板，通过 key-value 的方式指定每列的模版\r\n   * @en_US Column header custom template\r\n   */\r\n  readonly headColumnTpl = input<XTableTemplate>({});\r\n  /**\r\n   * @zh_CN 列头单元格自定义模板，优先级低于列头自定义模板\r\n   * @en_US Column header custom template\r\n   */\r\n  readonly headThTpl = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 列内容自定义模板，通过 key-value 的方式指定每列的模版\r\n   * @en_US Column content custom template\r\n   */\r\n  readonly bodyColumnTpl = input<XTableTemplate>({});\r\n  /**\r\n   * @zh_CN 单元格的自定义模板，优先级低于列内容自定义模板\r\n   * @en_US Custom template of cells\r\n   */\r\n  readonly bodyTdTpl = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 行条件样式\r\n   * @en_US Row condition class\r\n   */\r\n  readonly rowClass = input<(row: XTableRow, index: number) => { [className: string]: boolean }>();\r\n  /**\r\n   * @zh_CN 列头搜索自定义模板\r\n   * @en_US Line head search custom template\r\n   */\r\n  readonly headSearchTpl = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 排序点击的事件\r\n   * @en_US Sort click events\r\n   */\r\n  readonly sortChange = output<XSort[]>();\r\n  /**\r\n   * @zh_CN 列头 checkbox 事件\r\n   * @en_US head checkbox event\r\n   */\r\n  readonly headCheckboxChange = output<XTableHeadCheckbox>();\r\n  /**\r\n   * @zh_CN body checkbox 事件\r\n   * @en_US head checkbox event\r\n   */\r\n  readonly bodyCheckboxChange = output<XTableRow>();\r\n  /**\r\n   * @zh_CN 允许行点击选中当前行\r\n   * @en_US Allow row click to select\r\n   */\r\n  readonly allowSelectRow = input<boolean, XBoolean>(this.config?.allowSelectRow ?? true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 允许行点击选中 checkbox\r\n   * @en_US Allow lines to click checkbox\r\n   */\r\n  readonly allowCheckRow = input<boolean, XBoolean>(this.config?.allowCheckRow ?? true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 开启虚拟滚动\r\n   * @en_US Turn on virtual scrolling\r\n   */\r\n  readonly virtualScroll = input<boolean, XBoolean>(this.config?.virtualScroll ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN body 数据高度，只有开启虚拟滚动的时候生效\r\n   * @en_US body data height\r\n   */\r\n  readonly bodyHeight = input<number | undefined, XNumber>(undefined, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN itemSize，对应 cdk scroll 中的参数\r\n   * @en_US itemSize，corresponding to the parameters in cdk scroll\r\n   */\r\n  readonly itemSize = input<number, XNumber>(this.config?.itemSize ?? 42, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 超出可视窗口缓冲区的最小值，对应 cdk scroll 中的参数\r\n   * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n   */\r\n  readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 渲染新数据缓冲区的像素，对应 cdk scroll 中的参数\r\n   * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n   */\r\n  readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 自适应高度，table 高度等于屏幕高度减掉此处设置的数值\r\n   * @en_US Adaptive height, table height is equal to the screen height minus the value set here\r\n   */\r\n  readonly adaptionHeight = input<number | undefined, XNumber>(undefined, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 文档高度百分比，弹窗百分比高度用到\r\n   * @en_US Document height percentage, used by pop-up window percentage height\r\n   */\r\n  readonly docPercent = input<number, XNumber>(1, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN checkbox 列初始选中的数据，列中激活 checkbox\r\n   * @en_US Checkbox column initially selected data, checkbox is activated in column\r\n   */\r\n  readonly checkedRow = input<{ [property: string]: any[] }>({});\r\n  /**\r\n   * @zh_CN 禁用拖动 checkbox 批量选中/取消\r\n   * @en_US Disable dragging checkboxes for batch selection/cancellation\r\n   */\r\n  readonly checkboxDragDisabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 如果 data 是函数类型，可以通过此参数控制请求，常用于弹框中的表格，弹出后再请求\r\n   * @en_US If data is a function type, you can use this parameter to control the request, which is often used in the form in the pop-up box, and then request it after it pops up\r\n   */\r\n  readonly manual = model<boolean>(true);\r\n  /**\r\n   * @zh_CN 滚动区域高宽\r\n   * @en_US Height and width of rolling area\r\n   */\r\n  readonly scroll = input<{ x: number; y: number }>();\r\n  /**\r\n   * @zh_CN 表格页头\r\n   * @en_US Table header\r\n   */\r\n  readonly header = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 表格页尾\r\n   * @en_US Table footer\r\n   */\r\n  readonly footer = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 单元格配置\r\n   * @en_US Cell config\r\n   */\r\n  readonly cellConfig = input<XTableCellConfig>();\r\n  /**\r\n   * @zh_CN 尺寸\r\n   * @en_US Size\r\n   */\r\n  readonly rowSize = input<XSize>(this.config?.rowSize ?? 'medium');\r\n  /**\r\n   * @zh_CN 分页器位置\r\n   * @en_US Pagination position\r\n   */\r\n  readonly paginationPosition = input<XPaginationPosition>('bottom-left');\r\n  /**\r\n   * @zh_CN 隐藏表格外边框\r\n   * @en_US Hidden table wrap border\r\n   */\r\n  readonly hiddenWrapBorder = input<boolean, XBoolean>(this.config?.hiddenWrapBorder ?? false, {\r\n    transform: XToBoolean\r\n  });\r\n  /**\r\n   * @deprecated useless\r\n   * @zh_CN 隐藏分页器按钮边框\r\n   * @en_US Hidden pagination button border\r\n   */\r\n  readonly hiddenPaginationBorder = input<boolean, XBoolean>(this.config?.hiddenPaginationBorder ?? false, {\r\n    transform: XToBoolean\r\n  });\r\n  /**\r\n   * @zh_CN 显示分页器\r\n   * @en_US Pagination position\r\n   */\r\n  readonly showPagination = input<boolean, XBoolean>(this.config?.showPagination ?? true, {\r\n    transform: XToBoolean\r\n  });\r\n  /**\r\n   * @zh_CN 树形表格\r\n   * @en_US Tree table\r\n   */\r\n  readonly treeTable = input<boolean, XBoolean>(this.config?.treeTable ?? false, {\r\n    transform: XToBoolean\r\n  });\r\n  /**\r\n   * @zh_CN 树形表格展开所有节点\r\n   * @en_US Tree table\r\n   */\r\n  readonly expandedAll = input<boolean, XBoolean>(this.config?.expandedAll ?? false, {\r\n    transform: XToBoolean\r\n  });\r\n  /**\r\n   * @zh_CN 默认展开的层级，-1 不展开\r\n   * @en_US Default expanded level\r\n   */\r\n  readonly expandedLevel = input<number, XNumber>(this.config?.expandedLevel ?? -1, {\r\n    transform: XToNumber\r\n  });\r\n  /**\r\n   * @zh_CN 展开的节点\r\n   * @en_US Expanded node\r\n   */\r\n  readonly expanded = input<any[]>([]);\r\n  /**\r\n   * @zh_CN 自定义展开内容\r\n   * @en_US Customized expansion content\r\n   */\r\n  readonly expandTpl = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 显示数据为空的提示\r\n   * @en_US Display a prompt with empty data\r\n   */\r\n  readonly showEmpty = input<boolean, XBoolean>(this.config?.showEmpty ?? true, {\r\n    transform: XToBoolean\r\n  });\r\n  /**\r\n   * @zh_CN 数据为空的提示图片地址或自定义模板\r\n   * @en_US Picture address or custom template\r\n   */\r\n  readonly emptyImg = input<XTemplate | undefined>(this.config?.emptyImg ?? undefined);\r\n  /**\r\n   * @zh_CN 数据为空的提示内容或自定义模板\r\n   * @en_US Content or custom template\r\n   */\r\n  readonly emptyContent = input<XTemplate | undefined>(this.config?.emptyContent ?? undefined);\r\n  /**\r\n   * @zh_CN 当前页码\r\n   * @en_US Current page number\r\n   */\r\n  readonly index = model<number>(this.config?.index ?? 1);\r\n  /**\r\n   * @zh_CN 每页显示条数\r\n   * @en_US Number of items displayed per page\r\n   */\r\n  readonly size = model<number>(this.config?.size ?? 10);\r\n  /**\r\n   * @zh_CN 总数\r\n   * @en_US Total\r\n   */\r\n  readonly total = model<number>(0);\r\n  /**\r\n   * @zh_CN 查询条件\r\n   * @en_US Query conditions\r\n   */\r\n  readonly query = model<XQuery>({});\r\n  /**\r\n   * @zh_CN 最多显示的分页数量\r\n   * @en_US The largest number of pages display\r\n   */\r\n  readonly pageLinkSize = input<number, XNumber>(this.config?.pageLinkSize ?? 5, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 显示首尾页跳转\r\n   * @en_US Display the first and last page\r\n   */\r\n  readonly showEllipsis = input<boolean, XBoolean>(this.config?.showEllipsis ?? true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 显示总条数\r\n   * @en_US Display the total\r\n   */\r\n  readonly showTotal = input<boolean, XBoolean>(this.config?.showTotal ?? true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 按钮间距\r\n   * @en_US Button spacing\r\n   */\r\n  readonly space = input<string, XNumber>(this.config?.space ?? '0.25rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 添加背景色\r\n   * @en_US Show background\r\n   */\r\n  readonly showBackground = input<boolean, XBoolean>(this.config?.showBackground ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 显示分页条数\r\n   * @en_US Show size\r\n   */\r\n  readonly showSize = input<boolean, XBoolean>(this.config?.showSize ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 分页条数选择框的宽度\r\n   * @en_US size with select\r\n   */\r\n  readonly sizeWidth = input<string, XNumber>(this.config?.sizeWidth ?? '6.875rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 显示输入分页条数（不能跟下拉选项同时使用）\r\n   * @en_US Display the number of input page breaks (cannot exist with the drop-down options of page breaks)\r\n   */\r\n  readonly showInputSize = input<boolean, XBoolean>(this.config?.showInputSize ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 显示输入分页框的 tooltip 提示信息，默认显示\r\n   * @en_US show enter the tooltip prompt information for the pagination box, which will be displayed by default based on the confirmation of the input\r\n   */\r\n  readonly showInputSizeTooltipText = input<boolean, XBoolean>(this.config?.showInputSizeTooltipText ?? true, {\r\n    transform: XToBoolean\r\n  });\r\n  /**\r\n   * @zh_CN 输入分页框的 tooltip 提示信息，默认根据输入确认改变的方式来显示\r\n   * @en_US Enter the tooltip prompt information for the pagination box, which will be displayed by default based on the confirmation of the input\r\n   */\r\n  readonly inputSizeTooltipText = input<string>(this.config?.inputSizeTooltipText ?? '');\r\n  /**\r\n   * @zh_CN 分页条数输入框的宽度\r\n   * @en_US size with input\r\n   */\r\n  readonly inputSizeWidth = input<string, XNumber>(this.config?.sizeWidth ?? '3.125rem', {\r\n    transform: XToCssPixelValue\r\n  });\r\n  /**\r\n   * @zh_CN 分页选择的数据项\r\n   * @en_US Paging choose items of data\r\n   */\r\n  readonly sizeData = input<XDataArray<XSelectNode>>(this.config?.sizeData ?? XPaginationSizeData);\r\n  /**\r\n   * @zh_CN 禁用整个分页\r\n   * @en_US disabled\r\n   */\r\n  readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 显示跳转输入框\r\n   * @en_US Show size\r\n   */\r\n  readonly showJump = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 显示跳转输入框的 tooltip 提示信息，默认显示\r\n   * @en_US Show the tooltip prompt information for jumping to the input box is displayed by default based on the confirmation of input changes\r\n   */\r\n  readonly showJumpTooltipText = input<boolean, XBoolean>(this.config?.showJumpTooltipText ?? true, {\r\n    transform: XToBoolean\r\n  });\r\n  /**\r\n   * @zh_CN 跳转输入框的 tooltip 提示信息，默认根据输入确认改变的方式来显示\r\n   * @en_US The tooltip prompt information for jumping to the input box is displayed by default based on the confirmation of input changes\r\n   */\r\n  readonly jumpTooltipText = input<string>(this.config?.jumpTooltipText ?? '');\r\n  /**\r\n   * @zh_CN 跳转页的宽度\r\n   * @en_US size with\r\n   */\r\n  readonly jumpWidth = input<string, XNumber>(this.config?.jumpWidth ?? '3.125rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 总数自定义模板\r\n   * @en_US Total template\r\n   */\r\n  readonly totalTpl = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 简单分页\r\n   * @en_US Simple\r\n   */\r\n  readonly simple = input<boolean, XBoolean>(this.config?.simple ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 简单分页输入框宽度\r\n   * @en_US Simple index with\r\n   */\r\n  readonly simpleIndexWidth = input<string, XNumber>(this.config?.simpleIndexWidth ?? '8.125rem', {\r\n    transform: XToCssPixelValue\r\n  });\r\n  /**\r\n   * @zh_CN 输入确认改变的方式，针对输入分页大小和输入跳转页\r\n   * @en_US The method for confirming changes in input is based on the input page size and input jump page\r\n   */\r\n  readonly inputIndexSizeSureType = input<XPaginationInputIndexSizeSureType>(\r\n    this.config?.inputIndexSizeSureType ?? 'enter'\r\n  );\r\n  /**\r\n   * @zh_CN 行点击事件\r\n   * @en_US Row click event\r\n   */\r\n  readonly rowClick = output<XTableRow>();\r\n  /**\r\n   * @zh_CN 列头拖动开始事件，返回拖动的列\r\n   * @en_US Column Header Drag End Event\r\n   */\r\n  readonly columnDragStarted = output<XTableColumn>();\r\n  /**\r\n   * @zh_CN 列头拖动结束事件，返回拖动的列\r\n   * @en_US The column header is dragging, and the event is triggered when the order is changed\r\n   */\r\n  readonly columnDragEnded = output<XTableColumn>();\r\n  /**\r\n   * @zh_CN 当用户把一个条目投放进该容器时就会触发，拖动放开的事件，返回拖动排序后的列数据\r\n   * @en_US The column header is dragging, and the event is triggered when the order is changed\r\n   */\r\n  readonly columnDropListDropped = output<XTableColumn[]>();\r\n  /**\r\n   * @zh_CN 开始拖动列宽的事件\r\n   * @en_US Event to started drag column width\r\n   */\r\n  readonly columnDragWidthStarted = output<XTableDragWidthEvent>();\r\n  /**\r\n   * @zh_CN 正在拖动列宽时的事件\r\n   * @en_US Event to moved drag column width\r\n   */\r\n  readonly columnDragWidthMoved = output<XTableDragWidthEvent>();\r\n  /**\r\n   * @zh_CN 结束拖动列宽的事件\r\n   * @en_US Event to ended drag column width\r\n   */\r\n  readonly columnDragWidthEnded = output<XTableDragWidthEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\nexport interface XTableRow extends XParentIdentityProperty<XTableRow> {\r\n  /**\r\n   * @zh_CN 展开\r\n   * @en_US Unfold\r\n   */\r\n  expanded?: boolean;\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 Column parameter\r\n */\r\nexport interface XTableColumn extends XIdentityProperty {\r\n  /**\r\n   * @zh_CN 类型\r\n   * @en_US Types of\r\n   */\r\n  type?: XColumnType;\r\n  /**\r\n   * @zh_CN 宽度\r\n   * @en_US Width\r\n   */\r\n  width?: number;\r\n  /**\r\n   * @zh_CN flex 布局宽度\r\n   * @en_US Flex layout width\r\n   */\r\n  flex?: number;\r\n  /**\r\n   * @zh_CN 查询字段\r\n   * @en_US Query field\r\n   */\r\n  search?: boolean;\r\n  /**\r\n   * @zh_CN 排序字段\r\n   * @en_US Sort field\r\n   */\r\n  sort?: boolean;\r\n  /**\r\n   * @zh_CN 固定列，距离左边的距离\r\n   * @en_US Fixed column, distance from left\r\n   */\r\n  left?: number;\r\n  /**\r\n   * @zh_CN 固定列，距离右边的距离\r\n   * @en_US Fixed column, distance from right\r\n   */\r\n  right?: number;\r\n  /**\r\n   * @zh_CN 操作按钮\r\n   * @en_US Operation button\r\n   */\r\n  action?: boolean;\r\n  /**\r\n   * @zh_CN type 为 checkbox 时绑定行点击选中事件\r\n   * @en_US Bind row click selection event when type is checkbox\r\n   */\r\n  rowChecked?: boolean;\r\n  /**\r\n   * @zh_CN type 为 expand 时绑定行点击展开事件\r\n   * @en_US Bind row click selection event when type is expand\r\n   */\r\n  rowExpand?: boolean;\r\n  /**\r\n   * @zh_CN 文字对齐方式\r\n   * @en_US Text alignment\r\n   */\r\n  textAlign?: XTextAlign;\r\n  /**\r\n   * @zh_CN 拖动列宽，需要设置列的初始宽度 width\r\n   * @en_US Drag the column width, you need to set the initial width of the column width\r\n   */\r\n  dragWidth?: boolean;\r\n  /**\r\n   * @zh_CN 正在拖动列宽\r\n   * @en_US Dragging width\r\n   */\r\n  draggingWidth?: boolean;\r\n  /**\r\n   * @zh_CN 开始拖动列宽的事件\r\n   * @en_US Event to started drag column width\r\n   */\r\n  dragWidthStarted?: (event: XTableDragWidthEvent) => void;\r\n  /**\r\n   * @zh_CN 正在拖动列宽时的事件\r\n   * @en_US Event to moved drag column width\r\n   */\r\n  dragWidthMoved?: (event: XTableDragWidthEvent) => void;\r\n  /**\r\n   * @zh_CN 结束拖动列宽的事件\r\n   * @en_US Event to ended drag column width\r\n   */\r\n  dragWidthEnded?: (event: XTableDragWidthEvent) => void;\r\n  /**\r\n   * @zh_CN 拖动列\r\n   * @en_US Drag the column\r\n   */\r\n  dragColumn?: boolean;\r\n  /**\r\n   * @zh_CN 正在拖动列\r\n   * @en_US Dragging column\r\n   */\r\n  dragging?: boolean;\r\n  /**\r\n   * @zh_CN 头部显示 checkbox\r\n   * @en_US Head shows checkbox\r\n   */\r\n  headChecked?: boolean;\r\n  /**\r\n   * @zh_CN 头部显示 expand\r\n   * @en_US Head shows expand\r\n   */\r\n  headExpand?: boolean;\r\n  /**\r\n   * @zh_CN 列内容支持 innerHTML 渲染 html 标签\r\n   * @en_US Column content supports innerHTML rendering of HTML tags\r\n   */\r\n  innerHTML?: boolean;\r\n  /**\r\n   * @zh_CN 禁用拖动 checkbox 选中/取消\r\n   * @en_US Disable dragging checkboxes for selection/cancellation\r\n   */\r\n  checkboxDragDisabled?: boolean;\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 Column header width drag event\r\n */\r\nexport interface XTableDragWidthEvent {\r\n  /**\r\n   * @zh_CN 拖动的列\r\n   * @en_US Dragged column\r\n   */\r\n  column: XTableColumn;\r\n  /**\r\n   * @zh_CN 列位置，正在拖动的时候指偏移位置\r\n   * @en_US The column position refers to the offset position when dragging\r\n   */\r\n  position: { x: number; y: number };\r\n}\r\n\r\n/**\r\n * @zh_CN 列头 checkbox 事件数据\r\n * @en_US Column header checkbox event data\r\n */\r\nexport interface XTableHeadCheckbox {\r\n  /**\r\n   * @zh_CN 行数据\r\n   * @en_US Row data\r\n   */\r\n  rows: XTableRow[];\r\n  /**\r\n   * @zh_CN checkbox 数据\r\n   * @en_US Checkbox data\r\n   */\r\n  checkbox: { [property: string]: boolean };\r\n}\r\n\r\n/**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell config\r\n */\r\nexport interface XTableCellConfig {\r\n  /**\r\n   * @zh_CN 列单元格配置\r\n   * @en_US Column cell config\r\n   */\r\n  thead?: XTableCellConfigRule;\r\n  /**\r\n   * @zh_CN 行单元格配置\r\n   * @en_US Row config\r\n   */\r\n  tbody?: XTableCellConfigRule;\r\n}\r\n\r\n/**\r\n * @zh_CN 单元格配置规则\r\n * @en_US Cell config rules\r\n */\r\nexport interface XTableCellConfigRule {\r\n  /**\r\n   * @zh_CN grid 布局下定义列宽度\r\n   * @en_US Define column width under grid layout\r\n   */\r\n  gridTemplateColumns?: string;\r\n  /**\r\n   * @zh_CN 单元格配置\r\n   * @en_US Cell merge rules\r\n   */\r\n  cells?: XTableCell[];\r\n}\r\n\r\n/**\r\n * @zh_CN 单元格合并配置\r\n * @en_US Cell merge rules\r\n */\r\nexport interface XTableCell {\r\n  /**\r\n   * @zh_CN 使用 grid 布局来合并单元格\r\n   * @en_US Use grid layout to merge cells\r\n   */\r\n  gridArea?: string;\r\n  /**\r\n   * @zh_CN 名称\r\n   * @en_US Name\r\n   */\r\n  label?: string;\r\n  /**\r\n   * @zh_CN 宽度\r\n   * @en_US Width\r\n   */\r\n  width?: number;\r\n  /**\r\n   * @zh_CN 固定列，距离左边的距离\r\n   * @en_US Fixed column, distance from left\r\n   */\r\n  left?: number;\r\n  /**\r\n   * @zh_CN 固定列，距离右边的距离\r\n   * @en_US Fixed column, distance from right\r\n   */\r\n  right?: number;\r\n  /**\r\n   * @zh_CN 对应列的 id\r\n   * @en_US The id of the corresponding column\r\n   */\r\n  id?: string;\r\n  /**\r\n   * @zh_CN 拖动列宽\r\n   * @en_US Drag the column width\r\n   */\r\n  dragWidth?: boolean;\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 Column type\r\n */\r\nexport type XColumnType = 'label' | 'index' | 'checkbox' | 'expand';\r\n\r\n/**\r\n * @zh_CN 列头显示位置\r\n * @en_US Line head display position\r\n */\r\nexport type XTableHeaderPosition = 'top' | 'bottom' | 'top-bottom';\r\n\r\n/**\r\n * @zh_CN 分页器位置\r\n * @en_US Paging position\r\n */\r\nexport type XPaginationPosition =\r\n  | 'top-left'\r\n  | 'top-center'\r\n  | 'top-right'\r\n  | 'bottom-left'\r\n  | 'bottom-center'\r\n  | 'bottom-right';\r\n\r\n/**\r\n * @zh_CN 模板\r\n * @en_US Template\r\n */\r\nexport type XTableTemplate = { [property: string]: TemplateRef<any> };\r\n\r\n/**\r\n * Table Head\r\n * @selector x-table-head\r\n * @decorator component\r\n */\r\nexport const XTableHeadPrefix = 'x-table-head';\r\n\r\n/**\r\n * Table Head Property\r\n */\r\n@Component({ selector: `${XTableHeadPrefix}-property`, template: '' })\r\nexport class XTableHeadProperty extends XProperty {\r\n  /**\r\n   * @zh_CN 列集合\r\n   * @en_US Column set\r\n   */\r\n  readonly columns = input<XTableColumn[]>([]);\r\n  /**\r\n   * @zh_CN 表头高度，单位 px\r\n   * @en_US Header height, unit px\r\n   */\r\n  readonly headerHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 高度，单位 px\r\n   * @en_US Height in px\r\n   */\r\n  readonly rowHeight = input<number, XNumber>(42, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 自定义模板\r\n   * @en_US Custom template\r\n   */\r\n  readonly columnTpl = input<XTableTemplate>({});\r\n  /**\r\n   * @zh_CN 竖向滚动条宽度\r\n   * @en_US Vertical scroll bar width\r\n   */\r\n  readonly scrollYWidth = input<number | null, XNumber>(null, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 横向滚动条宽度\r\n   * @en_US Horizontal scroll bar width\r\n   */\r\n  readonly scrollXWidth = input<number | null, XNumber>(null, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 单元格配置\r\n   * @en_US Cell merge rules\r\n   */\r\n  readonly cellConfig = input<XTableCellConfigRule>();\r\n  /**\r\n   * @zh_CN 显示的位置\r\n   * @en_US Display position\r\n   */\r\n  readonly position = input<string>();\r\n}\r\n\r\n/**\r\n * Table Body\r\n * @selector x-table-body\r\n * @decorator component\r\n */\r\nexport const XTableBodyPrefix = 'x-table-body';\r\n\r\n/**\r\n * Table Body Property\r\n */\r\n@Component({ selector: `${XTableBodyPrefix}-property`, template: '' })\r\nexport class XTableBodyProperty extends XProperty {\r\n  /**\r\n   * @zh_CN 行数据\r\n   * @en_US Row data\r\n   */\r\n  readonly data = input<XTableRow[]>([]);\r\n  /**\r\n   * @zh_CN 列集合\r\n   * @en_US Column set\r\n   */\r\n  readonly columns = input<XTableColumn[]>([]);\r\n  /**\r\n   * @zh_CN 自定义模板\r\n   * @en_US Custom template\r\n   */\r\n  readonly columnTpl = input<XTableTemplate>({});\r\n  /**\r\n   * @zh_CN 当前选中行数据\r\n   * @en_US Currently selected row data\r\n   */\r\n  readonly activatedRow = model<XTableRow>();\r\n  /**\r\n   * @zh_CN 高度，单位 px。设置为 0 表示行高自适应内容高度。\r\n   * @en_US Height in px. set to 0 means that the row height is adaptive to the content height\r\n   */\r\n  readonly rowHeight = input<number, XNumber>(42, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN body 数据高度\r\n   * @en_US body data height\r\n   */\r\n  readonly bodyHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 允许行点击选中\r\n   * @en_US Allow row click to select\r\n   */\r\n  readonly allowSelectRow = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 开启虚拟滚动\r\n   * @en_US Turn on virtual scrolling\r\n   */\r\n  readonly virtualScroll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN itemSize，对应 cdk scroll 中的参数\r\n   * @en_US itemSize，corresponding to the parameters in cdk scroll\r\n   */\r\n  readonly itemSize = input<number, XNumber>(42, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 超出可视窗口缓冲区的最小值，对应 cdk scroll 中的参数\r\n   * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n   */\r\n  readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 渲染新数据缓冲区的像素，对应 cdk scroll 中的参数\r\n   * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n   */\r\n  readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 自适应高度，table 高度等于屏幕高度减掉此处设置的数值\r\n   * @en_US Adaptive height, table height is equal to the screen height minus the value set here\r\n   */\r\n  readonly adaptionHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 文档高度百分比，弹窗百分比高度用到\r\n   * @en_US Document height percentage, used by pop-up window percentage height\r\n   */\r\n  readonly docPercent = input<number, XNumber>(1, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 滚动区域高宽\r\n   * @en_US Height and width of rolling area\r\n   */\r\n  readonly scroll = input<{ x: number; y: number }>();\r\n  /**\r\n   * @zh_CN 单元格配置规则\r\n   * @en_US Cell config rules\r\n   */\r\n  readonly cellConfig = input<XTableCellConfigRule>();\r\n  /**\r\n   * @zh_CN 行条件样式\r\n   * @en_US Row condition class\r\n   */\r\n  readonly rowClass = input<(row: XTableRow, index: number) => { [className: string]: boolean }>();\r\n  /**\r\n   * @zh_CN 树形表格下的层级\r\n   * @en_US The level under the tree table\r\n   */\r\n  readonly level = input<number, XNumber>(0, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 树形表格展开所有节点\r\n   * @en_US Tree table\r\n   */\r\n  readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 自定义展开内容\r\n   * @en_US Customized expansion content\r\n   */\r\n  readonly expandTpl = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 行点击事件\r\n   * @en_US Row click event\r\n   */\r\n  readonly rowClick = output<XTableRow>();\r\n}\r\n\r\n/**\r\n * Table Foot\r\n * @selector x-table-foot\r\n * @decorator component\r\n */\r\nexport const XTableFootPrefix = 'x-table-foot';\r\n\r\n/**\r\n * Table Foot Property\r\n */\r\n@Component({ selector: `${XTableFootPrefix}-property`, template: '' })\r\nexport class XTableFootProperty extends XProperty {\r\n  /**\r\n   * @zh_CN 表格页尾\r\n   * @en_US Table footer\r\n   */\r\n  readonly footer = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 表头和行高，单位 px\r\n   * @en_US Header and row height, unit px\r\n   */\r\n  readonly rowHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n}\r\n","import {\r\n  ElementRef,\r\n  InjectionToken,\r\n  InputSignal,\r\n  InputSignalWithTransform,\r\n  OutputEmitterRef,\r\n  Signal,\r\n  WritableSignal\r\n} from '@angular/core';\r\nimport type { XBoolean, XSize, XSort, XTemplate } from '@ng-nest/ui/core';\r\nimport type { XTableCell, XTableColumn, XTableDragWidthEvent, XTableRow } from './table.property';\r\nimport type { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\r\nimport type { XPaginationComponent } from '@ng-nest/ui/pagination';\r\n\r\nexport interface XTableContext {\r\n  rowSize: InputSignal<XSize>;\r\n  theads: WritableSignal<ElementRef<HTMLElement>[]>;\r\n  tfoot: WritableSignal<ElementRef<HTMLElement> | null>;\r\n  headSearchTpl: InputSignal<XTemplate | undefined>;\r\n  checkedValues: WritableSignal<{ [prop: string]: boolean }>;\r\n  headThTpl: InputSignal<XTemplate | undefined>;\r\n  indeterminate: WritableSignal<string>;\r\n  sortChange: OutputEmitterRef<XSort[]>;\r\n  columnDragWidthMoved: OutputEmitterRef<XTableDragWidthEvent>;\r\n  columnDragWidthStarted: OutputEmitterRef<XTableDragWidthEvent>;\r\n  columnDragWidthEnded: OutputEmitterRef<XTableDragWidthEvent>;\r\n  columnDropListDropped: OutputEmitterRef<XTableColumn[]>;\r\n  columnDragStarted: OutputEmitterRef<XTableColumn>;\r\n  columnDragEnded: OutputEmitterRef<XTableColumn>;\r\n  treeTable: InputSignalWithTransform<boolean, XBoolean>;\r\n  virtualBody: WritableSignal<CdkVirtualScrollViewport | null>;\r\n  caption: Signal<ElementRef<HTMLElement> | undefined>;\r\n  pagination: Signal<XPaginationComponent | undefined>;\r\n  scrollContentEle: WritableSignal<HTMLElement | null>;\r\n  table: Signal<ElementRef<HTMLElement>>;\r\n  scrollTop: WritableSignal<number>;\r\n  scrollLeft: WritableSignal<number>;\r\n  scrollLeftMax: WritableSignal<boolean>;\r\n  hasScrollY: WritableSignal<boolean>;\r\n  scrollYWidth: WritableSignal<number>;\r\n  hasScrollX: WritableSignal<boolean>;\r\n  scrollXHeight: WritableSignal<number>;\r\n  scrollXWidth: WritableSignal<number | null>;\r\n  allowCheckRow: InputSignalWithTransform<boolean, XBoolean>;\r\n  rowChecked: WritableSignal<XTableColumn | null>;\r\n  showEmpty: InputSignalWithTransform<boolean, XBoolean>;\r\n  emptyImg: InputSignal<XTemplate | undefined>;\r\n  emptyContent: InputSignal<XTemplate | undefined>;\r\n  checkboxDragDisabled: InputSignalWithTransform<boolean, XBoolean>;\r\n  bodyTdTpl: InputSignal<XTemplate | undefined>;\r\n  bodyInnerHTML: InputSignalWithTransform<boolean, XBoolean>;\r\n  rowExpand: WritableSignal<XTableColumn | null>;\r\n\r\n  getSticky(column: XTableColumn | XTableCell): boolean;\r\n  getStickyLeft(column: XTableColumn | XTableCell): boolean;\r\n  getStickyRight(column: XTableColumn | XTableCell): boolean;\r\n  getStickyLeftLast(column: XTableColumn | XTableCell): boolean;\r\n  getStickyRightFirst(column: XTableColumn | XTableCell): boolean;\r\n  headChecked(checked: boolean, column: XTableColumn): void;\r\n  checkSort(sort: XSort[]): void;\r\n  resetScroll(x: boolean, y: boolean): void;\r\n  bodyChecked(column: XTableColumn, row: XTableRow): void;\r\n  setCheckbox(rows: XTableRow[], column: XTableColumn): void;\r\n  getIndex(index: number): number;\r\n  isExpandColumn(column: XTableColumn): boolean;\r\n  detectChanges(): void;\r\n}\r\n\r\nexport const X_TABLE_CONTEXT = new InjectionToken<XTableContext>('X_TABLE_CONTEXT');\r\n","import {\r\n  Component,\r\n  OnInit,\r\n  ViewEncapsulation,\r\n  ElementRef,\r\n  inject,\r\n  computed,\r\n  viewChild,\r\n  signal,\r\n  ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { XTableHeadPrefix, XTableHeadProperty, XTableColumn, XTableCell, XTablePrefix } from './table.property';\r\nimport { XIsEmpty, XSort, XNumber, XIsFunction, XRemoveNgTag } from '@ng-nest/ui/core';\r\nimport { CdkDragDrop, CdkDragSortEvent, CdkDragStart, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport { XDragDirective } from '@ng-nest/ui/drag';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { X_TABLE_CONTEXT } from './table.token';\r\n\r\n@Component({\r\n  selector: `${XTableHeadPrefix}`,\r\n  imports: [\r\n    NgStyle,\r\n    NgClass,\r\n    NgTemplateOutlet,\r\n    FormsModule,\r\n    XDragDirective,\r\n    DragDropModule,\r\n    XCheckboxComponent,\r\n    XOutletDirective,\r\n    XIconComponent\r\n  ],\r\n  templateUrl: './table-head.component.html',\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class XTableHeadComponent extends XTableHeadProperty implements OnInit {\r\n  table = inject(X_TABLE_CONTEXT, { optional: true })!;\r\n  cdr = inject(ChangeDetectorRef);\r\n\r\n  thead = viewChild.required<ElementRef<HTMLElement>>('thead');\r\n  sort = signal<XSort[]>([]);\r\n  sortStr = signal('');\r\n  theadStyle = computed(() => {\r\n    let height = this.getHeaderHeight();\r\n    if (this.cellConfig() && this.cellConfig()!.cells) {\r\n      const spt = this.cellConfig()!.cells?.map((x) => {\r\n        const gridAreaSpt = x.gridArea?.split('/');\r\n        return gridAreaSpt && gridAreaSpt.length > 3 ? Number(gridAreaSpt[2]) : 2;\r\n      });\r\n      height = ((Math.max(...spt!) - 1) * (height as number)) as XNumber;\r\n    }\r\n    return {\r\n      ['min-height']: `${height}px`\r\n    };\r\n  });\r\n  thClassMap = computed(() => ({\r\n    [`${XTablePrefix}-th-${this.table.rowSize()}`]: !XIsEmpty(this.table.rowSize())\r\n  }));\r\n\r\n  initColumns = computed(() => [...this.columns()]);\r\n  getRowHeight = computed(() => (this.rowHeight() == 0 ? '' : this.rowHeight()));\r\n  getHeaderHeight = computed(() => this.headerHeight() ?? this.getRowHeight());\r\n\r\n  private elementRef = inject(ElementRef);\r\n\r\n  ngOnInit() {\r\n    XRemoveNgTag(this.elementRef.nativeElement);\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.table.theads.update((x) => {\r\n      x.push(this.thead());\r\n      return [...x];\r\n    });\r\n  }\r\n\r\n  getFlex(column: XTableColumn) {\r\n    if (column.width) return 'none';\r\n    if (!column.flex) return 1;\r\n    return column.flex;\r\n  }\r\n\r\n  getColumnRight(right?: number) {\r\n    if (Number(right) >= 0) {\r\n      if (Number(this.scrollYWidth()) >= 0) {\r\n        return Number(right) + Number(this.scrollYWidth());\r\n      }\r\n      return Number(right);\r\n    }\r\n    return '';\r\n  }\r\n\r\n  getColumnWidth(column: XTableColumn) {\r\n    return column.width;\r\n  }\r\n\r\n  onSort(column: XTableColumn) {\r\n    if (!column.sort) return;\r\n    if (XIsEmpty(this.sort())) this.sort.set([]);\r\n    let sort = this.sort()!.find((y) => y.field === column.id);\r\n    if (sort) {\r\n      if (sort.value === 'asc') {\r\n        this.sort.set([]);\r\n        this.sortStr.set('');\r\n      } else {\r\n        sort.value = 'asc';\r\n      }\r\n    } else {\r\n      sort = { field: column.id, value: 'desc' };\r\n      this.sort.set([sort]);\r\n    }\r\n    if (!XIsEmpty(this.sort())) this.sortStr.set(`${sort.field} ${sort.value}`);\r\n    this.table.checkSort(this.sort());\r\n    this.table.sortChange.emit(this.sort());\r\n    this.table.resetScroll(false, true);\r\n  }\r\n\r\n  dragWidthMoved(\r\n    position: { x: number; y: number; offsetX: number; offsetY: number },\r\n    column: XTableColumn | XTableCell\r\n  ) {\r\n    if (column.width) {\r\n      (column.width as number) += position.offsetX;\r\n      if (column.width < 60) column.width = 60;\r\n      XIsFunction(column.dragWidthMoved) && column.dragWidthMoved({ position, column });\r\n      this.table.columnDragWidthMoved.emit({ position, column });\r\n      this.table.detectChanges();\r\n    }\r\n  }\r\n\r\n  dragWidthStarted(position: { x: number; y: number }, column: XTableColumn | XTableCell) {\r\n    column.draggingWidth = true;\r\n    if (column.width && XIsFunction(column.dragWidthStarted)) {\r\n      column.dragWidthStarted({ position, column });\r\n      this.table.columnDragWidthStarted.emit({ position, column });\r\n    }\r\n  }\r\n\r\n  dragWidthEnded(position: { x: number; y: number }, column: XTableColumn | XTableCell) {\r\n    column.draggingWidth = false;\r\n    if (column.width && XIsFunction(column.dragWidthEnded)) {\r\n      column.dragWidthEnded({ position, column });\r\n      this.table.columnDragWidthEnded.emit({ position, column });\r\n    }\r\n  }\r\n\r\n  dropListDropped(event: CdkDragDrop<XTableColumn[]>) {\r\n    const previous = this.initColumns()[event.previousIndex];\r\n    const current = this.initColumns()[event.currentIndex];\r\n    const middle = { left: previous.left, right: previous.right };\r\n    previous.left = current.left;\r\n    previous.right = current.right;\r\n    current.left = middle.left;\r\n    current.right = middle.right;\r\n    moveItemInArray(this.initColumns(), event.previousIndex, event.currentIndex);\r\n    this.table.columnDropListDropped.emit(this.initColumns());\r\n  }\r\n\r\n  dropListSorted(event: CdkDragSortEvent<XTableColumn[]>) {\r\n    const previous = this.columns()[event.previousIndex];\r\n    const current = this.columns()[event.currentIndex];\r\n    const middle = { left: previous.left, right: previous.right };\r\n    previous.left = current.left;\r\n    previous.right = current.right;\r\n    current.left = middle.left;\r\n    current.right = middle.right;\r\n    moveItemInArray(this.columns(), event.previousIndex, event.currentIndex);\r\n    this.table.detectChanges();\r\n  }\r\n\r\n  dragStarted(_event: CdkDragStart, column: XTableColumn) {\r\n    column.dragging = true;\r\n    this.table.detectChanges();\r\n    this.table.columnDragStarted.emit(column);\r\n  }\r\n\r\n  dragEnded(column: XTableColumn) {\r\n    column.dragging = false;\r\n    this.table.detectChanges();\r\n    this.table.columnDragEnded.emit(column);\r\n  }\r\n}\r\n","<thead\r\n  #thead\r\n  [ngStyle]=\"theadStyle()\"\r\n  [class.x-table-head-top]=\"position() === 'top'\"\r\n  [class.x-table-head-bottom]=\"position() === 'bottom'\"\r\n>\r\n  @if (cellConfig()) {\r\n    <tr [style.gridTemplateColumns]=\"cellConfig()!.gridTemplateColumns\" [style.min-height.px]=\"getHeaderHeight()\">\r\n      @for (column of cellConfig()!.cells; track column.id) {\r\n        <th\r\n          [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n          [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n          [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n          [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n          [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n          [class.x-table-width-drag]=\"column.dragWidth\"\r\n          [style.grid-area]=\"column.gridArea\"\r\n          [style.left.px]=\"column.left\"\r\n          [style.right.px]=\"column.right\"\r\n          [style.min-height.px]=\"getHeaderHeight()\"\r\n          [title]=\"column?.label\"\r\n        >\r\n          <ng-container *ngTemplateOutlet=\"columnBaseTpl; context: { column: column }\"></ng-container>\r\n          @if (column.dragWidth) {\r\n            <div\r\n              class=\"x-table-drag-width\"\r\n              x-drag\r\n              (dragMoved)=\"dragWidthMoved($event, column)\"\r\n              (dragStarted)=\"dragWidthStarted($event, column)\"\r\n              (dragEnded)=\"dragWidthEnded($event, column)\"\r\n            ></div>\r\n          }\r\n        </th>\r\n      }\r\n    </tr>\r\n  } @else {\r\n    <ng-container *ngTemplateOutlet=\"columnsTpl\"></ng-container>\r\n  }\r\n  @if (table.headSearchTpl()) {\r\n    <ng-container *ngTemplateOutlet=\"columnsTpl; context: { case: 'search' }\"></ng-container>\r\n  }\r\n</thead>\r\n\r\n<ng-template #columnsTpl let-case=\"case\">\r\n  <tr\r\n    cdkDropList\r\n    cdkDropListOrientation=\"horizontal\"\r\n    (cdkDropListSorted)=\"dropListSorted($event)\"\r\n    (cdkDropListDropped)=\"dropListDropped($event)\"\r\n    [style.height.px]=\"getHeaderHeight()\"\r\n    [style.min-height.px]=\"getHeaderHeight()\"\r\n    [style.padding-right.px]=\"scrollYWidth()\"\r\n    [style.min-width.px]=\"scrollXWidth()\"\r\n    [class.x-table-search]=\"case === 'search'\"\r\n  >\r\n    @for (column of initColumns(); track column.id) {\r\n      <th\r\n        cdkDrag\r\n        [cdkDragDisabled]=\"column.draggingWidth || !column.dragColumn\"\r\n        (cdkDragStarted)=\"dragStarted($event, column)\"\r\n        (cdkDragEnded)=\"dragEnded(column)\"\r\n        [ngClass]=\"thClassMap()\"\r\n        [class.x-table-th]=\"true\"\r\n        [class.x-table-sticky]=\"table.getSticky(column)\"\r\n        [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n        [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n        [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n        [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n        [style.min-height.px]=\"getHeaderHeight()\"\r\n        [style.width.px]=\"getColumnWidth(column)\"\r\n        [style.left.px]=\"column.left\"\r\n        [style.right.px]=\"getColumnRight(column.right)\"\r\n        [style.flex]=\"getFlex(column)\"\r\n      >\r\n        @switch (case) {\r\n          @case ('search') {\r\n            <ng-container *xOutlet=\"table.headSearchTpl()!; context: { $column: column }\"></ng-container>\r\n          }\r\n          @default {\r\n            <ng-container *ngTemplateOutlet=\"columnBaseTpl; context: { column: column }\"></ng-container>\r\n            @if (column.dragWidth) {\r\n              <div\r\n                class=\"x-table-drag-width\"\r\n                x-drag\r\n                (dragMoved)=\"dragWidthMoved($event, column)\"\r\n                (dragStarted)=\"dragWidthStarted($event, column);\"\r\n                (dragEnded)=\"dragWidthEnded($event, column)\"\r\n              ></div>\r\n            }\r\n          }\r\n        }\r\n      </th>\r\n    }\r\n  </tr>\r\n</ng-template>\r\n\r\n<ng-template #columnBaseTpl let-column=\"column\">\r\n  @switch (column.type) {\r\n    @case ('checkbox') {\r\n      @if (column.headChecked) {\r\n        <x-checkbox\r\n          [data]=\"[{ id: true, label: column.label }]\"\r\n          [(ngModel)]=\"table.checkedValues()[column.id]\"\r\n          (ngModelChange)=\"table.headChecked($event, column)\"\r\n          [indeterminate]=\"table.checkedValues()[column.id + table.indeterminate()]\"\r\n          single\r\n        ></x-checkbox>\r\n      }\r\n      @if (!column.headChecked) {\r\n        <ng-container *ngTemplateOutlet=\"cloumnDefaultTpl; context: { column: column }\"></ng-container>\r\n      }\r\n    }\r\n    @case ('index') {\r\n      <a\r\n        ><ng-container *xOutlet=\"columnTpl()[column.id]; context: { $column: column }\">\r\n          <ng-container *xOutlet=\"table.headThTpl(); context: { $column: column }\">\r\n            {{ column.label }}\r\n          </ng-container>\r\n        </ng-container></a\r\n      >\r\n    }\r\n    @default {\r\n      <ng-container *ngTemplateOutlet=\"cloumnDefaultTpl; context: { column: column }\"></ng-container>\r\n    }\r\n  }\r\n</ng-template>\r\n\r\n<ng-template #cloumnDefaultTpl let-column=\"column\">\r\n  <a [class.x-table-sort]=\"column.sort\" (click)=\"onSort(column)\" [style.text-align]=\"column.textAlign\">\r\n    <ng-container *xOutlet=\"columnTpl()[column.id]; context: { $column: column }\">\r\n      <ng-container *xOutlet=\"table.headThTpl(); context: { $column: column }\">\r\n        {{ column.label }}\r\n      </ng-container>\r\n    </ng-container>\r\n    @if (column.sort) {\r\n      <x-icon\r\n        type=\"fto-bar-chart\"\r\n        class=\"x-table-sort-icon\"\r\n        [class.x-table-icon-up]=\"sortStr() === column.id + ' desc'\"\r\n        [class.x-table-icon-down]=\"sortStr() === column.id + ' asc'\"\r\n      ></x-icon>\r\n    }\r\n  </a>\r\n</ng-template>\r\n","import {\r\n  Component,\r\n  OnInit,\r\n  ViewEncapsulation,\r\n  ElementRef,\r\n  ChangeDetectionStrategy,\r\n  inject,\r\n  computed,\r\n  viewChild,\r\n  ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { XTableFootPrefix, XTableFootProperty } from './table.property';\r\nimport { XRemoveNgTag } from '@ng-nest/ui/core';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { X_TABLE_CONTEXT } from './table.token';\r\n\r\n@Component({\r\n  selector: `${XTableFootPrefix}`,\r\n  imports: [XOutletDirective],\r\n  templateUrl: './table-foot.component.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTableFootComponent extends XTableFootProperty implements OnInit {\r\n  tfoot = viewChild.required<ElementRef<HTMLElement>>('tfoot');\r\n  table = inject(X_TABLE_CONTEXT, { optional: true })!;\r\n  cdr = inject(ChangeDetectorRef);\r\n  getRowHeight = computed(() => (this.rowHeight() == 0 ? '' : this.rowHeight()));\r\n  private elementRef = inject(ElementRef);\r\n\r\n  ngOnInit() {\r\n    XRemoveNgTag(this.elementRef.nativeElement);\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.table.tfoot.set(this.tfoot());\r\n  }\r\n}\r\n","<tfoot #tfoot class=\"x-table-footer\" [style.height.px]=\"getRowHeight()!\" [style.min-height.px]=\"getRowHeight()\">\r\n  <ng-container *xOutlet=\"footer()\">{{ footer() }}</ng-container>\r\n</tfoot>\r\n","import { Injectable } from '@angular/core';\r\nimport type { XTableRow } from './table.property';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XTableCheckboxDragSelectService {\r\n  isMouseDown = false;\r\n  isDragging = false;\r\n  startIndex = -1;\r\n  downValue = false;\r\n  changeRows: XTableRow[] = [];\r\n}\r\n","import { Directive, DOCUMENT, HostListener, inject, input, output } from '@angular/core';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport type { XTableColumn, XTableRow } from './table.property';\r\nimport { XTableCheckboxDragSelectService } from './checkbox-drag-select.service';\r\n\r\n@Directive({\r\n  selector: '[xTableCheckboxDragSelect]'\r\n})\r\nexport class XTableCheckboxDragSelectDirective {\r\n  private dragSelectService = inject(XTableCheckboxDragSelectService);\r\n  private document = inject(DOCUMENT);\r\n  private dragTimeout: any;\r\n\r\n  checkbox = inject(XCheckboxComponent, { host: true });\r\n\r\n  dragRows = input.required<XTableRow[]>();\r\n  dragRow = input.required<XTableRow>();\r\n  dragColumn = input.required<XTableColumn>();\r\n  dragDisabled = input<boolean>(false);\r\n\r\n  dragStart = output();\r\n  dragMove = output();\r\n  dragEnd = output<XTableRow[]>();\r\n\r\n  @HostListener('mousedown', ['$event'])\r\n  onMouseDown(event: MouseEvent) {\r\n    if (this.dragDisabled()) return;\r\n    const target = event.target as HTMLElement;\r\n\r\n    if (this.isCheckboxLike(target)) {\r\n      this.dragTimeout = setTimeout(() => {\r\n        this.dragSelectService.downValue = !!this.checkbox.value();\r\n        this.dragSelectService.startIndex = this.dragRows().findIndex((row) => row.id === this.dragRow().id);\r\n        this.dragSelectService.isMouseDown = true;\r\n      }, 100);\r\n\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  @HostListener('document:mouseup')\r\n  onMouseUp() {\r\n    if (this.dragDisabled()) return;\r\n    clearTimeout(this.dragTimeout);\r\n    if (this.dragSelectService.isDragging) {\r\n      this.dragEnd.emit(this.dragSelectService.changeRows);\r\n    }\r\n    this.dragSelectService.isDragging = false;\r\n    this.dragSelectService.startIndex = -1;\r\n    this.dragSelectService.downValue = false;\r\n    this.dragSelectService.isMouseDown = false;\r\n    this.dragSelectService.changeRows = [];\r\n    this.document.body.style.cursor = '';\r\n  }\r\n\r\n  @HostListener('document:mousemove', ['$event'])\r\n  onMouseMove(event: MouseEvent) {\r\n    if (this.dragDisabled()) return;\r\n    if (!this.dragSelectService.isMouseDown) return;\r\n    if (!this.dragSelectService.isDragging) {\r\n      this.dragSelectService.isDragging = true;\r\n      this.document.body.style.cursor = 'pointer';\r\n      this.dragStart.emit();\r\n    }\r\n\r\n    if (this.dragSelectService.startIndex === -1) return;\r\n\r\n    const rowEl = (event.target as HTMLElement).closest('tr');\r\n\r\n    if (!rowEl) return;\r\n\r\n    const currentKey = rowEl.getAttribute('data-row-key');\r\n    const currentIndex = this.dragRows().findIndex((row) => `${row.id}` === currentKey);\r\n\r\n    if (currentIndex === -1) return;\r\n\r\n    const minIndex = Math.min(this.dragSelectService.startIndex, currentIndex);\r\n    const maxIndex = Math.max(this.dragSelectService.startIndex, currentIndex);\r\n    const checked = !this.dragSelectService.downValue;\r\n\r\n    this.dragRows().forEach((row, index) => {\r\n      if (index >= minIndex && index <= maxIndex) {\r\n        if (!row.disabled) {\r\n          row[this.dragColumn().id] = checked;\r\n          if (!this.dragSelectService.changeRows.some((x) => x.id === row.id)) {\r\n            this.dragSelectService.changeRows.push(row);\r\n          }\r\n        }\r\n      }\r\n    });\r\n\r\n    this.dragMove.emit();\r\n\r\n    event.preventDefault();\r\n  }\r\n\r\n  private isCheckboxLike(el: HTMLElement): boolean {\r\n    return el.classList.contains('x-checkbox-box');\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  OnInit,\r\n  ViewEncapsulation,\r\n  Renderer2,\r\n  ElementRef,\r\n  ChangeDetectorRef,\r\n  ChangeDetectionStrategy,\r\n  inject,\r\n  computed,\r\n  viewChild,\r\n  signal,\r\n  effect,\r\n  AfterViewInit,\r\n  AfterViewChecked\r\n} from '@angular/core';\r\nimport { XTableBodyPrefix, XTableBodyProperty, XTableRow, XTableColumn, XTableCell } from './table.property';\r\nimport { XRemoveNgTag, XResize, XNumber, XStripTags, XParentPath, XResizeObserver } from '@ng-nest/ui/core';\r\nimport { Subject, fromEvent } from 'rxjs';\r\nimport { DOCUMENT, NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\nimport { XEmptyComponent } from '@ng-nest/ui/empty';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { XInnerHTMLComponent } from '@ng-nest/ui/core';\r\nimport { XTableCheckboxDragSelectDirective } from './checkbox-drag-select.directive';\r\nimport { X_TABLE_CONTEXT } from './table.token';\r\n\r\n@Component({\r\n  selector: `${XTableBodyPrefix}`,\r\n  imports: [\r\n    NgClass,\r\n    NgTemplateOutlet,\r\n    FormsModule,\r\n    XEmptyComponent,\r\n    ScrollingModule,\r\n    XOutletDirective,\r\n    XCheckboxComponent,\r\n    XButtonComponent,\r\n    XInnerHTMLComponent,\r\n    XTableCheckboxDragSelectDirective\r\n  ],\r\n  templateUrl: './table-body.component.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTableBodyComponent extends XTableBodyProperty implements OnInit, AfterViewInit, AfterViewChecked {\r\n  renderer = inject(Renderer2);\r\n  elementRef = inject(ElementRef<HTMLElement>);\r\n  cdr = inject(ChangeDetectorRef);\r\n  tbody = viewChild.required<ElementRef<HTMLElement>>('tbody');\r\n  virtualBody = viewChild(CdkVirtualScrollViewport);\r\n  table = inject(X_TABLE_CONTEXT, { optional: true })!;\r\n  private doc = inject(DOCUMENT);\r\n  private unSubject = new Subject<void>();\r\n  private resizeObserver!: XResizeObserver;\r\n  private domSanitizer = inject(DomSanitizer);\r\n  tbodyStyle = signal<{ [property: string]: any }>({});\r\n\r\n  isEmpty = computed(() => this.data().length === 0);\r\n  getRowHeight = computed(() => (this.rowHeight() == 0 ? '' : this.rowHeight()));\r\n  getItemSize = computed(() =>\r\n    this.rowHeight() !== 0 && this.itemSize() > this.rowHeight() ? this.rowHeight() : this.itemSize()\r\n  );\r\n  docClientHeight = signal(this.doc.documentElement.clientHeight);\r\n  headHeight = signal(0);\r\n  captionHeight = signal(0);\r\n  footHeight = signal(0);\r\n  paginationHeight = signal(0);\r\n  checkboxDragging = signal(false);\r\n  expandChanged = signal<boolean>(false);\r\n\r\n  bodyHeightSignal = computed(() => {\r\n    const adaptionHeight = this.adaptionHeight();\r\n    if (adaptionHeight && adaptionHeight > 0) {\r\n      let bodyHeight =\r\n        this.docPercent() * this.docClientHeight() -\r\n        this.captionHeight() -\r\n        this.headHeight() -\r\n        this.footHeight() -\r\n        this.paginationHeight() -\r\n        adaptionHeight;\r\n      if (bodyHeight < 0) bodyHeight = 0;\r\n      return bodyHeight;\r\n    }\r\n    if (this.scroll()?.y && !this.bodyHeight()) {\r\n      return this.scroll()!.y;\r\n    }\r\n    return this.bodyHeight();\r\n  });\r\n\r\n  minBufferPxSignal = computed(() => {\r\n    const adaptionHeight = this.adaptionHeight();\r\n    if (adaptionHeight && adaptionHeight > 0) {\r\n      return this.bodyHeightSignal();\r\n    }\r\n    return this.minBufferPx();\r\n  });\r\n\r\n  maxBufferPxSignal = computed(() => {\r\n    const adaptionHeight = this.adaptionHeight();\r\n    if (adaptionHeight && adaptionHeight > 0) {\r\n      return this.bodyHeightSignal()! * 1.2;\r\n    }\r\n    return this.maxBufferPx();\r\n  });\r\n\r\n  treeData = computed<XTableRow[]>(() => {\r\n    if (!this.table.treeTable()) return [];\r\n    this.expandChanged();\r\n    const treeData: XTableRow[] = [];\r\n    const addItems = (data: XTableRow[]) => {\r\n      for (let item of data) {\r\n        treeData.push(item);\r\n        if (item.children && item.children.length > 0 && item.expanded) {\r\n          addItems(item.children);\r\n        }\r\n      }\r\n    };\r\n    addItems(this.data());\r\n    return treeData;\r\n  });\r\n\r\n  rows = computed<XTableRow[]>(() => {\r\n    if (!this.table.treeTable()) return this.data();\r\n    return this.treeData();\r\n  });\r\n\r\n  constructor() {\r\n    super();\r\n    effect(() => {\r\n      if (this.virtualBody()) {\r\n        this.virtualBody()!['_scrollStrategy']['_minBufferPx'] = this.minBufferPxSignal();\r\n      }\r\n    });\r\n    effect(() => {\r\n      if (this.virtualBody()) {\r\n        this.virtualBody()!['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPxSignal();\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnInit() {\r\n    XRemoveNgTag(this.elementRef.nativeElement);\r\n    if (this.level() > 0) XRemoveNgTag(this.tbody().nativeElement);\r\n\r\n    fromEvent(this.doc.defaultView!, 'resize')\r\n      .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n      .subscribe(() => {\r\n        this.docClientHeight.set(this.doc.documentElement.clientHeight);\r\n      });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.table.virtualBody.set(this.virtualBody()!);\r\n    this.docClientHeight.set(this.doc.documentElement.clientHeight);\r\n    this.setSubject();\r\n    this.setScroll();\r\n  }\r\n\r\n  ngAfterViewChecked(): void {\r\n    let headHeight = 0;\r\n    for (let thead of this.table.theads()) {\r\n      headHeight += thead.nativeElement.clientHeight;\r\n    }\r\n    this.headHeight.set(headHeight);\r\n    const captionHeight = this.table.caption()?.nativeElement.clientHeight || 0;\r\n    this.captionHeight.set(captionHeight);\r\n    const footHeight = this.table.tfoot()?.nativeElement.clientHeight || 0;\r\n    this.footHeight.set(footHeight);\r\n    const paginationHeight = this.table.pagination()?.elementRef.nativeElement.clientHeight || 0;\r\n    this.paginationHeight.set(paginationHeight);\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  setSubject() {\r\n    if (this.virtualBody()) {\r\n      this.table.scrollContentEle.set(\r\n        this.virtualBody()!.elementRef.nativeElement.querySelector('.cdk-virtual-scroll-content-wrapper') as HTMLElement\r\n      );\r\n      if (this.scroll()?.x) {\r\n        this.renderer.setStyle(this.table.scrollContentEle()!, 'width', `${this.scroll()?.x}px`);\r\n      }\r\n      XResize(this.table.table().nativeElement, this.table.scrollContentEle()!)\r\n        .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n        .subscribe((x) => {\r\n          this.resizeObserver = x.resizeObserver;\r\n          this.setScroll();\r\n        });\r\n    }\r\n    if (this.table.scrollContentEle()) {\r\n      fromEvent(this.virtualBody()!.elementRef.nativeElement, 'scroll')\r\n        .pipe(takeUntil(this.unSubject))\r\n        .subscribe((x) => {\r\n          const ele = x.srcElement as HTMLElement;\r\n          this.table.scrollTop.set(ele.scrollTop);\r\n          this.table.scrollLeft.set(ele.scrollLeft);\r\n          if (ele.scrollLeft >= 0 && this.table.theads().length > 0) {\r\n            for (let thead of this.table.theads()) {\r\n              thead.nativeElement.scrollLeft = this.table.scrollLeft();\r\n            }\r\n          }\r\n          this.table.scrollLeftMax.set(ele.scrollLeft + ele.clientWidth === ele.scrollWidth);\r\n        });\r\n    }\r\n  }\r\n\r\n  setScroll() {\r\n    if (!this.virtualBody()) return;\r\n    const ele = this.virtualBody()!.elementRef.nativeElement;\r\n    const hasY = ele.scrollHeight > this.bodyHeightSignal()!;\r\n    const hasX = this.table.scrollContentEle()!.clientWidth > ele.clientWidth;\r\n\r\n    if (!this.table.hasScrollY() && hasY) {\r\n      this.table.hasScrollY.set(true);\r\n      this.table.scrollYWidth.set(ele.offsetWidth - ele.clientWidth);\r\n    } else if (this.table.hasScrollY() && !hasY) {\r\n      this.table.hasScrollY.set(false);\r\n      this.table.scrollYWidth.set(0);\r\n    }\r\n\r\n    if (!this.table.hasScrollX() && hasX) {\r\n      this.table.hasScrollX.set(true);\r\n      this.table.scrollXHeight.set(ele.offsetHeight - ele.clientHeight);\r\n    } else if (this.table.hasScrollX() && !hasX) {\r\n      this.table.hasScrollX.set(false);\r\n      this.table.scrollXHeight.set(0);\r\n      this.table.scrollXWidth.set(null);\r\n    }\r\n    if (hasX) {\r\n      this.table.scrollXWidth.set(ele.offsetWidth + ele.scrollWidth - ele.clientWidth);\r\n    }\r\n\r\n    this.virtualBody()!.checkViewportSize();\r\n  }\r\n\r\n  setStyle() {\r\n    let height = this.rowHeight() === 0 ? '' : this.rowHeight();\r\n    if (this.cellConfig() && this.cellConfig()!.cells) {\r\n      const spt = this.cellConfig()!.cells?.map((x) => {\r\n        const gridAreaSpt = x.gridArea?.split('/');\r\n        return gridAreaSpt && gridAreaSpt.length > 3 ? Number(gridAreaSpt[2]) : 2;\r\n      });\r\n      height = ((Math.max(...spt!) - 1) * (height as number)) as XNumber;\r\n    }\r\n    this.tbodyStyle.set({\r\n      height: `${height}px`\r\n    });\r\n  }\r\n\r\n  setDomSanitizer(str: string) {\r\n    return this.domSanitizer.bypassSecurityTrustHtml(str);\r\n  }\r\n\r\n  getIndex(index: number, item: XTableRow) {\r\n    if (!isNaN(index)) return index;\r\n    return this.data().indexOf(item);\r\n  }\r\n\r\n  getFlex(column: XTableColumn) {\r\n    if (column.width) return 'none';\r\n    if (!column.flex) return 1;\r\n    return column.flex;\r\n  }\r\n\r\n  getTitle(row: XTableRow, column: XTableCell | any) {\r\n    let it = row[column.id as string];\r\n    return it ? XStripTags(it) : '';\r\n  }\r\n\r\n  onRowClick(event: Event, row: XTableRow) {\r\n    if (row.disabled) return;\r\n    if (this.table.allowCheckRow() && this.table.rowChecked()) {\r\n      if (!XParentPath(event.target as HTMLElement).includes('x-checkbox')) {\r\n        row[this.table.rowChecked()!.id] = !row[this.table.rowChecked()!.id];\r\n        this.table.bodyChecked(this.table.rowChecked()!, row);\r\n      }\r\n    }\r\n    this.activatedRow.set(row);\r\n    this.rowClick.emit(row);\r\n  }\r\n\r\n  onExpanded(event: Event, node: XTableRow) {\r\n    node.expanded = !node.expanded;\r\n    this.expandChanged.update((x) => !x);\r\n    event?.stopPropagation();\r\n  }\r\n\r\n  trackByItem(_index: number, item: XTableRow | XTableColumn) {\r\n    return item.id;\r\n  }\r\n}\r\n","<tbody #tbody [class.x-table-body-checkbox-dragging]=\"checkboxDragging()\">\r\n  @if (cellConfig()) {\r\n    @for (row of data(); track row.id; let i = $index) {\r\n      <tr [style.gridTemplateColumns]=\"cellConfig()!.gridTemplateColumns\" [attr.data-row-key]=\"row.id\">\r\n        @for (column of cellConfig()!.cells; track column; let j = $index) {\r\n          <td\r\n            [title]=\"getTitle(row, column)\"\r\n            [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n            [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n            [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n            [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n            [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n            [style.left.px]=\"column.left\"\r\n            [style.right.px]=\"column.right\"\r\n            [style.grid-area]=\"column.gridArea\"\r\n          >\r\n            <ng-container *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-container>\r\n          </td>\r\n        }\r\n      </tr>\r\n    }\r\n  } @else {\r\n    @if (virtualScroll()) {\r\n      <cdk-virtual-scroll-viewport\r\n        #virtualBody\r\n        [itemSize]=\"getItemSize()\"\r\n        [minBufferPx]=\"minBufferPxSignal()\"\r\n        [maxBufferPx]=\"maxBufferPxSignal()\"\r\n        [style.height.px]=\"bodyHeightSignal()\"\r\n      >\r\n        <tr\r\n          *cdkVirtualFor=\"let row of rows(); let index = index; trackBy: trackByItem\"\r\n          [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n          [style.height.px]=\"getRowHeight()\"\r\n          [style.min-height.px]=\"getRowHeight()\"\r\n          (click)=\"onRowClick($event, row)\"\r\n          [attr.data-row-key]=\"row.id\"\r\n        >\r\n          <!-- rowHeight 为 0 的时候，index 下标获取不到 -->\r\n          <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: getIndex(index, row) }\"></ng-container>\r\n        </tr>\r\n      </cdk-virtual-scroll-viewport>\r\n    } @else {\r\n      @for (row of rows(); track row.id; let i = $index) {\r\n        <tr\r\n          [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n          [style.height.px]=\"getRowHeight()\"\r\n          [style.min-height.px]=\"getRowHeight()\"\r\n          (click)=\"onRowClick($event, row)\"\r\n          [attr.data-row-key]=\"row.id\"\r\n        >\r\n          <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: i }\"></ng-container>\r\n        </tr>\r\n      }\r\n    }\r\n  }\r\n  @if (table.showEmpty() && isEmpty() && level() === 0) {\r\n    <x-empty [img]=\"table.emptyImg()!\" [content]=\"table.emptyContent()!\"></x-empty>\r\n  }\r\n</tbody>\r\n\r\n<ng-template #rowTpl let-row=\"row\" let-i=\"i\">\r\n  <ng-container *xOutlet=\"rowDefault; context: { row: row, i: i, level: row.level }\"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #rowDefault let-row=\"row\" let-i=\"i\">\r\n  @for (column of columns(); track column.id; let j = $index) {\r\n    <td\r\n      [style.width.px]=\"column.width\"\r\n      [style.flex]=\"getFlex(column)\"\r\n      [title]=\"getTitle(row, column)\"\r\n      [class.x-table-dragging]=\"column.dragging\"\r\n      [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n      [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n      [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n      [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n      [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n      [style.left.px]=\"column.left\"\r\n      [style.right.px]=\"column.right\"\r\n      [ngClass]=\"!rowClass() ? {} : rowClass()!(row, i)\"\r\n    >\r\n      <ng-template *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-template>\r\n    </td>\r\n  }\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-column=\"column\" let-row=\"row\" let-i=\"i\">\r\n  @switch (column.type) {\r\n    @case ('checkbox') {\r\n      <x-checkbox\r\n        xTableCheckboxDragSelect\r\n        [dragRows]=\"data()\"\r\n        [dragRow]=\"row\"\r\n        [dragColumn]=\"column\"\r\n        (dragStart)=\"checkboxDragging.set(true)\"\r\n        (dragEnd)=\"checkboxDragging.set(false); table.setCheckbox($event, column)\"\r\n        [dragDisabled]=\"row.disabled || column.checkboxDragDisabled || table.checkboxDragDisabled()\"\r\n        [data]=\"[{ id: true, label: '' }]\"\r\n        [(ngModel)]=\"row[column.id]\"\r\n        [disabled]=\"row.disabled\"\r\n        (ngModelChange)=\"table.bodyChecked(column, row)\"\r\n        single\r\n      ></x-checkbox>\r\n    }\r\n    @case ('index') {\r\n      <div>{{ table.getIndex(i) }}</div>\r\n    }\r\n    @default {\r\n      @if (table.isExpandColumn(column)) {\r\n        <x-button\r\n          [class.is-leaf]=\"!row.leaf\"\r\n          [class.is-expanded]=\"row.expanded\"\r\n          (click)=\"onExpanded($event, row)\"\r\n          icon=\"fto-chevron-right\"\r\n          size=\"mini\"\r\n          onlyIcon\r\n          flat\r\n          plain\r\n          class=\"x-table-expand\"\r\n          [style.margin-left.rem]=\"row.level - 0.5\"\r\n        ></x-button>\r\n      }\r\n      <ng-container\r\n        *xOutlet=\"columnTpl()[column.id]; context: { $column: column, $row: row, $index: table.getIndex(i) }\"\r\n      >\r\n        <ng-container *xOutlet=\"table.bodyTdTpl(); context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n          @if ((table.bodyInnerHTML() && column.innerHTML !== false) || column.innerHTML) {\r\n            <div x-inner-html [html]=\"row[column.id]\" [style]=\"{ textAlign: column.textAlign }\"></div>\r\n          } @else {\r\n            <div [style.text-align]=\"column.textAlign\">{{ row[column.id] }}</div>\r\n          }\r\n          {{ table.rowExpand() && table.rowExpand()!.id === column.id ? 'x-table-body-level-' + row.level : '' }}\r\n        </ng-container>\r\n      </ng-container>\r\n    }\r\n  }\r\n</ng-template>\r\n","import {\r\n  Component,\r\n  OnInit,\r\n  ViewEncapsulation,\r\n  Renderer2,\r\n  ElementRef,\r\n  ChangeDetectorRef,\r\n  ChangeDetectionStrategy,\r\n  SimpleChanges,\r\n  OnDestroy,\r\n  computed,\r\n  signal,\r\n  viewChild,\r\n  inject,\r\n  viewChildren,\r\n  AfterViewChecked,\r\n  SimpleChange\r\n} from '@angular/core';\r\nimport {\r\n  XTablePrefix,\r\n  XTableProperty,\r\n  XTableColumn,\r\n  XTableRow,\r\n  XTableCell,\r\n  XTableCellConfigRule\r\n} from './table.property';\r\nimport { XIsChange, XIsEmpty, XResultList, XSort, XIsUndefined, XIsArray } from '@ng-nest/ui/core';\r\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\r\nimport { XPaginationComponent } from '@ng-nest/ui/pagination';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\nimport { NgClass } from '@angular/common';\r\nimport { XLoadingComponent } from '@ng-nest/ui/loading';\r\nimport { XTableHeadComponent } from './table-head.component';\r\nimport { XTableFootComponent } from './table-foot.component';\r\nimport { XTableBodyComponent } from './table-body.component';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { X_TABLE_CONTEXT, XTableContext } from './table.token';\r\n\r\n@Component({\r\n  selector: `${XTablePrefix}`,\r\n  imports: [\r\n    NgClass,\r\n    XOutletDirective,\r\n    XLoadingComponent,\r\n    XTableHeadComponent,\r\n    XTableFootComponent,\r\n    XTableBodyComponent,\r\n    XPaginationComponent\r\n  ],\r\n  templateUrl: './table.component.html',\r\n  styleUrls: ['./table.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: X_TABLE_CONTEXT,\r\n      useExisting: XTableComponent\r\n    }\r\n  ]\r\n})\r\nexport class XTableComponent extends XTableProperty implements OnInit, OnDestroy, AfterViewChecked, XTableContext {\r\n  renderer = inject(Renderer2);\r\n  elementRef = inject(ElementRef<HTMLElement>);\r\n  cdr = inject(ChangeDetectorRef);\r\n  unSubject = new Subject<void>();\r\n\r\n  classMap = computed(() => ({ [`${XTablePrefix}-row-size-${this.rowSize()}`]: !XIsEmpty(this.rowSize()) }));\r\n  theads = signal<ElementRef<HTMLElement>[]>([]);\r\n  tfoot = signal<ElementRef<HTMLElement> | null>(null);\r\n  virtualBody = signal<CdkVirtualScrollViewport | null>(null);\r\n  theadsChange: (() => void)[] = [];\r\n  bodyChange!: () => void;\r\n  scrollContentEle = signal<HTMLElement | null>(null);\r\n  hasScrollY = signal(false);\r\n  scrollYWidth = signal(0);\r\n  hasScrollX = signal(false);\r\n  scrollXHeight = signal(0);\r\n  scrollXWidth = signal<number | null>(null);\r\n  scrollLeft = signal(0);\r\n  scrollLeftMax = signal(false);\r\n  scrollTop = signal(0);\r\n  rowChecked = signal<XTableColumn | null>(null);\r\n  headCheckboxList = signal<XTableColumn[]>([]);\r\n  rowExpand = signal<XTableColumn | null>(null);\r\n  headExpandList = signal<XTableColumn[]>([]);\r\n  dataIsFunc = signal(false);\r\n  getting = signal(false);\r\n  tableData = signal<XTableRow[]>([]);\r\n  treeTableData = signal<XTableRow[]>([]);\r\n  checkedValues = signal<{ [prop: string]: boolean }>({});\r\n  indeterminate = signal('$$indeterminate');\r\n  table = viewChild.required<ElementRef<HTMLElement>>('table');\r\n  caption = viewChild<ElementRef<HTMLElement>>('caption');\r\n  pagination = viewChild<XPaginationComponent>('pagination');\r\n  stickyTopRightEle = viewChild<ElementRef<HTMLElement>>('stickyTopRightEle');\r\n  stickyBottomRightEle = viewChild<ElementRef<HTMLElement>>('stickyBottomRightEle');\r\n  headCom = viewChildren<XTableHeadComponent>(XTableHeadComponent);\r\n  bodyCom = viewChildren<XTableBodyComponent>(XTableBodyComponent);\r\n  footCom = viewChild<XTableFootComponent>(XTableFootComponent);\r\n\r\n  getScrollLeft = computed(() => this.scrollLeft() > 0);\r\n  getScrollTop = computed(() => this.scrollTop() > 0);\r\n  getRowHeight = computed(() => (this.rowHeight() === 0 ? '' : this.rowHeight()));\r\n  getStickyTopScrollTop = computed(() => (this.caption() ? this.caption()!.nativeElement.offsetHeight : 0));\r\n  getStickyBottomScrollTop = computed(() => {\r\n    let top = 0;\r\n    if (this.footer() && this.tfoot()) {\r\n      top += this.tfoot()!.nativeElement.clientHeight + 1;\r\n    }\r\n    return top;\r\n  });\r\n  getStickyTopRightEleHeight = computed(() => {\r\n    if (this.stickyTopRightEle()) {\r\n      return this.stickyTopRightEle()!.nativeElement.offsetHeight;\r\n    } else {\r\n      return 0;\r\n    }\r\n  });\r\n  getStickyBottomRightEleHeight = computed(() => {\r\n    if (this.stickyBottomRightEle()) {\r\n      return this.stickyBottomRightEle()!.nativeElement.offsetHeight;\r\n    } else {\r\n      return 0;\r\n    }\r\n  });\r\n  hasStickyTopRight = computed(\r\n    () =>\r\n      this.showHeader() &&\r\n      (this.headerPosition() === 'top' || this.headerPosition() === 'top-bottom') &&\r\n      this.columns().some((x) => Number(x.right) >= 0)\r\n  );\r\n  hasStickyTopRightSearch = computed(() => !!this.headSearchTpl());\r\n\r\n  hasStickyBottomRight = computed(\r\n    () =>\r\n      this.showHeader() &&\r\n      (this.headerPosition() === 'bottom' || this.headerPosition() === 'top-bottom') &&\r\n      this.columns().some((x) => Number(x.right) >= 0)\r\n  );\r\n\r\n  cellConfigSignal = computed(() => {\r\n    const cellConfig = this.cellConfig();\r\n    if (!cellConfig) return;\r\n    const setRule = (rule?: XTableCellConfigRule) => {\r\n      if (!rule) return;\r\n      let gridTemplateColumns = '',\r\n        cells = [];\r\n      if (!rule.gridTemplateColumns) {\r\n        gridTemplateColumns = `${this.columns()\r\n          .map((x) => {\r\n            if (x.width) return x.width;\r\n            if (x.flex) return `${x.flex}fr`;\r\n            return '1fr';\r\n          })\r\n          .join(' ')}`;\r\n      }\r\n      if (!rule.cells) return;\r\n      cells = rule.cells.map((y) => {\r\n        const col = this.columns().find((z) => z.id === y.id);\r\n        if (col) {\r\n          return { ...col, ...y } as XTableCell;\r\n        }\r\n        return y;\r\n      });\r\n      return { gridTemplateColumns, cells };\r\n    };\r\n\r\n    return { thead: setRule(cellConfig.thead), tbody: setRule(cellConfig.tbody) };\r\n  });\r\n\r\n  tbodyHeight = signal(0);\r\n  tbodyScrollHeight = signal(0);\r\n\r\n  ngOnInit() {\r\n    this.setRowChecked();\r\n    this.setRowExpand();\r\n  }\r\n\r\n  ngOnChanges(simples: SimpleChanges) {\r\n    const { data, checkedRow, columns, activatedRow, manual, showPagination, expandedAll, paginationPosition } =\r\n      simples;\r\n    XIsChange(expandedAll) && this.setExpandedAll();\r\n    XIsChange(data, checkedRow) && this.setData();\r\n    if (XIsChange(columns)) {\r\n      this.setRowChecked();\r\n      this.setRowExpand();\r\n    }\r\n    XIsChange(columns, activatedRow, showPagination) && this.cdr.detectChanges();\r\n    XIsChange(manual) && this.setManual();\r\n    XIsChange(paginationPosition) && this.setPaginationPosition(paginationPosition);\r\n  }\r\n\r\n  ngAfterViewChecked(): void {\r\n    if (this.bodyCom().length > 0) {\r\n      const first = this.bodyCom()[0].tbody().nativeElement;\r\n      this.tbodyHeight.set(first.clientHeight);\r\n      this.tbodyScrollHeight.set(first.scrollHeight);\r\n      // let trs = first.tbody().nativeElement.querySelectorAll('tr');\r\n      // let i = 0;\r\n      // let h = 0;\r\n      // while (i < trs.length) {\r\n      //   h += trs[i].clientHeight;\r\n      // }\r\n      // this.trsHeight.set(h);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.unSubject.next();\r\n    this.unSubject.complete();\r\n  }\r\n\r\n  setPaginationPosition(position: SimpleChange) {\r\n    const { currentValue, previousValue } = position;\r\n    if (previousValue) {\r\n      this.renderer.removeClass(this.elementRef.nativeElement, `x-table-${previousValue}`);\r\n    }\r\n    if (currentValue) {\r\n      this.renderer.addClass(this.elementRef.nativeElement, `x-table-${currentValue}`);\r\n    }\r\n  }\r\n\r\n  getSticky(column: XTableColumn | XTableCell) {\r\n    return this.getStickyLeft(column) || this.getStickyRight(column);\r\n  }\r\n\r\n  getStickyLeft(column: XTableColumn | XTableCell) {\r\n    return Number(column.left) >= 0;\r\n  }\r\n\r\n  getStickyLeftLast(column: XTableColumn | XTableCell) {\r\n    let lefts = this.columns().filter((x) => Number(x.left) >= 0);\r\n    if (lefts.length === 0) return false;\r\n    return lefts[lefts.length - 1].id === column.id;\r\n  }\r\n\r\n  getStickyRight(column: XTableColumn | XTableCell) {\r\n    return Number(column.right) >= 0;\r\n  }\r\n\r\n  getStickyRightFirst(column: XTableColumn | XTableCell) {\r\n    let rights = this.columns().filter((x) => Number(x.right) >= 0);\r\n    if (rights.length === 0) return false;\r\n    return rights[0].id === column.id;\r\n  }\r\n\r\n  getIndex(index: number) {\r\n    return (this.index() - 1) * this.size() + index + 1;\r\n  }\r\n\r\n  setData() {\r\n    const data = this.data();\r\n    if (XIsArray<XTableRow>(data)) {\r\n      this.dataIsFunc.set(false);\r\n      this.tableData.set(data);\r\n      this.setChecked(data);\r\n      this.setHeadCheckboxList(data);\r\n      this.setExpand(data);\r\n      this.detectChanges();\r\n    } else if (data instanceof Function) {\r\n      this.dataIsFunc.set(true);\r\n      this.getDataByFunc();\r\n    }\r\n  }\r\n\r\n  getDataByFunc() {\r\n    if (!this.manual() || !this.dataIsFunc()) return;\r\n    this.getting.set(true);\r\n    this.unSubject.next();\r\n    (this.data() as Function)(this.index(), this.size(), this.query())\r\n      .pipe(takeUntil(this.unSubject))\r\n      .subscribe((x: XResultList<XTableRow>) => {\r\n        let [data, total] = [x.list as XTableRow[], x.total!];\r\n        if (this.virtualBody()) {\r\n          this.virtualBody()!.scrollToIndex(0);\r\n          this.virtualBody()!.checkViewportSize();\r\n        }\r\n        this.getting.set(false);\r\n        this.tableData.set(data);\r\n        this.setChecked(data);\r\n        this.setHeadCheckboxList(data);\r\n        this.setExpand(data);\r\n        this.total.set(total);\r\n      });\r\n  }\r\n\r\n  setManual() {\r\n    this.getDataByFunc();\r\n  }\r\n\r\n  setRowChecked() {\r\n    this.rowChecked.set(this.columns().find((x) => x.rowChecked) as XTableColumn);\r\n    this.headCheckboxList.set(this.columns().filter((x) => x.type === 'checkbox' && x.headChecked));\r\n  }\r\n\r\n  setRowExpand() {\r\n    this.rowExpand.set(this.columns().find((x) => x.rowExpand) as XTableColumn);\r\n  }\r\n\r\n  isExpandColumn(column: XTableColumn) {\r\n    let expandColumn = this.columns().find((x) => x.id === column.id && x.type === 'expand');\r\n    if (expandColumn) {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  pageChange(_type: 'index' | 'size') {\r\n    this.getDataByFunc();\r\n    this.resetScroll();\r\n  }\r\n\r\n  change(index: number) {\r\n    this.index.set(index);\r\n    this.getDataByFunc();\r\n    this.resetScroll();\r\n  }\r\n\r\n  resetScroll(x = true, y = true) {\r\n    if (this.hasScrollX() && x) this.virtualBody()?.scrollTo({ left: 0 });\r\n    if (this.hasScrollY() && y) this.virtualBody()?.scrollTo({ top: 0 });\r\n  }\r\n\r\n  setChecked(data: XTableRow[]) {\r\n    let result: XTableRow[] = [];\r\n    if (XIsEmpty(data) || !this.checkedRow()) return;\r\n    for (let key in this.checkedRow()) {\r\n      const arr = this.checkedRow()[key];\r\n      for (let item of data as any[]) {\r\n        item[key] = arr.includes(item.id);\r\n        result = [...result, item];\r\n      }\r\n    }\r\n    if (result.length > 0) data = [...result];\r\n  }\r\n\r\n  setHeadCheckboxList(data: XTableRow[]) {\r\n    if (XIsEmpty(data) || !this.headCheckboxList()) return;\r\n    for (let column of this.headCheckboxList()) {\r\n      this.setCheckedValues(column);\r\n    }\r\n  }\r\n\r\n  setExpand(data: XTableRow[]) {\r\n    const getChildren = (node: XTableRow, level: number) => {\r\n      node.level = level;\r\n      node.expanded = this.expandedAll() || level <= this.expandedLevel() || this.expanded().includes(node.id);\r\n      if (XIsUndefined(node.children)) node.children = data.filter((y) => y.pid === node.id);\r\n      if (XIsUndefined(node.leaf)) node.leaf = (node.children?.length as number) > 0;\r\n      if (node.leaf) node.children?.map((y) => getChildren(y, level + 1));\r\n      return node;\r\n    };\r\n    this.treeTableData.set(\r\n      data\r\n        .filter((x) => XIsEmpty(x.pid))\r\n        .map((x, index) => {\r\n          if (XIsUndefined(x.id)) x.id = index + 1;\r\n          return getChildren(x, 0);\r\n        })\r\n    );\r\n  }\r\n\r\n  setExpandedAll() {\r\n    if (!this.treeTable() || this.treeTableData()?.length === 0) return;\r\n    const setChildren = (nodes: XTableRow[]) => {\r\n      if (XIsEmpty(nodes)) return;\r\n      nodes.forEach((x) => {\r\n        x.expanded = Boolean(this.expandedAll());\r\n        setChildren(x.children as XTableRow[]);\r\n      });\r\n    };\r\n    this.treeTableData.update((x) => {\r\n      setChildren(x);\r\n      return [...x];\r\n    });\r\n  }\r\n\r\n  checkSort(sort: XSort[]) {\r\n    if (!this.dataIsFunc) return;\r\n    let query = this.query();\r\n    if (typeof query === 'undefined') query = {};\r\n    query.sort = sort;\r\n    this.query.set(query);\r\n    this.getDataByFunc();\r\n  }\r\n\r\n  headChecked(checked: boolean, column: XTableColumn) {\r\n    this.tableData.update((z) => {\r\n      z.forEach((x) => {\r\n        if (!x.disabled) {\r\n          x[column.id] = checked;\r\n        }\r\n      });\r\n      return [...z];\r\n    });\r\n    this.setCheckedValues(column);\r\n    this.headCheckboxChange.emit({ rows: this.tableData(), checkbox: this.checkedValues() });\r\n    this.detectChanges();\r\n  }\r\n\r\n  setCheckbox(rows: XTableRow[], column: XTableColumn) {\r\n    this.setCheckedValues(column);\r\n    for (let row of rows) {\r\n      this.bodyCheckboxChange.emit(row);\r\n    }\r\n  }\r\n\r\n  bodyChecked(column: XTableColumn, row: XTableRow) {\r\n    this.setCheckedValues(column);\r\n    this.bodyCheckboxChange.emit(row);\r\n  }\r\n\r\n  setCheckedValues(column: XTableColumn) {\r\n    const notDisabled = this.tableData().filter((x) => !x.disabled);\r\n    const count = notDisabled.length;\r\n    const checkedLen = notDisabled.filter((x) => x[column.id]).length;\r\n    this.checkedValues.update((x) => {\r\n      x[column.id] = count === checkedLen && count !== 0;\r\n      x[column.id + this.indeterminate()] = checkedLen > 0 && checkedLen < count;\r\n      return { ...x };\r\n    });\r\n  }\r\n\r\n  detectChanges() {\r\n    this.headCom()?.forEach((x) => {\r\n      x.cdr.markForCheck();\r\n    });\r\n    this.bodyCom()?.forEach((x) => {\r\n      x.cdr.markForCheck();\r\n    });\r\n    this.footCom()?.cdr.markForCheck();\r\n    this.cdr.markForCheck();\r\n  }\r\n}\r\n","<table\r\n  #table\r\n  class=\"x-table\"\r\n  [ngClass]=\"classMap()\"\r\n  [x-loading]=\"loading() && getting()\"\r\n  [class.x-table-wrapper-border-hidden]=\"hiddenWrapBorder()\"\r\n  [class.x-table-scroll-left]=\"getScrollLeft()\"\r\n  [class.x-table-scroll-left-max]=\"scrollLeftMax()\"\r\n  [class.x-table-scroll-top]=\"getScrollTop()\"\r\n  [class.x-table-has-scroll-right]=\"scrollYWidth()\"\r\n  [class.x-table-has-scroll-bottom]=\"scrollXWidth()\"\r\n  [class.x-table-bordered]=\"bordered()\"\r\n  [class.x-table-td-adaption-height]=\"rowHeight() == 0\"\r\n  [class.x-table-cell-config]=\"!!cellConfigSignal()\"\r\n  [class.x-table-last-tr-bordered]=\"!!adaptionHeight() || tbodyHeight() >= tbodyScrollHeight()\"\r\n>\r\n  @if (header()) {\r\n    <caption #caption class=\"x-table-header\" [style.height.px]=\"getRowHeight()\" [style.min-height.px]=\"getRowHeight()\">\r\n      <ng-container *xOutlet=\"header()\">{{ header() }}</ng-container>\r\n    </caption>\r\n  }\r\n  @if (showHeader() && (headerPosition() === 'top' || headerPosition() === 'top-bottom')) {\r\n    <x-table-head\r\n      [columns]=\"columns()\"\r\n      [rowHeight]=\"rowHeight()\"\r\n      [headerHeight]=\"headerHeight()!\"\r\n      [columnTpl]=\"headColumnTpl()\"\r\n      [scrollYWidth]=\"scrollYWidth()\"\r\n      [scrollXWidth]=\"scrollXWidth()!\"\r\n      [cellConfig]=\"cellConfigSignal()?.thead\"\r\n      [position]=\"'top'\"\r\n    ></x-table-head>\r\n  }\r\n  <x-table-body\r\n    [data]=\"treeTable() ? treeTableData() : tableData()\"\r\n    [columns]=\"columns()\"\r\n    [itemSize]=\"itemSize()\"\r\n    [rowHeight]=\"rowHeight()\"\r\n    [bodyHeight]=\"bodyHeight()!\"\r\n    [columnTpl]=\"bodyColumnTpl()\"\r\n    [allowSelectRow]=\"allowSelectRow()\"\r\n    [virtualScroll]=\"virtualScroll()\"\r\n    [minBufferPx]=\"minBufferPx()\"\r\n    [maxBufferPx]=\"maxBufferPx()\"\r\n    [adaptionHeight]=\"adaptionHeight()!\"\r\n    [docPercent]=\"docPercent()\"\r\n    [scroll]=\"scroll()\"\r\n    [rowClass]=\"rowClass()\"\r\n    [cellConfig]=\"cellConfigSignal()?.tbody\"\r\n    [expandedAll]=\"expandedAll()\"\r\n    [expandTpl]=\"expandTpl()\"\r\n    [(activatedRow)]=\"activatedRow\"\r\n    (rowClick)=\"rowClick.emit($event)\"\r\n  ></x-table-body>\r\n  @if (showHeader() && (headerPosition() === 'bottom' || headerPosition() === 'top-bottom')) {\r\n    <x-table-head\r\n      [columns]=\"columns()\"\r\n      [rowHeight]=\"rowHeight()\"\r\n      [headerHeight]=\"headerHeight()!\"\r\n      [columnTpl]=\"headColumnTpl()\"\r\n      [scrollYWidth]=\"scrollYWidth()\"\r\n      [scrollXWidth]=\"scrollXWidth()!\"\r\n      [cellConfig]=\"cellConfigSignal()?.thead\"\r\n      [position]=\"'bottom'\"\r\n    ></x-table-head>\r\n  }\r\n  @if (footer()) {\r\n    <x-table-foot [footer]=\"footer()\" [rowHeight]=\"rowHeight()\"></x-table-foot>\r\n  }\r\n  @if (hasStickyTopRight()) {\r\n    <div\r\n      #stickyTopRightEle\r\n      class=\"x-table-sticky-right-scroll\"\r\n      [class.x-table-border-bottom]=\"headSearchTpl()\"\r\n      [style.top.px]=\"getStickyTopScrollTop()\"\r\n      [style.width.px]=\"scrollYWidth()\"\r\n      [style.height.px]=\"getRowHeight()\"\r\n      [style.min-height.px]=\"getRowHeight()\"\r\n    ></div>\r\n  }\r\n  @if (hasStickyTopRight() && headSearchTpl()) {\r\n    <div\r\n      class=\"x-table-sticky-right-scroll\"\r\n      [style.top.px]=\"getStickyTopScrollTop() + getStickyTopRightEleHeight()\"\r\n      [style.width.px]=\"scrollYWidth()\"\r\n      [style.height.px]=\"getRowHeight()\"\r\n      [style.min-height.px]=\"getRowHeight()\"\r\n    ></div>\r\n  }\r\n  @if (hasStickyBottomRight()) {\r\n    <div\r\n      #stickyBottomRightEle\r\n      class=\"x-table-sticky-right-scroll\"\r\n      [style.bottom.px]=\"getStickyBottomScrollTop()\"\r\n      [style.width.px]=\"scrollYWidth()\"\r\n      [style.height.px]=\"getRowHeight()\"\r\n      [style.min-height.px]=\"getRowHeight()\"\r\n    ></div>\r\n  }\r\n  @if (hasStickyBottomRight() && headSearchTpl()) {\r\n    <div\r\n      class=\"x-table-sticky-right-scroll\"\r\n      [class.x-table-border-bottom]=\"headSearchTpl()\"\r\n      [style.bottom.px]=\"getStickyBottomScrollTop() + getStickyBottomRightEleHeight()\"\r\n      [style.width.px]=\"scrollYWidth()\"\r\n      [style.height.px]=\"getRowHeight()\"\r\n      [style.min-height.px]=\"getRowHeight()\"\r\n    ></div>\r\n  }\r\n</table>\r\n@if (showPagination() && size()) {\r\n  <x-pagination\r\n    #pagination\r\n    [(index)]=\"index\"\r\n    [(size)]=\"size\"\r\n    [(query)]=\"query\"\r\n    [total]=\"total()\"\r\n    (indexChange)=\"pageChange('index')\"\r\n    (sizeChange)=\"pageChange('size')\"\r\n    [showEllipsis]=\"showEllipsis()\"\r\n    [showTotal]=\"showTotal()\"\r\n    [space]=\"space()\"\r\n    [showBackground]=\"showBackground()\"\r\n    [showSize]=\"showSize()\"\r\n    [showJump]=\"showJump()\"\r\n    [jumpWidth]=\"jumpWidth()\"\r\n    [showInputSize]=\"showInputSize()\"\r\n    [inputSizeWidth]=\"inputSizeWidth()\"\r\n    [sizeData]=\"sizeData()\"\r\n    [sizeWidth]=\"sizeWidth()\"\r\n    [pageLinkSize]=\"pageLinkSize()\"\r\n    [disabled]=\"disabled()\"\r\n    [totalTpl]=\"totalTpl()\"\r\n    [simple]=\"simple()\"\r\n    [simpleIndexWidth]=\"simpleIndexWidth()\"\r\n    [jumpTooltipText]=\"jumpTooltipText()\"\r\n    [showJumpTooltipText]=\"showJumpTooltipText()\"\r\n    [inputSizeTooltipText]=\"inputSizeTooltipText()\"\r\n    [showInputSizeTooltipText]=\"showInputSizeTooltipText()\"\r\n    [inputIndexSizeSureType]=\"inputIndexSizeSureType()\"\r\n  >\r\n  </x-pagination>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XTableComponent } from './table.component';\r\nimport { XTableHeadComponent } from './table-head.component';\r\nimport { XTableBodyComponent } from './table-body.component';\r\nimport { XTableFootComponent } from './table-foot.component';\r\n\r\n@NgModule({\r\n  exports: [XTableComponent],\r\n  imports: [XTableComponent, XTableHeadComponent, XTableBodyComponent, XTableFootComponent]\r\n})\r\nexport class XTableModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DOCUMENT","i2"],"mappings":"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"}