@ng-nest/ui 13.0.4 → 13.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/alert/alert.component.d.ts +2 -1
  2. package/core/config/config.d.ts +7 -1
  3. package/core/interfaces/layout.type.d.ts +1 -1
  4. package/dialog/{dialog-container.component.d.ts → dialog-portal.component.d.ts} +3 -3
  5. package/dialog/{dialog-container.directives.d.ts → dialog-portal.directives.d.ts} +0 -0
  6. package/dialog/dialog-ref.d.ts +3 -3
  7. package/dialog/dialog.module.d.ts +3 -3
  8. package/dialog/dialog.property.d.ts +3 -3
  9. package/dialog/public-api.d.ts +2 -2
  10. package/drawer/drawer-container.component.d.ts +3 -13
  11. package/drawer/drawer-portal.component.d.ts +18 -0
  12. package/drawer/{drawer-container.directives.d.ts → drawer-portal.directives.d.ts} +0 -0
  13. package/drawer/drawer-ref.d.ts +3 -3
  14. package/drawer/drawer.component.d.ts +10 -3
  15. package/drawer/drawer.module.d.ts +9 -8
  16. package/drawer/drawer.property.d.ts +16 -2
  17. package/drawer/examples/en_US/default/container/README.md +6 -0
  18. package/drawer/examples/zh_CN/default/container/README.md +6 -0
  19. package/drawer/public-api.d.ts +3 -2
  20. package/esm2020/alert/alert.component.mjs +9 -4
  21. package/esm2020/auto-complete/auto-complete.module.mjs +2 -3
  22. package/esm2020/cascade/cascade.module.mjs +2 -3
  23. package/esm2020/color-picker/color-picker.module.mjs +2 -3
  24. package/esm2020/core/config/config.mjs +1 -1
  25. package/esm2020/core/interfaces/layout.type.mjs +1 -1
  26. package/esm2020/date-picker/date-picker.module.mjs +2 -3
  27. package/esm2020/dialog/dialog-portal.component.mjs +52 -0
  28. package/esm2020/dialog/{dialog-container.directives.mjs → dialog-portal.directives.mjs} +7 -7
  29. package/esm2020/dialog/dialog-ref.mjs +1 -1
  30. package/esm2020/dialog/dialog.component.mjs +5 -5
  31. package/esm2020/dialog/dialog.module.mjs +7 -7
  32. package/esm2020/dialog/dialog.property.mjs +2 -2
  33. package/esm2020/dialog/dialog.service.mjs +3 -3
  34. package/esm2020/dialog/public-api.mjs +3 -3
  35. package/esm2020/drawer/drawer-container.component.mjs +16 -39
  36. package/esm2020/drawer/drawer-portal.component.mjs +52 -0
  37. package/esm2020/drawer/{drawer-container.directives.mjs → drawer-portal.directives.mjs} +5 -5
  38. package/esm2020/drawer/drawer-ref.mjs +1 -1
  39. package/esm2020/drawer/drawer.component.mjs +54 -18
  40. package/esm2020/drawer/drawer.module.mjs +23 -6
  41. package/esm2020/drawer/drawer.property.mjs +19 -1
  42. package/esm2020/drawer/drawer.service.mjs +4 -4
  43. package/esm2020/drawer/public-api.mjs +4 -3
  44. package/esm2020/dropdown/dropdown.module.mjs +2 -3
  45. package/esm2020/find/find.component.mjs +13 -4
  46. package/esm2020/find/find.property.mjs +18 -2
  47. package/esm2020/menu/menu.component.mjs +3 -3
  48. package/esm2020/menu/menu.property.mjs +7 -2
  49. package/esm2020/message/message-ref.mjs +12 -0
  50. package/esm2020/message/message.component.mjs +3 -3
  51. package/esm2020/message/message.property.mjs +1 -1
  52. package/esm2020/message/message.service.mjs +34 -13
  53. package/esm2020/message/public-api.mjs +2 -1
  54. package/esm2020/popconfirm/popconfirm.component.mjs +26 -5
  55. package/esm2020/popconfirm/popconfirm.property.mjs +10 -3
  56. package/esm2020/popover/popover.directive.mjs +8 -2
  57. package/esm2020/popover/popover.module.mjs +2 -3
  58. package/esm2020/popover/popover.property.mjs +7 -2
  59. package/esm2020/select/select.module.mjs +2 -3
  60. package/esm2020/table/table-body.component.mjs +4 -4
  61. package/esm2020/table/table.component.mjs +3 -3
  62. package/esm2020/table/table.property.mjs +7 -3
  63. package/esm2020/time-picker/time-picker.module.mjs +2 -3
  64. package/esm2020/tooltip/tooltip.directive.mjs +12 -4
  65. package/esm2020/tooltip/tooltip.module.mjs +2 -3
  66. package/esm2020/tooltip/tooltip.property.mjs +18 -2
  67. package/esm2020/tree/tree-node.component.mjs +3 -3
  68. package/esm2020/tree/tree.property.mjs +8 -2
  69. package/fesm2015/ng-nest-ui-alert.mjs +8 -3
  70. package/fesm2015/ng-nest-ui-alert.mjs.map +1 -1
  71. package/fesm2015/ng-nest-ui-auto-complete.mjs +1 -2
  72. package/fesm2015/ng-nest-ui-auto-complete.mjs.map +1 -1
  73. package/fesm2015/ng-nest-ui-cascade.mjs +1 -2
  74. package/fesm2015/ng-nest-ui-cascade.mjs.map +1 -1
  75. package/fesm2015/ng-nest-ui-color-picker.mjs +1 -2
  76. package/fesm2015/ng-nest-ui-color-picker.mjs.map +1 -1
  77. package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
  78. package/fesm2015/ng-nest-ui-date-picker.mjs +1 -2
  79. package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
  80. package/fesm2015/ng-nest-ui-dialog.mjs +22 -22
  81. package/fesm2015/ng-nest-ui-dialog.mjs.map +1 -1
  82. package/fesm2015/ng-nest-ui-drawer.mjs +129 -32
  83. package/fesm2015/ng-nest-ui-drawer.mjs.map +1 -1
  84. package/fesm2015/ng-nest-ui-dropdown.mjs +1 -2
  85. package/fesm2015/ng-nest-ui-dropdown.mjs.map +1 -1
  86. package/fesm2015/ng-nest-ui-find.mjs +29 -4
  87. package/fesm2015/ng-nest-ui-find.mjs.map +1 -1
  88. package/fesm2015/ng-nest-ui-menu.mjs +8 -3
  89. package/fesm2015/ng-nest-ui-menu.mjs.map +1 -1
  90. package/fesm2015/ng-nest-ui-message.mjs +48 -15
  91. package/fesm2015/ng-nest-ui-message.mjs.map +1 -1
  92. package/fesm2015/ng-nest-ui-popconfirm.mjs +34 -6
  93. package/fesm2015/ng-nest-ui-popconfirm.mjs.map +1 -1
  94. package/fesm2015/ng-nest-ui-popover.mjs +14 -4
  95. package/fesm2015/ng-nest-ui-popover.mjs.map +1 -1
  96. package/fesm2015/ng-nest-ui-select.mjs +1 -2
  97. package/fesm2015/ng-nest-ui-select.mjs.map +1 -1
  98. package/fesm2015/ng-nest-ui-table.mjs +11 -7
  99. package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
  100. package/fesm2015/ng-nest-ui-time-picker.mjs +1 -2
  101. package/fesm2015/ng-nest-ui-time-picker.mjs.map +1 -1
  102. package/fesm2015/ng-nest-ui-tooltip.mjs +29 -6
  103. package/fesm2015/ng-nest-ui-tooltip.mjs.map +1 -1
  104. package/fesm2015/ng-nest-ui-tree.mjs +9 -3
  105. package/fesm2015/ng-nest-ui-tree.mjs.map +1 -1
  106. package/fesm2020/ng-nest-ui-alert.mjs +8 -3
  107. package/fesm2020/ng-nest-ui-alert.mjs.map +1 -1
  108. package/fesm2020/ng-nest-ui-auto-complete.mjs +1 -2
  109. package/fesm2020/ng-nest-ui-auto-complete.mjs.map +1 -1
  110. package/fesm2020/ng-nest-ui-cascade.mjs +1 -2
  111. package/fesm2020/ng-nest-ui-cascade.mjs.map +1 -1
  112. package/fesm2020/ng-nest-ui-color-picker.mjs +1 -2
  113. package/fesm2020/ng-nest-ui-color-picker.mjs.map +1 -1
  114. package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
  115. package/fesm2020/ng-nest-ui-date-picker.mjs +1 -2
  116. package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
  117. package/fesm2020/ng-nest-ui-dialog.mjs +22 -22
  118. package/fesm2020/ng-nest-ui-dialog.mjs.map +1 -1
  119. package/fesm2020/ng-nest-ui-drawer.mjs +127 -32
  120. package/fesm2020/ng-nest-ui-drawer.mjs.map +1 -1
  121. package/fesm2020/ng-nest-ui-dropdown.mjs +1 -2
  122. package/fesm2020/ng-nest-ui-dropdown.mjs.map +1 -1
  123. package/fesm2020/ng-nest-ui-find.mjs +29 -4
  124. package/fesm2020/ng-nest-ui-find.mjs.map +1 -1
  125. package/fesm2020/ng-nest-ui-menu.mjs +8 -3
  126. package/fesm2020/ng-nest-ui-menu.mjs.map +1 -1
  127. package/fesm2020/ng-nest-ui-message.mjs +47 -15
  128. package/fesm2020/ng-nest-ui-message.mjs.map +1 -1
  129. package/fesm2020/ng-nest-ui-popconfirm.mjs +34 -6
  130. package/fesm2020/ng-nest-ui-popconfirm.mjs.map +1 -1
  131. package/fesm2020/ng-nest-ui-popover.mjs +14 -4
  132. package/fesm2020/ng-nest-ui-popover.mjs.map +1 -1
  133. package/fesm2020/ng-nest-ui-select.mjs +1 -2
  134. package/fesm2020/ng-nest-ui-select.mjs.map +1 -1
  135. package/fesm2020/ng-nest-ui-table.mjs +11 -7
  136. package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
  137. package/fesm2020/ng-nest-ui-time-picker.mjs +1 -2
  138. package/fesm2020/ng-nest-ui-time-picker.mjs.map +1 -1
  139. package/fesm2020/ng-nest-ui-tooltip.mjs +29 -6
  140. package/fesm2020/ng-nest-ui-tooltip.mjs.map +1 -1
  141. package/fesm2020/ng-nest-ui-tree.mjs +9 -3
  142. package/fesm2020/ng-nest-ui-tree.mjs.map +1 -1
  143. package/find/find.property.d.ts +31 -1
  144. package/menu/menu.property.d.ts +8 -3
  145. package/message/examples/en_US/default/loading/README.md +6 -0
  146. package/message/examples/zh_CN/default/loading/README.md +6 -0
  147. package/message/message-ref.d.ts +8 -0
  148. package/message/message.component.d.ts +3 -3
  149. package/message/message.property.d.ts +23 -3
  150. package/message/message.service.d.ts +4 -1
  151. package/message/public-api.d.ts +1 -0
  152. package/package.json +7 -7
  153. package/popconfirm/examples/en_US/default/async-close/README.md +6 -0
  154. package/popconfirm/examples/en_US/default/condition/README.md +6 -0
  155. package/popconfirm/examples/zh_CN/default/async-close/README.md +6 -0
  156. package/popconfirm/examples/zh_CN/default/condition/README.md +6 -0
  157. package/popconfirm/popconfirm.component.d.ts +6 -2
  158. package/popconfirm/popconfirm.property.d.ts +13 -2
  159. package/popover/popover.property.d.ts +6 -1
  160. package/steps/examples/zh_CN/default/node-status/README.md +1 -1
  161. package/table/examples/en_US/default/rowclass/README.md +6 -0
  162. package/table/examples/zh_CN/default/rowclass/README.md +6 -0
  163. package/table/table.property.d.ts +23 -2
  164. package/tooltip/tooltip.directive.d.ts +1 -0
  165. package/tooltip/tooltip.property.d.ts +11 -1
  166. package/tree/tree.property.d.ts +6 -1
  167. package/esm2020/dialog/dialog-container.component.mjs +0 -52
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-table.mjs","sources":["../../../../lib/ng-nest/ui/table/table.property.ts","../../../../lib/ng-nest/ui/table/drag.directive.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-body.component.ts","../../../../lib/ng-nest/ui/table/table-body.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/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 XNumber,\r\n XInputNumber,\r\n XIdentityProperty,\r\n XId,\r\n XSort,\r\n XInputBoolean,\r\n XBoolean,\r\n XData,\r\n XWithConfig,\r\n XTextAlign,\r\n XSize\r\n} from '@ng-nest/ui/core';\r\nimport { Input, Component, EventEmitter, TemplateRef, Output } from '@angular/core';\r\nimport { XPaginationProperty, XPaginationOption } from '@ng-nest/ui/pagination';\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_CONFIG_NAME = 'table';\r\n\r\n/**\r\n * Table Property\r\n */\r\n@Component({ template: '' })\r\nexport class XTableProperty extends XPaginationProperty implements XTableOption {\r\n /**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\n @Input() data: XData<XTableRow> = [];\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n @Input() columns: XTableColumn[] = [];\r\n /**\r\n * @zh_CN 表头和行高,单位 px\r\n * @en_US Header and row height, unit px\r\n */\r\n @Input() @XWithConfig<number>(X_CONFIG_NAME, 42) @XInputNumber() rowHeight!: number;\r\n /**\r\n * @zh_CN 是否启用加载 loading\r\n * @en_US Whether to enable loading\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() loading!: XBoolean;\r\n /**\r\n * @zh_CN 是否展示列边框\r\n * @en_US Whether to show column borders\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() bordered!: XBoolean;\r\n /**\r\n * @zh_CN 是否显示列头\r\n * @en_US Whether to display the column headers\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() showHeader!: XBoolean;\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n @Input() activatedRow?: XTableRow;\r\n /**\r\n * @zh_CN 当前选中行改变\r\n * @en_US The currently selected row changes\r\n */\r\n @Output() activatedRowChange = new EventEmitter<XTableRow>();\r\n /**\r\n * @zh_CN 列头自定义模板\r\n * @en_US Column header custom template\r\n */\r\n @Input() headColumnTpl: XTableTemplate = {};\r\n /**\r\n * @zh_CN 列内容自定义模板\r\n * @en_US Column content custom template\r\n */\r\n @Input() bodyColumnTpl: XTableTemplate = {};\r\n /**\r\n * @zh_CN 排序点击的事件\r\n * @en_US Sort click events\r\n */\r\n @Output() sortChange = new EventEmitter<XSort[]>();\r\n /**\r\n * @zh_CN 允许行点击选中\r\n * @en_US Allow row click to select\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() allowSelectRow!: XBoolean;\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME) @XInputBoolean() virtualScroll!: XBoolean;\r\n /**\r\n * @zh_CN body 数据高度\r\n * @en_US body data height\r\n */\r\n @Input() @XInputNumber() bodyHeight?: number;\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 @Input() @XWithConfig<number>(X_CONFIG_NAME, 42) @XInputNumber() itemSize!: number;\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 @Input() minBufferPx: number = 100;\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 @Input() maxBufferPx: number = 200;\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 @Input() @XInputNumber() adaptionHeight?: XNumber;\r\n /**\r\n * @zh_CN 文档高度百分比,弹窗百分比高度用到\r\n * @en_US Document height percentage, used by pop-up window percentage height\r\n */\r\n @Input() @XInputNumber() docPercent: XNumber = 1;\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 @Input() checkedRow: { [property: string]: any[] } = {};\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 @Input() @XInputBoolean() manual: XBoolean = true;\r\n /**\r\n * @zh_CN 滚动区域高宽\r\n * @en_US Height and width of rolling area\r\n */\r\n @Input() scroll?: { x: number; y: number };\r\n /**\r\n * @zh_CN 参数控制请求改变事件\r\n * @en_US Parameter control request change event\r\n */\r\n @Output() manualChange = new EventEmitter<boolean>();\r\n /**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell config\r\n */\r\n @Input() cellConfig?: XTableCellConfig;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') rowSize?: XSize;\r\n}\r\n\r\n/**\r\n * Table Option\r\n * @undocument true\r\n */\r\nexport interface XTableOption extends XPaginationOption {\r\n /**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\n data?: XData<XTableRow>;\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n columns?: XTableColumn[];\r\n /**\r\n * @zh_CN 表头和行高,单位 px\r\n * @en_US Header and row height, unit px\r\n */\r\n rowHeight?: number;\r\n /**\r\n * @zh_CN 是否启用加载 loading\r\n * @en_US Whether to enable loading\r\n */\r\n loading?: XBoolean;\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n activatedRow?: XTableRow;\r\n /**\r\n * @zh_CN 列头自定义模板\r\n * @en_US Column header custom template\r\n */\r\n headColumnTpl?: XTableTemplate;\r\n /**\r\n * @zh_CN 列内容自定义模板\r\n * @en_US Column content custom template\r\n */\r\n bodyColumnTpl?: XTableTemplate;\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n virtualScroll?: XBoolean;\r\n /**\r\n * @zh_CN body 数据高度\r\n * @en_US body data height\r\n */\r\n bodyHeight?: number;\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 minBufferPx?: number;\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 maxBufferPx?: number;\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 adaptionHeight?: XNumber;\r\n /**\r\n * @zh_CN 文档高度百分比,弹窗百分比高度用到\r\n * @en_US Document height percentage, used by pop-up window percentage height\r\n */\r\n docPercent?: XNumber;\r\n /**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell config\r\n */\r\n cellConfig?: XTableCellConfig;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n rowSize?: XSize;\r\n}\r\n\r\n/**\r\n * @zh_CN 数据\r\n * @en_US Data\r\n */\r\nexport interface XTableRow extends XId {\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 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 文字对齐方式\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 头部显示 checkbox\r\n * @en_US Head shows checkbox\r\n */\r\n headChecked?: 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 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 对应列的 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';\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({ template: '' })\r\nexport class XTableHeadProperty extends XProperty {\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n @Input() columns: XTableColumn[] = [];\r\n /**\r\n * @zh_CN 高度,单位 px\r\n * @en_US Height in px\r\n */\r\n @Input() @XInputNumber() rowHeight: XNumber = 42;\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n @Input() columnTpl: XTableTemplate = {};\r\n /**\r\n * @zh_CN 竖向滚动条宽度\r\n * @en_US Vertical scroll bar width\r\n */\r\n @Input() scrollYWidth?: number;\r\n /**\r\n * @zh_CN 横向滚动条宽度\r\n * @en_US Horizontal scroll bar width\r\n */\r\n @Input() scrollXWidth?: number | null;\r\n /**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell merge rules\r\n */\r\n @Input() cellConfig?: XTableCellConfigRule;\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({ template: '' })\r\nexport class XTableBodyProperty extends XProperty {\r\n /**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\n @Input() data: XTableRow[] = [];\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n @Input() columns: XTableColumn[] = [];\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n @Input() columnTpl: XTableTemplate = {};\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n @Input() activatedRow?: XTableRow;\r\n /**\r\n * @zh_CN 当前选中行改变\r\n * @en_US The currently selected row changes\r\n */\r\n @Output() activatedRowChange = new EventEmitter<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 @Input() @XInputNumber() rowHeight: XNumber = 42;\r\n /**\r\n * @zh_CN body 数据高度\r\n * @en_US body data height\r\n */\r\n @Input() @XInputNumber() bodyHeight?: number;\r\n /**\r\n * @zh_CN 允许行点击选中\r\n * @en_US Allow row click to select\r\n */\r\n @Input() @XInputBoolean() allowSelectRow: XBoolean = true;\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n @Input() @XInputBoolean() virtualScroll: XBoolean = false;\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 @Input() @XInputNumber() itemSize: number = 42;\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 @Input() minBufferPx: number = 100;\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 @Input() maxBufferPx: number = 200;\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 @Input() @XInputNumber() adaptionHeight?: XNumber;\r\n /**\r\n * @zh_CN 文档高度百分比,弹窗百分比高度用到\r\n * @en_US Document height percentage, used by pop-up window percentage height\r\n */\r\n @Input() @XInputNumber() docPercent: XNumber = 1;\r\n /**\r\n * @zh_CN 滚动区域高宽\r\n * @en_US Height and width of rolling area\r\n */\r\n @Input() scroll?: { x: number; y: number };\r\n /**\r\n * @zh_CN 单元格配置规则\r\n * @en_US Cell config rules\r\n */\r\n @Input() cellConfig?: XTableCellConfigRule;\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({ template: '' })\r\nexport class XTableFootProperty extends XProperty {}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Directive, ElementRef, EventEmitter, Inject, Output, Renderer2 } from '@angular/core';\r\nimport { fromEvent, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Directive({ selector: '[xDrag]' })\r\nexport class XDragDirective {\r\n @Output() draging = new EventEmitter<{ x: number; y: number }>();\r\n private _unSubject = new Subject<void>();\r\n doc: Document;\r\n\r\n constructor(private elementRef: ElementRef, @Inject(DOCUMENT) document: any, private renderer: Renderer2) {\r\n this.doc = document;\r\n }\r\n\r\n ngOnInit() {\r\n const mouseDown = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown');\r\n\r\n mouseDown.subscribe((downMe: MouseEvent) => {\r\n let x = downMe.pageX;\r\n let y = downMe.pageY;\r\n let offsetX = 0;\r\n let offsetY = 0;\r\n const _unSub = new Subject<void>();\r\n this.renderer.setStyle(this.doc.documentElement, 'cursor', 'ew-resize');\r\n this.renderer.setStyle(this.doc.documentElement, 'user-select', 'none');\r\n fromEvent<MouseEvent>(this.doc.documentElement, 'mousemove')\r\n .pipe(takeUntil(_unSub))\r\n .subscribe((moveMe: MouseEvent) => {\r\n offsetX = moveMe.pageX - x;\r\n offsetY = moveMe.pageY - y;\r\n x = moveMe.pageX;\r\n y = moveMe.pageY;\r\n this.draging.emit({ x: offsetX, y: offsetY });\r\n });\r\n fromEvent<MouseEvent>(this.doc.documentElement, 'mouseup')\r\n .pipe(takeUntil(_unSub))\r\n .subscribe(() => {\r\n this.renderer.removeStyle(this.doc.documentElement, 'cursor');\r\n this.renderer.removeStyle(this.doc.documentElement, 'user-select');\r\n _unSub.next();\r\n _unSub.complete();\r\n });\r\n });\r\n\r\n // fromEvent(this.elementRef.nativeElement, 'mousedown')\r\n // .pipe(\r\n // tap((mouse: MouseEvent) => {\r\n // return { startX: mouse.clientX, startY: mouse.clientY };\r\n // }),\r\n // tap((x) => {\r\n // fromEvent(this.elementRef.nativeElement, 'mousemove').pipe()\r\n // }),\r\n // takeUntil(this._unSubject)\r\n // )\r\n // .subscribe((x) => {\r\n // console.log(x);\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","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n SimpleChanges,\r\n ViewChild,\r\n Input\r\n} from '@angular/core';\r\nimport { XTableHeadPrefix, XTableHeadProperty, XTableColumn, XTableCell } from './table.property';\r\nimport { removeNgTag, XIsEmpty, XSort, XIsChange, XConfigService, XNumber } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XTableHeadPrefix}`,\r\n templateUrl: './table-head.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class XTableHeadComponent extends XTableHeadProperty implements OnInit {\r\n sort: XSort[] = [];\r\n sortStr = '';\r\n theadStyle: { [property: string]: any } = {};\r\n @ViewChild('thead') thead!: ElementRef;\r\n @Input() table: any;\r\n get getRowHeight() {\r\n return this.rowHeight == 0 ? '' : this.rowHeight;\r\n }\r\n constructor(\r\n // @Optional() @Host() public table: XTableComponent,\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnChanges(simples: SimpleChanges) {\r\n const { columns, scrollYWidth, scrollXWidth, cellConfig } = simples;\r\n XIsChange(columns, scrollYWidth, scrollXWidth, cellConfig) && this.cdr.detectChanges();\r\n }\r\n\r\n ngOnInit() {\r\n removeNgTag(this.elementRef.nativeElement);\r\n this.setStyle();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.table.thead = this.thead;\r\n this.table.headChange = () => this.cdr.detectChanges();\r\n }\r\n\r\n getSticky(column: XTableColumn | XTableCell) {\r\n return Number(column.left) >= 0;\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 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.theadStyle = {\r\n height: `${height}px`,\r\n ['min-height']: `${this.getRowHeight}px`\r\n };\r\n }\r\n\r\n onSort(column: XTableColumn) {\r\n if (!column.sort) return;\r\n if (XIsEmpty(this.sort)) this.sort = [];\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 = [];\r\n this.sortStr = '';\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 = [sort];\r\n }\r\n if (!XIsEmpty(this.sort)) this.sortStr = `${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 this.cdr.detectChanges();\r\n }\r\n\r\n dragWidth(dis: { x: number; y: number }, column: XTableColumn | XTableCell) {\r\n if (column.width) {\r\n (column.width as number) += dis.x;\r\n if (column.width < 60) column.width = 60;\r\n this.cdr.detectChanges();\r\n this.table.bodyChange();\r\n }\r\n }\r\n\r\n trackByItem(_index: number, item: XTableColumn) {\r\n return item.id;\r\n }\r\n}\r\n","<thead #thead [ngStyle]=\"theadStyle\">\r\n <ng-container *ngIf=\"cellConfig; else columnsTpl\">\r\n <tr [style.gridTemplateColumns]=\"cellConfig.gridTemplateColumns\" [style.min-height.px]=\"getRowHeight\">\r\n <th\r\n *ngFor=\"let column of cellConfig.cells\"\r\n [class.x-table-sticky]=\"getSticky(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.min-height.px]=\"getRowHeight\"\r\n [title]=\"column?.label\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"columnBaseTpl; context: { column: column }\"></ng-container>\r\n <div *ngIf=\"column.dragWidth\" class=\"x-table-drag-width\" xDrag (draging)=\"dragWidth($event, column)\"></div>\r\n </th>\r\n </tr>\r\n </ng-container>\r\n</thead>\r\n\r\n<ng-template #columnsTpl>\r\n <tr\r\n [style.height.px]=\"getRowHeight\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n [style.padding-right.px]=\"scrollYWidth\"\r\n [style.width.px]=\"scrollXWidth\"\r\n >\r\n <th\r\n *ngFor=\"let column of columns; trackBy: trackByItem\"\r\n [class.x-table-sticky]=\"getSticky(column)\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n [style.width.px]=\"column.width\"\r\n [style.left.px]=\"column.left\"\r\n [style.flex]=\"getFlex(column)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"columnBaseTpl; context: { column: column }\"></ng-container>\r\n <div *ngIf=\"column.dragWidth\" class=\"x-table-drag-width\" xDrag (draging)=\"dragWidth($event, column)\"></div>\r\n </th>\r\n </tr>\r\n</ng-template>\r\n\r\n<ng-template #columnBaseTpl let-column=\"column\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <x-checkbox\r\n *ngIf=\"column.headChecked\"\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 ></x-checkbox>\r\n <ng-container *ngIf=\"!column.headChecked\">\r\n <ng-container *ngTemplateOutlet=\"cloumnDefaultTpl; context: { column: column }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'index'\">\r\n <a>{{ column.label }}</a>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngTemplateOutlet=\"cloumnDefaultTpl; context: { column: column }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\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 {{ column.label }}\r\n </ng-container>\r\n <x-icon\r\n *ngIf=\"column.sort\"\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 </a>\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 OnChanges,\r\n Inject,\r\n ViewChild,\r\n Input\r\n} from '@angular/core';\r\nimport { XTableBodyPrefix, XTableBodyProperty, XTableRow, XTableColumn, XTableCell } from './table.property';\r\nimport { removeNgTag, XIsChange, XResize, XConfigService, XNumber, stripTags } from '@ng-nest/ui/core';\r\nimport { Subject, fromEvent } from 'rxjs';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XTableBodyPrefix}`,\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, OnChanges {\r\n tbodyStyle: { [property: string]: any } = {};\r\n get isEmpty() {\r\n return this.data?.length === 0;\r\n }\r\n get getRowHeight() {\r\n return this.rowHeight == 0 ? '' : this.rowHeight;\r\n }\r\n get getItemSize() {\r\n return this.rowHeight !== 0 && this.itemSize > this.rowHeight ? this.rowHeight : this.itemSize;\r\n }\r\n\r\n @ViewChild('tbody') tbody!: ElementRef;\r\n @ViewChild('virtualBody') virtualBody!: CdkVirtualScrollViewport;\r\n @Input() table: any;\r\n\r\n private _unSubject = new Subject<void>();\r\n private _resizeObserver!: ResizeObserver;\r\n\r\n constructor(\r\n // @Optional() @Host() public table: XTableComponent,\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n @Inject(DOCUMENT) public doc: any,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n ngOnChanges(simples: SimpleChanges) {\r\n const { data, columns, activatedRow, mergeRule } = simples;\r\n XIsChange(data, columns, activatedRow, mergeRule) && this.cdr.detectChanges();\r\n }\r\n\r\n ngOnInit() {\r\n removeNgTag(this.elementRef.nativeElement);\r\n if (this.scroll?.y && !this.bodyHeight) {\r\n this.bodyHeight = this.scroll.y;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.table.virtualBody = this.virtualBody;\r\n this.table.bodyChange = () => this.cdr.detectChanges();\r\n this.setSubject();\r\n this.setScroll();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n setSubject() {\r\n if (this.virtualBody) {\r\n this.table.scrollContentEle = this.virtualBody?.elementRef?.nativeElement.querySelector(\r\n '.cdk-virtual-scroll-content-wrapper'\r\n ) as HTMLElement;\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(takeUntil(this._unSubject))\r\n .subscribe((x) => {\r\n this._resizeObserver = x.resizeObserver;\r\n this.setAdaptionHeight();\r\n this.setScroll();\r\n });\r\n fromEvent(window, 'resize')\r\n .pipe(takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n this.setAdaptionHeight();\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 = ele.scrollTop;\r\n this.table.scrollLeft = ele.scrollLeft;\r\n if (ele.scrollLeft >= 0 && this.table.thead) {\r\n this.table.thead.nativeElement.scrollLeft = this.table.scrollLeft;\r\n }\r\n this.table.cdr.detectChanges();\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.bodyHeight as number);\r\n const hasX = this.table.scrollContentEle.clientWidth > ele.clientWidth;\r\n\r\n if (!this.table.hasScrollY && hasY) {\r\n this.table.hasScrollY = true;\r\n this.table.scrollYWidth = ele.offsetWidth - ele.clientWidth;\r\n } else if (this.table.hasScrollY && !hasY) {\r\n this.table.hasScrollY = false;\r\n this.table.scrollYWidth = 0;\r\n }\r\n\r\n if (!this.table.hasScrollX && hasX) {\r\n this.table.hasScrollX = true;\r\n this.table.scrollXHeight = ele.offsetHeight - ele.clientHeight;\r\n } else if (this.table.hasScrollX && !hasX) {\r\n this.table.hasScrollX = false;\r\n this.table.scrollXHeight = 0;\r\n this.table.scrollXWidth = null;\r\n }\r\n if (hasX) {\r\n this.table.scrollXWidth = ele.offsetWidth + ele.scrollWidth - ele.clientWidth;\r\n }\r\n\r\n this.table.cdr.detectChanges();\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 = {\r\n height: `${height}px`\r\n };\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 ? stripTags(it) : '';\r\n }\r\n\r\n setAdaptionHeight() {\r\n if ((this.adaptionHeight as number) > 0) {\r\n const headHeight = this.table.thead?.nativeElement.clientHeight || 0;\r\n const footHeight = this.table.tfoot?.nativeElement.clientHeight || 0;\r\n const paginationHeight = this.table.pagination?.elementRef.nativeElement.clientHeight || 0;\r\n this.bodyHeight =\r\n Number(this.docPercent) * this.doc.documentElement.clientHeight -\r\n headHeight -\r\n footHeight -\r\n paginationHeight -\r\n Number(this.adaptionHeight);\r\n if (this.bodyHeight < 0) this.bodyHeight = 0;\r\n this.minBufferPx = this.bodyHeight;\r\n this.maxBufferPx = this.bodyHeight * 1.2;\r\n this.virtualBody['_scrollStrategy']['_minBufferPx'] = this.minBufferPx;\r\n this.virtualBody['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPx;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n rowClick(row: XTableRow) {\r\n this.activatedRow = row;\r\n if (this.table.rowChecked) {\r\n if (!Array.from((event as any).path).find((x: any) => x.localName == 'x-checkbox')) {\r\n row[this.table.rowChecked.id] = !row[this.table.rowChecked.id];\r\n this.table.bodyChecked(row[this.table.rowChecked.id], this.table.rowChecked);\r\n }\r\n }\r\n this.activatedRowChange.emit(row);\r\n this.cdr.detectChanges();\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>\r\n <ng-container *ngIf=\"cellConfig; else virtualScrollTpl\">\r\n <tr *ngFor=\"let row of data; index as i; trackBy: trackByItem\" [style.gridTemplateColumns]=\"cellConfig.gridTemplateColumns\">\r\n <td\r\n *ngFor=\"let column of cellConfig.cells; index as j\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getSticky(column)\"\r\n [style.left.px]=\"column.left\"\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 </tr>\r\n </ng-container>\r\n <x-empty *ngIf=\"isEmpty\"></x-empty>\r\n</tbody>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n *ngIf=\"virtualScroll; else bodyTpl\"\r\n [itemSize]=\"getItemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"bodyHeight\"\r\n >\r\n <tr\r\n *cdkVirtualFor=\"let row of data; 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)=\"rowClick(row)\"\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</ng-template>\r\n\r\n<ng-template #bodyTpl>\r\n <tr\r\n *ngFor=\"let row of data; index as i; 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)=\"rowClick(row)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: i }\"></ng-container>\r\n </tr>\r\n</ng-template>\r\n\r\n<ng-template #rowTpl let-row=\"row\" let-i=\"i\">\r\n <ng-container *ngFor=\"let column of columns; index as j; trackBy: trackByItem\">\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-sticky]=\"table.getSticky(column)\"\r\n [style.left.px]=\"column.left\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-template>\r\n </td>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-column=\"column\" let-row=\"row\" let-i=\"i\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: '' }]\"\r\n [(ngModel)]=\"row[column.id]\"\r\n (ngModelChange)=\"table.bodyChecked($event, column)\"\r\n ></x-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'index'\">\r\n <div>{{ table.getIndex(i) }}</div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *xOutlet=\"columnTpl[column.id]; context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n <div [innerHTML]=\"row[column.id]\" [style.text-align]=\"column.textAlign\"></div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\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 ViewChild,\r\n Input\r\n} from '@angular/core';\r\nimport { XTableFootPrefix, XTableFootProperty } from './table.property';\r\nimport { removeNgTag } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XTableFootPrefix}`,\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 @ViewChild('tfoot') tfoot!: ElementRef;\r\n @Input() table: any;\r\n constructor(\r\n // @Optional() @Host() public table: XTableComponent,\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n removeNgTag(this.elementRef.nativeElement);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.table.tfoot = this.tfoot!;\r\n }\r\n}\r\n","<tfoot></tfoot>\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 ViewChild,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { XTablePrefix, XTableProperty, XTableColumn, XTableRow, XTableCell, XTableCellConfigRule } from './table.property';\r\nimport { XIsChange, XIsEmpty, XResultList, XNumber, XSort, XConfigService } 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\n\r\n@Component({\r\n selector: `${XTablePrefix}`,\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTableComponent extends XTableProperty implements OnInit, OnDestroy {\r\n get getScrollLeft() {\r\n return this.scrollLeft > 0;\r\n }\r\n get getScrollTop() {\r\n return this.scrollTop > 0;\r\n }\r\n thead!: ElementRef;\r\n tfoot!: ElementRef;\r\n virtualBody!: CdkVirtualScrollViewport;\r\n headChange!: () => void;\r\n bodyChange!: () => void;\r\n scrollContentEle!: HTMLElement;\r\n hasScrollY = false;\r\n scrollYWidth = 0;\r\n hasScrollX = false;\r\n scrollXHeight = 0;\r\n scrollXWidth!: number | null;\r\n scrollLeft = 0;\r\n scrollTop = 0;\r\n rowChecked!: XTableColumn;\r\n headCheckboxList!: XTableColumn[];\r\n dataIsFunc = false;\r\n getting = false;\r\n tableData: XTableRow[] = [];\r\n checkedValues: { [prop: string]: boolean } = {};\r\n indeterminate = '$$indeterminate';\r\n @ViewChild('table') table!: ElementRef;\r\n @ViewChild('pagination') pagination!: XPaginationComponent;\r\n private _unSubject = new Subject<void>();\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setClassMap();\r\n this.setRowChecked();\r\n this.setMerge();\r\n }\r\n\r\n ngOnChanges(simples: SimpleChanges) {\r\n const { data, checkedRow, columns, activatedRow, manual } = simples;\r\n XIsChange(data, checkedRow) && this.setData();\r\n XIsChange(columns, activatedRow) && this.cdr.detectChanges();\r\n XIsChange(manual) && this.setManual();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._unSubject.next();\r\n this._unSubject.complete();\r\n }\r\n\r\n setClassMap() {\r\n this.classMap = {\r\n [`${XTablePrefix}-row-size-${this.rowSize}`]: !XIsEmpty(this.rowSize)\r\n };\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getSticky(column: XTableColumn | XTableCell) {\r\n return Number(column.left) >= 0;\r\n }\r\n\r\n getIndex(index: number) {\r\n return (Number(this.index) - 1) * Number(this.size) + index + 1;\r\n }\r\n\r\n setData() {\r\n if (Array.isArray(this.data)) {\r\n this.dataIsFunc = false;\r\n this.tableData = this.data;\r\n this.setChecked();\r\n this.setHeadCheckboxList();\r\n } else if (this.data instanceof Function) {\r\n this.dataIsFunc = true;\r\n this.getDataByFunc();\r\n }\r\n }\r\n\r\n getDataByFunc() {\r\n if (!this.manual) return;\r\n this.getting = true;\r\n this.cdr.detectChanges();\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 [this.tableData, this.total] = [x.list as XTableRow[], x.total as XNumber];\r\n if (this.virtualBody) {\r\n this.virtualBody.scrollToIndex(0);\r\n this.virtualBody.checkViewportSize();\r\n }\r\n this.getting = false;\r\n this.setChecked();\r\n this.setHeadCheckboxList();\r\n this.detectChanges();\r\n });\r\n }\r\n\r\n setManual() {\r\n if (this.dataIsFunc) this.getDataByFunc();\r\n }\r\n\r\n setRowChecked() {\r\n this.rowChecked = this.columns.find((x) => x.rowChecked) as XTableColumn;\r\n this.headCheckboxList = this.columns.filter((x) => x.type === 'checkbox' && x.headChecked);\r\n }\r\n\r\n setMerge() {\r\n if (!this.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 this.cellConfig.thead = setRule(this.cellConfig.thead);\r\n this.cellConfig.tbody = setRule(this.cellConfig.tbody);\r\n }\r\n\r\n change(index: number) {\r\n this.index = index;\r\n this.dataIsFunc && this.getDataByFunc();\r\n this.indexChange.emit(index);\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() {\r\n let result: XTableRow[] = [];\r\n if (XIsEmpty(this.tableData) || !this.checkedRow) return;\r\n for (let key in this.checkedRow) {\r\n const arr = this.checkedRow[key];\r\n for (let item of this.tableData 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) this.tableData = [...result];\r\n this.detectChanges();\r\n }\r\n\r\n setHeadCheckboxList() {\r\n if (XIsEmpty(this.tableData) || !this.headCheckboxList) return;\r\n for (let column of this.headCheckboxList) {\r\n this.setCheckedValues(column);\r\n }\r\n }\r\n\r\n checkSort(sort: XSort[]) {\r\n if (!this.dataIsFunc) return;\r\n if (typeof this.query === 'undefined') this.query = {};\r\n this.query.sort = sort;\r\n this.queryChange.emit(this.query);\r\n this.getDataByFunc();\r\n }\r\n\r\n headChecked(checked: boolean, column: XTableColumn) {\r\n this.tableData.forEach((x) => {\r\n x[column.id] = checked;\r\n });\r\n this.setCheckedValues(column);\r\n this.detectChanges();\r\n }\r\n\r\n bodyChecked(_checked: boolean, column: XTableColumn) {\r\n this.setCheckedValues(column);\r\n this.detectChanges();\r\n }\r\n\r\n setCheckedValues(column: XTableColumn) {\r\n const count = this.tableData.length;\r\n const checkedLen = this.tableData.filter((x) => x[column.id]).length;\r\n this.checkedValues[column.id] = count === checkedLen;\r\n this.checkedValues[column.id + this.indeterminate] = checkedLen > 0 && checkedLen < count;\r\n }\r\n\r\n detectChanges() {\r\n this.bodyChange && this.bodyChange();\r\n this.headChange && this.headChange();\r\n this.cdr.detectChanges();\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-scroll-left]=\"getScrollLeft\"\r\n [class.x-table-scroll-top]=\"getScrollTop\"\r\n [class.x-table-bordered]=\"bordered\"\r\n [class.x-table-td-adaption-height]=\"rowHeight == 0\"\r\n [class.x-table-cell-config]=\"cellConfig\"\r\n>\r\n <x-table-head\r\n *ngIf=\"showHeader\"\r\n [columns]=\"columns\"\r\n [rowHeight]=\"rowHeight\"\r\n [columnTpl]=\"headColumnTpl\"\r\n [scrollYWidth]=\"scrollYWidth\"\r\n [scrollXWidth]=\"scrollXWidth\"\r\n [cellConfig]=\"cellConfig?.thead\"\r\n [table]=\"this\"\r\n ></x-table-head>\r\n <x-table-body\r\n [data]=\"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 [cellConfig]=\"cellConfig?.tbody\"\r\n [(activatedRow)]=\"activatedRow\"\r\n (activatedRowChange)=\"activatedRowChange.emit($event)\"\r\n [table]=\"this\"\r\n ></x-table-body>\r\n <x-table-foot [table]=\"this\"></x-table-foot>\r\n</table>\r\n<x-pagination\r\n #pagination\r\n *ngIf=\"size\"\r\n [(index)]=\"index\"\r\n [(size)]=\"size\"\r\n [(query)]=\"query\"\r\n [total]=\"total\"\r\n (indexChange)=\"change($event)\"\r\n [showEllipsis]=\"showEllipsis\"\r\n [showTotal]=\"showTotal\"\r\n [space]=\"space\"\r\n [hiddenBorder]=\"hiddenBorder\"\r\n>\r\n</x-pagination>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XPaginationModule } from '@ng-nest/ui/pagination';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { XEmptyModule } from '@ng-nest/ui/empty';\r\nimport { XCheckboxModule } from '@ng-nest/ui/checkbox';\r\nimport { XLoadingModule } from '@ng-nest/ui/loading';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XTableProperty, XTableHeadProperty, XTableBodyProperty, XTableFootProperty } from './table.property';\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\nimport { XDragDirective } from './drag.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n XDragDirective,\r\n XTableComponent,\r\n XTableProperty,\r\n XTableHeadComponent,\r\n XTableHeadProperty,\r\n XTableBodyComponent,\r\n XTableBodyProperty,\r\n XTableFootComponent,\r\n XTableFootProperty\r\n ],\r\n exports: [XTableComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n XPaginationModule,\r\n XOutletModule,\r\n XCheckboxModule,\r\n XIconModule,\r\n ScrollingModule,\r\n XEmptyModule,\r\n XLoadingModule\r\n ]\r\n})\r\nexport class XTableModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA;;;;;MAKa,YAAY,GAAG,UAAU;AACtC,MAAM,aAAa,GAAG,OAAO,CAAC;AAE9B;;;MAIa,cAAe,SAAQ,mBAAmB;IADvD;;;;;;QAMW,SAAI,GAAqB,EAAE,CAAC;;;;;QAK5B,YAAO,GAAmB,EAAE,CAAC;;;;;QA8B5B,uBAAkB,GAAG,IAAI,YAAY,EAAa,CAAC;;;;;QAKpD,kBAAa,GAAmB,EAAE,CAAC;;;;;QAKnC,kBAAa,GAAmB,EAAE,CAAC;;;;;QAKlC,eAAU,GAAG,IAAI,YAAY,EAAW,CAAC;;;;;QAyB1C,gBAAW,GAAW,GAAG,CAAC;;;;;QAK1B,gBAAW,GAAW,GAAG,CAAC;;;;;QAUV,eAAU,GAAY,CAAC,CAAC;;;;;QAKxC,eAAU,GAAkC,EAAE,CAAC;;;;;QAK9B,WAAM,GAAa,IAAI,CAAC;;;;;QAUxC,iBAAY,GAAG,IAAI,YAAY,EAAW,CAAC;KAWtD;;iJA9HY,cAAc;qIAAd,cAAc,ovBADJ,EAAE;AAgB0C;IAAvD,WAAW,CAAS,aAAa,EAAE,EAAE,CAAC;IAAE,YAAY,EAAE;iDAAoB;AAKb;IAA7D,WAAW,CAAW,aAAa,EAAE,KAAK,CAAC;IAAE,aAAa,EAAE;+CAAoB;AAKnB;IAA7D,WAAW,CAAW,aAAa,EAAE,KAAK,CAAC;IAAE,aAAa,EAAE;gDAAqB;AAKrB;IAA5D,WAAW,CAAW,aAAa,EAAE,IAAI,CAAC;IAAE,aAAa,EAAE;kDAAuB;AA8BtB;IAA5D,WAAW,CAAW,aAAa,EAAE,IAAI,CAAC;IAAE,aAAa,EAAE;sDAA2B;AAKhC;IAAtD,WAAW,CAAW,aAAa,CAAC;IAAE,aAAa,EAAE;qDAA0B;AAKhE;IAAf,YAAY,EAAE;kDAAqB;AAKoB;IAAvD,WAAW,CAAS,aAAa,EAAE,EAAE,CAAC;IAAE,YAAY,EAAE;gDAAmB;AAe1D;IAAf,YAAY,EAAE;sDAA0B;AAKzB;IAAf,YAAY,EAAE;kDAAyB;AAUvB;IAAhB,aAAa,EAAE;8CAAyB;AAoBI;IAA5C,WAAW,CAAQ,aAAa,EAAE,QAAQ,CAAC;+CAAiB;2FA7H3D,cAAc;kBAD1B,SAAS;mBAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;8BAMhB,IAAI;sBAAZ,KAAK;gBAKG,OAAO;sBAAf,KAAK;gBAK2D,SAAS;sBAAzE,KAAK;gBAKiE,OAAO;sBAA7E,KAAK;gBAKiE,QAAQ;sBAA9E,KAAK;gBAKgE,UAAU;sBAA/E,KAAK;gBAKG,YAAY;sBAApB,KAAK;gBAKI,kBAAkB;sBAA3B,MAAM;gBAKE,aAAa;sBAArB,KAAK;gBAKG,aAAa;sBAArB,KAAK;gBAKI,UAAU;sBAAnB,MAAM;gBAK+D,cAAc;sBAAnF,KAAK;gBAK0D,aAAa;sBAA5E,KAAK;gBAKmB,UAAU;sBAAlC,KAAK;gBAK2D,QAAQ;sBAAxE,KAAK;gBAKG,WAAW;sBAAnB,KAAK;gBAKG,WAAW;sBAAnB,KAAK;gBAKmB,cAAc;sBAAtC,KAAK;gBAKmB,UAAU;sBAAlC,KAAK;gBAKG,UAAU;sBAAlB,KAAK;gBAKoB,MAAM;sBAA/B,KAAK;gBAKG,MAAM;sBAAd,KAAK;gBAKI,YAAY;sBAArB,MAAM;gBAKE,UAAU;sBAAlB,KAAK;gBAKgD,OAAO;sBAA5D,KAAK;;AA4PR;;;;;MAKa,gBAAgB,GAAG,eAAe;AAE/C;;;MAIa,kBAAmB,SAAQ,SAAS;IADjD;;;;;;QAMW,YAAO,GAAmB,EAAE,CAAC;;;;;QAKb,cAAS,GAAY,EAAE,CAAC;;;;;QAKxC,cAAS,GAAmB,EAAE,CAAC;KAgBzC;;qJA/BY,kBAAkB;yIAAlB,kBAAkB,iPADR,EAAE;AAWE;IAAf,YAAY,EAAE;qDAAyB;2FAVtC,kBAAkB;kBAD9B,SAAS;mBAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;8BAMhB,OAAO;sBAAf,KAAK;gBAKmB,SAAS;sBAAjC,KAAK;gBAKG,SAAS;sBAAjB,KAAK;gBAKG,YAAY;sBAApB,KAAK;gBAKG,YAAY;sBAApB,KAAK;gBAKG,UAAU;sBAAlB,KAAK;;AAGR;;;;;MAKa,gBAAgB,GAAG,eAAe;AAE/C;;;MAIa,kBAAmB,SAAQ,SAAS;IADjD;;;;;;QAMW,SAAI,GAAgB,EAAE,CAAC;;;;;QAKvB,YAAO,GAAmB,EAAE,CAAC;;;;;QAK7B,cAAS,GAAmB,EAAE,CAAC;;;;;QAU9B,uBAAkB,GAAG,IAAI,YAAY,EAAa,CAAC;;;;;QAKpC,cAAS,GAAY,EAAE,CAAC;;;;;QAUvB,mBAAc,GAAa,IAAI,CAAC;;;;;QAKhC,kBAAa,GAAa,KAAK,CAAC;;;;;QAKjC,aAAQ,GAAW,EAAE,CAAC;;;;;QAKtC,gBAAW,GAAW,GAAG,CAAC;;;;;QAK1B,gBAAW,GAAW,GAAG,CAAC;;;;;QAUV,eAAU,GAAY,CAAC,CAAC;KAWlD;;qJAjFY,kBAAkB;yIAAlB,kBAAkB,ghBADR,EAAE;AA+BE;IAAf,YAAY,EAAE;qDAAyB;AAKxB;IAAf,YAAY,EAAE;sDAAqB;AAKnB;IAAhB,aAAa,EAAE;0DAAiC;AAKhC;IAAhB,aAAa,EAAE;yDAAiC;AAKjC;IAAf,YAAY,EAAE;oDAAuB;AAetB;IAAf,YAAY,EAAE;0DAA0B;AAKzB;IAAf,YAAY,EAAE;sDAAyB;2FAtEtC,kBAAkB;kBAD9B,SAAS;mBAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;8BAMhB,IAAI;sBAAZ,KAAK;gBAKG,OAAO;sBAAf,KAAK;gBAKG,SAAS;sBAAjB,KAAK;gBAKG,YAAY;sBAApB,KAAK;gBAKI,kBAAkB;sBAA3B,MAAM;gBAKkB,SAAS;sBAAjC,KAAK;gBAKmB,UAAU;sBAAlC,KAAK;gBAKoB,cAAc;sBAAvC,KAAK;gBAKoB,aAAa;sBAAtC,KAAK;gBAKmB,QAAQ;sBAAhC,KAAK;gBAKG,WAAW;sBAAnB,KAAK;gBAKG,WAAW;sBAAnB,KAAK;gBAKmB,cAAc;sBAAtC,KAAK;gBAKmB,UAAU;sBAAlC,KAAK;gBAKG,MAAM;sBAAd,KAAK;gBAKG,UAAU;sBAAlB,KAAK;;AAGR;;;;;MAKa,gBAAgB,GAAG,eAAe;AAE/C;;;MAIa,kBAAmB,SAAQ,SAAS;;qJAApC,kBAAkB;yIAAlB,kBAAkB,2EADR,EAAE;2FACZ,kBAAkB;kBAD9B,SAAS;mBAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;;;MCpiBd,cAAc;IAKzB,YAAoB,UAAsB,EAAoB,QAAa,EAAU,QAAmB;QAApF,eAAU,GAAV,UAAU,CAAY;QAA2C,aAAQ,GAAR,QAAQ,CAAW;QAJ9F,YAAO,GAAG,IAAI,YAAY,EAA4B,CAAC;QACzD,eAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;QAIvC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;KACrB;IAED,QAAQ;QACN,MAAM,SAAS,GAAG,SAAS,CAAa,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAEpF,SAAS,CAAC,SAAS,CAAC,CAAC,MAAkB;YACrC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;YACrB,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;YACrB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,MAAM,MAAM,GAAG,IAAI,OAAO,EAAQ,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YACxE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;YACxE,SAAS,CAAa,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC;iBACzD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;iBACvB,SAAS,CAAC,CAAC,MAAkB;gBAC5B,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC3B,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC3B,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBACjB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;aAC/C,CAAC,CAAC;YACL,SAAS,CAAa,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC;iBACvD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;iBACvB,SAAS,CAAC;gBACT,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;gBAC9D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;gBACnE,MAAM,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,CAAC,QAAQ,EAAE,CAAC;aACnB,CAAC,CAAC;SACN,CAAC,CAAC;;;;;;;;;;;;;;KAeJ;IAED,WAAW;QACT,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;;iJAzDU,cAAc,4CAK2B,QAAQ;qIALjD,cAAc;2FAAd,cAAc;kBAD1B,SAAS;mBAAC,EAAE,QAAQ,EAAE,SAAS,EAAE;;0BAMa,MAAM;2BAAC,QAAQ;oEAJlD,OAAO;sBAAhB,MAAM;;;MCYI,mBAAoB,SAAQ,kBAAkB;IASzD;;IAES,QAAmB,EACnB,UAAsB,EACtB,GAAsB,EACtB,aAA6B;QAEpC,KAAK,EAAE,CAAC;QALD,aAAQ,GAAR,QAAQ,CAAW;QACnB,eAAU,GAAV,UAAU,CAAY;QACtB,QAAG,GAAH,GAAG,CAAmB;QACtB,kBAAa,GAAb,aAAa,CAAgB;QAbtC,SAAI,GAAY,EAAE,CAAC;QACnB,YAAO,GAAG,EAAE,CAAC;QACb,eAAU,GAAgC,EAAE,CAAC;KAc5C;IAXD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;KAClD;IAWD,WAAW,CAAC,OAAsB;QAChC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QACpE,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KACxF;IAED,QAAQ;QACN,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;IAED,eAAe;QACb,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KACxD;IAED,SAAS,CAAC,MAAiC;QACzC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IAED,OAAO,CAAC,MAAoB;QAC1B,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,MAAM,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC;KACpB;IAED,QAAQ;QACN,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACvD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtC,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3C,OAAO,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAC3E,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,IAAK,MAAiB,CAAY,CAAC;SACnE;QACD,IAAI,CAAC,UAAU,GAAG;YAChB,MAAM,EAAE,GAAG,MAAM,IAAI;YACrB,CAAC,YAAY,GAAG,GAAG,IAAI,CAAC,YAAY,IAAI;SACzC,CAAC;KACH;IAED,MAAM,CAAC,MAAoB;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO;QACzB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACxC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,EAAE;YACR,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;gBACxB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBACf,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;aACnB;iBAAM;gBACL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACpB;SACF;aAAM;YACL,IAAI,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;SACpB;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;IAED,SAAS,CAAC,GAA6B,EAAE,MAAiC;QACxE,IAAI,MAAM,CAAC,KAAK,EAAE;YACf,MAAM,CAAC,KAAgB,IAAI,GAAG,CAAC,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,KAAK,GAAG,EAAE;gBAAE,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;SACzB;KACF;IAED,WAAW,CAAC,MAAc,EAAE,IAAkB;QAC5C,OAAO,IAAI,CAAC,EAAE,CAAC;KAChB;;sJA5FU,mBAAmB;0IAAnB,mBAAmB,4NCnBhC,kwGA6EA;2FD1Da,mBAAmB;kBAL/B,SAAS;+BACE,GAAG,gBAAgB,EAAE,iBAEhB,iBAAiB,CAAC,IAAI;sLAMjB,KAAK;sBAAxB,SAAS;uBAAC,OAAO;gBACT,KAAK;sBAAb,KAAK;;;MEGK,mBAAoB,SAAQ,kBAAkB;IAmBzD;;IAES,QAAmB,EACnB,UAAsB,EACtB,GAAsB,EACJ,GAAQ,EAC1B,aAA6B;QAEpC,KAAK,EAAE,CAAC;QAND,aAAQ,GAAR,QAAQ,CAAW;QACnB,eAAU,GAAV,UAAU,CAAY;QACtB,QAAG,GAAH,GAAG,CAAmB;QACJ,QAAG,GAAH,GAAG,CAAK;QAC1B,kBAAa,GAAb,aAAa,CAAgB;QAxBtC,eAAU,GAAgC,EAAE,CAAC;QAerC,eAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;KAYxC;IA1BD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC;KAChC;IACD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;KAClD;IACD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;KAChG;IAmBD,WAAW,CAAC,OAAsB;QAChC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAC3D,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC/E;IAED,QAAQ;QACN,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;SACjC;KACF;IAED,eAAe;QACb,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACvD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,WAAW;QACT,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC;KACpC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,aAAa,CACrF,qCAAqC,CACvB,CAAC;YACjB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;gBAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;aACpF;YACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;iBACjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAChC,SAAS,CAAC,CAAC,CAAC;gBACX,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,cAAc,CAAC;gBACxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;YACL,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;iBACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAChC,SAAS,CAAC;gBACT,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B,CAAC,CAAC;SACN;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAC/B,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC;iBAC3D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAChC,SAAS,CAAC,CAAC,CAAC;gBACX,MAAM,GAAG,GAAG,CAAC,CAAC,UAAyB,CAAC;gBACxC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;gBACvC,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;oBAC3C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;iBACnE;gBACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;aAChC,CAAC,CAAC;SACN;KACF;IAED,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC;QACtD,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,GAAI,IAAI,CAAC,UAAqB,CAAC;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QAEvE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;SAC7D;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE;YACzC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;SAC7B;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;SAChE;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE;YACzC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;SAChC;QACD,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;SAC/E;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAChC;IAED,QAAQ;QACN,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACvD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtC,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3C,OAAO,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAC3E,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,IAAK,MAAiB,CAAY,CAAC;SACnE;QACD,IAAI,CAAC,UAAU,GAAG;YAChB,MAAM,EAAE,GAAG,MAAM,IAAI;SACtB,CAAC;KACH;IAED,QAAQ,CAAC,KAAa,EAAE,IAAe;QACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAChC;IAED,OAAO,CAAC,MAAoB;QAC1B,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,MAAM,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC;KACpB;IAED,QAAQ,CAAC,GAAc,EAAE,MAAwB;QAC/C,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC,CAAC;QAClC,OAAO,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;KAChC;IAED,iBAAiB;QACf,IAAK,IAAI,CAAC,cAAyB,GAAG,CAAC,EAAE;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,YAAY,IAAI,CAAC,CAAC;YACrE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,YAAY,IAAI,CAAC,CAAC;YACrE,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,IAAI,CAAC,CAAC;YAC3F,IAAI,CAAC,UAAU;gBACb,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,YAAY;oBAC/D,UAAU;oBACV,UAAU;oBACV,gBAAgB;oBAChB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;gBAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YACvE,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YACvE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;KACF;IAED,QAAQ,CAAC,GAAc;QACrB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAE,KAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,SAAS,IAAI,YAAY,CAAC,EAAE;gBAClF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC/D,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;aAC9E;SACF;QACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;IAED,WAAW,CAAC,MAAc,EAAE,IAA8B;QACxD,OAAO,IAAI,CAAC,EAAE,CAAC;KAChB;;sJAvLU,mBAAmB,sGAwBpB,QAAQ;0IAxBP,mBAAmB,yTC3BhC,85GAoFA;2FDzDa,mBAAmB;kBAN/B,SAAS;+BACE,GAAG,gBAAgB,EAAE,iBAEhB,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM;;0BA0B5C,MAAM;2BAAC,QAAQ;yEAZE,KAAK;sBAAxB,SAAS;uBAAC,OAAO;gBACQ,WAAW;sBAApC,SAAS;uBAAC,aAAa;gBACf,KAAK;sBAAb,KAAK;;;MErBK,mBAAoB,SAAQ,kBAAkB;IAGzD;;IAES,QAAmB,EACnB,UAAsB,EACtB,GAAsB;QAE7B,KAAK,EAAE,CAAC;QAJD,aAAQ,GAAR,QAAQ,CAAW;QACnB,eAAU,GAAV,UAAU,CAAY;QACtB,QAAG,GAAH,GAAG,CAAmB;KAG9B;IAED,QAAQ;QACN,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;KAC5C;IAED,eAAe;QACb,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAM,CAAC;KAChC;;sJAlBU,mBAAmB;0IAAnB,mBAAmB,uMCpBhC,qBACA;2FDmBa,mBAAmB;kBAN/B,SAAS;+BACE,GAAG,gBAAgB,EAAE,iBAEhB,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM;yJAG3B,KAAK;sBAAxB,SAAS;uBAAC,OAAO;gBACT,KAAK;sBAAb,KAAK;;;MEIK,eAAgB,SAAQ,cAAc;IA8BjD,YACS,QAAmB,EACnB,UAAsB,EACtB,GAAsB,EACtB,aAA6B;QAEpC,KAAK,EAAE,CAAC;QALD,aAAQ,GAAR,QAAQ,CAAW;QACnB,eAAU,GAAV,UAAU,CAAY;QACtB,QAAG,GAAH,GAAG,CAAmB;QACtB,kBAAa,GAAb,aAAa,CAAgB;QArBtC,eAAU,GAAG,KAAK,CAAC;QACnB,iBAAY,GAAG,CAAC,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QACnB,kBAAa,GAAG,CAAC,CAAC;QAElB,eAAU,GAAG,CAAC,CAAC;QACf,cAAS,GAAG,CAAC,CAAC;QAGd,eAAU,GAAG,KAAK,CAAC;QACnB,YAAO,GAAG,KAAK,CAAC;QAChB,cAAS,GAAgB,EAAE,CAAC;QAC5B,kBAAa,GAAgC,EAAE,CAAC;QAChD,kBAAa,GAAG,iBAAiB,CAAC;QAG1B,eAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;KAQxC;IApCD,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;KAC5B;IACD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;KAC3B;IAiCD,QAAQ;QACN,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;IAED,WAAW,CAAC,OAAsB;QAChC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QACpE,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9C,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC7D,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;KACvC;IAED,WAAW;QACT,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,GAAG;YACd,CAAC,GAAG,YAAY,aAAa,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;SACtE,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;IAED,SAAS,CAAC,MAAiC;QACzC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IAED,QAAQ,CAAC,KAAa;QACpB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;KACjE;IAED,OAAO;QACL,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;aAAM,IAAI,IAAI,CAAC,IAAI,YAAY,QAAQ,EAAE;YACxC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;KACF;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,IAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;aACvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,CAAC,CAAyB;YACnC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAmB,EAAE,CAAC,CAAC,KAAgB,CAAC,CAAC;YAC3E,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;aACtC;YACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB,CAAC,CAAC;KACN;IAED,SAAS;QACP,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,aAAa,EAAE,CAAC;KAC3C;IAED,aAAa;QACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAiB,CAAC;QACzE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;KAC5F;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,MAAM,OAAO,GAAG,CAAC,IAA2B;YAC1C,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,IAAI,mBAAmB,GAAG,EAAE,EAC1B,KAAK,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC7B,mBAAmB,GAAG,GAAG,IAAI,CAAC,OAAO;qBAClC,GAAG,CAAC,CAAC,CAAC;oBACL,IAAI,CAAC,CAAC,KAAK;wBAAE,OAAO,CAAC,CAAC,KAAK,CAAC;oBAC5B,IAAI,CAAC,CAAC,IAAI;wBAAE,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;oBACjC,OAAO,KAAK,CAAC;iBACd,CAAC;qBACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;aAChB;YACD,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,GAAG,EAAE;oBACP,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC,EAAgB,CAAC;iBACvC;gBACD,OAAO,CAAC,CAAC;aACV,CAAC,CAAC;YACH,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC;SACvC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACxD;IAED,MAAM,CAAC,KAAa;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,WAAW,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI;QAC5B,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC;YAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC;YAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;KAClE;IAED,UAAU;QACR,IAAI,MAAM,GAAgB,EAAE,CAAC;QAC7B,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QACzD,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACjC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,SAAkB,EAAE;gBACxC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClC,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC;aAC5B;SACF;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,mBAAmB;QACjB,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,OAAO;QAC/D,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACxC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;SAC/B;KACF;IAED,SAAS,CAAC,IAAa;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,WAAW,CAAC,OAAgB,EAAE,MAAoB;QAChD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACvB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,WAAW,CAAC,QAAiB,EAAE,MAAoB;QACjD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,gBAAgB,CAAC,MAAoB;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,KAAK,UAAU,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,KAAK,CAAC;KAC3F;IAED,aAAa;QACX,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;;kJA/MU,eAAe;sIAAf,eAAe,sRC1B5B,0tDAwDA;2FD9Ba,eAAe;kBAP3B,SAAS;+BACE,GAAG,YAAY,EAAE,iBAGZ,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM;sLA6B3B,KAAK;sBAAxB,SAAS;uBAAC,OAAO;gBACO,UAAU;sBAAlC,SAAS;uBAAC,YAAY;;;MEZZ,YAAY;;+IAAZ,YAAY;gJAAZ,YAAY,iBAvBrB,cAAc;QACd,eAAe;QACf,cAAc;QACd,mBAAmB;QACnB,kBAAkB;QAClB,mBAAmB;QACnB,kBAAkB;QAClB,mBAAmB;QACnB,kBAAkB,aAIlB,YAAY;QACZ,WAAW;QACX,iBAAiB;QACjB,aAAa;QACb,eAAe;QACf,WAAW;QACX,eAAe;QACf,YAAY;QACZ,cAAc,aAVN,eAAe;gJAad,YAAY,YAZd;YACP,YAAY;YACZ,WAAW;YACX,iBAAiB;YACjB,aAAa;YACb,eAAe;YACf,WAAW;YACX,eAAe;YACf,YAAY;YACZ,cAAc;SACf;2FAEU,YAAY;kBAzBxB,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,cAAc;wBACd,eAAe;wBACf,cAAc;wBACd,mBAAmB;wBACnB,kBAAkB;wBAClB,mBAAmB;wBACnB,kBAAkB;wBAClB,mBAAmB;wBACnB,kBAAkB;qBACnB;oBACD,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,iBAAiB;wBACjB,aAAa;wBACb,eAAe;wBACf,WAAW;wBACX,eAAe;wBACf,YAAY;wBACZ,cAAc;qBACf;iBACF;;;ACzCD;;;;;;"}
1
+ {"version":3,"file":"ng-nest-ui-table.mjs","sources":["../../../../lib/ng-nest/ui/table/table.property.ts","../../../../lib/ng-nest/ui/table/drag.directive.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-body.component.ts","../../../../lib/ng-nest/ui/table/table-body.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/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 XNumber,\r\n XInputNumber,\r\n XIdentityProperty,\r\n XId,\r\n XSort,\r\n XInputBoolean,\r\n XBoolean,\r\n XData,\r\n XWithConfig,\r\n XTextAlign,\r\n XSize\r\n} from '@ng-nest/ui/core';\r\nimport { Input, Component, EventEmitter, TemplateRef, Output } from '@angular/core';\r\nimport { XPaginationProperty, XPaginationOption } from '@ng-nest/ui/pagination';\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_CONFIG_NAME = 'table';\r\n\r\n/**\r\n * Table Property\r\n */\r\n@Component({ template: '' })\r\nexport class XTableProperty extends XPaginationProperty implements XTableOption {\r\n /**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\n @Input() data: XData<XTableRow> = [];\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n @Input() columns: XTableColumn[] = [];\r\n /**\r\n * @zh_CN 表头和行高,单位 px\r\n * @en_US Header and row height, unit px\r\n */\r\n @Input() @XWithConfig<number>(X_CONFIG_NAME, 42) @XInputNumber() rowHeight!: number;\r\n /**\r\n * @zh_CN 是否启用加载 loading\r\n * @en_US Whether to enable loading\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() loading!: XBoolean;\r\n /**\r\n * @zh_CN 是否展示列边框\r\n * @en_US Whether to show column borders\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() bordered!: XBoolean;\r\n /**\r\n * @zh_CN 是否显示列头\r\n * @en_US Whether to display the column headers\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() showHeader!: XBoolean;\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n @Input() activatedRow?: XTableRow;\r\n /**\r\n * @zh_CN 当前选中行改变\r\n * @en_US The currently selected row changes\r\n */\r\n @Output() activatedRowChange = new EventEmitter<XTableRow>();\r\n /**\r\n * @zh_CN 列头自定义模板\r\n * @en_US Column header custom template\r\n */\r\n @Input() headColumnTpl: XTableTemplate = {};\r\n /**\r\n * @zh_CN 列内容自定义模板\r\n * @en_US Column content custom template\r\n */\r\n @Input() bodyColumnTpl: XTableTemplate = {};\r\n /**\r\n * @zh_CN 行条件样式\r\n * @en_US Row condition class\r\n */\r\n @Input() rowClass?: (row: XTableRow, index: number) => { [className: string]: boolean };\r\n /**\r\n * @zh_CN 排序点击的事件\r\n * @en_US Sort click events\r\n */\r\n @Output() sortChange = new EventEmitter<XSort[]>();\r\n /**\r\n * @zh_CN 允许行点击选中\r\n * @en_US Allow row click to select\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() allowSelectRow!: XBoolean;\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME) @XInputBoolean() virtualScroll!: XBoolean;\r\n /**\r\n * @zh_CN body 数据高度\r\n * @en_US body data height\r\n */\r\n @Input() @XInputNumber() bodyHeight?: number;\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 @Input() @XWithConfig<number>(X_CONFIG_NAME, 42) @XInputNumber() itemSize!: number;\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 @Input() minBufferPx: number = 100;\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 @Input() maxBufferPx: number = 200;\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 @Input() @XInputNumber() adaptionHeight?: XNumber;\r\n /**\r\n * @zh_CN 文档高度百分比,弹窗百分比高度用到\r\n * @en_US Document height percentage, used by pop-up window percentage height\r\n */\r\n @Input() @XInputNumber() docPercent: XNumber = 1;\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 @Input() checkedRow: { [property: string]: any[] } = {};\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 @Input() @XInputBoolean() manual: XBoolean = true;\r\n /**\r\n * @zh_CN 滚动区域高宽\r\n * @en_US Height and width of rolling area\r\n */\r\n @Input() scroll?: { x: number; y: number };\r\n /**\r\n * @zh_CN 参数控制请求改变事件\r\n * @en_US Parameter control request change event\r\n */\r\n @Output() manualChange = new EventEmitter<boolean>();\r\n /**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell config\r\n */\r\n @Input() cellConfig?: XTableCellConfig;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') rowSize?: XSize;\r\n}\r\n\r\n/**\r\n * Table Option\r\n * @undocument true\r\n */\r\nexport interface XTableOption extends XPaginationOption {\r\n /**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\n data?: XData<XTableRow>;\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n columns?: XTableColumn[];\r\n /**\r\n * @zh_CN 表头和行高,单位 px\r\n * @en_US Header and row height, unit px\r\n */\r\n rowHeight?: number;\r\n /**\r\n * @zh_CN 是否启用加载 loading\r\n * @en_US Whether to enable loading\r\n */\r\n loading?: XBoolean;\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n activatedRow?: XTableRow;\r\n /**\r\n * @zh_CN 列头自定义模板\r\n * @en_US Column header custom template\r\n */\r\n headColumnTpl?: XTableTemplate;\r\n /**\r\n * @zh_CN 列内容自定义模板\r\n * @en_US Column content custom template\r\n */\r\n bodyColumnTpl?: XTableTemplate;\r\n /**\r\n * @zh_CN 行条件样式\r\n * @en_US Row condition class\r\n */\r\n rowClass?: (row: XTableRow, index: number) => { [className: string]: boolean };\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n virtualScroll?: XBoolean;\r\n /**\r\n * @zh_CN body 数据高度\r\n * @en_US body data height\r\n */\r\n bodyHeight?: number;\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 minBufferPx?: number;\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 maxBufferPx?: number;\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 adaptionHeight?: XNumber;\r\n /**\r\n * @zh_CN 文档高度百分比,弹窗百分比高度用到\r\n * @en_US Document height percentage, used by pop-up window percentage height\r\n */\r\n docPercent?: XNumber;\r\n /**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell config\r\n */\r\n cellConfig?: XTableCellConfig;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n rowSize?: XSize;\r\n}\r\n\r\n/**\r\n * @zh_CN 数据\r\n * @en_US Data\r\n */\r\nexport interface XTableRow extends XId {\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 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 文字对齐方式\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 头部显示 checkbox\r\n * @en_US Head shows checkbox\r\n */\r\n headChecked?: 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 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 对应列的 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';\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({ template: '' })\r\nexport class XTableHeadProperty extends XProperty {\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n @Input() columns: XTableColumn[] = [];\r\n /**\r\n * @zh_CN 高度,单位 px\r\n * @en_US Height in px\r\n */\r\n @Input() @XInputNumber() rowHeight: XNumber = 42;\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n @Input() columnTpl: XTableTemplate = {};\r\n /**\r\n * @zh_CN 竖向滚动条宽度\r\n * @en_US Vertical scroll bar width\r\n */\r\n @Input() scrollYWidth?: number;\r\n /**\r\n * @zh_CN 横向滚动条宽度\r\n * @en_US Horizontal scroll bar width\r\n */\r\n @Input() scrollXWidth?: number | null;\r\n /**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell merge rules\r\n */\r\n @Input() cellConfig?: XTableCellConfigRule;\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({ template: '' })\r\nexport class XTableBodyProperty extends XProperty {\r\n /**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\n @Input() data: XTableRow[] = [];\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n @Input() columns: XTableColumn[] = [];\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n @Input() columnTpl: XTableTemplate = {};\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n @Input() activatedRow?: XTableRow;\r\n /**\r\n * @zh_CN 当前选中行改变\r\n * @en_US The currently selected row changes\r\n */\r\n @Output() activatedRowChange = new EventEmitter<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 @Input() @XInputNumber() rowHeight: XNumber = 42;\r\n /**\r\n * @zh_CN body 数据高度\r\n * @en_US body data height\r\n */\r\n @Input() @XInputNumber() bodyHeight?: number;\r\n /**\r\n * @zh_CN 允许行点击选中\r\n * @en_US Allow row click to select\r\n */\r\n @Input() @XInputBoolean() allowSelectRow: XBoolean = true;\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n @Input() @XInputBoolean() virtualScroll: XBoolean = false;\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 @Input() @XInputNumber() itemSize: number = 42;\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 @Input() minBufferPx: number = 100;\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 @Input() maxBufferPx: number = 200;\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 @Input() @XInputNumber() adaptionHeight?: XNumber;\r\n /**\r\n * @zh_CN 文档高度百分比,弹窗百分比高度用到\r\n * @en_US Document height percentage, used by pop-up window percentage height\r\n */\r\n @Input() @XInputNumber() docPercent: XNumber = 1;\r\n /**\r\n * @zh_CN 滚动区域高宽\r\n * @en_US Height and width of rolling area\r\n */\r\n @Input() scroll?: { x: number; y: number };\r\n /**\r\n * @zh_CN 单元格配置规则\r\n * @en_US Cell config rules\r\n */\r\n @Input() cellConfig?: XTableCellConfigRule;\r\n /**\r\n * @zh_CN 行条件样式\r\n * @en_US Row condition class\r\n */\r\n @Input() rowClass?: (row: XTableRow, index: number) => { [className: string]: boolean };\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({ template: '' })\r\nexport class XTableFootProperty extends XProperty {}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Directive, ElementRef, EventEmitter, Inject, Output, Renderer2 } from '@angular/core';\r\nimport { fromEvent, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Directive({ selector: '[xDrag]' })\r\nexport class XDragDirective {\r\n @Output() draging = new EventEmitter<{ x: number; y: number }>();\r\n private _unSubject = new Subject<void>();\r\n doc: Document;\r\n\r\n constructor(private elementRef: ElementRef, @Inject(DOCUMENT) document: any, private renderer: Renderer2) {\r\n this.doc = document;\r\n }\r\n\r\n ngOnInit() {\r\n const mouseDown = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown');\r\n\r\n mouseDown.subscribe((downMe: MouseEvent) => {\r\n let x = downMe.pageX;\r\n let y = downMe.pageY;\r\n let offsetX = 0;\r\n let offsetY = 0;\r\n const _unSub = new Subject<void>();\r\n this.renderer.setStyle(this.doc.documentElement, 'cursor', 'ew-resize');\r\n this.renderer.setStyle(this.doc.documentElement, 'user-select', 'none');\r\n fromEvent<MouseEvent>(this.doc.documentElement, 'mousemove')\r\n .pipe(takeUntil(_unSub))\r\n .subscribe((moveMe: MouseEvent) => {\r\n offsetX = moveMe.pageX - x;\r\n offsetY = moveMe.pageY - y;\r\n x = moveMe.pageX;\r\n y = moveMe.pageY;\r\n this.draging.emit({ x: offsetX, y: offsetY });\r\n });\r\n fromEvent<MouseEvent>(this.doc.documentElement, 'mouseup')\r\n .pipe(takeUntil(_unSub))\r\n .subscribe(() => {\r\n this.renderer.removeStyle(this.doc.documentElement, 'cursor');\r\n this.renderer.removeStyle(this.doc.documentElement, 'user-select');\r\n _unSub.next();\r\n _unSub.complete();\r\n });\r\n });\r\n\r\n // fromEvent(this.elementRef.nativeElement, 'mousedown')\r\n // .pipe(\r\n // tap((mouse: MouseEvent) => {\r\n // return { startX: mouse.clientX, startY: mouse.clientY };\r\n // }),\r\n // tap((x) => {\r\n // fromEvent(this.elementRef.nativeElement, 'mousemove').pipe()\r\n // }),\r\n // takeUntil(this._unSubject)\r\n // )\r\n // .subscribe((x) => {\r\n // console.log(x);\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","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n SimpleChanges,\r\n ViewChild,\r\n Input\r\n} from '@angular/core';\r\nimport { XTableHeadPrefix, XTableHeadProperty, XTableColumn, XTableCell } from './table.property';\r\nimport { removeNgTag, XIsEmpty, XSort, XIsChange, XConfigService, XNumber } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XTableHeadPrefix}`,\r\n templateUrl: './table-head.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class XTableHeadComponent extends XTableHeadProperty implements OnInit {\r\n sort: XSort[] = [];\r\n sortStr = '';\r\n theadStyle: { [property: string]: any } = {};\r\n @ViewChild('thead') thead!: ElementRef;\r\n @Input() table: any;\r\n get getRowHeight() {\r\n return this.rowHeight == 0 ? '' : this.rowHeight;\r\n }\r\n constructor(\r\n // @Optional() @Host() public table: XTableComponent,\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnChanges(simples: SimpleChanges) {\r\n const { columns, scrollYWidth, scrollXWidth, cellConfig } = simples;\r\n XIsChange(columns, scrollYWidth, scrollXWidth, cellConfig) && this.cdr.detectChanges();\r\n }\r\n\r\n ngOnInit() {\r\n removeNgTag(this.elementRef.nativeElement);\r\n this.setStyle();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.table.thead = this.thead;\r\n this.table.headChange = () => this.cdr.detectChanges();\r\n }\r\n\r\n getSticky(column: XTableColumn | XTableCell) {\r\n return Number(column.left) >= 0;\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 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.theadStyle = {\r\n height: `${height}px`,\r\n ['min-height']: `${this.getRowHeight}px`\r\n };\r\n }\r\n\r\n onSort(column: XTableColumn) {\r\n if (!column.sort) return;\r\n if (XIsEmpty(this.sort)) this.sort = [];\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 = [];\r\n this.sortStr = '';\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 = [sort];\r\n }\r\n if (!XIsEmpty(this.sort)) this.sortStr = `${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 this.cdr.detectChanges();\r\n }\r\n\r\n dragWidth(dis: { x: number; y: number }, column: XTableColumn | XTableCell) {\r\n if (column.width) {\r\n (column.width as number) += dis.x;\r\n if (column.width < 60) column.width = 60;\r\n this.cdr.detectChanges();\r\n this.table.bodyChange();\r\n }\r\n }\r\n\r\n trackByItem(_index: number, item: XTableColumn) {\r\n return item.id;\r\n }\r\n}\r\n","<thead #thead [ngStyle]=\"theadStyle\">\r\n <ng-container *ngIf=\"cellConfig; else columnsTpl\">\r\n <tr [style.gridTemplateColumns]=\"cellConfig.gridTemplateColumns\" [style.min-height.px]=\"getRowHeight\">\r\n <th\r\n *ngFor=\"let column of cellConfig.cells\"\r\n [class.x-table-sticky]=\"getSticky(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.min-height.px]=\"getRowHeight\"\r\n [title]=\"column?.label\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"columnBaseTpl; context: { column: column }\"></ng-container>\r\n <div *ngIf=\"column.dragWidth\" class=\"x-table-drag-width\" xDrag (draging)=\"dragWidth($event, column)\"></div>\r\n </th>\r\n </tr>\r\n </ng-container>\r\n</thead>\r\n\r\n<ng-template #columnsTpl>\r\n <tr\r\n [style.height.px]=\"getRowHeight\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n [style.padding-right.px]=\"scrollYWidth\"\r\n [style.width.px]=\"scrollXWidth\"\r\n >\r\n <th\r\n *ngFor=\"let column of columns; trackBy: trackByItem\"\r\n [class.x-table-sticky]=\"getSticky(column)\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n [style.width.px]=\"column.width\"\r\n [style.left.px]=\"column.left\"\r\n [style.flex]=\"getFlex(column)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"columnBaseTpl; context: { column: column }\"></ng-container>\r\n <div *ngIf=\"column.dragWidth\" class=\"x-table-drag-width\" xDrag (draging)=\"dragWidth($event, column)\"></div>\r\n </th>\r\n </tr>\r\n</ng-template>\r\n\r\n<ng-template #columnBaseTpl let-column=\"column\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <x-checkbox\r\n *ngIf=\"column.headChecked\"\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 ></x-checkbox>\r\n <ng-container *ngIf=\"!column.headChecked\">\r\n <ng-container *ngTemplateOutlet=\"cloumnDefaultTpl; context: { column: column }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'index'\">\r\n <a>{{ column.label }}</a>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngTemplateOutlet=\"cloumnDefaultTpl; context: { column: column }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\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 {{ column.label }}\r\n </ng-container>\r\n <x-icon\r\n *ngIf=\"column.sort\"\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 </a>\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 OnChanges,\r\n Inject,\r\n ViewChild,\r\n Input\r\n} from '@angular/core';\r\nimport { XTableBodyPrefix, XTableBodyProperty, XTableRow, XTableColumn, XTableCell } from './table.property';\r\nimport { removeNgTag, XIsChange, XResize, XConfigService, XNumber, stripTags } from '@ng-nest/ui/core';\r\nimport { Subject, fromEvent } from 'rxjs';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XTableBodyPrefix}`,\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, OnChanges {\r\n tbodyStyle: { [property: string]: any } = {};\r\n get isEmpty() {\r\n return this.data?.length === 0;\r\n }\r\n get getRowHeight() {\r\n return this.rowHeight == 0 ? '' : this.rowHeight;\r\n }\r\n get getItemSize() {\r\n return this.rowHeight !== 0 && this.itemSize > this.rowHeight ? this.rowHeight : this.itemSize;\r\n }\r\n\r\n @ViewChild('tbody') tbody!: ElementRef;\r\n @ViewChild('virtualBody') virtualBody!: CdkVirtualScrollViewport;\r\n @Input() table: any;\r\n\r\n private _unSubject = new Subject<void>();\r\n private _resizeObserver!: ResizeObserver;\r\n\r\n constructor(\r\n // @Optional() @Host() public table: XTableComponent,\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n @Inject(DOCUMENT) public doc: any,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n ngOnChanges(simples: SimpleChanges) {\r\n const { data, columns, activatedRow, mergeRule } = simples;\r\n XIsChange(data, columns, activatedRow, mergeRule) && this.cdr.detectChanges();\r\n }\r\n\r\n ngOnInit() {\r\n removeNgTag(this.elementRef.nativeElement);\r\n if (this.scroll?.y && !this.bodyHeight) {\r\n this.bodyHeight = this.scroll.y;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.table.virtualBody = this.virtualBody;\r\n this.table.bodyChange = () => this.cdr.detectChanges();\r\n this.setSubject();\r\n this.setScroll();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n setSubject() {\r\n if (this.virtualBody) {\r\n this.table.scrollContentEle = this.virtualBody?.elementRef?.nativeElement.querySelector(\r\n '.cdk-virtual-scroll-content-wrapper'\r\n ) as HTMLElement;\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(takeUntil(this._unSubject))\r\n .subscribe((x) => {\r\n this._resizeObserver = x.resizeObserver;\r\n this.setAdaptionHeight();\r\n this.setScroll();\r\n });\r\n fromEvent(window, 'resize')\r\n .pipe(takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n this.setAdaptionHeight();\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 = ele.scrollTop;\r\n this.table.scrollLeft = ele.scrollLeft;\r\n if (ele.scrollLeft >= 0 && this.table.thead) {\r\n this.table.thead.nativeElement.scrollLeft = this.table.scrollLeft;\r\n }\r\n this.table.cdr.detectChanges();\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.bodyHeight as number);\r\n const hasX = this.table.scrollContentEle.clientWidth > ele.clientWidth;\r\n\r\n if (!this.table.hasScrollY && hasY) {\r\n this.table.hasScrollY = true;\r\n this.table.scrollYWidth = ele.offsetWidth - ele.clientWidth;\r\n } else if (this.table.hasScrollY && !hasY) {\r\n this.table.hasScrollY = false;\r\n this.table.scrollYWidth = 0;\r\n }\r\n\r\n if (!this.table.hasScrollX && hasX) {\r\n this.table.hasScrollX = true;\r\n this.table.scrollXHeight = ele.offsetHeight - ele.clientHeight;\r\n } else if (this.table.hasScrollX && !hasX) {\r\n this.table.hasScrollX = false;\r\n this.table.scrollXHeight = 0;\r\n this.table.scrollXWidth = null;\r\n }\r\n if (hasX) {\r\n this.table.scrollXWidth = ele.offsetWidth + ele.scrollWidth - ele.clientWidth;\r\n }\r\n\r\n this.table.cdr.detectChanges();\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 = {\r\n height: `${height}px`\r\n };\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 ? stripTags(it) : '';\r\n }\r\n\r\n setAdaptionHeight() {\r\n if ((this.adaptionHeight as number) > 0) {\r\n const headHeight = this.table.thead?.nativeElement.clientHeight || 0;\r\n const footHeight = this.table.tfoot?.nativeElement.clientHeight || 0;\r\n const paginationHeight = this.table.pagination?.elementRef.nativeElement.clientHeight || 0;\r\n this.bodyHeight =\r\n Number(this.docPercent) * this.doc.documentElement.clientHeight -\r\n headHeight -\r\n footHeight -\r\n paginationHeight -\r\n Number(this.adaptionHeight);\r\n if (this.bodyHeight < 0) this.bodyHeight = 0;\r\n this.minBufferPx = this.bodyHeight;\r\n this.maxBufferPx = this.bodyHeight * 1.2;\r\n this.virtualBody['_scrollStrategy']['_minBufferPx'] = this.minBufferPx;\r\n this.virtualBody['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPx;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n rowClick(row: XTableRow) {\r\n this.activatedRow = row;\r\n if (this.allowSelectRow && this.table.rowChecked) {\r\n if (!Array.from((event as any).path).find((x: any) => x.localName == 'x-checkbox')) {\r\n row[this.table.rowChecked.id] = !row[this.table.rowChecked.id];\r\n this.table.bodyChecked(row[this.table.rowChecked.id], this.table.rowChecked);\r\n }\r\n }\r\n this.activatedRowChange.emit(row);\r\n this.cdr.detectChanges();\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>\r\n <ng-container *ngIf=\"cellConfig; else virtualScrollTpl\">\r\n <tr *ngFor=\"let row of data; index as i; trackBy: trackByItem\" [style.gridTemplateColumns]=\"cellConfig.gridTemplateColumns\">\r\n <td\r\n *ngFor=\"let column of cellConfig.cells; index as j\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getSticky(column)\"\r\n [style.left.px]=\"column.left\"\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 </tr>\r\n </ng-container>\r\n <x-empty *ngIf=\"isEmpty\"></x-empty>\r\n</tbody>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n *ngIf=\"virtualScroll; else bodyTpl\"\r\n [itemSize]=\"getItemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"bodyHeight\"\r\n >\r\n <tr\r\n *cdkVirtualFor=\"let row of data; let index = index; trackBy: trackByItem\"\r\n [class.x-table-activated]=\"allowSelectRow && activatedRow?.id === row.id\"\r\n [ngClass]=\"!rowClass ? {} : rowClass(row, index)\"\r\n [style.height.px]=\"getRowHeight\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n (click)=\"rowClick(row)\"\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</ng-template>\r\n\r\n<ng-template #bodyTpl>\r\n <tr\r\n *ngFor=\"let row of data; index as i; trackBy: trackByItem\"\r\n [class.x-table-activated]=\"allowSelectRow && activatedRow?.id === row.id\"\r\n [ngClass]=\"!rowClass ? {} : rowClass(row, i)\"\r\n [style.height.px]=\"getRowHeight\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n (click)=\"rowClick(row)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: i }\"></ng-container>\r\n </tr>\r\n</ng-template>\r\n\r\n<ng-template #rowTpl let-row=\"row\" let-i=\"i\">\r\n <ng-container *ngFor=\"let column of columns; index as j; trackBy: trackByItem\">\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-sticky]=\"table.getSticky(column)\"\r\n [style.left.px]=\"column.left\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-template>\r\n </td>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-column=\"column\" let-row=\"row\" let-i=\"i\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: '' }]\"\r\n [(ngModel)]=\"row[column.id]\"\r\n (ngModelChange)=\"table.bodyChecked($event, column)\"\r\n ></x-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'index'\">\r\n <div>{{ table.getIndex(i) }}</div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *xOutlet=\"columnTpl[column.id]; context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n <div [innerHTML]=\"row[column.id]\" [style.text-align]=\"column.textAlign\"></div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\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 ViewChild,\r\n Input\r\n} from '@angular/core';\r\nimport { XTableFootPrefix, XTableFootProperty } from './table.property';\r\nimport { removeNgTag } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XTableFootPrefix}`,\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 @ViewChild('tfoot') tfoot!: ElementRef;\r\n @Input() table: any;\r\n constructor(\r\n // @Optional() @Host() public table: XTableComponent,\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n removeNgTag(this.elementRef.nativeElement);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.table.tfoot = this.tfoot!;\r\n }\r\n}\r\n","<tfoot></tfoot>\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 ViewChild,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { XTablePrefix, XTableProperty, XTableColumn, XTableRow, XTableCell, XTableCellConfigRule } from './table.property';\r\nimport { XIsChange, XIsEmpty, XResultList, XNumber, XSort, XConfigService } 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\n\r\n@Component({\r\n selector: `${XTablePrefix}`,\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTableComponent extends XTableProperty implements OnInit, OnDestroy {\r\n get getScrollLeft() {\r\n return this.scrollLeft > 0;\r\n }\r\n get getScrollTop() {\r\n return this.scrollTop > 0;\r\n }\r\n thead!: ElementRef;\r\n tfoot!: ElementRef;\r\n virtualBody!: CdkVirtualScrollViewport;\r\n headChange!: () => void;\r\n bodyChange!: () => void;\r\n scrollContentEle!: HTMLElement;\r\n hasScrollY = false;\r\n scrollYWidth = 0;\r\n hasScrollX = false;\r\n scrollXHeight = 0;\r\n scrollXWidth!: number | null;\r\n scrollLeft = 0;\r\n scrollTop = 0;\r\n rowChecked!: XTableColumn;\r\n headCheckboxList!: XTableColumn[];\r\n dataIsFunc = false;\r\n getting = false;\r\n tableData: XTableRow[] = [];\r\n checkedValues: { [prop: string]: boolean } = {};\r\n indeterminate = '$$indeterminate';\r\n @ViewChild('table') table!: ElementRef;\r\n @ViewChild('pagination') pagination!: XPaginationComponent;\r\n private _unSubject = new Subject<void>();\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setClassMap();\r\n this.setRowChecked();\r\n this.setMerge();\r\n }\r\n\r\n ngOnChanges(simples: SimpleChanges) {\r\n const { data, checkedRow, columns, activatedRow, manual } = simples;\r\n XIsChange(data, checkedRow) && this.setData();\r\n XIsChange(columns, activatedRow) && this.cdr.detectChanges();\r\n XIsChange(manual) && this.setManual();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._unSubject.next();\r\n this._unSubject.complete();\r\n }\r\n\r\n setClassMap() {\r\n this.classMap = {\r\n [`${XTablePrefix}-row-size-${this.rowSize}`]: !XIsEmpty(this.rowSize)\r\n };\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getSticky(column: XTableColumn | XTableCell) {\r\n return Number(column.left) >= 0;\r\n }\r\n\r\n getIndex(index: number) {\r\n return (Number(this.index) - 1) * Number(this.size) + index + 1;\r\n }\r\n\r\n setData() {\r\n if (Array.isArray(this.data)) {\r\n this.dataIsFunc = false;\r\n this.tableData = this.data;\r\n this.setChecked();\r\n this.setHeadCheckboxList();\r\n } else if (this.data instanceof Function) {\r\n this.dataIsFunc = true;\r\n this.getDataByFunc();\r\n }\r\n }\r\n\r\n getDataByFunc() {\r\n if (!this.manual) return;\r\n this.getting = true;\r\n this.cdr.detectChanges();\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 [this.tableData, this.total] = [x.list as XTableRow[], x.total as XNumber];\r\n if (this.virtualBody) {\r\n this.virtualBody.scrollToIndex(0);\r\n this.virtualBody.checkViewportSize();\r\n }\r\n this.getting = false;\r\n this.setChecked();\r\n this.setHeadCheckboxList();\r\n this.detectChanges();\r\n });\r\n }\r\n\r\n setManual() {\r\n if (this.dataIsFunc) this.getDataByFunc();\r\n }\r\n\r\n setRowChecked() {\r\n this.rowChecked = this.columns.find((x) => x.rowChecked) as XTableColumn;\r\n this.headCheckboxList = this.columns.filter((x) => x.type === 'checkbox' && x.headChecked);\r\n }\r\n\r\n setMerge() {\r\n if (!this.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 this.cellConfig.thead = setRule(this.cellConfig.thead);\r\n this.cellConfig.tbody = setRule(this.cellConfig.tbody);\r\n }\r\n\r\n change(index: number) {\r\n this.index = index;\r\n this.dataIsFunc && this.getDataByFunc();\r\n this.indexChange.emit(index);\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() {\r\n let result: XTableRow[] = [];\r\n if (XIsEmpty(this.tableData) || !this.checkedRow) return;\r\n for (let key in this.checkedRow) {\r\n const arr = this.checkedRow[key];\r\n for (let item of this.tableData 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) this.tableData = [...result];\r\n this.detectChanges();\r\n }\r\n\r\n setHeadCheckboxList() {\r\n if (XIsEmpty(this.tableData) || !this.headCheckboxList) return;\r\n for (let column of this.headCheckboxList) {\r\n this.setCheckedValues(column);\r\n }\r\n }\r\n\r\n checkSort(sort: XSort[]) {\r\n if (!this.dataIsFunc) return;\r\n if (typeof this.query === 'undefined') this.query = {};\r\n this.query.sort = sort;\r\n this.queryChange.emit(this.query);\r\n this.getDataByFunc();\r\n }\r\n\r\n headChecked(checked: boolean, column: XTableColumn) {\r\n this.tableData.forEach((x) => {\r\n x[column.id] = checked;\r\n });\r\n this.setCheckedValues(column);\r\n this.detectChanges();\r\n }\r\n\r\n bodyChecked(_checked: boolean, column: XTableColumn) {\r\n this.setCheckedValues(column);\r\n this.detectChanges();\r\n }\r\n\r\n setCheckedValues(column: XTableColumn) {\r\n const count = this.tableData.length;\r\n const checkedLen = this.tableData.filter((x) => x[column.id]).length;\r\n this.checkedValues[column.id] = count === checkedLen;\r\n this.checkedValues[column.id + this.indeterminate] = checkedLen > 0 && checkedLen < count;\r\n }\r\n\r\n detectChanges() {\r\n this.bodyChange && this.bodyChange();\r\n this.headChange && this.headChange();\r\n this.cdr.detectChanges();\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-scroll-left]=\"getScrollLeft\"\r\n [class.x-table-scroll-top]=\"getScrollTop\"\r\n [class.x-table-bordered]=\"bordered\"\r\n [class.x-table-td-adaption-height]=\"rowHeight == 0\"\r\n [class.x-table-cell-config]=\"cellConfig\"\r\n>\r\n <x-table-head\r\n *ngIf=\"showHeader\"\r\n [columns]=\"columns\"\r\n [rowHeight]=\"rowHeight\"\r\n [columnTpl]=\"headColumnTpl\"\r\n [scrollYWidth]=\"scrollYWidth\"\r\n [scrollXWidth]=\"scrollXWidth\"\r\n [cellConfig]=\"cellConfig?.thead\"\r\n [table]=\"this\"\r\n ></x-table-head>\r\n <x-table-body\r\n [data]=\"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]=\"cellConfig?.tbody\"\r\n [(activatedRow)]=\"activatedRow\"\r\n (activatedRowChange)=\"activatedRowChange.emit($event)\"\r\n [table]=\"this\"\r\n ></x-table-body>\r\n <x-table-foot [table]=\"this\"></x-table-foot>\r\n</table>\r\n<x-pagination\r\n #pagination\r\n *ngIf=\"size\"\r\n [(index)]=\"index\"\r\n [(size)]=\"size\"\r\n [(query)]=\"query\"\r\n [total]=\"total\"\r\n (indexChange)=\"change($event)\"\r\n [showEllipsis]=\"showEllipsis\"\r\n [showTotal]=\"showTotal\"\r\n [space]=\"space\"\r\n [hiddenBorder]=\"hiddenBorder\"\r\n>\r\n</x-pagination>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XPaginationModule } from '@ng-nest/ui/pagination';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { XEmptyModule } from '@ng-nest/ui/empty';\r\nimport { XCheckboxModule } from '@ng-nest/ui/checkbox';\r\nimport { XLoadingModule } from '@ng-nest/ui/loading';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XTableProperty, XTableHeadProperty, XTableBodyProperty, XTableFootProperty } from './table.property';\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\nimport { XDragDirective } from './drag.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n XDragDirective,\r\n XTableComponent,\r\n XTableProperty,\r\n XTableHeadComponent,\r\n XTableHeadProperty,\r\n XTableBodyComponent,\r\n XTableBodyProperty,\r\n XTableFootComponent,\r\n XTableFootProperty\r\n ],\r\n exports: [XTableComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n XPaginationModule,\r\n XOutletModule,\r\n XCheckboxModule,\r\n XIconModule,\r\n ScrollingModule,\r\n XEmptyModule,\r\n XLoadingModule\r\n ]\r\n})\r\nexport class XTableModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -519,8 +519,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
519
519
  XButtonModule,
520
520
  XIconModule,
521
521
  XBaseFormModule
522
- ],
523
- entryComponents: [XTimePickerPortalComponent]
522
+ ]
524
523
  }]
525
524
  }] });
526
525
 
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-time-picker.mjs","sources":["../../../../lib/ng-nest/ui/time-picker/time-picker.property.ts","../../../../lib/ng-nest/ui/time-picker/time-picker-frame.component.ts","../../../../lib/ng-nest/ui/time-picker/time-picker-frame.component.html","../../../../lib/ng-nest/ui/time-picker/time-picker-portal.component.ts","../../../../lib/ng-nest/ui/time-picker/time-picker-portal.component.html","../../../../lib/ng-nest/ui/time-picker/time-picker.component.ts","../../../../lib/ng-nest/ui/time-picker/time-picker.component.html","../../../../lib/ng-nest/ui/time-picker/time-picker.module.ts","../../../../lib/ng-nest/ui/time-picker/ng-nest-ui-time-picker.ts"],"sourcesContent":["import { XBoolean, XCorner, XInputBoolean, XSize, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, Output, EventEmitter, Component } from '@angular/core';\r\nimport { XControlValueAccessor, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * TimePicker\r\n * @selector x-time-picker\r\n * @decorator component\r\n */\r\nexport const XTimePickerPrefix = 'x-time-picker';\r\nconst X_CONFIG_NAME = 'timePicker';\r\n\r\n/**\r\n * TimePicker Property\r\n */\r\n@Component({ template: '' })\r\nexport class XTimePickerProperty extends XControlValueAccessor<any> {\r\n /**\r\n * @zh_CN 时间类型\r\n * @en_US Time type\r\n */\r\n @Input() type: XTimePickerType = 'time';\r\n /**\r\n * @zh_CN 格式化\r\n * @en_US Format\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, 'HH:mm:ss') format?: string;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n @Input() @XWithConfig<XCorner>(X_CONFIG_NAME, 'bottom-start') placement?: XCorner;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') override size!: XSize;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) bordered!: XBoolean;\r\n /**\r\n * @zh_CN 节点点击的事件\r\n * @en_US Node click event\r\n */\r\n @Output() nodeEmit = new EventEmitter<number>();\r\n}\r\n\r\n/**\r\n * TimePicker Option\r\n * @undocument true\r\n */\r\nexport interface XTimePickerOption extends XFormOption {\r\n /**\r\n * @zh_CN 时间类型\r\n * @en_US Time type\r\n */\r\n type?: XTimePickerType;\r\n /**\r\n * @zh_CN 格式化\r\n * @en_US Format\r\n */\r\n format?: string;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n placement?: XCorner;\r\n /**\r\n * @zh_CN 节点点击的事件\r\n * @en_US Node click event\r\n */\r\n nodeClick?: (date: number) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN 时间选择\r\n * @en_US Time selection\r\n */\r\nexport type XTimePickerType = 'time' | 'hour' | 'minute';\r\n\r\n/**\r\n * TimePickerPortal\r\n * @selector x-time-picker-portal\r\n * @decorator component\r\n */\r\nexport const XTimePickerPortalPrefix = 'x-time-picker-portal';\r\n\r\n/**\r\n * TimePickerFrame\r\n * @selector x-time-picker-frame\r\n * @decorator component\r\n */\r\nexport const XTimePickerFramePrefix = 'x-time-picker-frame';\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { XTimePickerFramePrefix, XTimePickerType } from './time-picker.property';\r\nimport { XListNode } from '@ng-nest/ui/list';\r\nimport { reqAnimFrame, XIsChange, XIsEmpty } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XTimePickerFramePrefix}`,\r\n templateUrl: './time-picker-frame.component.html',\r\n styleUrls: ['./time-picker-frame.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTimePickerFrameComponent {\r\n @Input() type: XTimePickerType = 'time';\r\n @Input() value!: number;\r\n @Output() nodeEmit = new EventEmitter<Date>();\r\n @ViewChild('hourRef', { static: false }) hourRef!: ElementRef;\r\n @ViewChild('minuteRef', { static: false }) minuteRef!: ElementRef;\r\n @ViewChild('secondRef', { static: false }) secondRef!: ElementRef;\r\n model!: Date;\r\n now = new Date();\r\n hour: number = 0;\r\n minute: number = 0;\r\n second: number = 0;\r\n scrollAnimating: { [key: string]: boolean } = {};\r\n hourDate = Array.from({ length: 24 }).map((_, i) => {\r\n return {\r\n label: this.prefixZero(i, 2),\r\n id: i\r\n };\r\n });\r\n minuteDate = Array.from({ length: 60 }).map((_, i) => {\r\n return {\r\n label: this.prefixZero(i, 2),\r\n id: i\r\n };\r\n });\r\n secondDate = Array.from({ length: 60 }).map((_, i) => {\r\n return {\r\n label: this.prefixZero(i, 2),\r\n id: i\r\n };\r\n });\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { value } = changes;\r\n if (XIsChange(value)) {\r\n this.init();\r\n this.setScrollTop();\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n init() {\r\n if (!XIsEmpty(this.value)) {\r\n this.setDefault();\r\n } else {\r\n const def = new Date('1970-01-01');\r\n this.model = new Date(\r\n def.getFullYear(),\r\n def.getMonth(),\r\n def.getDate(),\r\n this.now.getHours(),\r\n this.now.getMinutes(),\r\n this.now.getSeconds()\r\n );\r\n }\r\n this.setTime(this.model);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setDefault() {\r\n this.model = new Date(this.value);\r\n }\r\n\r\n setTime(date: Date) {\r\n this.hour = date.getHours();\r\n this.minute = date.getMinutes();\r\n this.second = date.getSeconds();\r\n }\r\n\r\n prefixZero(num: number, n: number) {\r\n return (Array(n).join('0') + num).slice(-n);\r\n }\r\n\r\n setScrollTop() {\r\n this.selected(this.hourRef.nativeElement, this.hour);\r\n this.selected(this.minuteRef.nativeElement, this.minute);\r\n this.selected(this.secondRef.nativeElement, this.second);\r\n }\r\n\r\n selected(ele: HTMLElement, num: number) {\r\n if (this.scrollAnimating[ele.className]) return;\r\n let current = ele.querySelector(`.x-list x-list-option:nth-child(${num + 1})`) as HTMLElement;\r\n if (current) {\r\n ele.scrollTop = current.offsetTop;\r\n }\r\n }\r\n\r\n hourClick(date: XListNode) {\r\n this.hour = date.id;\r\n this.model.setHours(this.hour);\r\n this.scrollTo(this.hourRef.nativeElement, (date.event?.srcElement as HTMLElement).offsetTop, 120);\r\n this.nodeEmit.emit(this.model);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n minuteClick(date: XListNode) {\r\n this.minute = date.id;\r\n this.model.setMinutes(this.minute);\r\n this.scrollTo(this.minuteRef.nativeElement, (date.event?.srcElement as HTMLElement).offsetTop, 120);\r\n this.nodeEmit.emit(this.model);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n secondClick(date: XListNode) {\r\n this.second = date.id;\r\n this.model.setSeconds(this.second);\r\n this.scrollTo(this.secondRef.nativeElement, (date.event?.srcElement as HTMLElement).offsetTop, 120);\r\n this.nodeEmit.emit(this.model);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private scrollTo(element: HTMLElement, to: number, duration: number): void {\r\n const clsName = element.className;\r\n const difference = to - element.scrollTop;\r\n const perTick = (difference / duration) * 10;\r\n this.scrollAnimating[clsName] = true;\r\n reqAnimFrame(() => {\r\n element.scrollTop = element.scrollTop + perTick;\r\n if (element.scrollTop === to || duration <= 0) {\r\n this.scrollAnimating[clsName] = false;\r\n return;\r\n } else {\r\n this.scrollTo(element, to, duration - 10);\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"x-time-picker-frame\">\r\n <div class=\"x-time-picker-frame-hour\" #hourRef>\r\n <x-list [data]=\"hourDate\" [(ngModel)]=\"hour\" (nodeClick)=\"hourClick($event)\"></x-list>\r\n </div>\r\n <div class=\"x-time-picker-frame-minute\" #minuteRef [hidden]=\"type === 'hour'\">\r\n <x-list [data]=\"minuteDate\" [(ngModel)]=\"minute\" (nodeClick)=\"minuteClick($event)\"></x-list>\r\n </div>\r\n <div class=\"x-time-picker-frame-second\" #secondRef [hidden]=\"type !== 'time'\">\r\n <x-list [data]=\"secondDate\" [(ngModel)]=\"second\" (nodeClick)=\"secondClick($event)\"></x-list>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n Renderer2,\r\n OnDestroy,\r\n HostBinding,\r\n HostListener\r\n} from '@angular/core';\r\nimport { XTimePickerPortalPrefix, XTimePickerType } from './time-picker.property';\r\nimport { XConnectBaseAnimation, XPositionTopBottom } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\n\r\n@Component({\r\n selector: `${XTimePickerPortalPrefix}`,\r\n templateUrl: './time-picker-portal.component.html',\r\n styleUrls: ['./time-picker-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XConnectBaseAnimation]\r\n})\r\nexport class XTimePickerPortalComponent implements OnInit, OnDestroy {\r\n @HostBinding('@x-connect-base-animation') public placement!: XPositionTopBottom;\r\n @HostListener('@x-connect-base-animation.done', ['$event']) done(event: { toState: any }) {\r\n this.animating(false);\r\n event.toState === 'void' && this.destroyPortal();\r\n }\r\n @HostListener('@x-connect-base-animation.start', ['$event']) start() {\r\n this.animating(true);\r\n }\r\n type: XTimePickerType = 'time';\r\n value: any;\r\n valueChange!: Subject<any>;\r\n positionChange!: Subject<any>;\r\n closePortal!: Function;\r\n destroyPortal!: Function;\r\n animating!: Function;\r\n inputCom!: XInputComponent;\r\n nodeEmit!: (date: Date) => void;\r\n\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(public renderer: Renderer2, public cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.valueChange.pipe(takeUntil(this._unSubject)).subscribe((x: any) => {\r\n this.value = x;\r\n });\r\n this.positionChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.placement = x;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n stopPropagation(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n}\r\n","<div class=\"x-time-picker-portal\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\">\r\n <x-time-picker-frame [type]=\"type\" [value]=\"value\" (nodeEmit)=\"nodeEmit($event)\"></x-time-picker-frame>\r\n</div>\r\n","import { XTimePickerPortalComponent } from './time-picker-portal.component';\r\nimport { XPortalService, XPortalOverlayRef, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Renderer2,\r\n ElementRef,\r\n ViewContainerRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { XTimePickerPrefix, XTimePickerProperty } from './time-picker.property';\r\nimport { XIsEmpty, XIsDate, XIsNumber, XCorner, XClearClass, XIsString } from '@ng-nest/ui/core';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { DatePipe } from '@angular/common';\r\nimport { Overlay, OverlayConfig, FlexibleConnectedPositionStrategy, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\n\r\n@Component({\r\n selector: `${XTimePickerPrefix}`,\r\n templateUrl: './time-picker.component.html',\r\n styleUrls: ['./time-picker.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XTimePickerComponent), DatePipe]\r\n})\r\nexport class XTimePickerComponent extends XTimePickerProperty implements OnInit {\r\n @ViewChild('datePicker', { static: true }) datePicker!: ElementRef;\r\n @ViewChild('inputCom', { static: true }) inputCom!: XInputComponent;\r\n\r\n override writeValue(value: any) {\r\n if (XIsDate(value)) {\r\n this.value = value.getTime();\r\n this.valueType = 'date';\r\n } else if (XIsNumber(value)) {\r\n this.value = value;\r\n this.valueType = 'number';\r\n } else if (XIsString(value)) {\r\n this.value = new Date(value).getTime();\r\n this.valueType = 'string';\r\n } else if (XIsEmpty(value)) {\r\n this.value = '';\r\n }\r\n this.setDisplayValue(this.value);\r\n this.valueChange.next(this.value);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n override readonly: boolean = true;\r\n clearable: boolean = false;\r\n enter: boolean = false;\r\n animating = false;\r\n displayValue: any = '';\r\n portal!: XPortalOverlayRef<XTimePickerPortalComponent>;\r\n icon: string = 'fto-clock';\r\n box!: DOMRect;\r\n protalHeight!: number;\r\n maxNodes: number = 8;\r\n protalTobottom: boolean = true;\r\n valueChange: Subject<any> = new Subject();\r\n dataChange: Subject<any> = new Subject();\r\n positionChange: Subject<any> = new Subject();\r\n closeSubject: Subject<void> = new Subject();\r\n valueType: 'date' | 'number' | 'string' = 'date';\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n private cdr: ChangeDetectorRef,\r\n private portalService: XPortalService,\r\n private viewContainerRef: ViewContainerRef,\r\n private datePipe: DatePipe,\r\n private overlay: Overlay\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setFlex(this.datePicker.nativeElement, this.renderer, this.justify, this.align, this.direction);\r\n this.setFormat();\r\n this.setClassMap();\r\n this.setSubject();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setPortal();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setClassMap() {\r\n XClearClass(this.labelMap);\r\n this.labelMap[`x-text-align-${this.labelAlign}`] = this.labelAlign ? true : false;\r\n }\r\n\r\n setFormat() {\r\n if (this.format === 'HH:mm:ss') {\r\n if (this.type === 'hour') {\r\n this.format = 'HH';\r\n } else if (this.type === 'minute') {\r\n this.format = 'HH:mm';\r\n }\r\n }\r\n }\r\n\r\n setSubject() {\r\n this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n }\r\n\r\n menter() {\r\n if (this.disabled) return;\r\n this.enter = true;\r\n if (!XIsEmpty(this.value)) {\r\n this.icon = '';\r\n this.clearable = true;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n mleave() {\r\n if (this.disabled) return;\r\n this.enter = false;\r\n if (this.clearable) {\r\n this.icon = 'fto-clock';\r\n this.clearable = false;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n clearEmit() {\r\n this.value = '';\r\n this.displayValue = '';\r\n this.mleave();\r\n this.valueChange.next(this.value);\r\n if (this.onChange) this.onChange(this.value);\r\n }\r\n\r\n portalAttached() {\r\n return this.portal?.overlayRef?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portal?.overlayRef?.detach();\r\n this.active = false;\r\n this.cdr.detectChanges();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n destroyPortal() {\r\n this.portal?.overlayRef?.dispose();\r\n }\r\n\r\n showPortal() {\r\n if (this.disabled || this.animating) return;\r\n this.active = true;\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XTimePickerPortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n this.portal.overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n this.closeSubject.next();\r\n });\r\n this.setInstance();\r\n }\r\n\r\n setPosition(config: OverlayConfig) {\r\n let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n position.positionChanges.pipe(takeUntil(this._unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n const place = XPortalConnectedPosition.get(pos.connectionPair) as XCorner;\r\n place !== this.placement && this.positionChange.next(place);\r\n });\r\n }\r\n\r\n setInstance() {\r\n let componentRef = this.portal?.componentRef;\r\n if (!componentRef) return;\r\n Object.assign(componentRef.instance, {\r\n type: this.type,\r\n value: this.value,\r\n placement: this.placement,\r\n valueChange: this.valueChange,\r\n positionChange: this.positionChange,\r\n inputCom: this.inputCom,\r\n closePortal: () => this.closeSubject.next(),\r\n destroyPortal: () => this.destroyPortal(),\r\n nodeEmit: (node: Date) => this.onNodeClick(node),\r\n animating: (ing: boolean) => (this.animating = ing)\r\n });\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n onNodeClick(date: Date) {\r\n this.value = this.setValue(date);\r\n this.setDisplayValue(date);\r\n this.cdr.detectChanges();\r\n if (this.onChange) this.onChange(this.value);\r\n this.nodeEmit.emit(this.value);\r\n }\r\n\r\n setValue(value: Date) {\r\n return ['date', 'string'].includes(this.valueType) ? new Date(value) : value.getTime();\r\n }\r\n\r\n setDisplayValue(date: Date | number) {\r\n this.displayValue = this.datePipe.transform(date, this.format);\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.inputCom.inputRef,\r\n placement: [this.placement as XCorner, 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\r\n transformOriginOn: 'x-time-picker-portal'\r\n });\r\n }\r\n\r\n setPortal() {\r\n if (this.portalAttached()) {\r\n this.portal.overlayRef?.updatePositionStrategy(this.setPlacement());\r\n }\r\n }\r\n\r\n formControlChanges() {\r\n this.ngOnInit();\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<div #datePicker class=\"x-time-picker\">\r\n <div class=\"x-time-picker-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label\"\r\n [labelWidth]=\"labelWidth\"\r\n [labelAlign]=\"labelAlign\"\r\n [justify]=\"justify\"\r\n [align]=\"align\"\r\n [direction]=\"direction\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [icon]=\"icon\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [clearable]=\"clearable\"\r\n [(ngModel)]=\"displayValue\"\r\n [valueTpl]=\"valueTpl\"\r\n [valueTplContext]=\"valueTplContext\"\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [before]=\"before\"\r\n [after]=\"after\"\r\n [pattern]=\"pattern\"\r\n [message]=\"message\"\r\n [pointer]=\"true\"\r\n [(active)]=\"active\"\r\n (clearEmit)=\"clearEmit()\"\r\n (xClick)=\"showPortal()\"\r\n (xMouseenter)=\"menter()\"\r\n (xMouseleave)=\"mleave()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XButtonModule } from '@ng-nest/ui/button';\r\nimport { XListModule } from '@ng-nest/ui/list';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\nimport { XTimePickerComponent } from './time-picker.component';\r\nimport { XTimePickerPortalComponent } from './time-picker-portal.component';\r\nimport { XTimePickerProperty } from './time-picker.property';\r\nimport { XTimePickerFrameComponent } from './time-picker-frame.component';\r\n\r\n@NgModule({\r\n declarations: [XTimePickerComponent, XTimePickerPortalComponent, XTimePickerFrameComponent, XTimePickerProperty],\r\n exports: [XTimePickerComponent, XTimePickerPortalComponent, XTimePickerFrameComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n XPortalModule,\r\n XInputModule,\r\n XListModule,\r\n XButtonModule,\r\n XIconModule,\r\n XBaseFormModule\r\n ],\r\n entryComponents: [XTimePickerPortalComponent]\r\n})\r\nexport class XTimePickerModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-time-picker.mjs","sources":["../../../../lib/ng-nest/ui/time-picker/time-picker.property.ts","../../../../lib/ng-nest/ui/time-picker/time-picker-frame.component.ts","../../../../lib/ng-nest/ui/time-picker/time-picker-frame.component.html","../../../../lib/ng-nest/ui/time-picker/time-picker-portal.component.ts","../../../../lib/ng-nest/ui/time-picker/time-picker-portal.component.html","../../../../lib/ng-nest/ui/time-picker/time-picker.component.ts","../../../../lib/ng-nest/ui/time-picker/time-picker.component.html","../../../../lib/ng-nest/ui/time-picker/time-picker.module.ts","../../../../lib/ng-nest/ui/time-picker/ng-nest-ui-time-picker.ts"],"sourcesContent":["import { XBoolean, XCorner, XInputBoolean, XSize, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, Output, EventEmitter, Component } from '@angular/core';\r\nimport { XControlValueAccessor, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * TimePicker\r\n * @selector x-time-picker\r\n * @decorator component\r\n */\r\nexport const XTimePickerPrefix = 'x-time-picker';\r\nconst X_CONFIG_NAME = 'timePicker';\r\n\r\n/**\r\n * TimePicker Property\r\n */\r\n@Component({ template: '' })\r\nexport class XTimePickerProperty extends XControlValueAccessor<any> {\r\n /**\r\n * @zh_CN 时间类型\r\n * @en_US Time type\r\n */\r\n @Input() type: XTimePickerType = 'time';\r\n /**\r\n * @zh_CN 格式化\r\n * @en_US Format\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, 'HH:mm:ss') format?: string;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n @Input() @XWithConfig<XCorner>(X_CONFIG_NAME, 'bottom-start') placement?: XCorner;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') override size!: XSize;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n @Input() @XInputBoolean() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) bordered!: XBoolean;\r\n /**\r\n * @zh_CN 节点点击的事件\r\n * @en_US Node click event\r\n */\r\n @Output() nodeEmit = new EventEmitter<number>();\r\n}\r\n\r\n/**\r\n * TimePicker Option\r\n * @undocument true\r\n */\r\nexport interface XTimePickerOption extends XFormOption {\r\n /**\r\n * @zh_CN 时间类型\r\n * @en_US Time type\r\n */\r\n type?: XTimePickerType;\r\n /**\r\n * @zh_CN 格式化\r\n * @en_US Format\r\n */\r\n format?: string;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n placement?: XCorner;\r\n /**\r\n * @zh_CN 节点点击的事件\r\n * @en_US Node click event\r\n */\r\n nodeClick?: (date: number) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN 时间选择\r\n * @en_US Time selection\r\n */\r\nexport type XTimePickerType = 'time' | 'hour' | 'minute';\r\n\r\n/**\r\n * TimePickerPortal\r\n * @selector x-time-picker-portal\r\n * @decorator component\r\n */\r\nexport const XTimePickerPortalPrefix = 'x-time-picker-portal';\r\n\r\n/**\r\n * TimePickerFrame\r\n * @selector x-time-picker-frame\r\n * @decorator component\r\n */\r\nexport const XTimePickerFramePrefix = 'x-time-picker-frame';\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { XTimePickerFramePrefix, XTimePickerType } from './time-picker.property';\r\nimport { XListNode } from '@ng-nest/ui/list';\r\nimport { reqAnimFrame, XIsChange, XIsEmpty } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XTimePickerFramePrefix}`,\r\n templateUrl: './time-picker-frame.component.html',\r\n styleUrls: ['./time-picker-frame.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTimePickerFrameComponent {\r\n @Input() type: XTimePickerType = 'time';\r\n @Input() value!: number;\r\n @Output() nodeEmit = new EventEmitter<Date>();\r\n @ViewChild('hourRef', { static: false }) hourRef!: ElementRef;\r\n @ViewChild('minuteRef', { static: false }) minuteRef!: ElementRef;\r\n @ViewChild('secondRef', { static: false }) secondRef!: ElementRef;\r\n model!: Date;\r\n now = new Date();\r\n hour: number = 0;\r\n minute: number = 0;\r\n second: number = 0;\r\n scrollAnimating: { [key: string]: boolean } = {};\r\n hourDate = Array.from({ length: 24 }).map((_, i) => {\r\n return {\r\n label: this.prefixZero(i, 2),\r\n id: i\r\n };\r\n });\r\n minuteDate = Array.from({ length: 60 }).map((_, i) => {\r\n return {\r\n label: this.prefixZero(i, 2),\r\n id: i\r\n };\r\n });\r\n secondDate = Array.from({ length: 60 }).map((_, i) => {\r\n return {\r\n label: this.prefixZero(i, 2),\r\n id: i\r\n };\r\n });\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { value } = changes;\r\n if (XIsChange(value)) {\r\n this.init();\r\n this.setScrollTop();\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n init() {\r\n if (!XIsEmpty(this.value)) {\r\n this.setDefault();\r\n } else {\r\n const def = new Date('1970-01-01');\r\n this.model = new Date(\r\n def.getFullYear(),\r\n def.getMonth(),\r\n def.getDate(),\r\n this.now.getHours(),\r\n this.now.getMinutes(),\r\n this.now.getSeconds()\r\n );\r\n }\r\n this.setTime(this.model);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setDefault() {\r\n this.model = new Date(this.value);\r\n }\r\n\r\n setTime(date: Date) {\r\n this.hour = date.getHours();\r\n this.minute = date.getMinutes();\r\n this.second = date.getSeconds();\r\n }\r\n\r\n prefixZero(num: number, n: number) {\r\n return (Array(n).join('0') + num).slice(-n);\r\n }\r\n\r\n setScrollTop() {\r\n this.selected(this.hourRef.nativeElement, this.hour);\r\n this.selected(this.minuteRef.nativeElement, this.minute);\r\n this.selected(this.secondRef.nativeElement, this.second);\r\n }\r\n\r\n selected(ele: HTMLElement, num: number) {\r\n if (this.scrollAnimating[ele.className]) return;\r\n let current = ele.querySelector(`.x-list x-list-option:nth-child(${num + 1})`) as HTMLElement;\r\n if (current) {\r\n ele.scrollTop = current.offsetTop;\r\n }\r\n }\r\n\r\n hourClick(date: XListNode) {\r\n this.hour = date.id;\r\n this.model.setHours(this.hour);\r\n this.scrollTo(this.hourRef.nativeElement, (date.event?.srcElement as HTMLElement).offsetTop, 120);\r\n this.nodeEmit.emit(this.model);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n minuteClick(date: XListNode) {\r\n this.minute = date.id;\r\n this.model.setMinutes(this.minute);\r\n this.scrollTo(this.minuteRef.nativeElement, (date.event?.srcElement as HTMLElement).offsetTop, 120);\r\n this.nodeEmit.emit(this.model);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n secondClick(date: XListNode) {\r\n this.second = date.id;\r\n this.model.setSeconds(this.second);\r\n this.scrollTo(this.secondRef.nativeElement, (date.event?.srcElement as HTMLElement).offsetTop, 120);\r\n this.nodeEmit.emit(this.model);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private scrollTo(element: HTMLElement, to: number, duration: number): void {\r\n const clsName = element.className;\r\n const difference = to - element.scrollTop;\r\n const perTick = (difference / duration) * 10;\r\n this.scrollAnimating[clsName] = true;\r\n reqAnimFrame(() => {\r\n element.scrollTop = element.scrollTop + perTick;\r\n if (element.scrollTop === to || duration <= 0) {\r\n this.scrollAnimating[clsName] = false;\r\n return;\r\n } else {\r\n this.scrollTo(element, to, duration - 10);\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"x-time-picker-frame\">\r\n <div class=\"x-time-picker-frame-hour\" #hourRef>\r\n <x-list [data]=\"hourDate\" [(ngModel)]=\"hour\" (nodeClick)=\"hourClick($event)\"></x-list>\r\n </div>\r\n <div class=\"x-time-picker-frame-minute\" #minuteRef [hidden]=\"type === 'hour'\">\r\n <x-list [data]=\"minuteDate\" [(ngModel)]=\"minute\" (nodeClick)=\"minuteClick($event)\"></x-list>\r\n </div>\r\n <div class=\"x-time-picker-frame-second\" #secondRef [hidden]=\"type !== 'time'\">\r\n <x-list [data]=\"secondDate\" [(ngModel)]=\"second\" (nodeClick)=\"secondClick($event)\"></x-list>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n OnInit,\r\n Renderer2,\r\n OnDestroy,\r\n HostBinding,\r\n HostListener\r\n} from '@angular/core';\r\nimport { XTimePickerPortalPrefix, XTimePickerType } from './time-picker.property';\r\nimport { XConnectBaseAnimation, XPositionTopBottom } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\n\r\n@Component({\r\n selector: `${XTimePickerPortalPrefix}`,\r\n templateUrl: './time-picker-portal.component.html',\r\n styleUrls: ['./time-picker-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XConnectBaseAnimation]\r\n})\r\nexport class XTimePickerPortalComponent implements OnInit, OnDestroy {\r\n @HostBinding('@x-connect-base-animation') public placement!: XPositionTopBottom;\r\n @HostListener('@x-connect-base-animation.done', ['$event']) done(event: { toState: any }) {\r\n this.animating(false);\r\n event.toState === 'void' && this.destroyPortal();\r\n }\r\n @HostListener('@x-connect-base-animation.start', ['$event']) start() {\r\n this.animating(true);\r\n }\r\n type: XTimePickerType = 'time';\r\n value: any;\r\n valueChange!: Subject<any>;\r\n positionChange!: Subject<any>;\r\n closePortal!: Function;\r\n destroyPortal!: Function;\r\n animating!: Function;\r\n inputCom!: XInputComponent;\r\n nodeEmit!: (date: Date) => void;\r\n\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(public renderer: Renderer2, public cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.valueChange.pipe(takeUntil(this._unSubject)).subscribe((x: any) => {\r\n this.value = x;\r\n });\r\n this.positionChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {\r\n this.placement = x;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n stopPropagation(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n}\r\n","<div class=\"x-time-picker-portal\" (click)=\"inputCom.inputFocus(); stopPropagation($event)\">\r\n <x-time-picker-frame [type]=\"type\" [value]=\"value\" (nodeEmit)=\"nodeEmit($event)\"></x-time-picker-frame>\r\n</div>\r\n","import { XTimePickerPortalComponent } from './time-picker-portal.component';\r\nimport { XPortalService, XPortalOverlayRef, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Renderer2,\r\n ElementRef,\r\n ViewContainerRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { XTimePickerPrefix, XTimePickerProperty } from './time-picker.property';\r\nimport { XIsEmpty, XIsDate, XIsNumber, XCorner, XClearClass, XIsString } from '@ng-nest/ui/core';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { DatePipe } from '@angular/common';\r\nimport { Overlay, OverlayConfig, FlexibleConnectedPositionStrategy, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\n\r\n@Component({\r\n selector: `${XTimePickerPrefix}`,\r\n templateUrl: './time-picker.component.html',\r\n styleUrls: ['./time-picker.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XTimePickerComponent), DatePipe]\r\n})\r\nexport class XTimePickerComponent extends XTimePickerProperty implements OnInit {\r\n @ViewChild('datePicker', { static: true }) datePicker!: ElementRef;\r\n @ViewChild('inputCom', { static: true }) inputCom!: XInputComponent;\r\n\r\n override writeValue(value: any) {\r\n if (XIsDate(value)) {\r\n this.value = value.getTime();\r\n this.valueType = 'date';\r\n } else if (XIsNumber(value)) {\r\n this.value = value;\r\n this.valueType = 'number';\r\n } else if (XIsString(value)) {\r\n this.value = new Date(value).getTime();\r\n this.valueType = 'string';\r\n } else if (XIsEmpty(value)) {\r\n this.value = '';\r\n }\r\n this.setDisplayValue(this.value);\r\n this.valueChange.next(this.value);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n override readonly: boolean = true;\r\n clearable: boolean = false;\r\n enter: boolean = false;\r\n animating = false;\r\n displayValue: any = '';\r\n portal!: XPortalOverlayRef<XTimePickerPortalComponent>;\r\n icon: string = 'fto-clock';\r\n box!: DOMRect;\r\n protalHeight!: number;\r\n maxNodes: number = 8;\r\n protalTobottom: boolean = true;\r\n valueChange: Subject<any> = new Subject();\r\n dataChange: Subject<any> = new Subject();\r\n positionChange: Subject<any> = new Subject();\r\n closeSubject: Subject<void> = new Subject();\r\n valueType: 'date' | 'number' | 'string' = 'date';\r\n private _unSubject = new Subject<void>();\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n private cdr: ChangeDetectorRef,\r\n private portalService: XPortalService,\r\n private viewContainerRef: ViewContainerRef,\r\n private datePipe: DatePipe,\r\n private overlay: Overlay\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setFlex(this.datePicker.nativeElement, this.renderer, this.justify, this.align, this.direction);\r\n this.setFormat();\r\n this.setClassMap();\r\n this.setSubject();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setPortal();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setClassMap() {\r\n XClearClass(this.labelMap);\r\n this.labelMap[`x-text-align-${this.labelAlign}`] = this.labelAlign ? true : false;\r\n }\r\n\r\n setFormat() {\r\n if (this.format === 'HH:mm:ss') {\r\n if (this.type === 'hour') {\r\n this.format = 'HH';\r\n } else if (this.type === 'minute') {\r\n this.format = 'HH:mm';\r\n }\r\n }\r\n }\r\n\r\n setSubject() {\r\n this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n }\r\n\r\n menter() {\r\n if (this.disabled) return;\r\n this.enter = true;\r\n if (!XIsEmpty(this.value)) {\r\n this.icon = '';\r\n this.clearable = true;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n mleave() {\r\n if (this.disabled) return;\r\n this.enter = false;\r\n if (this.clearable) {\r\n this.icon = 'fto-clock';\r\n this.clearable = false;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n clearEmit() {\r\n this.value = '';\r\n this.displayValue = '';\r\n this.mleave();\r\n this.valueChange.next(this.value);\r\n if (this.onChange) this.onChange(this.value);\r\n }\r\n\r\n portalAttached() {\r\n return this.portal?.overlayRef?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (this.portalAttached()) {\r\n this.portal?.overlayRef?.detach();\r\n this.active = false;\r\n this.cdr.detectChanges();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n destroyPortal() {\r\n this.portal?.overlayRef?.dispose();\r\n }\r\n\r\n showPortal() {\r\n if (this.disabled || this.animating) return;\r\n this.active = true;\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n this.portal = this.portalService.attach({\r\n content: XTimePickerPortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n this.portal.overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(takeUntil(this._unSubject))\r\n .subscribe(() => {\r\n this.closeSubject.next();\r\n });\r\n this.setInstance();\r\n }\r\n\r\n setPosition(config: OverlayConfig) {\r\n let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n position.positionChanges.pipe(takeUntil(this._unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n const place = XPortalConnectedPosition.get(pos.connectionPair) as XCorner;\r\n place !== this.placement && this.positionChange.next(place);\r\n });\r\n }\r\n\r\n setInstance() {\r\n let componentRef = this.portal?.componentRef;\r\n if (!componentRef) return;\r\n Object.assign(componentRef.instance, {\r\n type: this.type,\r\n value: this.value,\r\n placement: this.placement,\r\n valueChange: this.valueChange,\r\n positionChange: this.positionChange,\r\n inputCom: this.inputCom,\r\n closePortal: () => this.closeSubject.next(),\r\n destroyPortal: () => this.destroyPortal(),\r\n nodeEmit: (node: Date) => this.onNodeClick(node),\r\n animating: (ing: boolean) => (this.animating = ing)\r\n });\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n onNodeClick(date: Date) {\r\n this.value = this.setValue(date);\r\n this.setDisplayValue(date);\r\n this.cdr.detectChanges();\r\n if (this.onChange) this.onChange(this.value);\r\n this.nodeEmit.emit(this.value);\r\n }\r\n\r\n setValue(value: Date) {\r\n return ['date', 'string'].includes(this.valueType) ? new Date(value) : value.getTime();\r\n }\r\n\r\n setDisplayValue(date: Date | number) {\r\n this.displayValue = this.datePipe.transform(date, this.format);\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.inputCom.inputRef,\r\n placement: [this.placement as XCorner, 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\r\n transformOriginOn: 'x-time-picker-portal'\r\n });\r\n }\r\n\r\n setPortal() {\r\n if (this.portalAttached()) {\r\n this.portal.overlayRef?.updatePositionStrategy(this.setPlacement());\r\n }\r\n }\r\n\r\n formControlChanges() {\r\n this.ngOnInit();\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<div #datePicker class=\"x-time-picker\">\r\n <div class=\"x-time-picker-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label\"\r\n [labelWidth]=\"labelWidth\"\r\n [labelAlign]=\"labelAlign\"\r\n [justify]=\"justify\"\r\n [align]=\"align\"\r\n [direction]=\"direction\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [icon]=\"icon\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [clearable]=\"clearable\"\r\n [(ngModel)]=\"displayValue\"\r\n [valueTpl]=\"valueTpl\"\r\n [valueTplContext]=\"valueTplContext\"\r\n [size]=\"size\"\r\n [bordered]=\"bordered\"\r\n [before]=\"before\"\r\n [after]=\"after\"\r\n [pattern]=\"pattern\"\r\n [message]=\"message\"\r\n [pointer]=\"true\"\r\n [(active)]=\"active\"\r\n (clearEmit)=\"clearEmit()\"\r\n (xClick)=\"showPortal()\"\r\n (xMouseenter)=\"menter()\"\r\n (xMouseleave)=\"mleave()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XInputModule } from '@ng-nest/ui/input';\r\nimport { XPortalModule } from '@ng-nest/ui/portal';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XButtonModule } from '@ng-nest/ui/button';\r\nimport { XListModule } from '@ng-nest/ui/list';\r\nimport { XBaseFormModule } from '@ng-nest/ui/base-form';\r\nimport { XTimePickerComponent } from './time-picker.component';\r\nimport { XTimePickerPortalComponent } from './time-picker-portal.component';\r\nimport { XTimePickerProperty } from './time-picker.property';\r\nimport { XTimePickerFrameComponent } from './time-picker-frame.component';\r\n\r\n@NgModule({\r\n declarations: [XTimePickerComponent, XTimePickerPortalComponent, XTimePickerFrameComponent, XTimePickerProperty],\r\n exports: [XTimePickerComponent, XTimePickerPortalComponent, XTimePickerFrameComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n XPortalModule,\r\n XInputModule,\r\n XListModule,\r\n XButtonModule,\r\n XIconModule,\r\n XBaseFormModule\r\n ]\r\n})\r\nexport class XTimePickerModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}