@manuscripts/body-editor 2.2.4-LEAN-4013.0 → 2.2.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.
@@ -15,7 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.autoComplete = exports.mergeCellsWithSpace = exports.addColumns = exports.addRows = exports.insertTableFootnote = exports.addInlineComment = exports.addNodeComment = exports.createAndFillTableElement = exports.selectAllIsolating = exports.ignoreAtomBlockNodeForward = exports.isAtEndOfTextBlock = exports.ignoreMetaNodeBackspaceCommand = exports.ignoreAtomBlockNodeBackward = exports.isTextSelection = exports.isAtStartOfTextBlock = exports.insertTOCSection = exports.insertBibliographySection = exports.insertList = exports.insertKeywords = exports.insertContributors = exports.insertAbstract = exports.insertBackMatterSection = exports.insertSection = exports.insertGraphicalAbstract = exports.insertInlineFootnote = exports.insertFootnote = exports.createFootnote = exports.insertInlineEquation = exports.insertCrossReference = exports.insertInlineCitation = exports.insertLink = exports.insertSectionLabel = exports.findPosBeforeFirstSubsection = exports.insertBreak = exports.deleteBlock = exports.insertBlock = exports.insertSupplement = exports.insertTable = exports.insertFigure = exports.insertGeneralFootnote = exports.createBlock = exports.createSelection = exports.canInsert = exports.blockActive = exports.isNodeSelection = exports.markActive = void 0;
18
+ exports.autoComplete = exports.mergeCellsWithSpace = exports.addColumns = exports.addRows = exports.insertTableFootnote = exports.addInlineComment = exports.addNodeComment = exports.createAndFillTableElement = exports.selectAllIsolating = exports.ignoreAtomBlockNodeForward = exports.isAtEndOfTextBlock = exports.ignoreMetaNodeBackspaceCommand = exports.ignoreAtomBlockNodeBackward = exports.isTextSelection = exports.isAtStartOfTextBlock = exports.insertTOCSection = exports.insertBibliographySection = exports.insertList = exports.insertKeywords = exports.insertContributors = exports.insertAbstract = exports.insertBackMatterSection = exports.insertSection = exports.insertGraphicalAbstract = exports.insertInlineFootnote = exports.insertFootnote = exports.createFootnote = exports.insertInlineEquation = exports.insertCrossReference = exports.insertInlineCitation = exports.insertLink = exports.insertSectionLabel = exports.findPosBeforeFirstSubsection = exports.insertBreak = exports.deleteBlock = exports.insertBlock = exports.insertSupplement = exports.insertTable = exports.insertFigure = exports.insertGeneralFootnote = exports.undoFootnoteDelete = exports.createBlock = exports.createSelection = exports.canInsert = exports.blockActive = exports.isNodeSelection = exports.markActive = void 0;
19
19
  const json_schema_1 = require("@manuscripts/json-schema");
20
20
  const track_changes_plugin_1 = require("@manuscripts/track-changes-plugin");
21
21
  const transform_1 = require("@manuscripts/transform");
@@ -131,6 +131,11 @@ const createBlock = (nodeType, position, state, dispatch, attrs) => {
131
131
  }
132
132
  };
133
133
  exports.createBlock = createBlock;
134
+ const undoFootnoteDelete = (tr, footnote, position) => {
135
+ const updatedAttrs = Object.assign(Object.assign({}, footnote.node.attrs), { dataTracked: null });
136
+ tr.setNodeMarkup(position, undefined, updatedAttrs, footnote.node.marks);
137
+ };
138
+ exports.undoFootnoteDelete = undoFootnoteDelete;
134
139
  const insertGeneralFootnote = (tableElementNode, position, view, tableElementFooter) => {
135
140
  const { state, dispatch } = view;
136
141
  const paragraph = state.schema.nodes.paragraph.create({
@@ -149,6 +154,11 @@ const insertGeneralFootnote = (tableElementNode, position, view, tableElementFoo
149
154
  ? table.pos + table.node.nodeSize
150
155
  : tableColGroup.pos + tableColGroup.node.nodeSize);
151
156
  if (tableElementFooter === null || tableElementFooter === void 0 ? void 0 : tableElementFooter.length) {
157
+ if ((0, track_changes_utils_1.isDeleted)(tableElementFooter[0].node) ||
158
+ (0, track_changes_utils_1.isRejectedInsert)(tableElementFooter[0].node)) {
159
+ const tableElementFooterPos = tr.mapping.map(position + tableElementFooter[0].pos + 1);
160
+ (0, exports.undoFootnoteDelete)(tr, tableElementFooter[0], tableElementFooterPos);
161
+ }
152
162
  tr.insert(pos, generalNote);
153
163
  }
154
164
  else {
@@ -398,8 +408,10 @@ const insertFootnote = (state, tr, footnote) => {
398
408
  else {
399
409
  const footnoteElement = (0, prosemirror_utils_1.findChildrenByType)(footnotesSection.node, transform_1.schema.nodes.footnotes_element).pop();
400
410
  if (footnoteElement) {
401
- if ((0, track_changes_utils_1.isDeleted)(footnoteElement.node)) {
411
+ if ((0, track_changes_utils_1.isDeleted)(footnoteElement.node) ||
412
+ (0, track_changes_utils_1.isRejectedInsert)(footnoteElement.node)) {
402
413
  const footnoteElementPos = footnotesSection.pos + footnoteElement.pos + 1;
414
+ (0, exports.undoFootnoteDelete)(tr, footnoteElement, footnoteElementPos);
403
415
  const updatedAttrs = Object.assign(Object.assign({}, footnoteElement.node.attrs), { dataTracked: null });
404
416
  tr.setNodeMarkup(footnoteElementPos, undefined, updatedAttrs, footnoteElement.node.marks);
405
417
  }
@@ -1003,9 +1015,12 @@ const insertTableFootnote = (tableElementNode, position, view, inlineFootnote) =
1003
1015
  }
1004
1016
  let insertionPos = position;
1005
1017
  const footnotesElement = (0, prosemirror_utils_1.findChildrenByType)(tableElementNode, transform_1.schema.nodes.footnotes_element).pop();
1006
- if (footnotesElement &&
1007
- !(0, track_changes_utils_1.isDeleted)(footnotesElement.node) &&
1008
- !(0, track_changes_utils_1.isRejectedInsert)(footnotesElement.node)) {
1018
+ if (footnotesElement) {
1019
+ if ((0, track_changes_utils_1.isDeleted)(footnotesElement.node) ||
1020
+ (0, track_changes_utils_1.isRejectedInsert)(footnotesElement.node)) {
1021
+ const footnotesElementPos = tr.mapping.map(position + footnotesElement.pos + 1);
1022
+ (0, exports.undoFootnoteDelete)(tr, footnotesElement, footnotesElementPos);
1023
+ }
1009
1024
  const footnotePos = (0, footnotes_1.getNewFootnotePos)(footnotesElement, footnoteIndex);
1010
1025
  insertionPos = tr.mapping.map(position + footnotePos);
1011
1026
  tr.insert(insertionPos, footnote);
@@ -1014,6 +1029,11 @@ const insertTableFootnote = (tableElementNode, position, view, inlineFootnote) =
1014
1029
  const footnoteElement = state.schema.nodes.footnotes_element.create({}, footnote);
1015
1030
  const tableElementFooter = (0, prosemirror_utils_1.findChildrenByType)(tableElementNode, transform_1.schema.nodes.table_element_footer)[0];
1016
1031
  if (tableElementFooter) {
1032
+ if ((0, track_changes_utils_1.isDeleted)(tableElementFooter.node) ||
1033
+ (0, track_changes_utils_1.isRejectedInsert)(tableElementFooter.node)) {
1034
+ const tableElementFooterPos = tr.mapping.map(position + tableElementFooter.pos + 1);
1035
+ (0, exports.undoFootnoteDelete)(tr, tableElementFooter, tableElementFooterPos);
1036
+ }
1017
1037
  const pos = tableElementFooter.pos;
1018
1038
  insertionPos = position + pos + tableElementFooter.node.nodeSize;
1019
1039
  tr.insert(tr.mapping.map(insertionPos), footnoteElement);
@@ -60,11 +60,23 @@ const deleteFootnoteWidget = (node, props, id, tableElement, tableElementFooter)
60
60
  if (node.type === transform_1.schema.nodes.footnote && pos) {
61
61
  const targetNode = tableElement ? tableElement.node : view.state.doc;
62
62
  const inlineFootnotes = (0, footnotes_1.getInlineFootnotes)(id, targetNode);
63
- const footnote = (0, prosemirror_utils_1.findParentNodeClosestToPos)(tr.doc.resolve(pos), (node) => node.type === transform_1.schema.nodes.footnote);
64
- if (footnote) {
65
- const { pos: fnPos, node: fnNode } = footnote;
63
+ const footnotesElement = (0, prosemirror_utils_1.findParentNodeClosestToPos)(tr.doc.resolve(pos), (node) => node.type === transform_1.schema.nodes.footnotes_element);
64
+ if ((footnotesElement === null || footnotesElement === void 0 ? void 0 : footnotesElement.node.childCount) === 1 &&
65
+ (tableElementFooter === null || tableElementFooter === void 0 ? void 0 : tableElementFooter.node.childCount) === 1) {
66
+ const { pos: fnPos, node: fnNode } = tableElementFooter;
66
67
  tr.delete(fnPos, fnPos + fnNode.nodeSize + 1);
67
68
  }
69
+ else if ((footnotesElement === null || footnotesElement === void 0 ? void 0 : footnotesElement.node.childCount) === 1) {
70
+ const { pos: fnPos, node: fnNode } = footnotesElement;
71
+ tr.delete(fnPos, fnPos + fnNode.nodeSize + 1);
72
+ }
73
+ else {
74
+ const footnote = (0, prosemirror_utils_1.findParentNodeClosestToPos)(tr.doc.resolve(pos), (node) => node.type === transform_1.schema.nodes.footnote);
75
+ if (footnote) {
76
+ const { pos: fnPos, node: fnNode } = footnote;
77
+ tr.delete(fnPos, fnPos + fnNode.nodeSize + 1);
78
+ }
79
+ }
68
80
  if (inlineFootnotes) {
69
81
  inlineFootnotes.forEach((footnote) => {
70
82
  const pos = footnote.pos + (tableElement ? tableElement.pos + 1 : 0);
@@ -79,24 +91,6 @@ const deleteFootnoteWidget = (node, props, id, tableElement, tableElementFooter)
79
91
  }
80
92
  }
81
93
  view.dispatch(tr);
82
- if (pos) {
83
- const footnotesElement = (0, prosemirror_utils_1.findParentNodeClosestToPos)(view.state.doc.resolve(pos), (node) => node.type === transform_1.schema.nodes.footnotes_element);
84
- if (footnotesElement) {
85
- let allFootnotesDeleted = true;
86
- footnotesElement.node.descendants((child) => {
87
- if (child.type === transform_1.schema.nodes.footnote && !(0, track_changes_utils_1.isDeleted)(child)) {
88
- allFootnotesDeleted = false;
89
- return false;
90
- }
91
- });
92
- if (allFootnotesDeleted) {
93
- const { pos: fnPos, node: fnNode } = footnotesElement;
94
- const tr2 = view.state.tr;
95
- tr2.delete(fnPos, fnPos + fnNode.nodeSize + 1);
96
- view.dispatch(tr2);
97
- }
98
- }
99
- }
100
94
  };
101
95
  const componentProps = {
102
96
  footnoteType: footnote.type,
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MATHJAX_VERSION = exports.VERSION = void 0;
4
- exports.VERSION = '2.2.4-LEAN-4013.0';
4
+ exports.VERSION = '2.2.4';
5
5
  exports.MATHJAX_VERSION = '3.2.2';
@@ -122,6 +122,10 @@ export const createBlock = (nodeType, position, state, dispatch, attrs) => {
122
122
  dispatch(tr.setSelection(selection).scrollIntoView());
123
123
  }
124
124
  };
125
+ export const undoFootnoteDelete = (tr, footnote, position) => {
126
+ const updatedAttrs = Object.assign(Object.assign({}, footnote.node.attrs), { dataTracked: null });
127
+ tr.setNodeMarkup(position, undefined, updatedAttrs, footnote.node.marks);
128
+ };
125
129
  export const insertGeneralFootnote = (tableElementNode, position, view, tableElementFooter) => {
126
130
  const { state, dispatch } = view;
127
131
  const paragraph = state.schema.nodes.paragraph.create({
@@ -140,6 +144,11 @@ export const insertGeneralFootnote = (tableElementNode, position, view, tableEle
140
144
  ? table.pos + table.node.nodeSize
141
145
  : tableColGroup.pos + tableColGroup.node.nodeSize);
142
146
  if (tableElementFooter === null || tableElementFooter === void 0 ? void 0 : tableElementFooter.length) {
147
+ if (isDeleted(tableElementFooter[0].node) ||
148
+ isRejectedInsert(tableElementFooter[0].node)) {
149
+ const tableElementFooterPos = tr.mapping.map(position + tableElementFooter[0].pos + 1);
150
+ undoFootnoteDelete(tr, tableElementFooter[0], tableElementFooterPos);
151
+ }
143
152
  tr.insert(pos, generalNote);
144
153
  }
145
154
  else {
@@ -375,8 +384,10 @@ export const insertFootnote = (state, tr, footnote) => {
375
384
  else {
376
385
  const footnoteElement = findChildrenByType(footnotesSection.node, schema.nodes.footnotes_element).pop();
377
386
  if (footnoteElement) {
378
- if (isDeleted(footnoteElement.node)) {
387
+ if (isDeleted(footnoteElement.node) ||
388
+ isRejectedInsert(footnoteElement.node)) {
379
389
  const footnoteElementPos = footnotesSection.pos + footnoteElement.pos + 1;
390
+ undoFootnoteDelete(tr, footnoteElement, footnoteElementPos);
380
391
  const updatedAttrs = Object.assign(Object.assign({}, footnoteElement.node.attrs), { dataTracked: null });
381
392
  tr.setNodeMarkup(footnoteElementPos, undefined, updatedAttrs, footnoteElement.node.marks);
382
393
  }
@@ -959,9 +970,12 @@ export const insertTableFootnote = (tableElementNode, position, view, inlineFoot
959
970
  }
960
971
  let insertionPos = position;
961
972
  const footnotesElement = findChildrenByType(tableElementNode, schema.nodes.footnotes_element).pop();
962
- if (footnotesElement &&
963
- !isDeleted(footnotesElement.node) &&
964
- !isRejectedInsert(footnotesElement.node)) {
973
+ if (footnotesElement) {
974
+ if (isDeleted(footnotesElement.node) ||
975
+ isRejectedInsert(footnotesElement.node)) {
976
+ const footnotesElementPos = tr.mapping.map(position + footnotesElement.pos + 1);
977
+ undoFootnoteDelete(tr, footnotesElement, footnotesElementPos);
978
+ }
965
979
  const footnotePos = getNewFootnotePos(footnotesElement, footnoteIndex);
966
980
  insertionPos = tr.mapping.map(position + footnotePos);
967
981
  tr.insert(insertionPos, footnote);
@@ -970,6 +984,11 @@ export const insertTableFootnote = (tableElementNode, position, view, inlineFoot
970
984
  const footnoteElement = state.schema.nodes.footnotes_element.create({}, footnote);
971
985
  const tableElementFooter = findChildrenByType(tableElementNode, schema.nodes.table_element_footer)[0];
972
986
  if (tableElementFooter) {
987
+ if (isDeleted(tableElementFooter.node) ||
988
+ isRejectedInsert(tableElementFooter.node)) {
989
+ const tableElementFooterPos = tr.mapping.map(position + tableElementFooter.pos + 1);
990
+ undoFootnoteDelete(tr, tableElementFooter, tableElementFooterPos);
991
+ }
973
992
  const pos = tableElementFooter.pos;
974
993
  insertionPos = position + pos + tableElementFooter.node.nodeSize;
975
994
  tr.insert(tr.mapping.map(insertionPos), footnoteElement);
@@ -21,7 +21,7 @@ import { createElement } from 'react';
21
21
  import { renderToStaticMarkup } from 'react-dom/server';
22
22
  import { DeleteFootnoteDialog, } from '../../components/views/DeleteFootnoteDialog';
23
23
  import { getInlineFootnotes } from '../../lib/footnotes';
24
- import { getActualAttrs, isDeleted } from '../../lib/track-changes-utils';
24
+ import { getActualAttrs } from '../../lib/track-changes-utils';
25
25
  import { getChildOfType } from '../../lib/utils';
26
26
  import ReactSubView from '../../views/ReactSubView';
27
27
  export const deleteFootnoteWidget = (node, props, id, tableElement, tableElementFooter) => (view, getPos) => {
@@ -54,11 +54,23 @@ export const deleteFootnoteWidget = (node, props, id, tableElement, tableElement
54
54
  if (node.type === schema.nodes.footnote && pos) {
55
55
  const targetNode = tableElement ? tableElement.node : view.state.doc;
56
56
  const inlineFootnotes = getInlineFootnotes(id, targetNode);
57
- const footnote = findParentNodeClosestToPos(tr.doc.resolve(pos), (node) => node.type === schema.nodes.footnote);
58
- if (footnote) {
59
- const { pos: fnPos, node: fnNode } = footnote;
57
+ const footnotesElement = findParentNodeClosestToPos(tr.doc.resolve(pos), (node) => node.type === schema.nodes.footnotes_element);
58
+ if ((footnotesElement === null || footnotesElement === void 0 ? void 0 : footnotesElement.node.childCount) === 1 &&
59
+ (tableElementFooter === null || tableElementFooter === void 0 ? void 0 : tableElementFooter.node.childCount) === 1) {
60
+ const { pos: fnPos, node: fnNode } = tableElementFooter;
60
61
  tr.delete(fnPos, fnPos + fnNode.nodeSize + 1);
61
62
  }
63
+ else if ((footnotesElement === null || footnotesElement === void 0 ? void 0 : footnotesElement.node.childCount) === 1) {
64
+ const { pos: fnPos, node: fnNode } = footnotesElement;
65
+ tr.delete(fnPos, fnPos + fnNode.nodeSize + 1);
66
+ }
67
+ else {
68
+ const footnote = findParentNodeClosestToPos(tr.doc.resolve(pos), (node) => node.type === schema.nodes.footnote);
69
+ if (footnote) {
70
+ const { pos: fnPos, node: fnNode } = footnote;
71
+ tr.delete(fnPos, fnPos + fnNode.nodeSize + 1);
72
+ }
73
+ }
62
74
  if (inlineFootnotes) {
63
75
  inlineFootnotes.forEach((footnote) => {
64
76
  const pos = footnote.pos + (tableElement ? tableElement.pos + 1 : 0);
@@ -73,24 +85,6 @@ export const deleteFootnoteWidget = (node, props, id, tableElement, tableElement
73
85
  }
74
86
  }
75
87
  view.dispatch(tr);
76
- if (pos) {
77
- const footnotesElement = findParentNodeClosestToPos(view.state.doc.resolve(pos), (node) => node.type === schema.nodes.footnotes_element);
78
- if (footnotesElement) {
79
- let allFootnotesDeleted = true;
80
- footnotesElement.node.descendants((child) => {
81
- if (child.type === schema.nodes.footnote && !isDeleted(child)) {
82
- allFootnotesDeleted = false;
83
- return false;
84
- }
85
- });
86
- if (allFootnotesDeleted) {
87
- const { pos: fnPos, node: fnNode } = footnotesElement;
88
- const tr2 = view.state.tr;
89
- tr2.delete(fnPos, fnPos + fnNode.nodeSize + 1);
90
- view.dispatch(tr2);
91
- }
92
- }
93
- }
94
88
  };
95
89
  const componentProps = {
96
90
  footnoteType: footnote.type,
@@ -1,2 +1,2 @@
1
- export const VERSION = '2.2.4-LEAN-4013.0';
1
+ export const VERSION = '2.2.4';
2
2
  export const MATHJAX_VERSION = '3.2.2';
@@ -27,6 +27,7 @@ export declare const blockActive: (type: ManuscriptNodeType) => (state: Manuscri
27
27
  export declare const canInsert: (type: ManuscriptNodeType) => (state: ManuscriptEditorState) => boolean;
28
28
  export declare const createSelection: (nodeType: ManuscriptNodeType, position: number, doc: ManuscriptNode) => Selection;
29
29
  export declare const createBlock: (nodeType: ManuscriptNodeType, position: number, state: ManuscriptEditorState, dispatch?: Dispatch, attrs?: Attrs) => void;
30
+ export declare const undoFootnoteDelete: (tr: Transaction, footnote: NodeWithPos, position: number) => void;
30
31
  export declare const insertGeneralFootnote: (tableElementNode: ManuscriptNode, position: number, view: ManuscriptEditorView, tableElementFooter?: NodeWithPos[]) => void;
31
32
  export declare const insertFigure: (file: FileAttachment, state: ManuscriptEditorState, dispatch?: Dispatch) => boolean;
32
33
  export declare const insertTable: (config: TableConfig, state: ManuscriptEditorState, dispatch?: Dispatch) => boolean;
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "2.2.4-LEAN-4013.0";
1
+ export declare const VERSION = "2.2.4";
2
2
  export declare const MATHJAX_VERSION = "3.2.2";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@manuscripts/body-editor",
3
3
  "description": "Prosemirror components for editing and viewing manuscripts",
4
- "version": "2.2.4-LEAN-4013.0",
4
+ "version": "2.2.4",
5
5
  "repository": "github:Atypon-OpenSource/manuscripts-body-editor",
6
6
  "license": "Apache-2.0",
7
7
  "main": "dist/cjs",