@draftbit/core 46.10.3-e89832.2 → 46.10.3-f6ea70.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/lib/commonjs/components/Accordion/AccordionItem.js +23 -4
  2. package/lib/commonjs/components/AnimatedCircularProgress.js +1 -12
  3. package/lib/commonjs/components/AvatarEdit.js +4 -15
  4. package/lib/commonjs/components/Banner.js +4 -23
  5. package/lib/commonjs/components/Button.js +10 -33
  6. package/lib/commonjs/components/Checkbox/CheckboxGroupRow.js +5 -23
  7. package/lib/commonjs/components/Checkbox/CheckboxRow.js +23 -6
  8. package/lib/commonjs/components/CircleImage.js +15 -1
  9. package/lib/commonjs/components/DeprecatedCardWrapper.js +15 -1
  10. package/lib/commonjs/components/Divider.js +1 -14
  11. package/lib/commonjs/components/FieldSearchBarFull.js +2 -1
  12. package/lib/commonjs/components/Layout.js +19 -40
  13. package/lib/commonjs/components/NumberInput.js +3 -12
  14. package/lib/commonjs/components/Picker/PickerComponent.android.js +3 -20
  15. package/lib/commonjs/components/Picker/PickerComponent.web.js +20 -3
  16. package/lib/commonjs/components/Portal/PortalConsumer.js +7 -22
  17. package/lib/commonjs/components/Portal/PortalManager.js +8 -34
  18. package/lib/commonjs/components/RadioButton/RadioButtonFieldGroup.js +1 -9
  19. package/lib/commonjs/components/RadioButton/RadioButtonGroup.js +2 -15
  20. package/lib/commonjs/components/RadioButton/RadioButtonRow.js +5 -23
  21. package/lib/commonjs/components/ScreenContainer.js +6 -24
  22. package/lib/commonjs/components/Shadow.js +2 -15
  23. package/lib/commonjs/components/Slider.js +4 -21
  24. package/lib/commonjs/components/StarRating.js +4 -23
  25. package/lib/commonjs/components/StepIndicator.js +18 -57
  26. package/lib/commonjs/components/Surface.js +2 -14
  27. package/lib/commonjs/components/TabView/TabView.js +7 -13
  28. package/lib/commonjs/components/Table/Table.js +123 -0
  29. package/lib/commonjs/components/Table/TableCell.js +49 -0
  30. package/lib/commonjs/components/Table/TableCommon.js +30 -0
  31. package/lib/commonjs/components/Table/TableRow.js +61 -0
  32. package/lib/commonjs/components/Table/index.js +27 -0
  33. package/lib/commonjs/components/Text.js +4 -50
  34. package/lib/commonjs/components/TextField.js +28 -76
  35. package/lib/commonjs/components/ToggleButton.js +2 -15
  36. package/lib/commonjs/components/Touchable.js +2 -15
  37. package/lib/commonjs/index.js +19 -28
  38. package/lib/commonjs/mappings/FieldSearchBarFull.js +3 -1
  39. package/lib/commonjs/mappings/NativeBase/Layout.js +108 -0
  40. package/lib/commonjs/mappings/StarRating.js +6 -2
  41. package/lib/commonjs/mappings/Table.js +140 -0
  42. package/lib/commonjs/styles/overlay.js +3 -1
  43. package/lib/commonjs/utilities.js +2 -1
  44. package/lib/module/components/Table/Table.js +114 -0
  45. package/lib/module/components/Table/TableCell.js +41 -0
  46. package/lib/module/components/Table/TableCommon.js +21 -0
  47. package/lib/module/components/Table/TableRow.js +53 -0
  48. package/lib/module/components/Table/index.js +3 -0
  49. package/lib/module/index.js +1 -4
  50. package/lib/module/mappings/NativeBase/Layout.js +101 -0
  51. package/lib/module/mappings/Table.js +133 -0
  52. package/lib/typescript/src/components/Table/Table.d.ts +19 -0
  53. package/lib/typescript/src/components/Table/Table.d.ts.map +1 -0
  54. package/lib/typescript/src/components/Table/TableCell.d.ts +9 -0
  55. package/lib/typescript/src/components/Table/TableCell.d.ts.map +1 -0
  56. package/lib/typescript/src/components/Table/TableCommon.d.ts +20 -0
  57. package/lib/typescript/src/components/Table/TableCommon.d.ts.map +1 -0
  58. package/lib/typescript/src/components/{RowBodyIcon.d.ts → Table/TableRow.d.ts} +7 -9
  59. package/lib/typescript/src/components/Table/TableRow.d.ts.map +1 -0
  60. package/lib/typescript/src/components/Table/index.d.ts +4 -0
  61. package/lib/typescript/src/components/Table/index.d.ts.map +1 -0
  62. package/lib/typescript/src/index.d.ts +1 -4
  63. package/lib/typescript/src/index.d.ts.map +1 -1
  64. package/lib/typescript/src/mappings/NativeBase/Layout.d.ts +133 -0
  65. package/lib/typescript/src/mappings/NativeBase/Layout.d.ts.map +1 -0
  66. package/lib/typescript/src/mappings/Table.d.ts +337 -0
  67. package/lib/typescript/src/mappings/Table.d.ts.map +1 -0
  68. package/package.json +3 -3
  69. package/src/components/Table/Table.js +93 -0
  70. package/src/components/Table/Table.tsx +176 -0
  71. package/src/components/Table/TableCell.js +31 -0
  72. package/src/components/Table/TableCell.tsx +63 -0
  73. package/src/components/Table/TableCommon.js +12 -0
  74. package/src/components/Table/TableCommon.ts +40 -0
  75. package/src/components/Table/TableRow.js +37 -0
  76. package/src/components/Table/TableRow.tsx +77 -0
  77. package/src/components/Table/index.js +3 -0
  78. package/src/components/Table/index.tsx +3 -0
  79. package/src/index.js +1 -4
  80. package/src/index.tsx +2 -4
  81. package/src/mappings/NativeBase/Layout.js +124 -0
  82. package/src/mappings/NativeBase/Layout.ts +145 -0
  83. package/src/mappings/Table.js +150 -0
  84. package/src/mappings/Table.ts +170 -0
  85. package/lib/commonjs/components/Container.js +0 -104
  86. package/lib/commonjs/components/Row.js +0 -73
  87. package/lib/commonjs/components/RowBodyIcon.js +0 -45
  88. package/lib/commonjs/components/RowHeadlineImageCaption.js +0 -45
  89. package/lib/commonjs/components/RowHeadlineImageIcon.js +0 -51
  90. package/lib/commonjs/mappings/Container.js +0 -37
  91. package/lib/module/components/Container.js +0 -83
  92. package/lib/module/components/Row.js +0 -63
  93. package/lib/module/components/RowBodyIcon.js +0 -35
  94. package/lib/module/components/RowHeadlineImageCaption.js +0 -35
  95. package/lib/module/components/RowHeadlineImageIcon.js +0 -41
  96. package/lib/module/mappings/Container.js +0 -30
  97. package/lib/typescript/src/components/Container.d.ts +0 -21
  98. package/lib/typescript/src/components/Container.d.ts.map +0 -1
  99. package/lib/typescript/src/components/Row.d.ts +0 -21
  100. package/lib/typescript/src/components/Row.d.ts.map +0 -1
  101. package/lib/typescript/src/components/RowBodyIcon.d.ts.map +0 -1
  102. package/lib/typescript/src/components/RowHeadlineImageCaption.d.ts +0 -16
  103. package/lib/typescript/src/components/RowHeadlineImageCaption.d.ts.map +0 -1
  104. package/lib/typescript/src/components/RowHeadlineImageIcon.d.ts +0 -18
  105. package/lib/typescript/src/components/RowHeadlineImageIcon.d.ts.map +0 -1
  106. package/lib/typescript/src/mappings/Container.d.ts +0 -55
  107. package/lib/typescript/src/mappings/Container.d.ts.map +0 -1
  108. package/src/components/Container.js +0 -43
  109. package/src/components/Container.tsx +0 -116
  110. package/src/components/Row.js +0 -48
  111. package/src/components/Row.tsx +0 -108
  112. package/src/components/RowBodyIcon.js +0 -8
  113. package/src/components/RowBodyIcon.tsx +0 -47
  114. package/src/components/RowHeadlineImageCaption.js +0 -12
  115. package/src/components/RowHeadlineImageCaption.tsx +0 -49
  116. package/src/components/RowHeadlineImageIcon.js +0 -14
  117. package/src/components/RowHeadlineImageIcon.tsx +0 -61
  118. package/src/mappings/Container.js +0 -30
  119. package/src/mappings/Container.ts +0 -41
@@ -0,0 +1,133 @@
1
+ export declare const SEED_DATA: ({
2
+ props: {
3
+ ratio: {
4
+ label: string;
5
+ description: string;
6
+ formType: string;
7
+ propType: string;
8
+ group: string;
9
+ defaultValue: null;
10
+ editable: boolean;
11
+ required: boolean;
12
+ step: number;
13
+ };
14
+ centerContent?: undefined;
15
+ isDisabled?: undefined;
16
+ isInvalid?: undefined;
17
+ reversed?: undefined;
18
+ };
19
+ stylesPanelSections: string[];
20
+ category: string;
21
+ packageName: string;
22
+ name: string;
23
+ tag: string;
24
+ description: string;
25
+ } | {
26
+ category: string;
27
+ packageName: string;
28
+ stylesPanelSections: string[];
29
+ name: string;
30
+ tag: string;
31
+ description: string;
32
+ } | {
33
+ category: string;
34
+ packageName: string;
35
+ stylesPanelSections: string[];
36
+ name: string;
37
+ tag: string;
38
+ description: string;
39
+ props: {
40
+ centerContent: {
41
+ label: string;
42
+ description: string;
43
+ formType: string;
44
+ propType: string;
45
+ defaultValue: boolean;
46
+ editable: boolean;
47
+ required: boolean;
48
+ group: string;
49
+ };
50
+ ratio?: undefined;
51
+ isDisabled?: undefined;
52
+ isInvalid?: undefined;
53
+ reversed?: undefined;
54
+ };
55
+ } | {
56
+ category: string;
57
+ packageName: string;
58
+ stylesPanelSections: string[];
59
+ name: string;
60
+ tag: string;
61
+ description: string;
62
+ layout: {
63
+ flexDirection: string;
64
+ flex?: undefined;
65
+ };
66
+ } | {
67
+ stylesPanelSections: string[];
68
+ category: string;
69
+ packageName: string;
70
+ name: string;
71
+ tag: string;
72
+ description: string;
73
+ layout: {
74
+ flex: number;
75
+ flexDirection?: undefined;
76
+ };
77
+ } | {
78
+ props: {
79
+ isDisabled: {
80
+ label: string;
81
+ description: string;
82
+ formType: string;
83
+ propType: string;
84
+ defaultValue: boolean;
85
+ editable: boolean;
86
+ required: boolean;
87
+ group: string;
88
+ };
89
+ isInvalid: {
90
+ label: string;
91
+ description: string;
92
+ formType: string;
93
+ propType: string;
94
+ defaultValue: boolean;
95
+ editable: boolean;
96
+ required: boolean;
97
+ group: string;
98
+ };
99
+ ratio?: undefined;
100
+ centerContent?: undefined;
101
+ reversed?: undefined;
102
+ };
103
+ category: string;
104
+ packageName: string;
105
+ stylesPanelSections: string[];
106
+ name: string;
107
+ tag: string;
108
+ description: string;
109
+ } | {
110
+ props: {
111
+ reversed: {
112
+ label: string;
113
+ description: string;
114
+ formType: string;
115
+ propType: string;
116
+ defaultValue: boolean;
117
+ editable: boolean;
118
+ required: boolean;
119
+ group: string;
120
+ };
121
+ ratio?: undefined;
122
+ centerContent?: undefined;
123
+ isDisabled?: undefined;
124
+ isInvalid?: undefined;
125
+ };
126
+ category: string;
127
+ packageName: string;
128
+ stylesPanelSections: string[];
129
+ name: string;
130
+ tag: string;
131
+ description: string;
132
+ })[];
133
+ //# sourceMappingURL=Layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../../../../src/mappings/NativeBase/Layout.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0HrB,CAAC"}
@@ -0,0 +1,337 @@
1
+ export declare const SEED_DATA: ({
2
+ name: string;
3
+ tag: string;
4
+ description: string;
5
+ category: string;
6
+ stylesPanelSections: string[];
7
+ layout: {
8
+ flex: number;
9
+ flexDirection?: undefined;
10
+ };
11
+ props: {
12
+ borderWidth: {
13
+ defaultValue: number;
14
+ label: string;
15
+ description: string;
16
+ formType: string;
17
+ propType: string;
18
+ group: string;
19
+ editable: boolean;
20
+ required: boolean;
21
+ step: number;
22
+ };
23
+ borderColor: {
24
+ defaultValue: string;
25
+ group: string;
26
+ label: string;
27
+ description: string;
28
+ editable: boolean;
29
+ required: boolean;
30
+ formType: string;
31
+ propType: string;
32
+ };
33
+ borderStyle: {
34
+ defaultValue: string;
35
+ group: string;
36
+ label: string;
37
+ description: string;
38
+ editable: boolean;
39
+ required: boolean;
40
+ formType: string;
41
+ propType: string;
42
+ options: never[];
43
+ };
44
+ drawTopBorder: {
45
+ defaultValue: boolean;
46
+ label: string;
47
+ description: string;
48
+ formType: string;
49
+ propType: string;
50
+ editable: boolean;
51
+ required: boolean;
52
+ group: string;
53
+ };
54
+ cellVerticalPadding: {
55
+ defaultValue: number;
56
+ label: string;
57
+ description: string;
58
+ formType: string;
59
+ propType: string;
60
+ group: string;
61
+ editable: boolean;
62
+ required: boolean;
63
+ step: number;
64
+ };
65
+ cellHorizontalPadding: {
66
+ defaultValue: number;
67
+ label: string;
68
+ description: string;
69
+ formType: string;
70
+ propType: string;
71
+ group: string;
72
+ editable: boolean;
73
+ required: boolean;
74
+ step: number;
75
+ };
76
+ showsVerticalScrollIndicator: {
77
+ label: string;
78
+ description: string;
79
+ formType: string;
80
+ propType: string;
81
+ defaultValue: boolean;
82
+ editable: boolean;
83
+ required: boolean;
84
+ group: string;
85
+ };
86
+ drawBottomBorder: {
87
+ label: string;
88
+ description: string;
89
+ formType: string;
90
+ propType: string;
91
+ defaultValue: boolean;
92
+ editable: boolean;
93
+ required: boolean;
94
+ group: string;
95
+ };
96
+ drawStartBorder: {
97
+ label: string;
98
+ description: string;
99
+ formType: string;
100
+ propType: string;
101
+ defaultValue: boolean;
102
+ editable: boolean;
103
+ required: boolean;
104
+ group: string;
105
+ };
106
+ drawEndBorder: {
107
+ label: string;
108
+ description: string;
109
+ formType: string;
110
+ propType: string;
111
+ defaultValue: boolean;
112
+ editable: boolean;
113
+ required: boolean;
114
+ group: string;
115
+ };
116
+ };
117
+ } | {
118
+ name: string;
119
+ tag: string;
120
+ description: string;
121
+ category: string;
122
+ stylesPanelSections: string[];
123
+ props: {
124
+ drawStartBorder: {
125
+ defaultValue: boolean;
126
+ label: string;
127
+ description: string;
128
+ formType: string;
129
+ propType: string;
130
+ editable: boolean;
131
+ required: boolean;
132
+ group: string;
133
+ };
134
+ drawBottomBorder: {
135
+ defaultValue: boolean;
136
+ label: string;
137
+ description: string;
138
+ formType: string;
139
+ propType: string;
140
+ editable: boolean;
141
+ required: boolean;
142
+ group: string;
143
+ };
144
+ isTableHeader: {
145
+ label: string;
146
+ description: string;
147
+ formType: string;
148
+ propType: string;
149
+ defaultValue: boolean;
150
+ editable: boolean;
151
+ required: boolean;
152
+ group: string;
153
+ };
154
+ borderWidth: {
155
+ label: string;
156
+ description: string;
157
+ formType: string;
158
+ propType: string;
159
+ group: string;
160
+ defaultValue: null;
161
+ editable: boolean;
162
+ required: boolean;
163
+ step: number;
164
+ };
165
+ borderColor: {
166
+ group: string;
167
+ label: string;
168
+ description: string;
169
+ editable: boolean;
170
+ required: boolean;
171
+ defaultValue: null;
172
+ formType: string;
173
+ propType: string;
174
+ };
175
+ borderStyle: {
176
+ group: string;
177
+ label: string;
178
+ description: string;
179
+ editable: boolean;
180
+ required: boolean;
181
+ formType: string;
182
+ propType: string;
183
+ defaultValue: null;
184
+ options: never[];
185
+ };
186
+ drawTopBorder: {
187
+ label: string;
188
+ description: string;
189
+ formType: string;
190
+ propType: string;
191
+ defaultValue: boolean;
192
+ editable: boolean;
193
+ required: boolean;
194
+ group: string;
195
+ };
196
+ drawEndBorder: {
197
+ label: string;
198
+ description: string;
199
+ formType: string;
200
+ propType: string;
201
+ defaultValue: boolean;
202
+ editable: boolean;
203
+ required: boolean;
204
+ group: string;
205
+ };
206
+ cellVerticalPadding: {
207
+ label: string;
208
+ description: string;
209
+ formType: string;
210
+ propType: string;
211
+ group: string;
212
+ defaultValue: null;
213
+ editable: boolean;
214
+ required: boolean;
215
+ step: number;
216
+ };
217
+ cellHorizontalPadding: {
218
+ label: string;
219
+ description: string;
220
+ formType: string;
221
+ propType: string;
222
+ group: string;
223
+ defaultValue: null;
224
+ editable: boolean;
225
+ required: boolean;
226
+ step: number;
227
+ };
228
+ };
229
+ layout?: undefined;
230
+ } | {
231
+ name: string;
232
+ tag: string;
233
+ description: string;
234
+ category: string;
235
+ stylesPanelSections: string[];
236
+ layout: {
237
+ flex: number;
238
+ flexDirection: string;
239
+ };
240
+ props: {
241
+ drawEndBorder: {
242
+ defaultValue: boolean;
243
+ label: string;
244
+ description: string;
245
+ formType: string;
246
+ propType: string;
247
+ editable: boolean;
248
+ required: boolean;
249
+ group: string;
250
+ };
251
+ borderWidth: {
252
+ label: string;
253
+ description: string;
254
+ formType: string;
255
+ propType: string;
256
+ group: string;
257
+ defaultValue: null;
258
+ editable: boolean;
259
+ required: boolean;
260
+ step: number;
261
+ };
262
+ borderColor: {
263
+ group: string;
264
+ label: string;
265
+ description: string;
266
+ editable: boolean;
267
+ required: boolean;
268
+ defaultValue: null;
269
+ formType: string;
270
+ propType: string;
271
+ };
272
+ borderStyle: {
273
+ group: string;
274
+ label: string;
275
+ description: string;
276
+ editable: boolean;
277
+ required: boolean;
278
+ formType: string;
279
+ propType: string;
280
+ defaultValue: null;
281
+ options: never[];
282
+ };
283
+ drawTopBorder: {
284
+ label: string;
285
+ description: string;
286
+ formType: string;
287
+ propType: string;
288
+ defaultValue: boolean;
289
+ editable: boolean;
290
+ required: boolean;
291
+ group: string;
292
+ };
293
+ drawBottomBorder: {
294
+ label: string;
295
+ description: string;
296
+ formType: string;
297
+ propType: string;
298
+ defaultValue: boolean;
299
+ editable: boolean;
300
+ required: boolean;
301
+ group: string;
302
+ };
303
+ drawStartBorder: {
304
+ label: string;
305
+ description: string;
306
+ formType: string;
307
+ propType: string;
308
+ defaultValue: boolean;
309
+ editable: boolean;
310
+ required: boolean;
311
+ group: string;
312
+ };
313
+ cellVerticalPadding: {
314
+ label: string;
315
+ description: string;
316
+ formType: string;
317
+ propType: string;
318
+ group: string;
319
+ defaultValue: null;
320
+ editable: boolean;
321
+ required: boolean;
322
+ step: number;
323
+ };
324
+ cellHorizontalPadding: {
325
+ label: string;
326
+ description: string;
327
+ formType: string;
328
+ propType: string;
329
+ group: string;
330
+ defaultValue: null;
331
+ editable: boolean;
332
+ required: boolean;
333
+ step: number;
334
+ };
335
+ };
336
+ })[];
337
+ //# sourceMappingURL=Table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/mappings/Table.ts"],"names":[],"mappings":"AAsEA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmGrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@draftbit/core",
3
- "version": "46.10.3-e89832.2+e898328",
3
+ "version": "46.10.3-f6ea70.2+f6ea70d",
4
4
  "description": "Core (non-native) Components",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -41,7 +41,7 @@
41
41
  "dependencies": {
42
42
  "@date-io/date-fns": "^1.3.13",
43
43
  "@draftbit/react-theme-provider": "^2.1.1",
44
- "@draftbit/types": "^46.10.3-e89832.2+e898328",
44
+ "@draftbit/types": "^46.10.3-f6ea70.2+f6ea70d",
45
45
  "@material-ui/core": "^4.11.0",
46
46
  "@material-ui/pickers": "^3.2.10",
47
47
  "@react-native-community/slider": "4.2.3",
@@ -100,5 +100,5 @@
100
100
  ]
101
101
  ]
102
102
  },
103
- "gitHead": "e898328b35cd0240030d6e8de8354f2044e35f29"
103
+ "gitHead": "f6ea70d886810e2de34cfc4b603bafc935d3e034"
104
104
  }
@@ -0,0 +1,93 @@
1
+ import React from "react";
2
+ import { ScrollView, View, StyleSheet, } from "react-native";
3
+ import { withTheme } from "../../theming";
4
+ import { generateBorderStyles, TableStyleContext, } from "./TableCommon";
5
+ const Table = ({ theme, borderWidth = 1, borderColor = theme.colors.divider, borderStyle = "solid", drawTopBorder = true, drawBottomBorder = false, drawStartBorder = false, drawEndBorder = false, cellVerticalPadding = 10, cellHorizontalPadding = 10, data, keyExtractor, renderItem, children: childrenProp, style, ...rest }) => {
6
+ //Both 'renderItem' and 'data' are optional to allow direct children. But if one is included, both need to be included
7
+ if ((data && !renderItem) || (renderItem && !data)) {
8
+ throw new Error("'renderItem' and 'data' need to both be provided to render from 'data'. Either remove them entirley or include both");
9
+ }
10
+ if (data && renderItem && childrenProp) {
11
+ console.warn("'children' of Table ignored due to usage of 'data' and 'renderItem'");
12
+ }
13
+ const isTableHeader = React.useCallback((object) => {
14
+ return object.isTableHeader;
15
+ }, []);
16
+ const isRenderItem = data && renderItem;
17
+ //Uses 'renderItem' and 'data' to create an array of children
18
+ const dataAsChildren = React.useMemo(() => {
19
+ if (!isRenderItem)
20
+ return [];
21
+ return data.map((item, index) => {
22
+ const component = renderItem({ item, index });
23
+ if (!component) {
24
+ return null;
25
+ }
26
+ const key = keyExtractor ? keyExtractor(item, index) : index.toString();
27
+ return React.cloneElement(component, {
28
+ key,
29
+ });
30
+ });
31
+ }, [data, renderItem, keyExtractor, isRenderItem]);
32
+ const children = isRenderItem
33
+ ? dataAsChildren
34
+ : React.Children.toArray(childrenProp);
35
+ const validChildren = React.useMemo(() => children.filter((item) => React.isValidElement(item)), [children]);
36
+ const childrenWithoutHeader = React.useMemo(() => {
37
+ const flattenedWithoutNestedHeaders = validChildren.map((item) => {
38
+ const nestedChildren = React.Children.toArray(item.props.children);
39
+ //Header can be nested in React.Fragment when in renderItem
40
+ const nestedHeaders = nestedChildren.filter((child) => isTableHeader(child.props));
41
+ if (nestedHeaders === null || nestedHeaders === void 0 ? void 0 : nestedHeaders.length) {
42
+ //New element excluding header children
43
+ return React.cloneElement(item, {
44
+ children: nestedChildren.filter((child) => !isTableHeader(child.props)),
45
+ });
46
+ }
47
+ return item;
48
+ });
49
+ return flattenedWithoutNestedHeaders.filter((item) => !isTableHeader(item.props));
50
+ }, [validChildren, isTableHeader]);
51
+ const header = React.useMemo(() => {
52
+ const flattenedPossibleHeaders = validChildren.map((item) => {
53
+ const nestedChildren = React.Children.toArray(item.props.children);
54
+ //Header can be nested in React.Fragment when in renderItem
55
+ const nestedHeaders = nestedChildren.filter((child) => isTableHeader(child.props));
56
+ if (nestedHeaders === null || nestedHeaders === void 0 ? void 0 : nestedHeaders.length) {
57
+ return nestedHeaders[0];
58
+ }
59
+ return item;
60
+ });
61
+ const allHeaders = flattenedPossibleHeaders.filter((item) => isTableHeader(item.props));
62
+ if (allHeaders.length) {
63
+ return allHeaders[0]; //Only 1 header taken
64
+ }
65
+ return null;
66
+ }, [validChildren, isTableHeader]);
67
+ const contextValue = {
68
+ borderColor,
69
+ borderStyle,
70
+ borderWidth,
71
+ cellHorizontalPadding,
72
+ cellVerticalPadding,
73
+ };
74
+ const borderViewStyle = generateBorderStyles({
75
+ borderColor,
76
+ borderWidth,
77
+ borderStyle,
78
+ drawTopBorder,
79
+ drawBottomBorder,
80
+ drawStartBorder,
81
+ drawEndBorder,
82
+ });
83
+ return (React.createElement(TableStyleContext.Provider, { value: contextValue },
84
+ React.createElement(View, { style: [styles.container, borderViewStyle, style] },
85
+ React.createElement(React.Fragment, null, header),
86
+ React.createElement(ScrollView, { ...rest }, childrenWithoutHeader))));
87
+ };
88
+ const styles = StyleSheet.create({
89
+ container: {
90
+ flex: 1,
91
+ },
92
+ });
93
+ export default withTheme(Table);