feat(smart-app): implement complete mobile app MVP

- App.tsx: full navigation (Auth stack + Main tabs with 5 screens)
- Auth: LoginScreen, RegisterScreen, ForgotPasswordScreen
- HomeScreen: dashboard with IoT metrics, weather widget, alerts, quick actions, sensors
- MapScreen: interactive map with layer toggles (6 layers)
- MarketplaceScreen: categories (6), products (5), search
- ChatScreen: AI chat with quick prompts (4), bot responses
- ProfileScreen: user info, stats, menu (9 items), logout
- AlertsScreen: alert list with severity, acknowledge
- SensorsScreen: sensor list with type filters (6 types), search
- ZonesScreen: zone cards with stats
- SettingsScreen: language picker (FR/EN/ES/DE), privacy, about
- Stores: iotStore (sensors, zones, alerts), notificationStore, uiStore + i18n
- Hooks: useSensors, useAlerts, useNotifications, useLocation
- Components: Card, Button, LoadingSpinner, ErrorBoundary, Header
- Services: iotService, notificationService (with axios API client)
- Utils: formatters (temp, AQI, noise, dates), validators (email, password, IBAN)
- Theme: colors.ts with full design system (Blue Ocean palette)
- Ditto: fixed MongoDB connection, new JWT secrets, official gateway image
This commit is contained in:
Eric FELIXINE
2026-06-01 18:00:35 -04:00
parent 08ca495bde
commit e30ae8ed09
35578 changed files with 3703534 additions and 43 deletions

View File

@@ -0,0 +1,17 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BackHandler = void 0;
function emptyFunction() {}
const BackHandler = exports.BackHandler = {
exitApp: emptyFunction,
addEventListener() {
return {
remove: emptyFunction
};
},
removeEventListener: emptyFunction
};
//# sourceMappingURL=BackHandler.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["emptyFunction","BackHandler","exports","exitApp","addEventListener","remove","removeEventListener"],"sourceRoot":"../../../../src","sources":["utils/BackHandler/BackHandler.tsx"],"mappings":";;;;;;AAAA,SAASA,aAAaA,CAAA,EAAG,CAAC;AAEnB,MAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG;EACzBE,OAAO,EAAEH,aAAa;EACtBI,gBAAgBA,CAAA,EAA2B;IACzC,OAAO;MACLC,MAAM,EAAEL;IACV,CAAC;EACH,CAAC;EACDM,mBAAmB,EAAEN;AACvB,CAAC","ignoreList":[]}

View File

@@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "BackHandler", {
enumerable: true,
get: function () {
return _reactNative.BackHandler;
}
});
var _reactNative = require("react-native");
//# sourceMappingURL=BackHandler.native.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["_reactNative","require"],"sourceRoot":"../../../../src","sources":["utils/BackHandler/BackHandler.native.tsx"],"mappings":";;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA","ignoreList":[]}

View File

@@ -0,0 +1,38 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.addEventListener = addEventListener;
exports.addListener = addListener;
function addEventListener(Module, ...rest) {
const [eventName, handler] = rest;
let removed = false;
const subscription = Module.addEventListener(eventName, handler) ?? {
remove: () => {
var _Module$removeEventLi, _Module$remove;
if (removed) {
return;
}
(_Module$removeEventLi = Module.removeEventListener) === null || _Module$removeEventLi === void 0 || _Module$removeEventLi.call(Module, eventName, handler);
(_Module$remove = Module.remove) === null || _Module$remove === void 0 || _Module$remove.call(Module, eventName, handler);
removed = true;
}
};
return subscription;
}
function addListener(Module, ...rest) {
const [eventName, handler] = rest;
let removed = false;
const subscription = Module.addListener(eventName, handler) ?? {
remove: () => {
if (removed) {
return;
}
Module.removeEventListener(eventName, handler);
removed = true;
}
};
return subscription;
}
//# sourceMappingURL=addEventListener.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["addEventListener","Module","rest","eventName","handler","removed","subscription","remove","_Module$removeEventLi","_Module$remove","removeEventListener","call","addListener"],"sourceRoot":"../../../src","sources":["utils/addEventListener.tsx"],"mappings":";;;;;;;AAKO,SAASA,gBAAgBA,CAQ9BC,MAAS,EAAE,GAAGC,IAAgD,EAAE;EAChE,MAAM,CAACC,SAAS,EAAEC,OAAO,CAAC,GAAGF,IAAI;EAEjC,IAAIG,OAAO,GAAG,KAAK;EAEnB,MAAMC,YAAY,GAAGL,MAAM,CAACD,gBAAgB,CAACG,SAAS,EAAEC,OAAO,CAAC,IAAI;IAClEG,MAAM,EAAEA,CAAA,KAAM;MAAA,IAAAC,qBAAA,EAAAC,cAAA;MACZ,IAAIJ,OAAO,EAAE;QACX;MACF;MAEA,CAAAG,qBAAA,GAAAP,MAAM,CAACS,mBAAmB,cAAAF,qBAAA,eAA1BA,qBAAA,CAAAG,IAAA,CAAAV,MAAM,EAAuBE,SAAS,EAAEC,OAAO,CAAC;MAChD,CAAAK,cAAA,GAAAR,MAAM,CAACM,MAAM,cAAAE,cAAA,eAAbA,cAAA,CAAAE,IAAA,CAAAV,MAAM,EAAUE,SAAS,EAAEC,OAAO,CAAC;MACnCC,OAAO,GAAG,IAAI;IAChB;EACF,CAAC;EAED,OAAOC,YAAY;AACrB;AAEO,SAASM,WAAWA,CAKzBX,MAAS,EAAE,GAAGC,IAA2C,EAAE;EAC3D,MAAM,CAACC,SAAS,EAAEC,OAAO,CAAC,GAAGF,IAAI;EAEjC,IAAIG,OAAO,GAAG,KAAK;EAEnB,MAAMC,YAAY,GAAGL,MAAM,CAACW,WAAW,CAACT,SAAS,EAAEC,OAAO,CAAC,IAAI;IAC7DG,MAAM,EAAEA,CAAA,KAAM;MACZ,IAAIF,OAAO,EAAE;QACX;MACF;MAEAJ,MAAM,CAACS,mBAAmB,CAACP,SAAS,EAAEC,OAAO,CAAC;MAC9CC,OAAO,GAAG,IAAI;IAChB;EACF,CAAC;EAED,OAAOC,YAAY;AACrB","ignoreList":[]}

View File

@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.forwardRef = void 0;
var React = _interopRequireWildcard(require("react"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
/**
* TypeScript generated a large union of props from `ViewProps` in
* `d.ts` files when using `React.forwardRef`. To prevent this
* `ForwardRefComponent` was created and exported. Use this
* `forwardRef` instead of `React.forwardRef` so you don't have to
* import `ForwardRefComponent`.
* More info: https://github.com/callstack/react-native-paper/pull/3603
*/
const forwardRef = exports.forwardRef = React.forwardRef;
//# sourceMappingURL=forwardRef.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["React","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","forwardRef","exports"],"sourceRoot":"../../../src","sources":["utils/forwardRef.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA+B,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAY/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMkB,UAEiB,GAAAC,OAAA,CAAAD,UAAA,GAAGtB,KAAK,CAACsB,UAAU","ignoreList":[]}

View File

@@ -0,0 +1,15 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getContrastingColor;
var _color = _interopRequireDefault(require("color"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function getContrastingColor(input, light, dark) {
if (typeof input === 'string') {
return (0, _color.default)(input).isLight() ? dark : light;
}
return light;
}
//# sourceMappingURL=getContrastingColor.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["_color","_interopRequireDefault","require","e","__esModule","default","getContrastingColor","input","light","dark","color","isLight"],"sourceRoot":"../../../src","sources":["utils/getContrastingColor.tsx"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEX,SAASG,mBAAmBA,CACzCC,KAAiB,EACjBC,KAAa,EACbC,IAAY,EACJ;EACR,IAAI,OAAOF,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAO,IAAAG,cAAK,EAACH,KAAK,CAAC,CAACI,OAAO,CAAC,CAAC,GAAGF,IAAI,GAAGD,KAAK;EAC9C;EAEA,OAAOA,KAAK;AACd","ignoreList":[]}

View File

@@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = hasTouchHandler;
const touchableEvents = ['onPress', 'onLongPress', 'onPressIn', 'onPressOut'];
function hasTouchHandler(touchableEventObject) {
return touchableEvents.some(event => {
return Boolean(touchableEventObject[event]);
});
}
//# sourceMappingURL=hasTouchHandler.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["touchableEvents","hasTouchHandler","touchableEventObject","some","event","Boolean"],"sourceRoot":"../../../src","sources":["utils/hasTouchHandler.tsx"],"mappings":";;;;;;AAEA,MAAMA,eAAe,GAAG,CACtB,SAAS,EACT,aAAa,EACb,WAAW,EACX,YAAY,CACJ;AASK,SAASC,eAAeA,CACrCC,oBAA0C,EAC1C;EACA,OAAOF,eAAe,CAACG,IAAI,CAAEC,KAAK,IAAK;IACrC,OAAOC,OAAO,CAACH,oBAAoB,CAACE,KAAK,CAAC,CAAC;EAC7C,CAAC,CAAC;AACJ","ignoreList":[]}

View File

@@ -0,0 +1,9 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.roundLayoutSize = void 0;
const roundLayoutSize = size => Math.round(size * 1000) / 1000;
exports.roundLayoutSize = roundLayoutSize;
//# sourceMappingURL=roundLayoutSize.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["roundLayoutSize","size","Math","round","exports"],"sourceRoot":"../../../src","sources":["utils/roundLayoutSize.ts"],"mappings":";;;;;;AAAO,MAAMA,eAAe,GAAIC,IAAY,IAC1CC,IAAI,CAACC,KAAK,CAACF,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI;AAACG,OAAA,CAAAJ,eAAA,GAAAA,eAAA","ignoreList":[]}

View File

@@ -0,0 +1,50 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.splitStyles = splitStyles;
/**
* Utility function to extract styles in separate objects
*
* @param styles The style object you want to filter
* @param filters The filters by which you want to split the styles
* @returns An array of filtered style objects:
* - The first style object contains the properties that didn't match any filter
* - After that there will be a style object for each filter you passed in the same order as the matching filters
* - A style property will exist in a single style object, the first filter it matched
*/
function splitStyles(styles, ...filters) {
if (process.env.NODE_ENV !== 'production' && filters.length === 0) {
console.error('No filters were passed when calling splitStyles');
}
// `Object.entries` will be used to iterate over the styles and `Object.fromEntries` will be called before returning
// Entries which match the given filters will be temporarily stored in `newStyles`
const newStyles = filters.map(() => []);
// Entries which match no filter
const rest = [];
// Iterate every style property
outer: for (const item of Object.entries(styles)) {
// Check each filter
for (let i = 0; i < filters.length; i++) {
// Check if filter matches
if (filters[i](item[0])) {
newStyles[i].push(item); // Push to temporary filtered entries array
continue outer; // Skip to checking next style property
}
}
// Adds to rest styles if not filtered
rest.push(item);
}
// Put unmatched styles in the beginning
newStyles.unshift(rest);
// Convert arrays of entries into objects
return newStyles.map(styles => Object.fromEntries(styles));
}
//# sourceMappingURL=splitStyles.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["splitStyles","styles","filters","process","env","NODE_ENV","length","console","error","newStyles","map","rest","outer","item","Object","entries","i","push","unshift","fromEntries"],"sourceRoot":"../../../src","sources":["utils/splitStyles.ts"],"mappings":";;;;;;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,WAAWA,CACzBC,MAAiB,EACjB,GAAGC,OAAc,EACjB;EACA,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAIH,OAAO,CAACI,MAAM,KAAK,CAAC,EAAE;IACjEC,OAAO,CAACC,KAAK,CAAC,iDAAiD,CAAC;EAClE;;EAEA;EACA;EACA,MAAMC,SAAS,GAAGP,OAAO,CAACQ,GAAG,CAAC,MAAM,EAAa,CAAC;;EAElD;EACA,MAAMC,IAAa,GAAG,EAAE;;EAExB;EACAC,KAAK,EAAE,KAAK,MAAMC,IAAI,IAAIC,MAAM,CAACC,OAAO,CAACd,MAAM,CAAC,EAAa;IAC3D;IACA,KAAK,IAAIe,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,OAAO,CAACI,MAAM,EAAEU,CAAC,EAAE,EAAE;MACvC;MACA,IAAId,OAAO,CAACc,CAAC,CAAC,CAACH,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACvBJ,SAAS,CAACO,CAAC,CAAC,CAACC,IAAI,CAACJ,IAAI,CAAC,CAAC,CAAC;QACzB,SAASD,KAAK,CAAC,CAAC;MAClB;IACF;;IAEA;IACAD,IAAI,CAACM,IAAI,CAACJ,IAAI,CAAC;EACjB;;EAEA;EACAJ,SAAS,CAACS,OAAO,CAACP,IAAI,CAAC;;EAEvB;EACA,OAAOF,SAAS,CAACC,GAAG,CAAET,MAAM,IAAKa,MAAM,CAACK,WAAW,CAAClB,MAAM,CAAC,CAAC;AAI9D","ignoreList":[]}

View File

@@ -0,0 +1,16 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useAnimatedValue;
var _reactNative = require("react-native");
var _useLazyRef = _interopRequireDefault(require("./useLazyRef"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function useAnimatedValue(initialValue) {
const {
current
} = (0, _useLazyRef.default)(() => new _reactNative.Animated.Value(initialValue));
return current;
}
//# sourceMappingURL=useAnimatedValue.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["_reactNative","require","_useLazyRef","_interopRequireDefault","e","__esModule","default","useAnimatedValue","initialValue","current","useLazyRef","Animated","Value"],"sourceRoot":"../../../src","sources":["utils/useAnimatedValue.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAsC,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEvB,SAASG,gBAAgBA,CAACC,YAAoB,EAAE;EAC7D,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,mBAAU,EAAC,MAAM,IAAIC,qBAAQ,CAACC,KAAK,CAACJ,YAAY,CAAC,CAAC;EAEtE,OAAOC,OAAO;AAChB","ignoreList":[]}

View File

@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useAnimatedValueArray;
var React = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
function useAnimatedValueArray(initialValues) {
const refs = React.useRef([]);
refs.current.length = initialValues.length;
initialValues.forEach((initialValue, i) => {
refs.current[i] = refs.current[i] ?? new _reactNative.Animated.Value(initialValue);
});
return refs.current;
}
//# sourceMappingURL=useAnimatedValueArray.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["React","_interopRequireWildcard","require","_reactNative","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useAnimatedValueArray","initialValues","refs","useRef","current","length","forEach","initialValue","Animated","Value"],"sourceRoot":"../../../src","sources":["utils/useAnimatedValueArray.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAAwC,SAAAD,wBAAAG,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAL,uBAAA,YAAAA,CAAAG,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEzB,SAASkB,qBAAqBA,CAACC,aAAuB,EAAE;EACrE,MAAMC,IAAI,GAAGzB,KAAK,CAAC0B,MAAM,CAAmB,EAAE,CAAC;EAE/CD,IAAI,CAACE,OAAO,CAACC,MAAM,GAAGJ,aAAa,CAACI,MAAM;EAC1CJ,aAAa,CAACK,OAAO,CAAC,CAACC,YAAY,EAAEnB,CAAC,KAAK;IACzCc,IAAI,CAACE,OAAO,CAAChB,CAAC,CAAC,GAAGc,IAAI,CAACE,OAAO,CAAChB,CAAC,CAAC,IAAI,IAAIoB,qBAAQ,CAACC,KAAK,CAACF,YAAY,CAAC;EACvE,CAAC,CAAC;EAEF,OAAOL,IAAI,CAACE,OAAO;AACrB","ignoreList":[]}

View File

@@ -0,0 +1,59 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useIsKeyboardShown;
var React = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
function useIsKeyboardShown({
onShow,
onHide
}) {
React.useEffect(() => {
let willShowSubscription;
let willHideSubscription;
let didShowSubscription;
let didHideSubscription;
if (_reactNative.Platform.OS === 'ios') {
willShowSubscription = _reactNative.Keyboard.addListener('keyboardWillShow', onShow);
willHideSubscription = _reactNative.Keyboard.addListener('keyboardWillHide', onHide);
} else {
didShowSubscription = _reactNative.Keyboard.addListener('keyboardDidShow', onShow);
didHideSubscription = _reactNative.Keyboard.addListener('keyboardDidHide', onHide);
}
return () => {
if (_reactNative.Platform.OS === 'ios') {
var _willShowSubscription, _willHideSubscription;
if ((_willShowSubscription = willShowSubscription) !== null && _willShowSubscription !== void 0 && _willShowSubscription.remove) {
willShowSubscription.remove();
} else {
// @ts-expect-error: We keep deprecated listener remove method for backwards compat with old RN versions
_reactNative.Keyboard.removeListener('keyboardWillShow', onShow);
}
if ((_willHideSubscription = willHideSubscription) !== null && _willHideSubscription !== void 0 && _willHideSubscription.remove) {
willHideSubscription.remove();
} else {
// @ts-expect-error: We keep deprecated listener remove method for backwards compat with old RN versions
_reactNative.Keyboard.removeListener('keyboardWillHide', onHide);
}
} else {
var _didShowSubscription, _didHideSubscription;
if ((_didShowSubscription = didShowSubscription) !== null && _didShowSubscription !== void 0 && _didShowSubscription.remove) {
didShowSubscription.remove();
} else {
// @ts-expect-error: We keep deprecated listener remove method for backwards compat with old RN versions
_reactNative.Keyboard.removeListener('keyboardDidShow', onShow);
}
if ((_didHideSubscription = didHideSubscription) !== null && _didHideSubscription !== void 0 && _didHideSubscription.remove) {
didHideSubscription.remove();
} else {
// @ts-expect-error: We keep deprecated listener remove method for backwards compat with old RN versions
_reactNative.Keyboard.removeListener('keyboardDidHide', onHide);
}
}
};
}, [onHide, onShow]);
}
//# sourceMappingURL=useIsKeyboardShown.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["React","_interopRequireWildcard","require","_reactNative","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useIsKeyboardShown","onShow","onHide","useEffect","willShowSubscription","willHideSubscription","didShowSubscription","didHideSubscription","Platform","OS","Keyboard","addListener","_willShowSubscription","_willHideSubscription","remove","removeListener","_didShowSubscription","_didHideSubscription"],"sourceRoot":"../../../src","sources":["utils/useIsKeyboardShown.tsx"],"mappings":"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","ignoreList":[]}

View File

@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useLayout;
var React = _interopRequireWildcard(require("react"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
function useLayout() {
const [layout, setLayout] = React.useState({
height: 0,
width: 0,
measured: false
});
const onLayout = React.useCallback(e => {
const {
height,
width
} = e.nativeEvent.layout;
if (height === layout.height && width === layout.width) {
return;
}
setLayout({
height,
width,
measured: true
});
}, [layout.height, layout.width]);
return [layout, onLayout];
}
//# sourceMappingURL=useLayout.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["React","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useLayout","layout","setLayout","useState","height","width","measured","onLayout","useCallback","nativeEvent"],"sourceRoot":"../../../src","sources":["utils/useLayout.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA+B,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAGhB,SAASkB,SAASA,CAAA,EAAG;EAClC,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGxB,KAAK,CAACyB,QAAQ,CAIvC;IAAEC,MAAM,EAAE,CAAC;IAAEC,KAAK,EAAE,CAAC;IAAEC,QAAQ,EAAE;EAAM,CAAC,CAAC;EAE5C,MAAMC,QAAQ,GAAG7B,KAAK,CAAC8B,WAAW,CAC/B3B,CAAoB,IAAK;IACxB,MAAM;MAAEuB,MAAM;MAAEC;IAAM,CAAC,GAAGxB,CAAC,CAAC4B,WAAW,CAACR,MAAM;IAE9C,IAAIG,MAAM,KAAKH,MAAM,CAACG,MAAM,IAAIC,KAAK,KAAKJ,MAAM,CAACI,KAAK,EAAE;MACtD;IACF;IAEAH,SAAS,CAAC;MACRE,MAAM;MACNC,KAAK;MACLC,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ,CAAC,EACD,CAACL,MAAM,CAACG,MAAM,EAAEH,MAAM,CAACI,KAAK,CAC9B,CAAC;EAED,OAAO,CAACJ,MAAM,EAAEM,QAAQ,CAAC;AAC3B","ignoreList":[]}

View File

@@ -0,0 +1,16 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useLazyRef;
var React = _interopRequireWildcard(require("react"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
function useLazyRef(callback) {
const lazyRef = React.useRef(undefined);
if (lazyRef.current === undefined) {
lazyRef.current = callback();
}
return lazyRef;
}
//# sourceMappingURL=useLazyRef.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["React","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useLazyRef","callback","lazyRef","useRef","undefined","current"],"sourceRoot":"../../../src","sources":["utils/useLazyRef.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA+B,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEhB,SAASkB,UAAUA,CAAIC,QAAiB,EAAE;EACvD,MAAMC,OAAO,GAAGxB,KAAK,CAACyB,MAAM,CAAgBC,SAAS,CAAC;EAEtD,IAAIF,OAAO,CAACG,OAAO,KAAKD,SAAS,EAAE;IACjCF,OAAO,CAACG,OAAO,GAAGJ,QAAQ,CAAC,CAAC;EAC9B;EAEA,OAAOC,OAAO;AAChB","ignoreList":[]}