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.
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "box-ui-elements",
3
- "version": "24.0.0-beta.2",
3
+ "version": "24.0.0-beta.3",
4
4
  "description": "Box UI Elements",
5
5
  "author": "Box (https://www.box.com/)",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -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
- // Skipping those tests, since now suggested questions will be a part of a new landing page, which is turned off for ContentAnswersModal
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 });