pixel-react 1.7.1 → 1.7.3

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