pixel-react 1.5.3 → 1.5.4

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