import { commonjsGlobal } from '../../../../../../_virtual/_commonjsHelpers.js';
import { __require as requireInvariant } from '../../../../fbjs@2.0.0/node_modules/fbjs/lib/invariant.js';

/**
 * 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
 */

var getTextContentFromFiles_1;
var hasRequiredGetTextContentFromFiles;

function requireGetTextContentFromFiles () {
	if (hasRequiredGetTextContentFromFiles) return getTextContentFromFiles_1;
	hasRequiredGetTextContentFromFiles = 1;

	var invariant = requireInvariant();

	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 (!commonjsGlobal.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);
	}

	getTextContentFromFiles_1 = getTextContentFromFiles;
	return getTextContentFromFiles_1;
}

export { requireGetTextContentFromFiles as __require };
//# sourceMappingURL=getTextContentFromFiles.js.map
