UNPKG

@react-native-ohos/react-native-document-picker

Version:

A react native interface to access documents from dropbox, google drive, iCloud...

113 lines (111 loc) 4.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.isCancel = isCancel; exports.isInProgress = isInProgress; exports.pick = pick; exports.pickDirectory = pickDirectory; exports.pickSingle = pickSingle; exports.releaseSecureAccess = releaseSecureAccess; exports.types = void 0; var _reactNative = require("react-native"); var _invariant = _interopRequireDefault(require("invariant")); var _fileTypes = require("./fileTypes"); var _NativeDocumentPicker = require("./NativeDocumentPicker"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /* * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved * Use of this source code is governed by a MIT license that can be * found in the LICENSE file */ const types = exports.types = _fileTypes.perPlatformTypes[_reactNative.Platform.OS]; async function pickDirectory(params) { if (_reactNative.Platform.OS === 'ios') { const result = await pick({ ...params, mode: 'open', allowMultiSelection: false, type: ['public.folder'] }); return { uri: result[0].uri }; } else { return _NativeDocumentPicker.NativeDocumentPicker.pickDirectory(); } } function pickSingle(opts) { const options = { ...opts, allowMultiSelection: false }; return pick(options).then(results => results[0]); } function pick(opts) { const options = { // must be false to maintain old (v5) behavior allowMultiSelection: false, type: [types.allFiles], ...opts }; const newOpts = { presentationStyle: 'formSheet', transitionStyle: 'coverVertical', ...options, type: Array.isArray(options.type) ? options.type : [options.type] }; return doPick(newOpts); } function doPick(options) { (0, _invariant.default)(!('filetype' in options), 'A `filetype` option was passed to DocumentPicker.pick, the correct option is `type`'); (0, _invariant.default)(!('types' in options), 'A `types` option was passed to DocumentPicker.pick, the correct option is `type`'); (0, _invariant.default)(options.type.every(type => typeof type === 'string'), `Unexpected type option in ${options.type}, did you try using a DocumentPicker.types.* that does not exist?`); (0, _invariant.default)(options.type.length > 0, '`type` option should not be an empty array, at least one type must be passed if the `type` option is not omitted'); (0, _invariant.default)(!options.type.includes('folder'), 'RN document picker: "folder" option was removed, use "pickDirectory()"'); if ('mode' in options && !['import', 'open'].includes(options.mode ?? '')) { throw new TypeError('Invalid mode option: ' + options.mode); } if ('copyTo' in options && !['cachesDirectory', 'documentDirectory'].includes(options.copyTo ?? '')) { throw new TypeError('Invalid copyTo option: ' + options.copyTo); } return _NativeDocumentPicker.NativeDocumentPicker.pick(options); } function releaseSecureAccess(_uris) { return Promise.resolve(); } const E_DOCUMENT_PICKER_CANCELED = 'DOCUMENT_PICKER_CANCELED'; const E_DOCUMENT_PICKER_IN_PROGRESS = 'ASYNC_OP_IN_PROGRESS'; function isCancel(err) { return isErrorWithMessage(err, E_DOCUMENT_PICKER_CANCELED); } function isInProgress(err) { return isErrorWithCode(err, E_DOCUMENT_PICKER_IN_PROGRESS); } function isErrorWithCode(err, errorCode) { if (err && typeof err === 'object' && 'code' in err) { const nativeModuleErrorInstance = err; return (nativeModuleErrorInstance === null || nativeModuleErrorInstance === void 0 ? void 0 : nativeModuleErrorInstance.code) === errorCode; } return false; } function isErrorWithMessage(err, errorCode) { if (err && typeof err === 'object' && 'message' in err) { const nativeModuleErrorInstance = err; return (nativeModuleErrorInstance === null || nativeModuleErrorInstance === void 0 ? void 0 : nativeModuleErrorInstance.message) === errorCode; } return false; } const exportObj = { isCancel, isInProgress, releaseSecureAccess, pickDirectory, pick, pickSingle, types, perPlatformTypes: _fileTypes.perPlatformTypes }; var _default = exports.default = exportObj; //# sourceMappingURL=index.harmony.js.map