@fto-consult/expo-ui 7.2.0 → 7.2.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 +4 -4
- package/src/components/Datagrid/Accordion/Row.js +7 -1
- package/src/components/Datagrid/Common/Common.js +2 -22
- package/src/components/Filter/index.js +7 -4
- package/src/components/Form/Fields/Field.js +2 -1
- package/src/components/Form/FormData/FormDataActions.js +3 -3
- package/src/context/hooks.js +4 -4
- package/src/layouts/Screen/TableData.js +8 -4
- package/src/layouts/Screen/utils.js +7 -2
- package/src/pdf/index.js +1 -1
- package/src/screens/Help/openLibraries.js +1 -1
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@fto-consult/expo-ui",
|
3
|
-
"version": "7.2.
|
3
|
+
"version": "7.2.2",
|
4
4
|
"description": "Bibliothèque de composants UI Expo,react-native",
|
5
5
|
"main": "main",
|
6
6
|
"scripts": {
|
@@ -71,7 +71,7 @@
|
|
71
71
|
"@expo/html-elements": "^0.5.1",
|
72
72
|
"@expo/vector-icons": "^13.0.0",
|
73
73
|
"@faker-js/faker": "^8.0.2",
|
74
|
-
"@fto-consult/common": "^3.72.
|
74
|
+
"@fto-consult/common": "^3.72.18",
|
75
75
|
"@pchmn/expo-material3-theme": "^1.3.1",
|
76
76
|
"@react-native-async-storage/async-storage": "1.18.2",
|
77
77
|
"@react-native-community/datetimepicker": "7.2.0",
|
@@ -111,8 +111,8 @@
|
|
111
111
|
"react-native-get-random-values": "~1.9.0",
|
112
112
|
"react-native-iphone-x-helper": "^1.3.1",
|
113
113
|
"react-native-mime-types": "^2.4.0",
|
114
|
-
"react-native-paper": "^5.11.
|
115
|
-
"react-native-paper-dates": "^0.20.
|
114
|
+
"react-native-paper": "^5.11.4",
|
115
|
+
"react-native-paper-dates": "^0.20.5",
|
116
116
|
"react-native-reanimated": "~3.3.0",
|
117
117
|
"react-native-safe-area-context": "4.6.3",
|
118
118
|
"react-native-screens": "~3.22.0",
|
@@ -137,7 +137,7 @@ const DatagridAccordionRow = React.forwardRef((props,ref)=>{
|
|
137
137
|
}}
|
138
138
|
>
|
139
139
|
<HStack
|
140
|
-
style={[styles.renderedContent,viewWrapperStyle,!hasAvatar && styles.contentContainerNotAvatar]}
|
140
|
+
style={[styles.renderedContent,!hasAvatar && styles.renderedContentHasNotAvatar,viewWrapperStyle,!hasAvatar && styles.contentContainerNotAvatar]}
|
141
141
|
testID={testID+'_ContentContainer'}
|
142
142
|
>
|
143
143
|
{hasAvatar?<View testID={testID+"_AvatarContentContainer"} style={[styles.avatarContent]}>
|
@@ -206,6 +206,9 @@ const styles = StyleSheet.create({
|
|
206
206
|
paddingRight : 10,
|
207
207
|
width : "100%",
|
208
208
|
},
|
209
|
+
renderedContentHasNotAvatar : {
|
210
|
+
justifyContent : "space-between",
|
211
|
+
},
|
209
212
|
right : {
|
210
213
|
marginHorizontal : 0,
|
211
214
|
paddingLeft:0,
|
@@ -247,6 +250,9 @@ const styles = StyleSheet.create({
|
|
247
250
|
contentContainerNotAvatar : {
|
248
251
|
paddingLeft : 2,
|
249
252
|
},
|
253
|
+
content : {
|
254
|
+
maxWidth : "80%",
|
255
|
+
},
|
250
256
|
});
|
251
257
|
|
252
258
|
DatagridAccordionRow.displayName = 'DatagridAccordionRow';
|
@@ -826,7 +826,7 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
826
826
|
* ou pas.
|
827
827
|
*/
|
828
828
|
renderSelectedRowsActions(sActions){
|
829
|
-
let {
|
829
|
+
let {makePhoneCallProps,canMakePhoneCall,archivable} = this.props;
|
830
830
|
const size = this.getSelectedRowsCount();
|
831
831
|
let r = [];
|
832
832
|
let endActs = [];
|
@@ -841,20 +841,6 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
841
841
|
if(isFunction(selectedR)) {
|
842
842
|
selectedR = selectedR.call(this,sArgs)
|
843
843
|
}
|
844
|
-
if(isFunction(print)){
|
845
|
-
if(isFunction(printable)){
|
846
|
-
printable = printable({context:this,tableName:defaultStr(this.props.tableName,this.props.table),props:this.props});
|
847
|
-
}
|
848
|
-
if(printable !== false){
|
849
|
-
r.push({
|
850
|
-
icon : defaultVal(this.props.printButtonIcon,'printer'),
|
851
|
-
text : defaultVal(this.props.printButtonText,this.props.printButtonLabel,'Imprimer'),
|
852
|
-
onPress : ()=>{
|
853
|
-
print({title:defaultStr(this.props.title),...defaultObj(printOptions),...sArgs});
|
854
|
-
},
|
855
|
-
})
|
856
|
-
}
|
857
|
-
}
|
858
844
|
Object.map(sActions,(o,i)=>{
|
859
845
|
if(isObj(o)){
|
860
846
|
let {onPress, ...rest} = o;
|
@@ -3289,7 +3275,7 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
3289
3275
|
cb = undefined;
|
3290
3276
|
}
|
3291
3277
|
fetchOptions = this.getFetchOptions({fetchOptions,parseMangoQueries:false});
|
3292
|
-
if(typeof this.props.fetchOptionsMutator =='function' && this.props.fetchOptionsMutator(fetchOptions) === false){
|
3278
|
+
if(typeof this.props.fetchOptionsMutator =='function' && this.props.fetchOptionsMutator({fetchOptions,context:this}) === false){
|
3293
3279
|
this.isFetchingData = false;
|
3294
3280
|
return resolve(sData);
|
3295
3281
|
}
|
@@ -4010,12 +3996,6 @@ CommonDatagridComponent.propTypes = {
|
|
4010
3996
|
]),
|
4011
3997
|
/*** fonction permettant de retourner l'unique clé des éléments du tableau */
|
4012
3998
|
getRowKey : PropTypes.func,
|
4013
|
-
///la fonction utilisée pour l'impression du datagrid
|
4014
|
-
print : PropTypes.func,
|
4015
|
-
printButtonIcon : PropTypes.oneOfType([PropTypes.string,PropTypes.element]),
|
4016
|
-
printButtonLabel : PropTypes.oneOfType([PropTypes.string,PropTypes.element]),
|
4017
|
-
printButtonText : PropTypes.oneOfType([PropTypes.string,PropTypes.element]),
|
4018
|
-
printOptions: PropTypes.object,
|
4019
3999
|
/*** si le datagrid est imprimable */
|
4020
4000
|
printable : PropTypes.oneOfType([
|
4021
4001
|
PropTypes.func,
|
@@ -18,6 +18,7 @@ import { ActivityIndicator } from "react-native-paper";
|
|
18
18
|
import DialogProvider from "$ecomponents/Form/FormData/DialogProvider";
|
19
19
|
import FilterBetweenComponent from "./BetweenComponent";
|
20
20
|
|
21
|
+
export const dateTypes = ["date","time","datetime","date2time"]
|
21
22
|
|
22
23
|
const manualRunKey = "manual-run";
|
23
24
|
|
@@ -137,7 +138,9 @@ export default class Filter extends AppComponent {
|
|
137
138
|
type = defaultStr(type,this.type,this.props.type).toLowerCase();
|
138
139
|
if(type.contains('select')){
|
139
140
|
return "$in";
|
140
|
-
}
|
141
|
+
}
|
142
|
+
if(dateTypes.includes(type)) return "$eq";
|
143
|
+
if(type !== 'number' && type !== 'decimal'){
|
141
144
|
return '$regexcontains';
|
142
145
|
}
|
143
146
|
return '$eq';
|
@@ -161,16 +164,16 @@ export default class Filter extends AppComponent {
|
|
161
164
|
action = '$eq';
|
162
165
|
} else if(type.contains('select')){
|
163
166
|
actions = _inActions;
|
164
|
-
} else if(type
|
167
|
+
} else if(dateTypes.includes(type)) {
|
165
168
|
actions = {...periodActions, ...actions}
|
166
169
|
delete actions.$between;
|
167
|
-
} else if(type !== '
|
170
|
+
} else if(type !== 'number' && type !== 'decimal'){
|
168
171
|
actions = {...betweenActions,...regexActions};
|
169
172
|
isTextFilter = true;
|
170
173
|
}
|
171
174
|
if(!action){
|
172
175
|
action = this.getDefaultAction(type);
|
173
|
-
}
|
176
|
+
}
|
174
177
|
let defaultValue = defaultVal(this.props.defaultValue);
|
175
178
|
operator = defaultVal(operator,"$and");
|
176
179
|
if(actions == _inActions || type.contains("select")){
|
@@ -333,8 +333,9 @@ export default class Field extends AppComponent {
|
|
333
333
|
}
|
334
334
|
return true;
|
335
335
|
}
|
336
|
-
onNoValidate({msg,value,context,validRule,validParams,event,...rest}){
|
336
|
+
onNoValidate({msg,message,value,context,validRule,validParams,event,...rest}){
|
337
337
|
this.validatingValue = value;
|
338
|
+
msg = msg || message;
|
338
339
|
this.trigger.call(this,"noValidate",{...defaultObj(rest),props:this.props,context:this,msg,value,event,validRule,validParams},(result)=>{
|
339
340
|
this.setState({
|
340
341
|
errorText : msg,
|
@@ -103,7 +103,7 @@ export default class FormDataActionComponent extends FormData {
|
|
103
103
|
}
|
104
104
|
getAppBarActionsProps(props){
|
105
105
|
props = defaultObj(props,this.props);
|
106
|
-
let {actions,save2NewAction,save2printAction,save2closeAction,saveAction,newAction} = props;
|
106
|
+
let {actions,save2NewAction,save2printAction,isPrintingForm,save2closeAction,saveAction,newAction} = props;
|
107
107
|
const sArg = {context:this};
|
108
108
|
save2NewAction = typeof save2NewAction =='function' ? save2NewAction (sArg) : save2NewAction;
|
109
109
|
save2closeAction = typeof save2closeAction ==='function'? save2closeAction(sArg) : save2closeAction;
|
@@ -113,7 +113,7 @@ export default class FormDataActionComponent extends FormData {
|
|
113
113
|
const appBarProps = this.getAppBarProps();
|
114
114
|
const data = this.getDataProp();
|
115
115
|
const isEditing = this.isDocEditing(data);
|
116
|
-
let textSave = isEditing ? "Modifier": 'Enregistrer';
|
116
|
+
let textSave = isPrintingForm ? "Imprimer" : isEditing ? "Modifier": 'Enregistrer';
|
117
117
|
const newElementLabel = defaultStr(props.newElementLabel,this.props.newElementLabel,"Nouvel Element");
|
118
118
|
if(isEditing){
|
119
119
|
const t = this.getPrimaryKeysFieldsValueText(data);
|
@@ -142,7 +142,7 @@ export default class FormDataActionComponent extends FormData {
|
|
142
142
|
save : saveAction !== false ? {
|
143
143
|
isAction : true,
|
144
144
|
text : textSave,
|
145
|
-
icon : 'check',
|
145
|
+
icon : isPrintingForm ? 'printer':'check',
|
146
146
|
title : textSave,
|
147
147
|
onPress : (a)=>{
|
148
148
|
context.clickedAction = 'save';
|
package/src/context/hooks.js
CHANGED
@@ -31,13 +31,13 @@ export const useSWR = (path,options)=>{
|
|
31
31
|
swrOptions : {
|
32
32
|
provider: () => new Map(),
|
33
33
|
...swrConfig,
|
34
|
-
isOnline() {
|
34
|
+
isOnline(...rest) {
|
35
35
|
if(isLocalHost) return true;
|
36
|
-
return swrConfig.isOnline();
|
36
|
+
return swrConfig.isOnline(...rest);
|
37
37
|
},
|
38
38
|
initReconnect(cb) {
|
39
|
-
|
40
|
-
|
39
|
+
if(isLocalHost) return cb();
|
40
|
+
return swrConfig.initReconnect(cb);
|
41
41
|
},
|
42
42
|
...extendObj({},options,options?.swrOptions)
|
43
43
|
}
|
@@ -350,7 +350,7 @@ export default class TableDataScreenComponent extends FormDataScreen{
|
|
350
350
|
saveButton : isUpdated?'Modifier':'Enregistrer',
|
351
351
|
currentData:data,
|
352
352
|
hasManyData : this.hasManyData(),
|
353
|
-
|
353
|
+
onPressToPrint : this.doSave.bind(this),//this.print.bind(this),
|
354
354
|
datas,
|
355
355
|
currentDataIndex:currentIndex,
|
356
356
|
onPressToPrevious:this.goToPreviousData.bind(this),
|
@@ -581,9 +581,12 @@ export default class TableDataScreenComponent extends FormDataScreen{
|
|
581
581
|
return super.isDocEditing(data);
|
582
582
|
}
|
583
583
|
print(data){
|
584
|
-
if(!this.isPrintable()
|
584
|
+
if(!this.isPrintable()) return;
|
585
585
|
data = this.isDocEditing(data)? data : isObj(data) && this.isDocEditing(data.data)? data.data : {};
|
586
|
-
|
586
|
+
if(typeof this.props.print ==='function'){
|
587
|
+
return this.props.print.call(this,data);
|
588
|
+
}
|
589
|
+
return data;
|
587
590
|
}
|
588
591
|
isClonable(){
|
589
592
|
return !!(this.props.clonable !==false);
|
@@ -699,6 +702,7 @@ export default class TableDataScreenComponent extends FormDataScreen{
|
|
699
702
|
}
|
700
703
|
}
|
701
704
|
doSave ({goBack,data,action}){
|
705
|
+
action = defaultStr(action,this.clickedEl);
|
702
706
|
const cb = ()=>{
|
703
707
|
if(action === 'new'){
|
704
708
|
this.reset();
|
@@ -717,7 +721,7 @@ export default class TableDataScreenComponent extends FormDataScreen{
|
|
717
721
|
return false;
|
718
722
|
}
|
719
723
|
if(action === 'clone'){
|
720
|
-
this.clone(
|
724
|
+
this.clone(Object.clone(data));
|
721
725
|
return false;
|
722
726
|
}
|
723
727
|
const isUpdated = this.isDocEditing(data);
|
@@ -5,6 +5,7 @@ import {Colors} from "$theme";
|
|
5
5
|
import { COPY_ICON,PRINT_ICON} from "$ecomponents/Icon";
|
6
6
|
import {getTableDataRouteName} from "$enavigation/utils";
|
7
7
|
|
8
|
+
const isFunction = x => typeof x =='function';
|
8
9
|
//@seee : https://github.com/typeorm/typeorm/blob/master/src/entity-schema/EntitySchemaColumnOptions.ts
|
9
10
|
///'_rev','_id','code',
|
10
11
|
export const generatedColumnsProperties = ["createDate","updateDate","createdBy","updateBy",'updatedDate','updatedHour','createdHour','createdDate']
|
@@ -275,12 +276,16 @@ export function renderActions({context,isUpdate,newElementLabel,readablePerms:c
|
|
275
276
|
|
276
277
|
export const createCallback = ({context,action,callback,force}) =>{
|
277
278
|
if(force === true && isFunction(callback)) return callback;
|
278
|
-
return (
|
279
|
+
return (a,...args) =>{
|
279
280
|
context = context || {};
|
280
281
|
if(action && typeof action == "string"){
|
281
282
|
context.clickedEl = action;
|
282
283
|
}
|
283
|
-
if(
|
284
|
+
if(isObj(a)){
|
285
|
+
a.action = defaultStr(a.action,action);
|
286
|
+
a.clickedEl = a.clickedEl || a.action;
|
287
|
+
}
|
288
|
+
if(isFunction(callback)) callback.call(context,a,...args);
|
284
289
|
return true;
|
285
290
|
}
|
286
291
|
}
|
package/src/pdf/index.js
CHANGED
@@ -9,7 +9,6 @@ import session from "$session";
|
|
9
9
|
|
10
10
|
const {createPdf} = pdfMake;
|
11
11
|
pdfMake.createPdf = (docDefinition,...rest)=>{
|
12
|
-
console.log("creating pdf ",docDefinition);
|
13
12
|
try {
|
14
13
|
//@see : https://pdfmake.github.io/docs/0.1/getting-started/client-side/methods/
|
15
14
|
const pdf = createPdf(docDefinition,...rest);
|
@@ -128,6 +127,7 @@ export const getPrintSettings = ({multiple,sessionName,formDataProps,...rest})=>
|
|
128
127
|
return DialogProvider.open({
|
129
128
|
title : "Options d'impression",
|
130
129
|
...formDataProps,
|
130
|
+
isPrintingForm : true,
|
131
131
|
data : config,
|
132
132
|
fields,
|
133
133
|
onSuccess : (opts)=>{
|
@@ -1 +1 @@
|
|
1
|
-
module.exports = {"@fto-consult/expo-ui":{"name":"@fto-consult/expo-ui","version":"7.1
|
1
|
+
module.exports = {"@fto-consult/expo-ui":{"name":"@fto-consult/expo-ui","version":"7.2.1","repository":{"type":"git","url":"git+https://github.com/borispipo/expo-ui.git"},"homepage":"https://github.com/borispipo/expo-ui#readme"},"@babel/plugin-proposal-export-namespace-from":{"version":"7.18.9","url":"https://babel.dev/docs/en/next/babel-plugin-proposal-export-namespace-from","license":"MIT"},"@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.72.16","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.9","url":"https://reactnavigation.org","license":"MIT"},"@react-navigation/native-stack":{"version":"6.9.17","url":"https://github.com/software-mansion/react-native-screens#readme","license":"MIT"},"@react-navigation/stack":{"version":"6.3.20","url":"https://reactnavigation.org/docs/stack-navigator/","license":"MIT"},"@shopify/flash-list":{"version":"1.4.3","url":"https://shopify.github.io/flash-list/","license":"MIT"},"apexcharts":{"version":"3.44.2","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.21","url":"https://github.com/expo/expo/tree/main/packages/expo","license":"MIT"},"expo-camera":{"version":"13.4.4","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-sharing":{"version":"11.5.0","url":"https://docs.expo.dev/versions/latest/sdk/sharing/","license":"MIT"},"expo-sqlite":{"version":"11.3.3","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.2.0","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"},"is-plain-obj":{"version":"4.1.0","license":"MIT"},"js-base64":{"version":"3.7.5","license":"BSD-3-Clause"},"pdfmake":{"version":"0.2.8","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.6","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-get-random-values":{"version":"1.9.0","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.11.4","url":"https://callstack.github.io/react-native-paper","license":"MIT"},"react-native-paper-dates":{"version":"0.20.5","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.9","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.6.2","url":"https://virtuoso.dev/","license":"MIT"},"sharp-cli":{"version":"2.1.0","url":"https://github.com/vseventer/sharp-cli","license":"MIT"},"tippy.js":{"version":"6.3.7","url":"https://atomiks.github.io/tippyjs/","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"}};
|