cozy-ui 111.21.0 → 112.1.0
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/CHANGELOG.md +21 -0
- package/package.json +4 -3
- package/react/FileImageLoader/Readme.md +66 -3
- package/react/FileImageLoader/index.jsx +3 -3
- package/react/FileImageLoader/index.spec.jsx +1 -1
- package/react/hooks/useClientErrors.jsx +140 -0
- package/react/hooks/useClientErrors.spec.jsx +102 -0
- package/react/index.js +0 -1
- package/transpiled/react/FileImageLoader/index.js +3 -3
- package/transpiled/react/hooks/useClientErrors.js +167 -0
- package/transpiled/react/index.js +0 -1
- package/transpiled/react/stylesheet.css +1 -1
- package/react/Viewer/Footer/BottomSheetContent.jsx +0 -29
- package/react/Viewer/Footer/DownloadButton.jsx +0 -67
- package/react/Viewer/Footer/FooterActionButtons.jsx +0 -22
- package/react/Viewer/Footer/FooterActionButtons.spec.jsx +0 -30
- package/react/Viewer/Footer/FooterContent.jsx +0 -99
- package/react/Viewer/Footer/ForwardButton.jsx +0 -95
- package/react/Viewer/Footer/ForwardButton.spec.jsx +0 -87
- package/react/Viewer/Footer/ForwardOrDownloadButton.jsx +0 -24
- package/react/Viewer/Footer/Sharing.jsx +0 -60
- package/react/Viewer/Footer/helpers.js +0 -107
- package/react/Viewer/Footer/helpers.spec.js +0 -77
- package/react/Viewer/NoViewer/DownloadButton.jsx +0 -28
- package/react/Viewer/NoViewer/FileIcon.jsx +0 -46
- package/react/Viewer/NoViewer/NoViewer.jsx +0 -29
- package/react/Viewer/NoViewer/NoViewer.spec.jsx +0 -44
- package/react/Viewer/NoViewer/__snapshots__/NoViewer.spec.jsx.snap +0 -82
- package/react/Viewer/NoViewer/index.jsx +0 -1
- package/react/Viewer/Panel/ActionMenuDesktop.jsx +0 -66
- package/react/Viewer/Panel/ActionMenuMobile.jsx +0 -74
- package/react/Viewer/Panel/ActionMenuWrapper.jsx +0 -104
- package/react/Viewer/Panel/Certifications.jsx +0 -62
- package/react/Viewer/Panel/PanelContent.jsx +0 -49
- package/react/Viewer/Panel/Qualification.jsx +0 -114
- package/react/Viewer/Panel/QualificationListItemContact.jsx +0 -85
- package/react/Viewer/Panel/QualificationListItemDate.jsx +0 -77
- package/react/Viewer/Panel/QualificationListItemInformation.jsx +0 -68
- package/react/Viewer/Panel/QualificationListItemInformation.spec.jsx +0 -73
- package/react/Viewer/Panel/QualificationListItemOther.jsx +0 -61
- package/react/Viewer/Panel/QualificationListItemText.jsx +0 -30
- package/react/Viewer/Panel/getPanelBlocks.jsx +0 -56
- package/react/Viewer/Panel/getPanelBlocks.spec.jsx +0 -79
- package/react/Viewer/Panel/styles.styl +0 -13
- package/react/Viewer/Readme.md +0 -352
- package/react/Viewer/Viewer.jsx +0 -134
- package/react/Viewer/ViewerContainer.jsx +0 -169
- package/react/Viewer/ViewerExposer.js +0 -3
- package/react/Viewer/ViewerInformationsWrapper.jsx +0 -69
- package/react/Viewer/ViewerInformationsWrapper.spec.jsx +0 -63
- package/react/Viewer/ViewerWithCustomPanelAndFooter.jsx +0 -55
- package/react/Viewer/ViewersByFile/AudioViewer.jsx +0 -21
- package/react/Viewer/ViewersByFile/AudioViewer.spec.jsx +0 -39
- package/react/Viewer/ViewersByFile/BlankPaperViewer.jsx +0 -46
- package/react/Viewer/ViewersByFile/ImageViewer.jsx +0 -330
- package/react/Viewer/ViewersByFile/ImageViewer.spec.jsx +0 -70
- package/react/Viewer/ViewersByFile/NoNetworkViewer.jsx +0 -17
- package/react/Viewer/ViewersByFile/OnlyOfficeViewer.jsx +0 -28
- package/react/Viewer/ViewersByFile/PdfJsViewer.jsx +0 -210
- package/react/Viewer/ViewersByFile/PdfJsViewer.spec.jsx +0 -160
- package/react/Viewer/ViewersByFile/PdfMobileViewer.jsx +0 -106
- package/react/Viewer/ViewersByFile/PdfMobileViewer.spec.jsx +0 -76
- package/react/Viewer/ViewersByFile/ShortcutViewer.jsx +0 -38
- package/react/Viewer/ViewersByFile/ShortcutViewer.spec.jsx +0 -32
- package/react/Viewer/ViewersByFile/TextViewer.jsx +0 -126
- package/react/Viewer/ViewersByFile/TextViewer.spec.jsx +0 -118
- package/react/Viewer/ViewersByFile/VideoViewer.jsx +0 -13
- package/react/Viewer/ViewersByFile/VideoViewer.spec.jsx +0 -39
- package/react/Viewer/ViewersByFile/__snapshots__/AudioViewer.spec.jsx.snap +0 -43
- package/react/Viewer/ViewersByFile/__snapshots__/ShortcutViewer.spec.jsx.snap +0 -57
- package/react/Viewer/ViewersByFile/__snapshots__/TextViewer.spec.jsx.snap +0 -100
- package/react/Viewer/ViewersByFile/__snapshots__/VideoViewer.spec.jsx.snap +0 -19
- package/react/Viewer/ViewersByFile/styles.styl +0 -87
- package/react/Viewer/assets/IlluGenericNewPage.svg +0 -10
- package/react/Viewer/components/ExpirationAlert.jsx +0 -86
- package/react/Viewer/components/ExpirationAnnotation.jsx +0 -40
- package/react/Viewer/components/Footer.jsx +0 -13
- package/react/Viewer/components/InformationPanel.jsx +0 -26
- package/react/Viewer/components/Navigation.jsx +0 -39
- package/react/Viewer/components/PdfToolbarButton.jsx +0 -26
- package/react/Viewer/components/PrintButton.jsx +0 -90
- package/react/Viewer/components/Toolbar.jsx +0 -111
- package/react/Viewer/components/ToolbarButtons.jsx +0 -11
- package/react/Viewer/components/ToolbarFilePath.jsx +0 -61
- package/react/Viewer/components/ViewerByFile.jsx +0 -112
- package/react/Viewer/components/ViewerByFile.spec.jsx +0 -100
- package/react/Viewer/components/ViewerControls.jsx +0 -190
- package/react/Viewer/components/ViewerControls.spec.jsx +0 -54
- package/react/Viewer/components/ViewerSpinner.jsx +0 -17
- package/react/Viewer/components/styles.styl +0 -93
- package/react/Viewer/helpers.js +0 -131
- package/react/Viewer/helpers.spec.js +0 -136
- package/react/Viewer/hoc/withFileUrl.jsx +0 -93
- package/react/Viewer/hoc/withViewerLocales.jsx +0 -4
- package/react/Viewer/hooks/useReferencedContactName.jsx +0 -26
- package/react/Viewer/index.jsx +0 -12
- package/react/Viewer/locales/en.json +0 -66
- package/react/Viewer/locales/fr.json +0 -66
- package/react/Viewer/locales/index.js +0 -4
- package/react/Viewer/proptypes.js +0 -12
- package/react/Viewer/providers/ActionMenuProvider.jsx +0 -35
- package/react/Viewer/queries.js +0 -20
- package/react/Viewer/styles.styl +0 -22
- package/react/Viewer/vars.styl +0 -6
- package/transpiled/react/Viewer/Footer/BottomSheetContent.js +0 -28
- package/transpiled/react/Viewer/Footer/DownloadButton.js +0 -91
- package/transpiled/react/Viewer/Footer/FooterActionButtons.js +0 -21
- package/transpiled/react/Viewer/Footer/FooterContent.js +0 -98
- package/transpiled/react/Viewer/Footer/ForwardButton.js +0 -143
- package/transpiled/react/Viewer/Footer/ForwardOrDownloadButton.js +0 -25
- package/transpiled/react/Viewer/Footer/Sharing.js +0 -57
- package/transpiled/react/Viewer/Footer/helpers.js +0 -151
- package/transpiled/react/Viewer/NoViewer/DownloadButton.js +0 -34
- package/transpiled/react/Viewer/NoViewer/FileIcon.js +0 -57
- package/transpiled/react/Viewer/NoViewer/NoViewer.js +0 -49
- package/transpiled/react/Viewer/NoViewer/index.js +0 -1
- package/transpiled/react/Viewer/Panel/ActionMenuDesktop.js +0 -68
- package/transpiled/react/Viewer/Panel/ActionMenuMobile.js +0 -70
- package/transpiled/react/Viewer/Panel/ActionMenuWrapper.js +0 -129
- package/transpiled/react/Viewer/Panel/Certifications.js +0 -56
- package/transpiled/react/Viewer/Panel/PanelContent.js +0 -48
- package/transpiled/react/Viewer/Panel/Qualification.js +0 -119
- package/transpiled/react/Viewer/Panel/QualificationListItemContact.js +0 -96
- package/transpiled/react/Viewer/Panel/QualificationListItemDate.js +0 -64
- package/transpiled/react/Viewer/Panel/QualificationListItemInformation.js +0 -59
- package/transpiled/react/Viewer/Panel/QualificationListItemOther.js +0 -53
- package/transpiled/react/Viewer/Panel/QualificationListItemText.js +0 -29
- package/transpiled/react/Viewer/Panel/getPanelBlocks.js +0 -62
- package/transpiled/react/Viewer/Viewer.js +0 -172
- package/transpiled/react/Viewer/ViewerContainer.js +0 -189
- package/transpiled/react/Viewer/ViewerExposer.js +0 -2
- package/transpiled/react/Viewer/ViewerInformationsWrapper.js +0 -49
- package/transpiled/react/Viewer/ViewerWithCustomPanelAndFooter.js +0 -56
- package/transpiled/react/Viewer/ViewersByFile/AudioViewer.js +0 -41
- package/transpiled/react/Viewer/ViewersByFile/BlankPaperViewer.js +0 -74
- package/transpiled/react/Viewer/ViewersByFile/ImageViewer.js +0 -367
- package/transpiled/react/Viewer/ViewersByFile/NoNetworkViewer.js +0 -38
- package/transpiled/react/Viewer/ViewersByFile/OnlyOfficeViewer.js +0 -29
- package/transpiled/react/Viewer/ViewersByFile/PdfJsViewer.js +0 -254
- package/transpiled/react/Viewer/ViewersByFile/PdfMobileViewer.js +0 -153
- package/transpiled/react/Viewer/ViewersByFile/ShortcutViewer.js +0 -42
- package/transpiled/react/Viewer/ViewersByFile/TextViewer.js +0 -219
- package/transpiled/react/Viewer/ViewersByFile/VideoViewer.js +0 -33
- package/transpiled/react/Viewer/assets/IlluGenericNewPage.svg +0 -10
- package/transpiled/react/Viewer/components/ExpirationAlert.js +0 -100
- package/transpiled/react/Viewer/components/ExpirationAnnotation.js +0 -41
- package/transpiled/react/Viewer/components/Footer.js +0 -29
- package/transpiled/react/Viewer/components/InformationPanel.js +0 -23
- package/transpiled/react/Viewer/components/Navigation.js +0 -47
- package/transpiled/react/Viewer/components/PdfToolbarButton.js +0 -28
- package/transpiled/react/Viewer/components/PrintButton.js +0 -137
- package/transpiled/react/Viewer/components/Toolbar.js +0 -115
- package/transpiled/react/Viewer/components/ToolbarButtons.js +0 -9
- package/transpiled/react/Viewer/components/ToolbarFilePath.js +0 -71
- package/transpiled/react/Viewer/components/ViewerByFile.js +0 -105
- package/transpiled/react/Viewer/components/ViewerControls.js +0 -226
- package/transpiled/react/Viewer/components/ViewerSpinner.js +0 -17
- package/transpiled/react/Viewer/helpers.js +0 -147
- package/transpiled/react/Viewer/hoc/withFileUrl.js +0 -207
- package/transpiled/react/Viewer/hoc/withViewerLocales.js +0 -3
- package/transpiled/react/Viewer/hooks/useReferencedContactName.js +0 -32
- package/transpiled/react/Viewer/index.js +0 -11
- package/transpiled/react/Viewer/locales/index.js +0 -136
- package/transpiled/react/Viewer/proptypes.js +0 -14
- package/transpiled/react/Viewer/providers/ActionMenuProvider.js +0 -34
- package/transpiled/react/Viewer/queries.js +0 -26
- /package/react/{Viewer/providers/EncryptedProvider.jsx → providers/Encrypted/index.jsx} +0 -0
- /package/transpiled/react/{Viewer/providers/EncryptedProvider.js → providers/Encrypted/index.js} +0 -0
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import cx from 'classnames'
|
|
2
|
-
import PropTypes from 'prop-types'
|
|
3
|
-
import React from 'react'
|
|
4
|
-
import ReactMarkdown from 'react-markdown'
|
|
5
|
-
|
|
6
|
-
import { withClient, models } from 'cozy-client'
|
|
7
|
-
|
|
8
|
-
import styles from './styles.styl'
|
|
9
|
-
import { FileDoctype } from '../../proptypes'
|
|
10
|
-
import NoViewer from '../NoViewer'
|
|
11
|
-
import ViewerSpinner from '../components/ViewerSpinner'
|
|
12
|
-
import { isFileEncrypted } from '../helpers'
|
|
13
|
-
import withFileUrl from '../hoc/withFileUrl'
|
|
14
|
-
|
|
15
|
-
const MarkdownRenderer = ({ text }) => (
|
|
16
|
-
<ReactMarkdown
|
|
17
|
-
className={cx(styles['viewer-textviewer-content'], 'u-p-1')}
|
|
18
|
-
source={text}
|
|
19
|
-
/>
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
const PlainTextRenderer = ({ text }) => (
|
|
23
|
-
<pre
|
|
24
|
-
className={cx(styles['viewer-textviewer-content'], 'u-mh-auto', 'u-mv-2')}
|
|
25
|
-
>
|
|
26
|
-
{text}
|
|
27
|
-
</pre>
|
|
28
|
-
)
|
|
29
|
-
|
|
30
|
-
const Loader = () => {
|
|
31
|
-
return (
|
|
32
|
-
<div className={styles['viewer-textviewer']}>
|
|
33
|
-
<ViewerSpinner />
|
|
34
|
-
</div>
|
|
35
|
-
)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export const isMarkdown = file =>
|
|
39
|
-
file.mime === 'text/markdown' ||
|
|
40
|
-
/.md$/.test(file.name) ||
|
|
41
|
-
models.file.isNote(file)
|
|
42
|
-
export class TextViewer extends React.Component {
|
|
43
|
-
state = {
|
|
44
|
-
text: '',
|
|
45
|
-
isMarkdown: false,
|
|
46
|
-
loading: true,
|
|
47
|
-
error: null
|
|
48
|
-
}
|
|
49
|
-
_mounted = false
|
|
50
|
-
|
|
51
|
-
componentDidMount() {
|
|
52
|
-
this._mounted = true
|
|
53
|
-
this.loadFile()
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
componentWillUnmount() {
|
|
57
|
-
this._mounted = false
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
async loadFile() {
|
|
61
|
-
const { url, file } = this.props
|
|
62
|
-
try {
|
|
63
|
-
let response
|
|
64
|
-
if (isFileEncrypted(file)) {
|
|
65
|
-
response = await fetch(url)
|
|
66
|
-
} else {
|
|
67
|
-
const { pathname } = new URL(url)
|
|
68
|
-
const client = this.props.client.getStackClient()
|
|
69
|
-
response = await client.fetch('GET', pathname)
|
|
70
|
-
}
|
|
71
|
-
const text = await response.text()
|
|
72
|
-
|
|
73
|
-
if (this._mounted) {
|
|
74
|
-
this.setState({
|
|
75
|
-
text,
|
|
76
|
-
isMarkdown: isMarkdown(file),
|
|
77
|
-
loading: false
|
|
78
|
-
})
|
|
79
|
-
}
|
|
80
|
-
} catch (error) {
|
|
81
|
-
// eslint-disable-next-line no-console
|
|
82
|
-
console.warn(error)
|
|
83
|
-
if (this._mounted) {
|
|
84
|
-
this.setState({
|
|
85
|
-
loading: false,
|
|
86
|
-
error
|
|
87
|
-
})
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
render() {
|
|
93
|
-
const { loading, error, text, isMarkdown } = this.state
|
|
94
|
-
const { file, renderFallbackExtraContent } = this.props
|
|
95
|
-
if (loading) return <Loader />
|
|
96
|
-
else if (error)
|
|
97
|
-
return (
|
|
98
|
-
<NoViewer
|
|
99
|
-
file={file}
|
|
100
|
-
renderFallbackExtraContent={renderFallbackExtraContent}
|
|
101
|
-
/>
|
|
102
|
-
)
|
|
103
|
-
else
|
|
104
|
-
return (
|
|
105
|
-
<div className={styles['viewer-textviewer']}>
|
|
106
|
-
<h2 className={cx(styles['viewer-filename'], 'u-mt-3', 'u-mb-1')}>
|
|
107
|
-
{file.name}
|
|
108
|
-
</h2>
|
|
109
|
-
{isMarkdown ? (
|
|
110
|
-
<MarkdownRenderer text={text} />
|
|
111
|
-
) : (
|
|
112
|
-
<PlainTextRenderer text={text} />
|
|
113
|
-
)}
|
|
114
|
-
</div>
|
|
115
|
-
)
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
TextViewer.propTypes = {
|
|
120
|
-
client: PropTypes.object.isRequired,
|
|
121
|
-
url: PropTypes.string.isRequired,
|
|
122
|
-
file: FileDoctype.isRequired,
|
|
123
|
-
renderFallbackExtraContent: PropTypes.func
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
export default withFileUrl(withClient(TextViewer))
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { shallow } from 'enzyme'
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import renderer from 'react-test-renderer'
|
|
4
|
-
|
|
5
|
-
import { createMockClient } from 'cozy-client'
|
|
6
|
-
|
|
7
|
-
import { TextViewer, isMarkdown } from './TextViewer'
|
|
8
|
-
import { BreakpointsProvider } from '../../providers/Breakpoints'
|
|
9
|
-
|
|
10
|
-
const client = createMockClient({})
|
|
11
|
-
|
|
12
|
-
const mockText = jest.fn()
|
|
13
|
-
const mockFetch = responseText => async () => ({
|
|
14
|
-
text: mockText.mockResolvedValue(responseText)
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
client.stackClient.fetch = mockFetch('Text')
|
|
18
|
-
|
|
19
|
-
const props = {
|
|
20
|
-
client,
|
|
21
|
-
url: 'https://foo.mycozy.cloud',
|
|
22
|
-
file: {
|
|
23
|
-
_id: '1',
|
|
24
|
-
_type: 'io.cozy.files',
|
|
25
|
-
name: 'My File'
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
describe('isMarkdown function', () => {
|
|
30
|
-
it('test markdown function', () => {
|
|
31
|
-
const note = {
|
|
32
|
-
name: 'My Note.cozy-note',
|
|
33
|
-
type: 'file',
|
|
34
|
-
metadata: {
|
|
35
|
-
content: 'my prosemirror content',
|
|
36
|
-
schema: '1',
|
|
37
|
-
title: 'prosemirror title',
|
|
38
|
-
version: '3'
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
expect(isMarkdown({ mime: 'text/markdown' })).toBe(true)
|
|
42
|
-
expect(isMarkdown({ name: 'text.md' })).toBe(true)
|
|
43
|
-
expect(isMarkdown(note)).toBe(true)
|
|
44
|
-
expect(isMarkdown({ name: 'text.txt' })).toBe(false)
|
|
45
|
-
})
|
|
46
|
-
})
|
|
47
|
-
describe('TextViewer Component', () => {
|
|
48
|
-
it('should display the loader ', () => {
|
|
49
|
-
const comp = shallow(<TextViewer {...props} />)
|
|
50
|
-
expect(comp).toMatchSnapshot()
|
|
51
|
-
})
|
|
52
|
-
|
|
53
|
-
it('should display the error component and render with renderFallback', () => {
|
|
54
|
-
const comp = renderer.create(
|
|
55
|
-
<BreakpointsProvider>
|
|
56
|
-
<TextViewer
|
|
57
|
-
{...props}
|
|
58
|
-
renderFallbackExtraContent={file => <span>{file.name}</span>}
|
|
59
|
-
/>
|
|
60
|
-
</BreakpointsProvider>
|
|
61
|
-
)
|
|
62
|
-
|
|
63
|
-
const inst = comp.root.children[0].instance
|
|
64
|
-
inst.setState({ error: true, loading: false })
|
|
65
|
-
expect(comp.toJSON()).toMatchSnapshot()
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
it('should display the text viewer', () => {
|
|
69
|
-
const comp = renderer.create(
|
|
70
|
-
<BreakpointsProvider>
|
|
71
|
-
<TextViewer {...props} />
|
|
72
|
-
</BreakpointsProvider>
|
|
73
|
-
)
|
|
74
|
-
|
|
75
|
-
const inst = comp.root.children[0].instance
|
|
76
|
-
inst.setState({
|
|
77
|
-
loading: false,
|
|
78
|
-
isMarkdown: false,
|
|
79
|
-
text: 'The content of my file'
|
|
80
|
-
})
|
|
81
|
-
expect(comp.toJSON()).toMatchSnapshot()
|
|
82
|
-
expect(mockText).toHaveBeenCalled()
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
it('should display the markdown viewer', () => {
|
|
86
|
-
const comp = renderer.create(
|
|
87
|
-
<BreakpointsProvider>
|
|
88
|
-
<TextViewer {...props} />
|
|
89
|
-
</BreakpointsProvider>
|
|
90
|
-
)
|
|
91
|
-
|
|
92
|
-
const inst = comp.root.children[0].instance
|
|
93
|
-
inst.setState({
|
|
94
|
-
loading: false,
|
|
95
|
-
isMarkdown: true,
|
|
96
|
-
text: "It's very easy to make some words **bold** and other words *italic* with Markdown"
|
|
97
|
-
})
|
|
98
|
-
expect(comp.toJSON()).toMatchSnapshot()
|
|
99
|
-
})
|
|
100
|
-
|
|
101
|
-
it('should display the text viewer when an URL is given', () => {
|
|
102
|
-
const url = 'blob:http://foo.mycozy.cloud'
|
|
103
|
-
const comp = renderer.create(
|
|
104
|
-
<BreakpointsProvider>
|
|
105
|
-
<TextViewer {...props} url={url} />
|
|
106
|
-
</BreakpointsProvider>
|
|
107
|
-
)
|
|
108
|
-
|
|
109
|
-
const inst = comp.root.children[0].instance
|
|
110
|
-
inst.setState({
|
|
111
|
-
loading: false,
|
|
112
|
-
isMarkdown: false,
|
|
113
|
-
text: 'The content of my file'
|
|
114
|
-
})
|
|
115
|
-
expect(comp.toJSON()).toMatchSnapshot()
|
|
116
|
-
expect(mockText).toHaveBeenCalled()
|
|
117
|
-
})
|
|
118
|
-
})
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
|
|
3
|
-
import styles from './styles.styl'
|
|
4
|
-
import withFileUrl from '../hoc/withFileUrl'
|
|
5
|
-
|
|
6
|
-
const VideoViewer = ({ file, url }) => (
|
|
7
|
-
<div className={styles['viewer-videoviewer']}>
|
|
8
|
-
<video src={url} controls="controls" />
|
|
9
|
-
<p className={styles['viewer-filename']}>{file.name}</p>
|
|
10
|
-
</div>
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
export default withFileUrl(VideoViewer)
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { render, waitFor } from '@testing-library/react'
|
|
2
|
-
import React from 'react'
|
|
3
|
-
|
|
4
|
-
import VideoViewer from './VideoViewer'
|
|
5
|
-
import { BreakpointsProvider } from '../../providers/Breakpoints'
|
|
6
|
-
import DemoProvider from '../docs/DemoProvider'
|
|
7
|
-
|
|
8
|
-
const file = {
|
|
9
|
-
_id: 'video',
|
|
10
|
-
class: 'video',
|
|
11
|
-
mime: 'video/mp4',
|
|
12
|
-
name: 'sample.mp4'
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const setup = () => {
|
|
16
|
-
const root = render(
|
|
17
|
-
<DemoProvider>
|
|
18
|
-
<BreakpointsProvider>
|
|
19
|
-
<VideoViewer file={file} />
|
|
20
|
-
</BreakpointsProvider>
|
|
21
|
-
</DemoProvider>
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
return { root }
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
describe('VideoViewer', () => {
|
|
28
|
-
it('should render a spinner then the video viewer', async () => {
|
|
29
|
-
const { root } = setup()
|
|
30
|
-
const { container, queryByRole } = root
|
|
31
|
-
|
|
32
|
-
expect(queryByRole('progressbar')).toBeTruthy()
|
|
33
|
-
|
|
34
|
-
await waitFor(() => {
|
|
35
|
-
expect(queryByRole('progressbar')).toBeFalsy()
|
|
36
|
-
expect(container).toMatchSnapshot()
|
|
37
|
-
})
|
|
38
|
-
})
|
|
39
|
-
})
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`AudioViewer should render a spinner then the audio viewer 1`] = `
|
|
4
|
-
<div>
|
|
5
|
-
<div
|
|
6
|
-
class="styles__viewer-audioviewer___1OQPB"
|
|
7
|
-
>
|
|
8
|
-
<svg
|
|
9
|
-
class="styles__icon___23x3R"
|
|
10
|
-
height="140"
|
|
11
|
-
viewBox="0 0 32 32"
|
|
12
|
-
width="160"
|
|
13
|
-
>
|
|
14
|
-
<g
|
|
15
|
-
fill="none"
|
|
16
|
-
fill-rule="evenodd"
|
|
17
|
-
transform="translate(1 1)"
|
|
18
|
-
>
|
|
19
|
-
<rect
|
|
20
|
-
fill="#ACF6F7"
|
|
21
|
-
height="30"
|
|
22
|
-
rx="2"
|
|
23
|
-
width="30"
|
|
24
|
-
/>
|
|
25
|
-
<path
|
|
26
|
-
d="M8 19.998a2 2 0 00-.002 4H9c1.657 0 3-1.35 3-2.997v-7.679a.63.63 0 01.492-.601l6.016-1.129c.272-.05.492.124.492.418v5.478c0 .282-.215.51-.49.51H17c-1.105 0-2 .904-2 1.997v-.179a2 2 0 001.998 1.997H18c1.657 0 3-1.349 3-2.993V7c0-.554-.445-.921-.976-.825L10.976 7.82C10.437 7.918 10 8.454 10 9v10.498c0 .276-.215.5-.49.5H8z"
|
|
27
|
-
fill="#0CCBD0"
|
|
28
|
-
/>
|
|
29
|
-
</g>
|
|
30
|
-
</svg>
|
|
31
|
-
<p
|
|
32
|
-
class="styles__viewer-filename___3jZCt"
|
|
33
|
-
>
|
|
34
|
-
sample.mp3
|
|
35
|
-
</p>
|
|
36
|
-
<audio
|
|
37
|
-
controls=""
|
|
38
|
-
preload="auto"
|
|
39
|
-
src="https://viewerdemo.cozycloud.cc/Z.mp3"
|
|
40
|
-
/>
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
`;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`Shortcutviewer renders the component 1`] = `
|
|
4
|
-
<div>
|
|
5
|
-
<div
|
|
6
|
-
class="styles__viewer-noviewer___auG-6"
|
|
7
|
-
>
|
|
8
|
-
<svg
|
|
9
|
-
class="styles__icon___23x3R"
|
|
10
|
-
height="140"
|
|
11
|
-
viewBox="0 0 32 32"
|
|
12
|
-
width="160"
|
|
13
|
-
>
|
|
14
|
-
<g
|
|
15
|
-
fill="none"
|
|
16
|
-
fill-rule="evenodd"
|
|
17
|
-
>
|
|
18
|
-
<path
|
|
19
|
-
d="M3 2.002C3 .896 3.89 0 4.997 0H22l7 7v22.996A2 2 0 0127.003 32H4.997A1.995 1.995 0 013 29.998V2.002z"
|
|
20
|
-
fill="#D1D5DB"
|
|
21
|
-
/>
|
|
22
|
-
<path
|
|
23
|
-
d="M21.5 0c-.276 0-.5.23-.5.5V8h7.5c.276 0 .5-.232.5-.5V7l-7-7h-.5z"
|
|
24
|
-
fill="#A3ACB8"
|
|
25
|
-
/>
|
|
26
|
-
</g>
|
|
27
|
-
</svg>
|
|
28
|
-
<p
|
|
29
|
-
class="styles__viewer-filename___3jZCt"
|
|
30
|
-
/>
|
|
31
|
-
<a
|
|
32
|
-
class="styles__c-btn___3kXsk"
|
|
33
|
-
href=""
|
|
34
|
-
target="_blank"
|
|
35
|
-
>
|
|
36
|
-
<span>
|
|
37
|
-
<svg
|
|
38
|
-
aria-hidden="true"
|
|
39
|
-
class="styles__icon___23x3R"
|
|
40
|
-
focusable="false"
|
|
41
|
-
height="16"
|
|
42
|
-
viewBox="0 0 16 16"
|
|
43
|
-
width="16"
|
|
44
|
-
>
|
|
45
|
-
<path
|
|
46
|
-
d="M9 0v2h3.5L6 8.5 7.5 10 14 3.5V7h2V1.003A.996.996 0 0014.997 0H9zM7 2V0H1.003A1 1 0 000 1v14c0 .552.445 1 1 1h14c.552 0 1-.438 1-1.003V9h-2v5H2V2h5z"
|
|
47
|
-
fill-rule="evenodd"
|
|
48
|
-
/>
|
|
49
|
-
</svg>
|
|
50
|
-
<span>
|
|
51
|
-
Go to
|
|
52
|
-
</span>
|
|
53
|
-
</span>
|
|
54
|
-
</a>
|
|
55
|
-
</div>
|
|
56
|
-
</div>
|
|
57
|
-
`;
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`TextViewer Component should display the error component and render with renderFallback 1`] = `
|
|
4
|
-
<div
|
|
5
|
-
className="styles__viewer-noviewer___auG-6"
|
|
6
|
-
>
|
|
7
|
-
<svg
|
|
8
|
-
className="styles__icon___23x3R"
|
|
9
|
-
height={140}
|
|
10
|
-
style={Object {}}
|
|
11
|
-
viewBox="0 0 32 32"
|
|
12
|
-
width={160}
|
|
13
|
-
>
|
|
14
|
-
<g
|
|
15
|
-
fill="none"
|
|
16
|
-
fillRule="evenodd"
|
|
17
|
-
>
|
|
18
|
-
<path
|
|
19
|
-
d="M3 2.002C3 .896 3.89 0 4.997 0H22l7 7v22.996A2 2 0 0127.003 32H4.997A1.995 1.995 0 013 29.998V2.002z"
|
|
20
|
-
fill="#D1D5DB"
|
|
21
|
-
/>
|
|
22
|
-
<path
|
|
23
|
-
d="M21.5 0c-.276 0-.5.23-.5.5V8h7.5c.276 0 .5-.232.5-.5V7l-7-7h-.5z"
|
|
24
|
-
fill="#A3ACB8"
|
|
25
|
-
/>
|
|
26
|
-
</g>
|
|
27
|
-
</svg>
|
|
28
|
-
<p
|
|
29
|
-
className="styles__viewer-filename___3jZCt"
|
|
30
|
-
>
|
|
31
|
-
My File
|
|
32
|
-
</p>
|
|
33
|
-
<span>
|
|
34
|
-
My File
|
|
35
|
-
</span>
|
|
36
|
-
</div>
|
|
37
|
-
`;
|
|
38
|
-
|
|
39
|
-
exports[`TextViewer Component should display the loader 1`] = `<Loader />`;
|
|
40
|
-
|
|
41
|
-
exports[`TextViewer Component should display the markdown viewer 1`] = `
|
|
42
|
-
<div
|
|
43
|
-
className="styles__viewer-textviewer___3u5Zw"
|
|
44
|
-
>
|
|
45
|
-
<h2
|
|
46
|
-
className="styles__viewer-filename___3jZCt u-mt-3 u-mb-1"
|
|
47
|
-
>
|
|
48
|
-
My File
|
|
49
|
-
</h2>
|
|
50
|
-
<div
|
|
51
|
-
className="styles__viewer-textviewer-content___PB-c3 u-p-1"
|
|
52
|
-
>
|
|
53
|
-
<p>
|
|
54
|
-
It's very easy to make some words
|
|
55
|
-
<strong>
|
|
56
|
-
bold
|
|
57
|
-
</strong>
|
|
58
|
-
and other words
|
|
59
|
-
<em>
|
|
60
|
-
italic
|
|
61
|
-
</em>
|
|
62
|
-
with Markdown
|
|
63
|
-
</p>
|
|
64
|
-
</div>
|
|
65
|
-
</div>
|
|
66
|
-
`;
|
|
67
|
-
|
|
68
|
-
exports[`TextViewer Component should display the text viewer 1`] = `
|
|
69
|
-
<div
|
|
70
|
-
className="styles__viewer-textviewer___3u5Zw"
|
|
71
|
-
>
|
|
72
|
-
<h2
|
|
73
|
-
className="styles__viewer-filename___3jZCt u-mt-3 u-mb-1"
|
|
74
|
-
>
|
|
75
|
-
My File
|
|
76
|
-
</h2>
|
|
77
|
-
<pre
|
|
78
|
-
className="styles__viewer-textviewer-content___PB-c3 u-mh-auto u-mv-2"
|
|
79
|
-
>
|
|
80
|
-
The content of my file
|
|
81
|
-
</pre>
|
|
82
|
-
</div>
|
|
83
|
-
`;
|
|
84
|
-
|
|
85
|
-
exports[`TextViewer Component should display the text viewer when an URL is given 1`] = `
|
|
86
|
-
<div
|
|
87
|
-
className="styles__viewer-textviewer___3u5Zw"
|
|
88
|
-
>
|
|
89
|
-
<h2
|
|
90
|
-
className="styles__viewer-filename___3jZCt u-mt-3 u-mb-1"
|
|
91
|
-
>
|
|
92
|
-
My File
|
|
93
|
-
</h2>
|
|
94
|
-
<pre
|
|
95
|
-
className="styles__viewer-textviewer-content___PB-c3 u-mh-auto u-mv-2"
|
|
96
|
-
>
|
|
97
|
-
The content of my file
|
|
98
|
-
</pre>
|
|
99
|
-
</div>
|
|
100
|
-
`;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`VideoViewer should render a spinner then the video viewer 1`] = `
|
|
4
|
-
<div>
|
|
5
|
-
<div
|
|
6
|
-
class="styles__viewer-videoviewer___NhFoe"
|
|
7
|
-
>
|
|
8
|
-
<video
|
|
9
|
-
controls=""
|
|
10
|
-
src="https://viewerdemo.cozycloud.cc/Nextcloud.mp4"
|
|
11
|
-
/>
|
|
12
|
-
<p
|
|
13
|
-
class="styles__viewer-filename___3jZCt"
|
|
14
|
-
>
|
|
15
|
-
sample.mp4
|
|
16
|
-
</p>
|
|
17
|
-
</div>
|
|
18
|
-
</div>
|
|
19
|
-
`;
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
@require 'settings/breakpoints.styl'
|
|
2
|
-
@require '../vars.styl'
|
|
3
|
-
|
|
4
|
-
.viewer-imageviewer
|
|
5
|
-
.viewer-noviewer
|
|
6
|
-
.viewer-audioviewer
|
|
7
|
-
.viewer-videoviewer
|
|
8
|
-
.viewer-pdfviewer
|
|
9
|
-
.viewer-textviewer
|
|
10
|
-
.viewer-canceled
|
|
11
|
-
position relative
|
|
12
|
-
display flex
|
|
13
|
-
width 60%
|
|
14
|
-
max-height 'calc(100% - %s)' % $toolbarHeight
|
|
15
|
-
justify-content center
|
|
16
|
-
align-items center
|
|
17
|
-
flex-direction column
|
|
18
|
-
margin-top $toolbarHeight
|
|
19
|
-
|
|
20
|
-
h2
|
|
21
|
-
max-width 90%
|
|
22
|
-
|
|
23
|
-
+medium-screen()
|
|
24
|
-
margin-left 0
|
|
25
|
-
width 100%
|
|
26
|
-
max-height 'calc(100% - %s)' % $viewerHeightMedium
|
|
27
|
-
margin-top $viewerMarginTopMedium
|
|
28
|
-
|
|
29
|
-
// rules for specific viewers below
|
|
30
|
-
|
|
31
|
-
.viewer-videoviewer
|
|
32
|
-
video
|
|
33
|
-
width 100%
|
|
34
|
-
max-width 31.25rem
|
|
35
|
-
height auto
|
|
36
|
-
|
|
37
|
-
.viewer-textviewer
|
|
38
|
-
.viewer-textviewer-content
|
|
39
|
-
white-space pre-line
|
|
40
|
-
width 100%
|
|
41
|
-
max-height 70%
|
|
42
|
-
overflow auto
|
|
43
|
-
|
|
44
|
-
a
|
|
45
|
-
color var(--azure)
|
|
46
|
-
|
|
47
|
-
+medium-screen()
|
|
48
|
-
width 90%
|
|
49
|
-
margin-left 5%
|
|
50
|
-
|
|
51
|
-
.viewer-filename
|
|
52
|
-
max-width 90%
|
|
53
|
-
text-overflow ellipsis
|
|
54
|
-
overflow hidden
|
|
55
|
-
|
|
56
|
-
.viewer-pdfviewer-pdf
|
|
57
|
-
overflow auto
|
|
58
|
-
width 100%
|
|
59
|
-
|
|
60
|
-
.viewer-pdfviewer-page > *
|
|
61
|
-
margin auto
|
|
62
|
-
|
|
63
|
-
.viewer-pdfviewer-toolbar
|
|
64
|
-
position absolute
|
|
65
|
-
bottom 2rem
|
|
66
|
-
background var(--charcoalGrey)
|
|
67
|
-
color var(--white)
|
|
68
|
-
border-radius .5rem
|
|
69
|
-
|
|
70
|
-
.viewer-imageviewer
|
|
71
|
-
flex 1 1 100%
|
|
72
|
-
width auto
|
|
73
|
-
max-width 100%
|
|
74
|
-
|
|
75
|
-
img
|
|
76
|
-
display block
|
|
77
|
-
max-width 100%
|
|
78
|
-
max-height 100%
|
|
79
|
-
box-shadow 0 .375rem 1.5rem 0 rgba(0, 0, 0, .5)
|
|
80
|
-
|
|
81
|
-
.viewer-pdfMobile
|
|
82
|
-
width 100%
|
|
83
|
-
height 'calc(100% - %s - var(--flagship-top-height))' % $viewerHeightMedium
|
|
84
|
-
margin-top 'calc(var(--flagship-top-height, 0rem) + %s)' % $viewerMarginTopMedium
|
|
85
|
-
|
|
86
|
-
&--image
|
|
87
|
-
width 100%
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<path d="M0 4C0 1.79086 1.79086 0 4 0H29.3333C30.8061 0 32 1.19391 32 2.66667C32 4.13943 30.8061 5.33333 29.3333 5.33333L5.33333 5.33333V29.3333C5.33333 30.8061 4.13943 32 2.66667 32C1.19391 32 0 30.8061 0 29.3333V4Z" fill="#B3D3FF"/>
|
|
3
|
-
<path d="M0 124C0 126.209 1.79086 128 4 128H29.3333C30.8061 128 32 126.806 32 125.333C32 123.861 30.8061 122.667 29.3333 122.667H5.33333V98.6667C5.33333 97.1939 4.13943 96 2.66667 96C1.19391 96 0 97.1939 0 98.6667V124Z" fill="#B3D3FF"/>
|
|
4
|
-
<path d="M124 0C126.209 0 128 1.79086 128 4V29.3333C128 30.8061 126.806 32 125.333 32C123.861 32 122.667 30.8061 122.667 29.3333V5.33333L98.6667 5.33333C97.1939 5.33333 96 4.13943 96 2.66667C96 1.19391 97.1939 0 98.6667 0H124Z" fill="#B3D3FF"/>
|
|
5
|
-
<path d="M128 98.6667V124C128 126.209 126.209 128 124 128H98.6667C97.1939 128 96 126.806 96 125.333C96 123.861 97.1939 122.667 98.6667 122.667H122.667V98.6667C122.667 97.1939 123.861 96 125.333 96C126.806 96 128 97.1939 128 98.6667Z" fill="#B3D3FF"/>
|
|
6
|
-
<path d="M30.0876 89.1458C29.5095 91.8804 29.0759 94.471 29.5095 96.9177C30.2322 101.236 33.7011 102.963 38.0372 103.97C39.9162 104.402 42.0842 104.69 43.8187 104.834C52.4909 105.841 67.0892 106.273 75.906 107.136C78.6522 107.568 81.3985 107.712 84.0001 107.856C85.1564 107.856 86.1682 107.856 87.18 107.856C88.1917 108 89.2035 108 90.2152 108C95.1295 108 96.7194 104.978 97.2976 100.948C97.4421 100.372 97.5867 99.7963 97.7312 99.0766C97.7312 98.7888 97.7312 98.357 97.7312 98.0692C97.7312 97.6374 97.7312 97.2056 97.8757 96.9178C98.4539 94.1832 98.8875 91.4486 99.3211 88.714C99.3211 88.4262 99.4657 87.9944 99.4657 87.7065C100.333 83.3888 103.657 64.8224 105.103 50.8617C106.114 45.6803 108.861 36.0373 103.224 33.0149C99.8993 31.2878 47.7212 26.8261 45.5532 26.6822C42.8069 26.5383 41.217 27.4018 40.3498 28.985C39.6271 29.7046 39.338 30.7121 39.049 32.0074C37.8927 35.3177 30.3767 82.5252 30.0876 89.1458Z" fill="#B3D3FF"/>
|
|
7
|
-
<path d="M28.2551 88.6304C27.9636 91.3461 27.8178 93.9187 28.4008 96.3485C29.5668 100.493 33.3563 101.923 37.7287 102.351C39.7692 102.637 41.8097 102.637 43.5586 102.637C52.3035 102.78 64.2549 102.351 73.1456 102.351C75.9148 102.494 78.684 102.494 81.4532 102.209C82.6192 102.209 83.7852 102.209 84.6597 102.066C85.6799 102.066 86.7002 102.066 87.7204 101.923C92.6759 101.494 93.8418 98.2066 93.9876 94.3475C94.1333 93.6329 94.2791 93.0612 94.2791 92.2036C94.2791 91.9178 94.2791 91.489 94.1333 91.2031C94.1333 90.7743 94.1333 90.3456 94.2791 90.0597C94.5706 87.3441 94.7163 84.6285 94.8621 81.7699C94.8621 81.4841 94.8621 81.0553 94.8621 80.7694C95.2993 76.4816 96.7568 57.7581 96.7568 43.7512C97.1941 38.7487 98.943 28.8867 92.9674 26.4569C89.4694 25.0277 39.4777 25.3135 37.1457 25.4565C34.3765 25.5994 32.919 26.5999 32.0445 28.1721C31.4615 28.8867 31.17 30.0301 31.0243 31.3165C30.587 34.7467 27.6721 82.0558 28.2551 88.6304Z" fill="#297EF2"/>
|
|
8
|
-
<path d="M27.3492 89.0204C27.4924 91.7375 27.7789 94.3116 28.6383 96.5997C30.3572 100.604 34.2245 101.462 38.5215 101.319C40.5268 101.319 42.5321 101.033 44.2509 100.747C52.8451 99.6028 61.7256 99.3168 70.3197 98.0298C73.0412 97.7437 75.7627 97.3147 78.3409 96.7427C79.4868 96.4567 80.4894 96.3137 81.3488 96.0277C82.3515 95.8847 83.3541 95.7417 84.2135 95.4557C88.9403 94.3116 89.6565 91.0225 89.2268 87.0183C89.2268 86.4463 89.2268 85.7313 89.2268 85.0163C89.2268 84.7303 89.0835 84.3013 88.9403 84.1582C88.9403 83.7292 88.9403 83.3002 88.7971 83.0142C88.6538 80.2971 88.5106 77.58 88.0809 74.7199C88.0809 74.4339 88.0809 74.0049 87.9377 73.7189C87.6512 69.4287 86.3621 50.695 84.3568 36.8235C84.0703 31.6753 84.3568 21.6649 78.1977 20.0919C74.6168 19.2338 28.6383 24.668 26.3466 25.0971C23.7683 25.6691 22.336 26.8131 21.9063 28.5292C21.3333 29.3872 21.3333 30.3882 21.3333 31.8183C21.763 35.2504 25.9169 82.5852 27.3492 89.0204Z" fill="#B3D3FF"/>
|
|
9
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M35.7958 40.7716C41.1805 40.1972 46.6011 39.6587 52.0218 39.1203L52.0219 39.1203C57.4425 38.5818 62.8631 38.0433 68.2478 37.469C70.5453 37.1818 70.2581 33.592 67.9606 33.8791C57.1911 34.8843 46.2781 36.033 35.5086 37.1818C33.0675 37.3254 33.4983 40.9152 35.7958 40.7716ZM46.5729 47.3879L46.5729 47.3879L46.5728 47.3879C45.1604 47.5673 42.7233 47.8769 36.9445 48.5256C34.647 48.8128 34.3598 45.2229 36.5137 44.9358C38.5044 44.6789 40.0867 44.4731 41.3642 44.3069L41.3643 44.3069C45.1248 43.8178 46.2448 43.6721 47.3691 43.5787C47.846 43.5391 48.3237 43.5089 49.004 43.4658L49.0041 43.4658C49.8302 43.4136 50.9549 43.3425 52.7397 43.2127C55.0372 43.0691 55.468 46.6589 53.1705 46.8025L52.6398 46.8411L52.6396 46.8411C49.8467 47.0441 48.947 47.1095 48.0509 47.2076C47.625 47.2542 47.2 47.3082 46.5729 47.3879ZM43.4879 55.3257L43.4882 55.3257L43.4883 55.3257L43.4883 55.3257L43.4883 55.3257L43.4883 55.3257L43.4883 55.3257C47.2575 55.0107 51.066 54.6925 54.7501 54.1257C57.0476 53.8386 56.6168 50.2487 54.3193 50.5359C51.2189 51.0129 48.0305 51.2698 44.8514 51.526C42.2884 51.7325 39.7315 51.9385 37.2318 52.259C34.7907 52.4026 35.3651 56.136 37.6625 55.8489C39.5784 55.6524 41.5278 55.4895 43.4879 55.3257ZM62.2168 67.1927C54.3192 67.6235 52.5961 67.7671 38.524 69.0594C36.2265 69.3466 35.9393 65.7568 38.2368 65.4696C48.7943 64.2208 52.531 64.0491 57.5355 63.819L57.5365 63.819C58.8619 63.7581 60.2762 63.6931 61.9296 63.6029C64.2271 63.4593 64.5143 67.0491 62.2168 67.1927ZM41.4373 81.1075L41.4371 81.1075L40.2472 81.2648C37.9497 81.552 38.3805 85.1418 40.678 84.8546C49.1809 83.987 51.0257 83.7484 53.1498 83.4738L53.1499 83.4738C54.5411 83.2939 56.0521 83.0985 59.6323 82.7007C61.9298 82.4135 61.6426 78.8237 59.2015 79.1109C50.3738 79.9258 48.0971 80.2268 41.4373 81.1075ZM38.8112 73.5108C49.5806 72.362 60.4937 71.2133 71.2632 70.2082C73.5607 69.921 73.9914 73.5108 71.5504 73.798C66.1656 74.3724 60.745 74.9108 55.3244 75.4493C49.9037 75.9878 44.4831 76.5262 39.0984 77.1006C36.8009 77.3878 36.5137 73.798 38.8112 73.5108Z" fill="#297EF2"/>
|
|
10
|
-
</svg>
|