box-ui-elements 24.0.0-beta.2 → 24.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DEVELOPING.md +1 -1
- package/dist/explorer.js +1 -1
- package/dist/preview.js +1 -1
- package/es/elements/common/content-answers/ContentAnswersModal.js +1 -0
- package/es/elements/common/content-answers/ContentAnswersModal.js.map +1 -1
- package/package.json +1 -1
- package/src/elements/common/content-answers/ContentAnswersModal.tsx +1 -0
- package/src/elements/common/content-answers/__tests__/ContentAnswersModal.test.tsx +1 -2
|
@@ -136,6 +136,7 @@ const ContentAnswersModal = ({
|
|
|
136
136
|
questions: questions,
|
|
137
137
|
retryQuestion: handleRetry,
|
|
138
138
|
setAnswerFeedback: noop,
|
|
139
|
+
shouldShowLandingPage: questions.length === 0,
|
|
139
140
|
submitQuestion: handleAsk,
|
|
140
141
|
suggestedQuestions: suggestedQuestions || localizedQuestions,
|
|
141
142
|
warningNotice: spreadsheetNotice,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentAnswersModal.js","names":["React","useState","useCallback","useIntl","getProp","noop","ANSWER_ERROR","IntelligenceModal","withAPIContext","DOCUMENT_SUGGESTED_QUESTIONS","SPREADSHEET_FILE_EXTENSIONS","messages","ContentAnswersModal","api","file","isOpen","onAsk","onClearConversation","onRequestClose","suggestedQuestions","isCitationsEnabled","isMarkdownEnabled","formatMessage","isLoading","setIsLoading","questions","setQuestions","localizedQuestions","length","map","question","id","label","labelId","prompt","promptId","handleSuccessCallback","response","answer","data","created_at","citations","error","isCompleted","prevState","lastQuestion","updatedLastQuestion","_objectSpread","slice","handleErrorCallback","rateLimitingRegex","errorMessage","message","isRateLimitingError","status","test","errorQuestion","RATE_LIMITING","GENERAL","handleAsk","aiAgent","isRetry","items","type","dialogueHistory","q","prevQuestions","getIntelligenceAPI","ask","include_citations","e","handleRetry","handleClearConversation","handleOnRequestClose","fileName","fileExtension","isSpreadsheet","includes","spreadsheetNotice","welcomeMessageSpreadsheetNotice","createElement","contentName","contentType","hasRequestInProgress","onClearAction","onOpenChange","open","retryQuestion","setAnswerFeedback","submitQuestion","warningNotice","warningNoticeAriaLabel","welcomeMessageSpreadsheetNoticeAriaLabel"],"sources":["../../../../src/elements/common/content-answers/ContentAnswersModal.tsx"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { useIntl } from 'react-intl';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport { AxiosResponse } from 'axios';\n\nimport {\n AgentType,\n ANSWER_ERROR,\n IntelligenceModal,\n QuestionType,\n SuggestedQuestionType,\n} from '@box/box-ai-content-answers';\n\nimport { withAPIContext } from '../api-context';\nimport { DOCUMENT_SUGGESTED_QUESTIONS, SPREADSHEET_FILE_EXTENSIONS } from './constants';\n\n// @ts-ignore: no ts definition\nimport APIFactory from '../../../api';\n// @ts-ignore: no ts definition\nimport { ElementsXhrError } from '../../common/types/api';\n// @ts-ignore: no ts definition\nimport { BoxItem } from '../../../common/types/core';\n\nimport messages from './messages';\n\nexport interface ExternalProps {\n isCitationsEnabled?: boolean;\n isMarkdownEnabled?: boolean;\n onAsk?: () => void;\n onClearConversation?: () => void;\n onRequestClose?: () => void;\n suggestedQuestions?: SuggestedQuestionType[];\n}\n\nexport interface ContentAnswersModalProps extends ExternalProps {\n api: APIFactory;\n file: BoxItem;\n isOpen: boolean;\n}\n\nconst ContentAnswersModal = ({\n api,\n file,\n isOpen,\n onAsk,\n onClearConversation,\n onRequestClose,\n suggestedQuestions,\n isCitationsEnabled = true,\n isMarkdownEnabled = true,\n}: ContentAnswersModalProps) => {\n const { formatMessage } = useIntl();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [questions, setQuestions] = useState<QuestionType[]>([]);\n let localizedQuestions: SuggestedQuestionType[] = [];\n\n if (!suggestedQuestions || suggestedQuestions.length === 0) {\n localizedQuestions = DOCUMENT_SUGGESTED_QUESTIONS.map(question => ({\n id: question.id,\n label: formatMessage(messages[question.labelId]),\n prompt: formatMessage(messages[question.promptId]),\n }));\n }\n\n const handleSuccessCallback = useCallback((response: AxiosResponse): void => {\n const question = {\n answer: response.data.answer,\n created_at: response.data.created_at,\n citations: response.data.citations,\n error: null,\n isCompleted: true,\n isLoading: false,\n };\n\n setQuestions(prevState => {\n const lastQuestion = prevState[prevState.length - 1];\n const updatedLastQuestion = { ...lastQuestion, ...question };\n return [...prevState.slice(0, -1), updatedLastQuestion];\n });\n }, []);\n\n const handleErrorCallback = useCallback((error: ElementsXhrError, question: QuestionType): void => {\n const rateLimitingRegex = /Too Many Requests/i;\n\n const errorMessage = error?.message || '';\n const isRateLimitingError = error?.response?.status === 429 || rateLimitingRegex.test(errorMessage);\n\n const errorQuestion = {\n ...question,\n error: isRateLimitingError ? ANSWER_ERROR.RATE_LIMITING : ANSWER_ERROR.GENERAL,\n isCompleted: true,\n isLoading: false,\n };\n\n setQuestions(prevState => {\n return [...prevState.slice(0, -1), errorQuestion];\n });\n }, []);\n\n const handleAsk = useCallback(\n async (question: QuestionType, aiAgent: AgentType, isRetry = false) => {\n if (onAsk) {\n onAsk();\n }\n const { id } = file;\n const items = [\n {\n id,\n type: 'file',\n },\n ];\n question.isCompleted = false;\n question.isLoading = true;\n\n const dialogueHistory = questions.map(q => ({\n prompt: q.prompt,\n answer: q.answer,\n created_at: q.created_at,\n }));\n\n setQuestions(prevQuestions => {\n return [...(isRetry ? prevQuestions.slice(0, -1) : prevQuestions), question];\n });\n setIsLoading(true);\n\n try {\n const response = await api\n .getIntelligenceAPI(true)\n .ask(question, items, dialogueHistory, { include_citations: isCitationsEnabled });\n handleSuccessCallback(response);\n } catch (e) {\n handleErrorCallback(e, question);\n }\n setIsLoading(false);\n },\n [api, file, handleErrorCallback, handleSuccessCallback, isCitationsEnabled, onAsk, questions],\n );\n\n const handleRetry = useCallback(\n (question: QuestionType) => {\n setQuestions(prevState => {\n delete question.error;\n return [...prevState.slice(0, -1), question];\n });\n handleAsk(question, null, true);\n },\n [handleAsk],\n );\n\n const handleClearConversation = useCallback(() => {\n if (onClearConversation) {\n onClearConversation();\n }\n setQuestions([]);\n }, [onClearConversation]);\n\n const handleOnRequestClose = useCallback(() => {\n if (onRequestClose) {\n onRequestClose();\n }\n }, [onRequestClose]);\n\n const fileName = getProp(file, 'name');\n const fileExtension = getProp(file, 'extension');\n\n const isSpreadsheet = SPREADSHEET_FILE_EXTENSIONS.includes(fileExtension);\n const spreadsheetNotice = isSpreadsheet ? formatMessage(messages.welcomeMessageSpreadsheetNotice) : '';\n\n return (\n <IntelligenceModal\n contentName={fileName}\n contentType={fileExtension}\n hasRequestInProgress={isLoading}\n isCitationsEnabled={isCitationsEnabled}\n isMarkdownEnabled={isMarkdownEnabled}\n onClearAction={handleClearConversation}\n onOpenChange={handleOnRequestClose}\n open={isOpen}\n questions={questions}\n retryQuestion={handleRetry}\n setAnswerFeedback={noop}\n submitQuestion={handleAsk}\n suggestedQuestions={suggestedQuestions || localizedQuestions}\n warningNotice={spreadsheetNotice}\n warningNoticeAriaLabel={formatMessage(messages.welcomeMessageSpreadsheetNoticeAriaLabel)}\n />\n );\n};\n\nexport default withAPIContext(ContentAnswersModal);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ContentAnswersModal.js","names":["React","useState","useCallback","useIntl","getProp","noop","ANSWER_ERROR","IntelligenceModal","withAPIContext","DOCUMENT_SUGGESTED_QUESTIONS","SPREADSHEET_FILE_EXTENSIONS","messages","ContentAnswersModal","api","file","isOpen","onAsk","onClearConversation","onRequestClose","suggestedQuestions","isCitationsEnabled","isMarkdownEnabled","formatMessage","isLoading","setIsLoading","questions","setQuestions","localizedQuestions","length","map","question","id","label","labelId","prompt","promptId","handleSuccessCallback","response","answer","data","created_at","citations","error","isCompleted","prevState","lastQuestion","updatedLastQuestion","_objectSpread","slice","handleErrorCallback","rateLimitingRegex","errorMessage","message","isRateLimitingError","status","test","errorQuestion","RATE_LIMITING","GENERAL","handleAsk","aiAgent","isRetry","items","type","dialogueHistory","q","prevQuestions","getIntelligenceAPI","ask","include_citations","e","handleRetry","handleClearConversation","handleOnRequestClose","fileName","fileExtension","isSpreadsheet","includes","spreadsheetNotice","welcomeMessageSpreadsheetNotice","createElement","contentName","contentType","hasRequestInProgress","onClearAction","onOpenChange","open","retryQuestion","setAnswerFeedback","shouldShowLandingPage","submitQuestion","warningNotice","warningNoticeAriaLabel","welcomeMessageSpreadsheetNoticeAriaLabel"],"sources":["../../../../src/elements/common/content-answers/ContentAnswersModal.tsx"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { useIntl } from 'react-intl';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport { AxiosResponse } from 'axios';\n\nimport {\n AgentType,\n ANSWER_ERROR,\n IntelligenceModal,\n QuestionType,\n SuggestedQuestionType,\n} from '@box/box-ai-content-answers';\n\nimport { withAPIContext } from '../api-context';\nimport { DOCUMENT_SUGGESTED_QUESTIONS, SPREADSHEET_FILE_EXTENSIONS } from './constants';\n\n// @ts-ignore: no ts definition\nimport APIFactory from '../../../api';\n// @ts-ignore: no ts definition\nimport { ElementsXhrError } from '../../common/types/api';\n// @ts-ignore: no ts definition\nimport { BoxItem } from '../../../common/types/core';\n\nimport messages from './messages';\n\nexport interface ExternalProps {\n isCitationsEnabled?: boolean;\n isMarkdownEnabled?: boolean;\n onAsk?: () => void;\n onClearConversation?: () => void;\n onRequestClose?: () => void;\n suggestedQuestions?: SuggestedQuestionType[];\n}\n\nexport interface ContentAnswersModalProps extends ExternalProps {\n api: APIFactory;\n file: BoxItem;\n isOpen: boolean;\n}\n\nconst ContentAnswersModal = ({\n api,\n file,\n isOpen,\n onAsk,\n onClearConversation,\n onRequestClose,\n suggestedQuestions,\n isCitationsEnabled = true,\n isMarkdownEnabled = true,\n}: ContentAnswersModalProps) => {\n const { formatMessage } = useIntl();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [questions, setQuestions] = useState<QuestionType[]>([]);\n let localizedQuestions: SuggestedQuestionType[] = [];\n\n if (!suggestedQuestions || suggestedQuestions.length === 0) {\n localizedQuestions = DOCUMENT_SUGGESTED_QUESTIONS.map(question => ({\n id: question.id,\n label: formatMessage(messages[question.labelId]),\n prompt: formatMessage(messages[question.promptId]),\n }));\n }\n\n const handleSuccessCallback = useCallback((response: AxiosResponse): void => {\n const question = {\n answer: response.data.answer,\n created_at: response.data.created_at,\n citations: response.data.citations,\n error: null,\n isCompleted: true,\n isLoading: false,\n };\n\n setQuestions(prevState => {\n const lastQuestion = prevState[prevState.length - 1];\n const updatedLastQuestion = { ...lastQuestion, ...question };\n return [...prevState.slice(0, -1), updatedLastQuestion];\n });\n }, []);\n\n const handleErrorCallback = useCallback((error: ElementsXhrError, question: QuestionType): void => {\n const rateLimitingRegex = /Too Many Requests/i;\n\n const errorMessage = error?.message || '';\n const isRateLimitingError = error?.response?.status === 429 || rateLimitingRegex.test(errorMessage);\n\n const errorQuestion = {\n ...question,\n error: isRateLimitingError ? ANSWER_ERROR.RATE_LIMITING : ANSWER_ERROR.GENERAL,\n isCompleted: true,\n isLoading: false,\n };\n\n setQuestions(prevState => {\n return [...prevState.slice(0, -1), errorQuestion];\n });\n }, []);\n\n const handleAsk = useCallback(\n async (question: QuestionType, aiAgent: AgentType, isRetry = false) => {\n if (onAsk) {\n onAsk();\n }\n const { id } = file;\n const items = [\n {\n id,\n type: 'file',\n },\n ];\n question.isCompleted = false;\n question.isLoading = true;\n\n const dialogueHistory = questions.map(q => ({\n prompt: q.prompt,\n answer: q.answer,\n created_at: q.created_at,\n }));\n\n setQuestions(prevQuestions => {\n return [...(isRetry ? prevQuestions.slice(0, -1) : prevQuestions), question];\n });\n setIsLoading(true);\n\n try {\n const response = await api\n .getIntelligenceAPI(true)\n .ask(question, items, dialogueHistory, { include_citations: isCitationsEnabled });\n handleSuccessCallback(response);\n } catch (e) {\n handleErrorCallback(e, question);\n }\n setIsLoading(false);\n },\n [api, file, handleErrorCallback, handleSuccessCallback, isCitationsEnabled, onAsk, questions],\n );\n\n const handleRetry = useCallback(\n (question: QuestionType) => {\n setQuestions(prevState => {\n delete question.error;\n return [...prevState.slice(0, -1), question];\n });\n handleAsk(question, null, true);\n },\n [handleAsk],\n );\n\n const handleClearConversation = useCallback(() => {\n if (onClearConversation) {\n onClearConversation();\n }\n setQuestions([]);\n }, [onClearConversation]);\n\n const handleOnRequestClose = useCallback(() => {\n if (onRequestClose) {\n onRequestClose();\n }\n }, [onRequestClose]);\n\n const fileName = getProp(file, 'name');\n const fileExtension = getProp(file, 'extension');\n\n const isSpreadsheet = SPREADSHEET_FILE_EXTENSIONS.includes(fileExtension);\n const spreadsheetNotice = isSpreadsheet ? formatMessage(messages.welcomeMessageSpreadsheetNotice) : '';\n\n return (\n <IntelligenceModal\n contentName={fileName}\n contentType={fileExtension}\n hasRequestInProgress={isLoading}\n isCitationsEnabled={isCitationsEnabled}\n isMarkdownEnabled={isMarkdownEnabled}\n onClearAction={handleClearConversation}\n onOpenChange={handleOnRequestClose}\n open={isOpen}\n questions={questions}\n retryQuestion={handleRetry}\n setAnswerFeedback={noop}\n shouldShowLandingPage={questions.length === 0}\n submitQuestion={handleAsk}\n suggestedQuestions={suggestedQuestions || localizedQuestions}\n warningNotice={spreadsheetNotice}\n warningNoticeAriaLabel={formatMessage(messages.welcomeMessageSpreadsheetNoticeAriaLabel)}\n />\n );\n};\n\nexport default withAPIContext(ContentAnswersModal);\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -180,6 +180,7 @@ const ContentAnswersModal = ({
|
|
|
180
180
|
questions={questions}
|
|
181
181
|
retryQuestion={handleRetry}
|
|
182
182
|
setAnswerFeedback={noop}
|
|
183
|
+
shouldShowLandingPage={questions.length === 0}
|
|
183
184
|
submitQuestion={handleAsk}
|
|
184
185
|
suggestedQuestions={suggestedQuestions || localizedQuestions}
|
|
185
186
|
warningNotice={spreadsheetNotice}
|
|
@@ -151,8 +151,7 @@ describe('elements/common/content-answers/ContentAnswersModal', () => {
|
|
|
151
151
|
);
|
|
152
152
|
});
|
|
153
153
|
|
|
154
|
-
|
|
155
|
-
describe.skip('should render suggested questions', () => {
|
|
154
|
+
describe('should render suggested questions', () => {
|
|
156
155
|
test('renders suggested questions when provided', () => {
|
|
157
156
|
const suggestedQuestions = [{ id: '1', label: 'Suggested Question 1', prompt: 'Prompt 1' }];
|
|
158
157
|
renderComponent(mockApi, { suggestedQuestions });
|