@ai-table/grid 0.0.73 → 0.1.0

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 (232) hide show
  1. package/angular-konva/components/container.component.d.ts.map +1 -1
  2. package/angular-konva/components/shape.component.d.ts.map +1 -1
  3. package/angular-konva/components/stage.component.d.ts.map +1 -1
  4. package/components/cell-editors/abstract-cell-editor.component.d.ts.map +1 -1
  5. package/components/cell-editors/date/date-editor.component.d.ts.map +1 -1
  6. package/components/cell-editors/link/edit-link/edit-link.component.d.ts.map +1 -1
  7. package/components/cell-editors/link/link-editor.component.d.ts.map +1 -1
  8. package/components/cell-editors/number/number-editor.component.d.ts.map +1 -1
  9. package/components/cell-editors/select/select-editor.component.d.ts.map +1 -1
  10. package/components/cell-editors/text/text-editor.component.d.ts.map +1 -1
  11. package/components/cell-views/select/option.component.d.ts.map +1 -1
  12. package/components/context-menu/context-menu.component.d.ts.map +1 -1
  13. package/components/drag/drag.component.d.ts.map +1 -1
  14. package/components/field-menu/field-menu.component.d.ts.map +1 -1
  15. package/components/field-setting/field-setting.component.d.ts.map +1 -1
  16. package/core/context.d.ts +2 -0
  17. package/core/context.d.ts.map +1 -1
  18. package/core/types/ai-table.d.ts.map +1 -1
  19. package/core/utils/field.d.ts.map +1 -1
  20. package/core/utils/queries.d.ts.map +1 -1
  21. package/core/utils/short-id.d.ts.map +1 -1
  22. package/dom-grid.component.d.ts.map +1 -1
  23. package/fesm2022/ai-table-grid.mjs +322 -310
  24. package/fesm2022/ai-table-grid.mjs.map +1 -1
  25. package/grid-base.component.d.ts +3 -1
  26. package/grid-base.component.d.ts.map +1 -1
  27. package/grid.component.d.ts +1 -1
  28. package/grid.component.d.ts.map +1 -1
  29. package/package.json +3 -5
  30. package/pipes/grid.pipe.d.ts.map +1 -1
  31. package/renderer/components/action-icon.component.d.ts.map +1 -1
  32. package/renderer/components/add-field-column.component.d.ts.map +1 -1
  33. package/renderer/components/cells/attachment.component.d.ts.map +1 -1
  34. package/renderer/components/cells/link.component.d.ts.map +1 -1
  35. package/renderer/components/cells/progress.component.d.ts.map +1 -1
  36. package/renderer/components/cells/rate.component.d.ts.map +1 -1
  37. package/renderer/components/cells/rich-text.component.d.ts.map +1 -1
  38. package/renderer/components/cells.component.d.ts.map +1 -1
  39. package/renderer/components/field-head.component.d.ts +2 -2
  40. package/renderer/components/field-head.component.d.ts.map +1 -1
  41. package/renderer/components/field-icon.component.d.ts.map +1 -1
  42. package/renderer/components/frozen-cells.component.d.ts.map +1 -1
  43. package/renderer/components/frozen-heads.component.d.ts +1 -1
  44. package/renderer/components/frozen-heads.component.d.ts.map +1 -1
  45. package/renderer/components/frozen-placeholder-cells.component.d.ts.map +1 -1
  46. package/renderer/components/heads.component.d.ts +1 -1
  47. package/renderer/components/heads.component.d.ts.map +1 -1
  48. package/renderer/components/hover-cell.component.d.ts.map +1 -1
  49. package/renderer/components/hover-row-heads.component.d.ts.map +1 -1
  50. package/renderer/components/icon.component.d.ts.map +1 -1
  51. package/renderer/components/other-rows.component.d.ts.map +1 -1
  52. package/renderer/components/placeholder-cells.component.d.ts.map +1 -1
  53. package/renderer/components/text.component.d.ts.map +1 -1
  54. package/renderer/creations/create-active-cell-border.d.ts.map +1 -1
  55. package/renderer/creations/create-cells.d.ts.map +1 -1
  56. package/renderer/creations/create-heads.d.ts.map +1 -1
  57. package/renderer/drawers/add-row-layout-drawer.d.ts +1 -1
  58. package/renderer/drawers/add-row-layout-drawer.d.ts.map +1 -1
  59. package/renderer/drawers/cell-drawer.d.ts.map +1 -1
  60. package/renderer/drawers/drawer.d.ts +1 -1
  61. package/renderer/renderer.component.d.ts +5 -4
  62. package/renderer/renderer.component.d.ts.map +1 -1
  63. package/types/cell.d.ts +2 -0
  64. package/types/cell.d.ts.map +1 -1
  65. package/types/component-config.d.ts +2 -0
  66. package/types/component-config.d.ts.map +1 -1
  67. package/types/grid.d.ts +4 -0
  68. package/types/grid.d.ts.map +1 -1
  69. package/types/row.d.ts +1 -0
  70. package/types/row.d.ts.map +1 -1
  71. package/utils/build.d.ts.map +1 -1
  72. package/utils/clipboard/clipboard.d.ts.map +1 -1
  73. package/utils/clipboard/copy.d.ts.map +1 -1
  74. package/utils/clipboard/paste.d.ts +5 -1
  75. package/utils/clipboard/paste.d.ts.map +1 -1
  76. package/utils/common.d.ts.map +1 -1
  77. package/utils/field/model/date.d.ts.map +1 -1
  78. package/utils/field/model/link.d.ts.map +1 -1
  79. package/utils/field/model/progress.d.ts.map +1 -1
  80. package/utils/field/model/text.d.ts.map +1 -1
  81. package/utils/get-text-width.d.ts.map +1 -1
  82. package/utils/i18n.d.ts +2 -0
  83. package/utils/i18n.d.ts.map +1 -1
  84. package/utils/match-keywords.d.ts.map +1 -1
  85. package/utils/position.d.ts.map +1 -1
  86. package/utils/style.d.ts.map +1 -1
  87. package/utils/text-measure.d.ts.map +1 -1
  88. package/utils/visible-range.d.ts.map +1 -1
  89. package/esm2022/ai-table-grid.mjs +0 -5
  90. package/esm2022/angular-konva/components/container.component.mjs +0 -29
  91. package/esm2022/angular-konva/components/container.token.mjs +0 -3
  92. package/esm2022/angular-konva/components/index.mjs +0 -4
  93. package/esm2022/angular-konva/components/shape.component.mjs +0 -142
  94. package/esm2022/angular-konva/components/stage.component.mjs +0 -123
  95. package/esm2022/angular-konva/index.mjs +0 -5
  96. package/esm2022/angular-konva/interfaces/component.mjs +0 -4
  97. package/esm2022/angular-konva/interfaces/config.mjs +0 -2
  98. package/esm2022/angular-konva/interfaces/event-object.mjs +0 -2
  99. package/esm2022/angular-konva/interfaces/index.mjs +0 -5
  100. package/esm2022/angular-konva/interfaces/shape.mjs +0 -42
  101. package/esm2022/angular-konva/utils/apply-node-props.mjs +0 -67
  102. package/esm2022/angular-konva/utils/common.mjs +0 -48
  103. package/esm2022/angular-konva/utils/index.mjs +0 -5
  104. package/esm2022/angular-konva/utils/types.mjs +0 -2
  105. package/esm2022/angular-konva/utils/update-picture.mjs +0 -7
  106. package/esm2022/components/cell-editors/abstract-cell-editor.component.mjs +0 -56
  107. package/esm2022/components/cell-editors/date/date-editor.component.mjs +0 -87
  108. package/esm2022/components/cell-editors/link/edit-link/edit-link.component.mjs +0 -81
  109. package/esm2022/components/cell-editors/link/link-editor.component.mjs +0 -122
  110. package/esm2022/components/cell-editors/number/number-editor.component.mjs +0 -41
  111. package/esm2022/components/cell-editors/select/select-editor.component.mjs +0 -74
  112. package/esm2022/components/cell-editors/text/text-editor.component.mjs +0 -76
  113. package/esm2022/components/cell-views/select/option.component.mjs +0 -28
  114. package/esm2022/components/context-menu/context-menu.component.mjs +0 -42
  115. package/esm2022/components/drag/drag.component.mjs +0 -300
  116. package/esm2022/components/field-menu/field-menu.component.mjs +0 -47
  117. package/esm2022/components/field-setting/field-setting.component.mjs +0 -142
  118. package/esm2022/components/index.mjs +0 -10
  119. package/esm2022/constants/colors.mjs +0 -19
  120. package/esm2022/constants/editor.mjs +0 -11
  121. package/esm2022/constants/file-icon.mjs +0 -342
  122. package/esm2022/constants/grid.mjs +0 -35
  123. package/esm2022/constants/icon.mjs +0 -30
  124. package/esm2022/constants/index.mjs +0 -7
  125. package/esm2022/constants/table.mjs +0 -78
  126. package/esm2022/constants/text.mjs +0 -23
  127. package/esm2022/core/constants/field.mjs +0 -107
  128. package/esm2022/core/context.mjs +0 -29
  129. package/esm2022/core/coordinate.mjs +0 -222
  130. package/esm2022/core/index.mjs +0 -6
  131. package/esm2022/core/types/ai-table.mjs +0 -57
  132. package/esm2022/core/types/core.mjs +0 -2
  133. package/esm2022/core/types/index.mjs +0 -3
  134. package/esm2022/core/utils/common.mjs +0 -45
  135. package/esm2022/core/utils/field.mjs +0 -64
  136. package/esm2022/core/utils/id-creator.mjs +0 -21
  137. package/esm2022/core/utils/index.mjs +0 -5
  138. package/esm2022/core/utils/queries.mjs +0 -80
  139. package/esm2022/core/utils/short-id.mjs +0 -53
  140. package/esm2022/dom-grid.component.mjs +0 -80
  141. package/esm2022/grid-base.component.mjs +0 -145
  142. package/esm2022/grid.component.mjs +0 -649
  143. package/esm2022/index.mjs +0 -2
  144. package/esm2022/pipes/grid.pipe.mjs +0 -110
  145. package/esm2022/pipes/index.mjs +0 -2
  146. package/esm2022/public-api.mjs +0 -12
  147. package/esm2022/renderer/components/action-icon.component.mjs +0 -117
  148. package/esm2022/renderer/components/add-field-column.component.mjs +0 -88
  149. package/esm2022/renderer/components/cells/attachment.component.mjs +0 -107
  150. package/esm2022/renderer/components/cells/cells.mjs +0 -6
  151. package/esm2022/renderer/components/cells/index.mjs +0 -7
  152. package/esm2022/renderer/components/cells/link.component.mjs +0 -89
  153. package/esm2022/renderer/components/cells/progress.component.mjs +0 -268
  154. package/esm2022/renderer/components/cells/rate.component.mjs +0 -153
  155. package/esm2022/renderer/components/cells/rich-text.component.mjs +0 -95
  156. package/esm2022/renderer/components/cells.component.mjs +0 -35
  157. package/esm2022/renderer/components/field-head.component.mjs +0 -146
  158. package/esm2022/renderer/components/field-icon.component.mjs +0 -72
  159. package/esm2022/renderer/components/frozen-cells.component.mjs +0 -36
  160. package/esm2022/renderer/components/frozen-heads.component.mjs +0 -214
  161. package/esm2022/renderer/components/frozen-placeholder-cells.component.mjs +0 -38
  162. package/esm2022/renderer/components/heads.component.mjs +0 -38
  163. package/esm2022/renderer/components/hover-cell.component.mjs +0 -104
  164. package/esm2022/renderer/components/hover-row-heads.component.mjs +0 -132
  165. package/esm2022/renderer/components/icon.component.mjs +0 -84
  166. package/esm2022/renderer/components/index.mjs +0 -15
  167. package/esm2022/renderer/components/other-rows.component.mjs +0 -68
  168. package/esm2022/renderer/components/placeholder-cells.component.mjs +0 -33
  169. package/esm2022/renderer/components/text.component.mjs +0 -67
  170. package/esm2022/renderer/creations/create-active-cell-border.mjs +0 -70
  171. package/esm2022/renderer/creations/create-cells.mjs +0 -190
  172. package/esm2022/renderer/creations/create-heads.mjs +0 -51
  173. package/esm2022/renderer/drawers/add-row-layout-drawer.mjs +0 -98
  174. package/esm2022/renderer/drawers/cell-drawer.mjs +0 -673
  175. package/esm2022/renderer/drawers/drawer.mjs +0 -947
  176. package/esm2022/renderer/drawers/layout-drawer.mjs +0 -64
  177. package/esm2022/renderer/drawers/record-row-layout-drawer.mjs +0 -131
  178. package/esm2022/renderer/index.mjs +0 -4
  179. package/esm2022/renderer/interfaces/hover-cell.mjs +0 -4
  180. package/esm2022/renderer/interfaces/index.mjs +0 -2
  181. package/esm2022/renderer/renderer.component.mjs +0 -197
  182. package/esm2022/services/event.service.mjs +0 -241
  183. package/esm2022/services/field.service.mjs +0 -56
  184. package/esm2022/services/index.mjs +0 -4
  185. package/esm2022/services/selection.service.mjs +0 -151
  186. package/esm2022/types/avatar.mjs +0 -27
  187. package/esm2022/types/canvas.mjs +0 -2
  188. package/esm2022/types/cell.mjs +0 -2
  189. package/esm2022/types/clipboard.mjs +0 -2
  190. package/esm2022/types/component-config.mjs +0 -7
  191. package/esm2022/types/field.mjs +0 -2
  192. package/esm2022/types/grid.mjs +0 -17
  193. package/esm2022/types/index.mjs +0 -10
  194. package/esm2022/types/layout.mjs +0 -2
  195. package/esm2022/types/row.mjs +0 -6
  196. package/esm2022/utils/build.mjs +0 -39
  197. package/esm2022/utils/cell.mjs +0 -80
  198. package/esm2022/utils/clear-cells.mjs +0 -23
  199. package/esm2022/utils/clipboard/clipboard.mjs +0 -88
  200. package/esm2022/utils/clipboard/copy.mjs +0 -99
  201. package/esm2022/utils/clipboard/extract.mjs +0 -38
  202. package/esm2022/utils/clipboard/index.mjs +0 -5
  203. package/esm2022/utils/clipboard/paste.mjs +0 -188
  204. package/esm2022/utils/common.mjs +0 -50
  205. package/esm2022/utils/field/field-operable.mjs +0 -2
  206. package/esm2022/utils/field/field.mjs +0 -20
  207. package/esm2022/utils/field/index.mjs +0 -4
  208. package/esm2022/utils/field/model/attachment.mjs +0 -56
  209. package/esm2022/utils/field/model/date.mjs +0 -141
  210. package/esm2022/utils/field/model/index.mjs +0 -12
  211. package/esm2022/utils/field/model/link.mjs +0 -56
  212. package/esm2022/utils/field/model/member.mjs +0 -81
  213. package/esm2022/utils/field/model/number.mjs +0 -59
  214. package/esm2022/utils/field/model/progress.mjs +0 -69
  215. package/esm2022/utils/field/model/rate.mjs +0 -58
  216. package/esm2022/utils/field/model/rich-text.mjs +0 -39
  217. package/esm2022/utils/field/model/select.mjs +0 -131
  218. package/esm2022/utils/field/model/text.mjs +0 -32
  219. package/esm2022/utils/field/operate.mjs +0 -73
  220. package/esm2022/utils/file.mjs +0 -116
  221. package/esm2022/utils/get-placeholder-cells.mjs +0 -66
  222. package/esm2022/utils/get-text-width.mjs +0 -30
  223. package/esm2022/utils/hover-cell.mjs +0 -25
  224. package/esm2022/utils/i18n.mjs +0 -87
  225. package/esm2022/utils/image-cache.mjs +0 -57
  226. package/esm2022/utils/index.mjs +0 -19
  227. package/esm2022/utils/match-keywords.mjs +0 -15
  228. package/esm2022/utils/os.mjs +0 -16
  229. package/esm2022/utils/position.mjs +0 -48
  230. package/esm2022/utils/style.mjs +0 -37
  231. package/esm2022/utils/text-measure.mjs +0 -122
  232. package/esm2022/utils/visible-range.mjs +0 -42
@@ -1,64 +0,0 @@
1
- import { AI_TABLE_FIELD_ADD_BUTTON_WIDTH, AI_TABLE_OFFSET, AI_TABLE_ROW_HEAD_WIDTH } from '../../constants/table';
2
- import { Drawer } from './drawer';
3
- /**
4
- * 用于处理表格行或单元格的布局和绘制。
5
- * 它提供了基本的布局信息(如位置、大小等),并定义了常用的绘图方法(如渲染缩进区域、添加新字段的空白区域等)。
6
- * 该类继承自 Drawer,并被其他更具体的布局类(如 RecordRowLayout)扩展和使用
7
- */
8
- export class Layout extends Drawer {
9
- constructor() {
10
- super(...arguments);
11
- // 定义当前单元格或行的位置
12
- this.x = 0;
13
- this.y = 0;
14
- // 行高
15
- this.rowHeight = 0;
16
- // 列宽
17
- this.columnWidth = 0;
18
- // 行索引
19
- this.rowIndex = 0;
20
- // 列索引
21
- this.columnIndex = 0;
22
- // 列数
23
- this.columnCount = 0;
24
- this.containerWidth = 0;
25
- this.rowHeadWidth = AI_TABLE_ROW_HEAD_WIDTH;
26
- this.hiddenIndexColumn = false;
27
- }
28
- // 用于初始化或重置布局的基本属性。这个方法通常在每次渲染新的一行或单元格时调用,确保布局信息是最新的
29
- init({ x, y, rowIndex, columnIndex, rowHeight, columnWidth, columnCount, containerWidth, rowHeadWidth, hiddenIndexColumn }) {
30
- this.x = x;
31
- this.y = y;
32
- this.rowIndex = rowIndex;
33
- this.columnIndex = columnIndex;
34
- this.rowHeight = rowHeight;
35
- this.columnWidth = columnWidth;
36
- this.columnCount = columnCount;
37
- this.containerWidth = containerWidth;
38
- this.rowHeadWidth = rowHeadWidth;
39
- this.hiddenIndexColumn = hiddenIndexColumn;
40
- }
41
- // 当前单元格是否是行的第一列
42
- get isFirst() {
43
- return this.columnIndex === 0;
44
- }
45
- // 当前单元格是否是行的最后一列
46
- get isLast() {
47
- return this.columnIndex === this.columnCount - 1;
48
- }
49
- renderAddFieldBlank({ isHoverRow, isCheckedRow }) {
50
- const rowHeight = this.rowHeight;
51
- const fill = isCheckedRow ? this.colors.itemActiveBgColor : isHoverRow ? this.colors.gray80 : this.colors.transparent;
52
- const addFieldBlankX = this.x + this.columnWidth + AI_TABLE_OFFSET;
53
- this.rect({
54
- x: addFieldBlankX,
55
- y: this.y + AI_TABLE_OFFSET,
56
- width: this.containerWidth - addFieldBlankX < AI_TABLE_FIELD_ADD_BUTTON_WIDTH
57
- ? AI_TABLE_FIELD_ADD_BUTTON_WIDTH
58
- : this.containerWidth - addFieldBlankX,
59
- height: rowHeight,
60
- fill
61
- });
62
- }
63
- }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWRyYXdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3JlbmRlcmVyL2RyYXdlcnMvbGF5b3V0LWRyYXdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQzs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLE1BQU8sU0FBUSxNQUFNO0lBQWxDOztRQUNJLGVBQWU7UUFDTCxNQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ04sTUFBQyxHQUFHLENBQUMsQ0FBQztRQUNoQixLQUFLO1FBQ0ssY0FBUyxHQUFHLENBQUMsQ0FBQztRQUN4QixLQUFLO1FBQ0ssZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDMUIsTUFBTTtRQUNJLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDdkIsTUFBTTtRQUNJLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLEtBQUs7UUFDSyxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVoQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUVuQixpQkFBWSxHQUFHLHVCQUF1QixDQUFDO1FBRXZDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztJQW9EeEMsQ0FBQztJQWxERyxvREFBb0Q7SUFDcEQsSUFBSSxDQUFDLEVBQ0QsQ0FBQyxFQUNELENBQUMsRUFDRCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGNBQWMsRUFDZCxZQUFZLEVBQ1osaUJBQWlCLEVBQ0w7UUFDWixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0lBQy9DLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsSUFBYyxPQUFPO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixJQUFjLE1BQU07UUFDaEIsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQW9EO1FBQ3hHLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUN0SCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDO1FBQ25FLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDTixDQUFDLEVBQUUsY0FBYztZQUNqQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxlQUFlO1lBQzNCLEtBQUssRUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsR0FBRywrQkFBK0I7Z0JBQ2xFLENBQUMsQ0FBQywrQkFBK0I7Z0JBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWM7WUFDOUMsTUFBTSxFQUFFLFNBQVM7WUFDakIsSUFBSTtTQUNQLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT05fV0lEVEgsIEFJX1RBQkxFX09GRlNFVCwgQUlfVEFCTEVfUk9XX0hFQURfV0lEVEggfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFibGUnO1xuaW1wb3J0IHsgQUlUYWJsZUNlbGwsIEFJVGFibGVMYXlvdXQgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBEcmF3ZXIgfSBmcm9tICcuL2RyYXdlcic7XG5cbi8qKlxuICog55So5LqO5aSE55CG6KGo5qC86KGM5oiW5Y2V5YWD5qC855qE5biD5bGA5ZKM57uY5Yi244CCXG4gKiDlroPmj5Dkvpvkuobln7rmnKznmoTluIPlsYDkv6Hmga/vvIjlpoLkvY3nva7jgIHlpKflsI/nrYnvvInvvIzlubblrprkuYnkuobluLjnlKjnmoTnu5jlm77mlrnms5XvvIjlpoLmuLLmn5PnvKnov5vljLrln5/jgIHmt7vliqDmlrDlrZfmrrXnmoTnqbrnmb3ljLrln5/nrYnvvInjgIJcbiAqIOivpeexu+e7p+aJv+iHqiBEcmF3ZXLvvIzlubbooqvlhbbku5bmm7TlhbfkvZPnmoTluIPlsYDnsbvvvIjlpoIgUmVjb3JkUm93TGF5b3V077yJ5omp5bGV5ZKM5L2/55SoXG4gKi9cbmV4cG9ydCBjbGFzcyBMYXlvdXQgZXh0ZW5kcyBEcmF3ZXIge1xuICAgIC8vIOWumuS5ieW9k+WJjeWNleWFg+agvOaIluihjOeahOS9jee9rlxuICAgIHByb3RlY3RlZCB4ID0gMDtcbiAgICBwcm90ZWN0ZWQgeSA9IDA7XG4gICAgLy8g6KGM6auYXG4gICAgcHJvdGVjdGVkIHJvd0hlaWdodCA9IDA7XG4gICAgLy8g5YiX5a69XG4gICAgcHJvdGVjdGVkIGNvbHVtbldpZHRoID0gMDtcbiAgICAvLyDooYzntKLlvJVcbiAgICBwcm90ZWN0ZWQgcm93SW5kZXggPSAwO1xuICAgIC8vIOWIl+e0ouW8lVxuICAgIHByb3RlY3RlZCBjb2x1bW5JbmRleCA9IDA7XG4gICAgLy8g5YiX5pWwXG4gICAgcHJvdGVjdGVkIGNvbHVtbkNvdW50ID0gMDtcblxuICAgIHByb3RlY3RlZCBjb250YWluZXJXaWR0aCA9IDA7XG5cbiAgICBwcm90ZWN0ZWQgcm93SGVhZFdpZHRoID0gQUlfVEFCTEVfUk9XX0hFQURfV0lEVEg7XG5cbiAgICBwcm90ZWN0ZWQgaGlkZGVuSW5kZXhDb2x1bW4gPSBmYWxzZTtcblxuICAgIC8vIOeUqOS6juWIneWni+WMluaIlumHjee9ruW4g+WxgOeahOWfuuacrOWxnuaAp+OAgui/meS4quaWueazlemAmuW4uOWcqOavj+asoea4suafk+aWsOeahOS4gOihjOaIluWNleWFg+agvOaXtuiwg+eUqO+8jOehruS/neW4g+WxgOS/oeaBr+aYr+acgOaWsOeahFxuICAgIGluaXQoe1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICByb3dJbmRleCxcbiAgICAgICAgY29sdW1uSW5kZXgsXG4gICAgICAgIHJvd0hlaWdodCxcbiAgICAgICAgY29sdW1uV2lkdGgsXG4gICAgICAgIGNvbHVtbkNvdW50LFxuICAgICAgICBjb250YWluZXJXaWR0aCxcbiAgICAgICAgcm93SGVhZFdpZHRoLFxuICAgICAgICBoaWRkZW5JbmRleENvbHVtblxuICAgIH06IEFJVGFibGVMYXlvdXQpIHtcbiAgICAgICAgdGhpcy54ID0geDtcbiAgICAgICAgdGhpcy55ID0geTtcbiAgICAgICAgdGhpcy5yb3dJbmRleCA9IHJvd0luZGV4O1xuICAgICAgICB0aGlzLmNvbHVtbkluZGV4ID0gY29sdW1uSW5kZXg7XG4gICAgICAgIHRoaXMucm93SGVpZ2h0ID0gcm93SGVpZ2h0O1xuICAgICAgICB0aGlzLmNvbHVtbldpZHRoID0gY29sdW1uV2lkdGg7XG4gICAgICAgIHRoaXMuY29sdW1uQ291bnQgPSBjb2x1bW5Db3VudDtcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IGNvbnRhaW5lcldpZHRoO1xuICAgICAgICB0aGlzLnJvd0hlYWRXaWR0aCA9IHJvd0hlYWRXaWR0aDtcbiAgICAgICAgdGhpcy5oaWRkZW5JbmRleENvbHVtbiA9IGhpZGRlbkluZGV4Q29sdW1uO1xuICAgIH1cblxuICAgIC8vIOW9k+WJjeWNleWFg+agvOaYr+WQpuaYr+ihjOeahOesrOS4gOWIl1xuICAgIHByb3RlY3RlZCBnZXQgaXNGaXJzdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uSW5kZXggPT09IDA7XG4gICAgfVxuXG4gICAgLy8g5b2T5YmN5Y2V5YWD5qC85piv5ZCm5piv6KGM55qE5pyA5ZCO5LiA5YiXXG4gICAgcHJvdGVjdGVkIGdldCBpc0xhc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbkluZGV4ID09PSB0aGlzLmNvbHVtbkNvdW50IC0gMTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVuZGVyQWRkRmllbGRCbGFuayh7IGlzSG92ZXJSb3csIGlzQ2hlY2tlZFJvdyB9OiBQaWNrPEFJVGFibGVDZWxsLCAnaXNIb3ZlclJvdycgfCAnaXNDaGVja2VkUm93Jz4pIHtcbiAgICAgICAgY29uc3Qgcm93SGVpZ2h0ID0gdGhpcy5yb3dIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGZpbGwgPSBpc0NoZWNrZWRSb3cgPyB0aGlzLmNvbG9ycy5pdGVtQWN0aXZlQmdDb2xvciA6IGlzSG92ZXJSb3cgPyB0aGlzLmNvbG9ycy5ncmF5ODAgOiB0aGlzLmNvbG9ycy50cmFuc3BhcmVudDtcbiAgICAgICAgY29uc3QgYWRkRmllbGRCbGFua1ggPSB0aGlzLnggKyB0aGlzLmNvbHVtbldpZHRoICsgQUlfVEFCTEVfT0ZGU0VUO1xuICAgICAgICB0aGlzLnJlY3Qoe1xuICAgICAgICAgICAgeDogYWRkRmllbGRCbGFua1gsXG4gICAgICAgICAgICB5OiB0aGlzLnkgKyBBSV9UQUJMRV9PRkZTRVQsXG4gICAgICAgICAgICB3aWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoIC0gYWRkRmllbGRCbGFua1ggPCBBSV9UQUJMRV9GSUVMRF9BRERfQlVUVE9OX1dJRFRIXG4gICAgICAgICAgICAgICAgICAgID8gQUlfVEFCTEVfRklFTERfQUREX0JVVFRPTl9XSURUSFxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuY29udGFpbmVyV2lkdGggLSBhZGRGaWVsZEJsYW5rWCxcbiAgICAgICAgICAgIGhlaWdodDogcm93SGVpZ2h0LFxuICAgICAgICAgICAgZmlsbFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -1,131 +0,0 @@
1
- import { AI_TABLE_FIELD_ADD_BUTTON_WIDTH, AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_OFFSET, AI_TABLE_ROW_DRAG_ICON_WIDTH, DEFAULT_FONT_SIZE } from '../../constants';
2
- import { DEFAULT_TEXT_ALIGN_CENTER, DEFAULT_TEXT_VERTICAL_ALIGN_MIDDLE } from '../../constants/text';
3
- import { AITable } from '../../core';
4
- import { Layout } from './layout-drawer';
5
- /**
6
- * 绘制行的布局,通过直接操作 Canvas 提供高效的渲染方法。
7
- * 它继承自 Layout 类,包含了用于绘制行中单元格(尤其是首列和尾列)的几个方法
8
- */
9
- export class RecordRowLayout extends Layout {
10
- renderAddFieldBlank({ isHoverRow, isCheckedRow }) {
11
- super.renderAddFieldBlank({ isHoverRow, isCheckedRow });
12
- const rowHeight = this.rowHeight;
13
- const startX = this.x + this.columnWidth;
14
- const lineWidth = this.containerWidth - startX < AI_TABLE_FIELD_ADD_BUTTON_WIDTH ? AI_TABLE_FIELD_ADD_BUTTON_WIDTH : this.containerWidth - startX;
15
- this.line({
16
- x: startX,
17
- y: this.y,
18
- points: [0, rowHeight, lineWidth, rowHeight],
19
- stroke: this.colors.gray200
20
- });
21
- }
22
- // 首列
23
- renderFirstCell({ row, style, isHoverRow, isCheckedRow }) {
24
- if (!this.isFirst)
25
- return;
26
- const { fill } = style;
27
- const y = this.y;
28
- const rowHeight = this.rowHeight;
29
- const columnWidth = this.columnWidth;
30
- const colors = AITable.getColors();
31
- // 编号的上下边框
32
- let fillBg = colors.transparent;
33
- if (isCheckedRow) {
34
- fillBg = colors.itemActiveBgColor;
35
- }
36
- else if (isHoverRow) {
37
- fillBg = colors.gray80;
38
- }
39
- if (!this.hiddenIndexColumn) {
40
- this.customRect({
41
- x: AI_TABLE_OFFSET + AI_TABLE_ROW_DRAG_ICON_WIDTH,
42
- y,
43
- width: this.rowHeadWidth - AI_TABLE_OFFSET - AI_TABLE_ROW_DRAG_ICON_WIDTH,
44
- height: rowHeight,
45
- fill: fillBg,
46
- strokes: {
47
- right: colors.gray200,
48
- bottom: colors.gray200
49
- }
50
- });
51
- if (!isCheckedRow && !isHoverRow) {
52
- // 设置字体样式,居中绘制行号
53
- this.setStyle({ fontSize: DEFAULT_FONT_SIZE });
54
- this.text({
55
- x: (this.rowHeadWidth + AI_TABLE_ROW_DRAG_ICON_WIDTH) / 2,
56
- y: y + AI_TABLE_FIELD_HEAD_HEIGHT / 2,
57
- text: String(row.displayIndex),
58
- textAlign: DEFAULT_TEXT_ALIGN_CENTER,
59
- verticalAlign: DEFAULT_TEXT_VERTICAL_ALIGN_MIDDLE
60
- });
61
- }
62
- // 第一列单元格
63
- this.rect({
64
- x: this.rowHeadWidth,
65
- y,
66
- width: columnWidth + AI_TABLE_OFFSET,
67
- height: rowHeight,
68
- fill: fill,
69
- stroke: colors.gray200
70
- });
71
- }
72
- else {
73
- // 第一列单元格
74
- this.customRect({
75
- x: this.rowHeadWidth,
76
- y,
77
- width: columnWidth + AI_TABLE_OFFSET,
78
- height: rowHeight,
79
- fill: fill,
80
- strokes: {
81
- right: colors.gray200,
82
- bottom: colors.gray200
83
- }
84
- });
85
- }
86
- if (this.isLast) {
87
- this.renderAddFieldBlank({ isHoverRow, isCheckedRow });
88
- }
89
- }
90
- // 尾列
91
- renderLastCell({ style, isHoverRow, isCheckedRow }) {
92
- if (!this.isLast || this.isFirst)
93
- return;
94
- const { fill, stroke } = style;
95
- const colors = AITable.getColors();
96
- // 背景、边框
97
- this.rect({
98
- x: this.x,
99
- y: this.y,
100
- width: this.columnWidth,
101
- height: this.rowHeight,
102
- fill: fill || colors.white,
103
- stroke: stroke || colors.gray200
104
- });
105
- this.renderAddFieldBlank({ isHoverRow, isCheckedRow });
106
- }
107
- // 绘制中间的普通单元格
108
- renderCommonCell({ style }) {
109
- if (this.isFirst || this.isLast)
110
- return;
111
- const { fill, stroke } = style;
112
- const colors = AITable.getColors();
113
- // 背景、边框
114
- this.rect({
115
- x: this.x,
116
- y: this.y,
117
- width: this.columnWidth,
118
- height: this.rowHeight,
119
- fill: fill || colors.white,
120
- stroke: stroke || colors.gray200
121
- });
122
- }
123
- render(config) {
124
- const { row, style, isCheckedRow, isHoverRow } = config;
125
- this.renderFirstCell({ row, style, isCheckedRow, isHoverRow });
126
- this.renderCommonCell({ style });
127
- this.renderLastCell({ style, isCheckedRow, isHoverRow });
128
- }
129
- }
130
- export const recordRowLayout = new RecordRowLayout();
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLXJvdy1sYXlvdXQtZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvZHJhd2Vycy9yZWNvcmQtcm93LWxheW91dC1kcmF3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILCtCQUErQixFQUMvQiwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLDRCQUE0QixFQUM1QixpQkFBaUIsRUFDcEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXJDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxNQUFNO0lBQ3BCLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBb0Q7UUFDakgsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDeEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDekMsTUFBTSxTQUFTLEdBQ1gsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLEdBQUcsK0JBQStCLENBQUMsQ0FBQyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUNwSSxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ04sQ0FBQyxFQUFFLE1BQU07WUFDVCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDVCxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUs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LElBQUksQ0FBQyxDQUFDO1lBQ1QsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ1QsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUztZQUN0QixJQUFJLEVBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLO1lBQzFCLE1BQU0sRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU87U0FDbkMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFtQjtRQUN0QixNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0o7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQUlfVEFCTEVfRklFTERfQUREX0JVVFRPTl9XSURUSCxcbiAgICBBSV9UQUJMRV9GSUVMRF9IRUFEX0hFSUdIVCxcbiAgICBBSV9UQUJMRV9PRkZTRVQsXG4gICAgQUlfVEFCTEVfUk9XX0RSQUdfSUNPTl9XSURUSCxcbiAgICBERUZBVUxUX0ZPTlRfU0laRVxufSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgREVGQVVMVF9URVhUX0FMSUdOX0NFTlRFUiwgREVGQVVMVF9URVhUX1ZFUlRJQ0FMX0FMSUdOX01JRERMRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy90ZXh0JztcbmltcG9ydCB7IEFJVGFibGUgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVDZWxsIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgTGF5b3V0IH0gZnJvbSAnLi9sYXlvdXQtZHJhd2VyJztcblxuLyoqXG4gKiDnu5jliLbooYznmoTluIPlsYDvvIzpgJrov4fnm7TmjqXmk43kvZwgQ2FudmFzIOaPkOS+m+mrmOaViOeahOa4suafk+aWueazleOAglxuICog5a6D57un5om/6IeqIExheW91dCDnsbvvvIzljIXlkKvkuobnlKjkuo7nu5jliLbooYzkuK3ljZXlhYPmoLzvvIjlsKTlhbbmmK/pppbliJflkozlsL7liJfvvInnmoTlh6DkuKrmlrnms5VcbiAqL1xuZXhwb3J0IGNsYXNzIFJlY29yZFJvd0xheW91dCBleHRlbmRzIExheW91dCB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlckFkZEZpZWxkQmxhbmsoeyBpc0hvdmVyUm93LCBpc0NoZWNrZWRSb3cgfTogUGljazxBSVRhYmxlQ2VsbCwgJ2lzSG92ZXJSb3cnIHwgJ2lzQ2hlY2tlZFJvdyc+KTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnJlbmRlckFkZEZpZWxkQmxhbmsoeyBpc0hvdmVyUm93LCBpc0NoZWNrZWRSb3cgfSk7XG4gICAgICAgIGNvbnN0IHJvd0hlaWdodCA9IHRoaXMucm93SGVpZ2h0O1xuICAgICAgICBjb25zdCBzdGFydFggPSB0aGlzLnggKyB0aGlzLmNvbHVtbldpZHRoO1xuICAgICAgICBjb25zdCBsaW5lV2lkdGggPVxuICAgICAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCAtIHN0YXJ0WCA8IEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT05fV0lEVEggPyBBSV9UQUJMRV9GSUVMRF9BRERfQlVUVE9OX1dJRFRIIDogdGhpcy5jb250YWluZXJXaWR0aCAtIHN0YXJ0WDtcbiAgICAgICAgdGhpcy5saW5lKHtcbiAgICAgICAgICAgIHg6IHN0YXJ0WCxcbiAgICAgICAgICAgIHk6IHRoaXMueSxcbiAgICAgICAgICAgIHBvaW50czogWzAsIHJvd0hlaWdodCwgbGluZVdpZHRoLCByb3dIZWlnaHRdLFxuICAgICAgICAgICAgc3Ryb2tlOiB0aGlzLmNvbG9ycy5ncmF5MjAwXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIOmmluWIl1xuICAgIHByaXZhdGUgcmVuZGVyRmlyc3RDZWxsKHsgcm93LCBzdHlsZSwgaXNIb3ZlclJvdywgaXNDaGVja2VkUm93IH06IEFJVGFibGVDZWxsKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0ZpcnN0KSByZXR1cm47XG4gICAgICAgIGNvbnN0IHsgZmlsbCB9ID0gc3R5bGU7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLnk7XG4gICAgICAgIGNvbnN0IHJvd0hlaWdodCA9IHRoaXMucm93SGVpZ2h0O1xuICAgICAgICBjb25zdCBjb2x1bW5XaWR0aCA9IHRoaXMuY29sdW1uV2lkdGg7XG4gICAgICAgIGNvbnN0IGNvbG9ycyA9IEFJVGFibGUuZ2V0Q29sb3JzKCk7XG4gICAgICAgIC8vIOe8luWPt+eahOS4iuS4i+i+ueahhlxuICAgICAgICBsZXQgZmlsbEJnID0gY29sb3JzLnRyYW5zcGFyZW50O1xuICAgICAgICBpZiAoaXNDaGVja2VkUm93KSB7XG4gICAgICAgICAgICBmaWxsQmcgPSBjb2xvcnMuaXRlbUFjdGl2ZUJnQ29sb3I7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNIb3ZlclJvdykge1xuICAgICAgICAgICAgZmlsbEJnID0gY29sb3JzLmdyYXk4MDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5oaWRkZW5JbmRleENvbHVtbikge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21SZWN0KHtcbiAgICAgICAgICAgICAgICB4OiBBSV9UQUJMRV9PRkZTRVQgKyBBSV9UQUJMRV9ST1dfRFJBR19JQ09OX1dJRFRILFxuICAgICAgICAgICAgICAgIHksXG4gICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMucm93SGVhZFdpZHRoIC0gQUlfVEFCTEVfT0ZGU0VUIC0gQUlfVEFCTEVfUk9XX0RSQUdfSUNPTl9XSURUSCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHJvd0hlaWdodCxcbiAgICAgICAgICAgICAgICBmaWxsOiBmaWxsQmcsXG4gICAgICAgICAgICAgICAgc3Ryb2tlczoge1xuICAgICAgICAgICAgICAgICAgICByaWdodDogY29sb3JzLmdyYXkyMDAsXG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTogY29sb3JzLmdyYXkyMDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghaXNDaGVja2VkUm93ICYmICFpc0hvdmVyUm93KSB7XG4gICAgICAgICAgICAgICAgLy8g6K6+572u5a2X5L2T5qC35byP77yM5bGF5Lit57uY5Yi26KGM5Y+3XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdHlsZSh7IGZvbnRTaXplOiBERUZBVUxUX0ZPTlRfU0laRSB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRleHQoe1xuICAgICAgICAgICAgICAgICAgICB4OiAodGhpcy5yb3dIZWFkV2lkdGggKyBBSV9UQUJMRV9ST1dfRFJBR19JQ09OX1dJRFRIKSAvIDIsXG4gICAgICAgICAgICAgICAgICAgIHk6IHkgKyBBSV9UQUJMRV9GSUVMRF9IRUFEX0hFSUdIVCAvIDIsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IFN0cmluZyhyb3cuZGlzcGxheUluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiBERUZBVUxUX1RFWFRfQUxJR05fQ0VOVEVSLFxuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiBERUZBVUxUX1RFWFRfVkVSVElDQUxfQUxJR05fTUlERExFXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDnrKzkuIDliJfljZXlhYPmoLxcbiAgICAgICAgICAgIHRoaXMucmVjdCh7XG4gICAgICAgICAgICAgICAgeDogdGhpcy5yb3dIZWFkV2lkdGgsXG4gICAgICAgICAgICAgICAgeSxcbiAgICAgICAgICAgICAgICB3aWR0aDogY29sdW1uV2lkdGggKyBBSV9UQUJMRV9PRkZTRVQsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiByb3dIZWlnaHQsXG4gICAgICAgICAgICAgICAgZmlsbDogZmlsbCxcbiAgICAgICAgICAgICAgICBzdHJva2U6IGNvbG9ycy5ncmF5MjAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIOesrOS4gOWIl+WNleWFg+agvFxuICAgICAgICAgICAgdGhpcy5jdXN0b21SZWN0KHtcbiAgICAgICAgICAgICAgICB4OiB0aGlzLnJvd0hlYWRXaWR0aCxcbiAgICAgICAgICAgICAgICB5LFxuICAgICAgICAgICAgICAgIHdpZHRoOiBjb2x1bW5XaWR0aCArIEFJX1RBQkxFX09GRlNFVCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHJvd0hlaWdodCxcbiAgICAgICAgICAgICAgICBmaWxsOiBmaWxsLFxuICAgICAgICAgICAgICAgIHN0cm9rZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGNvbG9ycy5ncmF5MjAwLFxuICAgICAgICAgICAgICAgICAgICBib3R0b206IGNvbG9ycy5ncmF5MjAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0xhc3QpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQWRkRmllbGRCbGFuayh7IGlzSG92ZXJSb3csIGlzQ2hlY2tlZFJvdyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIOWwvuWIl1xuICAgIHByaXZhdGUgcmVuZGVyTGFzdENlbGwoeyBzdHlsZSwgaXNIb3ZlclJvdywgaXNDaGVja2VkUm93IH06IFBpY2s8QUlUYWJsZUNlbGwsICdzdHlsZScgfCAnaXNIb3ZlclJvdycgfCAnaXNDaGVja2VkUm93Jz4pIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTGFzdCB8fCB0aGlzLmlzRmlyc3QpIHJldHVybjtcbiAgICAgICAgY29uc3QgeyBmaWxsLCBzdHJva2UgfSA9IHN0eWxlO1xuICAgICAgICBjb25zdCBjb2xvcnMgPSBBSVRhYmxlLmdldENvbG9ycygpO1xuXG4gICAgICAgIC8vIOiDjOaZr+OAgei+ueahhlxuICAgICAgICB0aGlzLnJlY3Qoe1xuICAgICAgICAgICAgeDogdGhpcy54LFxuICAgICAgICAgICAgeTogdGhpcy55LFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuY29sdW1uV2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMucm93SGVpZ2h0LFxuICAgICAgICAgICAgZmlsbDogZmlsbCB8fCBjb2xvcnMud2hpdGUsXG4gICAgICAgICAgICBzdHJva2U6IHN0cm9rZSB8fCBjb2xvcnMuZ3JheTIwMFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJlbmRlckFkZEZpZWxkQmxhbmsoeyBpc0hvdmVyUm93LCBpc0NoZWNrZWRSb3cgfSk7XG4gICAgfVxuXG4gICAgLy8g57uY5Yi25Lit6Ze055qE5pmu6YCa5Y2V5YWD5qC8XG4gICAgcHJpdmF0ZSByZW5kZXJDb21tb25DZWxsKHsgc3R5bGUgfTogUGljazxBSVRhYmxlQ2VsbCwgJ3N0eWxlJz4pIHtcbiAgICAgICAgaWYgKHRoaXMuaXNGaXJzdCB8fCB0aGlzLmlzTGFzdCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgZmlsbCwgc3Ryb2tlIH0gPSBzdHlsZTtcbiAgICAgICAgY29uc3QgY29sb3JzID0gQUlUYWJsZS5nZXRDb2xvcnMoKTtcblxuICAgICAgICAvLyDog4zmma/jgIHovrnmoYZcbiAgICAgICAgdGhpcy5yZWN0KHtcbiAgICAgICAgICAgIHg6IHRoaXMueCxcbiAgICAgICAgICAgIHk6IHRoaXMueSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLmNvbHVtbldpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLnJvd0hlaWdodCxcbiAgICAgICAgICAgIGZpbGw6IGZpbGwgfHwgY29sb3JzLndoaXRlLFxuICAgICAgICAgICAgc3Ryb2tlOiBzdHJva2UgfHwgY29sb3JzLmdyYXkyMDBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVuZGVyKGNvbmZpZzogQUlUYWJsZUNlbGwpIHtcbiAgICAgICAgY29uc3QgeyByb3csIHN0eWxlLCBpc0NoZWNrZWRSb3csIGlzSG92ZXJSb3cgfSA9IGNvbmZpZztcbiAgICAgICAgdGhpcy5yZW5kZXJGaXJzdENlbGwoeyByb3csIHN0eWxlLCBpc0NoZWNrZWRSb3csIGlzSG92ZXJSb3cgfSk7XG4gICAgICAgIHRoaXMucmVuZGVyQ29tbW9uQ2VsbCh7IHN0eWxlIH0pO1xuICAgICAgICB0aGlzLnJlbmRlckxhc3RDZWxsKHsgc3R5bGUsIGlzQ2hlY2tlZFJvdywgaXNIb3ZlclJvdyB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCByZWNvcmRSb3dMYXlvdXQgPSBuZXcgUmVjb3JkUm93TGF5b3V0KCk7XG4iXX0=
@@ -1,4 +0,0 @@
1
- export * from './creations/create-active-cell-border';
2
- export * from './creations/create-cells';
3
- export * from './renderer.component';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9yZW5kZXJlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3JlYXRpb25zL2NyZWF0ZS1hY3RpdmUtY2VsbC1ib3JkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGlvbnMvY3JlYXRlLWNlbGxzJztcbmV4cG9ydCAqIGZyb20gJy4vcmVuZGVyZXIuY29tcG9uZW50JztcbiJdfQ==
@@ -1,4 +0,0 @@
1
- import { Component } from '@angular/core';
2
- export class HoverCellComponent extends Component {
3
- }
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItY2VsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3JlbmRlcmVyL2ludGVyZmFjZXMvaG92ZXItY2VsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBSXZELE1BQU0sT0FBZ0Isa0JBQW1CLFNBQVEsU0FBUztDQUd6RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXRTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVIb3ZlckNlbGxDb25maWcgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBBSVRhYmxlRmllbGRUeXBlIH0gZnJvbSAnQGFpLXRhYmxlL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEhvdmVyQ2VsbENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc3RhdGljIGZpZWxkVHlwZTogQUlUYWJsZUZpZWxkVHlwZTtcbiAgICBjb25maWchOiBJbnB1dFNpZ25hbDxBSVRhYmxlSG92ZXJDZWxsQ29uZmlnIHwgdW5kZWZpbmVkPjtcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './hover-cell';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9yZW5kZXJlci9pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ob3Zlci1jZWxsJztcbiJdfQ==
@@ -1,197 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';
2
- import Konva from 'konva';
3
- import { KoContainer, KoShape, KoStage } from '../angular-konva';
4
- import { AITable } from '../core';
5
- import { getVisibleRangeInfo } from '../utils';
6
- import { AITableAddField, AITableCells, AITableColumnHeads, AITableFrozenCells, AITableFrozenColumnHeads, AITableFrozenPlaceholderCells, AITableHoverRowHeads, AITableOtherRows, AITablePlaceholderCells } from './components';
7
- import { createActiveCellBorder } from './creations/create-active-cell-border';
8
- import { AITableHoverCells } from './components/hover-cell.component';
9
- import * as i0 from "@angular/core";
10
- Konva.pixelRatio = 2;
11
- export class AITableRenderer {
12
- constructor() {
13
- this.config = input.required();
14
- this.koMousemove = output();
15
- this.koMousedown = output();
16
- this.koMouseup = output();
17
- this.koContextmenu = output();
18
- this.koWheel = output();
19
- this.koClick = output();
20
- this.koDblclick = output();
21
- this.koMouseleave = output();
22
- this.fields = computed(() => {
23
- return AITable.getVisibleFields(this.config().aiTable);
24
- });
25
- this.readonly = computed(() => {
26
- return this.config()?.readonly;
27
- });
28
- this.hiddenIndexColumn = computed(() => {
29
- return this.config()?.aiTable.context?.aiFieldConfig()?.hiddenIndexColumn;
30
- });
31
- this.rowDragDisabled = computed(() => {
32
- return this.config()?.rowDragDisabled;
33
- });
34
- this.coordinate = computed(() => {
35
- return this.config()?.coordinate;
36
- });
37
- this.containerWidth = computed(() => {
38
- return this.config().containerWidth;
39
- });
40
- this.containerHeight = computed(() => {
41
- return this.config().containerHeight;
42
- });
43
- this.scrollState = computed(() => {
44
- return this.config()?.aiTable.context.scrollState();
45
- });
46
- this.visibleRangeInfo = computed(() => {
47
- return getVisibleRangeInfo(this.coordinate(), this.scrollState());
48
- });
49
- this.frozenAreaWidth = computed(() => {
50
- return this.config().aiTable.context.rowHeadWidth() + this.coordinate().frozenColumnWidth;
51
- });
52
- this.lastColumnWidth = computed(() => {
53
- return this.coordinate().getColumnWidth(this.visibleRangeInfo().columnStopIndex);
54
- });
55
- this.lastColumnOffset = computed(() => {
56
- return this.coordinate().getColumnOffset(this.visibleRangeInfo().columnStopIndex);
57
- });
58
- this.cellGroupClipWidth = computed(() => {
59
- return this.containerWidth() - this.frozenAreaWidth();
60
- });
61
- this.stageConfig = computed(() => {
62
- const { isScrolling } = this.scrollState();
63
- return {
64
- width: this.containerWidth(),
65
- height: this.containerHeight(),
66
- listening: isScrolling ? false : true
67
- };
68
- });
69
- this.gridGroupConfig = computed(() => {
70
- return {
71
- clipX: 0,
72
- clipY: 0,
73
- clipWidth: this.containerWidth(),
74
- clipHeight: this.containerHeight()
75
- };
76
- });
77
- this.commonGroupConfig = computed(() => {
78
- return {
79
- clipX: this.frozenAreaWidth() + 1,
80
- clipY: 0,
81
- clipWidth: this.cellGroupClipWidth(),
82
- clipHeight: this.containerHeight()
83
- };
84
- });
85
- this.attachGroupConfig = computed(() => {
86
- return {
87
- clipX: this.frozenAreaWidth() - 1,
88
- clipY: this.coordinate().rowInitSize - 1,
89
- clipWidth: this.containerWidth() - this.frozenAreaWidth(),
90
- clipHeight: this.containerHeight() - this.coordinate().rowInitSize
91
- };
92
- });
93
- this.frozenAttachGroupConfig = computed(() => {
94
- return {
95
- clipX: 0,
96
- clipY: this.coordinate().rowInitSize - 1,
97
- clipWidth: this.frozenAreaWidth() + 4,
98
- clipHeight: this.containerHeight() - this.coordinate().rowInitSize
99
- };
100
- });
101
- this.offsetYConfig = computed(() => {
102
- const { scrollTop } = this.scrollState();
103
- return {
104
- offsetY: scrollTop
105
- };
106
- });
107
- this.offsetXConfig = computed(() => {
108
- const { scrollLeft } = this.scrollState();
109
- return {
110
- offsetX: scrollLeft
111
- };
112
- });
113
- this.offsetConfig = computed(() => {
114
- const { scrollLeft, scrollTop } = this.scrollState();
115
- return {
116
- offsetX: scrollLeft,
117
- offsetY: scrollTop
118
- };
119
- });
120
- this.columnHeadOrAddFieldConfig = computed(() => {
121
- const { columnStartIndex, columnStopIndex } = this.visibleRangeInfo();
122
- const { aiTable, coordinate, readonly } = this.config();
123
- const { pointPosition } = aiTable.context;
124
- const fields = this.fields();
125
- return {
126
- aiTable,
127
- coordinate,
128
- fields,
129
- columnStartIndex,
130
- columnStopIndex,
131
- pointPosition: pointPosition(),
132
- readonly
133
- };
134
- });
135
- this.cellsConfig = computed(() => {
136
- const { aiTable, readonly, coordinate, references, actions, rowDragDisabled } = this.config();
137
- const { rowStartIndex, rowStopIndex, columnStartIndex, columnStopIndex } = this.visibleRangeInfo();
138
- return {
139
- aiTable,
140
- readonly,
141
- coordinate,
142
- references,
143
- rowStartIndex,
144
- rowStopIndex,
145
- columnStartIndex,
146
- columnStopIndex,
147
- actions,
148
- rowDragDisabled
149
- };
150
- });
151
- this.activeCellBorderConfig = computed(() => {
152
- return createActiveCellBorder(this.cellsConfig());
153
- });
154
- }
155
- stageMousemove(e) {
156
- this.koMousemove.emit(e);
157
- }
158
- stageMousedown(e) {
159
- this.koMousedown.emit(e);
160
- }
161
- stageMouseup(e) {
162
- this.koMouseup.emit(e);
163
- }
164
- stageContextmenu(e) {
165
- this.koContextmenu.emit(e);
166
- }
167
- stageClick(e) {
168
- this.koClick.emit(e);
169
- }
170
- stageDblclick(e) {
171
- this.koDblclick.emit(e);
172
- }
173
- stageMouseleave(e) {
174
- this.koMouseleave.emit(e);
175
- }
176
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
177
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AITableRenderer, isStandalone: true, selector: "ai-table-renderer", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { koMousemove: "koMousemove", koMousedown: "koMousedown", koMouseup: "koMouseup", koContextmenu: "koContextmenu", koWheel: "koWheel", koClick: "koClick", koDblclick: "koDblclick", koMouseleave: "koMouseleave" }, ngImport: i0, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n @if (!hiddenIndexColumn()) {\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n }\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-column-heads>\n <ai-table-add-field [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n <ai-table-hover-cell [config]=\"cellsConfig()\"></ai-table-hover-cell>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n <ai-table-hover-cell [config]=\"cellsConfig()\"></ai-table-hover-cell>\n </ko-group>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n", dependencies: [{ kind: "component", type: KoContainer, selector: "ko-layer, ko-fastlayer, ko-group" }, { kind: "component", type: KoStage, selector: "ko-stage", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: KoShape, selector: "ko-shape, ko-circle, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow, ko-transformer", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: AITableColumnHeads, selector: "ai-table-column-heads", inputs: ["config"] }, { kind: "component", type: AITableFrozenColumnHeads, selector: "ai-table-frozen-column-heads", inputs: ["config"] }, { kind: "component", type: AITableCells, selector: "ai-table-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenCells, selector: "ai-table-frozen-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenPlaceholderCells, selector: "ai-table-frozen-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITableHoverCells, selector: "ai-table-hover-cell", inputs: ["config"] }, { kind: "component", type: AITablePlaceholderCells, selector: "ai-table-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITableAddField, selector: "ai-table-add-field", inputs: ["config"] }, { kind: "component", type: AITableHoverRowHeads, selector: "ai-table-hover-row-heads", inputs: ["config"] }, { kind: "component", type: AITableOtherRows, selector: "ai-table-other-rows", inputs: ["config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
178
- }
179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableRenderer, decorators: [{
180
- type: Component,
181
- args: [{ selector: 'ai-table-renderer', standalone: true, imports: [
182
- KoContainer,
183
- KoStage,
184
- KoShape,
185
- AITableColumnHeads,
186
- AITableFrozenColumnHeads,
187
- AITableCells,
188
- AITableFrozenCells,
189
- AITableFrozenPlaceholderCells,
190
- AITableHoverCells,
191
- AITablePlaceholderCells,
192
- AITableAddField,
193
- AITableHoverRowHeads,
194
- AITableOtherRows
195
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n @if (!hiddenIndexColumn()) {\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n }\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-column-heads>\n <ai-table-add-field [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n <ai-table-hover-cell [config]=\"cellsConfig()\"></ai-table-hover-cell>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n <ai-table-hover-cell [config]=\"cellsConfig()\"></ai-table-hover-cell>\n </ko-group>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n" }]
196
- }] });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLFdBQVcsRUFBaUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9DLE9BQU8sRUFDSCxlQUFlLEVBQ2YsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLDZCQUE2QixFQUM3QixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUMxQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFFdEUsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7QUF1QnJCLE1BQU0sT0FBTyxlQUFlO0lBckI1QjtRQXNCSSxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBeUIsQ0FBQztRQUVqRCxnQkFBVyxHQUFHLE1BQU0sRUFBNkIsQ0FBQztRQUVsRCxnQkFBVyxHQUFHLE1BQU0sRUFBNkIsQ0FBQztRQUVsRCxjQUFT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a0JBQWtCO3dCQUNsQix3QkFBd0I7d0JBQ3hCLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQiw2QkFBNkI7d0JBQzdCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3FCQUNuQixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgS29udmEgZnJvbSAna29udmEnO1xuaW1wb3J0IHsgU3RhZ2VDb25maWcgfSBmcm9tICdrb252YS9saWIvU3RhZ2UnO1xuaW1wb3J0IHsgS29Db250YWluZXIsIEtvRXZlbnRPYmplY3QsIEtvU2hhcGUsIEtvU3RhZ2UgfSBmcm9tICcuLi9hbmd1bGFyLWtvbnZhJztcbmltcG9ydCB7IEFJVGFibGUgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVDZWxsc0NvbmZpZywgQUlUYWJsZVJlbmRlcmVyQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0VmlzaWJsZVJhbmdlSW5mbyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7XG4gICAgQUlUYWJsZUFkZEZpZWxkLFxuICAgIEFJVGFibGVDZWxscyxcbiAgICBBSVRhYmxlQ29sdW1uSGVhZHMsXG4gICAgQUlUYWJsZUZyb3plbkNlbGxzLFxuICAgIEFJVGFibGVGcm96ZW5Db2x1bW5IZWFkcyxcbiAgICBBSVRhYmxlRnJvemVuUGxhY2Vob2xkZXJDZWxscyxcbiAgICBBSVRhYmxlSG92ZXJSb3dIZWFkcyxcbiAgICBBSVRhYmxlT3RoZXJSb3dzLFxuICAgIEFJVGFibGVQbGFjZWhvbGRlckNlbGxzXG59IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVDZWxsQm9yZGVyIH0gZnJvbSAnLi9jcmVhdGlvbnMvY3JlYXRlLWFjdGl2ZS1jZWxsLWJvcmRlcic7XG5pbXBvcnQgeyBBSVRhYmxlSG92ZXJDZWxscyB9IGZyb20gJy4vY29tcG9uZW50cy9ob3Zlci1jZWxsLmNvbXBvbmVudCc7XG5cbktvbnZhLnBpeGVsUmF0aW8gPSAyO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLXJlbmRlcmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBLb0NvbnRhaW5lcixcbiAgICAgICAgS29TdGFnZSxcbiAgICAgICAgS29TaGFwZSxcbiAgICAgICAgQUlUYWJsZUNvbHVtbkhlYWRzLFxuICAgICAgICBBSVRhYmxlRnJvemVuQ29sdW1uSGVhZHMsXG4gICAgICAgIEFJVGFibGVDZWxscyxcbiAgICAgICAgQUlUYWJsZUZyb3plbkNlbGxzLFxuICAgICAgICBBSVRhYmxlRnJvemVuUGxhY2Vob2xkZXJDZWxscyxcbiAgICAgICAgQUlUYWJsZUhvdmVyQ2VsbHMsXG4gICAgICAgIEFJVGFibGVQbGFjZWhvbGRlckNlbGxzLFxuICAgICAgICBBSVRhYmxlQWRkRmllbGQsXG4gICAgICAgIEFJVGFibGVIb3ZlclJvd0hlYWRzLFxuICAgICAgICBBSVRhYmxlT3RoZXJSb3dzXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBSVRhYmxlUmVuZGVyZXIge1xuICAgIGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPEFJVGFibGVSZW5kZXJlckNvbmZpZz4oKTtcblxuICAgIGtvTW91c2Vtb3ZlID0gb3V0cHV0PEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4+KCk7XG5cbiAgICBrb01vdXNlZG93biA9IG91dHB1dDxLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+PigpO1xuXG4gICAga29Nb3VzZXVwID0gb3V0cHV0PEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4+KCk7XG5cbiAgICBrb0NvbnRleHRtZW51ID0gb3V0cHV0PEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4+KCk7XG5cbiAgICBrb1doZWVsID0gb3V0cHV0PEtvRXZlbnRPYmplY3Q8V2hlZWxFdmVudD4+KCk7XG5cbiAgICBrb0NsaWNrID0gb3V0cHV0PEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4+KCk7XG5cbiAgICBrb0RibGNsaWNrID0gb3V0cHV0PEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4+KCk7XG5cbiAgICBrb01vdXNlbGVhdmUgPSBvdXRwdXQ8S29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pj4oKTtcblxuICAgIGZpZWxkcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIEFJVGFibGUuZ2V0VmlzaWJsZUZpZWxkcyh0aGlzLmNvbmZpZygpLmFpVGFibGUpO1xuICAgIH0pO1xuXG4gICAgcmVhZG9ubHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZygpPy5yZWFkb25seTtcbiAgICB9KTtcblxuICAgIGhpZGRlbkluZGV4Q29sdW1uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcoKT8uYWlUYWJsZS5jb250ZXh0Py5haUZpZWxkQ29uZmlnKCk/LmhpZGRlbkluZGV4Q29sdW1uO1xuICAgIH0pO1xuXG4gICAgcm93RHJhZ0Rpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcoKT8ucm93RHJhZ0Rpc2FibGVkO1xuICAgIH0pO1xuXG4gICAgY29vcmRpbmF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnKCk/LmNvb3JkaW5hdGU7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXJXaWR0aCA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcoKS5jb250YWluZXJXaWR0aDtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lckhlaWdodCA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcoKS5jb250YWluZXJIZWlnaHQ7XG4gICAgfSk7XG5cbiAgICBzY3JvbGxTdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnKCk/LmFpVGFibGUhLmNvbnRleHQhLnNjcm9sbFN0YXRlKCk7XG4gICAgfSk7XG5cbiAgICB2aXNpYmxlUmFuZ2VJbmZvID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gZ2V0VmlzaWJsZVJhbmdlSW5mbyh0aGlzLmNvb3JkaW5hdGUoKSEsIHRoaXMuc2Nyb2xsU3RhdGUoKSEpO1xuICAgIH0pO1xuXG4gICAgZnJvemVuQXJlYVdpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcoKS5haVRhYmxlIS5jb250ZXh0IS5yb3dIZWFkV2lkdGgoKSArIHRoaXMuY29vcmRpbmF0ZSgpIS5mcm96ZW5Db2x1bW5XaWR0aCE7XG4gICAgfSk7XG5cbiAgICBsYXN0Q29sdW1uV2lkdGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvb3JkaW5hdGUoKSEuZ2V0Q29sdW1uV2lkdGgodGhpcy52aXNpYmxlUmFuZ2VJbmZvKCkuY29sdW1uU3RvcEluZGV4KTtcbiAgICB9KTtcblxuICAgIGxhc3RDb2x1bW5PZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvb3JkaW5hdGUoKSEuZ2V0Q29sdW1uT2Zmc2V0KHRoaXMudmlzaWJsZVJhbmdlSW5mbygpLmNvbHVtblN0b3BJbmRleCk7XG4gICAgfSk7XG5cbiAgICBjZWxsR3JvdXBDbGlwV2lkdGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lcldpZHRoKCkgLSB0aGlzLmZyb3plbkFyZWFXaWR0aCgpO1xuICAgIH0pO1xuXG4gICAgc3RhZ2VDb25maWcgPSBjb21wdXRlZDxQYXJ0aWFsPFN0YWdlQ29uZmlnPj4oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGlzU2Nyb2xsaW5nIH0gPSB0aGlzLnNjcm9sbFN0YXRlKCkhO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IHRoaXMuY29udGFpbmVyV2lkdGgoKSxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5jb250YWluZXJIZWlnaHQoKSxcbiAgICAgICAgICAgIGxpc3RlbmluZzogaXNTY3JvbGxpbmcgPyBmYWxzZSA6IHRydWVcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGdyaWRHcm91cENvbmZpZyA9IGNvbXB1dGVkPFBhcnRpYWw8U3RhZ2VDb25maWc+PigoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjbGlwWDogMCxcbiAgICAgICAgICAgIGNsaXBZOiAwLFxuICAgICAgICAgICAgY2xpcFdpZHRoOiB0aGlzLmNvbnRhaW5lcldpZHRoKCksXG4gICAgICAgICAgICBjbGlwSGVpZ2h0OiB0aGlzLmNvbnRhaW5lckhlaWdodCgpXG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb21tb25Hcm91cENvbmZpZyA9IGNvbXB1dGVkPFBhcnRpYWw8U3RhZ2VDb25maWc+PigoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjbGlwWDogdGhpcy5mcm96ZW5BcmVhV2lkdGgoKSArIDEsXG4gICAgICAgICAgICBjbGlwWTogMCxcbiAgICAgICAgICAgIGNsaXBXaWR0aDogdGhpcy5jZWxsR3JvdXBDbGlwV2lkdGgoKSxcbiAgICAgICAgICAgIGNsaXBIZWlnaHQ6IHRoaXMuY29udGFpbmVySGVpZ2h0KClcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGF0dGFjaEdyb3VwQ29uZmlnID0gY29tcHV0ZWQ8UGFydGlhbDxTdGFnZUNvbmZpZz4+KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsaXBYOiB0aGlzLmZyb3plbkFyZWFXaWR0aCgpIC0gMSxcbiAgICAgICAgICAgIGNsaXBZOiB0aGlzLmNvb3JkaW5hdGUoKSEucm93SW5pdFNpemUgLSAxLFxuICAgICAgICAgICAgY2xpcFdpZHRoOiB0aGlzLmNvbnRhaW5lcldpZHRoKCkgLSB0aGlzLmZyb3plbkFyZWFXaWR0aCgpLFxuICAgICAgICAgICAgY2xpcEhlaWdodDogdGhpcy5jb250YWluZXJIZWlnaHQoKSAtIHRoaXMuY29vcmRpbmF0ZSgpIS5yb3dJbml0U2l6ZVxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgZnJvemVuQXR0YWNoR3JvdXBDb25maWcgPSBjb21wdXRlZDxQYXJ0aWFsPFN0YWdlQ29uZmlnPj4oKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2xpcFg6IDAsXG4gICAgICAgICAgICBjbGlwWTogdGhpcy5jb29yZGluYXRlKCkhLnJvd0luaXRTaXplIC0gMSxcbiAgICAgICAgICAgIGNsaXBXaWR0aDogdGhpcy5mcm96ZW5BcmVhV2lkdGgoKSArIDQsXG4gICAgICAgICAgICBjbGlwSGVpZ2h0OiB0aGlzLmNvbnRhaW5lckhlaWdodCgpIC0gdGhpcy5jb29yZGluYXRlKCkhLnJvd0luaXRTaXplXG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBvZmZzZXRZQ29uZmlnID0gY29tcHV0ZWQ8UGFydGlhbDxTdGFnZUNvbmZpZz4+KCgpID0+IHtcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AgfSA9IHRoaXMuc2Nyb2xsU3RhdGUoKSE7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvZmZzZXRZOiBzY3JvbGxUb3BcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIG9mZnNldFhDb25maWcgPSBjb21wdXRlZDxQYXJ0aWFsPFN0YWdlQ29uZmlnPj4oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHNjcm9sbExlZnQgfSA9IHRoaXMuc2Nyb2xsU3RhdGUoKSE7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvZmZzZXRYOiBzY3JvbGxMZWZ0XG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBvZmZzZXRDb25maWcgPSBjb21wdXRlZDxQYXJ0aWFsPFN0YWdlQ29uZmlnPj4oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHNjcm9sbExlZnQsIHNjcm9sbFRvcCB9ID0gdGhpcy5zY3JvbGxTdGF0ZSgpITtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9mZnNldFg6IHNjcm9sbExlZnQsXG4gICAgICAgICAgICBvZmZzZXRZOiBzY3JvbGxUb3BcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbHVtbkhlYWRPckFkZEZpZWxkQ29uZmlnID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGNvbHVtblN0YXJ0SW5kZXgsIGNvbHVtblN0b3BJbmRleCB9ID0gdGhpcy52aXNpYmxlUmFuZ2VJbmZvKCk7XG4gICAgICAgIGNvbnN0IHsgYWlUYWJsZSwgY29vcmRpbmF0ZSwgcmVhZG9ubHkgfSA9IHRoaXMuY29uZmlnKCk7XG4gICAgICAgIGNvbnN0IHsgcG9pbnRQb3NpdGlvbiB9ID0gYWlUYWJsZS5jb250ZXh0ITtcbiAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5maWVsZHMoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFpVGFibGUsXG4gICAgICAgICAgICBjb29yZGluYXRlLFxuICAgICAgICAgICAgZmllbGRzLFxuICAgICAgICAgICAgY29sdW1uU3RhcnRJbmRleCxcbiAgICAgICAgICAgIGNvbHVtblN0b3BJbmRleCxcbiAgICAgICAgICAgIHBvaW50UG9zaXRpb246IHBvaW50UG9zaXRpb24oKSxcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjZWxsc0NvbmZpZyA9IGNvbXB1dGVkPEFJVGFibGVDZWxsc0NvbmZpZz4oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGFpVGFibGUsIHJlYWRvbmx5LCBjb29yZGluYXRlLCByZWZlcmVuY2VzLCBhY3Rpb25zLCByb3dEcmFnRGlzYWJsZWQgfSA9IHRoaXMuY29uZmlnKCk7XG4gICAgICAgIGNvbnN0IHsgcm93U3RhcnRJbmRleCwgcm93U3RvcEluZGV4LCBjb2x1bW5TdGFydEluZGV4LCBjb2x1bW5TdG9wSW5kZXggfSA9IHRoaXMudmlzaWJsZVJhbmdlSW5mbygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWlUYWJsZSxcbiAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgY29vcmRpbmF0ZSxcbiAgICAgICAgICAgIHJlZmVyZW5jZXMsXG4gICAgICAgICAgICByb3dTdGFydEluZGV4LFxuICAgICAgICAgICAgcm93U3RvcEluZGV4LFxuICAgICAgICAgICAgY29sdW1uU3RhcnRJbmRleCxcbiAgICAgICAgICAgIGNvbHVtblN0b3BJbmRleCxcbiAgICAgICAgICAgIGFjdGlvbnMsXG4gICAgICAgICAgICByb3dEcmFnRGlzYWJsZWRcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGFjdGl2ZUNlbGxCb3JkZXJDb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBjcmVhdGVBY3RpdmVDZWxsQm9yZGVyKHRoaXMuY2VsbHNDb25maWcoKSk7XG4gICAgfSk7XG5cbiAgICBzdGFnZU1vdXNlbW92ZShlOiBLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+KSB7XG4gICAgICAgIHRoaXMua29Nb3VzZW1vdmUuZW1pdChlIGFzIEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pO1xuICAgIH1cblxuICAgIHN0YWdlTW91c2Vkb3duKGU6IEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pIHtcbiAgICAgICAgdGhpcy5rb01vdXNlZG93bi5lbWl0KGUgYXMgS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pik7XG4gICAgfVxuXG4gICAgc3RhZ2VNb3VzZXVwKGU6IEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pIHtcbiAgICAgICAgdGhpcy5rb01vdXNldXAuZW1pdChlIGFzIEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pO1xuICAgIH1cblxuICAgIHN0YWdlQ29udGV4dG1lbnUoZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pikge1xuICAgICAgICB0aGlzLmtvQ29udGV4dG1lbnUuZW1pdChlIGFzIEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pO1xuICAgIH1cblxuICAgIHN0YWdlQ2xpY2soZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pikge1xuICAgICAgICB0aGlzLmtvQ2xpY2suZW1pdChlIGFzIEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pO1xuICAgIH1cblxuICAgIHN0YWdlRGJsY2xpY2soZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pikge1xuICAgICAgICB0aGlzLmtvRGJsY2xpY2suZW1pdChlIGFzIEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pO1xuICAgIH1cblxuICAgIHN0YWdlTW91c2VsZWF2ZShlOiBLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+KSB7XG4gICAgICAgIHRoaXMua29Nb3VzZWxlYXZlLmVtaXQoZSBhcyBLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+KTtcbiAgICB9XG59XG4iLCI8a28tc3RhZ2VcbiAgICBbY29uZmlnXT1cInN0YWdlQ29uZmlnKClcIlxuICAgIChrb01vdXNlbW92ZSk9XCJzdGFnZU1vdXNlbW92ZSgkZXZlbnQpXCJcbiAgICAoa29Nb3VzZWRvd24pPVwic3RhZ2VNb3VzZWRvd24oJGV2ZW50KVwiXG4gICAgKGtvTW91c2V1cCk9XCJzdGFnZU1vdXNldXAoJGV2ZW50KVwiXG4gICAgKGtvQ29udGV4dG1lbnUpPVwic3RhZ2VDb250ZXh0bWVudSgkZXZlbnQpXCJcbiAgICAoa29DbGljayk9XCJzdGFnZUNsaWNrKCRldmVudClcIlxuICAgIChrb0RibGNsaWNrKT1cInN0YWdlRGJsY2xpY2soJGV2ZW50KVwiXG4gICAgKGtvTW91c2VsZWF2ZSk9XCJzdGFnZU1vdXNlbGVhdmUoJGV2ZW50KVwiXG4+XG4gICAgPGtvLWxheWVyPlxuICAgICAgICA8a28tZ3JvdXAgW2NvbmZpZ109XCJncmlkR3JvdXBDb25maWcoKVwiPlxuICAgICAgICAgICAgPGtvLWdyb3VwIFtjb25maWddPVwib2Zmc2V0WUNvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgPGFpLXRhYmxlLWZyb3plbi1jZWxscyBbY29uZmlnXT1cImNlbGxzQ29uZmlnKClcIj48L2FpLXRhYmxlLWZyb3plbi1jZWxscz5cbiAgICAgICAgICAgICAgICA8YWktdGFibGUtb3RoZXItcm93cyBbY29uZmlnXT1cImNlbGxzQ29uZmlnKClcIj48L2FpLXRhYmxlLW90aGVyLXJvd3M+XG4gICAgICAgICAgICAgICAgQGlmICghaGlkZGVuSW5kZXhDb2x1bW4oKSkge1xuICAgICAgICAgICAgICAgICAgICA8YWktdGFibGUtaG92ZXItcm93LWhlYWRzIFtjb25maWddPVwiY2VsbHNDb25maWcoKVwiPjwvYWktdGFibGUtaG92ZXItcm93LWhlYWRzPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8YWktdGFibGUtZnJvemVuLXBsYWNlaG9sZGVyLWNlbGxzIFtjb25maWddPVwiY2VsbHNDb25maWcoKVwiPjwvYWktdGFibGUtZnJvemVuLXBsYWNlaG9sZGVyLWNlbGxzPlxuICAgICAgICAgICAgPC9rby1ncm91cD5cblxuICAgICAgICAgICAgPGtvLWdyb3VwPlxuICAgICAgICAgICAgICAgIDxhaS10YWJsZS1mcm96ZW4tY29sdW1uLWhlYWRzIFtjb25maWddPVwiY29sdW1uSGVhZE9yQWRkRmllbGRDb25maWcoKVwiPjwvYWktdGFibGUtZnJvemVuLWNvbHVtbi1oZWFkcz5cbiAgICAgICAgICAgIDwva28tZ3JvdXA+XG5cbiAgICAgICAgICAgIDxrby1ncm91cCBbY29uZmlnXT1cImNvbW1vbkdyb3VwQ29uZmlnKClcIj5cbiAgICAgICAgICAgICAgICA8a28tZ3JvdXAgW2NvbmZpZ109XCJvZmZzZXRDb25maWcoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YWktdGFibGUtY2VsbHMgW2NvbmZpZ109XCJjZWxsc0NvbmZpZygpXCI+PC9haS10YWJsZS1jZWxscz5cbiAgICAgICAgICAgICAgICA8L2tvLWdyb3VwPlxuXG4gICAgICAgICAgICAgICAgPGtvLWdyb3VwIFtjb25maWddPVwib2Zmc2V0WENvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhaS10YWJsZS1jb2x1bW4taGVhZHMgW2NvbmZpZ109XCJjb2x1bW5IZWFkT3JBZGRGaWVsZENvbmZpZygpXCI+PC9haS10YWJsZS1jb2x1bW4taGVhZHM+XG4gICAgICAgICAgICAgICAgICAgIDxhaS10YWJsZS1hZGQtZmllbGQgW2NvbmZpZ109XCJjb2x1bW5IZWFkT3JBZGRGaWVsZENvbmZpZygpXCI+PC9haS10YWJsZS1hZGQtZmllbGQ+XG4gICAgICAgICAgICAgICAgPC9rby1ncm91cD5cbiAgICAgICAgICAgIDwva28tZ3JvdXA+XG5cbiAgICAgICAgICAgIDxrby1ncm91cCBbY29uZmlnXT1cImF0dGFjaEdyb3VwQ29uZmlnKClcIj5cbiAgICAgICAgICAgICAgICA8a28tZ3JvdXAgW2NvbmZpZ109XCJvZmZzZXRDb25maWcoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YWktdGFibGUtcGxhY2Vob2xkZXItY2VsbHMgW2NvbmZpZ109XCJjZWxsc0NvbmZpZygpXCI+PC9haS10YWJsZS1wbGFjZWhvbGRlci1jZWxscz5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVDZWxsQm9yZGVyQ29uZmlnKCkuYWN0aXZlQ2VsbEJvcmRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGtvLXJlY3QgW2NvbmZpZ109XCJhY3RpdmVDZWxsQm9yZGVyQ29uZmlnKCkuYWN0aXZlQ2VsbEJvcmRlciFcIj48L2tvLXJlY3Q+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGFpLXRhYmxlLWhvdmVyLWNlbGwgW2NvbmZpZ109XCJjZWxsc0NvbmZpZygpXCI+PC9haS10YWJsZS1ob3Zlci1jZWxsPlxuICAgICAgICAgICAgICAgIDwva28tZ3JvdXA+XG4gICAgICAgICAgICA8L2tvLWdyb3VwPlxuXG4gICAgICAgICAgICA8a28tZ3JvdXAgW2NvbmZpZ109XCJmcm96ZW5BdHRhY2hHcm91cENvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgPGtvLWdyb3VwIFtjb25maWddPVwib2Zmc2V0WUNvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlQ2VsbEJvcmRlckNvbmZpZygpLmZyb3plbkFjdGl2ZUNlbGxCb3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxrby1yZWN0IFtjb25maWddPVwiYWN0aXZlQ2VsbEJvcmRlckNvbmZpZygpLmZyb3plbkFjdGl2ZUNlbGxCb3JkZXIhXCI+PC9rby1yZWN0PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxhaS10YWJsZS1ob3Zlci1jZWxsIFtjb25maWddPVwiY2VsbHNDb25maWcoKVwiPjwvYWktdGFibGUtaG92ZXItY2VsbD5cbiAgICAgICAgICAgICAgICA8L2tvLWdyb3VwPlxuICAgICAgICAgICAgPC9rby1ncm91cD5cbiAgICAgICAgPC9rby1ncm91cD5cbiAgICA8L2tvLWxheWVyPlxuPC9rby1zdGFnZT5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19