pixel-react 1.8.1 → 1.8.3

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