@fto-consult/expo-ui 8.71.0 → 8.73.0
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/bin/create-app/dependencies.js +3 -3
- package/package.json +4 -4
- package/src/components/BottomSheet/Sheet.js +1 -1
- package/src/components/Button/Status.js +10 -1
- package/src/components/Datagrid/Accordion/index.js +1 -1
- package/src/components/Dialog/Dialog.js +5 -2
- package/src/components/DocumentPicker/index.js +111 -7
- package/src/components/Dropdown/index.js +35 -23
- package/src/components/Form/Fields/DocumentPicker.js +63 -0
- package/src/components/Form/Fields/Field.js +4 -6
- package/src/components/Form/Fields/Image.js +3 -22
- package/src/components/Form/Fields/SelectField.js +1 -1
- package/src/components/Form/Fields/SelectTableData/Component.js +23 -6
- package/src/components/Form/Fields/index.js +3 -1
- package/src/components/Form/FormData/componentsTypes.js +1 -0
- package/src/components/Form/utils/FormsManager.js +11 -5
- package/src/components/List/hooks.js +2 -2
- package/src/components/Menu/Menu.js +5 -3
- package/src/components/TableLink/index.js +8 -3
- package/src/layouts/Screen/TableData.js +1 -2
- package/src/media/Assets/utils.js +9 -2
- package/src/screens/Help/openLibraries.js +81 -124
- package/src/table-data/importer/parser.js +1824 -0
- package/src/{importer → table-data/importer}/run.js +0 -1
- /package/src/{importer → table-data/importer}/getSelectFieldValue.js +0 -0
- /package/src/{importer → table-data/importer}/index.js +0 -0
- /package/src/{importer → table-data/importer}/parseCSV.js +0 -0
- /package/src/{importer → table-data/importer}/validate.js +0 -0
@@ -81,7 +81,6 @@ const TableDataSelectField = React.forwardRef(({foreignKeyColumn,swrOptions,fore
|
|
81
81
|
defaultFields.push(foreignKeyLabel);
|
82
82
|
}
|
83
83
|
const foreignKeyColumnValue = props.defaultValue;
|
84
|
-
const defaultValueRef = React.useRef(props.multiple ? Object.toArray(foreignKeyColumnValue) : foreignKeyColumnValue);
|
85
84
|
let isDisabled = defaultBool(props.disabled,props.readOnly,false);
|
86
85
|
if(!isDisabled && props.readOnly === true){
|
87
86
|
isDisabled = true;
|
@@ -112,17 +111,26 @@ const TableDataSelectField = React.forwardRef(({foreignKeyColumn,swrOptions,fore
|
|
112
111
|
const fetchItemsRef = React.useRef(customFetchItem);
|
113
112
|
fetchItemsRef.current = customFetchItem;
|
114
113
|
swrOptions = Object.assign({},swrOptions);
|
114
|
+
const itemsRef = React.useRef([]);
|
115
|
+
const restOptionsRef = React.useRef({});
|
116
|
+
const fetchedResultRef = React.useRef({});
|
117
|
+
const isMountedRef = React.useRef(false);
|
115
118
|
///@see : https://swr.vercel.app/docs/revalidation#disable-automatic-revalidations
|
116
119
|
const canDisable = isFilter || isDisabled;
|
117
120
|
swrOptions.revalidateOnFocus = canDisable? false : typeof swrOptions.revalidateOnFocus === "boolean" ? swrOptions.revalidateOnFocus : false;
|
121
|
+
swrOptions.revalidateOnMount = typeof swrOptions.revalidateOnMount =="boolean"? swrOptions.revalidateOnMount : true;
|
118
122
|
swrOptions.revalidateIfStale = canDisable? false : typeof swrOptions.revalidateIfStale ==="boolean"? swrOptions.revalidateIfStale : false;
|
119
123
|
swrOptions.revalidateOnReconnect = canDisable ? false : typeof swrOptions.revalidateOnReconnect ==="boolean"? swrOptions.revalidateOnReconnect : false;
|
120
124
|
swrOptions.refreshWhenHidden = canDisable ? false : typeof swrOptions.refreshWhenHidden =="boolean"? swrOptions.refreshWhenHidden : false;
|
125
|
+
swrOptions.dedupingInterval = canDisable ? 24*60*1000 : typeof swrOptions.dedupingInterval ==="number"? dedupingInterval : isMountedRef.current ? 60*1000:undefined;
|
121
126
|
if(canDisable){
|
122
127
|
swrOptions.refreshInterval = 30000*1000*60;
|
123
128
|
}
|
124
|
-
|
125
|
-
|
129
|
+
if(canDisable || typeof swrOptions.isVisible !="function"){
|
130
|
+
swrOptions.isVisible = () =>{
|
131
|
+
return canDisable ? false : !!!Object.size(itemsRef.current,true); //on rafraichit au focus uniquement lorsque la liste des items est vide
|
132
|
+
};
|
133
|
+
}
|
126
134
|
restOptionsRef.current = {foreignKeyTable,foreignKeyColumn,foreignKeyLabel,foreignKeyColumnValue,sort,sortColumn,sortDir,foreignKeyTableObj:fKeyTable};
|
127
135
|
const queryPathKey = isNonNullString(queryPath) ? setQueryParams(queryPath,{isstabledata:1,"stabledathkey":hashKey,foreignKeyColumn:defaultStr(foreignKeyColumn).toLowerCase()}) : null;
|
128
136
|
const onFetchItemsRef = React.useRef();
|
@@ -131,6 +139,8 @@ const TableDataSelectField = React.forwardRef(({foreignKeyColumn,swrOptions,fore
|
|
131
139
|
const fkeyFields = defaultObj(fKeyTable.fields);
|
132
140
|
mutateFetchedItemsRef.current = mutateFetchedItems;
|
133
141
|
const {isLoading:cIsLoading,data:fetchedItems,isValidating,refresh} = useSWR(hasErrors?null:queryPathKey,{
|
142
|
+
isSelectField : true,
|
143
|
+
fieldName : props.name,
|
134
144
|
fetcher : (url,opts1)=>{
|
135
145
|
if(typeof beforeFetchItems ==='function' && beforeFetchItems({fetchOptions}) === false) return Promise.resolve(fetchedResultRef.current);
|
136
146
|
let opts = Object.clone(fetchOptions);
|
@@ -171,11 +181,17 @@ const TableDataSelectField = React.forwardRef(({foreignKeyColumn,swrOptions,fore
|
|
171
181
|
});
|
172
182
|
const isLoading = cIsLoading || isValidating;
|
173
183
|
const items = React.useMemo(()=>{
|
184
|
+
if(isLoading) return itemsRef.current;
|
174
185
|
const fItems = isObj(fetchedItems)? fetchedItems: fetchedResultRef.current;
|
175
|
-
if(!isObj(fItems) || !Array.isArray(fItems.items))
|
176
|
-
|
177
|
-
|
186
|
+
if(!isObj(fItems) || !Array.isArray(fItems.items)) {
|
187
|
+
itemsRef.current = [];
|
188
|
+
} else {
|
189
|
+
itemsRef.current = fItems.items;
|
190
|
+
}
|
191
|
+
return itemsRef.current;
|
192
|
+
},[fetchedItems,isLoading]);
|
178
193
|
React.useEffect(()=>{
|
194
|
+
isMountedRef.current = true;
|
179
195
|
if(!isLoading && !Object.size(items,true)){
|
180
196
|
refresh();
|
181
197
|
}
|
@@ -261,6 +277,7 @@ const TableDataSelectField = React.forwardRef(({foreignKeyColumn,swrOptions,fore
|
|
261
277
|
dialogProps.title = ttitle;
|
262
278
|
return <Dropdown
|
263
279
|
{...props}
|
280
|
+
fetchOptions = {fetchOptions}
|
264
281
|
items = {items}
|
265
282
|
isFilter = {isFilter}
|
266
283
|
showAdd = {showAdd}
|
@@ -19,7 +19,8 @@ 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
|
+
import SelectFontIcon from "./SelectFontIcon";
|
23
|
+
import DocumentPicker from "./DocumentPicker";
|
23
24
|
|
24
25
|
const defFormFields = {
|
25
26
|
Field,
|
@@ -43,6 +44,7 @@ const defFormFields = {
|
|
43
44
|
,SelectDateFormat
|
44
45
|
,Html
|
45
46
|
,SelectFontIcon,
|
47
|
+
DocumentPicker,
|
46
48
|
}
|
47
49
|
|
48
50
|
export default defFormFields;
|
@@ -20,14 +20,17 @@ if(!isObj(APP.FormsManager)){
|
|
20
20
|
});
|
21
21
|
observable(APP.FormsManager);
|
22
22
|
addObserver(APP.FormsManager);
|
23
|
+
const fManager = APP.FormsManager;
|
23
24
|
APP.FormsManager.on("mount",(formName,formObject)=>{
|
24
25
|
formObject._fields = defaultObj(formObject._fields);
|
25
26
|
formObject._actions= defaultObj(formObject._actions);
|
26
27
|
APP.FormsManager.forms[formName] = formObject;
|
27
28
|
APP.trigger("MOUNT_FORM",formName);
|
28
|
-
})
|
29
|
+
});
|
30
|
+
fManager.on("unmount",(formName)=>{
|
29
31
|
delete APP.FormsManager.forms[formName];
|
30
|
-
})
|
32
|
+
});
|
33
|
+
fManager.on("registerField",(fieldName,formName,fieldObj)=>{
|
31
34
|
if(fieldObj && isObservable(fieldObj)){
|
32
35
|
APP.FormsManager.forms[formName] = defaultObj(APP.FormsManager.forms[formName]);
|
33
36
|
APP.FormsManager.forms[formName]._fields = defaultObj(APP.FormsManager.forms[formName]._fields);
|
@@ -36,13 +39,15 @@ if(!isObj(APP.FormsManager)){
|
|
36
39
|
let formField = form._fields[fieldName];
|
37
40
|
if(isFunction(formField.onRegister)) formField.onRegister(fieldName,fieldObj);
|
38
41
|
}
|
39
|
-
})
|
42
|
+
});
|
43
|
+
fManager.on("unregisterField",(fieldName,formName)=>{
|
40
44
|
if(isNonNullString(fieldName) && isNonNullString(formName)){
|
41
45
|
APP.FormsManager.forms[formName] = defaultObj(APP.FormsManager.forms[formName]);
|
42
46
|
APP.FormsManager.forms[formName]._fields = defaultObj(APP.FormsManager.forms[formName]._fields);
|
43
47
|
delete APP.FormsManager.forms[formName]._fields[fieldName];
|
44
48
|
}
|
45
|
-
})
|
49
|
+
});
|
50
|
+
fManager.on("mountAction",(formName,actionObj)=>{
|
46
51
|
if(!isNonNullString(formName) || !isObj(actionObj)) {
|
47
52
|
console.error("MSForm Action, l'action, nom du formulaire non définit ",formName,actionObj)
|
48
53
|
return;
|
@@ -50,7 +55,8 @@ if(!isObj(APP.FormsManager)){
|
|
50
55
|
APP.FormsManager.actions = defaultObj(APP.FormsManager.actions);
|
51
56
|
APP.FormsManager.actions[formName] = defaultObj(APP.FormsManager.actions[formName]);
|
52
57
|
APP.FormsManager.actions[formName][actionObj.getId()] = actionObj;
|
53
|
-
})
|
58
|
+
});
|
59
|
+
fManager.on("unmountAction",(formName,actionId)=>{
|
54
60
|
if(!isNonNullString(formName) || !isNonNullString(actionId)) return;
|
55
61
|
if(!isObj(APP.FormsManager.actions) || !isObj(APP.FormsManager.actions[formName])) return;
|
56
62
|
delete APP.FormsManager.actions[formName][actionId]
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React from "$react";
|
2
2
|
import { prepareItems as customPrepareItems} from "./utils";
|
3
3
|
import {defaultFunc,defaultBool,defaultDecimal} from "$cutils";
|
4
|
-
import Dimensions,{
|
4
|
+
import Dimensions,{usePageDimensions} from "$cdimensions";
|
5
5
|
import {grid} from "$theme";
|
6
6
|
/**** retourne le contexte associé au composant List
|
7
7
|
|
@@ -25,7 +25,7 @@ export const useList = ({items,filter,prepareItems,...props})=>{
|
|
25
25
|
|
26
26
|
export const useGetNumColumns = ({windowWidth,numColumns,responsive})=>{
|
27
27
|
responsive = defaultBool(responsive,false);
|
28
|
-
const dimensions = responsive
|
28
|
+
const dimensions = usePageDimensions(responsive)["window"];
|
29
29
|
if(responsive){
|
30
30
|
numColumns = grid.numColumns(windowWidth);
|
31
31
|
} else {
|
@@ -56,7 +56,11 @@ class _Menu extends AppComponent {
|
|
56
56
|
opacityAnimation: new Animated.Value(0),
|
57
57
|
scaleAnimation: new Animated.ValueXY({ x: 0, y: 0 }),
|
58
58
|
});
|
59
|
-
this._events
|
59
|
+
Object.defineProperties(this._events,{
|
60
|
+
RESIZE_PAGE : {
|
61
|
+
value : this.handleDismiss.bind(this),
|
62
|
+
}
|
63
|
+
});
|
60
64
|
}
|
61
65
|
|
62
66
|
componentDidUpdate(prevProps) {
|
@@ -153,10 +157,8 @@ class _Menu extends AppComponent {
|
|
153
157
|
} else {
|
154
158
|
BackHandler.removeEventListener('hardwareBackPress', this.handleDismiss);
|
155
159
|
}
|
156
|
-
|
157
160
|
APP.off(RESIZE_PAGE,this._events.RESIZE_PAGE);
|
158
161
|
this.clearEvents();
|
159
|
-
|
160
162
|
this.isBrowser() &&
|
161
163
|
document.removeEventListener('keyup', this.handleKeypress);
|
162
164
|
};
|
@@ -20,11 +20,16 @@ import TouchableRipple from "$ecomponents/TouchableRipple";
|
|
20
20
|
dans le champ isStructData
|
21
21
|
*/
|
22
22
|
const TableLinKComponent = React.forwardRef(({containerProps,children,labelProps,...props},ref)=>{
|
23
|
-
const {testID,onPressLink,disabled,readOnly,fetchData,navigate,isAllowed:checkIfAllowed,Component,...rest} = usePrepareProps(props);
|
23
|
+
const {testID,onPressLink,disabled,readOnly,fetchData,navigate,isAllowed:checkIfAllowed,onLongPres,Component,...rest} = usePrepareProps(props);
|
24
24
|
containerProps = defaultObj(containerProps);
|
25
25
|
labelProps = defaultObj(labelProps);
|
26
26
|
const CP = disabled || readOnly ? View : TouchableRipple;
|
27
|
-
return <CP testID={testID} onLongPres={(e)=>
|
27
|
+
return <CP testID={testID} onLongPres={(e,...rest)=>{
|
28
|
+
React.stopEventPropagation(e);
|
29
|
+
if(typeof onLongPres =="function"){
|
30
|
+
onLongPres(e,...rest);
|
31
|
+
}
|
32
|
+
}} {...containerProps} onPress={disabled || readOnly? undefined : onPressLink} style={[styles.container,containerProps.style]}>
|
28
33
|
<Tooltip testID={testID+"_Tooltip"} {...rest} style={[rest.style,{pointerEvents: disabled || readOnly ? 'none' : 'auto'}]} Component={Component} onPress={disabled || readOnly?undefined:onPressLink} ref={ref} readOnly={readOnly} disabled = {disabled}>
|
29
34
|
<Label testID={testID+"_Label"} underlined primary {...labelProps} style={[_styles.lh15,labelProps.style]} disabled={disabled} readOnly={readOnly}>{children}</Label>
|
30
35
|
</Tooltip>
|
@@ -90,7 +95,7 @@ TableLinKComponent.propTypes = {
|
|
90
95
|
///les props à utiliser pour afficher la table de données en cas de click sur le lien
|
91
96
|
triggerProps : PropTypes.object,
|
92
97
|
/*** l'id de la données à récupérer en cas de clic sur le lien */
|
93
|
-
id : PropTypes.oneOfType([PropTypes.number,PropTypes.string]),
|
98
|
+
id : PropTypes.oneOfType([PropTypes.number,PropTypes.string,PropTypes.array,PropTypes.object]),
|
94
99
|
routeName : PropTypes.string,///la route via laquelle on devra naviguer
|
95
100
|
routeParam : PropTypes.object,///les props à passer à la route en question
|
96
101
|
children : PropTypes.node
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {defaultStr,isNumber,isPromise,defaultVal,extendObj,defaultObj,uniqid,isObj,isObjOrArray} from "$cutils";
|
1
|
+
import {defaultStr,isNumber,isPromise,defaultVal,extendObj,defaultObj,uniqid,isObj,isPlainObject,isObjOrArray} from "$cutils";
|
2
2
|
import {FormData} from "$ecomponents/Form";
|
3
3
|
import FormDataScreen from "./FormData";
|
4
4
|
import ScreenContainer from "./Screen";
|
@@ -319,7 +319,6 @@ export default class TableDataScreenComponent extends FormDataScreen{
|
|
319
319
|
delete fields[i];
|
320
320
|
return;
|
321
321
|
}
|
322
|
-
|
323
322
|
}
|
324
323
|
if(rest.archived === true){
|
325
324
|
currentField.readOnly = true;
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { Asset} from 'expo-asset';
|
2
|
-
import {isObj,isNonNullString} from "$cutils";
|
2
|
+
import {isObj,isNonNullString,defaultStr} from "$cutils";
|
3
3
|
|
4
4
|
export const loadAsset = async (asset)=>{
|
5
|
-
if(isObj(asset) && isAssets(asset)){
|
5
|
+
if(isObj(asset) && (isAssets(asset) || isDocumentPickerAsset(asset))){
|
6
6
|
return Promise.resolve(asset);
|
7
7
|
}
|
8
8
|
return await new Promise((resolve,reject)=>{
|
@@ -24,5 +24,12 @@ export const load = loadAsset;
|
|
24
24
|
export const isAssets = (asset,staticAssets)=>{
|
25
25
|
return isObj(asset) && "width" in (asset) && "height" in (asset) && isNonNullString(asset.uri) && (staticAssets ? asset.uri.contains("/static/"):true);
|
26
26
|
}
|
27
|
+
export const isDocumentPickerAsset = (asset)=>{
|
28
|
+
if(isObj(asset) && assets.lastModified && assets.mimeType && assets.name && isNonNullString(assets.uri)){
|
29
|
+
asset.localUri = defaultStr(asset.localUri,asset.uri);
|
30
|
+
return true;
|
31
|
+
}
|
32
|
+
return false;
|
33
|
+
}
|
27
34
|
export const isValid = isAssets;
|
28
35
|
export const isValidAssets = isAssets;
|
@@ -1,22 +1,21 @@
|
|
1
1
|
module.exports = {
|
2
2
|
"@fto-consult/expo-ui": {
|
3
|
-
"
|
4
|
-
"
|
5
|
-
"
|
3
|
+
"name": "@fto-consult/expo-ui",
|
4
|
+
"version": "8.72.0",
|
5
|
+
"repository": {
|
6
|
+
"type": "git",
|
7
|
+
"url": "git+https://github.com/borispipo/expo-ui.git"
|
8
|
+
},
|
9
|
+
"homepage": "https://github.com/borispipo/expo-ui#readme"
|
6
10
|
},
|
7
11
|
"@babel/plugin-proposal-export-namespace-from": {
|
8
12
|
"version": "7.18.9",
|
9
13
|
"url": "https://babel.dev/docs/en/next/babel-plugin-proposal-export-namespace-from",
|
10
14
|
"license": "MIT"
|
11
15
|
},
|
12
|
-
"@emotion/
|
13
|
-
"version": "11.11.
|
14
|
-
"url": "https://emotion
|
15
|
-
"license": "MIT"
|
16
|
-
},
|
17
|
-
"@expo/html-elements": {
|
18
|
-
"version": "0.5.1",
|
19
|
-
"url": "https://github.com/expo/expo/tree/main/packages/html-elements",
|
16
|
+
"@emotion/react": {
|
17
|
+
"version": "11.11.4",
|
18
|
+
"url": "https://github.com/emotion-js/emotion/tree/main/packages/react",
|
20
19
|
"license": "MIT"
|
21
20
|
},
|
22
21
|
"@expo/metro-config": {
|
@@ -24,49 +23,24 @@ module.exports = {
|
|
24
23
|
"url": "https://github.com/expo/expo.git",
|
25
24
|
"license": "MIT"
|
26
25
|
},
|
27
|
-
"@expo/vector-icons": {
|
28
|
-
"version": "14.0.0",
|
29
|
-
"url": "https://expo.github.io/vector-icons",
|
30
|
-
"license": "MIT"
|
31
|
-
},
|
32
26
|
"@expo/webpack-config": {
|
33
27
|
"version": "19.0.1",
|
34
28
|
"url": "https://github.com/expo/expo-webpack-integrations/tree/main/packages/webpack-config#readme",
|
35
29
|
"license": "MIT"
|
36
30
|
},
|
37
|
-
"@
|
38
|
-
"version": "
|
39
|
-
"url": "https://github.com/
|
40
|
-
"license": "MIT"
|
41
|
-
},
|
42
|
-
"@react-native-community/netinfo": {
|
43
|
-
"version": "11.1.0",
|
44
|
-
"url": "https://github.com/react-native-netinfo/react-native-netinfo#readme",
|
45
|
-
"license": "MIT"
|
46
|
-
},
|
47
|
-
"@react-native/assets-registry": {
|
48
|
-
"version": "0.72.0",
|
49
|
-
"url": "git@github.com:facebook/react-native.git",
|
50
|
-
"license": "MIT"
|
51
|
-
},
|
52
|
-
"@react-navigation/native": {
|
53
|
-
"version": "6.1.17",
|
54
|
-
"url": "https://reactnavigation.org",
|
55
|
-
"license": "MIT"
|
56
|
-
},
|
57
|
-
"@react-navigation/native-stack": {
|
58
|
-
"version": "6.9.26",
|
59
|
-
"url": "https://github.com/software-mansion/react-native-screens#readme",
|
31
|
+
"@faker-js/faker": {
|
32
|
+
"version": "8.4.1",
|
33
|
+
"url": "https://github.com/faker-js/faker.git",
|
60
34
|
"license": "MIT"
|
61
35
|
},
|
62
|
-
"@
|
63
|
-
"version": "
|
64
|
-
"url": "https://
|
65
|
-
"license": "
|
36
|
+
"@fto-consult/common": {
|
37
|
+
"version": "4.43.4",
|
38
|
+
"url": "https://github.com/borispipo/common#readme",
|
39
|
+
"license": "ISC"
|
66
40
|
},
|
67
|
-
"
|
68
|
-
"version": "
|
69
|
-
"url": "https://
|
41
|
+
"apexcharts": {
|
42
|
+
"version": "3.48.0",
|
43
|
+
"url": "https://apexcharts.com",
|
70
44
|
"license": "MIT"
|
71
45
|
},
|
72
46
|
"babel-plugin-inline-dotenv": {
|
@@ -84,74 +58,48 @@ module.exports = {
|
|
84
58
|
"url": "https://github.com/crypto-browserify/crypto-browserify",
|
85
59
|
"license": "MIT"
|
86
60
|
},
|
87
|
-
"
|
88
|
-
"version": "
|
89
|
-
"url": "https://github.com/
|
61
|
+
"file-saver": {
|
62
|
+
"version": "2.0.5",
|
63
|
+
"url": "https://github.com/eligrey/FileSaver.js#readme",
|
90
64
|
"license": "MIT"
|
91
65
|
},
|
92
|
-
"
|
93
|
-
"version": "
|
94
|
-
"url": "https://
|
95
|
-
"license": "MIT"
|
96
|
-
},
|
97
|
-
"expo-clipboard": {
|
98
|
-
"version": "5.0.1",
|
99
|
-
"url": "https://docs.expo.dev/versions/latest/sdk/clipboard",
|
100
|
-
"license": "MIT"
|
101
|
-
},
|
102
|
-
"expo-document-picker": {
|
103
|
-
"version": "11.10.1",
|
104
|
-
"url": "https://docs.expo.dev/versions/latest/sdk/document-picker/",
|
105
|
-
"license": "MIT"
|
106
|
-
},
|
107
|
-
"expo-font": {
|
108
|
-
"version": "11.10.3",
|
109
|
-
"url": "https://docs.expo.dev/versions/latest/sdk/font/",
|
110
|
-
"license": "MIT"
|
111
|
-
},
|
112
|
-
"expo-image-picker": {
|
113
|
-
"version": "14.7.1",
|
114
|
-
"url": "https://docs.expo.dev/versions/latest/sdk/imagepicker/",
|
115
|
-
"license": "MIT"
|
116
|
-
},
|
117
|
-
"expo-intent-launcher": {
|
118
|
-
"version": "10.11.0",
|
119
|
-
"url": "https://docs.expo.dev/versions/latest/sdk/intent-launcher/",
|
120
|
-
"license": "MIT"
|
66
|
+
"google-libphonenumber": {
|
67
|
+
"version": "3.2.34",
|
68
|
+
"url": "https://ruimarinho.github.io/google-libphonenumber/",
|
69
|
+
"license": "(MIT AND Apache-2.0)"
|
121
70
|
},
|
122
|
-
"
|
123
|
-
"version": "
|
124
|
-
"url": "https://
|
71
|
+
"html2canvas": {
|
72
|
+
"version": "1.4.1",
|
73
|
+
"url": "https://html2canvas.hertzen.com",
|
125
74
|
"license": "MIT"
|
126
75
|
},
|
127
|
-
"
|
128
|
-
"version": "
|
129
|
-
"url": "
|
76
|
+
"htmlparser2-without-node-native": {
|
77
|
+
"version": "3.9.2",
|
78
|
+
"url": "git://github.com/fb55/htmlparser2.git",
|
130
79
|
"license": "MIT"
|
131
80
|
},
|
132
|
-
"
|
133
|
-
"version": "
|
134
|
-
"url": "https://docs.expo.dev/versions/latest/sdk/sqlite/",
|
81
|
+
"is-plain-obj": {
|
82
|
+
"version": "4.1.0",
|
135
83
|
"license": "MIT"
|
136
84
|
},
|
137
|
-
"
|
138
|
-
"version": "
|
139
|
-
"url": "https://
|
85
|
+
"jsbarcode": {
|
86
|
+
"version": "3.11.6",
|
87
|
+
"url": "https://github.com/lindell/JsBarcode#readme",
|
140
88
|
"license": "MIT"
|
141
89
|
},
|
142
|
-
"
|
143
|
-
"version": "
|
144
|
-
"url": "https://
|
90
|
+
"prop-types": {
|
91
|
+
"version": "15.8.1",
|
92
|
+
"url": "https://facebook.github.io/react/",
|
145
93
|
"license": "MIT"
|
146
94
|
},
|
147
|
-
"
|
148
|
-
"version": "
|
149
|
-
"url": "https://
|
95
|
+
"react-content-loader": {
|
96
|
+
"version": "6.2.1",
|
97
|
+
"url": "https://github.com/danilowoz/react-content-loader",
|
150
98
|
"license": "MIT"
|
151
99
|
},
|
152
|
-
"react-
|
153
|
-
"version": "
|
154
|
-
"url": "https://
|
100
|
+
"react-dom": {
|
101
|
+
"version": "18.2.0",
|
102
|
+
"url": "https://reactjs.org/",
|
155
103
|
"license": "MIT"
|
156
104
|
},
|
157
105
|
"react-native-big-list": {
|
@@ -159,45 +107,44 @@ module.exports = {
|
|
159
107
|
"url": "https://marcocesarato.github.io/react-native-big-list-docs/",
|
160
108
|
"license": "GPL-3.0-or-later"
|
161
109
|
},
|
162
|
-
"react-native-
|
163
|
-
"version": "
|
164
|
-
"url": "https://github.com/
|
110
|
+
"react-native-iphone-x-helper": {
|
111
|
+
"version": "1.3.1",
|
112
|
+
"url": "https://github.com/ptelad/react-native-iphone-x-helper#readme",
|
165
113
|
"license": "MIT"
|
166
114
|
},
|
167
|
-
"react-native-
|
168
|
-
"version": "2.
|
169
|
-
"url": "https://github.com/software-mansion/react-native-gesture-handler#readme",
|
115
|
+
"react-native-mime-types": {
|
116
|
+
"version": "2.5.0",
|
170
117
|
"license": "MIT"
|
171
118
|
},
|
172
|
-
"react-native-
|
173
|
-
"version": "
|
174
|
-
"url": "https://github.
|
119
|
+
"react-native-paper": {
|
120
|
+
"version": "5.12.3",
|
121
|
+
"url": "https://callstack.github.io/react-native-paper",
|
175
122
|
"license": "MIT"
|
176
123
|
},
|
177
|
-
"react-native-
|
178
|
-
"version": "
|
179
|
-
"url": "https://github.com/
|
124
|
+
"react-native-paper-dates": {
|
125
|
+
"version": "0.22.7",
|
126
|
+
"url": "https://github.com/web-ridge/react-native-paper-dates#readme",
|
180
127
|
"license": "MIT"
|
181
128
|
},
|
182
|
-
"react-native-
|
183
|
-
"version": "
|
184
|
-
"url": "
|
129
|
+
"react-native-web": {
|
130
|
+
"version": "0.19.10",
|
131
|
+
"url": "git://github.com/necolas/react-native-web.git",
|
185
132
|
"license": "MIT"
|
186
133
|
},
|
187
|
-
"react-
|
188
|
-
"version": "
|
189
|
-
"url": "https://
|
134
|
+
"react-virtuoso": {
|
135
|
+
"version": "4.7.9",
|
136
|
+
"url": "https://virtuoso.dev/",
|
190
137
|
"license": "MIT"
|
191
138
|
},
|
192
|
-
"
|
193
|
-
"version": "
|
194
|
-
"url": "https://github.com/
|
139
|
+
"readable-stream": {
|
140
|
+
"version": "4.5.2",
|
141
|
+
"url": "https://github.com/nodejs/readable-stream",
|
195
142
|
"license": "MIT"
|
196
143
|
},
|
197
|
-
"
|
198
|
-
"version": "
|
199
|
-
"url": "
|
200
|
-
"license": "
|
144
|
+
"sanitize-filename": {
|
145
|
+
"version": "1.6.3",
|
146
|
+
"url": "git@github.com:parshap/node-sanitize-filename.git",
|
147
|
+
"license": "WTFPL OR ISC"
|
201
148
|
},
|
202
149
|
"sharp-cli": {
|
203
150
|
"version": "2.1.1",
|
@@ -209,9 +156,19 @@ module.exports = {
|
|
209
156
|
"url": "https://github.com/browserify/stream-browserify",
|
210
157
|
"license": "MIT"
|
211
158
|
},
|
159
|
+
"tippy.js": {
|
160
|
+
"version": "6.3.7",
|
161
|
+
"url": "https://atomiks.github.io/tippyjs/",
|
162
|
+
"license": "MIT"
|
163
|
+
},
|
212
164
|
"vm": {
|
213
165
|
"version": "0.1.0",
|
214
166
|
"url": "https://github.com/DiegoRBaquero/node-vm#readme",
|
215
167
|
"license": "MIT"
|
168
|
+
},
|
169
|
+
"xlsx": {
|
170
|
+
"version": "0.18.5",
|
171
|
+
"url": "https://sheetjs.com/",
|
172
|
+
"license": "Apache-2.0"
|
216
173
|
}
|
217
174
|
};
|