d2coreui 23.0.15 → 23.0.17

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 (438) hide show
  1. package/components/codemirror/SyntaxHighlighter.js.map +1 -0
  2. package/components/color/colorSwatch.d.ts +13 -18
  3. package/components/color/colorSwatch.js.map +1 -0
  4. package/{lib/esm/components → components}/date/dateRangeInput.js +1 -1
  5. package/components/date/dateRangeInput.js.map +1 -0
  6. package/{lib/esm/components → components}/date/dateTimeInput.js +1 -1
  7. package/components/date/dateTimeInput.js.map +1 -0
  8. package/{lib/esm/components → components}/date/durationInput.js +2 -2
  9. package/components/date/durationInput.js.map +1 -0
  10. package/{lib/esm/components → components}/grid/cell/cellEditorUtils.js.map +1 -1
  11. package/components/grid/cell/rangeSelector.d.ts +78 -9
  12. package/components/grid/cell/rangeSelector.js +527 -674
  13. package/components/grid/columnUtils.js.map +1 -0
  14. package/{lib/esm/components → components}/grid/export/contextMenu.js +4 -4
  15. package/components/grid/export/progressPopup.js.map +1 -0
  16. package/{lib/esm/components → components}/grid/export/worker/clipboardExport.js.map +1 -1
  17. package/{lib/esm/components → components}/grid/export/worker/csvExport.js.map +1 -1
  18. package/{lib/esm/components → components}/grid/export/worker/txtExport.js.map +1 -1
  19. package/components/icons/ant-design-double-right-outline.svg +5 -5
  20. package/components/icons/ant-design_close-outline.svg +5 -5
  21. package/components/icons/undoIcon.js.map +1 -0
  22. package/components/input/draftUtils.js.map +1 -0
  23. package/components/input/draftail.d.ts +1 -186
  24. package/components/input/draftail.js +2 -1
  25. package/{lib/esm/components → components}/input/draftail.js.map +1 -1
  26. package/components/input/mask/inputMaskCore.js.map +1 -0
  27. package/components/input/mask/pattern.js.map +1 -0
  28. package/components/input/passwordInput.js.map +1 -0
  29. package/components/input/textarea/extractSpansOfClasses.js.map +1 -0
  30. package/components/input/textarea/getRanges.js.map +1 -0
  31. package/{lib/esm/components → components}/input/textarea/getType.js.map +1 -1
  32. package/{lib/esm/components → components}/input/textarea/highlighedContents.js.map +1 -1
  33. package/components/input/textarea/mentionsWithHighlighting.js.map +1 -0
  34. package/{lib/esm/components → components}/keyboard/keyboardUtils.js.map +1 -1
  35. package/components/platformSpecific.js.map +1 -0
  36. package/{lib/esm/components → components}/text/impl/innerSize.js.map +1 -1
  37. package/components/text/impl/series.js.map +1 -0
  38. package/{lib/esm/components → components}/text/impl/shallowEqual.js.map +1 -1
  39. package/{lib/esm/components → components}/text/impl/uniqueId.js.map +1 -1
  40. package/components/text/impl/whilst.js.map +1 -0
  41. package/i18n/components.cs.json +101 -101
  42. package/i18n/components.sk.json +101 -101
  43. package/i18n/components.uk.json +101 -101
  44. package/i18n/componentsLocaleHolder.js +29 -24
  45. package/i18n/componentsLocaleHolder.js.map +1 -0
  46. package/package.json +1 -1
  47. package/style/ag-grid/_ag-theme-antd-vars.scss +194 -194
  48. package/style/ag-grid/ag-theme-antd.scss +87 -87
  49. package/style/ag-grid/aggrid-adaptations.css +42 -42
  50. package/style/ag-grid/aggrid.scss +11 -11
  51. package/style/flexLayout/flexLayout.scss +130 -130
  52. package/style/flexLayout/flexLayoutBase.scss +623 -623
  53. package/style/flexLayout/new/_base.scss +616 -616
  54. package/style/flexLayout/new/flexLayoutBase.scss +621 -621
  55. package/style/flexLayout/new/light.scss +107 -107
  56. package/style/flexLayout/old/_base.scss +551 -551
  57. package/style/flexLayout/old/light.scss +16 -16
  58. package/style/form/niceFormItem.css +38 -38
  59. package/style/loading.css +31 -31
  60. package/style/splitPane/splitPane.css +48 -48
  61. package/tsconfig.build.json +24 -24
  62. package/tsconfig.json +11 -11
  63. package/components/clipboard/clipboardUtils.ts +0 -53
  64. package/components/codemirror/SyntaxHighlighter.tsx +0 -58
  65. package/components/collapse/expandable.tsx +0 -48
  66. package/components/color/colorPicker.tsx +0 -121
  67. package/components/color/colorSwatch.jsx +0 -87
  68. package/components/color/colorUtils.ts +0 -60
  69. package/components/date/dateRangeInput.tsx +0 -468
  70. package/components/date/dateRangeInputAdvancedPanel.tsx +0 -238
  71. package/components/date/dateRangeInputConfirm.tsx +0 -200
  72. package/components/date/dateTimeInput.tsx +0 -633
  73. package/components/date/durationInput.tsx +0 -375
  74. package/components/form/NiceFormItem.tsx +0 -32
  75. package/components/grid/cell/beanAccessor.ts +0 -17
  76. package/components/grid/cell/cellEditorUtils.ts +0 -12
  77. package/components/grid/cell/customEnumCellEditor.tsx +0 -130
  78. package/components/grid/cell/dataGridCellEditorComponent.tsx +0 -61
  79. package/components/grid/cell/dateCellEditor.tsx +0 -83
  80. package/components/grid/cell/durationCellEditor.tsx +0 -105
  81. package/components/grid/cell/hexaOctetStringCellEditor.tsx +0 -101
  82. package/components/grid/cell/hexaValueCellEditor.tsx +0 -92
  83. package/components/grid/cell/numberCellEditor.tsx +0 -115
  84. package/components/grid/cell/simpleStatusTextCellEditor.tsx +0 -168
  85. package/components/grid/cell/statusTextCellEditor.tsx +0 -198
  86. package/components/grid/cell/tableDefaultRowStyleRules.ts +0 -51
  87. package/components/grid/cell/textCellEditor.tsx +0 -94
  88. package/components/grid/cell/withAgGridHooks.tsx +0 -15
  89. package/components/grid/columnUtils.ts +0 -29
  90. package/components/grid/config/columnTransfer.tsx +0 -258
  91. package/components/grid/config/dataGridEditor.tsx +0 -328
  92. package/components/grid/config/rowHeightCalculator.tsx +0 -29
  93. package/components/grid/config/rowStylePicker.tsx +0 -196
  94. package/components/grid/dataGrid.tsx +0 -2183
  95. package/components/grid/detail/detailHeaderPanel.tsx +0 -59
  96. package/components/grid/export/contextMenu.tsx +0 -154
  97. package/components/grid/export/progressPopup.tsx +0 -106
  98. package/components/grid/export/worker/clipboardExport.ts +0 -10
  99. package/components/grid/export/worker/csvExport.ts +0 -10
  100. package/components/grid/export/worker/pdfExport.ts +0 -98
  101. package/components/grid/export/worker/txtExport.ts +0 -21
  102. package/components/grid/extendedDataGrid.tsx +0 -974
  103. package/components/grid/filter/customColumnFilter.tsx +0 -14
  104. package/components/grid/filter/dataGridColumnFilter.tsx +0 -70
  105. package/components/grid/filter/dateColumnFilter.tsx +0 -34
  106. package/components/grid/filter/textColumnFilter.tsx +0 -37
  107. package/components/grid/filter/wildcardQuickFilterEngine.ts +0 -50
  108. package/components/grid/header/simpleHeader.tsx +0 -270
  109. package/components/grid/panel/dataGridPagination.tsx +0 -123
  110. package/components/grid/panel/loadingOverlay.tsx +0 -14
  111. package/components/grid/panel/noRecordsOverlay.tsx +0 -16
  112. package/components/grid/panel/tablePagination.tsx +0 -77
  113. package/components/icons/dropdownArrow.tsx +0 -67
  114. package/components/icons/undoIcon.tsx +0 -16
  115. package/components/input/autoCompleteInput.tsx +0 -174
  116. package/components/input/draftUtils.tsx +0 -62
  117. package/components/input/hexaFormattedInput.tsx +0 -64
  118. package/components/input/mask/helpers.ts +0 -154
  119. package/components/input/mask/inputMaskCore.ts +0 -452
  120. package/components/input/mask/pattern.ts +0 -122
  121. package/components/input/maskedInput.tsx +0 -275
  122. package/components/input/passwordInput.tsx +0 -62
  123. package/components/input/simpleAutoComplete.tsx +0 -60
  124. package/components/input/textarea/extractSpansOfClasses.tsx +0 -125
  125. package/components/input/textarea/getRanges.ts +0 -82
  126. package/components/input/textarea/getType.ts +0 -23
  127. package/components/input/textarea/highlighedContents.tsx +0 -20
  128. package/components/input/textarea/highlightedTextarea.css +0 -61
  129. package/components/input/textarea/mentionsWithHighlighting.tsx +0 -95
  130. package/components/keyboard/keyboardUtils.ts +0 -42
  131. package/components/modal/draggableModalProvider.tsx +0 -37
  132. package/components/modal/impl/clamp.ts +0 -4
  133. package/components/modal/impl/draggableModal.tsx +0 -36
  134. package/components/modal/impl/draggableModalContext.ts +0 -14
  135. package/components/modal/impl/draggableModalInner.tsx +0 -114
  136. package/components/modal/impl/draggableModalReducer.ts +0 -285
  137. package/components/modal/impl/getWindowSize.ts +0 -6
  138. package/components/modal/impl/index.ts +0 -5
  139. package/components/modal/impl/resizeHandle.tsx +0 -12
  140. package/components/modal/impl/useDrag.ts +0 -57
  141. package/components/modal/impl/usePrevious.ts +0 -11
  142. package/components/modal/impl/useResize.ts +0 -79
  143. package/components/modal/modalDialog.tsx +0 -172
  144. package/components/picker/enumValuePicker.tsx +0 -48
  145. package/components/platformSpecific.ts +0 -39
  146. package/components/scrollTo/dom-scroll-into-view.d.ts +0 -1
  147. package/components/scrollTo/onlyText.ts +0 -36
  148. package/components/scrollTo/scrollTo.tsx +0 -324
  149. package/components/style/withCss.tsx +0 -14
  150. package/components/style/withInputNumberCss.tsx +0 -18
  151. package/components/svg.d.ts +0 -1
  152. package/components/table/dragSortingTable.tsx +0 -123
  153. package/components/text/impl/innerSize.ts +0 -15
  154. package/components/text/impl/series.ts +0 -37
  155. package/components/text/impl/shallowEqual.ts +0 -19
  156. package/components/text/impl/uniqueId.ts +0 -5
  157. package/components/text/impl/whilst.ts +0 -25
  158. package/components/text/textFit.tsx +0 -229
  159. package/i18n/componentsLocaleLoader.d.ts +0 -9
  160. package/lib/esm/components/codemirror/SyntaxHighlighter.js.map +0 -1
  161. package/lib/esm/components/color/colorSwatch.d.ts +0 -13
  162. package/lib/esm/components/color/colorSwatch.js.map +0 -1
  163. package/lib/esm/components/date/dateRangeInput.js.map +0 -1
  164. package/lib/esm/components/date/dateTimeInput.js.map +0 -1
  165. package/lib/esm/components/date/durationInput.js.map +0 -1
  166. package/lib/esm/components/grid/cell/rangeSelector.d.ts +0 -78
  167. package/lib/esm/components/grid/cell/rangeSelector.js +0 -527
  168. package/lib/esm/components/grid/columnUtils.js.map +0 -1
  169. package/lib/esm/components/grid/export/progressPopup.js.map +0 -1
  170. package/lib/esm/components/icons/undoIcon.js.map +0 -1
  171. package/lib/esm/components/input/draftUtils.js.map +0 -1
  172. package/lib/esm/components/input/draftail.d.ts +0 -1
  173. package/lib/esm/components/input/draftail.js +0 -2
  174. package/lib/esm/components/input/mask/inputMaskCore.js.map +0 -1
  175. package/lib/esm/components/input/mask/pattern.js.map +0 -1
  176. package/lib/esm/components/input/passwordInput.js.map +0 -1
  177. package/lib/esm/components/input/textarea/extractSpansOfClasses.js.map +0 -1
  178. package/lib/esm/components/input/textarea/getRanges.js.map +0 -1
  179. package/lib/esm/components/input/textarea/mentionsWithHighlighting.js.map +0 -1
  180. package/lib/esm/components/platformSpecific.js.map +0 -1
  181. package/lib/esm/components/text/impl/series.js.map +0 -1
  182. package/lib/esm/components/text/impl/whilst.js.map +0 -1
  183. package/lib/esm/i18n/components.cs.json +0 -101
  184. package/lib/esm/i18n/components.sk.json +0 -101
  185. package/lib/esm/i18n/components.uk.json +0 -101
  186. package/lib/esm/i18n/componentsLocaleHolder.js +0 -29
  187. package/lib/esm/i18n/componentsLocaleHolder.js.map +0 -1
  188. package/lib/esm/package.json +0 -70
  189. package/lib/esm/tsconfig.build.json +0 -24
  190. package/lib/esm/tsconfig.json +0 -11
  191. /package/{lib/esm/components → components}/clipboard/clipboardUtils.d.ts +0 -0
  192. /package/{lib/esm/components → components}/clipboard/clipboardUtils.js +0 -0
  193. /package/{lib/esm/components → components}/clipboard/clipboardUtils.js.map +0 -0
  194. /package/{lib/esm/components → components}/codemirror/SyntaxHighlighter.d.ts +0 -0
  195. /package/{lib/esm/components → components}/codemirror/SyntaxHighlighter.js +0 -0
  196. /package/{lib/esm/components → components}/collapse/expandable.d.ts +0 -0
  197. /package/{lib/esm/components → components}/collapse/expandable.js +0 -0
  198. /package/{lib/esm/components → components}/collapse/expandable.js.map +0 -0
  199. /package/{lib/esm/components → components}/color/colorPicker.d.ts +0 -0
  200. /package/{lib/esm/components → components}/color/colorPicker.js +0 -0
  201. /package/{lib/esm/components → components}/color/colorPicker.js.map +0 -0
  202. /package/{lib/esm/components → components}/color/colorSwatch.js +0 -0
  203. /package/{lib/esm/components → components}/color/colorUtils.d.ts +0 -0
  204. /package/{lib/esm/components → components}/color/colorUtils.js +0 -0
  205. /package/{lib/esm/components → components}/color/colorUtils.js.map +0 -0
  206. /package/{lib/esm/components → components}/date/dateRangeInput.d.ts +0 -0
  207. /package/{lib/esm/components → components}/date/dateRangeInputAdvancedPanel.d.ts +0 -0
  208. /package/{lib/esm/components → components}/date/dateRangeInputAdvancedPanel.js +0 -0
  209. /package/{lib/esm/components → components}/date/dateRangeInputAdvancedPanel.js.map +0 -0
  210. /package/{lib/esm/components → components}/date/dateRangeInputConfirm.d.ts +0 -0
  211. /package/{lib/esm/components → components}/date/dateRangeInputConfirm.js +0 -0
  212. /package/{lib/esm/components → components}/date/dateRangeInputConfirm.js.map +0 -0
  213. /package/{lib/esm/components → components}/date/dateTimeInput.d.ts +0 -0
  214. /package/{lib/esm/components → components}/date/durationInput.d.ts +0 -0
  215. /package/{lib/esm/components → components}/form/NiceFormItem.d.ts +0 -0
  216. /package/{lib/esm/components → components}/form/NiceFormItem.js +0 -0
  217. /package/{lib/esm/components → components}/form/NiceFormItem.js.map +0 -0
  218. /package/{lib/esm/components → components}/grid/cell/beanAccessor.d.ts +0 -0
  219. /package/{lib/esm/components → components}/grid/cell/beanAccessor.js +0 -0
  220. /package/{lib/esm/components → components}/grid/cell/beanAccessor.js.map +0 -0
  221. /package/{lib/esm/components → components}/grid/cell/cellEditorUtils.d.ts +0 -0
  222. /package/{lib/esm/components → components}/grid/cell/cellEditorUtils.js +0 -0
  223. /package/{lib/esm/components → components}/grid/cell/customEnumCellEditor.d.ts +0 -0
  224. /package/{lib/esm/components → components}/grid/cell/customEnumCellEditor.js +0 -0
  225. /package/{lib/esm/components → components}/grid/cell/customEnumCellEditor.js.map +0 -0
  226. /package/{lib/esm/components → components}/grid/cell/dataGridCellEditorComponent.d.ts +0 -0
  227. /package/{lib/esm/components → components}/grid/cell/dataGridCellEditorComponent.js +0 -0
  228. /package/{lib/esm/components → components}/grid/cell/dataGridCellEditorComponent.js.map +0 -0
  229. /package/{lib/esm/components → components}/grid/cell/dateCellEditor.d.ts +0 -0
  230. /package/{lib/esm/components → components}/grid/cell/dateCellEditor.js +0 -0
  231. /package/{lib/esm/components → components}/grid/cell/dateCellEditor.js.map +0 -0
  232. /package/{lib/esm/components → components}/grid/cell/durationCellEditor.d.ts +0 -0
  233. /package/{lib/esm/components → components}/grid/cell/durationCellEditor.js +0 -0
  234. /package/{lib/esm/components → components}/grid/cell/durationCellEditor.js.map +0 -0
  235. /package/{lib/esm/components → components}/grid/cell/hexaOctetStringCellEditor.d.ts +0 -0
  236. /package/{lib/esm/components → components}/grid/cell/hexaOctetStringCellEditor.js +0 -0
  237. /package/{lib/esm/components → components}/grid/cell/hexaOctetStringCellEditor.js.map +0 -0
  238. /package/{lib/esm/components → components}/grid/cell/hexaValueCellEditor.d.ts +0 -0
  239. /package/{lib/esm/components → components}/grid/cell/hexaValueCellEditor.js +0 -0
  240. /package/{lib/esm/components → components}/grid/cell/hexaValueCellEditor.js.map +0 -0
  241. /package/{lib/esm/components → components}/grid/cell/numberCellEditor.d.ts +0 -0
  242. /package/{lib/esm/components → components}/grid/cell/numberCellEditor.js +0 -0
  243. /package/{lib/esm/components → components}/grid/cell/numberCellEditor.js.map +0 -0
  244. /package/{lib/esm/components → components}/grid/cell/rangeSelector.js.map +0 -0
  245. /package/{lib/esm/components → components}/grid/cell/simpleStatusTextCellEditor.d.ts +0 -0
  246. /package/{lib/esm/components → components}/grid/cell/simpleStatusTextCellEditor.js +0 -0
  247. /package/{lib/esm/components → components}/grid/cell/simpleStatusTextCellEditor.js.map +0 -0
  248. /package/{lib/esm/components → components}/grid/cell/statusTextCellEditor.d.ts +0 -0
  249. /package/{lib/esm/components → components}/grid/cell/statusTextCellEditor.js +0 -0
  250. /package/{lib/esm/components → components}/grid/cell/statusTextCellEditor.js.map +0 -0
  251. /package/{lib/esm/components → components}/grid/cell/tableDefaultRowStyleRules.d.ts +0 -0
  252. /package/{lib/esm/components → components}/grid/cell/tableDefaultRowStyleRules.js +0 -0
  253. /package/{lib/esm/components → components}/grid/cell/tableDefaultRowStyleRules.js.map +0 -0
  254. /package/{lib/esm/components → components}/grid/cell/textCellEditor.d.ts +0 -0
  255. /package/{lib/esm/components → components}/grid/cell/textCellEditor.js +0 -0
  256. /package/{lib/esm/components → components}/grid/cell/textCellEditor.js.map +0 -0
  257. /package/{lib/esm/components → components}/grid/cell/withAgGridHooks.d.ts +0 -0
  258. /package/{lib/esm/components → components}/grid/cell/withAgGridHooks.js +0 -0
  259. /package/{lib/esm/components → components}/grid/cell/withAgGridHooks.js.map +0 -0
  260. /package/{lib/esm/components → components}/grid/columnUtils.d.ts +0 -0
  261. /package/{lib/esm/components → components}/grid/columnUtils.js +0 -0
  262. /package/{lib/esm/components → components}/grid/config/columnTransfer.d.ts +0 -0
  263. /package/{lib/esm/components → components}/grid/config/columnTransfer.js +0 -0
  264. /package/{lib/esm/components → components}/grid/config/columnTransfer.js.map +0 -0
  265. /package/{lib/esm/components → components}/grid/config/dataGridEditor.d.ts +0 -0
  266. /package/{lib/esm/components → components}/grid/config/dataGridEditor.js +0 -0
  267. /package/{lib/esm/components → components}/grid/config/dataGridEditor.js.map +0 -0
  268. /package/{lib/esm/components → components}/grid/config/rowHeightCalculator.d.ts +0 -0
  269. /package/{lib/esm/components → components}/grid/config/rowHeightCalculator.js +0 -0
  270. /package/{lib/esm/components → components}/grid/config/rowHeightCalculator.js.map +0 -0
  271. /package/{lib/esm/components → components}/grid/config/rowStylePicker.d.ts +0 -0
  272. /package/{lib/esm/components → components}/grid/config/rowStylePicker.js +0 -0
  273. /package/{lib/esm/components → components}/grid/config/rowStylePicker.js.map +0 -0
  274. /package/{lib/esm/components → components}/grid/dataGrid.d.ts +0 -0
  275. /package/{lib/esm/components → components}/grid/dataGrid.js +0 -0
  276. /package/{lib/esm/components → components}/grid/dataGrid.js.map +0 -0
  277. /package/{lib/esm/components → components}/grid/detail/detailHeaderPanel.d.ts +0 -0
  278. /package/{lib/esm/components → components}/grid/detail/detailHeaderPanel.js +0 -0
  279. /package/{lib/esm/components → components}/grid/detail/detailHeaderPanel.js.map +0 -0
  280. /package/{lib/esm/components → components}/grid/export/contextMenu.d.ts +0 -0
  281. /package/{lib/esm/components → components}/grid/export/contextMenu.js.map +0 -0
  282. /package/{lib/esm/components → components}/grid/export/progressPopup.d.ts +0 -0
  283. /package/{lib/esm/components → components}/grid/export/progressPopup.js +0 -0
  284. /package/{lib/esm/components → components}/grid/export/worker/clipboardExport.d.ts +0 -0
  285. /package/{lib/esm/components → components}/grid/export/worker/clipboardExport.js +0 -0
  286. /package/{lib/esm/components → components}/grid/export/worker/csvExport.d.ts +0 -0
  287. /package/{lib/esm/components → components}/grid/export/worker/csvExport.js +0 -0
  288. /package/{lib/esm/components → components}/grid/export/worker/pdfExport.d.ts +0 -0
  289. /package/{lib/esm/components → components}/grid/export/worker/pdfExport.js +0 -0
  290. /package/{lib/esm/components → components}/grid/export/worker/pdfExport.js.map +0 -0
  291. /package/{lib/esm/components → components}/grid/export/worker/txtExport.d.ts +0 -0
  292. /package/{lib/esm/components → components}/grid/export/worker/txtExport.js +0 -0
  293. /package/{lib/esm/components → components}/grid/extendedDataGrid.d.ts +0 -0
  294. /package/{lib/esm/components → components}/grid/extendedDataGrid.js +0 -0
  295. /package/{lib/esm/components → components}/grid/extendedDataGrid.js.map +0 -0
  296. /package/{lib/esm/components → components}/grid/filter/customColumnFilter.d.ts +0 -0
  297. /package/{lib/esm/components → components}/grid/filter/customColumnFilter.js +0 -0
  298. /package/{lib/esm/components → components}/grid/filter/customColumnFilter.js.map +0 -0
  299. /package/{lib/esm/components → components}/grid/filter/dataGridColumnFilter.d.ts +0 -0
  300. /package/{lib/esm/components → components}/grid/filter/dataGridColumnFilter.js +0 -0
  301. /package/{lib/esm/components → components}/grid/filter/dataGridColumnFilter.js.map +0 -0
  302. /package/{lib/esm/components → components}/grid/filter/dateColumnFilter.d.ts +0 -0
  303. /package/{lib/esm/components → components}/grid/filter/dateColumnFilter.js +0 -0
  304. /package/{lib/esm/components → components}/grid/filter/dateColumnFilter.js.map +0 -0
  305. /package/{lib/esm/components → components}/grid/filter/textColumnFilter.d.ts +0 -0
  306. /package/{lib/esm/components → components}/grid/filter/textColumnFilter.js +0 -0
  307. /package/{lib/esm/components → components}/grid/filter/textColumnFilter.js.map +0 -0
  308. /package/{lib/esm/components → components}/grid/filter/wildcardQuickFilterEngine.d.ts +0 -0
  309. /package/{lib/esm/components → components}/grid/filter/wildcardQuickFilterEngine.js +0 -0
  310. /package/{lib/esm/components → components}/grid/filter/wildcardQuickFilterEngine.js.map +0 -0
  311. /package/{lib/esm/components → components}/grid/header/simpleHeader.d.ts +0 -0
  312. /package/{lib/esm/components → components}/grid/header/simpleHeader.js +0 -0
  313. /package/{lib/esm/components → components}/grid/header/simpleHeader.js.map +0 -0
  314. /package/{lib/esm/components → components}/grid/panel/dataGridPagination.d.ts +0 -0
  315. /package/{lib/esm/components → components}/grid/panel/dataGridPagination.js +0 -0
  316. /package/{lib/esm/components → components}/grid/panel/dataGridPagination.js.map +0 -0
  317. /package/{lib/esm/components → components}/grid/panel/loadingOverlay.d.ts +0 -0
  318. /package/{lib/esm/components → components}/grid/panel/loadingOverlay.js +0 -0
  319. /package/{lib/esm/components → components}/grid/panel/loadingOverlay.js.map +0 -0
  320. /package/{lib/esm/components → components}/grid/panel/noRecordsOverlay.d.ts +0 -0
  321. /package/{lib/esm/components → components}/grid/panel/noRecordsOverlay.js +0 -0
  322. /package/{lib/esm/components → components}/grid/panel/noRecordsOverlay.js.map +0 -0
  323. /package/{lib/esm/components → components}/grid/panel/tablePagination.d.ts +0 -0
  324. /package/{lib/esm/components → components}/grid/panel/tablePagination.js +0 -0
  325. /package/{lib/esm/components → components}/grid/panel/tablePagination.js.map +0 -0
  326. /package/{lib/esm/components → components}/icons/dropdownArrow.d.ts +0 -0
  327. /package/{lib/esm/components → components}/icons/dropdownArrow.js +0 -0
  328. /package/{lib/esm/components → components}/icons/dropdownArrow.js.map +0 -0
  329. /package/{lib/esm/components → components}/icons/undoIcon.d.ts +0 -0
  330. /package/{lib/esm/components → components}/icons/undoIcon.js +0 -0
  331. /package/{lib/esm/components → components}/input/autoCompleteInput.d.ts +0 -0
  332. /package/{lib/esm/components → components}/input/autoCompleteInput.js +0 -0
  333. /package/{lib/esm/components → components}/input/autoCompleteInput.js.map +0 -0
  334. /package/{lib/esm/components → components}/input/draftUtils.d.ts +0 -0
  335. /package/{lib/esm/components → components}/input/draftUtils.js +0 -0
  336. /package/{lib/esm/components → components}/input/hexaFormattedInput.d.ts +0 -0
  337. /package/{lib/esm/components → components}/input/hexaFormattedInput.js +0 -0
  338. /package/{lib/esm/components → components}/input/hexaFormattedInput.js.map +0 -0
  339. /package/{lib/esm/components → components}/input/mask/helpers.d.ts +0 -0
  340. /package/{lib/esm/components → components}/input/mask/helpers.js +0 -0
  341. /package/{lib/esm/components → components}/input/mask/helpers.js.map +0 -0
  342. /package/{lib/esm/components → components}/input/mask/inputMaskCore.d.ts +0 -0
  343. /package/{lib/esm/components → components}/input/mask/inputMaskCore.js +0 -0
  344. /package/{lib/esm/components → components}/input/mask/pattern.d.ts +0 -0
  345. /package/{lib/esm/components → components}/input/mask/pattern.js +0 -0
  346. /package/{lib/esm/components → components}/input/maskedInput.d.ts +0 -0
  347. /package/{lib/esm/components → components}/input/maskedInput.js +0 -0
  348. /package/{lib/esm/components → components}/input/maskedInput.js.map +0 -0
  349. /package/{lib/esm/components → components}/input/passwordInput.d.ts +0 -0
  350. /package/{lib/esm/components → components}/input/passwordInput.js +0 -0
  351. /package/{lib/esm/components → components}/input/simpleAutoComplete.d.ts +0 -0
  352. /package/{lib/esm/components → components}/input/simpleAutoComplete.js +0 -0
  353. /package/{lib/esm/components → components}/input/simpleAutoComplete.js.map +0 -0
  354. /package/{lib/esm/components → components}/input/textarea/extractSpansOfClasses.d.ts +0 -0
  355. /package/{lib/esm/components → components}/input/textarea/extractSpansOfClasses.js +0 -0
  356. /package/{lib/esm/components → components}/input/textarea/getRanges.d.ts +0 -0
  357. /package/{lib/esm/components → components}/input/textarea/getRanges.js +0 -0
  358. /package/{lib/esm/components → components}/input/textarea/getType.d.ts +0 -0
  359. /package/{lib/esm/components → components}/input/textarea/getType.js +0 -0
  360. /package/{lib/esm/components → components}/input/textarea/highlighedContents.d.ts +0 -0
  361. /package/{lib/esm/components → components}/input/textarea/highlighedContents.js +0 -0
  362. /package/{lib/esm/components → components}/input/textarea/mentionsWithHighlighting.d.ts +0 -0
  363. /package/{lib/esm/components → components}/input/textarea/mentionsWithHighlighting.js +0 -0
  364. /package/{lib/esm/components → components}/keyboard/keyboardUtils.d.ts +0 -0
  365. /package/{lib/esm/components → components}/keyboard/keyboardUtils.js +0 -0
  366. /package/{lib/esm/components → components}/modal/draggableModalProvider.d.ts +0 -0
  367. /package/{lib/esm/components → components}/modal/draggableModalProvider.js +0 -0
  368. /package/{lib/esm/components → components}/modal/draggableModalProvider.js.map +0 -0
  369. /package/{lib/esm/components → components}/modal/impl/clamp.d.ts +0 -0
  370. /package/{lib/esm/components → components}/modal/impl/clamp.js +0 -0
  371. /package/{lib/esm/components → components}/modal/impl/clamp.js.map +0 -0
  372. /package/{lib/esm/components → components}/modal/impl/draggableModal.d.ts +0 -0
  373. /package/{lib/esm/components → components}/modal/impl/draggableModal.js +0 -0
  374. /package/{lib/esm/components → components}/modal/impl/draggableModal.js.map +0 -0
  375. /package/{lib/esm/components → components}/modal/impl/draggableModalContext.d.ts +0 -0
  376. /package/{lib/esm/components → components}/modal/impl/draggableModalContext.js +0 -0
  377. /package/{lib/esm/components → components}/modal/impl/draggableModalContext.js.map +0 -0
  378. /package/{lib/esm/components → components}/modal/impl/draggableModalInner.d.ts +0 -0
  379. /package/{lib/esm/components → components}/modal/impl/draggableModalInner.js +0 -0
  380. /package/{lib/esm/components → components}/modal/impl/draggableModalInner.js.map +0 -0
  381. /package/{lib/esm/components → components}/modal/impl/draggableModalReducer.d.ts +0 -0
  382. /package/{lib/esm/components → components}/modal/impl/draggableModalReducer.js +0 -0
  383. /package/{lib/esm/components → components}/modal/impl/draggableModalReducer.js.map +0 -0
  384. /package/{lib/esm/components → components}/modal/impl/getWindowSize.d.ts +0 -0
  385. /package/{lib/esm/components → components}/modal/impl/getWindowSize.js +0 -0
  386. /package/{lib/esm/components → components}/modal/impl/getWindowSize.js.map +0 -0
  387. /package/{lib/esm/components → components}/modal/impl/index.d.ts +0 -0
  388. /package/{lib/esm/components → components}/modal/impl/index.js +0 -0
  389. /package/{lib/esm/components → components}/modal/impl/index.js.map +0 -0
  390. /package/{lib/esm/components → components}/modal/impl/resizeHandle.d.ts +0 -0
  391. /package/{lib/esm/components → components}/modal/impl/resizeHandle.js +0 -0
  392. /package/{lib/esm/components → components}/modal/impl/resizeHandle.js.map +0 -0
  393. /package/{lib/esm/components → components}/modal/impl/useDrag.d.ts +0 -0
  394. /package/{lib/esm/components → components}/modal/impl/useDrag.js +0 -0
  395. /package/{lib/esm/components → components}/modal/impl/useDrag.js.map +0 -0
  396. /package/{lib/esm/components → components}/modal/impl/usePrevious.d.ts +0 -0
  397. /package/{lib/esm/components → components}/modal/impl/usePrevious.js +0 -0
  398. /package/{lib/esm/components → components}/modal/impl/usePrevious.js.map +0 -0
  399. /package/{lib/esm/components → components}/modal/impl/useResize.d.ts +0 -0
  400. /package/{lib/esm/components → components}/modal/impl/useResize.js +0 -0
  401. /package/{lib/esm/components → components}/modal/impl/useResize.js.map +0 -0
  402. /package/{lib/esm/components → components}/modal/modalDialog.d.ts +0 -0
  403. /package/{lib/esm/components → components}/modal/modalDialog.js +0 -0
  404. /package/{lib/esm/components → components}/modal/modalDialog.js.map +0 -0
  405. /package/{lib/esm/components → components}/picker/enumValuePicker.d.ts +0 -0
  406. /package/{lib/esm/components → components}/picker/enumValuePicker.js +0 -0
  407. /package/{lib/esm/components → components}/picker/enumValuePicker.js.map +0 -0
  408. /package/{lib/esm/components → components}/platformSpecific.d.ts +0 -0
  409. /package/{lib/esm/components → components}/platformSpecific.js +0 -0
  410. /package/{lib/esm/components → components}/scrollTo/onlyText.d.ts +0 -0
  411. /package/{lib/esm/components → components}/scrollTo/onlyText.js +0 -0
  412. /package/{lib/esm/components → components}/scrollTo/onlyText.js.map +0 -0
  413. /package/{lib/esm/components → components}/scrollTo/scrollTo.d.ts +0 -0
  414. /package/{lib/esm/components → components}/scrollTo/scrollTo.js +0 -0
  415. /package/{lib/esm/components → components}/scrollTo/scrollTo.js.map +0 -0
  416. /package/{lib/esm/components → components}/style/withCss.d.ts +0 -0
  417. /package/{lib/esm/components → components}/style/withCss.js +0 -0
  418. /package/{lib/esm/components → components}/style/withCss.js.map +0 -0
  419. /package/{lib/esm/components → components}/style/withInputNumberCss.d.ts +0 -0
  420. /package/{lib/esm/components → components}/style/withInputNumberCss.js +0 -0
  421. /package/{lib/esm/components → components}/style/withInputNumberCss.js.map +0 -0
  422. /package/{lib/esm/components → components}/table/dragSortingTable.d.ts +0 -0
  423. /package/{lib/esm/components → components}/table/dragSortingTable.js +0 -0
  424. /package/{lib/esm/components → components}/table/dragSortingTable.js.map +0 -0
  425. /package/{lib/esm/components → components}/text/impl/innerSize.d.ts +0 -0
  426. /package/{lib/esm/components → components}/text/impl/innerSize.js +0 -0
  427. /package/{lib/esm/components → components}/text/impl/series.d.ts +0 -0
  428. /package/{lib/esm/components → components}/text/impl/series.js +0 -0
  429. /package/{lib/esm/components → components}/text/impl/shallowEqual.d.ts +0 -0
  430. /package/{lib/esm/components → components}/text/impl/shallowEqual.js +0 -0
  431. /package/{lib/esm/components → components}/text/impl/uniqueId.d.ts +0 -0
  432. /package/{lib/esm/components → components}/text/impl/uniqueId.js +0 -0
  433. /package/{lib/esm/components → components}/text/impl/whilst.d.ts +0 -0
  434. /package/{lib/esm/components → components}/text/impl/whilst.js +0 -0
  435. /package/{lib/esm/components → components}/text/textFit.d.ts +0 -0
  436. /package/{lib/esm/components → components}/text/textFit.js +0 -0
  437. /package/{lib/esm/components → components}/text/textFit.js.map +0 -0
  438. /package/{lib/esm/i18n → i18n}/componentsLocaleHolder.d.ts +0 -0
@@ -1,674 +1,527 @@
1
- import {
2
- _areEqual,
3
- _exists,
4
- _includes, _isDomLayout,
5
- _last,
6
- _makeNull,
7
- _missing, _removeFromArray,
8
- _shallowCompare,
9
- AutoScrollService, BeanStub
10
- } from "ag-grid-community";
11
-
12
- export class RangeSelector extends BeanStub {
13
- beanName = "RangeSelector";
14
-
15
- wireBeans(beans) {
16
- this.rowModel = beans.rowModel;
17
- this.dragService = beans.dragService;
18
- this.columnModel = beans.columnModel;
19
- this.visibleColsService = beans.visibleColsService;
20
- this.cellNavigationService = beans.cellNavigationService;
21
- this.pinnedRowModel = beans.pinnedRowModel;
22
- this.rowPositionUtils = beans.rowPositionUtils;
23
- this.cellPositionUtils = beans.cellPositionUtils;
24
- this.ctrlsService = beans.ctrlsService;
25
- this.valueService = beans.valueService;
26
- this.eventService = beans.eventService;
27
- this.mouseEventService = beans.mouseEventService;
28
- this.gridApi = beans.gridApi;
29
- this.eGridDiv = beans.eGridDiv;
30
- this.focusService = beans.focusService;
31
- this.gos = beans.gos;
32
- }
33
-
34
- postConstruct() {
35
- this.cellRanges = [];
36
- this.bodyScrollListener = this.onBodyScroll.bind(this);
37
- this.dragging = false;
38
-
39
- this.eventService.addEventListener("newColumnsLoaded", () => this.removeAllCellRanges());
40
- this.eventService.addEventListener("columnPivotModeChanged", () => this.removeAllCellRanges());
41
- this.eventService.addEventListener("columnRowGroupChanged", () => this.removeAllCellRanges());
42
- this.eventService.addEventListener("columnPivotChanged", () => this.removeAllCellRanges());
43
- this.eventService.addEventListener("columnGroupOpened", this.refreshLastRangeStart.bind(this));
44
- this.eventService.addEventListener("columnMoved", this.refreshLastRangeStart.bind(this));
45
- this.eventService.addEventListener("columnPinned", this.refreshLastRangeStart.bind(this));
46
- this.eventService.addEventListener("columnVisible", this.onColumnVisibleChange.bind(this));
47
-
48
- this.ctrlsService.whenReady(this,() => {
49
- const gridBodyCon = this.ctrlsService.getGridBodyCtrl();
50
- this.autoScrollService = new AutoScrollService({
51
- scrollContainer: gridBodyCon.getBodyViewportElement(),
52
- scrollAxis: 'xy',
53
- getVerticalPosition: () => gridBodyCon.getScrollFeature().getVScrollPosition().top,
54
- setVerticalPosition: (position) => gridBodyCon.getScrollFeature().setVerticalScrollPosition(position),
55
- getHorizontalPosition: () => gridBodyCon.getScrollFeature().getHScrollPosition().left,
56
- setHorizontalPosition: (position) => gridBodyCon.getScrollFeature().setHorizontalScrollPosition(position),
57
- shouldSkipVerticalScroll: () => !_isDomLayout(this.gos, 'normal'),
58
- shouldSkipHorizontalScroll: () => !gridBodyCon.getScrollFeature().isHorizontalScrollShowing()
59
- });
60
- });
61
-
62
- //intitialization of drag event handling
63
- // const eContainers = guiRoot.querySelectorAll(`[ref="eContainer"]`);
64
- // for (const eContainer of eContainers) {
65
- const params = {
66
- eElement: this.eGridDiv,
67
- onDragStart: this.onDragStart.bind(this),
68
- onDragStop: this.onDragStop.bind(this),
69
- onDragging: this.onDragging.bind(this)
70
- };
71
-
72
- this.dragService.addDragSource(params);
73
- this.dragService.addDestroyFunc(() => this.dragService.removeDragSource(params));
74
- // }
75
- }
76
-
77
- cellPositionEquals(cellA, cellB) {
78
- const colsMatch = cellA.column === cellB.column;
79
- const floatingMatch = cellA.rowPinned === cellB.rowPinned;
80
- const indexMatch = cellA.rowIndex === cellB.rowIndex;
81
- return colsMatch && floatingMatch && indexMatch;
82
- }
83
-
84
- onColumnVisibleChange() {
85
- // first move start column in last cell range (i.e. series chart range)
86
- this.refreshLastRangeStart();
87
-
88
- // then check if the column visibility has changed in any cell range
89
- this.cellRanges.forEach(cellRange => {
90
- const beforeCols = cellRange.columns;
91
-
92
- // remove hidden cols from cell range
93
- cellRange.columns = cellRange.columns.filter(col => col.isVisible());
94
-
95
- const colsInRangeChanged = !_areEqual(beforeCols, cellRange.columns);
96
- if (colsInRangeChanged) {
97
- this.dispatchChangedEvent(false, true, cellRange.id);
98
- }
99
- });
100
- }
101
-
102
- refreshLastRangeStart() {
103
- const lastRange = _last(this.cellRanges);
104
- if (!lastRange) {
105
- return;
106
- }
107
-
108
- this.refreshRangeStart(lastRange);
109
- }
110
-
111
- isContiguousRange(cellRange) {
112
- const rangeColumns = cellRange.columns;
113
-
114
- if (!rangeColumns.length) {
115
- return false;
116
- }
117
-
118
- const allColumns = this.visibleColsService.getAllCols();
119
- const allPositions = rangeColumns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);
120
-
121
- return _last(allPositions) - allPositions[0] + 1 === rangeColumns.length;
122
- }
123
-
124
- getRangeStartRow(cellRange) {
125
- if (cellRange.startRow && cellRange.endRow) {
126
- return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?
127
- cellRange.startRow : cellRange.endRow;
128
- }
129
- const rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? 'top' : null;
130
- return {rowIndex: 0, rowPinned};
131
- }
132
-
133
- getRangeEndRow(cellRange) {
134
- if (cellRange.startRow && cellRange.endRow) {
135
- return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?
136
- cellRange.endRow : cellRange.startRow;
137
- }
138
-
139
- const pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();
140
- const pinnedBottom = pinnedBottomRowCount > 0;
141
-
142
- if (pinnedBottom) {
143
- return {
144
- rowIndex: pinnedBottomRowCount - 1,
145
- rowPinned: 'bottom'
146
- };
147
- }
148
-
149
- return {
150
- rowIndex: this.rowModel.getRowCount() - 1,
151
- rowPinned: null
152
- };
153
- }
154
-
155
- setRangeToCell(cell, appendRange = false) {
156
- const columns = this.calculateColumnsBetween(cell.column, cell.column);
157
- if (!columns) {
158
- return;
159
- }
160
- this.removeAllCellRanges(true);
161
- const rowForCell = {
162
- rowIndex: cell.rowIndex,
163
- rowPinned: cell.rowPinned
164
- };
165
-
166
- // if there is already a range for this cell, then we reuse the same range, otherwise the user
167
- // can ctrl & click a cell many times and hit ctrl+c, which would result in the cell getting copied
168
- // many times to the clipboard.
169
- let cellRange;
170
- for (let i = 0; i < this.cellRanges.length; i++) {
171
- const range = this.cellRanges[i];
172
- const matches =
173
- // check cols are same
174
- (range.columns && range.columns.length === 1 && range.columns[0] === cell.column) &&
175
- // check rows are same
176
- this.rowPositionUtils.sameRow(rowForCell, range.startRow) &&
177
- this.rowPositionUtils.sameRow(rowForCell, range.endRow);
178
- if (matches) {
179
- cellRange = range;
180
- break;
181
- }
182
- }
183
-
184
- if (cellRange) {
185
- // we need it at the end of the list, as the dragStart picks the last created
186
- // range as the start point for the drag
187
- const atEndOfList = _last(this.cellRanges) === cellRange;
188
-
189
- if (!atEndOfList) {
190
- _removeFromArray(this.cellRanges, cellRange);
191
- this.cellRanges.push(cellRange);
192
- }
193
- } else {
194
- cellRange = {
195
- startRow: rowForCell,
196
- endRow: rowForCell,
197
- columns: columns,
198
- startColumn: cell.column
199
- };
200
- this.cellRanges.push(cellRange);
201
- }
202
-
203
- this.newestRangeStartCell = cell;
204
- this.onDragStop();
205
- this.dispatchChangedEvent(true, true, cellRange.id);
206
- }
207
-
208
- extendLatestRangeToCell(cellPosition) {
209
- if (this.isEmpty() || !this.newestRangeStartCell) {
210
- return;
211
- }
212
- const cellRange = _last(this.cellRanges);
213
-
214
- this.updateRangeEnd(cellRange, cellPosition);
215
- }
216
-
217
- updateRangeEnd(cellRange, cellPosition, silent) {
218
- silent = !!silent;
219
- const endColumn = cellPosition.column;
220
- const colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);
221
- if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {
222
- return;
223
- }
224
-
225
- cellRange.columns = colsToAdd;
226
- cellRange.endRow = {rowIndex: cellPosition.rowIndex, rowPinned: cellPosition.rowPinned};
227
-
228
- if (!silent) {
229
- this.dispatchChangedEvent(true, true, cellRange.id);
230
- }
231
- }
232
-
233
- refreshRangeStart(cellRange) {
234
- const {startColumn, columns} = cellRange;
235
-
236
- const moveColInCellRange = (colToMove, moveToFront) => {
237
- const otherCols = cellRange.columns.filter(col => col !== colToMove);
238
- if (colToMove) {
239
- cellRange.startColumn = colToMove;
240
- cellRange.columns = moveToFront ? [colToMove, ...otherCols] : [...otherCols, colToMove];
241
- } else {
242
- cellRange.columns = otherCols;
243
- }
244
- };
245
-
246
- const {left, right} = this.getRangeEdgeColumns(cellRange);
247
- const shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;
248
- if (shouldMoveLeftCol) {
249
- moveColInCellRange(left, true);
250
- return;
251
- }
252
- const shouldMoveRightCol = startColumn === _last(columns) && startColumn === right;
253
- if (shouldMoveRightCol) {
254
- moveColInCellRange(right, false);
255
- return;
256
- }
257
- }
258
-
259
- getRangeEdgeColumns(cellRange) {
260
- const allColumns = this.visibleColsService.getAllCols();
261
- const allIndices = cellRange.columns
262
- .map(c => allColumns.indexOf(c))
263
- .filter(i => i > -1)
264
- .sort((a, b) => a - b);
265
-
266
- return {
267
- left: allColumns[allIndices[0]],
268
- right: allColumns[_last(allIndices)]
269
- };
270
- }
271
-
272
- // returns true if successful, false if not successful
273
- extendLatestRangeInDirection(key) {
274
- if (this.isEmpty() || !this.newestRangeStartCell) {
275
- return;
276
- }
277
-
278
- const lastRange = _last(this.cellRanges);
279
-
280
- const startCell = this.newestRangeStartCell;
281
-
282
- const firstCol = lastRange.columns[0];
283
- const lastCol = _last(lastRange.columns);
284
-
285
- // find the cell that is at the furthest away corner from the starting cell
286
- const endCellIndex = lastRange.endRow.rowIndex;
287
- const endCellFloating = lastRange.endRow.rowPinned;
288
- const endCellColumn = startCell.column === firstCol ? lastCol : firstCol;
289
-
290
- const endCell = {column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating};
291
- const newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell);
292
-
293
- // if user is at end of grid, so no cell to extend to, we return false
294
- if (!newEndCell) {
295
- return;
296
- }
297
-
298
- this.setCellRange({
299
- rowStartIndex: startCell.rowIndex,
300
- rowStartPinned: startCell.rowPinned,
301
- rowEndIndex: newEndCell.rowIndex,
302
- rowEndPinned: newEndCell.rowPinned,
303
- columnStart: startCell.column,
304
- columnEnd: newEndCell.column
305
- });
306
-
307
- return newEndCell;
308
- }
309
-
310
- setCellRange(params) {
311
- this.removeAllCellRanges(true);
312
- this.addCellRange(params);
313
- }
314
-
315
- setCellRanges(cellRanges) {
316
- if (_shallowCompare(this.cellRanges, cellRanges)) {
317
- return;
318
- }
319
- this.removeAllCellRanges(true);
320
-
321
- cellRanges.forEach(newRange => {
322
- if (newRange.columns && newRange.startRow) {
323
- this.newestRangeStartCell = {
324
- rowIndex: newRange.startRow.rowIndex,
325
- rowPinned: newRange.startRow.rowPinned,
326
- column: newRange.columns[0]
327
- };
328
- }
329
- this.cellRanges.push(newRange);
330
- });
331
-
332
- this.dispatchChangedEvent(false, true);
333
- }
334
-
335
- createCellRangeFromCellRangeParams(params) {
336
- let columns;
337
- if (params.columns) {
338
- columns = params.columns.map(c => this.columnModel.getColumnWithValidation(c)).filter(c => c);
339
- } else {
340
- const columnStart = this.columnModel.getColumnWithValidation(params.columnStart);
341
- const columnEnd = this.columnModel.getColumnWithValidation(params.columnEnd);
342
- if (!columnStart || !columnEnd) {
343
- return;
344
- }
345
- columns = this.calculateColumnsBetween(columnStart, columnEnd);
346
- }
347
-
348
- if (!columns) {
349
- return;
350
- }
351
-
352
- const startRow = params.rowStartIndex != null ? {
353
- rowIndex: params.rowStartIndex,
354
- rowPinned: params.rowStartPinned
355
- } : undefined;
356
-
357
- const endRow = params.rowEndIndex != null ? {
358
- rowIndex: params.rowEndIndex,
359
- rowPinned: params.rowEndPinned
360
- } : undefined;
361
-
362
- return {
363
- startRow: startRow,
364
- endRow: endRow,
365
- columns: columns,
366
- startColumn: columns[0]
367
- };
368
- }
369
-
370
- addCellRange(params) {
371
- const newRange = this.createCellRangeFromCellRangeParams(params);
372
- if (newRange) {
373
- this.cellRanges.push(newRange);
374
- this.dispatchChangedEvent(false, true, newRange.id);
375
- }
376
- }
377
-
378
- getCellRanges() {
379
- return this.cellRanges;
380
- }
381
-
382
- isEmpty() {
383
- return this.cellRanges.length === 0;
384
- }
385
-
386
- isMoreThanOneCell() {
387
- if (this.cellRanges.length === 0) {
388
- // no ranges, so not more than one cell
389
- return false;
390
- } else if (this.cellRanges.length > 1) {
391
- // many ranges, so more than one cell
392
- return true;
393
- }
394
-
395
- // only one range, return true if range has more than one
396
- const range = this.cellRanges[0];
397
- const startRow = this.getRangeStartRow(range);
398
- const endRow = this.getRangeEndRow(range);
399
- return startRow.rowPinned !== endRow.rowPinned ||
400
- startRow.rowIndex !== endRow.rowIndex ||
401
- range.columns.length !== 1;
402
- }
403
-
404
- removeAllCellRanges(silent) {
405
- if (this.isEmpty()) {
406
- return;
407
- }
408
-
409
- this.onDragStop();
410
- this.cellRanges.length = 0;
411
-
412
- if (!silent) {
413
- this.dispatchChangedEvent(false, true);
414
- }
415
- }
416
-
417
- // as the user is dragging outside of the panel, the div starts to scroll, which in turn
418
- // means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate
419
- // the selection my mimicking a new mouse event
420
- onBodyScroll() {
421
- this.onDragging(this.lastMouseEvent);
422
- }
423
-
424
- isCellInAnyRange(cell) {
425
- return this.getCellRangeCount(cell) > 0;
426
- }
427
-
428
- isCellInSpecificRange(cell, range) {
429
- const columnInRange = range.columns !== null && _includes(range.columns, cell.column);
430
- const rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);
431
- return columnInRange && rowInRange;
432
- }
433
-
434
- isLastCellOfRange(cellRange, cell) {
435
- const {startRow, endRow} = cellRange;
436
- const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;
437
- const isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;
438
- const rangeFirstIndexColumn = cellRange.columns[0];
439
- const rangeLastIndexColumn = _last(cellRange.columns);
440
- const lastRangeColumn = cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;
441
- const isLastColumn = cell.column === lastRangeColumn;
442
- return isLastColumn && isLastRow;
443
- }
444
-
445
- isBottomRightCell(cellRange, cell) {
446
- const allColumns = this.visibleColsService.getAllCols();
447
- const allPositions = cellRange.columns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);
448
- const {startRow, endRow} = cellRange;
449
- const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;
450
-
451
- const isRightColumn = allColumns.indexOf(cell.column) === _last(allPositions);
452
- const isLastRow = cell.rowIndex === lastRow.rowIndex && _makeNull(cell.rowPinned) === _makeNull(lastRow.rowPinned);
453
-
454
- return isRightColumn && isLastRow;
455
- }
456
-
457
- // returns the number of ranges this cell is in
458
- getCellRangeCount(cell) {
459
- if (this.isEmpty()) {
460
- return 0;
461
- }
462
- return this.cellRanges.filter(cellRange => this.isCellInSpecificRange(cell, cellRange)).length;
463
- }
464
-
465
- isRowInRange(rowIndex, floating, cellRange) {
466
-
467
- const firstRow = this.getRangeStartRow(cellRange);
468
- const lastRow = this.getRangeEndRow(cellRange);
469
-
470
- const thisRow = {rowIndex: rowIndex, rowPinned: floating};
471
-
472
- // compare rowPinned with == instead of === because it can be `null` or `undefined`
473
- const equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;
474
- const equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;
475
-
476
- if (equalsFirstRow || equalsLastRow) {
477
- return true;
478
- }
479
-
480
- const afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);
481
- const beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);
482
- return afterFirstRow && beforeLastRow;
483
- }
484
-
485
- getDraggingRange() {
486
- return this.draggingRange;
487
- }
488
-
489
- onDragStart(mouseEvent) {
490
- const {shiftKey} = mouseEvent;
491
- const mouseCell = this.mouseEventService.getCellPositionForEvent(mouseEvent);
492
- if (_missing(mouseCell)) {
493
- // if drag wasn't on cell, then do nothing, including do not set dragging=true,
494
- // (which them means onDragging and onDragStop do nothing)
495
- return;
496
- }
497
-
498
- if (!shiftKey || _exists(_last(this.cellRanges).type)) {
499
- this.removeAllCellRanges(true);
500
- }
501
-
502
- this.dragging = true;
503
- this.draggingCell = mouseCell;
504
- this.lastMouseEvent = mouseEvent;
505
-
506
- if (!shiftKey) {
507
- this.newestRangeStartCell = mouseCell;
508
- }
509
-
510
- // if we didn't clear the ranges, then dragging means the user clicked, and when the
511
- // user clicks it means a range of one cell was created. we need to extend this range
512
- // rather than creating another range. otherwise we end up with two distinct ranges
513
- // from a drag operation (one from click, and one from drag).
514
- if (this.cellRanges.length > 0) {
515
- this.draggingRange = _last(this.cellRanges);
516
- } else {
517
- const mouseRowPosition = {
518
- rowIndex: mouseCell.rowIndex,
519
- rowPinned: mouseCell.rowPinned
520
- };
521
-
522
- this.draggingRange = {
523
- startRow: mouseRowPosition,
524
- endRow: mouseRowPosition,
525
- columns: [mouseCell.column],
526
- startColumn: this.newestRangeStartCell.column
527
- };
528
- this.cellRanges.push(this.draggingRange);
529
- }
530
-
531
- this.ctrlsService.getGridBodyCtrl().addScrollEventListener(this.bodyScrollListener);
532
-
533
- this.dispatchChangedEvent(true, false, this.draggingRange.id);
534
- }
535
-
536
- onDragging(mouseEvent) {
537
- if (!this.dragging || !mouseEvent) {
538
- return;
539
- }
540
- this.lastMouseEvent = mouseEvent;
541
-
542
- const cellPosition = this.mouseEventService.getCellPositionForEvent(mouseEvent);
543
-
544
- const isMouseAndStartInPinned = (position) =>
545
- cellPosition && cellPosition.rowPinned === position && this.newestRangeStartCell.rowPinned === position;
546
-
547
- const skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');
548
-
549
- this.autoScrollService.check(mouseEvent, skipVerticalScroll);
550
-
551
- if (
552
- !cellPosition ||
553
- !this.draggingCell ||
554
- this.cellPositionEquals(this.draggingCell, cellPosition)
555
- ) {
556
- return;
557
- }
558
-
559
- const columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);
560
-
561
- if (!columns) {
562
- return;
563
- }
564
-
565
- this.draggingCell = cellPosition;
566
-
567
- this.draggingRange.endRow = {
568
- rowIndex: cellPosition.rowIndex,
569
- rowPinned: cellPosition.rowPinned
570
- };
571
- this.draggingRange.columns = columns;
572
-
573
- this.dispatchChangedEvent(false, false, this.draggingRange.id);
574
- this.focusCell(cellPosition);
575
- }
576
-
577
- focusCell(cellPosition) {
578
- const cellFocused = this.focusService.isCellFocused(cellPosition);
579
- if (!cellFocused) {
580
- this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);
581
- }
582
- }
583
-
584
- onDragStop() {
585
- if (!this.dragging) {
586
- return;
587
- }
588
- const {id} = this.draggingRange;
589
- this.autoScrollService.ensureCleared();
590
-
591
- this.ctrlsService.getGridBodyCtrl().removeScrollEventListener(this.bodyScrollListener);
592
- this.lastMouseEvent = null;
593
- this.dragging = false;
594
- this.draggingRange = undefined;
595
- this.draggingCell = undefined;
596
-
597
- this.dispatchChangedEvent(false, true, id);
598
- }
599
-
600
- dispatchChangedEvent(started, finished, id) {
601
- this.cellRanges.map((cellRange) => {
602
- let currentRow = this.getRangeStartRow(cellRange);
603
- const lastRow = this.getRangeEndRow(cellRange);
604
- const nodesToBeSelected = [];
605
- while (true) {
606
- const finishedAllRows = _missing(currentRow) || !currentRow || this.rowPositionUtils.before(lastRow, currentRow);
607
- if (finishedAllRows || !currentRow || !cellRange.columns) {
608
- break;
609
- }
610
- const rowNode = this.rowPositionUtils.getRowNode(currentRow);
611
- if (!rowNode) {
612
- break;
613
- }
614
- if (!rowNode.isSelected()) {
615
- rowNode.setSelected(true);
616
- }
617
- nodesToBeSelected.push(rowNode.data);
618
- currentRow = this.cellNavigationService.getRowBelow(currentRow);
619
- }
620
- this.gridApi.getSelectedNodes().forEach((node) => {
621
- if (!nodesToBeSelected.some(nodeToBeSelected => node.data === nodeToBeSelected)) {
622
- node.setSelected(false);
623
- }
624
- });
625
- });
626
- const eventCellSelection = {
627
- type: "cellSelectionChanged",
628
- started: started,
629
- finished: finished,
630
- id: id,
631
- };
632
- this.eventService.dispatchEvent(eventCellSelection);
633
- const eventRangeSelection = {
634
- type: "rangeSelectionChanged",
635
- started: started,
636
- finished: finished,
637
- id: id,
638
- };
639
- this.eventService.dispatchEvent(eventRangeSelection);
640
- }
641
-
642
- calculateColumnsBetween(columnFrom, columnTo) {
643
- const allColumns = this.visibleColsService.getAllCols();
644
- const isSameColumn = columnFrom === columnTo;
645
- const fromIndex = allColumns.indexOf(columnFrom);
646
-
647
- if (fromIndex < 0) {
648
- console.warn(`ag-Grid: column ${columnFrom.getId()} is not visible`);
649
- return undefined;
650
- }
651
-
652
- const toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);
653
-
654
- if (toIndex < 0) {
655
- console.warn(`ag-Grid: column ${columnTo.getId()} is not visible`);
656
- return undefined;
657
- }
658
-
659
- if (isSameColumn) {
660
- return [columnFrom];
661
- }
662
-
663
- const firstIndex = Math.min(fromIndex, toIndex);
664
- const lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;
665
-
666
- const columns = [];
667
-
668
- for (let i = firstIndex; i <= lastIndex; i++) {
669
- columns.push(allColumns[i]);
670
- }
671
-
672
- return columns;
673
- }
674
- }
1
+ import { _areEqual, _exists, _includes, _isDomLayout, _last, _makeNull, _missing, _removeFromArray, _shallowCompare, AutoScrollService, BeanStub } from "ag-grid-community";
2
+ export class RangeSelector extends BeanStub {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.beanName = "RangeSelector";
6
+ }
7
+ wireBeans(beans) {
8
+ this.rowModel = beans.rowModel;
9
+ this.dragService = beans.dragService;
10
+ this.columnModel = beans.columnModel;
11
+ this.visibleColsService = beans.visibleColsService;
12
+ this.cellNavigationService = beans.cellNavigationService;
13
+ this.pinnedRowModel = beans.pinnedRowModel;
14
+ this.rowPositionUtils = beans.rowPositionUtils;
15
+ this.cellPositionUtils = beans.cellPositionUtils;
16
+ this.ctrlsService = beans.ctrlsService;
17
+ this.valueService = beans.valueService;
18
+ this.eventService = beans.eventService;
19
+ this.mouseEventService = beans.mouseEventService;
20
+ this.gridApi = beans.gridApi;
21
+ this.eGridDiv = beans.eGridDiv;
22
+ this.focusService = beans.focusService;
23
+ this.gos = beans.gos;
24
+ }
25
+ postConstruct() {
26
+ this.cellRanges = [];
27
+ this.bodyScrollListener = this.onBodyScroll.bind(this);
28
+ this.dragging = false;
29
+ this.eventService.addEventListener("newColumnsLoaded", () => this.removeAllCellRanges());
30
+ this.eventService.addEventListener("columnPivotModeChanged", () => this.removeAllCellRanges());
31
+ this.eventService.addEventListener("columnRowGroupChanged", () => this.removeAllCellRanges());
32
+ this.eventService.addEventListener("columnPivotChanged", () => this.removeAllCellRanges());
33
+ this.eventService.addEventListener("columnGroupOpened", this.refreshLastRangeStart.bind(this));
34
+ this.eventService.addEventListener("columnMoved", this.refreshLastRangeStart.bind(this));
35
+ this.eventService.addEventListener("columnPinned", this.refreshLastRangeStart.bind(this));
36
+ this.eventService.addEventListener("columnVisible", this.onColumnVisibleChange.bind(this));
37
+ this.ctrlsService.whenReady(this, () => {
38
+ const gridBodyCon = this.ctrlsService.getGridBodyCtrl();
39
+ this.autoScrollService = new AutoScrollService({
40
+ scrollContainer: gridBodyCon.getBodyViewportElement(),
41
+ scrollAxis: 'xy',
42
+ getVerticalPosition: () => gridBodyCon.getScrollFeature().getVScrollPosition().top,
43
+ setVerticalPosition: (position) => gridBodyCon.getScrollFeature().setVerticalScrollPosition(position),
44
+ getHorizontalPosition: () => gridBodyCon.getScrollFeature().getHScrollPosition().left,
45
+ setHorizontalPosition: (position) => gridBodyCon.getScrollFeature().setHorizontalScrollPosition(position),
46
+ shouldSkipVerticalScroll: () => !_isDomLayout(this.gos, 'normal'),
47
+ shouldSkipHorizontalScroll: () => !gridBodyCon.getScrollFeature().isHorizontalScrollShowing()
48
+ });
49
+ });
50
+ const params = {
51
+ eElement: this.eGridDiv,
52
+ onDragStart: this.onDragStart.bind(this),
53
+ onDragStop: this.onDragStop.bind(this),
54
+ onDragging: this.onDragging.bind(this)
55
+ };
56
+ this.dragService.addDragSource(params);
57
+ this.dragService.addDestroyFunc(() => this.dragService.removeDragSource(params));
58
+ }
59
+ cellPositionEquals(cellA, cellB) {
60
+ const colsMatch = cellA.column === cellB.column;
61
+ const floatingMatch = cellA.rowPinned === cellB.rowPinned;
62
+ const indexMatch = cellA.rowIndex === cellB.rowIndex;
63
+ return colsMatch && floatingMatch && indexMatch;
64
+ }
65
+ onColumnVisibleChange() {
66
+ this.refreshLastRangeStart();
67
+ this.cellRanges.forEach(cellRange => {
68
+ const beforeCols = cellRange.columns;
69
+ cellRange.columns = cellRange.columns.filter(col => col.isVisible());
70
+ const colsInRangeChanged = !_areEqual(beforeCols, cellRange.columns);
71
+ if (colsInRangeChanged) {
72
+ this.dispatchChangedEvent(false, true, cellRange.id);
73
+ }
74
+ });
75
+ }
76
+ refreshLastRangeStart() {
77
+ const lastRange = _last(this.cellRanges);
78
+ if (!lastRange) {
79
+ return;
80
+ }
81
+ this.refreshRangeStart(lastRange);
82
+ }
83
+ isContiguousRange(cellRange) {
84
+ const rangeColumns = cellRange.columns;
85
+ if (!rangeColumns.length) {
86
+ return false;
87
+ }
88
+ const allColumns = this.visibleColsService.getAllCols();
89
+ const allPositions = rangeColumns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);
90
+ return _last(allPositions) - allPositions[0] + 1 === rangeColumns.length;
91
+ }
92
+ getRangeStartRow(cellRange) {
93
+ if (cellRange.startRow && cellRange.endRow) {
94
+ return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?
95
+ cellRange.startRow : cellRange.endRow;
96
+ }
97
+ const rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? 'top' : null;
98
+ return { rowIndex: 0, rowPinned };
99
+ }
100
+ getRangeEndRow(cellRange) {
101
+ if (cellRange.startRow && cellRange.endRow) {
102
+ return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?
103
+ cellRange.endRow : cellRange.startRow;
104
+ }
105
+ const pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();
106
+ const pinnedBottom = pinnedBottomRowCount > 0;
107
+ if (pinnedBottom) {
108
+ return {
109
+ rowIndex: pinnedBottomRowCount - 1,
110
+ rowPinned: 'bottom'
111
+ };
112
+ }
113
+ return {
114
+ rowIndex: this.rowModel.getRowCount() - 1,
115
+ rowPinned: null
116
+ };
117
+ }
118
+ setRangeToCell(cell, appendRange = false) {
119
+ const columns = this.calculateColumnsBetween(cell.column, cell.column);
120
+ if (!columns) {
121
+ return;
122
+ }
123
+ this.removeAllCellRanges(true);
124
+ const rowForCell = {
125
+ rowIndex: cell.rowIndex,
126
+ rowPinned: cell.rowPinned
127
+ };
128
+ let cellRange;
129
+ for (let i = 0; i < this.cellRanges.length; i++) {
130
+ const range = this.cellRanges[i];
131
+ const matches = (range.columns && range.columns.length === 1 && range.columns[0] === cell.column) &&
132
+ this.rowPositionUtils.sameRow(rowForCell, range.startRow) &&
133
+ this.rowPositionUtils.sameRow(rowForCell, range.endRow);
134
+ if (matches) {
135
+ cellRange = range;
136
+ break;
137
+ }
138
+ }
139
+ if (cellRange) {
140
+ const atEndOfList = _last(this.cellRanges) === cellRange;
141
+ if (!atEndOfList) {
142
+ _removeFromArray(this.cellRanges, cellRange);
143
+ this.cellRanges.push(cellRange);
144
+ }
145
+ }
146
+ else {
147
+ cellRange = {
148
+ startRow: rowForCell,
149
+ endRow: rowForCell,
150
+ columns: columns,
151
+ startColumn: cell.column
152
+ };
153
+ this.cellRanges.push(cellRange);
154
+ }
155
+ this.newestRangeStartCell = cell;
156
+ this.onDragStop();
157
+ this.dispatchChangedEvent(true, true, cellRange.id);
158
+ }
159
+ extendLatestRangeToCell(cellPosition) {
160
+ if (this.isEmpty() || !this.newestRangeStartCell) {
161
+ return;
162
+ }
163
+ const cellRange = _last(this.cellRanges);
164
+ this.updateRangeEnd(cellRange, cellPosition);
165
+ }
166
+ updateRangeEnd(cellRange, cellPosition, silent) {
167
+ silent = !!silent;
168
+ const endColumn = cellPosition.column;
169
+ const colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);
170
+ if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {
171
+ return;
172
+ }
173
+ cellRange.columns = colsToAdd;
174
+ cellRange.endRow = { rowIndex: cellPosition.rowIndex, rowPinned: cellPosition.rowPinned };
175
+ if (!silent) {
176
+ this.dispatchChangedEvent(true, true, cellRange.id);
177
+ }
178
+ }
179
+ refreshRangeStart(cellRange) {
180
+ const { startColumn, columns } = cellRange;
181
+ const moveColInCellRange = (colToMove, moveToFront) => {
182
+ const otherCols = cellRange.columns.filter(col => col !== colToMove);
183
+ if (colToMove) {
184
+ cellRange.startColumn = colToMove;
185
+ cellRange.columns = moveToFront ? [colToMove, ...otherCols] : [...otherCols, colToMove];
186
+ }
187
+ else {
188
+ cellRange.columns = otherCols;
189
+ }
190
+ };
191
+ const { left, right } = this.getRangeEdgeColumns(cellRange);
192
+ const shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;
193
+ if (shouldMoveLeftCol) {
194
+ moveColInCellRange(left, true);
195
+ return;
196
+ }
197
+ const shouldMoveRightCol = startColumn === _last(columns) && startColumn === right;
198
+ if (shouldMoveRightCol) {
199
+ moveColInCellRange(right, false);
200
+ return;
201
+ }
202
+ }
203
+ getRangeEdgeColumns(cellRange) {
204
+ const allColumns = this.visibleColsService.getAllCols();
205
+ const allIndices = cellRange.columns
206
+ .map(c => allColumns.indexOf(c))
207
+ .filter(i => i > -1)
208
+ .sort((a, b) => a - b);
209
+ return {
210
+ left: allColumns[allIndices[0]],
211
+ right: allColumns[_last(allIndices)]
212
+ };
213
+ }
214
+ extendLatestRangeInDirection(key) {
215
+ if (this.isEmpty() || !this.newestRangeStartCell) {
216
+ return;
217
+ }
218
+ const lastRange = _last(this.cellRanges);
219
+ const startCell = this.newestRangeStartCell;
220
+ const firstCol = lastRange.columns[0];
221
+ const lastCol = _last(lastRange.columns);
222
+ const endCellIndex = lastRange.endRow.rowIndex;
223
+ const endCellFloating = lastRange.endRow.rowPinned;
224
+ const endCellColumn = startCell.column === firstCol ? lastCol : firstCol;
225
+ const endCell = { column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating };
226
+ const newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell);
227
+ if (!newEndCell) {
228
+ return;
229
+ }
230
+ this.setCellRange({
231
+ rowStartIndex: startCell.rowIndex,
232
+ rowStartPinned: startCell.rowPinned,
233
+ rowEndIndex: newEndCell.rowIndex,
234
+ rowEndPinned: newEndCell.rowPinned,
235
+ columnStart: startCell.column,
236
+ columnEnd: newEndCell.column
237
+ });
238
+ return newEndCell;
239
+ }
240
+ setCellRange(params) {
241
+ this.removeAllCellRanges(true);
242
+ this.addCellRange(params);
243
+ }
244
+ setCellRanges(cellRanges) {
245
+ if (_shallowCompare(this.cellRanges, cellRanges)) {
246
+ return;
247
+ }
248
+ this.removeAllCellRanges(true);
249
+ cellRanges.forEach(newRange => {
250
+ if (newRange.columns && newRange.startRow) {
251
+ this.newestRangeStartCell = {
252
+ rowIndex: newRange.startRow.rowIndex,
253
+ rowPinned: newRange.startRow.rowPinned,
254
+ column: newRange.columns[0]
255
+ };
256
+ }
257
+ this.cellRanges.push(newRange);
258
+ });
259
+ this.dispatchChangedEvent(false, true);
260
+ }
261
+ createCellRangeFromCellRangeParams(params) {
262
+ let columns;
263
+ if (params.columns) {
264
+ columns = params.columns.map(c => this.columnModel.getColumnWithValidation(c)).filter(c => c);
265
+ }
266
+ else {
267
+ const columnStart = this.columnModel.getColumnWithValidation(params.columnStart);
268
+ const columnEnd = this.columnModel.getColumnWithValidation(params.columnEnd);
269
+ if (!columnStart || !columnEnd) {
270
+ return;
271
+ }
272
+ columns = this.calculateColumnsBetween(columnStart, columnEnd);
273
+ }
274
+ if (!columns) {
275
+ return;
276
+ }
277
+ const startRow = params.rowStartIndex != null ? {
278
+ rowIndex: params.rowStartIndex,
279
+ rowPinned: params.rowStartPinned
280
+ } : undefined;
281
+ const endRow = params.rowEndIndex != null ? {
282
+ rowIndex: params.rowEndIndex,
283
+ rowPinned: params.rowEndPinned
284
+ } : undefined;
285
+ return {
286
+ startRow: startRow,
287
+ endRow: endRow,
288
+ columns: columns,
289
+ startColumn: columns[0]
290
+ };
291
+ }
292
+ addCellRange(params) {
293
+ const newRange = this.createCellRangeFromCellRangeParams(params);
294
+ if (newRange) {
295
+ this.cellRanges.push(newRange);
296
+ this.dispatchChangedEvent(false, true, newRange.id);
297
+ }
298
+ }
299
+ getCellRanges() {
300
+ return this.cellRanges;
301
+ }
302
+ isEmpty() {
303
+ return this.cellRanges.length === 0;
304
+ }
305
+ isMoreThanOneCell() {
306
+ if (this.cellRanges.length === 0) {
307
+ return false;
308
+ }
309
+ else if (this.cellRanges.length > 1) {
310
+ return true;
311
+ }
312
+ const range = this.cellRanges[0];
313
+ const startRow = this.getRangeStartRow(range);
314
+ const endRow = this.getRangeEndRow(range);
315
+ return startRow.rowPinned !== endRow.rowPinned ||
316
+ startRow.rowIndex !== endRow.rowIndex ||
317
+ range.columns.length !== 1;
318
+ }
319
+ removeAllCellRanges(silent) {
320
+ if (this.isEmpty()) {
321
+ return;
322
+ }
323
+ this.onDragStop();
324
+ this.cellRanges.length = 0;
325
+ if (!silent) {
326
+ this.dispatchChangedEvent(false, true);
327
+ }
328
+ }
329
+ onBodyScroll() {
330
+ this.onDragging(this.lastMouseEvent);
331
+ }
332
+ isCellInAnyRange(cell) {
333
+ return this.getCellRangeCount(cell) > 0;
334
+ }
335
+ isCellInSpecificRange(cell, range) {
336
+ const columnInRange = range.columns !== null && _includes(range.columns, cell.column);
337
+ const rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);
338
+ return columnInRange && rowInRange;
339
+ }
340
+ isLastCellOfRange(cellRange, cell) {
341
+ const { startRow, endRow } = cellRange;
342
+ const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;
343
+ const isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;
344
+ const rangeFirstIndexColumn = cellRange.columns[0];
345
+ const rangeLastIndexColumn = _last(cellRange.columns);
346
+ const lastRangeColumn = cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;
347
+ const isLastColumn = cell.column === lastRangeColumn;
348
+ return isLastColumn && isLastRow;
349
+ }
350
+ isBottomRightCell(cellRange, cell) {
351
+ const allColumns = this.visibleColsService.getAllCols();
352
+ const allPositions = cellRange.columns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);
353
+ const { startRow, endRow } = cellRange;
354
+ const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;
355
+ const isRightColumn = allColumns.indexOf(cell.column) === _last(allPositions);
356
+ const isLastRow = cell.rowIndex === lastRow.rowIndex && _makeNull(cell.rowPinned) === _makeNull(lastRow.rowPinned);
357
+ return isRightColumn && isLastRow;
358
+ }
359
+ getCellRangeCount(cell) {
360
+ if (this.isEmpty()) {
361
+ return 0;
362
+ }
363
+ return this.cellRanges.filter(cellRange => this.isCellInSpecificRange(cell, cellRange)).length;
364
+ }
365
+ isRowInRange(rowIndex, floating, cellRange) {
366
+ const firstRow = this.getRangeStartRow(cellRange);
367
+ const lastRow = this.getRangeEndRow(cellRange);
368
+ const thisRow = { rowIndex: rowIndex, rowPinned: floating };
369
+ const equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;
370
+ const equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;
371
+ if (equalsFirstRow || equalsLastRow) {
372
+ return true;
373
+ }
374
+ const afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);
375
+ const beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);
376
+ return afterFirstRow && beforeLastRow;
377
+ }
378
+ getDraggingRange() {
379
+ return this.draggingRange;
380
+ }
381
+ onDragStart(mouseEvent) {
382
+ const { shiftKey } = mouseEvent;
383
+ const mouseCell = this.mouseEventService.getCellPositionForEvent(mouseEvent);
384
+ if (_missing(mouseCell)) {
385
+ return;
386
+ }
387
+ if (!shiftKey || _exists(_last(this.cellRanges).type)) {
388
+ this.removeAllCellRanges(true);
389
+ }
390
+ this.dragging = true;
391
+ this.draggingCell = mouseCell;
392
+ this.lastMouseEvent = mouseEvent;
393
+ if (!shiftKey) {
394
+ this.newestRangeStartCell = mouseCell;
395
+ }
396
+ if (this.cellRanges.length > 0) {
397
+ this.draggingRange = _last(this.cellRanges);
398
+ }
399
+ else {
400
+ const mouseRowPosition = {
401
+ rowIndex: mouseCell.rowIndex,
402
+ rowPinned: mouseCell.rowPinned
403
+ };
404
+ this.draggingRange = {
405
+ startRow: mouseRowPosition,
406
+ endRow: mouseRowPosition,
407
+ columns: [mouseCell.column],
408
+ startColumn: this.newestRangeStartCell.column
409
+ };
410
+ this.cellRanges.push(this.draggingRange);
411
+ }
412
+ this.ctrlsService.getGridBodyCtrl().addScrollEventListener(this.bodyScrollListener);
413
+ this.dispatchChangedEvent(true, false, this.draggingRange.id);
414
+ }
415
+ onDragging(mouseEvent) {
416
+ if (!this.dragging || !mouseEvent) {
417
+ return;
418
+ }
419
+ this.lastMouseEvent = mouseEvent;
420
+ const cellPosition = this.mouseEventService.getCellPositionForEvent(mouseEvent);
421
+ const isMouseAndStartInPinned = (position) => cellPosition && cellPosition.rowPinned === position && this.newestRangeStartCell.rowPinned === position;
422
+ const skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');
423
+ this.autoScrollService.check(mouseEvent, skipVerticalScroll);
424
+ if (!cellPosition ||
425
+ !this.draggingCell ||
426
+ this.cellPositionEquals(this.draggingCell, cellPosition)) {
427
+ return;
428
+ }
429
+ const columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);
430
+ if (!columns) {
431
+ return;
432
+ }
433
+ this.draggingCell = cellPosition;
434
+ this.draggingRange.endRow = {
435
+ rowIndex: cellPosition.rowIndex,
436
+ rowPinned: cellPosition.rowPinned
437
+ };
438
+ this.draggingRange.columns = columns;
439
+ this.dispatchChangedEvent(false, false, this.draggingRange.id);
440
+ this.focusCell(cellPosition);
441
+ }
442
+ focusCell(cellPosition) {
443
+ const cellFocused = this.focusService.isCellFocused(cellPosition);
444
+ if (!cellFocused) {
445
+ this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);
446
+ }
447
+ }
448
+ onDragStop() {
449
+ if (!this.dragging) {
450
+ return;
451
+ }
452
+ const { id } = this.draggingRange;
453
+ this.autoScrollService.ensureCleared();
454
+ this.ctrlsService.getGridBodyCtrl().removeScrollEventListener(this.bodyScrollListener);
455
+ this.lastMouseEvent = null;
456
+ this.dragging = false;
457
+ this.draggingRange = undefined;
458
+ this.draggingCell = undefined;
459
+ this.dispatchChangedEvent(false, true, id);
460
+ }
461
+ dispatchChangedEvent(started, finished, id) {
462
+ this.cellRanges.map((cellRange) => {
463
+ let currentRow = this.getRangeStartRow(cellRange);
464
+ const lastRow = this.getRangeEndRow(cellRange);
465
+ const nodesToBeSelected = [];
466
+ while (true) {
467
+ const finishedAllRows = _missing(currentRow) || !currentRow || this.rowPositionUtils.before(lastRow, currentRow);
468
+ if (finishedAllRows || !currentRow || !cellRange.columns) {
469
+ break;
470
+ }
471
+ const rowNode = this.rowPositionUtils.getRowNode(currentRow);
472
+ if (!rowNode) {
473
+ break;
474
+ }
475
+ if (!rowNode.isSelected()) {
476
+ rowNode.setSelected(true);
477
+ }
478
+ nodesToBeSelected.push(rowNode.data);
479
+ currentRow = this.cellNavigationService.getRowBelow(currentRow);
480
+ }
481
+ this.gridApi.getSelectedNodes().forEach((node) => {
482
+ if (!nodesToBeSelected.some(nodeToBeSelected => node.data === nodeToBeSelected)) {
483
+ node.setSelected(false);
484
+ }
485
+ });
486
+ });
487
+ const eventCellSelection = {
488
+ type: "cellSelectionChanged",
489
+ started: started,
490
+ finished: finished,
491
+ id: id,
492
+ };
493
+ this.eventService.dispatchEvent(eventCellSelection);
494
+ const eventRangeSelection = {
495
+ type: "rangeSelectionChanged",
496
+ started: started,
497
+ finished: finished,
498
+ id: id,
499
+ };
500
+ this.eventService.dispatchEvent(eventRangeSelection);
501
+ }
502
+ calculateColumnsBetween(columnFrom, columnTo) {
503
+ const allColumns = this.visibleColsService.getAllCols();
504
+ const isSameColumn = columnFrom === columnTo;
505
+ const fromIndex = allColumns.indexOf(columnFrom);
506
+ if (fromIndex < 0) {
507
+ console.warn(`ag-Grid: column ${columnFrom.getId()} is not visible`);
508
+ return undefined;
509
+ }
510
+ const toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);
511
+ if (toIndex < 0) {
512
+ console.warn(`ag-Grid: column ${columnTo.getId()} is not visible`);
513
+ return undefined;
514
+ }
515
+ if (isSameColumn) {
516
+ return [columnFrom];
517
+ }
518
+ const firstIndex = Math.min(fromIndex, toIndex);
519
+ const lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;
520
+ const columns = [];
521
+ for (let i = firstIndex; i <= lastIndex; i++) {
522
+ columns.push(allColumns[i]);
523
+ }
524
+ return columns;
525
+ }
526
+ }
527
+ //# sourceMappingURL=rangeSelector.js.map