@ai-table/grid 0.0.11 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (324) hide show
  1. package/angular-konva/components/container.component.d.ts +7 -0
  2. package/angular-konva/components/container.component.d.ts.map +1 -0
  3. package/angular-konva/components/container.token.d.ts +3 -0
  4. package/angular-konva/components/container.token.d.ts.map +1 -0
  5. package/angular-konva/components/index.d.ts +4 -0
  6. package/angular-konva/components/index.d.ts.map +1 -0
  7. package/angular-konva/components/shape.component.d.ts +61 -0
  8. package/angular-konva/components/shape.component.d.ts.map +1 -0
  9. package/angular-konva/components/stage.component.d.ts +40 -0
  10. package/angular-konva/components/stage.component.d.ts.map +1 -0
  11. package/angular-konva/index.d.ts +5 -0
  12. package/angular-konva/index.d.ts.map +1 -0
  13. package/angular-konva/interfaces/component.d.ts +49 -0
  14. package/angular-konva/interfaces/component.d.ts.map +1 -0
  15. package/angular-konva/interfaces/config.d.ts +26 -0
  16. package/angular-konva/interfaces/config.d.ts.map +1 -0
  17. package/angular-konva/interfaces/event-object.d.ts +7 -0
  18. package/angular-konva/interfaces/event-object.d.ts.map +1 -0
  19. package/angular-konva/interfaces/index.d.ts +5 -0
  20. package/angular-konva/interfaces/index.d.ts.map +1 -0
  21. package/angular-konva/interfaces/shape.d.ts +42 -0
  22. package/angular-konva/interfaces/shape.d.ts.map +1 -0
  23. package/angular-konva/utils/apply-node-props.d.ts +4 -0
  24. package/angular-konva/utils/apply-node-props.d.ts.map +1 -0
  25. package/angular-konva/utils/common.d.ts +8 -0
  26. package/angular-konva/utils/common.d.ts.map +1 -0
  27. package/angular-konva/utils/index.d.ts +5 -0
  28. package/angular-konva/utils/index.d.ts.map +1 -0
  29. package/angular-konva/utils/types.d.ts +4 -0
  30. package/angular-konva/utils/types.d.ts.map +1 -0
  31. package/angular-konva/utils/update-picture.d.ts +4 -0
  32. package/angular-konva/utils/update-picture.d.ts.map +1 -0
  33. package/components/cell-editors/abstract-cell-editor.component.d.ts +7 -5
  34. package/components/cell-editors/abstract-cell-editor.component.d.ts.map +1 -1
  35. package/components/cell-editors/cell-editor.scss +38 -25
  36. package/components/cell-editors/cell-editor.variables.scss +5 -0
  37. package/components/cell-editors/date/date-editor.component.d.ts.map +1 -1
  38. package/components/cell-editors/link/edit-link/edit-link.component.d.ts +33 -0
  39. package/components/cell-editors/link/edit-link/edit-link.component.d.ts.map +1 -0
  40. package/components/cell-editors/link/link-editor.component.d.ts +36 -0
  41. package/components/cell-editors/link/link-editor.component.d.ts.map +1 -0
  42. package/components/cell-editors/link/link-editor.component.scss +21 -0
  43. package/components/cell-editors/progress/progress-editor.component.d.ts +0 -1
  44. package/components/cell-editors/progress/progress-editor.component.d.ts.map +1 -1
  45. package/components/cell-editors/progress/progress-editor.component.scss +12 -4
  46. package/components/cell-editors/rating/rating-editor.component.d.ts +0 -1
  47. package/components/cell-editors/rating/rating-editor.component.d.ts.map +1 -1
  48. package/components/cell-editors/rating/rating-editor.component.scss +10 -0
  49. package/components/cell-editors/select/select-editor.component.d.ts +1 -3
  50. package/components/cell-editors/select/select-editor.component.d.ts.map +1 -1
  51. package/components/cell-editors/text/text-editor.component.d.ts +0 -1
  52. package/components/cell-editors/text/text-editor.component.d.ts.map +1 -1
  53. package/components/cell-views/select/option.component.d.ts.map +1 -1
  54. package/components/cell-views/select/option.scss +10 -0
  55. package/components/field-menu/field-menu.component.d.ts +8 -3
  56. package/components/field-menu/field-menu.component.d.ts.map +1 -1
  57. package/components/field-property-editor/field-property-editor.component.d.ts +4 -2
  58. package/components/field-property-editor/field-property-editor.component.d.ts.map +1 -1
  59. package/components/index.d.ts +3 -1
  60. package/components/index.d.ts.map +1 -1
  61. package/constants/colors.d.ts +18 -0
  62. package/constants/colors.d.ts.map +1 -0
  63. package/constants/grid.d.ts +17 -1
  64. package/constants/grid.d.ts.map +1 -1
  65. package/constants/icon.d.ts +19 -0
  66. package/constants/icon.d.ts.map +1 -0
  67. package/constants/index.d.ts +5 -1
  68. package/constants/index.d.ts.map +1 -1
  69. package/constants/table.d.ts +60 -0
  70. package/constants/table.d.ts.map +1 -0
  71. package/constants/text.d.ts +22 -0
  72. package/constants/text.d.ts.map +1 -0
  73. package/core/context.d.ts +14 -0
  74. package/core/context.d.ts.map +1 -0
  75. package/core/coordinate.d.ts +96 -0
  76. package/core/coordinate.d.ts.map +1 -0
  77. package/core/index.d.ts +3 -2
  78. package/core/index.d.ts.map +1 -1
  79. package/core/types/ai-table.d.ts +56 -0
  80. package/core/types/ai-table.d.ts.map +1 -0
  81. package/core/types/core.d.ts +29 -23
  82. package/core/types/core.d.ts.map +1 -1
  83. package/core/types/index.d.ts +1 -1
  84. package/core/types/index.d.ts.map +1 -1
  85. package/core/utils/common.d.ts +1 -2
  86. package/core/utils/common.d.ts.map +1 -1
  87. package/core/utils/field.d.ts +1 -1
  88. package/core/utils/field.d.ts.map +1 -1
  89. package/core/utils/index.d.ts +0 -1
  90. package/core/utils/index.d.ts.map +1 -1
  91. package/core/utils/queries.d.ts +5 -5
  92. package/core/utils/queries.d.ts.map +1 -1
  93. package/dom-grid.component.d.ts +11 -0
  94. package/dom-grid.component.d.ts.map +1 -0
  95. package/esm2022/angular-konva/components/container.component.mjs +29 -0
  96. package/esm2022/angular-konva/components/container.token.mjs +3 -0
  97. package/esm2022/angular-konva/components/index.mjs +4 -0
  98. package/esm2022/angular-konva/components/shape.component.mjs +142 -0
  99. package/esm2022/angular-konva/components/stage.component.mjs +123 -0
  100. package/esm2022/angular-konva/index.mjs +5 -0
  101. package/esm2022/angular-konva/interfaces/component.mjs +4 -0
  102. package/esm2022/angular-konva/interfaces/config.mjs +2 -0
  103. package/esm2022/angular-konva/interfaces/event-object.mjs +2 -0
  104. package/esm2022/angular-konva/interfaces/index.mjs +5 -0
  105. package/esm2022/angular-konva/interfaces/shape.mjs +42 -0
  106. package/esm2022/angular-konva/utils/apply-node-props.mjs +67 -0
  107. package/esm2022/angular-konva/utils/common.mjs +48 -0
  108. package/esm2022/angular-konva/utils/index.mjs +5 -0
  109. package/esm2022/angular-konva/utils/types.mjs +2 -0
  110. package/esm2022/angular-konva/utils/update-picture.mjs +7 -0
  111. package/esm2022/components/cell-editors/abstract-cell-editor.component.mjs +12 -7
  112. package/esm2022/components/cell-editors/date/date-editor.component.mjs +6 -3
  113. package/esm2022/components/cell-editors/link/edit-link/edit-link.component.mjs +66 -0
  114. package/esm2022/components/cell-editors/link/link-editor.component.mjs +117 -0
  115. package/esm2022/components/cell-editors/number/number-editor.component.mjs +2 -2
  116. package/esm2022/components/cell-editors/progress/progress-editor.component.mjs +3 -6
  117. package/esm2022/components/cell-editors/rating/rating-editor.component.mjs +4 -7
  118. package/esm2022/components/cell-editors/select/select-editor.component.mjs +11 -16
  119. package/esm2022/components/cell-editors/text/text-editor.component.mjs +10 -11
  120. package/esm2022/components/cell-views/select/option.component.mjs +6 -5
  121. package/esm2022/components/field-menu/field-menu.component.mjs +11 -8
  122. package/esm2022/components/field-property-editor/field-property-editor.component.mjs +17 -12
  123. package/esm2022/components/index.mjs +4 -2
  124. package/esm2022/constants/colors.mjs +18 -0
  125. package/esm2022/constants/editor.mjs +2 -3
  126. package/esm2022/constants/grid.mjs +22 -4
  127. package/esm2022/constants/icon.mjs +26 -0
  128. package/esm2022/constants/index.mjs +6 -2
  129. package/esm2022/constants/table.mjs +62 -0
  130. package/esm2022/constants/text.mjs +23 -0
  131. package/esm2022/core/context.mjs +25 -0
  132. package/esm2022/core/coordinate.mjs +222 -0
  133. package/esm2022/core/index.mjs +4 -3
  134. package/esm2022/core/types/ai-table.mjs +44 -0
  135. package/esm2022/core/types/core.mjs +6 -1
  136. package/esm2022/core/types/index.mjs +2 -2
  137. package/esm2022/core/utils/common.mjs +3 -20
  138. package/esm2022/core/utils/field.mjs +9 -5
  139. package/esm2022/core/utils/index.mjs +1 -2
  140. package/esm2022/core/utils/queries.mjs +4 -4
  141. package/esm2022/dom-grid.component.mjs +82 -0
  142. package/esm2022/grid-base.component.mjs +154 -0
  143. package/esm2022/grid.component.mjs +336 -160
  144. package/esm2022/public-api.mjs +9 -5
  145. package/esm2022/renderer/components/add-field-column.component.mjs +68 -0
  146. package/esm2022/renderer/components/cells.component.mjs +35 -0
  147. package/esm2022/renderer/components/field-head.component.mjs +130 -0
  148. package/esm2022/renderer/components/field-icon.component.mjs +66 -0
  149. package/esm2022/renderer/components/frozen-cells.component.mjs +36 -0
  150. package/esm2022/renderer/components/frozen-heads.component.mjs +117 -0
  151. package/esm2022/renderer/components/frozen-placeholder-cells.component.mjs +38 -0
  152. package/esm2022/renderer/components/heads.component.mjs +38 -0
  153. package/esm2022/renderer/components/hover-row-heads.component.mjs +107 -0
  154. package/esm2022/renderer/components/icon.component.mjs +80 -0
  155. package/esm2022/renderer/components/index.mjs +14 -0
  156. package/esm2022/renderer/components/other-rows.component.mjs +68 -0
  157. package/esm2022/renderer/components/placeholder-cells.component.mjs +33 -0
  158. package/esm2022/renderer/components/text.component.mjs +45 -0
  159. package/esm2022/renderer/creations/create-active-cell-border.mjs +68 -0
  160. package/esm2022/renderer/creations/create-cells.mjs +135 -0
  161. package/esm2022/renderer/creations/create-heads.mjs +45 -0
  162. package/esm2022/renderer/drawers/add-row-layout-drawer.mjs +97 -0
  163. package/esm2022/renderer/drawers/cell-drawer.mjs +586 -0
  164. package/esm2022/renderer/drawers/drawer.mjs +936 -0
  165. package/esm2022/renderer/drawers/layout-drawer.mjs +58 -0
  166. package/esm2022/renderer/drawers/record-row-layout-drawer.mjs +101 -0
  167. package/esm2022/renderer/index.mjs +4 -0
  168. package/esm2022/renderer/renderer.component.mjs +174 -0
  169. package/esm2022/services/event.service.mjs +115 -11
  170. package/esm2022/services/field.service.mjs +28 -5
  171. package/esm2022/services/index.mjs +4 -0
  172. package/esm2022/services/selection.service.mjs +8 -1
  173. package/esm2022/types/avatar.mjs +27 -0
  174. package/esm2022/types/canvas.mjs +2 -0
  175. package/esm2022/types/cell.mjs +2 -0
  176. package/esm2022/types/component-config.mjs +7 -0
  177. package/esm2022/types/field.mjs +1 -1
  178. package/esm2022/types/grid.mjs +16 -2
  179. package/esm2022/types/index.mjs +8 -2
  180. package/esm2022/types/layout.mjs +2 -0
  181. package/esm2022/types/row.mjs +6 -0
  182. package/esm2022/utils/build.mjs +39 -0
  183. package/esm2022/utils/cell.mjs +71 -0
  184. package/esm2022/utils/common.mjs +49 -0
  185. package/esm2022/utils/get-placeholder-cells.mjs +66 -0
  186. package/esm2022/utils/get-text-width.mjs +30 -0
  187. package/esm2022/utils/image-cache.mjs +57 -0
  188. package/esm2022/utils/index.mjs +12 -0
  189. package/esm2022/utils/os.mjs +16 -0
  190. package/esm2022/utils/position.mjs +48 -0
  191. package/esm2022/utils/style.mjs +25 -0
  192. package/esm2022/utils/text-measure.mjs +122 -0
  193. package/esm2022/utils/visible-range.mjs +38 -0
  194. package/fesm2022/ai-table-grid.mjs +5526 -693
  195. package/fesm2022/ai-table-grid.mjs.map +1 -1
  196. package/grid-base.component.d.ts +52 -0
  197. package/grid-base.component.d.ts.map +1 -0
  198. package/grid.component.d.ts +43 -40
  199. package/grid.component.d.ts.map +1 -1
  200. package/package.json +5 -2
  201. package/public-api.d.ts +8 -4
  202. package/public-api.d.ts.map +1 -1
  203. package/renderer/components/add-field-column.component.d.ts +16 -0
  204. package/renderer/components/add-field-column.component.d.ts.map +1 -0
  205. package/renderer/components/cells.component.d.ts +14 -0
  206. package/renderer/components/cells.component.d.ts.map +1 -0
  207. package/renderer/components/field-head.component.d.ts +73 -0
  208. package/renderer/components/field-head.component.d.ts.map +1 -0
  209. package/renderer/components/field-icon.component.d.ts +17 -0
  210. package/renderer/components/field-icon.component.d.ts.map +1 -0
  211. package/renderer/components/frozen-cells.component.d.ts +14 -0
  212. package/renderer/components/frozen-cells.component.d.ts.map +1 -0
  213. package/renderer/components/frozen-heads.component.d.ts +47 -0
  214. package/renderer/components/frozen-heads.component.d.ts.map +1 -0
  215. package/renderer/components/frozen-placeholder-cells.component.d.ts +22 -0
  216. package/renderer/components/frozen-placeholder-cells.component.d.ts.map +1 -0
  217. package/renderer/components/heads.component.d.ts +9 -0
  218. package/renderer/components/heads.component.d.ts.map +1 -0
  219. package/renderer/components/hover-row-heads.component.d.ts +11 -0
  220. package/renderer/components/hover-row-heads.component.d.ts.map +1 -0
  221. package/renderer/components/icon.component.d.ts +37 -0
  222. package/renderer/components/icon.component.d.ts.map +1 -0
  223. package/renderer/components/index.d.ts +14 -0
  224. package/renderer/components/index.d.ts.map +1 -0
  225. package/renderer/components/other-rows.component.d.ts +31 -0
  226. package/renderer/components/other-rows.component.d.ts.map +1 -0
  227. package/renderer/components/placeholder-cells.component.d.ts +22 -0
  228. package/renderer/components/placeholder-cells.component.d.ts.map +1 -0
  229. package/renderer/components/text.component.d.ts +99 -0
  230. package/renderer/components/text.component.d.ts.map +1 -0
  231. package/renderer/creations/create-active-cell-border.d.ts +7 -0
  232. package/renderer/creations/create-active-cell-border.d.ts.map +1 -0
  233. package/renderer/creations/create-cells.d.ts +8 -0
  234. package/renderer/creations/create-cells.d.ts.map +1 -0
  235. package/renderer/creations/create-heads.d.ts +3 -0
  236. package/renderer/creations/create-heads.d.ts.map +1 -0
  237. package/renderer/drawers/add-row-layout-drawer.d.ts +12 -0
  238. package/renderer/drawers/add-row-layout-drawer.d.ts.map +1 -0
  239. package/renderer/drawers/cell-drawer.d.ts +22 -0
  240. package/renderer/drawers/cell-drawer.d.ts.map +1 -0
  241. package/renderer/drawers/drawer.d.ts +136 -0
  242. package/renderer/drawers/drawer.d.ts.map +1 -0
  243. package/renderer/drawers/layout-drawer.d.ts +22 -0
  244. package/renderer/drawers/layout-drawer.d.ts.map +1 -0
  245. package/renderer/drawers/record-row-layout-drawer.d.ts +14 -0
  246. package/renderer/drawers/record-row-layout-drawer.d.ts.map +1 -0
  247. package/renderer/index.d.ts +4 -0
  248. package/renderer/index.d.ts.map +1 -0
  249. package/renderer/renderer.component.d.ts +64 -0
  250. package/renderer/renderer.component.d.ts.map +1 -0
  251. package/services/event.service.d.ts +17 -3
  252. package/services/event.service.d.ts.map +1 -1
  253. package/services/field.service.d.ts +5 -4
  254. package/services/field.service.d.ts.map +1 -1
  255. package/services/index.d.ts +4 -0
  256. package/services/index.d.ts.map +1 -0
  257. package/services/selection.service.d.ts.map +1 -1
  258. package/styles/styles.scss +71 -11
  259. package/types/avatar.d.ts +24 -0
  260. package/types/avatar.d.ts.map +1 -0
  261. package/types/canvas.d.ts +83 -0
  262. package/types/canvas.d.ts.map +1 -0
  263. package/types/cell.d.ts +43 -0
  264. package/types/cell.d.ts.map +1 -0
  265. package/types/component-config.d.ts +50 -0
  266. package/types/component-config.d.ts.map +1 -0
  267. package/types/field.d.ts +27 -1
  268. package/types/field.d.ts.map +1 -1
  269. package/types/grid.d.ts +80 -2
  270. package/types/grid.d.ts.map +1 -1
  271. package/types/index.d.ts +7 -1
  272. package/types/index.d.ts.map +1 -1
  273. package/types/layout.d.ts +11 -0
  274. package/types/layout.d.ts.map +1 -0
  275. package/types/row.d.ts +27 -0
  276. package/types/row.d.ts.map +1 -0
  277. package/utils/build.d.ts +5 -0
  278. package/utils/build.d.ts.map +1 -0
  279. package/utils/cell.d.ts +19 -0
  280. package/utils/cell.d.ts.map +1 -0
  281. package/utils/common.d.ts +20 -0
  282. package/utils/common.d.ts.map +1 -0
  283. package/utils/get-placeholder-cells.d.ts +16 -0
  284. package/utils/get-placeholder-cells.d.ts.map +1 -0
  285. package/utils/get-text-width.d.ts +9 -0
  286. package/utils/get-text-width.d.ts.map +1 -0
  287. package/utils/image-cache.d.ts +16 -0
  288. package/utils/image-cache.d.ts.map +1 -0
  289. package/utils/index.d.ts +12 -0
  290. package/utils/index.d.ts.map +1 -0
  291. package/utils/os.d.ts +4 -0
  292. package/utils/os.d.ts.map +1 -0
  293. package/utils/position.d.ts +20 -0
  294. package/utils/position.d.ts.map +1 -0
  295. package/utils/style.d.ts +4 -0
  296. package/utils/style.d.ts.map +1 -0
  297. package/utils/text-measure.d.ts +32 -0
  298. package/utils/text-measure.d.ts.map +1 -0
  299. package/utils/visible-range.d.ts +13 -0
  300. package/utils/visible-range.d.ts.map +1 -0
  301. package/components/cell-editors/link/number-editor.component.d.ts +0 -8
  302. package/components/cell-editors/link/number-editor.component.d.ts.map +0 -1
  303. package/constants/field.d.ts +0 -20
  304. package/constants/field.d.ts.map +0 -1
  305. package/core/action/field.d.ts +0 -12
  306. package/core/action/field.d.ts.map +0 -1
  307. package/core/action/general.d.ts +0 -5
  308. package/core/action/general.d.ts.map +0 -1
  309. package/core/action/index.d.ts +0 -12
  310. package/core/action/index.d.ts.map +0 -1
  311. package/core/action/record.d.ts +0 -12
  312. package/core/action/record.d.ts.map +0 -1
  313. package/core/types/action.d.ts +0 -64
  314. package/core/types/action.d.ts.map +0 -1
  315. package/core/utils/weak-map.d.ts +0 -3
  316. package/core/utils/weak-map.d.ts.map +0 -1
  317. package/esm2022/components/cell-editors/link/number-editor.component.mjs +0 -25
  318. package/esm2022/constants/field.mjs +0 -25
  319. package/esm2022/core/action/field.mjs +0 -57
  320. package/esm2022/core/action/general.mjs +0 -116
  321. package/esm2022/core/action/index.mjs +0 -9
  322. package/esm2022/core/action/record.mjs +0 -44
  323. package/esm2022/core/types/action.mjs +0 -18
  324. package/esm2022/core/utils/weak-map.mjs +0 -2
@@ -0,0 +1,135 @@
1
+ import { AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_OFFSET, AI_TABLE_ROW_ADD_BUTTON, DEFAULT_FONT_STYLE } from '../../constants';
2
+ import { AITable, AITableQueries } from '../../core';
3
+ import { AITableAreaType, AITableRowType } from '../../types';
4
+ import { getCellHorizontalPosition, transformCellValue } from '../../utils';
5
+ import { addRowLayout } from '../drawers/add-row-layout-drawer';
6
+ import { cellDrawer } from '../drawers/cell-drawer';
7
+ import { recordRowLayout } from '../drawers/record-row-layout-drawer';
8
+ /**
9
+ * 绘制单元格内容的函数
10
+ * 利用 Canvas API 绘制每个单元格的背景颜色、文本以及其他可能的样式。这个函数通常用于自定义表格渲染,尤其是在处理大量数据时,通过直接操作 Canvas 来提高渲染性能
11
+ * @param config
12
+ */
13
+ export const createCells = (config) => {
14
+ const { aiTable, coordinate, references, ctx, rowStartIndex, rowStopIndex, columnStartIndex, columnStopIndex } = config;
15
+ const context = aiTable.context;
16
+ const { rowHeight, columnCount, rowCount } = coordinate;
17
+ const colors = AITable.getColors();
18
+ const visibleColumns = AITable.getVisibleFields(aiTable);
19
+ // 初始化绘图上下文, 为后续的绘制操作做准备
20
+ cellDrawer.initCtx(ctx);
21
+ addRowLayout.initCtx(ctx);
22
+ recordRowLayout.initCtx(ctx);
23
+ // 遍历列, 确定在哪些列上绘制单元格
24
+ for (let columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {
25
+ if (columnIndex > columnCount - 1)
26
+ break;
27
+ // 获取该列对应的 field,如果 field 不再展示范围,则跳过该列
28
+ const field = visibleColumns[columnIndex];
29
+ if (field == null)
30
+ continue;
31
+ // 获取该列对应的宽度
32
+ const columnWidth = coordinate.getColumnWidth(columnIndex);
33
+ const x = coordinate.getColumnOffset(columnIndex) + AI_TABLE_OFFSET;
34
+ const isLastColumn = columnIndex === aiTable.fields.length - 1;
35
+ if (columnIndex === 1) {
36
+ cellDrawer.initStyle(field, { fontWeight: DEFAULT_FONT_STYLE });
37
+ }
38
+ // 遍历行, 从 rowStartIndex 到 rowStopIndex 的所有行,决定将在哪些行上绘制单元格
39
+ for (let rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {
40
+ if (rowIndex > rowCount - 1)
41
+ break;
42
+ const row = context.linearRows()[rowIndex];
43
+ const { _id: recordId, type } = row;
44
+ const y = coordinate.getRowOffset(rowIndex) + AI_TABLE_OFFSET;
45
+ const { rowIndex: pointRowIndex, areaType, targetName } = context.pointPosition();
46
+ const isHover = pointRowIndex === rowIndex && areaType !== AITableAreaType.none;
47
+ switch (type) {
48
+ case AITableRowType.add: {
49
+ const isHoverRow = isHover && targetName === AI_TABLE_ROW_ADD_BUTTON;
50
+ addRowLayout.init({
51
+ x,
52
+ y,
53
+ rowIndex,
54
+ columnIndex,
55
+ columnWidth,
56
+ rowHeight: AI_TABLE_FIELD_HEAD_HEIGHT,
57
+ columnCount,
58
+ containerWidth: coordinate.containerWidth
59
+ });
60
+ addRowLayout.render({
61
+ isHoverRow
62
+ });
63
+ break;
64
+ }
65
+ case AITableRowType.record: {
66
+ let background = colors.white;
67
+ const isCheckedRow = aiTable.selection().selectedRecords.has(row._id);
68
+ const isSelected = aiTable.selection().selectedFields.has(field._id);
69
+ const isHoverRow = isHover && targetName !== AI_TABLE_FIELD_HEAD;
70
+ if (isCheckedRow || isSelected) {
71
+ background = colors.itemActiveBgColor;
72
+ }
73
+ else if (isHoverRow) {
74
+ background = colors.gray80;
75
+ }
76
+ recordRowLayout.init({
77
+ x,
78
+ y,
79
+ rowIndex,
80
+ columnIndex,
81
+ columnWidth,
82
+ rowHeight,
83
+ columnCount,
84
+ containerWidth: coordinate.containerWidth
85
+ });
86
+ recordRowLayout.render({
87
+ row,
88
+ style: { fill: background },
89
+ isHoverRow,
90
+ isCheckedRow
91
+ });
92
+ const { width, offset } = getCellHorizontalPosition({
93
+ columnIndex,
94
+ columnWidth,
95
+ columnCount
96
+ });
97
+ const realX = x + offset + AI_TABLE_OFFSET;
98
+ const realY = y + AI_TABLE_OFFSET;
99
+ const style = { fontWeight: DEFAULT_FONT_STYLE };
100
+ const cellValue = AITableQueries.getFieldValue(aiTable, [recordId, field._id]);
101
+ const transformValue = transformCellValue(aiTable, field, cellValue);
102
+ const render = {
103
+ aiTable,
104
+ x: realX,
105
+ y: realY,
106
+ columnWidth: width,
107
+ rowHeight,
108
+ recordId: recordId,
109
+ field,
110
+ cellValue,
111
+ transformValue,
112
+ references,
113
+ isActive: isSelected,
114
+ style,
115
+ colors
116
+ };
117
+ cellDrawer.initStyle(field, style);
118
+ // 最后一列,且单元格内容存在,需要裁剪内容,以防止文本溢出单元格边界
119
+ // 然后,根据计算好的样式和布局绘制单元格内容
120
+ if (isLastColumn && cellValue != null) {
121
+ ctx.save();
122
+ ctx.rect(realX, realY, width, rowHeight);
123
+ ctx.clip();
124
+ cellDrawer.renderCell(render, ctx);
125
+ ctx.restore();
126
+ }
127
+ else {
128
+ cellDrawer.renderCell(render, ctx);
129
+ }
130
+ }
131
+ }
132
+ }
133
+ }
134
+ };
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNlbGxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvY3JlYXRpb25zL2NyZWF0ZS1jZWxscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNyQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLFlBQVksQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUEyQyxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXRFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLEVBQUU7SUFDNUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUN4SCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBMEIsQ0FBQztJQUNuRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFDeEQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25DLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxn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TyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDckUsTUFBTSxNQUFNLEdBQUc7d0JBQ1gsT0FBTzt3QkFDUCxDQUFDLEVBQUUsS0FBSzt3QkFDUixDQUFDLEVBQUUsS0FBSzt3QkFDUixXQUFXLEVBQUUsS0FBSzt3QkFDbEIsU0FBUzt3QkFDVCxRQUFRLEVBQUUsUUFBUTt3QkFDbEIsS0FBSzt3QkFDTCxTQUFTO3dCQUNULGNBQWM7d0JBQ2QsVUFBVTt3QkFDVixRQUFRLEVBQUUsVUFBVTt3QkFDcEIsS0FBSzt3QkFDTCxNQUFNO3FCQUNULENBQUM7b0JBRUYsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ25DLG9DQUFvQztvQkFDcEMsd0JBQXdCO29CQUN4QixJQUFJLFlBQVksSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFLENBQUM7d0JBQ3BDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDWCxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO3dCQUN6QyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ1gsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUF1QixFQUFFLEdBQStCLENBQUMsQ0FBQzt3QkFDaEYsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNsQixDQUFDO3lCQUFNLENBQUM7d0JBQ0osVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUF1QixFQUFFLEdBQStCLENBQUMsQ0FBQztvQkFDcEYsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBSV9UQUJMRV9GSUVMRF9IRUFELFxuICAgIEFJX1RBQkxFX0ZJRUxEX0hFQURfSEVJR0hULFxuICAgIEFJX1RBQkxFX09GRlNFVCxcbiAgICBBSV9UQUJMRV9ST1dfQUREX0JVVFRPTixcbiAgICBERUZBVUxUX0ZPTlRfU1RZTEVcbn0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFJVGFibGUsIEFJVGFibGVRdWVyaWVzLCBSZW5kZXJlckNvbnRleHQgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVBcmVhVHlwZSwgQUlUYWJsZUNlbGxzRHJhd2VyQ29uZmlnLCBBSVRhYmxlUmVuZGVyLCBBSVRhYmxlUm93VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGdldENlbGxIb3Jpem9udGFsUG9zaXRpb24sIHRyYW5zZm9ybUNlbGxWYWx1ZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGFkZFJvd0xheW91dCB9IGZyb20gJy4uL2RyYXdlcnMvYWRkLXJvdy1sYXlvdXQtZHJhd2VyJztcbmltcG9ydCB7IGNlbGxEcmF3ZXIgfSBmcm9tICcuLi9kcmF3ZXJzL2NlbGwtZHJhd2VyJztcbmltcG9ydCB7IHJlY29yZFJvd0xheW91dCB9IGZyb20gJy4uL2RyYXdlcnMvcmVjb3JkLXJvdy1sYXlvdXQtZHJhd2VyJztcblxuLyoqXG4gKiDnu5jliLbljZXlhYPmoLzlhoXlrrnnmoTlh73mlbBcbiAqIOWIqeeUqCBDYW52YXMgQVBJIOe7mOWItuavj+S4quWNleWFg+agvOeahOiDjOaZr+minOiJsuOAgeaWh+acrOS7peWPiuWFtuS7luWPr+iDveeahOagt+W8j+OAgui/meS4quWHveaVsOmAmuW4uOeUqOS6juiHquWumuS5ieihqOagvOa4suafk++8jOWwpOWFtuaYr+WcqOWkhOeQhuWkp+mHj+aVsOaNruaXtu+8jOmAmui/h+ebtOaOpeaTjeS9nCBDYW52YXMg5p2l5o+Q6auY5riy5p+T5oCn6IO9XG4gKiBAcGFyYW0gY29uZmlnXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVDZWxscyA9IChjb25maWc6IEFJVGFibGVDZWxsc0RyYXdlckNvbmZpZykgPT4ge1xuICAgIGNvbnN0IHsgYWlUYWJsZSwgY29vcmRpbmF0ZSwgcmVmZXJlbmNlcywgY3R4LCByb3dTdGFydEluZGV4LCByb3dTdG9wSW5kZXgsIGNvbHVtblN0YXJ0SW5kZXgsIGNvbHVtblN0b3BJbmRleCB9ID0gY29uZmlnO1xuICAgIGNvbnN0IGNvbnRleHQgPSBhaVRhYmxlLmNvbnRleHQgYXMgUmVuZGVyZXJDb250ZXh0O1xuICAgIGNvbnN0IHsgcm93SGVpZ2h0LCBjb2x1bW5Db3VudCwgcm93Q291bnQgfSA9IGNvb3JkaW5hdGU7XG4gICAgY29uc3QgY29sb3JzID0gQUlUYWJsZS5nZXRDb2xvcnMoKTtcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IEFJVGFibGUuZ2V0VmlzaWJsZUZpZWxkcyhhaVRhYmxlKTtcblxuICAgIC8vIOWIneWni+WMlue7mOWbvuS4iuS4i+aWhywg5Li65ZCO57ut55qE57uY5Yi25pON5L2c5YGa5YeG5aSHXG4gICAgY2VsbERyYXdlci5pbml0Q3R4KGN0eCBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpO1xuICAgIGFkZFJvd0xheW91dC5pbml0Q3R4KGN0eCBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpO1xuICAgIHJlY29yZFJvd0xheW91dC5pbml0Q3R4KGN0eCBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpO1xuXG4gICAgLy8g6YGN5Y6G5YiXLCDnoa7lrprlnKjlk6rkupvliJfkuIrnu5jliLbljZXlhYPmoLxcbiAgICBmb3IgKGxldCBjb2x1bW5JbmRleCA9IGNvbHVtblN0YXJ0SW5kZXg7IGNvbHVtbkluZGV4IDw9IGNvbHVtblN0b3BJbmRleDsgY29sdW1uSW5kZXgrKykge1xuICAgICAgICBpZiAoY29sdW1uSW5kZXggPiBjb2x1bW5Db3VudCAtIDEpIGJyZWFrO1xuXG4gICAgICAgIC8vIOiOt+WPluivpeWIl+WvueW6lOeahCBmaWVsZO+8jOWmguaenCBmaWVsZCDkuI3lho3lsZXnpLrojIPlm7TvvIzliJnot7Pov4for6XliJdcbiAgICAgICAgY29uc3QgZmllbGQgPSB2aXNpYmxlQ29sdW1uc1tjb2x1bW5JbmRleF07XG4gICAgICAgIGlmIChmaWVsZCA9PSBudWxsKSBjb250aW51ZTtcblxuICAgICAgICAvLyDojrflj5bor6XliJflr7nlupTnmoTlrr3luqZcbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBjb29yZGluYXRlLmdldENvbHVtbldpZHRoKGNvbHVtbkluZGV4KTtcbiAgICAgICAgY29uc3QgeCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uT2Zmc2V0KGNvbHVtbkluZGV4KSArIEFJX1RBQkxFX09GRlNFVDtcbiAgICAgICAgY29uc3QgaXNMYXN0Q29sdW1uID0gY29sdW1uSW5kZXggPT09IGFpVGFibGUuZmllbGRzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgaWYgKGNvbHVtbkluZGV4ID09PSAxKSB7XG4gICAgICAgICAgICBjZWxsRHJhd2VyLmluaXRTdHlsZShmaWVsZCwgeyBmb250V2VpZ2h0OiBERUZBVUxUX0ZPTlRfU1RZTEUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDpgY3ljobooYwsIOS7jiByb3dTdGFydEluZGV4IOWIsCByb3dTdG9wSW5kZXgg55qE5omA5pyJ6KGM77yM5Yaz5a6a5bCG5Zyo5ZOq5Lqb6KGM5LiK57uY5Yi25Y2V5YWD5qC8XG4gICAgICAgIGZvciAobGV0IHJvd0luZGV4ID0gcm93U3RhcnRJbmRleDsgcm93SW5kZXggPD0gcm93U3RvcEluZGV4OyByb3dJbmRleCsrKSB7XG4gICAgICAgICAgICBpZiAocm93SW5kZXggPiByb3dDb3VudCAtIDEpIGJyZWFrO1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gY29udGV4dC5saW5lYXJSb3dzKClbcm93SW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgeyBfaWQ6IHJlY29yZElkLCB0eXBlIH0gPSByb3c7XG4gICAgICAgICAgICBjb25zdCB5ID0gY29vcmRpbmF0ZS5nZXRSb3dPZmZzZXQocm93SW5kZXgpICsgQUlfVEFCTEVfT0ZGU0VUO1xuICAgICAgICAgICAgY29uc3QgeyByb3dJbmRleDogcG9pbnRSb3dJbmRleCwgYXJlYVR5cGUsIHRhcmdldE5hbWUgfSA9IGNvbnRleHQucG9pbnRQb3NpdGlvbigpO1xuICAgICAgICAgICAgY29uc3QgaXNIb3ZlciA9IHBvaW50Um93SW5kZXggPT09IHJvd0luZGV4ICYmIGFyZWFUeXBlICE9PSBBSVRhYmxlQXJlYVR5cGUubm9uZTtcblxuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBBSVRhYmxlUm93VHlwZS5hZGQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNIb3ZlclJvdyA9IGlzSG92ZXIgJiYgdGFyZ2V0TmFtZSA9PT0gQUlfVEFCTEVfUk9XX0FERF9CVVRUT047XG4gICAgICAgICAgICAgICAgICAgIGFkZFJvd0xheW91dC5pbml0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICB5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93SGVpZ2h0OiBBSV9UQUJMRV9GSUVMRF9IRUFEX0hFSUdIVCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyV2lkdGg6IGNvb3JkaW5hdGUuY29udGFpbmVyV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGFkZFJvd0xheW91dC5yZW5kZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3ZlclJvd1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQUlUYWJsZVJvd1R5cGUucmVjb3JkOiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBiYWNrZ3JvdW5kID0gY29sb3JzLndoaXRlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0NoZWNrZWRSb3cgPSBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkUmVjb3Jkcy5oYXMocm93Ll9pZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkRmllbGRzLmhhcyhmaWVsZC5faWQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0hvdmVyUm93ID0gaXNIb3ZlciAmJiB0YXJnZXROYW1lICE9PSBBSV9UQUJMRV9GSUVMRF9IRUFEO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDaGVja2VkUm93IHx8IGlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQgPSBjb2xvcnMuaXRlbUFjdGl2ZUJnQ29sb3I7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNIb3ZlclJvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZCA9IGNvbG9ycy5ncmF5ODA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkUm93TGF5b3V0LmluaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHksXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcldpZHRoOiBjb29yZGluYXRlLmNvbnRhaW5lcldpZHRoXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZWNvcmRSb3dMYXlvdXQucmVuZGVyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7IGZpbGw6IGJhY2tncm91bmQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzSG92ZXJSb3csXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0NoZWNrZWRSb3dcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIG9mZnNldCB9ID0gZ2V0Q2VsbEhvcml6b250YWxQb3NpdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uQ291bnRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWxYID0geCArIG9mZnNldCArIEFJX1RBQkxFX09GRlNFVDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVhbFkgPSB5ICsgQUlfVEFCTEVfT0ZGU0VUO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHlsZSA9IHsgZm9udFdlaWdodDogREVGQVVMVF9GT05UX1NUWUxFIH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxWYWx1ZSA9IEFJVGFibGVRdWVyaWVzLmdldEZpZWxkVmFsdWUoYWlUYWJsZSwgW3JlY29yZElkLCBmaWVsZC5faWRdKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtVmFsdWUgPSB0cmFuc2Zvcm1DZWxsVmFsdWUoYWlUYWJsZSwgZmllbGQsIGNlbGxWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbmRlciA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFpVGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB4OiByZWFsWCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHJlYWxZLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uV2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkSWQ6IHJlY29yZElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjZWxsVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZTogaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgY2VsbERyYXdlci5pbml0U3R5bGUoZmllbGQsIHN0eWxlKTtcbiAgICAgICAgICAgICAgICAgICAgLy8g5pyA5ZCO5LiA5YiX77yM5LiU5Y2V5YWD5qC85YaF5a655a2Y5Zyo77yM6ZyA6KaB6KOB5Ymq5YaF5a6577yM5Lul6Ziy5q2i5paH5pys5rqi5Ye65Y2V5YWD5qC86L6555WMXG4gICAgICAgICAgICAgICAgICAgIC8vIOeEtuWQju+8jOagueaNruiuoeeul+WlveeahOagt+W8j+WSjOW4g+WxgOe7mOWItuWNleWFg+agvOWGheWuuVxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNMYXN0Q29sdW1uICYmIGNlbGxWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdHguc2F2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnJlY3QocmVhbFgsIHJlYWxZLCB3aWR0aCwgcm93SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5jbGlwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjZWxsRHJhd2VyLnJlbmRlckNlbGwocmVuZGVyIGFzIEFJVGFibGVSZW5kZXIsIGN0eCBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxEcmF3ZXIucmVuZGVyQ2VsbChyZW5kZXIgYXMgQUlUYWJsZVJlbmRlciwgY3R4IGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19
@@ -0,0 +1,45 @@
1
+ import { AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_MORE, Colors } from '../../constants';
2
+ export const createColumnHeads = (config) => {
3
+ const { coordinate, columnStartIndex, columnStopIndex, pointPosition, aiTable } = config;
4
+ const colors = Colors;
5
+ const { columnCount, rowInitSize: fieldHeadHeight } = coordinate;
6
+ const { columnIndex: pointColumnIndex, targetName: pointTargetName } = pointPosition;
7
+ const { fields } = aiTable;
8
+ const getFieldHeadStatus = (fieldId) => {
9
+ const iconVisible = [AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_MORE].includes(pointTargetName) && fields()[pointColumnIndex]?._id === fieldId;
10
+ const isHoverIcon = pointTargetName === AI_TABLE_FIELD_HEAD_MORE && fields()[pointColumnIndex]?._id === fieldId;
11
+ const isSelected = aiTable.selection().selectedFields.has(fieldId);
12
+ return {
13
+ iconVisible,
14
+ isSelected,
15
+ isHoverIcon
16
+ };
17
+ };
18
+ const fieldHeads = [];
19
+ for (let columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {
20
+ if (columnIndex > columnCount - 1)
21
+ break;
22
+ if (columnIndex < 0)
23
+ continue;
24
+ const field = fields()[columnIndex];
25
+ if (field == null)
26
+ continue;
27
+ const x = coordinate.getColumnOffset(columnIndex);
28
+ const columnWidth = coordinate.getColumnWidth(columnIndex);
29
+ const { iconVisible, isSelected, isHoverIcon } = getFieldHeadStatus(field._id);
30
+ const fieldHead = {
31
+ x,
32
+ y: 0,
33
+ width: columnWidth,
34
+ height: fieldHeadHeight,
35
+ field,
36
+ stroke: columnIndex === 0 ? colors.transparent : undefined,
37
+ iconVisible,
38
+ isSelected,
39
+ isHoverIcon
40
+ };
41
+ fieldHeads.push(fieldHead);
42
+ }
43
+ return fieldHeads;
44
+ };
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWhlYWRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvY3JlYXRpb25zL2NyZWF0ZS1oZWFkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHeEYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLEVBQUU7SUFDbEUsTUFBTSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUN6RixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdEIsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLEdBQUcsVUFBVSxDQUFDO0lBQ2pFLE1BQU0sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxHQUFHLGFBQWEsQ0FBQztJQUNyRixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTNCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtRQUMzQyxNQUFNLFdBQVcsR0FDYixDQUFDLG1CQUFtQixFQUFFLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQztRQUM3SCxNQUFNLFdBQVcsR0FBRyxlQUFlLEtBQUssd0JBQXdCLElBQUksTUFBTSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxHQUFHLEtBQUssT0FBTyxDQUFDO1FBQ2hILE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLE9BQU87WUFDSCxXQUFXO1lBQ1gsVUFBVTtZQUNWLFdBQVc7U0FDZCxDQUFDO0lBQ04sQ0FBQyxDQUFDO0lBRUYsTUFBTSxVQUFVLEdBQTZCLEVBQUUsQ0FBQztJQUNoRCxLQUFLLElBQUksV0FBVyxHQUFHLGdCQUFnQixFQUFFLFdBQVcsSUFBSSxlQUFlLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUNyRixJQUFJLFdBQVcsR0FBRyxXQUFXLEdBQUcsQ0FBQztZQUFFLE1BQU07UUFDekMsSUFBSSxXQUFXLEdBQUcsQ0FBQztZQUFFLFNBQVM7UUFDOUIsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEMsSUFBSSxLQUFLLElBQUksSUFBSTtZQUFFLFNBQVM7UUFDNUIsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNELE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvRSxNQUFNLFNBQVMsR0FBRztZQUNkLENBQUM7WUFDRCxDQUFDLEVBQUUsQ0FBQztZQUNKLEtBQUssRUFBRSxXQUFXO1lBQ2xCLE1BQU0sRUFBRSxlQUFlO1lBQ3ZCLEtBQUs7WUFDTCxNQUFNLEVBQUUsV0FBVyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUMxRCxXQUFXO1lBQ1gsVUFBVTtZQUNWLFdBQVc7U0FDZCxDQUFDO1FBRUYsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlfVEFCTEVfRklFTERfSEVBRCwgQUlfVEFCTEVfRklFTERfSEVBRF9NT1JFLCBDb2xvcnMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQUlUYWJsZUNyZWF0ZUhlYWRzQ29uZmlnLCBBSVRhYmxlRmllbGRIZWFkQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29sdW1uSGVhZHMgPSAoY29uZmlnOiBBSVRhYmxlQ3JlYXRlSGVhZHNDb25maWcpID0+IHtcbiAgICBjb25zdCB7IGNvb3JkaW5hdGUsIGNvbHVtblN0YXJ0SW5kZXgsIGNvbHVtblN0b3BJbmRleCwgcG9pbnRQb3NpdGlvbiwgYWlUYWJsZSB9ID0gY29uZmlnO1xuICAgIGNvbnN0IGNvbG9ycyA9IENvbG9ycztcbiAgICBjb25zdCB7IGNvbHVtbkNvdW50LCByb3dJbml0U2l6ZTogZmllbGRIZWFkSGVpZ2h0IH0gPSBjb29yZGluYXRlO1xuICAgIGNvbnN0IHsgY29sdW1uSW5kZXg6IHBvaW50Q29sdW1uSW5kZXgsIHRhcmdldE5hbWU6IHBvaW50VGFyZ2V0TmFtZSB9ID0gcG9pbnRQb3NpdGlvbjtcbiAgICBjb25zdCB7IGZpZWxkcyB9ID0gYWlUYWJsZTtcblxuICAgIGNvbnN0IGdldEZpZWxkSGVhZFN0YXR1cyA9IChmaWVsZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgaWNvblZpc2libGUgPVxuICAgICAgICAgICAgW0FJX1RBQkxFX0ZJRUxEX0hFQUQsIEFJX1RBQkxFX0ZJRUxEX0hFQURfTU9SRV0uaW5jbHVkZXMocG9pbnRUYXJnZXROYW1lKSAmJiBmaWVsZHMoKVtwb2ludENvbHVtbkluZGV4XT8uX2lkID09PSBmaWVsZElkO1xuICAgICAgICBjb25zdCBpc0hvdmVySWNvbiA9IHBvaW50VGFyZ2V0TmFtZSA9PT0gQUlfVEFCTEVfRklFTERfSEVBRF9NT1JFICYmIGZpZWxkcygpW3BvaW50Q29sdW1uSW5kZXhdPy5faWQgPT09IGZpZWxkSWQ7XG4gICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBhaVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkRmllbGRzLmhhcyhmaWVsZElkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGljb25WaXNpYmxlLFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIGlzSG92ZXJJY29uXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGZpZWxkSGVhZHM6IEFJVGFibGVGaWVsZEhlYWRDb25maWdbXSA9IFtdO1xuICAgIGZvciAobGV0IGNvbHVtbkluZGV4ID0gY29sdW1uU3RhcnRJbmRleDsgY29sdW1uSW5kZXggPD0gY29sdW1uU3RvcEluZGV4OyBjb2x1bW5JbmRleCsrKSB7XG4gICAgICAgIGlmIChjb2x1bW5JbmRleCA+IGNvbHVtbkNvdW50IC0gMSkgYnJlYWs7XG4gICAgICAgIGlmIChjb2x1bW5JbmRleCA8IDApIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcygpW2NvbHVtbkluZGV4XTtcbiAgICAgICAgaWYgKGZpZWxkID09IG51bGwpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCB4ID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5PZmZzZXQoY29sdW1uSW5kZXgpO1xuICAgICAgICBjb25zdCBjb2x1bW5XaWR0aCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uV2lkdGgoY29sdW1uSW5kZXgpO1xuICAgICAgICBjb25zdCB7IGljb25WaXNpYmxlLCBpc1NlbGVjdGVkLCBpc0hvdmVySWNvbiB9ID0gZ2V0RmllbGRIZWFkU3RhdHVzKGZpZWxkLl9pZCk7XG4gICAgICAgIGNvbnN0IGZpZWxkSGVhZCA9IHtcbiAgICAgICAgICAgIHgsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgd2lkdGg6IGNvbHVtbldpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBmaWVsZEhlYWRIZWlnaHQsXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHN0cm9rZTogY29sdW1uSW5kZXggPT09IDAgPyBjb2xvcnMudHJhbnNwYXJlbnQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBpY29uVmlzaWJsZSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBpc0hvdmVySWNvblxuICAgICAgICB9O1xuXG4gICAgICAgIGZpZWxkSGVhZHMucHVzaChmaWVsZEhlYWQpO1xuICAgIH1cbiAgICByZXR1cm4gZmllbGRIZWFkcztcbn07XG4iXX0=
@@ -0,0 +1,97 @@
1
+ import { AddOutlinedPath, AI_TABLE_CELL_PADDING, AI_TABLE_FIELD_ADD_BUTTON_WIDTH, AI_TABLE_ICON_COMMON_SIZE, AI_TABLE_OFFSET, AI_TABLE_ROW_HEAD_SIZE, AI_TABLE_ROW_HEAD_WIDTH } from '../../constants';
2
+ import { Layout } from './layout-drawer';
3
+ export class AddRowLayout extends Layout {
4
+ renderAddFieldBlank() {
5
+ super.renderAddFieldBlank();
6
+ const rowHeight = this.rowHeight;
7
+ const defaultWidth = AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
8
+ const width = this.containerWidth - this.x < defaultWidth ? defaultWidth : this.containerWidth - this.x;
9
+ this.line({
10
+ x: this.x + this.columnWidth,
11
+ y: this.y,
12
+ points: [0, rowHeight, width, rowHeight],
13
+ stroke: this.colors.gray200
14
+ });
15
+ }
16
+ renderCell({ width, isHoverRow }) {
17
+ const x = this.x;
18
+ const y = this.y;
19
+ const rowHeight = this.rowHeight;
20
+ const fill = isHoverRow ? this.colors.gray80 : this.colors.transparent;
21
+ this.rect({
22
+ x,
23
+ y: y + AI_TABLE_OFFSET,
24
+ width: width,
25
+ height: rowHeight,
26
+ fill
27
+ });
28
+ this.line({
29
+ x,
30
+ y: y + rowHeight,
31
+ points: [0, 0, width, 0],
32
+ stroke: this.colors.gray200
33
+ });
34
+ }
35
+ renderFirstCell({ isHoverRow }) {
36
+ if (!this.isFirst)
37
+ return;
38
+ const y = this.y;
39
+ const rowHeight = this.rowHeight;
40
+ const columnWidth = this.columnWidth;
41
+ const frozenOffset = AI_TABLE_OFFSET;
42
+ const fill = isHoverRow ? this.colors.gray80 : this.colors.transparent;
43
+ this.rect({
44
+ x: frozenOffset,
45
+ y: y + AI_TABLE_OFFSET,
46
+ width: columnWidth + AI_TABLE_ROW_HEAD_WIDTH - frozenOffset + 1,
47
+ height: rowHeight,
48
+ fill
49
+ });
50
+ this.line({
51
+ x: frozenOffset,
52
+ y,
53
+ points: [0, rowHeight, columnWidth + AI_TABLE_ROW_HEAD_WIDTH - frozenOffset + 1, rowHeight],
54
+ stroke: this.colors.gray200
55
+ });
56
+ this.path({
57
+ x: AI_TABLE_CELL_PADDING,
58
+ y: y + (rowHeight - AI_TABLE_ICON_COMMON_SIZE) / 2 - AI_TABLE_OFFSET,
59
+ data: AddOutlinedPath,
60
+ size: AI_TABLE_ROW_HEAD_SIZE,
61
+ fill: this.colors.gray600
62
+ });
63
+ }
64
+ renderLastCell({ isHoverRow }) {
65
+ if (!this.isLast)
66
+ return;
67
+ const width = this.columnWidth;
68
+ if (!this.isFirst) {
69
+ this.renderCell({
70
+ width,
71
+ isHoverRow
72
+ });
73
+ }
74
+ this.renderAddFieldBlank();
75
+ }
76
+ renderCommonCell({ isHoverRow }) {
77
+ if (this.isFirst || this.isLast)
78
+ return;
79
+ this.renderCell({
80
+ width: this.columnWidth,
81
+ isHoverRow
82
+ });
83
+ }
84
+ render({ isHoverRow }) {
85
+ this.renderFirstCell({
86
+ isHoverRow
87
+ });
88
+ this.renderCommonCell({
89
+ isHoverRow
90
+ });
91
+ this.renderLastCell({
92
+ isHoverRow
93
+ });
94
+ }
95
+ }
96
+ export const addRowLayout = new AddRowLayout();
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJvdy1sYXlvdXQtZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcmVuZGVyZXIvZHJhd2Vycy9hZGQtcm93LWxheW91dC1kcmF3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGVBQWUsRUFDZixxQkFBcUIsRUFDckIsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUMxQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxNQUFNLE9BQU8sWUFBYSxTQUFRLE1BQU07SUFDM0IsbUJBQW1CO1FBQ3hCLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTVCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakMsTUFBTSxZQUFZLEdBQUcsK0JBQStCLENBQUM7UUFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFeEcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNOLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQzVCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNULE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQztZQUN4QyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1NBQzlCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUE2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QUUsVUFBVSxFQUFtQztRQUNwRSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDWixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDdkIsVUFBVTtTQUNiLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQW1DO1FBQ2xELElBQUksQ0FBQyxlQUFlLENBQUM7WUFDakIsVUFBVTtTQUNiLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNsQixVQUFVO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNoQixVQUFVO1NBQ2IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFkZE91dGxpbmVkUGF0aCxcbiAgICBBSV9UQUJMRV9DRUxMX1BBRERJTkcsXG4gICAgQUlfVEFCTEVfRklFTERfQUREX0JVVFRPTl9XSURUSCxcbiAgICBBSV9UQUJMRV9JQ09OX0NPTU1PTl9TSVpFLFxuICAgIEFJX1RBQkxFX09GRlNFVCxcbiAgICBBSV9UQUJMRV9ST1dfSEVBRF9TSVpFLFxuICAgIEFJX1RBQkxFX1JPV19IRUFEX1dJRFRIXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBSVRhYmxlQ2VsbCB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IExheW91dCB9IGZyb20gJy4vbGF5b3V0LWRyYXdlcic7XG5cbmV4cG9ydCBjbGFzcyBBZGRSb3dMYXlvdXQgZXh0ZW5kcyBMYXlvdXQge1xuICAgIG92ZXJyaWRlIHJlbmRlckFkZEZpZWxkQmxhbmsoKSB7XG4gICAgICAgIHN1cGVyLnJlbmRlckFkZEZpZWxkQmxhbmsoKTtcblxuICAgICAgICBjb25zdCByb3dIZWlnaHQgPSB0aGlzLnJvd0hlaWdodDtcbiAgICAgICAgY29uc3QgZGVmYXVsdFdpZHRoID0gQUlfVEFCTEVfRklFTERfQUREX0JVVFRPTl9XSURUSDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmNvbnRhaW5lcldpZHRoIC0gdGhpcy54IDwgZGVmYXVsdFdpZHRoID8gZGVmYXVsdFdpZHRoIDogdGhpcy5jb250YWluZXJXaWR0aCAtIHRoaXMueDtcblxuICAgICAgICB0aGlzLmxpbmUoe1xuICAgICAgICAgICAgeDogdGhpcy54ICsgdGhpcy5jb2x1bW5XaWR0aCxcbiAgICAgICAgICAgIHk6IHRoaXMueSxcbiAgICAgICAgICAgIHBvaW50czogWzAsIHJvd0hlaWdodCwgd2lkdGgsIHJvd0hlaWdodF0sXG4gICAgICAgICAgICBzdHJva2U6IHRoaXMuY29sb3JzLmdyYXkyMDBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJDZWxsKHsgd2lkdGgsIGlzSG92ZXJSb3cgfTogUGljazxBSVRhYmxlQ2VsbCwgJ3dpZHRoJyB8ICdpc0hvdmVyUm93Jz4pIHtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMueDtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMueTtcbiAgICAgICAgY29uc3Qgcm93SGVpZ2h0ID0gdGhpcy5yb3dIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGZpbGwgPSBpc0hvdmVyUm93ID8gdGhpcy5jb2xvcnMuZ3JheTgwIDogdGhpcy5jb2xvcnMudHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgdGhpcy5yZWN0KHtcbiAgICAgICAgICAgIHgsXG4gICAgICAgICAgICB5OiB5ICsgQUlfVEFCTEVfT0ZGU0VULFxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoIGFzIG51bWJlcixcbiAgICAgICAgICAgIGhlaWdodDogcm93SGVpZ2h0LFxuICAgICAgICAgICAgZmlsbFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5saW5lKHtcbiAgICAgICAgICAgIHgsXG4gICAgICAgICAgICB5OiB5ICsgcm93SGVpZ2h0LFxuICAgICAgICAgICAgcG9pbnRzOiBbMCwgMCwgd2lkdGggYXMgbnVtYmVyLCAwXSxcbiAgICAgICAgICAgIHN0cm9rZTogdGhpcy5jb2xvcnMuZ3JheTIwMFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlckZpcnN0Q2VsbCh7IGlzSG92ZXJSb3cgfTogUGljazxBSVRhYmxlQ2VsbCwgJ2lzSG92ZXJSb3cnPikge1xuICAgICAgICBpZiAoIXRoaXMuaXNGaXJzdCkgcmV0dXJuO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy55O1xuICAgICAgICBjb25zdCByb3dIZWlnaHQgPSB0aGlzLnJvd0hlaWdodDtcbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSB0aGlzLmNvbHVtbldpZHRoO1xuICAgICAgICBjb25zdCBmcm96ZW5PZmZzZXQgPSBBSV9UQUJMRV9PRkZTRVQ7XG4gICAgICAgIGNvbnN0IGZpbGwgPSBpc0hvdmVyUm93ID8gdGhpcy5jb2xvcnMuZ3JheTgwIDogdGhpcy5jb2xvcnMudHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgdGhpcy5yZWN0KHtcbiAgICAgICAgICAgIHg6IGZyb3plbk9mZnNldCxcbiAgICAgICAgICAgIHk6IHkgKyBBSV9UQUJMRV9PRkZTRVQsXG4gICAgICAgICAgICB3aWR0aDogY29sdW1uV2lkdGggKyBBSV9UQUJMRV9ST1dfSEVBRF9XSURUSCAtIGZyb3plbk9mZnNldCArIDEsXG4gICAgICAgICAgICBoZWlnaHQ6IHJvd0hlaWdodCxcbiAgICAgICAgICAgIGZpbGxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubGluZSh7XG4gICAgICAgICAgICB4OiBmcm96ZW5PZmZzZXQsXG4gICAgICAgICAgICB5LFxuICAgICAgICAgICAgcG9pbnRzOiBbMCwgcm93SGVpZ2h0LCBjb2x1bW5XaWR0aCArIEFJX1RBQkxFX1JPV19IRUFEX1dJRFRIIC0gZnJvemVuT2Zmc2V0ICsgMSwgcm93SGVpZ2h0XSxcbiAgICAgICAgICAgIHN0cm9rZTogdGhpcy5jb2xvcnMuZ3JheTIwMFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnBhdGgoe1xuICAgICAgICAgICAgeDogQUlfVEFCTEVfQ0VMTF9QQURESU5HLFxuICAgICAgICAgICAgeTogeSArIChyb3dIZWlnaHQgLSBBSV9UQUJMRV9JQ09OX0NPTU1PTl9TSVpFKSAvIDIgLSBBSV9UQUJMRV9PRkZTRVQsXG4gICAgICAgICAgICBkYXRhOiBBZGRPdXRsaW5lZFBhdGgsXG4gICAgICAgICAgICBzaXplOiBBSV9UQUJMRV9ST1dfSEVBRF9TSVpFLFxuICAgICAgICAgICAgZmlsbDogdGhpcy5jb2xvcnMuZ3JheTYwMFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlckxhc3RDZWxsKHsgaXNIb3ZlclJvdyB9OiBQaWNrPEFJVGFibGVDZWxsLCAnaXNIb3ZlclJvdyc+KSB7XG4gICAgICAgIGlmICghdGhpcy5pc0xhc3QpIHJldHVybjtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmNvbHVtbldpZHRoO1xuICAgICAgICBpZiAoIXRoaXMuaXNGaXJzdCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJDZWxsKHtcbiAgICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgICBpc0hvdmVyUm93XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbmRlckFkZEZpZWxkQmxhbmsoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlckNvbW1vbkNlbGwoeyBpc0hvdmVyUm93IH06IFBpY2s8QUlUYWJsZUNlbGwsICdpc0hvdmVyUm93Jz4pIHtcbiAgICAgICAgaWYgKHRoaXMuaXNGaXJzdCB8fCB0aGlzLmlzTGFzdCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnJlbmRlckNlbGwoe1xuICAgICAgICAgICAgd2lkdGg6IHRoaXMuY29sdW1uV2lkdGgsXG4gICAgICAgICAgICBpc0hvdmVyUm93XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbmRlcih7IGlzSG92ZXJSb3cgfTogUGljazxBSVRhYmxlQ2VsbCwgJ2lzSG92ZXJSb3cnPikge1xuICAgICAgICB0aGlzLnJlbmRlckZpcnN0Q2VsbCh7XG4gICAgICAgICAgICBpc0hvdmVyUm93XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlbmRlckNvbW1vbkNlbGwoe1xuICAgICAgICAgICAgaXNIb3ZlclJvd1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZW5kZXJMYXN0Q2VsbCh7XG4gICAgICAgICAgICBpc0hvdmVyUm93XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IGFkZFJvd0xheW91dCA9IG5ldyBBZGRSb3dMYXlvdXQoKTtcbiJdfQ==