tc-ui-toolkit
Version:
React components used to develop tools for the desktop app translationCore
169 lines (143 loc) • 20.6 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Pane = _interopRequireDefault(require("../Pane"));
var _fontUtils = require("../../common/fontUtils");
var _verseHelpers = require("../helpers/verseHelpers");
var _utils = require("../helpers/utils");
// components
// helpers
function Panes(_ref) {
var bibles = _ref.bibles,
contextId = _ref.contextId,
translate = _ref.translate,
removePane = _ref.removePane,
selections = _ref.selections,
showPopover = _ref.showPopover,
getLexiconData = _ref.getLexiconData,
projectManifest = _ref.projectManifest,
complexScriptFonts = _ref.complexScriptFonts,
changePaneFontSize = _ref.changePaneFontSize,
changePaneFontType = _ref.changePaneFontType,
currentPaneSettings = _ref.currentPaneSettings,
addObjectPropertyToManifest = _ref.addObjectPropertyToManifest;
var panes = [];
for (var i = 0, len = currentPaneSettings.length; i < len; i++) {
var paneSettings = currentPaneSettings[i];
var index = i;
try {
var font = paneSettings.font,
bibleId = paneSettings.bibleId,
fontSize = paneSettings.fontSize,
languageId = paneSettings.languageId,
owner = paneSettings.owner,
actualLanguage = paneSettings.actualLanguage,
isPreRelease = paneSettings.isPreRelease;
var bible = (0, _verseHelpers.getBibleElement)(bibles, languageId, bibleId, owner);
var manifest = bible.manifest;
var language_name = manifest.language_name;
var targetLanguageFont = projectManifest.projectFont || '';
var _contextId$reference = contextId.reference,
chapter = _contextId$reference.chapter,
verse = _contextId$reference.verse;
var _getVerseData = (0, _verseHelpers.getVerseData)(bible, chapter, verse, _verseHelpers.createVerseMarker),
verseData = _getVerseData.verseData,
verseLabel = _getVerseData.verseLabel,
verseWordCounts = _getVerseData.verseWordCounts;
var verseElements = [];
if (actualLanguage || languageId === 'targetLanguage' && bibleId === 'targetBible') {
// if target bible/language, pull up actual name
language_name = (0, _utils.getTitleWithId)(manifest.language_name, manifest.language_id);
}
var description = manifest.description;
if (languageId === 'originalLanguage') {
description = 'original_language';
}
var isTargetBible = bibleId === 'targetBible';
var fontClass = '';
var fullTitle = '';
if (isTargetBible) {
fullTitle = "".concat(language_name, " (").concat(translate('pane.target_language'), ")\n(").concat(translate('pane.current_project'), ")");
font = targetLanguageFont;
fontClass = (0, _fontUtils.getFontClassName)(targetLanguageFont);
} else {
var languageId_ = languageId !== 'originalLanguage' ? languageId : translate('pane.original_language');
if (actualLanguage) {
fullTitle = language_name;
} else {
fullTitle = "".concat(language_name, " (").concat(languageId_, ")\n(").concat(manifest.resource_title || '', ")");
}
if (manifest === null || manifest === void 0 ? void 0 : manifest.view_url) {
fullTitle += " (".concat(manifest === null || manifest === void 0 ? void 0 : manifest.view_url, ")");
} else if (owner) {
fullTitle += " (".concat(owner, ")");
}
if (isPreRelease) {
fullTitle = "[".concat(fullTitle, "] - ").concat(isPreRelease);
}
if (font) {
fontClass = (0, _fontUtils.getFontClassName)(font);
}
}
if (typeof verseData === 'string') {
// if the verse content is string.
verseElements = (0, _verseHelpers.verseString)(verseData, selections, translate, {}, isTargetBible, fontClass);
} else if (verseData) {
// else the verse content is an array of verse objects.
verseElements = (0, _verseHelpers.verseArray)(verseData, bibleId, contextId, getLexiconData, showPopover, translate, {}, fontClass, verseWordCounts);
}
panes.push( /*#__PURE__*/_react["default"].createElement(_Pane["default"], {
key: index.toString(),
font: font || '',
index: index,
verse: verseLabel || verse,
chapter: chapter,
bibleId: bibleId,
fontSize: fontSize,
fontClass: fontClass,
translate: translate,
removePane: removePane,
description: description,
languageName: language_name,
isTargetBible: isTargetBible,
verseElements: verseElements,
direction: manifest.direction,
complexScriptFonts: complexScriptFonts,
changePaneFontSize: changePaneFontSize,
changePaneFontType: changePaneFontType,
selectFontLabel: translate('pane.select_font_label'),
addObjectPropertyToManifest: addObjectPropertyToManifest,
removeResourceLabel: translate('pane.remove_resource_label'),
clickToRemoveResourceLabel: translate('pane.remove_resource'),
fullTitle: fullTitle,
preRelease: isPreRelease
}));
} catch (err) {
console.warn(err);
}
}
return panes;
}
Panes.propTypes = {
bibles: _propTypes["default"].object.isRequired,
translate: _propTypes["default"].func.isRequired,
removePane: _propTypes["default"].func.isRequired,
contextId: _propTypes["default"].object.isRequired,
selections: _propTypes["default"].array.isRequired,
showPopover: _propTypes["default"].func.isRequired,
getLexiconData: _propTypes["default"].func.isRequired,
projectManifest: _propTypes["default"].object.isRequired,
changePaneFontType: _propTypes["default"].func.isRequired,
changePaneFontSize: _propTypes["default"].func.isRequired,
complexScriptFonts: _propTypes["default"].object.isRequired,
currentPaneSettings: _propTypes["default"].array.isRequired,
addObjectPropertyToManifest: _propTypes["default"].func.isRequired
};
var _default = Panes;
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9TY3JpcHR1cmVQYW5lL1BhbmVzL2luZGV4LmpzIl0sIm5hbWVzIjpbIlBhbmVzIiwiYmlibGVzIiwiY29udGV4dElkIiwidHJhbnNsYXRlIiwicmVtb3ZlUGFuZSIsInNlbGVjdGlvbnMiLCJzaG93UG9wb3ZlciIsImdldExleGljb25EYXRhIiwicHJvamVjdE1hbmlmZXN0IiwiY29tcGxleFNjcmlwdEZvbnRzIiwiY2hhbmdlUGFuZUZvbnRTaXplIiwiY2hhbmdlUGFuZUZvbnRUeXBlIiwiY3VycmVudFBhbmVTZXR0aW5ncyIsImFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdCIsInBhbmVzIiwiaSIsImxlbiIsImxlbmd0aCIsInBhbmVTZXR0aW5ncyIsImluZGV4IiwiZm9udCIsImJpYmxlSWQiLCJmb250U2l6ZSIsImxhbmd1YWdlSWQiLCJvd25lciIsImFjdHVhbExhbmd1YWdlIiwiaXNQcmVSZWxlYXNlIiwiYmlibGUiLCJtYW5pZmVzdCIsImxhbmd1YWdlX25hbWUiLCJ0YXJnZXRMYW5ndWFnZUZvbnQiLCJwcm9qZWN0Rm9udCIsInJlZmVyZW5jZSIsImNoYXB0ZXIiLCJ2ZXJzZSIsImNyZWF0ZVZlcnNlTWFya2VyIiwidmVyc2VEYXRhIiwidmVyc2VMYWJlbCIsInZlcnNlV29yZENvdW50cyIsInZlcnNlRWxlbWVudHMiLCJsYW5ndWFnZV9pZCIsImRlc2NyaXB0aW9uIiwiaXNUYXJnZXRCaWJsZSIsImZvbnRDbGFzcyIsImZ1bGxUaXRsZSIsImxhbmd1YWdlSWRfIiwicmVzb3VyY2VfdGl0bGUiLCJ2aWV3X3VybCIsInB1c2giLCJ0b1N0cmluZyIsImRpcmVjdGlvbiIsImVyciIsImNvbnNvbGUiLCJ3YXJuIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJhcnJheSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBT0E7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LElBQVYsQ0FBZUQ7QUFiNUIsQ0FBbEI7ZUFnQmV6RCxLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG4vLyBjb21wb25lbnRzXG5pbXBvcnQgUGFuZSBmcm9tICcuLi9QYW5lJztcbi8vIGhlbHBlcnNcbmltcG9ydCB7IGdldEZvbnRDbGFzc05hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZm9udFV0aWxzJztcbmltcG9ydCB7XG4gIGNyZWF0ZVZlcnNlTWFya2VyLFxuICBnZXRCaWJsZUVsZW1lbnQsXG4gIGdldFZlcnNlRGF0YSxcbiAgdmVyc2VTdHJpbmcsXG4gIHZlcnNlQXJyYXksXG59IGZyb20gJy4uL2hlbHBlcnMvdmVyc2VIZWxwZXJzJztcbmltcG9ydCB7IGdldFRpdGxlV2l0aElkIH0gZnJvbSAnLi4vaGVscGVycy91dGlscyc7XG5cbmZ1bmN0aW9uIFBhbmVzKHtcbiAgYmlibGVzLFxuICBjb250ZXh0SWQsXG4gIHRyYW5zbGF0ZSxcbiAgcmVtb3ZlUGFuZSxcbiAgc2VsZWN0aW9ucyxcbiAgc2hvd1BvcG92ZXIsXG4gIGdldExleGljb25EYXRhLFxuICBwcm9qZWN0TWFuaWZlc3QsXG4gIGNvbXBsZXhTY3JpcHRGb250cyxcbiAgY2hhbmdlUGFuZUZvbnRTaXplLFxuICBjaGFuZ2VQYW5lRm9udFR5cGUsXG4gIGN1cnJlbnRQYW5lU2V0dGluZ3MsXG4gIGFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdCxcbn0pIHtcbiAgY29uc3QgcGFuZXMgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMCwgbGVuID0gY3VycmVudFBhbmVTZXR0aW5ncy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IHBhbmVTZXR0aW5ncyA9IGN1cnJlbnRQYW5lU2V0dGluZ3NbaV07XG4gICAgY29uc3QgaW5kZXggPSBpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB7XG4gICAgICAgIGZvbnQsXG4gICAgICAgIGJpYmxlSWQsXG4gICAgICAgIGZvbnRTaXplLFxuICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICBvd25lcixcbiAgICAgICAgYWN0dWFsTGFuZ3VhZ2UsXG4gICAgICAgIGlzUHJlUmVsZWFzZSxcbiAgICAgIH0gPSBwYW5lU2V0dGluZ3M7XG4gICAgICBjb25zdCBiaWJsZSA9IGdldEJpYmxlRWxlbWVudChiaWJsZXMsIGxhbmd1YWdlSWQsIGJpYmxlSWQsIG93bmVyKTtcbiAgICAgIGNvbnN0IHsgbWFuaWZlc3QgfSA9IGJpYmxlO1xuICAgICAgbGV0IGxhbmd1YWdlX25hbWUgPSBtYW5pZmVzdC5sYW5ndWFnZV9uYW1lO1xuICAgICAgY29uc3QgdGFyZ2V0TGFuZ3VhZ2VGb250ID0gcHJvamVjdE1hbmlmZXN0LnByb2plY3RGb250IHx8ICcnO1xuICAgICAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gY29udGV4dElkLnJlZmVyZW5jZTtcbiAgICAgIGxldCB7XG4gICAgICAgIHZlcnNlRGF0YSxcbiAgICAgICAgdmVyc2VMYWJlbCxcbiAgICAgICAgdmVyc2VXb3JkQ291bnRzLFxuICAgICAgfSA9IGdldFZlcnNlRGF0YShiaWJsZSwgY2hhcHRlciwgdmVyc2UsIGNyZWF0ZVZlcnNlTWFya2VyKTtcblxuICAgICAgbGV0IHZlcnNlRWxlbWVudHMgPSBbXTtcblxuICAgICAgaWYgKGFjdHVhbExhbmd1YWdlIHx8ICgobGFuZ3VhZ2VJZCA9PT0gJ3RhcmdldExhbmd1YWdlJykgJiYgKGJpYmxlSWQgPT09ICd0YXJnZXRCaWJsZScpKSkgeyAvLyBpZiB0YXJnZXQgYmlibGUvbGFuZ3VhZ2UsIHB1bGwgdXAgYWN0dWFsIG5hbWVcbiAgICAgICAgbGFuZ3VhZ2VfbmFtZSA9IGdldFRpdGxlV2l0aElkKG1hbmlmZXN0Lmxhbmd1YWdlX25hbWUsIG1hbmlmZXN0Lmxhbmd1YWdlX2lkKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRlc2NyaXB0aW9uID0gbWFuaWZlc3QuZGVzY3JpcHRpb247XG5cbiAgICAgIGlmIChsYW5ndWFnZUlkID09PSAnb3JpZ2luYWxMYW5ndWFnZScpIHtcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnb3JpZ2luYWxfbGFuZ3VhZ2UnO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpc1RhcmdldEJpYmxlID0gYmlibGVJZCA9PT0gJ3RhcmdldEJpYmxlJztcbiAgICAgIGxldCBmb250Q2xhc3MgPSAnJztcbiAgICAgIGxldCBmdWxsVGl0bGUgPSAnJztcblxuICAgICAgaWYgKGlzVGFyZ2V0QmlibGUpIHtcbiAgICAgICAgZnVsbFRpdGxlID0gYCR7bGFuZ3VhZ2VfbmFtZX0gKCR7dHJhbnNsYXRlKCdwYW5lLnRhcmdldF9sYW5ndWFnZScpfSlcXG4oJHt0cmFuc2xhdGUoJ3BhbmUuY3VycmVudF9wcm9qZWN0Jyl9KWA7XG4gICAgICAgIGZvbnQgPSB0YXJnZXRMYW5ndWFnZUZvbnQ7XG4gICAgICAgIGZvbnRDbGFzcyA9IGdldEZvbnRDbGFzc05hbWUodGFyZ2V0TGFuZ3VhZ2VGb250KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBsYW5ndWFnZUlkXyA9IChsYW5ndWFnZUlkICE9PSAnb3JpZ2luYWxMYW5ndWFnZScpID8gbGFuZ3VhZ2VJZCA6IHRyYW5zbGF0ZSgncGFuZS5vcmlnaW5hbF9sYW5ndWFnZScpO1xuXG4gICAgICAgIGlmIChhY3R1YWxMYW5ndWFnZSkge1xuICAgICAgICAgIGZ1bGxUaXRsZSA9IGxhbmd1YWdlX25hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZnVsbFRpdGxlID0gYCR7bGFuZ3VhZ2VfbmFtZX0gKCR7bGFuZ3VhZ2VJZF99KVxcbigke21hbmlmZXN0LnJlc291cmNlX3RpdGxlIHx8ICcnfSlgO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hbmlmZXN0Py52aWV3X3VybCkge1xuICAgICAgICAgIGZ1bGxUaXRsZSArPSBgICgke21hbmlmZXN0Py52aWV3X3VybH0pYDtcbiAgICAgICAgfSBlbHNlIGlmIChvd25lcikge1xuICAgICAgICAgIGZ1bGxUaXRsZSArPSBgICgke293bmVyfSlgO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzUHJlUmVsZWFzZSkge1xuICAgICAgICAgIGZ1bGxUaXRsZSA9IGBbJHtmdWxsVGl0bGV9XSAtICR7aXNQcmVSZWxlYXNlfWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9udCkge1xuICAgICAgICAgIGZvbnRDbGFzcyA9IGdldEZvbnRDbGFzc05hbWUoZm9udCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB2ZXJzZURhdGEgPT09ICdzdHJpbmcnKSB7IC8vIGlmIHRoZSB2ZXJzZSBjb250ZW50IGlzIHN0cmluZy5cbiAgICAgICAgdmVyc2VFbGVtZW50cyA9IHZlcnNlU3RyaW5nKHZlcnNlRGF0YSwgc2VsZWN0aW9ucywgdHJhbnNsYXRlLCB7fSwgaXNUYXJnZXRCaWJsZSwgZm9udENsYXNzKTtcbiAgICAgIH0gZWxzZSBpZiAodmVyc2VEYXRhKSB7IC8vIGVsc2UgdGhlIHZlcnNlIGNvbnRlbnQgaXMgYW4gYXJyYXkgb2YgdmVyc2Ugb2JqZWN0cy5cbiAgICAgICAgdmVyc2VFbGVtZW50cyA9IHZlcnNlQXJyYXkodmVyc2VEYXRhLCBiaWJsZUlkLCBjb250ZXh0SWQsIGdldExleGljb25EYXRhLCBzaG93UG9wb3ZlciwgdHJhbnNsYXRlLCB7fSwgZm9udENsYXNzLCB2ZXJzZVdvcmRDb3VudHMpO1xuICAgICAgfVxuXG4gICAgICBwYW5lcy5wdXNoKFxuICAgICAgICA8UGFuZVxuICAgICAgICAgIGtleT17aW5kZXgudG9TdHJpbmcoKX1cbiAgICAgICAgICBmb250PXtmb250IHx8ICcnfVxuICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICB2ZXJzZT17dmVyc2VMYWJlbCB8fCB2ZXJzZX1cbiAgICAgICAgICBjaGFwdGVyPXtjaGFwdGVyfVxuICAgICAgICAgIGJpYmxlSWQ9e2JpYmxlSWR9XG4gICAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICAgIGZvbnRDbGFzcz17Zm9udENsYXNzfVxuICAgICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICAgIHJlbW92ZVBhbmU9e3JlbW92ZVBhbmV9XG4gICAgICAgICAgZGVzY3JpcHRpb249e2Rlc2NyaXB0aW9ufVxuICAgICAgICAgIGxhbmd1YWdlTmFtZT17bGFuZ3VhZ2VfbmFtZX1cbiAgICAgICAgICBpc1RhcmdldEJpYmxlPXtpc1RhcmdldEJpYmxlfVxuICAgICAgICAgIHZlcnNlRWxlbWVudHM9e3ZlcnNlRWxlbWVudHN9XG4gICAgICAgICAgZGlyZWN0aW9uPXttYW5pZmVzdC5kaXJlY3Rpb259XG4gICAgICAgICAgY29tcGxleFNjcmlwdEZvbnRzPXtjb21wbGV4U2NyaXB0Rm9udHN9XG4gICAgICAgICAgY2hhbmdlUGFuZUZvbnRTaXplPXtjaGFuZ2VQYW5lRm9udFNpemV9XG4gICAgICAgICAgY2hhbmdlUGFuZUZvbnRUeXBlPXtjaGFuZ2VQYW5lRm9udFR5cGV9XG4gICAgICAgICAgc2VsZWN0Rm9udExhYmVsPXt0cmFuc2xhdGUoJ3BhbmUuc2VsZWN0X2ZvbnRfbGFiZWwnKX1cbiAgICAgICAgICBhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3Q9e2FkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdH1cbiAgICAgICAgICByZW1vdmVSZXNvdXJjZUxhYmVsPXt0cmFuc2xhdGUoJ3BhbmUucmVtb3ZlX3Jlc291cmNlX2xhYmVsJyl9XG4gICAgICAgICAgY2xpY2tUb1JlbW92ZVJlc291cmNlTGFiZWw9e3RyYW5zbGF0ZSgncGFuZS5yZW1vdmVfcmVzb3VyY2UnKX1cbiAgICAgICAgICBmdWxsVGl0bGU9e2Z1bGxUaXRsZX1cbiAgICAgICAgICBwcmVSZWxlYXNlPXtpc1ByZVJlbGVhc2V9XG4gICAgICAgIC8+LFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUud2FybihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYW5lcztcbn1cblxuUGFuZXMucHJvcFR5cGVzID0ge1xuICBiaWJsZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdHJhbnNsYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICByZW1vdmVQYW5lOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBjb250ZXh0SWQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc2VsZWN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIHNob3dQb3BvdmVyOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgcHJvamVjdE1hbmlmZXN0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNoYW5nZVBhbmVGb250VHlwZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hhbmdlUGFuZUZvbnRTaXplOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBjb21wbGV4U2NyaXB0Rm9udHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY3VycmVudFBhbmVTZXR0aW5nczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmVzO1xuIl19