@manuscripts/body-editor 3.4.2 → 3.4.5
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/commands.js +9 -1
- package/dist/cjs/components/LanguageDropdown/index.js +215 -0
- package/dist/cjs/components/LanguageDropdown/languages.js +134 -0
- package/dist/cjs/configs/editor-views.js +4 -1
- package/dist/cjs/icons.js +3 -2
- package/dist/cjs/index.js +7 -1
- package/dist/cjs/lib/context-menu.js +6 -1
- package/dist/cjs/lib/template.js +25 -0
- package/dist/cjs/menus.js +25 -0
- package/dist/cjs/versions.js +1 -1
- package/dist/cjs/views/abstracts.js +82 -0
- package/dist/cjs/views/figure_element.js +2 -2
- package/dist/cjs/views/section_title.js +3 -0
- package/dist/cjs/views/translated_abstract.js +117 -0
- package/dist/cjs/views/translated_abstract_editable.js +21 -0
- package/dist/es/commands.js +9 -1
- package/dist/es/components/LanguageDropdown/index.js +177 -0
- package/dist/es/components/LanguageDropdown/languages.js +90 -0
- package/dist/es/configs/ManuscriptsEditor.js +1 -1
- package/dist/es/configs/editor-views.js +4 -1
- package/dist/es/icons.js +3 -2
- package/dist/es/index.js +2 -0
- package/dist/es/lib/context-menu.js +6 -1
- package/dist/es/lib/template.js +21 -0
- package/dist/es/menus.js +25 -0
- package/dist/es/versions.js +1 -1
- package/dist/es/views/abstracts.js +78 -0
- package/dist/es/views/figure_element.js +3 -3
- package/dist/es/views/section_title.js +3 -0
- package/dist/es/views/translated_abstract.js +110 -0
- package/dist/es/views/translated_abstract_editable.js +19 -0
- package/dist/types/components/LanguageDropdown/index.d.ts +27 -0
- package/dist/types/components/LanguageDropdown/languages.d.ts +22 -0
- package/dist/types/configs/ManuscriptsEditor.d.ts +2 -1
- package/dist/types/icons.d.ts +2 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/lib/template.d.ts +18 -0
- package/dist/types/versions.d.ts +1 -1
- package/dist/types/views/abstracts.d.ts +28 -0
- package/dist/types/views/translated_abstract.d.ts +38 -0
- package/dist/types/views/translated_abstract_editable.d.ts +44 -0
- package/package.json +4 -3
- package/styles/AdvancedEditor.css +88 -21
package/dist/cjs/commands.js
CHANGED
|
@@ -30,6 +30,7 @@ const comments_1 = require("./lib/comments");
|
|
|
30
30
|
const doc_1 = require("./lib/doc");
|
|
31
31
|
const footnotes_1 = require("./lib/footnotes");
|
|
32
32
|
const helpers_1 = require("./lib/helpers");
|
|
33
|
+
const template_1 = require("./lib/template");
|
|
33
34
|
const track_changes_utils_1 = require("./lib/track-changes-utils");
|
|
34
35
|
const utils_1 = require("./lib/utils");
|
|
35
36
|
const accessibility_element_1 = require("./plugins/accessibility_element");
|
|
@@ -93,6 +94,9 @@ const blockActive = (type) => (state) => {
|
|
|
93
94
|
exports.blockActive = blockActive;
|
|
94
95
|
const canInsert = (type) => (state) => {
|
|
95
96
|
const { $from, $to } = state.selection;
|
|
97
|
+
if (!(0, template_1.templateAllows)(state, type)) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
96
100
|
if (($from.node().type === transform_1.schema.nodes.title ||
|
|
97
101
|
$from.node().type === transform_1.schema.nodes.section_title) &&
|
|
98
102
|
$from.pos === $to.pos &&
|
|
@@ -318,6 +322,9 @@ const insertAttachment = (file, state, type, dispatch) => {
|
|
|
318
322
|
};
|
|
319
323
|
exports.insertAttachment = insertAttachment;
|
|
320
324
|
const insertBlock = (nodeType) => (state, dispatch) => {
|
|
325
|
+
if (!(0, exports.canInsert)(nodeType)(state)) {
|
|
326
|
+
return false;
|
|
327
|
+
}
|
|
321
328
|
const position = findBlockInsertPosition(state);
|
|
322
329
|
if (position === null) {
|
|
323
330
|
return false;
|
|
@@ -1113,7 +1120,8 @@ const isCommentingAllowed = (type) => type === transform_1.schema.nodes.title ||
|
|
|
1113
1120
|
type === transform_1.schema.nodes.affiliations ||
|
|
1114
1121
|
type === transform_1.schema.nodes.contributors ||
|
|
1115
1122
|
type === transform_1.schema.nodes.image_element ||
|
|
1116
|
-
type === transform_1.schema.nodes.hero_image
|
|
1123
|
+
type === transform_1.schema.nodes.hero_image ||
|
|
1124
|
+
type === transform_1.schema.nodes.trans_abstract;
|
|
1117
1125
|
exports.isCommentingAllowed = isCommentingAllowed;
|
|
1118
1126
|
const addNodeComment = (node, state, dispatch) => {
|
|
1119
1127
|
if (!(0, exports.isCommentingAllowed)(node.type)) {
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*!
|
|
3
|
+
* © 2025 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
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
34
|
+
var ownKeys = function(o) {
|
|
35
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
36
|
+
var ar = [];
|
|
37
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
38
|
+
return ar;
|
|
39
|
+
};
|
|
40
|
+
return ownKeys(o);
|
|
41
|
+
};
|
|
42
|
+
return function (mod) {
|
|
43
|
+
if (mod && mod.__esModule) return mod;
|
|
44
|
+
var result = {};
|
|
45
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
46
|
+
__setModuleDefault(result, mod);
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
})();
|
|
50
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
51
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
52
|
+
};
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
const style_guide_1 = require("@manuscripts/style-guide");
|
|
55
|
+
const react_1 = __importStar(require("react"));
|
|
56
|
+
const styled_components_1 = __importDefault(require("styled-components"));
|
|
57
|
+
const languages_1 = require("./languages");
|
|
58
|
+
const LanguageOptionItem = ({ language, isSelected, onSelect }) => (react_1.default.createElement(StyledLanguageOption, { key: language.code, onClick: (event) => onSelect(event, language.code) },
|
|
59
|
+
language.name,
|
|
60
|
+
language.nativeName && ` (${language.nativeName})`,
|
|
61
|
+
isSelected && (react_1.default.createElement(TickIconWrapper, null,
|
|
62
|
+
react_1.default.createElement(style_guide_1.TickIcon, null)))));
|
|
63
|
+
const LanguageDropdown = ({ onLanguageSelect, onClose, currentLanguage = 'en', showButton = false, selectedLanguageDisplay, onCloseParent, }) => {
|
|
64
|
+
const [allLanguages, setAllLanguages] = (0, react_1.useState)([]);
|
|
65
|
+
const [isOpen, setIsOpen] = (0, react_1.useState)(!showButton);
|
|
66
|
+
const dropdownRef = (0, react_1.useRef)(null);
|
|
67
|
+
(0, react_1.useEffect)(() => {
|
|
68
|
+
const loadLanguages = async () => {
|
|
69
|
+
try {
|
|
70
|
+
const languages = await (0, languages_1.loadAllLanguages)();
|
|
71
|
+
const sortedLanguages = (0, languages_1.sortLanguagesByCommonality)(languages);
|
|
72
|
+
setAllLanguages(sortedLanguages);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.error('Failed to load language data:', error);
|
|
76
|
+
setAllLanguages([]);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
loadLanguages();
|
|
80
|
+
}, []);
|
|
81
|
+
(0, react_1.useEffect)(() => {
|
|
82
|
+
const handleClickOutside = (event) => {
|
|
83
|
+
if (dropdownRef.current &&
|
|
84
|
+
!dropdownRef.current.contains(event.target)) {
|
|
85
|
+
setIsOpen(false);
|
|
86
|
+
onClose?.();
|
|
87
|
+
onCloseParent?.();
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
if (isOpen) {
|
|
91
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
92
|
+
}
|
|
93
|
+
return () => {
|
|
94
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
95
|
+
};
|
|
96
|
+
}, [isOpen, onClose, onCloseParent]);
|
|
97
|
+
const toggleDropdown = (event) => {
|
|
98
|
+
event.stopPropagation();
|
|
99
|
+
setIsOpen(!isOpen);
|
|
100
|
+
};
|
|
101
|
+
const handleSelect = (event, languageCode) => {
|
|
102
|
+
event.stopPropagation();
|
|
103
|
+
onLanguageSelect(languageCode);
|
|
104
|
+
};
|
|
105
|
+
const getDisplayName = (languageCode) => {
|
|
106
|
+
return (0, languages_1.getSelectedLanguageName)(languageCode, allLanguages);
|
|
107
|
+
};
|
|
108
|
+
return (react_1.default.createElement(style_guide_1.DropdownContainer, { ref: dropdownRef },
|
|
109
|
+
showButton && (react_1.default.createElement(LanguageButton, { onClick: toggleDropdown },
|
|
110
|
+
react_1.default.createElement(ButtonContent, null,
|
|
111
|
+
react_1.default.createElement(ButtonLabel, null,
|
|
112
|
+
"Document language ",
|
|
113
|
+
react_1.default.createElement(style_guide_1.TriangleCollapsedIcon, null)),
|
|
114
|
+
react_1.default.createElement(SelectedLanguage, null, selectedLanguageDisplay || getDisplayName(currentLanguage))))),
|
|
115
|
+
isOpen && (react_1.default.createElement(DropdownMenu, { direction: "right", width: 231, height: 400, top: 18 },
|
|
116
|
+
!showButton && react_1.default.createElement(DropdownTitle, null, "Choose language"),
|
|
117
|
+
allLanguages.map((language) => (react_1.default.createElement(LanguageOptionItem, { key: language.code, language: language, isSelected: currentLanguage === language.code, onSelect: handleSelect })))))));
|
|
118
|
+
};
|
|
119
|
+
const StyledDropdownList = (0, styled_components_1.default)(style_guide_1.DropdownList) `
|
|
120
|
+
overflow-y: auto;
|
|
121
|
+
overflow-x: hidden;
|
|
122
|
+
border-radius: 8px;
|
|
123
|
+
|
|
124
|
+
/* Custom scrollbar styling */
|
|
125
|
+
&::-webkit-scrollbar {
|
|
126
|
+
width: 6px;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
&::-webkit-scrollbar-track {
|
|
130
|
+
background: ${(props) => props.theme.colors.background.secondary};
|
|
131
|
+
border-radius: 3px;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
&::-webkit-scrollbar-thumb {
|
|
135
|
+
background: #6e6e6e;
|
|
136
|
+
border-radius: 3px;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
&::-webkit-scrollbar-thumb:hover {
|
|
140
|
+
background: #6e6e6e;
|
|
141
|
+
}
|
|
142
|
+
`;
|
|
143
|
+
const LanguageButton = styled_components_1.default.div `
|
|
144
|
+
display: flex;
|
|
145
|
+
align-items: center;
|
|
146
|
+
justify-content: space-between;
|
|
147
|
+
font-family: ${(props) => props.theme.font.family.Lato};
|
|
148
|
+
cursor: pointer;
|
|
149
|
+
font-size: 14px;
|
|
150
|
+
line-height: 24px;
|
|
151
|
+
color: ${(props) => props.theme.colors.text.primary};
|
|
152
|
+
padding: 10px 16px;
|
|
153
|
+
width: 100%;
|
|
154
|
+
|
|
155
|
+
&:hover {
|
|
156
|
+
background: ${(props) => props.theme.colors.background.fifth};
|
|
157
|
+
}
|
|
158
|
+
`;
|
|
159
|
+
const ButtonContent = styled_components_1.default.span `
|
|
160
|
+
display: flex;
|
|
161
|
+
flex-direction: column;
|
|
162
|
+
align-items: flex-start;
|
|
163
|
+
`;
|
|
164
|
+
const ButtonLabel = styled_components_1.default.span `
|
|
165
|
+
display: flex;
|
|
166
|
+
align-items: center;
|
|
167
|
+
font-size: 16px;
|
|
168
|
+
|
|
169
|
+
svg {
|
|
170
|
+
top: 10px;
|
|
171
|
+
right: -10px;
|
|
172
|
+
position: relative;
|
|
173
|
+
}
|
|
174
|
+
`;
|
|
175
|
+
const SelectedLanguage = styled_components_1.default.span `
|
|
176
|
+
font-size: 12px;
|
|
177
|
+
color: ${(props) => props.theme.colors.text.secondary};
|
|
178
|
+
margin-top: 2px;
|
|
179
|
+
`;
|
|
180
|
+
const DropdownMenu = (0, styled_components_1.default)(StyledDropdownList) `
|
|
181
|
+
// Inherits all styles from StyledDropdownList
|
|
182
|
+
`;
|
|
183
|
+
const DropdownTitle = styled_components_1.default.div `
|
|
184
|
+
font-family: 'PT Sans', sans-serif;
|
|
185
|
+
font-size: 16px;
|
|
186
|
+
font-style: italic;
|
|
187
|
+
font-weight: 400;
|
|
188
|
+
line-height: 32px;
|
|
189
|
+
color: #c9c9c9;
|
|
190
|
+
padding: 12px 16px 8px 16px;
|
|
191
|
+
border-bottom: 1px solid #c9c9c9;
|
|
192
|
+
margin-bottom: 4px;
|
|
193
|
+
`;
|
|
194
|
+
const TickIconWrapper = styled_components_1.default.div `
|
|
195
|
+
svg path {
|
|
196
|
+
fill: #6e6e6e;
|
|
197
|
+
}
|
|
198
|
+
`;
|
|
199
|
+
const StyledLanguageOption = styled_components_1.default.div `
|
|
200
|
+
display: flex;
|
|
201
|
+
align-items: center;
|
|
202
|
+
justify-content: space-between;
|
|
203
|
+
font-family: ${(props) => props.theme.font.family.Lato};
|
|
204
|
+
cursor: pointer;
|
|
205
|
+
font-size: 14px;
|
|
206
|
+
line-height: 24px;
|
|
207
|
+
color: ${(props) => props.theme.colors.text.primary};
|
|
208
|
+
padding: 10px 16px;
|
|
209
|
+
transition: background-color 0.2s ease;
|
|
210
|
+
|
|
211
|
+
&:hover {
|
|
212
|
+
background-color: #f2fbfc;
|
|
213
|
+
}
|
|
214
|
+
`;
|
|
215
|
+
exports.default = LanguageDropdown;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.sortLanguagesByCommonality = exports.getLanguageDisplayName = exports.getSelectedLanguageName = exports.loadAllLanguages = exports.initializeLanguageData = exports.ENGLISH_FALLBACK = exports.COMMON_LANGUAGES = exports.COMMON_LANGUAGES_INFO = void 0;
|
|
40
|
+
const i18n_iso_languages_1 = __importDefault(require("@cospired/i18n-iso-languages"));
|
|
41
|
+
exports.COMMON_LANGUAGES_INFO = {
|
|
42
|
+
en: { englishName: 'English', nativeName: 'Default' },
|
|
43
|
+
es: { englishName: 'Spanish', nativeName: 'Español' },
|
|
44
|
+
fr: { englishName: 'French', nativeName: 'Français' },
|
|
45
|
+
de: { englishName: 'German', nativeName: 'Deutsch' },
|
|
46
|
+
it: { englishName: 'Italian', nativeName: 'Italiano' },
|
|
47
|
+
pt: { englishName: 'Portuguese', nativeName: 'Português' },
|
|
48
|
+
ru: { englishName: 'Russian', nativeName: 'Русский' },
|
|
49
|
+
ja: { englishName: 'Japanese', nativeName: '日本語' },
|
|
50
|
+
ko: { englishName: 'Korean', nativeName: '한국어' },
|
|
51
|
+
zh: { englishName: 'Chinese', nativeName: '中文' },
|
|
52
|
+
ar: { englishName: 'Arabic', nativeName: 'العربية' },
|
|
53
|
+
};
|
|
54
|
+
exports.COMMON_LANGUAGES = Object.keys(exports.COMMON_LANGUAGES_INFO);
|
|
55
|
+
exports.ENGLISH_FALLBACK = {
|
|
56
|
+
code: 'en',
|
|
57
|
+
name: 'English',
|
|
58
|
+
nativeName: 'English',
|
|
59
|
+
isCommon: true,
|
|
60
|
+
};
|
|
61
|
+
const initializeLanguageData = async () => {
|
|
62
|
+
try {
|
|
63
|
+
const englishLanguageData = await Promise.resolve().then(() => __importStar(require('@cospired/i18n-iso-languages/langs/en.json')));
|
|
64
|
+
i18n_iso_languages_1.default.registerLocale(englishLanguageData.default);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error('Failed to initialize language data:', error);
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
exports.initializeLanguageData = initializeLanguageData;
|
|
72
|
+
const loadAllLanguages = async () => {
|
|
73
|
+
try {
|
|
74
|
+
await (0, exports.initializeLanguageData)();
|
|
75
|
+
const languageCodes = i18n_iso_languages_1.default.getAlpha2Codes();
|
|
76
|
+
return Object.keys(languageCodes).map((code) => {
|
|
77
|
+
const commonLanguageInfo = exports.COMMON_LANGUAGES_INFO[code];
|
|
78
|
+
return {
|
|
79
|
+
code,
|
|
80
|
+
name: commonLanguageInfo?.englishName ||
|
|
81
|
+
i18n_iso_languages_1.default.getName(code, 'en') ||
|
|
82
|
+
code.toUpperCase(),
|
|
83
|
+
nativeName: commonLanguageInfo?.nativeName ||
|
|
84
|
+
i18n_iso_languages_1.default.getName(code, code) ||
|
|
85
|
+
undefined,
|
|
86
|
+
isCommon: exports.COMMON_LANGUAGES.includes(code),
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error('Failed to load languages:', error);
|
|
92
|
+
return [exports.ENGLISH_FALLBACK];
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
exports.loadAllLanguages = loadAllLanguages;
|
|
96
|
+
const getSelectedLanguageName = (selectedLanguage, allLanguages) => {
|
|
97
|
+
if (!allLanguages.length) {
|
|
98
|
+
return 'English (Default)';
|
|
99
|
+
}
|
|
100
|
+
const language = allLanguages.find((lang) => lang.code === selectedLanguage) ||
|
|
101
|
+
exports.ENGLISH_FALLBACK;
|
|
102
|
+
return language.nativeName && language.nativeName !== language.name
|
|
103
|
+
? `${language.name} (${language.nativeName})`
|
|
104
|
+
: language.name;
|
|
105
|
+
};
|
|
106
|
+
exports.getSelectedLanguageName = getSelectedLanguageName;
|
|
107
|
+
const getLanguageDisplayName = (languageCode) => {
|
|
108
|
+
const languageInfo = exports.COMMON_LANGUAGES_INFO[languageCode];
|
|
109
|
+
if (languageInfo) {
|
|
110
|
+
const { englishName, nativeName } = languageInfo;
|
|
111
|
+
if (nativeName !== englishName && nativeName !== 'Default') {
|
|
112
|
+
return `${englishName} (${nativeName})`;
|
|
113
|
+
}
|
|
114
|
+
return englishName;
|
|
115
|
+
}
|
|
116
|
+
const englishName = i18n_iso_languages_1.default.getName(languageCode, 'en');
|
|
117
|
+
if (englishName) {
|
|
118
|
+
return englishName;
|
|
119
|
+
}
|
|
120
|
+
return languageCode.toUpperCase();
|
|
121
|
+
};
|
|
122
|
+
exports.getLanguageDisplayName = getLanguageDisplayName;
|
|
123
|
+
const sortLanguagesByCommonality = (languages) => {
|
|
124
|
+
return [...languages].sort((a, b) => {
|
|
125
|
+
if (a.isCommon && !b.isCommon) {
|
|
126
|
+
return -1;
|
|
127
|
+
}
|
|
128
|
+
if (!a.isCommon && b.isCommon) {
|
|
129
|
+
return 1;
|
|
130
|
+
}
|
|
131
|
+
return a.name.localeCompare(b.name);
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
exports.sortLanguagesByCommonality = sortLanguagesByCommonality;
|
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const abstracts_1 = __importDefault(require("../views/abstracts"));
|
|
6
7
|
const accessibility_element_1 = __importDefault(require("../views/accessibility_element"));
|
|
7
8
|
const affiliations_1 = __importDefault(require("../views/affiliations"));
|
|
8
9
|
const alt_title_1 = __importDefault(require("../views/alt_title"));
|
|
@@ -46,6 +47,7 @@ const table_cell_1 = __importDefault(require("../views/table_cell"));
|
|
|
46
47
|
const table_element_editable_1 = __importDefault(require("../views/table_element_editable"));
|
|
47
48
|
const table_element_footer_1 = __importDefault(require("../views/table_element_footer"));
|
|
48
49
|
const title_editable_1 = __importDefault(require("../views/title_editable"));
|
|
50
|
+
const translated_abstract_editable_1 = __importDefault(require("../views/translated_abstract_editable"));
|
|
49
51
|
exports.default = (props, dispatch) => {
|
|
50
52
|
return {
|
|
51
53
|
title: (0, title_editable_1.default)(props, dispatch),
|
|
@@ -97,6 +99,7 @@ exports.default = (props, dispatch) => {
|
|
|
97
99
|
long_desc: (0, accessibility_element_1.default)(props, dispatch),
|
|
98
100
|
alt_text: (0, accessibility_element_1.default)(props, dispatch),
|
|
99
101
|
hero_image: (0, hero_image_editable_1.default)(props, dispatch),
|
|
100
|
-
|
|
102
|
+
abstracts: (0, abstracts_1.default)(props),
|
|
103
|
+
trans_abstract: (0, translated_abstract_editable_1.default)(props),
|
|
101
104
|
};
|
|
102
105
|
};
|
package/dist/cjs/icons.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.draggableIcon = exports.fileCorruptedIcon = exports.imageDefaultIcon = exports.imageLeftIcon = exports.imageRightIcon = exports.
|
|
3
|
+
exports.translateIcon = exports.draggableIcon = exports.fileCorruptedIcon = exports.imageDefaultIcon = exports.imageLeftIcon = exports.imageRightIcon = exports.addBtnIcon = exports.plusIcon = exports.lockIcon = exports.scrollIcon = exports.sectionCategoryIcon = exports.editIcon = exports.deleteIcon = exports.alertIcon = exports.arrowUp = exports.arrowDown = void 0;
|
|
4
4
|
const style_guide_1 = require("@manuscripts/style-guide");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const server_1 = require("react-dom/server");
|
|
@@ -14,9 +14,10 @@ exports.sectionCategoryIcon = renderIcon(style_guide_1.SectionCategoryIcon);
|
|
|
14
14
|
exports.scrollIcon = (0, server_1.renderToStaticMarkup)((0, react_1.createElement)(style_guide_1.ScrollIcon));
|
|
15
15
|
exports.lockIcon = (0, server_1.renderToStaticMarkup)((0, react_1.createElement)(style_guide_1.LockIcon));
|
|
16
16
|
exports.plusIcon = renderIcon(style_guide_1.PlusIcon);
|
|
17
|
-
exports.
|
|
17
|
+
exports.addBtnIcon = (0, server_1.renderToStaticMarkup)((0, react_1.createElement)(style_guide_1.PlusIcon));
|
|
18
18
|
exports.imageRightIcon = (0, server_1.renderToStaticMarkup)((0, react_1.createElement)(style_guide_1.ImageRightIcon));
|
|
19
19
|
exports.imageLeftIcon = (0, server_1.renderToStaticMarkup)((0, react_1.createElement)(style_guide_1.ImageLeftIcon));
|
|
20
20
|
exports.imageDefaultIcon = (0, server_1.renderToStaticMarkup)((0, react_1.createElement)(style_guide_1.ImageDefaultIcon));
|
|
21
21
|
exports.fileCorruptedIcon = (0, server_1.renderToStaticMarkup)((0, react_1.createElement)(style_guide_1.FileCorruptedIcon));
|
|
22
22
|
exports.draggableIcon = (0, server_1.renderToStaticMarkup)((0, react_1.createElement)(style_guide_1.DraggableIcon));
|
|
23
|
+
exports.translateIcon = (0, server_1.renderToStaticMarkup)((0, react_1.createElement)(style_guide_1.TranslateIcon));
|
package/dist/cjs/index.js
CHANGED
|
@@ -28,8 +28,11 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
28
28
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
29
29
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
30
30
|
};
|
|
31
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
32
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
33
|
+
};
|
|
31
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
-
exports.affiliationLabel = exports.authorLabel = exports.bibliographyItemTypes = exports.metadata = exports.getClosestMatch = exports.getNewMatch = exports.detectInconsistencyPluginKey = exports.searchReplacePluginKey = exports.bibliographyPluginKey = exports.footnotesPluginKey = exports.objectsPluginKey = exports.selectedSuggestionKey = exports.PopperManager = exports.CollabProvider = exports.TypeSelector = exports.OutlineItemIcon = exports.ManuscriptOutline = void 0;
|
|
35
|
+
exports.affiliationLabel = exports.authorLabel = exports.bibliographyItemTypes = exports.metadata = exports.getClosestMatch = exports.getNewMatch = exports.detectInconsistencyPluginKey = exports.searchReplacePluginKey = exports.bibliographyPluginKey = exports.footnotesPluginKey = exports.objectsPluginKey = exports.selectedSuggestionKey = exports.PopperManager = exports.CollabProvider = exports.LanguageDropdown = exports.TypeSelector = exports.OutlineItemIcon = exports.ManuscriptOutline = void 0;
|
|
33
36
|
__exportStar(require("./commands"), exports);
|
|
34
37
|
var ManuscriptOutline_1 = require("./components/outline/ManuscriptOutline");
|
|
35
38
|
Object.defineProperty(exports, "ManuscriptOutline", { enumerable: true, get: function () { return ManuscriptOutline_1.ManuscriptOutline; } });
|
|
@@ -37,6 +40,8 @@ var Outline_1 = require("./components/outline/Outline");
|
|
|
37
40
|
Object.defineProperty(exports, "OutlineItemIcon", { enumerable: true, get: function () { return Outline_1.OutlineItemIcon; } });
|
|
38
41
|
var TypeSelector_1 = require("./components/toolbar/type-selector/TypeSelector");
|
|
39
42
|
Object.defineProperty(exports, "TypeSelector", { enumerable: true, get: function () { return TypeSelector_1.TypeSelector; } });
|
|
43
|
+
var LanguageDropdown_1 = require("./components/LanguageDropdown");
|
|
44
|
+
Object.defineProperty(exports, "LanguageDropdown", { enumerable: true, get: function () { return __importDefault(LanguageDropdown_1).default; } });
|
|
40
45
|
__exportStar(require("./components/toolbar/ListMenuItem"), exports);
|
|
41
46
|
__exportStar(require("./components/toolbar/InsertTableDialog"), exports);
|
|
42
47
|
__exportStar(require("./menus"), exports);
|
|
@@ -48,6 +53,7 @@ __exportStar(require("./toolbar"), exports);
|
|
|
48
53
|
__exportStar(require("./lib/comments"), exports);
|
|
49
54
|
__exportStar(require("./lib/files"), exports);
|
|
50
55
|
__exportStar(require("./lib/footnotes"), exports);
|
|
56
|
+
__exportStar(require("./lib/template"), exports);
|
|
51
57
|
__exportStar(require("./lib/doc"), exports);
|
|
52
58
|
__exportStar(require("./lib/media"), exports);
|
|
53
59
|
__exportStar(require("./plugins/comments"), exports);
|
|
@@ -24,6 +24,7 @@ const server_1 = require("react-dom/server");
|
|
|
24
24
|
const commands_1 = require("../commands");
|
|
25
25
|
const popper_1 = require("./popper");
|
|
26
26
|
const position_menu_1 = require("./position-menu");
|
|
27
|
+
const template_1 = require("./template");
|
|
27
28
|
const utils_1 = require("./utils");
|
|
28
29
|
const popper = new popper_1.PopperManager();
|
|
29
30
|
const readonlyTypes = [
|
|
@@ -338,9 +339,13 @@ class ContextMenu {
|
|
|
338
339
|
return $pos.parent.canReplaceWith(index, index, type);
|
|
339
340
|
};
|
|
340
341
|
const checkNode = (node, pos) => {
|
|
342
|
+
if (!(0, template_1.templateAllows)(this.view.state, nodes[node])) {
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
341
345
|
canInsertAt(nodes[node], pos) && insertable.add(node);
|
|
342
346
|
};
|
|
343
|
-
if (canInsertAt(nodes.section, endPos)
|
|
347
|
+
if (canInsertAt(nodes.section, endPos) &&
|
|
348
|
+
(0, template_1.templateAllows)(this.view.state, nodes.section)) {
|
|
344
349
|
insertable.add('subsection');
|
|
345
350
|
}
|
|
346
351
|
checkNode('section', insertPos);
|
|
@@ -0,0 +1,25 @@
|
|
|
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.templateAllows = void 0;
|
|
19
|
+
const editor_props_1 = require("../plugins/editor-props");
|
|
20
|
+
const templateAllows = (state, nodeType) => {
|
|
21
|
+
const props = (0, editor_props_1.getEditorProps)(state);
|
|
22
|
+
const hiddenNodeTypes = props?.hiddenNodeTypes;
|
|
23
|
+
return !hiddenNodeTypes?.length || !hiddenNodeTypes.includes(nodeType);
|
|
24
|
+
};
|
|
25
|
+
exports.templateAllows = templateAllows;
|