@manuscripts/article-editor 1.15.3-LEAN-3604.2 → 1.15.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/cjs/EditorApp.js +11 -3
- package/dist/cjs/EditorApp.js.map +1 -1
- package/dist/cjs/Main.js +2 -4
- package/dist/cjs/Main.js.map +1 -1
- package/dist/cjs/index.js +2 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/postgres-data/PsSource.js +5 -3
- package/dist/cjs/postgres-data/PsSource.js.map +1 -1
- package/dist/cjs/postgres-data/buildUtilities.js +30 -13
- package/dist/cjs/postgres-data/buildUtilities.js.map +1 -1
- package/dist/cjs/quarterback/QuarterBackDataSource.js +9 -11
- package/dist/cjs/quarterback/QuarterBackDataSource.js.map +1 -1
- package/dist/cjs/quarterback/useLoadDoc.js +7 -7
- package/dist/cjs/quarterback/useLoadDoc.js.map +1 -1
- package/dist/cjs/store/StoreContext.js +4 -10
- package/dist/cjs/store/StoreContext.js.map +1 -1
- package/dist/es/EditorApp.js +11 -3
- package/dist/es/EditorApp.js.map +1 -1
- package/dist/es/Main.js +2 -4
- package/dist/es/Main.js.map +1 -1
- package/dist/es/index.js +2 -3
- package/dist/es/index.js.map +1 -1
- package/dist/es/postgres-data/PsSource.js +5 -3
- package/dist/es/postgres-data/PsSource.js.map +1 -1
- package/dist/es/postgres-data/buildUtilities.js +30 -13
- package/dist/es/postgres-data/buildUtilities.js.map +1 -1
- package/dist/es/quarterback/QuarterBackDataSource.js +9 -11
- package/dist/es/quarterback/QuarterBackDataSource.js.map +1 -1
- package/dist/es/quarterback/useLoadDoc.js +7 -4
- package/dist/es/quarterback/useLoadDoc.js.map +1 -1
- package/dist/es/store/StoreContext.js +4 -10
- package/dist/es/store/StoreContext.js.map +1 -1
- package/dist/types/EditorApp.d.ts +14 -5
- package/dist/types/Main.d.ts +2 -12
- package/dist/types/index.d.ts +3 -13
- package/dist/types/postgres-data/buildUtilities.d.ts +1 -1
- package/dist/types/store/StoreContext.d.ts +3 -3
- package/package.json +3 -3
- package/dist/cjs/store/ParentObserver.js +0 -40
- package/dist/cjs/store/ParentObserver.js.map +0 -1
- package/dist/es/store/ParentObserver.js +0 -36
- package/dist/es/store/ParentObserver.js.map +0 -1
- package/dist/types/store/ParentObserver.d.ts +0 -33
package/dist/cjs/EditorApp.js
CHANGED
|
@@ -54,7 +54,7 @@ const PlaceholderWrapper = styled_components_1.default.div `
|
|
|
54
54
|
justify-content: center;
|
|
55
55
|
align-items: center;
|
|
56
56
|
`;
|
|
57
|
-
const EditorApp = ({
|
|
57
|
+
const EditorApp = ({ manuscriptID, projectID, permittedActions, fileManagement, files, authToken, observer, }) => {
|
|
58
58
|
const userID = (0, user_1.getCurrentUserId)();
|
|
59
59
|
const [store, setStore] = (0, react_1.useState)();
|
|
60
60
|
const loadDoc = (0, useLoadDoc_1.useLoadDoc)(authToken);
|
|
@@ -63,7 +63,7 @@ const EditorApp = ({ parentObserver, manuscriptID, projectID, permittedActions,
|
|
|
63
63
|
// implement remount for the store if component is retriggered
|
|
64
64
|
const basicSource = new store_1.BasicSource(fileManagement, projectID, manuscriptID, files, permittedActions, userID || '', authToken || '');
|
|
65
65
|
const mainSource = new PsSource_1.default(files);
|
|
66
|
-
(0, store_1.createStore)([basicSource, mainSource, quarterBackSource],
|
|
66
|
+
(0, store_1.createStore)([basicSource, mainSource, quarterBackSource], observer)
|
|
67
67
|
.then((store) => {
|
|
68
68
|
setStore(store);
|
|
69
69
|
})
|
|
@@ -71,11 +71,19 @@ const EditorApp = ({ parentObserver, manuscriptID, projectID, permittedActions,
|
|
|
71
71
|
console.error(e);
|
|
72
72
|
});
|
|
73
73
|
return () => {
|
|
74
|
-
parentObserver?.detach();
|
|
75
74
|
store?.unmount();
|
|
76
75
|
};
|
|
77
76
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
78
77
|
}, [manuscriptID, projectID]);
|
|
78
|
+
(0, react_1.useEffect)(() => {
|
|
79
|
+
if (!observer) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
observer.state.current = {
|
|
83
|
+
get: () => store?.getState(),
|
|
84
|
+
update: (state) => store?.setState(state),
|
|
85
|
+
};
|
|
86
|
+
}, [observer, store]);
|
|
79
87
|
return store ? (react_1.default.createElement(store_1.GenericStoreProvider, { store: store },
|
|
80
88
|
react_1.default.createElement(react_router_dom_1.BrowserRouter, null,
|
|
81
89
|
react_1.default.createElement(Page_1.Page, null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorApp.js","sourceRoot":"","sources":["../../src/EditorApp.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,+
|
|
1
|
+
{"version":3,"file":"EditorApp.js","sourceRoot":"","sources":["../../src/EditorApp.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,+CAAoE;AACpE,uDAA0D;AAC1D,0EAAsC;AAEtC,4CAAwC;AACxC,4GAAmF;AACnF,uFAAmF;AACnF,qCAA6C;AAC7C,wEAA+C;AAC/C,gGAAuE;AACvE,yDAAqD;AACrD,mCAMgB;AAuBhB,MAAM,OAAO,GAAG,2BAAM,CAAC,GAAG,CAAA;;;;;;;;CAQzB,CAAA;AAED,MAAM,kBAAkB,GAAG,2BAAM,CAAC,GAAG,CAAA;;;;;;;CAOpC,CAAA;AAED,MAAM,SAAS,GAA6B,CAAC,EAC3C,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,KAAK,EACL,SAAS,EACT,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,IAAA,uBAAgB,GAAE,CAAA;IAEjC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,GAAgB,CAAA;IAElD,MAAM,OAAO,GAAG,IAAA,uBAAU,EAAC,SAAS,CAAC,CAAA;IACrC,MAAM,iBAAiB,GAAG,IAAI,+BAAqB,CAAC,OAAO,CAAC,CAAA;IAE5D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,8DAA8D;QAC9D,MAAM,WAAW,GAAG,IAAI,mBAAW,CACjC,cAAc,EACd,SAAS,EACT,YAAY,EACZ,KAAK,EACL,gBAAgB,EAChB,MAAM,IAAI,EAAE,EACZ,SAAS,IAAI,EAAE,CAChB,CAAA;QACD,MAAM,UAAU,GAAG,IAAI,kBAAQ,CAAC,KAAK,CAAC,CAAA;QACtC,IAAA,mBAAW,EAAC,CAAC,WAAW,EAAE,UAAU,EAAE,iBAAiB,CAAC,EAAE,QAAQ,CAAC;aAChE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAClB,CAAC,CAAC,CAAA;QACJ,OAAO,GAAG,EAAE;YACV,KAAK,EAAE,OAAO,EAAE,CAAA;QAClB,CAAC,CAAA;QACD,uDAAuD;IACzD,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAA;IAE7B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,EAAE;YACb,OAAM;SACP;QACD,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG;YACvB,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE;YAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAc,CAAC;SACnD,CAAA;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;IAErB,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,8BAAC,4BAAoB,IAAC,KAAK,EAAE,KAAK;QAChC,8BAAC,gCAAM;YACL,8BAAC,WAAI;gBACH,8BAAC,OAAO;oBACN,8BAAC,iCAAuB,OAAG,CACnB,CACL,CACA,CACY,CACxB,CAAC,CAAC,CAAC,CACF,8BAAC,kBAAkB;QACjB,8BAAC,6CAAqB,OAAG,CACN,CACtB,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,SAAS,CAAA"}
|
package/dist/cjs/Main.js
CHANGED
|
@@ -19,10 +19,8 @@ const react_dnd_1 = require("react-dnd");
|
|
|
19
19
|
const react_dnd_html5_backend_1 = require("react-dnd-html5-backend");
|
|
20
20
|
const EditorApp_1 = __importDefault(require("./EditorApp"));
|
|
21
21
|
const theme_1 = require("./theme/theme");
|
|
22
|
-
|
|
23
|
-
// manuscriptID="MPManuscript:5F6D807F-CECF-45D0-B94C-5CF1361BDF05"
|
|
24
|
-
const Main = ({ fileManagement, files, parentObserver, manuscriptID, projectID, authToken, permittedActions, }) => (react_1.default.createElement(react_dnd_1.DndProvider, { backend: react_dnd_html5_backend_1.HTML5Backend },
|
|
22
|
+
const Main = ({ fileManagement, files, manuscriptID, projectID, authToken, permittedActions, observer, }) => (react_1.default.createElement(react_dnd_1.DndProvider, { backend: react_dnd_html5_backend_1.HTML5Backend },
|
|
25
23
|
react_1.default.createElement(theme_1.GlobalStyle, null),
|
|
26
|
-
react_1.default.createElement(EditorApp_1.default, { fileManagement: fileManagement, files: files,
|
|
24
|
+
react_1.default.createElement(EditorApp_1.default, { fileManagement: fileManagement, files: files, manuscriptID: manuscriptID, projectID: projectID, permittedActions: permittedActions, authToken: authToken, observer: observer })));
|
|
27
25
|
exports.default = Main;
|
|
28
26
|
//# sourceMappingURL=Main.js.map
|
package/dist/cjs/Main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../../src/Main.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;
|
|
1
|
+
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../../src/Main.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;AAEH,kDAAyB;AACzB,yCAAuC;AACvC,qEAAsD;AAEtD,4DAAuD;AACvD,yCAA2C;AAE3C,MAAM,IAAI,GAA6B,CAAC,EACtC,cAAc,EACd,KAAK,EACL,YAAY,EACZ,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,QAAQ,GACT,EAAE,EAAE,CAAC,CACJ,8BAAC,uBAAW,IAAC,OAAO,EAAE,sCAAY;IAChC,8BAAC,mBAAW,OAAG;IACf,8BAAC,mBAAS,IACR,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,GAClB,CACU,CACf,CAAA;AAED,kBAAe,IAAI,CAAA"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -33,9 +33,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
33
33
|
__setModuleDefault(result, mod);
|
|
34
34
|
return result;
|
|
35
35
|
};
|
|
36
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
37
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
38
|
-
};
|
|
39
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
38
|
};
|
|
@@ -52,10 +49,9 @@ const Main_1 = __importDefault(require("./Main"));
|
|
|
52
49
|
const ThemeProvider_1 = require("./theme/ThemeProvider");
|
|
53
50
|
var roles_1 = require("./lib/roles");
|
|
54
51
|
Object.defineProperty(exports, "ProjectRole", { enumerable: true, get: function () { return roles_1.ProjectRole; } });
|
|
55
|
-
__exportStar(require("./store/ParentObserver"), exports);
|
|
56
52
|
var roles_2 = require("./lib/roles");
|
|
57
53
|
Object.defineProperty(exports, "getUserRole", { enumerable: true, get: function () { return roles_2.getUserRole; } });
|
|
58
|
-
const ManuscriptEditor = ({ fileManagement, files,
|
|
54
|
+
const ManuscriptEditor = ({ fileManagement, files, manuscriptID, projectID, permittedActions, authToken, observer, }) => {
|
|
59
55
|
(0, react_1.useMemo)(() => {
|
|
60
56
|
if (authToken) {
|
|
61
57
|
token_1.default.remove();
|
|
@@ -74,7 +70,7 @@ const ManuscriptEditor = ({ fileManagement, files, parentObserver, manuscriptID,
|
|
|
74
70
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
75
71
|
react_1.default.createElement(ThemeProvider_1.ThemeProvider, null,
|
|
76
72
|
react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(Loading_1.LoadingPage, { className: 'loader' }, "Loading...") },
|
|
77
|
-
react_1.default.createElement(Main_1.default, { fileManagement: fileManagement, files: files, authToken: authToken || '',
|
|
73
|
+
react_1.default.createElement(Main_1.default, { fileManagement: fileManagement, files: files, authToken: authToken || '', manuscriptID: manuscriptID, projectID: projectID, permittedActions: permittedActions, observer: observer }))),
|
|
78
74
|
react_1.default.createElement("div", { id: "menu" }),
|
|
79
75
|
react_1.default.createElement("div", { id: "notifications" }),
|
|
80
76
|
react_1.default.createElement("div", { id: "size" })));
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2BAAwB;AACxB,uBAAoB;AAEpB,4DAA+B;AAC/B,+CAAgD;AAEhD,kDAAkD;AAElD,wDAAsC;AAEtC,4DAAkC;AAClC,kDAAyB;AACzB,yDAAqD;AAErD,qCAAyC;AAAhC,oGAAA,WAAW,OAAA;AAEpB,qCAAyC;AAAhC,oGAAA,WAAW,OAAA;AAQpB,MAAM,gBAAgB,GAA6B,CAAC,EAClD,cAAc,EACd,KAAK,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,QAAQ,GACT,EAAE,EAAE;IACH,IAAA,eAAO,EAAC,GAAG,EAAE;QACX,IAAI,SAAS,EAAE;YACb,eAAY,CAAC,MAAM,EAAE,CAAA;YACrB,eAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA,CAAC,+CAA+C;YAC3E,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,oBAAM,EAAe,SAAS,CAAC,CAAA;YAElD,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;aACjC;YAED,iBAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;SACnB;QACD,OAAO,GAAG,EAAE;YACV,eAAY,CAAC,MAAM,EAAE,CAAA;YACrB,iBAAM,CAAC,MAAM,EAAE,CAAA;QACjB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,OAAO,CACL;QACE,8BAAC,6BAAa;YACZ,8BAAC,gBAAQ,IACP,QAAQ,EAAE,8BAAC,qBAAW,IAAC,SAAS,EAAE,QAAQ,iBAA0B;gBAEpE,8BAAC,cAAI,IACH,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,IAAI,EAAE,EAC1B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,GAClB,CACO,CACG;QAChB,uCAAK,EAAE,EAAC,MAAM,GAAO;QACrB,uCAAK,EAAE,EAAC,eAAe,GAAO;QAC9B,uCAAK,EAAE,EAAC,MAAM,GAAO,CACpB,CACJ,CAAA;AACH,CAAC,CAAA;AAEY,QAAA,mBAAmB,GAAG,eAAK,CAAC,IAAI,CAC3C,gBAAgB,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACb,mHAAmH;IACnH,mIAAmI;IACnI,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAA,CAAC,sCAAsC;AACtF,CAAC,CACF,CAAA"}
|
|
@@ -15,9 +15,11 @@ class PsSource {
|
|
|
15
15
|
if (state.userID && state.authToken) {
|
|
16
16
|
this.api.setToken(state.authToken);
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const projectID = state.projectID;
|
|
19
|
+
const manuscriptID = state.manuscriptID;
|
|
20
|
+
if (manuscriptID && projectID) {
|
|
21
|
+
this.data = await (0, buildData_1.buildData)(projectID, manuscriptID, this.api);
|
|
22
|
+
this.utilities = (0, buildUtilities_1.buildUtilities)(projectID, manuscriptID, () => this.data, setState, this.api);
|
|
21
23
|
}
|
|
22
24
|
next({ ...state, ...this.data, ...this.utilities });
|
|
23
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PsSource.js","sourceRoot":"","sources":["../../../src/postgres-data/PsSource.ts"],"names":[],"mappings":";;;;;AAeA,gDAAuB;AACvB,2CAAuC;AACvC,qDAAiD;AAEjD,MAAqB,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,
|
|
1
|
+
{"version":3,"file":"PsSource.js","sourceRoot":"","sources":["../../../src/postgres-data/PsSource.ts"],"names":[],"mappings":";;;;;AAeA,gDAAuB;AACvB,2CAAuC;AACvC,qDAAiD;AAEjD,MAAqB,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,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;YACjC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;YACvC,IAAI,YAAY,IAAI,SAAS,EAAE;gBAC7B,IAAI,CAAC,IAAI,GAAG,MAAM,IAAA,qBAAS,EAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC9D,IAAI,CAAC,SAAS,GAAG,IAAA,+BAAc,EAC7B,SAAS,EACT,YAAY,EACZ,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EACf,QAAQ,EACR,IAAI,CAAC,GAAG,CACT,CAAA;aACF;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;QAnCC,IAAI,CAAC,GAAG,GAAG,IAAI,aAAG,EAAE,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,aAAa;QACb,4BAA4B;QAC5B,oGAAoG;QACpG,yBAAyB;IAC3B,CAAC;CA8BF;AA3CD,2BA2CC"}
|
|
@@ -14,13 +14,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
14
14
|
exports.buildUtilities = void 0;
|
|
15
15
|
const json_schema_1 = require("@manuscripts/json-schema");
|
|
16
16
|
const transform_1 = require("@manuscripts/transform");
|
|
17
|
+
const roles_1 = require("../lib/roles");
|
|
17
18
|
const savingUtilities_1 = require("./savingUtilities");
|
|
18
|
-
const buildUtilities = (getState, updateState, api) => {
|
|
19
|
+
const buildUtilities = (projectID, manuscriptID, getState, updateState, api) => {
|
|
19
20
|
const nonPMModelsTypes = new Set([
|
|
20
21
|
json_schema_1.ObjectTypes.Manuscript,
|
|
21
22
|
json_schema_1.ObjectTypes.Project,
|
|
22
23
|
]);
|
|
23
|
-
const updateContainerIDs = (model
|
|
24
|
+
const updateContainerIDs = (model) => {
|
|
24
25
|
const containerIDs = {
|
|
25
26
|
containerID: projectID,
|
|
26
27
|
};
|
|
@@ -35,7 +36,7 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
35
36
|
...containerIDs,
|
|
36
37
|
};
|
|
37
38
|
};
|
|
38
|
-
const saveProject = async (models
|
|
39
|
+
const saveProject = async (models) => {
|
|
39
40
|
try {
|
|
40
41
|
const filtered = models.filter((m) => m.objectType !== json_schema_1.ObjectTypes.Project);
|
|
41
42
|
await api.saveProject(projectID, filtered);
|
|
@@ -54,9 +55,7 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
54
55
|
};
|
|
55
56
|
const saveModels = async (models, excludeIDs) => {
|
|
56
57
|
const state = getState();
|
|
57
|
-
|
|
58
|
-
const manuscriptID = state.manuscriptID;
|
|
59
|
-
if (!state.modelMap || !manuscriptID || !projectID) {
|
|
58
|
+
if (!state.modelMap) {
|
|
60
59
|
throw new Error('Unable to save due to incomplete data');
|
|
61
60
|
}
|
|
62
61
|
const modelMap = new Map();
|
|
@@ -70,7 +69,7 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
70
69
|
if (!model._id) {
|
|
71
70
|
throw new Error('Model ID required');
|
|
72
71
|
}
|
|
73
|
-
const updated = updateContainerIDs(model
|
|
72
|
+
const updated = updateContainerIDs(model);
|
|
74
73
|
modelMap.set(model._id, updated);
|
|
75
74
|
}
|
|
76
75
|
updateState({
|
|
@@ -81,7 +80,7 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
81
80
|
updateState({
|
|
82
81
|
savingProcess: 'saving',
|
|
83
82
|
});
|
|
84
|
-
const result = await saveProject([...modelMap.values()]
|
|
83
|
+
const result = await saveProject([...modelMap.values()]);
|
|
85
84
|
updateState({
|
|
86
85
|
savingProcess: result ? 'saved' : 'failed',
|
|
87
86
|
preventUnload: false,
|
|
@@ -99,10 +98,10 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
99
98
|
};
|
|
100
99
|
const saveManuscript = async (manuscript) => {
|
|
101
100
|
const state = getState();
|
|
102
|
-
if (!state.modelMap
|
|
101
|
+
if (!state.modelMap) {
|
|
103
102
|
throw new Error('Unable to save manuscript due to incomplete data');
|
|
104
103
|
}
|
|
105
|
-
const previous = state.modelMap.get(
|
|
104
|
+
const previous = state.modelMap.get(manuscriptID);
|
|
106
105
|
await saveModel({
|
|
107
106
|
...previous,
|
|
108
107
|
...manuscript,
|
|
@@ -114,11 +113,9 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
114
113
|
};
|
|
115
114
|
const createSnapshot = async () => {
|
|
116
115
|
const state = getState();
|
|
117
|
-
const projectID = state.projectID;
|
|
118
|
-
const manuscriptID = state.manuscriptID;
|
|
119
116
|
const snapshots = state.snapshots;
|
|
120
117
|
const snapshotsMap = state.snapshotsMap;
|
|
121
|
-
if (!
|
|
118
|
+
if (!snapshots || !snapshotsMap) {
|
|
122
119
|
throw new Error('Unable to create snapshot due to incomplete data');
|
|
123
120
|
}
|
|
124
121
|
const data = await api.createSnapshot(projectID, manuscriptID);
|
|
@@ -128,6 +125,25 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
128
125
|
snapshotsMap: snapshotsMap.set(label.id, data.snapshot),
|
|
129
126
|
});
|
|
130
127
|
};
|
|
128
|
+
const refreshProject = async () => {
|
|
129
|
+
const state = getState();
|
|
130
|
+
const userID = state.userID;
|
|
131
|
+
if (!userID) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const models = await api.getManuscript(projectID, manuscriptID);
|
|
135
|
+
if (!models) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const project = models.filter((m) => m.objectType === json_schema_1.ObjectTypes.Project)[0];
|
|
139
|
+
if (!project) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
updateState({
|
|
143
|
+
project,
|
|
144
|
+
userRole: (0, roles_1.getUserRole)(project, userID),
|
|
145
|
+
});
|
|
146
|
+
};
|
|
131
147
|
return {
|
|
132
148
|
saveModel,
|
|
133
149
|
deleteModel,
|
|
@@ -136,6 +152,7 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
136
152
|
saveModels,
|
|
137
153
|
saveDoc,
|
|
138
154
|
createSnapshot,
|
|
155
|
+
refreshProject,
|
|
139
156
|
};
|
|
140
157
|
};
|
|
141
158
|
exports.buildUtilities = buildUtilities;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildUtilities.js","sourceRoot":"","sources":["../../../src/postgres-data/buildUtilities.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"buildUtilities.js","sourceRoot":"","sources":["../../../src/postgres-data/buildUtilities.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,0DAMiC;AACjC,sDAAsE;AAEtE,wCAA0C;AAG1C,uDAAoD;AAE7C,MAAM,cAAc,GAAG,CAC5B,SAAiB,EACjB,YAAoB,EACpB,QAA8B,EAC9B,WAA4C,EAC5C,GAAQ,EACQ,EAAE;IAClB,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;QAC/B,yBAAW,CAAC,UAAU;QACtB,yBAAW,CAAC,OAAO;KACpB,CAAC,CAAA;IAEF,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAE,EAAE;QAC1C,MAAM,YAAY,GAAiB;YACjC,WAAW,EAAE,SAAS;SACvB,CAAA;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;SACrC;QAED,IAAI,+BAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YAC3C,YAAY,CAAC,YAAY,GAAG,YAAY,CAAA;SACzC;QAED,OAAO;YACL,GAAG,KAAK;YACR,GAAG,YAAY;SAChB,CAAA;IACH,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,KAAK,EAAE,MAAe,EAAE,EAAE;QAC5C,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,yBAAW,CAAC,OAAO,CAC5C,CAAA;YACD,MAAM,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YAC1C,OAAO,IAAI,CAAA;SACZ;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,KAAK,CAAA;SACb;IACH,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,CAAkB,EAAU,EAAE,EAAE;QAC/C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnB,OAAM;SACP;QACD,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAkB,CAAA;IAChD,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,KAAK,EACtB,MAAmD,EACnD,UAAwB,EACxB,EAAE;QACF,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;QAExB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;SACzD;QAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAA;QAEzC,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE;YACxC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAyB,CAAA;YAC5C,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE;gBACtD,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;aACxB;SACF;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;aACrC;YACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAc,CAAC,CAAA;YAClD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;SACjC;QAED,WAAW,CAAC;YACV,QAAQ;YACR,aAAa,EAAE,IAAI;SACpB,CAAC,CAAA;QAEF,IAAA,kCAAgB,EAAC,KAAK,IAAI,EAAE;YAC1B,WAAW,CAAC;gBACV,aAAa,EAAE,QAAQ;aACxB,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YAExD,WAAW,CAAC;gBACV,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;gBAC1C,aAAa,EAAE,KAAK;aACrB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,EACrB,KAAgC,EACpB,EAAE;QACd,MAAM,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QACzB,0BAA0B;QAC1B,OAAO,KAAU,CAAA;IACnB,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,KAAK,EAAE,EAAU,EAAE,EAAE;QACvC,MAAM,UAAU,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACnC,OAAO,EAAE,CAAA;IACX,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,EAAE,UAA+B,EAAE,EAAE;QAC/D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;SACpE;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACjD,MAAM,SAAS,CAAC;YACd,GAAG,QAAQ;YACX,GAAG,UAAU;SACd,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,KAAK,EAAE,GAAmB,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,IAAA,kBAAM,EAAC,GAAG,CAAC,CAAA;QAC1B,MAAM,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACxC,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;QAChC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;QACxB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;QACjC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;QACvC,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;SACpE;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QAC9D,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC5C,WAAW,CAAC;YACV,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC;YAChC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC;SACxD,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;QAChC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,MAAM,EAAE;YACX,OAAM;SACP;QACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QAC/D,IAAI,CAAC,MAAM,EAAE;YACX,OAAM;SACP;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,yBAAW,CAAC,OAAO,CAC5C,CAAC,CAAC,CAAY,CAAA;QACf,IAAI,CAAC,OAAO,EAAE;YACZ,OAAM;SACP;QACD,WAAW,CAAC;YACV,OAAO;YACP,QAAQ,EAAE,IAAA,mBAAW,EAAC,OAAO,EAAE,MAAM,CAAC;SACvC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,OAAO;QACL,SAAS;QACT,WAAW;QACX,cAAc;QACd,QAAQ;QACR,UAAU;QACV,OAAO;QACP,cAAc;QACd,cAAc;KACf,CAAA;AACH,CAAC,CAAA;AA9KY,QAAA,cAAc,kBA8K1B"}
|
|
@@ -5,17 +5,15 @@ class QuarterbackDataSource {
|
|
|
5
5
|
this.build = async (state, next) => {
|
|
6
6
|
if (state.projectID && state.manuscriptID && state.doc) {
|
|
7
7
|
const res = await this.loadDoc(state.manuscriptID, state.projectID, state.doc);
|
|
8
|
-
if (res?.doc && res.version) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
8
|
+
if (res?.doc && res.version >= 0) {
|
|
9
|
+
next({
|
|
10
|
+
...state,
|
|
11
|
+
doc: res.doc,
|
|
12
|
+
initialDocVersion: res.version,
|
|
13
|
+
snapshots: res.snapshots,
|
|
14
|
+
snapshotsMap: new Map(),
|
|
15
|
+
});
|
|
16
|
+
return;
|
|
19
17
|
}
|
|
20
18
|
}
|
|
21
19
|
next({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuarterBackDataSource.js","sourceRoot":"","sources":["../../../src/quarterback/QuarterBackDataSource.ts"],"names":[],"mappings":";;AAgBA,MAAqB,qBAAqB;IAaxC,YAAY,OAAyC;QAGrD,UAAK,GAAc,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACvC,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,GAAG,EAAE;gBACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,GAAG,CACV,CAAA;gBACD,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"QuarterBackDataSource.js","sourceRoot":"","sources":["../../../src/quarterback/QuarterBackDataSource.ts"],"names":[],"mappings":";;AAgBA,MAAqB,qBAAqB;IAaxC,YAAY,OAAyC;QAGrD,UAAK,GAAc,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACvC,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,GAAG,EAAE;gBACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,GAAG,CACV,CAAA;gBACD,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,EAAE;oBAChC,IAAI,CAAC;wBACH,GAAG,KAAK;wBACR,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,iBAAiB,EAAE,GAAG,CAAC,OAAO;wBAC9B,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,YAAY,EAAE,IAAI,GAAG,EAA8B;qBACpD,CAAC,CAAA;oBACF,OAAM;iBACP;aACF;YACD,IAAI,CAAC;gBACH,GAAG,KAAK;gBACR,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,IAAI,GAAG,EAA8B;aACpD,CAAC,CAAA;QACJ,CAAC,CAAA;QAzBC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CAyBF;AAxCD,wCAwCC"}
|
|
@@ -33,20 +33,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
33
33
|
__setModuleDefault(result, mod);
|
|
34
34
|
return result;
|
|
35
35
|
};
|
|
36
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
37
|
exports.useLoadDoc = void 0;
|
|
41
38
|
const transform_1 = require("@manuscripts/transform");
|
|
42
|
-
const config_1 = __importDefault(require("../config"));
|
|
43
39
|
const document_1 = require("./api/document");
|
|
44
40
|
const docApi = __importStar(require("./api/document"));
|
|
45
41
|
const useLoadDoc = (authToken) => {
|
|
46
42
|
return async function loadDoc(manuscriptID, projectID, existingDoc) {
|
|
47
|
-
if (!config_1.default.quarterback.enabled) {
|
|
48
|
-
return undefined;
|
|
49
|
-
}
|
|
50
43
|
const found = await docApi.getDocument(projectID, manuscriptID, authToken);
|
|
51
44
|
let doc;
|
|
52
45
|
let version = 0;
|
|
@@ -90,6 +83,13 @@ const useLoadDoc = (authToken) => {
|
|
|
90
83
|
if ('err' in update) {
|
|
91
84
|
console.error('Unable to create new document: ' + update.err);
|
|
92
85
|
}
|
|
86
|
+
else {
|
|
87
|
+
const found = await docApi.getDocument(projectID, manuscriptID, authToken);
|
|
88
|
+
if ('data' in found && found.data.doc && found.data.version >= 0) {
|
|
89
|
+
doc = found.data.doc;
|
|
90
|
+
version = found.data.version;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
93
|
}
|
|
94
94
|
if (doc !== null &&
|
|
95
95
|
typeof doc === 'object' &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLoadDoc.js","sourceRoot":"","sources":["../../../src/quarterback/useLoadDoc.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG
|
|
1
|
+
{"version":3,"file":"useLoadDoc.js","sourceRoot":"","sources":["../../../src/quarterback/useLoadDoc.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,20 +38,14 @@ exports.useGenericStore = exports.GenericStoreProvider = exports.createStore = v
|
|
|
38
38
|
const react_1 = __importStar(require("react"));
|
|
39
39
|
const _1 = require(".");
|
|
40
40
|
const GenericStoreContext = (0, react_1.createContext)(new _1.GenericStore());
|
|
41
|
-
const createStore = async (
|
|
42
|
-
const store = new _1.GenericStore(
|
|
43
|
-
await store.init(
|
|
44
|
-
|
|
45
|
-
store.subscribe((state) => {
|
|
46
|
-
parentObserver?.storeObserver(state);
|
|
47
|
-
});
|
|
41
|
+
const createStore = async (sources, observer) => {
|
|
42
|
+
const store = new _1.GenericStore();
|
|
43
|
+
await store.init(sources);
|
|
44
|
+
store.subscribe((state) => observer?.onUpdate(state));
|
|
48
45
|
return store;
|
|
49
46
|
};
|
|
50
47
|
exports.createStore = createStore;
|
|
51
48
|
const GenericStoreProvider = ({ children, store }) => {
|
|
52
|
-
if (!(store instanceof _1.GenericStore)) {
|
|
53
|
-
throw new Error('GenericStoreProvider received incorrect store.');
|
|
54
|
-
}
|
|
55
49
|
(0, react_1.useEffect)(() => {
|
|
56
50
|
return () => store.unmount();
|
|
57
51
|
}, [store]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoreContext.js","sourceRoot":"","sources":["../../../src/store/StoreContext.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;GAUG;AACH,+CAAmE;
|
|
1
|
+
{"version":3,"file":"StoreContext.js","sourceRoot":"","sources":["../../../src/store/StoreContext.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;GAUG;AACH,+CAAmE;AAGnE,wBAAyD;AAEzD,MAAM,mBAAmB,GAAG,IAAA,qBAAa,EAAe,IAAI,eAAY,EAAE,CAAC,CAAA;AAEpE,MAAM,WAAW,GAAG,KAAK,EAC9B,OAAkC,EAClC,QAA2B,EAC3B,EAAE;IACF,MAAM,KAAK,GAAG,IAAI,eAAY,EAAE,CAAA;IAChC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACzB,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IACrD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AARY,QAAA,WAAW,eAQvB;AAMM,MAAM,oBAAoB,GAAoB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3E,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;IAC9B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,IAAI,KAAK,EAAE;QACT,OAAO,CACL,8BAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IACvC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iEAA4B,CAClC,CAChC,CAAA;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAbY,QAAA,oBAAoB,wBAahC;AAEM,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,IAAA,kBAAU,EAAC,mBAAmB,CAAC,CAAA;AAAvD,QAAA,eAAe,mBAAwC"}
|
package/dist/es/EditorApp.js
CHANGED
|
@@ -26,7 +26,7 @@ const PlaceholderWrapper = styled.div `
|
|
|
26
26
|
justify-content: center;
|
|
27
27
|
align-items: center;
|
|
28
28
|
`;
|
|
29
|
-
const EditorApp = ({
|
|
29
|
+
const EditorApp = ({ manuscriptID, projectID, permittedActions, fileManagement, files, authToken, observer, }) => {
|
|
30
30
|
const userID = getCurrentUserId();
|
|
31
31
|
const [store, setStore] = useState();
|
|
32
32
|
const loadDoc = useLoadDoc(authToken);
|
|
@@ -35,7 +35,7 @@ const EditorApp = ({ parentObserver, manuscriptID, projectID, permittedActions,
|
|
|
35
35
|
// implement remount for the store if component is retriggered
|
|
36
36
|
const basicSource = new BasicSource(fileManagement, projectID, manuscriptID, files, permittedActions, userID || '', authToken || '');
|
|
37
37
|
const mainSource = new PsSource(files);
|
|
38
|
-
createStore([basicSource, mainSource, quarterBackSource],
|
|
38
|
+
createStore([basicSource, mainSource, quarterBackSource], observer)
|
|
39
39
|
.then((store) => {
|
|
40
40
|
setStore(store);
|
|
41
41
|
})
|
|
@@ -43,11 +43,19 @@ const EditorApp = ({ parentObserver, manuscriptID, projectID, permittedActions,
|
|
|
43
43
|
console.error(e);
|
|
44
44
|
});
|
|
45
45
|
return () => {
|
|
46
|
-
parentObserver?.detach();
|
|
47
46
|
store?.unmount();
|
|
48
47
|
};
|
|
49
48
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
50
49
|
}, [manuscriptID, projectID]);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (!observer) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
observer.state.current = {
|
|
55
|
+
get: () => store?.getState(),
|
|
56
|
+
update: (state) => store?.setState(state),
|
|
57
|
+
};
|
|
58
|
+
}, [observer, store]);
|
|
51
59
|
return store ? (React.createElement(GenericStoreProvider, { store: store },
|
|
52
60
|
React.createElement(Router, null,
|
|
53
61
|
React.createElement(Page, null,
|
package/dist/es/EditorApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorApp.js","sourceRoot":"","sources":["../../src/EditorApp.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"EditorApp.js","sourceRoot":"","sources":["../../src/EditorApp.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,EAAoB,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACpE,OAAO,EAAE,aAAa,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,uBAAuB,MAAM,+CAA+C,CAAA;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,QAAQ,MAAM,0BAA0B,CAAA;AAC/C,OAAO,qBAAqB,MAAM,qCAAqC,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EACL,WAAW,EACX,WAAW,EAEX,oBAAoB,GAErB,MAAM,SAAS,CAAA;AAuBhB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;CAQzB,CAAA;AAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;CAOpC,CAAA;AAED,MAAM,SAAS,GAA6B,CAAC,EAC3C,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,KAAK,EACL,SAAS,EACT,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAA;IAEjC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAgB,CAAA;IAElD,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;IACrC,MAAM,iBAAiB,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAE5D,SAAS,CAAC,GAAG,EAAE;QACb,8DAA8D;QAC9D,MAAM,WAAW,GAAG,IAAI,WAAW,CACjC,cAAc,EACd,SAAS,EACT,YAAY,EACZ,KAAK,EACL,gBAAgB,EAChB,MAAM,IAAI,EAAE,EACZ,SAAS,IAAI,EAAE,CAChB,CAAA;QACD,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAA;QACtC,WAAW,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,iBAAiB,CAAC,EAAE,QAAQ,CAAC;aAChE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAClB,CAAC,CAAC,CAAA;QACJ,OAAO,GAAG,EAAE;YACV,KAAK,EAAE,OAAO,EAAE,CAAA;QAClB,CAAC,CAAA;QACD,uDAAuD;IACzD,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAA;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,EAAE;YACb,OAAM;SACP;QACD,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG;YACvB,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE;YAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAc,CAAC;SACnD,CAAA;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;IAErB,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,oBAAC,oBAAoB,IAAC,KAAK,EAAE,KAAK;QAChC,oBAAC,MAAM;YACL,oBAAC,IAAI;gBACH,oBAAC,OAAO;oBACN,oBAAC,uBAAuB,OAAG,CACnB,CACL,CACA,CACY,CACxB,CAAC,CAAC,CAAC,CACF,oBAAC,kBAAkB;QACjB,oBAAC,qBAAqB,OAAG,CACN,CACtB,CAAA;AACH,CAAC,CAAA;AAED,eAAe,SAAS,CAAA"}
|
package/dist/es/Main.js
CHANGED
|
@@ -14,10 +14,8 @@ import { DndProvider } from 'react-dnd';
|
|
|
14
14
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
|
15
15
|
import EditorApp from './EditorApp';
|
|
16
16
|
import { GlobalStyle } from './theme/theme';
|
|
17
|
-
|
|
18
|
-
// manuscriptID="MPManuscript:5F6D807F-CECF-45D0-B94C-5CF1361BDF05"
|
|
19
|
-
const Main = ({ fileManagement, files, parentObserver, manuscriptID, projectID, authToken, permittedActions, }) => (React.createElement(DndProvider, { backend: HTML5Backend },
|
|
17
|
+
const Main = ({ fileManagement, files, manuscriptID, projectID, authToken, permittedActions, observer, }) => (React.createElement(DndProvider, { backend: HTML5Backend },
|
|
20
18
|
React.createElement(GlobalStyle, null),
|
|
21
|
-
React.createElement(EditorApp, { fileManagement: fileManagement, files: files,
|
|
19
|
+
React.createElement(EditorApp, { fileManagement: fileManagement, files: files, manuscriptID: manuscriptID, projectID: projectID, permittedActions: permittedActions, authToken: authToken, observer: observer })));
|
|
22
20
|
export default Main;
|
|
23
21
|
//# sourceMappingURL=Main.js.map
|
package/dist/es/Main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../../src/Main.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../../src/Main.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,OAAO,SAA6B,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,IAAI,GAA6B,CAAC,EACtC,cAAc,EACd,KAAK,EACL,YAAY,EACZ,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,QAAQ,GACT,EAAE,EAAE,CAAC,CACJ,oBAAC,WAAW,IAAC,OAAO,EAAE,YAAY;IAChC,oBAAC,WAAW,OAAG;IACf,oBAAC,SAAS,IACR,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,GAClB,CACU,CACf,CAAA;AAED,eAAe,IAAI,CAAA"}
|
package/dist/es/index.js
CHANGED
|
@@ -19,9 +19,8 @@ import userID from './lib/user-id';
|
|
|
19
19
|
import Main from './Main';
|
|
20
20
|
import { ThemeProvider } from './theme/ThemeProvider';
|
|
21
21
|
export { ProjectRole } from './lib/roles';
|
|
22
|
-
export * from './store/ParentObserver';
|
|
23
22
|
export { getUserRole } from './lib/roles';
|
|
24
|
-
const ManuscriptEditor = ({ fileManagement, files,
|
|
23
|
+
const ManuscriptEditor = ({ fileManagement, files, manuscriptID, projectID, permittedActions, authToken, observer, }) => {
|
|
25
24
|
useMemo(() => {
|
|
26
25
|
if (authToken) {
|
|
27
26
|
tokenHandler.remove();
|
|
@@ -40,7 +39,7 @@ const ManuscriptEditor = ({ fileManagement, files, parentObserver, manuscriptID,
|
|
|
40
39
|
return (React.createElement(React.Fragment, null,
|
|
41
40
|
React.createElement(ThemeProvider, null,
|
|
42
41
|
React.createElement(Suspense, { fallback: React.createElement(LoadingPage, { className: 'loader' }, "Loading...") },
|
|
43
|
-
React.createElement(Main, { fileManagement: fileManagement, files: files, authToken: authToken || '',
|
|
42
|
+
React.createElement(Main, { fileManagement: fileManagement, files: files, authToken: authToken || '', manuscriptID: manuscriptID, projectID: projectID, permittedActions: permittedActions, observer: observer }))),
|
|
44
43
|
React.createElement("div", { id: "menu" }),
|
|
45
44
|
React.createElement("div", { id: "notifications" }),
|
|
46
45
|
React.createElement("div", { id: "size" })));
|
package/dist/es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,iBAAiB,CAAA;AACxB,OAAO,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,iBAAiB,CAAA;AACxB,OAAO,aAAa,CAAA;AAEpB,OAAO,MAAM,MAAM,YAAY,CAAA;AAC/B,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,YAAY,MAAM,aAAa,CAAA;AAEtC,OAAO,MAAM,MAAM,eAAe,CAAA;AAClC,OAAO,IAAI,MAAM,QAAQ,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAQzC,MAAM,gBAAgB,GAA6B,CAAC,EAClD,cAAc,EACd,KAAK,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,QAAQ,GACT,EAAE,EAAE;IACH,OAAO,CAAC,GAAG,EAAE;QACX,IAAI,SAAS,EAAE;YACb,YAAY,CAAC,MAAM,EAAE,CAAA;YACrB,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA,CAAC,+CAA+C;YAC3E,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAe,SAAS,CAAC,CAAA;YAElD,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;aACjC;YAED,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;SACnB;QACD,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,MAAM,EAAE,CAAA;YACrB,MAAM,CAAC,MAAM,EAAE,CAAA;QACjB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,OAAO,CACL;QACE,oBAAC,aAAa;YACZ,oBAAC,QAAQ,IACP,QAAQ,EAAE,oBAAC,WAAW,IAAC,SAAS,EAAE,QAAQ,iBAA0B;gBAEpE,oBAAC,IAAI,IACH,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,IAAI,EAAE,EAC1B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,GAClB,CACO,CACG;QAChB,6BAAK,EAAE,EAAC,MAAM,GAAO;QACrB,6BAAK,EAAE,EAAC,eAAe,GAAO;QAC9B,6BAAK,EAAE,EAAC,MAAM,GAAO,CACpB,CACJ,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAC3C,gBAAgB,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACb,mHAAmH;IACnH,mIAAmI;IACnI,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAA,CAAC,sCAAsC;AACtF,CAAC,CACF,CAAA"}
|
|
@@ -10,9 +10,11 @@ export default class PsSource {
|
|
|
10
10
|
if (state.userID && state.authToken) {
|
|
11
11
|
this.api.setToken(state.authToken);
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
const projectID = state.projectID;
|
|
14
|
+
const manuscriptID = state.manuscriptID;
|
|
15
|
+
if (manuscriptID && projectID) {
|
|
16
|
+
this.data = await buildData(projectID, manuscriptID, this.api);
|
|
17
|
+
this.utilities = buildUtilities(projectID, manuscriptID, () => this.data, setState, this.api);
|
|
16
18
|
}
|
|
17
19
|
next({ ...state, ...this.data, ...this.utilities });
|
|
18
20
|
};
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;YACjC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;YACvC,IAAI,YAAY,IAAI,SAAS,EAAE;gBAC7B,IAAI,CAAC,IAAI,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC9D,IAAI,CAAC,SAAS,GAAG,cAAc,CAC7B,SAAS,EACT,YAAY,EACZ,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EACf,QAAQ,EACR,IAAI,CAAC,GAAG,CACT,CAAA;aACF;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;QAnCC,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;CA8BF"}
|
|
@@ -11,13 +11,14 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { manuscriptIDTypes, ObjectTypes, } from '@manuscripts/json-schema';
|
|
13
13
|
import { encode } from '@manuscripts/transform';
|
|
14
|
+
import { getUserRole } from '../lib/roles';
|
|
14
15
|
import { saveWithThrottle } from './savingUtilities';
|
|
15
|
-
export const buildUtilities = (getState, updateState, api) => {
|
|
16
|
+
export const buildUtilities = (projectID, manuscriptID, getState, updateState, api) => {
|
|
16
17
|
const nonPMModelsTypes = new Set([
|
|
17
18
|
ObjectTypes.Manuscript,
|
|
18
19
|
ObjectTypes.Project,
|
|
19
20
|
]);
|
|
20
|
-
const updateContainerIDs = (model
|
|
21
|
+
const updateContainerIDs = (model) => {
|
|
21
22
|
const containerIDs = {
|
|
22
23
|
containerID: projectID,
|
|
23
24
|
};
|
|
@@ -32,7 +33,7 @@ export const buildUtilities = (getState, updateState, api) => {
|
|
|
32
33
|
...containerIDs,
|
|
33
34
|
};
|
|
34
35
|
};
|
|
35
|
-
const saveProject = async (models
|
|
36
|
+
const saveProject = async (models) => {
|
|
36
37
|
try {
|
|
37
38
|
const filtered = models.filter((m) => m.objectType !== ObjectTypes.Project);
|
|
38
39
|
await api.saveProject(projectID, filtered);
|
|
@@ -51,9 +52,7 @@ export const buildUtilities = (getState, updateState, api) => {
|
|
|
51
52
|
};
|
|
52
53
|
const saveModels = async (models, excludeIDs) => {
|
|
53
54
|
const state = getState();
|
|
54
|
-
|
|
55
|
-
const manuscriptID = state.manuscriptID;
|
|
56
|
-
if (!state.modelMap || !manuscriptID || !projectID) {
|
|
55
|
+
if (!state.modelMap) {
|
|
57
56
|
throw new Error('Unable to save due to incomplete data');
|
|
58
57
|
}
|
|
59
58
|
const modelMap = new Map();
|
|
@@ -67,7 +66,7 @@ export const buildUtilities = (getState, updateState, api) => {
|
|
|
67
66
|
if (!model._id) {
|
|
68
67
|
throw new Error('Model ID required');
|
|
69
68
|
}
|
|
70
|
-
const updated = updateContainerIDs(model
|
|
69
|
+
const updated = updateContainerIDs(model);
|
|
71
70
|
modelMap.set(model._id, updated);
|
|
72
71
|
}
|
|
73
72
|
updateState({
|
|
@@ -78,7 +77,7 @@ export const buildUtilities = (getState, updateState, api) => {
|
|
|
78
77
|
updateState({
|
|
79
78
|
savingProcess: 'saving',
|
|
80
79
|
});
|
|
81
|
-
const result = await saveProject([...modelMap.values()]
|
|
80
|
+
const result = await saveProject([...modelMap.values()]);
|
|
82
81
|
updateState({
|
|
83
82
|
savingProcess: result ? 'saved' : 'failed',
|
|
84
83
|
preventUnload: false,
|
|
@@ -96,10 +95,10 @@ export const buildUtilities = (getState, updateState, api) => {
|
|
|
96
95
|
};
|
|
97
96
|
const saveManuscript = async (manuscript) => {
|
|
98
97
|
const state = getState();
|
|
99
|
-
if (!state.modelMap
|
|
98
|
+
if (!state.modelMap) {
|
|
100
99
|
throw new Error('Unable to save manuscript due to incomplete data');
|
|
101
100
|
}
|
|
102
|
-
const previous = state.modelMap.get(
|
|
101
|
+
const previous = state.modelMap.get(manuscriptID);
|
|
103
102
|
await saveModel({
|
|
104
103
|
...previous,
|
|
105
104
|
...manuscript,
|
|
@@ -111,11 +110,9 @@ export const buildUtilities = (getState, updateState, api) => {
|
|
|
111
110
|
};
|
|
112
111
|
const createSnapshot = async () => {
|
|
113
112
|
const state = getState();
|
|
114
|
-
const projectID = state.projectID;
|
|
115
|
-
const manuscriptID = state.manuscriptID;
|
|
116
113
|
const snapshots = state.snapshots;
|
|
117
114
|
const snapshotsMap = state.snapshotsMap;
|
|
118
|
-
if (!
|
|
115
|
+
if (!snapshots || !snapshotsMap) {
|
|
119
116
|
throw new Error('Unable to create snapshot due to incomplete data');
|
|
120
117
|
}
|
|
121
118
|
const data = await api.createSnapshot(projectID, manuscriptID);
|
|
@@ -125,6 +122,25 @@ export const buildUtilities = (getState, updateState, api) => {
|
|
|
125
122
|
snapshotsMap: snapshotsMap.set(label.id, data.snapshot),
|
|
126
123
|
});
|
|
127
124
|
};
|
|
125
|
+
const refreshProject = async () => {
|
|
126
|
+
const state = getState();
|
|
127
|
+
const userID = state.userID;
|
|
128
|
+
if (!userID) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const models = await api.getManuscript(projectID, manuscriptID);
|
|
132
|
+
if (!models) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const project = models.filter((m) => m.objectType === ObjectTypes.Project)[0];
|
|
136
|
+
if (!project) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
updateState({
|
|
140
|
+
project,
|
|
141
|
+
userRole: getUserRole(project, userID),
|
|
142
|
+
});
|
|
143
|
+
};
|
|
128
144
|
return {
|
|
129
145
|
saveModel,
|
|
130
146
|
deleteModel,
|
|
@@ -133,6 +149,7 @@ export const buildUtilities = (getState, updateState, api) => {
|
|
|
133
149
|
saveModels,
|
|
134
150
|
saveDoc,
|
|
135
151
|
createSnapshot,
|
|
152
|
+
refreshProject,
|
|
136
153
|
};
|
|
137
154
|
};
|
|
138
155
|
//# sourceMappingURL=buildUtilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildUtilities.js","sourceRoot":"","sources":["../../../src/postgres-data/buildUtilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAEL,iBAAiB,EAEjB,WAAW,
|
|
1
|
+
{"version":3,"file":"buildUtilities.js","sourceRoot":"","sources":["../../../src/postgres-data/buildUtilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,17 +3,15 @@ export default class QuarterbackDataSource {
|
|
|
3
3
|
this.build = async (state, next) => {
|
|
4
4
|
if (state.projectID && state.manuscriptID && state.doc) {
|
|
5
5
|
const res = await this.loadDoc(state.manuscriptID, state.projectID, state.doc);
|
|
6
|
-
if (res?.doc && res.version) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
6
|
+
if (res?.doc && res.version >= 0) {
|
|
7
|
+
next({
|
|
8
|
+
...state,
|
|
9
|
+
doc: res.doc,
|
|
10
|
+
initialDocVersion: res.version,
|
|
11
|
+
snapshots: res.snapshots,
|
|
12
|
+
snapshotsMap: new Map(),
|
|
13
|
+
});
|
|
14
|
+
return;
|
|
17
15
|
}
|
|
18
16
|
}
|
|
19
17
|
next({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuarterBackDataSource.js","sourceRoot":"","sources":["../../../src/quarterback/QuarterBackDataSource.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAaxC,YAAY,OAAyC;QAGrD,UAAK,GAAc,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACvC,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,GAAG,EAAE;gBACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,GAAG,CACV,CAAA;gBACD,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"QuarterBackDataSource.js","sourceRoot":"","sources":["../../../src/quarterback/QuarterBackDataSource.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAaxC,YAAY,OAAyC;QAGrD,UAAK,GAAc,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACvC,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,GAAG,EAAE;gBACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,GAAG,CACV,CAAA;gBACD,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,EAAE;oBAChC,IAAI,CAAC;wBACH,GAAG,KAAK;wBACR,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,iBAAiB,EAAE,GAAG,CAAC,OAAO;wBAC9B,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,YAAY,EAAE,IAAI,GAAG,EAA8B;qBACpD,CAAC,CAAA;oBACF,OAAM;iBACP;aACF;YACD,IAAI,CAAC;gBACH,GAAG,KAAK;gBACR,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,IAAI,GAAG,EAA8B;aACpD,CAAC,CAAA;QACJ,CAAC,CAAA;QAzBC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CAyBF"}
|
|
@@ -10,14 +10,10 @@
|
|
|
10
10
|
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2022 Atypon Systems LLC. All Rights Reserved.
|
|
11
11
|
*/
|
|
12
12
|
import { getVersion, schema } from '@manuscripts/transform';
|
|
13
|
-
import config from '../config';
|
|
14
13
|
import { updateDocument } from './api/document';
|
|
15
14
|
import * as docApi from './api/document';
|
|
16
15
|
export const useLoadDoc = (authToken) => {
|
|
17
16
|
return async function loadDoc(manuscriptID, projectID, existingDoc) {
|
|
18
|
-
if (!config.quarterback.enabled) {
|
|
19
|
-
return undefined;
|
|
20
|
-
}
|
|
21
17
|
const found = await docApi.getDocument(projectID, manuscriptID, authToken);
|
|
22
18
|
let doc;
|
|
23
19
|
let version = 0;
|
|
@@ -61,6 +57,13 @@ export const useLoadDoc = (authToken) => {
|
|
|
61
57
|
if ('err' in update) {
|
|
62
58
|
console.error('Unable to create new document: ' + update.err);
|
|
63
59
|
}
|
|
60
|
+
else {
|
|
61
|
+
const found = await docApi.getDocument(projectID, manuscriptID, authToken);
|
|
62
|
+
if ('data' in found && found.data.doc && found.data.version >= 0) {
|
|
63
|
+
doc = found.data.doc;
|
|
64
|
+
version = found.data.version;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
64
67
|
}
|
|
65
68
|
if (doc !== null &&
|
|
66
69
|
typeof doc === 'object' &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLoadDoc.js","sourceRoot":"","sources":["../../../src/quarterback/useLoadDoc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAkB,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE3E,OAAO,
|
|
1
|
+
{"version":3,"file":"useLoadDoc.js","sourceRoot":"","sources":["../../../src/quarterback/useLoadDoc.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,19 +12,13 @@
|
|
|
12
12
|
import React, { createContext, useContext, useEffect } from 'react';
|
|
13
13
|
import { GenericStore } from '.';
|
|
14
14
|
const GenericStoreContext = createContext(new GenericStore());
|
|
15
|
-
export const createStore = async (
|
|
16
|
-
const store = new GenericStore(
|
|
17
|
-
await store.init(
|
|
18
|
-
|
|
19
|
-
store.subscribe((state) => {
|
|
20
|
-
parentObserver?.storeObserver(state);
|
|
21
|
-
});
|
|
15
|
+
export const createStore = async (sources, observer) => {
|
|
16
|
+
const store = new GenericStore();
|
|
17
|
+
await store.init(sources);
|
|
18
|
+
store.subscribe((state) => observer?.onUpdate(state));
|
|
22
19
|
return store;
|
|
23
20
|
};
|
|
24
21
|
export const GenericStoreProvider = ({ children, store }) => {
|
|
25
|
-
if (!(store instanceof GenericStore)) {
|
|
26
|
-
throw new Error('GenericStoreProvider received incorrect store.');
|
|
27
|
-
}
|
|
28
22
|
useEffect(() => {
|
|
29
23
|
return () => store.unmount();
|
|
30
24
|
}, [store]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoreContext.js","sourceRoot":"","sources":["../../../src/store/StoreContext.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"StoreContext.js","sourceRoot":"","sources":["../../../src/store/StoreContext.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGnE,OAAO,EAAE,YAAY,EAA2B,MAAM,GAAG,CAAA;AAEzD,MAAM,mBAAmB,GAAG,aAAa,CAAe,IAAI,YAAY,EAAE,CAAC,CAAA;AAE3E,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,OAAkC,EAClC,QAA2B,EAC3B,EAAE;IACF,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAA;IAChC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACzB,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IACrD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAMD,MAAM,CAAC,MAAM,oBAAoB,GAAoB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3E,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;IAC9B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,IAAI,KAAK,EAAE;QACT,OAAO,CACL,oBAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IACvC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,uDAA4B,CAClC,CAChC,CAAA;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAA"}
|
|
@@ -10,16 +10,25 @@
|
|
|
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
12
|
import { FileAttachment, FileManagement } from '@manuscripts/style-guide';
|
|
13
|
-
import React from 'react';
|
|
14
|
-
import {
|
|
15
|
-
|
|
13
|
+
import React, { MutableRefObject } from 'react';
|
|
14
|
+
import { state } from './store';
|
|
15
|
+
export type AppState = {
|
|
16
|
+
get: () => state | undefined;
|
|
17
|
+
update: (state: Partial<state>) => void;
|
|
18
|
+
};
|
|
19
|
+
export type AppStateRef = MutableRefObject<AppState | undefined>;
|
|
20
|
+
export type AppStateObserver = {
|
|
21
|
+
state: AppStateRef;
|
|
22
|
+
onUpdate: (state: state) => void;
|
|
23
|
+
};
|
|
24
|
+
export interface EditorAppProps {
|
|
16
25
|
fileManagement: FileManagement;
|
|
17
26
|
files: FileAttachment[];
|
|
18
|
-
parentObserver: ISubject;
|
|
19
27
|
manuscriptID: string;
|
|
20
28
|
projectID: string;
|
|
21
29
|
permittedActions: string[];
|
|
22
30
|
authToken: string;
|
|
31
|
+
observer?: AppStateObserver;
|
|
23
32
|
}
|
|
24
|
-
declare const EditorApp: React.FC<
|
|
33
|
+
declare const EditorApp: React.FC<EditorAppProps>;
|
|
25
34
|
export default EditorApp;
|
package/dist/types/Main.d.ts
CHANGED
|
@@ -9,17 +9,7 @@
|
|
|
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 { FileAttachment, FileManagement } from '@manuscripts/style-guide';
|
|
13
12
|
import React from 'react';
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
fileManagement: FileManagement;
|
|
17
|
-
files: FileAttachment[];
|
|
18
|
-
parentObserver: ISubject;
|
|
19
|
-
manuscriptID: string;
|
|
20
|
-
projectID: string;
|
|
21
|
-
authToken: string;
|
|
22
|
-
permittedActions: string[];
|
|
23
|
-
}
|
|
24
|
-
declare const Main: React.FC<Props>;
|
|
13
|
+
import { EditorAppProps } from './EditorApp';
|
|
14
|
+
declare const Main: React.FC<EditorAppProps>;
|
|
25
15
|
export default Main;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -11,20 +11,10 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import './lib/analytics';
|
|
13
13
|
import './lib/fonts';
|
|
14
|
-
import { FileAttachment, FileManagement } from '@manuscripts/style-guide';
|
|
15
14
|
import React from 'react';
|
|
16
|
-
import {
|
|
15
|
+
import { EditorAppProps } from './EditorApp';
|
|
17
16
|
export { ProjectRole } from './lib/roles';
|
|
18
17
|
export type { state } from './store';
|
|
19
|
-
export * from './store/ParentObserver';
|
|
20
18
|
export { getUserRole } from './lib/roles';
|
|
21
|
-
export
|
|
22
|
-
|
|
23
|
-
files: FileAttachment[];
|
|
24
|
-
parentObserver: ISubject;
|
|
25
|
-
manuscriptID: string;
|
|
26
|
-
projectID: string;
|
|
27
|
-
permittedActions: string[];
|
|
28
|
-
authToken?: string;
|
|
29
|
-
}
|
|
30
|
-
export declare const ManuscriptEditorApp: React.NamedExoticComponent<ManuscriptEditorAppProps>;
|
|
19
|
+
export type { AppState, AppStateRef, EditorAppProps, AppStateObserver, } from './EditorApp';
|
|
20
|
+
export declare const ManuscriptEditorApp: React.NamedExoticComponent<EditorAppProps>;
|
|
@@ -11,4 +11,4 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import Api from '../postgres-data/Api';
|
|
13
13
|
import { state } from '../store';
|
|
14
|
-
export declare const buildUtilities: (getState: () => Partial<state>, updateState: (state: Partial<state>) => void, api: Api) => Partial<state>;
|
|
14
|
+
export declare const buildUtilities: (projectID: string, manuscriptID: string, getState: () => Partial<state>, updateState: (state: Partial<state>) => void, api: Api) => Partial<state>;
|
|
@@ -10,9 +10,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
12
|
import React from 'react';
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
export declare const createStore: (
|
|
13
|
+
import { AppStateObserver } from '../EditorApp';
|
|
14
|
+
import { GenericStore, StoreDataSourceStrategy } from '.';
|
|
15
|
+
export declare const createStore: (sources: StoreDataSourceStrategy[], observer?: AppStateObserver) => Promise<GenericStore>;
|
|
16
16
|
interface Props {
|
|
17
17
|
store: GenericStore;
|
|
18
18
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manuscripts/article-editor",
|
|
3
|
-
"version": "1.15.
|
|
3
|
+
"version": "1.15.4",
|
|
4
4
|
"license": "CPAL-1.0",
|
|
5
5
|
"description": "React components for editing and viewing manuscripts",
|
|
6
6
|
"repository": "github:Atypon-OpenSource/manuscripts-article-editor",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@fontsource/lato": "^4.5.10",
|
|
36
36
|
"@fontsource/pt-sans": "^4.5.11",
|
|
37
37
|
"@fontsource/pt-serif": "^4.5.11",
|
|
38
|
-
"@manuscripts/body-editor": "1.11.
|
|
38
|
+
"@manuscripts/body-editor": "1.11.3",
|
|
39
39
|
"@manuscripts/json-schema": "2.2.8",
|
|
40
40
|
"@manuscripts/library": "1.3.7",
|
|
41
41
|
"@manuscripts/style-guide": "1.12.12",
|
|
@@ -109,4 +109,4 @@
|
|
|
109
109
|
"resolutions": {
|
|
110
110
|
"@types/react": "^17.0.2"
|
|
111
111
|
}
|
|
112
|
-
}
|
|
112
|
+
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
|
|
4
|
-
*
|
|
5
|
-
* Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
|
|
6
|
-
*
|
|
7
|
-
* The Original Code is manuscripts-frontend.
|
|
8
|
-
*
|
|
9
|
-
* The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
|
|
10
|
-
*
|
|
11
|
-
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2022 Atypon Systems LLC. All Rights Reserved.
|
|
12
|
-
*/
|
|
13
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.ParentObserver = void 0;
|
|
15
|
-
class ParentObserver {
|
|
16
|
-
constructor() {
|
|
17
|
-
this.observer = undefined;
|
|
18
|
-
this.onUpdate = (observer) => {
|
|
19
|
-
this.observer = observer;
|
|
20
|
-
};
|
|
21
|
-
this.update = (partialState) => {
|
|
22
|
-
if (this.observer) {
|
|
23
|
-
this.observer(partialState);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
this.storeObserver = (state) => {
|
|
27
|
-
this.storeListener && this.storeListener(state); // storeListener shoudldn't be directly assigned to storeObserver to avoid potential order of execution problems
|
|
28
|
-
};
|
|
29
|
-
this.onStoreInternalUpdate = (fn) => {
|
|
30
|
-
// it's supposed to be listened by the parent so there is only a single listener
|
|
31
|
-
this.storeListener = fn;
|
|
32
|
-
};
|
|
33
|
-
this.detach = () => {
|
|
34
|
-
this.storeListener = undefined;
|
|
35
|
-
this.observer = undefined;
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.ParentObserver = ParentObserver;
|
|
40
|
-
//# sourceMappingURL=ParentObserver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ParentObserver.js","sourceRoot":"","sources":["../../../src/store/ParentObserver.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAcH,MAAa,cAAc;IAA3B;QACU,aAAQ,GAA0B,SAAS,CAAA;QAGnD,aAAQ,GAAG,CAAC,QAAmB,EAAE,EAAE;YACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC1B,CAAC,CAAA;QAED,WAAM,GAAG,CAAC,YAAwC,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;aAC5B;QACH,CAAC,CAAA;QAED,kBAAa,GAAG,CAAC,KAAY,EAAE,EAAE;YAC/B,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA,CAAC,gHAAgH;QAClK,CAAC,CAAA;QAED,0BAAqB,GAAG,CAAC,EAA0B,EAAE,EAAE;YACrD,gFAAgF;YAChF,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACzB,CAAC,CAAA;QAED,WAAM,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;YAC9B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;QAC3B,CAAC,CAAA;IACH,CAAC;CAAA;AA3BD,wCA2BC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
|
|
3
|
-
*
|
|
4
|
-
* Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
|
|
5
|
-
*
|
|
6
|
-
* The Original Code is manuscripts-frontend.
|
|
7
|
-
*
|
|
8
|
-
* The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
|
|
9
|
-
*
|
|
10
|
-
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2022 Atypon Systems LLC. All Rights Reserved.
|
|
11
|
-
*/
|
|
12
|
-
export class ParentObserver {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.observer = undefined;
|
|
15
|
-
this.onUpdate = (observer) => {
|
|
16
|
-
this.observer = observer;
|
|
17
|
-
};
|
|
18
|
-
this.update = (partialState) => {
|
|
19
|
-
if (this.observer) {
|
|
20
|
-
this.observer(partialState);
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
this.storeObserver = (state) => {
|
|
24
|
-
this.storeListener && this.storeListener(state); // storeListener shoudldn't be directly assigned to storeObserver to avoid potential order of execution problems
|
|
25
|
-
};
|
|
26
|
-
this.onStoreInternalUpdate = (fn) => {
|
|
27
|
-
// it's supposed to be listened by the parent so there is only a single listener
|
|
28
|
-
this.storeListener = fn;
|
|
29
|
-
};
|
|
30
|
-
this.detach = () => {
|
|
31
|
-
this.storeListener = undefined;
|
|
32
|
-
this.observer = undefined;
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=ParentObserver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ParentObserver.js","sourceRoot":"","sources":["../../../src/store/ParentObserver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,MAAM,OAAO,cAAc;IAA3B;QACU,aAAQ,GAA0B,SAAS,CAAA;QAGnD,aAAQ,GAAG,CAAC,QAAmB,EAAE,EAAE;YACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC1B,CAAC,CAAA;QAED,WAAM,GAAG,CAAC,YAAwC,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;aAC5B;QACH,CAAC,CAAA;QAED,kBAAa,GAAG,CAAC,KAAY,EAAE,EAAE;YAC/B,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA,CAAC,gHAAgH;QAClK,CAAC,CAAA;QAED,0BAAqB,GAAG,CAAC,EAA0B,EAAE,EAAE;YACrD,gFAAgF;YAChF,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACzB,CAAC,CAAA;QAED,WAAM,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;YAC9B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;QAC3B,CAAC,CAAA;IACH,CAAC;CAAA"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
|
|
3
|
-
*
|
|
4
|
-
* Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
|
|
5
|
-
*
|
|
6
|
-
* The Original Code is manuscripts-frontend.
|
|
7
|
-
*
|
|
8
|
-
* The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
|
|
9
|
-
*
|
|
10
|
-
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2022 Atypon Systems LLC. All Rights Reserved.
|
|
11
|
-
*/
|
|
12
|
-
import { state } from './Store';
|
|
13
|
-
export type IObserver = (state: {
|
|
14
|
-
[key: string]: unknown;
|
|
15
|
-
}) => void;
|
|
16
|
-
export interface ISubject {
|
|
17
|
-
onUpdate(observer: IObserver): void;
|
|
18
|
-
update(state: unknown): void;
|
|
19
|
-
detach(): void;
|
|
20
|
-
storeObserver: (state: state) => void;
|
|
21
|
-
onStoreInternalUpdate: (fn: (state: state) => void) => void;
|
|
22
|
-
}
|
|
23
|
-
export declare class ParentObserver implements ISubject {
|
|
24
|
-
private observer;
|
|
25
|
-
private storeListener;
|
|
26
|
-
onUpdate: (observer: IObserver) => void;
|
|
27
|
-
update: (partialState: {
|
|
28
|
-
[key: string]: unknown;
|
|
29
|
-
}) => void;
|
|
30
|
-
storeObserver: (state: state) => void;
|
|
31
|
-
onStoreInternalUpdate: (fn: (state: state) => void) => void;
|
|
32
|
-
detach: () => void;
|
|
33
|
-
}
|