@codeleap/mobile 1.4.0 → 1.4.1

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 (191) hide show
  1. package/.eslintignore +1 -1
  2. package/.eslintrc.js +3 -3
  3. package/.vscode/settings.json +10 -10
  4. package/CodeLeap-Mobile-Packages.code-workspace +7 -7
  5. package/dist/components/ActivityIndicator.d.ts +13 -13
  6. package/dist/components/ActivityIndicator.js +50 -51
  7. package/dist/components/ActivityIndicator.js.map +1 -1
  8. package/dist/components/Animated.d.ts +15 -15
  9. package/dist/components/Animated.js +54 -54
  10. package/dist/components/Animated.js.map +0 -0
  11. package/dist/components/Button.d.ts +119 -119
  12. package/dist/components/Button.js +77 -77
  13. package/dist/components/Button.js.map +1 -1
  14. package/dist/components/Checkbox/index.d.ts +14 -14
  15. package/dist/components/Checkbox/index.js +73 -73
  16. package/dist/components/Checkbox/index.js.map +1 -1
  17. package/dist/components/Checkbox/styles.d.ts +52 -52
  18. package/dist/components/Checkbox/styles.js +48 -48
  19. package/dist/components/Checkbox/styles.js.map +0 -0
  20. package/dist/components/ContentView.d.ts +10 -10
  21. package/dist/components/ContentView.js +50 -50
  22. package/dist/components/ContentView.js.map +0 -0
  23. package/dist/components/FileInput.d.ts +26 -26
  24. package/dist/components/FileInput.js +174 -174
  25. package/dist/components/FileInput.js.map +1 -1
  26. package/dist/components/Icon.d.ts +12 -11
  27. package/dist/components/Icon.js +66 -60
  28. package/dist/components/Icon.js.map +1 -1
  29. package/dist/components/Image.d.ts +18 -17
  30. package/dist/components/Image.js +53 -47
  31. package/dist/components/Image.js.map +1 -1
  32. package/dist/components/List.d.ts +11 -11
  33. package/dist/components/List.js +76 -76
  34. package/dist/components/List.js.map +0 -0
  35. package/dist/components/Modal/index.d.ts +25 -25
  36. package/dist/components/Modal/index.js +108 -108
  37. package/dist/components/Modal/index.js.map +0 -0
  38. package/dist/components/Modal/styles.d.ts +66 -66
  39. package/dist/components/Modal/styles.js +64 -56
  40. package/dist/components/Modal/styles.js.map +1 -1
  41. package/dist/components/Navigation/Navigation.d.ts +3 -3
  42. package/dist/components/Navigation/Navigation.js +83 -75
  43. package/dist/components/Navigation/Navigation.js.map +1 -1
  44. package/dist/components/Navigation/constants.d.ts +5 -5
  45. package/dist/components/Navigation/constants.js +10 -10
  46. package/dist/components/Navigation/constants.js.map +0 -0
  47. package/dist/components/Navigation/index.d.ts +3 -3
  48. package/dist/components/Navigation/index.js +15 -15
  49. package/dist/components/Navigation/index.js.map +0 -0
  50. package/dist/components/Navigation/types.d.ts +26 -26
  51. package/dist/components/Navigation/types.js +7 -7
  52. package/dist/components/Navigation/types.js.map +1 -1
  53. package/dist/components/Navigation/utils.d.ts +3 -3
  54. package/dist/components/Navigation/utils.js +69 -66
  55. package/dist/components/Navigation/utils.js.map +1 -1
  56. package/dist/components/Overlay.d.ts +16 -16
  57. package/dist/components/Overlay.js +65 -65
  58. package/dist/components/Overlay.js.map +1 -1
  59. package/dist/components/Pager/index.d.ts +19 -19
  60. package/dist/components/Pager/index.js +163 -163
  61. package/dist/components/Pager/index.js.map +1 -1
  62. package/dist/components/Pager/styles.d.ts +51 -51
  63. package/dist/components/Pager/styles.js +43 -43
  64. package/dist/components/Pager/styles.js.map +0 -0
  65. package/dist/components/RadioInput/index.d.ts +26 -26
  66. package/dist/components/RadioInput/index.js +68 -68
  67. package/dist/components/RadioInput/index.js.map +1 -1
  68. package/dist/components/RadioInput/styles.d.ts +54 -54
  69. package/dist/components/RadioInput/styles.js +44 -44
  70. package/dist/components/RadioInput/styles.js.map +0 -0
  71. package/dist/components/Scroll.d.ts +11 -11
  72. package/dist/components/Scroll.js +75 -75
  73. package/dist/components/Scroll.js.map +0 -0
  74. package/dist/components/Sections.d.ts +11 -11
  75. package/dist/components/Sections.js +76 -76
  76. package/dist/components/Sections.js.map +0 -0
  77. package/dist/components/Select/index.d.ts +5 -5
  78. package/dist/components/Select/index.js +144 -143
  79. package/dist/components/Select/index.js.map +1 -1
  80. package/dist/components/Select/styles.d.ts +9 -9
  81. package/dist/components/Select/styles.js +56 -56
  82. package/dist/components/Select/styles.js.map +0 -0
  83. package/dist/components/Select/types.d.ts +33 -33
  84. package/dist/components/Select/types.js +2 -2
  85. package/dist/components/Select/types.js.map +0 -0
  86. package/dist/components/Slider/Mark.d.ts +3 -3
  87. package/dist/components/Slider/Mark.js +31 -31
  88. package/dist/components/Slider/Mark.js.map +0 -0
  89. package/dist/components/Slider/Thumb.d.ts +7 -7
  90. package/dist/components/Slider/Thumb.js +29 -29
  91. package/dist/components/Slider/Thumb.js.map +0 -0
  92. package/dist/components/Slider/index.d.ts +3 -3
  93. package/dist/components/Slider/index.js +93 -93
  94. package/dist/components/Slider/index.js.map +0 -0
  95. package/dist/components/Slider/types.d.ts +25 -25
  96. package/dist/components/Slider/types.js +2 -2
  97. package/dist/components/Slider/types.js.map +0 -0
  98. package/dist/components/Switch.d.ts +13 -13
  99. package/dist/components/Switch.js +71 -71
  100. package/dist/components/Switch.js.map +1 -1
  101. package/dist/components/Text.d.ts +12 -12
  102. package/dist/components/Text.js +48 -48
  103. package/dist/components/Text.js.map +0 -0
  104. package/dist/components/TextInput.d.ts +162 -160
  105. package/dist/components/TextInput.js +149 -149
  106. package/dist/components/TextInput.js.map +1 -1
  107. package/dist/components/Touchable.d.ts +14 -14
  108. package/dist/components/Touchable.js +57 -57
  109. package/dist/components/Touchable.js.map +1 -1
  110. package/dist/components/View.d.ts +114 -114
  111. package/dist/components/View.js +50 -50
  112. package/dist/components/View.js.map +0 -0
  113. package/dist/components/components.d.ts +24 -24
  114. package/dist/components/components.js +36 -36
  115. package/dist/components/components.js.map +0 -0
  116. package/dist/index.d.ts +5 -5
  117. package/dist/index.js +24 -24
  118. package/dist/index.js.map +0 -0
  119. package/dist/modules/documentPicker.d.ts +3 -3
  120. package/dist/modules/documentPicker.js +11 -11
  121. package/dist/modules/documentPicker.js.map +1 -1
  122. package/dist/modules/fastImage.d.ts +1 -1
  123. package/dist/modules/fastImage.js +9 -9
  124. package/dist/modules/fastImage.js.map +0 -0
  125. package/dist/modules/reactNavigation.d.ts +3 -3
  126. package/dist/modules/reactNavigation.js +10 -10
  127. package/dist/modules/reactNavigation.js.map +0 -0
  128. package/dist/modules/types/fileTypes.d.ts +138 -138
  129. package/dist/modules/types/fileTypes.js +2 -2
  130. package/dist/modules/types/fileTypes.js.map +0 -0
  131. package/dist/types/utility.d.ts +2 -2
  132. package/dist/types/utility.js +2 -2
  133. package/dist/types/utility.js.map +0 -0
  134. package/dist/utils/OSAlert.d.ts +31 -31
  135. package/dist/utils/OSAlert.js +141 -88
  136. package/dist/utils/OSAlert.js.map +1 -1
  137. package/dist/utils/misc.d.ts +2 -2
  138. package/dist/utils/misc.js +25 -25
  139. package/dist/utils/misc.js.map +0 -0
  140. package/dist/utils/styles.d.ts +1 -1
  141. package/dist/utils/styles.js +12 -12
  142. package/dist/utils/styles.js.map +0 -0
  143. package/package.json +40 -38
  144. package/src/components/ActivityIndicator.tsx +46 -47
  145. package/src/components/Animated.tsx +34 -34
  146. package/src/components/Button.tsx +95 -95
  147. package/src/components/Checkbox/index.tsx +81 -80
  148. package/src/components/Checkbox/styles.ts +72 -72
  149. package/src/components/ContentView.tsx +58 -58
  150. package/src/components/FileInput.tsx +179 -178
  151. package/src/components/Icon.tsx +58 -48
  152. package/src/components/Image.tsx +59 -49
  153. package/src/components/List.tsx +100 -100
  154. package/src/components/Modal/index.tsx +158 -158
  155. package/src/components/Modal/styles.ts +133 -118
  156. package/src/components/Navigation/Navigation.tsx +58 -51
  157. package/src/components/Navigation/constants.ts +8 -8
  158. package/src/components/Navigation/index.tsx +3 -3
  159. package/src/components/Navigation/types.ts +35 -37
  160. package/src/components/Navigation/utils.tsx +59 -54
  161. package/src/components/Overlay.tsx +77 -76
  162. package/src/components/Pager/index.tsx +240 -241
  163. package/src/components/Pager/styles.ts +51 -51
  164. package/src/components/RadioInput/index.tsx +101 -100
  165. package/src/components/RadioInput/styles.ts +67 -67
  166. package/src/components/Scroll.tsx +98 -98
  167. package/src/components/Sections.tsx +100 -0
  168. package/src/components/Select/index.tsx +184 -181
  169. package/src/components/Select/styles.ts +81 -81
  170. package/src/components/Select/types.ts +41 -41
  171. package/src/components/Slider/Mark.tsx +46 -46
  172. package/src/components/Slider/Thumb.tsx +29 -29
  173. package/src/components/Slider/index.tsx +123 -123
  174. package/src/components/Slider/types.ts +25 -25
  175. package/src/components/Switch.tsx +81 -82
  176. package/src/components/Text.tsx +30 -30
  177. package/src/components/TextInput.tsx +204 -203
  178. package/src/components/Touchable.tsx +65 -64
  179. package/src/components/View.tsx +46 -46
  180. package/src/components/components.ts +26 -26
  181. package/src/index.ts +6 -6
  182. package/src/modules/documentPicker.ts +7 -8
  183. package/src/modules/fastImage.ts +2 -2
  184. package/src/modules/index.d.ts +496 -496
  185. package/src/modules/reactNavigation.ts +4 -4
  186. package/src/modules/types/documentPicker.d.ts +215 -215
  187. package/src/modules/types/fileTypes.ts +122 -122
  188. package/src/types/utility.ts +3 -3
  189. package/src/utils/OSAlert.ts +180 -124
  190. package/src/utils/misc.ts +24 -24
  191. package/src/utils/styles.ts +14 -14
@@ -1,118 +1,133 @@
1
- import {
2
- ButtonComposition,
3
- createDefaultVariantFactory,
4
- includePresets,
5
- ModalComposition,
6
- ModalStyles,
7
- assignTextStyle,
8
- } from '@codeleap/common'
9
-
10
- export const backgroundTransition = {
11
- duration: 200,
12
- ease: 'easeOut',
13
- useNativeDriver: false,
14
- }
15
-
16
- export const modalTransition = {
17
- duration: 150,
18
- ease: 'easeOut',
19
- useNativeDriver: false,
20
- }
21
-
22
- export type MobileModalParts =
23
- | 'wrapper'
24
- | 'overlay'
25
- | 'innerWrapper'
26
- | 'innerWrapperScroll'
27
- | 'box'
28
- | 'footer'
29
- | 'body'
30
- | 'header'
31
- | 'touchableBackdrop'
32
- | 'box:pose'
33
- | 'title'
34
- | `closeButton${Capitalize<ButtonComposition>}`;
35
-
36
- export type MobileModalComposition =
37
- | MobileModalParts
38
- | `${MobileModalParts}:visible`;
39
-
40
- const createModalStyle = createDefaultVariantFactory<MobileModalComposition>()
41
-
42
- const presets = includePresets((style) => createModalStyle(() => ({ body: style })),
43
- )
44
-
45
- const defaultModalStyles = ModalStyles
46
-
47
- export const MobileModalStyles = {
48
- ...defaultModalStyles,
49
- ...presets,
50
- default: createModalStyle((Theme) => {
51
- const fullSize = {
52
- ...Theme.presets.whole,
53
- position: 'absolute',
54
- width: Theme?.values?.width,
55
- height: Theme?.values?.height,
56
- }
57
-
58
- return {
59
- wrapper: {
60
- zIndex: 1,
61
-
62
- ...fullSize,
63
- },
64
-
65
- overlay: {
66
- opacity: 0,
67
-
68
- backgroundColor: Theme.colors.black,
69
- ...fullSize,
70
- },
71
- 'overlay:visible': {
72
- opacity: 0.5,
73
- },
74
- innerWrapper: {},
75
- innerWrapperScroll: {
76
- display: 'flex',
77
- alignItems: 'center',
78
- ...Theme.presets.justifyCenter,
79
- minHeight: Theme.values.height,
80
- },
81
- box: {
82
- width: '80%',
83
- backgroundColor: Theme.colors.background,
84
- borderRadius: Theme.borderRadius.medium,
85
- ...Theme.spacing.padding(2),
86
- },
87
- touchableBackdrop: {
88
- ...fullSize,
89
- },
90
- 'box:pose': {
91
- opacity: 0,
92
- scale: 0.8,
93
- transition: modalTransition,
94
- },
95
- 'box:pose:visible': {
96
- opacity: 1,
97
- scale: 1,
98
- transition: modalTransition,
99
- },
100
- header: {
101
- flexDirection: 'row',
102
- ...Theme.presets.justifySpaceBetween,
103
- ...Theme.presets.alignCenter,
104
- },
105
- closeButtonWrapper: {
106
- alignSelf: 'center',
107
- ...Theme.spacing.marginLeft('auto'),
108
- },
109
- title: {
110
- ...Theme.presets.textCenter,
111
- ...assignTextStyle('h3')(Theme).text,
112
- ...Theme.spacing.paddingBottom(1),
113
- flex: 1,
114
- },
115
- }
116
- }),
117
- popup: createModalStyle((Theme) => ({})),
118
- }
1
+ import {
2
+ ButtonComposition,
3
+ createDefaultVariantFactory,
4
+ includePresets,
5
+ ModalComposition,
6
+ ModalStyles,
7
+ assignTextStyle,
8
+ } from '@codeleap/common'
9
+
10
+ export const backgroundTransition = {
11
+ duration: 200,
12
+ ease: 'easeOut',
13
+ useNativeDriver: false,
14
+ }
15
+
16
+ export const modalTransition = {
17
+ duration: 150,
18
+ ease: 'easeOut',
19
+ useNativeDriver: false,
20
+ }
21
+
22
+ export type MobileModalParts =
23
+ | 'wrapper'
24
+ | 'overlay'
25
+ | 'innerWrapper'
26
+ | 'innerWrapperScroll'
27
+ | 'box'
28
+ | 'footer'
29
+ | 'body'
30
+ | 'header'
31
+ | 'touchableBackdrop'
32
+ | 'box:pose'
33
+ | 'title'
34
+ | `closeButton${Capitalize<ButtonComposition>}`
35
+
36
+ export type MobileModalComposition =
37
+ | MobileModalParts
38
+ | `${MobileModalParts}:visible`
39
+
40
+ const createModalStyle = createDefaultVariantFactory<MobileModalComposition>()
41
+
42
+ const presets = includePresets((style) => createModalStyle(() => ({ body: style })),
43
+ )
44
+
45
+ const defaultModalStyles = ModalStyles
46
+
47
+ export const MobileModalStyles = {
48
+ ...defaultModalStyles,
49
+ ...presets,
50
+ default: createModalStyle((Theme) => {
51
+ const fullSize = {
52
+ ...Theme.presets.whole,
53
+ position: 'absolute',
54
+ width: Theme?.values?.width,
55
+ height: Theme?.values?.height,
56
+ }
57
+
58
+ return {
59
+ wrapper: {
60
+ zIndex: 1,
61
+
62
+ ...fullSize,
63
+ },
64
+
65
+ overlay: {
66
+ opacity: 0,
67
+
68
+ backgroundColor: Theme.colors.black,
69
+ ...fullSize,
70
+ },
71
+ 'overlay:visible': {
72
+ opacity: 0.5,
73
+ },
74
+ innerWrapper: {},
75
+ innerWrapperScroll: {
76
+ display: 'flex',
77
+ alignItems: 'center',
78
+ ...Theme.presets.justifyCenter,
79
+ minHeight: Theme.values.height,
80
+ },
81
+ box: {
82
+ width: '80%',
83
+ backgroundColor: Theme.colors.background,
84
+ borderRadius: Theme.borderRadius.medium,
85
+ ...Theme.spacing.padding(2),
86
+ },
87
+ touchableBackdrop: {
88
+ ...fullSize,
89
+ },
90
+ 'box:pose': {
91
+ opacity: 0,
92
+ scale: 0.8,
93
+ transition: modalTransition,
94
+ },
95
+ 'box:pose:visible': {
96
+ opacity: 1,
97
+ scale: 1,
98
+ transition: modalTransition,
99
+ },
100
+ header: {
101
+ flexDirection: 'row',
102
+ ...Theme.presets.justifySpaceBetween,
103
+ ...Theme.presets.alignCenter,
104
+ },
105
+ closeButtonWrapper: {
106
+ alignSelf: 'center',
107
+ ...Theme.spacing.marginLeft('auto'),
108
+ },
109
+ title: {
110
+ ...Theme.presets.textCenter,
111
+ ...assignTextStyle('h3')(Theme).text,
112
+ ...Theme.spacing.paddingBottom(1),
113
+ flex: 1,
114
+ },
115
+ }
116
+ }),
117
+ popup: createModalStyle((theme) => ({})),
118
+ fullscreen: createModalStyle((theme) => ({
119
+ overlay: {
120
+ backgroundColor: theme.colors.background,
121
+ },
122
+ 'overlay:visible': {
123
+ opacity: 1,
124
+ },
125
+ box: {
126
+ flex: 1,
127
+ borderRadius: 0,
128
+ width: theme.values.width,
129
+ height: theme.values.height,
130
+ ...theme.presets.center,
131
+ },
132
+ })),
133
+ }
@@ -1,51 +1,58 @@
1
- // @ts-nocheck
2
- import * as React from 'react'
3
- import {
4
- TypeGuards,
5
- } from '@codeleap/common'
6
- import { Icon } from '../Icon'
7
- import { NavigationProps, NavigatorType, PropTypes, TNavigators } from './types'
8
- import { Navigators } from './constants'
9
-
10
-
11
- export const Navigation = <T extends NavigatorType>({type, scenes, ...props}: NavigationProps<T>) => {
12
- const NavigationComponent = Navigators[type] as TNavigators[T]
13
-
14
-
15
- return <NavigationComponent.Navigator {...(props as any)}>
16
- {
17
- Object.entries(scenes).map(([name, content], idx) => {
18
- const isFunction = TypeGuards.isFunction(content)
19
-
20
- let screenProps = {
21
- name,
22
- } as PropTypes[T]['Screen']
23
-
24
- if (isFunction){
25
- screenProps.component = content
26
- } else {
27
- screenProps.component = content?.component?.default || content?.component || content?.default
28
- const nameParts = name.split('.')
29
-
30
- screenProps = {
31
- ...screenProps,
32
- options: (optionProps) => ({
33
- title: nameParts[nameParts.length - 1] || name.replace('.', ''),
34
- tabBarIcon: (style) => <Icon name={content?.icon} style={style}/>,
35
- ...(TypeGuards.isFunction(content.options) ? content.options(optionProps) : content.options),
36
- }),
37
- }
38
- }
39
-
40
- return (
41
- // @ts-ignore
42
- <NavigationComponent.Screen
43
- key={idx}
44
- {...screenProps}
45
-
46
- />
47
- )
48
- })
49
- }
50
- </NavigationComponent.Navigator>
51
- }
1
+ // @ts-nocheck
2
+ import * as React from 'react'
3
+ import {
4
+ TypeGuards,
5
+ } from '@codeleap/common'
6
+ import { Icon } from '../Icon'
7
+ import { NavigationProps, NavigatorType, PropTypes, TNavigators } from './types'
8
+ import { Navigators } from './constants'
9
+
10
+ export const Navigation = <T extends NavigatorType>({ type, scenes, ...props }: NavigationProps<T>) => {
11
+ const NavigationComponent = Navigators[type] as TNavigators[T]
12
+
13
+ const defaultProps = {}
14
+ if (type === 'Tab') {
15
+ defaultProps.screenOptions = { headerShown: false }
16
+ }
17
+ // console.log('render Navigation', { type, scenes, props, defaultProps })
18
+
19
+ return <NavigationComponent.Navigator {...(props as any)} {...defaultProps}>
20
+ {
21
+ Object.entries(scenes).map(([name, content], idx) => {
22
+ const isFunction = TypeGuards.isFunction(content)
23
+
24
+ let screenProps = {
25
+ name,
26
+ } as PropTypes[T]['Screen']
27
+
28
+ if (isFunction) {
29
+ screenProps.component = content
30
+ // console.log('Render NavigationScreen', { scenes, screenProps, content, isFunction }, 'PACKAGES')
31
+ } else {
32
+ screenProps.component = content?.component?.default || content?.component || content?.default
33
+ const nameParts = name.split('.')
34
+ const title = content?.title || nameParts[nameParts.length - 1] || name.replace('.', '')
35
+
36
+ screenProps = {
37
+ ...screenProps,
38
+ options: (optionProps) => ({
39
+ title,
40
+ tabBarIcon: (style) => <Icon name={content?.icon} style={style}/>,
41
+ tabBarIconFocused: content?.iconFocused ? (style) => <Icon name={content?.iconFocused} style={style}/> : null,
42
+ ...(TypeGuards.isFunction(content.options) ? content.options(optionProps) : content.options),
43
+ }),
44
+ }
45
+ // console.log('Render NavigationScreen loop', { scenes, screenProps, content, title, isFunction, props }, 'PACKAGES')
46
+ }
47
+
48
+ return (
49
+ // @ts-ignore
50
+ <NavigationComponent.Screen
51
+ key={idx}
52
+ {...screenProps}
53
+ />
54
+ )
55
+ })
56
+ }
57
+ </NavigationComponent.Navigator>
58
+ }
@@ -1,8 +1,8 @@
1
- // @ts-nocheck
2
- import { createBottomTabNavigator, createDrawerNavigator, createStackNavigator } from '../../modules/reactNavigation'
3
-
4
- export const Navigators = {
5
- Drawer: createDrawerNavigator(),
6
- Stack: createStackNavigator(),
7
- Tab: createBottomTabNavigator(),
8
- }
1
+ // @ts-nocheck
2
+ import { createBottomTabNavigator, createDrawerNavigator, createStackNavigator } from '../../modules/reactNavigation'
3
+
4
+ export const Navigators = {
5
+ Drawer: createDrawerNavigator(),
6
+ Stack: createStackNavigator(),
7
+ Tab: createBottomTabNavigator(),
8
+ }
@@ -1,3 +1,3 @@
1
- export * from './Navigation'
2
- export * from './types'
3
- export * from './utils'
1
+ export * from './Navigation'
2
+ export * from './types'
3
+ export * from './utils'
@@ -1,37 +1,35 @@
1
- import { IconPlaceholder } from '@codeleap/common'
2
- import { Navigators } from './constants'
3
-
4
-
5
- export type TNavigators = typeof Navigators
6
- export type NavigatorType = keyof TNavigators
7
-
8
- export type PropTypes = {
9
- [P in NavigatorType] : {
10
- Screen: Omit<React.ComponentPropsWithRef<TNavigators[P]['Screen']>, 'children'|'name'>
11
- Navigator: Omit<React.ComponentPropsWithRef<TNavigators[P]['Navigator']>, 'children'|'name'>
12
- Group: Omit<React.ComponentPropsWithRef<TNavigators[P]['Group']>, 'children'|'name'>
13
- }
14
- }
15
- export type SceneComponent<K extends NavigatorType> = PropTypes[K]['Screen']['component']
16
- export type SceneOptions<K extends NavigatorType> =
17
- { icon?: IconPlaceholder; default?:SceneComponent<K> } & PropTypes[K]['Screen']
18
- export type Scene<K extends NavigatorType> = SceneComponent<K> | SceneOptions<K>
19
-
20
- export type Scenes<K extends NavigatorType> = {
21
- [x:string] : Scene<K>
22
- }
23
-
24
- export type SceneProps = any
25
-
26
- export type NavigationProps<T extends NavigatorType> = {
27
- type: T
28
- scenes: Scenes<T>
29
- } & PropTypes[T]['Navigator']
30
-
31
-
32
- // export type NavigationStructure = {
33
- // [module:string] : {
34
- // scenes: Scenes,
35
-
36
- // }
37
- // }
1
+ import { IconPlaceholder } from '@codeleap/common'
2
+ import { Navigators } from './constants'
3
+
4
+ export type TNavigators = typeof Navigators
5
+ export type NavigatorType = keyof TNavigators
6
+
7
+ export type PropTypes = {
8
+ [P in NavigatorType] : {
9
+ Screen: Omit<React.ComponentPropsWithRef<TNavigators[P]['Screen']>, 'children'|'name'>
10
+ Navigator: Omit<React.ComponentPropsWithRef<TNavigators[P]['Navigator']>, 'children'|'name'>
11
+ Group: Omit<React.ComponentPropsWithRef<TNavigators[P]['Group']>, 'children'|'name'>
12
+ }
13
+ }
14
+ export type SceneComponent<K extends NavigatorType> = PropTypes[K]['Screen']['component']
15
+ export type SceneOptions<K extends NavigatorType> =
16
+ { icon?: IconPlaceholder; default?:SceneComponent<K> } & PropTypes[K]['Screen']
17
+ export type Scene<K extends NavigatorType> = SceneComponent<K> | SceneOptions<K>
18
+
19
+ export type Scenes<K extends NavigatorType> = {
20
+ [x:string] : Scene<K>
21
+ }
22
+
23
+ export type SceneProps = any
24
+
25
+ export type NavigationProps<T extends NavigatorType> = {
26
+ type: T
27
+ scenes: Scenes<T>
28
+ } & PropTypes[T]['Navigator']
29
+
30
+ // export type NavigationStructure = {
31
+ // [module:string] : {
32
+ // scenes: Scenes,
33
+
34
+ // }
35
+ // }
@@ -1,54 +1,59 @@
1
- import React from 'react'
2
- import { Navigation } from './Navigation'
3
-
4
- export function createAppNavigation(Scenes:any ){
5
- const AllScenes = Object.entries<any>(Scenes).reduce((allScenes, [moduleName, content]) => {
6
-
7
- const subScenes = []
8
-
9
- for (const [name, sceneContent] of Object.entries(content.scenes)){
10
-
11
- subScenes.push(
12
- [`${moduleName}.${name}`, sceneContent],
13
- )
14
- }
15
-
16
- return [
17
- ...allScenes,
18
- ...subScenes,
19
- ]
20
- }, [])
21
-
22
- const AppScenes = Object.fromEntries(AllScenes)
23
-
24
- const SCENES_RESULT = Object.fromEntries(
25
- Object.entries<any>(Scenes)
26
- .map(([S, { _ig_scenes, exclude, type, navigationProps, ...otherProps }]) => {
27
- let filterScenes = null
28
-
29
- if (exclude){
30
- filterScenes = Object.fromEntries(
31
- AllScenes.filter(([path]) => !exclude.some(param => path.startsWith(param))),
32
- )
33
- }
34
-
35
- const Component = () => <Navigation
36
- type={type || 'Stack'}
37
- scenes={filterScenes || AppScenes}
38
- screenOptions={{
39
- headerShown: false,
40
- ...navigationProps?.screenOptions,
41
- }}
42
- {...navigationProps}
43
- />
44
-
45
- return [S, {
46
- ...otherProps,
47
- component: Component,
48
- }]
49
- }),
50
- )
51
-
52
- return SCENES_RESULT
53
- }
54
-
1
+ import React from 'react'
2
+ import { Navigation } from './Navigation'
3
+
4
+ export function createAppNavigation(Scenes:any) {
5
+
6
+ console.log('Creating app navigation', { Scenes }, 'PACKAGES')
7
+
8
+ const AllScenes = Object.entries<any>(Scenes).reduce((allScenes, [moduleName, content]) => {
9
+
10
+ const subScenes = []
11
+
12
+ for (const [name, sceneContent] of Object.entries(content.scenes)) {
13
+ subScenes.push(
14
+ [`${moduleName}.${name}`, sceneContent],
15
+ )
16
+ }
17
+
18
+ return [
19
+ ...allScenes,
20
+ ...subScenes,
21
+ ]
22
+ }, [])
23
+
24
+ const AppScenes = Object.fromEntries(AllScenes)
25
+
26
+ const SCENES_RESULT = Object.fromEntries(
27
+ Object.entries<any>(Scenes)
28
+ .map(([S, { _ig_scenes, exclude, type, navigationProps, ...otherProps }]) => {
29
+ let filterScenes = null
30
+
31
+ if (exclude) {
32
+ filterScenes = Object.fromEntries(
33
+ AllScenes.filter(([path]) => !exclude.some(param => path.startsWith(param))),
34
+ )
35
+ }
36
+
37
+ const Component = () => <Navigation
38
+ type={type || 'Stack'}
39
+ scenes={filterScenes || AppScenes}
40
+ screenOptions={{
41
+ headerShown: false,
42
+ ...navigationProps?.screenOptions,
43
+ }}
44
+ {...navigationProps}
45
+ />
46
+ // console.log('SCENES_RESULT create', { _ig_scenes, exclude, type, navigationProps, otherProps })
47
+
48
+ return [S, {
49
+ ...otherProps,
50
+ component: Component,
51
+ }]
52
+ }),
53
+ )
54
+
55
+ // console.log('SCENES_RESULT', SCENES_RESULT)
56
+
57
+ return SCENES_RESULT
58
+ }
59
+