pixel-react 1.8.2 → 1.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (804) 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/.yarn/install-state.gz +0 -0
  6. package/.yarnrc.yml +1 -1
  7. package/README.md +75 -75
  8. package/index.scss +4 -4
  9. package/lib/1fb4472b34e4fe07.css +1 -0
  10. package/lib/components/AddVariables/AddVariables.d.ts +5 -0
  11. package/lib/components/AddVariables/index.d.ts +1 -0
  12. package/lib/components/AddVariables/types.d.ts +99 -0
  13. package/lib/components/Charts/LineChart/types.d.ts +1 -0
  14. package/lib/components/ConditionalDropdown/types.d.ts +4 -0
  15. package/lib/components/Input/types.d.ts +4 -0
  16. package/lib/components/LabelEditTextField/types.d.ts +2 -0
  17. package/lib/components/Select/components/types.d.ts +2 -2
  18. package/lib/components/Select/types.d.ts +2 -2
  19. package/lib/components/SequentialConnectingBranch/components/Branches/Branches.d.ts +1 -1
  20. package/lib/components/SequentialConnectingBranch/components/Branches/types.d.ts +1 -0
  21. package/lib/components/SequentialConnectingBranch/components/ConnectingBranches/ConnectingBranches.d.ts +1 -1
  22. package/lib/components/SequentialConnectingBranch/components/ConnectingBranches/types.d.ts +1 -0
  23. package/lib/components/SequentialConnectingBranch/types.d.ts +1 -0
  24. package/lib/components/TableTree/types.d.ts +4 -4
  25. package/lib/index.css +1 -0
  26. package/lib/index.d.ts +13 -1
  27. package/lib/index.esm.css +1 -0
  28. package/lib/index.esm.js +361 -364
  29. package/lib/index.esm.js.map +1 -1
  30. package/lib/index.js +361 -364
  31. package/lib/index.js.map +1 -1
  32. package/lib/tsconfig.tsbuildinfo +1 -1
  33. package/lib/utils/formData/ConvertFormDataToObject.d.ts +1 -0
  34. package/lib/validations/regex.d.ts +10 -1
  35. package/package.json +81 -81
  36. package/rollup.config.mjs +67 -67
  37. package/src/StyleGuide/ColorPalette/ColorPalette.scss +62 -62
  38. package/src/StyleGuide/ColorPalette/ColorPalette.stories.tsx +16 -16
  39. package/src/StyleGuide/ColorPalette/ColorPalette.tsx +67 -67
  40. package/src/StyleGuide/ColorPalette/colorPaletteList.ts +304 -304
  41. package/src/StyleGuide/ColorPalette/index.ts +1 -1
  42. package/src/StyleGuide/ColorPalette/types.ts +19 -19
  43. package/src/StyleGuide/Typography/Typography.scss +99 -99
  44. package/src/StyleGuide/Typography/Typography.stories.tsx +16 -16
  45. package/src/StyleGuide/Typography/Typography.tsx +60 -60
  46. package/src/StyleGuide/Typography/TypographyList.ts +3 -3
  47. package/src/StyleGuide/Typography/types.ts +9 -9
  48. package/src/assets/Themes/BaseTheme.scss +306 -304
  49. package/src/assets/Themes/BlueTheme.scss +279 -279
  50. package/src/assets/Themes/DarkTheme.scss +319 -310
  51. package/src/assets/Themes/Theme.scss +21 -21
  52. package/src/assets/icons/Arrow.svg +4 -4
  53. package/src/assets/icons/Header_preset.svg +18 -18
  54. package/src/assets/icons/accordion_header_icon.svg +10 -10
  55. package/src/assets/icons/active_license_icon.svg +3 -3
  56. package/src/assets/icons/add_archive.svg +9 -9
  57. package/src/assets/icons/add_file.svg +4 -4
  58. package/src/assets/icons/add_label_icon.svg +3 -3
  59. package/src/assets/icons/add_locator.svg +4 -4
  60. package/src/assets/icons/add_testcase.svg +3 -3
  61. package/src/assets/icons/add_user.svg +9 -9
  62. package/src/assets/icons/add_variable.svg +11 -11
  63. package/src/assets/icons/add_variable_icon.svg +4 -4
  64. package/src/assets/icons/ai_search.svg +9 -9
  65. package/src/assets/icons/alert.svg +17 -17
  66. package/src/assets/icons/all_borders.svg +3 -3
  67. package/src/assets/icons/all_projects.svg +3 -3
  68. package/src/assets/icons/android.svg +9 -9
  69. package/src/assets/icons/android_icon.svg +6 -6
  70. package/src/assets/icons/apk_file_type.svg +4 -4
  71. package/src/assets/icons/app_switch.svg +11 -11
  72. package/src/assets/icons/approval_pending.svg +8 -8
  73. package/src/assets/icons/arrow_down.svg +3 -3
  74. package/src/assets/icons/arrow_right.svg +4 -4
  75. package/src/assets/icons/arrow_up.svg +3 -3
  76. package/src/assets/icons/arrows_down_icon.svg +3 -3
  77. package/src/assets/icons/arrows_right_icon.svg +10 -10
  78. package/src/assets/icons/arrows_top_icon.svg +3 -3
  79. package/src/assets/icons/attachment_icon.svg +3 -3
  80. package/src/assets/icons/authorization.svg +4 -4
  81. package/src/assets/icons/authorization_icon.svg +4 -4
  82. package/src/assets/icons/auto_save_icon.svg +4 -4
  83. package/src/assets/icons/automation_testcase.svg +4 -4
  84. package/src/assets/icons/back_icon.svg +3 -3
  85. package/src/assets/icons/backward.svg +10 -10
  86. package/src/assets/icons/backward_icon.svg +3 -3
  87. package/src/assets/icons/beautify_icon.svg +3 -3
  88. package/src/assets/icons/bold.svg +3 -3
  89. package/src/assets/icons/border_bottom.svg +3 -3
  90. package/src/assets/icons/border_left.svg +3 -3
  91. package/src/assets/icons/border_right.svg +3 -3
  92. package/src/assets/icons/border_top.svg +3 -3
  93. package/src/assets/icons/browser_stack.svg +9 -9
  94. package/src/assets/icons/browserstack_icon.svg +24 -24
  95. package/src/assets/icons/calendar_icon.svg +9 -9
  96. package/src/assets/icons/capture_icon.svg +2 -2
  97. package/src/assets/icons/check_mark.svg +3 -3
  98. package/src/assets/icons/chrome.svg +12 -12
  99. package/src/assets/icons/client_profile.svg +4 -4
  100. package/src/assets/icons/clock_icon.svg +11 -11
  101. package/src/assets/icons/clone_icon.svg +3 -3
  102. package/src/assets/icons/close_pill.svg +3 -3
  103. package/src/assets/icons/cloud_server_host_icon.svg +3 -3
  104. package/src/assets/icons/collapse-icon.svg +6 -6
  105. package/src/assets/icons/compressed_file_type.svg +4 -4
  106. package/src/assets/icons/configuration.svg +3 -3
  107. package/src/assets/icons/continue_without_sign.svg +3 -3
  108. package/src/assets/icons/copy-icon.svg +3 -3
  109. package/src/assets/icons/csv_file_type.svg +4 -4
  110. package/src/assets/icons/dashboard_icon.svg +31 -31
  111. package/src/assets/icons/dashboard_mobile_icon.svg +47 -47
  112. package/src/assets/icons/dashboard_web_icon.svg +9 -9
  113. package/src/assets/icons/data_provider.svg +8 -8
  114. package/src/assets/icons/dataset_list.svg +3 -3
  115. package/src/assets/icons/defects.svg +8 -8
  116. package/src/assets/icons/delete.svg +3 -3
  117. package/src/assets/icons/delete_info.svg +17 -17
  118. package/src/assets/icons/depends_on_script.svg +7 -7
  119. package/src/assets/icons/details.svg +3 -3
  120. package/src/assets/icons/double_underline.svg +5 -5
  121. package/src/assets/icons/download-icon.svg +3 -3
  122. package/src/assets/icons/download_file_icon.svg +3 -3
  123. package/src/assets/icons/download_icon.svg +4 -4
  124. package/src/assets/icons/drag_icon.svg +4 -4
  125. package/src/assets/icons/drawer_maximize.svg +6 -6
  126. package/src/assets/icons/dropzone_icon.svg +18 -18
  127. package/src/assets/icons/edge.svg +30 -30
  128. package/src/assets/icons/edit_icon.svg +5 -5
  129. package/src/assets/icons/element.svg +4 -4
  130. package/src/assets/icons/email_group.svg +3 -3
  131. package/src/assets/icons/error.svg +17 -17
  132. package/src/assets/icons/excel_corner_menu.svg +3 -3
  133. package/src/assets/icons/executions_icon.svg +3 -3
  134. package/src/assets/icons/expand-icon.svg +6 -6
  135. package/src/assets/icons/export.svg +4 -4
  136. package/src/assets/icons/export_collection_icon.svg +13 -13
  137. package/src/assets/icons/external_user.svg +13 -0
  138. package/src/assets/icons/eye_closed.svg +3 -3
  139. package/src/assets/icons/eye_open_icon.svg +3 -3
  140. package/src/assets/icons/failed_status_icon.svg +12 -12
  141. package/src/assets/icons/file.svg +11 -11
  142. package/src/assets/icons/fill_color.svg +7 -7
  143. package/src/assets/icons/filter.svg +4 -4
  144. package/src/assets/icons/fire_fox.svg +106 -106
  145. package/src/assets/icons/fireflink_finder_logo.svg +7 -7
  146. package/src/assets/icons/fireflink_icon.svg +4 -4
  147. package/src/assets/icons/fireflink_logo.svg +13 -13
  148. package/src/assets/icons/fireflink_platform.svg +4 -4
  149. package/src/assets/icons/firefox.svg +84 -84
  150. package/src/assets/icons/flaky_status_icon.svg +12 -12
  151. package/src/assets/icons/formate_painter.svg +5 -5
  152. package/src/assets/icons/formula_icon.svg +3 -3
  153. package/src/assets/icons/forward.svg +3 -3
  154. package/src/assets/icons/forward_icon.svg +3 -3
  155. package/src/assets/icons/full_access_icon.svg +4 -4
  156. package/src/assets/icons/gif_file_type.svg +4 -4
  157. package/src/assets/icons/global_variable_icon.svg +4 -4
  158. package/src/assets/icons/group_user.svg +12 -0
  159. package/src/assets/icons/hamburger_menu.svg +3 -3
  160. package/src/assets/icons/help_icon.svg +10 -10
  161. package/src/assets/icons/hide_access_icon.svg +3 -3
  162. package/src/assets/icons/hide_icon.svg +9 -9
  163. package/src/assets/icons/history_icon.svg +19 -19
  164. package/src/assets/icons/html_file_type.svg +4 -4
  165. package/src/assets/icons/impact_list.svg +6 -6
  166. package/src/assets/icons/import.svg +4 -4
  167. package/src/assets/icons/import_icon.svg +4 -4
  168. package/src/assets/icons/info.svg +17 -17
  169. package/src/assets/icons/info_icon.svg +5 -5
  170. package/src/assets/icons/info_user.svg +5 -5
  171. package/src/assets/icons/internet_explorer.svg +3 -3
  172. package/src/assets/icons/ios_icon.svg +11 -11
  173. package/src/assets/icons/ipk_file_type.svg +4 -4
  174. package/src/assets/icons/italic.svg +3 -3
  175. package/src/assets/icons/jira.svg +3 -3
  176. package/src/assets/icons/jpg_file_type.svg +4 -4
  177. package/src/assets/icons/json_file_type.svg +4 -4
  178. package/src/assets/icons/label_icon.svg +8 -8
  179. package/src/assets/icons/label_plus.svg +3 -3
  180. package/src/assets/icons/labels.svg +8 -8
  181. package/src/assets/icons/lambda_icon.svg +3 -3
  182. package/src/assets/icons/left_arrow_icon.svg +3 -3
  183. package/src/assets/icons/license_expired.svg +20 -20
  184. package/src/assets/icons/license_info.svg +28 -28
  185. package/src/assets/icons/license_warning.svg +10 -10
  186. package/src/assets/icons/link_expired.svg +186 -186
  187. package/src/assets/icons/linked_defects.svg +11 -11
  188. package/src/assets/icons/linux.svg +42 -42
  189. package/src/assets/icons/local.svg +3 -3
  190. package/src/assets/icons/local_variable_icon.svg +4 -4
  191. package/src/assets/icons/logo.svg +17 -17
  192. package/src/assets/icons/mac.svg +9 -9
  193. package/src/assets/icons/machine_disable_icon.svg +18 -18
  194. package/src/assets/icons/machine_enable_icon.svg +10 -10
  195. package/src/assets/icons/manage_apps.svg +3 -3
  196. package/src/assets/icons/manual_locator.svg +7 -7
  197. package/src/assets/icons/manual_testcase.svg +3 -3
  198. package/src/assets/icons/maximize_icon.svg +5 -5
  199. package/src/assets/icons/maximize_script.svg +12 -12
  200. package/src/assets/icons/maximize_tree.svg +3 -3
  201. package/src/assets/icons/minimize_script.svg +5 -5
  202. package/src/assets/icons/mobile_icon.svg +3 -3
  203. package/src/assets/icons/moon_stars.svg +10 -10
  204. package/src/assets/icons/more.svg +10 -10
  205. package/src/assets/icons/move_icon.svg +5 -5
  206. package/src/assets/icons/ms_dynamic.svg +4 -4
  207. package/src/assets/icons/ms_dynamic_icon.svg +15 -15
  208. package/src/assets/icons/nlp_help_icon.svg +3 -3
  209. package/src/assets/icons/no_access_icon.svg +4 -4
  210. package/src/assets/icons/no_border.svg +3 -3
  211. package/src/assets/icons/no_data.svg +13 -13
  212. package/src/assets/icons/no_license_found.svg +22 -22
  213. package/src/assets/icons/notification_icon.svg +3 -3
  214. package/src/assets/icons/opera.svg +9 -9
  215. package/src/assets/icons/parameters.svg +3 -3
  216. package/src/assets/icons/passed_status_icon.svg +12 -12
  217. package/src/assets/icons/pdf_file_type.svg +4 -4
  218. package/src/assets/icons/plus_icon.svg +11 -11
  219. package/src/assets/icons/plus_round_icon.svg +38 -38
  220. package/src/assets/icons/plus_user_icon.svg +3 -3
  221. package/src/assets/icons/png_file_type.svg +4 -4
  222. package/src/assets/icons/pre_post_condition.svg +8 -8
  223. package/src/assets/icons/program_element.svg +8 -8
  224. package/src/assets/icons/project_element.svg +4 -4
  225. package/src/assets/icons/project_env_variable_icon.svg +4 -4
  226. package/src/assets/icons/project_status_icon.svg +10 -10
  227. package/src/assets/icons/quick_run_setting_icon.svg +5 -5
  228. package/src/assets/icons/refresh-icon.svg +4 -4
  229. package/src/assets/icons/refresh_icon.svg +4 -4
  230. package/src/assets/icons/reload.svg +3 -3
  231. package/src/assets/icons/remove.svg +11 -11
  232. package/src/assets/icons/remove_user.svg +3 -3
  233. package/src/assets/icons/replace.svg +11 -11
  234. package/src/assets/icons/replace_file.svg +13 -13
  235. package/src/assets/icons/replace_icon.svg +6 -6
  236. package/src/assets/icons/reset-link.svg +52 -52
  237. package/src/assets/icons/right_arrow_icon.svg +4 -4
  238. package/src/assets/icons/rotate_icon.svg +10 -10
  239. package/src/assets/icons/run_automation_scripts_icon.svg +33 -33
  240. package/src/assets/icons/run_icon.svg +26 -26
  241. package/src/assets/icons/run_manual_testcase_icon.svg +4 -4
  242. package/src/assets/icons/safari.svg +93 -93
  243. package/src/assets/icons/safari_icon.svg +12 -12
  244. package/src/assets/icons/sales_force.svg +7 -7
  245. package/src/assets/icons/salesforce_icon.svg +14 -14
  246. package/src/assets/icons/sample_template_first.svg +29 -29
  247. package/src/assets/icons/sample_template_second.svg +47 -47
  248. package/src/assets/icons/sause_lab.svg +3 -3
  249. package/src/assets/icons/save_as_step.svg +3 -3
  250. package/src/assets/icons/search.svg +3 -3
  251. package/src/assets/icons/send_step.svg +4 -4
  252. package/src/assets/icons/settings.svg +3 -3
  253. package/src/assets/icons/single_user.svg +12 -0
  254. package/src/assets/icons/skipped_status_icon.svg +12 -12
  255. package/src/assets/icons/standard_template.svg +30 -30
  256. package/src/assets/icons/step_group.svg +10 -10
  257. package/src/assets/icons/strike_through.svg +3 -3
  258. package/src/assets/icons/success.svg +17 -17
  259. package/src/assets/icons/suites_icon.svg +3 -3
  260. package/src/assets/icons/sun_icon.svg +10 -10
  261. package/src/assets/icons/swipe_icon.svg +9 -9
  262. package/src/assets/icons/switch_license_icon.svg +123 -123
  263. package/src/assets/icons/system_warning.svg +61 -61
  264. package/src/assets/icons/tap_icon.svg +3 -3
  265. package/src/assets/icons/test_data.svg +5 -5
  266. package/src/assets/icons/test_data_set.svg +7 -7
  267. package/src/assets/icons/test_freshers_logo.svg +8 -0
  268. package/src/assets/icons/text_align_center.svg +3 -3
  269. package/src/assets/icons/text_align_left.svg +3 -3
  270. package/src/assets/icons/text_align_right.svg +3 -3
  271. package/src/assets/icons/text_color.svg +3 -3
  272. package/src/assets/icons/tick_icon.svg +4 -4
  273. package/src/assets/icons/toast_close.svg +3 -3
  274. package/src/assets/icons/txt_file_type.svg +4 -4
  275. package/src/assets/icons/underline.svg +4 -4
  276. package/src/assets/icons/unfollow_icon.svg +3 -0
  277. package/src/assets/icons/update_icon.svg +3 -3
  278. package/src/assets/icons/user_password_lock.svg +220 -220
  279. package/src/assets/icons/user_profile.svg +3 -3
  280. package/src/assets/icons/user_warning.svg +235 -235
  281. package/src/assets/icons/user_with_system.svg +637 -637
  282. package/src/assets/icons/variable.svg +3 -3
  283. package/src/assets/icons/variable_icon.svg +4 -4
  284. package/src/assets/icons/variable_set.svg +5 -5
  285. package/src/assets/icons/vertical_separator.svg +3 -3
  286. package/src/assets/icons/view_access_icon.svg +4 -4
  287. package/src/assets/icons/view_icon.svg +3 -3
  288. package/src/assets/icons/warning.svg +17 -17
  289. package/src/assets/icons/warning_status_icon.svg +12 -12
  290. package/src/assets/icons/web&mobile_icon.svg +3 -3
  291. package/src/assets/icons/web_icon.svg +3 -3
  292. package/src/assets/icons/web_mobile_icon.svg +29 -29
  293. package/src/assets/icons/web_service_icon.svg +3 -3
  294. package/src/assets/icons/web_services_icon.svg +30 -30
  295. package/src/assets/icons/window_maximize.svg +3 -3
  296. package/src/assets/icons/window_minimize.svg +3 -3
  297. package/src/assets/icons/window_restore.svg +4 -4
  298. package/src/assets/icons/windows.svg +10 -10
  299. package/src/assets/icons/wrong_mark.svg +3 -3
  300. package/src/assets/icons/wswb_delete_icon.svg +3 -3
  301. package/src/assets/icons/wswb_plus_icon.svg +4 -4
  302. package/src/assets/icons/xls_file_type.svg +4 -4
  303. package/src/assets/icons/xlsx_file_type.svg +4 -4
  304. package/src/assets/icons/xml_file_type.svg +4 -4
  305. package/src/assets/styles/_colors.scss +150 -150
  306. package/src/assets/styles/_fonts.scss +45 -45
  307. package/src/assets/styles/_mixins.scss +21 -21
  308. package/src/assets/utils/functionUtils.ts +96 -96
  309. package/src/components/Accordion/Accordion.scss +46 -46
  310. package/src/components/Accordion/Accordion.stories.tsx +48 -48
  311. package/src/components/Accordion/Accordion.tsx +69 -69
  312. package/src/components/Accordion/index.ts +1 -1
  313. package/src/components/Accordion/types.ts +44 -44
  314. package/src/components/AddResourceButton/AddButton.scss +36 -36
  315. package/src/components/AddResourceButton/AddButton.stories.tsx +126 -126
  316. package/src/components/AddResourceButton/AddButton.tsx +121 -121
  317. package/src/components/AddResourceButton/ArrowsButton/ArrowsButton.scss +161 -161
  318. package/src/components/AddResourceButton/ArrowsButton/ArrowsButton.tsx +38 -38
  319. package/src/components/AddResourceButton/index.ts +1 -1
  320. package/src/components/AddResourceButton/type.ts +92 -92
  321. package/src/components/AllProjectsDropdown/AllProjectsDropdown.scss +189 -189
  322. package/src/components/AllProjectsDropdown/AllProjectsDropdown.stories.tsx +117 -117
  323. package/src/components/AllProjectsDropdown/AllProjectsDropdown.tsx +152 -152
  324. package/src/components/AllProjectsDropdown/types.ts +14 -14
  325. package/src/components/AppHeader/AppHeader.scss +218 -218
  326. package/src/components/AppHeader/AppHeader.stories.tsx +553 -553
  327. package/src/components/AppHeader/AppHeader.tsx +199 -199
  328. package/src/components/AppHeader/index.ts +1 -1
  329. package/src/components/AppHeader/types.ts +54 -54
  330. package/src/components/AttachImage/AttachImage.scss +76 -76
  331. package/src/components/AttachImage/AttachImage.stories.tsx +24 -24
  332. package/src/components/AttachImage/AttachImage.tsx +60 -60
  333. package/src/components/AttachImage/index.ts +2 -2
  334. package/src/components/AttachImage/types.ts +26 -26
  335. package/src/components/AttachmentButton/AttachmentButton.scss +9 -9
  336. package/src/components/AttachmentButton/AttachmentButton.stories.tsx +81 -81
  337. package/src/components/AttachmentButton/AttachmentButton.tsx +129 -129
  338. package/src/components/AttachmentButton/types.ts +13 -13
  339. package/src/components/Avatar/Avatar.scss +27 -27
  340. package/src/components/Avatar/Avatar.stories.tsx +76 -76
  341. package/src/components/Avatar/Avatar.tsx +41 -41
  342. package/src/components/Avatar/types.ts +35 -35
  343. package/src/components/Button/Button.scss +166 -166
  344. package/src/components/Button/Button.stories.tsx +81 -81
  345. package/src/components/Button/Button.tsx +91 -91
  346. package/src/components/Button/index.ts +1 -1
  347. package/src/components/Button/types.ts +90 -90
  348. package/src/components/Charts/BarChart/BarChart.scss +69 -69
  349. package/src/components/Charts/BarChart/BarChart.stories.tsx +70 -70
  350. package/src/components/Charts/BarChart/BarChart.tsx +349 -349
  351. package/src/components/Charts/BarChart/types.ts +12 -12
  352. package/src/components/Charts/DashboardDonutChart/DashboardDonutChart.scss +221 -221
  353. package/src/components/Charts/DashboardDonutChart/DashboardDonutChart.stories.tsx +58 -58
  354. package/src/components/Charts/DashboardDonutChart/DashboardDonutChart.tsx +554 -554
  355. package/src/components/Charts/DashboardDonutChart/types.ts +60 -60
  356. package/src/components/Charts/DonutChart/DonutChart.scss +76 -76
  357. package/src/components/Charts/DonutChart/DonutChart.stories.tsx +30 -30
  358. package/src/components/Charts/DonutChart/DonutChart.tsx +246 -246
  359. package/src/components/Charts/DonutChart/index.ts +1 -1
  360. package/src/components/Charts/DonutChart/type.ts +23 -23
  361. package/src/components/Charts/IconRadialChart/IconRadialChart.scss +25 -25
  362. package/src/components/Charts/IconRadialChart/IconRadialChart.stories.tsx +51 -51
  363. package/src/components/Charts/IconRadialChart/IconRadialChart.tsx +173 -173
  364. package/src/components/Charts/IconRadialChart/types.ts +28 -28
  365. package/src/components/Charts/LineChart/LineChart.scss +92 -92
  366. package/src/components/Charts/LineChart/LineChart.stories.tsx +198 -259
  367. package/src/components/Charts/LineChart/LineChart.tsx +391 -295
  368. package/src/components/Charts/LineChart/index.ts +1 -1
  369. package/src/components/Charts/LineChart/types.ts +31 -30
  370. package/src/components/Charts/MultiRadialChart/MultiRadialChart.scss +85 -85
  371. package/src/components/Charts/MultiRadialChart/MultiRadialChart.stories.tsx +117 -117
  372. package/src/components/Charts/MultiRadialChart/MultiRadialChart.tsx +306 -306
  373. package/src/components/Charts/MultiRadialChart/index.ts +1 -1
  374. package/src/components/Charts/MultiRadialChart/types.ts +28 -28
  375. package/src/components/Charts/PieChart/PieChart.scss +41 -41
  376. package/src/components/Charts/PieChart/PieChart.stories.tsx +46 -46
  377. package/src/components/Charts/PieChart/PieChart.tsx +192 -192
  378. package/src/components/Charts/PieChart/index.ts +1 -1
  379. package/src/components/Charts/PieChart/types.ts +28 -28
  380. package/src/components/Charts/RadialChart/RadialChart.scss +16 -16
  381. package/src/components/Charts/RadialChart/RadialChart.stories.tsx +36 -36
  382. package/src/components/Charts/RadialChart/RadialChart.tsx +180 -180
  383. package/src/components/Charts/RadialChart/index.ts +1 -1
  384. package/src/components/Charts/RadialChart/types.ts +32 -32
  385. package/src/components/Checkbox/Checkbox.scss +148 -148
  386. package/src/components/Checkbox/Checkbox.stories.tsx +78 -78
  387. package/src/components/Checkbox/Checkbox.tsx +57 -57
  388. package/src/components/Checkbox/types.ts +34 -34
  389. package/src/components/Chip/Chip.scss +95 -95
  390. package/src/components/Chip/Chip.stories.tsx +125 -125
  391. package/src/components/Chip/Chip.tsx +39 -39
  392. package/src/components/Chip/index.ts +1 -1
  393. package/src/components/Chip/types.ts +19 -19
  394. package/src/components/ChooseFile/ChooseFile.stories.tsx +190 -190
  395. package/src/components/ChooseFile/ChooseFile.tsx +46 -46
  396. package/src/components/ChooseFile/types.ts +78 -78
  397. package/src/components/Comment/Comments.scss +166 -166
  398. package/src/components/Comment/Comments.stories.tsx +212 -212
  399. package/src/components/Comment/Comments.tsx +51 -51
  400. package/src/components/Comment/comment/Comment.tsx +206 -206
  401. package/src/components/Comment/comment/useNode.ts +51 -51
  402. package/src/components/Comment/index.ts +1 -1
  403. package/src/components/Comment/type.ts +36 -36
  404. package/src/components/ConditionalDropdown/ConditionalDropdown.scss +17 -17
  405. package/src/components/ConditionalDropdown/ConditionalDropdown.stories.tsx +151 -150
  406. package/src/components/ConditionalDropdown/ConditionalDropdown.tsx +157 -156
  407. package/src/components/ConditionalDropdown/OptionsDropdown.tsx +43 -43
  408. package/src/components/ConditionalDropdown/index.ts +1 -1
  409. package/src/components/ConditionalDropdown/types.ts +163 -159
  410. package/src/components/ConnectingBranch/BranchComponents/MachineInstances.tsx +143 -143
  411. package/src/components/ConnectingBranch/ConnectingBranch.scss +221 -221
  412. package/src/components/ConnectingBranch/ConnectingBranch.stories.tsx +53 -53
  413. package/src/components/ConnectingBranch/ConnectingBranch.tsx +196 -196
  414. package/src/components/ConnectingBranch/data.tsx +226 -226
  415. package/src/components/ConnectingBranch/index.ts +1 -1
  416. package/src/components/ConnectingBranch/types.ts +42 -42
  417. package/src/components/CreateVariable/CreateVariableSlider.scss +18 -18
  418. package/src/components/CreateVariable/CreateVariableSlider.stories.tsx +66 -66
  419. package/src/components/CreateVariable/CreateVariableSlider.tsx +95 -95
  420. package/src/components/CreateVariable/index.ts +1 -1
  421. package/src/components/CreateVariable/types.ts +58 -58
  422. package/src/components/DatePicker/DatePicker.scss +723 -723
  423. package/src/components/DatePicker/DatePicker.stories.tsx +193 -193
  424. package/src/components/DatePicker/DatePicker.tsx +502 -502
  425. package/src/components/DatePicker/Timepicker.tsx +372 -372
  426. package/src/components/DatePicker/types.ts +105 -105
  427. package/src/components/DownloadClient/DownloadClient.scss +67 -67
  428. package/src/components/DownloadClient/DownloadClient.stories.tsx +26 -26
  429. package/src/components/DownloadClient/DownloadClient.tsx +90 -90
  430. package/src/components/DownloadClient/type.ts +33 -33
  431. package/src/components/DragAndDrop/DragAndDrop.d.ts +5 -5
  432. package/src/components/DragAndDrop/DragAndDrop.stories.tsx +25 -25
  433. package/src/components/DragAndDrop/DragAndDrop.ts +7 -7
  434. package/src/components/DragAndDrop/DragAndDropList.scss +69 -69
  435. package/src/components/DragAndDrop/DragAndDropList.tsx +151 -151
  436. package/src/components/Drawer/Drawer.scss +139 -139
  437. package/src/components/Drawer/Drawer.stories.tsx +156 -156
  438. package/src/components/Drawer/Drawer.tsx +233 -233
  439. package/src/components/Drawer/Types.ts +161 -161
  440. package/src/components/EditTextField/EditTextField.scss +97 -97
  441. package/src/components/EditTextField/EditTextField.stories.tsx +127 -127
  442. package/src/components/EditTextField/EditTextField.tsx +175 -175
  443. package/src/components/EditTextField/index.ts +1 -1
  444. package/src/components/EditTextField/types.ts +55 -55
  445. package/src/components/Editor/Editor.scss +61 -56
  446. package/src/components/Editor/Editor.stories.tsx +54 -54
  447. package/src/components/Editor/Editor.tsx +250 -250
  448. package/src/components/Editor/VariableDropdown.scss +28 -28
  449. package/src/components/Editor/VariableDropdown.tsx +57 -57
  450. package/src/components/Editor/constants.ts +180 -180
  451. package/src/components/Editor/types.ts +89 -89
  452. package/src/components/Excel/ColorBarSelector/ColorBarSelector.scss +15 -15
  453. package/src/components/Excel/ColorBarSelector/ColorBarSelector.tsx +43 -43
  454. package/src/components/Excel/ExcelContextMenu/ExcelContextMenu.scss +27 -27
  455. package/src/components/Excel/ExcelContextMenu/ExcelContextMenu.tsx +42 -42
  456. package/src/components/Excel/ExcelFile/ExcelFile.scss +56 -56
  457. package/src/components/Excel/ExcelFile/ExcelFile.tsx +512 -512
  458. package/src/components/Excel/ExcelFile/ExcelFileComponents/ActiveCell.tsx +155 -148
  459. package/src/components/Excel/ExcelFile/ExcelFileComponents/Cell.tsx +206 -206
  460. package/src/components/Excel/ExcelFile/ExcelFileComponents/ColumnIndicator.tsx +176 -176
  461. package/src/components/Excel/ExcelFile/ExcelFileComponents/Copied.tsx +25 -25
  462. package/src/components/Excel/ExcelFile/ExcelFileComponents/CornerIndicator.tsx +56 -56
  463. package/src/components/Excel/ExcelFile/ExcelFileComponents/DataEditor.tsx +40 -37
  464. package/src/components/Excel/ExcelFile/ExcelFileComponents/DataViewer.tsx +85 -85
  465. package/src/components/Excel/ExcelFile/ExcelFileComponents/FloatingRect.tsx +61 -61
  466. package/src/components/Excel/ExcelFile/ExcelFileComponents/HeaderRow.tsx +7 -7
  467. package/src/components/Excel/ExcelFile/ExcelFileComponents/Row.tsx +5 -5
  468. package/src/components/Excel/ExcelFile/ExcelFileComponents/RowIndicator.tsx +157 -157
  469. package/src/components/Excel/ExcelFile/ExcelFileComponents/Selected.tsx +32 -32
  470. package/src/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.scss +201 -201
  471. package/src/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.tsx +531 -531
  472. package/src/components/Excel/ExcelFile/ExcelFileComponents/Table.tsx +19 -19
  473. package/src/components/Excel/ExcelFile/ExcelFileComponents/actions.ts +575 -575
  474. package/src/components/Excel/ExcelFile/ExcelFileComponents/areModelsEqual.ts +18 -18
  475. package/src/components/Excel/ExcelFile/ExcelFileComponents/context.ts +12 -12
  476. package/src/components/Excel/ExcelFile/ExcelFileComponents/engine/engine.ts +153 -153
  477. package/src/components/Excel/ExcelFile/ExcelFileComponents/engine/formula.ts +31 -31
  478. package/src/components/Excel/ExcelFile/ExcelFileComponents/engine/index.ts +2 -2
  479. package/src/components/Excel/ExcelFile/ExcelFileComponents/engine/point-graph.ts +152 -152
  480. package/src/components/Excel/ExcelFile/ExcelFileComponents/engine/point-hash.ts +10 -10
  481. package/src/components/Excel/ExcelFile/ExcelFileComponents/engine/point-set.ts +69 -69
  482. package/src/components/Excel/ExcelFile/ExcelFileComponents/index.ts +49 -49
  483. package/src/components/Excel/ExcelFile/ExcelFileComponents/matrix.ts +382 -382
  484. package/src/components/Excel/ExcelFile/ExcelFileComponents/point-range.ts +82 -82
  485. package/src/components/Excel/ExcelFile/ExcelFileComponents/point.ts +15 -15
  486. package/src/components/Excel/ExcelFile/ExcelFileComponents/reducer.ts +716 -716
  487. package/src/components/Excel/ExcelFile/ExcelFileComponents/reducerFunctions.ts +886 -886
  488. package/src/components/Excel/ExcelFile/ExcelFileComponents/selection.ts +257 -257
  489. package/src/components/Excel/ExcelFile/ExcelFileComponents/types.ts +266 -266
  490. package/src/components/Excel/ExcelFile/ExcelFileComponents/typings/fast-formula-parser.d.ts +58 -58
  491. package/src/components/Excel/ExcelFile/ExcelFileComponents/use-dispatch.ts +8 -8
  492. package/src/components/Excel/ExcelFile/ExcelFileComponents/use-selector.ts +9 -9
  493. package/src/components/Excel/ExcelFile/ExcelFileComponents/util.ts +172 -172
  494. package/src/components/Excel/ExcelFile.stories.tsx +168 -168
  495. package/src/components/Excel/ExcelToolBar/ExcelToolBar.scss +96 -96
  496. package/src/components/Excel/ExcelToolBar/ExcelToolBar.tsx +434 -434
  497. package/src/components/Excel/Types.ts +196 -196
  498. package/src/components/Excel/dataConversion.ts +196 -196
  499. package/src/components/Excel/index.ts +1 -1
  500. package/src/components/ExpandableMenu/ExpandableMenu.scss +110 -110
  501. package/src/components/ExpandableMenu/ExpandableMenu.stories.tsx +67 -67
  502. package/src/components/ExpandableMenu/ExpandableMenu.tsx +101 -101
  503. package/src/components/ExpandableMenu/index.ts +1 -1
  504. package/src/components/ExpandableMenu/types.ts +34 -34
  505. package/src/components/FF_Captcha/Recaptcha.scss +10 -10
  506. package/src/components/FF_Captcha/Recaptcha.tsx +40 -40
  507. package/src/components/FF_Captcha/captcha.stories.tsx +40 -40
  508. package/src/components/FF_Captcha/types.ts +22 -22
  509. package/src/components/FieldSet/FieldSet.scss +10 -10
  510. package/src/components/FieldSet/FieldSet.stories.tsx +104 -104
  511. package/src/components/FieldSet/FieldSet.tsx +29 -29
  512. package/src/components/FieldSet/index.ts +1 -1
  513. package/src/components/FieldSet/types.ts +8 -8
  514. package/src/components/FileDropzone/Dropzone.tsx +108 -108
  515. package/src/components/FileDropzone/FileDropzone.scss +180 -180
  516. package/src/components/FileDropzone/FileDropzone.stories.tsx +273 -273
  517. package/src/components/FileDropzone/FileDropzone.tsx +166 -166
  518. package/src/components/FileDropzone/FilePreview.tsx +77 -77
  519. package/src/components/FileDropzone/RadioFilePreview.tsx +80 -80
  520. package/src/components/FileDropzone/index.ts +1 -1
  521. package/src/components/FileDropzone/types.ts +207 -207
  522. package/src/components/Form/Form.d.ts +2 -2
  523. package/src/components/Form/Form.scss +158 -158
  524. package/src/components/Form/Form.stories.tsx +508 -508
  525. package/src/components/Form/Form.ts +2 -2
  526. package/src/components/Form/Forms.tsx +39 -39
  527. package/src/components/Form/validation.json +29 -29
  528. package/src/components/GridLayout/GridLayout.scss +69 -69
  529. package/src/components/GridLayout/GridLayout.stories.tsx +90 -90
  530. package/src/components/GridLayout/GridLayout.tsx +39 -39
  531. package/src/components/GridLayout/GridLayoutStory.scss +25 -25
  532. package/src/components/GridLayout/types.ts +84 -84
  533. package/src/components/HighlightText/HighlightText.scss +3 -3
  534. package/src/components/HighlightText/HighlightText.stories.tsx +22 -22
  535. package/src/components/HighlightText/HighlightText.tsx +33 -33
  536. package/src/components/HighlightText/index.ts +1 -1
  537. package/src/components/HighlightText/types.ts +4 -4
  538. package/src/components/Icon/Icon.stories.tsx +113 -65
  539. package/src/components/Icon/Icon.tsx +88 -88
  540. package/src/components/Icon/Icons.scss +50 -50
  541. package/src/components/Icon/iconList.ts +515 -505
  542. package/src/components/Icon/index.ts +1 -1
  543. package/src/components/Icon/types.ts +14 -14
  544. package/src/components/IconButton/IconButton.scss +54 -54
  545. package/src/components/IconButton/IconButton.stories.tsx +34 -34
  546. package/src/components/IconButton/IconButton.tsx +32 -32
  547. package/src/components/IconButton/index.ts +1 -1
  548. package/src/components/IconButton/types.ts +5 -5
  549. package/src/components/IconRadioGroup/IconRadioGroup.scss +64 -64
  550. package/src/components/IconRadioGroup/IconRadioGroup.stories.tsx +108 -108
  551. package/src/components/IconRadioGroup/IconRadioGroup.tsx +73 -73
  552. package/src/components/IconRadioGroup/index.ts +1 -1
  553. package/src/components/IconRadioGroup/type.ts +49 -49
  554. package/src/components/Input/Input.scss +170 -170
  555. package/src/components/Input/Input.stories.tsx +153 -141
  556. package/src/components/Input/Input.tsx +122 -120
  557. package/src/components/Input/types.ts +89 -85
  558. package/src/components/InputWithDropdown/InputWithDropdown.scss +220 -220
  559. package/src/components/InputWithDropdown/InputWithDropdown.stories.tsx +169 -169
  560. package/src/components/InputWithDropdown/InputWithDropdown.tsx +129 -129
  561. package/src/components/InputWithDropdown/index.ts +1 -1
  562. package/src/components/InputWithDropdown/types.ts +113 -113
  563. package/src/components/LabelEditTextField/LabelEditTextField.scss +94 -90
  564. package/src/components/LabelEditTextField/LabelEditTextField.stories.tsx +198 -197
  565. package/src/components/LabelEditTextField/LabelEditTextField.tsx +267 -263
  566. package/src/components/LabelEditTextField/index.ts +1 -1
  567. package/src/components/LabelEditTextField/types.ts +51 -49
  568. package/src/components/LazyLoad/LazyLoad.d.ts +3 -3
  569. package/src/components/LazyLoad/LazyLoad.stories.tsx +33 -33
  570. package/src/components/LazyLoad/LazyLoad.ts +2 -2
  571. package/src/components/LazyLoad/LazyLoading.tsx +19 -19
  572. package/src/components/LazyLoad/index.ts +1 -1
  573. package/src/components/MachineInputField/MachineInputField.scss +59 -55
  574. package/src/components/MachineInputField/MachineInputField.stories.tsx +33 -33
  575. package/src/components/MachineInputField/MachineInputField.tsx +85 -84
  576. package/src/components/MachineInputField/index.ts +1 -1
  577. package/src/components/MachineInputField/types.ts +15 -15
  578. package/src/components/MenuOption/MenuOption.scss +97 -97
  579. package/src/components/MenuOption/MenuOption.stories.tsx +212 -212
  580. package/src/components/MenuOption/MenuOption.tsx +222 -222
  581. package/src/components/MenuOption/types.ts +231 -231
  582. package/src/components/MiniModal/MiniModal.scss +169 -169
  583. package/src/components/MiniModal/MiniModal.stories.tsx +740 -740
  584. package/src/components/MiniModal/MiniModal.tsx +346 -346
  585. package/src/components/MiniModal/index.ts +1 -1
  586. package/src/components/MiniModal/types.ts +124 -124
  587. package/src/components/Modal/Modal.stories.tsx +70 -70
  588. package/src/components/Modal/Modal.tsx +100 -100
  589. package/src/components/Modal/index.tsx +1 -1
  590. package/src/components/Modal/modal.scss +51 -51
  591. package/src/components/Modal/types.ts +43 -43
  592. package/src/components/ModulesChip/ModuleChip.scss +33 -33
  593. package/src/components/ModulesChip/ModuleChip.stories.tsx +41 -41
  594. package/src/components/ModulesChip/ModuleChip.tsx +28 -28
  595. package/src/components/ModulesChip/types.ts +14 -14
  596. package/src/components/MultiSelect/Dropdown.scss +77 -77
  597. package/src/components/MultiSelect/Dropdown.tsx +169 -169
  598. package/src/components/MultiSelect/MultiSelect.scss +247 -247
  599. package/src/components/MultiSelect/MultiSelect.stories.tsx +290 -290
  600. package/src/components/MultiSelect/MultiSelect.tsx +486 -486
  601. package/src/components/MultiSelect/MultiSelectTypes.ts +49 -49
  602. package/src/components/MultiSelect/dropdownTypes.ts +21 -21
  603. package/src/components/MultiSelect/index.ts +1 -1
  604. package/src/components/NLPInput/NLPInput.scss +302 -302
  605. package/src/components/NLPInput/NlpInput.stories.tsx +70 -70
  606. package/src/components/NLPInput/NlpInput.tsx +410 -410
  607. package/src/components/NLPInput/components/NlpDropDown/NlpDropDownType.ts +62 -62
  608. package/src/components/NLPInput/components/NlpDropDown/NlpDropdown.scss +134 -134
  609. package/src/components/NLPInput/components/NlpDropDown/NlpDropdown.tsx +320 -320
  610. package/src/components/NLPInput/index.ts +1 -1
  611. package/src/components/NLPInput/sampleData.ts +161 -161
  612. package/src/components/NLPInput/types.tsx +136 -136
  613. package/src/components/Paper/Paper.scss +13 -13
  614. package/src/components/Paper/Paper.stories.tsx +77 -77
  615. package/src/components/Paper/Paper.tsx +14 -14
  616. package/src/components/Paper/types.ts +19 -19
  617. package/src/components/PhoneInput/PhoneInput.d.ts +3 -3
  618. package/src/components/PhoneInput/PhoneInput.stories.tsx +70 -70
  619. package/src/components/PhoneInput/PhoneInput.tsx +98 -98
  620. package/src/components/PhoneInput/index.ts +1 -1
  621. package/src/components/PhoneInput/phoneInput.scss +901 -901
  622. package/src/components/PhoneInput/types.ts +16 -16
  623. package/src/components/PopUpModal/PopUpModal.scss +36 -36
  624. package/src/components/PopUpModal/PopUpModal.stories.tsx +67 -67
  625. package/src/components/PopUpModal/PopUpModal.tsx +87 -87
  626. package/src/components/PopUpModal/types.ts +17 -17
  627. package/src/components/ProgressBar/ProgressBar.scss +46 -46
  628. package/src/components/ProgressBar/ProgressBar.stories.tsx +22 -22
  629. package/src/components/ProgressBar/ProgressBar.tsx +61 -61
  630. package/src/components/ProgressBar/types.ts +12 -12
  631. package/src/components/RadioButton/RadioButton.scss +106 -106
  632. package/src/components/RadioButton/RadioButton.stories.tsx +43 -43
  633. package/src/components/RadioButton/RadioButton.tsx +41 -41
  634. package/src/components/RadioButton/index.ts +1 -1
  635. package/src/components/RadioButton/radioButtonTypes.tsx +62 -62
  636. package/src/components/RadioGroup/RadioGroup.scss +11 -11
  637. package/src/components/RadioGroup/RadioGroup.stories.tsx +150 -150
  638. package/src/components/RadioGroup/RadioGroup.tsx +49 -49
  639. package/src/components/RadioGroup/index.ts +1 -1
  640. package/src/components/RadioGroup/radioGroupTypes.tsx +96 -96
  641. package/src/components/ScriptSwitchButton/ScriptSwitchButton.scss +33 -33
  642. package/src/components/ScriptSwitchButton/ScriptSwitchButton.stories.tsx +48 -48
  643. package/src/components/ScriptSwitchButton/ScriptSwitchButton.tsx +65 -65
  644. package/src/components/ScriptSwitchButton/index.ts +1 -1
  645. package/src/components/Search/Search.scss +103 -103
  646. package/src/components/Search/Search.stories.tsx +44 -44
  647. package/src/components/Search/Search.tsx +138 -138
  648. package/src/components/Search/index.ts +1 -1
  649. package/src/components/Search/types.ts +19 -19
  650. package/src/components/Select/Select.scss +213 -213
  651. package/src/components/Select/Select.stories.tsx +355 -355
  652. package/src/components/Select/Select.tsx +278 -278
  653. package/src/components/Select/components/Dropdown.scss +61 -61
  654. package/src/components/Select/components/Dropdown.tsx +140 -140
  655. package/src/components/Select/components/types.ts +24 -24
  656. package/src/components/Select/index.ts +1 -1
  657. package/src/components/Select/types.ts +134 -134
  658. package/src/components/SequentialConnectingBranch/SequentialConnectingBranch.scss +128 -128
  659. package/src/components/SequentialConnectingBranch/SequentialConnectingBranch.stories.tsx +67 -67
  660. package/src/components/SequentialConnectingBranch/SequentialConnectingBranch.tsx +186 -184
  661. package/src/components/SequentialConnectingBranch/components/Branches/Branches.scss +191 -191
  662. package/src/components/SequentialConnectingBranch/components/Branches/Branches.tsx +326 -318
  663. package/src/components/SequentialConnectingBranch/components/Branches/types.ts +33 -32
  664. package/src/components/SequentialConnectingBranch/components/ConnectingBranches/ConnectingBranches.scss +3 -3
  665. package/src/components/SequentialConnectingBranch/components/ConnectingBranches/ConnectingBranches.tsx +78 -76
  666. package/src/components/SequentialConnectingBranch/components/ConnectingBranches/types.ts +25 -24
  667. package/src/components/SequentialConnectingBranch/index.ts +1 -1
  668. package/src/components/SequentialConnectingBranch/types.ts +66 -62
  669. package/src/components/StateDropdown/StateDropdown.stories.tsx +104 -104
  670. package/src/components/StateDropdown/StateDropdown.tsx +245 -245
  671. package/src/components/StateDropdown/StateDropdownTypes.tsx +27 -27
  672. package/src/components/StatusButton/StatusButton.scss +90 -90
  673. package/src/components/StatusButton/StatusButton.stories.tsx +91 -91
  674. package/src/components/StatusButton/StatusButton.tsx +46 -46
  675. package/src/components/StatusButton/index.ts +1 -1
  676. package/src/components/StatusButton/types.ts +45 -45
  677. package/src/components/StatusCard/StatusCard.scss +138 -138
  678. package/src/components/StatusCard/StatusCard.stories.tsx +117 -117
  679. package/src/components/StatusCard/StatusCard.tsx +80 -80
  680. package/src/components/StatusCard/index.ts +1 -1
  681. package/src/components/StatusCard/types.ts +18 -18
  682. package/src/components/Table/Table.scss +118 -118
  683. package/src/components/Table/Table.stories.tsx +373 -373
  684. package/src/components/Table/Table.tsx +178 -178
  685. package/src/components/Table/Types.ts +124 -124
  686. package/src/components/Table/index.ts +1 -1
  687. package/src/components/TableTree/Components/TableBody.tsx +41 -41
  688. package/src/components/TableTree/Components/TableCell.tsx +75 -75
  689. package/src/components/TableTree/Components/TableHead.tsx +39 -39
  690. package/src/components/TableTree/Components/TableRow.tsx +41 -41
  691. package/src/components/TableTree/TableTree.scss +210 -217
  692. package/src/components/TableTree/TableTree.stories.tsx +176 -176
  693. package/src/components/TableTree/TableTree.tsx +72 -91
  694. package/src/components/TableTree/TableTreeStories.scss +22 -22
  695. package/src/components/TableTree/Utils/getAllChildIds.ts +14 -14
  696. package/src/components/TableTree/data.ts +368 -368
  697. package/src/components/TableTree/index.ts +1 -1
  698. package/src/components/TableTree/types.ts +72 -72
  699. package/src/components/TableWithAccordion/TableWithAccordion.scss +54 -54
  700. package/src/components/TableWithAccordion/TableWithAccordion.stories.tsx +94 -94
  701. package/src/components/TableWithAccordion/TableWithAccordion.tsx +174 -174
  702. package/src/components/TableWithAccordion/data.ts +36 -36
  703. package/src/components/TableWithAccordion/types.ts +69 -69
  704. package/src/components/Tabs/Tabs.scss +132 -132
  705. package/src/components/Tabs/Tabs.stories.tsx +153 -153
  706. package/src/components/Tabs/Tabs.tsx +71 -71
  707. package/src/components/Tabs/index.ts +1 -1
  708. package/src/components/Tabs/types.ts +48 -48
  709. package/src/components/TextArea/Textarea.scss +144 -144
  710. package/src/components/TextArea/Textarea.stories.tsx +92 -92
  711. package/src/components/TextArea/Textarea.tsx +86 -86
  712. package/src/components/TextArea/Types.ts +85 -85
  713. package/src/components/TextArea/index.tsx +1 -1
  714. package/src/components/ThemeProvider/ThemeProvider.tsx +27 -27
  715. package/src/components/ThemeProvider/index.ts +1 -1
  716. package/src/components/ThemeProvider/types.ts +14 -14
  717. package/src/components/Toast/Toast.scss +121 -121
  718. package/src/components/Toast/Toast.stories.tsx +144 -144
  719. package/src/components/Toast/Toast.tsx +117 -117
  720. package/src/components/Toast/index.ts +1 -1
  721. package/src/components/Toast/types.ts +27 -27
  722. package/src/components/Toastify/Toastify.stories.tsx +71 -71
  723. package/src/components/Toastify/Toastify.tsx +95 -95
  724. package/src/components/Toastify/index.ts +1 -1
  725. package/src/components/Toastify/types.ts +9 -9
  726. package/src/components/Toggle/Toggle.scss +133 -133
  727. package/src/components/Toggle/Toggle.stories.tsx +132 -132
  728. package/src/components/Toggle/Toggle.tsx +96 -96
  729. package/src/components/Toggle/index.ts +1 -1
  730. package/src/components/Toggle/types.ts +43 -43
  731. package/src/components/ToggleSwitch/ToggleSwitch.scss +58 -58
  732. package/src/components/ToggleSwitch/ToggleSwitch.stories.tsx +52 -52
  733. package/src/components/ToggleSwitch/ToggleSwitch.tsx +30 -30
  734. package/src/components/ToggleSwitch/index.ts +1 -1
  735. package/src/components/Tooltip/Tooltip.scss +27 -27
  736. package/src/components/Tooltip/Tooltip.stories.tsx +98 -98
  737. package/src/components/Tooltip/Tooltip.tsx +194 -194
  738. package/src/components/Tooltip/index.ts +1 -1
  739. package/src/components/Tooltip/types.ts +66 -66
  740. package/src/components/Typography/Typography.scss +25 -25
  741. package/src/components/Typography/Typography.stories.tsx +59 -59
  742. package/src/components/Typography/Typography.tsx +41 -41
  743. package/src/components/Typography/index.ts +1 -1
  744. package/src/components/Typography/types.ts +57 -57
  745. package/src/components/VariableInput/VariableInput.scss +127 -127
  746. package/src/components/VariableInput/VariableInput.stories.tsx +32 -32
  747. package/src/components/VariableInput/VariableInput.tsx +352 -352
  748. package/src/components/VariableInput/types.ts +56 -56
  749. package/src/hooks/keyboardevents/useEscKeyEvent.tsx +30 -30
  750. package/src/hooks/useClickOutside.tsx +30 -30
  751. package/src/hooks/useFileDropzone.tsx +275 -275
  752. package/src/hooks/useIntersectionObserver.tsx +56 -56
  753. package/src/hooks/usePortalPosition.tsx +53 -53
  754. package/src/hooks/useTheme.tsx +13 -13
  755. package/src/index.ts +302 -302
  756. package/src/utils/FormatString/FormatString.stories.tsx +58 -58
  757. package/src/utils/FormatString/FormatString.tsx +41 -41
  758. package/src/utils/TableCell/TableCell.ts +16 -16
  759. package/src/utils/capitalize/capitalize.stories.tsx +44 -44
  760. package/src/utils/capitalize/capitalize.tsx +4 -4
  761. package/src/utils/checkDuplicates/CheckDuplicates.stories.tsx +40 -40
  762. package/src/utils/checkDuplicates/checkDuplicates.ts +13 -13
  763. package/src/utils/checkEmpty/checkEmpty.stories.tsx +34 -34
  764. package/src/utils/checkEmpty/checkEmpty.ts +24 -24
  765. package/src/utils/compareArrays/compareArrays.stories.tsx +62 -62
  766. package/src/utils/compareArrays/compareArrays.ts +31 -31
  767. package/src/utils/compareObjects/compareObjects.stories.tsx +51 -51
  768. package/src/utils/compareObjects/compareObjects.ts +53 -53
  769. package/src/utils/debounce/debounce.stories.tsx +81 -81
  770. package/src/utils/debounce/debounce.ts +28 -28
  771. package/src/utils/downloadFile/saveFileFromBlob.stories.tsx +62 -62
  772. package/src/utils/downloadFile/saveFileFromBlob.ts +40 -40
  773. package/src/utils/ffID/ffID.stories.tsx +35 -35
  774. package/src/utils/ffID/ffid.ts +7 -7
  775. package/src/utils/findAndInsert/findAndInsert.stories.tsx +119 -119
  776. package/src/utils/findAndInsert/findAndInsert.ts +49 -49
  777. package/src/utils/formData/ConvertFormDataToObject.stories.tsx +27 -0
  778. package/src/utils/formData/ConvertFormDataToObject.ts +14 -0
  779. package/src/utils/functionCheck/functionCheck.ts +8 -8
  780. package/src/utils/getEncryptedData/getEncryptedData.stories.tsx +55 -55
  781. package/src/utils/getEncryptedData/getEncryptedData.ts +8 -8
  782. package/src/utils/getExtension/getExtension.stories.tsx +24 -23
  783. package/src/utils/getExtension/getExtension.ts +28 -28
  784. package/src/utils/getSelectOptionValue/getSelectOptionValue.ts +31 -31
  785. package/src/utils/getSequentialPayload/getSequentialPayload.stories.tsx +72 -72
  786. package/src/utils/getSequentialPayload/getSequentialPayload.ts +16 -16
  787. package/src/utils/getSequentialPayload/types.ts +33 -33
  788. package/src/utils/throttle/throttle.stories.tsx +100 -100
  789. package/src/utils/throttle/throttle.ts +33 -33
  790. package/src/utils/truncateText/truncateText.stories.tsx +37 -37
  791. package/src/utils/truncateText/truncateText.ts +4 -4
  792. package/src/utils/validateFile/validateFile.stories.tsx +49 -49
  793. package/src/utils/validateFile/validateFile.ts +39 -39
  794. package/src/validations/regex.stories.tsx +418 -362
  795. package/src/validations/regex.ts +224 -194
  796. package/tsconfig.json +55 -55
  797. package/vite.config.js +14 -14
  798. package/lib/assets/fonts/Poppins-Bold.ttf +0 -0
  799. package/lib/assets/fonts/Poppins-Medium.ttf +0 -0
  800. package/lib/assets/fonts/Poppins-Regular.ttf +0 -0
  801. package/lib/assets/fonts/Poppins-SemiBold.ttf +0 -0
  802. package/lib/components/Excel/ContextMenu/ContextMenu.d.ts +0 -4
  803. package/lib/components/TableTree/TableTree copy.d.ts +0 -25
  804. package/src/assets/images/photo.png +0 -0
@@ -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
+ }