@manuscripts/article-editor 4.4.1 → 4.4.3
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/components/DocumentOptionsDropdown.js +15 -2
- package/dist/cjs/components/DocumentOptionsDropdown.js.map +1 -1
- package/dist/es/components/DocumentOptionsDropdown.js +15 -2
- package/dist/es/components/DocumentOptionsDropdown.js.map +1 -1
- package/package.json +3 -4
- package/dist/cjs/components/DocumentLanguageSelector.js +0 -257
- package/dist/cjs/components/DocumentLanguageSelector.js.map +0 -1
- package/dist/es/components/DocumentLanguageSelector.js +0 -219
- package/dist/es/components/DocumentLanguageSelector.js.map +0 -1
- package/dist/types/components/DocumentLanguageSelector.d.ts +0 -17
|
@@ -14,21 +14,34 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
const body_editor_1 = require("@manuscripts/body-editor");
|
|
17
18
|
const style_guide_1 = require("@manuscripts/style-guide");
|
|
18
19
|
const track_changes_plugin_1 = require("@manuscripts/track-changes-plugin");
|
|
19
20
|
const react_1 = __importDefault(require("react"));
|
|
20
21
|
const styled_components_1 = __importDefault(require("styled-components"));
|
|
21
22
|
const use_exec_cmd_1 = __importDefault(require("../hooks/use-exec-cmd"));
|
|
22
|
-
const
|
|
23
|
+
const useStore_1 = require("../store/useStore");
|
|
23
24
|
const DocumentOptionsDropdown = () => {
|
|
24
25
|
const { isOpen, toggleOpen, wrapperRef } = (0, style_guide_1.useDropdown)();
|
|
25
26
|
const execCmd = (0, use_exec_cmd_1.default)();
|
|
27
|
+
const [storeState] = (0, useStore_1.useStore)((s) => ({
|
|
28
|
+
doc: s.doc,
|
|
29
|
+
view: s.view,
|
|
30
|
+
}));
|
|
31
|
+
const handleLanguageChange = async (languageCode) => {
|
|
32
|
+
if (storeState.view) {
|
|
33
|
+
const { state, dispatch } = storeState.view;
|
|
34
|
+
const tr = state.tr;
|
|
35
|
+
tr.setDocAttribute('primaryLanguageCode', languageCode);
|
|
36
|
+
dispatch(tr);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
26
39
|
return (react_1.default.createElement(style_guide_1.DropdownContainer, { ref: wrapperRef },
|
|
27
40
|
react_1.default.createElement(ToggleDropdownButton, { "data-cy": "document-options-button", title: "Document Options", onClick: toggleOpen },
|
|
28
41
|
react_1.default.createElement(style_guide_1.DotsIcon, null)),
|
|
29
42
|
isOpen && (react_1.default.createElement(HistoryDropdownList, { "data-cy": "history-dropdown", direction: "right", width: 192, top: 5, onClick: toggleOpen },
|
|
30
43
|
react_1.default.createElement(DropdownItem, { "data-cy": "version-history-button", onClick: () => execCmd(track_changes_plugin_1.trackCommands.setTrackingStatus(track_changes_plugin_1.TrackChangesStatus.viewSnapshots)) }, "Version history"),
|
|
31
|
-
react_1.default.createElement(
|
|
44
|
+
react_1.default.createElement(body_editor_1.LanguageDropdown, { showButton: true, buttonLabel: "Document language", currentLanguage: storeState.doc?.attrs?.primaryLanguageCode || 'en', onLanguageSelect: handleLanguageChange, onCloseParent: toggleOpen })))));
|
|
32
45
|
};
|
|
33
46
|
exports.default = DocumentOptionsDropdown;
|
|
34
47
|
const ToggleDropdownButton = styled_components_1.default.button `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentOptionsDropdown.js","sourceRoot":"","sources":["../../../src/components/DocumentOptionsDropdown.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;AAEH,0DAKiC;AACjC,4EAG0C;AAC1C,kDAAyB;AACzB,0EAAsC;AAEtC,yEAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"DocumentOptionsDropdown.js","sourceRoot":"","sources":["../../../src/components/DocumentOptionsDropdown.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;AAEH,0DAA2D;AAC3D,0DAKiC;AACjC,4EAG0C;AAC1C,kDAAyB;AACzB,0EAAsC;AAEtC,yEAA8C;AAC9C,gDAA4C;AAE5C,MAAM,uBAAuB,GAAa,GAAG,EAAE;IAC7C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAA,yBAAW,GAAE,CAAA;IACxD,MAAM,OAAO,GAAG,IAAA,sBAAU,GAAE,CAAA;IAC5B,MAAM,CAAC,UAAU,CAAC,GAAG,IAAA,mBAAQ,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAA;IAEH,MAAM,oBAAoB,GAAG,KAAK,EAAE,YAAoB,EAAE,EAAE;QAC1D,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,CAAA;YAC3C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAA;YACnB,EAAE,CAAC,eAAe,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAA;YACvD,QAAQ,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,8BAAC,+BAAiB,IAAC,GAAG,EAAE,UAAU;QAChC,8BAAC,oBAAoB,eACX,yBAAyB,EACjC,KAAK,EAAC,kBAAkB,EACxB,OAAO,EAAE,UAAU;YAEnB,8BAAC,sBAAQ,OAAG,CACS;QAEtB,MAAM,IAAI,CACT,8BAAC,mBAAmB,eACV,kBAAkB,EAC1B,SAAS,EAAC,OAAO,EACjB,KAAK,EAAE,GAAG,EACV,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,UAAU;YAEnB,8BAAC,YAAY,eACH,wBAAwB,EAChC,OAAO,EAAE,GAAG,EAAE,CACZ,OAAO,CACL,oCAAa,CAAC,iBAAiB,CAC7B,yCAAkB,CAAC,aAAa,CACjC,CACF,sBAIU;YACf,8BAAC,8BAAgB,IACf,UAAU,EAAE,IAAI,EAChB,WAAW,EAAC,mBAAmB,EAC/B,eAAe,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,mBAAmB,IAAI,IAAI,EACnE,gBAAgB,EAAE,oBAAoB,EACtC,aAAa,EAAE,UAAU,GACzB,CACkB,CACvB,CACiB,CACrB,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,uBAAuB,CAAA;AAEtC,MAAM,oBAAoB,GAAG,2BAAM,CAAC,MAAM,CAAA;;;;;;;;CAQzC,CAAA;AAED,MAAM,YAAY,GAAG,2BAAM,CAAC,GAAG,CAAA;iBACd,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;;;;WAI7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;;;;kBAInC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK;;CAE/D,CAAA;AAED,MAAM,mBAAmB,GAAG,IAAA,2BAAM,EAAC,0BAAY,CAAC,CAAA;;;;CAI/C,CAAA"}
|
|
@@ -9,21 +9,34 @@
|
|
|
9
9
|
*
|
|
10
10
|
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2025 Atypon Systems LLC. All Rights Reserved.
|
|
11
11
|
*/
|
|
12
|
+
import { LanguageDropdown } from '@manuscripts/body-editor';
|
|
12
13
|
import { DotsIcon, DropdownContainer, DropdownList, useDropdown, } from '@manuscripts/style-guide';
|
|
13
14
|
import { TrackChangesStatus, trackCommands, } from '@manuscripts/track-changes-plugin';
|
|
14
15
|
import React from 'react';
|
|
15
16
|
import styled from 'styled-components';
|
|
16
17
|
import useExecCmd from '../hooks/use-exec-cmd';
|
|
17
|
-
import
|
|
18
|
+
import { useStore } from '../store/useStore';
|
|
18
19
|
const DocumentOptionsDropdown = () => {
|
|
19
20
|
const { isOpen, toggleOpen, wrapperRef } = useDropdown();
|
|
20
21
|
const execCmd = useExecCmd();
|
|
22
|
+
const [storeState] = useStore((s) => ({
|
|
23
|
+
doc: s.doc,
|
|
24
|
+
view: s.view,
|
|
25
|
+
}));
|
|
26
|
+
const handleLanguageChange = async (languageCode) => {
|
|
27
|
+
if (storeState.view) {
|
|
28
|
+
const { state, dispatch } = storeState.view;
|
|
29
|
+
const tr = state.tr;
|
|
30
|
+
tr.setDocAttribute('primaryLanguageCode', languageCode);
|
|
31
|
+
dispatch(tr);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
21
34
|
return (React.createElement(DropdownContainer, { ref: wrapperRef },
|
|
22
35
|
React.createElement(ToggleDropdownButton, { "data-cy": "document-options-button", title: "Document Options", onClick: toggleOpen },
|
|
23
36
|
React.createElement(DotsIcon, null)),
|
|
24
37
|
isOpen && (React.createElement(HistoryDropdownList, { "data-cy": "history-dropdown", direction: "right", width: 192, top: 5, onClick: toggleOpen },
|
|
25
38
|
React.createElement(DropdownItem, { "data-cy": "version-history-button", onClick: () => execCmd(trackCommands.setTrackingStatus(TrackChangesStatus.viewSnapshots)) }, "Version history"),
|
|
26
|
-
React.createElement(
|
|
39
|
+
React.createElement(LanguageDropdown, { showButton: true, buttonLabel: "Document language", currentLanguage: storeState.doc?.attrs?.primaryLanguageCode || 'en', onLanguageSelect: handleLanguageChange, onCloseParent: toggleOpen })))));
|
|
27
40
|
};
|
|
28
41
|
export default DocumentOptionsDropdown;
|
|
29
42
|
const ToggleDropdownButton = styled.button `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentOptionsDropdown.js","sourceRoot":"","sources":["../../../src/components/DocumentOptionsDropdown.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,kBAAkB,EAClB,aAAa,GACd,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,OAAO,UAAU,MAAM,uBAAuB,CAAA;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"DocumentOptionsDropdown.js","sourceRoot":"","sources":["../../../src/components/DocumentOptionsDropdown.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,kBAAkB,EAClB,aAAa,GACd,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,OAAO,UAAU,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,MAAM,uBAAuB,GAAa,GAAG,EAAE;IAC7C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAA;IACxD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAA;IAEH,MAAM,oBAAoB,GAAG,KAAK,EAAE,YAAoB,EAAE,EAAE;QAC1D,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,CAAA;YAC3C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAA;YACnB,EAAE,CAAC,eAAe,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAA;YACvD,QAAQ,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,oBAAC,iBAAiB,IAAC,GAAG,EAAE,UAAU;QAChC,oBAAC,oBAAoB,eACX,yBAAyB,EACjC,KAAK,EAAC,kBAAkB,EACxB,OAAO,EAAE,UAAU;YAEnB,oBAAC,QAAQ,OAAG,CACS;QAEtB,MAAM,IAAI,CACT,oBAAC,mBAAmB,eACV,kBAAkB,EAC1B,SAAS,EAAC,OAAO,EACjB,KAAK,EAAE,GAAG,EACV,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,UAAU;YAEnB,oBAAC,YAAY,eACH,wBAAwB,EAChC,OAAO,EAAE,GAAG,EAAE,CACZ,OAAO,CACL,aAAa,CAAC,iBAAiB,CAC7B,kBAAkB,CAAC,aAAa,CACjC,CACF,sBAIU;YACf,oBAAC,gBAAgB,IACf,UAAU,EAAE,IAAI,EAChB,WAAW,EAAC,mBAAmB,EAC/B,eAAe,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,mBAAmB,IAAI,IAAI,EACnE,gBAAgB,EAAE,oBAAoB,EACtC,aAAa,EAAE,UAAU,GACzB,CACkB,CACvB,CACiB,CACrB,CAAA;AACH,CAAC,CAAA;AAED,eAAe,uBAAuB,CAAA;AAEtC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAA;;;;;;;;CAQzC,CAAA;AAED,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;iBACd,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;;;;WAI7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;;;;kBAInC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK;;CAE/D,CAAA;AAED,MAAM,mBAAmB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;;;;CAI/C,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manuscripts/article-editor",
|
|
3
|
-
"version": "4.4.
|
|
3
|
+
"version": "4.4.3",
|
|
4
4
|
"license": "CPAL-1.0",
|
|
5
5
|
"description": "React components for editing and viewing manuscripts",
|
|
6
6
|
"repository": "github:Atypon-OpenSource/manuscripts-article-editor",
|
|
@@ -28,14 +28,13 @@
|
|
|
28
28
|
"unlink-all": "rm pnpm-workspace.yaml && pnpm install"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@cospired/i18n-iso-languages": "^4.2.0",
|
|
32
31
|
"@fontsource/lato": "5.2.5",
|
|
33
32
|
"@fontsource/pt-sans": "5.2.5",
|
|
34
33
|
"@fontsource/pt-serif": "5.2.5",
|
|
35
34
|
"@headlessui/react": "2.2.3",
|
|
36
|
-
"@manuscripts/body-editor": "3.4.
|
|
35
|
+
"@manuscripts/body-editor": "3.4.4",
|
|
37
36
|
"@manuscripts/json-schema": "2.2.12",
|
|
38
|
-
"@manuscripts/style-guide": "3.2.
|
|
37
|
+
"@manuscripts/style-guide": "3.2.3",
|
|
39
38
|
"@manuscripts/track-changes-plugin": "2.0.10",
|
|
40
39
|
"@manuscripts/transform": "4.2.13",
|
|
41
40
|
"@popperjs/core": "2.11.8",
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
|
|
4
|
-
*
|
|
5
|
-
* Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
|
|
6
|
-
*
|
|
7
|
-
* The Original Code is manuscripts-frontend.
|
|
8
|
-
*
|
|
9
|
-
* The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
|
|
10
|
-
*
|
|
11
|
-
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2025 Atypon Systems LLC. All Rights Reserved.
|
|
12
|
-
*/
|
|
13
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
-
}
|
|
19
|
-
Object.defineProperty(o, k2, desc);
|
|
20
|
-
}) : (function(o, m, k, k2) {
|
|
21
|
-
if (k2 === undefined) k2 = k;
|
|
22
|
-
o[k2] = m[k];
|
|
23
|
-
}));
|
|
24
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
-
}) : function(o, v) {
|
|
27
|
-
o["default"] = v;
|
|
28
|
-
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
30
|
-
var ownKeys = function(o) {
|
|
31
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
32
|
-
var ar = [];
|
|
33
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
34
|
-
return ar;
|
|
35
|
-
};
|
|
36
|
-
return ownKeys(o);
|
|
37
|
-
};
|
|
38
|
-
return function (mod) {
|
|
39
|
-
if (mod && mod.__esModule) return mod;
|
|
40
|
-
var result = {};
|
|
41
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
42
|
-
__setModuleDefault(result, mod);
|
|
43
|
-
return result;
|
|
44
|
-
};
|
|
45
|
-
})();
|
|
46
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
47
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
48
|
-
};
|
|
49
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
-
const i18n_iso_languages_1 = __importDefault(require("@cospired/i18n-iso-languages"));
|
|
51
|
-
const style_guide_1 = require("@manuscripts/style-guide");
|
|
52
|
-
const react_1 = __importStar(require("react"));
|
|
53
|
-
const styled_components_1 = __importDefault(require("styled-components"));
|
|
54
|
-
const useStore_1 = require("../store/useStore");
|
|
55
|
-
// Native names lookup for common languages
|
|
56
|
-
const NATIVE_NAMES = {
|
|
57
|
-
en: 'Default',
|
|
58
|
-
es: 'Español',
|
|
59
|
-
fr: 'Français',
|
|
60
|
-
de: 'Deutsch',
|
|
61
|
-
it: 'Italiano',
|
|
62
|
-
pt: 'Português',
|
|
63
|
-
ru: 'Русский',
|
|
64
|
-
ja: '日本語',
|
|
65
|
-
ko: '한국어',
|
|
66
|
-
zh: '中文',
|
|
67
|
-
ar: 'العربية',
|
|
68
|
-
};
|
|
69
|
-
const COMMON_LANGUAGES = Object.keys(NATIVE_NAMES);
|
|
70
|
-
// Fallback language object for English
|
|
71
|
-
const ENGLISH_FALLBACK = {
|
|
72
|
-
code: 'en',
|
|
73
|
-
name: 'English',
|
|
74
|
-
nativeName: 'English',
|
|
75
|
-
isCommon: true,
|
|
76
|
-
};
|
|
77
|
-
// Get display name for selected language
|
|
78
|
-
const getSelectedLanguageName = (selectedLanguage, allLanguages) => {
|
|
79
|
-
if (!allLanguages.length) {
|
|
80
|
-
return 'English (Default)';
|
|
81
|
-
}
|
|
82
|
-
const lang = allLanguages.find((l) => l.code === selectedLanguage) || ENGLISH_FALLBACK;
|
|
83
|
-
return lang.code === 'en'
|
|
84
|
-
? 'English (Default)'
|
|
85
|
-
: `${lang.name}${lang.nativeName ? ` (${lang.nativeName})` : ''}`;
|
|
86
|
-
};
|
|
87
|
-
const LanguageOptionItem = ({ language, isSelected, onSelect }) => (react_1.default.createElement(LanguageOption, { key: language.code, onClick: (event) => onSelect(event, language.code) },
|
|
88
|
-
language.name,
|
|
89
|
-
language.nativeName && ` (${language.nativeName})`,
|
|
90
|
-
isSelected && (react_1.default.createElement(TickIconWrapper, null,
|
|
91
|
-
react_1.default.createElement(style_guide_1.TickIcon, null)))));
|
|
92
|
-
const DocumentLanguageSelector = ({ onCloseParent, }) => {
|
|
93
|
-
const [storeState] = (0, useStore_1.useStore)((s) => ({
|
|
94
|
-
doc: s.doc,
|
|
95
|
-
view: s.view,
|
|
96
|
-
}));
|
|
97
|
-
// Get selected language from document's primaryLanguageCode or default to 'en'
|
|
98
|
-
const selectedLanguage = storeState.doc?.attrs?.primaryLanguageCode || 'en';
|
|
99
|
-
const [isSubmenuOpen, setIsSubmenuOpen] = (0, react_1.useState)(false);
|
|
100
|
-
const [allLanguages, setAllLanguages] = (0, react_1.useState)([]);
|
|
101
|
-
const submenuRef = (0, react_1.useRef)(null);
|
|
102
|
-
// Initialize language data and load all languages
|
|
103
|
-
(0, react_1.useEffect)(() => {
|
|
104
|
-
const loadLanguages = async () => {
|
|
105
|
-
try {
|
|
106
|
-
// Dynamically import the English language data
|
|
107
|
-
const englishLanguageData = await Promise.resolve().then(() => __importStar(require('@cospired/i18n-iso-languages/langs/en.json')));
|
|
108
|
-
i18n_iso_languages_1.default.registerLocale(englishLanguageData.default);
|
|
109
|
-
// Get all available language codes
|
|
110
|
-
const languageCodes = i18n_iso_languages_1.default.getAlpha2Codes();
|
|
111
|
-
const languagesList = Object.keys(languageCodes).map((code) => ({
|
|
112
|
-
code,
|
|
113
|
-
name: i18n_iso_languages_1.default.getName(code, 'en') || code,
|
|
114
|
-
nativeName: NATIVE_NAMES[code] || i18n_iso_languages_1.default.getName(code, code) || undefined,
|
|
115
|
-
isCommon: COMMON_LANGUAGES.includes(code),
|
|
116
|
-
}));
|
|
117
|
-
setAllLanguages(languagesList);
|
|
118
|
-
}
|
|
119
|
-
catch (error) {
|
|
120
|
-
console.error('Failed to load language data:', error);
|
|
121
|
-
// Fallback to English only if loading fails
|
|
122
|
-
setAllLanguages([ENGLISH_FALLBACK]);
|
|
123
|
-
}
|
|
124
|
-
};
|
|
125
|
-
loadLanguages();
|
|
126
|
-
}, []);
|
|
127
|
-
// Prepare language options with common languages first
|
|
128
|
-
const languageOptions = (0, react_1.useMemo)(() => {
|
|
129
|
-
return [...allLanguages].sort((a, b) => {
|
|
130
|
-
// Sort common languages first
|
|
131
|
-
if (a.isCommon && !b.isCommon) {
|
|
132
|
-
return -1;
|
|
133
|
-
}
|
|
134
|
-
if (!a.isCommon && b.isCommon) {
|
|
135
|
-
return 1;
|
|
136
|
-
}
|
|
137
|
-
// Then sort alphabetically by name
|
|
138
|
-
return a.name.localeCompare(b.name);
|
|
139
|
-
});
|
|
140
|
-
}, [allLanguages]);
|
|
141
|
-
// Close submenu when clicking outside
|
|
142
|
-
(0, react_1.useEffect)(() => {
|
|
143
|
-
const handleClickOutside = (event) => {
|
|
144
|
-
if (submenuRef.current &&
|
|
145
|
-
!submenuRef.current.contains(event.target)) {
|
|
146
|
-
setIsSubmenuOpen(false);
|
|
147
|
-
onCloseParent?.();
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
if (isSubmenuOpen) {
|
|
151
|
-
document.addEventListener('mousedown', handleClickOutside);
|
|
152
|
-
}
|
|
153
|
-
return () => {
|
|
154
|
-
document.removeEventListener('mousedown', handleClickOutside);
|
|
155
|
-
};
|
|
156
|
-
}, [isSubmenuOpen, onCloseParent]);
|
|
157
|
-
const handleLanguageButtonClick = (event) => {
|
|
158
|
-
event.stopPropagation();
|
|
159
|
-
setIsSubmenuOpen(!isSubmenuOpen);
|
|
160
|
-
};
|
|
161
|
-
const handleLanguageSelect = (event, languageCode) => {
|
|
162
|
-
event.stopPropagation();
|
|
163
|
-
if (storeState.view) {
|
|
164
|
-
const { state, dispatch } = storeState.view;
|
|
165
|
-
const tr = state.tr;
|
|
166
|
-
tr.setDocAttribute('primaryLanguageCode', languageCode);
|
|
167
|
-
dispatch(tr);
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
return (react_1.default.createElement(style_guide_1.DropdownContainer, { ref: submenuRef },
|
|
171
|
-
react_1.default.createElement(LanguageSelectorButton, { onClick: handleLanguageButtonClick },
|
|
172
|
-
react_1.default.createElement(LanguageHeader, null,
|
|
173
|
-
react_1.default.createElement(LanguageLabel, null,
|
|
174
|
-
"Document language ",
|
|
175
|
-
react_1.default.createElement(style_guide_1.TriangleCollapsedIcon, null)),
|
|
176
|
-
react_1.default.createElement(SelectedLanguageText, null, getSelectedLanguageName(selectedLanguage, allLanguages)))),
|
|
177
|
-
isSubmenuOpen && (react_1.default.createElement(StyledDropdownList, { direction: "right", width: 231, top: 18, height: 400 }, languageOptions.map((language) => (react_1.default.createElement(LanguageOptionItem, { key: language.code, language: language, isSelected: selectedLanguage === language.code, onSelect: handleLanguageSelect })))))));
|
|
178
|
-
};
|
|
179
|
-
exports.default = DocumentLanguageSelector;
|
|
180
|
-
const StyledDropdownList = (0, styled_components_1.default)(style_guide_1.DropdownList) `
|
|
181
|
-
overflow-y: auto;
|
|
182
|
-
overflow-x: hidden;
|
|
183
|
-
border-radius: 8px;
|
|
184
|
-
|
|
185
|
-
/* Custom scrollbar styling */
|
|
186
|
-
&::-webkit-scrollbar {
|
|
187
|
-
width: 6px;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
&::-webkit-scrollbar-track {
|
|
191
|
-
background: ${(props) => props.theme.colors.background.secondary};
|
|
192
|
-
border-radius: 3px;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
&::-webkit-scrollbar-thumb {
|
|
196
|
-
background: #6e6e6e;
|
|
197
|
-
border-radius: 3px;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
&::-webkit-scrollbar-thumb:hover {
|
|
201
|
-
background: #6e6e6e;
|
|
202
|
-
}
|
|
203
|
-
`;
|
|
204
|
-
const LanguageSelectorButton = styled_components_1.default.div `
|
|
205
|
-
display: flex;
|
|
206
|
-
align-items: center;
|
|
207
|
-
justify-content: space-between;
|
|
208
|
-
font-family: ${(props) => props.theme.font.family.Lato};
|
|
209
|
-
cursor: pointer;
|
|
210
|
-
font-size: 14px;
|
|
211
|
-
line-height: 24px;
|
|
212
|
-
color: ${(props) => props.theme.colors.text.primary};
|
|
213
|
-
padding: 10px 16px;
|
|
214
|
-
width: 100%;
|
|
215
|
-
|
|
216
|
-
&:hover {
|
|
217
|
-
background: ${(props) => props.theme.colors.background.fifth};
|
|
218
|
-
}
|
|
219
|
-
`;
|
|
220
|
-
const LanguageHeader = styled_components_1.default.span `
|
|
221
|
-
display: flex;
|
|
222
|
-
flex-direction: column;
|
|
223
|
-
align-items: flex-start;
|
|
224
|
-
`;
|
|
225
|
-
const LanguageLabel = styled_components_1.default.span `
|
|
226
|
-
display: flex;
|
|
227
|
-
align-items: center;
|
|
228
|
-
font-size: 16px;
|
|
229
|
-
|
|
230
|
-
svg {
|
|
231
|
-
top: 10px;
|
|
232
|
-
right: -10px;
|
|
233
|
-
position: relative;
|
|
234
|
-
}
|
|
235
|
-
`;
|
|
236
|
-
const SelectedLanguageText = styled_components_1.default.span `
|
|
237
|
-
font-size: 12px;
|
|
238
|
-
color: ${(props) => props.theme.colors.text.secondary};
|
|
239
|
-
margin-top: 2px;
|
|
240
|
-
`;
|
|
241
|
-
const LanguageOption = styled_components_1.default.div `
|
|
242
|
-
display: flex;
|
|
243
|
-
align-items: center;
|
|
244
|
-
justify-content: space-between;
|
|
245
|
-
font-family: ${(props) => props.theme.font.family.Lato};
|
|
246
|
-
cursor: pointer;
|
|
247
|
-
font-size: 14px;
|
|
248
|
-
line-height: 24px;
|
|
249
|
-
color: ${(props) => props.theme.colors.text.primary};
|
|
250
|
-
padding: 10px 16px;
|
|
251
|
-
`;
|
|
252
|
-
const TickIconWrapper = styled_components_1.default.div `
|
|
253
|
-
svg path {
|
|
254
|
-
fill: #6e6e6e;
|
|
255
|
-
}
|
|
256
|
-
`;
|
|
257
|
-
//# sourceMappingURL=DocumentLanguageSelector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentLanguageSelector.js","sourceRoot":"","sources":["../../../src/components/DocumentLanguageSelector.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,sFAAuD;AACvD,0DAKiC;AACjC,+CAAmE;AACnE,0EAAsC;AAEtC,gDAA4C;AAa5C,2CAA2C;AAC3C,MAAM,YAAY,GAA2B;IAC3C,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,SAAS;CACd,CAAA;AAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AAElD,uCAAuC;AACvC,MAAM,gBAAgB,GAAmB;IACvC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,IAAI;CACf,CAAA;AAED,yCAAyC;AACzC,MAAM,uBAAuB,GAAG,CAC9B,gBAAwB,EACxB,YAA8B,EACtB,EAAE;IACV,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,mBAAmB,CAAA;IAC5B,CAAC;IAED,MAAM,IAAI,GACR,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,gBAAgB,CAAA;IAE3E,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI;QACvB,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACrE,CAAC,CAAA;AAED,MAAM,kBAAkB,GAInB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAC3C,8BAAC,cAAc,IACb,GAAG,EAAE,QAAQ,CAAC,IAAI,EAClB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEjD,QAAQ,CAAC,IAAI;IACb,QAAQ,CAAC,UAAU,IAAI,KAAK,QAAQ,CAAC,UAAU,GAAG;IAClD,UAAU,IAAI,CACb,8BAAC,eAAe;QACd,8BAAC,sBAAQ,OAAG,CACI,CACnB,CACc,CAClB,CAAA;AAED,MAAM,wBAAwB,GAA4C,CAAC,EACzE,aAAa,GACd,EAAE,EAAE;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,IAAA,mBAAQ,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAA;IAEH,+EAA+E;IAC/E,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,mBAAmB,IAAI,IAAI,CAAA;IAC3E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IACzD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAmB,EAAE,CAAC,CAAA;IACtE,MAAM,UAAU,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAA;IAE/C,kDAAkD;IAClD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;YAC/B,IAAI,CAAC;gBACH,+CAA+C;gBAC/C,MAAM,mBAAmB,GAAG,wDAC1B,4CAA4C,GAC7C,CAAA;gBACD,4BAAY,CAAC,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;gBAExD,mCAAmC;gBACnC,MAAM,aAAa,GAAG,4BAAY,CAAC,cAAc,EAAE,CAAA;gBACnD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC9D,IAAI;oBACJ,IAAI,EAAE,4BAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI;oBAC9C,UAAU,EACR,YAAY,CAAC,IAAI,CAAC,IAAI,4BAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,SAAS;oBACrE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;iBAC1C,CAAC,CAAC,CAAA;gBAEH,eAAe,CAAC,aAAa,CAAC,CAAA;YAChC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAA;gBACrD,4CAA4C;gBAC5C,eAAe,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAA;YACrC,CAAC;QACH,CAAC,CAAA;QAED,aAAa,EAAE,CAAA;IACjB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,uDAAuD;IACvD,MAAM,eAAe,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACnC,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrC,8BAA8B;YAC9B,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC9B,OAAO,CAAC,CAAC,CAAA;YACX,CAAC;YACD,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC9B,OAAO,CAAC,CAAA;YACV,CAAC;YACD,mCAAmC;YACnC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAElB,sCAAsC;IACtC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,kBAAkB,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC/C,IACE,UAAU,CAAC,OAAO;gBAClB,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAiB,CAAC,EACrD,CAAC;gBACD,gBAAgB,CAAC,KAAK,CAAC,CAAA;gBACvB,aAAa,EAAE,EAAE,CAAA;YACnB,CAAC;QACH,CAAC,CAAA;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;QAC5D,CAAC;QAED,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;QAC/D,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAA;IAElC,MAAM,yBAAyB,GAAG,CAAC,KAAuB,EAAE,EAAE;QAC5D,KAAK,CAAC,eAAe,EAAE,CAAA;QACvB,gBAAgB,CAAC,CAAC,aAAa,CAAC,CAAA;IAClC,CAAC,CAAA;IAED,MAAM,oBAAoB,GAAG,CAC3B,KAAuB,EACvB,YAAoB,EACpB,EAAE;QACF,KAAK,CAAC,eAAe,EAAE,CAAA;QACvB,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,CAAA;YAC3C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAA;YACnB,EAAE,CAAC,eAAe,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAA;YACvD,QAAQ,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,8BAAC,+BAAiB,IAAC,GAAG,EAAE,UAAU;QAChC,8BAAC,sBAAsB,IAAC,OAAO,EAAE,yBAAyB;YACxD,8BAAC,cAAc;gBACb,8BAAC,aAAa;;oBACM,8BAAC,mCAAqB,OAAG,CAC7B;gBAChB,8BAAC,oBAAoB,QAClB,uBAAuB,CAAC,gBAAgB,EAAE,YAAY,CAAC,CACnC,CACR,CACM;QAExB,aAAa,IAAI,CAChB,8BAAC,kBAAkB,IAAC,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,IACnE,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACjC,8BAAC,kBAAkB,IACjB,GAAG,EAAE,QAAQ,CAAC,IAAI,EAClB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,gBAAgB,KAAK,QAAQ,CAAC,IAAI,EAC9C,QAAQ,EAAE,oBAAoB,GAC9B,CACH,CAAC,CACiB,CACtB,CACiB,CACrB,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,wBAAwB,CAAA;AAEvC,MAAM,kBAAkB,GAAG,IAAA,2BAAM,EAAC,0BAAY,CAAC,CAAA;;;;;;;;;;;kBAW7B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS;;;;;;;;;;;;CAYnE,CAAA;AAED,MAAM,sBAAsB,GAAG,2BAAM,CAAC,GAAG,CAAA;;;;iBAIxB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;;;;WAI7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;;;;;kBAKnC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK;;CAE/D,CAAA;AAED,MAAM,cAAc,GAAG,2BAAM,CAAC,IAAI,CAAA;;;;CAIjC,CAAA;AAED,MAAM,aAAa,GAAG,2BAAM,CAAC,IAAI,CAAA;;;;;;;;;;CAUhC,CAAA;AAED,MAAM,oBAAoB,GAAG,2BAAM,CAAC,IAAI,CAAA;;WAE7B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;;CAEtD,CAAA;AAED,MAAM,cAAc,GAAG,2BAAM,CAAC,GAAG,CAAA;;;;iBAIhB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;;;;WAI7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;;CAEpD,CAAA;AAED,MAAM,eAAe,GAAG,2BAAM,CAAC,GAAG,CAAA;;;;CAIjC,CAAA"}
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
|
|
3
|
-
*
|
|
4
|
-
* Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
|
|
5
|
-
*
|
|
6
|
-
* The Original Code is manuscripts-frontend.
|
|
7
|
-
*
|
|
8
|
-
* The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
|
|
9
|
-
*
|
|
10
|
-
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2025 Atypon Systems LLC. All Rights Reserved.
|
|
11
|
-
*/
|
|
12
|
-
import isoLanguages from '@cospired/i18n-iso-languages';
|
|
13
|
-
import { DropdownContainer, DropdownList, TickIcon, TriangleCollapsedIcon, } from '@manuscripts/style-guide';
|
|
14
|
-
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
15
|
-
import styled from 'styled-components';
|
|
16
|
-
import { useStore } from '../store/useStore';
|
|
17
|
-
// Native names lookup for common languages
|
|
18
|
-
const NATIVE_NAMES = {
|
|
19
|
-
en: 'Default',
|
|
20
|
-
es: 'Español',
|
|
21
|
-
fr: 'Français',
|
|
22
|
-
de: 'Deutsch',
|
|
23
|
-
it: 'Italiano',
|
|
24
|
-
pt: 'Português',
|
|
25
|
-
ru: 'Русский',
|
|
26
|
-
ja: '日本語',
|
|
27
|
-
ko: '한국어',
|
|
28
|
-
zh: '中文',
|
|
29
|
-
ar: 'العربية',
|
|
30
|
-
};
|
|
31
|
-
const COMMON_LANGUAGES = Object.keys(NATIVE_NAMES);
|
|
32
|
-
// Fallback language object for English
|
|
33
|
-
const ENGLISH_FALLBACK = {
|
|
34
|
-
code: 'en',
|
|
35
|
-
name: 'English',
|
|
36
|
-
nativeName: 'English',
|
|
37
|
-
isCommon: true,
|
|
38
|
-
};
|
|
39
|
-
// Get display name for selected language
|
|
40
|
-
const getSelectedLanguageName = (selectedLanguage, allLanguages) => {
|
|
41
|
-
if (!allLanguages.length) {
|
|
42
|
-
return 'English (Default)';
|
|
43
|
-
}
|
|
44
|
-
const lang = allLanguages.find((l) => l.code === selectedLanguage) || ENGLISH_FALLBACK;
|
|
45
|
-
return lang.code === 'en'
|
|
46
|
-
? 'English (Default)'
|
|
47
|
-
: `${lang.name}${lang.nativeName ? ` (${lang.nativeName})` : ''}`;
|
|
48
|
-
};
|
|
49
|
-
const LanguageOptionItem = ({ language, isSelected, onSelect }) => (React.createElement(LanguageOption, { key: language.code, onClick: (event) => onSelect(event, language.code) },
|
|
50
|
-
language.name,
|
|
51
|
-
language.nativeName && ` (${language.nativeName})`,
|
|
52
|
-
isSelected && (React.createElement(TickIconWrapper, null,
|
|
53
|
-
React.createElement(TickIcon, null)))));
|
|
54
|
-
const DocumentLanguageSelector = ({ onCloseParent, }) => {
|
|
55
|
-
const [storeState] = useStore((s) => ({
|
|
56
|
-
doc: s.doc,
|
|
57
|
-
view: s.view,
|
|
58
|
-
}));
|
|
59
|
-
// Get selected language from document's primaryLanguageCode or default to 'en'
|
|
60
|
-
const selectedLanguage = storeState.doc?.attrs?.primaryLanguageCode || 'en';
|
|
61
|
-
const [isSubmenuOpen, setIsSubmenuOpen] = useState(false);
|
|
62
|
-
const [allLanguages, setAllLanguages] = useState([]);
|
|
63
|
-
const submenuRef = useRef(null);
|
|
64
|
-
// Initialize language data and load all languages
|
|
65
|
-
useEffect(() => {
|
|
66
|
-
const loadLanguages = async () => {
|
|
67
|
-
try {
|
|
68
|
-
// Dynamically import the English language data
|
|
69
|
-
const englishLanguageData = await import('@cospired/i18n-iso-languages/langs/en.json');
|
|
70
|
-
isoLanguages.registerLocale(englishLanguageData.default);
|
|
71
|
-
// Get all available language codes
|
|
72
|
-
const languageCodes = isoLanguages.getAlpha2Codes();
|
|
73
|
-
const languagesList = Object.keys(languageCodes).map((code) => ({
|
|
74
|
-
code,
|
|
75
|
-
name: isoLanguages.getName(code, 'en') || code,
|
|
76
|
-
nativeName: NATIVE_NAMES[code] || isoLanguages.getName(code, code) || undefined,
|
|
77
|
-
isCommon: COMMON_LANGUAGES.includes(code),
|
|
78
|
-
}));
|
|
79
|
-
setAllLanguages(languagesList);
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
console.error('Failed to load language data:', error);
|
|
83
|
-
// Fallback to English only if loading fails
|
|
84
|
-
setAllLanguages([ENGLISH_FALLBACK]);
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
loadLanguages();
|
|
88
|
-
}, []);
|
|
89
|
-
// Prepare language options with common languages first
|
|
90
|
-
const languageOptions = useMemo(() => {
|
|
91
|
-
return [...allLanguages].sort((a, b) => {
|
|
92
|
-
// Sort common languages first
|
|
93
|
-
if (a.isCommon && !b.isCommon) {
|
|
94
|
-
return -1;
|
|
95
|
-
}
|
|
96
|
-
if (!a.isCommon && b.isCommon) {
|
|
97
|
-
return 1;
|
|
98
|
-
}
|
|
99
|
-
// Then sort alphabetically by name
|
|
100
|
-
return a.name.localeCompare(b.name);
|
|
101
|
-
});
|
|
102
|
-
}, [allLanguages]);
|
|
103
|
-
// Close submenu when clicking outside
|
|
104
|
-
useEffect(() => {
|
|
105
|
-
const handleClickOutside = (event) => {
|
|
106
|
-
if (submenuRef.current &&
|
|
107
|
-
!submenuRef.current.contains(event.target)) {
|
|
108
|
-
setIsSubmenuOpen(false);
|
|
109
|
-
onCloseParent?.();
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
if (isSubmenuOpen) {
|
|
113
|
-
document.addEventListener('mousedown', handleClickOutside);
|
|
114
|
-
}
|
|
115
|
-
return () => {
|
|
116
|
-
document.removeEventListener('mousedown', handleClickOutside);
|
|
117
|
-
};
|
|
118
|
-
}, [isSubmenuOpen, onCloseParent]);
|
|
119
|
-
const handleLanguageButtonClick = (event) => {
|
|
120
|
-
event.stopPropagation();
|
|
121
|
-
setIsSubmenuOpen(!isSubmenuOpen);
|
|
122
|
-
};
|
|
123
|
-
const handleLanguageSelect = (event, languageCode) => {
|
|
124
|
-
event.stopPropagation();
|
|
125
|
-
if (storeState.view) {
|
|
126
|
-
const { state, dispatch } = storeState.view;
|
|
127
|
-
const tr = state.tr;
|
|
128
|
-
tr.setDocAttribute('primaryLanguageCode', languageCode);
|
|
129
|
-
dispatch(tr);
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
return (React.createElement(DropdownContainer, { ref: submenuRef },
|
|
133
|
-
React.createElement(LanguageSelectorButton, { onClick: handleLanguageButtonClick },
|
|
134
|
-
React.createElement(LanguageHeader, null,
|
|
135
|
-
React.createElement(LanguageLabel, null,
|
|
136
|
-
"Document language ",
|
|
137
|
-
React.createElement(TriangleCollapsedIcon, null)),
|
|
138
|
-
React.createElement(SelectedLanguageText, null, getSelectedLanguageName(selectedLanguage, allLanguages)))),
|
|
139
|
-
isSubmenuOpen && (React.createElement(StyledDropdownList, { direction: "right", width: 231, top: 18, height: 400 }, languageOptions.map((language) => (React.createElement(LanguageOptionItem, { key: language.code, language: language, isSelected: selectedLanguage === language.code, onSelect: handleLanguageSelect })))))));
|
|
140
|
-
};
|
|
141
|
-
export default DocumentLanguageSelector;
|
|
142
|
-
const StyledDropdownList = styled(DropdownList) `
|
|
143
|
-
overflow-y: auto;
|
|
144
|
-
overflow-x: hidden;
|
|
145
|
-
border-radius: 8px;
|
|
146
|
-
|
|
147
|
-
/* Custom scrollbar styling */
|
|
148
|
-
&::-webkit-scrollbar {
|
|
149
|
-
width: 6px;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
&::-webkit-scrollbar-track {
|
|
153
|
-
background: ${(props) => props.theme.colors.background.secondary};
|
|
154
|
-
border-radius: 3px;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
&::-webkit-scrollbar-thumb {
|
|
158
|
-
background: #6e6e6e;
|
|
159
|
-
border-radius: 3px;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
&::-webkit-scrollbar-thumb:hover {
|
|
163
|
-
background: #6e6e6e;
|
|
164
|
-
}
|
|
165
|
-
`;
|
|
166
|
-
const LanguageSelectorButton = styled.div `
|
|
167
|
-
display: flex;
|
|
168
|
-
align-items: center;
|
|
169
|
-
justify-content: space-between;
|
|
170
|
-
font-family: ${(props) => props.theme.font.family.Lato};
|
|
171
|
-
cursor: pointer;
|
|
172
|
-
font-size: 14px;
|
|
173
|
-
line-height: 24px;
|
|
174
|
-
color: ${(props) => props.theme.colors.text.primary};
|
|
175
|
-
padding: 10px 16px;
|
|
176
|
-
width: 100%;
|
|
177
|
-
|
|
178
|
-
&:hover {
|
|
179
|
-
background: ${(props) => props.theme.colors.background.fifth};
|
|
180
|
-
}
|
|
181
|
-
`;
|
|
182
|
-
const LanguageHeader = styled.span `
|
|
183
|
-
display: flex;
|
|
184
|
-
flex-direction: column;
|
|
185
|
-
align-items: flex-start;
|
|
186
|
-
`;
|
|
187
|
-
const LanguageLabel = styled.span `
|
|
188
|
-
display: flex;
|
|
189
|
-
align-items: center;
|
|
190
|
-
font-size: 16px;
|
|
191
|
-
|
|
192
|
-
svg {
|
|
193
|
-
top: 10px;
|
|
194
|
-
right: -10px;
|
|
195
|
-
position: relative;
|
|
196
|
-
}
|
|
197
|
-
`;
|
|
198
|
-
const SelectedLanguageText = styled.span `
|
|
199
|
-
font-size: 12px;
|
|
200
|
-
color: ${(props) => props.theme.colors.text.secondary};
|
|
201
|
-
margin-top: 2px;
|
|
202
|
-
`;
|
|
203
|
-
const LanguageOption = styled.div `
|
|
204
|
-
display: flex;
|
|
205
|
-
align-items: center;
|
|
206
|
-
justify-content: space-between;
|
|
207
|
-
font-family: ${(props) => props.theme.font.family.Lato};
|
|
208
|
-
cursor: pointer;
|
|
209
|
-
font-size: 14px;
|
|
210
|
-
line-height: 24px;
|
|
211
|
-
color: ${(props) => props.theme.colors.text.primary};
|
|
212
|
-
padding: 10px 16px;
|
|
213
|
-
`;
|
|
214
|
-
const TickIconWrapper = styled.div `
|
|
215
|
-
svg path {
|
|
216
|
-
fill: #6e6e6e;
|
|
217
|
-
}
|
|
218
|
-
`;
|
|
219
|
-
//# sourceMappingURL=DocumentLanguageSelector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentLanguageSelector.js","sourceRoot":"","sources":["../../../src/components/DocumentLanguageSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
|
|
3
|
-
*
|
|
4
|
-
* Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
|
|
5
|
-
*
|
|
6
|
-
* The Original Code is manuscripts-frontend.
|
|
7
|
-
*
|
|
8
|
-
* The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
|
|
9
|
-
*
|
|
10
|
-
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2025 Atypon Systems LLC. All Rights Reserved.
|
|
11
|
-
*/
|
|
12
|
-
import React from 'react';
|
|
13
|
-
interface DocumentLanguageSelectorProps {
|
|
14
|
-
onCloseParent?: () => void;
|
|
15
|
-
}
|
|
16
|
-
declare const DocumentLanguageSelector: React.FC<DocumentLanguageSelectorProps>;
|
|
17
|
-
export default DocumentLanguageSelector;
|