pixel-react 1.6.3 → 1.6.6

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