ove-auto-annotate
Advanced tools
Comparing version 0.0.3 to 0.0.4
@@ -7,2 +7,4 @@ import _regeneratorRuntime from "@babel/runtime/regenerator"; | ||
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } | ||
import { formName } from "./constants"; | ||
@@ -41,3 +43,8 @@ var _window$addOnGlobals = window.addOnGlobals, | ||
formName: formName, | ||
entities: newAnnotations, | ||
entities: newAnnotations.map(function (e) { | ||
return _extends({}, e, { | ||
start: e.start + 1, | ||
end: e.end + 1 | ||
}); | ||
}), | ||
withCheckboxes: true, | ||
@@ -44,0 +51,0 @@ schema: annotationType === "feature" ? schemaFeatures : schemaOther |
277
es/index.js
@@ -9,2 +9,4 @@ import _regeneratorRuntime from "@babel/runtime/regenerator"; | ||
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } | ||
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } | ||
@@ -14,4 +16,2 @@ | ||
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } | ||
/* eslint-disable jsx-a11y/anchor-is-valid */ | ||
@@ -51,3 +51,6 @@ | ||
convertApELikeRegexToRegex = _window$addOnGlobals.convertApELikeRegexToRegex, | ||
autoAnnotate = _window$addOnGlobals.autoAnnotate; | ||
autoAnnotate = _window$addOnGlobals.autoAnnotate, | ||
useEffect = _window$addOnGlobals.useEffect, | ||
DataTable = _window$addOnGlobals.DataTable, | ||
typeField = _window$addOnGlobals.typeField; | ||
export function autoAnnotateFeatures() { | ||
@@ -91,3 +94,4 @@ showDialog({ | ||
annotationType = _props$annotationType === void 0 ? "feature" : _props$annotationType, | ||
error = props.error; | ||
error = props.error, | ||
getCustomAutoAnnotateList = props.getCustomAutoAnnotateList; | ||
@@ -102,2 +106,53 @@ var _useState = useState("csvFile"), | ||
var _useState3 = useState(), | ||
customAnnResponse = _useState3[0], | ||
setCustomAnnResponse = _useState3[1]; | ||
var _useState4 = useState(), | ||
loadingCustomAnnList = _useState4[0], | ||
setLoadingCustomAnnList = _useState4[1]; | ||
useEffect(function () { | ||
_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() { | ||
var anns; | ||
return _regeneratorRuntime.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
if (!getCustomAutoAnnotateList) { | ||
_context.next = 16; | ||
break; | ||
} | ||
setLoadingCustomAnnList(true); | ||
_context.prev = 2; | ||
_context.next = 5; | ||
return getCustomAutoAnnotateList(props); | ||
case 5: | ||
anns = _context.sent; | ||
setCustomAnnResponse(anns); | ||
_context.next = 13; | ||
break; | ||
case 9: | ||
_context.prev = 9; | ||
_context.t0 = _context["catch"](2); | ||
window.toastr.warning("Error loading custom annotation list"); | ||
console.error("e:", _context.t0); | ||
case 13: | ||
_context.prev = 13; | ||
setLoadingCustomAnnList(false); | ||
return _context.finish(13); | ||
case 16: | ||
case "end": | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, null, [[2, 9, 13, 16]]); | ||
}))(); | ||
}, [getCustomAutoAnnotateList, props]); | ||
if (newAnnotations) { | ||
@@ -184,24 +239,36 @@ return /*#__PURE__*/React.createElement(CreateAnnotationsPage, _extends({}, props, { | ||
title: "ApE File" | ||
})), /*#__PURE__*/React.createElement(DialogFooter, { | ||
}), getCustomAutoAnnotateList && (loadingCustomAnnList ? /*#__PURE__*/React.createElement(Tab, { | ||
disabled: true, | ||
title: "Loading..." | ||
}) : customAnnResponse && /*#__PURE__*/React.createElement(Tab, { | ||
id: "implementerDefined", | ||
title: customAnnResponse && customAnnResponse.title || "Custom List", | ||
panel: customAnnResponse && customAnnResponse.list && customAnnResponse.list.length ? /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(DataTable, { | ||
isInfinite: true, | ||
schema: annotationType === "feature" ? customAnnsSchema : customAnnsSchemaNoType, | ||
entities: customAnnResponse.list | ||
})) : /*#__PURE__*/React.createElement("div", null, "No Annotations Found") | ||
}))), /*#__PURE__*/React.createElement(DialogFooter, { | ||
hideModal: hideDialog, | ||
disabled: fileType === "implementerDefined" && !(customAnnResponse && customAnnResponse.list && customAnnResponse.list.length), | ||
onClick: handleSubmit( /*#__PURE__*/function () { | ||
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(_ref) { | ||
var apeFile, csvFile, convertNonStandardTypes, annsToCheck, _seqsToAnnotateById, validateRow, csvHeaders, _yield$parseCsvFile, data, fields, _error, _iterator, _step, _step$value, index, row, _error2, _yield$parseCsvFile2, _data, _iterator2, _step2, _step2$value, i, _step2$value$, name, sequence, type, annotationsToCheckById, seqId, _autoAnnotate, newAnns, _SubmissionError; | ||
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(_ref2) { | ||
var apeFile, csvFile, convertNonStandardTypes, annsToCheck, _seqsToAnnotateById, validateRow, _iterator, _step, _step$value, i, _step$value$, name, sequence, type, isRegex, csvHeaders, _yield$parseCsvFile, data, fields, _error, _iterator2, _step2, _step2$value, index, row, _error2, _yield$parseCsvFile2, _data, _iterator3, _step3, _step3$value, _i, _step3$value$, _name, _sequence, _type, annotationsToCheckById, seqId, _autoAnnotate, newAnns, _SubmissionError; | ||
return _regeneratorRuntime.wrap(function _callee2$(_context2) { | ||
return _regeneratorRuntime.wrap(function _callee3$(_context3) { | ||
while (1) { | ||
switch (_context2.prev = _context2.next) { | ||
switch (_context3.prev = _context3.next) { | ||
case 0: | ||
apeFile = _ref.apeFile, csvFile = _ref.csvFile; | ||
apeFile = _ref2.apeFile, csvFile = _ref2.csvFile; | ||
convertNonStandardTypes = false; | ||
annsToCheck = []; | ||
_context2.prev = 3; | ||
_context3.prev = 3; | ||
validateRow = /*#__PURE__*/function () { | ||
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(row, rowName) { | ||
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(row, rowName) { | ||
var _row$type, type, sequence, regexConvertedSeq, cleanedType; | ||
return _regeneratorRuntime.wrap(function _callee$(_context) { | ||
return _regeneratorRuntime.wrap(function _callee2$(_context2) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
switch (_context2.prev = _context2.next) { | ||
case 0: | ||
@@ -211,3 +278,3 @@ _row$type = row.type, type = _row$type === void 0 ? "" : _row$type, sequence = row.sequence; | ||
if (!(annotationType === "feature")) { | ||
_context.next = 14; | ||
_context2.next = 14; | ||
break; | ||
@@ -221,3 +288,3 @@ } | ||
if (cleanedType) { | ||
_context.next = 13; | ||
_context2.next = 13; | ||
break; | ||
@@ -227,7 +294,7 @@ } | ||
if (convertNonStandardTypes) { | ||
_context.next = 10; | ||
_context2.next = 10; | ||
break; | ||
} | ||
_context.next = 7; | ||
_context2.next = 7; | ||
return showConfirmationDialog({ | ||
@@ -239,6 +306,6 @@ cancelButtonText: "Stop Auto-Annotate", | ||
case 7: | ||
convertNonStandardTypes = _context.sent; | ||
convertNonStandardTypes = _context2.sent; | ||
if (convertNonStandardTypes) { | ||
_context.next = 10; | ||
_context2.next = 10; | ||
break; | ||
@@ -253,3 +320,3 @@ } | ||
row.type = "misc_feature"; | ||
_context.next = 14; | ||
_context2.next = 14; | ||
break; | ||
@@ -262,3 +329,3 @@ | ||
if (sequence) { | ||
_context.next = 16; | ||
_context2.next = 16; | ||
break; | ||
@@ -273,15 +340,15 @@ } | ||
if (!(row.isRegex && row.isRegex.toUpperCase() === "TRUE")) { | ||
_context.next = 27; | ||
_context2.next = 27; | ||
break; | ||
} | ||
_context.prev = 17; | ||
_context2.prev = 17; | ||
new RegExp(regexConvertedSeq); //just trying out whether the regexConvertedSeq will work as a valid regex | ||
_context.next = 24; | ||
_context2.next = 24; | ||
break; | ||
case 21: | ||
_context.prev = 21; | ||
_context.t0 = _context["catch"](17); | ||
_context2.prev = 21; | ||
_context2.t0 = _context2["catch"](17); | ||
throw { | ||
@@ -293,3 +360,3 @@ validationError: rowName + " has an invalid sequence/regex. Please fix it manually." | ||
row.isRegex = true; | ||
_context.next = 28; | ||
_context2.next = 28; | ||
break; | ||
@@ -305,15 +372,47 @@ | ||
case "end": | ||
return _context.stop(); | ||
return _context2.stop(); | ||
} | ||
} | ||
}, _callee, null, [[17, 21]]); | ||
}, _callee2, null, [[17, 21]]); | ||
})); | ||
return function validateRow(_x2, _x3) { | ||
return _ref3.apply(this, arguments); | ||
return _ref4.apply(this, arguments); | ||
}; | ||
}(); | ||
if (!(fileType === "implementerDefined")) { | ||
_context3.next = 15; | ||
break; | ||
} | ||
_iterator = _createForOfIteratorHelperLoose(customAnnResponse.list.entries()); | ||
case 7: | ||
if ((_step = _iterator()).done) { | ||
_context3.next = 13; | ||
break; | ||
} | ||
_step$value = _step.value, // eslint-disable-next-line no-unused-vars | ||
i = _step$value[0], _step$value$ = _step$value[1], name = _step$value$.name, sequence = _step$value$.sequence, type = _step$value$.type, isRegex = _step$value$.isRegex; | ||
_context3.next = 11; | ||
return validateRow({ | ||
name: name, | ||
sequence: sequence, | ||
type: type, | ||
isRegex: isRegex ? "TRUE" : "FALSE" | ||
}, "Row " + (i + 1) + " (" + name + ")"); | ||
case 11: | ||
_context3.next = 7; | ||
break; | ||
case 13: | ||
_context3.next = 55; | ||
break; | ||
case 15: | ||
if (!(fileType === "csvFile")) { | ||
_context2.next = 29; | ||
_context3.next = 39; | ||
break; | ||
@@ -329,7 +428,7 @@ } | ||
csvHeaders.push("isRegex"); | ||
_context2.next = 11; | ||
_context3.next = 21; | ||
return parseCsvFile(csvFile[0]); | ||
case 11: | ||
_yield$parseCsvFile = _context2.sent; | ||
case 21: | ||
_yield$parseCsvFile = _context3.sent; | ||
data = _yield$parseCsvFile.data; | ||
@@ -340,3 +439,3 @@ fields = _yield$parseCsvFile.meta.fields; | ||
if (!_error) { | ||
_context2.next = 17; | ||
_context3.next = 27; | ||
break; | ||
@@ -349,16 +448,16 @@ } | ||
case 17: | ||
_iterator = _createForOfIteratorHelperLoose(data.entries()); | ||
case 27: | ||
_iterator2 = _createForOfIteratorHelperLoose(data.entries()); | ||
case 18: | ||
if ((_step = _iterator()).done) { | ||
_context2.next = 27; | ||
case 28: | ||
if ((_step2 = _iterator2()).done) { | ||
_context3.next = 37; | ||
break; | ||
} | ||
_step$value = _step.value, index = _step$value[0], row = _step$value[1]; | ||
_step2$value = _step2.value, index = _step2$value[0], row = _step2$value[1]; | ||
_error2 = validateCSVRow(row, csvHeaders, index); | ||
if (!_error2) { | ||
_context2.next = 23; | ||
_context3.next = 33; | ||
break; | ||
@@ -371,21 +470,21 @@ } | ||
case 23: | ||
_context2.next = 25; | ||
return validateRow(row, "Row " + (index + 1)); | ||
case 33: | ||
_context3.next = 35; | ||
return validateRow(row, "Row " + (index + 1) + " (" + row.name + ")"); | ||
case 25: | ||
_context2.next = 18; | ||
case 35: | ||
_context3.next = 28; | ||
break; | ||
case 27: | ||
_context2.next = 45; | ||
case 37: | ||
_context3.next = 55; | ||
break; | ||
case 29: | ||
case 39: | ||
if (!(fileType === "apeFile")) { | ||
_context2.next = 43; | ||
_context3.next = 53; | ||
break; | ||
} | ||
_context2.next = 32; | ||
_context3.next = 42; | ||
return parseCsvFile(apeFile[0], { | ||
@@ -395,42 +494,42 @@ header: false | ||
case 32: | ||
_yield$parseCsvFile2 = _context2.sent; | ||
case 42: | ||
_yield$parseCsvFile2 = _context3.sent; | ||
_data = _yield$parseCsvFile2.data; | ||
_iterator2 = _createForOfIteratorHelperLoose(_data.entries()); | ||
_iterator3 = _createForOfIteratorHelperLoose(_data.entries()); | ||
case 35: | ||
if ((_step2 = _iterator2()).done) { | ||
_context2.next = 41; | ||
case 45: | ||
if ((_step3 = _iterator3()).done) { | ||
_context3.next = 51; | ||
break; | ||
} | ||
_step2$value = _step2.value, i = _step2$value[0], _step2$value$ = _step2$value[1], name = _step2$value$[0], sequence = _step2$value$[1], type = _step2$value$[2]; | ||
_context2.next = 39; | ||
_step3$value = _step3.value, _i = _step3$value[0], _step3$value$ = _step3$value[1], _name = _step3$value$[0], _sequence = _step3$value$[1], _type = _step3$value$[2]; | ||
_context3.next = 49; | ||
return validateRow({ | ||
name: name, | ||
sequence: sequence, | ||
type: type | ||
}, "Row " + (i + 1)); | ||
name: _name, | ||
sequence: _sequence, | ||
type: _type | ||
}, "Row " + (_i + 1) + " (" + _name + ")"); | ||
case 39: | ||
_context2.next = 35; | ||
case 49: | ||
_context3.next = 45; | ||
break; | ||
case 41: | ||
_context2.next = 45; | ||
case 51: | ||
_context3.next = 55; | ||
break; | ||
case 43: | ||
case 53: | ||
console.info("we shouldn't be here!"); | ||
console.info("fileType:", fileType); | ||
case 45: | ||
case 55: | ||
if (annsToCheck.length) { | ||
_context2.next = 47; | ||
_context3.next = 57; | ||
break; | ||
} | ||
return _context2.abrupt("return", window.toastr.warning("No Annotations Detected on File. Please check that your file is in the correct format.")); | ||
return _context3.abrupt("return", window.toastr.warning("No Annotations Detected on File. Please check that your file is in the correct format.")); | ||
case 47: | ||
case 57: | ||
annotationsToCheckById = {}; | ||
@@ -466,30 +565,30 @@ annsToCheck.forEach(function (ann) { | ||
_context2.next = 62; | ||
_context3.next = 72; | ||
break; | ||
case 54: | ||
_context2.prev = 54; | ||
_context2.t0 = _context2["catch"](3); | ||
console.error("error:", _context2.t0); | ||
case 64: | ||
_context3.prev = 64; | ||
_context3.t0 = _context3["catch"](3); | ||
console.error("error:", _context3.t0); | ||
if (!_context2.t0.validationError) { | ||
_context2.next = 61; | ||
if (!_context3.t0.validationError) { | ||
_context3.next = 71; | ||
break; | ||
} | ||
throw new SubmissionError((_SubmissionError = {}, _SubmissionError[fileType] = _context2.t0.validationError, _SubmissionError)); | ||
throw new SubmissionError((_SubmissionError = {}, _SubmissionError[fileType] = _context3.t0.validationError, _SubmissionError)); | ||
case 61: | ||
case 71: | ||
window.toastr.error("Error annotating " + annotationType + "(s). Double check your file to make sure it is valid!"); | ||
case 62: | ||
case 72: | ||
case "end": | ||
return _context2.stop(); | ||
return _context3.stop(); | ||
} | ||
} | ||
}, _callee2, null, [[3, 54]]); | ||
}, _callee3, null, [[3, 64]]); | ||
})); | ||
return function (_x) { | ||
return _ref2.apply(this, arguments); | ||
return _ref3.apply(this, arguments); | ||
}; | ||
@@ -503,2 +602,4 @@ }()), | ||
window._ove_addons.autoAnnotateParts = autoAnnotateParts; | ||
window._ove_addons.autoAnnotatePrimers = autoAnnotatePrimers; | ||
window._ove_addons.autoAnnotatePrimers = autoAnnotatePrimers; | ||
var customAnnsSchema = ["name", "sequence", typeField, "isRegex"]; | ||
var customAnnsSchemaNoType = ["name", "sequence", typeField, "isRegex"]; |
@@ -16,2 +16,4 @@ "use strict"; | ||
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } | ||
var _window$addOnGlobals = window.addOnGlobals, | ||
@@ -50,3 +52,8 @@ startCase = _window$addOnGlobals.startCase, | ||
formName: _constants.formName, | ||
entities: newAnnotations, | ||
entities: newAnnotations.map(function (e) { | ||
return _extends({}, e, { | ||
start: e.start + 1, | ||
end: e.end + 1 | ||
}); | ||
}), | ||
withCheckboxes: true, | ||
@@ -53,0 +60,0 @@ schema: annotationType === "feature" ? schemaFeatures : schemaOther |
277
lib/index.js
@@ -31,2 +31,4 @@ "use strict"; | ||
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } | ||
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } | ||
@@ -36,4 +38,2 @@ | ||
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } | ||
var _window$addOnGlobals = window.addOnGlobals, | ||
@@ -62,3 +62,6 @@ shortid = _window$addOnGlobals.shortid, | ||
convertApELikeRegexToRegex = _window$addOnGlobals.convertApELikeRegexToRegex, | ||
autoAnnotate = _window$addOnGlobals.autoAnnotate; | ||
autoAnnotate = _window$addOnGlobals.autoAnnotate, | ||
useEffect = _window$addOnGlobals.useEffect, | ||
DataTable = _window$addOnGlobals.DataTable, | ||
typeField = _window$addOnGlobals.typeField; | ||
@@ -106,3 +109,4 @@ function autoAnnotateFeatures() { | ||
annotationType = _props$annotationType === void 0 ? "feature" : _props$annotationType, | ||
error = props.error; | ||
error = props.error, | ||
getCustomAutoAnnotateList = props.getCustomAutoAnnotateList; | ||
@@ -117,2 +121,53 @@ var _useState = useState("csvFile"), | ||
var _useState3 = useState(), | ||
customAnnResponse = _useState3[0], | ||
setCustomAnnResponse = _useState3[1]; | ||
var _useState4 = useState(), | ||
loadingCustomAnnList = _useState4[0], | ||
setLoadingCustomAnnList = _useState4[1]; | ||
useEffect(function () { | ||
_asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() { | ||
var anns; | ||
return _regenerator["default"].wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
if (!getCustomAutoAnnotateList) { | ||
_context.next = 16; | ||
break; | ||
} | ||
setLoadingCustomAnnList(true); | ||
_context.prev = 2; | ||
_context.next = 5; | ||
return getCustomAutoAnnotateList(props); | ||
case 5: | ||
anns = _context.sent; | ||
setCustomAnnResponse(anns); | ||
_context.next = 13; | ||
break; | ||
case 9: | ||
_context.prev = 9; | ||
_context.t0 = _context["catch"](2); | ||
window.toastr.warning("Error loading custom annotation list"); | ||
console.error("e:", _context.t0); | ||
case 13: | ||
_context.prev = 13; | ||
setLoadingCustomAnnList(false); | ||
return _context.finish(13); | ||
case 16: | ||
case "end": | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, null, [[2, 9, 13, 16]]); | ||
}))(); | ||
}, [getCustomAutoAnnotateList, props]); | ||
if (newAnnotations) { | ||
@@ -199,24 +254,36 @@ return /*#__PURE__*/React.createElement(_CreateAnnotationsPage["default"], _extends({}, props, { | ||
title: "ApE File" | ||
})), /*#__PURE__*/React.createElement(DialogFooter, { | ||
}), getCustomAutoAnnotateList && (loadingCustomAnnList ? /*#__PURE__*/React.createElement(Tab, { | ||
disabled: true, | ||
title: "Loading..." | ||
}) : customAnnResponse && /*#__PURE__*/React.createElement(Tab, { | ||
id: "implementerDefined", | ||
title: customAnnResponse && customAnnResponse.title || "Custom List", | ||
panel: customAnnResponse && customAnnResponse.list && customAnnResponse.list.length ? /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(DataTable, { | ||
isInfinite: true, | ||
schema: annotationType === "feature" ? customAnnsSchema : customAnnsSchemaNoType, | ||
entities: customAnnResponse.list | ||
})) : /*#__PURE__*/React.createElement("div", null, "No Annotations Found") | ||
}))), /*#__PURE__*/React.createElement(DialogFooter, { | ||
hideModal: hideDialog, | ||
disabled: fileType === "implementerDefined" && !(customAnnResponse && customAnnResponse.list && customAnnResponse.list.length), | ||
onClick: handleSubmit( /*#__PURE__*/function () { | ||
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_ref) { | ||
var apeFile, csvFile, convertNonStandardTypes, annsToCheck, _seqsToAnnotateById, validateRow, csvHeaders, _yield$parseCsvFile, data, fields, _error, _iterator, _step, _step$value, index, row, _error2, _yield$parseCsvFile2, _data, _iterator2, _step2, _step2$value, i, _step2$value$, name, sequence, type, annotationsToCheckById, seqId, _autoAnnotate, newAnns, _SubmissionError; | ||
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee3(_ref2) { | ||
var apeFile, csvFile, convertNonStandardTypes, annsToCheck, _seqsToAnnotateById, validateRow, _iterator, _step, _step$value, i, _step$value$, name, sequence, type, isRegex, csvHeaders, _yield$parseCsvFile, data, fields, _error, _iterator2, _step2, _step2$value, index, row, _error2, _yield$parseCsvFile2, _data, _iterator3, _step3, _step3$value, _i, _step3$value$, _name, _sequence, _type, annotationsToCheckById, seqId, _autoAnnotate, newAnns, _SubmissionError; | ||
return _regenerator["default"].wrap(function _callee2$(_context2) { | ||
return _regenerator["default"].wrap(function _callee3$(_context3) { | ||
while (1) { | ||
switch (_context2.prev = _context2.next) { | ||
switch (_context3.prev = _context3.next) { | ||
case 0: | ||
apeFile = _ref.apeFile, csvFile = _ref.csvFile; | ||
apeFile = _ref2.apeFile, csvFile = _ref2.csvFile; | ||
convertNonStandardTypes = false; | ||
annsToCheck = []; | ||
_context2.prev = 3; | ||
_context3.prev = 3; | ||
validateRow = /*#__PURE__*/function () { | ||
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee(row, rowName) { | ||
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2(row, rowName) { | ||
var _row$type, type, sequence, regexConvertedSeq, cleanedType; | ||
return _regenerator["default"].wrap(function _callee$(_context) { | ||
return _regenerator["default"].wrap(function _callee2$(_context2) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
switch (_context2.prev = _context2.next) { | ||
case 0: | ||
@@ -226,3 +293,3 @@ _row$type = row.type, type = _row$type === void 0 ? "" : _row$type, sequence = row.sequence; | ||
if (!(annotationType === "feature")) { | ||
_context.next = 14; | ||
_context2.next = 14; | ||
break; | ||
@@ -236,3 +303,3 @@ } | ||
if (cleanedType) { | ||
_context.next = 13; | ||
_context2.next = 13; | ||
break; | ||
@@ -242,7 +309,7 @@ } | ||
if (convertNonStandardTypes) { | ||
_context.next = 10; | ||
_context2.next = 10; | ||
break; | ||
} | ||
_context.next = 7; | ||
_context2.next = 7; | ||
return showConfirmationDialog({ | ||
@@ -254,6 +321,6 @@ cancelButtonText: "Stop Auto-Annotate", | ||
case 7: | ||
convertNonStandardTypes = _context.sent; | ||
convertNonStandardTypes = _context2.sent; | ||
if (convertNonStandardTypes) { | ||
_context.next = 10; | ||
_context2.next = 10; | ||
break; | ||
@@ -268,3 +335,3 @@ } | ||
row.type = "misc_feature"; | ||
_context.next = 14; | ||
_context2.next = 14; | ||
break; | ||
@@ -277,3 +344,3 @@ | ||
if (sequence) { | ||
_context.next = 16; | ||
_context2.next = 16; | ||
break; | ||
@@ -288,15 +355,15 @@ } | ||
if (!(row.isRegex && row.isRegex.toUpperCase() === "TRUE")) { | ||
_context.next = 27; | ||
_context2.next = 27; | ||
break; | ||
} | ||
_context.prev = 17; | ||
_context2.prev = 17; | ||
new RegExp(regexConvertedSeq); //just trying out whether the regexConvertedSeq will work as a valid regex | ||
_context.next = 24; | ||
_context2.next = 24; | ||
break; | ||
case 21: | ||
_context.prev = 21; | ||
_context.t0 = _context["catch"](17); | ||
_context2.prev = 21; | ||
_context2.t0 = _context2["catch"](17); | ||
throw { | ||
@@ -308,3 +375,3 @@ validationError: rowName + " has an invalid sequence/regex. Please fix it manually." | ||
row.isRegex = true; | ||
_context.next = 28; | ||
_context2.next = 28; | ||
break; | ||
@@ -320,15 +387,47 @@ | ||
case "end": | ||
return _context.stop(); | ||
return _context2.stop(); | ||
} | ||
} | ||
}, _callee, null, [[17, 21]]); | ||
}, _callee2, null, [[17, 21]]); | ||
})); | ||
return function validateRow(_x2, _x3) { | ||
return _ref3.apply(this, arguments); | ||
return _ref4.apply(this, arguments); | ||
}; | ||
}(); | ||
if (!(fileType === "implementerDefined")) { | ||
_context3.next = 15; | ||
break; | ||
} | ||
_iterator = _createForOfIteratorHelperLoose(customAnnResponse.list.entries()); | ||
case 7: | ||
if ((_step = _iterator()).done) { | ||
_context3.next = 13; | ||
break; | ||
} | ||
_step$value = _step.value, // eslint-disable-next-line no-unused-vars | ||
i = _step$value[0], _step$value$ = _step$value[1], name = _step$value$.name, sequence = _step$value$.sequence, type = _step$value$.type, isRegex = _step$value$.isRegex; | ||
_context3.next = 11; | ||
return validateRow({ | ||
name: name, | ||
sequence: sequence, | ||
type: type, | ||
isRegex: isRegex ? "TRUE" : "FALSE" | ||
}, "Row " + (i + 1) + " (" + name + ")"); | ||
case 11: | ||
_context3.next = 7; | ||
break; | ||
case 13: | ||
_context3.next = 55; | ||
break; | ||
case 15: | ||
if (!(fileType === "csvFile")) { | ||
_context2.next = 29; | ||
_context3.next = 39; | ||
break; | ||
@@ -344,7 +443,7 @@ } | ||
csvHeaders.push("isRegex"); | ||
_context2.next = 11; | ||
_context3.next = 21; | ||
return (0, _fileUtils.parseCsvFile)(csvFile[0]); | ||
case 11: | ||
_yield$parseCsvFile = _context2.sent; | ||
case 21: | ||
_yield$parseCsvFile = _context3.sent; | ||
data = _yield$parseCsvFile.data; | ||
@@ -355,3 +454,3 @@ fields = _yield$parseCsvFile.meta.fields; | ||
if (!_error) { | ||
_context2.next = 17; | ||
_context3.next = 27; | ||
break; | ||
@@ -364,16 +463,16 @@ } | ||
case 17: | ||
_iterator = _createForOfIteratorHelperLoose(data.entries()); | ||
case 27: | ||
_iterator2 = _createForOfIteratorHelperLoose(data.entries()); | ||
case 18: | ||
if ((_step = _iterator()).done) { | ||
_context2.next = 27; | ||
case 28: | ||
if ((_step2 = _iterator2()).done) { | ||
_context3.next = 37; | ||
break; | ||
} | ||
_step$value = _step.value, index = _step$value[0], row = _step$value[1]; | ||
_step2$value = _step2.value, index = _step2$value[0], row = _step2$value[1]; | ||
_error2 = (0, _fileUtils.validateCSVRow)(row, csvHeaders, index); | ||
if (!_error2) { | ||
_context2.next = 23; | ||
_context3.next = 33; | ||
break; | ||
@@ -386,21 +485,21 @@ } | ||
case 23: | ||
_context2.next = 25; | ||
return validateRow(row, "Row " + (index + 1)); | ||
case 33: | ||
_context3.next = 35; | ||
return validateRow(row, "Row " + (index + 1) + " (" + row.name + ")"); | ||
case 25: | ||
_context2.next = 18; | ||
case 35: | ||
_context3.next = 28; | ||
break; | ||
case 27: | ||
_context2.next = 45; | ||
case 37: | ||
_context3.next = 55; | ||
break; | ||
case 29: | ||
case 39: | ||
if (!(fileType === "apeFile")) { | ||
_context2.next = 43; | ||
_context3.next = 53; | ||
break; | ||
} | ||
_context2.next = 32; | ||
_context3.next = 42; | ||
return (0, _fileUtils.parseCsvFile)(apeFile[0], { | ||
@@ -410,42 +509,42 @@ header: false | ||
case 32: | ||
_yield$parseCsvFile2 = _context2.sent; | ||
case 42: | ||
_yield$parseCsvFile2 = _context3.sent; | ||
_data = _yield$parseCsvFile2.data; | ||
_iterator2 = _createForOfIteratorHelperLoose(_data.entries()); | ||
_iterator3 = _createForOfIteratorHelperLoose(_data.entries()); | ||
case 35: | ||
if ((_step2 = _iterator2()).done) { | ||
_context2.next = 41; | ||
case 45: | ||
if ((_step3 = _iterator3()).done) { | ||
_context3.next = 51; | ||
break; | ||
} | ||
_step2$value = _step2.value, i = _step2$value[0], _step2$value$ = _step2$value[1], name = _step2$value$[0], sequence = _step2$value$[1], type = _step2$value$[2]; | ||
_context2.next = 39; | ||
_step3$value = _step3.value, _i = _step3$value[0], _step3$value$ = _step3$value[1], _name = _step3$value$[0], _sequence = _step3$value$[1], _type = _step3$value$[2]; | ||
_context3.next = 49; | ||
return validateRow({ | ||
name: name, | ||
sequence: sequence, | ||
type: type | ||
}, "Row " + (i + 1)); | ||
name: _name, | ||
sequence: _sequence, | ||
type: _type | ||
}, "Row " + (_i + 1) + " (" + _name + ")"); | ||
case 39: | ||
_context2.next = 35; | ||
case 49: | ||
_context3.next = 45; | ||
break; | ||
case 41: | ||
_context2.next = 45; | ||
case 51: | ||
_context3.next = 55; | ||
break; | ||
case 43: | ||
case 53: | ||
console.info("we shouldn't be here!"); | ||
console.info("fileType:", fileType); | ||
case 45: | ||
case 55: | ||
if (annsToCheck.length) { | ||
_context2.next = 47; | ||
_context3.next = 57; | ||
break; | ||
} | ||
return _context2.abrupt("return", window.toastr.warning("No Annotations Detected on File. Please check that your file is in the correct format.")); | ||
return _context3.abrupt("return", window.toastr.warning("No Annotations Detected on File. Please check that your file is in the correct format.")); | ||
case 47: | ||
case 57: | ||
annotationsToCheckById = {}; | ||
@@ -481,30 +580,30 @@ annsToCheck.forEach(function (ann) { | ||
_context2.next = 62; | ||
_context3.next = 72; | ||
break; | ||
case 54: | ||
_context2.prev = 54; | ||
_context2.t0 = _context2["catch"](3); | ||
console.error("error:", _context2.t0); | ||
case 64: | ||
_context3.prev = 64; | ||
_context3.t0 = _context3["catch"](3); | ||
console.error("error:", _context3.t0); | ||
if (!_context2.t0.validationError) { | ||
_context2.next = 61; | ||
if (!_context3.t0.validationError) { | ||
_context3.next = 71; | ||
break; | ||
} | ||
throw new SubmissionError((_SubmissionError = {}, _SubmissionError[fileType] = _context2.t0.validationError, _SubmissionError)); | ||
throw new SubmissionError((_SubmissionError = {}, _SubmissionError[fileType] = _context3.t0.validationError, _SubmissionError)); | ||
case 61: | ||
case 71: | ||
window.toastr.error("Error annotating " + annotationType + "(s). Double check your file to make sure it is valid!"); | ||
case 62: | ||
case 72: | ||
case "end": | ||
return _context2.stop(); | ||
return _context3.stop(); | ||
} | ||
} | ||
}, _callee2, null, [[3, 54]]); | ||
}, _callee3, null, [[3, 64]]); | ||
})); | ||
return function (_x) { | ||
return _ref2.apply(this, arguments); | ||
return _ref3.apply(this, arguments); | ||
}; | ||
@@ -519,2 +618,4 @@ }()), | ||
window._ove_addons.autoAnnotateParts = autoAnnotateParts; | ||
window._ove_addons.autoAnnotatePrimers = autoAnnotatePrimers; | ||
window._ove_addons.autoAnnotatePrimers = autoAnnotatePrimers; | ||
var customAnnsSchema = ["name", "sequence", typeField, "isRegex"]; | ||
var customAnnsSchemaNoType = ["name", "sequence", typeField, "isRegex"]; |
{ | ||
"name": "ove-auto-annotate", | ||
"version": "0.0.3", | ||
"version": "0.0.4", | ||
"scripts": { | ||
@@ -5,0 +5,0 @@ "build": "nwb build-react-component --copy-files --no-demo", |
@@ -44,3 +44,7 @@ import { formName } from "./constants"; | ||
formName={formName} | ||
entities={newAnnotations} | ||
entities={newAnnotations.map((e) => ({ | ||
...e, | ||
start: e.start + 1, | ||
end: e.end + 1 | ||
}))} | ||
withCheckboxes | ||
@@ -47,0 +51,0 @@ schema={annotationType === "feature" ? schemaFeatures : schemaOther} |
@@ -38,3 +38,6 @@ /* eslint-disable jsx-a11y/anchor-is-valid */ | ||
convertApELikeRegexToRegex, | ||
autoAnnotate | ||
autoAnnotate, | ||
useEffect, | ||
DataTable, | ||
typeField | ||
} = window.addOnGlobals; | ||
@@ -78,6 +81,25 @@ | ||
annotationType = "feature", | ||
error | ||
error, | ||
getCustomAutoAnnotateList | ||
} = props; | ||
const [fileType, setSelectedImportType] = useState("csvFile"); | ||
const [newAnnotations, setNewAnns] = useState(false); | ||
const [customAnnResponse, setCustomAnnResponse] = useState(); | ||
const [loadingCustomAnnList, setLoadingCustomAnnList] = useState(); | ||
useEffect(() => { | ||
(async () => { | ||
if (getCustomAutoAnnotateList) { | ||
setLoadingCustomAnnList(true); | ||
try { | ||
const anns = await getCustomAutoAnnotateList(props); | ||
setCustomAnnResponse(anns); | ||
} catch (e) { | ||
window.toastr.warning("Error loading custom annotation list"); | ||
console.error(`e:`, e); | ||
} finally { | ||
setLoadingCustomAnnList(false); | ||
} | ||
} | ||
})(); | ||
}, [getCustomAutoAnnotateList, props]); | ||
if (newAnnotations) { | ||
@@ -218,5 +240,46 @@ return ( | ||
></Tab> | ||
{getCustomAutoAnnotateList && | ||
(loadingCustomAnnList ? ( | ||
<Tab disabled title="Loading..."></Tab> | ||
) : ( | ||
customAnnResponse && ( | ||
<Tab | ||
id="implementerDefined" | ||
title={ | ||
(customAnnResponse && customAnnResponse.title) || | ||
"Custom List" | ||
} | ||
panel={ | ||
customAnnResponse && | ||
customAnnResponse.list && | ||
customAnnResponse.list.length ? ( | ||
<div> | ||
<DataTable | ||
isInfinite | ||
schema={ | ||
annotationType === "feature" | ||
? customAnnsSchema | ||
: customAnnsSchemaNoType | ||
} | ||
entities={customAnnResponse.list} | ||
></DataTable> | ||
</div> | ||
) : ( | ||
<div>No Annotations Found</div> | ||
) | ||
} | ||
></Tab> | ||
) | ||
))} | ||
</Tabs> | ||
<DialogFooter | ||
hideModal={hideDialog} | ||
disabled={ | ||
fileType === "implementerDefined" && | ||
!( | ||
customAnnResponse && | ||
customAnnResponse.list && | ||
customAnnResponse.list.length | ||
) | ||
} | ||
onClick={handleSubmit(async ({ apeFile, csvFile }) => { | ||
@@ -270,3 +333,15 @@ let convertNonStandardTypes = false; | ||
}; | ||
if (fileType === "csvFile") { | ||
if (fileType === "implementerDefined") { | ||
for (const [ | ||
// eslint-disable-next-line no-unused-vars | ||
i, | ||
// eslint-disable-next-line no-unused-vars | ||
{ name, sequence, type, isRegex } | ||
] of customAnnResponse.list.entries()) { | ||
await validateRow( | ||
{ name, sequence, type, isRegex: isRegex ? "TRUE" : "FALSE" }, | ||
`Row ${i + 1} (${name})` | ||
); | ||
} | ||
} else if (fileType === "csvFile") { | ||
const csvHeaders = ["name", "description", "sequence"]; | ||
@@ -296,3 +371,3 @@ if (annotationType === "feature") { | ||
} | ||
await validateRow(row, `Row ${index + 1}`); | ||
await validateRow(row, `Row ${index + 1} (${row.name})`); | ||
} | ||
@@ -305,3 +380,6 @@ } else if (fileType === "apeFile") { | ||
for (const [i, [name, sequence, type]] of data.entries()) { | ||
await validateRow({ name, sequence, type }, `Row ${i + 1}`); | ||
await validateRow( | ||
{ name, sequence, type }, | ||
`Row ${i + 1} (${name})` | ||
); | ||
} | ||
@@ -377,1 +455,4 @@ } else { | ||
window._ove_addons.autoAnnotatePrimers = autoAnnotatePrimers; | ||
const customAnnsSchema = ["name", "sequence", typeField, "isRegex"]; | ||
const customAnnsSchemaNoType = ["name", "sequence", typeField, "isRegex"]; |
@@ -1,2 +0,2 @@ | ||
/*! ove-auto-annotate v0.0.3 */ | ||
/*! ove-auto-annotate v0.0.4 */ | ||
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t,n){e.exports=n(4)},function(e,t,n){var r,i,a; | ||
@@ -8,3 +8,3 @@ /* @license | ||
License: MIT | ||
*/i=[],void 0===(a="function"==typeof(r=function e(){"use strict";var t="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t?t:{},n=!t.document&&!!t.postMessage,r=n&&/blob:/i.test((t.location||{}).protocol),i={},a=0,o={parse:function(n,r){var s=(r=r||{}).dynamicTyping||!1;if(w(s)&&(r.dynamicTypingFunction=s,s={}),r.dynamicTyping=s,r.transform=!!w(r.transform)&&r.transform,r.worker&&o.WORKERS_SUPPORTED){var l=function(){if(!o.WORKERS_SUPPORTED)return!1;var n,r,s=(n=t.URL||t.webkitURL||null,r=e.toString(),o.BLOB_URL||(o.BLOB_URL=n.createObjectURL(new Blob(["(",r,")();"],{type:"text/javascript"})))),l=new t.Worker(s);return l.onmessage=v,l.id=a++,i[l.id]=l}();return l.userStep=r.step,l.userChunk=r.chunk,l.userComplete=r.complete,l.userError=r.error,r.step=w(r.step),r.chunk=w(r.chunk),r.complete=w(r.complete),r.error=w(r.error),delete r.worker,void l.postMessage({input:n,config:r,workerId:l.id})}var h=null;return o.NODE_STREAM_INPUT,"string"==typeof n?h=r.download?new u(r):new d(r):!0===n.readable&&w(n.read)&&w(n.on)?h=new f(r):(t.File&&n instanceof File||n instanceof Object)&&(h=new c(r)),h.stream(n)},unparse:function(e,t){var n=!1,r=!0,i=",",a="\r\n",s='"',l=s+s,u=!1,c=null,d=!1;!function(){if("object"==typeof t){if("string"!=typeof t.delimiter||o.BAD_DELIMITERS.filter((function(e){return-1!==t.delimiter.indexOf(e)})).length||(i=t.delimiter),("boolean"==typeof t.quotes||"function"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes),"boolean"!=typeof t.skipEmptyLines&&"string"!=typeof t.skipEmptyLines||(u=t.skipEmptyLines),"string"==typeof t.newline&&(a=t.newline),"string"==typeof t.quoteChar&&(s=t.quoteChar),"boolean"==typeof t.header&&(r=t.header),Array.isArray(t.columns)){if(0===t.columns.length)throw new Error("Option columns is empty");c=t.columns}void 0!==t.escapeChar&&(l=t.escapeChar+s),"boolean"==typeof t.escapeFormulae&&(d=t.escapeFormulae)}}();var f=new RegExp(p(s),"g");if("string"==typeof e&&(e=JSON.parse(e)),Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return h(null,e,u);if("object"==typeof e[0])return h(c||Object.keys(e[0]),e,u)}else if("object"==typeof e)return"string"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:"object"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||"object"==typeof e.data[0]||(e.data=[e.data])),h(e.fields||[],e.data||[],u);throw new Error("Unable to serialize unrecognized input");function h(e,t,n){var o="";"string"==typeof e&&(e=JSON.parse(e)),"string"==typeof t&&(t=JSON.parse(t));var s=Array.isArray(e)&&0<e.length,l=!Array.isArray(t[0]);if(s&&r){for(var u=0;u<e.length;u++)0<u&&(o+=i),o+=m(e[u],u);0<t.length&&(o+=a)}for(var c=0;c<t.length;c++){var d=s?e.length:t[c].length,f=!1,h=s?0===Object.keys(t[c]).length:0===t[c].length;if(n&&!s&&(f="greedy"===n?""===t[c].join("").trim():1===t[c].length&&0===t[c][0].length),"greedy"===n&&s){for(var p=[],v=0;v<d;v++){var g=l?e[v]:v;p.push(t[c][g])}f=""===p.join("").trim()}if(!f){for(var y=0;y<d;y++){0<y&&!h&&(o+=i);var E=s&&l?e[y]:y;o+=m(t[c][E],y)}c<t.length-1&&(!n||0<d&&!h)&&(o+=a)}}return o}function m(e,t){if(null==e)return"";if(e.constructor===Date)return JSON.stringify(e).slice(1,25);!0===d&&"string"==typeof e&&null!==e.match(/^[=+\-@].*$/)&&(e="'"+e);var r=e.toString().replace(f,l);return"boolean"==typeof n&&n||"function"==typeof n&&n(e,t)||Array.isArray(n)&&n[t]||function(e,t){for(var n=0;n<t.length;n++)if(-1<e.indexOf(t[n]))return!0;return!1}(r,o.BAD_DELIMITERS)||-1<r.indexOf(i)||" "===r.charAt(0)||" "===r.charAt(r.length-1)?s+r+s:r}}};if(o.RECORD_SEP=String.fromCharCode(30),o.UNIT_SEP=String.fromCharCode(31),o.BYTE_ORDER_MARK="\ufeff",o.BAD_DELIMITERS=["\r","\n",'"',o.BYTE_ORDER_MARK],o.WORKERS_SUPPORTED=!n&&!!t.Worker,o.NODE_STREAM_INPUT=1,o.LocalChunkSize=10485760,o.RemoteChunkSize=5242880,o.DefaultDelimiter=",",o.Parser=m,o.ParserHandle=h,o.NetworkStreamer=u,o.FileStreamer=c,o.StringStreamer=d,o.ReadableStreamStreamer=f,t.jQuery){var s=t.jQuery;s.fn.parse=function(e){var n=e.config||{},r=[];return this.each((function(e){if("INPUT"!==s(this).prop("tagName").toUpperCase()||"file"!==s(this).attr("type").toLowerCase()||!t.FileReader||!this.files||0===this.files.length)return!0;for(var i=0;i<this.files.length;i++)r.push({file:this.files[i],inputElem:this,instanceConfig:s.extend({},n)})})),i(),this;function i(){if(0!==r.length){var t,n,i,l=r[0];if(w(e.before)){var u=e.before(l.file,l.inputElem);if("object"==typeof u){if("abort"===u.action)return t=l.file,n=l.inputElem,i=u.reason,void(w(e.error)&&e.error({name:"AbortError"},t,n,i));if("skip"===u.action)return void a();"object"==typeof u.config&&(l.instanceConfig=s.extend(l.instanceConfig,u.config))}else if("skip"===u)return void a()}var c=l.instanceConfig.complete;l.instanceConfig.complete=function(e){w(c)&&c(e,l.file,l.inputElem),a()},o.parse(l.file,l.instanceConfig)}else w(e.complete)&&e.complete()}function a(){r.splice(0,1),i()}}}function l(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=E(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null),this._handle=new h(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,n){if(this.isFirstChunk&&w(this._config.beforeFirstChunk)){var i=this._config.beforeFirstChunk(e);void 0!==i&&(e=i)}this.isFirstChunk=!1,this._halted=!1;var a=this._partialLine+e;this._partialLine="";var s=this._handle.parse(a,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var l=s.meta.cursor;this._finished||(this._partialLine=a.substring(l-this._baseIndex),this._baseIndex=l),s&&s.data&&(this._rowCount+=s.data.length);var u=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(r)t.postMessage({results:s,workerId:o.WORKER_ID,finished:u});else if(w(this._config.chunk)&&!n){if(this._config.chunk(s,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);s=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(s.data),this._completeResults.errors=this._completeResults.errors.concat(s.errors),this._completeResults.meta=s.meta),this._completed||!u||!w(this._config.complete)||s&&s.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),u||s&&s.meta.paused||this._nextChunk(),s}this._halted=!0},this._sendError=function(e){w(this._config.error)?this._config.error(e):r&&this._config.error&&t.postMessage({workerId:o.WORKER_ID,error:e,finished:!1})}}function u(e){var t;(e=e||{}).chunkSize||(e.chunkSize=o.RemoteChunkSize),l.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(t=new XMLHttpRequest,this._config.withCredentials&&(t.withCredentials=this._config.withCredentials),n||(t.onload=b(this._chunkLoaded,this),t.onerror=b(this._chunkError,this)),t.open(this._config.downloadRequestBody?"POST":"GET",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var r in e)t.setRequestHeader(r,e[r])}if(this._config.chunkSize){var i=this._start+this._config.chunkSize-1;t.setRequestHeader("Range","bytes="+this._start+"-"+i)}try{t.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===t.status&&this._chunkError()}},this._chunkLoaded=function(){4===t.readyState&&(t.status<200||400<=t.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:t.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader("Content-Range");return null===t?-1:parseInt(t.substring(t.lastIndexOf("/")+1))}(t),this.parseChunk(t.responseText)))},this._chunkError=function(e){var n=t.statusText||e;this._sendError(new Error(n))}}function c(e){var t,n;(e=e||{}).chunkSize||(e.chunkSize=o.LocalChunkSize),l.call(this,e);var r="undefined"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,r?((t=new FileReader).onload=b(this._chunkLoaded,this),t.onerror=b(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var i=Math.min(this._start+this._config.chunkSize,this._input.size);e=n.call(e,this._start,i)}var a=t.readAsText(e,this._config.encoding);r||this._chunkLoaded({target:{result:a}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function d(e){var t;l.call(this,e=e||{}),this.stream=function(e){return t=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,n=this._config.chunkSize;return n?(e=t.substring(0,n),t=t.substring(n)):(e=t,t=""),this._finished=!t,this.parseChunk(e)}}}function f(e){l.call(this,e=e||{});var t=[],n=!0,r=!1;this.pause=function(){l.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){l.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError)},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):n=!0},this._streamData=b((function(e){try{t.push("string"==typeof e?e:e.toString(this._config.encoding)),n&&(n=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}}),this),this._streamError=b((function(e){this._streamCleanUp(),this._sendError(e)}),this),this._streamEnd=b((function(){this._streamCleanUp(),r=!0,this._streamData("")}),this),this._streamCleanUp=b((function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError)}),this)}function h(e){var t,n,r,i=Math.pow(2,53),a=-i,s=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,l=/^(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))$/,u=this,c=0,d=0,f=!1,h=!1,v=[],g={data:[],errors:[],meta:{}};if(w(e.step)){var y=e.step;e.step=function(t){if(g=t,A())_();else{if(_(),0===g.data.length)return;c+=t.data.length,e.preview&&c>e.preview?n.abort():(g.data=g.data[0],y(g,u))}}}function b(t){return"greedy"===e.skipEmptyLines?""===t.join("").trim():1===t.length&&0===t[0].length}function _(){if(g&&r&&(T("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+o.DefaultDelimiter+"'"),r=!1),e.skipEmptyLines)for(var t=0;t<g.data.length;t++)b(g.data[t])&&g.data.splice(t--,1);return A()&&function(){if(g)if(Array.isArray(g.data[0])){for(var t=0;A()&&t<g.data.length;t++)g.data[t].forEach(n);g.data.splice(0,1)}else g.data.forEach(n);function n(t,n){w(e.transformHeader)&&(t=e.transformHeader(t,n)),v.push(t)}}(),function(){if(!g||!e.header&&!e.dynamicTyping&&!e.transform)return g;function t(t,n){var r,i=e.header?{}:[];for(r=0;r<t.length;r++){var a=r,o=t[r];e.header&&(a=r>=v.length?"__parsed_extra":v[r]),e.transform&&(o=e.transform(o,a)),o=C(a,o),"__parsed_extra"===a?(i[a]=i[a]||[],i[a].push(o)):i[a]=o}return e.header&&(r>v.length?T("FieldMismatch","TooManyFields","Too many fields: expected "+v.length+" fields but parsed "+r,d+n):r<v.length&&T("FieldMismatch","TooFewFields","Too few fields: expected "+v.length+" fields but parsed "+r,d+n)),i}var n=1;return!g.data.length||Array.isArray(g.data[0])?(g.data=g.data.map(t),n=g.data.length):g.data=t(g.data,0),e.header&&g.meta&&(g.meta.fields=v),d+=n,g}()}function A(){return e.header&&0===v.length}function C(t,n){return r=t,e.dynamicTypingFunction&&void 0===e.dynamicTyping[r]&&(e.dynamicTyping[r]=e.dynamicTypingFunction(r)),!0===(e.dynamicTyping[r]||e.dynamicTyping)?"true"===n||"TRUE"===n||"false"!==n&&"FALSE"!==n&&(function(e){if(s.test(e)){var t=parseFloat(e);if(a<t&&t<i)return!0}return!1}(n)?parseFloat(n):l.test(n)?new Date(n):""===n?null:n):n;var r}function T(e,t,n,r){var i={type:e,code:t,message:n};void 0!==r&&(i.row=r),g.errors.push(i)}this.parse=function(i,a,s){var l=e.quoteChar||'"';if(e.newline||(e.newline=function(e,t){e=e.substring(0,1048576);var n=new RegExp(p(t)+"([^]*?)"+p(t),"gm"),r=(e=e.replace(n,"")).split("\r"),i=e.split("\n"),a=1<i.length&&i[0].length<r[0].length;if(1===r.length||a)return"\n";for(var o=0,s=0;s<r.length;s++)"\n"===r[s][0]&&o++;return o>=r.length/2?"\r\n":"\r"}(i,l)),r=!1,e.delimiter)w(e.delimiter)&&(e.delimiter=e.delimiter(i),g.meta.delimiter=e.delimiter);else{var u=function(t,n,r,i,a){var s,l,u,c;a=a||[",","\t","|",";",o.RECORD_SEP,o.UNIT_SEP];for(var d=0;d<a.length;d++){var f=a[d],h=0,p=0,v=0;u=void 0;for(var g=new m({comments:i,delimiter:f,newline:n,preview:10}).parse(t),y=0;y<g.data.length;y++)if(r&&b(g.data[y]))v++;else{var E=g.data[y].length;p+=E,void 0!==u?0<E&&(h+=Math.abs(E-u),u=E):u=E}0<g.data.length&&(p/=g.data.length-v),(void 0===l||h<=l)&&(void 0===c||c<p)&&1.99<p&&(l=h,s=f,c=p)}return{successful:!!(e.delimiter=s),bestDelimiter:s}}(i,e.newline,e.skipEmptyLines,e.comments,e.delimitersToGuess);u.successful?e.delimiter=u.bestDelimiter:(r=!0,e.delimiter=o.DefaultDelimiter),g.meta.delimiter=e.delimiter}var c=E(e);return e.preview&&e.header&&c.preview++,t=i,n=new m(c),g=n.parse(t,a,s),_(),f?{meta:{paused:!0}}:g||{meta:{paused:!1}}},this.paused=function(){return f},this.pause=function(){f=!0,n.abort(),t=w(e.chunk)?"":t.substring(n.getCharIndex())},this.resume=function(){u.streamer._halted?(f=!1,u.streamer.parseChunk(t,!0)):setTimeout(u.resume,3)},this.aborted=function(){return h},this.abort=function(){h=!0,n.abort(),g.meta.aborted=!0,w(e.complete)&&e.complete(g),t=""}}function p(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function m(e){var t,n=(e=e||{}).delimiter,r=e.newline,i=e.comments,a=e.step,s=e.preview,l=e.fastMode,u=t=void 0===e.quoteChar?'"':e.quoteChar;if(void 0!==e.escapeChar&&(u=e.escapeChar),("string"!=typeof n||-1<o.BAD_DELIMITERS.indexOf(n))&&(n=","),i===n)throw new Error("Comment character same as delimiter");!0===i?i="#":("string"!=typeof i||-1<o.BAD_DELIMITERS.indexOf(i))&&(i=!1),"\n"!==r&&"\r"!==r&&"\r\n"!==r&&(r="\n");var c=0,d=!1;this.parse=function(e,o,f){if("string"!=typeof e)throw new Error("Input must be a string");var h=e.length,m=n.length,v=r.length,g=i.length,y=w(a),E=[],b=[],_=[],A=c=0;if(!e)return j();if(l||!1!==l&&-1===e.indexOf(t)){for(var C=e.split(r),T=0;T<C.length;T++){if(_=C[T],c+=_.length,T!==C.length-1)c+=r.length;else if(f)return j();if(!i||_.substring(0,g)!==i){if(y){if(E=[],L(_.split(n)),P(),d)return j()}else L(_.split(n));if(s&&s<=T)return E=E.slice(0,s),j(!0)}}return j()}for(var x=e.indexOf(n,c),k=e.indexOf(r,c),G=new RegExp(p(u)+p(t),"g"),R=e.indexOf(t,c);;)if(e[c]!==t)if(i&&0===_.length&&e.substring(c,c+g)===i){if(-1===k)return j();c=k+v,k=e.indexOf(r,c),x=e.indexOf(n,c)}else if(-1!==x&&(x<k||-1===k))_.push(e.substring(c,x)),c=x+m,x=e.indexOf(n,c);else{if(-1===k)break;if(_.push(e.substring(c,k)),D(k+v),y&&(P(),d))return j();if(s&&E.length>=s)return j(!0)}else for(R=c,c++;;){if(-1===(R=e.indexOf(t,R+1)))return f||b.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:E.length,index:c}),F();if(R===h-1)return F(e.substring(c,R).replace(G,t));if(t!==u||e[R+1]!==u){if(t===u||0===R||e[R-1]!==u){-1!==x&&x<R+1&&(x=e.indexOf(n,R+1)),-1!==k&&k<R+1&&(k=e.indexOf(r,R+1));var S=I(-1===k?x:Math.min(x,k));if(e[R+1+S]===n){_.push(e.substring(c,R).replace(G,t)),e[c=R+1+S+m]!==t&&(R=e.indexOf(t,c)),x=e.indexOf(n,c),k=e.indexOf(r,c);break}var O=I(k);if(e.substring(R+1+O,R+1+O+v)===r){if(_.push(e.substring(c,R).replace(G,t)),D(R+1+O+v),x=e.indexOf(n,c),R=e.indexOf(t,c),y&&(P(),d))return j();if(s&&E.length>=s)return j(!0);break}b.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:E.length,index:c}),R++}}else R++}return F();function L(e){E.push(e),A=c}function I(t){var n=0;if(-1!==t){var r=e.substring(R+1,t);r&&""===r.trim()&&(n=r.length)}return n}function F(t){return f||(void 0===t&&(t=e.substring(c)),_.push(t),c=h,L(_),y&&P()),j()}function D(t){c=t,L(_),_=[],k=e.indexOf(r,c)}function j(e){return{data:E,errors:b,meta:{delimiter:n,linebreak:r,aborted:d,truncated:!!e,cursor:A+(o||0)}}}function P(){a(j()),E=[],b=[]}},this.abort=function(){d=!0},this.getCharIndex=function(){return c}}function v(e){var t=e.data,n=i[t.workerId],r=!1;if(t.error)n.userError(t.error,t.file);else if(t.results&&t.results.data){var a={abort:function(){r=!0,g(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:y,resume:y};if(w(n.userStep)){for(var o=0;o<t.results.data.length&&(n.userStep({data:t.results.data[o],errors:t.results.errors,meta:t.results.meta},a),!r);o++);delete t.results}else w(n.userChunk)&&(n.userChunk(t.results,a,t.file),delete t.results)}t.finished&&!r&&g(t.workerId,t.results)}function g(e,t){var n=i[e];w(n.userComplete)&&n.userComplete(t),n.terminate(),delete i[e]}function y(){throw new Error("Not implemented.")}function E(e){if("object"!=typeof e||null===e)return e;var t=Array.isArray(e)?[]:{};for(var n in e)t[n]=E(e[n]);return t}function b(e,t){return function(){e.apply(t,arguments)}}function w(e){return"function"==typeof e}return r&&(t.onmessage=function(e){var n=e.data;if(void 0===o.WORKER_ID&&n&&(o.WORKER_ID=n.workerId),"string"==typeof n.input)t.postMessage({workerId:o.WORKER_ID,results:o.parse(n.input,n.config),finished:!0});else if(t.File&&n.input instanceof File||n.input instanceof Object){var r=o.parse(n.input,n.config);r&&t.postMessage({workerId:o.WORKER_ID,results:r,finished:!0})}}),(u.prototype=Object.create(l.prototype)).constructor=u,(c.prototype=Object.create(l.prototype)).constructor=c,(d.prototype=Object.create(d.prototype)).constructor=d,(f.prototype=Object.create(l.prototype)).constructor=f,o})?r.apply(t,i):r)||(e.exports=a)},function(e,t,n){var r,i,a;i=[],void 0===(a="function"==typeof(r=function(){return function e(t,n,r){var i,a,o=window,s="application/octet-stream",l=r||s,u=t,c=!n&&!r&&u,d=document.createElement("a"),f=function(e){return String(e)},h=o.Blob||o.MozBlob||o.WebKitBlob||f,p=n||"download";if(h=h.call?h.bind(o):Blob,"true"===String(this)&&(l=(u=[u,l])[0],u=u[1]),c&&c.length<2048&&(p=c.split("/").pop().split("?")[0],d.href=c,-1!==d.href.indexOf(c))){var m=new XMLHttpRequest;return m.open("GET",c,!0),m.responseType="blob",m.onload=function(t){e(t.target.response,p,s)},setTimeout((function(){m.send()}),0),m}if(/^data:([\w+-]+\/[\w+.-]+)?[,;]/.test(u)){if(!(u.length>2096103.424&&h!==f))return navigator.msSaveBlob?navigator.msSaveBlob(E(u),p):b(u);l=(u=E(u)).type||s}else if(/([\x80-\xff])/.test(u)){for(var v=0,g=new Uint8Array(u.length),y=g.length;v<y;++v)g[v]=u.charCodeAt(v);u=new h([g],{type:l})}function E(e){for(var t=e.split(/[:;,]/),n=t[1],r=("base64"==t[2]?atob:decodeURIComponent)(t.pop()),i=r.length,a=0,o=new Uint8Array(i);a<i;++a)o[a]=r.charCodeAt(a);return new h([o],{type:n})}function b(e,t){if("download"in d)return d.href=e,d.setAttribute("download",p),d.className="download-js-link",d.innerHTML="downloading...",d.style.display="none",document.body.appendChild(d),setTimeout((function(){d.click(),document.body.removeChild(d),!0===t&&setTimeout((function(){o.URL.revokeObjectURL(d.href)}),250)}),66),!0;if(/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(navigator.userAgent))return/^data:/.test(e)&&(e="data:"+e.replace(/^data:([\w\/\-\+]+)/,s)),window.open(e)||confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")&&(location.href=e),!0;var n=document.createElement("iframe");document.body.appendChild(n),!t&&/^data:/.test(e)&&(e="data:"+e.replace(/^data:([\w\/\-\+]+)/,s)),n.src=e,setTimeout((function(){document.body.removeChild(n)}),333)}if(i=u instanceof h?u:new h([u],{type:l}),navigator.msSaveBlob)return navigator.msSaveBlob(i,p);if(o.URL)b(o.URL.createObjectURL(i),!0);else{if("string"==typeof i||i.constructor===f)try{return b("data:"+l+";base64,"+o.btoa(i))}catch(e){return b("data:"+l+","+encodeURIComponent(i))}(a=new FileReader).onload=function(e){b(this.result)},a.readAsDataURL(i)}return!0}})?r.apply(t,i):r)||(e.exports=a)},function(e,t,n){e.exports=n(5)},function(e,t,n){var r=function(e){"use strict";var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=t&&t.prototype instanceof d?t:d,a=Object.create(i.prototype),o=new A(r||[]);return a._invoke=function(e,t,n){var r="suspendedStart";return function(i,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw a;return T()}for(n.method=i,n.arg=a;;){var o=n.delegate;if(o){var s=b(o,n);if(s){if(s===c)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=u(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===c)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}(e,n,o),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var c={};function d(){}function f(){}function h(){}var p={};p[i]=function(){return this};var m=Object.getPrototypeOf,v=m&&m(m(C([])));v&&v!==t&&n.call(v,i)&&(p=v);var g=h.prototype=d.prototype=Object.create(p);function y(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function E(e,t){var r;this._invoke=function(i,a){function o(){return new t((function(r,o){!function r(i,a,o,s){var l=u(e[i],e,a);if("throw"!==l.type){var c=l.arg,d=c.value;return d&&"object"==typeof d&&n.call(d,"__await")?t.resolve(d.__await).then((function(e){r("next",e,o,s)}),(function(e){r("throw",e,o,s)})):t.resolve(d).then((function(e){c.value=e,o(c)}),(function(e){return r("throw",e,o,s)}))}s(l.arg)}(i,a,r,o)}))}return r=r?r.then(o,o):o()}}function b(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,b(e,t),"throw"===t.method))return c;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var r=u(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,c;var i=r.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,c):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,c)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function _(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(w,this),this.reset(!0)}function C(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:T}}function T(){return{value:void 0,done:!0}}return f.prototype=g.constructor=h,h.constructor=f,f.displayName=s(h,o,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,h):(e.__proto__=h,s(e,o,"GeneratorFunction")),e.prototype=Object.create(g),e},e.awrap=function(e){return{__await:e}},y(E.prototype),E.prototype[a]=function(){return this},e.AsyncIterator=E,e.async=function(t,n,r,i,a){void 0===a&&(a=Promise);var o=new E(l(t,n,r,i),a);return e.isGeneratorFunction(n)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},y(g),s(g,o,"Generator"),g[i]=function(){return this},g.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=C,A.prototype={constructor:A,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(_),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return o.type="throw",o.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(s&&l){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(s){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var o=a?a.completion:{};return o.type=e,o.arg=t,a?(this.method="next",this.next=a.finallyLoc,c):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),c},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),_(n),c}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;_(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:C(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),c}},e}(e.exports);try{regeneratorRuntime=r}catch(e){Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){"use strict";n.r(t),n.d(t,"autoAnnotateFeatures",(function(){return pe})),n.d(t,"autoAnnotateParts",(function(){return me})),n.d(t,"autoAnnotatePrimers",(function(){return ve})),n.d(t,"AutoAnnotateModal",(function(){return ge}));var r=n(0),i=n.n(r),a=n(1),o="autoAnnotate";function s(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function l(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){s(a,r,i,o,l,"next",e)}function l(e){s(a,r,i,o,l,"throw",e)}o(void 0)}))}}var u=window.addOnGlobals,c=u.startCase,d=u.compose,f=u.hideDialog,h=u.typeField,p=u.pluralize,m=u.React,v=u.useEffect,g=u.DataTable,y=u.DialogFooter,E=u.withSelectedEntities,b=u.withSelectTableRecords,w=u.tidyUpAnnotation,_=["name",h,"start","end","strand"],A=["name","start","end","strand"],C=d(E(o),b(o))((function(e){var t=e.newAnnotations,n=e.annotationType,r=e.annotationVisibilityShow,a=e.beforeAnnotationCreate,s=e.handleSubmit,u=e.selectTableRecords,d=e.sequenceData,h=e[o+"SelectedEntities"];return v((function(){u(t)}),[t,u]),m.createElement("div",{className:"bp3-dialog-body"},m.createElement("div",null,"The following ",n,t.length>1?"s":""," will be added:",m.createElement(g,{isInfinite:!0,formName:o,entities:t,withCheckboxes:!0,schema:"feature"===n?_:A})),m.createElement(y,{hideModal:f,onClick:s(l(i.a.mark((function t(){var o;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:o=p(n),h.forEach((function(t,i){a&&a({annotationTypePlural:o,annotation:t,props:e});var s={};h.length>1&&(s=0===i?{batchUndoStart:!0}:i===h.length-1?{batchUndoEnd:!0}:{batchUndoMiddle:!0}),e["upsert"+c(n)](w(t,{sequenceData:d,annotationType:o}),s),r(o)})),f();case 3:case"end":return t.stop()}}),t)})))),text:"Add"}))})),T=window.addOnGlobals,x=T.Tab,k=T.Tabs,G=T.wrapDialog,R=T.React,S={background:"red",marginTop:2},O=G({title:"Annotation Matching"})((function(e){var t=e.isRegex;return R.createElement("div",{className:"bp3-dialog-body"},R.createElement(k,{defaultSelectedTabId:t?"regex":"iupac"},R.createElement(x,{id:"iupac",title:"IUPAC",panel:R.createElement("div",null,R.createElement("p",null,"When in standard (IUPAC) mode, annotations are matched case-insensitively. You can use any degenerate IUPAC base pair as well as a couple special characters."),R.createElement("h4",null,"Special Characters:"),R.createElement("div",{style:{display:"grid",columnGap:20,gridTemplateColumns:"1fr 5fr",maxHeight:200,overflow:"auto"}},R.createElement("div",null,"#"),R.createElement("div",null,"Any arbitrary string of zero or more bases can be matched here."),R.createElement("div",null,"<"),R.createElement("div",null,"Any bases before a ","<"," are considered optional"),R.createElement("div",null,">"),R.createElement("div",null,"Any bases after a ",">"," are considered optional"),R.createElement("div",null,"M")," ",R.createElement("div",null,"AC"),R.createElement("div",null,"R")," ",R.createElement("div",null,"AG"),R.createElement("div",null,"W")," ",R.createElement("div",null,"AT"),R.createElement("div",null,"S")," ",R.createElement("div",null,"CG"),R.createElement("div",null,"Y")," ",R.createElement("div",null,"CT"),R.createElement("div",null,"K")," ",R.createElement("div",null,"GT"),R.createElement("div",null,"V")," ",R.createElement("div",null,"ACG"),R.createElement("div",null,"H")," ",R.createElement("div",null,"ACT"),R.createElement("div",null,"D")," ",R.createElement("div",null,"AGT"),R.createElement("div",null,"B")," ",R.createElement("div",null,"CGT"),R.createElement("div",null,"X")," ",R.createElement("div",null,"GATC"),R.createElement("div",null,"N")," ",R.createElement("div",null,"GATC"),R.createElement("div",null,".")," ",R.createElement("div",null,"GATC")),R.createElement("br",null),R.createElement("h4",null,"Examples:"),R.createElement("div",{style:{display:"grid",columnGap:20,gridTemplateColumns:"2fr 5fr"}},R.createElement("h6",null,"Annotation"),R.createElement("h6",null,"Sequence (matches in ",R.createElement("span",{style:S},"red"),")"),R.createElement("div",null,"AATT"),R.createElement("div",null,"AA",R.createElement("span",{style:S},"AATT"),"TTGGGGGCCCCCAAGT"),R.createElement("div",null,"aAkT"),R.createElement("div",null,"AA",R.createElement("span",{style:S},"AATT"),"TTGGGGGCCCCC",R.createElement("span",{style:S},"AAGT")),R.createElement("div",null,"ANT"),R.createElement("div",null,"AA",R.createElement("span",{style:S},"AAT"),"TTTGGGGGCCCCCA",R.createElement("span",{style:S},"AGT")),R.createElement("div",null,"T#C"),R.createElement("div",null,"AAAATTT",R.createElement("span",{style:S},"TGGGGGC"),"CCCCAAGT"),R.createElement("div",null,"CA","<","ATTT"),R.createElement("div",null,"AA",R.createElement("span",{style:S},"AATTT"),"TGGGGGCCCCCAAGT"),R.createElement("div",null,"CA","<","ATT",">","TTGAG"),R.createElement("div",null,"AA",R.createElement("span",{style:S},"AATTTTG"),"GGGGCCCCCAAGT")),R.createElement("br",null))}),R.createElement(x,{id:"regex",title:"Regex",panel:R.createElement("div",null,R.createElement("p",null,"When in regex mode, you can use any custom regex to match base pairs"),R.createElement("p",null,"You can learn more and try out your custom regexes at"," ",R.createElement("a",{href:"https://regex101.com/"},"https://regex101.com/")),R.createElement("br",null),R.createElement("h4",null,"Examples:"),R.createElement("div",{style:{display:"grid",columnGap:20,gridTemplateColumns:"2fr 5fr"}},R.createElement("h6",null,"Annotation"),R.createElement("h6",null,"Sequence (matches in ",R.createElement("span",{style:S},"red"),")"),R.createElement("div",null,"AATT"),R.createElement("div",null,"AA",R.createElement("span",{style:S},"AATT"),"TTGGGGGCCCCCAAGT"),R.createElement("div",null,"aAtT"),R.createElement("div",null,"AA",R.createElement("span",{style:S},"AATT"),"TTGGGGGCCCCCAAGT"),R.createElement("div",null,"A.T"),R.createElement("div",null,"AA",R.createElement("span",{style:S},"AAT"),"TTTGGGGGCCCCCA",R.createElement("span",{style:S},"AGT")),R.createElement("div",null,"T.*C"),R.createElement("div",null,"AAAA",R.createElement("span",{style:S},"TTTTGGGGGCCCCC"),"AAGT"),R.createElement("div",null,"T[^T]*?C"),R.createElement("div",null,"AAAATTT",R.createElement("span",{style:S},"TGGGGGC"),"CCCCAAGT"),R.createElement("div",null,"C?A?ATT"),R.createElement("div",null,"AA",R.createElement("span",{style:S},"AATTT"),"TGGGGGCCCCCAAGT"),R.createElement("div",null,"C?A?ATTT?T?C?"),R.createElement("div",null,"AA",R.createElement("span",{style:S},"AATTTT"),"GGGGGCCCCCAAGT")),R.createElement("br",null))})))}));function L(){return(L=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var I={header:!0,skipEmptyLines:"greedy",trimHeaders:!0},F=function(e,t){return void 0===t&&(t={}),new Promise((function(n,r){Object(a.parse)(e.originFileObj,L({},I,{complete:function(e){if(e&&e.errors&&e.errors.length)return r("Error in csv: "+JSON.stringify(e.errors));n(e)},error:function(e){r(e)}},t))}))},D=function(e,t,n){var r=t.filter((function(t){return!e.includes(t)}));if(r.length)return(n?"The file "+n:"CSV file")+" is missing required headers. ("+r.join(", ")+")"},j=function(e,t,n){var r=t.filter((function(t){return!e[t]}));if(r.length)return 1===r.length?"Row "+(n+1)+' is missing the required field "'+r[0]+'"':"Row "+(n+1)+" is missing these required fields: "+r.join(", ")},P=n(2),U=n.n(P);function M(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return q(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return q(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function N(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function z(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){N(a,r,i,o,s,"next",e)}function s(e){N(a,r,i,o,s,"throw",e)}o(void 0)}))}}function B(){return(B=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var W=window.addOnGlobals,H=W.shortid,K=W.FileUploadField,Q=W.Colors,V=W.Tab,Y=W.Tabs,J=W.pluralize,$=W.reduxForm,X=W.SubmissionError,Z=W.featureColors,ee=W.FeatureTypes,te=W.InfoHelper,ne=W.showConfirmationDialog,re=W.wrapDialog,ie=W.showDialog,ae=W.withEditorProps,oe=W.DialogFooter,se=W.useState,le=W.hideDialog,ue=W.startCase,ce=W.compose,de=W.React,fe=W.convertApELikeRegexToRegex,he=W.autoAnnotate;function pe(){ie({ModalComponent:ge,props:{annotationType:"feature"}})}function me(){ie({ModalComponent:ge,props:{annotationType:"part"}})}function ve(){ie({ModalComponent:ge,props:{annotationType:"primer"}})}var ge=ce(re((function(e){return{title:"Auto Annotate "+ue(J(e.annotationType))}})),ae,$({form:o}))((function(e){var t=e.sequenceData,n=e.handleSubmit,r=e.annotationType,o=void 0===r?"feature":r,s=e.error,l=se("csvFile"),u=l[0],c=l[1],d=se(!1),f=d[0],h=d[1];return f?de.createElement(C,B({},e,{newAnnotations:f})):de.createElement("div",{className:"bp3-dialog-body"},de.createElement(Y,{renderActiveTabPanelOnly:!0,onChange:c,selectedTabId:u},de.createElement(V,{panel:de.createElement("div",null,de.createElement("div",null,"Select a CSV file with the following columns -",de.createElement("br",null),de.createElement("br",null),de.createElement("div",{style:{display:"flex"}},"name,description,sequence,type,",de.createElement("span",{style:{display:"flex"}},"isRegex ",de.createElement(te,{onClick:function(e){e.stopPropagation(),e.preventDefault(),ie({ModalComponent:O})},content:de.createElement("span",null,"Any valid regexes allowed. Click for more info about regex matching")}))),de.createElement("br",null),"feature"!==o&&de.createElement(de.Fragment,null,de.createElement("i",null,'Note: the "type" column is optional'),de.createElement("br",null)),de.createElement("br",null),de.createElement("a",{onClick:function(){var e=[B({name:"Example "+ue(o)+" 1",description:"I'm a description",sequence:"gatNNtacaggttt"},"feature"===o&&{type:"cds"},{isRegex:!1}),B({name:"Example "+ue(o)+" 2",description:"I'm another description",sequence:"gat.*tacccc.*aggttt"},"feature"===o&&{type:"cds"},{isRegex:!0})],t=Object(a.unparse)(e);U()(t,"Example CSV Annotation Upload File.csv","text/plain")}},"download example")),de.createElement(K,{name:"csvFile",fileLimit:1,isRequired:!0,accept:".csv"})),id:"csvFile",title:"CSV"}),de.createElement(V,{panel:de.createElement("div",null,de.createElement("div",null,"Select an ApE style features .txt file (",de.createElement("a",{onClick:function(){U()("T3\tATTAACCCTCACTAAAGGGA\tprimer_bind\tcyan\tgreen\t0\t0\nM13-fwd\tTGTAAAACGACGGCCAGT\tprimer_bind\tcyan\tgreen\t0\t0\nFRT\tGAAGTTCCTATTCTCTAGAAAGTATAGGAACTTC\tmisc_recomb\torchid\tpink\t0\t0","Example APE Feature List Upload File.txt","text/plain")}},"download example"),"):"),de.createElement(K,{fileLimit:1,name:"apeFile",isRequired:!0,accept:".txt"}),s&&de.createElement("div",{style:{padding:5,color:Q.RED1}},s)),id:"apeFile",title:"ApE File"})),de.createElement(oe,{hideModal:le,onClick:n(function(){var e=z(i.a.mark((function e(n){var r,a,s,l,c,d,f,p,m,v,g,y,E,b,w,_,A,C,T,x,k,G,R,S,O,L,I,P,U,q,N,W;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.apeFile,a=n.csvFile,s=!1,l=[],e.prev=3,d=function(){var e=z(i.a.mark((function e(t,n){var r,a,u,c;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.type,a=void 0===r?"":r,u=t.sequence,"feature"!==o){e.next=14;break}if(c=ee.find((function(e){return e.toLowerCase()===a.toLowerCase()}))){e.next=13;break}if(s){e.next=10;break}return e.next=7,ne({cancelButtonText:"Stop Auto-Annotate",text:"Detected that "+n+" has a non-standard type of "+a+". We will assign it and all subsequent non-standard types to use the misc_feature type instead"});case 7:if(s=e.sent){e.next=10;break}throw{validationError:n+" specifies the feature type "+a+" which is not valid"};case 10:t.type="misc_feature",e.next=14;break;case 13:t.type=c;case 14:if(u){e.next=16;break}throw{validationError:n+" did not have a sequence"};case 16:if(!t.isRegex||"TRUE"!==t.isRegex.toUpperCase()){e.next=27;break}e.prev=17,new RegExp(void 0),e.next=24;break;case 21:throw e.prev=21,e.t0=e.catch(17),{validationError:n+" has an invalid sequence/regex. Please fix it manually."};case 24:t.isRegex=!0,e.next=28;break;case 27:t.isRegex=void 0;case 28:l.push(t);case 29:case"end":return e.stop()}}),e,null,[[17,21]])})));return function(t,n){return e.apply(this,arguments)}}(),"csvFile"!==u){e.next=29;break}return f=["name","description","sequence"],"feature"===o&&f.push("type"),f.push("isRegex"),e.next=11,F(a[0]);case 11:if(p=e.sent,m=p.data,v=p.meta.fields,!(g=D(v,f))){e.next=17;break}throw{validationError:g};case 17:y=M(m.entries());case 18:if((E=y()).done){e.next=27;break}if(b=E.value,w=b[0],_=b[1],!(A=j(_,f,w))){e.next=23;break}throw{validationError:A};case 23:return e.next=25,d(_,"Row "+(w+1));case 25:e.next=18;break;case 27:e.next=45;break;case 29:if("apeFile"!==u){e.next=43;break}return e.next=32,F(r[0],{header:!1});case 32:C=e.sent,T=C.data,x=M(T.entries());case 35:if((k=x()).done){e.next=41;break}return G=k.value,R=G[0],S=G[1],O=S[0],L=S[1],I=S[2],e.next=39,d({name:O,sequence:L,type:I},"Row "+(R+1));case 39:e.next=35;break;case 41:e.next=45;break;case 43:console.info("we shouldn't be here!"),console.info("fileType:",u);case 45:if(l.length){e.next=47;break}return e.abrupt("return",window.toastr.warning("No Annotations Detected on File. Please check that your file is in the correct format."));case 47:P={},l.forEach((function(e){var t=H();P[t]=B({},e,{sequence:e.isRegex?e.sequence:fe(e.sequence),id:t})})),q=he({seqsToAnnotateById:(c={},c[U="placeholderId"]=B({},t,{id:U}),c),annotationsToCheckById:P}),(N=q[U])&&N.length?h(N.map((function(e){var t=B({},P[e.id],e,{forward:-1!==e.strand,id:H()});return t.color=t.color||Z[t.type],t}))):window.toastr.warning("No "+o+"s detected on sequence."),e.next=62;break;case 54:if(e.prev=54,e.t0=e.catch(3),console.error("error:",e.t0),!e.t0.validationError){e.next=61;break}throw new X(((W={})[u]=e.t0.validationError,W));case 61:window.toastr.error("Error annotating "+o+"(s). Double check your file to make sure it is valid!");case 62:case"end":return e.stop()}}),e,null,[[3,54]])})));return function(t){return e.apply(this,arguments)}}()),text:"Annotate"}))}));window._ove_addons||(window._ove_addons={}),window._ove_addons.autoAnnotateFeatures=pe,window._ove_addons.autoAnnotateParts=me,window._ove_addons.autoAnnotatePrimers=ve}]).default})); | ||
*/i=[],void 0===(a="function"==typeof(r=function e(){"use strict";var t="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t?t:{},n=!t.document&&!!t.postMessage,r=n&&/blob:/i.test((t.location||{}).protocol),i={},a=0,o={parse:function(n,r){var s=(r=r||{}).dynamicTyping||!1;if(w(s)&&(r.dynamicTypingFunction=s,s={}),r.dynamicTyping=s,r.transform=!!w(r.transform)&&r.transform,r.worker&&o.WORKERS_SUPPORTED){var l=function(){if(!o.WORKERS_SUPPORTED)return!1;var n,r,s=(n=t.URL||t.webkitURL||null,r=e.toString(),o.BLOB_URL||(o.BLOB_URL=n.createObjectURL(new Blob(["(",r,")();"],{type:"text/javascript"})))),l=new t.Worker(s);return l.onmessage=v,l.id=a++,i[l.id]=l}();return l.userStep=r.step,l.userChunk=r.chunk,l.userComplete=r.complete,l.userError=r.error,r.step=w(r.step),r.chunk=w(r.chunk),r.complete=w(r.complete),r.error=w(r.error),delete r.worker,void l.postMessage({input:n,config:r,workerId:l.id})}var h=null;return o.NODE_STREAM_INPUT,"string"==typeof n?h=r.download?new c(r):new d(r):!0===n.readable&&w(n.read)&&w(n.on)?h=new f(r):(t.File&&n instanceof File||n instanceof Object)&&(h=new u(r)),h.stream(n)},unparse:function(e,t){var n=!1,r=!0,i=",",a="\r\n",s='"',l=s+s,c=!1,u=null,d=!1;!function(){if("object"==typeof t){if("string"!=typeof t.delimiter||o.BAD_DELIMITERS.filter((function(e){return-1!==t.delimiter.indexOf(e)})).length||(i=t.delimiter),("boolean"==typeof t.quotes||"function"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes),"boolean"!=typeof t.skipEmptyLines&&"string"!=typeof t.skipEmptyLines||(c=t.skipEmptyLines),"string"==typeof t.newline&&(a=t.newline),"string"==typeof t.quoteChar&&(s=t.quoteChar),"boolean"==typeof t.header&&(r=t.header),Array.isArray(t.columns)){if(0===t.columns.length)throw new Error("Option columns is empty");u=t.columns}void 0!==t.escapeChar&&(l=t.escapeChar+s),"boolean"==typeof t.escapeFormulae&&(d=t.escapeFormulae)}}();var f=new RegExp(p(s),"g");if("string"==typeof e&&(e=JSON.parse(e)),Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return h(null,e,c);if("object"==typeof e[0])return h(u||Object.keys(e[0]),e,c)}else if("object"==typeof e)return"string"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:"object"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||"object"==typeof e.data[0]||(e.data=[e.data])),h(e.fields||[],e.data||[],c);throw new Error("Unable to serialize unrecognized input");function h(e,t,n){var o="";"string"==typeof e&&(e=JSON.parse(e)),"string"==typeof t&&(t=JSON.parse(t));var s=Array.isArray(e)&&0<e.length,l=!Array.isArray(t[0]);if(s&&r){for(var c=0;c<e.length;c++)0<c&&(o+=i),o+=m(e[c],c);0<t.length&&(o+=a)}for(var u=0;u<t.length;u++){var d=s?e.length:t[u].length,f=!1,h=s?0===Object.keys(t[u]).length:0===t[u].length;if(n&&!s&&(f="greedy"===n?""===t[u].join("").trim():1===t[u].length&&0===t[u][0].length),"greedy"===n&&s){for(var p=[],v=0;v<d;v++){var g=l?e[v]:v;p.push(t[u][g])}f=""===p.join("").trim()}if(!f){for(var y=0;y<d;y++){0<y&&!h&&(o+=i);var E=s&&l?e[y]:y;o+=m(t[u][E],y)}u<t.length-1&&(!n||0<d&&!h)&&(o+=a)}}return o}function m(e,t){if(null==e)return"";if(e.constructor===Date)return JSON.stringify(e).slice(1,25);!0===d&&"string"==typeof e&&null!==e.match(/^[=+\-@].*$/)&&(e="'"+e);var r=e.toString().replace(f,l);return"boolean"==typeof n&&n||"function"==typeof n&&n(e,t)||Array.isArray(n)&&n[t]||function(e,t){for(var n=0;n<t.length;n++)if(-1<e.indexOf(t[n]))return!0;return!1}(r,o.BAD_DELIMITERS)||-1<r.indexOf(i)||" "===r.charAt(0)||" "===r.charAt(r.length-1)?s+r+s:r}}};if(o.RECORD_SEP=String.fromCharCode(30),o.UNIT_SEP=String.fromCharCode(31),o.BYTE_ORDER_MARK="\ufeff",o.BAD_DELIMITERS=["\r","\n",'"',o.BYTE_ORDER_MARK],o.WORKERS_SUPPORTED=!n&&!!t.Worker,o.NODE_STREAM_INPUT=1,o.LocalChunkSize=10485760,o.RemoteChunkSize=5242880,o.DefaultDelimiter=",",o.Parser=m,o.ParserHandle=h,o.NetworkStreamer=c,o.FileStreamer=u,o.StringStreamer=d,o.ReadableStreamStreamer=f,t.jQuery){var s=t.jQuery;s.fn.parse=function(e){var n=e.config||{},r=[];return this.each((function(e){if("INPUT"!==s(this).prop("tagName").toUpperCase()||"file"!==s(this).attr("type").toLowerCase()||!t.FileReader||!this.files||0===this.files.length)return!0;for(var i=0;i<this.files.length;i++)r.push({file:this.files[i],inputElem:this,instanceConfig:s.extend({},n)})})),i(),this;function i(){if(0!==r.length){var t,n,i,l=r[0];if(w(e.before)){var c=e.before(l.file,l.inputElem);if("object"==typeof c){if("abort"===c.action)return t=l.file,n=l.inputElem,i=c.reason,void(w(e.error)&&e.error({name:"AbortError"},t,n,i));if("skip"===c.action)return void a();"object"==typeof c.config&&(l.instanceConfig=s.extend(l.instanceConfig,c.config))}else if("skip"===c)return void a()}var u=l.instanceConfig.complete;l.instanceConfig.complete=function(e){w(u)&&u(e,l.file,l.inputElem),a()},o.parse(l.file,l.instanceConfig)}else w(e.complete)&&e.complete()}function a(){r.splice(0,1),i()}}}function l(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=E(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null),this._handle=new h(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,n){if(this.isFirstChunk&&w(this._config.beforeFirstChunk)){var i=this._config.beforeFirstChunk(e);void 0!==i&&(e=i)}this.isFirstChunk=!1,this._halted=!1;var a=this._partialLine+e;this._partialLine="";var s=this._handle.parse(a,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var l=s.meta.cursor;this._finished||(this._partialLine=a.substring(l-this._baseIndex),this._baseIndex=l),s&&s.data&&(this._rowCount+=s.data.length);var c=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(r)t.postMessage({results:s,workerId:o.WORKER_ID,finished:c});else if(w(this._config.chunk)&&!n){if(this._config.chunk(s,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);s=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(s.data),this._completeResults.errors=this._completeResults.errors.concat(s.errors),this._completeResults.meta=s.meta),this._completed||!c||!w(this._config.complete)||s&&s.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),c||s&&s.meta.paused||this._nextChunk(),s}this._halted=!0},this._sendError=function(e){w(this._config.error)?this._config.error(e):r&&this._config.error&&t.postMessage({workerId:o.WORKER_ID,error:e,finished:!1})}}function c(e){var t;(e=e||{}).chunkSize||(e.chunkSize=o.RemoteChunkSize),l.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(t=new XMLHttpRequest,this._config.withCredentials&&(t.withCredentials=this._config.withCredentials),n||(t.onload=b(this._chunkLoaded,this),t.onerror=b(this._chunkError,this)),t.open(this._config.downloadRequestBody?"POST":"GET",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var r in e)t.setRequestHeader(r,e[r])}if(this._config.chunkSize){var i=this._start+this._config.chunkSize-1;t.setRequestHeader("Range","bytes="+this._start+"-"+i)}try{t.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===t.status&&this._chunkError()}},this._chunkLoaded=function(){4===t.readyState&&(t.status<200||400<=t.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:t.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader("Content-Range");return null===t?-1:parseInt(t.substring(t.lastIndexOf("/")+1))}(t),this.parseChunk(t.responseText)))},this._chunkError=function(e){var n=t.statusText||e;this._sendError(new Error(n))}}function u(e){var t,n;(e=e||{}).chunkSize||(e.chunkSize=o.LocalChunkSize),l.call(this,e);var r="undefined"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,r?((t=new FileReader).onload=b(this._chunkLoaded,this),t.onerror=b(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var i=Math.min(this._start+this._config.chunkSize,this._input.size);e=n.call(e,this._start,i)}var a=t.readAsText(e,this._config.encoding);r||this._chunkLoaded({target:{result:a}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function d(e){var t;l.call(this,e=e||{}),this.stream=function(e){return t=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,n=this._config.chunkSize;return n?(e=t.substring(0,n),t=t.substring(n)):(e=t,t=""),this._finished=!t,this.parseChunk(e)}}}function f(e){l.call(this,e=e||{});var t=[],n=!0,r=!1;this.pause=function(){l.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){l.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError)},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):n=!0},this._streamData=b((function(e){try{t.push("string"==typeof e?e:e.toString(this._config.encoding)),n&&(n=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}}),this),this._streamError=b((function(e){this._streamCleanUp(),this._sendError(e)}),this),this._streamEnd=b((function(){this._streamCleanUp(),r=!0,this._streamData("")}),this),this._streamCleanUp=b((function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError)}),this)}function h(e){var t,n,r,i=Math.pow(2,53),a=-i,s=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,l=/^(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))$/,c=this,u=0,d=0,f=!1,h=!1,v=[],g={data:[],errors:[],meta:{}};if(w(e.step)){var y=e.step;e.step=function(t){if(g=t,_())A();else{if(A(),0===g.data.length)return;u+=t.data.length,e.preview&&u>e.preview?n.abort():(g.data=g.data[0],y(g,c))}}}function b(t){return"greedy"===e.skipEmptyLines?""===t.join("").trim():1===t.length&&0===t[0].length}function A(){if(g&&r&&(T("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+o.DefaultDelimiter+"'"),r=!1),e.skipEmptyLines)for(var t=0;t<g.data.length;t++)b(g.data[t])&&g.data.splice(t--,1);return _()&&function(){if(g)if(Array.isArray(g.data[0])){for(var t=0;_()&&t<g.data.length;t++)g.data[t].forEach(n);g.data.splice(0,1)}else g.data.forEach(n);function n(t,n){w(e.transformHeader)&&(t=e.transformHeader(t,n)),v.push(t)}}(),function(){if(!g||!e.header&&!e.dynamicTyping&&!e.transform)return g;function t(t,n){var r,i=e.header?{}:[];for(r=0;r<t.length;r++){var a=r,o=t[r];e.header&&(a=r>=v.length?"__parsed_extra":v[r]),e.transform&&(o=e.transform(o,a)),o=C(a,o),"__parsed_extra"===a?(i[a]=i[a]||[],i[a].push(o)):i[a]=o}return e.header&&(r>v.length?T("FieldMismatch","TooManyFields","Too many fields: expected "+v.length+" fields but parsed "+r,d+n):r<v.length&&T("FieldMismatch","TooFewFields","Too few fields: expected "+v.length+" fields but parsed "+r,d+n)),i}var n=1;return!g.data.length||Array.isArray(g.data[0])?(g.data=g.data.map(t),n=g.data.length):g.data=t(g.data,0),e.header&&g.meta&&(g.meta.fields=v),d+=n,g}()}function _(){return e.header&&0===v.length}function C(t,n){return r=t,e.dynamicTypingFunction&&void 0===e.dynamicTyping[r]&&(e.dynamicTyping[r]=e.dynamicTypingFunction(r)),!0===(e.dynamicTyping[r]||e.dynamicTyping)?"true"===n||"TRUE"===n||"false"!==n&&"FALSE"!==n&&(function(e){if(s.test(e)){var t=parseFloat(e);if(a<t&&t<i)return!0}return!1}(n)?parseFloat(n):l.test(n)?new Date(n):""===n?null:n):n;var r}function T(e,t,n,r){var i={type:e,code:t,message:n};void 0!==r&&(i.row=r),g.errors.push(i)}this.parse=function(i,a,s){var l=e.quoteChar||'"';if(e.newline||(e.newline=function(e,t){e=e.substring(0,1048576);var n=new RegExp(p(t)+"([^]*?)"+p(t),"gm"),r=(e=e.replace(n,"")).split("\r"),i=e.split("\n"),a=1<i.length&&i[0].length<r[0].length;if(1===r.length||a)return"\n";for(var o=0,s=0;s<r.length;s++)"\n"===r[s][0]&&o++;return o>=r.length/2?"\r\n":"\r"}(i,l)),r=!1,e.delimiter)w(e.delimiter)&&(e.delimiter=e.delimiter(i),g.meta.delimiter=e.delimiter);else{var c=function(t,n,r,i,a){var s,l,c,u;a=a||[",","\t","|",";",o.RECORD_SEP,o.UNIT_SEP];for(var d=0;d<a.length;d++){var f=a[d],h=0,p=0,v=0;c=void 0;for(var g=new m({comments:i,delimiter:f,newline:n,preview:10}).parse(t),y=0;y<g.data.length;y++)if(r&&b(g.data[y]))v++;else{var E=g.data[y].length;p+=E,void 0!==c?0<E&&(h+=Math.abs(E-c),c=E):c=E}0<g.data.length&&(p/=g.data.length-v),(void 0===l||h<=l)&&(void 0===u||u<p)&&1.99<p&&(l=h,s=f,u=p)}return{successful:!!(e.delimiter=s),bestDelimiter:s}}(i,e.newline,e.skipEmptyLines,e.comments,e.delimitersToGuess);c.successful?e.delimiter=c.bestDelimiter:(r=!0,e.delimiter=o.DefaultDelimiter),g.meta.delimiter=e.delimiter}var u=E(e);return e.preview&&e.header&&u.preview++,t=i,n=new m(u),g=n.parse(t,a,s),A(),f?{meta:{paused:!0}}:g||{meta:{paused:!1}}},this.paused=function(){return f},this.pause=function(){f=!0,n.abort(),t=w(e.chunk)?"":t.substring(n.getCharIndex())},this.resume=function(){c.streamer._halted?(f=!1,c.streamer.parseChunk(t,!0)):setTimeout(c.resume,3)},this.aborted=function(){return h},this.abort=function(){h=!0,n.abort(),g.meta.aborted=!0,w(e.complete)&&e.complete(g),t=""}}function p(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function m(e){var t,n=(e=e||{}).delimiter,r=e.newline,i=e.comments,a=e.step,s=e.preview,l=e.fastMode,c=t=void 0===e.quoteChar?'"':e.quoteChar;if(void 0!==e.escapeChar&&(c=e.escapeChar),("string"!=typeof n||-1<o.BAD_DELIMITERS.indexOf(n))&&(n=","),i===n)throw new Error("Comment character same as delimiter");!0===i?i="#":("string"!=typeof i||-1<o.BAD_DELIMITERS.indexOf(i))&&(i=!1),"\n"!==r&&"\r"!==r&&"\r\n"!==r&&(r="\n");var u=0,d=!1;this.parse=function(e,o,f){if("string"!=typeof e)throw new Error("Input must be a string");var h=e.length,m=n.length,v=r.length,g=i.length,y=w(a),E=[],b=[],A=[],_=u=0;if(!e)return j();if(l||!1!==l&&-1===e.indexOf(t)){for(var C=e.split(r),T=0;T<C.length;T++){if(A=C[T],u+=A.length,T!==C.length-1)u+=r.length;else if(f)return j();if(!i||A.substring(0,g)!==i){if(y){if(E=[],L(A.split(n)),P(),d)return j()}else L(A.split(n));if(s&&s<=T)return E=E.slice(0,s),j(!0)}}return j()}for(var x=e.indexOf(n,u),k=e.indexOf(r,u),G=new RegExp(p(c)+p(t),"g"),R=e.indexOf(t,u);;)if(e[u]!==t)if(i&&0===A.length&&e.substring(u,u+g)===i){if(-1===k)return j();u=k+v,k=e.indexOf(r,u),x=e.indexOf(n,u)}else if(-1!==x&&(x<k||-1===k))A.push(e.substring(u,x)),u=x+m,x=e.indexOf(n,u);else{if(-1===k)break;if(A.push(e.substring(u,k)),I(k+v),y&&(P(),d))return j();if(s&&E.length>=s)return j(!0)}else for(R=u,u++;;){if(-1===(R=e.indexOf(t,R+1)))return f||b.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:E.length,index:u}),F();if(R===h-1)return F(e.substring(u,R).replace(G,t));if(t!==c||e[R+1]!==c){if(t===c||0===R||e[R-1]!==c){-1!==x&&x<R+1&&(x=e.indexOf(n,R+1)),-1!==k&&k<R+1&&(k=e.indexOf(r,R+1));var S=D(-1===k?x:Math.min(x,k));if(e[R+1+S]===n){A.push(e.substring(u,R).replace(G,t)),e[u=R+1+S+m]!==t&&(R=e.indexOf(t,u)),x=e.indexOf(n,u),k=e.indexOf(r,u);break}var O=D(k);if(e.substring(R+1+O,R+1+O+v)===r){if(A.push(e.substring(u,R).replace(G,t)),I(R+1+O+v),x=e.indexOf(n,u),R=e.indexOf(t,u),y&&(P(),d))return j();if(s&&E.length>=s)return j(!0);break}b.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:E.length,index:u}),R++}}else R++}return F();function L(e){E.push(e),_=u}function D(t){var n=0;if(-1!==t){var r=e.substring(R+1,t);r&&""===r.trim()&&(n=r.length)}return n}function F(t){return f||(void 0===t&&(t=e.substring(u)),A.push(t),u=h,L(A),y&&P()),j()}function I(t){u=t,L(A),A=[],k=e.indexOf(r,u)}function j(e){return{data:E,errors:b,meta:{delimiter:n,linebreak:r,aborted:d,truncated:!!e,cursor:_+(o||0)}}}function P(){a(j()),E=[],b=[]}},this.abort=function(){d=!0},this.getCharIndex=function(){return u}}function v(e){var t=e.data,n=i[t.workerId],r=!1;if(t.error)n.userError(t.error,t.file);else if(t.results&&t.results.data){var a={abort:function(){r=!0,g(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:y,resume:y};if(w(n.userStep)){for(var o=0;o<t.results.data.length&&(n.userStep({data:t.results.data[o],errors:t.results.errors,meta:t.results.meta},a),!r);o++);delete t.results}else w(n.userChunk)&&(n.userChunk(t.results,a,t.file),delete t.results)}t.finished&&!r&&g(t.workerId,t.results)}function g(e,t){var n=i[e];w(n.userComplete)&&n.userComplete(t),n.terminate(),delete i[e]}function y(){throw new Error("Not implemented.")}function E(e){if("object"!=typeof e||null===e)return e;var t=Array.isArray(e)?[]:{};for(var n in e)t[n]=E(e[n]);return t}function b(e,t){return function(){e.apply(t,arguments)}}function w(e){return"function"==typeof e}return r&&(t.onmessage=function(e){var n=e.data;if(void 0===o.WORKER_ID&&n&&(o.WORKER_ID=n.workerId),"string"==typeof n.input)t.postMessage({workerId:o.WORKER_ID,results:o.parse(n.input,n.config),finished:!0});else if(t.File&&n.input instanceof File||n.input instanceof Object){var r=o.parse(n.input,n.config);r&&t.postMessage({workerId:o.WORKER_ID,results:r,finished:!0})}}),(c.prototype=Object.create(l.prototype)).constructor=c,(u.prototype=Object.create(l.prototype)).constructor=u,(d.prototype=Object.create(d.prototype)).constructor=d,(f.prototype=Object.create(l.prototype)).constructor=f,o})?r.apply(t,i):r)||(e.exports=a)},function(e,t,n){var r,i,a;i=[],void 0===(a="function"==typeof(r=function(){return function e(t,n,r){var i,a,o=window,s="application/octet-stream",l=r||s,c=t,u=!n&&!r&&c,d=document.createElement("a"),f=function(e){return String(e)},h=o.Blob||o.MozBlob||o.WebKitBlob||f,p=n||"download";if(h=h.call?h.bind(o):Blob,"true"===String(this)&&(l=(c=[c,l])[0],c=c[1]),u&&u.length<2048&&(p=u.split("/").pop().split("?")[0],d.href=u,-1!==d.href.indexOf(u))){var m=new XMLHttpRequest;return m.open("GET",u,!0),m.responseType="blob",m.onload=function(t){e(t.target.response,p,s)},setTimeout((function(){m.send()}),0),m}if(/^data:([\w+-]+\/[\w+.-]+)?[,;]/.test(c)){if(!(c.length>2096103.424&&h!==f))return navigator.msSaveBlob?navigator.msSaveBlob(E(c),p):b(c);l=(c=E(c)).type||s}else if(/([\x80-\xff])/.test(c)){for(var v=0,g=new Uint8Array(c.length),y=g.length;v<y;++v)g[v]=c.charCodeAt(v);c=new h([g],{type:l})}function E(e){for(var t=e.split(/[:;,]/),n=t[1],r=("base64"==t[2]?atob:decodeURIComponent)(t.pop()),i=r.length,a=0,o=new Uint8Array(i);a<i;++a)o[a]=r.charCodeAt(a);return new h([o],{type:n})}function b(e,t){if("download"in d)return d.href=e,d.setAttribute("download",p),d.className="download-js-link",d.innerHTML="downloading...",d.style.display="none",document.body.appendChild(d),setTimeout((function(){d.click(),document.body.removeChild(d),!0===t&&setTimeout((function(){o.URL.revokeObjectURL(d.href)}),250)}),66),!0;if(/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(navigator.userAgent))return/^data:/.test(e)&&(e="data:"+e.replace(/^data:([\w\/\-\+]+)/,s)),window.open(e)||confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")&&(location.href=e),!0;var n=document.createElement("iframe");document.body.appendChild(n),!t&&/^data:/.test(e)&&(e="data:"+e.replace(/^data:([\w\/\-\+]+)/,s)),n.src=e,setTimeout((function(){document.body.removeChild(n)}),333)}if(i=c instanceof h?c:new h([c],{type:l}),navigator.msSaveBlob)return navigator.msSaveBlob(i,p);if(o.URL)b(o.URL.createObjectURL(i),!0);else{if("string"==typeof i||i.constructor===f)try{return b("data:"+l+";base64,"+o.btoa(i))}catch(e){return b("data:"+l+","+encodeURIComponent(i))}(a=new FileReader).onload=function(e){b(this.result)},a.readAsDataURL(i)}return!0}})?r.apply(t,i):r)||(e.exports=a)},function(e,t,n){e.exports=n(5)},function(e,t,n){var r=function(e){"use strict";var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=t&&t.prototype instanceof d?t:d,a=Object.create(i.prototype),o=new _(r||[]);return a._invoke=function(e,t,n){var r="suspendedStart";return function(i,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw a;return T()}for(n.method=i,n.arg=a;;){var o=n.delegate;if(o){var s=b(o,n);if(s){if(s===u)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=c(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===u)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}(e,n,o),a}function c(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var u={};function d(){}function f(){}function h(){}var p={};p[i]=function(){return this};var m=Object.getPrototypeOf,v=m&&m(m(C([])));v&&v!==t&&n.call(v,i)&&(p=v);var g=h.prototype=d.prototype=Object.create(p);function y(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function E(e,t){var r;this._invoke=function(i,a){function o(){return new t((function(r,o){!function r(i,a,o,s){var l=c(e[i],e,a);if("throw"!==l.type){var u=l.arg,d=u.value;return d&&"object"==typeof d&&n.call(d,"__await")?t.resolve(d.__await).then((function(e){r("next",e,o,s)}),(function(e){r("throw",e,o,s)})):t.resolve(d).then((function(e){u.value=e,o(u)}),(function(e){return r("throw",e,o,s)}))}s(l.arg)}(i,a,r,o)}))}return r=r?r.then(o,o):o()}}function b(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,b(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var r=c(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,u;var i=r.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function A(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(w,this),this.reset(!0)}function C(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:T}}function T(){return{value:void 0,done:!0}}return f.prototype=g.constructor=h,h.constructor=f,f.displayName=s(h,o,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,h):(e.__proto__=h,s(e,o,"GeneratorFunction")),e.prototype=Object.create(g),e},e.awrap=function(e){return{__await:e}},y(E.prototype),E.prototype[a]=function(){return this},e.AsyncIterator=E,e.async=function(t,n,r,i,a){void 0===a&&(a=Promise);var o=new E(l(t,n,r,i),a);return e.isGeneratorFunction(n)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},y(g),s(g,o,"Generator"),g[i]=function(){return this},g.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=C,_.prototype={constructor:_,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(A),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return o.type="throw",o.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(s&&l){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(s){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var o=a?a.completion:{};return o.type=e,o.arg=t,a?(this.method="next",this.next=a.finallyLoc,u):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),u},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),A(n),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;A(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:C(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),u}},e}(e.exports);try{regeneratorRuntime=r}catch(e){Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){"use strict";n.r(t),n.d(t,"autoAnnotateFeatures",(function(){return ye})),n.d(t,"autoAnnotateParts",(function(){return Ee})),n.d(t,"autoAnnotatePrimers",(function(){return be})),n.d(t,"AutoAnnotateModal",(function(){return we}));var r=n(0),i=n.n(r),a=n(1),o="autoAnnotate";function s(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function l(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){s(a,r,i,o,l,"next",e)}function l(e){s(a,r,i,o,l,"throw",e)}o(void 0)}))}}function c(){return(c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var u=window.addOnGlobals,d=u.startCase,f=u.compose,h=u.hideDialog,p=u.typeField,m=u.pluralize,v=u.React,g=u.useEffect,y=u.DataTable,E=u.DialogFooter,b=u.withSelectedEntities,w=u.withSelectTableRecords,A=u.tidyUpAnnotation,_=["name",p,"start","end","strand"],C=["name","start","end","strand"],T=f(b(o),w(o))((function(e){var t=e.newAnnotations,n=e.annotationType,r=e.annotationVisibilityShow,a=e.beforeAnnotationCreate,s=e.handleSubmit,u=e.selectTableRecords,f=e.sequenceData,p=e[o+"SelectedEntities"];return g((function(){u(t)}),[t,u]),v.createElement("div",{className:"bp3-dialog-body"},v.createElement("div",null,"The following ",n,t.length>1?"s":""," will be added:",v.createElement(y,{isInfinite:!0,formName:o,entities:t.map((function(e){return c({},e,{start:e.start+1,end:e.end+1})})),withCheckboxes:!0,schema:"feature"===n?_:C})),v.createElement(E,{hideModal:h,onClick:s(l(i.a.mark((function t(){var o;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:o=m(n),p.forEach((function(t,i){a&&a({annotationTypePlural:o,annotation:t,props:e});var s={};p.length>1&&(s=0===i?{batchUndoStart:!0}:i===p.length-1?{batchUndoEnd:!0}:{batchUndoMiddle:!0}),e["upsert"+d(n)](A(t,{sequenceData:f,annotationType:o}),s),r(o)})),h();case 3:case"end":return t.stop()}}),t)})))),text:"Add"}))})),x=window.addOnGlobals,k=x.Tab,G=x.Tabs,R=x.wrapDialog,S=x.React,O={background:"red",marginTop:2},L=R({title:"Annotation Matching"})((function(e){var t=e.isRegex;return S.createElement("div",{className:"bp3-dialog-body"},S.createElement(G,{defaultSelectedTabId:t?"regex":"iupac"},S.createElement(k,{id:"iupac",title:"IUPAC",panel:S.createElement("div",null,S.createElement("p",null,"When in standard (IUPAC) mode, annotations are matched case-insensitively. You can use any degenerate IUPAC base pair as well as a couple special characters."),S.createElement("h4",null,"Special Characters:"),S.createElement("div",{style:{display:"grid",columnGap:20,gridTemplateColumns:"1fr 5fr",maxHeight:200,overflow:"auto"}},S.createElement("div",null,"#"),S.createElement("div",null,"Any arbitrary string of zero or more bases can be matched here."),S.createElement("div",null,"<"),S.createElement("div",null,"Any bases before a ","<"," are considered optional"),S.createElement("div",null,">"),S.createElement("div",null,"Any bases after a ",">"," are considered optional"),S.createElement("div",null,"M")," ",S.createElement("div",null,"AC"),S.createElement("div",null,"R")," ",S.createElement("div",null,"AG"),S.createElement("div",null,"W")," ",S.createElement("div",null,"AT"),S.createElement("div",null,"S")," ",S.createElement("div",null,"CG"),S.createElement("div",null,"Y")," ",S.createElement("div",null,"CT"),S.createElement("div",null,"K")," ",S.createElement("div",null,"GT"),S.createElement("div",null,"V")," ",S.createElement("div",null,"ACG"),S.createElement("div",null,"H")," ",S.createElement("div",null,"ACT"),S.createElement("div",null,"D")," ",S.createElement("div",null,"AGT"),S.createElement("div",null,"B")," ",S.createElement("div",null,"CGT"),S.createElement("div",null,"X")," ",S.createElement("div",null,"GATC"),S.createElement("div",null,"N")," ",S.createElement("div",null,"GATC"),S.createElement("div",null,".")," ",S.createElement("div",null,"GATC")),S.createElement("br",null),S.createElement("h4",null,"Examples:"),S.createElement("div",{style:{display:"grid",columnGap:20,gridTemplateColumns:"2fr 5fr"}},S.createElement("h6",null,"Annotation"),S.createElement("h6",null,"Sequence (matches in ",S.createElement("span",{style:O},"red"),")"),S.createElement("div",null,"AATT"),S.createElement("div",null,"AA",S.createElement("span",{style:O},"AATT"),"TTGGGGGCCCCCAAGT"),S.createElement("div",null,"aAkT"),S.createElement("div",null,"AA",S.createElement("span",{style:O},"AATT"),"TTGGGGGCCCCC",S.createElement("span",{style:O},"AAGT")),S.createElement("div",null,"ANT"),S.createElement("div",null,"AA",S.createElement("span",{style:O},"AAT"),"TTTGGGGGCCCCCA",S.createElement("span",{style:O},"AGT")),S.createElement("div",null,"T#C"),S.createElement("div",null,"AAAATTT",S.createElement("span",{style:O},"TGGGGGC"),"CCCCAAGT"),S.createElement("div",null,"CA","<","ATTT"),S.createElement("div",null,"AA",S.createElement("span",{style:O},"AATTT"),"TGGGGGCCCCCAAGT"),S.createElement("div",null,"CA","<","ATT",">","TTGAG"),S.createElement("div",null,"AA",S.createElement("span",{style:O},"AATTTTG"),"GGGGCCCCCAAGT")),S.createElement("br",null))}),S.createElement(k,{id:"regex",title:"Regex",panel:S.createElement("div",null,S.createElement("p",null,"When in regex mode, you can use any custom regex to match base pairs"),S.createElement("p",null,"You can learn more and try out your custom regexes at"," ",S.createElement("a",{href:"https://regex101.com/"},"https://regex101.com/")),S.createElement("br",null),S.createElement("h4",null,"Examples:"),S.createElement("div",{style:{display:"grid",columnGap:20,gridTemplateColumns:"2fr 5fr"}},S.createElement("h6",null,"Annotation"),S.createElement("h6",null,"Sequence (matches in ",S.createElement("span",{style:O},"red"),")"),S.createElement("div",null,"AATT"),S.createElement("div",null,"AA",S.createElement("span",{style:O},"AATT"),"TTGGGGGCCCCCAAGT"),S.createElement("div",null,"aAtT"),S.createElement("div",null,"AA",S.createElement("span",{style:O},"AATT"),"TTGGGGGCCCCCAAGT"),S.createElement("div",null,"A.T"),S.createElement("div",null,"AA",S.createElement("span",{style:O},"AAT"),"TTTGGGGGCCCCCA",S.createElement("span",{style:O},"AGT")),S.createElement("div",null,"T.*C"),S.createElement("div",null,"AAAA",S.createElement("span",{style:O},"TTTTGGGGGCCCCC"),"AAGT"),S.createElement("div",null,"T[^T]*?C"),S.createElement("div",null,"AAAATTT",S.createElement("span",{style:O},"TGGGGGC"),"CCCCAAGT"),S.createElement("div",null,"C?A?ATT"),S.createElement("div",null,"AA",S.createElement("span",{style:O},"AATTT"),"TGGGGGCCCCCAAGT"),S.createElement("div",null,"C?A?ATTT?T?C?"),S.createElement("div",null,"AA",S.createElement("span",{style:O},"AATTTT"),"GGGGGCCCCCAAGT")),S.createElement("br",null))})))}));function D(){return(D=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var F={header:!0,skipEmptyLines:"greedy",trimHeaders:!0},I=function(e,t){return void 0===t&&(t={}),new Promise((function(n,r){Object(a.parse)(e.originFileObj,D({},F,{complete:function(e){if(e&&e.errors&&e.errors.length)return r("Error in csv: "+JSON.stringify(e.errors));n(e)},error:function(e){r(e)}},t))}))},j=function(e,t,n){var r=t.filter((function(t){return!e.includes(t)}));if(r.length)return(n?"The file "+n:"CSV file")+" is missing required headers. ("+r.join(", ")+")"},P=function(e,t,n){var r=t.filter((function(t){return!e[t]}));if(r.length)return 1===r.length?"Row "+(n+1)+' is missing the required field "'+r[0]+'"':"Row "+(n+1)+" is missing these required fields: "+r.join(", ")},q=n(2),U=n.n(q);function M(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return N(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return N(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function z(){return(z=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function B(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function W(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){B(a,r,i,o,s,"next",e)}function s(e){B(a,r,i,o,s,"throw",e)}o(void 0)}))}}var H=window.addOnGlobals,K=H.shortid,Q=H.FileUploadField,V=H.Colors,Y=H.Tab,J=H.Tabs,$=H.pluralize,X=H.reduxForm,Z=H.SubmissionError,ee=H.featureColors,te=H.FeatureTypes,ne=H.InfoHelper,re=H.showConfirmationDialog,ie=H.wrapDialog,ae=H.showDialog,oe=H.withEditorProps,se=H.DialogFooter,le=H.useState,ce=H.hideDialog,ue=H.startCase,de=H.compose,fe=H.React,he=H.convertApELikeRegexToRegex,pe=H.autoAnnotate,me=H.useEffect,ve=H.DataTable,ge=H.typeField;function ye(){ae({ModalComponent:we,props:{annotationType:"feature"}})}function Ee(){ae({ModalComponent:we,props:{annotationType:"part"}})}function be(){ae({ModalComponent:we,props:{annotationType:"primer"}})}var we=de(ie((function(e){return{title:"Auto Annotate "+ue($(e.annotationType))}})),oe,X({form:o}))((function(e){var t=e.sequenceData,n=e.handleSubmit,r=e.annotationType,o=void 0===r?"feature":r,s=e.error,l=e.getCustomAutoAnnotateList,c=le("csvFile"),u=c[0],d=c[1],f=le(!1),h=f[0],p=f[1],m=le(),v=m[0],g=m[1],y=le(),E=y[0],b=y[1];return me((function(){W(i.a.mark((function t(){var n;return i.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!l){t.next=16;break}return b(!0),t.prev=2,t.next=5,l(e);case 5:n=t.sent,g(n),t.next=13;break;case 9:t.prev=9,t.t0=t.catch(2),window.toastr.warning("Error loading custom annotation list"),console.error("e:",t.t0);case 13:return t.prev=13,b(!1),t.finish(13);case 16:case"end":return t.stop()}}),t,null,[[2,9,13,16]])})))()}),[l,e]),h?fe.createElement(T,z({},e,{newAnnotations:h})):fe.createElement("div",{className:"bp3-dialog-body"},fe.createElement(J,{renderActiveTabPanelOnly:!0,onChange:d,selectedTabId:u},fe.createElement(Y,{panel:fe.createElement("div",null,fe.createElement("div",null,"Select a CSV file with the following columns -",fe.createElement("br",null),fe.createElement("br",null),fe.createElement("div",{style:{display:"flex"}},"name,description,sequence,type,",fe.createElement("span",{style:{display:"flex"}},"isRegex ",fe.createElement(ne,{onClick:function(e){e.stopPropagation(),e.preventDefault(),ae({ModalComponent:L})},content:fe.createElement("span",null,"Any valid regexes allowed. Click for more info about regex matching")}))),fe.createElement("br",null),"feature"!==o&&fe.createElement(fe.Fragment,null,fe.createElement("i",null,'Note: the "type" column is optional'),fe.createElement("br",null)),fe.createElement("br",null),fe.createElement("a",{onClick:function(){var e=[z({name:"Example "+ue(o)+" 1",description:"I'm a description",sequence:"gatNNtacaggttt"},"feature"===o&&{type:"cds"},{isRegex:!1}),z({name:"Example "+ue(o)+" 2",description:"I'm another description",sequence:"gat.*tacccc.*aggttt"},"feature"===o&&{type:"cds"},{isRegex:!0})],t=Object(a.unparse)(e);U()(t,"Example CSV Annotation Upload File.csv","text/plain")}},"download example")),fe.createElement(Q,{name:"csvFile",fileLimit:1,isRequired:!0,accept:".csv"})),id:"csvFile",title:"CSV"}),fe.createElement(Y,{panel:fe.createElement("div",null,fe.createElement("div",null,"Select an ApE style features .txt file (",fe.createElement("a",{onClick:function(){U()("T3\tATTAACCCTCACTAAAGGGA\tprimer_bind\tcyan\tgreen\t0\t0\nM13-fwd\tTGTAAAACGACGGCCAGT\tprimer_bind\tcyan\tgreen\t0\t0\nFRT\tGAAGTTCCTATTCTCTAGAAAGTATAGGAACTTC\tmisc_recomb\torchid\tpink\t0\t0","Example APE Feature List Upload File.txt","text/plain")}},"download example"),"):"),fe.createElement(Q,{fileLimit:1,name:"apeFile",isRequired:!0,accept:".txt"}),s&&fe.createElement("div",{style:{padding:5,color:V.RED1}},s)),id:"apeFile",title:"ApE File"}),l&&(E?fe.createElement(Y,{disabled:!0,title:"Loading..."}):v&&fe.createElement(Y,{id:"implementerDefined",title:v&&v.title||"Custom List",panel:v&&v.list&&v.list.length?fe.createElement("div",null,fe.createElement(ve,{isInfinite:!0,schema:"feature"===o?Ae:_e,entities:v.list})):fe.createElement("div",null,"No Annotations Found")}))),fe.createElement(se,{hideModal:ce,disabled:"implementerDefined"===u&&!(v&&v.list&&v.list.length),onClick:n(function(){var e=W(i.a.mark((function e(n){var r,a,s,l,c,d,f,h,m,g,y,E,b,w,A,_,C,T,x,k,G,R,S,O,L,D,F,q,U,N,B,H,Q,V,Y,J,$,X,ne,ie,ae;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.apeFile,a=n.csvFile,s=!1,l=[],e.prev=3,d=function(){var e=W(i.a.mark((function e(t,n){var r,a,c,u;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.type,a=void 0===r?"":r,c=t.sequence,"feature"!==o){e.next=14;break}if(u=te.find((function(e){return e.toLowerCase()===a.toLowerCase()}))){e.next=13;break}if(s){e.next=10;break}return e.next=7,re({cancelButtonText:"Stop Auto-Annotate",text:"Detected that "+n+" has a non-standard type of "+a+". We will assign it and all subsequent non-standard types to use the misc_feature type instead"});case 7:if(s=e.sent){e.next=10;break}throw{validationError:n+" specifies the feature type "+a+" which is not valid"};case 10:t.type="misc_feature",e.next=14;break;case 13:t.type=u;case 14:if(c){e.next=16;break}throw{validationError:n+" did not have a sequence"};case 16:if(!t.isRegex||"TRUE"!==t.isRegex.toUpperCase()){e.next=27;break}e.prev=17,new RegExp(void 0),e.next=24;break;case 21:throw e.prev=21,e.t0=e.catch(17),{validationError:n+" has an invalid sequence/regex. Please fix it manually."};case 24:t.isRegex=!0,e.next=28;break;case 27:t.isRegex=void 0;case 28:l.push(t);case 29:case"end":return e.stop()}}),e,null,[[17,21]])})));return function(t,n){return e.apply(this,arguments)}}(),"implementerDefined"!==u){e.next=15;break}f=M(v.list.entries());case 7:if((h=f()).done){e.next=13;break}return m=h.value,g=m[0],y=m[1],E=y.name,b=y.sequence,w=y.type,A=y.isRegex,e.next=11,d({name:E,sequence:b,type:w,isRegex:A?"TRUE":"FALSE"},"Row "+(g+1)+" ("+E+")");case 11:e.next=7;break;case 13:e.next=55;break;case 15:if("csvFile"!==u){e.next=39;break}return _=["name","description","sequence"],"feature"===o&&_.push("type"),_.push("isRegex"),e.next=21,I(a[0]);case 21:if(C=e.sent,T=C.data,x=C.meta.fields,!(k=j(x,_))){e.next=27;break}throw{validationError:k};case 27:G=M(T.entries());case 28:if((R=G()).done){e.next=37;break}if(S=R.value,O=S[0],L=S[1],!(D=P(L,_,O))){e.next=33;break}throw{validationError:D};case 33:return e.next=35,d(L,"Row "+(O+1)+" ("+L.name+")");case 35:e.next=28;break;case 37:e.next=55;break;case 39:if("apeFile"!==u){e.next=53;break}return e.next=42,I(r[0],{header:!1});case 42:F=e.sent,q=F.data,U=M(q.entries());case 45:if((N=U()).done){e.next=51;break}return B=N.value,H=B[0],Q=B[1],V=Q[0],Y=Q[1],J=Q[2],e.next=49,d({name:V,sequence:Y,type:J},"Row "+(H+1)+" ("+V+")");case 49:e.next=45;break;case 51:e.next=55;break;case 53:console.info("we shouldn't be here!"),console.info("fileType:",u);case 55:if(l.length){e.next=57;break}return e.abrupt("return",window.toastr.warning("No Annotations Detected on File. Please check that your file is in the correct format."));case 57:$={},l.forEach((function(e){var t=K();$[t]=z({},e,{sequence:e.isRegex?e.sequence:he(e.sequence),id:t})})),ne=pe({seqsToAnnotateById:(c={},c[X="placeholderId"]=z({},t,{id:X}),c),annotationsToCheckById:$}),(ie=ne[X])&&ie.length?p(ie.map((function(e){var t=z({},$[e.id],e,{forward:-1!==e.strand,id:K()});return t.color=t.color||ee[t.type],t}))):window.toastr.warning("No "+o+"s detected on sequence."),e.next=72;break;case 64:if(e.prev=64,e.t0=e.catch(3),console.error("error:",e.t0),!e.t0.validationError){e.next=71;break}throw new Z(((ae={})[u]=e.t0.validationError,ae));case 71:window.toastr.error("Error annotating "+o+"(s). Double check your file to make sure it is valid!");case 72:case"end":return e.stop()}}),e,null,[[3,64]])})));return function(t){return e.apply(this,arguments)}}()),text:"Annotate"}))}));window._ove_addons||(window._ove_addons={}),window._ove_addons.autoAnnotateFeatures=ye,window._ove_addons.autoAnnotateParts=Ee,window._ove_addons.autoAnnotatePrimers=be;var Ae=["name","sequence",ge,"isRegex"],_e=["name","sequence",ge,"isRegex"]}]).default})); | ||
//# sourceMappingURL=ove-auto-annotate.min.js.map |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
513003
22
4549
1
78