diff --git a/packages/component-manuscript/src/atoms/index.js b/packages/component-manuscript/src/atoms/index.js index af47591164adbddb4a11b8bb511c14a6905e67cd..190da931750dcaef873126324b201affb1aee83f 100644 --- a/packages/component-manuscript/src/atoms/index.js +++ b/packages/component-manuscript/src/atoms/index.js @@ -16,8 +16,10 @@ const Title = styled.div` ${defaultText}; font-size: ${th('fontSizeBase')}; color: ${th('colorPrimary')}; - margin-bottom: ${th('gridUnit')}; text-align: left; + p { + margin: 0; + } ` const Container = styled.div` @@ -35,6 +37,8 @@ const Header = styled.div` align-items: center; display: flex; flex-direction: row; + margin-bottom: ${th('subGridUnit')}; + flex-wrap: wrap; ` const BreadCrumbs = styled.div` @@ -62,7 +66,7 @@ const ManuscriptId = styled.div` ${defaultText}; color: ${th('colorPrimary')}; font-size: ${th('fontSizeBase')}; - margin-right: 8px; + margin-right: ${th('subGridUnit')}; text-align: left; text-transform: uppercase; white-space: nowrap; @@ -74,7 +78,6 @@ const LeftDetails = styled.div` justify-content: flex-start; align-items: center; flex: ${({ flex }) => flex || 1}; - max-width: 75%; ` const RightDetails = styled.div` @@ -83,7 +86,6 @@ const RightDetails = styled.div` justify-content: flex-end; align-items: center; flex: ${({ flex }) => flex || 1}; - max-width: 75%; ` const StatusLabel = styled.div` @@ -102,6 +104,30 @@ const DateField = styled.span` margin: 0 ${th('subGridUnit')}; text-align: left; ` +const Row = styled.div` + display: flex; + flex-direction: row; + align-items: center; + width: 100%; + box-sizing: border-box; + flex-wrap: wrap; +` + +const ManuscriptType = styled.div` + ${defaultText}; + padding: ${th('subGridUnit')}; + margin-left: calc(${th('subGridUnit')}*2); + text-align: right; + text-transform: capitalize; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +` + +const ManuscriptHeader = styled.div` + border-bottom: ${th('borderDefault')}; + padding-bottom: calc(${th('subGridUnit')}*2); +` export { Root, @@ -109,10 +135,13 @@ export { Header, Title, ManuscriptId, + ManuscriptType, Container, SideBar, LeftDetails, RightDetails, StatusLabel, DateField, + Row, + ManuscriptHeader, } diff --git a/packages/component-manuscript/src/components/ManuscriptDetails.js b/packages/component-manuscript/src/components/ManuscriptDetails.js deleted file mode 100644 index fbef181efe918f594fa3bf896e622113241ca8eb..0000000000000000000000000000000000000000 --- a/packages/component-manuscript/src/components/ManuscriptDetails.js +++ /dev/null @@ -1,15 +0,0 @@ -import React, { Fragment } from 'react' -// import { AuthorsWithTooltip } from '@pubsweet/ui' - -import { Title } from '../atoms' - -import AuthorsWithTooltip from '../molecules/AuthorsWithTooltip' - -const ManuscriptDetails = ({ version, project }) => ( - <Fragment> - <Title dangerouslySetInnerHTML={{ __html: version.metadata.title }} /> - <AuthorsWithTooltip authors={project.authors} /> - </Fragment> -) - -export default ManuscriptDetails diff --git a/packages/component-manuscript/src/components/ManuscriptHeader.js b/packages/component-manuscript/src/components/ManuscriptHeader.js new file mode 100644 index 0000000000000000000000000000000000000000..03f49d508ad381bf1e057127748ada78814c2ded --- /dev/null +++ b/packages/component-manuscript/src/components/ManuscriptHeader.js @@ -0,0 +1,45 @@ +import React from 'react' +import { get } from 'lodash' +// import { AuthorsWithTooltip } from '@pubsweet/ui' + +import { + Title, + LeftDetails, + RightDetails, + Row, + StatusLabel, + DateField, + ManuscriptType, + ManuscriptHeader, +} from '../atoms' + +import { parseVersion, parseJournalIssue, mapStatusToLabel } from './utils' +import AuthorsWithTooltip from '../molecules/AuthorsWithTooltip' + +const ManuscriptDetails = ({ version, project, journal }) => { + const { submitted, title, type } = parseVersion(version) + const metadata = get(version, 'metadata') + const journalIssueType = parseJournalIssue(journal, metadata) + const manuscriptMeta = `${type} - ${ + journalIssueType ? journalIssueType.label : 'N/A' + }` + return ( + <ManuscriptHeader> + <Title dangerouslySetInnerHTML={{ __html: title }} /> + <Row> + <LeftDetails flex={3}> + <StatusLabel>{mapStatusToLabel(project)}</StatusLabel> + <DateField>{submitted || ''}</DateField> + </LeftDetails> + <RightDetails flex={4}> + <ManuscriptType title={manuscriptMeta}> + {manuscriptMeta} + </ManuscriptType> + </RightDetails> + </Row> + <AuthorsWithTooltip authors={project.authors} /> + </ManuscriptHeader> + ) +} + +export default ManuscriptDetails diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js index 7c852d0b8b10e13ee83053da03f3897a090347ad..e0bf2d3911b519621facfe53f1c2dbb3b2224853 100644 --- a/packages/component-manuscript/src/components/ManuscriptLayout.js +++ b/packages/component-manuscript/src/components/ManuscriptLayout.js @@ -1,6 +1,7 @@ import React from 'react' -import ManuscriptDetails from './ManuscriptDetails' +import ManuscriptHeader from './ManuscriptHeader' +import ManuscriptVersion from './ManuscriptVersion' import { Root, BreadCrumbs, @@ -8,6 +9,8 @@ import { ManuscriptId, Container, SideBar, + LeftDetails, + RightDetails, } from '../atoms' const ManuscriptLayout = ({ @@ -15,17 +18,23 @@ const ManuscriptLayout = ({ updateManuscript, project, version, + journal, }) => ( <Root> <Container flex={3}> <Header> - <BreadCrumbs> - <span>Dashboard</span> - <span>Manuscript Details</span> - </BreadCrumbs> - <ManuscriptId>{`- ID ${project.customId}`}</ManuscriptId> + <LeftDetails> + <BreadCrumbs> + <span>Dashboard</span> + <span>Manuscript Details</span> + </BreadCrumbs> + <ManuscriptId>{`- ID ${project.customId}`}</ManuscriptId> + </LeftDetails> + <RightDetails> + <ManuscriptVersion project={project} /> + </RightDetails> </Header> - <ManuscriptDetails project={project} version={version} /> + <ManuscriptHeader journal={journal} project={project} version={version} /> </Container> <SideBar flex={1}>Sidebar</SideBar> </Root> diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js index 091de333fb7acdc054de6f5cb42156ec29ce8030..0179406874f89e00b929d56de0f74446ddc48cbe 100644 --- a/packages/component-manuscript/src/components/ManuscriptPage.js +++ b/packages/component-manuscript/src/components/ManuscriptPage.js @@ -1,6 +1,7 @@ import { connect } from 'react-redux' import { actions } from 'pubsweet-client' import { ConnectPage } from 'xpub-connect' +import { withJournal } from 'xpub-journal' import { selectCurrentUser, selectCollection, @@ -14,6 +15,7 @@ import { parseSearchParams, redirectToError } from './utils' import { reviewerDecision } from '../../../components-faraday/src/redux/reviewers' export default compose( + withJournal, ConnectPage(({ match }) => [ actions.getCollection({ id: match.params.project }), actions.getFragment( diff --git a/packages/component-manuscript/src/components/ManuscriptVersion.js b/packages/component-manuscript/src/components/ManuscriptVersion.js new file mode 100644 index 0000000000000000000000000000000000000000..ddad835f7ccda0f60b9f15923105b039f3151d40 --- /dev/null +++ b/packages/component-manuscript/src/components/ManuscriptVersion.js @@ -0,0 +1,27 @@ +import React from 'react' +import { get } from 'lodash' +import { Menu } from '@pubsweet/ui' +import { compose } from 'recompose' +import { connect } from 'react-redux' +import { selectFragments } from 'xpub-selectors' +import { withRouter } from 'react-router-dom' + +import { parseVersionOptions } from './utils' + +const ManuscriptVersion = ({ project, fragments, history, match }) => ( + <Menu + inline + onChange={v => + history.push(`/projects/${project.id}/versions/${v}/details`) + } + options={parseVersionOptions(fragments)} + value={get(match, 'params.version')} + /> +) + +export default compose( + withRouter, + connect((state, { project }) => ({ + fragments: selectFragments(state, project.fragments), + })), +)(ManuscriptVersion) diff --git a/packages/component-manuscript/src/components/utils.js b/packages/component-manuscript/src/components/utils.js index 9aed3777b03c8afb27cc7556190c9f7d1130ae83..0fb7764d1db83459daa972501fdd4b3bc1afe763 100644 --- a/packages/component-manuscript/src/components/utils.js +++ b/packages/component-manuscript/src/components/utils.js @@ -1,15 +1,76 @@ -/* eslint-disable */ -import { get } from 'lodash' +import moment from 'moment' +import { get, find, capitalize } from 'lodash' + +export const parseTitle = version => { + const title = get(version, 'metadata.title') + if (title) { + return title.replace(/<p[^>]*>/g, '').replace(/<\/p>/g, '') + } + return 'Untitled' +} + +export const parseAuthor = version => { + const author = find(get(version, 'authors'), a => a.isSubmitting) + return author ? `${author.firstName} ${author.lastName}` : 'N/A' +} + +export const parseType = version => { + const type = get(version, 'metadata.type') + return type ? type.replace('-', ' ') : 'N/A' +} + +export const parseSubmissionDate = version => { + const submitted = get(version, 'submitted') + const submittedDate = moment(submitted) + const today = moment() + const daysAgo = moment.duration(today - moment(submitted)).days() + return submitted + ? `${submittedDate.format('DD.MM.YYYY')} ${ + daysAgo > 0 ? `(${daysAgo} days)` : '' + }` + : 'N/A' +} + +export const mapStatusToLabel = ({ visibleStatus, status }) => { + if (visibleStatus) { + return visibleStatus + } else if (status) { + return capitalize(status) + } + return 'Draft' +} + +export const parseVersion = version => ({ + author: parseAuthor(version), + title: parseTitle(version), + submitted: parseSubmissionDate(version), + type: parseType(version), + abstract: get(version, 'metadata.abstract'), + version: get(version, 'version'), +}) + +export const parseJournalIssue = (journal, metadata) => + journal.issueTypes.find(t => t.value === get(metadata, 'issue')) export const parseSearchParams = url => { const params = new URLSearchParams(url) const parsedObject = {} + /* eslint-disable */ for ([key, value] of params) { parsedObject[key] = value } + /* eslint-enable */ return parsedObject } +export const parseVersionOptions = fragments => + fragments.map(f => ({ + value: f.id, + label: `Version ${f.version} - updated on ${moment(f.submitted).format( + 'DD.MM.YYYY', + )}`, + })) + const alreadyAnswered = `You have already answered this invitation.` export const redirectToError = redirectFn => err => { const errorText = get(JSON.parse(err.response), 'error') diff --git a/packages/component-wizard/src/components/WizardFormStep.js b/packages/component-wizard/src/components/WizardFormStep.js index b50d4d3e408bc85af1d024e385aa8aa350fa8486..f28662bbe5a2f8f787844e91eefa160121af7087 100644 --- a/packages/component-wizard/src/components/WizardFormStep.js +++ b/packages/component-wizard/src/components/WizardFormStep.js @@ -54,7 +54,11 @@ const submitManuscript = ( ), ) .then(() => { - history.push(redirectPath, { project: project.id, version: version.id }) + history.push(redirectPath, { + project: project.id, + customId: project.customId, + version: version.id, + }) }) .catch(error => { if (error.validationErrors) { diff --git a/packages/components-faraday/src/components/Dashboard/DashboardCard.js b/packages/components-faraday/src/components/Dashboard/DashboardCard.js index dfcffae0388b09700a6f4b1eeda3fe7202a171b1..d85713ebe1c0fa703db0c99ea50dd551b665dd90 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardCard.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardCard.js @@ -279,7 +279,7 @@ const LeftDetails = styled.div` justify-content: flex-start; align-items: center; flex: ${({ flex }) => flex || 1}; - max-width: 75%; + flex-wrap: wrap; ` const RightDetails = styled.div` @@ -288,7 +288,7 @@ const RightDetails = styled.div` justify-content: flex-end; align-items: center; flex: ${({ flex }) => flex || 1}; - max-width: 75%; + flex-wrap: wrap; ` const DetailsView = styled.div` @@ -355,6 +355,7 @@ const Top = styled.div` padding: 10px; width: 100%; box-sizing: border-box; + flex-wrap: wrap; ` const Bottom = styled.div` display: flex; @@ -363,6 +364,7 @@ const Bottom = styled.div` width: 100%; box-sizing: border-box; justify-content: space-between; + flex-wrap: wrap; ` const ManuscriptType = styled.div` diff --git a/packages/components-faraday/src/components/Files/Files.js b/packages/components-faraday/src/components/Files/Files.js index e7213fe79e52c59eafd318660a777a46d68f82cb..8f95fb3a7ef3170984a02a601eae628d95d64fd5 100644 --- a/packages/components-faraday/src/components/Files/Files.js +++ b/packages/components-faraday/src/components/Files/Files.js @@ -111,10 +111,15 @@ export default compose( }, }), withHandlers({ - previewFile: ({ getSignedUrl, files, getFileName }) => fileId => e => { + previewFile: ({ + files, + version, + getFileName, + getSignedUrl, + }) => fileId => e => { e.preventDefault() const windowReference = window.open() - getSignedUrl(fileId).then(({ signedUrl, ...rest }) => { + getSignedUrl(version.id, fileId).then(({ signedUrl, ...rest }) => { windowReference.location = signedUrl }) }, diff --git a/packages/components-faraday/src/components/Reviewers/InviteReviewers.js b/packages/components-faraday/src/components/Reviewers/InviteReviewers.js index 557a86d74a3d7611fa11bed856b3c5eefccb0f12..bd6dc66d48f04bfe823b91985e52472e79840fd9 100644 --- a/packages/components-faraday/src/components/Reviewers/InviteReviewers.js +++ b/packages/components-faraday/src/components/Reviewers/InviteReviewers.js @@ -16,6 +16,7 @@ import { selectReviewersError, selectFetchingReviewers, getCollectionReviewers, + clearReviewersError, } from '../../redux/reviewers' const InviteReviewers = ({ showInviteModal }) => ( @@ -110,11 +111,18 @@ const ModalSwitcher = compose( }) export default compose( + connect(null, { clearReviewersError }), withModal2(props => ({ modalComponent: ModalSwitcher, })), withHandlers({ - showInviteModal: ({ showModal, hideModal, project }) => () => { + showInviteModal: ({ + project, + hideModal, + showModal, + clearReviewersError, + }) => () => { + clearReviewersError() showModal({ type: 'invite-reviewers', collectionId: project.id, diff --git a/packages/components-faraday/src/components/UIComponents/ConfirmationPage.js b/packages/components-faraday/src/components/UIComponents/ConfirmationPage.js index 759032ff1a777c1358b33a8c45ec2b8fefd72e41..bc6a07e7d0728576a4988c7ae6af722732f64661 100644 --- a/packages/components-faraday/src/components/UIComponents/ConfirmationPage.js +++ b/packages/components-faraday/src/components/UIComponents/ConfirmationPage.js @@ -34,9 +34,9 @@ const ConfirmationPage = ({ <a href={`/projects/${state.project}/versions/${ state.version - }/manuscript`} + }/details`} > - {state.project} + {state.customId} </a> </b>. </p> diff --git a/packages/components-faraday/src/redux/files.js b/packages/components-faraday/src/redux/files.js index a296178e9e7e0b996ba035bdf84adf4000529b24..df9608cadc702ca445b6f14e9ba55acf457717f0 100644 --- a/packages/components-faraday/src/redux/files.js +++ b/packages/components-faraday/src/redux/files.js @@ -90,7 +90,8 @@ export const deleteFile = fileId => dispatch => { .catch(err => dispatch(removeFailure(err.message))) } -export const getSignedUrl = fileId => dispatch => get(`/files/${fileId}`) +export const getSignedUrl = (fragmentId, fileId) => dispatch => + get(`/files/${fragmentId}/${fileId}`) // reducer export default (state = initialState, action) => { diff --git a/packages/components-faraday/src/redux/reviewers.js b/packages/components-faraday/src/redux/reviewers.js index 7678362184dadde9df289656d5e1a47763da2874..05ca433eead3cff0ea88ee40c15bc33c6a7ac391 100644 --- a/packages/components-faraday/src/redux/reviewers.js +++ b/packages/components-faraday/src/redux/reviewers.js @@ -66,6 +66,11 @@ const initialState = { reviewers: [], } +const CLEAR_ERROR = 'reviewers/CLEAR_ERROR' +export const clearReviewersError = () => ({ + type: CLEAR_ERROR, +}) + // selectors export const selectReviewers = state => get(state, 'reviewers.reviewers') || [] export const selectReviewersError = state => get(state, 'reviewers.error') @@ -246,6 +251,12 @@ export default (state = initialState, action = {}) => { }, error: null, } + case CLEAR_ERROR: { + return { + ...state, + error: null, + } + } default: return state } diff --git a/packages/xpub-faraday/package.json b/packages/xpub-faraday/package.json index d8a4b5d985bc3eea5dcff78beab23086b9774fed..2eb73265177e4fcdb67a308ec4adddd61a7a3940 100644 --- a/packages/xpub-faraday/package.json +++ b/packages/xpub-faraday/package.json @@ -23,7 +23,7 @@ "moment": "^2.18.1", "nodemailer-ses-transport": "^1.5.1", "prop-types": "^15.5.10", - "pubsweet": "2.1.3", + "pubsweet": "^2.2.1", "pubsweet-client": "^2.2.2", "pubsweet-component-login": "^1.1.0", "pubsweet-component-signup": "^1.0.0", diff --git a/yarn.lock b/yarn.lock index 270f9a283e25ad0c2358b0486028ed5ef79df5d5..b3ff38cbf9403bf4d5b8c782fdef4144440e7d72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -97,16 +97,16 @@ aws-sdk "^2.185.0" nodemailer "^4.4.2" -"@pubsweet/db-manager@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@pubsweet/db-manager/-/db-manager-1.0.3.tgz#e8784c87eee958ed17daa12f54625774bd2fd277" +"@pubsweet/db-manager@^1.0.10": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@pubsweet/db-manager/-/db-manager-1.0.10.tgz#88d9f935cb04943ea150ef3820810f792bb6308e" dependencies: "@pubsweet/logger" "^0.2.2" fs-extra "^4.0.2" isomorphic-fetch "^2.2.1" joi "^13.1.0" pg "^7.4.1" - pubsweet-server "^2.0.3" + pubsweet-server "^6.1.0" "@pubsweet/default-theme@^0.2.0": version "0.2.0" @@ -223,6 +223,28 @@ redux-form "^7.0.3" styled-components "^2.4.0" +"@pubsweet/ui@^3.3.3": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@pubsweet/ui/-/ui-3.3.4.tgz#f4dda1e900268a7c460f01aec40da187518b6363" + dependencies: + babel-jest "^21.2.0" + classnames "^2.2.5" + enzyme "^3.2.0" + enzyme-adapter-react-16 "^1.1.1" + invariant "^2.2.3" + lodash "^4.17.4" + prop-types "^15.5.10" + react "^16.2.0" + react-dom "^16.2.0" + react-feather "^1.0.8" + react-redux "^5.0.2" + react-router-dom "^4.2.2" + react-tag-autocomplete "^5.5.0" + recompose "^0.26.0" + redux "^3.6.0" + redux-form "^7.0.3" + styled-components "^3.2.5" + "@types/node@*": version "9.4.6" resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.6.tgz#d8176d864ee48753d053783e4e463aec86b8d82e" @@ -650,6 +672,10 @@ authsome@0.0.9: version "0.0.9" resolved "https://registry.yarnpkg.com/authsome/-/authsome-0.0.9.tgz#08b34f1797b3539e6a362f0fb11a01ae0613f928" +authsome@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/authsome/-/authsome-0.1.0.tgz#4152e666afcaa7f7c51ddbed94145ad7105904d9" + autoprefixer@^6.3.1: version "6.7.7" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" @@ -4558,6 +4584,12 @@ invariant@^2.0.0, invariant@^2.1.0, invariant@^2.2.0, invariant@^2.2.1, invarian dependencies: loose-envify "^1.0.0" +invariant@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + dependencies: + loose-envify "^1.0.0" + invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" @@ -7308,7 +7340,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prompt@^1.0.0, prompt@flatiron/prompt#1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87: +prompt@^1.0.0, "prompt@github:flatiron/prompt#1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87": version "1.0.0" resolved "https://codeload.github.com/flatiron/prompt/tar.gz/1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87" dependencies: @@ -7483,7 +7515,7 @@ pubsweet-component-signup@^1.0.0: react-router "^4.2.0" redux "^3.7.2" -pubsweet-server@2.0.3, pubsweet-server@^2.0.3: +pubsweet-server@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/pubsweet-server/-/pubsweet-server-2.0.3.tgz#97d36cec0e2f4f0c2955fb0b0de73206ec05fe69" dependencies: @@ -7521,15 +7553,57 @@ pubsweet-server@2.0.3, pubsweet-server@^2.0.3: uuid "^3.0.1" winston "^2.2.0" +pubsweet-server@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/pubsweet-server/-/pubsweet-server-6.1.0.tgz#038b8fdb08717c1b701f175030546492f387303c" + dependencies: + "@pubsweet/logger" "^0.2.2" + apollo-server-express "^1.3.2" + apollo-upload-server "^4.0.2" + authsome "^0.1.0" + bcrypt "^1.0.2" + bluebird "^3.5.1" + body-parser "^1.15.2" + colors "^1.1.2" + config "^1.26.2" + cookie-parser "^1.4.3" + dotenv "^4.0.0" + express "^4.16.1" + graphql "^0.12.3" + graphql-tools "^2.18.0" + helmet "^3.8.1" + http-status-codes "^1.0.6" + joi "^13.1.0" + jsonwebtoken "^7.1.7" + lodash "^4.0.0" + minimist "^1.2.0" + morgan "^1.8.2" + multer "^1.1.0" + passport "^0.3.2" + passport-anonymous "^1.0.1" + passport-http-bearer "^1.0.1" + passport-local "^1.0.0" + pg "^7.4.1" + promise-queue "^2.2.3" + prompt "^1.0.0" + pubsweet-sse "^1.0.0" + require-relative "^0.8.7" + uuid "^3.0.1" + winston "^2.2.0" + pubsweet-sse@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/pubsweet-sse/-/pubsweet-sse-0.1.4.tgz#1ff38a230143cbd487a8d44afb28a6c4746ee464" -pubsweet@2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/pubsweet/-/pubsweet-2.1.3.tgz#bbf7b748a356f9685cf09f14f10ad89ebc0c5a1e" +pubsweet-sse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pubsweet-sse/-/pubsweet-sse-1.0.0.tgz#dd36aa378a302b518d417b545b064da65aec876a" + +pubsweet@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/pubsweet/-/pubsweet-2.2.1.tgz#6191303105c8d531a16de7090b89aec8f451a454" dependencies: - "@pubsweet/db-manager" "^1.0.3" + "@pubsweet/db-manager" "^1.0.10" "@pubsweet/logger" "^0.2.2" bluebird "^3.5.0" colors "^1.1.2" @@ -7539,7 +7613,7 @@ pubsweet@2.1.3: fs-extra "^4.0.2" inflection "^1.12.0" prompt flatiron/prompt#1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87 - pubsweet-server "^2.0.3" + pubsweet-server "^6.1.0" require-relative "^0.8.7" uuid "^3.0.1" webpack "^3.8.1" @@ -7740,6 +7814,10 @@ react-hot-loader@^3.1.1: redbox-react "^1.3.6" source-map "^0.6.1" +react-is@^16.3.1: + version "16.3.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.3.2.tgz#f4d3d0e2f5fbb6ac46450641eb2e25bf05d36b22" + react-overlays@^0.8.0: version "0.8.3" resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.8.3.tgz#fad65eea5b24301cca192a169f5dddb0b20d3ac5" @@ -8906,6 +8984,21 @@ styled-components@^3.1.6: stylis-rule-sheet "^0.0.7" supports-color "^3.2.3" +styled-components@^3.2.5: + version "3.2.6" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-3.2.6.tgz#99e6e75a746bdedd295a17e03dd1493055a1cc3b" + dependencies: + buffer "^5.0.3" + css-to-react-native "^2.0.3" + fbjs "^0.8.16" + hoist-non-react-statics "^2.5.0" + is-plain-object "^2.0.1" + prop-types "^15.5.4" + react-is "^16.3.1" + stylis "^3.5.0" + stylis-rule-sheet "^0.0.10" + supports-color "^3.2.3" + styled-normalize@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/styled-normalize/-/styled-normalize-3.0.1.tgz#217efb96598690addd04699ca71af0db3473fea2" @@ -8980,6 +9073,10 @@ stylelint@^8.2.0: svg-tags "^1.0.0" table "^4.0.1" +stylis-rule-sheet@^0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" + stylis-rule-sheet@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.7.tgz#5c51dc879141a61821c2094ba91d2cbcf2469c6c" @@ -8988,6 +9085,10 @@ stylis@^3.4.0: version "3.4.10" resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.4.10.tgz#a135cab4b9ff208e327fbb5a6fde3fa991c638ee" +stylis@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.0.tgz#016fa239663d77f868fef5b67cf201c4b7c701e1" + sugarss@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-1.0.1.tgz#be826d9003e0f247735f92365dc3fd7f1bae9e44" @@ -9931,6 +10032,16 @@ xmlbuilder@4.2.1, xmlbuilder@^4.1.0: dependencies: lodash "^4.0.0" +xpub-connect@^0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/xpub-connect/-/xpub-connect-0.0.10.tgz#453fa33f6717c4b70afdd1248baee63c478facfc" + dependencies: + "@pubsweet/ui" "^3.3.3" + react-redux "^5.0.2" + react-router-dom "^4.2.2" + recompose "^0.26.0" + styled-components "^3.2.5" + xpub-connect@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/xpub-connect/-/xpub-connect-0.0.3.tgz#84d7293dc939624c7b4305ca6dc1e2e355aed4d4" @@ -9972,6 +10083,10 @@ xpub-selectors@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/xpub-selectors/-/xpub-selectors-0.0.3.tgz#0ddb67feeebb20936c68567ef874543e5e6f05b9" +xpub-selectors@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/xpub-selectors/-/xpub-selectors-0.0.5.tgz#bb728826c65e55f607677db007d0a04440f6c12e" + xpub-styleguide@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/xpub-styleguide/-/xpub-styleguide-0.0.3.tgz#91fd6000956d61f40a730a3f963082a7b4fba54d"