pixel-react 1.6.5 → 1.6.6

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 (726) hide show
  1. package/.prettierrc.js +13 -13
  2. package/.storybook/main.ts +26 -26
  3. package/.storybook/preview-head.html +2 -2
  4. package/.storybook/preview.ts +26 -26
  5. package/.yarnrc.yml +1 -1
  6. package/README.md +75 -75
  7. package/index.scss +4 -4
  8. package/lib/components/AddVariables/AddVariables.d.ts +5 -0
  9. package/lib/components/AddVariables/index.d.ts +1 -0
  10. package/lib/components/AddVariables/types.d.ts +35 -0
  11. package/lib/components/Checkbox/types.d.ts +4 -0
  12. package/lib/components/Editor/constants.d.ts +1 -1
  13. package/lib/components/Editor/types.d.ts +10 -2
  14. package/lib/components/Input/Input.d.ts +1 -1
  15. package/lib/index.d.ts +56 -4
  16. package/lib/index.esm.js +519 -494
  17. package/lib/index.esm.js.map +1 -1
  18. package/lib/index.js +520 -493
  19. package/lib/index.js.map +1 -1
  20. package/lib/tsconfig.tsbuildinfo +1 -1
  21. package/lib/utils/checkDuplicates/checkDuplicates.d.ts +1 -0
  22. package/package.json +80 -80
  23. package/rollup.config.mjs +67 -67
  24. package/src/StyleGuide/ColorPalette/ColorPalette.scss +62 -62
  25. package/src/StyleGuide/ColorPalette/ColorPalette.stories.tsx +16 -16
  26. package/src/StyleGuide/ColorPalette/ColorPalette.tsx +67 -67
  27. package/src/StyleGuide/ColorPalette/colorPaletteList.ts +279 -279
  28. package/src/StyleGuide/ColorPalette/index.ts +1 -1
  29. package/src/StyleGuide/ColorPalette/types.ts +19 -19
  30. package/src/StyleGuide/Typography/Typography.scss +99 -99
  31. package/src/StyleGuide/Typography/Typography.stories.tsx +16 -16
  32. package/src/StyleGuide/Typography/Typography.tsx +60 -60
  33. package/src/StyleGuide/Typography/TypographyList.ts +3 -3
  34. package/src/StyleGuide/Typography/types.ts +9 -9
  35. package/src/assets/Themes/BaseTheme.scss +270 -270
  36. package/src/assets/Themes/DarkTheme.scss +264 -264
  37. package/src/assets/Themes/Theme.scss +16 -16
  38. package/src/assets/icons/Arrow.svg +4 -4
  39. package/src/assets/icons/Header_preset.svg +18 -18
  40. package/src/assets/icons/accordion_header_icon.svg +10 -10
  41. package/src/assets/icons/active_license_icon.svg +3 -3
  42. package/src/assets/icons/add_archive.svg +9 -9
  43. package/src/assets/icons/add_file.svg +16 -16
  44. package/src/assets/icons/add_label_icon.svg +3 -3
  45. package/src/assets/icons/add_locator.svg +4 -4
  46. package/src/assets/icons/add_testcase.svg +3 -3
  47. package/src/assets/icons/add_user.svg +9 -9
  48. package/src/assets/icons/add_variable.svg +11 -0
  49. package/src/assets/icons/add_variable_icon.svg +4 -4
  50. package/src/assets/icons/alert.svg +17 -17
  51. package/src/assets/icons/all_borders.svg +3 -3
  52. package/src/assets/icons/all_projects.svg +3 -3
  53. package/src/assets/icons/android.svg +9 -9
  54. package/src/assets/icons/android_icon.svg +6 -6
  55. package/src/assets/icons/apk_file_type.svg +4 -4
  56. package/src/assets/icons/app_switch.svg +11 -11
  57. package/src/assets/icons/approval_pending.svg +8 -8
  58. package/src/assets/icons/arrow_down.svg +3 -3
  59. package/src/assets/icons/arrow_right.svg +4 -4
  60. package/src/assets/icons/arrow_up.svg +3 -3
  61. package/src/assets/icons/arrows_down_icon.svg +3 -3
  62. package/src/assets/icons/arrows_right_icon.svg +10 -10
  63. package/src/assets/icons/arrows_top_icon.svg +3 -3
  64. package/src/assets/icons/attachment_icon.svg +3 -3
  65. package/src/assets/icons/authorization_icon.svg +4 -4
  66. package/src/assets/icons/automation_testcase.svg +4 -4
  67. package/src/assets/icons/back_icon.svg +3 -3
  68. package/src/assets/icons/backward.svg +10 -10
  69. package/src/assets/icons/backward_icon.svg +3 -3
  70. package/src/assets/icons/beautify_icon.svg +3 -3
  71. package/src/assets/icons/bold.svg +3 -3
  72. package/src/assets/icons/border_bottom.svg +3 -3
  73. package/src/assets/icons/border_left.svg +3 -3
  74. package/src/assets/icons/border_right.svg +3 -3
  75. package/src/assets/icons/border_top.svg +3 -3
  76. package/src/assets/icons/browser_stack.svg +9 -9
  77. package/src/assets/icons/browserstack_icon.svg +24 -24
  78. package/src/assets/icons/calendar_icon.svg +9 -9
  79. package/src/assets/icons/capture_icon.svg +3 -6
  80. package/src/assets/icons/check_mark.svg +3 -3
  81. package/src/assets/icons/chrome.svg +12 -12
  82. package/src/assets/icons/client_profile.svg +4 -4
  83. package/src/assets/icons/clock_icon.svg +11 -11
  84. package/src/assets/icons/clone_icon.svg +3 -3
  85. package/src/assets/icons/close_pill.svg +3 -3
  86. package/src/assets/icons/cloud_server_host_icon.svg +3 -3
  87. package/src/assets/icons/collapse-icon.svg +6 -6
  88. package/src/assets/icons/compressed_file_type.svg +4 -4
  89. package/src/assets/icons/configuration.svg +3 -3
  90. package/src/assets/icons/continue_without_sign.svg +3 -3
  91. package/src/assets/icons/copy-icon.svg +3 -3
  92. package/src/assets/icons/csv_file_type.svg +4 -4
  93. package/src/assets/icons/dashboard_icon.svg +31 -31
  94. package/src/assets/icons/dashboard_mobile_icon.svg +47 -47
  95. package/src/assets/icons/dashboard_web_icon.svg +9 -9
  96. package/src/assets/icons/data_provider.svg +8 -8
  97. package/src/assets/icons/dataset_list.svg +3 -3
  98. package/src/assets/icons/defects.svg +8 -8
  99. package/src/assets/icons/delete.svg +3 -3
  100. package/src/assets/icons/delete_info.svg +17 -17
  101. package/src/assets/icons/details.svg +3 -3
  102. package/src/assets/icons/double_underline.svg +5 -5
  103. package/src/assets/icons/download-icon.svg +3 -3
  104. package/src/assets/icons/download_file_icon.svg +3 -3
  105. package/src/assets/icons/download_icon.svg +4 -4
  106. package/src/assets/icons/drag_icon.svg +4 -4
  107. package/src/assets/icons/drawer_maximize.svg +6 -6
  108. package/src/assets/icons/dropzone_icon.svg +18 -18
  109. package/src/assets/icons/edge.svg +30 -30
  110. package/src/assets/icons/edit_icon.svg +5 -5
  111. package/src/assets/icons/element.svg +4 -4
  112. package/src/assets/icons/error.svg +17 -17
  113. package/src/assets/icons/excel_corner_menu.svg +3 -3
  114. package/src/assets/icons/expand-icon.svg +6 -6
  115. package/src/assets/icons/export.svg +4 -4
  116. package/src/assets/icons/export_collection_icon.svg +13 -13
  117. package/src/assets/icons/eye_closed.svg +3 -3
  118. package/src/assets/icons/eye_open_icon.svg +3 -3
  119. package/src/assets/icons/failed_status_icon.svg +12 -12
  120. package/src/assets/icons/file.svg +11 -11
  121. package/src/assets/icons/fill_color.svg +7 -7
  122. package/src/assets/icons/filter.svg +4 -4
  123. package/src/assets/icons/fire_fox.svg +106 -106
  124. package/src/assets/icons/fireflink_finder_logo.svg +7 -7
  125. package/src/assets/icons/fireflink_icon.svg +4 -4
  126. package/src/assets/icons/fireflink_logo.svg +13 -13
  127. package/src/assets/icons/fireflink_platform.svg +4 -4
  128. package/src/assets/icons/firefox.svg +84 -84
  129. package/src/assets/icons/flaky_status_icon.svg +12 -12
  130. package/src/assets/icons/formate_painter.svg +5 -5
  131. package/src/assets/icons/formula_icon.svg +3 -3
  132. package/src/assets/icons/forward.svg +3 -3
  133. package/src/assets/icons/forward_icon.svg +3 -3
  134. package/src/assets/icons/full_access_icon.svg +4 -4
  135. package/src/assets/icons/gif_file_type.svg +4 -4
  136. package/src/assets/icons/global_variable_icon.svg +4 -4
  137. package/src/assets/icons/hamburger_menu.svg +3 -3
  138. package/src/assets/icons/hide_access_icon.svg +3 -3
  139. package/src/assets/icons/hide_icon.svg +9 -9
  140. package/src/assets/icons/history_icon.svg +19 -19
  141. package/src/assets/icons/html_file_type.svg +4 -4
  142. package/src/assets/icons/impactList.svg +6 -6
  143. package/src/assets/icons/import.svg +4 -4
  144. package/src/assets/icons/info.svg +17 -17
  145. package/src/assets/icons/info_icon.svg +5 -5
  146. package/src/assets/icons/info_user.svg +5 -5
  147. package/src/assets/icons/internet_explorer.svg +3 -3
  148. package/src/assets/icons/ipk_file_type.svg +4 -4
  149. package/src/assets/icons/italic.svg +3 -3
  150. package/src/assets/icons/jira.svg +3 -3
  151. package/src/assets/icons/jpg_file_type.svg +4 -4
  152. package/src/assets/icons/json_file_type.svg +4 -4
  153. package/src/assets/icons/label_icon.svg +8 -8
  154. package/src/assets/icons/label_plus.svg +3 -3
  155. package/src/assets/icons/lambda_icon.svg +3 -3
  156. package/src/assets/icons/left_arrow_icon.svg +3 -3
  157. package/src/assets/icons/license_expired.svg +20 -20
  158. package/src/assets/icons/license_info.svg +28 -28
  159. package/src/assets/icons/license_warning.svg +10 -10
  160. package/src/assets/icons/link_expired.svg +186 -186
  161. package/src/assets/icons/linked_defects.svg +11 -11
  162. package/src/assets/icons/linux.svg +42 -42
  163. package/src/assets/icons/local.svg +3 -3
  164. package/src/assets/icons/local_variable_icon.svg +4 -4
  165. package/src/assets/icons/logo.svg +17 -17
  166. package/src/assets/icons/mac.svg +9 -9
  167. package/src/assets/icons/manage_apps.svg +3 -3
  168. package/src/assets/icons/manual_locator.svg +7 -7
  169. package/src/assets/icons/manual_testcase.svg +3 -3
  170. package/src/assets/icons/maximize_icon.svg +5 -5
  171. package/src/assets/icons/maximize_script.svg +12 -12
  172. package/src/assets/icons/maximize_tree.svg +3 -3
  173. package/src/assets/icons/minimize_script.svg +5 -5
  174. package/src/assets/icons/mobile_icon.svg +3 -3
  175. package/src/assets/icons/moon_stars.svg +10 -10
  176. package/src/assets/icons/more.svg +10 -10
  177. package/src/assets/icons/move_icon.svg +5 -5
  178. package/src/assets/icons/ms_dynamic.svg +4 -4
  179. package/src/assets/icons/ms_dynamic_icon.svg +15 -15
  180. package/src/assets/icons/nlp_help_icon.svg +3 -3
  181. package/src/assets/icons/no_access_icon.svg +4 -4
  182. package/src/assets/icons/no_border.svg +3 -3
  183. package/src/assets/icons/no_data.svg +13 -13
  184. package/src/assets/icons/no_license_found.svg +22 -22
  185. package/src/assets/icons/notification_icon.svg +3 -3
  186. package/src/assets/icons/opera.svg +9 -9
  187. package/src/assets/icons/passed_status_icon.svg +12 -12
  188. package/src/assets/icons/pdf_file_type.svg +4 -4
  189. package/src/assets/icons/plus_icon.svg +11 -11
  190. package/src/assets/icons/plus_user_icon.svg +3 -3
  191. package/src/assets/icons/png_file_type.svg +4 -4
  192. package/src/assets/icons/project_element.svg +4 -4
  193. package/src/assets/icons/project_env_variable_icon.svg +4 -4
  194. package/src/assets/icons/project_status_icon.svg +10 -10
  195. package/src/assets/icons/quick_run_setting_icon.svg +5 -5
  196. package/src/assets/icons/refresh-icon.svg +4 -4
  197. package/src/assets/icons/refresh_icon.svg +4 -4
  198. package/src/assets/icons/reload.svg +3 -3
  199. package/src/assets/icons/remove.svg +11 -11
  200. package/src/assets/icons/remove_user.svg +3 -3
  201. package/src/assets/icons/replace.svg +11 -11
  202. package/src/assets/icons/replace_file.svg +13 -13
  203. package/src/assets/icons/replace_icon.svg +6 -6
  204. package/src/assets/icons/reset-link.svg +52 -52
  205. package/src/assets/icons/right_arrow_icon.svg +4 -4
  206. package/src/assets/icons/rotate_icon.svg +10 -10
  207. package/src/assets/icons/run_automation_scripts_icon.svg +33 -33
  208. package/src/assets/icons/run_icon.svg +26 -26
  209. package/src/assets/icons/run_manual_testcase_icon.svg +4 -4
  210. package/src/assets/icons/safari.svg +93 -93
  211. package/src/assets/icons/safari_icon.svg +12 -12
  212. package/src/assets/icons/sales_force.svg +7 -7
  213. package/src/assets/icons/salesforce_icon.svg +14 -14
  214. package/src/assets/icons/sample_template_first.svg +29 -29
  215. package/src/assets/icons/sample_template_second.svg +47 -47
  216. package/src/assets/icons/sause_lab.svg +3 -3
  217. package/src/assets/icons/save_as_step.svg +3 -3
  218. package/src/assets/icons/search.svg +3 -3
  219. package/src/assets/icons/send_step.svg +4 -4
  220. package/src/assets/icons/skipped_status_icon.svg +12 -12
  221. package/src/assets/icons/standard_template.svg +30 -30
  222. package/src/assets/icons/step_group.svg +10 -10
  223. package/src/assets/icons/strike_through.svg +3 -3
  224. package/src/assets/icons/success.svg +17 -17
  225. package/src/assets/icons/sun_icon.svg +10 -10
  226. package/src/assets/icons/swipe_icon.svg +9 -9
  227. package/src/assets/icons/switch_license_icon.svg +123 -123
  228. package/src/assets/icons/system_warning.svg +61 -61
  229. package/src/assets/icons/tap_icon.svg +4 -4
  230. package/src/assets/icons/text_align_center.svg +3 -3
  231. package/src/assets/icons/text_align_left.svg +3 -3
  232. package/src/assets/icons/text_align_right.svg +3 -3
  233. package/src/assets/icons/text_color.svg +3 -3
  234. package/src/assets/icons/tick_icon.svg +4 -4
  235. package/src/assets/icons/toast_close.svg +3 -3
  236. package/src/assets/icons/txt_file_type.svg +4 -4
  237. package/src/assets/icons/underline.svg +4 -4
  238. package/src/assets/icons/update_icon.svg +3 -3
  239. package/src/assets/icons/user_password_lock.svg +220 -220
  240. package/src/assets/icons/user_profile.svg +3 -3
  241. package/src/assets/icons/user_warning.svg +235 -235
  242. package/src/assets/icons/user_with_system.svg +637 -637
  243. package/src/assets/icons/variable.svg +3 -3
  244. package/src/assets/icons/variable_icon.svg +4 -4
  245. package/src/assets/icons/vertical_separator.svg +3 -3
  246. package/src/assets/icons/view_access_icon.svg +4 -4
  247. package/src/assets/icons/view_icon.svg +3 -3
  248. package/src/assets/icons/warning.svg +17 -17
  249. package/src/assets/icons/warning_status_icon.svg +12 -12
  250. package/src/assets/icons/web&mobile_icon.svg +3 -3
  251. package/src/assets/icons/web_icon.svg +3 -3
  252. package/src/assets/icons/web_mobile_icon.svg +29 -29
  253. package/src/assets/icons/web_service_icon.svg +3 -3
  254. package/src/assets/icons/web_services_icon.svg +30 -30
  255. package/src/assets/icons/window_maximize.svg +4 -4
  256. package/src/assets/icons/window_minimize.svg +3 -3
  257. package/src/assets/icons/windows.svg +10 -10
  258. package/src/assets/icons/wrong_mark.svg +3 -3
  259. package/src/assets/icons/wswb_delete_icon.svg +3 -3
  260. package/src/assets/icons/wswb_plus_icon.svg +4 -4
  261. package/src/assets/icons/xls_file_type.svg +4 -4
  262. package/src/assets/icons/xlsx_file_type.svg +4 -4
  263. package/src/assets/icons/xml_file_type.svg +4 -4
  264. package/src/assets/styles/_colors.scss +151 -151
  265. package/src/assets/styles/_fonts.scss +45 -45
  266. package/src/assets/styles/_mixins.scss +21 -21
  267. package/src/assets/utils/functionUtils.ts +96 -96
  268. package/src/components/Accordion/Accordion.scss +46 -46
  269. package/src/components/Accordion/Accordion.stories.tsx +31 -31
  270. package/src/components/Accordion/Accordion.tsx +62 -62
  271. package/src/components/Accordion/index.ts +1 -1
  272. package/src/components/Accordion/types.ts +28 -28
  273. package/src/components/AddResourceButton/AddButton.scss +36 -36
  274. package/src/components/AddResourceButton/AddButton.stories.tsx +126 -126
  275. package/src/components/AddResourceButton/AddButton.tsx +121 -121
  276. package/src/components/AddResourceButton/ArrowsButton/ArrowsButton.scss +161 -161
  277. package/src/components/AddResourceButton/ArrowsButton/ArrowsButton.tsx +38 -38
  278. package/src/components/AddResourceButton/index.ts +1 -1
  279. package/src/components/AddResourceButton/type.ts +92 -92
  280. package/src/components/AddVariables/AddVariables.scss +14 -0
  281. package/src/components/AddVariables/AddVariables.stories.tsx +44 -0
  282. package/src/components/AddVariables/AddVariables.tsx +113 -0
  283. package/src/components/AddVariables/index.ts +1 -0
  284. package/src/components/AddVariables/types.ts +36 -0
  285. package/src/components/AllProjectsDropdown/AllProjectsDropdown.scss +189 -189
  286. package/src/components/AllProjectsDropdown/AllProjectsDropdown.stories.tsx +117 -117
  287. package/src/components/AllProjectsDropdown/AllProjectsDropdown.tsx +152 -152
  288. package/src/components/AllProjectsDropdown/types.ts +12 -12
  289. package/src/components/AppHeader/AppHeader.scss +182 -176
  290. package/src/components/AppHeader/AppHeader.stories.tsx +425 -425
  291. package/src/components/AppHeader/AppHeader.tsx +198 -198
  292. package/src/components/AppHeader/index.ts +1 -1
  293. package/src/components/AppHeader/types.ts +52 -53
  294. package/src/components/AttachImage/AttachImage.scss +76 -76
  295. package/src/components/AttachImage/AttachImage.stories.tsx +24 -24
  296. package/src/components/AttachImage/AttachImage.tsx +60 -60
  297. package/src/components/AttachImage/index.ts +2 -2
  298. package/src/components/AttachImage/types.ts +26 -26
  299. package/src/components/AttachmentButton/AttachmentButton.scss +9 -9
  300. package/src/components/AttachmentButton/AttachmentButton.stories.tsx +81 -81
  301. package/src/components/AttachmentButton/AttachmentButton.tsx +129 -129
  302. package/src/components/AttachmentButton/types.ts +13 -13
  303. package/src/components/Avatar/Avatar.scss +27 -27
  304. package/src/components/Avatar/Avatar.stories.tsx +76 -76
  305. package/src/components/Avatar/Avatar.tsx +41 -41
  306. package/src/components/Avatar/types.ts +35 -35
  307. package/src/components/Button/Button.scss +155 -155
  308. package/src/components/Button/Button.stories.tsx +81 -81
  309. package/src/components/Button/Button.tsx +73 -73
  310. package/src/components/Button/index.ts +1 -1
  311. package/src/components/Button/types.ts +69 -69
  312. package/src/components/Charts/BarChart/BarChart.scss +66 -66
  313. package/src/components/Charts/BarChart/BarChart.stories.tsx +67 -67
  314. package/src/components/Charts/BarChart/BarChart.tsx +328 -328
  315. package/src/components/Charts/BarChart/types.ts +12 -12
  316. package/src/components/Charts/DashboardDonutChart/DashboardDonutChart.scss +157 -157
  317. package/src/components/Charts/DashboardDonutChart/DashboardDonutChart.stories.tsx +54 -54
  318. package/src/components/Charts/DashboardDonutChart/DashboardDonutChart.tsx +502 -502
  319. package/src/components/Charts/DashboardDonutChart/types.ts +52 -52
  320. package/src/components/Charts/DonutChart/DonutChart.scss +76 -76
  321. package/src/components/Charts/DonutChart/DonutChart.stories.tsx +30 -30
  322. package/src/components/Charts/DonutChart/DonutChart.tsx +246 -246
  323. package/src/components/Charts/DonutChart/index.ts +1 -1
  324. package/src/components/Charts/DonutChart/type.ts +23 -23
  325. package/src/components/Charts/IconRadialChart/IconRadialChart.scss +25 -25
  326. package/src/components/Charts/IconRadialChart/IconRadialChart.stories.tsx +51 -51
  327. package/src/components/Charts/IconRadialChart/IconRadialChart.tsx +173 -173
  328. package/src/components/Charts/IconRadialChart/types.ts +28 -28
  329. package/src/components/Charts/LineChart/LineChart.scss +88 -88
  330. package/src/components/Charts/LineChart/LineChart.stories.tsx +255 -255
  331. package/src/components/Charts/LineChart/LineChart.tsx +282 -282
  332. package/src/components/Charts/LineChart/index.ts +1 -1
  333. package/src/components/Charts/LineChart/types.ts +29 -29
  334. package/src/components/Charts/MultiRadialChart/MultiRadialChart.scss +86 -86
  335. package/src/components/Charts/MultiRadialChart/MultiRadialChart.stories.tsx +116 -116
  336. package/src/components/Charts/MultiRadialChart/MultiRadialChart.tsx +292 -292
  337. package/src/components/Charts/MultiRadialChart/index.ts +1 -1
  338. package/src/components/Charts/MultiRadialChart/types.ts +25 -25
  339. package/src/components/Charts/PieChart/PieChart.scss +41 -41
  340. package/src/components/Charts/PieChart/PieChart.stories.tsx +46 -46
  341. package/src/components/Charts/PieChart/PieChart.tsx +192 -192
  342. package/src/components/Charts/PieChart/index.ts +1 -1
  343. package/src/components/Charts/PieChart/types.ts +28 -28
  344. package/src/components/Charts/RadialChart/RadialChart.scss +16 -16
  345. package/src/components/Charts/RadialChart/RadialChart.stories.tsx +36 -36
  346. package/src/components/Charts/RadialChart/RadialChart.tsx +180 -180
  347. package/src/components/Charts/RadialChart/index.ts +1 -1
  348. package/src/components/Charts/RadialChart/types.ts +32 -32
  349. package/src/components/Checkbox/Checkbox.scss +146 -89
  350. package/src/components/Checkbox/Checkbox.stories.tsx +123 -47
  351. package/src/components/Checkbox/Checkbox.tsx +58 -55
  352. package/src/components/Checkbox/types.ts +34 -30
  353. package/src/components/Chip/Chip.scss +85 -85
  354. package/src/components/Chip/Chip.stories.tsx +116 -116
  355. package/src/components/Chip/Chip.tsx +35 -35
  356. package/src/components/Chip/index.ts +1 -1
  357. package/src/components/Chip/types.ts +19 -19
  358. package/src/components/ConnectingBranch/BranchComponents/MachineInstances.tsx +128 -128
  359. package/src/components/ConnectingBranch/ConnectingBranch.scss +233 -233
  360. package/src/components/ConnectingBranch/ConnectingBranch.stories.tsx +21 -21
  361. package/src/components/ConnectingBranch/ConnectingBranch.tsx +182 -182
  362. package/src/components/ConnectingBranch/data.ts +137 -137
  363. package/src/components/ConnectingBranch/index.ts +1 -1
  364. package/src/components/ConnectingBranch/types.ts +21 -21
  365. package/src/components/CreateVariable/CreateVariableSlider.scss +18 -18
  366. package/src/components/CreateVariable/CreateVariableSlider.stories.tsx +66 -66
  367. package/src/components/CreateVariable/CreateVariableSlider.tsx +95 -95
  368. package/src/components/CreateVariable/index.ts +1 -1
  369. package/src/components/CreateVariable/types.ts +58 -58
  370. package/src/components/DatePicker/DatePicker.scss +402 -402
  371. package/src/components/DatePicker/DatePicker.stories.tsx +174 -174
  372. package/src/components/DatePicker/DatePicker.tsx +451 -451
  373. package/src/components/DatePicker/Timepicker.tsx +372 -372
  374. package/src/components/DatePicker/types.ts +105 -105
  375. package/src/components/DownloadClient/DownloadClient.scss +80 -80
  376. package/src/components/DownloadClient/DownloadClient.stories.tsx +26 -26
  377. package/src/components/DownloadClient/DownloadClient.tsx +81 -81
  378. package/src/components/DownloadClient/type.ts +40 -40
  379. package/src/components/DragAndDrop/DragAndDrop.d.ts +5 -5
  380. package/src/components/DragAndDrop/DragAndDrop.stories.tsx +25 -25
  381. package/src/components/DragAndDrop/DragAndDrop.ts +7 -7
  382. package/src/components/DragAndDrop/DragAndDropList.scss +69 -69
  383. package/src/components/DragAndDrop/DragAndDropList.tsx +151 -151
  384. package/src/components/Drawer/Drawer.scss +138 -138
  385. package/src/components/Drawer/Drawer.stories.tsx +155 -155
  386. package/src/components/Drawer/Drawer.tsx +232 -232
  387. package/src/components/Drawer/Types.ts +157 -157
  388. package/src/components/EditTextField/EditTextField.scss +97 -97
  389. package/src/components/EditTextField/EditTextField.stories.tsx +127 -127
  390. package/src/components/EditTextField/EditTextField.tsx +181 -181
  391. package/src/components/EditTextField/index.ts +1 -1
  392. package/src/components/EditTextField/types.ts +55 -55
  393. package/src/components/Editor/Editor.scss +56 -56
  394. package/src/components/Editor/Editor.stories.tsx +54 -54
  395. package/src/components/Editor/Editor.tsx +250 -248
  396. package/src/components/Editor/VariableDropdown.scss +27 -21
  397. package/src/components/Editor/VariableDropdown.tsx +57 -49
  398. package/src/components/Editor/constants.ts +180 -180
  399. package/src/components/Editor/types.ts +89 -79
  400. package/src/components/Excel/ColorBarSelector/ColorBarSelector.scss +15 -15
  401. package/src/components/Excel/ColorBarSelector/ColorBarSelector.tsx +43 -43
  402. package/src/components/Excel/ExcelContextMenu/ExcelContextMenu.scss +27 -27
  403. package/src/components/Excel/ExcelContextMenu/ExcelContextMenu.tsx +42 -42
  404. package/src/components/Excel/ExcelFile/ExcelFile.scss +68 -68
  405. package/src/components/Excel/ExcelFile/ExcelFile.tsx +491 -491
  406. package/src/components/Excel/ExcelFile/ExcelFileComponents/ActiveCell.tsx +131 -131
  407. package/src/components/Excel/ExcelFile/ExcelFileComponents/Cell.tsx +238 -238
  408. package/src/components/Excel/ExcelFile/ExcelFileComponents/ColumnIndicator.tsx +168 -168
  409. package/src/components/Excel/ExcelFile/ExcelFileComponents/Copied.tsx +25 -25
  410. package/src/components/Excel/ExcelFile/ExcelFileComponents/CornerIndicator.tsx +56 -56
  411. package/src/components/Excel/ExcelFile/ExcelFileComponents/DataEditor.tsx +37 -37
  412. package/src/components/Excel/ExcelFile/ExcelFileComponents/DataViewer.tsx +85 -85
  413. package/src/components/Excel/ExcelFile/ExcelFileComponents/FloatingRect.tsx +31 -31
  414. package/src/components/Excel/ExcelFile/ExcelFileComponents/HeaderRow.tsx +5 -5
  415. package/src/components/Excel/ExcelFile/ExcelFileComponents/Row.tsx +5 -5
  416. package/src/components/Excel/ExcelFile/ExcelFileComponents/RowIndicator.tsx +154 -154
  417. package/src/components/Excel/ExcelFile/ExcelFileComponents/Selected.tsx +32 -32
  418. package/src/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.scss +146 -146
  419. package/src/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.tsx +479 -479
  420. package/src/components/Excel/ExcelFile/ExcelFileComponents/Table.tsx +19 -19
  421. package/src/components/Excel/ExcelFile/ExcelFileComponents/actions.ts +548 -548
  422. package/src/components/Excel/ExcelFile/ExcelFileComponents/areModelsEqual.ts +18 -18
  423. package/src/components/Excel/ExcelFile/ExcelFileComponents/context.ts +12 -12
  424. package/src/components/Excel/ExcelFile/ExcelFileComponents/engine/engine.ts +153 -153
  425. package/src/components/Excel/ExcelFile/ExcelFileComponents/engine/formula.ts +31 -31
  426. package/src/components/Excel/ExcelFile/ExcelFileComponents/engine/index.ts +2 -2
  427. package/src/components/Excel/ExcelFile/ExcelFileComponents/engine/point-graph.ts +152 -152
  428. package/src/components/Excel/ExcelFile/ExcelFileComponents/engine/point-hash.ts +10 -10
  429. package/src/components/Excel/ExcelFile/ExcelFileComponents/engine/point-set.ts +69 -69
  430. package/src/components/Excel/ExcelFile/ExcelFileComponents/index.ts +49 -49
  431. package/src/components/Excel/ExcelFile/ExcelFileComponents/matrix.ts +382 -382
  432. package/src/components/Excel/ExcelFile/ExcelFileComponents/point-range.ts +82 -82
  433. package/src/components/Excel/ExcelFile/ExcelFileComponents/point.ts +15 -15
  434. package/src/components/Excel/ExcelFile/ExcelFileComponents/reducer.ts +673 -673
  435. package/src/components/Excel/ExcelFile/ExcelFileComponents/reducerFunctions.ts +819 -819
  436. package/src/components/Excel/ExcelFile/ExcelFileComponents/selection.ts +257 -257
  437. package/src/components/Excel/ExcelFile/ExcelFileComponents/types.ts +255 -255
  438. package/src/components/Excel/ExcelFile/ExcelFileComponents/typings/fast-formula-parser.d.ts +58 -58
  439. package/src/components/Excel/ExcelFile/ExcelFileComponents/use-dispatch.ts +8 -8
  440. package/src/components/Excel/ExcelFile/ExcelFileComponents/use-selector.ts +9 -9
  441. package/src/components/Excel/ExcelFile/ExcelFileComponents/util.ts +172 -172
  442. package/src/components/Excel/ExcelFile.stories.tsx +167 -167
  443. package/src/components/Excel/ExcelToolBar/ExcelToolBar.scss +96 -96
  444. package/src/components/Excel/ExcelToolBar/ExcelToolBar.tsx +397 -397
  445. package/src/components/Excel/Types.ts +196 -196
  446. package/src/components/Excel/dataConversion.ts +173 -173
  447. package/src/components/Excel/index.ts +1 -1
  448. package/src/components/ExpandableMenu/ExpandableMenu.scss +110 -110
  449. package/src/components/ExpandableMenu/ExpandableMenu.stories.tsx +67 -67
  450. package/src/components/ExpandableMenu/ExpandableMenu.tsx +101 -101
  451. package/src/components/ExpandableMenu/index.ts +1 -1
  452. package/src/components/ExpandableMenu/types.ts +34 -34
  453. package/src/components/FF_Captcha/Recaptcha.scss +10 -10
  454. package/src/components/FF_Captcha/Recaptcha.tsx +40 -40
  455. package/src/components/FF_Captcha/captcha.stories.tsx +40 -40
  456. package/src/components/FF_Captcha/types.ts +22 -22
  457. package/src/components/FieldSet/FieldSet.scss +9 -9
  458. package/src/components/FieldSet/FieldSet.stories.tsx +103 -103
  459. package/src/components/FieldSet/FieldSet.tsx +29 -29
  460. package/src/components/FieldSet/index.ts +1 -1
  461. package/src/components/FieldSet/types.ts +8 -8
  462. package/src/components/FileDropzone/Dropzone.tsx +57 -57
  463. package/src/components/FileDropzone/FileDropzone.scss +135 -135
  464. package/src/components/FileDropzone/FileDropzone.stories.tsx +98 -98
  465. package/src/components/FileDropzone/FileDropzone.tsx +111 -111
  466. package/src/components/FileDropzone/FilePreview.tsx +77 -77
  467. package/src/components/FileDropzone/index.ts +1 -1
  468. package/src/components/FileDropzone/types.ts +126 -126
  469. package/src/components/Form/Form.d.ts +2 -2
  470. package/src/components/Form/Form.scss +158 -158
  471. package/src/components/Form/Form.stories.tsx +508 -508
  472. package/src/components/Form/Form.ts +2 -2
  473. package/src/components/Form/Forms.tsx +41 -41
  474. package/src/components/Form/validation.json +29 -29
  475. package/src/components/GridLayout/GridLayout.scss +69 -69
  476. package/src/components/GridLayout/GridLayout.stories.tsx +90 -90
  477. package/src/components/GridLayout/GridLayout.tsx +39 -39
  478. package/src/components/GridLayout/GridLayoutStory.scss +25 -25
  479. package/src/components/GridLayout/types.ts +84 -84
  480. package/src/components/HighlightText/HighlightText.scss +3 -3
  481. package/src/components/HighlightText/HighlightText.stories.tsx +22 -22
  482. package/src/components/HighlightText/HighlightText.tsx +33 -33
  483. package/src/components/HighlightText/index.ts +1 -1
  484. package/src/components/HighlightText/types.ts +4 -4
  485. package/src/components/Icon/Icon.stories.tsx +65 -65
  486. package/src/components/Icon/Icon.tsx +88 -88
  487. package/src/components/Icon/Icons.scss +50 -50
  488. package/src/components/Icon/iconList.ts +464 -462
  489. package/src/components/Icon/index.ts +1 -1
  490. package/src/components/Icon/types.ts +14 -14
  491. package/src/components/IconButton/IconButton.scss +54 -54
  492. package/src/components/IconButton/IconButton.stories.tsx +33 -33
  493. package/src/components/IconButton/IconButton.tsx +36 -36
  494. package/src/components/IconButton/index.ts +1 -1
  495. package/src/components/IconButton/types.ts +6 -6
  496. package/src/components/IconRadioGroup/IconRadioGroup.scss +63 -63
  497. package/src/components/IconRadioGroup/IconRadioGroup.stories.tsx +108 -108
  498. package/src/components/IconRadioGroup/IconRadioGroup.tsx +73 -73
  499. package/src/components/IconRadioGroup/index.ts +1 -1
  500. package/src/components/IconRadioGroup/type.ts +49 -49
  501. package/src/components/Input/Input.scss +159 -159
  502. package/src/components/Input/Input.stories.tsx +141 -141
  503. package/src/components/Input/Input.tsx +114 -103
  504. package/src/components/Input/types.ts +85 -85
  505. package/src/components/InputWithDropdown/InputWithDropdown.scss +213 -213
  506. package/src/components/InputWithDropdown/InputWithDropdown.stories.tsx +169 -169
  507. package/src/components/InputWithDropdown/InputWithDropdown.tsx +122 -122
  508. package/src/components/InputWithDropdown/index.ts +1 -1
  509. package/src/components/InputWithDropdown/types.ts +113 -113
  510. package/src/components/LabelEditTextField/LabelEditTextField.scss +86 -86
  511. package/src/components/LabelEditTextField/LabelEditTextField.stories.tsx +192 -192
  512. package/src/components/LabelEditTextField/LabelEditTextField.tsx +246 -246
  513. package/src/components/LabelEditTextField/index.ts +1 -1
  514. package/src/components/LabelEditTextField/types.ts +46 -46
  515. package/src/components/LazyLoad/LazyLoad.d.ts +3 -3
  516. package/src/components/LazyLoad/LazyLoad.stories.tsx +33 -33
  517. package/src/components/LazyLoad/LazyLoad.ts +2 -2
  518. package/src/components/LazyLoad/LazyLoading.tsx +19 -19
  519. package/src/components/LazyLoad/index.ts +1 -1
  520. package/src/components/MachineInputField/MachineInputField.scss +59 -59
  521. package/src/components/MachineInputField/MachineInputField.stories.tsx +32 -32
  522. package/src/components/MachineInputField/MachineInputField.tsx +87 -87
  523. package/src/components/MachineInputField/index.ts +1 -1
  524. package/src/components/MachineInputField/types.ts +13 -13
  525. package/src/components/MenuOption/MenuOption.scss +97 -97
  526. package/src/components/MenuOption/MenuOption.stories.tsx +157 -157
  527. package/src/components/MenuOption/MenuOption.tsx +219 -219
  528. package/src/components/MenuOption/types.ts +228 -228
  529. package/src/components/MiniModal/MiniModal.scss +170 -170
  530. package/src/components/MiniModal/MiniModal.stories.tsx +735 -735
  531. package/src/components/MiniModal/MiniModal.tsx +344 -344
  532. package/src/components/MiniModal/index.ts +1 -1
  533. package/src/components/MiniModal/types.ts +123 -123
  534. package/src/components/Modal/Modal.stories.tsx +70 -69
  535. package/src/components/Modal/Modal.tsx +100 -100
  536. package/src/components/Modal/index.tsx +1 -1
  537. package/src/components/Modal/modal.scss +51 -51
  538. package/src/components/Modal/types.ts +43 -43
  539. package/src/components/ModulesChip/ModuleChip.scss +20 -20
  540. package/src/components/ModulesChip/ModuleChip.stories.tsx +41 -41
  541. package/src/components/ModulesChip/ModuleChip.tsx +31 -31
  542. package/src/components/ModulesChip/types.ts +14 -14
  543. package/src/components/MultiSelect/Dropdown.scss +78 -78
  544. package/src/components/MultiSelect/Dropdown.tsx +135 -135
  545. package/src/components/MultiSelect/MultiSelect.scss +217 -217
  546. package/src/components/MultiSelect/MultiSelect.stories.tsx +273 -273
  547. package/src/components/MultiSelect/MultiSelect.tsx +472 -472
  548. package/src/components/MultiSelect/MultiSelectTypes.ts +47 -47
  549. package/src/components/MultiSelect/dropdownTypes.ts +19 -19
  550. package/src/components/MultiSelect/index.ts +1 -1
  551. package/src/components/NLPInput/NLPInput.scss +246 -246
  552. package/src/components/NLPInput/NlpInput.stories.tsx +136 -136
  553. package/src/components/NLPInput/NlpInput.tsx +374 -374
  554. package/src/components/NLPInput/components/NlpDropDown/NlpDropDownType.ts +60 -60
  555. package/src/components/NLPInput/components/NlpDropDown/NlpDropdown.scss +83 -83
  556. package/src/components/NLPInput/components/NlpDropDown/NlpDropdown.tsx +180 -180
  557. package/src/components/NLPInput/index.ts +1 -1
  558. package/src/components/NLPInput/type.tsx +124 -124
  559. package/src/components/Paper/Paper.scss +13 -13
  560. package/src/components/Paper/Paper.stories.tsx +77 -77
  561. package/src/components/Paper/Paper.tsx +14 -14
  562. package/src/components/Paper/types.ts +19 -19
  563. package/src/components/PopUpModal/PopUpModal.scss +36 -36
  564. package/src/components/PopUpModal/PopUpModal.stories.tsx +61 -61
  565. package/src/components/PopUpModal/PopUpModal.tsx +85 -85
  566. package/src/components/PopUpModal/types.ts +13 -13
  567. package/src/components/RadioButton/RadioButton.scss +106 -106
  568. package/src/components/RadioButton/RadioButton.stories.tsx +43 -43
  569. package/src/components/RadioButton/RadioButton.tsx +41 -41
  570. package/src/components/RadioButton/index.ts +1 -1
  571. package/src/components/RadioButton/radioButtonTypes.tsx +62 -62
  572. package/src/components/RadioGroup/RadioGroup.scss +11 -11
  573. package/src/components/RadioGroup/RadioGroup.stories.tsx +150 -150
  574. package/src/components/RadioGroup/RadioGroup.tsx +49 -49
  575. package/src/components/RadioGroup/index.ts +1 -1
  576. package/src/components/RadioGroup/radioGroupTypes.tsx +96 -96
  577. package/src/components/Search/Search.scss +103 -103
  578. package/src/components/Search/Search.stories.tsx +26 -26
  579. package/src/components/Search/Search.tsx +127 -127
  580. package/src/components/Search/index.ts +1 -1
  581. package/src/components/Search/types.ts +15 -15
  582. package/src/components/Select/Select.scss +213 -213
  583. package/src/components/Select/Select.stories.tsx +355 -355
  584. package/src/components/Select/Select.tsx +278 -278
  585. package/src/components/Select/components/Dropdown.scss +61 -61
  586. package/src/components/Select/components/Dropdown.tsx +140 -140
  587. package/src/components/Select/components/types.ts +24 -24
  588. package/src/components/Select/index.ts +1 -1
  589. package/src/components/Select/types.ts +134 -134
  590. package/src/components/SequentialConnectingBranch/SequentialConnectingBranch.scss +128 -128
  591. package/src/components/SequentialConnectingBranch/SequentialConnectingBranch.stories.tsx +56 -56
  592. package/src/components/SequentialConnectingBranch/SequentialConnectingBranch.tsx +167 -167
  593. package/src/components/SequentialConnectingBranch/components/AddBrowserModal/AddBrowserModal.scss +51 -51
  594. package/src/components/SequentialConnectingBranch/components/AddBrowserModal/AddBrowserModal.tsx +107 -107
  595. package/src/components/SequentialConnectingBranch/components/AddBrowserModal/types.ts +5 -5
  596. package/src/components/SequentialConnectingBranch/components/Branches/Branches.scss +190 -190
  597. package/src/components/SequentialConnectingBranch/components/Branches/Branches.tsx +236 -236
  598. package/src/components/SequentialConnectingBranch/components/Branches/types.ts +25 -25
  599. package/src/components/SequentialConnectingBranch/components/ConnectingBranches/ConnectingBranches.scss +3 -3
  600. package/src/components/SequentialConnectingBranch/components/ConnectingBranches/ConnectingBranches.tsx +68 -68
  601. package/src/components/SequentialConnectingBranch/components/ConnectingBranches/types.ts +17 -17
  602. package/src/components/SequentialConnectingBranch/components/DatasetListModal/DatasetListModal.scss +31 -31
  603. package/src/components/SequentialConnectingBranch/components/DatasetListModal/DatasetListModal.tsx +85 -85
  604. package/src/components/SequentialConnectingBranch/components/DatasetListModal/types.ts +4 -4
  605. package/src/components/SequentialConnectingBranch/index.ts +1 -1
  606. package/src/components/SequentialConnectingBranch/types.ts +60 -60
  607. package/src/components/StateDropdown/StateDropdown.stories.tsx +104 -104
  608. package/src/components/StateDropdown/StateDropdown.tsx +245 -245
  609. package/src/components/StateDropdown/StateDropdownTypes.tsx +27 -27
  610. package/src/components/StatusButton/StatusButton.scss +90 -90
  611. package/src/components/StatusButton/StatusButton.stories.tsx +91 -91
  612. package/src/components/StatusButton/StatusButton.tsx +46 -46
  613. package/src/components/StatusButton/index.ts +1 -1
  614. package/src/components/StatusButton/types.ts +45 -45
  615. package/src/components/StatusCard/StatusCard.scss +94 -94
  616. package/src/components/StatusCard/StatusCard.stories.tsx +58 -58
  617. package/src/components/StatusCard/StatusCard.tsx +49 -49
  618. package/src/components/StatusCard/index.ts +1 -1
  619. package/src/components/StatusCard/types.ts +10 -10
  620. package/src/components/Table/Table.scss +116 -116
  621. package/src/components/Table/Table.stories.tsx +373 -373
  622. package/src/components/Table/Table.tsx +178 -178
  623. package/src/components/Table/Types.ts +124 -124
  624. package/src/components/Table/index.ts +1 -1
  625. package/src/components/TableTree/Components/TableBody.tsx +35 -35
  626. package/src/components/TableTree/Components/TableCell.tsx +59 -59
  627. package/src/components/TableTree/Components/TableHead.tsx +39 -39
  628. package/src/components/TableTree/Components/TableRow.tsx +37 -37
  629. package/src/components/TableTree/TableTree.scss +205 -205
  630. package/src/components/TableTree/TableTree.stories.tsx +179 -179
  631. package/src/components/TableTree/TableTree.tsx +245 -245
  632. package/src/components/TableTree/TableTreeStories.scss +22 -22
  633. package/src/components/TableTree/Utils/getAllChildIds.ts +12 -12
  634. package/src/components/TableTree/data.ts +322 -322
  635. package/src/components/TableTree/index.ts +1 -1
  636. package/src/components/TableTree/types.ts +68 -68
  637. package/src/components/Tabs/Tabs.scss +79 -79
  638. package/src/components/Tabs/Tabs.stories.tsx +133 -133
  639. package/src/components/Tabs/Tabs.tsx +61 -61
  640. package/src/components/Tabs/index.ts +1 -1
  641. package/src/components/Tabs/types.ts +48 -48
  642. package/src/components/TextArea/Textarea.scss +144 -144
  643. package/src/components/TextArea/Textarea.stories.tsx +92 -92
  644. package/src/components/TextArea/Textarea.tsx +84 -84
  645. package/src/components/TextArea/Types.ts +82 -82
  646. package/src/components/TextArea/index.tsx +1 -1
  647. package/src/components/ThemeProvider/ThemeProvider.tsx +27 -27
  648. package/src/components/ThemeProvider/index.ts +1 -1
  649. package/src/components/ThemeProvider/types.ts +14 -14
  650. package/src/components/Toast/Toast.scss +121 -121
  651. package/src/components/Toast/Toast.stories.tsx +144 -144
  652. package/src/components/Toast/Toast.tsx +117 -117
  653. package/src/components/Toast/index.ts +1 -1
  654. package/src/components/Toast/types.ts +27 -27
  655. package/src/components/Toastify/Toastify.stories.tsx +71 -71
  656. package/src/components/Toastify/Toastify.tsx +94 -94
  657. package/src/components/Toastify/index.ts +1 -1
  658. package/src/components/Toastify/types.ts +9 -9
  659. package/src/components/Toggle/Toggle.scss +133 -133
  660. package/src/components/Toggle/Toggle.stories.tsx +132 -132
  661. package/src/components/Toggle/Toggle.tsx +96 -96
  662. package/src/components/Toggle/index.ts +1 -1
  663. package/src/components/Toggle/types.ts +43 -43
  664. package/src/components/ToggleSwitch/ToggleSwitch.scss +58 -58
  665. package/src/components/ToggleSwitch/ToggleSwitch.stories.tsx +52 -52
  666. package/src/components/ToggleSwitch/ToggleSwitch.tsx +30 -30
  667. package/src/components/ToggleSwitch/index.ts +1 -1
  668. package/src/components/Tooltip/Tooltip.scss +27 -27
  669. package/src/components/Tooltip/Tooltip.stories.tsx +98 -98
  670. package/src/components/Tooltip/Tooltip.tsx +194 -194
  671. package/src/components/Tooltip/index.ts +1 -1
  672. package/src/components/Tooltip/types.ts +66 -66
  673. package/src/components/Typography/Typography.scss +25 -25
  674. package/src/components/Typography/Typography.stories.tsx +59 -59
  675. package/src/components/Typography/Typography.tsx +41 -41
  676. package/src/components/Typography/index.ts +1 -1
  677. package/src/components/Typography/types.ts +57 -57
  678. package/src/components/VariableInput/VariableInput.scss +127 -127
  679. package/src/components/VariableInput/VariableInput.stories.tsx +32 -32
  680. package/src/components/VariableInput/VariableInput.tsx +352 -352
  681. package/src/components/VariableInput/types.ts +56 -56
  682. package/src/hooks/keyboardevents/useEscKeyEvent.tsx +30 -30
  683. package/src/hooks/useClickOutside.tsx +30 -30
  684. package/src/hooks/useFileDropzone.tsx +274 -274
  685. package/src/hooks/usePortalPosition.tsx +53 -53
  686. package/src/hooks/useTheme.tsx +13 -13
  687. package/src/index.ts +193 -189
  688. package/src/utils/TableCell/TableCell.ts +16 -16
  689. package/src/utils/capitalize/capitalize.stories.tsx +44 -44
  690. package/src/utils/capitalize/capitalize.tsx +4 -4
  691. package/src/utils/checkDuplicates/CheckDuplicates.stories.tsx +40 -0
  692. package/src/utils/checkDuplicates/checkDuplicates.ts +13 -0
  693. package/src/utils/checkEmpty/checkEmpty.stories.tsx +34 -34
  694. package/src/utils/checkEmpty/checkEmpty.ts +24 -24
  695. package/src/utils/compareArrays/compareArrays.stories.tsx +62 -62
  696. package/src/utils/compareArrays/compareArrays.ts +31 -31
  697. package/src/utils/compareObjects/compareObjects.stories.tsx +51 -51
  698. package/src/utils/compareObjects/compareObjects.ts +53 -53
  699. package/src/utils/debounce/debounce.stories.tsx +81 -81
  700. package/src/utils/debounce/debounce.ts +28 -28
  701. package/src/utils/downloadFile/saveFileFromBlob.stories.tsx +62 -62
  702. package/src/utils/downloadFile/saveFileFromBlob.ts +40 -40
  703. package/src/utils/ffID/ffID.stories.tsx +35 -35
  704. package/src/utils/ffID/ffid.ts +7 -7
  705. package/src/utils/findAndInsert/findAndInsert.stories.tsx +119 -119
  706. package/src/utils/findAndInsert/findAndInsert.ts +49 -49
  707. package/src/utils/getEncryptedData/getEncryptedData.stories.tsx +55 -55
  708. package/src/utils/getEncryptedData/getEncryptedData.ts +8 -8
  709. package/src/utils/getExtension/getExtension.stories.tsx +23 -23
  710. package/src/utils/getExtension/getExtension.ts +28 -28
  711. package/src/utils/getSelectOptionValue/getSelectOptionValue.ts +31 -31
  712. package/src/utils/getSequentialPayload/getSequentialPayload.stories.tsx +72 -72
  713. package/src/utils/getSequentialPayload/getSequentialPayload.ts +16 -16
  714. package/src/utils/getSequentialPayload/types.ts +32 -32
  715. package/src/utils/throttle/throttle.stories.tsx +100 -100
  716. package/src/utils/throttle/throttle.ts +33 -33
  717. package/src/utils/truncateText/truncateText.stories.tsx +37 -37
  718. package/src/utils/truncateText/truncateText.ts +4 -4
  719. package/tsconfig.json +55 -55
  720. package/vite.config.js +14 -14
  721. package/lib/assets/fonts/Poppins-Bold.ttf +0 -0
  722. package/lib/assets/fonts/Poppins-Medium.ttf +0 -0
  723. package/lib/assets/fonts/Poppins-Regular.ttf +0 -0
  724. package/lib/assets/fonts/Poppins-SemiBold.ttf +0 -0
  725. package/lib/components/Excel/ContextMenu/ContextMenu.d.ts +0 -4
  726. package/lib/components/TableTree/TableTree copy.d.ts +0 -25
@@ -1,819 +1,819 @@
1
- import { PointRange } from './point-range';
2
- import * as Matrix from './matrix';
3
- import * as Types from './types';
4
- import * as Point from './point';
5
- import {
6
- Selection,
7
- EmptySelection,
8
- RangeSelection,
9
- EntireColumnsSelection,
10
- EntireRowsSelection,
11
- } from './selection';
12
-
13
- export function applyBoldToCells(
14
- currentData: Matrix.Matrix<Types.CellBase<any>>,
15
- selectedRange: PointRange,
16
- ): Matrix.Matrix<Types.CellBase<any>> {
17
- if (!selectedRange) {
18
- return currentData;
19
- }
20
-
21
- const { start, end } = selectedRange;
22
-
23
- let updatedData = currentData;
24
- let anyBold = false;
25
-
26
- for (let row = start.row; row <= end.row; row++) {
27
- for (let col = start.column; col <= end.column; col++) {
28
- const currentCell = Matrix.get({ row, column: col }, updatedData);
29
- if (!currentCell) continue;
30
-
31
- if (currentCell.style?.fontWeight === 'bold') {
32
- anyBold = true;
33
- break;
34
- }
35
- }
36
- if (anyBold) break;
37
- }
38
-
39
- for (let row = start.row; row <= end.row; row++) {
40
- for (let col = start.column; col <= end.column; col++) {
41
- const currentCell = Matrix.get({ row, column: col }, updatedData);
42
- if (!currentCell) continue;
43
-
44
- const updatedCell = {
45
- ...currentCell,
46
- style: {
47
- ...currentCell.style,
48
- fontWeight: anyBold ? 'normal' : 'bold',
49
- },
50
- };
51
- updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
52
- }
53
- }
54
-
55
- return updatedData;
56
- }
57
-
58
- export function applyItalicToCells(
59
- currentData: Matrix.Matrix<Types.CellBase<any>>,
60
- selectedRange: PointRange
61
- ): Matrix.Matrix<Types.CellBase<any>> {
62
- if (!selectedRange) {
63
- return currentData;
64
- }
65
-
66
- const { start, end } = selectedRange;
67
-
68
- let updatedData = currentData;
69
- let anyItalic = false;
70
-
71
- for (let row = start.row; row <= end.row; row++) {
72
- for (let col = start.column; col <= end.column; col++) {
73
- const currentCell = Matrix.get({ row, column: col }, updatedData);
74
- if (!currentCell) continue;
75
-
76
- if (currentCell.style?.fontStyle === 'italic') {
77
- anyItalic = true;
78
- break;
79
- }
80
- }
81
- if (anyItalic) break;
82
- }
83
-
84
- for (let row = start.row; row <= end.row; row++) {
85
- for (let col = start.column; col <= end.column; col++) {
86
- const currentCell = Matrix.get({ row, column: col }, updatedData);
87
- if (!currentCell) continue;
88
-
89
- const updatedCell = {
90
- ...currentCell,
91
- style: {
92
- ...currentCell.style,
93
- fontStyle: anyItalic ? 'normal' : 'italic',
94
- },
95
- };
96
- updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
97
- }
98
- }
99
-
100
- return updatedData;
101
- }
102
-
103
- export function applyFontFamily(
104
- currentData: Matrix.Matrix<Types.CellBase<any>>,
105
- selectedRange: PointRange,
106
- value: string
107
- ): Matrix.Matrix<Types.CellBase<any>> {
108
- if (!selectedRange) {
109
- return currentData;
110
- }
111
-
112
- const { start, end } = selectedRange;
113
-
114
- let updatedData = currentData;
115
-
116
- for (let row = start.row; row <= end.row; row++) {
117
- for (let col = start.column; col <= end.column; col++) {
118
- const currentCell = Matrix.get({ row, column: col }, updatedData);
119
-
120
- if (!currentCell) {
121
- continue;
122
- }
123
-
124
- let updatedCell = {
125
- ...currentCell,
126
- style: {
127
- ...currentCell.style,
128
- fontFamily: value,
129
- },
130
- };
131
-
132
- updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
133
- }
134
- }
135
-
136
- return updatedData;
137
- }
138
-
139
- export function applyFontSize(
140
- currentData: Matrix.Matrix<Types.CellBase<any>>,
141
- selectedRange: PointRange,
142
- value: string
143
- ): Matrix.Matrix<Types.CellBase<any>> {
144
- if (!selectedRange) {
145
- return currentData;
146
- }
147
-
148
- const conversion = Number(value);
149
-
150
- if (isNaN(conversion)) {
151
- return currentData;
152
- }
153
-
154
- const fontSizeInPx = convertPtToPx(conversion);
155
-
156
- const { start, end } = selectedRange;
157
-
158
- let updatedData = currentData;
159
-
160
- for (let row = start.row; row <= end.row; row++) {
161
- for (let col = start.column; col <= end.column; col++) {
162
- const currentCell = Matrix.get({ row, column: col }, updatedData);
163
-
164
- if (!currentCell) {
165
- continue;
166
- }
167
-
168
- let updatedCell = {
169
- ...currentCell,
170
- style: {
171
- ...currentCell.style,
172
- fontSize: fontSizeInPx,
173
- },
174
- };
175
-
176
- updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
177
- }
178
- }
179
-
180
- return updatedData;
181
- }
182
-
183
- export function applyBorderToCells(
184
- currentData: Matrix.Matrix<Types.CellBase<any>>,
185
- selectedRange: PointRange,
186
- value: string,
187
- color: string
188
- ): Matrix.Matrix<Types.CellBase<any>> {
189
- if (!selectedRange) {
190
- return currentData;
191
- }
192
-
193
- const { start, end } = selectedRange;
194
-
195
- let updatedData = currentData;
196
-
197
- for (let row = start.row; row <= end.row; row++) {
198
- for (let col = start.column; col <= end.column; col++) {
199
- const currentCell = Matrix.get({ row, column: col }, updatedData);
200
-
201
- if (!currentCell) {
202
- continue;
203
- }
204
-
205
- let updatedCell = { ...currentCell };
206
-
207
- switch (value) {
208
- case 'border-all-sides':
209
- updatedCell.style = {
210
- ...currentCell.style,
211
- borderRight: `2px solid ${color}`,
212
- borderLeft: `2px solid ${color}`,
213
- borderTop: `2px solid ${color}`,
214
- borderBottom: `2px solid ${color}`,
215
- };
216
- break;
217
- case 'border-none':
218
- updatedCell.style = {
219
- ...currentCell.style,
220
- borderRight: `1px solid var(--toggle-strip-color)`,
221
- borderLeft: `1px solid var(--toggle-strip-color)`,
222
- borderTop: `1px solid var(--toggle-strip-color)`,
223
- borderBottom: `1px solid var(--toggle-strip-color)`,
224
- };
225
- break;
226
- case 'border-right':
227
- updatedCell.style = {
228
- ...currentCell.style,
229
- borderRight: `2px solid ${color}`,
230
- };
231
- break;
232
- case 'border-left':
233
- updatedCell.style = {
234
- ...currentCell.style,
235
- borderLeft: `2px solid ${color}`,
236
- };
237
- break;
238
- case 'border-top':
239
- updatedCell.style = {
240
- ...currentCell.style,
241
- borderTop: `2px solid ${color}`,
242
- };
243
- break;
244
- case 'border-bottom':
245
- updatedCell.style = {
246
- ...currentCell.style,
247
- borderBottom: `2px solid ${color}`,
248
- };
249
- break;
250
- default:
251
- break;
252
- }
253
-
254
- updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
255
- }
256
- }
257
-
258
- return updatedData;
259
- }
260
-
261
- export function applyTextAlign(
262
- currentData: Matrix.Matrix<Types.CellBase<any>>,
263
- selectedRange: PointRange,
264
- value: string
265
- ): Matrix.Matrix<Types.CellBase<any>> {
266
- if (!selectedRange) {
267
- return currentData;
268
- }
269
-
270
- const { start, end } = selectedRange;
271
-
272
- let updatedData = currentData;
273
-
274
- for (let row = start.row; row <= end.row; row++) {
275
- for (let col = start.column; col <= end.column; col++) {
276
- const currentCell = Matrix.get({ row, column: col }, updatedData);
277
-
278
- if (!currentCell) {
279
- continue;
280
- }
281
-
282
- let updatedCell = {
283
- ...currentCell,
284
- style: {
285
- ...currentCell.style,
286
- textAlign: value as TextAlign,
287
- },
288
- };
289
-
290
- updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
291
- }
292
- }
293
-
294
- return updatedData;
295
- }
296
-
297
- export function applyUnderlineToCells(
298
- currentData: Matrix.Matrix<Types.CellBase<any>>,
299
- selectedRange: PointRange,
300
- value: string,
301
- active: boolean
302
- ): Matrix.Matrix<Types.CellBase<any>> {
303
- if (!selectedRange) {
304
- return currentData;
305
- }
306
-
307
- const { start, end } = selectedRange;
308
-
309
- let updatedData = currentData;
310
- let anyUnderlined = false;
311
-
312
- for (let row = start.row; row <= end.row; row++) {
313
- for (let col = start.column; col <= end.column; col++) {
314
- const currentCell = Matrix.get({ row, column: col }, updatedData);
315
- if (!currentCell) continue;
316
-
317
- if (currentCell.style?.textDecoration === 'underline') {
318
- anyUnderlined = true;
319
- break;
320
- }
321
- }
322
- if (anyUnderlined) break;
323
- }
324
-
325
- for (let row = start.row; row <= end.row; row++) {
326
- for (let col = start.column; col <= end.column; col++) {
327
- const currentCell = Matrix.get({ row, column: col }, updatedData);
328
- if (!currentCell) continue;
329
-
330
- let updatedCell;
331
- if (!active || anyUnderlined) {
332
- updatedCell = {
333
- ...currentCell,
334
- style: {
335
- ...currentCell.style,
336
- textDecoration: 'none',
337
- textDecorationStyle: 'solid' as TextDecorationStyle,
338
- },
339
- };
340
- } else {
341
- updatedCell = {
342
- ...currentCell,
343
- style: {
344
- ...currentCell.style,
345
- textDecoration: value === 'double_border' ? 'underline' : value,
346
- textDecorationStyle:
347
- value === 'double_border'
348
- ? 'double'
349
- : ('none' as TextDecorationStyle),
350
- },
351
- };
352
- }
353
-
354
- updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
355
- }
356
- }
357
-
358
- return updatedData;
359
- }
360
-
361
- export function isValidHexColor(color: string): boolean {
362
- if (color.length !== 6) {
363
- return false;
364
- }
365
-
366
- const hexChars = '0123456789ABCDEFabcdef';
367
- for (let i = 1; i < color.length; i++) {
368
- if (!hexChars.includes(color[i] as string)) {
369
- return false;
370
- }
371
- }
372
-
373
- return true;
374
- }
375
-
376
- export function applyColorToCells(
377
- currentData: Matrix.Matrix<Types.CellBase<any>>,
378
- selectedRange: PointRange | null,
379
- color: string
380
- ): Matrix.Matrix<Types.CellBase<any>> {
381
- if (!selectedRange) {
382
- return currentData;
383
- }
384
-
385
- const { start, end } = selectedRange;
386
-
387
- let updatedData = currentData;
388
-
389
- const isHex = isValidHexColor(color);
390
-
391
- const applyColor = isHex ? `#${color}` : color;
392
-
393
- for (let row = start.row; row <= end.row; row++) {
394
- for (let col = start.column; col <= end.column; col++) {
395
- const currentCell = Matrix.get({ row, column: col }, updatedData);
396
-
397
- if (!currentCell) {
398
- continue;
399
- }
400
-
401
- const updatedCell = {
402
- ...currentCell,
403
- style: {
404
- ...currentCell.style,
405
- color: applyColor,
406
- },
407
- };
408
-
409
- updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
410
- }
411
- }
412
-
413
- return updatedData;
414
- }
415
-
416
- export function applyBackgroundColorToCells(
417
- currentData: Matrix.Matrix<Types.CellBase<any>>,
418
- selectedRange: PointRange | null,
419
- backgroundColor: string
420
- ): Matrix.Matrix<Types.CellBase<any>> {
421
- if (!selectedRange) {
422
- return currentData;
423
- }
424
-
425
- if (selectedRange) {
426
- const { start, end } = selectedRange;
427
-
428
- let updatedData = currentData;
429
-
430
- const isHex = isValidHexColor(backgroundColor);
431
-
432
- const applyColor = isHex ? `#${backgroundColor}` : backgroundColor;
433
-
434
- for (let row = start.row; row <= end.row; row++) {
435
- for (let col = start.column; col <= end.column; col++) {
436
- const currentCell = Matrix.get({ row, column: col }, updatedData);
437
-
438
- if (!currentCell) {
439
- continue;
440
- }
441
-
442
- const updatedCell = {
443
- ...currentCell,
444
- style: {
445
- ...currentCell.style,
446
- backgroundColor: applyColor,
447
- },
448
- };
449
-
450
- updatedData = Matrix.set(
451
- { row, column: col },
452
- updatedCell,
453
- updatedData
454
- );
455
- }
456
- }
457
-
458
- return updatedData;
459
- }
460
- return currentData;
461
- }
462
-
463
- export function applyFormatePainter(
464
- currentData: Matrix.Matrix<Types.CellBase<any>>,
465
- activePoint: Point.Point | null
466
- ): React.CSSProperties | undefined {
467
- if (!activePoint) {
468
- return undefined;
469
- }
470
-
471
- const { row, column } = activePoint;
472
- let updatedData = { ...currentData };
473
-
474
- const currentCell = Matrix.get({ row, column }, updatedData);
475
-
476
- if (currentCell && currentCell.style) {
477
- return currentCell.style;
478
- }
479
-
480
- return undefined;
481
- }
482
-
483
- export function edit(state: Types.StoreState): Types.StoreState {
484
- if (isActiveReadOnly(state)) {
485
- return state;
486
- }
487
- return { ...state, mode: 'edit' };
488
- }
489
-
490
- export function clear(state: Types.StoreState): Types.StoreState {
491
- if (!state.active) {
492
- return state;
493
- }
494
-
495
- const canClearCell = (cell: Types.CellBase | undefined) =>
496
- cell && !cell.readOnly;
497
- const clearCell = (cell: Types.CellBase | undefined) => {
498
- if (!canClearCell(cell)) {
499
- return cell;
500
- }
501
- return Object.assign({}, cell, { value: undefined });
502
- };
503
-
504
- const selectedRange = state.selected.toRange(state.model.data);
505
-
506
- const changes: Types.CommitChanges = [];
507
- let newData = state.model.data;
508
-
509
- for (const point of selectedRange || []) {
510
- const cell = Matrix.get(point, state.model.data);
511
- const clearedCell = clearCell(cell);
512
- changes.push({
513
- prevCell: cell || null,
514
- nextCell: clearedCell || null,
515
- });
516
- newData = Matrix.set(point, clearedCell, newData);
517
- }
518
-
519
- return {
520
- ...state,
521
- ...commit(changes),
522
- };
523
- }
524
-
525
- export function blur(state: Types.StoreState): Types.StoreState {
526
- return { ...state, active: null, selected: new EmptySelection() };
527
- }
528
-
529
- export function view(state: Types.StoreState): Types.StoreState {
530
- return { ...state, mode: 'view' };
531
- }
532
-
533
- export function commit(
534
- changes: Types.CommitChanges
535
- ): Partial<Types.StoreState> {
536
- return { lastCommit: changes };
537
- }
538
-
539
- export const go =
540
- (rowDelta: number, columnDelta: number): KeyDownHandler =>
541
- (state) => {
542
- if (!state.active) {
543
- return;
544
- }
545
- const size = Matrix.getSize(state.model.data);
546
- const newColumn = state.active.column + columnDelta;
547
- const shouldWrap = newColumn >= size.columns;
548
- const nextActive = {
549
- row: state.active.row + rowDelta + (shouldWrap ? 1 : 0),
550
- column: (state.active.column + columnDelta) % size.columns,
551
- };
552
- if (!Matrix.has(nextActive, state.model.data)) {
553
- return { ...state, mode: 'view' };
554
- }
555
- return {
556
- ...state,
557
- active: nextActive,
558
- selected: new RangeSelection(new PointRange(nextActive, nextActive)),
559
- mode: 'view',
560
- };
561
- };
562
-
563
- function convertPtToPx(pt: number): string {
564
- const px = pt * 1.33;
565
- return `${Math.round(px)}px`;
566
- }
567
-
568
- // Key Bindings
569
-
570
- type TextDecorationStyle = 'solid' | 'double' | 'dotted' | 'dashed' | 'wavy';
571
-
572
- type TextAlign = 'left' | 'center' | 'right';
573
-
574
- export type KeyDownHandler = (
575
- state: Types.StoreState,
576
- event: React.KeyboardEvent
577
- ) => Types.StoreState | void;
578
-
579
- type KeyDownHandlers = {
580
- [K in string]: KeyDownHandler | undefined;
581
- };
582
-
583
- const keyDownHandlers: KeyDownHandlers = {
584
- ArrowUp: go(-1, 0),
585
- ArrowDown: go(+1, 0),
586
- ArrowLeft: go(0, -1),
587
- ArrowRight: go(0, +1),
588
- Tab: go(0, +1),
589
- Enter: edit,
590
- Backspace: clear,
591
- Delete: clear,
592
- Escape: blur,
593
- };
594
-
595
- const editKeyDownHandlers: KeyDownHandlers = {
596
- Escape: view,
597
- Tab: keyDownHandlers.Tab,
598
- Enter: keyDownHandlers.ArrowDown,
599
- };
600
-
601
- const editShiftKeyDownHandlers: KeyDownHandlers = {
602
- Tab: go(0, -1),
603
- };
604
-
605
- export enum Direction {
606
- Left = 'Left',
607
- Right = 'Right',
608
- Top = 'Top',
609
- Bottom = 'Bottom',
610
- }
611
-
612
- const shiftKeyDownHandlers: KeyDownHandlers = {
613
- ArrowUp: (state) => ({
614
- ...state,
615
- selected: modifyEdge(
616
- state.selected,
617
- state.active,
618
- state.model.data,
619
- Direction.Top
620
- ),
621
- }),
622
- ArrowDown: (state) => ({
623
- ...state,
624
- selected: modifyEdge(
625
- state.selected,
626
- state.active,
627
- state.model.data,
628
- Direction.Bottom
629
- ),
630
- }),
631
- ArrowLeft: (state) => ({
632
- ...state,
633
- selected: modifyEdge(
634
- state.selected,
635
- state.active,
636
- state.model.data,
637
- Direction.Left
638
- ),
639
- }),
640
- ArrowRight: (state) => ({
641
- ...state,
642
- selected: modifyEdge(
643
- state.selected,
644
- state.active,
645
- state.model.data,
646
- Direction.Right
647
- ),
648
- }),
649
- Tab: go(0, -1),
650
- };
651
-
652
- const shiftMetaKeyDownHandlers: KeyDownHandlers = {};
653
- const metaKeyDownHandlers: KeyDownHandlers = {};
654
-
655
- export function getKeyDownHandler(
656
- state: Types.StoreState,
657
- event: React.KeyboardEvent
658
- ): KeyDownHandler | undefined {
659
- const { key } = event;
660
- let handlers;
661
- if (state.mode === 'edit') {
662
- if (event.shiftKey) {
663
- handlers = editShiftKeyDownHandlers;
664
- } else {
665
- handlers = editKeyDownHandlers;
666
- }
667
- } else if (event.shiftKey && event.metaKey) {
668
- handlers = shiftMetaKeyDownHandlers;
669
- } else if (event.shiftKey) {
670
- handlers = shiftKeyDownHandlers;
671
- } else if (event.metaKey) {
672
- handlers = metaKeyDownHandlers;
673
- } else {
674
- handlers = keyDownHandlers;
675
- }
676
-
677
- return handlers[key];
678
- }
679
-
680
- /** Returns whether the reducer has a handler for the given keydown event */
681
- export function hasKeyDownHandler(
682
- state: Types.StoreState,
683
- event: React.KeyboardEvent
684
- ): boolean {
685
- return getKeyDownHandler(state, event) !== undefined;
686
- }
687
-
688
- /** Returns whether the active cell is read only */
689
- export function isActiveReadOnly(state: Types.StoreState): boolean {
690
- const activeCell = getActive(state);
691
- return Boolean(activeCell?.readOnly);
692
- }
693
-
694
- /** Gets active cell from given state */
695
- export function getActive(state: Types.StoreState): Types.CellBase | null {
696
- const activeCell = state.active && Matrix.get(state.active, state.model.data);
697
- return activeCell || null;
698
- }
699
-
700
- /** Modify given edge according to given active point and data */
701
- export function modifyEdge<T extends Selection>(
702
- selection: T,
703
- active: Point.Point | null,
704
- data: Matrix.Matrix<unknown>,
705
- direction: Direction
706
- ): T {
707
- if (!active) {
708
- return selection;
709
- }
710
- if (selection instanceof RangeSelection) {
711
- const nextSelection = modifyRangeSelectionEdge(
712
- selection,
713
- active,
714
- data,
715
- direction
716
- );
717
- // @ts-expect-error
718
- return nextSelection;
719
- }
720
- if (selection instanceof EntireColumnsSelection) {
721
- // @ts-expect-error
722
- return modifyEntireColumnsSelection(selection, active, data, direction);
723
- }
724
- if (selection instanceof EntireRowsSelection) {
725
- // @ts-expect-error
726
- return modifyEntireRowsSelection(selection, active, data, direction);
727
- }
728
- return selection;
729
- }
730
-
731
- export function modifyRangeSelectionEdge(
732
- rangeSelection: RangeSelection,
733
- active: Point.Point,
734
- data: Matrix.Matrix<unknown>,
735
- edge: Direction
736
- ): RangeSelection {
737
- const field =
738
- edge === Direction.Left || edge === Direction.Right ? 'column' : 'row';
739
-
740
- const key =
741
- edge === Direction.Left || edge === Direction.Top ? 'start' : 'end';
742
- const delta = key === 'start' ? -1 : 1;
743
-
744
- const edgeOffsets = rangeSelection.range.has({
745
- ...active,
746
- [field]: active[field] + delta * -1,
747
- });
748
-
749
- const keyToModify = edgeOffsets ? (key === 'start' ? 'end' : 'start') : key;
750
-
751
- const nextRange = new PointRange(
752
- rangeSelection.range.start,
753
- rangeSelection.range.end
754
- );
755
-
756
- nextRange[keyToModify][field] += delta;
757
-
758
- const nextSelection = new RangeSelection(nextRange).normalizeTo(data);
759
-
760
- return nextSelection;
761
- }
762
-
763
- export function modifyEntireRowsSelection(
764
- selection: EntireRowsSelection,
765
- active: Point.Point,
766
- data: Matrix.Matrix<unknown>,
767
- edge: Direction
768
- ): EntireRowsSelection {
769
- if (edge === Direction.Left || edge === Direction.Right) {
770
- return selection;
771
- }
772
- const delta = edge === Direction.Top ? -1 : 1;
773
- const property = edge === Direction.Top ? 'start' : 'end';
774
- const oppositeProperty = property === 'start' ? 'end' : 'start';
775
- const newSelectionData = { ...selection };
776
- if (
777
- edge === Direction.Top
778
- ? selection.end > active.row
779
- : selection.start < active.row
780
- ) {
781
- newSelectionData[oppositeProperty] = selection[oppositeProperty] + delta;
782
- } else {
783
- newSelectionData[property] = selection[property] + delta;
784
- }
785
- const nextSelection = new EntireRowsSelection(
786
- Math.max(newSelectionData.start, 0),
787
- Math.max(newSelectionData.end, 0)
788
- );
789
- return nextSelection.normalizeTo(data);
790
- }
791
-
792
- export function modifyEntireColumnsSelection(
793
- selection: EntireColumnsSelection,
794
- active: Point.Point,
795
- data: Matrix.Matrix<unknown>,
796
- edge: Direction
797
- ): EntireColumnsSelection {
798
- if (edge === Direction.Top || edge === Direction.Bottom) {
799
- return selection;
800
- }
801
- const delta = edge === Direction.Left ? -1 : 1;
802
- const property = edge === Direction.Left ? 'start' : 'end';
803
- const oppositeProperty = property === 'start' ? 'end' : 'start';
804
- const newSelectionData = { ...selection };
805
- if (
806
- edge === Direction.Left
807
- ? selection.end > active.row
808
- : selection.start < active.row
809
- ) {
810
- newSelectionData[oppositeProperty] = selection[oppositeProperty] + delta;
811
- } else {
812
- newSelectionData[property] = selection[property] + delta;
813
- }
814
- const nextSelection = new EntireColumnsSelection(
815
- Math.max(newSelectionData.start, 0),
816
- Math.max(newSelectionData.end, 0)
817
- );
818
- return nextSelection.normalizeTo(data);
819
- }
1
+ import { PointRange } from './point-range';
2
+ import * as Matrix from './matrix';
3
+ import * as Types from './types';
4
+ import * as Point from './point';
5
+ import {
6
+ Selection,
7
+ EmptySelection,
8
+ RangeSelection,
9
+ EntireColumnsSelection,
10
+ EntireRowsSelection,
11
+ } from './selection';
12
+
13
+ export function applyBoldToCells(
14
+ currentData: Matrix.Matrix<Types.CellBase<any>>,
15
+ selectedRange: PointRange,
16
+ ): Matrix.Matrix<Types.CellBase<any>> {
17
+ if (!selectedRange) {
18
+ return currentData;
19
+ }
20
+
21
+ const { start, end } = selectedRange;
22
+
23
+ let updatedData = currentData;
24
+ let anyBold = false;
25
+
26
+ for (let row = start.row; row <= end.row; row++) {
27
+ for (let col = start.column; col <= end.column; col++) {
28
+ const currentCell = Matrix.get({ row, column: col }, updatedData);
29
+ if (!currentCell) continue;
30
+
31
+ if (currentCell.style?.fontWeight === 'bold') {
32
+ anyBold = true;
33
+ break;
34
+ }
35
+ }
36
+ if (anyBold) break;
37
+ }
38
+
39
+ for (let row = start.row; row <= end.row; row++) {
40
+ for (let col = start.column; col <= end.column; col++) {
41
+ const currentCell = Matrix.get({ row, column: col }, updatedData);
42
+ if (!currentCell) continue;
43
+
44
+ const updatedCell = {
45
+ ...currentCell,
46
+ style: {
47
+ ...currentCell.style,
48
+ fontWeight: anyBold ? 'normal' : 'bold',
49
+ },
50
+ };
51
+ updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
52
+ }
53
+ }
54
+
55
+ return updatedData;
56
+ }
57
+
58
+ export function applyItalicToCells(
59
+ currentData: Matrix.Matrix<Types.CellBase<any>>,
60
+ selectedRange: PointRange
61
+ ): Matrix.Matrix<Types.CellBase<any>> {
62
+ if (!selectedRange) {
63
+ return currentData;
64
+ }
65
+
66
+ const { start, end } = selectedRange;
67
+
68
+ let updatedData = currentData;
69
+ let anyItalic = false;
70
+
71
+ for (let row = start.row; row <= end.row; row++) {
72
+ for (let col = start.column; col <= end.column; col++) {
73
+ const currentCell = Matrix.get({ row, column: col }, updatedData);
74
+ if (!currentCell) continue;
75
+
76
+ if (currentCell.style?.fontStyle === 'italic') {
77
+ anyItalic = true;
78
+ break;
79
+ }
80
+ }
81
+ if (anyItalic) break;
82
+ }
83
+
84
+ for (let row = start.row; row <= end.row; row++) {
85
+ for (let col = start.column; col <= end.column; col++) {
86
+ const currentCell = Matrix.get({ row, column: col }, updatedData);
87
+ if (!currentCell) continue;
88
+
89
+ const updatedCell = {
90
+ ...currentCell,
91
+ style: {
92
+ ...currentCell.style,
93
+ fontStyle: anyItalic ? 'normal' : 'italic',
94
+ },
95
+ };
96
+ updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
97
+ }
98
+ }
99
+
100
+ return updatedData;
101
+ }
102
+
103
+ export function applyFontFamily(
104
+ currentData: Matrix.Matrix<Types.CellBase<any>>,
105
+ selectedRange: PointRange,
106
+ value: string
107
+ ): Matrix.Matrix<Types.CellBase<any>> {
108
+ if (!selectedRange) {
109
+ return currentData;
110
+ }
111
+
112
+ const { start, end } = selectedRange;
113
+
114
+ let updatedData = currentData;
115
+
116
+ for (let row = start.row; row <= end.row; row++) {
117
+ for (let col = start.column; col <= end.column; col++) {
118
+ const currentCell = Matrix.get({ row, column: col }, updatedData);
119
+
120
+ if (!currentCell) {
121
+ continue;
122
+ }
123
+
124
+ let updatedCell = {
125
+ ...currentCell,
126
+ style: {
127
+ ...currentCell.style,
128
+ fontFamily: value,
129
+ },
130
+ };
131
+
132
+ updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
133
+ }
134
+ }
135
+
136
+ return updatedData;
137
+ }
138
+
139
+ export function applyFontSize(
140
+ currentData: Matrix.Matrix<Types.CellBase<any>>,
141
+ selectedRange: PointRange,
142
+ value: string
143
+ ): Matrix.Matrix<Types.CellBase<any>> {
144
+ if (!selectedRange) {
145
+ return currentData;
146
+ }
147
+
148
+ const conversion = Number(value);
149
+
150
+ if (isNaN(conversion)) {
151
+ return currentData;
152
+ }
153
+
154
+ const fontSizeInPx = convertPtToPx(conversion);
155
+
156
+ const { start, end } = selectedRange;
157
+
158
+ let updatedData = currentData;
159
+
160
+ for (let row = start.row; row <= end.row; row++) {
161
+ for (let col = start.column; col <= end.column; col++) {
162
+ const currentCell = Matrix.get({ row, column: col }, updatedData);
163
+
164
+ if (!currentCell) {
165
+ continue;
166
+ }
167
+
168
+ let updatedCell = {
169
+ ...currentCell,
170
+ style: {
171
+ ...currentCell.style,
172
+ fontSize: fontSizeInPx,
173
+ },
174
+ };
175
+
176
+ updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
177
+ }
178
+ }
179
+
180
+ return updatedData;
181
+ }
182
+
183
+ export function applyBorderToCells(
184
+ currentData: Matrix.Matrix<Types.CellBase<any>>,
185
+ selectedRange: PointRange,
186
+ value: string,
187
+ color: string
188
+ ): Matrix.Matrix<Types.CellBase<any>> {
189
+ if (!selectedRange) {
190
+ return currentData;
191
+ }
192
+
193
+ const { start, end } = selectedRange;
194
+
195
+ let updatedData = currentData;
196
+
197
+ for (let row = start.row; row <= end.row; row++) {
198
+ for (let col = start.column; col <= end.column; col++) {
199
+ const currentCell = Matrix.get({ row, column: col }, updatedData);
200
+
201
+ if (!currentCell) {
202
+ continue;
203
+ }
204
+
205
+ let updatedCell = { ...currentCell };
206
+
207
+ switch (value) {
208
+ case 'border-all-sides':
209
+ updatedCell.style = {
210
+ ...currentCell.style,
211
+ borderRight: `2px solid ${color}`,
212
+ borderLeft: `2px solid ${color}`,
213
+ borderTop: `2px solid ${color}`,
214
+ borderBottom: `2px solid ${color}`,
215
+ };
216
+ break;
217
+ case 'border-none':
218
+ updatedCell.style = {
219
+ ...currentCell.style,
220
+ borderRight: `1px solid var(--toggle-strip-color)`,
221
+ borderLeft: `1px solid var(--toggle-strip-color)`,
222
+ borderTop: `1px solid var(--toggle-strip-color)`,
223
+ borderBottom: `1px solid var(--toggle-strip-color)`,
224
+ };
225
+ break;
226
+ case 'border-right':
227
+ updatedCell.style = {
228
+ ...currentCell.style,
229
+ borderRight: `2px solid ${color}`,
230
+ };
231
+ break;
232
+ case 'border-left':
233
+ updatedCell.style = {
234
+ ...currentCell.style,
235
+ borderLeft: `2px solid ${color}`,
236
+ };
237
+ break;
238
+ case 'border-top':
239
+ updatedCell.style = {
240
+ ...currentCell.style,
241
+ borderTop: `2px solid ${color}`,
242
+ };
243
+ break;
244
+ case 'border-bottom':
245
+ updatedCell.style = {
246
+ ...currentCell.style,
247
+ borderBottom: `2px solid ${color}`,
248
+ };
249
+ break;
250
+ default:
251
+ break;
252
+ }
253
+
254
+ updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
255
+ }
256
+ }
257
+
258
+ return updatedData;
259
+ }
260
+
261
+ export function applyTextAlign(
262
+ currentData: Matrix.Matrix<Types.CellBase<any>>,
263
+ selectedRange: PointRange,
264
+ value: string
265
+ ): Matrix.Matrix<Types.CellBase<any>> {
266
+ if (!selectedRange) {
267
+ return currentData;
268
+ }
269
+
270
+ const { start, end } = selectedRange;
271
+
272
+ let updatedData = currentData;
273
+
274
+ for (let row = start.row; row <= end.row; row++) {
275
+ for (let col = start.column; col <= end.column; col++) {
276
+ const currentCell = Matrix.get({ row, column: col }, updatedData);
277
+
278
+ if (!currentCell) {
279
+ continue;
280
+ }
281
+
282
+ let updatedCell = {
283
+ ...currentCell,
284
+ style: {
285
+ ...currentCell.style,
286
+ textAlign: value as TextAlign,
287
+ },
288
+ };
289
+
290
+ updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
291
+ }
292
+ }
293
+
294
+ return updatedData;
295
+ }
296
+
297
+ export function applyUnderlineToCells(
298
+ currentData: Matrix.Matrix<Types.CellBase<any>>,
299
+ selectedRange: PointRange,
300
+ value: string,
301
+ active: boolean
302
+ ): Matrix.Matrix<Types.CellBase<any>> {
303
+ if (!selectedRange) {
304
+ return currentData;
305
+ }
306
+
307
+ const { start, end } = selectedRange;
308
+
309
+ let updatedData = currentData;
310
+ let anyUnderlined = false;
311
+
312
+ for (let row = start.row; row <= end.row; row++) {
313
+ for (let col = start.column; col <= end.column; col++) {
314
+ const currentCell = Matrix.get({ row, column: col }, updatedData);
315
+ if (!currentCell) continue;
316
+
317
+ if (currentCell.style?.textDecoration === 'underline') {
318
+ anyUnderlined = true;
319
+ break;
320
+ }
321
+ }
322
+ if (anyUnderlined) break;
323
+ }
324
+
325
+ for (let row = start.row; row <= end.row; row++) {
326
+ for (let col = start.column; col <= end.column; col++) {
327
+ const currentCell = Matrix.get({ row, column: col }, updatedData);
328
+ if (!currentCell) continue;
329
+
330
+ let updatedCell;
331
+ if (!active || anyUnderlined) {
332
+ updatedCell = {
333
+ ...currentCell,
334
+ style: {
335
+ ...currentCell.style,
336
+ textDecoration: 'none',
337
+ textDecorationStyle: 'solid' as TextDecorationStyle,
338
+ },
339
+ };
340
+ } else {
341
+ updatedCell = {
342
+ ...currentCell,
343
+ style: {
344
+ ...currentCell.style,
345
+ textDecoration: value === 'double_border' ? 'underline' : value,
346
+ textDecorationStyle:
347
+ value === 'double_border'
348
+ ? 'double'
349
+ : ('none' as TextDecorationStyle),
350
+ },
351
+ };
352
+ }
353
+
354
+ updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
355
+ }
356
+ }
357
+
358
+ return updatedData;
359
+ }
360
+
361
+ export function isValidHexColor(color: string): boolean {
362
+ if (color.length !== 6) {
363
+ return false;
364
+ }
365
+
366
+ const hexChars = '0123456789ABCDEFabcdef';
367
+ for (let i = 1; i < color.length; i++) {
368
+ if (!hexChars.includes(color[i] as string)) {
369
+ return false;
370
+ }
371
+ }
372
+
373
+ return true;
374
+ }
375
+
376
+ export function applyColorToCells(
377
+ currentData: Matrix.Matrix<Types.CellBase<any>>,
378
+ selectedRange: PointRange | null,
379
+ color: string
380
+ ): Matrix.Matrix<Types.CellBase<any>> {
381
+ if (!selectedRange) {
382
+ return currentData;
383
+ }
384
+
385
+ const { start, end } = selectedRange;
386
+
387
+ let updatedData = currentData;
388
+
389
+ const isHex = isValidHexColor(color);
390
+
391
+ const applyColor = isHex ? `#${color}` : color;
392
+
393
+ for (let row = start.row; row <= end.row; row++) {
394
+ for (let col = start.column; col <= end.column; col++) {
395
+ const currentCell = Matrix.get({ row, column: col }, updatedData);
396
+
397
+ if (!currentCell) {
398
+ continue;
399
+ }
400
+
401
+ const updatedCell = {
402
+ ...currentCell,
403
+ style: {
404
+ ...currentCell.style,
405
+ color: applyColor,
406
+ },
407
+ };
408
+
409
+ updatedData = Matrix.set({ row, column: col }, updatedCell, updatedData);
410
+ }
411
+ }
412
+
413
+ return updatedData;
414
+ }
415
+
416
+ export function applyBackgroundColorToCells(
417
+ currentData: Matrix.Matrix<Types.CellBase<any>>,
418
+ selectedRange: PointRange | null,
419
+ backgroundColor: string
420
+ ): Matrix.Matrix<Types.CellBase<any>> {
421
+ if (!selectedRange) {
422
+ return currentData;
423
+ }
424
+
425
+ if (selectedRange) {
426
+ const { start, end } = selectedRange;
427
+
428
+ let updatedData = currentData;
429
+
430
+ const isHex = isValidHexColor(backgroundColor);
431
+
432
+ const applyColor = isHex ? `#${backgroundColor}` : backgroundColor;
433
+
434
+ for (let row = start.row; row <= end.row; row++) {
435
+ for (let col = start.column; col <= end.column; col++) {
436
+ const currentCell = Matrix.get({ row, column: col }, updatedData);
437
+
438
+ if (!currentCell) {
439
+ continue;
440
+ }
441
+
442
+ const updatedCell = {
443
+ ...currentCell,
444
+ style: {
445
+ ...currentCell.style,
446
+ backgroundColor: applyColor,
447
+ },
448
+ };
449
+
450
+ updatedData = Matrix.set(
451
+ { row, column: col },
452
+ updatedCell,
453
+ updatedData
454
+ );
455
+ }
456
+ }
457
+
458
+ return updatedData;
459
+ }
460
+ return currentData;
461
+ }
462
+
463
+ export function applyFormatePainter(
464
+ currentData: Matrix.Matrix<Types.CellBase<any>>,
465
+ activePoint: Point.Point | null
466
+ ): React.CSSProperties | undefined {
467
+ if (!activePoint) {
468
+ return undefined;
469
+ }
470
+
471
+ const { row, column } = activePoint;
472
+ let updatedData = { ...currentData };
473
+
474
+ const currentCell = Matrix.get({ row, column }, updatedData);
475
+
476
+ if (currentCell && currentCell.style) {
477
+ return currentCell.style;
478
+ }
479
+
480
+ return undefined;
481
+ }
482
+
483
+ export function edit(state: Types.StoreState): Types.StoreState {
484
+ if (isActiveReadOnly(state)) {
485
+ return state;
486
+ }
487
+ return { ...state, mode: 'edit' };
488
+ }
489
+
490
+ export function clear(state: Types.StoreState): Types.StoreState {
491
+ if (!state.active) {
492
+ return state;
493
+ }
494
+
495
+ const canClearCell = (cell: Types.CellBase | undefined) =>
496
+ cell && !cell.readOnly;
497
+ const clearCell = (cell: Types.CellBase | undefined) => {
498
+ if (!canClearCell(cell)) {
499
+ return cell;
500
+ }
501
+ return Object.assign({}, cell, { value: undefined });
502
+ };
503
+
504
+ const selectedRange = state.selected.toRange(state.model.data);
505
+
506
+ const changes: Types.CommitChanges = [];
507
+ let newData = state.model.data;
508
+
509
+ for (const point of selectedRange || []) {
510
+ const cell = Matrix.get(point, state.model.data);
511
+ const clearedCell = clearCell(cell);
512
+ changes.push({
513
+ prevCell: cell || null,
514
+ nextCell: clearedCell || null,
515
+ });
516
+ newData = Matrix.set(point, clearedCell, newData);
517
+ }
518
+
519
+ return {
520
+ ...state,
521
+ ...commit(changes),
522
+ };
523
+ }
524
+
525
+ export function blur(state: Types.StoreState): Types.StoreState {
526
+ return { ...state, active: null, selected: new EmptySelection() };
527
+ }
528
+
529
+ export function view(state: Types.StoreState): Types.StoreState {
530
+ return { ...state, mode: 'view' };
531
+ }
532
+
533
+ export function commit(
534
+ changes: Types.CommitChanges
535
+ ): Partial<Types.StoreState> {
536
+ return { lastCommit: changes };
537
+ }
538
+
539
+ export const go =
540
+ (rowDelta: number, columnDelta: number): KeyDownHandler =>
541
+ (state) => {
542
+ if (!state.active) {
543
+ return;
544
+ }
545
+ const size = Matrix.getSize(state.model.data);
546
+ const newColumn = state.active.column + columnDelta;
547
+ const shouldWrap = newColumn >= size.columns;
548
+ const nextActive = {
549
+ row: state.active.row + rowDelta + (shouldWrap ? 1 : 0),
550
+ column: (state.active.column + columnDelta) % size.columns,
551
+ };
552
+ if (!Matrix.has(nextActive, state.model.data)) {
553
+ return { ...state, mode: 'view' };
554
+ }
555
+ return {
556
+ ...state,
557
+ active: nextActive,
558
+ selected: new RangeSelection(new PointRange(nextActive, nextActive)),
559
+ mode: 'view',
560
+ };
561
+ };
562
+
563
+ function convertPtToPx(pt: number): string {
564
+ const px = pt * 1.33;
565
+ return `${Math.round(px)}px`;
566
+ }
567
+
568
+ // Key Bindings
569
+
570
+ type TextDecorationStyle = 'solid' | 'double' | 'dotted' | 'dashed' | 'wavy';
571
+
572
+ type TextAlign = 'left' | 'center' | 'right';
573
+
574
+ export type KeyDownHandler = (
575
+ state: Types.StoreState,
576
+ event: React.KeyboardEvent
577
+ ) => Types.StoreState | void;
578
+
579
+ type KeyDownHandlers = {
580
+ [K in string]: KeyDownHandler | undefined;
581
+ };
582
+
583
+ const keyDownHandlers: KeyDownHandlers = {
584
+ ArrowUp: go(-1, 0),
585
+ ArrowDown: go(+1, 0),
586
+ ArrowLeft: go(0, -1),
587
+ ArrowRight: go(0, +1),
588
+ Tab: go(0, +1),
589
+ Enter: edit,
590
+ Backspace: clear,
591
+ Delete: clear,
592
+ Escape: blur,
593
+ };
594
+
595
+ const editKeyDownHandlers: KeyDownHandlers = {
596
+ Escape: view,
597
+ Tab: keyDownHandlers.Tab,
598
+ Enter: keyDownHandlers.ArrowDown,
599
+ };
600
+
601
+ const editShiftKeyDownHandlers: KeyDownHandlers = {
602
+ Tab: go(0, -1),
603
+ };
604
+
605
+ export enum Direction {
606
+ Left = 'Left',
607
+ Right = 'Right',
608
+ Top = 'Top',
609
+ Bottom = 'Bottom',
610
+ }
611
+
612
+ const shiftKeyDownHandlers: KeyDownHandlers = {
613
+ ArrowUp: (state) => ({
614
+ ...state,
615
+ selected: modifyEdge(
616
+ state.selected,
617
+ state.active,
618
+ state.model.data,
619
+ Direction.Top
620
+ ),
621
+ }),
622
+ ArrowDown: (state) => ({
623
+ ...state,
624
+ selected: modifyEdge(
625
+ state.selected,
626
+ state.active,
627
+ state.model.data,
628
+ Direction.Bottom
629
+ ),
630
+ }),
631
+ ArrowLeft: (state) => ({
632
+ ...state,
633
+ selected: modifyEdge(
634
+ state.selected,
635
+ state.active,
636
+ state.model.data,
637
+ Direction.Left
638
+ ),
639
+ }),
640
+ ArrowRight: (state) => ({
641
+ ...state,
642
+ selected: modifyEdge(
643
+ state.selected,
644
+ state.active,
645
+ state.model.data,
646
+ Direction.Right
647
+ ),
648
+ }),
649
+ Tab: go(0, -1),
650
+ };
651
+
652
+ const shiftMetaKeyDownHandlers: KeyDownHandlers = {};
653
+ const metaKeyDownHandlers: KeyDownHandlers = {};
654
+
655
+ export function getKeyDownHandler(
656
+ state: Types.StoreState,
657
+ event: React.KeyboardEvent
658
+ ): KeyDownHandler | undefined {
659
+ const { key } = event;
660
+ let handlers;
661
+ if (state.mode === 'edit') {
662
+ if (event.shiftKey) {
663
+ handlers = editShiftKeyDownHandlers;
664
+ } else {
665
+ handlers = editKeyDownHandlers;
666
+ }
667
+ } else if (event.shiftKey && event.metaKey) {
668
+ handlers = shiftMetaKeyDownHandlers;
669
+ } else if (event.shiftKey) {
670
+ handlers = shiftKeyDownHandlers;
671
+ } else if (event.metaKey) {
672
+ handlers = metaKeyDownHandlers;
673
+ } else {
674
+ handlers = keyDownHandlers;
675
+ }
676
+
677
+ return handlers[key];
678
+ }
679
+
680
+ /** Returns whether the reducer has a handler for the given keydown event */
681
+ export function hasKeyDownHandler(
682
+ state: Types.StoreState,
683
+ event: React.KeyboardEvent
684
+ ): boolean {
685
+ return getKeyDownHandler(state, event) !== undefined;
686
+ }
687
+
688
+ /** Returns whether the active cell is read only */
689
+ export function isActiveReadOnly(state: Types.StoreState): boolean {
690
+ const activeCell = getActive(state);
691
+ return Boolean(activeCell?.readOnly);
692
+ }
693
+
694
+ /** Gets active cell from given state */
695
+ export function getActive(state: Types.StoreState): Types.CellBase | null {
696
+ const activeCell = state.active && Matrix.get(state.active, state.model.data);
697
+ return activeCell || null;
698
+ }
699
+
700
+ /** Modify given edge according to given active point and data */
701
+ export function modifyEdge<T extends Selection>(
702
+ selection: T,
703
+ active: Point.Point | null,
704
+ data: Matrix.Matrix<unknown>,
705
+ direction: Direction
706
+ ): T {
707
+ if (!active) {
708
+ return selection;
709
+ }
710
+ if (selection instanceof RangeSelection) {
711
+ const nextSelection = modifyRangeSelectionEdge(
712
+ selection,
713
+ active,
714
+ data,
715
+ direction
716
+ );
717
+ // @ts-expect-error
718
+ return nextSelection;
719
+ }
720
+ if (selection instanceof EntireColumnsSelection) {
721
+ // @ts-expect-error
722
+ return modifyEntireColumnsSelection(selection, active, data, direction);
723
+ }
724
+ if (selection instanceof EntireRowsSelection) {
725
+ // @ts-expect-error
726
+ return modifyEntireRowsSelection(selection, active, data, direction);
727
+ }
728
+ return selection;
729
+ }
730
+
731
+ export function modifyRangeSelectionEdge(
732
+ rangeSelection: RangeSelection,
733
+ active: Point.Point,
734
+ data: Matrix.Matrix<unknown>,
735
+ edge: Direction
736
+ ): RangeSelection {
737
+ const field =
738
+ edge === Direction.Left || edge === Direction.Right ? 'column' : 'row';
739
+
740
+ const key =
741
+ edge === Direction.Left || edge === Direction.Top ? 'start' : 'end';
742
+ const delta = key === 'start' ? -1 : 1;
743
+
744
+ const edgeOffsets = rangeSelection.range.has({
745
+ ...active,
746
+ [field]: active[field] + delta * -1,
747
+ });
748
+
749
+ const keyToModify = edgeOffsets ? (key === 'start' ? 'end' : 'start') : key;
750
+
751
+ const nextRange = new PointRange(
752
+ rangeSelection.range.start,
753
+ rangeSelection.range.end
754
+ );
755
+
756
+ nextRange[keyToModify][field] += delta;
757
+
758
+ const nextSelection = new RangeSelection(nextRange).normalizeTo(data);
759
+
760
+ return nextSelection;
761
+ }
762
+
763
+ export function modifyEntireRowsSelection(
764
+ selection: EntireRowsSelection,
765
+ active: Point.Point,
766
+ data: Matrix.Matrix<unknown>,
767
+ edge: Direction
768
+ ): EntireRowsSelection {
769
+ if (edge === Direction.Left || edge === Direction.Right) {
770
+ return selection;
771
+ }
772
+ const delta = edge === Direction.Top ? -1 : 1;
773
+ const property = edge === Direction.Top ? 'start' : 'end';
774
+ const oppositeProperty = property === 'start' ? 'end' : 'start';
775
+ const newSelectionData = { ...selection };
776
+ if (
777
+ edge === Direction.Top
778
+ ? selection.end > active.row
779
+ : selection.start < active.row
780
+ ) {
781
+ newSelectionData[oppositeProperty] = selection[oppositeProperty] + delta;
782
+ } else {
783
+ newSelectionData[property] = selection[property] + delta;
784
+ }
785
+ const nextSelection = new EntireRowsSelection(
786
+ Math.max(newSelectionData.start, 0),
787
+ Math.max(newSelectionData.end, 0)
788
+ );
789
+ return nextSelection.normalizeTo(data);
790
+ }
791
+
792
+ export function modifyEntireColumnsSelection(
793
+ selection: EntireColumnsSelection,
794
+ active: Point.Point,
795
+ data: Matrix.Matrix<unknown>,
796
+ edge: Direction
797
+ ): EntireColumnsSelection {
798
+ if (edge === Direction.Top || edge === Direction.Bottom) {
799
+ return selection;
800
+ }
801
+ const delta = edge === Direction.Left ? -1 : 1;
802
+ const property = edge === Direction.Left ? 'start' : 'end';
803
+ const oppositeProperty = property === 'start' ? 'end' : 'start';
804
+ const newSelectionData = { ...selection };
805
+ if (
806
+ edge === Direction.Left
807
+ ? selection.end > active.row
808
+ : selection.start < active.row
809
+ ) {
810
+ newSelectionData[oppositeProperty] = selection[oppositeProperty] + delta;
811
+ } else {
812
+ newSelectionData[property] = selection[property] + delta;
813
+ }
814
+ const nextSelection = new EntireColumnsSelection(
815
+ Math.max(newSelectionData.start, 0),
816
+ Math.max(newSelectionData.end, 0)
817
+ );
818
+ return nextSelection.normalizeTo(data);
819
+ }