one
Version:
One is a React framework for web, iOS, and Android apps.
183 lines (180 loc) • 6.81 kB
JavaScript
;
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: true
});
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: () => from[key],
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
value: mod,
enumerable: true
}) : target, mod));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var index_native_exports = {};
__export(index_native_exports, { CameraView: () => CameraView });
module.exports = __toCommonJS(index_native_exports);
var import_jsx_runtime = require("react/jsx-runtime");
var import_react = require("react");
var import_react_native = require("react-native");
var import_OneNativeCameraNativeComponent = __toESM(require("../specs/OneNativeCameraNativeComponent.native.js"), 1);
var nextRequestId = 1;
function codedError(code, message) {
return Object.assign(new Error(message), { code });
}
function nativeError(value) {
var coded = /^((?:E|ERR)_[A-Z0-9_]+): ([\s\S]*)$/.exec(value);
return coded ? codedError(coded[1], coded[2]) : new Error(value);
}
function cameraState(value) {
switch (value) {
case "inactive":
case "permission-required":
case "unavailable":
case "ready":
case "unsupported":
case "failed": return value;
default: throw new Error(`CameraView received an unknown native state: ${value}`);
}
}
function isCodeType(value) {
switch (value) {
case "qr":
case "ean13":
case "ean8":
case "upce":
case "code128":
case "code39":
case "code93":
case "pdf417":
case "aztec":
case "dataMatrix": return true;
default: return false;
}
}
function codeType(value) {
if (!isCodeType(value)) throw new Error(`CameraView received an unknown code type: ${value}`);
return value;
}
var CameraView = /* @__PURE__ */ (0, import_react.forwardRef)(function CameraView2(param, ref) {
var { active = true, facing = "back", codeTypes = ["qr"], flash = "off", enableTorch = false, zoom = 0, onStateChange, onCodeScanned, ...viewProps } = param;
if (import_react_native.Platform.OS !== "ios" && import_react_native.Platform.OS !== "android") throw new Error("CameraView requires a native build");
if (typeof active !== "boolean") throw new TypeError("CameraView.active must be a boolean");
if (facing !== "back" && facing !== "front") {
throw new TypeError("CameraView.facing must be back or front");
}
if (!Array.isArray(codeTypes) || codeTypes.some(function(type) {
return !isCodeType(type);
})) {
throw new TypeError("CameraView.codeTypes contains an unsupported code type");
}
if (flash !== "off" && flash !== "on" && flash !== "auto") {
throw new TypeError("CameraView.flash must be off, on or auto");
}
if (typeof enableTorch !== "boolean") {
throw new TypeError("CameraView.enableTorch must be a boolean");
}
if (typeof zoom !== "number" || !(zoom >= 0 && zoom <= 1)) {
throw new RangeError("CameraView.zoom must be a number from 0 to 1");
}
var nativeRef = (0, import_react.useRef)(null);
var pending = (0, import_react.useRef)(/* @__PURE__ */ new Map());
(0, import_react.useEffect)(function() {
var requests = pending.current;
return function() {
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
try {
for (var _iterator = requests.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var request = _step.value;
request.reject(codedError("E_CAMERA_UNMOUNTED", "CameraView unmounted before the picture was taken"));
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
requests.clear();
};
}, []);
(0, import_react.useImperativeHandle)(ref, function() {
return { takePicture() {
var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
var { quality = 1, base64 = false } = options;
if (typeof quality !== "number" || !(quality >= 0 && quality <= 1)) return Promise.reject(new RangeError("takePicture quality must be a number from 0 to 1"));
if (typeof base64 !== "boolean") return Promise.reject(new TypeError("takePicture base64 must be a boolean"));
var view = nativeRef.current;
if (!view) return Promise.reject(codedError("E_CAMERA_UNMOUNTED", "CameraView is not mounted"));
var requestId = nextRequestId++;
return new Promise(function(resolve, reject) {
pending.current.set(requestId, {
resolve,
reject,
base64
});
import_OneNativeCameraNativeComponent.Commands.takePicture(view, requestId, quality, base64);
});
} };
}, []);
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_OneNativeCameraNativeComponent.default, {
...viewProps,
ref: nativeRef,
active,
facing,
codeTypes: [...new Set(codeTypes)],
flash,
enableTorch,
zoom,
onNativeCameraState: function onNativeCameraState(param2) {
var { nativeEvent } = param2;
return onStateChange === null || onStateChange === void 0 ? void 0 : onStateChange(cameraState(nativeEvent.state));
},
onNativeCameraCode: function onNativeCameraCode(param2) {
var { nativeEvent } = param2;
return onCodeScanned === null || onCodeScanned === void 0 ? void 0 : onCodeScanned({
type: codeType(nativeEvent.type),
data: nativeEvent.data
});
},
onNativeCameraPicture: function onNativeCameraPicture(param2) {
var { nativeEvent } = param2;
var request = pending.current.get(nativeEvent.requestId);
if (!request) return;
pending.current.delete(nativeEvent.requestId);
if (nativeEvent.error) {
request.reject(nativeError(nativeEvent.error));
return;
}
request.resolve({
uri: nativeEvent.uri,
width: nativeEvent.width,
height: nativeEvent.height,
format: "jpg",
...request.base64 ? { base64: nativeEvent.base64 } : {}
});
}
});
});
//# sourceMappingURL=index.native.js.map