@manuscripts/transform 1.5.0-LEAN-2852-9 → 1.5.0-LIT-528106
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/jats/importer/parse-jats-article.js +2 -11
- package/dist/cjs/jats/jats-exporter.js +6 -8
- package/dist/cjs/lib/utils.js +14 -1
- package/dist/cjs/schema/index.js +0 -3
- package/dist/cjs/transformer/builders.js +2 -1
- package/dist/cjs/transformer/decode.js +0 -23
- package/dist/cjs/transformer/encode.js +10 -9
- package/dist/cjs/transformer/html.js +5 -6
- package/dist/cjs/transformer/node-types.js +0 -1
- package/dist/cjs/transformer/project-bundle.js +1 -22
- package/dist/es/jats/importer/parse-jats-article.js +2 -11
- package/dist/es/jats/jats-exporter.js +7 -9
- package/dist/es/lib/utils.js +12 -0
- package/dist/es/schema/index.js +0 -3
- package/dist/es/transformer/builders.js +2 -1
- package/dist/es/transformer/decode.js +0 -23
- package/dist/es/transformer/encode.js +11 -10
- package/dist/es/transformer/html.js +6 -7
- package/dist/es/transformer/node-types.js +0 -1
- package/dist/es/transformer/project-bundle.js +0 -20
- package/dist/types/lib/utils.d.ts +2 -0
- package/dist/types/schema/index.d.ts +0 -1
- package/dist/types/schema/types.d.ts +1 -1
- package/dist/types/transformer/builders.d.ts +1 -1
- package/dist/types/transformer/decode.d.ts +0 -1
- package/dist/types/transformer/encode.d.ts +1 -1
- package/dist/types/transformer/project-bundle.d.ts +1 -2
- package/package.json +2 -2
- package/dist/cjs/schema/nodes/titles.js +0 -32
- package/dist/es/schema/nodes/titles.js +0 -29
- package/dist/types/schema/nodes/titles.d.ts +0 -28
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.getElementsOrder = exports.parseJATSArticle = exports.parseJATSBody = exports.parseJATSReferences = exports.parseJATSFront = void 0;
|
|
19
|
-
const json_schema_1 = require("@manuscripts/json-schema");
|
|
20
19
|
const prosemirror_model_1 = require("prosemirror-model");
|
|
21
20
|
const errors_1 = require("../../errors");
|
|
22
21
|
const html_1 = require("../../lib/html");
|
|
@@ -52,16 +51,9 @@ const parseJATSFront = async (front) => {
|
|
|
52
51
|
const title = (_a = articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.querySelector('title-group > article-title')) === null || _a === void 0 ? void 0 : _a.innerHTML;
|
|
53
52
|
const subtitle = (_b = articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.querySelector('title-group > subtitle')) === null || _b === void 0 ? void 0 : _b.innerHTML;
|
|
54
53
|
const runningTitle = (_c = articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.querySelector('title-group > alt-title[alt-title-type="right-running"]')) === null || _c === void 0 ? void 0 : _c.innerHTML;
|
|
55
|
-
const manuscriptMeta = Object.assign({
|
|
56
|
-
const titles = {
|
|
57
|
-
objectType: json_schema_1.ObjectTypes.Titles,
|
|
58
|
-
_id: (0, id_1.generateID)(json_schema_1.ObjectTypes.Titles),
|
|
59
|
-
title: title ? inlineContentsFromJATSTitle(title) : undefined,
|
|
60
|
-
subtitle: subtitle ? inlineContentsFromJATSTitle(subtitle) : undefined,
|
|
61
|
-
runningTitle: runningTitle
|
|
54
|
+
const manuscriptMeta = Object.assign({ title: title ? inlineContentsFromJATSTitle(title) : undefined, subtitle: subtitle ? inlineContentsFromJATSTitle(subtitle) : undefined, runningTitle: runningTitle
|
|
62
55
|
? inlineContentsFromJATSTitle(runningTitle)
|
|
63
|
-
: undefined,
|
|
64
|
-
};
|
|
56
|
+
: undefined }, jats_front_parser_1.jatsFrontParser.parseCounts(articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.querySelector('counts')));
|
|
65
57
|
const { affiliations, affiliationIDs } = jats_front_parser_1.jatsFrontParser.parseAffiliationNodes([
|
|
66
58
|
...front.querySelectorAll('article-meta > contrib-group > aff'),
|
|
67
59
|
]);
|
|
@@ -81,7 +73,6 @@ const parseJATSFront = async (front) => {
|
|
|
81
73
|
const manuscript = Object.assign(Object.assign(Object.assign({}, (0, builders_1.buildManuscript)()), manuscriptMeta), history);
|
|
82
74
|
return {
|
|
83
75
|
models: generateModelIDs([
|
|
84
|
-
titles,
|
|
85
76
|
manuscript,
|
|
86
77
|
...footnotes,
|
|
87
78
|
...correspondingList,
|
|
@@ -238,7 +238,6 @@ class JATSExporter {
|
|
|
238
238
|
this.buildFront = (doi, id, links) => {
|
|
239
239
|
var _a, _b, _c, _d;
|
|
240
240
|
const manuscript = (0, project_bundle_1.findManuscript)(this.modelMap);
|
|
241
|
-
const titles = (0, project_bundle_1.findTitles)(this.modelMap);
|
|
242
241
|
const front = this.document.createElement('front');
|
|
243
242
|
const journalMeta = this.document.createElement('journal-meta');
|
|
244
243
|
front.appendChild(journalMeta);
|
|
@@ -316,20 +315,20 @@ class JATSExporter {
|
|
|
316
315
|
articleMeta.appendChild(link);
|
|
317
316
|
}
|
|
318
317
|
}
|
|
319
|
-
if (
|
|
318
|
+
if (manuscript.title) {
|
|
320
319
|
const element = this.document.createElement('article-title');
|
|
321
|
-
this.setTitleContent(element,
|
|
320
|
+
this.setTitleContent(element, manuscript.title);
|
|
322
321
|
titleGroup.appendChild(element);
|
|
323
322
|
}
|
|
324
|
-
if (
|
|
323
|
+
if (manuscript.subtitle) {
|
|
325
324
|
const element = this.document.createElement('subtitle');
|
|
326
|
-
this.setTitleContent(element,
|
|
325
|
+
this.setTitleContent(element, manuscript.subtitle);
|
|
327
326
|
titleGroup.appendChild(element);
|
|
328
327
|
}
|
|
329
|
-
if (
|
|
328
|
+
if (manuscript.runningTitle) {
|
|
330
329
|
const element = this.document.createElement('alt-title');
|
|
331
330
|
element.setAttribute('alt-title-type', 'right-running');
|
|
332
|
-
this.setTitleContent(element,
|
|
331
|
+
this.setTitleContent(element, manuscript.runningTitle);
|
|
333
332
|
titleGroup.appendChild(element);
|
|
334
333
|
}
|
|
335
334
|
const supplements = [...this.modelMap.values()].filter((model) => model.objectType === json_schema_1.ObjectTypes.Supplement);
|
|
@@ -599,7 +598,6 @@ class JATSExporter {
|
|
|
599
598
|
this.createSerializer = () => {
|
|
600
599
|
const getModel = (id) => id ? this.modelMap.get(id) : undefined;
|
|
601
600
|
const nodes = {
|
|
602
|
-
titles: () => '',
|
|
603
601
|
affiliations_section: () => '',
|
|
604
602
|
contributors_section: () => '',
|
|
605
603
|
table_element_footer: () => ['table-wrap-foot', 0],
|
package/dist/cjs/lib/utils.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.getTrimmedTextContent = exports.findParentNodeClosestToPos = exports.isInAbstractsSection = exports.isInBibliographySection = exports.isInGraphicalAbstractSection = exports.findNodePositions = exports.iterateChildren = void 0;
|
|
18
|
+
exports.modelsEqual = exports.getTrimmedTextContent = exports.findParentNodeClosestToPos = exports.isInAbstractsSection = exports.isInBibliographySection = exports.isInGraphicalAbstractSection = exports.findNodePositions = exports.iterateChildren = void 0;
|
|
19
19
|
const bibliography_section_1 = require("../schema/nodes/bibliography_section");
|
|
20
20
|
const graphical_abstract_section_1 = require("../schema/nodes/graphical_abstract_section");
|
|
21
21
|
function* iterateChildren(node, recurse = false) {
|
|
@@ -94,3 +94,16 @@ const getTrimmedTextContent = (node, querySelector) => {
|
|
|
94
94
|
return (_b = (_a = node.querySelector(querySelector)) === null || _a === void 0 ? void 0 : _a.textContent) === null || _b === void 0 ? void 0 : _b.trim();
|
|
95
95
|
};
|
|
96
96
|
exports.getTrimmedTextContent = getTrimmedTextContent;
|
|
97
|
+
function modelsEqual(model, model2) {
|
|
98
|
+
for (const v in model) {
|
|
99
|
+
for (const v2 in model2) {
|
|
100
|
+
const prepV = typeof v == 'object' ? JSON.stringify(v) : v;
|
|
101
|
+
const prepV2 = typeof v2 == 'object' ? JSON.stringify(v2) : v2;
|
|
102
|
+
if (prepV !== prepV2) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
exports.modelsEqual = modelsEqual;
|
package/dist/cjs/schema/index.js
CHANGED
|
@@ -85,7 +85,6 @@ const table_element_1 = require("./nodes/table_element");
|
|
|
85
85
|
const table_element_footer_1 = require("./nodes/table_element_footer");
|
|
86
86
|
const table_row_1 = require("./nodes/table_row");
|
|
87
87
|
const text_1 = require("./nodes/text");
|
|
88
|
-
const titles_1 = require("./nodes/titles");
|
|
89
88
|
const toc_element_1 = require("./nodes/toc_element");
|
|
90
89
|
const toc_section_1 = require("./nodes/toc_section");
|
|
91
90
|
__exportStar(require("./groups"), exports);
|
|
@@ -141,7 +140,6 @@ __exportStar(require("./nodes/affiliation"), exports);
|
|
|
141
140
|
__exportStar(require("./nodes/meta_section"), exports);
|
|
142
141
|
__exportStar(require("./nodes/contributor"), exports);
|
|
143
142
|
__exportStar(require("./nodes/table_element_footer"), exports);
|
|
144
|
-
__exportStar(require("./nodes/titles"), exports);
|
|
145
143
|
__exportStar(require("./nodes/affiliations_section"), exports);
|
|
146
144
|
__exportStar(require("./nodes/contributors_section"), exports);
|
|
147
145
|
exports.schema = new prosemirror_model_1.Schema({
|
|
@@ -218,7 +216,6 @@ exports.schema = new prosemirror_model_1.Schema({
|
|
|
218
216
|
meta_section: meta_section_1.metaSection,
|
|
219
217
|
contributor: contributor_1.contributor,
|
|
220
218
|
table_element_footer: table_element_footer_1.tableElementFooter,
|
|
221
|
-
titles: titles_1.Titles,
|
|
222
219
|
affiliations_section: affiliations_section_1.affiliationsSection,
|
|
223
220
|
contributors_section: contributors_section_1.contributorsSection,
|
|
224
221
|
},
|
|
@@ -35,9 +35,10 @@ const buildProject = (owner) => ({
|
|
|
35
35
|
title: '',
|
|
36
36
|
});
|
|
37
37
|
exports.buildProject = buildProject;
|
|
38
|
-
const buildManuscript = () => ({
|
|
38
|
+
const buildManuscript = (title = '') => ({
|
|
39
39
|
_id: (0, id_1.generateID)(json_schema_1.ObjectTypes.Manuscript),
|
|
40
40
|
objectType: json_schema_1.ObjectTypes.Manuscript,
|
|
41
|
+
title,
|
|
41
42
|
});
|
|
42
43
|
exports.buildManuscript = buildManuscript;
|
|
43
44
|
const buildContributor = (bibliographicName, role = 'author', priority = 0, userID, invitationID) => ({
|
|
@@ -115,16 +115,6 @@ class Decoder {
|
|
|
115
115
|
rootSectionNodes.unshift(node);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
-
createTitlesNode() {
|
|
119
|
-
const titlesModel = (0, exports.getModelsByType)(this.modelMap, json_schema_1.ObjectTypes.Titles)[0];
|
|
120
|
-
if (titlesModel) {
|
|
121
|
-
const titlesNode = this.decode(titlesModel);
|
|
122
|
-
return titlesNode;
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
return null;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
118
|
createRootSectionNodes() {
|
|
129
119
|
let rootSections = getSections(this.modelMap).filter((section) => !section.path || section.path.length <= 1);
|
|
130
120
|
rootSections = this.addGeneratedLabels(rootSections);
|
|
@@ -157,15 +147,6 @@ class Decoder {
|
|
|
157
147
|
constructor(modelMap, allowMissingElements = false) {
|
|
158
148
|
this.comments = new Map();
|
|
159
149
|
this.creators = {
|
|
160
|
-
[json_schema_1.ObjectTypes.Titles]: (data) => {
|
|
161
|
-
const model = data;
|
|
162
|
-
return schema_1.schema.nodes.titles.create({
|
|
163
|
-
id: model._id,
|
|
164
|
-
title: model.title,
|
|
165
|
-
subtitle: model.subtitle,
|
|
166
|
-
runningTitle: model.runningTitle,
|
|
167
|
-
});
|
|
168
|
-
},
|
|
169
150
|
[json_schema_1.ObjectTypes.BibliographyElement]: (data) => {
|
|
170
151
|
var _a;
|
|
171
152
|
const model = data;
|
|
@@ -650,13 +631,9 @@ class Decoder {
|
|
|
650
631
|
};
|
|
651
632
|
this.getModel = (id) => this.modelMap.get(id);
|
|
652
633
|
this.createArticleNode = (manuscriptID) => {
|
|
653
|
-
const titlesNode = this.createTitlesNode();
|
|
654
634
|
const rootSectionNodes = this.createRootSectionNodes();
|
|
655
635
|
const metaSectionNode = this.createMetaSectionNode();
|
|
656
636
|
const contents = [...rootSectionNodes, metaSectionNode];
|
|
657
|
-
if (titlesNode) {
|
|
658
|
-
contents.push(titlesNode);
|
|
659
|
-
}
|
|
660
637
|
return schema_1.schema.nodes.manuscript.create({
|
|
661
638
|
id: manuscriptID || this.getManuscriptID(),
|
|
662
639
|
}, contents);
|
|
@@ -25,6 +25,7 @@ const utils_1 = require("../lib/utils");
|
|
|
25
25
|
const schema_1 = require("../schema");
|
|
26
26
|
const builders_1 = require("./builders");
|
|
27
27
|
const highlight_markers_1 = require("./highlight-markers");
|
|
28
|
+
const id_1 = require("./id");
|
|
28
29
|
const node_types_1 = require("./node-types");
|
|
29
30
|
const section_category_1 = require("./section-category");
|
|
30
31
|
const serializer = prosemirror_model_1.DOMSerializer.fromSchema(schema_1.schema);
|
|
@@ -263,12 +264,6 @@ function figureElementEncoder(node) {
|
|
|
263
264
|
};
|
|
264
265
|
}
|
|
265
266
|
const encoders = {
|
|
266
|
-
titles: (node) => ({
|
|
267
|
-
title: node.attrs.title,
|
|
268
|
-
subtitle: node.attrs.subtitle,
|
|
269
|
-
runningTitle: node.attrs.runningTitle,
|
|
270
|
-
_id: node.attrs._id,
|
|
271
|
-
}),
|
|
272
267
|
bibliography_element: (node) => ({
|
|
273
268
|
elementType: 'div',
|
|
274
269
|
contents: '',
|
|
@@ -576,7 +571,7 @@ const modelFromNode = (node, parent, path, priority) => {
|
|
|
576
571
|
return { model, commentAnnotationsMap };
|
|
577
572
|
};
|
|
578
573
|
exports.modelFromNode = modelFromNode;
|
|
579
|
-
const encode = (node) => {
|
|
574
|
+
const encode = (node, preserveWithRepeatedID = false) => {
|
|
580
575
|
const models = new Map();
|
|
581
576
|
const priority = {
|
|
582
577
|
value: 1,
|
|
@@ -596,8 +591,14 @@ const encode = (node) => {
|
|
|
596
591
|
return;
|
|
597
592
|
}
|
|
598
593
|
const { model } = (0, exports.modelFromNode)(child, parent, path, priority);
|
|
599
|
-
|
|
600
|
-
|
|
594
|
+
const existingModel = models.get(model._id);
|
|
595
|
+
if (existingModel) {
|
|
596
|
+
if (preserveWithRepeatedID && !(0, utils_1.modelsEqual)(model, existingModel)) {
|
|
597
|
+
model._id = (0, id_1.generateID)(model.objectType);
|
|
598
|
+
}
|
|
599
|
+
else {
|
|
600
|
+
throw Error(`Encountered duplicate ids in models map while encoding: ${model._id}`);
|
|
601
|
+
}
|
|
601
602
|
}
|
|
602
603
|
models.set(model._id, model);
|
|
603
604
|
child.forEach(addModel(path.concat(child.attrs.id), child));
|
|
@@ -152,7 +152,6 @@ class HTMLTransformer {
|
|
|
152
152
|
this.buildFront = () => {
|
|
153
153
|
const manuscript = (0, project_bundle_1.findManuscript)(this.modelMap);
|
|
154
154
|
const journal = (0, project_bundle_1.findJournal)(this.modelMap);
|
|
155
|
-
const titles = (0, project_bundle_1.findTitles)(this.modelMap);
|
|
156
155
|
if (!manuscript) {
|
|
157
156
|
throw new Error('Manuscript not found in project modelMap');
|
|
158
157
|
}
|
|
@@ -171,14 +170,14 @@ class HTMLTransformer {
|
|
|
171
170
|
}
|
|
172
171
|
const articleMeta = this.document.createElement('div');
|
|
173
172
|
front.appendChild(articleMeta);
|
|
174
|
-
const
|
|
175
|
-
if (
|
|
176
|
-
|
|
173
|
+
const articleTitle = this.document.createElement('h1');
|
|
174
|
+
if (manuscript.title) {
|
|
175
|
+
articleTitle.innerHTML = manuscript.title;
|
|
177
176
|
}
|
|
178
177
|
if (journal === null || journal === void 0 ? void 0 : journal.title) {
|
|
179
|
-
|
|
178
|
+
articleTitle.setAttribute('data-journal', journal.title);
|
|
180
179
|
}
|
|
181
|
-
articleMeta.appendChild(
|
|
180
|
+
articleMeta.appendChild(articleTitle);
|
|
182
181
|
if (manuscript.DOI) {
|
|
183
182
|
const articleID = this.document.createElement('article-id');
|
|
184
183
|
articleID.setAttribute('pub-id-type', 'doi');
|
|
@@ -57,7 +57,6 @@ exports.nodeTypesMap = new Map([
|
|
|
57
57
|
[schema_1.schema.nodes.affiliation, json_schema_1.ObjectTypes.Affiliation],
|
|
58
58
|
[schema_1.schema.nodes.contributor, json_schema_1.ObjectTypes.Contributor],
|
|
59
59
|
[schema_1.schema.nodes.table_element_footer, json_schema_1.ObjectTypes.TableElementFooter],
|
|
60
|
-
[schema_1.schema.nodes.titles, json_schema_1.ObjectTypes.Titles],
|
|
61
60
|
[schema_1.schema.nodes.contributors_section, json_schema_1.ObjectTypes.Section],
|
|
62
61
|
[schema_1.schema.nodes.affiliations_section, json_schema_1.ObjectTypes.Section],
|
|
63
62
|
]);
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.
|
|
18
|
+
exports.findManuscriptById = exports.findManuscriptModelByType = exports.findJournal = exports.findManuscript = exports.parseProjectBundle = void 0;
|
|
19
19
|
const json_schema_1 = require("@manuscripts/json-schema");
|
|
20
20
|
const decode_1 = require("./decode");
|
|
21
21
|
const object_types_1 = require("./object-types");
|
|
@@ -71,24 +71,3 @@ const findManuscriptById = (modelMap, manuscriptID) => {
|
|
|
71
71
|
throw new Error(`There is no manuscript found for the following _id (${manuscriptID})`);
|
|
72
72
|
};
|
|
73
73
|
exports.findManuscriptById = findManuscriptById;
|
|
74
|
-
const isTitle = (0, object_types_1.hasObjectType)(json_schema_1.ObjectTypes.Titles);
|
|
75
|
-
const findTitles = (modelMap) => {
|
|
76
|
-
for (const model of modelMap.values()) {
|
|
77
|
-
if (isTitle(model)) {
|
|
78
|
-
return model;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
const defaultTitle = {
|
|
82
|
-
_id: 'MPTitles:8EB79C14-9F61-483A-902F-A0B8EF5973C1',
|
|
83
|
-
createdAt: 1538472121.690101,
|
|
84
|
-
updatedAt: 1538472121.690101,
|
|
85
|
-
objectType: 'MPTitles',
|
|
86
|
-
title: 'main title',
|
|
87
|
-
subtitle: 'subtitle',
|
|
88
|
-
runningTitle: 'running title',
|
|
89
|
-
manuscriptID: 'MPManuscript:E3830344-E77B-42BA-BD77-3E95489712A0',
|
|
90
|
-
containerID: 'MPProject:1',
|
|
91
|
-
};
|
|
92
|
-
return defaultTitle;
|
|
93
|
-
};
|
|
94
|
-
exports.findTitles = findTitles;
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { ObjectTypes, } from '@manuscripts/json-schema';
|
|
17
16
|
import { DOMParser } from 'prosemirror-model';
|
|
18
17
|
import { InvalidInput } from '../../errors';
|
|
19
18
|
import { nodeFromHTML } from '../../lib/html';
|
|
@@ -49,16 +48,9 @@ export const parseJATSFront = async (front) => {
|
|
|
49
48
|
const title = (_a = articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.querySelector('title-group > article-title')) === null || _a === void 0 ? void 0 : _a.innerHTML;
|
|
50
49
|
const subtitle = (_b = articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.querySelector('title-group > subtitle')) === null || _b === void 0 ? void 0 : _b.innerHTML;
|
|
51
50
|
const runningTitle = (_c = articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.querySelector('title-group > alt-title[alt-title-type="right-running"]')) === null || _c === void 0 ? void 0 : _c.innerHTML;
|
|
52
|
-
const manuscriptMeta = Object.assign({
|
|
53
|
-
const titles = {
|
|
54
|
-
objectType: ObjectTypes.Titles,
|
|
55
|
-
_id: generateID(ObjectTypes.Titles),
|
|
56
|
-
title: title ? inlineContentsFromJATSTitle(title) : undefined,
|
|
57
|
-
subtitle: subtitle ? inlineContentsFromJATSTitle(subtitle) : undefined,
|
|
58
|
-
runningTitle: runningTitle
|
|
51
|
+
const manuscriptMeta = Object.assign({ title: title ? inlineContentsFromJATSTitle(title) : undefined, subtitle: subtitle ? inlineContentsFromJATSTitle(subtitle) : undefined, runningTitle: runningTitle
|
|
59
52
|
? inlineContentsFromJATSTitle(runningTitle)
|
|
60
|
-
: undefined,
|
|
61
|
-
};
|
|
53
|
+
: undefined }, jatsFrontParser.parseCounts(articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.querySelector('counts')));
|
|
62
54
|
const { affiliations, affiliationIDs } = jatsFrontParser.parseAffiliationNodes([
|
|
63
55
|
...front.querySelectorAll('article-meta > contrib-group > aff'),
|
|
64
56
|
]);
|
|
@@ -78,7 +70,6 @@ export const parseJATSFront = async (front) => {
|
|
|
78
70
|
const manuscript = Object.assign(Object.assign(Object.assign({}, buildManuscript()), manuscriptMeta), history);
|
|
79
71
|
return {
|
|
80
72
|
models: generateModelIDs([
|
|
81
|
-
titles,
|
|
82
73
|
manuscript,
|
|
83
74
|
...footnotes,
|
|
84
75
|
...correspondingList,
|
|
@@ -25,7 +25,7 @@ import { generateAttachmentFilename } from '../transformer/filename';
|
|
|
25
25
|
import { buildTargets } from '../transformer/labels';
|
|
26
26
|
import { isExecutableNodeType, isNodeType } from '../transformer/node-types';
|
|
27
27
|
import { hasObjectType } from '../transformer/object-types';
|
|
28
|
-
import { findManuscript, findManuscriptById,
|
|
28
|
+
import { findManuscript, findManuscriptById, } from '../transformer/project-bundle';
|
|
29
29
|
import { chooseJatsFnType, chooseSecType, } from '../transformer/section-category';
|
|
30
30
|
import { selectVersionIds } from './jats-versions';
|
|
31
31
|
const warn = debug('manuscripts-transform');
|
|
@@ -231,7 +231,6 @@ export class JATSExporter {
|
|
|
231
231
|
this.buildFront = (doi, id, links) => {
|
|
232
232
|
var _a, _b, _c, _d;
|
|
233
233
|
const manuscript = findManuscript(this.modelMap);
|
|
234
|
-
const titles = findTitles(this.modelMap);
|
|
235
234
|
const front = this.document.createElement('front');
|
|
236
235
|
const journalMeta = this.document.createElement('journal-meta');
|
|
237
236
|
front.appendChild(journalMeta);
|
|
@@ -309,20 +308,20 @@ export class JATSExporter {
|
|
|
309
308
|
articleMeta.appendChild(link);
|
|
310
309
|
}
|
|
311
310
|
}
|
|
312
|
-
if (
|
|
311
|
+
if (manuscript.title) {
|
|
313
312
|
const element = this.document.createElement('article-title');
|
|
314
|
-
this.setTitleContent(element,
|
|
313
|
+
this.setTitleContent(element, manuscript.title);
|
|
315
314
|
titleGroup.appendChild(element);
|
|
316
315
|
}
|
|
317
|
-
if (
|
|
316
|
+
if (manuscript.subtitle) {
|
|
318
317
|
const element = this.document.createElement('subtitle');
|
|
319
|
-
this.setTitleContent(element,
|
|
318
|
+
this.setTitleContent(element, manuscript.subtitle);
|
|
320
319
|
titleGroup.appendChild(element);
|
|
321
320
|
}
|
|
322
|
-
if (
|
|
321
|
+
if (manuscript.runningTitle) {
|
|
323
322
|
const element = this.document.createElement('alt-title');
|
|
324
323
|
element.setAttribute('alt-title-type', 'right-running');
|
|
325
|
-
this.setTitleContent(element,
|
|
324
|
+
this.setTitleContent(element, manuscript.runningTitle);
|
|
326
325
|
titleGroup.appendChild(element);
|
|
327
326
|
}
|
|
328
327
|
const supplements = [...this.modelMap.values()].filter((model) => model.objectType === ObjectTypes.Supplement);
|
|
@@ -592,7 +591,6 @@ export class JATSExporter {
|
|
|
592
591
|
this.createSerializer = () => {
|
|
593
592
|
const getModel = (id) => id ? this.modelMap.get(id) : undefined;
|
|
594
593
|
const nodes = {
|
|
595
|
-
titles: () => '',
|
|
596
594
|
affiliations_section: () => '',
|
|
597
595
|
contributors_section: () => '',
|
|
598
596
|
table_element_footer: () => ['table-wrap-foot', 0],
|
package/dist/es/lib/utils.js
CHANGED
|
@@ -84,3 +84,15 @@ export const getTrimmedTextContent = (node, querySelector) => {
|
|
|
84
84
|
}
|
|
85
85
|
return (_b = (_a = node.querySelector(querySelector)) === null || _a === void 0 ? void 0 : _a.textContent) === null || _b === void 0 ? void 0 : _b.trim();
|
|
86
86
|
};
|
|
87
|
+
export function modelsEqual(model, model2) {
|
|
88
|
+
for (const v in model) {
|
|
89
|
+
for (const v2 in model2) {
|
|
90
|
+
const prepV = typeof v == 'object' ? JSON.stringify(v) : v;
|
|
91
|
+
const prepV2 = typeof v2 == 'object' ? JSON.stringify(v2) : v2;
|
|
92
|
+
if (prepV !== prepV2) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
}
|
package/dist/es/schema/index.js
CHANGED
|
@@ -68,7 +68,6 @@ import { tableElement } from './nodes/table_element';
|
|
|
68
68
|
import { tableElementFooter } from './nodes/table_element_footer';
|
|
69
69
|
import { tableCell, tableRow } from './nodes/table_row';
|
|
70
70
|
import { text } from './nodes/text';
|
|
71
|
-
import { Titles } from './nodes/titles';
|
|
72
71
|
import { tocElement } from './nodes/toc_element';
|
|
73
72
|
import { tocSection } from './nodes/toc_section';
|
|
74
73
|
export * from './groups';
|
|
@@ -124,7 +123,6 @@ export * from './nodes/affiliation';
|
|
|
124
123
|
export * from './nodes/meta_section';
|
|
125
124
|
export * from './nodes/contributor';
|
|
126
125
|
export * from './nodes/table_element_footer';
|
|
127
|
-
export * from './nodes/titles';
|
|
128
126
|
export * from './nodes/affiliations_section';
|
|
129
127
|
export * from './nodes/contributors_section';
|
|
130
128
|
export const schema = new Schema({
|
|
@@ -201,7 +199,6 @@ export const schema = new Schema({
|
|
|
201
199
|
meta_section: metaSection,
|
|
202
200
|
contributor: contributor,
|
|
203
201
|
table_element_footer: tableElementFooter,
|
|
204
|
-
titles: Titles,
|
|
205
202
|
affiliations_section: affiliationsSection,
|
|
206
203
|
contributors_section: contributorsSection,
|
|
207
204
|
},
|
|
@@ -28,9 +28,10 @@ export const buildProject = (owner) => ({
|
|
|
28
28
|
viewers: [],
|
|
29
29
|
title: '',
|
|
30
30
|
});
|
|
31
|
-
export const buildManuscript = () => ({
|
|
31
|
+
export const buildManuscript = (title = '') => ({
|
|
32
32
|
_id: generateID(ObjectTypes.Manuscript),
|
|
33
33
|
objectType: ObjectTypes.Manuscript,
|
|
34
|
+
title,
|
|
34
35
|
});
|
|
35
36
|
export const buildContributor = (bibliographicName, role = 'author', priority = 0, userID, invitationID) => ({
|
|
36
37
|
_id: generateID(ObjectTypes.Contributor),
|
|
@@ -105,16 +105,6 @@ export class Decoder {
|
|
|
105
105
|
rootSectionNodes.unshift(node);
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
-
createTitlesNode() {
|
|
109
|
-
const titlesModel = getModelsByType(this.modelMap, ObjectTypes.Titles)[0];
|
|
110
|
-
if (titlesModel) {
|
|
111
|
-
const titlesNode = this.decode(titlesModel);
|
|
112
|
-
return titlesNode;
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
return null;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
108
|
createRootSectionNodes() {
|
|
119
109
|
let rootSections = getSections(this.modelMap).filter((section) => !section.path || section.path.length <= 1);
|
|
120
110
|
rootSections = this.addGeneratedLabels(rootSections);
|
|
@@ -147,15 +137,6 @@ export class Decoder {
|
|
|
147
137
|
constructor(modelMap, allowMissingElements = false) {
|
|
148
138
|
this.comments = new Map();
|
|
149
139
|
this.creators = {
|
|
150
|
-
[ObjectTypes.Titles]: (data) => {
|
|
151
|
-
const model = data;
|
|
152
|
-
return schema.nodes.titles.create({
|
|
153
|
-
id: model._id,
|
|
154
|
-
title: model.title,
|
|
155
|
-
subtitle: model.subtitle,
|
|
156
|
-
runningTitle: model.runningTitle,
|
|
157
|
-
});
|
|
158
|
-
},
|
|
159
140
|
[ObjectTypes.BibliographyElement]: (data) => {
|
|
160
141
|
var _a;
|
|
161
142
|
const model = data;
|
|
@@ -640,13 +621,9 @@ export class Decoder {
|
|
|
640
621
|
};
|
|
641
622
|
this.getModel = (id) => this.modelMap.get(id);
|
|
642
623
|
this.createArticleNode = (manuscriptID) => {
|
|
643
|
-
const titlesNode = this.createTitlesNode();
|
|
644
624
|
const rootSectionNodes = this.createRootSectionNodes();
|
|
645
625
|
const metaSectionNode = this.createMetaSectionNode();
|
|
646
626
|
const contents = [...rootSectionNodes, metaSectionNode];
|
|
647
|
-
if (titlesNode) {
|
|
648
|
-
contents.push(titlesNode);
|
|
649
|
-
}
|
|
650
627
|
return schema.nodes.manuscript.create({
|
|
651
628
|
id: manuscriptID || this.getManuscriptID(),
|
|
652
629
|
}, contents);
|
|
@@ -15,10 +15,11 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { DOMSerializer } from 'prosemirror-model';
|
|
17
17
|
import serializeToXML from 'w3c-xmlserializer';
|
|
18
|
-
import { iterateChildren } from '../lib/utils';
|
|
18
|
+
import { iterateChildren, modelsEqual } from '../lib/utils';
|
|
19
19
|
import { hasGroup, isHighlightMarkerNode, isSectionNode, schema, } from '../schema';
|
|
20
20
|
import { buildAttribution } from './builders';
|
|
21
21
|
import { extractHighlightMarkers, isHighlightableModel, } from './highlight-markers';
|
|
22
|
+
import { generateID } from './id';
|
|
22
23
|
import { nodeTypesMap } from './node-types';
|
|
23
24
|
import { buildSectionCategory } from './section-category';
|
|
24
25
|
const serializer = DOMSerializer.fromSchema(schema);
|
|
@@ -255,12 +256,6 @@ function figureElementEncoder(node) {
|
|
|
255
256
|
};
|
|
256
257
|
}
|
|
257
258
|
const encoders = {
|
|
258
|
-
titles: (node) => ({
|
|
259
|
-
title: node.attrs.title,
|
|
260
|
-
subtitle: node.attrs.subtitle,
|
|
261
|
-
runningTitle: node.attrs.runningTitle,
|
|
262
|
-
_id: node.attrs._id,
|
|
263
|
-
}),
|
|
264
259
|
bibliography_element: (node) => ({
|
|
265
260
|
elementType: 'div',
|
|
266
261
|
contents: '',
|
|
@@ -567,7 +562,7 @@ export const modelFromNode = (node, parent, path, priority) => {
|
|
|
567
562
|
}
|
|
568
563
|
return { model, commentAnnotationsMap };
|
|
569
564
|
};
|
|
570
|
-
export const encode = (node) => {
|
|
565
|
+
export const encode = (node, preserveWithRepeatedID = false) => {
|
|
571
566
|
const models = new Map();
|
|
572
567
|
const priority = {
|
|
573
568
|
value: 1,
|
|
@@ -587,8 +582,14 @@ export const encode = (node) => {
|
|
|
587
582
|
return;
|
|
588
583
|
}
|
|
589
584
|
const { model } = modelFromNode(child, parent, path, priority);
|
|
590
|
-
|
|
591
|
-
|
|
585
|
+
const existingModel = models.get(model._id);
|
|
586
|
+
if (existingModel) {
|
|
587
|
+
if (preserveWithRepeatedID && !modelsEqual(model, existingModel)) {
|
|
588
|
+
model._id = generateID(model.objectType);
|
|
589
|
+
}
|
|
590
|
+
else {
|
|
591
|
+
throw Error(`Encountered duplicate ids in models map while encoding: ${model._id}`);
|
|
592
|
+
}
|
|
592
593
|
}
|
|
593
594
|
models.set(model._id, model);
|
|
594
595
|
child.forEach(addModel(path.concat(child.attrs.id), child));
|
|
@@ -23,7 +23,7 @@ import { generateAttachmentFilename } from './filename';
|
|
|
23
23
|
import { buildTargets } from './labels';
|
|
24
24
|
import { isNodeType } from './node-types';
|
|
25
25
|
import { hasObjectType } from './object-types';
|
|
26
|
-
import { findJournal, findManuscript
|
|
26
|
+
import { findJournal, findManuscript } from './project-bundle';
|
|
27
27
|
import { chooseSecType } from './section-category';
|
|
28
28
|
const chooseNodeName = (element) => {
|
|
29
29
|
const nodeName = element.nodeName.toLowerCase();
|
|
@@ -146,7 +146,6 @@ export class HTMLTransformer {
|
|
|
146
146
|
this.buildFront = () => {
|
|
147
147
|
const manuscript = findManuscript(this.modelMap);
|
|
148
148
|
const journal = findJournal(this.modelMap);
|
|
149
|
-
const titles = findTitles(this.modelMap);
|
|
150
149
|
if (!manuscript) {
|
|
151
150
|
throw new Error('Manuscript not found in project modelMap');
|
|
152
151
|
}
|
|
@@ -165,14 +164,14 @@ export class HTMLTransformer {
|
|
|
165
164
|
}
|
|
166
165
|
const articleMeta = this.document.createElement('div');
|
|
167
166
|
front.appendChild(articleMeta);
|
|
168
|
-
const
|
|
169
|
-
if (
|
|
170
|
-
|
|
167
|
+
const articleTitle = this.document.createElement('h1');
|
|
168
|
+
if (manuscript.title) {
|
|
169
|
+
articleTitle.innerHTML = manuscript.title;
|
|
171
170
|
}
|
|
172
171
|
if (journal === null || journal === void 0 ? void 0 : journal.title) {
|
|
173
|
-
|
|
172
|
+
articleTitle.setAttribute('data-journal', journal.title);
|
|
174
173
|
}
|
|
175
|
-
articleMeta.appendChild(
|
|
174
|
+
articleMeta.appendChild(articleTitle);
|
|
176
175
|
if (manuscript.DOI) {
|
|
177
176
|
const articleID = this.document.createElement('article-id');
|
|
178
177
|
articleID.setAttribute('pub-id-type', 'doi');
|
|
@@ -54,7 +54,6 @@ export const nodeTypesMap = new Map([
|
|
|
54
54
|
[schema.nodes.affiliation, ObjectTypes.Affiliation],
|
|
55
55
|
[schema.nodes.contributor, ObjectTypes.Contributor],
|
|
56
56
|
[schema.nodes.table_element_footer, ObjectTypes.TableElementFooter],
|
|
57
|
-
[schema.nodes.titles, ObjectTypes.Titles],
|
|
58
57
|
[schema.nodes.contributors_section, ObjectTypes.Section],
|
|
59
58
|
[schema.nodes.affiliations_section, ObjectTypes.Section],
|
|
60
59
|
]);
|
|
@@ -63,23 +63,3 @@ export const findManuscriptById = (modelMap, manuscriptID) => {
|
|
|
63
63
|
}
|
|
64
64
|
throw new Error(`There is no manuscript found for the following _id (${manuscriptID})`);
|
|
65
65
|
};
|
|
66
|
-
const isTitle = hasObjectType(ObjectTypes.Titles);
|
|
67
|
-
export const findTitles = (modelMap) => {
|
|
68
|
-
for (const model of modelMap.values()) {
|
|
69
|
-
if (isTitle(model)) {
|
|
70
|
-
return model;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
const defaultTitle = {
|
|
74
|
-
_id: 'MPTitles:8EB79C14-9F61-483A-902F-A0B8EF5973C1',
|
|
75
|
-
createdAt: 1538472121.690101,
|
|
76
|
-
updatedAt: 1538472121.690101,
|
|
77
|
-
objectType: 'MPTitles',
|
|
78
|
-
title: 'main title',
|
|
79
|
-
subtitle: 'subtitle',
|
|
80
|
-
runningTitle: 'running title',
|
|
81
|
-
manuscriptID: 'MPManuscript:E3830344-E77B-42BA-BD77-3E95489712A0',
|
|
82
|
-
containerID: 'MPProject:1',
|
|
83
|
-
};
|
|
84
|
-
return defaultTitle;
|
|
85
|
-
};
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import { Model } from '@manuscripts/json-schema';
|
|
16
17
|
import { Node as ProsemirrorNode, ResolvedPos } from 'prosemirror-model';
|
|
17
18
|
import { ManuscriptEditorState, ManuscriptNode } from '../schema';
|
|
18
19
|
export declare function iterateChildren(node: ManuscriptNode, recurse?: boolean): Iterable<ManuscriptNode>;
|
|
@@ -27,3 +28,4 @@ export declare const findParentNodeClosestToPos: ($pos: ResolvedPos, predicate:
|
|
|
27
28
|
node: ProsemirrorNode;
|
|
28
29
|
} | undefined;
|
|
29
30
|
export declare const getTrimmedTextContent: (node: Element | Document, querySelector: string) => string | null | undefined;
|
|
31
|
+
export declare function modelsEqual(model: Model, model2: Model): boolean;
|
|
@@ -68,7 +68,6 @@ export * from './nodes/affiliation';
|
|
|
68
68
|
export * from './nodes/meta_section';
|
|
69
69
|
export * from './nodes/contributor';
|
|
70
70
|
export * from './nodes/table_element_footer';
|
|
71
|
-
export * from './nodes/titles';
|
|
72
71
|
export * from './nodes/affiliations_section';
|
|
73
72
|
export * from './nodes/contributors_section';
|
|
74
73
|
export declare const schema: Schema<Nodes, Marks>;
|
|
@@ -17,7 +17,7 @@ import { Fragment, Mark as ProsemirrorMark, MarkType, Node as ProsemirrorNode, N
|
|
|
17
17
|
import { EditorState, NodeSelection, Plugin, TextSelection, Transaction } from 'prosemirror-state';
|
|
18
18
|
import { EditorView, NodeView } from 'prosemirror-view';
|
|
19
19
|
export type Marks = 'bold' | 'code' | 'italic' | 'smallcaps' | 'strikethrough' | 'styled' | 'subscript' | 'superscript' | 'underline' | 'tracked_insert' | 'tracked_delete';
|
|
20
|
-
export type Nodes = 'attribution' | 'bibliography_item' | 'bibliography_element' | 'bibliography_section' | 'blockquote_element' | 'bullet_list' | 'caption' | 'caption_title' | 'comment' | 'comment_list' | 'citation' | 'cross_reference' | 'doc' | 'equation' | 'equation_element' | 'figcaption' | 'figure' | 'graphical_abstract_section' | 'figure_element' | 'footnote' | 'footnotes_element' | 'footnotes_section' | 'hard_break' | 'highlight_marker' | 'inline_equation' | 'inline_footnote' | 'keyword' | 'keywords_element' | 'keywords_group' | 'keywords_section' | 'link' | 'list_item' | 'listing' | 'listing_element' | 'manuscript' | 'missing_figure' | 'ordered_list' | 'paragraph' | 'placeholder' | 'placeholder_element' | 'pullquote_element' | 'section' | 'section_label' | 'section_title' | 'section_title_plain' | 'table' | 'table_body' | 'table_cell' | 'table_element' | 'table_row' | 'table_colgroup' | 'table_col' | 'text' | 'toc_element' | 'toc_section' | 'affiliation' | 'meta_section' | 'contributor' | 'table_element_footer' | '
|
|
20
|
+
export type Nodes = 'attribution' | 'bibliography_item' | 'bibliography_element' | 'bibliography_section' | 'blockquote_element' | 'bullet_list' | 'caption' | 'caption_title' | 'comment' | 'comment_list' | 'citation' | 'cross_reference' | 'doc' | 'equation' | 'equation_element' | 'figcaption' | 'figure' | 'graphical_abstract_section' | 'figure_element' | 'footnote' | 'footnotes_element' | 'footnotes_section' | 'hard_break' | 'highlight_marker' | 'inline_equation' | 'inline_footnote' | 'keyword' | 'keywords_element' | 'keywords_group' | 'keywords_section' | 'link' | 'list_item' | 'listing' | 'listing_element' | 'manuscript' | 'missing_figure' | 'ordered_list' | 'paragraph' | 'placeholder' | 'placeholder_element' | 'pullquote_element' | 'section' | 'section_label' | 'section_title' | 'section_title_plain' | 'table' | 'table_body' | 'table_cell' | 'table_element' | 'table_row' | 'table_colgroup' | 'table_col' | 'text' | 'toc_element' | 'toc_section' | 'affiliation' | 'meta_section' | 'contributor' | 'table_element_footer' | 'affiliations_section' | 'contributors_section';
|
|
21
21
|
export type ManuscriptSchema = Schema<Nodes, Marks>;
|
|
22
22
|
export type ManuscriptEditorState = EditorState;
|
|
23
23
|
export type ManuscriptEditorView = EditorView;
|
|
@@ -28,7 +28,7 @@ export type BuildEmbedded<T extends EmbeddedModel, O> = Pick<T, Exclude<keyof T,
|
|
|
28
28
|
objectType: O;
|
|
29
29
|
};
|
|
30
30
|
export declare const buildProject: (owner: string) => Build<Project>;
|
|
31
|
-
export declare const buildManuscript: () => Build<Manuscript>;
|
|
31
|
+
export declare const buildManuscript: (title?: string) => Build<Manuscript>;
|
|
32
32
|
export type ContributorRoleType = 'author';
|
|
33
33
|
export declare const buildContributor: (bibliographicName: BibliographicName, role?: ContributorRoleType, priority?: number, userID?: string, invitationID?: string) => Build<Contributor>;
|
|
34
34
|
export declare const buildBibliographyItem: (data: Partial<Build<BibliographyItem>>) => Build<BibliographyItem>;
|
|
@@ -30,7 +30,6 @@ export declare class Decoder {
|
|
|
30
30
|
private handleMissingRootSectionNodes;
|
|
31
31
|
private createAffiliationSectionNode;
|
|
32
32
|
private createContributorSectionNode;
|
|
33
|
-
private createTitlesNode;
|
|
34
33
|
private createRootSectionNodes;
|
|
35
34
|
private createCommentsNode;
|
|
36
35
|
private getComments;
|
|
@@ -25,5 +25,5 @@ export declare const modelFromNode: (node: ManuscriptNode, parent: ManuscriptNod
|
|
|
25
25
|
interface PrioritizedValue {
|
|
26
26
|
value: number;
|
|
27
27
|
}
|
|
28
|
-
export declare const encode: (node: ManuscriptNode) => Map<string, Model>;
|
|
28
|
+
export declare const encode: (node: ManuscriptNode, preserveWithRepeatedID?: boolean) => Map<string, Model>;
|
|
29
29
|
export {};
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Journal, Manuscript, Model, ObjectTypes
|
|
16
|
+
import { Journal, Manuscript, Model, ObjectTypes } from '@manuscripts/json-schema';
|
|
17
17
|
import { ManuscriptModel } from './models';
|
|
18
18
|
export interface ProjectBundle {
|
|
19
19
|
version: string;
|
|
@@ -27,4 +27,3 @@ export declare const findManuscript: (modelMap: Map<string, Model>) => Manuscrip
|
|
|
27
27
|
export declare const findJournal: (modelMap: Map<string, Model>) => Journal | null;
|
|
28
28
|
export declare const findManuscriptModelByType: <T extends ManuscriptModel>(modelMap: Map<string, Model>, manuscript: Manuscript, objectType: ObjectTypes) => T | undefined;
|
|
29
29
|
export declare const findManuscriptById: (modelMap: Map<string, Model>, manuscriptID: string) => Manuscript;
|
|
30
|
-
export declare const findTitles: (modelMap: Map<string, Model>) => Titles;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manuscripts/transform",
|
|
3
3
|
"description": "ProseMirror transformer for Manuscripts applications",
|
|
4
|
-
"version": "1.5.0-
|
|
4
|
+
"version": "1.5.0-LIT-528106",
|
|
5
5
|
"repository": "github:Atypon-OpenSource/manuscripts-transform",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"main": "dist/cjs",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"version": "yarn build"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@manuscripts/json-schema": "2.2.0
|
|
32
|
+
"@manuscripts/json-schema": "^2.2.0",
|
|
33
33
|
"debug": "^4.3.4",
|
|
34
34
|
"jszip": "^3.10.1",
|
|
35
35
|
"mathjax-full": "^3.2.2",
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* © 2019 Atypon Systems LLC
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.Titles = void 0;
|
|
19
|
-
exports.Titles = {
|
|
20
|
-
content: 'text*',
|
|
21
|
-
marks: 'italic smallcaps subscript superscript',
|
|
22
|
-
attrs: {
|
|
23
|
-
id: { default: '' },
|
|
24
|
-
title: { default: '' },
|
|
25
|
-
subtitle: { default: '' },
|
|
26
|
-
runningTitle: { default: '' },
|
|
27
|
-
dataTracked: { default: null },
|
|
28
|
-
},
|
|
29
|
-
group: 'block element',
|
|
30
|
-
parseDOM: [{ tag: 'div' }],
|
|
31
|
-
toDOM: () => ['div', 0],
|
|
32
|
-
};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* © 2019 Atypon Systems LLC
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
export const Titles = {
|
|
17
|
-
content: 'text*',
|
|
18
|
-
marks: 'italic smallcaps subscript superscript',
|
|
19
|
-
attrs: {
|
|
20
|
-
id: { default: '' },
|
|
21
|
-
title: { default: '' },
|
|
22
|
-
subtitle: { default: '' },
|
|
23
|
-
runningTitle: { default: '' },
|
|
24
|
-
dataTracked: { default: null },
|
|
25
|
-
},
|
|
26
|
-
group: 'block element',
|
|
27
|
-
parseDOM: [{ tag: 'div' }],
|
|
28
|
-
toDOM: () => ['div', 0],
|
|
29
|
-
};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* © 2019 Atypon Systems LLC
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { NodeSpec } from 'prosemirror-model';
|
|
17
|
-
import { ManuscriptNode } from '../types';
|
|
18
|
-
interface Attrs {
|
|
19
|
-
id: string;
|
|
20
|
-
title: string;
|
|
21
|
-
subtitle: string;
|
|
22
|
-
runningTitle: string;
|
|
23
|
-
}
|
|
24
|
-
export interface TitlesNode extends ManuscriptNode {
|
|
25
|
-
attrs: Attrs;
|
|
26
|
-
}
|
|
27
|
-
export declare const Titles: NodeSpec;
|
|
28
|
-
export {};
|