@manuscripts/article-editor 1.13.26 → 1.13.27-LEAN-3304.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/dist/cjs/components/projects/CommentList.js +4 -4
- package/dist/cjs/components/projects/CommentList.js.map +1 -1
- package/dist/cjs/components/projects/CommentsTab.js +1 -1
- package/dist/cjs/components/projects/CommentsTab.js.map +1 -1
- package/dist/cjs/hooks/use-create-editor.js +1 -4
- package/dist/cjs/hooks/use-create-editor.js.map +1 -1
- package/dist/cjs/hooks/use-handle-snapshot.js +25 -45
- package/dist/cjs/hooks/use-handle-snapshot.js.map +1 -1
- package/dist/cjs/postgres-data/Api.js +4 -24
- package/dist/cjs/postgres-data/Api.js.map +1 -1
- package/dist/cjs/postgres-data/PsSource.js +5 -43
- package/dist/cjs/postgres-data/PsSource.js.map +1 -1
- package/dist/cjs/postgres-data/buildData.js +34 -159
- package/dist/cjs/postgres-data/buildData.js.map +1 -1
- package/dist/cjs/postgres-data/buildUtilities.js +84 -229
- package/dist/cjs/postgres-data/buildUtilities.js.map +1 -1
- package/dist/cjs/postgres-data/savingUtilities.js +2 -21
- package/dist/cjs/postgres-data/savingUtilities.js.map +1 -1
- package/dist/cjs/quarterback/api/methods.js.map +1 -1
- package/dist/cjs/store/Store.js.map +1 -1
- package/dist/es/components/projects/CommentList.js +4 -4
- package/dist/es/components/projects/CommentList.js.map +1 -1
- package/dist/es/components/projects/CommentsTab.js +1 -1
- package/dist/es/components/projects/CommentsTab.js.map +1 -1
- package/dist/es/hooks/use-create-editor.js +1 -4
- package/dist/es/hooks/use-create-editor.js.map +1 -1
- package/dist/es/hooks/use-handle-snapshot.js +25 -45
- package/dist/es/hooks/use-handle-snapshot.js.map +1 -1
- package/dist/es/postgres-data/Api.js +4 -24
- package/dist/es/postgres-data/Api.js.map +1 -1
- package/dist/es/postgres-data/PsSource.js +4 -19
- package/dist/es/postgres-data/PsSource.js.map +1 -1
- package/dist/es/postgres-data/buildData.js +34 -157
- package/dist/es/postgres-data/buildData.js.map +1 -1
- package/dist/es/postgres-data/buildUtilities.js +84 -231
- package/dist/es/postgres-data/buildUtilities.js.map +1 -1
- package/dist/es/postgres-data/savingUtilities.js +1 -19
- package/dist/es/postgres-data/savingUtilities.js.map +1 -1
- package/dist/es/quarterback/api/methods.js.map +1 -1
- package/dist/es/store/Store.js.map +1 -1
- package/dist/types/postgres-data/Api.d.ts +3 -6
- package/dist/types/postgres-data/PsSource.d.ts +2 -3
- package/dist/types/postgres-data/buildData.d.ts +1 -16
- package/dist/types/postgres-data/buildUtilities.d.ts +2 -30
- package/dist/types/postgres-data/savingUtilities.d.ts +0 -11
- package/dist/types/quarterback/api/document.d.ts +36 -6
- package/dist/types/quarterback/api/methods.d.ts +8 -1
- package/dist/types/store/Store.d.ts +5 -38
- package/dist/types/store/buildStateFromSources.d.ts +1 -1
- package/package.json +2 -2
- package/dist/cjs/lib/collaborators.js +0 -24
- package/dist/cjs/lib/collaborators.js.map +0 -1
- package/dist/es/lib/collaborators.js +0 -20
- package/dist/es/lib/collaborators.js.map +0 -1
- package/dist/types/lib/collaborators.d.ts +0 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-create-editor.js","sourceRoot":"","sources":["../../../src/hooks/use-create-editor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEpD,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,MAAM,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEtC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,CACJ,EACE,GAAG,EACH,UAAU,EACV,OAAO,EACP,IAAI,EACJ,
|
|
1
|
+
{"version":3,"file":"use-create-editor.js","sourceRoot":"","sources":["../../../src/hooks/use-create-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,63 +11,43 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { usePermissions } from '@manuscripts/style-guide';
|
|
13
13
|
import { trackCommands } from '@manuscripts/track-changes-plugin';
|
|
14
|
-
import { saveDoc } from '../postgres-data/savingUtilities';
|
|
15
|
-
import { post } from '../quarterback/api/methods';
|
|
16
14
|
import { getDocWithoutTrackContent } from '../quarterback/getDocWithoutTrackContent';
|
|
17
15
|
import { useStore } from '../store';
|
|
18
16
|
import useExecCmd from './use-exec-cmd';
|
|
19
17
|
export const useHandleSnapshot = (view) => {
|
|
20
|
-
const [{
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
authToken: store.authToken,
|
|
24
|
-
snapshots: store.snapshots,
|
|
25
|
-
snapshotsMap: store.snapshotsMap,
|
|
26
|
-
modelMap: store.modelMap,
|
|
27
|
-
bulkUpdate: store.bulkUpdate,
|
|
18
|
+
const [{ saveDoc, createSnapshot, beforeUnload }] = useStore((store) => ({
|
|
19
|
+
createSnapshot: store.createSnapshot,
|
|
20
|
+
saveDoc: store.saveDoc,
|
|
28
21
|
beforeUnload: store.beforeUnload,
|
|
29
22
|
}));
|
|
30
23
|
const can = usePermissions();
|
|
31
24
|
const canApplySaveChanges = can.applySaveChanges;
|
|
32
|
-
const saveSnapshot = async (projectID, manuscriptID) => {
|
|
33
|
-
const resp = await post(`snapshot/${projectID}/manuscript/${manuscriptID}`, authToken, {
|
|
34
|
-
docID: manuscriptID,
|
|
35
|
-
name: new Date().toLocaleString('sv'),
|
|
36
|
-
});
|
|
37
|
-
if ('data' in resp) {
|
|
38
|
-
const { snapshot, ...label } = resp.data.snapshot;
|
|
39
|
-
dispatch({
|
|
40
|
-
snapshots: [...snapshots, label],
|
|
41
|
-
snapshotsMap: snapshotsMap.set(label.id, resp.data.snapshot),
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
return resp;
|
|
45
|
-
};
|
|
46
25
|
const execCmd = useExecCmd();
|
|
47
26
|
return async () => {
|
|
27
|
+
if (!view) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
48
30
|
// if there is a pending throttle or potentially other pending action, we need to make sure it's done before we proceed wrapping the current step
|
|
49
31
|
beforeUnload && beforeUnload();
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
});
|
|
70
|
-
}
|
|
32
|
+
await createSnapshot();
|
|
33
|
+
execCmd(trackCommands.applyAndRemoveChanges(), view);
|
|
34
|
+
return new Promise((resolve, reject) => {
|
|
35
|
+
setTimeout(() => {
|
|
36
|
+
const state = view.state;
|
|
37
|
+
if (!state) {
|
|
38
|
+
reject(new Error('State is not available'));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (!canApplySaveChanges) {
|
|
42
|
+
return resolve();
|
|
43
|
+
}
|
|
44
|
+
saveDoc(getDocWithoutTrackContent(state))
|
|
45
|
+
.then(() => {
|
|
46
|
+
resolve();
|
|
47
|
+
})
|
|
48
|
+
.catch(() => reject(new Error('Cannot save to api. Check connection.')));
|
|
49
|
+
}, 900); // to avoid potentially saving before the changes are applied
|
|
50
|
+
});
|
|
71
51
|
};
|
|
72
52
|
};
|
|
73
53
|
//# sourceMappingURL=use-handle-snapshot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-handle-snapshot.js","sourceRoot":"","sources":["../../../src/hooks/use-handle-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AAGjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"use-handle-snapshot.js","sourceRoot":"","sources":["../../../src/hooks/use-handle-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AAGjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,UAAU,MAAM,gBAAgB,CAAA;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAiB,EAAE,EAAE;IACrD,MAAM,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvE,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK,CAAC,YAAY;KACjC,CAAC,CAAC,CAAA;IACH,MAAM,GAAG,GAAG,cAAc,EAAE,CAAA;IAC5B,MAAM,mBAAmB,GAAG,GAAG,CAAC,gBAAgB,CAAA;IAChD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAE5B,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,CAAC,IAAI,EAAE;YACT,OAAM;SACP;QACD,iJAAiJ;QACjJ,YAAY,IAAI,YAAY,EAAE,CAAA;QAC9B,MAAM,cAAc,EAAE,CAAA;QACtB,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,EAAE,IAAI,CAAC,CAAA;QACpD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;gBACxB,IAAI,CAAC,KAAK,EAAE;oBACV,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAA;oBAC3C,OAAM;iBACP;gBACD,IAAI,CAAC,mBAAmB,EAAE;oBACxB,OAAO,OAAO,EAAE,CAAA;iBACjB;gBAED,OAAO,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;qBACtC,IAAI,CAAC,GAAG,EAAE;oBACT,OAAO,EAAE,CAAA;gBACX,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,EAAE,CACV,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAC3D,CAAA;YACL,CAAC,EAAE,GAAG,CAAC,CAAA,CAAC,6DAA6D;QACvE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -54,37 +54,17 @@ export default class Api {
|
|
|
54
54
|
? this.get(`/csl/styles?id=${bundle.csl._id}`)
|
|
55
55
|
: undefined;
|
|
56
56
|
this.getUserProfiles = (containerID) => this.get(`/project/${containerID}/userProfiles`);
|
|
57
|
-
this.signUpAndGetToken = async (username, password, name) => {
|
|
58
|
-
await this.post('/registration/signup', {
|
|
59
|
-
username,
|
|
60
|
-
password,
|
|
61
|
-
name,
|
|
62
|
-
});
|
|
63
|
-
const result = await this.get('user');
|
|
64
|
-
return result?.token;
|
|
65
|
-
};
|
|
66
57
|
this.saveProject = (projectId, models) => {
|
|
67
58
|
return this.put(`project/${projectId}`, { data: models });
|
|
68
59
|
};
|
|
69
60
|
this.createProject = (projectId, title) => {
|
|
70
61
|
return this.post(`project/${projectId}`, { title });
|
|
71
62
|
};
|
|
72
|
-
this.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
'MPManuscriptTemplate:www-zotero-org-styles-plos-one-PLOS-ONE-Journal-Publication';
|
|
77
|
-
console.log("Applying development templateID as there was no real ID provided on new manuscript creation. This is because API doesn't allow no templateID but it used to be allowed on CouchDB");
|
|
78
|
-
}
|
|
79
|
-
return this.post(`projects/${projectID}/manuscript/${manuscriptID}`, {
|
|
80
|
-
templateID,
|
|
81
|
-
});
|
|
82
|
-
};
|
|
83
|
-
this.saveProjectData = async (projectID, data) => {
|
|
84
|
-
await this.put(`project/${projectID}`, {
|
|
85
|
-
data,
|
|
63
|
+
this.createSnapshot = (projectID, manuscriptID) => {
|
|
64
|
+
return this.post(`snapshot/${projectID}/manuscript/${manuscriptID}`, {
|
|
65
|
+
docID: manuscriptID,
|
|
66
|
+
name: new Date().toLocaleString('sv'),
|
|
86
67
|
});
|
|
87
|
-
return data;
|
|
88
68
|
};
|
|
89
69
|
this.instance = axios.create({
|
|
90
70
|
baseURL: config.api.url,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Api.js","sourceRoot":"","sources":["../../../src/postgres-data/Api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Api.js","sourceRoot":"","sources":["../../../src/postgres-data/Api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import deeperEqual from '../lib/deeper-equal';
|
|
2
1
|
import Api from './Api';
|
|
3
|
-
import
|
|
4
|
-
import buildUtilities from './buildUtilities';
|
|
2
|
+
import { buildData } from './buildData';
|
|
3
|
+
import { buildUtilities } from './buildUtilities';
|
|
5
4
|
export default class PsSource {
|
|
6
5
|
constructor(files) {
|
|
7
6
|
this.updateState = (state) => {
|
|
@@ -13,26 +12,12 @@ export default class PsSource {
|
|
|
13
12
|
}
|
|
14
13
|
if (state.manuscriptID && state.projectID) {
|
|
15
14
|
this.data = await buildData(state.projectID, state.manuscriptID, this.api);
|
|
16
|
-
this.utilities = buildUtilities(() => this.data, this.api
|
|
15
|
+
this.utilities = buildUtilities(() => this.data, setState, this.api);
|
|
17
16
|
}
|
|
18
17
|
next({ ...state, ...this.data, ...this.utilities });
|
|
19
18
|
};
|
|
20
|
-
this.afterAction = (state
|
|
19
|
+
this.afterAction = (state) => {
|
|
21
20
|
this.data = state; // keep up to date for utility function
|
|
22
|
-
if (typeof state.modelMap === 'undefined') {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
if (!deeperEqual(state.modelMap, prev.modelMap)) {
|
|
26
|
-
setState((state) => {
|
|
27
|
-
const newState = {
|
|
28
|
-
...state,
|
|
29
|
-
...getDrivedData(state.projectID, state),
|
|
30
|
-
};
|
|
31
|
-
this.data = newState;
|
|
32
|
-
return newState;
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
return;
|
|
36
21
|
};
|
|
37
22
|
this.updateStore = (setState) => {
|
|
38
23
|
this.updateState = setState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PsSource.js","sourceRoot":"","sources":["../../../src/postgres-data/PsSource.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PsSource.js","sourceRoot":"","sources":["../../../src/postgres-data/PsSource.ts"],"names":[],"mappings":"AAeA,OAAO,GAAG,MAAM,OAAO,CAAA;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,CAAC,OAAO,OAAO,QAAQ;IAM3B,YAAY,KAAuB;QASnC,gBAAW,GAAG,CAAC,KAAqB,EAAE,EAAE;YACtC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,CAAA;QACzD,CAAC,CAAA;QAED,UAAK,GAAc,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACjD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE;gBACnC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;aACnC;YACD,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,SAAS,EAAE;gBACzC,IAAI,CAAC,IAAI,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC1E,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;aACrE;YACD,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QACrD,CAAC,CAAA;QACD,gBAAW,GAAG,CAAC,KAAY,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA,CAAC,uCAAuC;QAC3D,CAAC,CAAA;QACD,gBAAW,GAAG,CAAC,QAAqB,EAAE,EAAE;YACtC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAA;QAC7B,CAAC,CAAA;QA3BC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,aAAa;QACb,4BAA4B;QAC5B,oGAAoG;QACpG,yBAAyB;IAC3B,CAAC;CAsBF"}
|
|
@@ -9,78 +9,10 @@
|
|
|
9
9
|
*
|
|
10
10
|
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2019 Atypon Systems LLC. All Rights Reserved.
|
|
11
11
|
*/
|
|
12
|
-
import { ObjectTypes, } from '@manuscripts/json-schema';
|
|
13
|
-
import { Decoder,
|
|
14
|
-
import { buildCollaboratorProfiles } from '../lib/collaborators';
|
|
12
|
+
import { getModelMap, ObjectTypes, } from '@manuscripts/json-schema';
|
|
13
|
+
import { Decoder, isManuscript } from '@manuscripts/transform';
|
|
15
14
|
import { getUserRole } from '../lib/roles';
|
|
16
15
|
import { TokenData } from '../store/TokenData';
|
|
17
|
-
export const buildModelMap = async (docs) => {
|
|
18
|
-
const items = new Map();
|
|
19
|
-
const output = new Map();
|
|
20
|
-
await Promise.all(docs.map(async (doc) => {
|
|
21
|
-
items.set(doc._id, doc);
|
|
22
|
-
output.set(doc._id, getModelData(doc));
|
|
23
|
-
}));
|
|
24
|
-
// for (const model of output.values()) {
|
|
25
|
-
// @TODO images are not stored in the manuscripts api under the LW mode, but managed in the LW store.
|
|
26
|
-
// we still however need to support local image management
|
|
27
|
-
// if (isFigure(model)) {
|
|
28
|
-
// if (model.listingAttachment) {
|
|
29
|
-
// const { listingID, attachmentKey } = model.listingAttachment
|
|
30
|
-
// const listingDoc = items.get(listingID)
|
|
31
|
-
// if (listingDoc) {
|
|
32
|
-
// model.src = await getAttachment(listingDoc, attachmentKey)
|
|
33
|
-
// }
|
|
34
|
-
// } else {
|
|
35
|
-
// const figureDoc = items.get(model._id)
|
|
36
|
-
// if (figureDoc) {
|
|
37
|
-
// model.src = await getAttachment(figureDoc, 'image')
|
|
38
|
-
// }
|
|
39
|
-
// }
|
|
40
|
-
// }
|
|
41
|
-
// TODO: enable once tables can be images
|
|
42
|
-
// else if (isTable(model)) {
|
|
43
|
-
// if (model.listingAttachment) {
|
|
44
|
-
// const { listingID, attachmentKey } = model.listingAttachment
|
|
45
|
-
// const listingDoc = items.get(listingID)
|
|
46
|
-
//
|
|
47
|
-
// if (listingDoc) {
|
|
48
|
-
// model.src = await getAttachment(listingDoc, attachmentKey)
|
|
49
|
-
// }
|
|
50
|
-
// } else {
|
|
51
|
-
// const tableDoc = items.get(model._id)!
|
|
52
|
-
// model.src = await getAttachment(tableDoc, 'image')
|
|
53
|
-
// }
|
|
54
|
-
// }
|
|
55
|
-
// if (isUserProfile(model)) {
|
|
56
|
-
// const userProfileDoc = items.get(model._id)
|
|
57
|
-
// if (userProfileDoc) {
|
|
58
|
-
// model.avatar = await getAttachment(userProfileDoc, 'image')
|
|
59
|
-
// }
|
|
60
|
-
// }
|
|
61
|
-
// }
|
|
62
|
-
return output;
|
|
63
|
-
};
|
|
64
|
-
const isTag = (model) => model.objectType === ObjectTypes.Tag;
|
|
65
|
-
const isCorrection = (model) => model.objectType === ObjectTypes.Correction;
|
|
66
|
-
const isManuscriptNote = (model) => model.objectType === ObjectTypes.ManuscriptNote;
|
|
67
|
-
// Project data come along with the manuscript data. We may return to this so it's commented for now.
|
|
68
|
-
// const getProjectData = async (projectID: string, api: Api) => {
|
|
69
|
-
// const project = await api.getProject(projectID)
|
|
70
|
-
// if (project) {
|
|
71
|
-
// return project
|
|
72
|
-
// }
|
|
73
|
-
// throw new Error("Can't find the project by ID")
|
|
74
|
-
// }
|
|
75
|
-
const buildDocsMap = (docs) => {
|
|
76
|
-
const docsMap = new Map();
|
|
77
|
-
for (const doc of docs) {
|
|
78
|
-
if (doc) {
|
|
79
|
-
docsMap.set(doc._id, doc);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return docsMap;
|
|
83
|
-
};
|
|
84
16
|
const getManuscriptData = async (projectID, manuscriptID, api) => {
|
|
85
17
|
const models = await api.getManuscript(projectID, manuscriptID);
|
|
86
18
|
if (!models) {
|
|
@@ -90,37 +22,13 @@ const getManuscriptData = async (projectID, manuscriptID, api) => {
|
|
|
90
22
|
for (const model of models) {
|
|
91
23
|
if (model.objectType === ObjectTypes.Project) {
|
|
92
24
|
data.project = model;
|
|
93
|
-
continue;
|
|
94
25
|
}
|
|
95
|
-
if (isManuscript(model)) {
|
|
26
|
+
else if (isManuscript(model)) {
|
|
96
27
|
data.manuscript = model;
|
|
97
|
-
continue;
|
|
98
|
-
}
|
|
99
|
-
if (isManuscriptNote(model)) {
|
|
100
|
-
data.notes = data.notes
|
|
101
|
-
? [...data.notes, model]
|
|
102
|
-
: [model];
|
|
103
|
-
continue;
|
|
104
|
-
}
|
|
105
|
-
if (isTag(model)) {
|
|
106
|
-
data.tags = data.tags
|
|
107
|
-
? [...data.tags, model]
|
|
108
|
-
: [model];
|
|
109
|
-
continue;
|
|
110
|
-
}
|
|
111
|
-
if (isCorrection(model)) {
|
|
112
|
-
data.corrections = data.corrections
|
|
113
|
-
? [...data.corrections, model]
|
|
114
|
-
: [model];
|
|
115
|
-
}
|
|
116
|
-
if (isCommentAnnotation(model)) {
|
|
117
|
-
data.comments = data.comments
|
|
118
|
-
? [...data.comments, model]
|
|
119
|
-
: [model];
|
|
120
28
|
}
|
|
121
29
|
}
|
|
122
|
-
data.
|
|
123
|
-
data.modelMap =
|
|
30
|
+
data.notes = [];
|
|
31
|
+
data.modelMap = getModelMap(models || []);
|
|
124
32
|
const [sectionCategories, cslLocale, template] = await Promise.all([
|
|
125
33
|
api.getSectionCategories(),
|
|
126
34
|
// TODO:: config this!
|
|
@@ -128,81 +36,50 @@ const getManuscriptData = async (projectID, manuscriptID, api) => {
|
|
|
128
36
|
api.getTemplate(data.manuscript?.prototype),
|
|
129
37
|
]);
|
|
130
38
|
const bundle = await api.getBundle(template);
|
|
131
|
-
const cslStyle = await api.getCSLStyle(bundle);
|
|
132
39
|
data.sectionCategories = sectionCategories || [];
|
|
133
|
-
data.
|
|
134
|
-
data.bundle = bundle;
|
|
40
|
+
data.cslStyle = await api.getCSLStyle(bundle);
|
|
135
41
|
data.cslLocale = cslLocale;
|
|
136
|
-
data.cslStyle = cslStyle;
|
|
137
42
|
return data;
|
|
138
43
|
};
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
44
|
+
const getUserData = async (projectID, user, api) => {
|
|
45
|
+
const profilesById = new Map();
|
|
46
|
+
profilesById.set(user._id, user);
|
|
47
|
+
const profiles = await api.getUserProfiles(projectID);
|
|
48
|
+
if (profiles) {
|
|
49
|
+
for (const profile of profiles) {
|
|
50
|
+
if (profile) {
|
|
51
|
+
profilesById.set(profile._id, profile);
|
|
52
|
+
}
|
|
147
53
|
}
|
|
148
54
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
};
|
|
152
|
-
const createDoc = (data, alternatedModelMap) => {
|
|
153
|
-
if (!data.modelMap) {
|
|
154
|
-
return null;
|
|
155
|
-
}
|
|
156
|
-
const decoder = new Decoder(alternatedModelMap || data.modelMap, true);
|
|
157
|
-
const doc = decoder.createArticleNode();
|
|
158
|
-
return doc;
|
|
159
|
-
};
|
|
160
|
-
export const getDrivedData = (projectID, data) => {
|
|
161
|
-
if (!data.modelMap || !projectID) {
|
|
162
|
-
return null;
|
|
163
|
-
}
|
|
164
|
-
const storeData = {
|
|
165
|
-
snapshotID: null,
|
|
166
|
-
library: new Map(),
|
|
55
|
+
return {
|
|
56
|
+
collaboratorsById: profilesById,
|
|
167
57
|
};
|
|
168
|
-
// eslint-disable-next-line no-unsafe-optional-chaining
|
|
169
|
-
for (const model of data.modelMap?.values()) {
|
|
170
|
-
if (model.objectType === ObjectTypes.BibliographyItem) {
|
|
171
|
-
storeData.library.set(model._id, model);
|
|
172
|
-
}
|
|
173
|
-
if (model.objectType === ObjectTypes.LibraryCollection) {
|
|
174
|
-
storeData.projectLibraryCollections.set(model._id, model);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
return storeData;
|
|
178
58
|
};
|
|
179
|
-
|
|
180
|
-
|
|
59
|
+
const createDoc = (modelMap) => {
|
|
60
|
+
const decoder = new Decoder(modelMap, true);
|
|
61
|
+
return decoder.createArticleNode();
|
|
62
|
+
};
|
|
63
|
+
export const buildData = async (projectID, manuscriptID, api) => {
|
|
181
64
|
const user = await api.getUser();
|
|
182
65
|
if (!user) {
|
|
183
66
|
return {};
|
|
184
67
|
}
|
|
185
|
-
const
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
const
|
|
190
|
-
const
|
|
191
|
-
const doc = createDoc(manuscriptData, manuscriptData.modelMap);
|
|
68
|
+
const state = await getManuscriptData(projectID, manuscriptID, api);
|
|
69
|
+
const manuscript = state.manuscript;
|
|
70
|
+
const project = state.project;
|
|
71
|
+
const role = project ? getUserRole(project, user.userID) : null;
|
|
72
|
+
const users = await getUserData(projectID, user, api);
|
|
73
|
+
const doc = state.modelMap ? createDoc(state.modelMap) : null;
|
|
192
74
|
return {
|
|
193
|
-
manuscripts: [manuscriptData.manuscript],
|
|
194
|
-
/* Wierd array? In lean workflow there is always only one project and a single manuscrit in it.
|
|
195
|
-
These arrays have to be provided for components compatibility that shouldn't be changed as it is possible that it will change
|
|
196
|
-
*/
|
|
197
75
|
user,
|
|
198
|
-
manuscriptID:
|
|
199
|
-
projectID:
|
|
200
|
-
userRole,
|
|
201
|
-
...
|
|
202
|
-
...
|
|
203
|
-
...manuscriptData,
|
|
76
|
+
manuscriptID: manuscript?._id,
|
|
77
|
+
projectID: project?._id,
|
|
78
|
+
userRole: role,
|
|
79
|
+
...users,
|
|
80
|
+
...state,
|
|
204
81
|
doc,
|
|
205
82
|
tokenData: new TokenData(),
|
|
206
83
|
};
|
|
207
|
-
}
|
|
84
|
+
};
|
|
208
85
|
//# sourceMappingURL=buildData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildData.js","sourceRoot":"","sources":["../../../src/postgres-data/buildData.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"buildData.js","sourceRoot":"","sources":["../../../src/postgres-data/buildData.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACL,WAAW,EAEX,WAAW,GAGZ,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAG9C,MAAM,iBAAiB,GAAG,KAAK,EAC7B,SAAiB,EACjB,YAAoB,EACpB,GAAQ,EACR,EAAE;IACF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IAC/D,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;KACrC;IACD,MAAM,IAAI,GAAmB,EAAE,CAAA;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW,CAAC,OAAO,EAAE;YAC5C,IAAI,CAAC,OAAO,GAAG,KAAgB,CAAA;SAChC;aAAM,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;SACxB;KACF;IACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IACf,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IAEzC,MAAM,CAAC,iBAAiB,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjE,GAAG,CAAC,oBAAoB,EAAE;QAC1B,sBAAsB;QACtB,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC;QACzB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;KAC5C,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAE5C,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,IAAI,EAAE,CAAA;IAChD,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAC7C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAE1B,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,KAAK,EAAE,SAAiB,EAAE,IAAiB,EAAE,GAAQ,EAAE,EAAE;IAC3E,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAA;IAC9B,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAChC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;IACrD,IAAI,QAAQ,EAAE;QACZ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,IAAI,OAAO,EAAE;gBACX,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;aACvC;SACF;KACF;IACD,OAAO;QACL,iBAAiB,EAAE,YAAY;KAChC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,QAA4B,EAAE,EAAE;IACjD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC3C,OAAO,OAAO,CAAC,iBAAiB,EAAE,CAAA;AACpC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,SAAiB,EACjB,YAAoB,EACpB,GAAQ,EACR,EAAE;IACF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAA;IAChC,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,EAAE,CAAA;KACV;IAED,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,CAAC,CAAA;IAEnE,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAE/D,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;IAErD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAE7D,OAAO;QACL,IAAI;QACJ,YAAY,EAAE,UAAU,EAAE,GAAG;QAC7B,SAAS,EAAE,OAAO,EAAE,GAAG;QACvB,QAAQ,EAAE,IAAI;QACd,GAAG,KAAK;QACR,GAAG,KAAK;QACR,GAAG;QACH,SAAS,EAAE,IAAI,SAAS,EAAE;KAC3B,CAAA;AACH,CAAC,CAAA"}
|