pixel-react 1.8.0 → 1.8.1

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