react-native-expo-cropper 1.0.17 → 1.0.18
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/.babelrc +1 -1
- package/README.MD +12 -12
- package/package.json +13 -20
- package/src/CustomCamera.js +13 -8
- package/src/ImageCropper.js +14 -23
- package/lib/CustomCamera.js +0 -214
- package/lib/ImageCropper.js +0 -338
- package/lib/ImageCropperStyles.js +0 -177
- package/lib/ImageProcessor.js +0 -53
package/.babelrc
CHANGED
package/README.MD
CHANGED
|
@@ -12,22 +12,22 @@ Ou
|
|
|
12
12
|
yarn add react-native-expo-cropper
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
EXPO SDK
|
|
15
|
+
EXPO SDK 53 -------------------------------------------------------------
|
|
16
16
|
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"expo": "
|
|
19
|
-
"react": "19.
|
|
20
|
-
"react-native": "0.
|
|
18
|
+
"expo": "53.0.9",
|
|
19
|
+
"react": "19.0.0",
|
|
20
|
+
"react-native": "0.79.2"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"
|
|
24
|
-
"expo": "
|
|
25
|
-
"expo-
|
|
26
|
-
"expo-image-
|
|
27
|
-
"expo-
|
|
28
|
-
"expo-
|
|
29
|
-
"expo-
|
|
30
|
-
"react-native-svg": "15.
|
|
23
|
+
"expo": "53.0.9",
|
|
24
|
+
"expo-camera": "16.1.6",
|
|
25
|
+
"expo-image-manipulator": "13.1.6",
|
|
26
|
+
"expo-image-picker": "16.1.4",
|
|
27
|
+
"expo-media-library": "17.1.6",
|
|
28
|
+
"expo-screen-orientation": "8.1.6",
|
|
29
|
+
"@expo/vector-icons": "14.1.0",
|
|
30
|
+
"react-native-svg": "15.11.2",
|
|
31
31
|
"react-native-view-shot": "4.0.3"
|
|
32
32
|
},
|
|
33
33
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-expo-cropper",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.18",
|
|
4
4
|
"description": "Recadrage polygonal d'images.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"author": "PCS AGRI",
|
|
@@ -15,19 +15,19 @@
|
|
|
15
15
|
"react-native-component"
|
|
16
16
|
],
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"expo": "
|
|
19
|
-
"react": "19.
|
|
20
|
-
"react-native": "0.
|
|
18
|
+
"expo": "53.0.9",
|
|
19
|
+
"react": "19.0.0",
|
|
20
|
+
"react-native": "0.79.2"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@expo/vector-icons": "
|
|
24
|
-
"expo": "
|
|
25
|
-
"expo-camera": "
|
|
26
|
-
"expo-image-manipulator": "
|
|
27
|
-
"expo-image-picker": "
|
|
28
|
-
"expo-media-library": "
|
|
29
|
-
"expo-screen-orientation": "
|
|
30
|
-
"react-native-svg": "15.
|
|
23
|
+
"@expo/vector-icons": "14.1.0",
|
|
24
|
+
"expo": "53.0.9",
|
|
25
|
+
"expo-camera": "16.1.6",
|
|
26
|
+
"expo-image-manipulator": "13.1.6",
|
|
27
|
+
"expo-image-picker": "16.1.4",
|
|
28
|
+
"expo-media-library": "17.1.6",
|
|
29
|
+
"expo-screen-orientation": "8.1.6",
|
|
30
|
+
"react-native-svg": "15.11.2",
|
|
31
31
|
"react-native-view-shot": "4.0.3"
|
|
32
32
|
},
|
|
33
33
|
"engines": {
|
|
@@ -43,13 +43,6 @@
|
|
|
43
43
|
"homepage": "https://github.com/pcsagri/react-native-expo-cropper#readme",
|
|
44
44
|
"scripts": {
|
|
45
45
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
46
|
-
"build": "babel src --out-dir
|
|
47
|
-
"prepare": "npm run build"
|
|
48
|
-
},
|
|
49
|
-
"devDependencies": {
|
|
50
|
-
"@babel/cli": "^7.28.3",
|
|
51
|
-
"@babel/core": "^7.28.5",
|
|
52
|
-
"@babel/preset-env": "^7.28.5",
|
|
53
|
-
"@babel/preset-react": "^7.28.5"
|
|
46
|
+
"build": "babel src --out-dir dist"
|
|
54
47
|
}
|
|
55
48
|
}
|
package/src/CustomCamera.js
CHANGED
|
@@ -15,7 +15,7 @@ const { width } = Dimensions.get('window');
|
|
|
15
15
|
export default function CustomCamera({ onPhotoCaptured}) {
|
|
16
16
|
const [isReady, setIsReady] = useState(false);
|
|
17
17
|
const [loadingBeforeCapture, setLoadingBeforeCapture] = useState(false);
|
|
18
|
-
const [
|
|
18
|
+
const [setHasPermission] = useState(null);
|
|
19
19
|
const cameraRef = useRef(null);
|
|
20
20
|
|
|
21
21
|
|
|
@@ -32,20 +32,25 @@ useEffect(() => {
|
|
|
32
32
|
const takePicture = async () => {
|
|
33
33
|
if (cameraRef.current) {
|
|
34
34
|
try {
|
|
35
|
-
setLoadingBeforeCapture(true);
|
|
36
35
|
|
|
36
|
+
setTimeout(() => {
|
|
37
|
+
setLoadingBeforeCapture(true);
|
|
38
|
+
}, 1000);
|
|
39
|
+
|
|
40
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
41
|
+
|
|
37
42
|
const photo = await cameraRef.current.takePictureAsync({
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
43
|
+
quality: 1,
|
|
44
|
+
shutterSound: false,
|
|
45
|
+
});
|
|
41
46
|
|
|
47
|
+
|
|
42
48
|
onPhotoCaptured(photo.uri);
|
|
43
|
-
|
|
49
|
+
|
|
44
50
|
setLoadingBeforeCapture(false);
|
|
45
51
|
} catch (error) {
|
|
46
52
|
setLoadingBeforeCapture(false);
|
|
47
|
-
|
|
48
|
-
Alert.alert("Erreur", error?.message || 'Capture failed');
|
|
53
|
+
Alert.alert("Erreur");
|
|
49
54
|
}
|
|
50
55
|
}
|
|
51
56
|
};
|
package/src/ImageCropper.js
CHANGED
|
@@ -6,7 +6,7 @@ import { captureRef } from 'react-native-view-shot';
|
|
|
6
6
|
import CustomCamera from './CustomCamera';
|
|
7
7
|
import { enhanceImage } from './ImageProcessor';
|
|
8
8
|
|
|
9
|
-
const ImageCropper = ({ onConfirm,
|
|
9
|
+
const ImageCropper = ({ onConfirm, openCameraFirst, initialImage ,addheight}) => {
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
const [image, setImage] = useState(null);
|
|
@@ -183,36 +183,27 @@ const ImageCropper = ({ onConfirm, onCrop, openCameraFirst, initialImage ,addhei
|
|
|
183
183
|
<TouchableOpacity
|
|
184
184
|
style={styles.button}
|
|
185
185
|
onPress={async () => {
|
|
186
|
-
//
|
|
187
|
-
if (!image || !viewRef.current) {
|
|
188
|
-
console.error('Image or view ref not ready for capture');
|
|
189
|
-
alert('Vue non prête pour la capture');
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
|
|
186
|
+
// setShowFullScreenCapture(true);
|
|
193
187
|
setIsLoading(true);
|
|
194
188
|
setShowResult(true);
|
|
195
|
-
|
|
196
189
|
try {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const capturedUri = await captureRef(viewRef.current, {
|
|
201
|
-
format: 'jpg',
|
|
190
|
+
await new Promise((resolve) => requestAnimationFrame(resolve));
|
|
191
|
+
const capturedUri = await captureRef(viewRef, {
|
|
192
|
+
format: 'png',
|
|
202
193
|
quality: 1,
|
|
203
|
-
result: 'tmpfile',
|
|
204
194
|
});
|
|
205
195
|
|
|
206
|
-
|
|
207
|
-
|
|
196
|
+
|
|
197
|
+
const enhancedUri = await enhanceImage(capturedUri ,addheight);
|
|
198
|
+
const name = `IMAGE XTK${Date.now()}.png`;
|
|
208
199
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
200
|
+
|
|
201
|
+
if (onConfirm) {
|
|
202
|
+
onConfirm(enhancedUri, name);
|
|
203
|
+
}
|
|
213
204
|
} catch (error) {
|
|
214
|
-
console.error(
|
|
215
|
-
alert(
|
|
205
|
+
console.error("Erreur lors de la capture :", error);
|
|
206
|
+
alert("Erreur lors de la capture !");
|
|
216
207
|
} finally {
|
|
217
208
|
setShowResult(false);
|
|
218
209
|
setIsLoading(false);
|
package/lib/CustomCamera.js
DELETED
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports["default"] = CustomCamera;
|
|
8
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
var _reactNative = require("react-native");
|
|
10
|
-
var _expoCamera = require("expo-camera");
|
|
11
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(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 (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
|
|
12
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
15
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
16
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
17
|
-
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
18
|
-
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
19
|
-
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
20
|
-
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
21
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
22
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
23
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
24
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
25
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
26
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
27
|
-
var _Dimensions$get = _reactNative.Dimensions.get('window'),
|
|
28
|
-
width = _Dimensions$get.width;
|
|
29
|
-
function CustomCamera(_ref) {
|
|
30
|
-
var onPhotoCaptured = _ref.onPhotoCaptured;
|
|
31
|
-
var _useState = (0, _react.useState)(false),
|
|
32
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
33
|
-
isReady = _useState2[0],
|
|
34
|
-
setIsReady = _useState2[1];
|
|
35
|
-
var _useState3 = (0, _react.useState)(false),
|
|
36
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
37
|
-
loadingBeforeCapture = _useState4[0],
|
|
38
|
-
setLoadingBeforeCapture = _useState4[1];
|
|
39
|
-
var _useState5 = (0, _react.useState)(null),
|
|
40
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
41
|
-
hasPermission = _useState6[0],
|
|
42
|
-
setHasPermission = _useState6[1];
|
|
43
|
-
var cameraRef = (0, _react.useRef)(null);
|
|
44
|
-
(0, _react.useEffect)(function () {
|
|
45
|
-
_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
46
|
-
var _yield$Camera$request, status;
|
|
47
|
-
return _regenerator().w(function (_context) {
|
|
48
|
-
while (1) switch (_context.n) {
|
|
49
|
-
case 0:
|
|
50
|
-
_context.n = 1;
|
|
51
|
-
return _expoCamera.Camera.requestCameraPermissionsAsync();
|
|
52
|
-
case 1:
|
|
53
|
-
_yield$Camera$request = _context.v;
|
|
54
|
-
status = _yield$Camera$request.status;
|
|
55
|
-
setHasPermission(status === 'granted');
|
|
56
|
-
case 2:
|
|
57
|
-
return _context.a(2);
|
|
58
|
-
}
|
|
59
|
-
}, _callee);
|
|
60
|
-
}))();
|
|
61
|
-
}, []);
|
|
62
|
-
var takePicture = /*#__PURE__*/function () {
|
|
63
|
-
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
|
|
64
|
-
var photo, _t;
|
|
65
|
-
return _regenerator().w(function (_context2) {
|
|
66
|
-
while (1) switch (_context2.p = _context2.n) {
|
|
67
|
-
case 0:
|
|
68
|
-
if (!cameraRef.current) {
|
|
69
|
-
_context2.n = 4;
|
|
70
|
-
break;
|
|
71
|
-
}
|
|
72
|
-
_context2.p = 1;
|
|
73
|
-
setLoadingBeforeCapture(true);
|
|
74
|
-
_context2.n = 2;
|
|
75
|
-
return cameraRef.current.takePictureAsync({
|
|
76
|
-
quality: 1,
|
|
77
|
-
imageType: 'jpg'
|
|
78
|
-
});
|
|
79
|
-
case 2:
|
|
80
|
-
photo = _context2.v;
|
|
81
|
-
onPhotoCaptured(photo.uri);
|
|
82
|
-
setLoadingBeforeCapture(false);
|
|
83
|
-
_context2.n = 4;
|
|
84
|
-
break;
|
|
85
|
-
case 3:
|
|
86
|
-
_context2.p = 3;
|
|
87
|
-
_t = _context2.v;
|
|
88
|
-
setLoadingBeforeCapture(false);
|
|
89
|
-
console.log('Camera takePictureAsync error:', _t);
|
|
90
|
-
_reactNative.Alert.alert("Erreur", (_t === null || _t === void 0 ? void 0 : _t.message) || 'Capture failed');
|
|
91
|
-
case 4:
|
|
92
|
-
return _context2.a(2);
|
|
93
|
-
}
|
|
94
|
-
}, _callee2, null, [[1, 3]]);
|
|
95
|
-
}));
|
|
96
|
-
return function takePicture() {
|
|
97
|
-
return _ref3.apply(this, arguments);
|
|
98
|
-
};
|
|
99
|
-
}();
|
|
100
|
-
return /*#__PURE__*/_react["default"].createElement(_reactNative.SafeAreaView, {
|
|
101
|
-
style: styles.outerContainer
|
|
102
|
-
}, /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
103
|
-
style: styles.cameraWrapper
|
|
104
|
-
}, /*#__PURE__*/_react["default"].createElement(_expoCamera.CameraView, {
|
|
105
|
-
style: styles.camera,
|
|
106
|
-
facing: "back",
|
|
107
|
-
ref: cameraRef,
|
|
108
|
-
onCameraReady: function onCameraReady() {
|
|
109
|
-
return setIsReady(true);
|
|
110
|
-
}
|
|
111
|
-
}), loadingBeforeCapture && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
112
|
-
style: styles.loadingOverlay
|
|
113
|
-
}, /*#__PURE__*/_react["default"].createElement(_reactNative.Image, {
|
|
114
|
-
source: require('../src/assets/loadingCamera.gif'),
|
|
115
|
-
style: styles.loadingGif,
|
|
116
|
-
resizeMode: "contain"
|
|
117
|
-
})), /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
118
|
-
style: styles.touchBlocker,
|
|
119
|
-
pointerEvents: "auto"
|
|
120
|
-
})), /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
121
|
-
style: styles.scanFrame
|
|
122
|
-
})), /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
123
|
-
style: styles.buttonContainer
|
|
124
|
-
}, /*#__PURE__*/_react["default"].createElement(_reactNative.TouchableOpacity, {
|
|
125
|
-
style: styles.button,
|
|
126
|
-
onPress: takePicture,
|
|
127
|
-
disabled: !isReady || loadingBeforeCapture
|
|
128
|
-
})));
|
|
129
|
-
}
|
|
130
|
-
var PRIMARY_GREEN = '#198754';
|
|
131
|
-
var DEEP_BLACK = '#0B0B0B';
|
|
132
|
-
var GLOW_WHITE = 'rgba(255, 255, 255, 0.85)';
|
|
133
|
-
var styles = _reactNative.StyleSheet.create({
|
|
134
|
-
outerContainer: {
|
|
135
|
-
flex: 1,
|
|
136
|
-
backgroundColor: DEEP_BLACK,
|
|
137
|
-
justifyContent: 'center',
|
|
138
|
-
alignItems: 'center'
|
|
139
|
-
},
|
|
140
|
-
cameraWrapper: {
|
|
141
|
-
width: width,
|
|
142
|
-
aspectRatio: 9 / 16,
|
|
143
|
-
borderRadius: 30,
|
|
144
|
-
overflow: 'hidden',
|
|
145
|
-
alignItems: 'center',
|
|
146
|
-
justifyContent: 'center',
|
|
147
|
-
position: 'relative'
|
|
148
|
-
},
|
|
149
|
-
camera: _objectSpread({}, _reactNative.StyleSheet.absoluteFillObject),
|
|
150
|
-
scanFrame: {
|
|
151
|
-
position: 'absolute',
|
|
152
|
-
width: '95%',
|
|
153
|
-
height: '80%',
|
|
154
|
-
borderWidth: 4,
|
|
155
|
-
borderColor: PRIMARY_GREEN,
|
|
156
|
-
borderRadius: 5,
|
|
157
|
-
backgroundColor: 'rgba(255,255,255,0.2)'
|
|
158
|
-
},
|
|
159
|
-
loadingOverlay: _objectSpread(_objectSpread({}, _reactNative.StyleSheet.absoluteFillObject), {}, {
|
|
160
|
-
backgroundColor: 'rgba(0, 0, 0, 0.5)',
|
|
161
|
-
zIndex: 20,
|
|
162
|
-
justifyContent: 'center',
|
|
163
|
-
alignItems: 'center'
|
|
164
|
-
}),
|
|
165
|
-
loadingGif: {
|
|
166
|
-
width: 100,
|
|
167
|
-
height: 100
|
|
168
|
-
},
|
|
169
|
-
touchBlocker: _objectSpread(_objectSpread({}, _reactNative.StyleSheet.absoluteFillObject), {}, {
|
|
170
|
-
zIndex: 21,
|
|
171
|
-
backgroundColor: 'transparent'
|
|
172
|
-
}),
|
|
173
|
-
cancelIcon: {
|
|
174
|
-
position: 'absolute',
|
|
175
|
-
top: 20,
|
|
176
|
-
left: 20,
|
|
177
|
-
backgroundColor: PRIMARY_GREEN,
|
|
178
|
-
borderRadius: 5,
|
|
179
|
-
padding: 8
|
|
180
|
-
},
|
|
181
|
-
buttonContainer: {
|
|
182
|
-
position: 'absolute',
|
|
183
|
-
bottom: 0,
|
|
184
|
-
marginBottom: 20,
|
|
185
|
-
flexDirection: 'row',
|
|
186
|
-
justifyContent: 'center'
|
|
187
|
-
},
|
|
188
|
-
button: {
|
|
189
|
-
width: 80,
|
|
190
|
-
height: 80,
|
|
191
|
-
borderRadius: 50,
|
|
192
|
-
backgroundColor: GLOW_WHITE,
|
|
193
|
-
borderWidth: 5,
|
|
194
|
-
borderColor: PRIMARY_GREEN,
|
|
195
|
-
alignItems: 'center',
|
|
196
|
-
justifyContent: 'center'
|
|
197
|
-
},
|
|
198
|
-
text: {
|
|
199
|
-
fontSize: 18,
|
|
200
|
-
color: GLOW_WHITE
|
|
201
|
-
},
|
|
202
|
-
container: {
|
|
203
|
-
flex: 1,
|
|
204
|
-
backgroundColor: DEEP_BLACK,
|
|
205
|
-
justifyContent: 'center',
|
|
206
|
-
alignItems: 'center',
|
|
207
|
-
padding: 20
|
|
208
|
-
},
|
|
209
|
-
iconText: {
|
|
210
|
-
fontSize: 18,
|
|
211
|
-
color: GLOW_WHITE,
|
|
212
|
-
fontWeight: '600'
|
|
213
|
-
}
|
|
214
|
-
});
|
package/lib/ImageCropper.js
DELETED
|
@@ -1,338 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports["default"] = void 0;
|
|
8
|
-
var _ImageCropperStyles = _interopRequireDefault(require("./ImageCropperStyles"));
|
|
9
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
-
var _reactNative = require("react-native");
|
|
11
|
-
var _reactNativeSvg = _interopRequireWildcard(require("react-native-svg"));
|
|
12
|
-
var _reactNativeViewShot = require("react-native-view-shot");
|
|
13
|
-
var _CustomCamera = _interopRequireDefault(require("./CustomCamera"));
|
|
14
|
-
var _ImageProcessor = require("./ImageProcessor");
|
|
15
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(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 (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
|
|
16
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
17
|
-
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
18
|
-
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
19
|
-
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
20
|
-
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
21
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
22
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
23
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
24
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
25
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
26
|
-
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
27
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
28
|
-
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
29
|
-
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
30
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
31
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
32
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
33
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
34
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
35
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
36
|
-
var ImageCropper = function ImageCropper(_ref) {
|
|
37
|
-
var onConfirm = _ref.onConfirm,
|
|
38
|
-
onCrop = _ref.onCrop,
|
|
39
|
-
openCameraFirst = _ref.openCameraFirst,
|
|
40
|
-
initialImage = _ref.initialImage,
|
|
41
|
-
addheight = _ref.addheight;
|
|
42
|
-
var _useState = (0, _react.useState)(null),
|
|
43
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
44
|
-
image = _useState2[0],
|
|
45
|
-
setImage = _useState2[1];
|
|
46
|
-
var _useState3 = (0, _react.useState)([]),
|
|
47
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
48
|
-
points = _useState4[0],
|
|
49
|
-
setPoints = _useState4[1];
|
|
50
|
-
var _useState5 = (0, _react.useState)(false),
|
|
51
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
52
|
-
showResult = _useState6[0],
|
|
53
|
-
setShowResult = _useState6[1];
|
|
54
|
-
var _useState7 = (0, _react.useState)(false),
|
|
55
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
56
|
-
showCustomCamera = _useState8[0],
|
|
57
|
-
setShowCustomCamera = _useState8[1];
|
|
58
|
-
var viewRef = (0, _react.useRef)(null);
|
|
59
|
-
var imageMeasure = (0, _react.useRef)({
|
|
60
|
-
x: 0,
|
|
61
|
-
y: 0,
|
|
62
|
-
width: 0,
|
|
63
|
-
height: 0
|
|
64
|
-
});
|
|
65
|
-
var selectedPointIndex = (0, _react.useRef)(null);
|
|
66
|
-
var lastTap = (0, _react.useRef)(null);
|
|
67
|
-
var _useState9 = (0, _react.useState)(false),
|
|
68
|
-
_useState0 = _slicedToArray(_useState9, 2),
|
|
69
|
-
isLoading = _useState0[0],
|
|
70
|
-
setIsLoading = _useState0[1];
|
|
71
|
-
var _useState1 = (0, _react.useState)(false),
|
|
72
|
-
_useState10 = _slicedToArray(_useState1, 2),
|
|
73
|
-
showFullScreenCapture = _useState10[0],
|
|
74
|
-
setShowFullScreenCapture = _useState10[1];
|
|
75
|
-
var lastValidPosition = (0, _react.useRef)(null);
|
|
76
|
-
(0, _react.useEffect)(function () {
|
|
77
|
-
if (openCameraFirst) {
|
|
78
|
-
setShowCustomCamera(true);
|
|
79
|
-
} else if (initialImage) {
|
|
80
|
-
setImage(initialImage);
|
|
81
|
-
}
|
|
82
|
-
}, [openCameraFirst, initialImage]);
|
|
83
|
-
(0, _react.useEffect)(function () {
|
|
84
|
-
if (!image) return;
|
|
85
|
-
_reactNative.Image.getSize(image, function (imgWidth, imgHeight) {
|
|
86
|
-
var screenRatio = SCREEN_WIDTH / SCREEN_HEIGHT;
|
|
87
|
-
var imageRatio = imgWidth / imgHeight;
|
|
88
|
-
if (imageRatio > screenRatio) {
|
|
89
|
-
imageMeasure.current = {
|
|
90
|
-
width: SCREEN_WIDTH,
|
|
91
|
-
height: SCREEN_WIDTH / imageRatio
|
|
92
|
-
};
|
|
93
|
-
} else {
|
|
94
|
-
imageMeasure.current = {
|
|
95
|
-
width: SCREEN_HEIGHT * imageRatio,
|
|
96
|
-
height: SCREEN_HEIGHT
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
}, [image]);
|
|
101
|
-
var initializeCropBox = function initializeCropBox() {
|
|
102
|
-
var _imageMeasure$current = imageMeasure.current,
|
|
103
|
-
width = _imageMeasure$current.width,
|
|
104
|
-
height = _imageMeasure$current.height;
|
|
105
|
-
// if (width === 0 || height === 0 || points.length > 0) return;
|
|
106
|
-
var boxWidth = width * 0.6;
|
|
107
|
-
var boxHeight = height * 0.6;
|
|
108
|
-
var centerX = width / 2;
|
|
109
|
-
var centerY = height / 2;
|
|
110
|
-
setPoints([{
|
|
111
|
-
x: centerX - boxWidth / 2,
|
|
112
|
-
y: centerY - boxHeight / 2
|
|
113
|
-
}, {
|
|
114
|
-
x: centerX + boxWidth / 2,
|
|
115
|
-
y: centerY - boxHeight / 2
|
|
116
|
-
}, {
|
|
117
|
-
x: centerX + boxWidth / 2,
|
|
118
|
-
y: centerY + boxHeight / 2
|
|
119
|
-
}, {
|
|
120
|
-
x: centerX - boxWidth / 2,
|
|
121
|
-
y: centerY + boxHeight / 2
|
|
122
|
-
}]);
|
|
123
|
-
};
|
|
124
|
-
var onImageLayout = function onImageLayout(e) {
|
|
125
|
-
var layout = e.nativeEvent.layout;
|
|
126
|
-
imageMeasure.current = {
|
|
127
|
-
x: layout.x,
|
|
128
|
-
y: layout.y,
|
|
129
|
-
width: layout.width,
|
|
130
|
-
height: layout.height
|
|
131
|
-
};
|
|
132
|
-
initializeCropBox();
|
|
133
|
-
};
|
|
134
|
-
var createPath = function createPath() {
|
|
135
|
-
if (points.length < 1) return '';
|
|
136
|
-
var path = "M ".concat(points[0].x, " ").concat(points[0].y, " ");
|
|
137
|
-
points.forEach(function (point) {
|
|
138
|
-
return path += "L ".concat(point.x, " ").concat(point.y, " ");
|
|
139
|
-
});
|
|
140
|
-
return path + 'Z';
|
|
141
|
-
};
|
|
142
|
-
var handleTap = function handleTap(e) {
|
|
143
|
-
if (!image || showResult) return;
|
|
144
|
-
var now = Date.now();
|
|
145
|
-
var _e$nativeEvent = e.nativeEvent,
|
|
146
|
-
tapX = _e$nativeEvent.locationX,
|
|
147
|
-
tapY = _e$nativeEvent.locationY;
|
|
148
|
-
if (lastTap.current && now - lastTap.current < 300) {
|
|
149
|
-
var exists = points.some(function (p) {
|
|
150
|
-
return Math.abs(p.x - tapX) < 15 && Math.abs(p.y - tapY) < 15;
|
|
151
|
-
});
|
|
152
|
-
if (!exists) setPoints([].concat(_toConsumableArray(points), [{
|
|
153
|
-
x: tapX,
|
|
154
|
-
y: tapY
|
|
155
|
-
}]));
|
|
156
|
-
lastTap.current = null;
|
|
157
|
-
} else {
|
|
158
|
-
var index = points.findIndex(function (p) {
|
|
159
|
-
return Math.abs(p.x - tapX) < 20 && Math.abs(p.y - tapY) < 20;
|
|
160
|
-
});
|
|
161
|
-
if (index !== -1) {
|
|
162
|
-
selectedPointIndex.current = index;
|
|
163
|
-
lastValidPosition.current = _objectSpread({}, points[index]); // store original position before move
|
|
164
|
-
}
|
|
165
|
-
lastTap.current = now;
|
|
166
|
-
}
|
|
167
|
-
};
|
|
168
|
-
var handleMove = function handleMove(e) {
|
|
169
|
-
if (showResult || selectedPointIndex.current === null) return;
|
|
170
|
-
var _e$nativeEvent2 = e.nativeEvent,
|
|
171
|
-
moveX = _e$nativeEvent2.locationX,
|
|
172
|
-
moveY = _e$nativeEvent2.locationY;
|
|
173
|
-
var width = imageMeasure.current.width;
|
|
174
|
-
var height = imageMeasure.current.height;
|
|
175
|
-
var boundedX = Math.max(0, Math.min(moveX, width));
|
|
176
|
-
var boundedY = Math.max(0, Math.min(moveY, height));
|
|
177
|
-
var edgeThreshold = 10;
|
|
178
|
-
var isNearTopOrBottomEdge = boundedY <= edgeThreshold || boundedY >= height - edgeThreshold;
|
|
179
|
-
var isNearLeftOrRightEdge = boundedX <= edgeThreshold || boundedX >= width - edgeThreshold;
|
|
180
|
-
if (isNearTopOrBottomEdge || isNearLeftOrRightEdge) {
|
|
181
|
-
// Reset point to last known position
|
|
182
|
-
if (lastValidPosition.current && selectedPointIndex.current !== null) {
|
|
183
|
-
setPoints(function (prev) {
|
|
184
|
-
return prev.map(function (p, i) {
|
|
185
|
-
return i === selectedPointIndex.current ? lastValidPosition.current : p;
|
|
186
|
-
});
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
selectedPointIndex.current = null;
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
// Valid move — update point and store as new last valid position
|
|
194
|
-
var updatedPoint = {
|
|
195
|
-
x: boundedX,
|
|
196
|
-
y: boundedY
|
|
197
|
-
};
|
|
198
|
-
lastValidPosition.current = updatedPoint;
|
|
199
|
-
setPoints(function (prev) {
|
|
200
|
-
return prev.map(function (p, i) {
|
|
201
|
-
return i === selectedPointIndex.current ? updatedPoint : p;
|
|
202
|
-
});
|
|
203
|
-
});
|
|
204
|
-
};
|
|
205
|
-
var handleRelease = function handleRelease() {
|
|
206
|
-
selectedPointIndex.current = null;
|
|
207
|
-
};
|
|
208
|
-
var handleReset = function handleReset() {
|
|
209
|
-
// setPoints([]);
|
|
210
|
-
initializeCropBox();
|
|
211
|
-
};
|
|
212
|
-
return /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
213
|
-
style: _ImageCropperStyles["default"].container
|
|
214
|
-
}, showCustomCamera ? /*#__PURE__*/_react["default"].createElement(_CustomCamera["default"], {
|
|
215
|
-
onPhotoCaptured: function onPhotoCaptured(uri) {
|
|
216
|
-
setImage(uri);
|
|
217
|
-
setShowCustomCamera(false);
|
|
218
|
-
},
|
|
219
|
-
onCancel: function onCancel() {
|
|
220
|
-
return setShowCustomCamera(false);
|
|
221
|
-
}
|
|
222
|
-
}) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !showResult && /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
223
|
-
style: image ? _ImageCropperStyles["default"].buttonContainer : _ImageCropperStyles["default"].centerButtonsContainer
|
|
224
|
-
}, image && /*#__PURE__*/_react["default"].createElement(_reactNative.TouchableOpacity, {
|
|
225
|
-
style: _ImageCropperStyles["default"].button,
|
|
226
|
-
onPress: handleReset
|
|
227
|
-
}, /*#__PURE__*/_react["default"].createElement(_reactNative.Text, {
|
|
228
|
-
style: _ImageCropperStyles["default"].buttonText
|
|
229
|
-
}, "Reset")), image && /*#__PURE__*/_react["default"].createElement(_reactNative.TouchableOpacity, {
|
|
230
|
-
style: _ImageCropperStyles["default"].button,
|
|
231
|
-
onPress: /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
232
|
-
var capturedUri, finalUri, name, callback, _t;
|
|
233
|
-
return _regenerator().w(function (_context) {
|
|
234
|
-
while (1) switch (_context.p = _context.n) {
|
|
235
|
-
case 0:
|
|
236
|
-
if (!(!image || !viewRef.current)) {
|
|
237
|
-
_context.n = 1;
|
|
238
|
-
break;
|
|
239
|
-
}
|
|
240
|
-
console.error('Image or view ref not ready for capture');
|
|
241
|
-
alert('Vue non prête pour la capture');
|
|
242
|
-
return _context.a(2);
|
|
243
|
-
case 1:
|
|
244
|
-
setIsLoading(true);
|
|
245
|
-
setShowResult(true);
|
|
246
|
-
_context.p = 2;
|
|
247
|
-
_context.n = 3;
|
|
248
|
-
return new Promise(function (resolve) {
|
|
249
|
-
return setTimeout(resolve, 100);
|
|
250
|
-
});
|
|
251
|
-
case 3:
|
|
252
|
-
_context.n = 4;
|
|
253
|
-
return (0, _reactNativeViewShot.captureRef)(viewRef.current, {
|
|
254
|
-
format: 'jpg',
|
|
255
|
-
quality: 1,
|
|
256
|
-
result: 'tmpfile'
|
|
257
|
-
});
|
|
258
|
-
case 4:
|
|
259
|
-
capturedUri = _context.v;
|
|
260
|
-
_context.n = 5;
|
|
261
|
-
return (0, _ImageProcessor.enhanceImage)(capturedUri, addheight);
|
|
262
|
-
case 5:
|
|
263
|
-
finalUri = _context.v;
|
|
264
|
-
name = "IMAGE XTK".concat(Date.now(), ".jpg");
|
|
265
|
-
callback = typeof onConfirm === 'function' ? onConfirm : typeof onCrop === 'function' ? onCrop : null;
|
|
266
|
-
if (callback && finalUri) {
|
|
267
|
-
setTimeout(function () {
|
|
268
|
-
return callback(finalUri, name);
|
|
269
|
-
}, 0);
|
|
270
|
-
}
|
|
271
|
-
_context.n = 7;
|
|
272
|
-
break;
|
|
273
|
-
case 6:
|
|
274
|
-
_context.p = 6;
|
|
275
|
-
_t = _context.v;
|
|
276
|
-
console.error('Erreur lors de la capture :', _t);
|
|
277
|
-
alert("Erreur lors de la capture !\n".concat(String(_t)));
|
|
278
|
-
case 7:
|
|
279
|
-
_context.p = 7;
|
|
280
|
-
setShowResult(false);
|
|
281
|
-
setIsLoading(false);
|
|
282
|
-
setShowFullScreenCapture(false);
|
|
283
|
-
return _context.f(7);
|
|
284
|
-
case 8:
|
|
285
|
-
return _context.a(2);
|
|
286
|
-
}
|
|
287
|
-
}, _callee, null, [[2, 6, 7, 8]]);
|
|
288
|
-
}))
|
|
289
|
-
}, /*#__PURE__*/_react["default"].createElement(_reactNative.Text, {
|
|
290
|
-
style: _ImageCropperStyles["default"].buttonText
|
|
291
|
-
}, "Confirm"))), image && /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
292
|
-
ref: viewRef,
|
|
293
|
-
collapsable: false,
|
|
294
|
-
style: showFullScreenCapture ? _ImageCropperStyles["default"].fullscreenImageContainer : _ImageCropperStyles["default"].imageContainer,
|
|
295
|
-
onStartShouldSetResponder: function onStartShouldSetResponder() {
|
|
296
|
-
return true;
|
|
297
|
-
},
|
|
298
|
-
onResponderStart: handleTap,
|
|
299
|
-
onResponderMove: handleMove,
|
|
300
|
-
onResponderRelease: handleRelease
|
|
301
|
-
}, /*#__PURE__*/_react["default"].createElement(_reactNative.Image, {
|
|
302
|
-
source: {
|
|
303
|
-
uri: image
|
|
304
|
-
},
|
|
305
|
-
style: _ImageCropperStyles["default"].image,
|
|
306
|
-
onLayout: onImageLayout
|
|
307
|
-
}), /*#__PURE__*/_react["default"].createElement(_reactNativeSvg["default"], {
|
|
308
|
-
style: _ImageCropperStyles["default"].overlay
|
|
309
|
-
}, /*#__PURE__*/_react["default"].createElement(_reactNativeSvg.Path, {
|
|
310
|
-
d: "M 0 0 H ".concat(imageMeasure.current.width, " V ").concat(imageMeasure.current.height, " H 0 Z ").concat(createPath()),
|
|
311
|
-
fill: showResult ? 'white' : 'rgba(255, 255, 255, 0.8)',
|
|
312
|
-
fillRule: "evenodd"
|
|
313
|
-
}), !showResult && points.length > 0 && /*#__PURE__*/_react["default"].createElement(_reactNativeSvg.Path, {
|
|
314
|
-
d: createPath(),
|
|
315
|
-
fill: "transparent",
|
|
316
|
-
stroke: "white",
|
|
317
|
-
strokeWidth: 2
|
|
318
|
-
}), !showResult && points.map(function (point, index) {
|
|
319
|
-
return /*#__PURE__*/_react["default"].createElement(_reactNativeSvg.Circle, {
|
|
320
|
-
key: index,
|
|
321
|
-
cx: point.x,
|
|
322
|
-
cy: point.y,
|
|
323
|
-
r: 10,
|
|
324
|
-
fill: "white"
|
|
325
|
-
});
|
|
326
|
-
})))), /*#__PURE__*/_react["default"].createElement(_reactNative.Modal, {
|
|
327
|
-
visible: isLoading,
|
|
328
|
-
transparent: true,
|
|
329
|
-
animationType: "fade"
|
|
330
|
-
}, /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
331
|
-
style: _ImageCropperStyles["default"].loadingOverlay
|
|
332
|
-
}, /*#__PURE__*/_react["default"].createElement(_reactNative.Image, {
|
|
333
|
-
source: require('../src/assets/loadingCamera.gif'),
|
|
334
|
-
style: _ImageCropperStyles["default"].loadingGif,
|
|
335
|
-
resizeMode: "contain"
|
|
336
|
-
}))));
|
|
337
|
-
};
|
|
338
|
-
var _default = exports["default"] = ImageCropper;
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _reactNative = require("react-native");
|
|
8
|
-
var _Dimensions$get = _reactNative.Dimensions.get('window'),
|
|
9
|
-
SCREEN_WIDTH = _Dimensions$get.width,
|
|
10
|
-
SCREEN_HEIGHT = _Dimensions$get.height;
|
|
11
|
-
var IMAGE_HEIGHT = SCREEN_HEIGHT;
|
|
12
|
-
var IMAGE_WIDTH = SCREEN_WIDTH;
|
|
13
|
-
var PRIMARY_GREEN = '#198754';
|
|
14
|
-
var DEEP_BLACK = '#0B0B0B';
|
|
15
|
-
var GLOW_WHITE = 'rgba(255, 255, 255, 0.85)';
|
|
16
|
-
var styles = _reactNative.StyleSheet.create({
|
|
17
|
-
container: {
|
|
18
|
-
flex: 1,
|
|
19
|
-
alignItems: 'center',
|
|
20
|
-
backgroundColor: DEEP_BLACK
|
|
21
|
-
},
|
|
22
|
-
buttonContainer: {
|
|
23
|
-
position: 'absolute',
|
|
24
|
-
bottom: 50,
|
|
25
|
-
left: 0,
|
|
26
|
-
right: 0,
|
|
27
|
-
flexDirection: 'row',
|
|
28
|
-
flexWrap: 'wrap',
|
|
29
|
-
justifyContent: 'center',
|
|
30
|
-
alignItems: 'center',
|
|
31
|
-
paddingHorizontal: 10,
|
|
32
|
-
zIndex: 10
|
|
33
|
-
},
|
|
34
|
-
button: {
|
|
35
|
-
flex: 1,
|
|
36
|
-
width: "100%",
|
|
37
|
-
padding: 10,
|
|
38
|
-
alignItems: "center",
|
|
39
|
-
justifyContent: "center",
|
|
40
|
-
backgroundColor: "#549433",
|
|
41
|
-
borderRadius: 5,
|
|
42
|
-
marginBottom: 20,
|
|
43
|
-
marginRight: 5
|
|
44
|
-
},
|
|
45
|
-
buttonText: {
|
|
46
|
-
color: 'white',
|
|
47
|
-
fontSize: 18,
|
|
48
|
-
fontWeight: '600',
|
|
49
|
-
textAlign: 'center'
|
|
50
|
-
},
|
|
51
|
-
iconText: {
|
|
52
|
-
color: PRIMARY_GREEN,
|
|
53
|
-
fontSize: 16,
|
|
54
|
-
fontWeight: '600',
|
|
55
|
-
textAlign: 'center'
|
|
56
|
-
},
|
|
57
|
-
imageContainer: {
|
|
58
|
-
width: IMAGE_WIDTH,
|
|
59
|
-
height: "80%",
|
|
60
|
-
justifyContent: 'center',
|
|
61
|
-
alignItems: 'center',
|
|
62
|
-
overflow: 'hidden',
|
|
63
|
-
backgroundColor: 'black'
|
|
64
|
-
},
|
|
65
|
-
image: {
|
|
66
|
-
width: '100%',
|
|
67
|
-
height: '100%',
|
|
68
|
-
resizeMode: 'contain'
|
|
69
|
-
},
|
|
70
|
-
overlay: {
|
|
71
|
-
position: 'absolute',
|
|
72
|
-
top: 0,
|
|
73
|
-
left: 0,
|
|
74
|
-
width: '100%',
|
|
75
|
-
height: '100%',
|
|
76
|
-
zIndex: 1
|
|
77
|
-
},
|
|
78
|
-
croppedImage: {
|
|
79
|
-
width: IMAGE_WIDTH,
|
|
80
|
-
height: IMAGE_HEIGHT,
|
|
81
|
-
resizeMode: 'cover',
|
|
82
|
-
marginTop: 10,
|
|
83
|
-
borderWidth: 2,
|
|
84
|
-
borderColor: 'white',
|
|
85
|
-
borderRadius: 10
|
|
86
|
-
},
|
|
87
|
-
fixedButtonContainer: {
|
|
88
|
-
position: 'absolute',
|
|
89
|
-
bottom: 100,
|
|
90
|
-
left: 0,
|
|
91
|
-
right: 0,
|
|
92
|
-
flexDirection: 'row',
|
|
93
|
-
justifyContent: 'center',
|
|
94
|
-
flexWrap: 'wrap',
|
|
95
|
-
gap: 10,
|
|
96
|
-
paddingHorizontal: 10
|
|
97
|
-
},
|
|
98
|
-
fixedButton: {
|
|
99
|
-
backgroundColor: PRIMARY_GREEN,
|
|
100
|
-
paddingVertical: 18,
|
|
101
|
-
paddingHorizontal: 30,
|
|
102
|
-
borderRadius: 12,
|
|
103
|
-
margin: 6,
|
|
104
|
-
alignItems: 'center',
|
|
105
|
-
justifyContent: 'center',
|
|
106
|
-
borderWidth: 0,
|
|
107
|
-
width: SCREEN_WIDTH * 0.4,
|
|
108
|
-
height: 60
|
|
109
|
-
},
|
|
110
|
-
centerButtonsContainer: {
|
|
111
|
-
position: 'absolute',
|
|
112
|
-
bottom: 20,
|
|
113
|
-
left: 0,
|
|
114
|
-
right: 0,
|
|
115
|
-
alignItems: 'center',
|
|
116
|
-
justifyContent: 'center',
|
|
117
|
-
zIndex: 10,
|
|
118
|
-
gap: 10
|
|
119
|
-
},
|
|
120
|
-
welcomeText: {
|
|
121
|
-
position: 'absolute',
|
|
122
|
-
top: '40%',
|
|
123
|
-
left: 20,
|
|
124
|
-
right: 20,
|
|
125
|
-
textAlign: 'center',
|
|
126
|
-
color: GLOW_WHITE,
|
|
127
|
-
fontSize: 40,
|
|
128
|
-
fontWeight: '800',
|
|
129
|
-
zIndex: 10
|
|
130
|
-
},
|
|
131
|
-
startButton: {
|
|
132
|
-
backgroundColor: PRIMARY_GREEN,
|
|
133
|
-
paddingVertical: 18,
|
|
134
|
-
paddingHorizontal: 30,
|
|
135
|
-
borderRadius: 12,
|
|
136
|
-
margin: 6,
|
|
137
|
-
alignItems: 'center',
|
|
138
|
-
justifyContent: 'center',
|
|
139
|
-
borderWidth: 0,
|
|
140
|
-
width: SCREEN_WIDTH * 0.9,
|
|
141
|
-
height: 70
|
|
142
|
-
},
|
|
143
|
-
startButtonText: {
|
|
144
|
-
color: 'white',
|
|
145
|
-
fontSize: 18,
|
|
146
|
-
fontWeight: '600',
|
|
147
|
-
textAlign: 'center'
|
|
148
|
-
},
|
|
149
|
-
loadingOverlay: {
|
|
150
|
-
flex: 1,
|
|
151
|
-
backgroundColor: 'rgba(0,0,0,0.5)',
|
|
152
|
-
justifyContent: 'center',
|
|
153
|
-
alignItems: 'center',
|
|
154
|
-
position: 'absolute',
|
|
155
|
-
top: 0,
|
|
156
|
-
bottom: 0,
|
|
157
|
-
left: 0,
|
|
158
|
-
right: 0,
|
|
159
|
-
zIndex: 9999
|
|
160
|
-
},
|
|
161
|
-
loadingGif: {
|
|
162
|
-
width: 120,
|
|
163
|
-
height: 120
|
|
164
|
-
},
|
|
165
|
-
fullscreenImageContainer: {
|
|
166
|
-
position: 'absolute',
|
|
167
|
-
top: 0,
|
|
168
|
-
left: 0,
|
|
169
|
-
width: SCREEN_WIDTH,
|
|
170
|
-
height: SCREEN_HEIGHT,
|
|
171
|
-
backgroundColor: 'black',
|
|
172
|
-
justifyContent: 'center',
|
|
173
|
-
alignItems: 'center',
|
|
174
|
-
zIndex: 9999
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
var _default = exports["default"] = styles;
|
package/lib/ImageProcessor.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.enhanceImage = void 0;
|
|
8
|
-
var ImageManipulator = _interopRequireWildcard(require("expo-image-manipulator"));
|
|
9
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(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 (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
|
|
10
|
-
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
11
|
-
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
12
|
-
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
13
|
-
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
14
|
-
var enhanceImage = exports.enhanceImage = /*#__PURE__*/function () {
|
|
15
|
-
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(uri, addheight) {
|
|
16
|
-
var imageInfo, ratio, maxHeight, newWidth, newHeight, result, _t;
|
|
17
|
-
return _regenerator().w(function (_context) {
|
|
18
|
-
while (1) switch (_context.p = _context.n) {
|
|
19
|
-
case 0:
|
|
20
|
-
_context.p = 0;
|
|
21
|
-
_context.n = 1;
|
|
22
|
-
return ImageManipulator.manipulateAsync(uri, []);
|
|
23
|
-
case 1:
|
|
24
|
-
imageInfo = _context.v;
|
|
25
|
-
ratio = imageInfo.height / imageInfo.width;
|
|
26
|
-
maxHeight = addheight;
|
|
27
|
-
newWidth = Math.round(maxHeight / ratio);
|
|
28
|
-
newHeight = Math.round(newWidth * ratio);
|
|
29
|
-
_context.n = 2;
|
|
30
|
-
return ImageManipulator.manipulateAsync(uri, [{
|
|
31
|
-
resize: {
|
|
32
|
-
width: newWidth,
|
|
33
|
-
height: newHeight
|
|
34
|
-
}
|
|
35
|
-
}], {
|
|
36
|
-
compress: 1,
|
|
37
|
-
format: ImageManipulator.SaveFormat.PNG
|
|
38
|
-
});
|
|
39
|
-
case 2:
|
|
40
|
-
result = _context.v;
|
|
41
|
-
return _context.a(2, result.uri);
|
|
42
|
-
case 3:
|
|
43
|
-
_context.p = 3;
|
|
44
|
-
_t = _context.v;
|
|
45
|
-
console.error("Erreur T404K:", _t);
|
|
46
|
-
return _context.a(2, uri);
|
|
47
|
-
}
|
|
48
|
-
}, _callee, null, [[0, 3]]);
|
|
49
|
-
}));
|
|
50
|
-
return function enhanceImage(_x, _x2) {
|
|
51
|
-
return _ref.apply(this, arguments);
|
|
52
|
-
};
|
|
53
|
-
}();
|