pixel-react 1.8.1 → 1.8.2

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