@dropi/react-native-design-system 0.2.25 → 0.2.26

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.
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { ImageProps } from 'expo-image';
3
+ type Src = string | number;
4
+ interface CustomImageProps extends Omit<ImageProps, 'source' | 'placeholder'> {
5
+ source: Src;
6
+ fallbackSource?: Src;
7
+ placeholderSource?: Src;
8
+ retryCount?: number;
9
+ }
10
+ export declare const CustomImage: React.FC<CustomImageProps>;
11
+ export {};
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CustomImage = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _expoImage = require("expo-image");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ 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); }
11
+ const normalize = src => {
12
+ if (!src) return undefined;
13
+ return typeof src === 'string' ? {
14
+ uri: src
15
+ } : src;
16
+ };
17
+ const CustomImage = ({
18
+ source,
19
+ fallbackSource,
20
+ placeholderSource,
21
+ retryCount = 1,
22
+ contentFit = 'cover',
23
+ ...rest
24
+ }) => {
25
+ const [currentSource, setCurrentSource] = (0, _react.useState)(source);
26
+ const [attempts, setAttempts] = (0, _react.useState)(0);
27
+ const [usedFallback, setUsedFallback] = (0, _react.useState)(false);
28
+
29
+ /* sync when source changes */
30
+ (0, _react.useEffect)(() => {
31
+ setCurrentSource(source);
32
+ setAttempts(0);
33
+ setUsedFallback(false);
34
+ }, [source]);
35
+ const handleError = (0, _react.useCallback)(() => {
36
+ /* retry first */
37
+ if (attempts < retryCount) {
38
+ setAttempts(a => a + 1);
39
+ setCurrentSource(source);
40
+ return;
41
+ }
42
+
43
+ /* fallback once */
44
+ if (fallbackSource && !usedFallback) {
45
+ setUsedFallback(true);
46
+ setCurrentSource(fallbackSource);
47
+ }
48
+ }, [attempts, retryCount, fallbackSource, usedFallback, source]);
49
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_expoImage.Image, {
50
+ ...rest,
51
+ source: normalize(currentSource),
52
+ placeholder: normalize(placeholderSource),
53
+ contentFit: contentFit,
54
+ onError: handleError
55
+ });
56
+ };
57
+ exports.CustomImage = CustomImage;
@@ -0,0 +1 @@
1
+ export * from './CustomImage';
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _CustomImage = require("./CustomImage");
7
+ Object.keys(_CustomImage).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _CustomImage[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _CustomImage[key];
14
+ }
15
+ });
16
+ });
@@ -1,3 +1,4 @@
1
1
  export * from './Text';
2
2
  export * from './Buttons';
3
+ export * from './CustomImage';
3
4
  export * from './ProviderBadge';
@@ -25,6 +25,17 @@ Object.keys(_Buttons).forEach(function (key) {
25
25
  }
26
26
  });
27
27
  });
28
+ var _CustomImage = require("./CustomImage");
29
+ Object.keys(_CustomImage).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _CustomImage[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _CustomImage[key];
36
+ }
37
+ });
38
+ });
28
39
  var _ProviderBadge = require("./ProviderBadge");
29
40
  Object.keys(_ProviderBadge).forEach(function (key) {
30
41
  if (key === "default" || key === "__esModule") return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dropi/react-native-design-system",
3
- "version": "0.2.25",
3
+ "version": "0.2.26",
4
4
  "description": "A React Native package built from scratch",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",