@fto-consult/expo-ui 6.31.9 → 6.32.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fto-consult/expo-ui",
3
- "version": "6.31.9",
3
+ "version": "6.32.2",
4
4
  "description": "Bibliothèque de composants UI Expo,react-native",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -68,7 +68,7 @@
68
68
  "@expo/html-elements": "^0.5.1",
69
69
  "@expo/vector-icons": "^13.0.0",
70
70
  "@faker-js/faker": "^8.0.2",
71
- "@fto-consult/common": "^3.32.9",
71
+ "@fto-consult/common": "^3.33.0",
72
72
  "@pchmn/expo-material3-theme": "^1.3.1",
73
73
  "@react-native-async-storage/async-storage": "1.18.2",
74
74
  "@react-native-community/datetimepicker": "7.2.0",
@@ -947,7 +947,7 @@ class DropdownComponent extends AppComponent {
947
947
 
948
948
  let restProps = {};
949
949
  if(!isMob){
950
- restProps.handleScroll = false;
950
+ restProps.withScrollView = false;
951
951
  restProps.sameWidth = true;
952
952
  } else {
953
953
  restProps.fullScreen = true;
@@ -0,0 +1,25 @@
1
+ import SelectField from "./SelectField";
2
+ import SelectFontIcon from "$ecomponents/Icon/SelectFontIcon";
3
+
4
+ export default class FormFieldSelectFontIcon extends SelectField{
5
+ _render (props){
6
+ return <SelectFontIcon
7
+ {...props}
8
+ ref = {(el)=>{
9
+ this._field = el;
10
+ }}
11
+ onMount = {({context})=>{
12
+ this._field = context;
13
+ }}
14
+ onChange = {(args)=>{
15
+ this.validateWithCallOnChange(args);
16
+ if(typeof props.onChange =='function'){
17
+ props.onChange(args);
18
+ }
19
+ }}
20
+ />
21
+ }
22
+ }
23
+ FormFieldSelectFontIcon.propTypes = {
24
+ ...SelectField.propTypes,
25
+ }
@@ -19,6 +19,7 @@ import "$cutils";
19
19
  import React from "$react";
20
20
  import SelectDateFormat from "./SelectDateFormat";
21
21
  import CurrencyFormat from "./CurrencyFormat";
22
+ import SelectFontIcon from "./SelectFontIcon"
22
23
 
23
24
  const defFormFields = {
24
25
  Field,
@@ -41,6 +42,7 @@ const defFormFields = {
41
42
  ,Tel
42
43
  ,SelectDateFormat
43
44
  ,Html
45
+ ,SelectFontIcon,
44
46
  }
45
47
 
46
48
  export default defFormFields;
@@ -65,7 +67,8 @@ export {
65
67
  ,Image
66
68
  ,Tel
67
69
  ,SelectDateFormat
68
- ,Html
70
+ ,Html,
71
+ SelectFontIcon,
69
72
  }
70
73
 
71
74
  export const extendFields = (fields)=>{
@@ -29,6 +29,7 @@ export const getComponentTypes = ()=>{
29
29
  schedule : Fields.Scheduler,
30
30
  scheduler : Fields.Scheduler,
31
31
  default : Fields.TextField,
32
+ selecticon : Fields.SelectFontIcon,
32
33
  ...Fields,
33
34
  };
34
35
  }
@@ -38,33 +38,19 @@ const FontIcon = React.forwardRef(({icon,name,testID,color,iconColor,iconStyle,b
38
38
  const fStyle = StyleSheet.flatten(style) || {};
39
39
  color = theme.Colors.isValid(color)? color : Colors.isValid(iconColor)?iconColor : fStyle.color || theme.colors.text;
40
40
  backgroundColor = theme.Colors.isValid(backgroundColor)? backgroundColor : fStyle.backgroundColor || 'transparent';
41
- const isMaterial = isIcon(name,"material");
42
- const isFa = isIcon(name,"fa");
43
- const isAnt = isIcon(name,"ant");
44
- const isFontisto = isIcon(name,"fontisto");
45
- const isFoundation = isIcon(name,"foundation");
46
- const isIonicons = isIcon(name,"ionic");
47
- const isOcticons = isIcon(name,"octicons");
48
- const isSimpleLineIcons = isIcon(name,"simple-line");
49
- const isZocial = isIcon(name,"zocial");
50
- let Icon = isMaterial ? MaterialIcons :
51
- isFa ? FontAwesome5 :
52
- isFontisto ? Fontisto :
53
- isAnt ? AntDesign :
54
- isFoundation ? Foundation :
55
- isIonicons ? Ionicons :
56
- isOcticons ? Octicons:
57
- isSimpleLineIcons ? SimpleLineIcons :
58
- isZocial ? Zocial :
59
- MaterialCommunityIcons;
41
+ let Icon = MaterialCommunityIcons,iconSetName = "";
42
+ for(let i in IconsSetsByPrefix){
43
+ if(isIcon(name,i)){
44
+ iconSetName = i;
45
+ Icon = fontsObjects[IconsSetsByPrefix[i]] || Icon;
46
+ break;
47
+ }
48
+ }
60
49
  if(!icon || !Icon){
61
50
  console.warn("Icone non définie pour le composant FontIcon, icon [{0}], merci de spécifier une icone supportée par la liste du module https://github.com/expo/vector-icons/MaterialCommunityIcons".sprintf(icon),props);
62
51
  return null;
63
52
  }
64
- const iconName = icon.ltrim("material-")
65
- .ltrim("fa-").ltrim("ant-").ltrim("fontisto-")
66
- .ltrim("foundation-").ltrim("ionic-").ltrim("octicons-")
67
- .ltrim("simple-line-").ltrim("zocial-").trim();
53
+ const iconName = icon.trim().ltrim(iconSetName+"-").ltrim("-").trim();
68
54
  return <Icon {...props}
69
55
  ref = {ref}
70
56
  testID = {testID}
@@ -102,26 +88,39 @@ export const isIcon = (name,iconSet)=>{
102
88
  }
103
89
 
104
90
  export default theme.withStyles(FontIcon,{displayName:FontIcon.displayName,mode:'normal'});
105
- export const fonts = [
106
- MaterialCommunityIcons.font,
107
- FontAwesome5.font,
108
- AntDesign.font,
109
- Fontisto.font,
110
- Foundation.font,
111
- Ionicons.font,
112
- MaterialIcons.font,
113
- Octicons.font,
114
- SimpleLineIcons.font,
115
- Zocial.font,
116
- ];
117
- export const fontsNames = {};
118
- Object.map(fonts,(f,k)=>{
119
- if(isObj(f)){
120
- for(let i in f){
121
- fontsNames[i] = true;
122
- }
123
- }
124
- });
91
+
92
+ export const fontsObjects = {
93
+ MaterialCommunityIcons,
94
+ FontAwesome5,
95
+ AntDesign,
96
+ Fontisto,
97
+ Foundation,
98
+ Ionicons,
99
+ MaterialIcons,
100
+ Octicons,
101
+ SimpleLineIcons,
102
+ Zocial,
103
+ }
104
+ export const fonts = Object.values(fontsObjects).map(f=>f.font);
105
+ export const fontsByIndex = Object.keys(fontsObjects);
106
+
107
+ /*** les prefix des icons sets */
108
+ export const IconsSetsByPrefix = {
109
+ material : "MaterialIcons",
110
+ fa : "FontAwesome5",
111
+ ant : "AntDesign",
112
+ foundation : "Foundation",
113
+ fontisto : "Fontisto",
114
+ ionic : "Ionicons",
115
+ octicons : "Octicons",
116
+ 'simple-line' : "SimpleLineIcons",
117
+ zocial : "Zocial",
118
+ }
119
+ export const IconsSetNamesToPrefix = {};
120
+ Object.keys(IconsSetsByPrefix).map((k)=>{
121
+ IconsSetNamesToPrefix[IconsSetsByPrefix[k]] = k;
122
+ })
123
+ export const loadedIconsSetsNames = [];
125
124
 
126
125
  /*** chage les fonts liés à l'application
127
126
  * @param {function} filter, le filtre prenant en paramètr ele fontAsset en suite et le nom de la font en question
@@ -129,14 +128,33 @@ Object.map(fonts,(f,k)=>{
129
128
  */
130
129
  export function loadFonts(filter) {
131
130
  filter = typeof filter =='function'? filter : (f,name,nameLower)=> name.toLowerCase().contains("material") ? true : false;
132
- return Promise.all(fonts.map(font => {
131
+ return Promise.all(fonts.map((font,index) => {
133
132
  if(!isObj(font)) return Promise.reject({message:'Invalid font'});
133
+ const iconSetName = fontsByIndex[index];
134
134
  const fontName = Object.keys(font)[0]?.toLowerCase();
135
- if(!isNonNullString(fontName) || !fontsNames[fontName] || !filter(font,fontName,fontName.toLowerCase)) return Promise.resolve({
135
+ const iconSetNameLower = iconSetName.toLocaleLowerCase();
136
+ if(!isNonNullString(fontName) || (!iconSetNameLower.toLowerCase().contains("material") && !filter(font,iconSetName,iconSetNameLower))) return Promise.resolve({
136
137
  status : false,
137
138
  message : 'Font {0} introuvable'.sprintf(fontName)
138
139
  });
139
- return FontAsset.loadAsync(font);
140
- }))
140
+ return FontAsset.loadAsync(font).then((f)=>{
141
+ loadedIconsSetsNames.push(iconSetName);
142
+ return f;
143
+ });
144
+ }));
141
145
  };
142
-
146
+
147
+ /*** retourne la liste des icones qui ont été chargées par l'application */
148
+ export const getLoadedIconsSets = ()=>{
149
+ const loadedIconsSets = {};
150
+ loadedIconsSetsNames.map((iconSetName)=>{
151
+ loadedIconsSets[iconSetName] = {
152
+ prefix : IconsSetNamesToPrefix[iconSetName] || '',
153
+ iconSetName,
154
+ icons : isObj(fontsObjects[iconSetName]?.glyphMap)? Object.keys(fontsObjects[iconSetName]?.glyphMap) : []
155
+ };
156
+ });
157
+ return loadedIconsSets
158
+ }
159
+
160
+ export const getLoadedFonts = x=> loadedFontsRef.current;
@@ -0,0 +1,74 @@
1
+ import React from "$react";
2
+ import Dropdown from "$ecomponents/Dropdown";
3
+ import {defaultObj,defaultVal,isNonNullString} from "$cutils";
4
+ import PropTypes from "prop-types";
5
+ import {getLoadedIconsSets} from "./Font";
6
+ import {View} from "react-native";
7
+ import Icon from "./Icon";
8
+ import Label from "$ecomponents/Label";
9
+ import theme from "$theme";
10
+ import {copyTextToClipboard} from "$clipboard/utils";
11
+ import { StyleSheet } from "react-native";
12
+
13
+ const SelectFontIconComponent = React.forwardRef((props,ref)=>{
14
+ const items = React.useMemo(()=>{
15
+ const sets = getLoadedIconsSets();
16
+ const items = [];
17
+ Object.map(sets,({prefix,iconSetName,icons})=>{
18
+ prefix = typeof prefix =='string'? prefix.trim() : "";
19
+ if(prefix){
20
+ prefix = prefix.rtrim("-")+"-"
21
+ }
22
+ icons.map((icon)=>{
23
+ if(!isNonNullString(icon)) return;
24
+ icon = icon.trim();
25
+ items.push({
26
+ realIcon : icon,
27
+ iconSetName,
28
+ icon : `${prefix}${icon.trim().ltrim("-")}`,
29
+ })
30
+ });
31
+ })
32
+ return items;
33
+ },[])
34
+ return <Dropdown
35
+ dialogProps = {{title:'Sélectionner une icone'}}
36
+ {...props}
37
+ type = {'select'}
38
+ items ={items}
39
+ getItemValue ={({item})=>item.icon}
40
+ renderText = {({item})=>item.icon}
41
+ renderItem = {({item})=>{
42
+ const {icon,iconSetName} = item;
43
+ return <View testID="RN_SELECTFontIconContainer" style={[theme.styles.row,styles.content,theme.styles.justifyContentSpaceBetween,theme.styles.alignItemsCenter]}>
44
+ <View style={[theme.styles.row,theme.styles.justifyContentFlexStart,theme.styles.alignItemsCenter]}>
45
+ <Icon size={35} primary name={icon}/>
46
+ <View>
47
+ <Label textBold>{icon}</Label>
48
+ <Label>{iconSetName}</Label>
49
+ </View>
50
+ </View>
51
+ <Icon size={25} name="content-copy" title={`Copier la valeur [${icon}] dans le presse papier`} onPress={(e)=>{
52
+ copyTextToClipboard(icon);
53
+ }}/>
54
+ </View>
55
+ }}
56
+ />
57
+ })
58
+
59
+ SelectFontIconComponent.displayName ="SelectFontIconComponent";
60
+
61
+ export default SelectFontIconComponent;
62
+
63
+ SelectFontIconComponent.propTypes = {
64
+ ...Dropdown.propTypes,
65
+ imageProps : PropTypes.object, ///les props à appliquer aux images affichées
66
+ }
67
+
68
+ const styles = StyleSheet.create({
69
+ content : {
70
+ flexGrow : 1,
71
+ }
72
+ })
73
+
74
+
@@ -253,7 +253,7 @@ class _Menu extends AppComponent {
253
253
  children,
254
254
  statusBarHeight,
255
255
  onDismiss,
256
- handleScroll:canHandleScroll,
256
+ withScrollView:canHandleScroll,
257
257
  overlayAccessibilityLabel,
258
258
  sameWidth,
259
259
  minWidth:customMinWidth,
@@ -324,7 +324,7 @@ class _Menu extends AppComponent {
324
324
  left = windowLayout.width - SCREEN_INDENT - menuLayout.width;
325
325
  }
326
326
  }
327
- const handleScroll = canHandleScroll !== false? true : false;
327
+ const withScrollView = canHandleScroll !== false? true : false;
328
328
 
329
329
  // If the menu is larger than available vertical space,
330
330
  // calculate the height of scrollable view
@@ -342,7 +342,7 @@ class _Menu extends AppComponent {
342
342
  top <= windowLayout.height - top
343
343
  ) {
344
344
  // Scrollable menu should be below the anchor (expands downwards)
345
- if(handleScroll){
345
+ if(withScrollView){
346
346
  scrollableMenuHeight =
347
347
  windowLayout.height - top - SCREEN_INDENT - additionalVerticalValue;
348
348
  }
@@ -363,14 +363,14 @@ class _Menu extends AppComponent {
363
363
  additionalVerticalValue
364
364
  ) {
365
365
  // Scrollable menu should be above the anchor (expands upwards)
366
- if(handleScroll){
366
+ if(withScrollView){
367
367
  scrollableMenuHeight =
368
368
  top + anchorLayout.height - SCREEN_INDENT + additionalVerticalValue;
369
369
  }
370
370
  }
371
371
 
372
372
  // Scrollable menu max height
373
- if(handleScroll){
373
+ if(withScrollView){
374
374
  scrollableMenuHeight = scrollableMenuHeight > windowLayout.height - 2 * SCREEN_INDENT
375
375
  ? windowLayout.height - 2 * SCREEN_INDENT
376
376
  : scrollableMenuHeight;
@@ -435,7 +435,7 @@ class _Menu extends AppComponent {
435
435
  opacity: opacityAnimation,
436
436
  transform: scaleTransforms,
437
437
  borderRadius: theme.roundness,
438
- ...(scrollableMenuHeight && handleScroll ? { height: scrollableMenuHeight } : {}),
438
+ ...(scrollableMenuHeight && withScrollView ? { height: scrollableMenuHeight } : {}),
439
439
  };
440
440
 
441
441
  //- (sameWidth ? anchorLayout.height : 0)
@@ -537,7 +537,7 @@ export default Menu;
537
537
 
538
538
  Menu.propTypes = {
539
539
  minWidth : PropTypes.number,///la longueur minimale du menu
540
- handleScroll : PropTypes.bool, //si le contenu est scrollable
540
+ withScrollView : PropTypes.bool, //si le contenu est scrollable
541
541
  /**
542
542
  * Whether the _Menu is currently visible.
543
543
  */
@@ -202,7 +202,7 @@ const SimpleSelect = React.forwardRef((props,ref)=>{
202
202
  dialogProps = defaultObj(dialogProps);
203
203
  let rProps = {};
204
204
  if(!isMob){
205
- rProps.handleScroll = false;
205
+ rProps.withScrollView = false;
206
206
  } else {
207
207
  rProps = {
208
208
  ...dialogProps,
@@ -1 +1 @@
1
- module.exports = {"@fto-consult/expo-ui":{"name":"@fto-consult/expo-ui","version":"6.31.2","repository":{"type":"git","url":"git+https://github.com/borispipo/expo-ui.git"},"homepage":"https://github.com/borispipo/expo-ui#readme"},"@emotion/native":{"version":"11.11.0","url":"https://emotion.sh","license":"MIT"},"@emotion/react":{"version":"11.11.1","url":"https://github.com/emotion-js/emotion/tree/main/packages/react","license":"MIT"},"@expo/html-elements":{"version":"0.5.1","url":"https://github.com/expo/expo/tree/main/packages/html-elements","license":"MIT"},"@expo/metro-config":{"version":"0.10.7","url":"https://github.com/expo/expo.git","license":"MIT"},"@expo/vector-icons":{"version":"13.0.0","url":"https://expo.github.io/vector-icons","license":"MIT"},"@expo/webpack-config":{"version":"19.0.0","url":"https://github.com/expo/expo-cli.git","license":"MIT"},"@faker-js/faker":{"version":"8.0.2","url":"https://github.com/faker-js/faker.git","license":"MIT"},"@fto-consult/common":{"version":"3.32.9","url":"https://github.com/borispipo/common#readme","license":"ISC"},"@pchmn/expo-material3-theme":{"version":"1.3.1","url":"https://github.com/pchmn/expo-material3-theme#readme","license":"MIT"},"@react-native-async-storage/async-storage":{"version":"1.18.2","url":"https://github.com/react-native-async-storage/async-storage#readme","license":"MIT"},"@react-native-community/datetimepicker":{"version":"7.2.0","url":"https://github.com/react-native-community/datetimepicker#readme","license":"MIT"},"@react-native-community/netinfo":{"version":"9.3.10","url":"https://github.com/react-native-netinfo/react-native-netinfo#readme","license":"MIT"},"@react-native/assets-registry":{"version":"0.72.0","url":"git@github.com:facebook/react-native.git","license":"MIT"},"@react-navigation/native":{"version":"6.1.7","url":"https://reactnavigation.org","license":"MIT"},"@react-navigation/native-stack":{"version":"6.9.13","url":"https://github.com/software-mansion/react-native-screens#readme","license":"MIT"},"@shopify/flash-list":{"version":"1.4.3","url":"https://shopify.github.io/flash-list/","license":"MIT"},"apexcharts":{"version":"3.42.0","url":"https://apexcharts.com","license":"MIT"},"babel-plugin-inline-dotenv":{"version":"1.7.0","url":"https://github.com/brysgo/babel-plugin-inline-dotenv#readme","license":"ISC"},"babel-plugin-module-resolver":{"version":"5.0.0","url":"https://github.com/tleunen/babel-plugin-module-resolver.git","license":"MIT"},"expo":{"version":"49.0.9","url":"https://github.com/expo/expo/tree/main/packages/expo","license":"MIT"},"expo-camera":{"version":"13.4.2","url":"https://docs.expo.dev/versions/latest/sdk/camera/","license":"MIT"},"expo-clipboard":{"version":"4.3.1","url":"https://docs.expo.dev/versions/latest/sdk/clipboard","license":"MIT"},"expo-font":{"version":"11.4.0","url":"https://docs.expo.dev/versions/latest/sdk/font/","license":"MIT"},"expo-image-picker":{"version":"14.3.2","url":"https://docs.expo.dev/versions/latest/sdk/imagepicker/","license":"MIT"},"expo-linking":{"version":"5.0.2","url":"https://docs.expo.dev/versions/latest/sdk/linking","license":"MIT"},"expo-sqlite":{"version":"11.3.2","url":"https://docs.expo.dev/versions/latest/sdk/sqlite/","license":"MIT"},"expo-status-bar":{"version":"1.6.0","url":"https://docs.expo.dev/versions/latest/sdk/status-bar/","license":"MIT"},"expo-system-ui":{"version":"2.4.0","url":"https://docs.expo.dev/versions/latest/sdk/system-ui","license":"MIT"},"expo-web-browser":{"version":"12.3.2","url":"https://docs.expo.dev/versions/latest/sdk/webbrowser/","license":"MIT"},"file-saver":{"version":"2.0.5","url":"https://github.com/eligrey/FileSaver.js#readme","license":"MIT"},"fs-extra":{"version":"11.1.1","url":"https://github.com/jprichardson/node-fs-extra","license":"MIT"},"google-libphonenumber":{"version":"3.2.33","url":"https://ruimarinho.github.io/google-libphonenumber/","license":"(MIT AND Apache-2.0)"},"htmlparser2-without-node-native":{"version":"3.9.2","url":"git://github.com/fb55/htmlparser2.git","license":"MIT"},"pdfmake":{"version":"0.2.7","url":"http://pdfmake.org","license":"MIT"},"process":{"version":"0.11.10","url":"git://github.com/shtylman/node-process.git","license":"MIT"},"prop-types":{"version":"15.8.1","url":"https://facebook.github.io/react/","license":"MIT"},"react":{"version":"18.2.0","url":"https://reactjs.org/","license":"MIT"},"react-content-loader":{"version":"6.2.1","url":"https://github.com/danilowoz/react-content-loader","license":"MIT"},"react-dom":{"version":"18.2.0","url":"https://reactjs.org/","license":"MIT"},"react-native":{"version":"0.72.4","license":"MIT"},"react-native-big-list":{"version":"1.6.1","url":"https://marcocesarato.github.io/react-native-big-list-docs/","license":"GPL-3.0-or-later"},"react-native-blob-util":{"version":"0.18.6","url":"https://github.com/RonRadtke/react-native-blob-util","license":"MIT"},"react-native-gesture-handler":{"version":"2.12.1","url":"https://github.com/software-mansion/react-native-gesture-handler#readme","license":"MIT"},"react-native-iphone-x-helper":{"version":"1.3.1","url":"https://github.com/ptelad/react-native-iphone-x-helper#readme","license":"MIT"},"react-native-mime-types":{"version":"2.4.0","license":"MIT"},"react-native-paper":{"version":"5.10.4","url":"https://callstack.github.io/react-native-paper","license":"MIT"},"react-native-paper-dates":{"version":"0.18.26","url":"https://github.com/web-ridge/react-native-paper-dates#readme","license":"MIT"},"react-native-reanimated":{"version":"3.3.0","url":"https://github.com/software-mansion/react-native-reanimated#readme","license":"MIT"},"react-native-safe-area-context":{"version":"4.6.3","url":"https://github.com/th3rdwave/react-native-safe-area-context#readme","license":"MIT"},"react-native-screens":{"version":"3.22.1","url":"https://github.com/software-mansion/react-native-screens#readme","license":"MIT"},"react-native-svg":{"version":"13.9.0","url":"https://github.com/react-native-community/react-native-svg","license":"MIT"},"react-native-web":{"version":"0.19.7","url":"git://github.com/necolas/react-native-web.git","license":"MIT"},"react-native-webview":{"version":"13.2.2","url":"https://github.com/react-native-webview/react-native-webview#readme","license":"MIT"},"react-virtuoso":{"version":"4.5.1","url":"https://virtuoso.dev/","license":"MIT"},"sharp-cli":{"version":"4.1.1","url":"https://github.com/vseventer/sharp-cli","license":"MIT"},"tippy.js":{"version":"6.3.7","url":"https://atomiks.github.io/tippyjs/","license":"MIT"},"uninstall":{"version":"0.0.0","license":"MIT"},"websql":{"version":"2.0.3","url":"git://github.com/nolanlawson/node-websql.git","license":"Apache-2.0"},"xlsx":{"version":"0.18.5","url":"https://sheetjs.com/","license":"Apache-2.0"}};
1
+ module.exports = {"@fto-consult/expo-ui":{"name":"@fto-consult/expo-ui","version":"6.31.9","repository":{"type":"git","url":"git+https://github.com/borispipo/expo-ui.git"},"homepage":"https://github.com/borispipo/expo-ui#readme"},"@emotion/native":{"version":"11.11.0","url":"https://emotion.sh","license":"MIT"},"@emotion/react":{"version":"11.11.1","url":"https://github.com/emotion-js/emotion/tree/main/packages/react","license":"MIT"},"@expo/html-elements":{"version":"0.5.1","url":"https://github.com/expo/expo/tree/main/packages/html-elements","license":"MIT"},"@expo/metro-config":{"version":"0.10.7","url":"https://github.com/expo/expo.git","license":"MIT"},"@expo/vector-icons":{"version":"13.0.0","url":"https://expo.github.io/vector-icons","license":"MIT"},"@expo/webpack-config":{"version":"19.0.0","url":"https://github.com/expo/expo-cli.git","license":"MIT"},"@faker-js/faker":{"version":"8.0.2","url":"https://github.com/faker-js/faker.git","license":"MIT"},"@fto-consult/common":{"version":"3.32.9","url":"https://github.com/borispipo/common#readme","license":"ISC"},"@pchmn/expo-material3-theme":{"version":"1.3.1","url":"https://github.com/pchmn/expo-material3-theme#readme","license":"MIT"},"@react-native-async-storage/async-storage":{"version":"1.18.2","url":"https://github.com/react-native-async-storage/async-storage#readme","license":"MIT"},"@react-native-community/datetimepicker":{"version":"7.2.0","url":"https://github.com/react-native-community/datetimepicker#readme","license":"MIT"},"@react-native-community/netinfo":{"version":"9.3.10","url":"https://github.com/react-native-netinfo/react-native-netinfo#readme","license":"MIT"},"@react-native/assets-registry":{"version":"0.72.0","url":"git@github.com:facebook/react-native.git","license":"MIT"},"@react-navigation/native":{"version":"6.1.7","url":"https://reactnavigation.org","license":"MIT"},"@react-navigation/native-stack":{"version":"6.9.13","url":"https://github.com/software-mansion/react-native-screens#readme","license":"MIT"},"@shopify/flash-list":{"version":"1.4.3","url":"https://shopify.github.io/flash-list/","license":"MIT"},"apexcharts":{"version":"3.42.0","url":"https://apexcharts.com","license":"MIT"},"babel-plugin-inline-dotenv":{"version":"1.7.0","url":"https://github.com/brysgo/babel-plugin-inline-dotenv#readme","license":"ISC"},"babel-plugin-module-resolver":{"version":"5.0.0","url":"https://github.com/tleunen/babel-plugin-module-resolver.git","license":"MIT"},"expo":{"version":"49.0.9","url":"https://github.com/expo/expo/tree/main/packages/expo","license":"MIT"},"expo-camera":{"version":"13.4.2","url":"https://docs.expo.dev/versions/latest/sdk/camera/","license":"MIT"},"expo-clipboard":{"version":"4.3.1","url":"https://docs.expo.dev/versions/latest/sdk/clipboard","license":"MIT"},"expo-font":{"version":"11.4.0","url":"https://docs.expo.dev/versions/latest/sdk/font/","license":"MIT"},"expo-image-picker":{"version":"14.3.2","url":"https://docs.expo.dev/versions/latest/sdk/imagepicker/","license":"MIT"},"expo-linking":{"version":"5.0.2","url":"https://docs.expo.dev/versions/latest/sdk/linking","license":"MIT"},"expo-sqlite":{"version":"11.3.2","url":"https://docs.expo.dev/versions/latest/sdk/sqlite/","license":"MIT"},"expo-status-bar":{"version":"1.6.0","url":"https://docs.expo.dev/versions/latest/sdk/status-bar/","license":"MIT"},"expo-system-ui":{"version":"2.4.0","url":"https://docs.expo.dev/versions/latest/sdk/system-ui","license":"MIT"},"expo-web-browser":{"version":"12.3.2","url":"https://docs.expo.dev/versions/latest/sdk/webbrowser/","license":"MIT"},"file-saver":{"version":"2.0.5","url":"https://github.com/eligrey/FileSaver.js#readme","license":"MIT"},"fs-extra":{"version":"11.1.1","url":"https://github.com/jprichardson/node-fs-extra","license":"MIT"},"google-libphonenumber":{"version":"3.2.33","url":"https://ruimarinho.github.io/google-libphonenumber/","license":"(MIT AND Apache-2.0)"},"htmlparser2-without-node-native":{"version":"3.9.2","url":"git://github.com/fb55/htmlparser2.git","license":"MIT"},"pdfmake":{"version":"0.2.7","url":"http://pdfmake.org","license":"MIT"},"process":{"version":"0.11.10","url":"git://github.com/shtylman/node-process.git","license":"MIT"},"prop-types":{"version":"15.8.1","url":"https://facebook.github.io/react/","license":"MIT"},"react":{"version":"18.2.0","url":"https://reactjs.org/","license":"MIT"},"react-content-loader":{"version":"6.2.1","url":"https://github.com/danilowoz/react-content-loader","license":"MIT"},"react-dom":{"version":"18.2.0","url":"https://reactjs.org/","license":"MIT"},"react-native":{"version":"0.72.4","license":"MIT"},"react-native-big-list":{"version":"1.6.1","url":"https://marcocesarato.github.io/react-native-big-list-docs/","license":"GPL-3.0-or-later"},"react-native-blob-util":{"version":"0.18.6","url":"https://github.com/RonRadtke/react-native-blob-util","license":"MIT"},"react-native-gesture-handler":{"version":"2.12.1","url":"https://github.com/software-mansion/react-native-gesture-handler#readme","license":"MIT"},"react-native-iphone-x-helper":{"version":"1.3.1","url":"https://github.com/ptelad/react-native-iphone-x-helper#readme","license":"MIT"},"react-native-mime-types":{"version":"2.4.0","license":"MIT"},"react-native-paper":{"version":"5.10.4","url":"https://callstack.github.io/react-native-paper","license":"MIT"},"react-native-paper-dates":{"version":"0.18.26","url":"https://github.com/web-ridge/react-native-paper-dates#readme","license":"MIT"},"react-native-reanimated":{"version":"3.3.0","url":"https://github.com/software-mansion/react-native-reanimated#readme","license":"MIT"},"react-native-safe-area-context":{"version":"4.6.3","url":"https://github.com/th3rdwave/react-native-safe-area-context#readme","license":"MIT"},"react-native-screens":{"version":"3.22.1","url":"https://github.com/software-mansion/react-native-screens#readme","license":"MIT"},"react-native-svg":{"version":"13.9.0","url":"https://github.com/react-native-community/react-native-svg","license":"MIT"},"react-native-web":{"version":"0.19.7","url":"git://github.com/necolas/react-native-web.git","license":"MIT"},"react-native-webview":{"version":"13.2.2","url":"https://github.com/react-native-webview/react-native-webview#readme","license":"MIT"},"react-virtuoso":{"version":"4.5.1","url":"https://virtuoso.dev/","license":"MIT"},"sharp-cli":{"version":"4.1.1","url":"https://github.com/vseventer/sharp-cli","license":"MIT"},"tippy.js":{"version":"6.3.7","url":"https://atomiks.github.io/tippyjs/","license":"MIT"},"uninstall":{"version":"0.0.0","license":"MIT"},"websql":{"version":"2.0.3","url":"git://github.com/nolanlawson/node-websql.git","license":"Apache-2.0"},"xlsx":{"version":"0.18.5","url":"https://sheetjs.com/","license":"Apache-2.0"}};