react-native-expo-cropper 1.2.36 → 1.2.37
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/babel.config.js +6 -0
- package/dist/CustomCamera.js +343 -245
- package/dist/ImageCropper.js +1620 -513
- package/dist/ImageCropperStyles.js +217 -217
- package/dist/ImageMaskProcessor.js +177 -0
- package/dist/ImageProcessor.js +40 -52
- package/package.json +5 -5
- package/src/CustomCamera.js +93 -18
- package/src/ImageCropper.js +861 -58
package/babel.config.js
ADDED
package/dist/CustomCamera.js
CHANGED
|
@@ -1,246 +1,344 @@
|
|
|
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 _reactNativeSafeAreaContext = require("react-native-safe-area-context");
|
|
11
|
-
var _expoCamera = require("expo-camera");
|
|
12
|
-
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); }
|
|
13
|
-
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; }
|
|
14
|
-
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; }
|
|
15
|
-
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; }
|
|
16
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
17
|
-
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); }
|
|
18
|
-
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 }; })(); }
|
|
19
|
-
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); }
|
|
20
|
-
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); }
|
|
21
|
-
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); }); }; }
|
|
22
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
23
|
-
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."); }
|
|
24
|
-
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; } }
|
|
25
|
-
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; }
|
|
26
|
-
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; } }
|
|
27
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
28
|
-
var _Dimensions$get = _reactNative.Dimensions.get('window'),
|
|
29
|
-
width = _Dimensions$get.width;
|
|
30
|
-
function CustomCamera(_ref) {
|
|
31
|
-
var onPhotoCaptured = _ref.onPhotoCaptured
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
(0, _react.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
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 _reactNativeSafeAreaContext = require("react-native-safe-area-context");
|
|
11
|
+
var _expoCamera = require("expo-camera");
|
|
12
|
+
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); }
|
|
13
|
+
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; }
|
|
14
|
+
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; }
|
|
15
|
+
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; }
|
|
16
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
17
|
+
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); }
|
|
18
|
+
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 }; })(); }
|
|
19
|
+
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); }
|
|
20
|
+
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); }
|
|
21
|
+
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); }); }; }
|
|
22
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
23
|
+
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."); }
|
|
24
|
+
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; } }
|
|
25
|
+
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; }
|
|
26
|
+
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; } }
|
|
27
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
28
|
+
var _Dimensions$get = _reactNative.Dimensions.get('window'),
|
|
29
|
+
width = _Dimensions$get.width;
|
|
30
|
+
function CustomCamera(_ref) {
|
|
31
|
+
var onPhotoCaptured = _ref.onPhotoCaptured,
|
|
32
|
+
onFrameCalculated = _ref.onFrameCalculated;
|
|
33
|
+
var _useState = (0, _react.useState)(false),
|
|
34
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
35
|
+
isReady = _useState2[0],
|
|
36
|
+
setIsReady = _useState2[1];
|
|
37
|
+
var _useState3 = (0, _react.useState)(false),
|
|
38
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
39
|
+
loadingBeforeCapture = _useState4[0],
|
|
40
|
+
setLoadingBeforeCapture = _useState4[1];
|
|
41
|
+
var _useState5 = (0, _react.useState)(null),
|
|
42
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
43
|
+
hasPermission = _useState6[0],
|
|
44
|
+
setHasPermission = _useState6[1];
|
|
45
|
+
var cameraRef = (0, _react.useRef)(null);
|
|
46
|
+
var cameraWrapperRef = (0, _react.useRef)(null);
|
|
47
|
+
var insets = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
|
|
48
|
+
var _useState7 = (0, _react.useState)({
|
|
49
|
+
width: 0,
|
|
50
|
+
height: 0,
|
|
51
|
+
x: 0,
|
|
52
|
+
y: 0
|
|
53
|
+
}),
|
|
54
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
55
|
+
cameraWrapperLayout = _useState8[0],
|
|
56
|
+
setCameraWrapperLayout = _useState8[1];
|
|
57
|
+
var _useState9 = (0, _react.useState)(null),
|
|
58
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
59
|
+
greenFrame = _useState0[0],
|
|
60
|
+
setGreenFrame = _useState0[1];
|
|
61
|
+
(0, _react.useEffect)(function () {
|
|
62
|
+
_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
63
|
+
var _yield$Camera$request, status;
|
|
64
|
+
return _regenerator().w(function (_context) {
|
|
65
|
+
while (1) switch (_context.n) {
|
|
66
|
+
case 0:
|
|
67
|
+
_context.n = 1;
|
|
68
|
+
return _expoCamera.Camera.requestCameraPermissionsAsync();
|
|
69
|
+
case 1:
|
|
70
|
+
_yield$Camera$request = _context.v;
|
|
71
|
+
status = _yield$Camera$request.status;
|
|
72
|
+
setHasPermission(status === 'granted');
|
|
73
|
+
case 2:
|
|
74
|
+
return _context.a(2);
|
|
75
|
+
}
|
|
76
|
+
}, _callee);
|
|
77
|
+
}))();
|
|
78
|
+
}, []);
|
|
79
|
+
|
|
80
|
+
// Helper function to wait for multiple render cycles (works on iOS)
|
|
81
|
+
var waitForRender = function waitForRender() {
|
|
82
|
+
var cycles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 5;
|
|
83
|
+
return new Promise(function (resolve) {
|
|
84
|
+
var count = 0;
|
|
85
|
+
var _tick = function tick() {
|
|
86
|
+
count++;
|
|
87
|
+
if (count >= cycles) {
|
|
88
|
+
resolve();
|
|
89
|
+
} else {
|
|
90
|
+
setImmediate(_tick);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
setImmediate(_tick);
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
// ✅ CRITICAL FIX: Calculate green frame coordinates relative to camera preview
|
|
98
|
+
// The green frame should be calculated on the wrapper (as it's visually drawn there)
|
|
99
|
+
// But we store it with wrapper dimensions so ImageCropper can map it correctly
|
|
100
|
+
var calculateGreenFrameCoordinates = function calculateGreenFrameCoordinates() {
|
|
101
|
+
var wrapperWidth = cameraWrapperLayout.width;
|
|
102
|
+
var wrapperHeight = cameraWrapperLayout.height;
|
|
103
|
+
if (wrapperWidth === 0 || wrapperHeight === 0) {
|
|
104
|
+
console.warn("Camera wrapper layout not ready, cannot calculate green frame");
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// ✅ Green frame dimensions: 80% width, 80% height (centered)
|
|
109
|
+
// The green frame should cover 80% of the image area, centered
|
|
110
|
+
var frameWidth = wrapperWidth * 0.80; // 80% width
|
|
111
|
+
var frameHeight = wrapperHeight * 0.80; // 80% height
|
|
112
|
+
var frameX = (wrapperWidth - frameWidth) / 2; // Centered horizontally
|
|
113
|
+
var frameY = (wrapperHeight - frameHeight) / 2; // Centered vertically
|
|
114
|
+
|
|
115
|
+
var frameCoords = {
|
|
116
|
+
x: frameX,
|
|
117
|
+
y: frameY,
|
|
118
|
+
width: frameWidth,
|
|
119
|
+
height: frameHeight,
|
|
120
|
+
wrapperWidth: wrapperWidth,
|
|
121
|
+
wrapperHeight: wrapperHeight,
|
|
122
|
+
// ✅ Store percentages for easier mapping later
|
|
123
|
+
percentX: frameX / wrapperWidth * 100,
|
|
124
|
+
percentY: frameY / wrapperHeight * 100,
|
|
125
|
+
percentWidth: 80,
|
|
126
|
+
percentHeight: 80
|
|
127
|
+
};
|
|
128
|
+
console.log("✅ Green frame coordinates calculated:", frameCoords);
|
|
129
|
+
return frameCoords;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
// 🔁 Keep green frame state in sync with wrapper layout so we can both render it
|
|
133
|
+
// and send the exact same coordinates along with the captured photo.
|
|
134
|
+
(0, _react.useEffect)(function () {
|
|
135
|
+
var coords = calculateGreenFrameCoordinates();
|
|
136
|
+
if (coords) {
|
|
137
|
+
setGreenFrame(coords);
|
|
138
|
+
}
|
|
139
|
+
}, [cameraWrapperLayout]);
|
|
140
|
+
var takePicture = /*#__PURE__*/function () {
|
|
141
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
|
|
142
|
+
var photo, greenFrameCoords, fixedUri, _t;
|
|
143
|
+
return _regenerator().w(function (_context2) {
|
|
144
|
+
while (1) switch (_context2.p = _context2.n) {
|
|
145
|
+
case 0:
|
|
146
|
+
if (!cameraRef.current) {
|
|
147
|
+
_context2.n = 5;
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
_context2.p = 1;
|
|
151
|
+
// Show loading after a delay (using setImmediate for iOS compatibility)
|
|
152
|
+
waitForRender(5).then(function () {
|
|
153
|
+
setLoadingBeforeCapture(true);
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// Wait a bit before taking picture (works on iOS)
|
|
157
|
+
_context2.n = 2;
|
|
158
|
+
return waitForRender(2);
|
|
159
|
+
case 2:
|
|
160
|
+
_context2.n = 3;
|
|
161
|
+
return cameraRef.current.takePictureAsync({
|
|
162
|
+
quality: 1,
|
|
163
|
+
// Qualité maximale (0-1, 1 = meilleure qualité)
|
|
164
|
+
shutterSound: false,
|
|
165
|
+
// skipProcessing: true = Désactiver le traitement automatique pour préserver la qualité pixel-perfect
|
|
166
|
+
// IMPORTANT : Cela préserve la résolution originale et évite toute interpolation
|
|
167
|
+
skipProcessing: true,
|
|
168
|
+
// exif: true = Inclure les métadonnées EXIF (orientation, etc.)
|
|
169
|
+
// L'orientation sera gérée dans ImageCropper si nécessaire via la fonction de rotation
|
|
170
|
+
exif: true
|
|
171
|
+
});
|
|
172
|
+
case 3:
|
|
173
|
+
photo = _context2.v;
|
|
174
|
+
console.log("Photo captured with maximum quality:", {
|
|
175
|
+
uri: photo.uri,
|
|
176
|
+
width: photo.width,
|
|
177
|
+
height: photo.height,
|
|
178
|
+
exif: photo.exif ? "present" : "missing"
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// ✅ CRITICAL FIX: Use the same green frame coordinates that are used for rendering
|
|
182
|
+
// Fallback to recalculation if, for some reason, state is not yet set
|
|
183
|
+
greenFrameCoords = greenFrame || calculateGreenFrameCoordinates(); // ✅ REFACTORISATION : Utiliser directement l'URI de la photo
|
|
184
|
+
// L'orientation sera gérée dans ImageCropper si l'utilisateur utilise la fonction de rotation
|
|
185
|
+
// skipProcessing: true préserve la qualité mais peut laisser l'orientation EXIF non appliquée
|
|
186
|
+
// C'est acceptable car l'utilisateur peut corriger via la rotation dans ImageCropper
|
|
187
|
+
fixedUri = photo.uri; // Envoyer l'URI et les coordonnées du green frame à ImageCropper
|
|
188
|
+
onPhotoCaptured(fixedUri, {
|
|
189
|
+
greenFrame: greenFrameCoords,
|
|
190
|
+
capturedImageSize: {
|
|
191
|
+
width: photo.width,
|
|
192
|
+
height: photo.height
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
setLoadingBeforeCapture(false);
|
|
196
|
+
_context2.n = 5;
|
|
197
|
+
break;
|
|
198
|
+
case 4:
|
|
199
|
+
_context2.p = 4;
|
|
200
|
+
_t = _context2.v;
|
|
201
|
+
console.error("Error capturing photo:", _t);
|
|
202
|
+
setLoadingBeforeCapture(false);
|
|
203
|
+
_reactNative.Alert.alert("Erreur", "Impossible de capturer la photo. Veuillez réessayer.");
|
|
204
|
+
case 5:
|
|
205
|
+
return _context2.a(2);
|
|
206
|
+
}
|
|
207
|
+
}, _callee2, null, [[1, 4]]);
|
|
208
|
+
}));
|
|
209
|
+
return function takePicture() {
|
|
210
|
+
return _ref3.apply(this, arguments);
|
|
211
|
+
};
|
|
212
|
+
}();
|
|
213
|
+
return /*#__PURE__*/_react["default"].createElement(_reactNative.SafeAreaView, {
|
|
214
|
+
style: styles.outerContainer
|
|
215
|
+
}, /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
216
|
+
style: styles.cameraWrapper,
|
|
217
|
+
ref: cameraWrapperRef,
|
|
218
|
+
onLayout: function onLayout(e) {
|
|
219
|
+
var layout = e.nativeEvent.layout;
|
|
220
|
+
setCameraWrapperLayout({
|
|
221
|
+
width: layout.width,
|
|
222
|
+
height: layout.height,
|
|
223
|
+
x: layout.x,
|
|
224
|
+
y: layout.y
|
|
225
|
+
});
|
|
226
|
+
console.log("Camera wrapper layout updated:", layout);
|
|
227
|
+
}
|
|
228
|
+
}, /*#__PURE__*/_react["default"].createElement(_expoCamera.CameraView, {
|
|
229
|
+
style: styles.camera,
|
|
230
|
+
facing: "back",
|
|
231
|
+
ref: cameraRef,
|
|
232
|
+
onCameraReady: function onCameraReady() {
|
|
233
|
+
return setIsReady(true);
|
|
234
|
+
}
|
|
235
|
+
}), loadingBeforeCapture && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
236
|
+
style: styles.loadingOverlay
|
|
237
|
+
}, /*#__PURE__*/_react["default"].createElement(_reactNative.Image, {
|
|
238
|
+
source: require('../src/assets/loadingCamera.gif'),
|
|
239
|
+
style: styles.loadingGif,
|
|
240
|
+
resizeMode: "contain"
|
|
241
|
+
})), /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
242
|
+
style: styles.touchBlocker,
|
|
243
|
+
pointerEvents: "auto"
|
|
244
|
+
})), greenFrame && /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
245
|
+
style: [styles.scanFrame, {
|
|
246
|
+
left: greenFrame.x,
|
|
247
|
+
top: greenFrame.y,
|
|
248
|
+
width: greenFrame.width,
|
|
249
|
+
height: greenFrame.height
|
|
250
|
+
}]
|
|
251
|
+
})), /*#__PURE__*/_react["default"].createElement(_reactNative.View, {
|
|
252
|
+
style: [styles.buttonContainer, {
|
|
253
|
+
bottom: ((insets === null || insets === void 0 ? void 0 : insets.bottom) || 0) + 16,
|
|
254
|
+
marginBottom: 0
|
|
255
|
+
}]
|
|
256
|
+
}, /*#__PURE__*/_react["default"].createElement(_reactNative.TouchableOpacity, {
|
|
257
|
+
style: styles.button,
|
|
258
|
+
onPress: takePicture,
|
|
259
|
+
disabled: !isReady || loadingBeforeCapture
|
|
260
|
+
})));
|
|
261
|
+
}
|
|
262
|
+
var PRIMARY_GREEN = '#198754';
|
|
263
|
+
var DEEP_BLACK = '#0B0B0B';
|
|
264
|
+
var GLOW_WHITE = 'rgba(255, 255, 255, 0.85)';
|
|
265
|
+
var styles = _reactNative.StyleSheet.create({
|
|
266
|
+
outerContainer: {
|
|
267
|
+
flex: 1,
|
|
268
|
+
backgroundColor: DEEP_BLACK,
|
|
269
|
+
justifyContent: 'center',
|
|
270
|
+
alignItems: 'center'
|
|
271
|
+
},
|
|
272
|
+
cameraWrapper: {
|
|
273
|
+
width: width,
|
|
274
|
+
aspectRatio: 9 / 16,
|
|
275
|
+
borderRadius: 30,
|
|
276
|
+
overflow: 'hidden',
|
|
277
|
+
alignItems: 'center',
|
|
278
|
+
justifyContent: 'center',
|
|
279
|
+
position: 'relative'
|
|
280
|
+
},
|
|
281
|
+
camera: _objectSpread({}, _reactNative.StyleSheet.absoluteFillObject),
|
|
282
|
+
scanFrame: {
|
|
283
|
+
position: 'absolute',
|
|
284
|
+
borderWidth: 4,
|
|
285
|
+
borderColor: PRIMARY_GREEN,
|
|
286
|
+
borderRadius: 5,
|
|
287
|
+
backgroundColor: 'rgba(0, 0, 0, 0.1)'
|
|
288
|
+
},
|
|
289
|
+
loadingOverlay: _objectSpread(_objectSpread({}, _reactNative.StyleSheet.absoluteFillObject), {}, {
|
|
290
|
+
backgroundColor: 'rgba(0, 0, 0, 0.5)',
|
|
291
|
+
zIndex: 20,
|
|
292
|
+
justifyContent: 'center',
|
|
293
|
+
alignItems: 'center'
|
|
294
|
+
}),
|
|
295
|
+
loadingGif: {
|
|
296
|
+
width: 100,
|
|
297
|
+
height: 100
|
|
298
|
+
},
|
|
299
|
+
touchBlocker: _objectSpread(_objectSpread({}, _reactNative.StyleSheet.absoluteFillObject), {}, {
|
|
300
|
+
zIndex: 21,
|
|
301
|
+
backgroundColor: 'transparent'
|
|
302
|
+
}),
|
|
303
|
+
cancelIcon: {
|
|
304
|
+
position: 'absolute',
|
|
305
|
+
top: 20,
|
|
306
|
+
left: 20,
|
|
307
|
+
backgroundColor: PRIMARY_GREEN,
|
|
308
|
+
borderRadius: 5,
|
|
309
|
+
padding: 8
|
|
310
|
+
},
|
|
311
|
+
buttonContainer: {
|
|
312
|
+
position: 'absolute',
|
|
313
|
+
bottom: 0,
|
|
314
|
+
marginBottom: 20,
|
|
315
|
+
flexDirection: 'row',
|
|
316
|
+
justifyContent: 'center'
|
|
317
|
+
},
|
|
318
|
+
button: {
|
|
319
|
+
width: 80,
|
|
320
|
+
height: 80,
|
|
321
|
+
borderRadius: 50,
|
|
322
|
+
backgroundColor: GLOW_WHITE,
|
|
323
|
+
borderWidth: 5,
|
|
324
|
+
borderColor: PRIMARY_GREEN,
|
|
325
|
+
alignItems: 'center',
|
|
326
|
+
justifyContent: 'center'
|
|
327
|
+
},
|
|
328
|
+
text: {
|
|
329
|
+
fontSize: 18,
|
|
330
|
+
color: GLOW_WHITE
|
|
331
|
+
},
|
|
332
|
+
container: {
|
|
333
|
+
flex: 1,
|
|
334
|
+
backgroundColor: DEEP_BLACK,
|
|
335
|
+
justifyContent: 'center',
|
|
336
|
+
alignItems: 'center',
|
|
337
|
+
padding: 20
|
|
338
|
+
},
|
|
339
|
+
iconText: {
|
|
340
|
+
fontSize: 18,
|
|
341
|
+
color: GLOW_WHITE,
|
|
342
|
+
fontWeight: '600'
|
|
343
|
+
}
|
|
246
344
|
});
|