pixel-react 1.8.3 → 1.8.4

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