|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @format
- *
- * @emails oncall+draft_js
- */
- 'use strict';
-
- var invariant = require("fbjs/lib/invariant");
-
- var TEXT_CLIPPING_REGEX = /\.textClipping$/;
- var TEXT_TYPES = {
- 'text/plain': true,
- 'text/html': true,
- 'text/rtf': true
- }; // Somewhat arbitrary upper bound on text size. Let's not lock up the browser.
-
- var TEXT_SIZE_UPPER_BOUND = 5000;
- /**
- * Extract the text content from a file list.
- */
-
- function getTextContentFromFiles(files, callback) {
- var readCount = 0;
- var results = [];
- files.forEach(function (
- /*blob*/
- file) {
- readFile(file, function (
- /*string*/
- text) {
- readCount++;
- text && results.push(text.slice(0, TEXT_SIZE_UPPER_BOUND));
-
- if (readCount == files.length) {
- callback(results.join('\r'));
- }
- });
- });
- }
- /**
- * todo isaac: Do work to turn html/rtf into a content fragment.
- */
-
-
- function readFile(file, callback) {
- if (!global.FileReader || file.type && !(file.type in TEXT_TYPES)) {
- callback('');
- return;
- }
-
- if (file.type === '') {
- var _contents = ''; // Special-case text clippings, which have an empty type but include
- // `.textClipping` in the file name. `readAsText` results in an empty
- // string for text clippings, so we force the file name to serve
- // as the text value for the file.
-
- if (TEXT_CLIPPING_REGEX.test(file.name)) {
- _contents = file.name.replace(TEXT_CLIPPING_REGEX, '');
- }
-
- callback(_contents);
- return;
- }
-
- var reader = new FileReader();
-
- reader.onload = function () {
- var result = reader.result;
- !(typeof result === 'string') ? process.env.NODE_ENV !== "production" ? invariant(false, 'We should be calling "FileReader.readAsText" which returns a string') : invariant(false) : void 0;
- callback(result);
- };
-
- reader.onerror = function () {
- callback('');
- };
-
- reader.readAsText(file);
- }
-
- module.exports = getTextContentFromFiles;
|