@orfeas126/box-ui-elements
Version:
Box UI Elements
654 lines (590 loc) • 33.1 kB
JavaScript
/*!
* Box UI Element
*
* Copyright 2019 Box, Inc. All rights reserved.
*
* This product includes software developed by Box, Inc. ("Box")
* (http://www.box.com)
*
* ALL BOX SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL BOX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* See the Box license for the specific language governing permissions
* and limitations under the license.
*/
;
(globalThis["webpackChunk_orfeas126_box_ui_elements"] = globalThis["webpackChunk_orfeas126_box_ui_elements"] || []).push([["content-answers"],{
/***/ "./src/elements/common/content-answers/ContentAnswers.tsx":
/*!****************************************************************!*\
!*** ./src/elements/common/content-answers/ContentAnswers.tsx ***!
\****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/get */ "./node_modules/lodash/get.js");
/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _ContentAnswersModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ContentAnswersModal */ "./src/elements/common/content-answers/ContentAnswersModal.tsx");
/* harmony import */ var _ContentAnswersOpenButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ContentAnswersOpenButton */ "./src/elements/common/content-answers/ContentAnswersOpenButton.tsx");
const _excluded = ["className", "file", "onAsk", "onRequestClose"];
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
// @ts-ignore: no ts definition
const ContentAnswers = props => {
const {
className = '',
file,
onAsk,
onRequestClose
} = props,
rest = _objectWithoutProperties(props, _excluded);
const [isModalOpen, setIsModalOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
const [hasQuestions, setHasQuestions] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
const [isHighlighted, setIsHighlighted] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
const handleClick = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
setIsModalOpen(true);
}, [setIsModalOpen]);
const handleClose = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
setIsModalOpen(false);
if (hasQuestions) {
setIsHighlighted(true);
}
if (onRequestClose) {
onRequestClose();
}
}, [hasQuestions, onRequestClose]);
const handleAsk = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
setHasQuestions(true);
if (onAsk) {
onAsk();
}
}, [onAsk]);
const currentExtension = lodash_get__WEBPACK_IMPORTED_MODULE_1___default()(file, 'extension');
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: `be-ContentAnswers ${className}`
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ContentAnswersOpenButton__WEBPACK_IMPORTED_MODULE_3__["default"], {
fileExtension: currentExtension,
isHighlighted: isHighlighted,
isModalOpen: isModalOpen,
onClick: handleClick
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ContentAnswersModal__WEBPACK_IMPORTED_MODULE_2__["default"], _extends({
file: file,
isOpen: isModalOpen,
onAsk: handleAsk,
onRequestClose: handleClose
}, rest)));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ContentAnswers);
/***/ }),
/***/ "./src/elements/common/content-answers/ContentAnswersModal.tsx":
/*!*********************************************************************!*\
!*** ./src/elements/common/content-answers/ContentAnswersModal.tsx ***!
\*********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-intl */ "./node_modules/react-intl/lib/src/components/useIntl.js");
/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/get */ "./node_modules/lodash/get.js");
/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _box_box_ai_content_answers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @box/box-ai-content-answers */ "./node_modules/@box/box-ai-content-answers/chunks/types.js");
/* harmony import */ var _box_box_ai_content_answers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @box/box-ai-content-answers */ "./node_modules/@box/box-ai-content-answers/esm/lib/components/modal/modal.js");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ "./src/elements/common/content-answers/constants.ts");
/* harmony import */ var _current_user__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../current-user */ "./src/elements/common/current-user/index.ts");
/* harmony import */ var _messages__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./messages */ "./src/elements/common/content-answers/messages.ts");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
// @ts-ignore: no ts definition
// @ts-ignore: no ts definition
// @ts-ignore: no ts definition
const ContentAnswersModal = ({
api,
currentUser,
file,
isOpen,
onAsk,
onClearConversation,
onRequestClose,
suggestedQuestions,
isCitationsEnabled = true,
isMarkdownEnabled = true,
isResetChatEnabled = true
}) => {
const {
formatMessage
} = (0,react_intl__WEBPACK_IMPORTED_MODULE_5__["default"])();
const [isLoading, setIsLoading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
const [questions, setQuestions] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);
let localizedQuestions = [];
if (!suggestedQuestions || suggestedQuestions.length === 0) {
localizedQuestions = _constants__WEBPACK_IMPORTED_MODULE_2__.DOCUMENT_SUGGESTED_QUESTIONS.map(question => ({
id: question.id,
label: formatMessage(_messages__WEBPACK_IMPORTED_MODULE_4__["default"][question.labelId]),
prompt: formatMessage(_messages__WEBPACK_IMPORTED_MODULE_4__["default"][question.promptId])
}));
}
const handleSuccessCallback = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(response => {
const question = {
answer: response.data.answer,
created_at: response.data.created_at,
citations: response.data.citations,
error: null,
isCompleted: true,
isLoading: false
};
setQuestions(prevState => {
const lastQuestion = prevState[prevState.length - 1];
const updatedLastQuestion = _objectSpread(_objectSpread({}, lastQuestion), question);
return [...prevState.slice(0, -1), updatedLastQuestion];
});
}, []);
const handleErrorCallback = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((error, question) => {
const rateLimitingRegex = /Too Many Requests/i;
const errorMessage = error?.message || '';
const isRateLimitingError = error?.response?.status === 429 || rateLimitingRegex.test(errorMessage);
const errorQuestion = _objectSpread(_objectSpread({}, question), {}, {
error: isRateLimitingError ? _box_box_ai_content_answers__WEBPACK_IMPORTED_MODULE_6__.A.RATE_LIMITING : _box_box_ai_content_answers__WEBPACK_IMPORTED_MODULE_6__.A.GENERAL,
isCompleted: true,
isLoading: false
});
setQuestions(prevState => {
return [...prevState.slice(0, -1), errorQuestion];
});
}, []);
const handleAsk = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (question, aiAgent, isRetry = false) => {
if (onAsk) {
onAsk();
}
const {
id
} = file;
const items = [{
id,
type: 'file'
}];
question.isCompleted = false;
question.isLoading = true;
const dialogueHistory = questions.map(q => ({
prompt: q.prompt,
answer: q.answer,
created_at: q.created_at
}));
setQuestions(prevQuestions => {
return [...(isRetry ? prevQuestions.slice(0, -1) : prevQuestions), question];
});
setIsLoading(true);
try {
const response = await api.getIntelligenceAPI(true).ask(question, items, dialogueHistory, {
include_citations: isCitationsEnabled
});
handleSuccessCallback(response);
} catch (e) {
handleErrorCallback(e, question);
}
setIsLoading(false);
}, [api, file, handleErrorCallback, handleSuccessCallback, isCitationsEnabled, onAsk, questions]);
const handleRetry = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(question => {
setQuestions(prevState => {
delete question.error;
return [...prevState.slice(0, -1), question];
});
handleAsk(question, null, true);
}, [handleAsk]);
const handleClearConversation = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
if (onClearConversation) {
onClearConversation();
}
setQuestions([]);
}, [onClearConversation]);
const handleOnRequestClose = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
if (onRequestClose) {
onRequestClose();
}
}, [onRequestClose]);
const fileName = lodash_get__WEBPACK_IMPORTED_MODULE_1___default()(file, 'name');
const fileExtension = lodash_get__WEBPACK_IMPORTED_MODULE_1___default()(file, 'extension');
const userInfo = {
name: lodash_get__WEBPACK_IMPORTED_MODULE_1___default()(currentUser, 'name', ''),
avatarURL: lodash_get__WEBPACK_IMPORTED_MODULE_1___default()(currentUser, 'avatarURL', '')
};
const isSpreadsheet = _constants__WEBPACK_IMPORTED_MODULE_2__.SPREADSHEET_FILE_EXTENSIONS.includes(fileExtension);
const spreadsheetNotice = isSpreadsheet ? formatMessage(_messages__WEBPACK_IMPORTED_MODULE_4__["default"].welcomeMessageSpreadsheetNotice) : '';
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_box_box_ai_content_answers__WEBPACK_IMPORTED_MODULE_7__.IntelligenceModal, {
contentName: fileName,
contentType: fileExtension,
hasRequestInProgress: isLoading,
isCitationsEnabled: isCitationsEnabled,
isMarkdownEnabled: isMarkdownEnabled,
isResetChatEnabled: isResetChatEnabled,
onClearAction: handleClearConversation,
onModalClose: handleOnRequestClose,
onOpenChange: handleOnRequestClose,
open: isOpen,
questions: questions,
retryQuestion: handleRetry,
submitQuestion: handleAsk,
suggestedQuestions: suggestedQuestions || localizedQuestions,
warningNotice: spreadsheetNotice,
warningNoticeAriaLabel: formatMessage(_messages__WEBPACK_IMPORTED_MODULE_4__["default"].welcomeMessageSpreadsheetNoticeAriaLabel),
userInfo: userInfo
});
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_current_user__WEBPACK_IMPORTED_MODULE_3__["default"])(ContentAnswersModal));
/***/ }),
/***/ "./src/elements/common/content-answers/ContentAnswersOpenButton.tsx":
/*!**************************************************************************!*\
!*** ./src/elements/common/content-answers/ContentAnswersOpenButton.tsx ***!
\**************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-intl */ "./node_modules/react-intl/lib/src/components/injectIntl.js");
/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _box_blueprint_web__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @box/blueprint-web */ "./node_modules/@box/blueprint-web/lib-esm/tooltip/tooltip.js");
/* harmony import */ var _box_blueprint_web__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @box/blueprint-web */ "./node_modules/@box/blueprint-web/lib-esm/primitives/icon-button/icon-button.js");
/* harmony import */ var _box_blueprint_web_assets_icons_Logo__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @box/blueprint-web-assets/icons/Logo */ "./node_modules/@box/blueprint-web-assets/icons/Logo/BoxAiLogo.js");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ "./src/elements/common/content-answers/constants.ts");
/* harmony import */ var _messages__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./messages */ "./src/elements/common/content-answers/messages.ts");
/* harmony import */ var _ContentAnswersOpenButton_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ContentAnswersOpenButton.scss */ "./src/elements/common/content-answers/ContentAnswersOpenButton.scss");
const ContentAnswersOpenButton = ({
fileExtension,
intl,
isHighlighted,
isModalOpen,
onClick
}) => {
const {
formatMessage
} = intl;
const buttonRef = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(null);
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
if (isHighlighted && !isModalOpen && buttonRef.current) {
buttonRef.current.focus();
}
}, [isHighlighted, isModalOpen]);
const isAllowedFileType = extension => {
const allowedTypes = [..._constants__WEBPACK_IMPORTED_MODULE_2__.CODE_FILE_EXTENSIONS, ..._constants__WEBPACK_IMPORTED_MODULE_2__.DOCUMENT_FILE_EXTENSIONS, ..._constants__WEBPACK_IMPORTED_MODULE_2__.TEXT_FILE_EXTENSIONS];
return allowedTypes.includes(extension);
};
const getTooltipText = () => {
if (isHighlighted) {
return formatMessage(_messages__WEBPACK_IMPORTED_MODULE_3__["default"].hasQuestionsTooltip);
}
if (!isAllowedFileType(fileExtension)) {
return formatMessage(_messages__WEBPACK_IMPORTED_MODULE_3__["default"].disabledTooltipFileNotCompatible);
}
return formatMessage(_messages__WEBPACK_IMPORTED_MODULE_3__["default"].defaultTooltip);
};
const openButtonClassNames = classnames__WEBPACK_IMPORTED_MODULE_1___default()('be-ContentAnswersOpenButton', {
'be-ContentAnswersOpenButton--hasQuestions': isHighlighted
});
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_box_blueprint_web__WEBPACK_IMPORTED_MODULE_5__.Tooltip, {
content: getTooltipText()
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_box_blueprint_web__WEBPACK_IMPORTED_MODULE_6__.IconButton, {
"aria-label": formatMessage(_messages__WEBPACK_IMPORTED_MODULE_3__["default"].contentAnswersTitle),
className: openButtonClassNames,
disabled: !isAllowedFileType(fileExtension),
onClick: onClick,
ref: buttonRef,
icon: _box_blueprint_web_assets_icons_Logo__WEBPACK_IMPORTED_MODULE_7__["default"],
variant: "icon-logo"
}));
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,react_intl__WEBPACK_IMPORTED_MODULE_8__["default"])(ContentAnswersOpenButton));
/***/ }),
/***/ "./src/elements/common/content-answers/constants.ts":
/*!**********************************************************!*\
!*** ./src/elements/common/content-answers/constants.ts ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ CODE_FILE_EXTENSIONS: () => (/* binding */ CODE_FILE_EXTENSIONS),
/* harmony export */ DOCUMENT_FILE_EXTENSIONS: () => (/* binding */ DOCUMENT_FILE_EXTENSIONS),
/* harmony export */ DOCUMENT_SUGGESTED_QUESTIONS: () => (/* binding */ DOCUMENT_SUGGESTED_QUESTIONS),
/* harmony export */ SPREADSHEET_FILE_EXTENSIONS: () => (/* binding */ SPREADSHEET_FILE_EXTENSIONS),
/* harmony export */ TEXT_FILE_EXTENSIONS: () => (/* binding */ TEXT_FILE_EXTENSIONS)
/* harmony export */ });
/* ------------------ Allowable file extensions ------------------ */
const CODE_FILE_EXTENSIONS = ['as', 'as3', 'asm', 'bat', 'c', 'cc', 'cmake', 'cpp', 'cs', 'css', 'cxx', 'diff', 'erb', 'groovy', 'h', 'haml', 'hh', 'htm', 'html', 'java', 'js', 'json', 'less', 'm', 'make', 'md', 'ml', 'mm', 'php', 'pl', 'plist', 'properties', 'py', 'rb', 'rst', 'sass', 'scala', 'script', 'scm', 'sml', 'sql', 'sh', 'vi', 'vim', 'webdoc', 'xhtml', 'yaml'];
const DOCUMENT_FILE_EXTENSIONS = ['csv', 'doc', 'docx', 'dwg', 'gdoc', 'gsheet', 'gslide', 'gslides', 'idml', 'indd', 'indt', 'inx', 'key', 'numbers', 'odp', 'ods', 'odt', 'pages', 'pdf', 'ppt', 'pptx', 'rtf', 'wpd', 'xls', 'xlsm', 'xlsx'];
const TEXT_FILE_EXTENSIONS = ['as', 'as3', 'asm', 'bat', 'c', 'cc', 'cmake', 'cpp', 'cs', 'css', 'cxx', 'diff', 'erb', 'groovy', 'h', 'haml', 'hh', 'java', 'js', 'json', 'less', 'log', 'm', 'make', 'md', 'ml', 'mm', 'php', 'pl', 'plist', 'properties', 'py', 'rb', 'rst', 'sass', 'scala', 'script', 'scm', 'sml', 'sql', 'sh', 'txt', 'vi', 'vim', 'webdoc', 'yaml'];
const SPREADSHEET_FILE_EXTENSIONS = ['xls', 'xlsx', 'xlsm', 'xlsb', 'csv', 'ods', 'gsheet'];
const DOCUMENT_SUGGESTED_QUESTIONS = [{
id: 'suggested-question-1',
labelId: 'documentSuggestedQuestionLabel1',
promptId: 'documentSuggestedQuestionPrompt1'
}, {
id: 'suggested-question-2',
labelId: 'documentSuggestedQuestionLabel2',
promptId: 'documentSuggestedQuestionPrompt2'
}, {
id: 'suggested-question-3',
labelId: 'documentSuggestedQuestionLabel3',
promptId: 'documentSuggestedQuestionPrompt3'
}, {
id: 'suggested-question-4',
labelId: 'documentSuggestedQuestionLabel4',
promptId: 'documentSuggestedQuestionPrompt4'
}];
/***/ }),
/***/ "./src/elements/common/content-answers/index.ts":
/*!******************************************************!*\
!*** ./src/elements/common/content-answers/index.ts ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* reexport safe */ _ContentAnswers__WEBPACK_IMPORTED_MODULE_0__["default"])
/* harmony export */ });
/* harmony import */ var _ContentAnswers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ContentAnswers */ "./src/elements/common/content-answers/ContentAnswers.tsx");
/***/ }),
/***/ "./src/elements/common/content-answers/messages.ts":
/*!*********************************************************!*\
!*** ./src/elements/common/content-answers/messages.ts ***!
\*********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-intl */ "./node_modules/react-intl/lib/index.js");
const messages = (0,react_intl__WEBPACK_IMPORTED_MODULE_0__.defineMessages)({
contentAnswersTitle: {
"id": "boxui.contentAnswers.contentAnswersTitle",
"defaultMessage": "Box AI"
},
defaultTooltip: {
"id": "boxui.contentAnswers.defaultTooltip",
"defaultMessage": "Get instant answers about this document using Box AI"
},
disabledTooltipFileNotCompatible: {
"id": "boxui.contentAnswers.disabledTooltipFileNotCompatible",
"defaultMessage": "Box AI is not currently supported for this file type"
},
hasQuestionsTooltip: {
"id": "boxui.contentAnswers.hasQuestionsTooltip",
"defaultMessage": "Return to Box AI"
},
documentSuggestedQuestionLabel1: {
"id": "boxui.contentAnswers.documentSuggestedQuestionLabel1",
"defaultMessage": "Summarize this document"
},
documentSuggestedQuestionPrompt1: {
"id": "boxui.contentAnswers.documentSuggestedQuestionPrompt1",
"defaultMessage": "Summarize this document"
},
documentSuggestedQuestionLabel2: {
"id": "boxui.contentAnswers.documentSuggestedQuestionLabel2",
"defaultMessage": "What are the key takeaways?"
},
documentSuggestedQuestionPrompt2: {
"id": "boxui.contentAnswers.documentSuggestedQuestionPrompt2",
"defaultMessage": "What are the key takeaways?"
},
documentSuggestedQuestionLabel3: {
"id": "boxui.contentAnswers.documentSuggestedQuestionLabel3",
"defaultMessage": "How can this document be improved?"
},
documentSuggestedQuestionPrompt3: {
"id": "boxui.contentAnswers.documentSuggestedQuestionPrompt3",
"defaultMessage": "How can this document be improved?"
},
documentSuggestedQuestionLabel4: {
"id": "boxui.contentAnswers.documentSuggestedQuestionLabel4",
"defaultMessage": "Are there any next steps defined?"
},
documentSuggestedQuestionPrompt4: {
"id": "boxui.contentAnswers.documentSuggestedQuestionPrompt4",
"defaultMessage": "Are there any next steps defined?"
},
welcomeMessageSpreadsheetNotice: {
"id": "boxui.contentAnswers.welcomeMessageSpreadsheetNotice",
"defaultMessage": "Spreadsheet support works best for text dense files"
},
welcomeMessageSpreadsheetNoticeAriaLabel: {
"id": "boxui.contentAnswers.welcomeMessageSpreadsheetNoticeAriaLabel",
"defaultMessage": "spreadsheet support notification banner"
}
});
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (messages);
/***/ }),
/***/ "./src/elements/common/current-user/index.ts":
/*!***************************************************!*\
!*** ./src/elements/common/current-user/index.ts ***!
\***************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* reexport safe */ _withCurrentUser__WEBPACK_IMPORTED_MODULE_0__["default"]),
/* harmony export */ withCurrentUser: () => (/* reexport safe */ _withCurrentUser__WEBPACK_IMPORTED_MODULE_0__["default"])
/* harmony export */ });
/* harmony import */ var _withCurrentUser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./withCurrentUser */ "./src/elements/common/current-user/withCurrentUser.tsx");
/***/ }),
/***/ "./src/elements/common/current-user/withCurrentUser.tsx":
/*!**************************************************************!*\
!*** ./src/elements/common/current-user/withCurrentUser.tsx ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ withCurrentUser)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _messages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../messages */ "./src/elements/common/messages.js");
/* harmony import */ var _api_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../api-context */ "./src/elements/common/api-context/index.js");
/* harmony import */ var _utils_error__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../utils/error */ "./src/utils/error.js");
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
// @ts-ignore: no ts definition
// @ts-ignore: no ts definition
// eslint-disable-next-line import/named
// @ts-ignore: no ts definition
// @ts-ignore: no ts definition
// eslint-disable-next-line import/named
// @ts-ignore: no ts definition
// eslint-disable-next-line import/named
// @ts-ignore: no ts definition
// eslint-disable-next-line import/named
function withCurrentUser(WrappedComponent) {
class ComponentWithCurrentUser extends react__WEBPACK_IMPORTED_MODULE_0__.Component {
constructor(props) {
super(props);
/**
* Network error callback
*
* @private
* @param {Error} error - Error object
* @param {Error} code - the code for the error
* @param {Object} contextInfo - the context info for the error
* @return {void}
*/
_defineProperty(this, "errorCallback", (error, code, contextInfo = {}) => {
// eslint-disable-next-line no-console
console.error(error);
this.props.onError(error, code, contextInfo);
});
/**
* Fetches a Users info
*
* @private
* @param {User} [user] - Box User. If missing, gets user that the current token was generated for.
* @param {boolean} shouldDestroy
* @return {void}
*/
_defineProperty(this, "fetchCurrentUser", (user, shouldDestroy = false) => {
const {
api,
file
} = this.props;
if (!file) {
throw (0,_utils_error__WEBPACK_IMPORTED_MODULE_3__.getBadItemError)();
}
if (typeof user === 'undefined') {
api.getUsersAPI(shouldDestroy).getUser(file.id, this.fetchCurrentUserSuccessCallback, this.fetchCurrentUserErrorCallback);
} else {
this.setState({
currentUser: user,
currentUserError: undefined
});
}
});
/**
* User fetch success callback
*
* @private
* @param {Object} currentUser - User info object
* @return {void}
*/
_defineProperty(this, "fetchCurrentUserSuccessCallback", currentUser => {
this.setState({
currentUser,
currentUserError: undefined
});
});
/**
* Handles a failed file user info fetch
*
* @private
* @param {ElementsXhrError} e - API error
* @return {void}
*/
_defineProperty(this, "fetchCurrentUserErrorCallback", (e, code) => {
this.setState({
currentUser: undefined,
currentUserError: {
maskError: {
errorHeader: _messages__WEBPACK_IMPORTED_MODULE_1__["default"].currentUserErrorHeaderMessage,
errorSubHeader: _messages__WEBPACK_IMPORTED_MODULE_1__["default"].defaultErrorMaskSubHeaderMessage
}
}
});
this.errorCallback(e, code, {
error: e
});
});
const {
currentUser: _currentUser
} = props;
this.state = {
currentUser: _currentUser
};
}
componentDidMount() {
const {
currentUser
} = this.state;
this.fetchCurrentUser(currentUser);
}
render() {
const {
currentUser,
currentUserError
} = this.state;
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(WrappedComponent, _extends({}, this.props, {
currentUser: currentUser,
currentUserError: currentUserError
}));
}
}
const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';
ComponentWithCurrentUser.displayName = `WithCurrentUser(${displayName})`;
return (0,_api_context__WEBPACK_IMPORTED_MODULE_2__.withAPIContext)(ComponentWithCurrentUser);
}
/***/ }),
/***/ "./src/elements/common/content-answers/ContentAnswersOpenButton.scss":
/*!***************************************************************************!*\
!*** ./src/elements/common/content-answers/ContentAnswersOpenButton.scss ***!
\***************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin
/***/ })
}]);
//# sourceMappingURL=content-answers.no.react.js.map