pixel-react 1.1.7 → 1.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (184) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/lib/components/AttachmentButton/AttachmentButton.d.ts +5 -0
  3. package/lib/components/AttachmentButton/AttachmentButton.stories.d.ts +9 -0
  4. package/lib/components/AttachmentButton/index.d.ts +1 -0
  5. package/lib/components/AttachmentButton/types.d.ts +8 -0
  6. package/lib/components/ExcelFile/ChangeExcelStyles.d.ts +14 -0
  7. package/lib/components/ExcelFile/ColorBarSelector/ColorBarSelector.d.ts +8 -0
  8. package/lib/components/ExcelFile/ContextMenu/ContextMenu.d.ts +4 -0
  9. package/lib/components/ExcelFile/ExcelFile/Excel/ActiveCell.d.ts +7 -0
  10. package/lib/components/ExcelFile/ExcelFile/Excel/Cell.d.ts +4 -0
  11. package/lib/components/ExcelFile/ExcelFile/Excel/ColumnIndicator.d.ts +5 -0
  12. package/lib/components/ExcelFile/ExcelFile/Excel/Copied.d.ts +3 -0
  13. package/lib/components/ExcelFile/ExcelFile/Excel/CornerIndicator.d.ts +5 -0
  14. package/lib/components/ExcelFile/ExcelFile/Excel/DataEditor.d.ts +5 -0
  15. package/lib/components/ExcelFile/ExcelFile/Excel/DataViewer.d.ts +8 -0
  16. package/lib/components/ExcelFile/ExcelFile/Excel/FloatingRect.d.ts +10 -0
  17. package/lib/components/ExcelFile/ExcelFile/Excel/HeaderRow.d.ts +3 -0
  18. package/lib/components/ExcelFile/ExcelFile/Excel/Row.d.ts +3 -0
  19. package/lib/components/ExcelFile/ExcelFile/Excel/RowIndicator.d.ts +5 -0
  20. package/lib/components/ExcelFile/ExcelFile/Excel/Selected.d.ts +3 -0
  21. package/lib/components/ExcelFile/ExcelFile/Excel/Spreadsheet.d.ts +81 -0
  22. package/lib/components/ExcelFile/ExcelFile/Excel/Table.d.ts +3 -0
  23. package/lib/components/ExcelFile/ExcelFile/Excel/actions.d.ts +130 -0
  24. package/lib/components/ExcelFile/ExcelFile/Excel/areModelsEqual.d.ts +1 -0
  25. package/lib/components/ExcelFile/ExcelFile/Excel/context.d.ts +8 -0
  26. package/lib/components/ExcelFile/ExcelFile/Excel/engine/engine.d.ts +22 -0
  27. package/lib/components/ExcelFile/ExcelFile/Excel/engine/formula.d.ts +17 -0
  28. package/lib/components/ExcelFile/ExcelFile/Excel/engine/index.d.ts +2 -0
  29. package/lib/components/ExcelFile/ExcelFile/Excel/engine/point-graph.d.ts +21 -0
  30. package/lib/components/ExcelFile/ExcelFile/Excel/engine/point-hash.d.ts +3 -0
  31. package/lib/components/ExcelFile/ExcelFile/Excel/engine/point-set.d.ts +24 -0
  32. package/lib/components/ExcelFile/ExcelFile/Excel/index.d.ts +13 -0
  33. package/lib/components/ExcelFile/ExcelFile/Excel/matrix.d.ts +67 -0
  34. package/lib/components/ExcelFile/ExcelFile/Excel/point-range.d.ts +22 -0
  35. package/lib/components/ExcelFile/ExcelFile/Excel/point.d.ts +11 -0
  36. package/lib/components/ExcelFile/ExcelFile/Excel/reducer.d.ts +27 -0
  37. package/lib/components/ExcelFile/ExcelFile/Excel/selection.d.ts +95 -0
  38. package/lib/components/ExcelFile/ExcelFile/Excel/types.d.ts +215 -0
  39. package/lib/components/ExcelFile/ExcelFile/Excel/use-dispatch.d.ts +3 -0
  40. package/lib/components/ExcelFile/ExcelFile/Excel/use-selector.d.ts +3 -0
  41. package/lib/components/ExcelFile/ExcelFile/Excel/util.d.ts +45 -0
  42. package/lib/components/ExcelFile/ExcelFile/ExcelFile.d.ts +3 -0
  43. package/lib/components/ExcelFile/ExcelFile.stories.d.ts +6 -0
  44. package/lib/components/ExcelFile/ExcelSheetBar/ExcelSheetBar.d.ts +15 -0
  45. package/lib/components/ExcelFile/ExcelToolBar/ExcelToolBar.d.ts +3 -0
  46. package/lib/components/ExcelFile/ImportExcelStyles.d.ts +24 -0
  47. package/lib/components/ExcelFile/Types.d.ts +176 -0
  48. package/lib/components/ExcelFile/index.d.ts +1 -0
  49. package/lib/components/IconRadioGroup/IconRadioGroup.d.ts +5 -0
  50. package/lib/components/IconRadioGroup/IconRadioGroup.stories.d.ts +7 -0
  51. package/lib/components/IconRadioGroup/index.d.ts +1 -0
  52. package/lib/components/IconRadioGroup/type.d.ts +41 -0
  53. package/lib/components/RadioButton/radioButtonTypes.d.ts +15 -0
  54. package/lib/components/RadioGroup/RadioGroup.stories.d.ts +2 -1
  55. package/lib/components/RadioGroup/radioGroupTypes.d.ts +15 -0
  56. package/lib/components/Select/Select.d.ts +1 -1
  57. package/lib/components/Select/types.d.ts +4 -0
  58. package/lib/components/Table/Table.d.ts +1 -1
  59. package/lib/components/Table/Types.d.ts +8 -0
  60. package/lib/components/TableTree/TableTree.d.ts +1 -0
  61. package/lib/index.d.ts +71 -3
  62. package/lib/index.esm.js +408 -151
  63. package/lib/index.esm.js.map +1 -1
  64. package/lib/index.js +409 -150
  65. package/lib/index.js.map +1 -1
  66. package/lib/tsconfig.tsbuildinfo +1 -1
  67. package/package.json +4 -2
  68. package/src/assets/Themes/BaseTheme.scss +11 -0
  69. package/src/assets/Themes/DarkTheme.scss +10 -0
  70. package/src/assets/icons/add_file.svg +14 -0
  71. package/src/assets/icons/all_borders.svg +3 -0
  72. package/src/assets/icons/bold.svg +3 -0
  73. package/src/assets/icons/border_bottom.svg +3 -0
  74. package/src/assets/icons/border_left.svg +3 -0
  75. package/src/assets/icons/border_right.svg +3 -0
  76. package/src/assets/icons/border_top.svg +3 -0
  77. package/src/assets/icons/clone_icon.svg +3 -0
  78. package/src/assets/icons/double_underline.svg +5 -0
  79. package/src/assets/icons/fill_color.svg +7 -0
  80. package/src/assets/icons/formate_painter.svg +5 -0
  81. package/src/assets/icons/full_access_icon.svg +4 -0
  82. package/src/assets/icons/history_icon.svg +19 -0
  83. package/src/assets/icons/italic.svg +3 -0
  84. package/src/assets/icons/jira.svg +3 -0
  85. package/src/assets/icons/linked_defects.svg +11 -0
  86. package/src/assets/icons/move_icon.svg +5 -0
  87. package/src/assets/icons/nlp_help_icon.svg +3 -0
  88. package/src/assets/icons/no_access_icon.svg +4 -0
  89. package/src/assets/icons/no_border.svg +3 -0
  90. package/src/assets/icons/notification_icon.svg +3 -0
  91. package/src/assets/icons/strike_through.svg +3 -0
  92. package/src/assets/icons/text_align_center.svg +3 -0
  93. package/src/assets/icons/text_align_left.svg +3 -0
  94. package/src/assets/icons/text_align_right.svg +3 -0
  95. package/src/assets/icons/text_color.svg +3 -0
  96. package/src/assets/icons/underline.svg +4 -0
  97. package/src/assets/icons/update_icon.svg +3 -0
  98. package/src/assets/icons/view_access_icon.svg +4 -0
  99. package/src/components/AppHeader/AppHeader.scss +65 -4
  100. package/src/components/AppHeader/AppHeader.stories.tsx +1 -0
  101. package/src/components/AppHeader/AppHeader.tsx +7 -5
  102. package/src/components/AttachmentButton/AttachmentButton.scss +9 -0
  103. package/src/components/AttachmentButton/AttachmentButton.stories.tsx +76 -0
  104. package/src/components/AttachmentButton/AttachmentButton.tsx +113 -0
  105. package/src/components/AttachmentButton/index.ts +1 -0
  106. package/src/components/AttachmentButton/types.ts +8 -0
  107. package/src/components/Drawer/Drawer.scss +0 -1
  108. package/src/components/ExcelFile/ChangeExcelStyles.tsx +78 -0
  109. package/src/components/ExcelFile/ColorBarselector/ColorBarSelector.scss +13 -0
  110. package/src/components/ExcelFile/ColorBarselector/ColorBarSelector.tsx +43 -0
  111. package/src/components/ExcelFile/ContextMenu/ContextMenu.scss +102 -0
  112. package/src/components/ExcelFile/ContextMenu/ContextMenu.tsx +104 -0
  113. package/src/components/ExcelFile/ExcelFile/Excel/ActiveCell.tsx +131 -0
  114. package/src/components/ExcelFile/ExcelFile/Excel/Cell.tsx +201 -0
  115. package/src/components/ExcelFile/ExcelFile/Excel/ColumnIndicator.tsx +123 -0
  116. package/src/components/ExcelFile/ExcelFile/Excel/Copied.tsx +25 -0
  117. package/src/components/ExcelFile/ExcelFile/Excel/CornerIndicator.tsx +49 -0
  118. package/src/components/ExcelFile/ExcelFile/Excel/DataEditor.tsx +37 -0
  119. package/src/components/ExcelFile/ExcelFile/Excel/DataViewer.tsx +46 -0
  120. package/src/components/ExcelFile/ExcelFile/Excel/FloatingRect.tsx +31 -0
  121. package/src/components/ExcelFile/ExcelFile/Excel/HeaderRow.tsx +5 -0
  122. package/src/components/ExcelFile/ExcelFile/Excel/Row.tsx +5 -0
  123. package/src/components/ExcelFile/ExcelFile/Excel/RowIndicator.tsx +102 -0
  124. package/src/components/ExcelFile/ExcelFile/Excel/Selected.tsx +32 -0
  125. package/src/components/ExcelFile/ExcelFile/Excel/Spreadsheet.css +144 -0
  126. package/src/components/ExcelFile/ExcelFile/Excel/Spreadsheet.tsx +494 -0
  127. package/src/components/ExcelFile/ExcelFile/Excel/Table.tsx +19 -0
  128. package/src/components/ExcelFile/ExcelFile/Excel/actions.ts +302 -0
  129. package/src/components/ExcelFile/ExcelFile/Excel/areModelsEqual.ts +18 -0
  130. package/src/components/ExcelFile/ExcelFile/Excel/context.ts +12 -0
  131. package/src/components/ExcelFile/ExcelFile/Excel/engine/engine.ts +200 -0
  132. package/src/components/ExcelFile/ExcelFile/Excel/engine/formula.ts +137 -0
  133. package/src/components/ExcelFile/ExcelFile/Excel/engine/index.ts +2 -0
  134. package/src/components/ExcelFile/ExcelFile/Excel/engine/point-graph.ts +154 -0
  135. package/src/components/ExcelFile/ExcelFile/Excel/engine/point-hash.ts +10 -0
  136. package/src/components/ExcelFile/ExcelFile/Excel/engine/point-set.ts +69 -0
  137. package/src/components/ExcelFile/ExcelFile/Excel/index.ts +48 -0
  138. package/src/components/ExcelFile/ExcelFile/Excel/matrix.ts +388 -0
  139. package/src/components/ExcelFile/ExcelFile/Excel/point-range.ts +82 -0
  140. package/src/components/ExcelFile/ExcelFile/Excel/point.ts +15 -0
  141. package/src/components/ExcelFile/ExcelFile/Excel/reducer.ts +682 -0
  142. package/src/components/ExcelFile/ExcelFile/Excel/selection.ts +257 -0
  143. package/src/components/ExcelFile/ExcelFile/Excel/types.ts +269 -0
  144. package/src/components/ExcelFile/ExcelFile/Excel/typings/fast-formula-parser.d.ts +58 -0
  145. package/src/components/ExcelFile/ExcelFile/Excel/use-dispatch.ts +8 -0
  146. package/src/components/ExcelFile/ExcelFile/Excel/use-selector.ts +9 -0
  147. package/src/components/ExcelFile/ExcelFile/Excel/util.ts +173 -0
  148. package/src/components/ExcelFile/ExcelFile/ExcelFile.scss +27 -0
  149. package/src/components/ExcelFile/ExcelFile/ExcelFile.tsx +520 -0
  150. package/src/components/ExcelFile/ExcelFile.stories.tsx +132 -0
  151. package/src/components/ExcelFile/ExcelSheetBar/ExcelSheetBar.scss +16 -0
  152. package/src/components/ExcelFile/ExcelSheetBar/ExcelSheetBar.tsx +79 -0
  153. package/src/components/ExcelFile/ExcelToolBar/ExcelToolBar.scss +22 -0
  154. package/src/components/ExcelFile/ExcelToolBar/ExcelToolBar.tsx +271 -0
  155. package/src/components/ExcelFile/ImportExcelStyles.tsx +86 -0
  156. package/src/components/ExcelFile/Types.ts +241 -0
  157. package/src/components/ExcelFile/index.ts +1 -0
  158. package/src/components/Icon/Icons.scss +2 -3
  159. package/src/components/Icon/iconList.ts +59 -1
  160. package/src/components/IconRadioGroup/IconRadioGroup.scss +60 -0
  161. package/src/components/IconRadioGroup/IconRadioGroup.stories.tsx +108 -0
  162. package/src/components/IconRadioGroup/IconRadioGroup.tsx +72 -0
  163. package/src/components/IconRadioGroup/index.ts +1 -0
  164. package/src/components/IconRadioGroup/type.ts +50 -0
  165. package/src/components/Modal/modal.scss +1 -1
  166. package/src/components/MultiSelect/MultiSelect.scss +2 -2
  167. package/src/components/RadioButton/RadioButton.scss +74 -68
  168. package/src/components/RadioButton/RadioButton.tsx +22 -15
  169. package/src/components/RadioButton/radioButtonTypes.tsx +18 -0
  170. package/src/components/RadioGroup/RadioGroup.stories.tsx +42 -1
  171. package/src/components/RadioGroup/RadioGroup.tsx +3 -0
  172. package/src/components/RadioGroup/radioGroupTypes.tsx +18 -0
  173. package/src/components/Select/Select.scss +1 -2
  174. package/src/components/Select/Select.tsx +3 -2
  175. package/src/components/Select/types.ts +5 -0
  176. package/src/components/SequentialConnectingBranch/components/Branches/Branches.scss +5 -5
  177. package/src/components/SequentialConnectingBranch/components/Branches/Branches.tsx +1 -1
  178. package/src/components/Table/Table.scss +1 -0
  179. package/src/components/Table/Table.tsx +28 -13
  180. package/src/components/Table/Types.ts +8 -0
  181. package/src/components/TableTree/TableTree.scss +18 -2
  182. package/src/components/TableTree/TableTree.stories.tsx +9 -51
  183. package/src/components/TableTree/TableTree.tsx +15 -2
  184. package/src/index.ts +4 -0
@@ -0,0 +1,95 @@
1
+ import { PointRange } from "./point-range";
2
+ import * as Point from "./point";
3
+ import * as Matrix from "./matrix";
4
+ /** Selection from a spreadsheet */
5
+ export declare abstract class Selection {
6
+ /** Get concrete range of the selection in the given data */
7
+ abstract toRange(data: Matrix.Matrix<unknown>): PointRange | null;
8
+ /** Normalize the selection according to the given data */
9
+ abstract normalizeTo(data: Matrix.Matrix<unknown>): this;
10
+ /** Determines whether the given row is entirely selected in given selection */
11
+ abstract hasEntireRow(row: number): boolean;
12
+ /** Determines whether the given column is entirely selected in given selection */
13
+ abstract hasEntireColumn(column: number): boolean;
14
+ /** Get the number of selected points according to given data */
15
+ abstract size(data: Matrix.Matrix<unknown>): number;
16
+ /** Determines whether the given point is within the selection */
17
+ abstract has(data: Matrix.Matrix<unknown>, point: Point.Point): boolean;
18
+ /** Determines whether the given selection is equal to this selection */
19
+ abstract equals(selection: Selection): boolean;
20
+ }
21
+ /** Selection of no cells */
22
+ export declare class EmptySelection extends Selection {
23
+ toRange(data: Matrix.Matrix<unknown>): PointRange | null;
24
+ normalizeTo(_: Matrix.Matrix<unknown>): this;
25
+ hasEntireRow(): boolean;
26
+ hasEntireColumn(): boolean;
27
+ size(): number;
28
+ has(): boolean;
29
+ equals(selection: Selection): boolean;
30
+ }
31
+ /** Selection of a range of cells */
32
+ export declare class RangeSelection extends Selection {
33
+ range: PointRange;
34
+ constructor(range: PointRange);
35
+ toRange(_: Matrix.Matrix<unknown>): PointRange | null;
36
+ normalizeTo(data: Matrix.Matrix<unknown>): this;
37
+ hasEntireRow(): boolean;
38
+ hasEntireColumn(): boolean;
39
+ size(data: Matrix.Matrix<unknown>): number;
40
+ has(data: Matrix.Matrix<unknown>, point: Point.Point): boolean;
41
+ equals(selection: Selection): boolean;
42
+ }
43
+ /** Selection of an entire part of the spreadsheet */
44
+ export declare abstract class EntireSelection extends Selection {
45
+ }
46
+ /** Selection of the entire worksheet */
47
+ export declare class EntireWorksheetSelection extends EntireSelection {
48
+ toRange(data: Matrix.Matrix<unknown>): PointRange;
49
+ normalizeTo(): this;
50
+ hasEntireColumn(): boolean;
51
+ hasEntireRow(): boolean;
52
+ size(data: Matrix.Matrix<unknown>): number;
53
+ has(): boolean;
54
+ equals(selection: Selection): boolean;
55
+ }
56
+ /** Selection of an entire axis in the spreadsheet */
57
+ export declare abstract class EntireAxisSelection extends EntireSelection {
58
+ /** Selection start index, integer */
59
+ readonly start: number;
60
+ /** Selection end index, integer */
61
+ readonly end: number;
62
+ /**
63
+ * @param start - row index where the selection starts, integer
64
+ * @param end - row index where the selection ends, integer
65
+ * @throws {@link InvalidIndexError}
66
+ */
67
+ constructor(start: number, end: number);
68
+ equals(selection: Selection): boolean;
69
+ }
70
+ /** Selection of entire rows in the spreadsheet */
71
+ export declare class EntireRowsSelection extends EntireAxisSelection {
72
+ toRange(data: Matrix.Matrix<unknown>): PointRange;
73
+ normalizeTo(data: Matrix.Matrix<unknown>): this;
74
+ hasEntireRow(row: number): boolean;
75
+ hasEntireColumn(): boolean;
76
+ size(data: Matrix.Matrix<unknown>): number;
77
+ has(_: Matrix.Matrix<unknown>, point: Point.Point): boolean;
78
+ }
79
+ /** Selection of entire columns in the spreadsheet */
80
+ export declare class EntireColumnsSelection extends EntireAxisSelection {
81
+ toRange(data: Matrix.Matrix<unknown>): PointRange;
82
+ normalizeTo(data: Matrix.Matrix<unknown>): this;
83
+ hasEntireRow(): boolean;
84
+ hasEntireColumn(column: number): boolean;
85
+ size(data: Matrix.Matrix<unknown>): number;
86
+ has(_: Matrix.Matrix<unknown>, point: Point.Point): boolean;
87
+ }
88
+ /** Get the point range of given matrix */
89
+ export declare function getMatrixRange(data: Matrix.Matrix<unknown>): PointRange;
90
+ /** Determines whether the given value is a valid index */
91
+ export declare function isIndex(value: number): boolean;
92
+ /** Error thrown when passing a non-index value where an index value is expected */
93
+ export declare class InvalidIndexError extends Error {
94
+ constructor(name: string);
95
+ }
@@ -0,0 +1,215 @@
1
+ import * as React from "react";
2
+ import FormulaParser from "fast-formula-parser";
3
+ import { Point } from "./point";
4
+ import { Selection } from "./selection";
5
+ import { Model } from "./engine";
6
+ import { PointRange } from "./point-range";
7
+ import { Matrix } from "./matrix";
8
+ /** The base type of cell data in Spreadsheet */
9
+ export type CellBase<Value = any> = {
10
+ /** Whether the cell should not be editable */
11
+ readOnly?: boolean;
12
+ /** Class to be given for the cell element */
13
+ className?: string;
14
+ /** The value of the cell */
15
+ value: Value;
16
+ style?: CellStyle;
17
+ type?: boolean;
18
+ /** Custom component to render when the cell is edited, if not defined would default to the component defined for the Spreadsheet */
19
+ DataEditor?: DataEditorComponent<CellBase<Value>>;
20
+ /** Custom component to render when the cell is viewed, if not defined would default to the component defined for the Spreadsheet */
21
+ DataViewer?: DataViewerComponent<CellBase<Value>>;
22
+ };
23
+ interface CellStyle {
24
+ /** Font name for the cell text */
25
+ name?: string;
26
+ /** Font size of the cell text */
27
+ size?: number;
28
+ position?: string;
29
+ /** Whether the text is bold */
30
+ bold?: boolean;
31
+ /** Whether the text is italicized */
32
+ italic?: boolean;
33
+ /** Text color in the cell (hex code) */
34
+ color?: string;
35
+ /** Background color of the cell (hex code) */
36
+ backgroundColor?: string;
37
+ /** Border color of the cell (hex code) */
38
+ borderColor?: string;
39
+ /** Border styles for each side of the cell */
40
+ border?: {
41
+ /** Border style for the top side of the cell */
42
+ top: string;
43
+ /** Border style for the bottom side of the cell */
44
+ bottom: string;
45
+ /** Border style for the left side of the cell */
46
+ left: string;
47
+ /** Border style for the right side of the cell */
48
+ right: string;
49
+ };
50
+ /** Text alignment and wrapping properties */
51
+ alignment?: {
52
+ /** Horizontal text alignment ('left', 'center', or 'right') */
53
+ horizontal: string;
54
+ /** Vertical text alignment ('top', 'middle', or 'bottom') */
55
+ vertical: string;
56
+ /** Whether the text is wrapped within the cell */
57
+ wrapText: boolean;
58
+ };
59
+ }
60
+ /**
61
+ * A cell with it's coordinates
62
+ * @deprecated the component does not use cell descriptors anymore. Instead it passes cell point and cell value explicitly.
63
+ */
64
+ export type CellDescriptor<Cell extends CellBase> = {
65
+ /** The cell's data */
66
+ data: Cell | undefined;
67
+ } & Point;
68
+ /** The spreadsheet's write mode */
69
+ export type Mode = "view" | "edit";
70
+ /** Dimensions of an element */
71
+ export type Dimensions = {
72
+ /** The element's width in pixels */
73
+ width: number;
74
+ /** The element's height in pixels */
75
+ height: number;
76
+ /** The distance of the element from it's container top border in pixels */
77
+ top: number;
78
+ /** The distance of the element from it's container left border in pixels */
79
+ left: number;
80
+ };
81
+ export type StoreState<Cell extends CellBase = CellBase> = {
82
+ model: Model<Cell>;
83
+ selected: Selection;
84
+ copied: PointRange | null;
85
+ hasPasted: boolean;
86
+ cut: boolean;
87
+ active: Point | null;
88
+ mode: Mode;
89
+ rowDimensions: Record<number, Pick<Dimensions, "height" | "top"> | undefined>;
90
+ columnDimensions: Record<number, Pick<Dimensions, "width" | "left"> | undefined>;
91
+ dragging: boolean;
92
+ lastChanged: Point | null;
93
+ lastCommit: null | CellChange<Cell>[];
94
+ };
95
+ export type CellChange<Cell extends CellBase = CellBase> = {
96
+ prevCell: Cell | null;
97
+ nextCell: Cell | null;
98
+ };
99
+ /** Type of Spreadsheet Cell component props */
100
+ export type CellComponentProps<Cell extends CellBase = CellBase> = {
101
+ /** The row of the cell */
102
+ row: number;
103
+ /** The column of the cell */
104
+ column: number;
105
+ /** The DataViewer component to be used by the cell */
106
+ DataViewer: DataViewerComponent<Cell>;
107
+ /** Whether the cell is selected */
108
+ selected: boolean;
109
+ /** Whether the cell is active */
110
+ active: boolean;
111
+ /** Whether the cell is copied */
112
+ copied: boolean;
113
+ /** Whether the user is dragging */
114
+ dragging: boolean;
115
+ /** The mode of the cell */
116
+ mode: Mode;
117
+ /** The data of the cell */
118
+ data: Cell | undefined;
119
+ /** The evaluated data of the cell */
120
+ evaluatedData: Cell | undefined;
121
+ /** Select the cell at the given point */
122
+ select: (point: Point) => void;
123
+ /** Activate the cell at the given point */
124
+ activate: (point: Point) => void;
125
+ /** Set the dimensions of the cell at the given point with the given dimensions */
126
+ setCellDimensions: (point: Point, dimensions: Dimensions) => void;
127
+ /** Set data of the cell */
128
+ setCellData: (cell: Cell) => void;
129
+ };
130
+ /** Type of the Spreadsheet Cell component */
131
+ export type CellComponent<Cell extends CellBase = CellBase> = React.ComponentType<CellComponentProps<Cell>>;
132
+ type DataComponentProps<Cell extends CellBase> = {
133
+ /** The rendered cell by the component */
134
+ cell: Cell | undefined;
135
+ } & Point;
136
+ /** Type of the Spreadsheet DataViewer component props */
137
+ export type DataViewerProps<Cell extends CellBase = CellBase> = DataComponentProps<Cell> & {
138
+ /** Set data of the cell */
139
+ setCellData: (cell: Cell) => void;
140
+ evaluatedCell: Cell | undefined;
141
+ };
142
+ /** Type of the Spreadsheet DataViewer component */
143
+ export type DataViewerComponent<Cell extends CellBase = CellBase> = React.ComponentType<DataViewerProps<Cell>>;
144
+ /** Type of the Spreadsheet DataEditor component props */
145
+ export type DataEditorProps<Cell extends CellBase = CellBase> = DataComponentProps<Cell> & {
146
+ /** Callback to be called when the cell's value is changed */
147
+ onChange: (cell: Cell) => void;
148
+ /** Callback to be called when edit mode should be exited */
149
+ exitEditMode: () => void;
150
+ };
151
+ /** Type of the Spreadsheet DataEditor component */
152
+ export type DataEditorComponent<Cell extends CellBase = CellBase> = React.ComponentType<DataEditorProps<Cell>>;
153
+ /** Type of the Spreadsheet Table component props */
154
+ export type TableProps = React.PropsWithChildren<{
155
+ /** Number of columns the table should render */
156
+ columns: number;
157
+ /** Whether column indicators are hidden */
158
+ hideColumnIndicators?: boolean | null;
159
+ }>;
160
+ /** Type of the Spreadsheet Table component */
161
+ export type TableComponent = React.ComponentType<TableProps>;
162
+ /** Type of the Spreadsheet Row component props */
163
+ export type RowProps = React.PropsWithChildren<{
164
+ /** The row index of the table */
165
+ row: number;
166
+ }>;
167
+ /** Type of the Row component */
168
+ export type RowComponent = React.ComponentType<RowProps>;
169
+ /** Type of the Spreadsheet HeaderRow component props */
170
+ export type HeaderRowProps = React.PropsWithChildren<{}>;
171
+ /** Type of the HeaderRow component */
172
+ export type HeaderRowComponent = React.ComponentType<HeaderRowProps>;
173
+ /** Type of the Spreadsheet RowIndicator component props */
174
+ export type RowIndicatorProps = {
175
+ /** The row the indicator indicates */
176
+ row: number;
177
+ /** A custom label for the indicator as provided in rowLabels */
178
+ label?: React.ReactNode | null;
179
+ /** Whether the entire row is selected */
180
+ selected: boolean;
181
+ /** Callback to be called when the row is selected */
182
+ onSelect: (row: number, extend: boolean) => void;
183
+ };
184
+ /** Type of the RowIndicator component */
185
+ export type RowIndicatorComponent = React.ComponentType<RowIndicatorProps>;
186
+ /** Type of the Spreadsheet ColumnIndicator component props */
187
+ export type ColumnIndicatorProps = {
188
+ /** The column the indicator indicates */
189
+ column: number;
190
+ /** A custom label for the indicator as provided in columnLabels */
191
+ label?: React.ReactNode | null;
192
+ /** Whether the entire column in selected */
193
+ selected: boolean;
194
+ /** Whether the entire column in Fixed */
195
+ fixed?: boolean;
196
+ /** Callback to be called when the column is selected */
197
+ onSelect: (column: number, extend: boolean) => void;
198
+ };
199
+ /** Type of the ColumnIndicator component */
200
+ export type ColumnIndicatorComponent = React.ComponentType<ColumnIndicatorProps>;
201
+ /** Type of the Spreadsheet CornerIndicator component props */
202
+ export type CornerIndicatorProps = {
203
+ /** Whether the entire table is selected */
204
+ selected: boolean;
205
+ /** Callback to select the entire table */
206
+ onSelect: () => void;
207
+ };
208
+ /** Type of the CornerIndicator component */
209
+ export type CornerIndicatorComponent = React.ComponentType<CornerIndicatorProps>;
210
+ export type CommitChanges<Cell extends CellBase = CellBase> = Array<{
211
+ prevCell: Cell | null;
212
+ nextCell: Cell | null;
213
+ }>;
214
+ export type CreateFormulaParser = (data: Matrix<CellBase>) => FormulaParser;
215
+ export {};
@@ -0,0 +1,3 @@
1
+ import { Dispatch } from "./context";
2
+ declare function useDispatch(): Dispatch;
3
+ export default useDispatch;
@@ -0,0 +1,3 @@
1
+ import * as Types from "./types";
2
+ declare function useSelector<T>(selector: (state: Types.StoreState) => T): T;
3
+ export default useSelector;
@@ -0,0 +1,45 @@
1
+ import * as Types from "./types";
2
+ import * as Matrix from "./matrix";
3
+ import * as Point from "./point";
4
+ import { PointRange } from "./point-range";
5
+ import { Selection } from "./selection";
6
+ export { createEmpty as createEmptyMatrix } from "./matrix";
7
+ export declare const PLAIN_TEXT_MIME = "text/plain";
8
+ export declare const FOCUS_WITHIN_SELECTOR = ":focus-within";
9
+ /** Move the cursor of given input element to the input's end */
10
+ export declare function moveCursorToEnd(el: HTMLInputElement): void;
11
+ /**
12
+ * Creates an array of numbers (positive and/or negative) progressing from start up to, but not including, end. A step of -1 is used if a negative start is specified without an end or step. If end is not specified, it's set to start with start then set to 0.
13
+ * @param end - an integer number specifying at which position to stop (not included).
14
+ * @param start - An integer number specifying at which position to start.
15
+ * @param step - An integer number specifying the incrementation
16
+ */
17
+ export declare function range(end: number, start?: number, step?: number): number[];
18
+ /** Return whether given point is active */
19
+ export declare function isActive(active: Types.StoreState["active"], point: Point.Point): boolean;
20
+ /** Get the offset values of given element */
21
+ export declare function getOffsetRect(element: HTMLElement): Types.Dimensions;
22
+ /** Write given data to clipboard with given event */
23
+ export declare function writeTextToClipboard(event: ClipboardEvent, data: string): void;
24
+ /** Read text from given clipboard event */
25
+ export declare function readTextFromClipboard(event: ClipboardEvent): string;
26
+ /** Get the dimensions of cell at point from state */
27
+ export declare function getCellDimensions(point: Point.Point, rowDimensions: Types.StoreState["rowDimensions"] | undefined, columnDimensions: Types.StoreState["columnDimensions"] | undefined): Types.Dimensions | undefined;
28
+ /** Get the dimensions of a range of cells */
29
+ export declare function getRangeDimensions(rowDimensions: Types.StoreState["rowDimensions"], columnDimensions: Types.StoreState["columnDimensions"], range: PointRange): Types.Dimensions | undefined;
30
+ /** Get the dimensions of selected */
31
+ export declare function getSelectedDimensions(rowDimensions: Types.StoreState["rowDimensions"], columnDimensions: Types.StoreState["columnDimensions"], data: Matrix.Matrix<unknown>, selected: Selection): Types.Dimensions | undefined;
32
+ /** Get given data as CSV */
33
+ export declare function getCSV(data: Matrix.Matrix<Types.CellBase>): string;
34
+ /**
35
+ * Calculate the rows and columns counts of a spreadsheet
36
+ * @param data - the spreadsheet's data
37
+ * @param rowLabels - the spreadsheet's row labels (if defined)
38
+ * @param columnLabels - the spreadsheet's column labels (if defined)
39
+ * @returns the rows and columns counts of a spreadsheet
40
+ */
41
+ export declare function calculateSpreadsheetSize(data: Matrix.Matrix<unknown>, rowLabels?: string[], columnLabels?: string[]): Matrix.Size;
42
+ /** Should spreadsheet handle clipboard event */
43
+ export declare function shouldHandleClipboardEvent(root: Element | null, mode: Types.Mode): boolean;
44
+ export declare function isFocusedWithin(element: Element): boolean;
45
+ export declare function hasLineBreaker(value: unknown): boolean;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const ExcelFile: React.FC<ExcelFileProps>;
3
+ export default ExcelFile;
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import ExcelFile from './ExcelFile/ExcelFile';
3
+ declare const meta: Meta<typeof ExcelFile>;
4
+ type Story = StoryObj<typeof ExcelFile>;
5
+ export declare const Default: Story;
6
+ export default meta;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ interface ExcelSheetBarProps {
3
+ fileDetails: {
4
+ sheetNames: string[];
5
+ };
6
+ handleSheetChange: (name: string, index: number) => void;
7
+ contextMenu: (e: React.MouseEvent, name: string, index: number) => void;
8
+ addSheet: () => void;
9
+ selectedSheet: {
10
+ name: string;
11
+ };
12
+ contextSelect: (e: React.MouseEvent) => void;
13
+ }
14
+ declare const ExcelSheetBar: React.FC<ExcelSheetBarProps>;
15
+ export default ExcelSheetBar;
@@ -0,0 +1,3 @@
1
+ import './ExcelToolBar.scss';
2
+ declare const ExcelToolBar: React.FC<ExcelToolBarProps>;
3
+ export default ExcelToolBar;
@@ -0,0 +1,24 @@
1
+ interface CellStyle {
2
+ color?: string;
3
+ backgroundColor?: string;
4
+ bold?: boolean;
5
+ italic?: boolean;
6
+ name?: string;
7
+ border: {
8
+ top: string;
9
+ bottom: string;
10
+ left: string;
11
+ right: string;
12
+ };
13
+ alignment: {
14
+ horizontal?: string;
15
+ vertical?: string;
16
+ wrapText?: boolean;
17
+ };
18
+ }
19
+ interface CellData {
20
+ style?: CellStyle;
21
+ }
22
+ type ImportExcelStylesData = Array<Array<CellData>>;
23
+ export default function ImportExcelStyles(data: ImportExcelStylesData | null): void;
24
+ export {};
@@ -0,0 +1,176 @@
1
+ interface ExcelFileProps {
2
+ /** The Excel data containing sheets and their content */
3
+ excelData: {
4
+ sheets: WorkSheet[];
5
+ };
6
+ /** Optional: Provide context menu options for actions like right-click */
7
+ contextOption?: {
8
+ name: string;
9
+ title: React.ReactNode;
10
+ action: () => void;
11
+ }[];
12
+ /** Controls whether the toolbar is shown, disabled, or hidden */
13
+ toolbar?: 'show' | 'disable' | 'hide';
14
+ /** Callback function to save the Excel data */
15
+ onSave?: (excelData?: any) => void;
16
+ }
17
+ interface WorkSheet {
18
+ /** The name of the worksheet */
19
+ sheetName: string;
20
+ /** 2D array of worksheet data (cells) */
21
+ data: WorkData[][];
22
+ }
23
+ interface WorkData {
24
+ /** Value of the cell */
25
+ value: string;
26
+ /** Styling options for the cell */
27
+ style: CellStyle;
28
+ type?: boolean;
29
+ }
30
+ interface CellStyle {
31
+ /** Font name for the cell text */
32
+ name?: string;
33
+ /** Font size of the cell text */
34
+ size?: number;
35
+ position?: string;
36
+ /** Whether the text is bold */
37
+ bold?: boolean;
38
+ fontSize?: string;
39
+ fontFamily?: string;
40
+ /** Whether the text is italicized */
41
+ italic?: boolean;
42
+ /** Text color in the cell (hex code) */
43
+ color?: string;
44
+ /** Background color of the cell (hex code) */
45
+ backgroundColor?: string;
46
+ /** Border color of the cell (hex code) */
47
+ borderColor?: string;
48
+ /** Border styles for each side of the cell */
49
+ border?: {
50
+ /** Border style for the top side of the cell */
51
+ top: string;
52
+ /** Border style for the bottom side of the cell */
53
+ bottom: string;
54
+ /** Border style for the left side of the cell */
55
+ left: string;
56
+ /** Border style for the right side of the cell */
57
+ right: string;
58
+ };
59
+ /** Text alignment and wrapping properties */
60
+ alignment?: {
61
+ /** Horizontal text alignment ('left', 'center', or 'right') */
62
+ horizontal: string;
63
+ /** Vertical text alignment ('top', 'middle', or 'bottom') */
64
+ vertical: string;
65
+ /** Whether the text is wrapped within the cell */
66
+ wrapText: boolean;
67
+ };
68
+ }
69
+ /** A generic type to represent a 2D matrix of any type (or undefined values) */
70
+ type Matrix<T> = (T | undefined)[][];
71
+ interface ContextAction {
72
+ /** Name of the right-click option */
73
+ name: string;
74
+ /** Display title of the right-click menu option */
75
+ title: React.ReactNode;
76
+ /** The action that occurs when the right-click menu option is selected */
77
+ action: () => void;
78
+ }
79
+ interface ContextOption {
80
+ /** Type of the context option ('cell', 'row', 'column') */
81
+ name: string;
82
+ /** Array of context menu actions for right-click options */
83
+ value: ContextAction[];
84
+ }
85
+ interface ContextMenuState {
86
+ /** Whether the context menu is visible */
87
+ visible: boolean;
88
+ /** X-coordinate position for the context menu */
89
+ x: number;
90
+ /** Y-coordinate position for the context menu */
91
+ y: number;
92
+ /** Type of the context menu ('cell', 'row', 'column', or 'sheet_options') */
93
+ type: 'cell' | 'row' | 'column' | 'sheet_options' | null;
94
+ }
95
+ interface SelectedCell {
96
+ /** The row index of the selected cell */
97
+ row: number;
98
+ /** The column index of the selected cell */
99
+ column: number;
100
+ }
101
+ interface ColorContainer {
102
+ /** The color used for the text (hex code) */
103
+ color: string;
104
+ /** The background color used for the cell (hex code) */
105
+ backgroundColor: string;
106
+ /** The border color used for the cell (hex code) */
107
+ borderColor: string;
108
+ }
109
+ interface SelectedValue {
110
+ /** The value inside the selected cell */
111
+ value: string;
112
+ /** The row index of the selected cell */
113
+ row: number;
114
+ /** The column index of the selected cell */
115
+ column: number;
116
+ /** The column represented as an alphabetical string ('A', 'B') */
117
+ alphaCol: string;
118
+ /** The style applied to the selected cell */
119
+ style: CellStyle;
120
+ /** The sheet name where the cell is located */
121
+ sheet: string;
122
+ }
123
+ interface ExcelToolBarProps {
124
+ /** use this to hide/show/disable the toolbar */
125
+ toolbar?: 'show' | 'disable' | 'hide';
126
+ /** function to apply styles */
127
+ applyStyle: (styleType: string, value: any) => void;
128
+ /** function to trigger format painter */
129
+ formatePaint: () => void;
130
+ }
131
+ interface ExcelSheetBarProps {
132
+ /** Object containing details about the file, including sheet names */
133
+ fileDetails: {
134
+ sheetNames: string[];
135
+ };
136
+ /** Function to handle sheet change events */
137
+ handleSheetChange: (name: string, index: number) => void;
138
+ /** Function to open the context menu on a sheet */
139
+ contextMenu: (e: React.MouseEvent<HTMLDivElement, MouseEvent>, name: string, index: number) => void;
140
+ /** Function to add a new sheet */
141
+ addSheet: () => void;
142
+ /** Object representing the currently selected sheet */
143
+ selectedSheet: {
144
+ name: string;
145
+ index: number;
146
+ };
147
+ /** Function to update the context Type */
148
+ contextSelect: (event: React.MouseEvent) => void;
149
+ }
150
+ interface ContextMenuProps {
151
+ /** Custom context menu options */
152
+ customContext: {
153
+ name: string;
154
+ title: React.ReactNode;
155
+ action: () => void;
156
+ }[];
157
+ /** Object that holds different context actions based on the type (cell, row, column, sheet_options) */
158
+ contextAction: {
159
+ /** Function to add a row */
160
+ addRow: () => void;
161
+ /** Function to delete a row */
162
+ deleteRow: () => void;
163
+ /** Function to add a column */
164
+ addColumn: () => void;
165
+ /** Function to delete a column */
166
+ deleteColumn: () => void;
167
+ /** Function to add a new sheet */
168
+ addSheet: () => void;
169
+ /** Function to delete a sheet */
170
+ deleteSheet: () => void;
171
+ };
172
+ /** The state of the context menu, controlling its visibility and position */
173
+ contextData: ContextMenuState;
174
+ /** Function to update the context menu state */
175
+ setContextData: React.Dispatch<React.SetStateAction<ContextMenuState>>;
176
+ }
@@ -0,0 +1 @@
1
+ export { default } from './ExcelFile/ExcelFile';
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import './IconRadioGroup.scss';
3
+ import { IconRadioGroupProps } from './type';
4
+ declare const IconRadioGroup: React.FC<IconRadioGroupProps>;
5
+ export default IconRadioGroup;
@@ -0,0 +1,7 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import IconRadioGroup from './IconRadioGroup';
3
+ declare const meta: Meta<typeof IconRadioGroup>;
4
+ type Story = StoryObj<typeof IconRadioGroup>;
5
+ export declare const Default: Story;
6
+ export declare const WithDisabledOption: Story;
7
+ export default meta;
@@ -0,0 +1 @@
1
+ export { default } from './IconRadioGroup';
@@ -0,0 +1,41 @@
1
+ export interface IconRadioItem {
2
+ /**
3
+ * The unique name for the icon, used to load the corresponding icon.
4
+ */
5
+ iconName: string;
6
+ /**
7
+ * The display label for the icon. This can be used for accessibility purposes.
8
+ */
9
+ iconLabel: string;
10
+ /**
11
+ * Flag to determine if the icon option is disabled.
12
+ */
13
+ disabled?: boolean;
14
+ /**
15
+ * Message to display when the option is disabled.
16
+ */
17
+ disableMessage?: string;
18
+ }
19
+ export interface IconRadioGroupProps {
20
+ /**
21
+ * Array of icon items that make up the radio button group.
22
+ */
23
+ items: IconRadioItem[];
24
+ /**
25
+ * Callback function called when a button/icon is clicked.
26
+ * It returns the selected item.
27
+ */
28
+ onButtonClick: (selectedItem: IconRadioItem) => void;
29
+ /**
30
+ * The currently selected icon value
31
+ */
32
+ selectedValue?: string | null;
33
+ /**
34
+ * Callback function to notify parent of selection change.
35
+ */
36
+ onChange?: (selected: string | null) => void;
37
+ /**
38
+ * Optional className for custom styling
39
+ */
40
+ className?: string;
41
+ }