@manuscripts/body-editor 3.3.2 → 3.3.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.
@@ -570,6 +570,8 @@ const insertBoxElement = (state, dispatch) => {
570
570
  ]);
571
571
  if (position && dispatch) {
572
572
  const tr = state.tr.insert(position, node);
573
+ const sectionTitlePosition = position + 4;
574
+ tr.setSelection(prosemirror_state_1.TextSelection.create(tr.doc, sectionTitlePosition));
573
575
  dispatch(tr);
574
576
  }
575
577
  return true;
@@ -42,29 +42,23 @@ const react_1 = __importStar(require("react"));
42
42
  const styled_components_1 = __importDefault(require("styled-components"));
43
43
  const files_1 = require("../../lib/files");
44
44
  const get_media_type_1 = require("../../lib/get-media-type");
45
- function getSupplements(getFiles, getDoc, groupFiles, isEmbed, currentFileHref) {
45
+ function getSupplements(getFiles, getDoc, groupFiles, isEmbed) {
46
46
  return groupFiles(getDoc(), getFiles())
47
47
  .supplements.map((s) => s.file)
48
48
  .filter((f) => {
49
- if (currentFileHref && f.id === currentFileHref) {
50
- return false;
51
- }
52
49
  const mediaInfo = (0, get_media_type_1.getMediaTypeInfo)(f.name);
53
50
  return isEmbed
54
51
  ? mediaInfo.isVideo || mediaInfo.isAudio
55
52
  : mediaInfo.isImage;
56
53
  });
57
54
  }
58
- function getOtherFiles(getFiles, getDoc, groupFiles, isEmbed, currentFileHref) {
55
+ function getOtherFiles(getFiles, getDoc, groupFiles, isEmbed) {
59
56
  return groupFiles(getDoc(), getFiles()).others.filter((f) => {
60
- if (currentFileHref && f.id === currentFileHref) {
61
- return false;
62
- }
63
57
  const mediaInfo = (0, get_media_type_1.getMediaTypeInfo)(f.name);
64
58
  return isEmbed ? mediaInfo.isVideo || mediaInfo.isAudio : mediaInfo.isImage;
65
59
  });
66
60
  }
67
- const FigureOptions = ({ can, getDoc, getFiles, onDownload, onUpload, onDetach, onReplace, onReplaceEmbed, onDelete, isEmbed, hasSiblings, container, currentFileHref, }) => {
61
+ const FigureOptions = ({ can, getDoc, getFiles, onDownload, onUpload, onDetach, onReplace, onReplaceEmbed, onDelete, isEmbed, hasSiblings, container, }) => {
68
62
  const { isOpen, toggleOpen, wrapperRef } = (0, style_guide_1.useDropdown)();
69
63
  const showDownload = onDownload && can.downloadFiles;
70
64
  const showUpload = onUpload && can.uploadFile;
@@ -97,10 +91,10 @@ const FigureOptions = ({ can, getDoc, getFiles, onDownload, onUpload, onDetach,
97
91
  isOpen && (react_1.default.createElement(OptionsDropdownList, { direction: 'right', width: 128, top: 5 },
98
92
  showReplace && isEmbedMode && (react_1.default.createElement(ListItemButton, { onClick: () => onReplaceEmbed && onReplaceEmbed() }, "Edit Link")),
99
93
  showReplace && !isEmbedMode && (react_1.default.createElement(NestedDropdown, { disabled: !showReplace, parentToggleOpen: toggleOpen, buttonText: replaceBtnText, moveLeft: true, list: react_1.default.createElement(react_1.default.Fragment, null,
100
- getSupplements(getFiles, getDoc, groupFiles, isEmbed, currentFileHref).map((file, index) => (react_1.default.createElement(ListItemButton, { key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file, true) },
94
+ getSupplements(getFiles, getDoc, groupFiles, isEmbed).map((file, index) => (react_1.default.createElement(ListItemButton, { key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file, true) },
101
95
  (0, style_guide_1.getFileIcon)(file.name),
102
96
  react_1.default.createElement(ListItemText, null, file.name)))),
103
- getOtherFiles(getFiles, getDoc, groupFiles, isEmbed, currentFileHref).map((file, index) => (react_1.default.createElement(ListItemButton, { key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file) },
97
+ getOtherFiles(getFiles, getDoc, groupFiles, isEmbed).map((file, index) => (react_1.default.createElement(ListItemButton, { key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file) },
104
98
  (0, style_guide_1.getFileIcon)(file.name),
105
99
  react_1.default.createElement(ListItemText, null, file.name)))),
106
100
  showUpload && (react_1.default.createElement(UploadButton, { onClick: onUpload, disabled: !showUpload },
@@ -13,6 +13,7 @@ const figureTypes = [
13
13
  transform_1.schema.nodes.figure_element,
14
14
  transform_1.schema.nodes.image_element,
15
15
  transform_1.schema.nodes.hero_image,
16
+ transform_1.schema.nodes.embed,
16
17
  ];
17
18
  function memoGroupFiles() {
18
19
  let prevFiles = [];
@@ -45,15 +46,26 @@ const groupFiles = (doc, files) => {
45
46
  };
46
47
  const getFigureElementFiles = (node, pos) => {
47
48
  const figureFiles = [];
48
- for (const figure of (0, prosemirror_utils_1.findChildrenByType)(node, transform_1.schema.nodes.figure)) {
49
- if ((0, track_changes_utils_1.isHidden)(figure.node)) {
50
- continue;
49
+ if (node.type === transform_1.schema.nodes.embed) {
50
+ if (node.attrs.href) {
51
+ figureFiles.push({
52
+ node,
53
+ pos,
54
+ file: getFile(node.attrs.href),
55
+ });
56
+ }
57
+ }
58
+ else {
59
+ for (const figure of (0, prosemirror_utils_1.findChildrenByType)(node, transform_1.schema.nodes.figure)) {
60
+ if ((0, track_changes_utils_1.isHidden)(figure.node)) {
61
+ continue;
62
+ }
63
+ figureFiles.push({
64
+ node: figure.node,
65
+ pos: pos + figure.pos + 1,
66
+ file: getFile(figure.node.attrs.src),
67
+ });
51
68
  }
52
- figureFiles.push({
53
- node: figure.node,
54
- pos: pos + figure.pos + 1,
55
- file: getFile(figure.node.attrs.src),
56
- });
57
69
  }
58
70
  return {
59
71
  node,
@@ -121,7 +121,6 @@ const createReactTools = (node, view, getPos, props, handlers, isEmbed, hasSibli
121
121
  return null;
122
122
  }
123
123
  const can = props.getCapabilities();
124
- const currentFileHref = node.attrs.href;
125
124
  const componentProps = {
126
125
  can,
127
126
  getDoc: () => view.state.doc,
@@ -134,7 +133,6 @@ const createReactTools = (node, view, getPos, props, handlers, isEmbed, hasSibli
134
133
  onDelete: handlers.handleDelete,
135
134
  isEmbed,
136
135
  hasSiblings,
137
- currentFileHref,
138
136
  };
139
137
  return (0, ReactSubView_1.default)(props, FigureDropdown_1.FigureOptions, componentProps, node, getPos, view);
140
138
  };
@@ -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 = '3.3.2';
4
+ exports.VERSION = '3.3.4';
5
5
  exports.MATHJAX_VERSION = '3.2.2';
@@ -540,6 +540,8 @@ export const insertBoxElement = (state, dispatch) => {
540
540
  ]);
541
541
  if (position && dispatch) {
542
542
  const tr = state.tr.insert(position, node);
543
+ const sectionTitlePosition = position + 4;
544
+ tr.setSelection(TextSelection.create(tr.doc, sectionTitlePosition));
543
545
  dispatch(tr);
544
546
  }
545
547
  return true;
@@ -3,29 +3,23 @@ import React, { useEffect } from 'react';
3
3
  import styled from 'styled-components';
4
4
  import { memoGroupFiles, } from '../../lib/files';
5
5
  import { getMediaTypeInfo } from '../../lib/get-media-type';
6
- function getSupplements(getFiles, getDoc, groupFiles, isEmbed, currentFileHref) {
6
+ function getSupplements(getFiles, getDoc, groupFiles, isEmbed) {
7
7
  return groupFiles(getDoc(), getFiles())
8
8
  .supplements.map((s) => s.file)
9
9
  .filter((f) => {
10
- if (currentFileHref && f.id === currentFileHref) {
11
- return false;
12
- }
13
10
  const mediaInfo = getMediaTypeInfo(f.name);
14
11
  return isEmbed
15
12
  ? mediaInfo.isVideo || mediaInfo.isAudio
16
13
  : mediaInfo.isImage;
17
14
  });
18
15
  }
19
- function getOtherFiles(getFiles, getDoc, groupFiles, isEmbed, currentFileHref) {
16
+ function getOtherFiles(getFiles, getDoc, groupFiles, isEmbed) {
20
17
  return groupFiles(getDoc(), getFiles()).others.filter((f) => {
21
- if (currentFileHref && f.id === currentFileHref) {
22
- return false;
23
- }
24
18
  const mediaInfo = getMediaTypeInfo(f.name);
25
19
  return isEmbed ? mediaInfo.isVideo || mediaInfo.isAudio : mediaInfo.isImage;
26
20
  });
27
21
  }
28
- export const FigureOptions = ({ can, getDoc, getFiles, onDownload, onUpload, onDetach, onReplace, onReplaceEmbed, onDelete, isEmbed, hasSiblings, container, currentFileHref, }) => {
22
+ export const FigureOptions = ({ can, getDoc, getFiles, onDownload, onUpload, onDetach, onReplace, onReplaceEmbed, onDelete, isEmbed, hasSiblings, container, }) => {
29
23
  const { isOpen, toggleOpen, wrapperRef } = useDropdown();
30
24
  const showDownload = onDownload && can.downloadFiles;
31
25
  const showUpload = onUpload && can.uploadFile;
@@ -58,10 +52,10 @@ export const FigureOptions = ({ can, getDoc, getFiles, onDownload, onUpload, onD
58
52
  isOpen && (React.createElement(OptionsDropdownList, { direction: 'right', width: 128, top: 5 },
59
53
  showReplace && isEmbedMode && (React.createElement(ListItemButton, { onClick: () => onReplaceEmbed && onReplaceEmbed() }, "Edit Link")),
60
54
  showReplace && !isEmbedMode && (React.createElement(NestedDropdown, { disabled: !showReplace, parentToggleOpen: toggleOpen, buttonText: replaceBtnText, moveLeft: true, list: React.createElement(React.Fragment, null,
61
- getSupplements(getFiles, getDoc, groupFiles, isEmbed, currentFileHref).map((file, index) => (React.createElement(ListItemButton, { key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file, true) },
55
+ getSupplements(getFiles, getDoc, groupFiles, isEmbed).map((file, index) => (React.createElement(ListItemButton, { key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file, true) },
62
56
  getFileIcon(file.name),
63
57
  React.createElement(ListItemText, null, file.name)))),
64
- getOtherFiles(getFiles, getDoc, groupFiles, isEmbed, currentFileHref).map((file, index) => (React.createElement(ListItemButton, { key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file) },
58
+ getOtherFiles(getFiles, getDoc, groupFiles, isEmbed).map((file, index) => (React.createElement(ListItemButton, { key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file) },
65
59
  getFileIcon(file.name),
66
60
  React.createElement(ListItemText, null, file.name)))),
67
61
  showUpload && (React.createElement(UploadButton, { onClick: onUpload, disabled: !showUpload },
@@ -9,6 +9,7 @@ const figureTypes = [
9
9
  schema.nodes.figure_element,
10
10
  schema.nodes.image_element,
11
11
  schema.nodes.hero_image,
12
+ schema.nodes.embed,
12
13
  ];
13
14
  export function memoGroupFiles() {
14
15
  let prevFiles = [];
@@ -41,15 +42,26 @@ export const groupFiles = (doc, files) => {
41
42
  };
42
43
  const getFigureElementFiles = (node, pos) => {
43
44
  const figureFiles = [];
44
- for (const figure of findChildrenByType(node, schema.nodes.figure)) {
45
- if (isHidden(figure.node)) {
46
- continue;
45
+ if (node.type === schema.nodes.embed) {
46
+ if (node.attrs.href) {
47
+ figureFiles.push({
48
+ node,
49
+ pos,
50
+ file: getFile(node.attrs.href),
51
+ });
52
+ }
53
+ }
54
+ else {
55
+ for (const figure of findChildrenByType(node, schema.nodes.figure)) {
56
+ if (isHidden(figure.node)) {
57
+ continue;
58
+ }
59
+ figureFiles.push({
60
+ node: figure.node,
61
+ pos: pos + figure.pos + 1,
62
+ file: getFile(figure.node.attrs.src),
63
+ });
47
64
  }
48
- figureFiles.push({
49
- node: figure.node,
50
- pos: pos + figure.pos + 1,
51
- file: getFile(figure.node.attrs.src),
52
- });
53
65
  }
54
66
  return {
55
67
  node,
@@ -112,7 +112,6 @@ export const createReactTools = (node, view, getPos, props, handlers, isEmbed, h
112
112
  return null;
113
113
  }
114
114
  const can = props.getCapabilities();
115
- const currentFileHref = node.attrs.href;
116
115
  const componentProps = {
117
116
  can,
118
117
  getDoc: () => view.state.doc,
@@ -125,7 +124,6 @@ export const createReactTools = (node, view, getPos, props, handlers, isEmbed, h
125
124
  onDelete: handlers.handleDelete,
126
125
  isEmbed,
127
126
  hasSiblings,
128
- currentFileHref,
129
127
  };
130
128
  return ReactSubView(props, FigureOptions, componentProps, node, getPos, view);
131
129
  };
@@ -1,2 +1,2 @@
1
- export const VERSION = '3.3.2';
1
+ export const VERSION = '3.3.4';
2
2
  export const MATHJAX_VERSION = '3.2.2';
@@ -18,7 +18,6 @@ export interface FigureOptionsProps extends FigureDropdownProps {
18
18
  onDelete?: () => void;
19
19
  isEmbed: boolean;
20
20
  hasSiblings: () => boolean;
21
- currentFileHref?: string;
22
21
  }
23
22
  export interface FigureElementOptionsProps extends FigureDropdownProps {
24
23
  onAdd: (file: FileAttachment) => Promise<void>;
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "3.3.2";
1
+ export declare const VERSION = "3.3.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": "3.3.2",
4
+ "version": "3.3.4",
5
5
  "repository": "github:Atypon-OpenSource/manuscripts-body-editor",
6
6
  "license": "Apache-2.0",
7
7
  "main": "dist/cjs",
@@ -851,9 +851,6 @@ span.comment-marker {
851
851
  0% {
852
852
  background: var(--fade-color);
853
853
  }
854
- 100% {
855
- background: transparent;
856
- }
857
854
  }
858
855
 
859
856
  .selected-suggestion:not(.block-container):not(.graphical-abstract):not(
@@ -1045,7 +1042,7 @@ figure.block:has(.equation.selected-suggestion) {
1045
1042
  .tracking-visible
1046
1043
  .ProseMirror
1047
1044
  [data-track-status='pending'][data-track-op='delete']
1048
- .block,
1045
+ .block:not(.box-element),
1049
1046
  .tracking-visible
1050
1047
  .ProseMirror
1051
1048
  .figure-block
@@ -1063,9 +1060,7 @@ figure.block:has(.equation.selected-suggestion) {
1063
1060
  }
1064
1061
 
1065
1062
  .selected-suggestion[data-track-status='pending'][data-track-op='delete']
1066
- .block,
1067
- .selected-suggestion[data-track-status='pending'][data-track-op='delete']
1068
- .block {
1063
+ .block:not(.box-element) {
1069
1064
  box-shadow: inset 6px 0 0 var(--deleted-color),
1070
1065
  inset 9px 0 0 var(--deleted-pending-bg-color) !important;
1071
1066
  animation: fadeOutBackground 3s forwards;