box-ui-elements 24.0.0-beta.3 → 24.0.0-beta.4
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/dist/explorer.js +1 -1
- package/dist/openwith.js +1 -1
- package/dist/picker.js +1 -1
- package/dist/preview.js +1 -1
- package/dist/sharing.js +1 -1
- package/dist/sidebar.js +1 -1
- package/dist/uploader.js +1 -1
- package/es/elements/common/withBlueprintModernization.js +16 -0
- package/es/elements/common/withBlueprintModernization.js.map +1 -0
- package/es/elements/content-explorer/ContentExplorer.js +2 -1
- package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
- package/es/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js +5 -0
- package/es/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js.flow +6 -0
- package/es/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js.map +1 -1
- package/es/elements/content-picker/ContentPicker.js +4 -1
- package/es/elements/content-picker/ContentPicker.js.flow +4 -1
- package/es/elements/content-picker/ContentPicker.js.map +1 -1
- package/es/elements/content-picker/stories/tests/ContentPicker-visual.stories.js +5 -0
- package/es/elements/content-picker/stories/tests/ContentPicker-visual.stories.js.flow +6 -0
- package/es/elements/content-picker/stories/tests/ContentPicker-visual.stories.js.map +1 -1
- package/es/elements/content-preview/ContentPreview.js +3 -1
- package/es/elements/content-preview/ContentPreview.js.flow +3 -0
- package/es/elements/content-preview/ContentPreview.js.map +1 -1
- package/es/elements/content-preview/stories/tests/ContentPreview-visual.stories.js +5 -0
- package/es/elements/content-preview/stories/tests/ContentPreview-visual.stories.js.flow +7 -1
- package/es/elements/content-preview/stories/tests/ContentPreview-visual.stories.js.map +1 -1
- package/es/elements/content-sharing/ContentSharing.js +4 -1
- package/es/elements/content-sharing/ContentSharing.js.flow +4 -1
- package/es/elements/content-sharing/ContentSharing.js.map +1 -1
- package/es/elements/content-sidebar/ContentSidebar.js +3 -1
- package/es/elements/content-sidebar/ContentSidebar.js.flow +3 -0
- package/es/elements/content-sidebar/ContentSidebar.js.map +1 -1
- package/es/elements/content-sidebar/stories/tests/ContentSidebar-visual.stories.js +5 -0
- package/es/elements/content-sidebar/stories/tests/ContentSidebar-visual.stories.js.map +1 -1
- package/es/elements/content-uploader/ContentUploader.js +3 -1
- package/es/elements/content-uploader/ContentUploader.js.map +1 -1
- package/es/elements/content-uploader/stories/tests/ContentUploader-visual.stories.js +5 -0
- package/es/elements/content-uploader/stories/tests/ContentUploader-visual.stories.js.flow +6 -0
- package/es/elements/content-uploader/stories/tests/ContentUploader-visual.stories.js.map +1 -1
- package/es/features/classification/applied-by-ai-classification-reason/AppliedByAiClassificationReason.js +51 -0
- package/es/features/classification/applied-by-ai-classification-reason/AppliedByAiClassificationReason.js.map +1 -0
- package/es/features/classification/applied-by-ai-classification-reason/AppliedByAiClassificationReason.scss +29 -0
- package/es/features/classification/applied-by-ai-classification-reason/messages.js +13 -0
- package/es/features/classification/applied-by-ai-classification-reason/messages.js.map +1 -0
- package/es/features/classification/types.js +2 -0
- package/es/features/classification/types.js.map +1 -0
- package/es/src/elements/common/__tests__/withBlueprintModernization.test.d.ts +1 -0
- package/es/src/elements/common/withBlueprintModernization.d.ts +3 -0
- package/es/src/elements/content-sidebar/stories/tests/ContentSidebar-visual.stories.d.ts +5 -0
- package/es/src/features/classification/applied-by-ai-classification-reason/AppliedByAiClassificationReason.d.ts +6 -0
- package/es/src/features/classification/applied-by-ai-classification-reason/__tests__/AppliedByAiClassificationReason.test.d.ts +1 -0
- package/es/src/features/classification/applied-by-ai-classification-reason/messages.d.ts +13 -0
- package/es/src/features/classification/types.d.ts +6 -0
- package/i18n/bn-IN.js +4 -2
- package/i18n/bn-IN.properties +2 -2
- package/i18n/da-DK.js +4 -2
- package/i18n/da-DK.properties +2 -2
- package/i18n/de-DE.js +4 -2
- package/i18n/de-DE.properties +2 -2
- package/i18n/en-AU.js +2 -0
- package/i18n/en-CA.js +2 -0
- package/i18n/en-GB.js +2 -0
- package/i18n/en-US.js +2 -0
- package/i18n/en-US.properties +4 -0
- package/i18n/en-x-pseudo.js +2 -0
- package/i18n/es-419.js +4 -2
- package/i18n/es-419.properties +2 -2
- package/i18n/es-ES.js +4 -2
- package/i18n/es-ES.properties +2 -2
- package/i18n/fi-FI.js +4 -2
- package/i18n/fi-FI.properties +2 -2
- package/i18n/fr-CA.js +4 -2
- package/i18n/fr-CA.properties +2 -2
- package/i18n/fr-FR.js +4 -2
- package/i18n/fr-FR.properties +2 -2
- package/i18n/hi-IN.js +4 -2
- package/i18n/hi-IN.properties +2 -2
- package/i18n/it-IT.js +4 -2
- package/i18n/it-IT.properties +2 -2
- package/i18n/ja-JP.js +2 -0
- package/i18n/ko-KR.js +4 -2
- package/i18n/ko-KR.properties +2 -2
- package/i18n/nb-NO.js +4 -2
- package/i18n/nb-NO.properties +2 -2
- package/i18n/nl-NL.js +4 -2
- package/i18n/nl-NL.properties +2 -2
- package/i18n/pl-PL.js +4 -2
- package/i18n/pl-PL.properties +2 -2
- package/i18n/pt-BR.js +4 -2
- package/i18n/pt-BR.properties +2 -2
- package/i18n/ru-RU.js +4 -2
- package/i18n/ru-RU.properties +2 -2
- package/i18n/sv-SE.js +4 -2
- package/i18n/sv-SE.properties +2 -2
- package/i18n/tr-TR.js +4 -2
- package/i18n/tr-TR.properties +2 -2
- package/i18n/zh-CN.js +4 -2
- package/i18n/zh-CN.properties +2 -2
- package/i18n/zh-TW.js +4 -2
- package/i18n/zh-TW.properties +2 -2
- package/package.json +1 -1
- package/src/elements/common/__tests__/withBlueprintModernization.test.tsx +91 -0
- package/src/elements/common/withBlueprintModernization.tsx +24 -0
- package/src/elements/content-explorer/ContentExplorer.tsx +4 -1
- package/src/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js +6 -0
- package/src/elements/content-picker/ContentPicker.js +4 -1
- package/src/elements/content-picker/stories/tests/ContentPicker-visual.stories.js +6 -0
- package/src/elements/content-preview/ContentPreview.js +3 -0
- package/src/elements/content-preview/stories/tests/ContentPreview-visual.stories.js +7 -1
- package/src/elements/content-sharing/ContentSharing.js +4 -1
- package/src/elements/content-sidebar/ContentSidebar.js +3 -0
- package/src/elements/content-sidebar/stories/tests/ContentSidebar-visual.stories.tsx +6 -0
- package/src/elements/content-uploader/ContentUploader.tsx +3 -1
- package/src/elements/content-uploader/stories/tests/ContentUploader-visual.stories.js +6 -0
- package/src/features/classification/applied-by-ai-classification-reason/AppliedByAiClassificationReason.scss +29 -0
- package/src/features/classification/applied-by-ai-classification-reason/AppliedByAiClassificationReason.tsx +55 -0
- package/src/features/classification/applied-by-ai-classification-reason/__tests__/AppliedByAiClassificationReason.test.tsx +105 -0
- package/src/features/classification/applied-by-ai-classification-reason/messages.ts +18 -0
- package/src/features/classification/types.ts +7 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentPreview-visual.stories.js","names":["React","BrowserRouter","Router","expect","userEvent","waitFor","within","Notification","http","HttpResponse","mockEventRequest","mockFileRequest","mockUserRequest","DEFAULT_HOSTNAME_API","ContentPreview","WAIT_TIMEOUT","basic","play","canvasElement","canvas","button","findByRole","name","timeout","toBeInTheDocument","click","dialog","document","querySelector","modal","getByText","closeModal","closeButton","getByRole","submitAnswer","textInput","focus","keyboard","pointerEventsCheck","answer","findByText","hoverOverCitation","citations","getAllByTestId","citation","hover","main","toBeVisible","citationDisabled","args","contentAnswersProps","show","isCitationsEnabled","isMarkdownEnabled","queryByText","not","clearConversation","clearConversationButton","oldAnswer","markdownEnabled","markdownDisabled","title","component","render","_ref","_extends","_objectDestructuringEmpty","createElement","Provider","key","fileId","token","features","global","FEATURE_FLAGS","FILE_ID","hasHeader","TOKEN","parameters","chromatic","ignoreSelectors","msw","handlers","post","url","json","response","get","request","body","prompt","created_at","completion_reason","content","id","type"],"sources":["../../../../../src/elements/content-preview/stories/tests/ContentPreview-visual.stories.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { expect, userEvent, waitFor, within } from 'storybook/test';\nimport { Notification } from '@box/blueprint-web';\nimport { http, HttpResponse } from 'msw';\n\nimport { mockEventRequest, mockFileRequest, mockUserRequest } from '../../../common/__mocks__/mockRequests';\nimport { DEFAULT_HOSTNAME_API } from '../../../../constants';\n\nimport ContentPreview from '../../ContentPreview';\n\nconst WAIT_TIMEOUT = 5000;\n\nexport const basic = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n expect(modal.getByText(/Welcome to Box AI/i)).toBeInTheDocument();\n expect(modal.getByText('Chat cleared when you close pdf')).toBeInTheDocument();\n\n expect(modal.getByText('Ask Box AI')).toBeInTheDocument();\n },\n};\n\nexport const closeModal = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n const closeButton = modal.getByRole('button', { name: 'Close Modal' });\n await userEvent.click(closeButton);\n },\n};\n\nexport const submitAnswer = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n const textInput = modal.getByRole('textbox', { name: 'Ask Box AI' });\n expect(textInput).toBeInTheDocument();\n textInput.focus();\n await userEvent.keyboard('Why are public APIs important?');\n\n await userEvent.click(modal.getByRole('button', { name: 'Ask' }), { pointerEventsCheck: 0 });\n const answer = await modal.findByText('Public APIs are important because of key and important reasons.');\n expect(answer).toBeInTheDocument();\n\n expect(modal.getByText('Based on:')).toBeInTheDocument();\n },\n};\n\nexport const hoverOverCitation = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n\n expect(dialog).toBeInTheDocument();\n const modal = within(dialog);\n const textInput = modal.getByRole('textbox', { name: 'Ask Box AI' });\n expect(textInput).toBeInTheDocument();\n textInput.focus();\n await userEvent.keyboard('Why are public APIs important?');\n await userEvent.click(modal.getByRole('button', { name: 'Ask' }), { pointerEventsCheck: 0 });\n\n const answer = await modal.findByText('Public APIs are important because of key and important reasons.');\n expect(answer).toBeInTheDocument();\n\n expect(modal.getByText('Based on:')).toBeInTheDocument();\n\n const citations = await modal.getAllByTestId('content-answers-citation-status')\n const citation = citations[0];\n expect(citation).toBeInTheDocument();\n await userEvent.hover(citation);\n\n const main = await waitFor(() => document.querySelector('.sb-main-padded.sb-show-main'));\n await waitFor(async () => {\n await expect(within(main).getByText('Public APIs are key drivers of innovation and growth.')).toBeVisible();\n });\n },\n};\n\nexport const citationDisabled = {\n args: {\n contentAnswersProps: {\n show: true,\n isCitationsEnabled: false,\n isMarkdownEnabled: true,\n },\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n const textInput = modal.getByRole('textbox', { name: 'Ask Box AI' });\n expect(textInput).toBeInTheDocument();\n textInput.focus();\n await userEvent.keyboard('Why are public APIs important?');\n await userEvent.click(modal.getByRole('button', { name: 'Ask' }), { pointerEventsCheck: 0 });\n\n const answer = await modal.findByText('Public APIs are important because of key and important reasons.');\n expect(answer).toBeInTheDocument();\n\n expect(modal.queryByText('Based on:')).not.toBeInTheDocument();\n },\n};\n\nexport const clearConversation = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n const textInput = modal.getByRole('textbox', { name: 'Ask Box AI' });\n expect(textInput).toBeInTheDocument();\n textInput.focus();\n await userEvent.keyboard('Why are public APIs important?');\n await userEvent.click(modal.getByRole('button', { name: 'Ask' }), { pointerEventsCheck: 0 });\n\n const answer = await modal.findByText('Public APIs are important because of key and important reasons.');\n expect(answer).toBeInTheDocument();\n\n expect(modal.getByText('Based on:')).toBeInTheDocument();\n\n const clearConversationButton = modal.getByRole('button', { name: 'Clear conversation' });\n await userEvent.click(clearConversationButton);\n\n const oldAnswer = modal.queryByText('Public APIs are important because of key and important reasons.');\n expect(oldAnswer).not.toBeInTheDocument();\n },\n};\n\nexport const markdownEnabled = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n const textInput = modal.getByRole('textbox', { name: 'Ask Box AI' });\n expect(textInput).toBeInTheDocument();\n textInput.focus();\n await userEvent.keyboard('table summarizing the highlights from the document');\n\n await userEvent.click(modal.getByRole('button', { name: 'Ask' }), { pointerEventsCheck: 0 });\n const answer = await modal.findByText('Here’s a table summarizing the highlights from the document:');\n expect(answer).toBeInTheDocument();\n },\n};\n\nexport const markdownDisabled = {\n args: {\n contentAnswersProps: {\n show: true,\n isCitationsEnabled: false,\n isMarkdownEnabled: false,\n },\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n const textInput = modal.getByRole('textbox', { name: 'Ask Box AI' });\n expect(textInput).toBeInTheDocument();\n textInput.focus();\n await userEvent.keyboard('table summarizing the highlights from the document');\n\n await userEvent.click(modal.getByRole('button', { name: 'Ask' }), { pointerEventsCheck: 0 });\n },\n};\n\nexport default {\n title: 'Elements/ContentPreview/tests/visual/BoxAI',\n component: ContentPreview,\n render: ({ ...args }: any) => (\n <Notification.Provider>\n <Router>\n <ContentPreview key={`${args.fileId}-${args.token}`} {...args} />\n </Router>\n </Notification.Provider>\n ),\n args: {\n features: global.FEATURE_FLAGS,\n fileId: global.FILE_ID,\n hasHeader: true,\n token: global.TOKEN,\n contentAnswersProps: {\n show: true,\n isCitationsEnabled: true,\n isMarkdownEnabled: true,\n },\n },\n parameters: {\n chromatic: {\n ignoreSelectors: ['[class^=\"bp_avatar_module_avatar--\"] > [class^=\"bp_avatar_module_text--\"]'],\n },\n msw: {\n handlers: [\n http.post(mockEventRequest.url, () => {\n return HttpResponse.json(mockEventRequest.response);\n }),\n http.get(mockUserRequest.url, () => {\n return HttpResponse.json(mockUserRequest.response);\n }),\n http.get(mockFileRequest.url, () => {\n return HttpResponse.json(mockFileRequest.response);\n }),\n http.post(`${DEFAULT_HOSTNAME_API}/2.0/ai/ask`, async ({ request }) => {\n const body = await request.json();\n switch (body.prompt) {\n case 'table summarizing the highlights from the document':\n return HttpResponse.json({\n answer: 'Here’s a table summarizing the highlights from the document:\\n\\n| **Highlight** |\\n|---------------------------------------------------------------------------------------------------|\\n| Captain of the NCAA Division I Women’s Lacrosse Team, with a 3.8 GPA in Business at Brown University and experience in sales, marketing, and operations across various internships. |',\n created_at: '2024-09-20T12:25:51.816-07:00',\n completion_reason: 'done',\n });\n default:\n return HttpResponse.json({\n answer: 'Public APIs are important because of key and important reasons.',\n citations: [\n {\n content: 'Public APIs are key drivers of innovation and growth.',\n id: '123',\n type: 'file',\n name: 'The importance of public APIs.pdf',\n },\n ],\n completion_reason: 'done',\n created_at: '2012-12-12T10:53:43-08:00',\n });\n }\n }),\n ],\n },\n },\n};\n"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,aAAa,IAAIC,MAAM,QAAQ,kBAAkB;AAC1D,SAASC,MAAM,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,gBAAgB;AACnE,SAASC,YAAY,QAAQ,oBAAoB;AACjD,SAASC,IAAI,EAAEC,YAAY,QAAQ,KAAK;AAExC,SAASC,gBAAgB,EAAEC,eAAe,EAAEC,eAAe,QAAQ,wCAAwC;AAC3G,SAASC,oBAAoB,QAAQ,uBAAuB;AAE5D,OAAOC,cAAc,MAAM,sBAAsB;AAEjD,MAAMC,YAAY,GAAG,IAAI;AAEzB,OAAO,MAAMC,KAAK,GAAG;EACjBC,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5BvB,MAAM,CAAC0B,KAAK,CAACC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAACN,iBAAiB,CAAC,CAAC;IACjErB,MAAM,CAAC0B,KAAK,CAACC,SAAS,CAAC,iCAAiC,CAAC,CAAC,CAACN,iBAAiB,CAAC,CAAC;IAE9ErB,MAAM,CAAC0B,KAAK,CAACC,SAAS,CAAC,YAAY,CAAC,CAAC,CAACN,iBAAiB,CAAC,CAAC;EAC7D;AACJ,CAAC;AAED,OAAO,MAAMO,UAAU,GAAG;EACtBd,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMM,WAAW,GAAGH,KAAK,CAACI,SAAS,CAAC,QAAQ,EAAE;MAAEX,IAAI,EAAE;IAAc,CAAC,CAAC;IACtE,MAAMlB,SAAS,CAACqB,KAAK,CAACO,WAAW,CAAC;EACtC;AACJ,CAAC;AAED,OAAO,MAAME,YAAY,GAAG;EACxBjB,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMS,SAAS,GAAGN,KAAK,CAACI,SAAS,CAAC,SAAS,EAAE;MAAEX,IAAI,EAAE;IAAa,CAAC,CAAC;IACpEnB,MAAM,CAACgC,SAAS,CAAC,CAACX,iBAAiB,CAAC,CAAC;IACrCW,SAAS,CAACC,KAAK,CAAC,CAAC;IACjB,MAAMhC,SAAS,CAACiC,QAAQ,CAAC,gCAAgC,CAAC;IAE1D,MAAMjC,SAAS,CAACqB,KAAK,CAACI,KAAK,CAACI,SAAS,CAAC,QAAQ,EAAE;MAAEX,IAAI,EAAE;IAAM,CAAC,CAAC,EAAE;MAAEgB,kBAAkB,EAAE;IAAE,CAAC,CAAC;IAC5F,MAAMC,MAAM,GAAG,MAAMV,KAAK,CAACW,UAAU,CAAC,iEAAiE,CAAC;IACxGrC,MAAM,CAACoC,MAAM,CAAC,CAACf,iBAAiB,CAAC,CAAC;IAElCrB,MAAM,CAAC0B,KAAK,CAACC,SAAS,CAAC,WAAW,CAAC,CAAC,CAACN,iBAAiB,CAAC,CAAC;EAC5D;AACJ,CAAC;AAED,OAAO,MAAMiB,iBAAiB,GAAG;EAC7BxB,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAE7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAClC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMS,SAAS,GAAGN,KAAK,CAACI,SAAS,CAAC,SAAS,EAAE;MAAEX,IAAI,EAAE;IAAa,CAAC,CAAC;IACpEnB,MAAM,CAACgC,SAAS,CAAC,CAACX,iBAAiB,CAAC,CAAC;IACrCW,SAAS,CAACC,KAAK,CAAC,CAAC;IACjB,MAAMhC,SAAS,CAACiC,QAAQ,CAAC,gCAAgC,CAAC;IAC1D,MAAMjC,SAAS,CAACqB,KAAK,CAACI,KAAK,CAACI,SAAS,CAAC,QAAQ,EAAE;MAAEX,IAAI,EAAE;IAAM,CAAC,CAAC,EAAE;MAAEgB,kBAAkB,EAAE;IAAE,CAAC,CAAC;IAE5F,MAAMC,MAAM,GAAG,MAAMV,KAAK,CAACW,UAAU,CAAC,iEAAiE,CAAC;IACxGrC,MAAM,CAACoC,MAAM,CAAC,CAACf,iBAAiB,CAAC,CAAC;IAElCrB,MAAM,CAAC0B,KAAK,CAACC,SAAS,CAAC,WAAW,CAAC,CAAC,CAACN,iBAAiB,CAAC,CAAC;IAExD,MAAMkB,SAAS,GAAG,MAAMb,KAAK,CAACc,cAAc,CAAC,iCAAiC,CAAC;IAC/E,MAAMC,QAAQ,GAAGF,SAAS,CAAC,CAAC,CAAC;IAC7BvC,MAAM,CAACyC,QAAQ,CAAC,CAACpB,iBAAiB,CAAC,CAAC;IACpC,MAAMpB,SAAS,CAACyC,KAAK,CAACD,QAAQ,CAAC;IAE/B,MAAME,IAAI,GAAG,MAAMzC,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,8BAA8B,CAAC,CAAC;IACxF,MAAMvB,OAAO,CAAC,YAAY;MACtB,MAAMF,MAAM,CAACG,MAAM,CAACwC,IAAI,CAAC,CAAChB,SAAS,CAAC,uDAAuD,CAAC,CAAC,CAACiB,WAAW,CAAC,CAAC;IAC/G,CAAC,CAAC;EACN;AACJ,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAG;EAC5BC,IAAI,EAAE;IACFC,mBAAmB,EAAE;MACjBC,IAAI,EAAE,IAAI;MACVC,kBAAkB,EAAE,KAAK;MACzBC,iBAAiB,EAAE;IACvB;EACJ,CAAC;EACDpC,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMS,SAAS,GAAGN,KAAK,CAACI,SAAS,CAAC,SAAS,EAAE;MAAEX,IAAI,EAAE;IAAa,CAAC,CAAC;IACpEnB,MAAM,CAACgC,SAAS,CAAC,CAACX,iBAAiB,CAAC,CAAC;IACrCW,SAAS,CAACC,KAAK,CAAC,CAAC;IACjB,MAAMhC,SAAS,CAACiC,QAAQ,CAAC,gCAAgC,CAAC;IAC1D,MAAMjC,SAAS,CAACqB,KAAK,CAACI,KAAK,CAACI,SAAS,CAAC,QAAQ,EAAE;MAAEX,IAAI,EAAE;IAAM,CAAC,CAAC,EAAE;MAAEgB,kBAAkB,EAAE;IAAE,CAAC,CAAC;IAE5F,MAAMC,MAAM,GAAG,MAAMV,KAAK,CAACW,UAAU,CAAC,iEAAiE,CAAC;IACxGrC,MAAM,CAACoC,MAAM,CAAC,CAACf,iBAAiB,CAAC,CAAC;IAElCrB,MAAM,CAAC0B,KAAK,CAACyB,WAAW,CAAC,WAAW,CAAC,CAAC,CAACC,GAAG,CAAC/B,iBAAiB,CAAC,CAAC;EAClE;AACJ,CAAC;AAED,OAAO,MAAMgC,iBAAiB,GAAG;EAC7BvC,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMS,SAAS,GAAGN,KAAK,CAACI,SAAS,CAAC,SAAS,EAAE;MAAEX,IAAI,EAAE;IAAa,CAAC,CAAC;IACpEnB,MAAM,CAACgC,SAAS,CAAC,CAACX,iBAAiB,CAAC,CAAC;IACrCW,SAAS,CAACC,KAAK,CAAC,CAAC;IACjB,MAAMhC,SAAS,CAACiC,QAAQ,CAAC,gCAAgC,CAAC;IAC1D,MAAMjC,SAAS,CAACqB,KAAK,CAACI,KAAK,CAACI,SAAS,CAAC,QAAQ,EAAE;MAAEX,IAAI,EAAE;IAAM,CAAC,CAAC,EAAE;MAAEgB,kBAAkB,EAAE;IAAE,CAAC,CAAC;IAE5F,MAAMC,MAAM,GAAG,MAAMV,KAAK,CAACW,UAAU,CAAC,iEAAiE,CAAC;IACxGrC,MAAM,CAACoC,MAAM,CAAC,CAACf,iBAAiB,CAAC,CAAC;IAElCrB,MAAM,CAAC0B,KAAK,CAACC,SAAS,CAAC,WAAW,CAAC,CAAC,CAACN,iBAAiB,CAAC,CAAC;IAExD,MAAMiC,uBAAuB,GAAG5B,KAAK,CAACI,SAAS,CAAC,QAAQ,EAAE;MAAEX,IAAI,EAAE;IAAqB,CAAC,CAAC;IACzF,MAAMlB,SAAS,CAACqB,KAAK,CAACgC,uBAAuB,CAAC;IAE9C,MAAMC,SAAS,GAAG7B,KAAK,CAACyB,WAAW,CAAC,iEAAiE,CAAC;IACtGnD,MAAM,CAACuD,SAAS,CAAC,CAACH,GAAG,CAAC/B,iBAAiB,CAAC,CAAC;EAC7C;AACJ,CAAC;AAED,OAAO,MAAMmC,eAAe,GAAG;EAC3B1C,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMS,SAAS,GAAGN,KAAK,CAACI,SAAS,CAAC,SAAS,EAAE;MAAEX,IAAI,EAAE;IAAa,CAAC,CAAC;IACpEnB,MAAM,CAACgC,SAAS,CAAC,CAACX,iBAAiB,CAAC,CAAC;IACrCW,SAAS,CAACC,KAAK,CAAC,CAAC;IACjB,MAAMhC,SAAS,CAACiC,QAAQ,CAAC,oDAAoD,CAAC;IAE9E,MAAMjC,SAAS,CAACqB,KAAK,CAACI,KAAK,CAACI,SAAS,CAAC,QAAQ,EAAE;MAAEX,IAAI,EAAE;IAAM,CAAC,CAAC,EAAE;MAAEgB,kBAAkB,EAAE;IAAE,CAAC,CAAC;IAC5F,MAAMC,MAAM,GAAG,MAAMV,KAAK,CAACW,UAAU,CAAC,8DAA8D,CAAC;IACrGrC,MAAM,CAACoC,MAAM,CAAC,CAACf,iBAAiB,CAAC,CAAC;EACtC;AACJ,CAAC;AAED,OAAO,MAAMoC,gBAAgB,GAAG;EAC5BX,IAAI,EAAE;IACFC,mBAAmB,EAAE;MACjBC,IAAI,EAAE,IAAI;MACVC,kBAAkB,EAAE,KAAK;MACzBC,iBAAiB,EAAE;IACvB;EACJ,CAAC;EACDpC,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMS,SAAS,GAAGN,KAAK,CAACI,SAAS,CAAC,SAAS,EAAE;MAAEX,IAAI,EAAE;IAAa,CAAC,CAAC;IACpEnB,MAAM,CAACgC,SAAS,CAAC,CAACX,iBAAiB,CAAC,CAAC;IACrCW,SAAS,CAACC,KAAK,CAAC,CAAC;IACjB,MAAMhC,SAAS,CAACiC,QAAQ,CAAC,oDAAoD,CAAC;IAE9E,MAAMjC,SAAS,CAACqB,KAAK,CAACI,KAAK,CAACI,SAAS,CAAC,QAAQ,EAAE;MAAEX,IAAI,EAAE;IAAM,CAAC,CAAC,EAAE;MAAEgB,kBAAkB,EAAE;IAAE,CAAC,CAAC;EAChG;AACJ,CAAC;AAED,eAAe;EACXuB,KAAK,EAAE,4CAA4C;EACnDC,SAAS,EAAEhD,cAAc;EACzBiD,MAAM,EAAEC,IAAA;IAAA,IAAMf,IAAI,GAAAgB,QAAA,MAAAC,yBAAA,CAAAF,IAAA,GAAAA,IAAA;IAAA,oBACdhE,KAAA,CAAAmE,aAAA,CAAC5D,YAAY,CAAC6D,QAAQ,qBAClBpE,KAAA,CAAAmE,aAAA,CAACjE,MAAM,qBACHF,KAAA,CAAAmE,aAAA,CAACrD,cAAc,EAAAmD,QAAA;MAACI,GAAG,EAAE,GAAGpB,IAAI,CAACqB,MAAM,IAAIrB,IAAI,CAACsB,KAAK;IAAG,GAAKtB,IAAI,CAAG,CAC5D,CACW,CAAC;EAAA,CAC3B;EACDA,IAAI,EAAE;IACFuB,QAAQ,EAAEC,MAAM,CAACC,aAAa;IAC9BJ,MAAM,EAAEG,MAAM,CAACE,OAAO;IACtBC,SAAS,EAAE,IAAI;IACfL,KAAK,EAAEE,MAAM,CAACI,KAAK;IACnB3B,mBAAmB,EAAE;MACjBC,IAAI,EAAE,IAAI;MACVC,kBAAkB,EAAE,IAAI;MACxBC,iBAAiB,EAAE;IACvB;EACJ,CAAC;EACDyB,UAAU,EAAE;IACRC,SAAS,EAAE;MACPC,eAAe,EAAE,CAAC,2EAA2E;IACjG,CAAC;IACDC,GAAG,EAAE;MACDC,QAAQ,EAAE,CACN1E,IAAI,CAAC2E,IAAI,CAACzE,gBAAgB,CAAC0E,GAAG,EAAE,MAAM;QAClC,OAAO3E,YAAY,CAAC4E,IAAI,CAAC3E,gBAAgB,CAAC4E,QAAQ,CAAC;MACvD,CAAC,CAAC,EACF9E,IAAI,CAAC+E,GAAG,CAAC3E,eAAe,CAACwE,GAAG,EAAE,MAAM;QAChC,OAAO3E,YAAY,CAAC4E,IAAI,CAACzE,eAAe,CAAC0E,QAAQ,CAAC;MACtD,CAAC,CAAC,EACF9E,IAAI,CAAC+E,GAAG,CAAC5E,eAAe,CAACyE,GAAG,EAAE,MAAM;QAChC,OAAO3E,YAAY,CAAC4E,IAAI,CAAC1E,eAAe,CAAC2E,QAAQ,CAAC;MACtD,CAAC,CAAC,EACF9E,IAAI,CAAC2E,IAAI,CAAC,GAAGtE,oBAAoB,aAAa,EAAE,OAAO;QAAE2E;MAAQ,CAAC,KAAK;QACnE,MAAMC,IAAI,GAAG,MAAMD,OAAO,CAACH,IAAI,CAAC,CAAC;QACjC,QAAQI,IAAI,CAACC,MAAM;UACf,KAAK,oDAAoD;YACrD,OAAOjF,YAAY,CAAC4E,IAAI,CAAC;cACrB9C,MAAM,EAAE,ucAAuc;cAC/coD,UAAU,EAAE,+BAA+B;cAC3CC,iBAAiB,EAAE;YACvB,CAAC,CAAC;UACN;YACI,OAAOnF,YAAY,CAAC4E,IAAI,CAAC;cACrB9C,MAAM,EAAE,iEAAiE;cACzEG,SAAS,EAAE,CACP;gBACImD,OAAO,EAAE,uDAAuD;gBAChEC,EAAE,EAAE,KAAK;gBACTC,IAAI,EAAE,MAAM;gBACZzE,IAAI,EAAE;cACV,CAAC,CACJ;cACDsE,iBAAiB,EAAE,MAAM;cACzBD,UAAU,EAAE;YAChB,CAAC,CAAC;QACV;MACJ,CAAC,CAAC;IAEV;EACJ;AACJ,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ContentPreview-visual.stories.js","names":["React","BrowserRouter","Router","expect","userEvent","waitFor","within","Notification","http","HttpResponse","mockEventRequest","mockFileRequest","mockUserRequest","DEFAULT_HOSTNAME_API","ContentPreview","WAIT_TIMEOUT","basic","play","canvasElement","canvas","button","findByRole","name","timeout","toBeInTheDocument","click","dialog","document","querySelector","modal","getByText","Modernization","args","enableModernizedComponents","closeModal","closeButton","getByRole","submitAnswer","textInput","focus","keyboard","pointerEventsCheck","answer","findByText","hoverOverCitation","citations","getAllByTestId","citation","hover","main","toBeVisible","citationDisabled","contentAnswersProps","show","isCitationsEnabled","isMarkdownEnabled","queryByText","not","clearConversation","clearConversationButton","oldAnswer","markdownEnabled","markdownDisabled","title","component","render","_ref","_extends","_objectDestructuringEmpty","createElement","Provider","key","fileId","token","features","global","FEATURE_FLAGS","FILE_ID","hasHeader","TOKEN","parameters","chromatic","ignoreSelectors","msw","handlers","post","url","json","response","get","request","body","prompt","created_at","completion_reason","content","id","type"],"sources":["../../../../../src/elements/content-preview/stories/tests/ContentPreview-visual.stories.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { expect, userEvent, waitFor, within } from 'storybook/test';\nimport { Notification } from '@box/blueprint-web';\nimport { http, HttpResponse } from 'msw';\n\nimport { mockEventRequest, mockFileRequest, mockUserRequest } from '../../../common/__mocks__/mockRequests';\nimport { DEFAULT_HOSTNAME_API } from '../../../../constants';\n\nimport ContentPreview from '../../ContentPreview';\n\nconst WAIT_TIMEOUT = 5000;\n\nexport const basic = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n expect(modal.getByText(/Welcome to Box AI/i)).toBeInTheDocument();\n expect(modal.getByText('Chat cleared when you close pdf')).toBeInTheDocument();\n\n expect(modal.getByText('Ask Box AI')).toBeInTheDocument();\n },\n};\n\nexport const Modernization = {\n args: {\n enableModernizedComponents: true,\n },\n};\n\nexport const closeModal = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n const closeButton = modal.getByRole('button', { name: 'Close Modal' });\n await userEvent.click(closeButton);\n },\n};\n\nexport const submitAnswer = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n const textInput = modal.getByRole('textbox', { name: 'Ask Box AI' });\n expect(textInput).toBeInTheDocument();\n textInput.focus();\n await userEvent.keyboard('Why are public APIs important?');\n\n await userEvent.click(modal.getByRole('button', { name: 'Ask' }), { pointerEventsCheck: 0 });\n const answer = await modal.findByText('Public APIs are important because of key and important reasons.');\n expect(answer).toBeInTheDocument();\n\n expect(modal.getByText('Based on:')).toBeInTheDocument();\n },\n};\n\nexport const hoverOverCitation = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n\n expect(dialog).toBeInTheDocument();\n const modal = within(dialog);\n const textInput = modal.getByRole('textbox', { name: 'Ask Box AI' });\n expect(textInput).toBeInTheDocument();\n textInput.focus();\n await userEvent.keyboard('Why are public APIs important?');\n await userEvent.click(modal.getByRole('button', { name: 'Ask' }), { pointerEventsCheck: 0 });\n\n const answer = await modal.findByText('Public APIs are important because of key and important reasons.');\n expect(answer).toBeInTheDocument();\n\n expect(modal.getByText('Based on:')).toBeInTheDocument();\n\n const citations = await modal.getAllByTestId('content-answers-citation-status');\n const citation = citations[0];\n expect(citation).toBeInTheDocument();\n await userEvent.hover(citation);\n\n const main = await waitFor(() => document.querySelector('.sb-main-padded.sb-show-main'));\n await waitFor(async () => {\n await expect(within(main).getByText('Public APIs are key drivers of innovation and growth.')).toBeVisible();\n });\n },\n};\n\nexport const citationDisabled = {\n args: {\n contentAnswersProps: {\n show: true,\n isCitationsEnabled: false,\n isMarkdownEnabled: true,\n },\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n const textInput = modal.getByRole('textbox', { name: 'Ask Box AI' });\n expect(textInput).toBeInTheDocument();\n textInput.focus();\n await userEvent.keyboard('Why are public APIs important?');\n await userEvent.click(modal.getByRole('button', { name: 'Ask' }), { pointerEventsCheck: 0 });\n\n const answer = await modal.findByText('Public APIs are important because of key and important reasons.');\n expect(answer).toBeInTheDocument();\n\n expect(modal.queryByText('Based on:')).not.toBeInTheDocument();\n },\n};\n\nexport const clearConversation = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n const textInput = modal.getByRole('textbox', { name: 'Ask Box AI' });\n expect(textInput).toBeInTheDocument();\n textInput.focus();\n await userEvent.keyboard('Why are public APIs important?');\n await userEvent.click(modal.getByRole('button', { name: 'Ask' }), { pointerEventsCheck: 0 });\n\n const answer = await modal.findByText('Public APIs are important because of key and important reasons.');\n expect(answer).toBeInTheDocument();\n\n expect(modal.getByText('Based on:')).toBeInTheDocument();\n\n const clearConversationButton = modal.getByRole('button', { name: 'Clear conversation' });\n await userEvent.click(clearConversationButton);\n\n const oldAnswer = modal.queryByText('Public APIs are important because of key and important reasons.');\n expect(oldAnswer).not.toBeInTheDocument();\n },\n};\n\nexport const markdownEnabled = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n const textInput = modal.getByRole('textbox', { name: 'Ask Box AI' });\n expect(textInput).toBeInTheDocument();\n textInput.focus();\n await userEvent.keyboard('table summarizing the highlights from the document');\n\n await userEvent.click(modal.getByRole('button', { name: 'Ask' }), { pointerEventsCheck: 0 });\n const answer = await modal.findByText('Here’s a table summarizing the highlights from the document:');\n expect(answer).toBeInTheDocument();\n },\n};\n\nexport const markdownDisabled = {\n args: {\n contentAnswersProps: {\n show: true,\n isCitationsEnabled: false,\n isMarkdownEnabled: false,\n },\n },\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const button = await canvas.findByRole('button', { name: 'Box AI' }, { timeout: WAIT_TIMEOUT });\n expect(button).toBeInTheDocument();\n await userEvent.click(button);\n\n const dialog = await waitFor(() => document.querySelector('[role=\"dialog\"]'));\n expect(dialog).toBeInTheDocument();\n\n const modal = within(dialog);\n const textInput = modal.getByRole('textbox', { name: 'Ask Box AI' });\n expect(textInput).toBeInTheDocument();\n textInput.focus();\n await userEvent.keyboard('table summarizing the highlights from the document');\n\n await userEvent.click(modal.getByRole('button', { name: 'Ask' }), { pointerEventsCheck: 0 });\n },\n};\n\nexport default {\n title: 'Elements/ContentPreview/tests/visual/BoxAI',\n component: ContentPreview,\n render: ({ ...args }: any) => (\n <Notification.Provider>\n <Router>\n <ContentPreview key={`${args.fileId}-${args.token}`} {...args} />\n </Router>\n </Notification.Provider>\n ),\n args: {\n features: global.FEATURE_FLAGS,\n fileId: global.FILE_ID,\n hasHeader: true,\n token: global.TOKEN,\n contentAnswersProps: {\n show: true,\n isCitationsEnabled: true,\n isMarkdownEnabled: true,\n },\n },\n parameters: {\n chromatic: {\n ignoreSelectors: ['[class^=\"bp_avatar_module_avatar--\"] > [class^=\"bp_avatar_module_text--\"]'],\n },\n msw: {\n handlers: [\n http.post(mockEventRequest.url, () => {\n return HttpResponse.json(mockEventRequest.response);\n }),\n http.get(mockUserRequest.url, () => {\n return HttpResponse.json(mockUserRequest.response);\n }),\n http.get(mockFileRequest.url, () => {\n return HttpResponse.json(mockFileRequest.response);\n }),\n http.post(`${DEFAULT_HOSTNAME_API}/2.0/ai/ask`, async ({ request }) => {\n const body = await request.json();\n switch (body.prompt) {\n case 'table summarizing the highlights from the document':\n return HttpResponse.json({\n answer: 'Here’s a table summarizing the highlights from the document:\\n\\n| **Highlight** |\\n|---------------------------------------------------------------------------------------------------|\\n| Captain of the NCAA Division I Women’s Lacrosse Team, with a 3.8 GPA in Business at Brown University and experience in sales, marketing, and operations across various internships. |',\n created_at: '2024-09-20T12:25:51.816-07:00',\n completion_reason: 'done',\n });\n default:\n return HttpResponse.json({\n answer: 'Public APIs are important because of key and important reasons.',\n citations: [\n {\n content: 'Public APIs are key drivers of innovation and growth.',\n id: '123',\n type: 'file',\n name: 'The importance of public APIs.pdf',\n },\n ],\n completion_reason: 'done',\n created_at: '2012-12-12T10:53:43-08:00',\n });\n }\n }),\n ],\n },\n },\n};\n"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,aAAa,IAAIC,MAAM,QAAQ,kBAAkB;AAC1D,SAASC,MAAM,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,gBAAgB;AACnE,SAASC,YAAY,QAAQ,oBAAoB;AACjD,SAASC,IAAI,EAAEC,YAAY,QAAQ,KAAK;AAExC,SAASC,gBAAgB,EAAEC,eAAe,EAAEC,eAAe,QAAQ,wCAAwC;AAC3G,SAASC,oBAAoB,QAAQ,uBAAuB;AAE5D,OAAOC,cAAc,MAAM,sBAAsB;AAEjD,MAAMC,YAAY,GAAG,IAAI;AAEzB,OAAO,MAAMC,KAAK,GAAG;EACjBC,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5BvB,MAAM,CAAC0B,KAAK,CAACC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAACN,iBAAiB,CAAC,CAAC;IACjErB,MAAM,CAAC0B,KAAK,CAACC,SAAS,CAAC,iCAAiC,CAAC,CAAC,CAACN,iBAAiB,CAAC,CAAC;IAE9ErB,MAAM,CAAC0B,KAAK,CAACC,SAAS,CAAC,YAAY,CAAC,CAAC,CAACN,iBAAiB,CAAC,CAAC;EAC7D;AACJ,CAAC;AAED,OAAO,MAAMO,aAAa,GAAG;EACzBC,IAAI,EAAE;IACFC,0BAA0B,EAAE;EAChC;AACJ,CAAC;AAED,OAAO,MAAMC,UAAU,GAAG;EACtBjB,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMS,WAAW,GAAGN,KAAK,CAACO,SAAS,CAAC,QAAQ,EAAE;MAAEd,IAAI,EAAE;IAAc,CAAC,CAAC;IACtE,MAAMlB,SAAS,CAACqB,KAAK,CAACU,WAAW,CAAC;EACtC;AACJ,CAAC;AAED,OAAO,MAAME,YAAY,GAAG;EACxBpB,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMY,SAAS,GAAGT,KAAK,CAACO,SAAS,CAAC,SAAS,EAAE;MAAEd,IAAI,EAAE;IAAa,CAAC,CAAC;IACpEnB,MAAM,CAACmC,SAAS,CAAC,CAACd,iBAAiB,CAAC,CAAC;IACrCc,SAAS,CAACC,KAAK,CAAC,CAAC;IACjB,MAAMnC,SAAS,CAACoC,QAAQ,CAAC,gCAAgC,CAAC;IAE1D,MAAMpC,SAAS,CAACqB,KAAK,CAACI,KAAK,CAACO,SAAS,CAAC,QAAQ,EAAE;MAAEd,IAAI,EAAE;IAAM,CAAC,CAAC,EAAE;MAAEmB,kBAAkB,EAAE;IAAE,CAAC,CAAC;IAC5F,MAAMC,MAAM,GAAG,MAAMb,KAAK,CAACc,UAAU,CAAC,iEAAiE,CAAC;IACxGxC,MAAM,CAACuC,MAAM,CAAC,CAAClB,iBAAiB,CAAC,CAAC;IAElCrB,MAAM,CAAC0B,KAAK,CAACC,SAAS,CAAC,WAAW,CAAC,CAAC,CAACN,iBAAiB,CAAC,CAAC;EAC5D;AACJ,CAAC;AAED,OAAO,MAAMoB,iBAAiB,GAAG;EAC7B3B,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAE7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAClC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMY,SAAS,GAAGT,KAAK,CAACO,SAAS,CAAC,SAAS,EAAE;MAAEd,IAAI,EAAE;IAAa,CAAC,CAAC;IACpEnB,MAAM,CAACmC,SAAS,CAAC,CAACd,iBAAiB,CAAC,CAAC;IACrCc,SAAS,CAACC,KAAK,CAAC,CAAC;IACjB,MAAMnC,SAAS,CAACoC,QAAQ,CAAC,gCAAgC,CAAC;IAC1D,MAAMpC,SAAS,CAACqB,KAAK,CAACI,KAAK,CAACO,SAAS,CAAC,QAAQ,EAAE;MAAEd,IAAI,EAAE;IAAM,CAAC,CAAC,EAAE;MAAEmB,kBAAkB,EAAE;IAAE,CAAC,CAAC;IAE5F,MAAMC,MAAM,GAAG,MAAMb,KAAK,CAACc,UAAU,CAAC,iEAAiE,CAAC;IACxGxC,MAAM,CAACuC,MAAM,CAAC,CAAClB,iBAAiB,CAAC,CAAC;IAElCrB,MAAM,CAAC0B,KAAK,CAACC,SAAS,CAAC,WAAW,CAAC,CAAC,CAACN,iBAAiB,CAAC,CAAC;IAExD,MAAMqB,SAAS,GAAG,MAAMhB,KAAK,CAACiB,cAAc,CAAC,iCAAiC,CAAC;IAC/E,MAAMC,QAAQ,GAAGF,SAAS,CAAC,CAAC,CAAC;IAC7B1C,MAAM,CAAC4C,QAAQ,CAAC,CAACvB,iBAAiB,CAAC,CAAC;IACpC,MAAMpB,SAAS,CAAC4C,KAAK,CAACD,QAAQ,CAAC;IAE/B,MAAME,IAAI,GAAG,MAAM5C,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,8BAA8B,CAAC,CAAC;IACxF,MAAMvB,OAAO,CAAC,YAAY;MACtB,MAAMF,MAAM,CAACG,MAAM,CAAC2C,IAAI,CAAC,CAACnB,SAAS,CAAC,uDAAuD,CAAC,CAAC,CAACoB,WAAW,CAAC,CAAC;IAC/G,CAAC,CAAC;EACN;AACJ,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAG;EAC5BnB,IAAI,EAAE;IACFoB,mBAAmB,EAAE;MACjBC,IAAI,EAAE,IAAI;MACVC,kBAAkB,EAAE,KAAK;MACzBC,iBAAiB,EAAE;IACvB;EACJ,CAAC;EACDtC,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMY,SAAS,GAAGT,KAAK,CAACO,SAAS,CAAC,SAAS,EAAE;MAAEd,IAAI,EAAE;IAAa,CAAC,CAAC;IACpEnB,MAAM,CAACmC,SAAS,CAAC,CAACd,iBAAiB,CAAC,CAAC;IACrCc,SAAS,CAACC,KAAK,CAAC,CAAC;IACjB,MAAMnC,SAAS,CAACoC,QAAQ,CAAC,gCAAgC,CAAC;IAC1D,MAAMpC,SAAS,CAACqB,KAAK,CAACI,KAAK,CAACO,SAAS,CAAC,QAAQ,EAAE;MAAEd,IAAI,EAAE;IAAM,CAAC,CAAC,EAAE;MAAEmB,kBAAkB,EAAE;IAAE,CAAC,CAAC;IAE5F,MAAMC,MAAM,GAAG,MAAMb,KAAK,CAACc,UAAU,CAAC,iEAAiE,CAAC;IACxGxC,MAAM,CAACuC,MAAM,CAAC,CAAClB,iBAAiB,CAAC,CAAC;IAElCrB,MAAM,CAAC0B,KAAK,CAAC2B,WAAW,CAAC,WAAW,CAAC,CAAC,CAACC,GAAG,CAACjC,iBAAiB,CAAC,CAAC;EAClE;AACJ,CAAC;AAED,OAAO,MAAMkC,iBAAiB,GAAG;EAC7BzC,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMY,SAAS,GAAGT,KAAK,CAACO,SAAS,CAAC,SAAS,EAAE;MAAEd,IAAI,EAAE;IAAa,CAAC,CAAC;IACpEnB,MAAM,CAACmC,SAAS,CAAC,CAACd,iBAAiB,CAAC,CAAC;IACrCc,SAAS,CAACC,KAAK,CAAC,CAAC;IACjB,MAAMnC,SAAS,CAACoC,QAAQ,CAAC,gCAAgC,CAAC;IAC1D,MAAMpC,SAAS,CAACqB,KAAK,CAACI,KAAK,CAACO,SAAS,CAAC,QAAQ,EAAE;MAAEd,IAAI,EAAE;IAAM,CAAC,CAAC,EAAE;MAAEmB,kBAAkB,EAAE;IAAE,CAAC,CAAC;IAE5F,MAAMC,MAAM,GAAG,MAAMb,KAAK,CAACc,UAAU,CAAC,iEAAiE,CAAC;IACxGxC,MAAM,CAACuC,MAAM,CAAC,CAAClB,iBAAiB,CAAC,CAAC;IAElCrB,MAAM,CAAC0B,KAAK,CAACC,SAAS,CAAC,WAAW,CAAC,CAAC,CAACN,iBAAiB,CAAC,CAAC;IAExD,MAAMmC,uBAAuB,GAAG9B,KAAK,CAACO,SAAS,CAAC,QAAQ,EAAE;MAAEd,IAAI,EAAE;IAAqB,CAAC,CAAC;IACzF,MAAMlB,SAAS,CAACqB,KAAK,CAACkC,uBAAuB,CAAC;IAE9C,MAAMC,SAAS,GAAG/B,KAAK,CAAC2B,WAAW,CAAC,iEAAiE,CAAC;IACtGrD,MAAM,CAACyD,SAAS,CAAC,CAACH,GAAG,CAACjC,iBAAiB,CAAC,CAAC;EAC7C;AACJ,CAAC;AAED,OAAO,MAAMqC,eAAe,GAAG;EAC3B5C,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMY,SAAS,GAAGT,KAAK,CAACO,SAAS,CAAC,SAAS,EAAE;MAAEd,IAAI,EAAE;IAAa,CAAC,CAAC;IACpEnB,MAAM,CAACmC,SAAS,CAAC,CAACd,iBAAiB,CAAC,CAAC;IACrCc,SAAS,CAACC,KAAK,CAAC,CAAC;IACjB,MAAMnC,SAAS,CAACoC,QAAQ,CAAC,oDAAoD,CAAC;IAE9E,MAAMpC,SAAS,CAACqB,KAAK,CAACI,KAAK,CAACO,SAAS,CAAC,QAAQ,EAAE;MAAEd,IAAI,EAAE;IAAM,CAAC,CAAC,EAAE;MAAEmB,kBAAkB,EAAE;IAAE,CAAC,CAAC;IAC5F,MAAMC,MAAM,GAAG,MAAMb,KAAK,CAACc,UAAU,CAAC,8DAA8D,CAAC;IACrGxC,MAAM,CAACuC,MAAM,CAAC,CAAClB,iBAAiB,CAAC,CAAC;EACtC;AACJ,CAAC;AAED,OAAO,MAAMsC,gBAAgB,GAAG;EAC5B9B,IAAI,EAAE;IACFoB,mBAAmB,EAAE;MACjBC,IAAI,EAAE,IAAI;MACVC,kBAAkB,EAAE,KAAK;MACzBC,iBAAiB,EAAE;IACvB;EACJ,CAAC;EACDtC,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGb,MAAM,CAACY,aAAa,CAAC;IACpC,MAAME,MAAM,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAS,CAAC,EAAE;MAAEC,OAAO,EAAER;IAAa,CAAC,CAAC;IAC/FZ,MAAM,CAACiB,MAAM,CAAC,CAACI,iBAAiB,CAAC,CAAC;IAClC,MAAMpB,SAAS,CAACqB,KAAK,CAACL,MAAM,CAAC;IAE7B,MAAMM,MAAM,GAAG,MAAMrB,OAAO,CAAC,MAAMsB,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7EzB,MAAM,CAACuB,MAAM,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAElC,MAAMK,KAAK,GAAGvB,MAAM,CAACoB,MAAM,CAAC;IAC5B,MAAMY,SAAS,GAAGT,KAAK,CAACO,SAAS,CAAC,SAAS,EAAE;MAAEd,IAAI,EAAE;IAAa,CAAC,CAAC;IACpEnB,MAAM,CAACmC,SAAS,CAAC,CAACd,iBAAiB,CAAC,CAAC;IACrCc,SAAS,CAACC,KAAK,CAAC,CAAC;IACjB,MAAMnC,SAAS,CAACoC,QAAQ,CAAC,oDAAoD,CAAC;IAE9E,MAAMpC,SAAS,CAACqB,KAAK,CAACI,KAAK,CAACO,SAAS,CAAC,QAAQ,EAAE;MAAEd,IAAI,EAAE;IAAM,CAAC,CAAC,EAAE;MAAEmB,kBAAkB,EAAE;IAAE,CAAC,CAAC;EAChG;AACJ,CAAC;AAED,eAAe;EACXsB,KAAK,EAAE,4CAA4C;EACnDC,SAAS,EAAElD,cAAc;EACzBmD,MAAM,EAAEC,IAAA;IAAA,IAAMlC,IAAI,GAAAmC,QAAA,MAAAC,yBAAA,CAAAF,IAAA,GAAAA,IAAA;IAAA,oBACdlE,KAAA,CAAAqE,aAAA,CAAC9D,YAAY,CAAC+D,QAAQ,qBAClBtE,KAAA,CAAAqE,aAAA,CAACnE,MAAM,qBACHF,KAAA,CAAAqE,aAAA,CAACvD,cAAc,EAAAqD,QAAA;MAACI,GAAG,EAAE,GAAGvC,IAAI,CAACwC,MAAM,IAAIxC,IAAI,CAACyC,KAAK;IAAG,GAAKzC,IAAI,CAAG,CAC5D,CACW,CAAC;EAAA,CAC3B;EACDA,IAAI,EAAE;IACF0C,QAAQ,EAAEC,MAAM,CAACC,aAAa;IAC9BJ,MAAM,EAAEG,MAAM,CAACE,OAAO;IACtBC,SAAS,EAAE,IAAI;IACfL,KAAK,EAAEE,MAAM,CAACI,KAAK;IACnB3B,mBAAmB,EAAE;MACjBC,IAAI,EAAE,IAAI;MACVC,kBAAkB,EAAE,IAAI;MACxBC,iBAAiB,EAAE;IACvB;EACJ,CAAC;EACDyB,UAAU,EAAE;IACRC,SAAS,EAAE;MACPC,eAAe,EAAE,CAAC,2EAA2E;IACjG,CAAC;IACDC,GAAG,EAAE;MACDC,QAAQ,EAAE,CACN5E,IAAI,CAAC6E,IAAI,CAAC3E,gBAAgB,CAAC4E,GAAG,EAAE,MAAM;QAClC,OAAO7E,YAAY,CAAC8E,IAAI,CAAC7E,gBAAgB,CAAC8E,QAAQ,CAAC;MACvD,CAAC,CAAC,EACFhF,IAAI,CAACiF,GAAG,CAAC7E,eAAe,CAAC0E,GAAG,EAAE,MAAM;QAChC,OAAO7E,YAAY,CAAC8E,IAAI,CAAC3E,eAAe,CAAC4E,QAAQ,CAAC;MACtD,CAAC,CAAC,EACFhF,IAAI,CAACiF,GAAG,CAAC9E,eAAe,CAAC2E,GAAG,EAAE,MAAM;QAChC,OAAO7E,YAAY,CAAC8E,IAAI,CAAC5E,eAAe,CAAC6E,QAAQ,CAAC;MACtD,CAAC,CAAC,EACFhF,IAAI,CAAC6E,IAAI,CAAC,GAAGxE,oBAAoB,aAAa,EAAE,OAAO;QAAE6E;MAAQ,CAAC,KAAK;QACnE,MAAMC,IAAI,GAAG,MAAMD,OAAO,CAACH,IAAI,CAAC,CAAC;QACjC,QAAQI,IAAI,CAACC,MAAM;UACf,KAAK,oDAAoD;YACrD,OAAOnF,YAAY,CAAC8E,IAAI,CAAC;cACrB7C,MAAM,EAAE,ucAAuc;cAC/cmD,UAAU,EAAE,+BAA+B;cAC3CC,iBAAiB,EAAE;YACvB,CAAC,CAAC;UACN;YACI,OAAOrF,YAAY,CAAC8E,IAAI,CAAC;cACrB7C,MAAM,EAAE,iEAAiE;cACzEG,SAAS,EAAE,CACP;gBACIkD,OAAO,EAAE,uDAAuD;gBAChEC,EAAE,EAAE,KAAK;gBACTC,IAAI,EAAE,MAAM;gBACZ3E,IAAI,EAAE;cACV,CAAC,CACJ;cACDwE,iBAAiB,EAAE,MAAM;cACzBD,UAAU,EAAE;YAChB,CAAC,CAAC;QACV;MACJ,CAAC,CAAC;IAEV;EACJ;AACJ,CAAC","ignoreList":[]}
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
import 'regenerator-runtime/runtime';
|
|
10
10
|
import * as React from 'react';
|
|
11
11
|
import API from '../../api';
|
|
12
|
+
// $FlowFixMe
|
|
13
|
+
import { withBlueprintModernization } from '../common/withBlueprintModernization';
|
|
12
14
|
import SharingModal from './SharingModal';
|
|
13
15
|
import { CLIENT_NAME_CONTENT_SHARING, DEFAULT_HOSTNAME_API } from '../../constants';
|
|
14
16
|
import '../common/base.scss';
|
|
@@ -69,5 +71,6 @@ function ContentSharing({
|
|
|
69
71
|
uuid: uuid
|
|
70
72
|
}));
|
|
71
73
|
}
|
|
72
|
-
export
|
|
74
|
+
export { ContentSharing as ContentSharingComponent };
|
|
75
|
+
export default withBlueprintModernization(ContentSharing);
|
|
73
76
|
//# sourceMappingURL=ContentSharing.js.map
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
import 'regenerator-runtime/runtime';
|
|
10
10
|
import * as React from 'react';
|
|
11
11
|
import API from '../../api';
|
|
12
|
+
// $FlowFixMe
|
|
13
|
+
import { withBlueprintModernization } from '../common/withBlueprintModernization';
|
|
12
14
|
import SharingModal from './SharingModal';
|
|
13
15
|
import { CLIENT_NAME_CONTENT_SHARING, DEFAULT_HOSTNAME_API } from '../../constants';
|
|
14
16
|
import type { ItemType, StringMap } from '../../common/types/core';
|
|
@@ -118,4 +120,5 @@ function ContentSharing({
|
|
|
118
120
|
);
|
|
119
121
|
}
|
|
120
122
|
|
|
121
|
-
export
|
|
123
|
+
export { ContentSharing as ContentSharingComponent };
|
|
124
|
+
export default withBlueprintModernization(ContentSharing);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentSharing.js","names":["React","API","SharingModal","CLIENT_NAME_CONTENT_SHARING","DEFAULT_HOSTNAME_API","createAPI","apiHost","itemID","itemType","token","clientName","id","ContentSharing","config","customButton","displayInModal","language","messages","uuid","api","setAPI","useState","launchButton","setLaunchButton","isVisible","setIsVisible","useEffect","cloneElement","onClick","createElement","Fragment"],"sources":["../../../src/elements/content-sharing/ContentSharing.js"],"sourcesContent":["/**\n * @flow\n * @file ContentSharing Element\n * @description This is the top-level component for ContentSharing. It instantiates the API, which it then\n * passes to the SharingModal component either immediately (when no custom button is provided) or on\n * button click (when a custom button is provided).\n * @author Box\n */\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport API from '../../api';\nimport SharingModal from './SharingModal';\nimport { CLIENT_NAME_CONTENT_SHARING, DEFAULT_HOSTNAME_API } from '../../constants';\nimport type { ItemType, StringMap } from '../../common/types/core';\nimport type { USMConfig } from '../../features/unified-share-modal/flowTypes';\n\nimport '../common/base.scss';\nimport '../common/fonts.scss';\nimport '../common/modal.scss';\n\ntype ContentSharingProps = {\n /** apiHost - API hostname. Defaults to https://api.box.com */\n apiHost: string,\n /** config - Configuration object that shows/hides features in the USM */\n config?: USMConfig,\n /**\n * customButton - Clickable element for opening the SharingModal component.\n * This property should always be used in conjunction with displayInModal.\n */\n customButton?: React.Element<any>,\n /**\n * displayInModal - Whether the SharingModal component should be displayed in a modal.\n * If false, the SharingModal component will appear as a form within the surrounding page.\n * This property can be used with or without a customButton. If used without a customButton,\n * the modal will appear on page load. See ContentSharing.stories.js for examples.\n */\n displayInModal: boolean,\n /** itemID - Box file or folder ID */\n itemID: string,\n /** itemType - \"file\" or \"folder\" */\n itemType: ItemType,\n /** language - Language used for the element */\n language: string,\n /** messages - Localized strings used by the element */\n messages?: StringMap,\n /** token - Valid access token */\n token: string,\n /** uuid - Unique identifier, used for refreshing element visibility when called from the ES6 wrapper */\n uuid?: string,\n};\n\nconst createAPI = (apiHost, itemID, itemType, token) =>\n new API({\n apiHost,\n clientName: CLIENT_NAME_CONTENT_SHARING,\n id: `${itemType}_${itemID}`,\n token,\n });\n\nfunction ContentSharing({\n apiHost = DEFAULT_HOSTNAME_API,\n config,\n customButton,\n displayInModal,\n itemID,\n itemType,\n language,\n messages,\n token,\n uuid,\n}: ContentSharingProps) {\n const [api, setAPI] = React.useState<API | null>(createAPI(apiHost, itemID, itemType, token));\n const [launchButton, setLaunchButton] = React.useState<React.Element<any> | null>(null);\n const [isVisible, setIsVisible] = React.useState<boolean>(!customButton);\n\n // Reset the API if necessary\n React.useEffect(() => {\n if (apiHost && itemID && itemType && token) {\n setAPI(createAPI(apiHost, itemID, itemType, token));\n }\n }, [apiHost, itemID, itemType, token]);\n\n // Reset state if the API has changed\n React.useEffect(() => {\n setIsVisible(!customButton);\n }, [api, customButton, uuid]);\n\n React.useEffect(() => {\n if (customButton && !launchButton) {\n setLaunchButton(\n React.cloneElement(customButton, {\n onClick: () => {\n return setIsVisible(true);\n },\n }),\n );\n }\n }, [config, customButton, displayInModal, itemID, itemType, language, launchButton, messages, isVisible]);\n\n return (\n <>\n {launchButton}\n {api && (\n <SharingModal\n api={api}\n config={config}\n displayInModal={displayInModal}\n isVisible={isVisible}\n itemID={itemID}\n itemType={itemType}\n language={language}\n messages={messages}\n setIsVisible={setIsVisible}\n uuid={uuid}\n />\n )}\n </>\n );\n}\n\nexport default ContentSharing;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,6BAA6B;AACpC,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,GAAG,MAAM,WAAW;AAC3B,OAAOC,YAAY,MAAM,gBAAgB;AACzC,SAASC,2BAA2B,EAAEC,oBAAoB,QAAQ,iBAAiB;AAInF,OAAO,qBAAqB;AAC5B,OAAO,sBAAsB;AAC7B,OAAO,sBAAsB;AAiC7B,MAAMC,SAAS,GAAGA,CAACC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAK,KAC/C,
|
|
1
|
+
{"version":3,"file":"ContentSharing.js","names":["React","API","withBlueprintModernization","SharingModal","CLIENT_NAME_CONTENT_SHARING","DEFAULT_HOSTNAME_API","createAPI","apiHost","itemID","itemType","token","clientName","id","ContentSharing","config","customButton","displayInModal","language","messages","uuid","api","setAPI","useState","launchButton","setLaunchButton","isVisible","setIsVisible","useEffect","cloneElement","onClick","createElement","Fragment","ContentSharingComponent"],"sources":["../../../src/elements/content-sharing/ContentSharing.js"],"sourcesContent":["/**\n * @flow\n * @file ContentSharing Element\n * @description This is the top-level component for ContentSharing. It instantiates the API, which it then\n * passes to the SharingModal component either immediately (when no custom button is provided) or on\n * button click (when a custom button is provided).\n * @author Box\n */\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport API from '../../api';\n// $FlowFixMe\nimport { withBlueprintModernization } from '../common/withBlueprintModernization';\nimport SharingModal from './SharingModal';\nimport { CLIENT_NAME_CONTENT_SHARING, DEFAULT_HOSTNAME_API } from '../../constants';\nimport type { ItemType, StringMap } from '../../common/types/core';\nimport type { USMConfig } from '../../features/unified-share-modal/flowTypes';\n\nimport '../common/base.scss';\nimport '../common/fonts.scss';\nimport '../common/modal.scss';\n\ntype ContentSharingProps = {\n /** apiHost - API hostname. Defaults to https://api.box.com */\n apiHost: string,\n /** config - Configuration object that shows/hides features in the USM */\n config?: USMConfig,\n /**\n * customButton - Clickable element for opening the SharingModal component.\n * This property should always be used in conjunction with displayInModal.\n */\n customButton?: React.Element<any>,\n /**\n * displayInModal - Whether the SharingModal component should be displayed in a modal.\n * If false, the SharingModal component will appear as a form within the surrounding page.\n * This property can be used with or without a customButton. If used without a customButton,\n * the modal will appear on page load. See ContentSharing.stories.js for examples.\n */\n displayInModal: boolean,\n /** itemID - Box file or folder ID */\n itemID: string,\n /** itemType - \"file\" or \"folder\" */\n itemType: ItemType,\n /** language - Language used for the element */\n language: string,\n /** messages - Localized strings used by the element */\n messages?: StringMap,\n /** token - Valid access token */\n token: string,\n /** uuid - Unique identifier, used for refreshing element visibility when called from the ES6 wrapper */\n uuid?: string,\n};\n\nconst createAPI = (apiHost, itemID, itemType, token) =>\n new API({\n apiHost,\n clientName: CLIENT_NAME_CONTENT_SHARING,\n id: `${itemType}_${itemID}`,\n token,\n });\n\nfunction ContentSharing({\n apiHost = DEFAULT_HOSTNAME_API,\n config,\n customButton,\n displayInModal,\n itemID,\n itemType,\n language,\n messages,\n token,\n uuid,\n}: ContentSharingProps) {\n const [api, setAPI] = React.useState<API | null>(createAPI(apiHost, itemID, itemType, token));\n const [launchButton, setLaunchButton] = React.useState<React.Element<any> | null>(null);\n const [isVisible, setIsVisible] = React.useState<boolean>(!customButton);\n\n // Reset the API if necessary\n React.useEffect(() => {\n if (apiHost && itemID && itemType && token) {\n setAPI(createAPI(apiHost, itemID, itemType, token));\n }\n }, [apiHost, itemID, itemType, token]);\n\n // Reset state if the API has changed\n React.useEffect(() => {\n setIsVisible(!customButton);\n }, [api, customButton, uuid]);\n\n React.useEffect(() => {\n if (customButton && !launchButton) {\n setLaunchButton(\n React.cloneElement(customButton, {\n onClick: () => {\n return setIsVisible(true);\n },\n }),\n );\n }\n }, [config, customButton, displayInModal, itemID, itemType, language, launchButton, messages, isVisible]);\n\n return (\n <>\n {launchButton}\n {api && (\n <SharingModal\n api={api}\n config={config}\n displayInModal={displayInModal}\n isVisible={isVisible}\n itemID={itemID}\n itemType={itemType}\n language={language}\n messages={messages}\n setIsVisible={setIsVisible}\n uuid={uuid}\n />\n )}\n </>\n );\n}\n\nexport { ContentSharing as ContentSharingComponent };\nexport default withBlueprintModernization(ContentSharing);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -25,6 +25,8 @@ import { EVENT_JS_READY } from '../common/logger/constants';
|
|
|
25
25
|
import { mark } from '../../utils/performance';
|
|
26
26
|
import { SIDEBAR_FIELDS_TO_FETCH, SIDEBAR_FIELDS_TO_FETCH_ARCHIVE } from '../../utils/fields';
|
|
27
27
|
import { withErrorBoundary } from '../common/error-boundary';
|
|
28
|
+
// $FlowFixMe
|
|
29
|
+
import { withBlueprintModernization } from '../common/withBlueprintModernization';
|
|
28
30
|
import { isFeatureEnabled as isFeatureEnabledInContext, withFeatureConsumer, withFeatureProvider } from '../common/feature-checking';
|
|
29
31
|
import { withLogger } from '../common/logger';
|
|
30
32
|
|
|
@@ -363,5 +365,5 @@ _defineProperty(ContentSidebar, "defaultProps", {
|
|
|
363
365
|
metadataSidebarProps: {}
|
|
364
366
|
});
|
|
365
367
|
export { ContentSidebar as ContentSidebarComponent };
|
|
366
|
-
export default flow([withFeatureConsumer, withFeatureProvider, withLogger(ORIGIN_CONTENT_SIDEBAR), withErrorBoundary(ORIGIN_CONTENT_SIDEBAR)])(ContentSidebar);
|
|
368
|
+
export default flow([withFeatureConsumer, withFeatureProvider, withBlueprintModernization, withLogger(ORIGIN_CONTENT_SIDEBAR), withErrorBoundary(ORIGIN_CONTENT_SIDEBAR)])(ContentSidebar);
|
|
367
369
|
//# sourceMappingURL=ContentSidebar.js.map
|
|
@@ -21,6 +21,8 @@ import { EVENT_JS_READY } from '../common/logger/constants';
|
|
|
21
21
|
import { mark } from '../../utils/performance';
|
|
22
22
|
import { SIDEBAR_FIELDS_TO_FETCH, SIDEBAR_FIELDS_TO_FETCH_ARCHIVE } from '../../utils/fields';
|
|
23
23
|
import { withErrorBoundary } from '../common/error-boundary';
|
|
24
|
+
// $FlowFixMe
|
|
25
|
+
import { withBlueprintModernization } from '../common/withBlueprintModernization';
|
|
24
26
|
import {
|
|
25
27
|
isFeatureEnabled as isFeatureEnabledInContext,
|
|
26
28
|
withFeatureConsumer,
|
|
@@ -432,6 +434,7 @@ export { ContentSidebar as ContentSidebarComponent };
|
|
|
432
434
|
export default flow([
|
|
433
435
|
withFeatureConsumer,
|
|
434
436
|
withFeatureProvider,
|
|
437
|
+
withBlueprintModernization,
|
|
435
438
|
withLogger(ORIGIN_CONTENT_SIDEBAR),
|
|
436
439
|
withErrorBoundary(ORIGIN_CONTENT_SIDEBAR),
|
|
437
440
|
])(ContentSidebar);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentSidebar.js","names":["React","noop","flow","TooltipProvider","API","APIContext","Internationalize","Sidebar","NavRouter","SidebarUtils","DEFAULT_HOSTNAME_API","CLIENT_NAME_CONTENT_SIDEBAR","ORIGIN_CONTENT_SIDEBAR","EVENT_JS_READY","mark","SIDEBAR_FIELDS_TO_FETCH","SIDEBAR_FIELDS_TO_FETCH_ARCHIVE","withErrorBoundary","isFeatureEnabled","isFeatureEnabledInContext","withFeatureConsumer","withFeatureProvider","withLogger","MARK_NAME_JS_READY","ContentSidebar","Component","constructor","props","_defineProperty","isLoading","error","code","console","onError","editors","setState","metadataEditors","file","onFetchFileSuccess","fetchMetadata","apiHost","cache","clientName","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","api","logger","onReadyMetric","endMarkName","clearCache","destroy","componentWillUnmount","componentDidMount","fetchFile","componentDidUpdate","prevProps","fileId","prevFileId","state","metadataSidebarProps","canHaveMetadataSidebar","getMetadataAPI","getMetadata","fetchMetadataSuccessCallback","fetchOptions","features","archiveEnabled","fields","canHaveSidebar","getFileAPI","getFile","fetchFileSuccessCallback","errorCallback","_objectSpread","refresh","sidebarRef","render","activitySidebarProps","additionalTabs","boxAISidebarProps","className","currentUser","defaultView","detailsSidebarProps","docGenSidebarProps","getPreview","getViewer","hasAdditionalTabs","hasActivityFeed","hasMetadata","hasNav","hasSkills","hasVersions","history","isDefaultOpen","messages","onAnnotationSelect","onOpenChange","onPanelChange","onVersionChange","onVersionHistoryClick","signSidebarProps","theme","versionsSidebarProps","initialPath","charAt","shouldRenderSidebar","createElement","Provider","value","initialEntries","wrappedComponentRef","ref","enabled","ContentSidebarComponent"],"sources":["../../../src/elements/content-sidebar/ContentSidebar.js"],"sourcesContent":["/**\n * @flow\n * @file Content Sidebar Container\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport noop from 'lodash/noop';\nimport flow from 'lodash/flow';\nimport { TooltipProvider } from '@box/blueprint-web';\nimport type { RouterHistory } from 'react-router-dom';\nimport API from '../../api';\nimport APIContext from '../common/api-context';\nimport Internationalize from '../common/Internationalize';\nimport Sidebar from './Sidebar';\nimport NavRouter from '../common/nav-router';\nimport SidebarUtils from './SidebarUtils';\nimport { DEFAULT_HOSTNAME_API, CLIENT_NAME_CONTENT_SIDEBAR, ORIGIN_CONTENT_SIDEBAR } from '../../constants';\nimport { EVENT_JS_READY } from '../common/logger/constants';\nimport { mark } from '../../utils/performance';\nimport { SIDEBAR_FIELDS_TO_FETCH, SIDEBAR_FIELDS_TO_FETCH_ARCHIVE } from '../../utils/fields';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport {\n isFeatureEnabled as isFeatureEnabledInContext,\n withFeatureConsumer,\n withFeatureProvider,\n} from '../common/feature-checking';\nimport { withLogger } from '../common/logger';\n\nimport type { ActivitySidebarProps } from './ActivitySidebar';\nimport type { BoxAISidebarProps } from './BoxAISidebar';\nimport type { DetailsSidebarProps } from './DetailsSidebar';\nimport type { DocGenSidebarProps } from './DocGenSidebar/DocGenSidebar';\nimport type { MetadataSidebarProps } from './MetadataSidebar';\nimport type { VersionsSidebarProps } from './versions';\nimport type { SignSidebarProps } from './SidebarNavSign';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { ElementsXhrError, RequestOptions, ErrorContextProps } from '../../common/types/api';\nimport type { MetadataEditor } from '../../common/types/metadata';\nimport type { StringMap, Token, User, BoxItem } from '../../common/types/core';\nimport type { AdditionalSidebarTab } from './flowTypes';\nimport type { FeatureConfig } from '../common/feature-checking';\n// $FlowFixMe TypeScript file\nimport type { Theme } from '../common/theming';\nimport type APICache from '../../utils/Cache';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport '../common/modal.scss';\nimport './ContentSidebar.scss';\n\ntype Props = {\n activitySidebarProps: ActivitySidebarProps,\n additionalTabs?: Array<AdditionalSidebarTab>,\n apiHost: string,\n boxAISidebarProps: BoxAISidebarProps,\n cache?: APICache,\n className: string,\n clientName: string,\n currentUser?: User,\n defaultView: string,\n detailsSidebarProps: DetailsSidebarProps,\n docGenSidebarProps?: DocGenSidebarProps,\n features: FeatureConfig,\n fileId?: string,\n getPreview: Function,\n getViewer: Function,\n hasActivityFeed: boolean,\n hasAdditionalTabs: boolean,\n hasMetadata: boolean,\n hasNav: boolean,\n hasSkills: boolean,\n hasVersions: boolean,\n history?: RouterHistory,\n isDefaultOpen?: boolean,\n language?: string,\n messages?: StringMap,\n metadataSidebarProps: MetadataSidebarProps,\n onAnnotationSelect?: Function,\n onFetchFileSuccess?: () => void,\n onOpenChange?: (isOpen: boolean, isInitialState: boolean) => void,\n onPanelChange?: (name: string, isInitialState: boolean) => void,\n onVersionChange?: Function,\n onVersionHistoryClick?: Function,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n sharedLink?: string,\n sharedLinkPassword?: string,\n theme?: Theme,\n signSidebarProps: SignSidebarProps,\n token: Token,\n versionsSidebarProps: VersionsSidebarProps,\n} & ErrorContextProps &\n WithLoggerProps;\n\ntype State = {\n file?: BoxItem,\n isLoading: boolean,\n metadataEditors?: Array<MetadataEditor>,\n};\n\nconst MARK_NAME_JS_READY = `${ORIGIN_CONTENT_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nclass ContentSidebar extends React.Component<Props, State> {\n props: Props;\n\n state: State = { isLoading: true };\n\n api: API;\n\n sidebarRef: Sidebar;\n\n static defaultProps = {\n activitySidebarProps: {},\n apiHost: DEFAULT_HOSTNAME_API,\n boxAISidebarProps: {},\n className: '',\n clientName: CLIENT_NAME_CONTENT_SIDEBAR,\n defaultView: '',\n detailsSidebarProps: {},\n docGenSidebarProps: { enabled: false },\n getPreview: noop,\n getViewer: noop,\n hasActivityFeed: false,\n hasAdditionalTabs: false,\n hasMetadata: false,\n hasNav: true,\n hasSkills: false,\n isDefaultOpen: true,\n metadataSidebarProps: {},\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentSidebar}\n */\n constructor(props: Props) {\n super(props);\n const {\n apiHost,\n cache,\n clientName,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n } = props;\n\n this.api = new API({\n apiHost,\n cache,\n clientName,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n });\n\n /* eslint-disable react/prop-types */\n const { logger } = props;\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n /* eslint-enable react/prop-types */\n }\n\n /**\n * Destroys api instances with caches\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Cleanup\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n // Don't destroy the cache while unmounting\n this.api.destroy(false);\n }\n\n /**\n * Fetches the file data on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n this.fetchFile();\n }\n\n /**\n * Fetches new file data on update\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidUpdate(prevProps: Props): void {\n const { fileId }: Props = this.props;\n const { fileId: prevFileId }: Props = prevProps;\n\n if (fileId !== prevFileId) {\n this.fetchFile();\n }\n }\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error - Error object\n * @param {string} code - error code\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string): void => {\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n\n /* eslint-disable react/prop-types */\n this.props.onError(error, code, {\n error,\n });\n /* eslint-enable react/prop-types */\n };\n\n /**\n * File fetch success callback that sets the file and view\n * Only set file if there is data to show in the sidebar.\n * Skills sidebar doesn't show when there is no data.\n *\n * @private\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchMetadataSuccessCallback = ({ editors }: { editors: Array<MetadataEditor> }): void => {\n this.setState({ metadataEditors: editors });\n };\n\n /**\n * Fetches file metadata editors if required\n *\n * @private\n * @return {void}\n */\n fetchMetadata(): void {\n const { file }: State = this.state;\n const { metadataSidebarProps }: Props = this.props;\n const { isFeatureEnabled = true }: MetadataSidebarProps = metadataSidebarProps;\n\n // Only fetch metadata if we think that the file may have metadata on it\n // but currently the metadata feature is turned off. Use case of this would be a free\n // user who doesn't have the metadata feature but is collabed on a file from a user\n // who added metadata on the file. If the feature is enabled we always end up showing\n // the metadata sidebar irrespective of there being any existing metadata or not.\n const canHaveMetadataSidebar = !isFeatureEnabled && SidebarUtils.canHaveMetadataSidebar(this.props);\n\n if (canHaveMetadataSidebar) {\n this.api\n .getMetadataAPI(false)\n .getMetadata(((file: any): BoxItem), this.fetchMetadataSuccessCallback, noop, isFeatureEnabled);\n }\n }\n\n /**\n * File fetch success callback that sets the file and sidebar visibility.\n * Also makes an optional request to fetch metadata editors\n *\n * @private\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchFileSuccessCallback = (file: BoxItem): void => {\n const { onFetchFileSuccess }: Props = this.props;\n !!onFetchFileSuccess && onFetchFileSuccess();\n this.setState(\n {\n file,\n isLoading: false,\n },\n this.fetchMetadata,\n );\n };\n\n /**\n * Fetches a file\n *\n * @private\n * @param {Object|void} [fetchOptions] - Fetch options\n * @return {void}\n */\n fetchFile(fetchOptions: RequestOptions = {}): void {\n const { fileId, features }: Props = this.props;\n const archiveEnabled = isFeatureEnabledInContext(features, 'contentSidebar.archive.enabled');\n const fields = archiveEnabled ? SIDEBAR_FIELDS_TO_FETCH_ARCHIVE : SIDEBAR_FIELDS_TO_FETCH;\n\n this.setState({ isLoading: true });\n\n if (fileId && SidebarUtils.canHaveSidebar(this.props)) {\n this.api.getFileAPI().getFile(fileId, this.fetchFileSuccessCallback, this.errorCallback, {\n ...fetchOptions,\n fields,\n });\n }\n }\n\n /**\n * Refreshes the sidebar panel\n * @returns {void}\n */\n refresh(): void {\n if (this.sidebarRef) {\n this.sidebarRef.refresh();\n }\n }\n\n /**\n * Renders the sidebar\n *\n * @private\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n activitySidebarProps,\n additionalTabs,\n boxAISidebarProps,\n className,\n currentUser,\n defaultView,\n detailsSidebarProps,\n docGenSidebarProps,\n features,\n fileId,\n getPreview,\n getViewer,\n hasAdditionalTabs,\n hasActivityFeed,\n hasMetadata,\n hasNav,\n hasSkills,\n hasVersions,\n history,\n isDefaultOpen,\n language,\n messages,\n metadataSidebarProps,\n onAnnotationSelect,\n onOpenChange,\n onPanelChange,\n onVersionChange,\n onVersionHistoryClick,\n signSidebarProps,\n theme,\n versionsSidebarProps,\n }: Props = this.props;\n const { file, isLoading, metadataEditors }: State = this.state;\n const initialPath = defaultView.charAt(0) === '/' ? defaultView : `/${defaultView}`;\n\n if (!file || !fileId || !SidebarUtils.shouldRenderSidebar(this.props, file, metadataEditors)) {\n return null;\n }\n\n return (\n <Internationalize language={language} messages={messages}>\n <APIContext.Provider value={(this.api: any)}>\n <NavRouter history={history} initialEntries={[initialPath]} features={features}>\n <TooltipProvider>\n <Sidebar\n activitySidebarProps={activitySidebarProps}\n additionalTabs={additionalTabs}\n boxAISidebarProps={boxAISidebarProps}\n className={className}\n currentUser={currentUser}\n detailsSidebarProps={detailsSidebarProps}\n docGenSidebarProps={docGenSidebarProps}\n file={file}\n fileId={fileId}\n getPreview={getPreview}\n getViewer={getViewer}\n hasActivityFeed={hasActivityFeed}\n hasAdditionalTabs={hasAdditionalTabs}\n hasNav={hasNav}\n hasMetadata={hasMetadata}\n hasSkills={hasSkills}\n hasVersions={hasVersions}\n isDefaultOpen={isDefaultOpen}\n isLoading={isLoading}\n metadataEditors={metadataEditors}\n metadataSidebarProps={metadataSidebarProps}\n onAnnotationSelect={onAnnotationSelect}\n onOpenChange={onOpenChange}\n onPanelChange={onPanelChange}\n onVersionChange={onVersionChange}\n onVersionHistoryClick={onVersionHistoryClick}\n signSidebarProps={signSidebarProps}\n theme={theme}\n versionsSidebarProps={versionsSidebarProps}\n wrappedComponentRef={ref => {\n this.sidebarRef = ref;\n }}\n />\n </TooltipProvider>\n </NavRouter>\n </APIContext.Provider>\n </Internationalize>\n );\n }\n}\n\nexport type ContentSidebarProps = Props;\nexport { ContentSidebar as ContentSidebarComponent };\nexport default flow([\n withFeatureConsumer,\n withFeatureProvider,\n withLogger(ORIGIN_CONTENT_SIDEBAR),\n withErrorBoundary(ORIGIN_CONTENT_SIDEBAR),\n])(ContentSidebar);\n"],"mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,6BAA6B;AACpC,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,IAAI,MAAM,aAAa;AAC9B,OAAOC,IAAI,MAAM,aAAa;AAC9B,SAASC,eAAe,QAAQ,oBAAoB;AAEpD,OAAOC,GAAG,MAAM,WAAW;AAC3B,OAAOC,UAAU,MAAM,uBAAuB;AAC9C,OAAOC,gBAAgB,MAAM,4BAA4B;AACzD,OAAOC,OAAO,MAAM,WAAW;AAC/B,OAAOC,SAAS,MAAM,sBAAsB;AAC5C,OAAOC,YAAY,MAAM,gBAAgB;AACzC,SAASC,oBAAoB,EAAEC,2BAA2B,EAAEC,sBAAsB,QAAQ,iBAAiB;AAC3G,SAASC,cAAc,QAAQ,4BAA4B;AAC3D,SAASC,IAAI,QAAQ,yBAAyB;AAC9C,SAASC,uBAAuB,EAAEC,+BAA+B,QAAQ,oBAAoB;AAC7F,SAASC,iBAAiB,QAAQ,0BAA0B;AAC5D,SACIC,gBAAgB,IAAIC,yBAAyB,EAC7CC,mBAAmB,EACnBC,mBAAmB,QAChB,4BAA4B;AACnC,SAASC,UAAU,QAAQ,kBAAkB;;AAe7C;;AAIA,OAAO,sBAAsB;AAC7B,OAAO,qBAAqB;AAC5B,OAAO,sBAAsB;AAC7B,OAAO,uBAAuB;AAoD9B,MAAMC,kBAAkB,GAAG,GAAGX,sBAAsB,IAAIC,cAAc,EAAE;AAExEC,IAAI,CAACS,kBAAkB,CAAC;AAExB,MAAMC,cAAc,SAASxB,KAAK,CAACyB,SAAS,CAAe;EA6BvD;AACJ;AACA;AACA;AACA;AACA;EACIC,WAAWA,CAACC,KAAY,EAAE;IACtB,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA,gBAjCF;MAAEC,SAAS,EAAE;IAAK,CAAC;IAmHlC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IAPID,eAAA,wBAQgB,CAACE,KAAuB,EAAEC,IAAY,KAAW;MAC7D;MACAC,OAAO,CAACF,KAAK,CAACA,KAAK,CAAC;MACpB;;MAEA;MACA,IAAI,CAACH,KAAK,CAACM,OAAO,CAACH,KAAK,EAAEC,IAAI,EAAE;QAC5BD;MACJ,CAAC,CAAC;MACF;IACJ,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IARIF,eAAA,uCAS+B,CAAC;MAAEM;IAA4C,CAAC,KAAW;MACtF,IAAI,CAACC,QAAQ,CAAC;QAAEC,eAAe,EAAEF;MAAQ,CAAC,CAAC;IAC/C,CAAC;IA2BD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IAPIN,eAAA,mCAQ4BS,IAAa,IAAW;MAChD,MAAM;QAAEC;MAA0B,CAAC,GAAG,IAAI,CAACX,KAAK;MAChD,CAAC,CAACW,kBAAkB,IAAIA,kBAAkB,CAAC,CAAC;MAC5C,IAAI,CAACH,QAAQ,CACT;QACIE,IAAI;QACJR,SAAS,EAAE;MACf,CAAC,EACD,IAAI,CAACU,aACT,CAAC;IACL,CAAC;IA7JG,MAAM;MACFC,OAAO;MACPC,KAAK;MACLC,UAAU;MACVC,QAAQ;MACRC,kBAAkB;MAClBC,mBAAmB;MACnBC,UAAU;MACVC,kBAAkB;MAClBC;IACJ,CAAC,GAAGrB,KAAK;IAET,IAAI,CAACsB,GAAG,GAAG,IAAI7C,GAAG,CAAC;MACfoC,OAAO;MACPC,KAAK;MACLC,UAAU;MACVC,QAAQ;MACRC,kBAAkB;MAClBC,mBAAmB;MACnBC,UAAU;MACVC,kBAAkB;MAClBC;IACJ,CAAC,CAAC;;IAEF;IACA,MAAM;MAAEE;IAAO,CAAC,GAAGvB,KAAK;IACxBuB,MAAM,CAACC,aAAa,CAAC;MACjBC,WAAW,EAAE7B;IACjB,CAAC,CAAC;IACF;EACJ;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACI8B,UAAUA,CAAA,EAAS;IACf,IAAI,CAACJ,GAAG,CAACK,OAAO,CAAC,IAAI,CAAC;EAC1B;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIC,oBAAoBA,CAAA,EAAG;IACnB;IACA,IAAI,CAACN,GAAG,CAACK,OAAO,CAAC,KAAK,CAAC;EAC3B;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIE,iBAAiBA,CAAA,EAAG;IAChB,IAAI,CAACC,SAAS,CAAC,CAAC;EACpB;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIC,kBAAkBA,CAACC,SAAgB,EAAQ;IACvC,MAAM;MAAEC;IAAc,CAAC,GAAG,IAAI,CAACjC,KAAK;IACpC,MAAM;MAAEiC,MAAM,EAAEC;IAAkB,CAAC,GAAGF,SAAS;IAE/C,IAAIC,MAAM,KAAKC,UAAU,EAAE;MACvB,IAAI,CAACJ,SAAS,CAAC,CAAC;IACpB;EACJ;EAmCA;AACJ;AACA;AACA;AACA;AACA;EACIlB,aAAaA,CAAA,EAAS;IAClB,MAAM;MAAEF;IAAY,CAAC,GAAG,IAAI,CAACyB,KAAK;IAClC,MAAM;MAAEC;IAA4B,CAAC,GAAG,IAAI,CAACpC,KAAK;IAClD,MAAM;MAAET,gBAAgB,GAAG;IAA2B,CAAC,GAAG6C,oBAAoB;;IAE9E;IACA;IACA;IACA;IACA;IACA,MAAMC,sBAAsB,GAAG,CAAC9C,gBAAgB,IAAIT,YAAY,CAACuD,sBAAsB,CAAC,IAAI,CAACrC,KAAK,CAAC;IAEnG,IAAIqC,sBAAsB,EAAE;MACxB,IAAI,CAACf,GAAG,CACHgB,cAAc,CAAC,KAAK,CAAC,CACrBC,WAAW,CAAG7B,IAAI,EAAkB,IAAI,CAAC8B,4BAA4B,EAAElE,IAAI,EAAEiB,gBAAgB,CAAC;IACvG;EACJ;EAsBA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIuC,SAASA,CAACW,YAA4B,GAAG,CAAC,CAAC,EAAQ;IAC/C,MAAM;MAAER,MAAM;MAAES;IAAgB,CAAC,GAAG,IAAI,CAAC1C,KAAK;IAC9C,MAAM2C,cAAc,GAAGnD,yBAAyB,CAACkD,QAAQ,EAAE,gCAAgC,CAAC;IAC5F,MAAME,MAAM,GAAGD,cAAc,GAAGtD,+BAA+B,GAAGD,uBAAuB;IAEzF,IAAI,CAACoB,QAAQ,CAAC;MAAEN,SAAS,EAAE;IAAK,CAAC,CAAC;IAElC,IAAI+B,MAAM,IAAInD,YAAY,CAAC+D,cAAc,CAAC,IAAI,CAAC7C,KAAK,CAAC,EAAE;MACnD,IAAI,CAACsB,GAAG,CAACwB,UAAU,CAAC,CAAC,CAACC,OAAO,CAACd,MAAM,EAAE,IAAI,CAACe,wBAAwB,EAAE,IAAI,CAACC,aAAa,EAAAC,aAAA,CAAAA,aAAA,KAChFT,YAAY;QACfG;MAAM,EACT,CAAC;IACN;EACJ;;EAEA;AACJ;AACA;AACA;EACIO,OAAOA,CAAA,EAAS;IACZ,IAAI,IAAI,CAACC,UAAU,EAAE;MACjB,IAAI,CAACA,UAAU,CAACD,OAAO,CAAC,CAAC;IAC7B;EACJ;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIE,MAAMA,CAAA,EAAG;IACL,MAAM;MACFC,oBAAoB;MACpBC,cAAc;MACdC,iBAAiB;MACjBC,SAAS;MACTC,WAAW;MACXC,WAAW;MACXC,mBAAmB;MACnBC,kBAAkB;MAClBnB,QAAQ;MACRT,MAAM;MACN6B,UAAU;MACVC,SAAS;MACTC,iBAAiB;MACjBC,eAAe;MACfC,WAAW;MACXC,MAAM;MACNC,SAAS;MACTC,WAAW;MACXC,OAAO;MACPC,aAAa;MACbvD,QAAQ;MACRwD,QAAQ;MACRpC,oBAAoB;MACpBqC,kBAAkB;MAClBC,YAAY;MACZC,aAAa;MACbC,eAAe;MACfC,qBAAqB;MACrBC,gBAAgB;MAChBC,KAAK;MACLC;IACG,CAAC,GAAG,IAAI,CAAChF,KAAK;IACrB,MAAM;MAAEU,IAAI;MAAER,SAAS;MAAEO;IAAuB,CAAC,GAAG,IAAI,CAAC0B,KAAK;IAC9D,MAAM8C,WAAW,GAAGtB,WAAW,CAACuB,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,GAAGvB,WAAW,GAAG,IAAIA,WAAW,EAAE;IAEnF,IAAI,CAACjD,IAAI,IAAI,CAACuB,MAAM,IAAI,CAACnD,YAAY,CAACqG,mBAAmB,CAAC,IAAI,CAACnF,KAAK,EAAEU,IAAI,EAAED,eAAe,CAAC,EAAE;MAC1F,OAAO,IAAI;IACf;IAEA,oBACIpC,KAAA,CAAA+G,aAAA,CAACzG,gBAAgB;MAACqC,QAAQ,EAAEA,QAAS;MAACwD,QAAQ,EAAEA;IAAS,gBACrDnG,KAAA,CAAA+G,aAAA,CAAC1G,UAAU,CAAC2G,QAAQ;MAACC,KAAK,EAAG,IAAI,CAAChE;IAAU,gBACxCjD,KAAA,CAAA+G,aAAA,CAACvG,SAAS;MAACyF,OAAO,EAAEA,OAAQ;MAACiB,cAAc,EAAE,CAACN,WAAW,CAAE;MAACvC,QAAQ,EAAEA;IAAS,gBAC3ErE,KAAA,CAAA+G,aAAA,CAAC5G,eAAe,qBACZH,KAAA,CAAA+G,aAAA,CAACxG,OAAO;MACJ0E,oBAAoB,EAAEA,oBAAqB;MAC3CC,cAAc,EAAEA,cAAe;MAC/BC,iBAAiB,EAAEA,iBAAkB;MACrCC,SAAS,EAAEA,SAAU;MACrBC,WAAW,EAAEA,WAAY;MACzBE,mBAAmB,EAAEA,mBAAoB;MACzCC,kBAAkB,EAAEA,kBAAmB;MACvCnD,IAAI,EAAEA,IAAK;MACXuB,MAAM,EAAEA,MAAO;MACf6B,UAAU,EAAEA,UAAW;MACvBC,SAAS,EAAEA,SAAU;MACrBE,eAAe,EAAEA,eAAgB;MACjCD,iBAAiB,EAAEA,iBAAkB;MACrCG,MAAM,EAAEA,MAAO;MACfD,WAAW,EAAEA,WAAY;MACzBE,SAAS,EAAEA,SAAU;MACrBC,WAAW,EAAEA,WAAY;MACzBE,aAAa,EAAEA,aAAc;MAC7BrE,SAAS,EAAEA,SAAU;MACrBO,eAAe,EAAEA,eAAgB;MACjC2B,oBAAoB,EAAEA,oBAAqB;MAC3CqC,kBAAkB,EAAEA,kBAAmB;MACvCC,YAAY,EAAEA,YAAa;MAC3BC,aAAa,EAAEA,aAAc;MAC7BC,eAAe,EAAEA,eAAgB;MACjCC,qBAAqB,EAAEA,qBAAsB;MAC7CC,gBAAgB,EAAEA,gBAAiB;MACnCC,KAAK,EAAEA,KAAM;MACbC,oBAAoB,EAAEA,oBAAqB;MAC3CQ,mBAAmB,EAAEC,GAAG,IAAI;QACxB,IAAI,CAACrC,UAAU,GAAGqC,GAAG;MACzB;IAAE,CACL,CACY,CACV,CACM,CACP,CAAC;EAE3B;AACJ;AAACxF,eAAA,CAjUKJ,cAAc,kBASM;EAClByD,oBAAoB,EAAE,CAAC,CAAC;EACxBzC,OAAO,EAAE9B,oBAAoB;EAC7ByE,iBAAiB,EAAE,CAAC,CAAC;EACrBC,SAAS,EAAE,EAAE;EACb1C,UAAU,EAAE/B,2BAA2B;EACvC2E,WAAW,EAAE,EAAE;EACfC,mBAAmB,EAAE,CAAC,CAAC;EACvBC,kBAAkB,EAAE;IAAE6B,OAAO,EAAE;EAAM,CAAC;EACtC5B,UAAU,EAAExF,IAAI;EAChByF,SAAS,EAAEzF,IAAI;EACf2F,eAAe,EAAE,KAAK;EACtBD,iBAAiB,EAAE,KAAK;EACxBE,WAAW,EAAE,KAAK;EAClBC,MAAM,EAAE,IAAI;EACZC,SAAS,EAAE,KAAK;EAChBG,aAAa,EAAE,IAAI;EACnBnC,oBAAoB,EAAE,CAAC;AAC3B,CAAC;AAySL,SAASvC,cAAc,IAAI8F,uBAAuB;AAClD,eAAepH,IAAI,CAAC,CAChBkB,mBAAmB,EACnBC,mBAAmB,EACnBC,UAAU,CAACV,sBAAsB,CAAC,EAClCK,iBAAiB,CAACL,sBAAsB,CAAC,CAC5C,CAAC,CAACY,cAAc,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ContentSidebar.js","names":["React","noop","flow","TooltipProvider","API","APIContext","Internationalize","Sidebar","NavRouter","SidebarUtils","DEFAULT_HOSTNAME_API","CLIENT_NAME_CONTENT_SIDEBAR","ORIGIN_CONTENT_SIDEBAR","EVENT_JS_READY","mark","SIDEBAR_FIELDS_TO_FETCH","SIDEBAR_FIELDS_TO_FETCH_ARCHIVE","withErrorBoundary","withBlueprintModernization","isFeatureEnabled","isFeatureEnabledInContext","withFeatureConsumer","withFeatureProvider","withLogger","MARK_NAME_JS_READY","ContentSidebar","Component","constructor","props","_defineProperty","isLoading","error","code","console","onError","editors","setState","metadataEditors","file","onFetchFileSuccess","fetchMetadata","apiHost","cache","clientName","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","api","logger","onReadyMetric","endMarkName","clearCache","destroy","componentWillUnmount","componentDidMount","fetchFile","componentDidUpdate","prevProps","fileId","prevFileId","state","metadataSidebarProps","canHaveMetadataSidebar","getMetadataAPI","getMetadata","fetchMetadataSuccessCallback","fetchOptions","features","archiveEnabled","fields","canHaveSidebar","getFileAPI","getFile","fetchFileSuccessCallback","errorCallback","_objectSpread","refresh","sidebarRef","render","activitySidebarProps","additionalTabs","boxAISidebarProps","className","currentUser","defaultView","detailsSidebarProps","docGenSidebarProps","getPreview","getViewer","hasAdditionalTabs","hasActivityFeed","hasMetadata","hasNav","hasSkills","hasVersions","history","isDefaultOpen","messages","onAnnotationSelect","onOpenChange","onPanelChange","onVersionChange","onVersionHistoryClick","signSidebarProps","theme","versionsSidebarProps","initialPath","charAt","shouldRenderSidebar","createElement","Provider","value","initialEntries","wrappedComponentRef","ref","enabled","ContentSidebarComponent"],"sources":["../../../src/elements/content-sidebar/ContentSidebar.js"],"sourcesContent":["/**\n * @flow\n * @file Content Sidebar Container\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport noop from 'lodash/noop';\nimport flow from 'lodash/flow';\nimport { TooltipProvider } from '@box/blueprint-web';\nimport type { RouterHistory } from 'react-router-dom';\nimport API from '../../api';\nimport APIContext from '../common/api-context';\nimport Internationalize from '../common/Internationalize';\nimport Sidebar from './Sidebar';\nimport NavRouter from '../common/nav-router';\nimport SidebarUtils from './SidebarUtils';\nimport { DEFAULT_HOSTNAME_API, CLIENT_NAME_CONTENT_SIDEBAR, ORIGIN_CONTENT_SIDEBAR } from '../../constants';\nimport { EVENT_JS_READY } from '../common/logger/constants';\nimport { mark } from '../../utils/performance';\nimport { SIDEBAR_FIELDS_TO_FETCH, SIDEBAR_FIELDS_TO_FETCH_ARCHIVE } from '../../utils/fields';\nimport { withErrorBoundary } from '../common/error-boundary';\n// $FlowFixMe\nimport { withBlueprintModernization } from '../common/withBlueprintModernization';\nimport {\n isFeatureEnabled as isFeatureEnabledInContext,\n withFeatureConsumer,\n withFeatureProvider,\n} from '../common/feature-checking';\nimport { withLogger } from '../common/logger';\n\nimport type { ActivitySidebarProps } from './ActivitySidebar';\nimport type { BoxAISidebarProps } from './BoxAISidebar';\nimport type { DetailsSidebarProps } from './DetailsSidebar';\nimport type { DocGenSidebarProps } from './DocGenSidebar/DocGenSidebar';\nimport type { MetadataSidebarProps } from './MetadataSidebar';\nimport type { VersionsSidebarProps } from './versions';\nimport type { SignSidebarProps } from './SidebarNavSign';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { ElementsXhrError, RequestOptions, ErrorContextProps } from '../../common/types/api';\nimport type { MetadataEditor } from '../../common/types/metadata';\nimport type { StringMap, Token, User, BoxItem } from '../../common/types/core';\nimport type { AdditionalSidebarTab } from './flowTypes';\nimport type { FeatureConfig } from '../common/feature-checking';\n// $FlowFixMe TypeScript file\nimport type { Theme } from '../common/theming';\nimport type APICache from '../../utils/Cache';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport '../common/modal.scss';\nimport './ContentSidebar.scss';\n\ntype Props = {\n activitySidebarProps: ActivitySidebarProps,\n additionalTabs?: Array<AdditionalSidebarTab>,\n apiHost: string,\n boxAISidebarProps: BoxAISidebarProps,\n cache?: APICache,\n className: string,\n clientName: string,\n currentUser?: User,\n defaultView: string,\n detailsSidebarProps: DetailsSidebarProps,\n docGenSidebarProps?: DocGenSidebarProps,\n features: FeatureConfig,\n fileId?: string,\n getPreview: Function,\n getViewer: Function,\n hasActivityFeed: boolean,\n hasAdditionalTabs: boolean,\n hasMetadata: boolean,\n hasNav: boolean,\n hasSkills: boolean,\n hasVersions: boolean,\n history?: RouterHistory,\n isDefaultOpen?: boolean,\n language?: string,\n messages?: StringMap,\n metadataSidebarProps: MetadataSidebarProps,\n onAnnotationSelect?: Function,\n onFetchFileSuccess?: () => void,\n onOpenChange?: (isOpen: boolean, isInitialState: boolean) => void,\n onPanelChange?: (name: string, isInitialState: boolean) => void,\n onVersionChange?: Function,\n onVersionHistoryClick?: Function,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n sharedLink?: string,\n sharedLinkPassword?: string,\n theme?: Theme,\n signSidebarProps: SignSidebarProps,\n token: Token,\n versionsSidebarProps: VersionsSidebarProps,\n} & ErrorContextProps &\n WithLoggerProps;\n\ntype State = {\n file?: BoxItem,\n isLoading: boolean,\n metadataEditors?: Array<MetadataEditor>,\n};\n\nconst MARK_NAME_JS_READY = `${ORIGIN_CONTENT_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nclass ContentSidebar extends React.Component<Props, State> {\n props: Props;\n\n state: State = { isLoading: true };\n\n api: API;\n\n sidebarRef: Sidebar;\n\n static defaultProps = {\n activitySidebarProps: {},\n apiHost: DEFAULT_HOSTNAME_API,\n boxAISidebarProps: {},\n className: '',\n clientName: CLIENT_NAME_CONTENT_SIDEBAR,\n defaultView: '',\n detailsSidebarProps: {},\n docGenSidebarProps: { enabled: false },\n getPreview: noop,\n getViewer: noop,\n hasActivityFeed: false,\n hasAdditionalTabs: false,\n hasMetadata: false,\n hasNav: true,\n hasSkills: false,\n isDefaultOpen: true,\n metadataSidebarProps: {},\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentSidebar}\n */\n constructor(props: Props) {\n super(props);\n const {\n apiHost,\n cache,\n clientName,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n } = props;\n\n this.api = new API({\n apiHost,\n cache,\n clientName,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n });\n\n /* eslint-disable react/prop-types */\n const { logger } = props;\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n /* eslint-enable react/prop-types */\n }\n\n /**\n * Destroys api instances with caches\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Cleanup\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n // Don't destroy the cache while unmounting\n this.api.destroy(false);\n }\n\n /**\n * Fetches the file data on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n this.fetchFile();\n }\n\n /**\n * Fetches new file data on update\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidUpdate(prevProps: Props): void {\n const { fileId }: Props = this.props;\n const { fileId: prevFileId }: Props = prevProps;\n\n if (fileId !== prevFileId) {\n this.fetchFile();\n }\n }\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error - Error object\n * @param {string} code - error code\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string): void => {\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n\n /* eslint-disable react/prop-types */\n this.props.onError(error, code, {\n error,\n });\n /* eslint-enable react/prop-types */\n };\n\n /**\n * File fetch success callback that sets the file and view\n * Only set file if there is data to show in the sidebar.\n * Skills sidebar doesn't show when there is no data.\n *\n * @private\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchMetadataSuccessCallback = ({ editors }: { editors: Array<MetadataEditor> }): void => {\n this.setState({ metadataEditors: editors });\n };\n\n /**\n * Fetches file metadata editors if required\n *\n * @private\n * @return {void}\n */\n fetchMetadata(): void {\n const { file }: State = this.state;\n const { metadataSidebarProps }: Props = this.props;\n const { isFeatureEnabled = true }: MetadataSidebarProps = metadataSidebarProps;\n\n // Only fetch metadata if we think that the file may have metadata on it\n // but currently the metadata feature is turned off. Use case of this would be a free\n // user who doesn't have the metadata feature but is collabed on a file from a user\n // who added metadata on the file. If the feature is enabled we always end up showing\n // the metadata sidebar irrespective of there being any existing metadata or not.\n const canHaveMetadataSidebar = !isFeatureEnabled && SidebarUtils.canHaveMetadataSidebar(this.props);\n\n if (canHaveMetadataSidebar) {\n this.api\n .getMetadataAPI(false)\n .getMetadata(((file: any): BoxItem), this.fetchMetadataSuccessCallback, noop, isFeatureEnabled);\n }\n }\n\n /**\n * File fetch success callback that sets the file and sidebar visibility.\n * Also makes an optional request to fetch metadata editors\n *\n * @private\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchFileSuccessCallback = (file: BoxItem): void => {\n const { onFetchFileSuccess }: Props = this.props;\n !!onFetchFileSuccess && onFetchFileSuccess();\n this.setState(\n {\n file,\n isLoading: false,\n },\n this.fetchMetadata,\n );\n };\n\n /**\n * Fetches a file\n *\n * @private\n * @param {Object|void} [fetchOptions] - Fetch options\n * @return {void}\n */\n fetchFile(fetchOptions: RequestOptions = {}): void {\n const { fileId, features }: Props = this.props;\n const archiveEnabled = isFeatureEnabledInContext(features, 'contentSidebar.archive.enabled');\n const fields = archiveEnabled ? SIDEBAR_FIELDS_TO_FETCH_ARCHIVE : SIDEBAR_FIELDS_TO_FETCH;\n\n this.setState({ isLoading: true });\n\n if (fileId && SidebarUtils.canHaveSidebar(this.props)) {\n this.api.getFileAPI().getFile(fileId, this.fetchFileSuccessCallback, this.errorCallback, {\n ...fetchOptions,\n fields,\n });\n }\n }\n\n /**\n * Refreshes the sidebar panel\n * @returns {void}\n */\n refresh(): void {\n if (this.sidebarRef) {\n this.sidebarRef.refresh();\n }\n }\n\n /**\n * Renders the sidebar\n *\n * @private\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n activitySidebarProps,\n additionalTabs,\n boxAISidebarProps,\n className,\n currentUser,\n defaultView,\n detailsSidebarProps,\n docGenSidebarProps,\n features,\n fileId,\n getPreview,\n getViewer,\n hasAdditionalTabs,\n hasActivityFeed,\n hasMetadata,\n hasNav,\n hasSkills,\n hasVersions,\n history,\n isDefaultOpen,\n language,\n messages,\n metadataSidebarProps,\n onAnnotationSelect,\n onOpenChange,\n onPanelChange,\n onVersionChange,\n onVersionHistoryClick,\n signSidebarProps,\n theme,\n versionsSidebarProps,\n }: Props = this.props;\n const { file, isLoading, metadataEditors }: State = this.state;\n const initialPath = defaultView.charAt(0) === '/' ? defaultView : `/${defaultView}`;\n\n if (!file || !fileId || !SidebarUtils.shouldRenderSidebar(this.props, file, metadataEditors)) {\n return null;\n }\n\n return (\n <Internationalize language={language} messages={messages}>\n <APIContext.Provider value={(this.api: any)}>\n <NavRouter history={history} initialEntries={[initialPath]} features={features}>\n <TooltipProvider>\n <Sidebar\n activitySidebarProps={activitySidebarProps}\n additionalTabs={additionalTabs}\n boxAISidebarProps={boxAISidebarProps}\n className={className}\n currentUser={currentUser}\n detailsSidebarProps={detailsSidebarProps}\n docGenSidebarProps={docGenSidebarProps}\n file={file}\n fileId={fileId}\n getPreview={getPreview}\n getViewer={getViewer}\n hasActivityFeed={hasActivityFeed}\n hasAdditionalTabs={hasAdditionalTabs}\n hasNav={hasNav}\n hasMetadata={hasMetadata}\n hasSkills={hasSkills}\n hasVersions={hasVersions}\n isDefaultOpen={isDefaultOpen}\n isLoading={isLoading}\n metadataEditors={metadataEditors}\n metadataSidebarProps={metadataSidebarProps}\n onAnnotationSelect={onAnnotationSelect}\n onOpenChange={onOpenChange}\n onPanelChange={onPanelChange}\n onVersionChange={onVersionChange}\n onVersionHistoryClick={onVersionHistoryClick}\n signSidebarProps={signSidebarProps}\n theme={theme}\n versionsSidebarProps={versionsSidebarProps}\n wrappedComponentRef={ref => {\n this.sidebarRef = ref;\n }}\n />\n </TooltipProvider>\n </NavRouter>\n </APIContext.Provider>\n </Internationalize>\n );\n }\n}\n\nexport type ContentSidebarProps = Props;\nexport { ContentSidebar as ContentSidebarComponent };\nexport default flow([\n withFeatureConsumer,\n withFeatureProvider,\n withBlueprintModernization,\n withLogger(ORIGIN_CONTENT_SIDEBAR),\n withErrorBoundary(ORIGIN_CONTENT_SIDEBAR),\n])(ContentSidebar);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -24,6 +24,11 @@ export default {
|
|
|
24
24
|
token: global.TOKEN
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
|
+
export const Modernization = {
|
|
28
|
+
args: {
|
|
29
|
+
enableModernizedComponents: true
|
|
30
|
+
}
|
|
31
|
+
};
|
|
27
32
|
export const ContentSidebarWithBoxAIDisabled = {
|
|
28
33
|
args: {
|
|
29
34
|
features: _objectSpread(_objectSpread({}, global.FEATURE_FLAGS), {}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentSidebar-visual.stories.js","names":["ContentSidebar","title","component","args","detailsSidebarProps","hasProperties","hasNotices","hasAccessStats","hasClassification","hasRetentionPolicy","features","global","FEATURE_FLAGS","fileId","FILE_ID","hasActivityFeed","hasMetadata","hasSkills","hasVersions","token","TOKEN","ContentSidebarWithBoxAIDisabled","_objectSpread","ContentSidebarWithBoxAIEnabled"],"sources":["../../../../../src/elements/content-sidebar/stories/tests/ContentSidebar-visual.stories.tsx"],"sourcesContent":["import { type StoryObj } from '@storybook/react';\nimport ContentSidebar from '../../ContentSidebar';\nimport BoxAISidebar from '../../BoxAISidebarContent';\n\nexport default {\n title: 'Elements/ContentSidebar/tests/visual-regression-tests',\n component: ContentSidebar,\n args: {\n detailsSidebarProps: {\n hasProperties: true,\n hasNotices: true,\n hasAccessStats: true,\n hasClassification: true,\n hasRetentionPolicy: true,\n },\n features: global.FEATURE_FLAGS,\n fileId: global.FILE_ID,\n hasActivityFeed: true,\n hasMetadata: true,\n hasSkills: true,\n hasVersions: true,\n token: global.TOKEN,\n },\n};\n\nexport const ContentSidebarWithBoxAIDisabled: StoryObj<typeof BoxAISidebar> = {\n args: {\n features: {\n ...global.FEATURE_FLAGS,\n 'boxai.sidebar.enabled': false,\n 'metadata.redesign.enabled': true,\n },\n },\n};\n\nexport const ContentSidebarWithBoxAIEnabled: StoryObj<typeof BoxAISidebar> = {\n args: {\n features: {\n ...global.FEATURE_FLAGS,\n 'boxai.sidebar.enabled': true,\n 'metadata.redesign.enabled': true,\n },\n },\n};\n"],"mappings":";;;;;AACA,OAAOA,cAAc,MAAM,sBAAsB;AAGjD,eAAe;EACXC,KAAK,EAAE,uDAAuD;EAC9DC,SAAS,EAAEF,cAAc;EACzBG,IAAI,EAAE;IACFC,mBAAmB,EAAE;MACjBC,aAAa,EAAE,IAAI;MACnBC,UAAU,EAAE,IAAI;MAChBC,cAAc,EAAE,IAAI;MACpBC,iBAAiB,EAAE,IAAI;MACvBC,kBAAkB,EAAE;IACxB,CAAC;IACDC,QAAQ,EAAEC,MAAM,CAACC,aAAa;IAC9BC,MAAM,EAAEF,MAAM,CAACG,OAAO;IACtBC,eAAe,EAAE,IAAI;IACrBC,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE,IAAI;IACfC,WAAW,EAAE,IAAI;IACjBC,KAAK,EAAER,MAAM,CAACS;EAClB;AACJ,CAAC;AAED,OAAO,MAAMC,+BAA8D,GAAG;
|
|
1
|
+
{"version":3,"file":"ContentSidebar-visual.stories.js","names":["ContentSidebar","title","component","args","detailsSidebarProps","hasProperties","hasNotices","hasAccessStats","hasClassification","hasRetentionPolicy","features","global","FEATURE_FLAGS","fileId","FILE_ID","hasActivityFeed","hasMetadata","hasSkills","hasVersions","token","TOKEN","Modernization","enableModernizedComponents","ContentSidebarWithBoxAIDisabled","_objectSpread","ContentSidebarWithBoxAIEnabled"],"sources":["../../../../../src/elements/content-sidebar/stories/tests/ContentSidebar-visual.stories.tsx"],"sourcesContent":["import { type StoryObj } from '@storybook/react';\nimport ContentSidebar from '../../ContentSidebar';\nimport BoxAISidebar from '../../BoxAISidebarContent';\n\nexport default {\n title: 'Elements/ContentSidebar/tests/visual-regression-tests',\n component: ContentSidebar,\n args: {\n detailsSidebarProps: {\n hasProperties: true,\n hasNotices: true,\n hasAccessStats: true,\n hasClassification: true,\n hasRetentionPolicy: true,\n },\n features: global.FEATURE_FLAGS,\n fileId: global.FILE_ID,\n hasActivityFeed: true,\n hasMetadata: true,\n hasSkills: true,\n hasVersions: true,\n token: global.TOKEN,\n },\n};\n\nexport const Modernization = {\n args: {\n enableModernizedComponents: true,\n },\n};\n\nexport const ContentSidebarWithBoxAIDisabled: StoryObj<typeof BoxAISidebar> = {\n args: {\n features: {\n ...global.FEATURE_FLAGS,\n 'boxai.sidebar.enabled': false,\n 'metadata.redesign.enabled': true,\n },\n },\n};\n\nexport const ContentSidebarWithBoxAIEnabled: StoryObj<typeof BoxAISidebar> = {\n args: {\n features: {\n ...global.FEATURE_FLAGS,\n 'boxai.sidebar.enabled': true,\n 'metadata.redesign.enabled': true,\n },\n },\n};\n"],"mappings":";;;;;AACA,OAAOA,cAAc,MAAM,sBAAsB;AAGjD,eAAe;EACXC,KAAK,EAAE,uDAAuD;EAC9DC,SAAS,EAAEF,cAAc;EACzBG,IAAI,EAAE;IACFC,mBAAmB,EAAE;MACjBC,aAAa,EAAE,IAAI;MACnBC,UAAU,EAAE,IAAI;MAChBC,cAAc,EAAE,IAAI;MACpBC,iBAAiB,EAAE,IAAI;MACvBC,kBAAkB,EAAE;IACxB,CAAC;IACDC,QAAQ,EAAEC,MAAM,CAACC,aAAa;IAC9BC,MAAM,EAAEF,MAAM,CAACG,OAAO;IACtBC,eAAe,EAAE,IAAI;IACrBC,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE,IAAI;IACfC,WAAW,EAAE,IAAI;IACjBC,KAAK,EAAER,MAAM,CAACS;EAClB;AACJ,CAAC;AAED,OAAO,MAAMC,aAAa,GAAG;EACzBlB,IAAI,EAAE;IACFmB,0BAA0B,EAAE;EAChC;AACJ,CAAC;AAED,OAAO,MAAMC,+BAA8D,GAAG;EAC1EpB,IAAI,EAAE;IACFO,QAAQ,EAAAc,aAAA,CAAAA,aAAA,KACDb,MAAM,CAACC,aAAa;MACvB,uBAAuB,EAAE,KAAK;MAC9B,2BAA2B,EAAE;IAAI;EAEzC;AACJ,CAAC;AAED,OAAO,MAAMa,8BAA6D,GAAG;EACzEtB,IAAI,EAAE;IACFO,QAAQ,EAAAc,aAAA,CAAAA,aAAA,KACDb,MAAM,CAACC,aAAa;MACvB,uBAAuB,EAAE,IAAI;MAC7B,2BAA2B,EAAE;IAAI;EAEzC;AACJ,CAAC","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ import 'regenerator-runtime/runtime';
|
|
|
7
7
|
import React, { Component } from 'react';
|
|
8
8
|
import classNames from 'classnames';
|
|
9
9
|
import cloneDeep from 'lodash/cloneDeep';
|
|
10
|
+
import flow from 'lodash/flow';
|
|
10
11
|
import getProp from 'lodash/get';
|
|
11
12
|
import noop from 'lodash/noop';
|
|
12
13
|
import uniqueid from 'lodash/uniqueId';
|
|
@@ -18,6 +19,7 @@ import API from '../../api';
|
|
|
18
19
|
import Browser from '../../utils/Browser';
|
|
19
20
|
import Internationalize from '../common/Internationalize';
|
|
20
21
|
import makeResponsive from '../common/makeResponsive';
|
|
22
|
+
import { withBlueprintModernization } from '../common/withBlueprintModernization';
|
|
21
23
|
import ThemingStyles from '../common/theming';
|
|
22
24
|
import FolderUpload from '../../api/uploads/FolderUpload';
|
|
23
25
|
import { getTypedFileId, getTypedFolderId } from '../../utils/file';
|
|
@@ -1158,6 +1160,6 @@ _defineProperty(ContentUploader, "defaultProps", {
|
|
|
1158
1160
|
uploadHost: DEFAULT_HOSTNAME_UPLOAD,
|
|
1159
1161
|
useUploadsManager: false
|
|
1160
1162
|
});
|
|
1161
|
-
export default makeResponsive(ContentUploader);
|
|
1163
|
+
export default flow([makeResponsive, withBlueprintModernization])(ContentUploader);
|
|
1162
1164
|
export { ContentUploader as ContentUploaderComponent, CHUNKED_UPLOAD_MIN_SIZE_BYTES };
|
|
1163
1165
|
//# sourceMappingURL=ContentUploader.js.map
|