@cu-mkp/editioncrafter 1.0.3 → 1.0.4-beta.1

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.
Files changed (57) hide show
  1. package/README.md +7 -7
  2. package/dist/editioncrafter.js +65802 -0
  3. package/dist/editioncrafter.umd.cjs +553 -0
  4. package/dist/es/src/action/DiplomaticActions.js +9 -11
  5. package/dist/es/src/action/DocumentActions.js +164 -154
  6. package/dist/es/src/action/GlossaryActions.js +9 -11
  7. package/dist/es/src/action/initialState/diplomaticInitialState.js +2 -2
  8. package/dist/es/src/action/initialState/documentInitialState.js +9 -12
  9. package/dist/es/src/action/initialState/glossaryInitialState.js +3 -3
  10. package/dist/es/src/action/rootReducer.js +31 -29
  11. package/dist/es/src/component/AlphabetLinks.js +44 -66
  12. package/dist/es/src/component/CustomizedTooltops.js +101 -110
  13. package/dist/es/src/component/DiploMatic.js +64 -91
  14. package/dist/es/src/component/DocumentView.js +442 -366
  15. package/dist/es/src/component/EditorComment.js +51 -75
  16. package/dist/es/src/component/ErrorBoundary.js +37 -61
  17. package/dist/es/src/component/FigureImage.js +56 -67
  18. package/dist/es/src/component/GlossaryView.js +157 -149
  19. package/dist/es/src/component/HelpPopper.js +96 -78
  20. package/dist/es/src/component/ImageGridView.js +184 -249
  21. package/dist/es/src/component/ImageView.js +155 -165
  22. package/dist/es/src/component/ImageZoomControl.js +19 -38
  23. package/dist/es/src/component/JumpToFolio.js +56 -60
  24. package/dist/es/src/component/Navigation.js +374 -328
  25. package/dist/es/src/component/Pagination.js +73 -70
  26. package/dist/es/src/component/Parser.js +11 -32
  27. package/dist/es/src/component/RingSpinner.js +31 -32
  28. package/dist/es/src/component/RouteListener.js +30 -21
  29. package/dist/es/src/component/SeaDragonComponent.js +33 -56
  30. package/dist/es/src/component/SinglePaneView.js +15 -33
  31. package/dist/es/src/component/SplitPaneView.js +151 -170
  32. package/dist/es/src/component/TranscriptionView.js +190 -179
  33. package/dist/es/src/component/Watermark.js +21 -30
  34. package/dist/es/src/component/XMLView.js +60 -82
  35. package/dist/es/src/hooks/useIsWidthUp.js +9 -7
  36. package/dist/es/src/icons/ByIcon.js +16 -16
  37. package/dist/es/src/icons/CcIcon.js +16 -16
  38. package/dist/es/src/icons/NcIcon.js +16 -16
  39. package/dist/es/src/icons/SaIcon.js +16 -16
  40. package/dist/es/src/icons/SideMenuIconLeft.js +30 -38
  41. package/dist/es/src/icons/SideMenuIconRight.js +32 -38
  42. package/dist/es/src/index.js +21 -20
  43. package/dist/es/src/lib/copyObject.js +3 -2
  44. package/dist/es/src/lib/registerServiceWorker.js +77 -54
  45. package/dist/es/src/model/DocumentHelper.js +7 -6
  46. package/dist/es/src/model/Folio.js +68 -146
  47. package/dist/es/src/model/ReduxStore.js +32 -78
  48. package/dist/es/src/model/folioLayout.js +275 -280
  49. package/dist/es/src/saga/RouteListenerSaga.js +89 -203
  50. package/dist/es/src/saga/rootSaga.js +9 -16
  51. package/dist/es/src/scss/_imageView.scss +1 -1
  52. package/dist/es/src/scss/_navigation.scss +1 -1
  53. package/dist/es/src/scss/editioncrafter.scss +1 -1
  54. package/dist/style.css +1 -0
  55. package/package.json +36 -50
  56. package/dist/editioncrafter.min.js +0 -2
  57. package/dist/editioncrafter.min.js.LICENSE.txt +0 -144
@@ -1,466 +1,542 @@
1
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
5
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
7
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
9
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
10
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
11
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
- import React, { useEffect, useState } from 'react';
13
- import { connect } from 'react-redux';
14
- import withWidth, { isWidthUp } from '@material-ui/core/withWidth';
15
- import { useLocation, useNavigate, useParams } from 'react-router-dom';
16
- import SplitPaneView from './SplitPaneView';
17
- import { dispatchAction } from '../model/ReduxStore';
18
- import ImageView from './ImageView';
19
- import ImageGridView from './ImageGridView';
20
- import TranscriptionView from './TranscriptionView';
21
- import XMLView from './XMLView';
22
- import GlossaryView from './GlossaryView';
23
- import SinglePaneView from './SinglePaneView';
24
- var paneDefaults = {
1
+ import withWidth, { isWidthUp } from '@material-ui/core/withWidth'
2
+ import React, { useEffect, useState } from 'react'
3
+ import { connect } from 'react-redux'
4
+ import {
5
+ useLocation,
6
+ useNavigate,
7
+ useParams,
8
+ } from 'react-router-dom'
9
+ import { dispatchAction } from '../model/ReduxStore'
10
+ import GlossaryView from './GlossaryView'
11
+ import ImageGridView from './ImageGridView'
12
+ import ImageView from './ImageView'
13
+ import SinglePaneView from './SinglePaneView'
14
+ import SplitPaneView from './SplitPaneView'
15
+ import TranscriptionView from './TranscriptionView'
16
+ import XMLView from './XMLView'
17
+
18
+ const paneDefaults = {
25
19
  isXMLMode: false,
26
- width: 0
27
- };
28
- var DocumentView = function DocumentView(props) {
29
- var _useState = useState(!props.document.variorum),
30
- _useState2 = _slicedToArray(_useState, 2),
31
- linkedMode = _useState2[0],
32
- setLinkedMode = _useState2[1];
33
- var _useState3 = useState(false),
34
- _useState4 = _slicedToArray(_useState3, 2),
35
- bookMode = _useState4[0],
36
- setBookMode = _useState4[1];
37
- var _useState5 = useState(paneDefaults),
38
- _useState6 = _slicedToArray(_useState5, 2),
39
- left = _useState6[0],
40
- setLeft = _useState6[1];
41
- var _useState7 = useState(paneDefaults),
42
- _useState8 = _slicedToArray(_useState7, 2),
43
- right = _useState8[0],
44
- setRight = _useState8[1];
45
- var _useState9 = useState(paneDefaults),
46
- _useState10 = _slicedToArray(_useState9, 2),
47
- third = _useState10[0],
48
- setThird = _useState10[1];
49
- var _useState11 = useState(props.containerWidth < 960),
50
- _useState12 = _slicedToArray(_useState11, 2),
51
- singlePaneMode = _useState12[0],
52
- setSinglePaneMode = _useState12[1];
53
- var params = useParams();
54
- var navigate = useNavigate();
55
- var location = useLocation();
56
-
57
- //"reload" the page if the config props change
58
- useEffect(function () {
59
- dispatchAction(props, 'RouteListenerSaga.userNavigatation', location);
60
- }, [props.config]);
61
- useEffect(function () {
62
- setSinglePaneMode(props.containerWidth < 960);
63
- }, [props.containerWidth]);
20
+ width: 0,
21
+ }
22
+
23
+ function DocumentView(props) {
24
+ const [linkedMode, setLinkedMode] = useState(!props.document.variorum)
25
+ const [bookMode, setBookMode] = useState(false)
26
+ const [left, setLeft] = useState(paneDefaults)
27
+ const [right, setRight] = useState(paneDefaults)
28
+ const [third, setThird] = useState(paneDefaults)
29
+ const [singlePaneMode, setSinglePaneMode] = useState(props.containerWidth < 960)
30
+
31
+ const params = useParams()
32
+ const navigate = useNavigate()
33
+ const location = useLocation()
34
+
35
+ // "reload" the page if the config props change
36
+ useEffect(() => {
37
+ dispatchAction(props, 'RouteListenerSaga.userNavigatation', location)
38
+ }, [props.config])
39
+
40
+ useEffect(() => {
41
+ setSinglePaneMode(props.containerWidth < 960)
42
+ }, [props.containerWidth])
64
43
 
65
44
  // Navigate while keeping existing search params
66
- var navigateWithParams = function navigateWithParams(pathname) {
67
- navigate(pathname + location.search);
68
- };
69
- var getViewports = function getViewports() {
70
- var folioID = params.folioID,
71
- transcriptionType = params.transcriptionType,
72
- folioID2 = params.folioID2,
73
- transcriptionType2 = params.transcriptionType2,
74
- folioID3 = params.folioID3,
75
- transcriptionType3 = params.transcriptionType3;
76
- var document = props.document;
77
- var firstTranscriptionType = document.variorum ? Object.keys(document.transcriptionTypes[Object.keys(document.transcriptionTypes)[0]])[0] : Object.keys(document.transcriptionTypes)[0];
45
+ const navigateWithParams = (pathname) => {
46
+ navigate(pathname + location.search)
47
+ }
48
+
49
+ const getViewports = () => {
50
+ const {
51
+ folioID,
52
+ transcriptionType,
53
+ folioID2,
54
+ transcriptionType2,
55
+ folioID3,
56
+ transcriptionType3,
57
+ } = params
58
+ const { document } = props
59
+ const firstTranscriptionType = document.variorum ? Object.keys(document.transcriptionTypes[Object.keys(document.transcriptionTypes)[0]])[0] : Object.keys(document.transcriptionTypes)[0]
78
60
  if (!folioID) {
79
61
  // route /folios
80
62
  return {
81
63
  left: {
82
64
  folioID: '-1',
83
- transcriptionType: 'g'
65
+ transcriptionType: 'g',
84
66
  },
85
67
  right: {
86
68
  folioID: '-1',
87
- transcriptionType: document.variorum ? 'g' : firstTranscriptionType
69
+ transcriptionType: document.variorum ? 'g' : firstTranscriptionType,
88
70
  },
89
71
  third: {
90
72
  folioID: '-1',
91
- transcriptionType: 'g'
92
- }
93
- };
94
- }
95
- var leftFolioValid = Object.keys(document.folioIndex).includes(folioID);
96
- var leftFolioID = leftFolioValid ? folioID : '-1';
97
- var leftTranscriptionType;
98
- var rightFolioID;
99
- var rightTranscriptionType;
100
- var thirdFolioID;
101
- var thirdTranscriptionType;
73
+ transcriptionType: 'g',
74
+ },
75
+ }
76
+ }
77
+ const leftFolioValid = Object.keys(document.folioIndex).includes(folioID)
78
+ const leftFolioID = leftFolioValid ? folioID : '-1'
79
+ let leftTranscriptionType; let rightFolioID; let
80
+ rightTranscriptionType; let thirdFolioID; let thirdTranscriptionType
102
81
  if (folioID2) {
103
82
  // route /ec/:folioID/:transcriptionType/:folioID2/:transcriptionType2
104
- var rightFolioValid = Object.keys(document.folioIndex).includes(folioID2);
105
- leftTranscriptionType = leftFolioValid ? transcriptionType : 'g';
106
- rightFolioID = rightFolioValid ? folioID2 : '-1';
107
- rightTranscriptionType = rightFolioValid ? transcriptionType2 ? transcriptionType2 : firstTranscriptionType : 'g';
83
+ const rightFolioValid = Object.keys(document.folioIndex).includes(folioID2)
84
+ leftTranscriptionType = leftFolioValid ? transcriptionType : 'g'
85
+ rightFolioID = rightFolioValid ? folioID2 : '-1'
86
+ rightTranscriptionType = rightFolioValid ? transcriptionType2 || firstTranscriptionType : 'g'
108
87
  if (folioID3) {
109
88
  // route /ec/:folioID/:transcriptionType/:folioID2/:transcriptionType2/:folioID3/:transcriptionType3
110
- var thirdFolioValid = Object.keys(document.folioIndex).includes(folioID3);
111
- thirdFolioID = thirdFolioValid ? folioID3 : '-1';
112
- thirdTranscriptionType = thirdFolioValid ? transcriptionType3 ? transcriptionType3 : firstTranscriptionType : 'g';
113
- } else {
114
- thirdFolioID = '-1';
115
- thirdTranscriptionType = 'g';
89
+ const thirdFolioValid = Object.keys(document.folioIndex).includes(folioID3)
90
+ thirdFolioID = thirdFolioValid ? folioID3 : '-1'
91
+ thirdTranscriptionType = thirdFolioValid ? transcriptionType3 || firstTranscriptionType : 'g'
92
+ }
93
+ else {
94
+ thirdFolioID = '-1'
95
+ thirdTranscriptionType = 'g'
116
96
  }
117
- } else {
97
+ }
98
+ else {
118
99
  // route /ec/:folioID
119
100
  // route /ec/:folioID/:transcriptionType
120
- leftTranscriptionType = 'f';
121
- rightFolioID = leftFolioValid ? folioID : '-1';
122
- rightTranscriptionType = leftFolioValid ? transcriptionType ? transcriptionType : firstTranscriptionType : 'g';
123
- thirdFolioID = '-1';
124
- thirdTranscriptionType = 'g';
101
+ leftTranscriptionType = 'f'
102
+ rightFolioID = leftFolioValid ? folioID : '-1'
103
+ rightTranscriptionType = leftFolioValid ? transcriptionType || firstTranscriptionType : 'g'
104
+ thirdFolioID = '-1'
105
+ thirdTranscriptionType = 'g'
125
106
  }
107
+
126
108
  return {
127
109
  left: {
128
110
  folioID: leftFolioID,
129
- transcriptionType: leftTranscriptionType
111
+ transcriptionType: leftTranscriptionType,
130
112
  },
131
113
  right: {
132
114
  folioID: rightFolioID,
133
- transcriptionType: rightTranscriptionType
115
+ transcriptionType: rightTranscriptionType,
134
116
  },
135
117
  third: {
136
118
  folioID: thirdFolioID,
137
- transcriptionType: thirdTranscriptionType
138
- }
139
- };
140
- };
141
- useEffect(function () {
142
- dispatchAction(props, 'DiplomaticActions.setFixedFrameMode', true);
143
- // eslint-disable-next-line react-hooks/exhaustive-deps
144
- }, []);
145
- var setXMLMode = function setXMLMode(side, xmlMode) {
119
+ transcriptionType: thirdTranscriptionType,
120
+ },
121
+ }
122
+ }
123
+
124
+ useEffect(() => {
125
+ dispatchAction(props, 'DiplomaticActions.setFixedFrameMode', true)
126
+ // eslint-disable-next-line react-hooks/exhaustive-deps
127
+ }, [])
128
+
129
+ const setXMLMode = (side, xmlMode) => {
146
130
  if (side === 'left') {
147
- setLeft(_objectSpread(_objectSpread({}, left), {}, {
148
- isXMLMode: xmlMode
149
- }));
150
- } else if (side === 'right') {
151
- setRight(_objectSpread(_objectSpread({}, right), {}, {
152
- isXMLMode: xmlMode
153
- }));
154
- } else {
155
- setThird(_objectSpread(_objectSpread({}, third), {}, {
156
- isXMLMode: xmlMode
157
- }));
158
- }
159
- };
160
- var handleSetBookMode = function handleSetBookMode(shortid, bool) {
161
- setBookMode(bool);
131
+ setLeft({ ...left, isXMLMode: xmlMode })
132
+ }
133
+ else if (side === 'right') {
134
+ setRight({ ...right, isXMLMode: xmlMode })
135
+ }
136
+ else {
137
+ setThird({ ...third, isXMLMode: xmlMode })
138
+ }
139
+ }
140
+
141
+ const handleSetBookMode = (shortid, bool) => {
142
+ setBookMode(bool)
143
+
162
144
  if (bool) {
163
- var _findBookFolios = findBookFolios(shortid),
164
- _findBookFolios2 = _slicedToArray(_findBookFolios, 2),
165
- versoID = _findBookFolios2[0],
166
- rectoID = _findBookFolios2[1];
167
- navigateFolios(versoID, 'f', rectoID, 'f');
168
- }
169
- };
170
- var jumpToFolio = function jumpToFolio(folioName, side) {
171
- var document = props.document;
145
+ const [versoID, rectoID] = findBookFolios(shortid)
146
+ navigateFolios(versoID, 'f', rectoID, 'f')
147
+ }
148
+ }
149
+
150
+ const jumpToFolio = (folioName, side) => {
151
+ const { document } = props
172
152
  // Convert folioName to ID (and confirm it exists)
173
153
  if (document.folioByName[folioName]) {
174
- var _document$folioByName;
175
- var folioID = (_document$folioByName = document.folioByName[folioName]) === null || _document$folioByName === void 0 ? void 0 : _document$folioByName.id;
176
- changeCurrentFolio(folioID, side, getViewports()[side].transcriptionType);
177
- }
178
- };
179
- var findBookFolios = function findBookFolios(folioID) {
180
- var document = props.document;
181
- var versoFolio = document.folioIndex[folioID];
182
- var name = versoFolio.name,
183
- pageNumber = versoFolio.pageNumber;
184
- var documentFolios = document.variorum ? document.folios.filter(function (f) {
185
- return f.doc_id === versoFolio.doc_id;
186
- }) : document.folios;
154
+ const folioID = document.folioByName[folioName]?.id
155
+ changeCurrentFolio(folioID, side, getViewports()[side].transcriptionType)
156
+ }
157
+ }
158
+
159
+ const findBookFolios = (folioID) => {
160
+ const { document } = props
161
+ const versoFolio = document.folioIndex[folioID]
162
+ const { name, pageNumber } = versoFolio
163
+
164
+ const documentFolios = document.variorum ? document.folios.filter(f => f.doc_id === versoFolio.doc_id) : document.folios
165
+
187
166
  if (!name.endsWith('v') && name.endsWith('r')) {
188
- return [documentFolios[pageNumber - 1].id, documentFolios[pageNumber].id];
189
- }
190
- return [documentFolios[pageNumber].id, documentFolios[pageNumber + 1].id];
191
- };
192
- var onWidth = function onWidth(leftWidth, rightWidth, thirdWidth) {
193
- setLeft(_objectSpread(_objectSpread({}, left), {}, {
194
- width: leftWidth
195
- }));
196
- setRight(_objectSpread(_objectSpread({}, right), {}, {
197
- width: rightWidth
198
- }));
199
- setThird(_objectSpread(_objectSpread({}, third), {}, {
200
- width: thirdWidth
201
- }));
202
- };
203
- var changeTranscriptionType = function changeTranscriptionType(side, transcriptionType) {
204
- var currentViewports = getViewports();
167
+ return [documentFolios[pageNumber - 1].id, documentFolios[pageNumber].id]
168
+ }
169
+
170
+ if (documentFolios[pageNumber + 1]) {
171
+ return [documentFolios[pageNumber].id, documentFolios[pageNumber + 1].id]
172
+ }
173
+
174
+ return [documentFolios[pageNumber].id, null]
175
+ }
176
+
177
+ const onWidth = (leftWidth, rightWidth, thirdWidth) => {
178
+ setLeft({ ...left, width: leftWidth })
179
+ setRight({ ...right, width: rightWidth })
180
+ setThird({ ...third, width: thirdWidth })
181
+ }
182
+
183
+ const changeTranscriptionType = (side, transcriptionType) => {
184
+ const currentViewports = getViewports()
205
185
  if (side === 'left') {
206
- var folioID = currentViewports.left.folioID;
207
- var otherSide = currentViewports.right;
208
- navigateFolios(folioID, transcriptionType, otherSide.folioID, otherSide.transcriptionType, currentViewports.third.folioID, currentViewports.third.transcriptionType);
209
- } else if (side === 'right') {
210
- var _folioID = currentViewports.right.folioID;
211
- var _otherSide = currentViewports.left;
212
- navigateFolios(_otherSide.folioID, _otherSide.transcriptionType, _folioID, transcriptionType, currentViewports.third.folioID, currentViewports.third.transcriptionType);
213
- } else {
214
- var _folioID2 = currentViewports.third.folioID;
215
- navigateFolios(currentViewports.left.folioID, currentViewports.left.transcriptionType, currentViewports.right.folioID, currentViewports.right.transcriptionType, _folioID2, transcriptionType);
216
- }
217
- };
218
- var navigateFolios = function navigateFolios(folioID, transcriptionType, folioID2, transcriptionType2, folioID3, transcriptionType3) {
186
+ const { folioID } = currentViewports.left
187
+ const otherSide = currentViewports.right
188
+ navigateFolios(
189
+ folioID,
190
+ transcriptionType,
191
+ otherSide.folioID,
192
+ otherSide.transcriptionType,
193
+ currentViewports.third.folioID,
194
+ currentViewports.third.transcriptionType,
195
+ )
196
+ }
197
+ else if (side === 'right') {
198
+ const { folioID } = currentViewports.right
199
+ const otherSide = currentViewports.left
200
+ navigateFolios(
201
+ otherSide.folioID,
202
+ otherSide.transcriptionType,
203
+ folioID,
204
+ transcriptionType,
205
+ currentViewports.third.folioID,
206
+ currentViewports.third.transcriptionType,
207
+ )
208
+ }
209
+ else {
210
+ const { folioID } = currentViewports.third
211
+ navigateFolios(
212
+ currentViewports.left.folioID,
213
+ currentViewports.left.transcriptionType,
214
+ currentViewports.right.folioID,
215
+ currentViewports.right.transcriptionType,
216
+ folioID,
217
+ transcriptionType,
218
+ )
219
+ }
220
+ }
221
+
222
+ const navigateFolios = (folioID, transcriptionType, folioID2, transcriptionType2, folioID3, transcriptionType3) => {
219
223
  if (!folioID) {
220
224
  // goto grid view
221
- navigateWithParams('/ec');
222
- return;
225
+ navigateWithParams('/ec')
226
+ return
223
227
  }
224
228
  if (!transcriptionType) {
225
229
  // goto folioID, tc
226
- navigateWithParams("/ec/".concat(folioID));
227
- return;
230
+ navigateWithParams(`/ec/${folioID}`)
231
+ return
228
232
  }
229
233
  if (!folioID2) {
230
234
  // goto folioID, transcriptionType
231
- navigateWithParams("/ec/".concat(folioID, "/").concat(transcriptionType));
232
- return;
235
+ navigateWithParams(`/ec/${folioID}/${transcriptionType}`)
236
+ return
233
237
  }
234
238
  if (!transcriptionType2) {
235
239
  // goto folioID, transcriptionType, folioID2, tc
236
- navigateWithParams("/ec/".concat(folioID, "/").concat(transcriptionType, "/").concat(folioID2, "/tc"));
237
- return;
240
+ navigateWithParams(`/ec/${folioID}/${transcriptionType}/${folioID2}/tc`)
241
+ return
238
242
  }
239
243
  if (!folioID3) {
240
244
  // goto folioID, transcriptionType, folioID2, transcriptionType2
241
- navigateWithParams("/ec/".concat(folioID, "/").concat(transcriptionType, "/").concat(folioID2, "/").concat(transcriptionType2));
242
- return;
245
+ navigateWithParams(`/ec/${folioID}/${transcriptionType}/${folioID2}/${transcriptionType2}`)
246
+ return
243
247
  }
244
248
  if (!transcriptionType3) {
245
249
  // goto folioID, transcriptionType, folioID2, transcriptionType2, folioID3, tc
246
- navigateWithParams("/ec/".concat(folioID, "/").concat(transcriptionType, "/").concat(folioID2, "/").concat(transcriptionType2, "/").concat(folioID3, "/f"));
247
- return;
250
+ navigateWithParams(`/ec/${folioID}/${transcriptionType}/${folioID2}/${transcriptionType2}/${folioID3}/f`)
251
+ return
248
252
  }
249
253
  // goto folioID, transcrptionType, folioID2, transcriptionType2, folioID3, transcriptionType3
250
- navigateWithParams("/ec/".concat(folioID, "/").concat(transcriptionType, "/").concat(folioID2, "/").concat(transcriptionType2, "/").concat(folioID3, "/").concat(transcriptionType3));
251
- };
252
- var changeCurrentFolio = function changeCurrentFolio(folioID, side, transcriptionType) {
254
+ navigateWithParams(`/ec/${folioID}/${transcriptionType}/${folioID2}/${transcriptionType2}/${folioID3}/${transcriptionType3}`)
255
+ }
256
+
257
+ const changeCurrentFolio = (folioID, side, transcriptionType) => {
253
258
  // Lookup prev/next
254
- var currentViewports = getViewports();
259
+ const currentViewports = getViewports()
260
+
255
261
  if (bookMode) {
256
- var _findBookFolios3 = findBookFolios(folioID),
257
- _findBookFolios4 = _slicedToArray(_findBookFolios3, 2),
258
- versoID = _findBookFolios4[0],
259
- rectoID = _findBookFolios4[1];
262
+ const [versoID, rectoID] = findBookFolios(folioID)
260
263
  if (versoID) {
261
- navigateFolios(versoID, 'f', rectoID, 'f');
264
+ navigateFolios(versoID, 'f', rectoID, 'f')
262
265
  }
263
- } else if (linkedMode) {
266
+ }
267
+ else if (linkedMode) {
264
268
  if (side === 'left') {
265
- var otherSide = currentViewports.right;
266
- navigateFolios(folioID, transcriptionType, folioID, otherSide.transcriptionType);
267
- } else if (side === 'right') {
268
- var _otherSide2 = currentViewports.left;
269
- navigateFolios(folioID, _otherSide2.transcriptionType, folioID, transcriptionType);
270
- } else {
271
- navigateFolios(currentViewports.left.folioID, currentViewports.left.transcriptionType, currentViewports.right.folioID, currentViewports.right.transcriptionType, folioID, transcriptionType);
269
+ const otherSide = currentViewports.right
270
+ navigateFolios(
271
+ folioID,
272
+ transcriptionType,
273
+ folioID,
274
+ otherSide.transcriptionType,
275
+ )
276
+ }
277
+ else if (side === 'right') {
278
+ const otherSide = currentViewports.left
279
+ navigateFolios(
280
+ folioID,
281
+ otherSide.transcriptionType,
282
+ folioID,
283
+ transcriptionType,
284
+ )
285
+ }
286
+ else {
287
+ navigateFolios(
288
+ currentViewports.left.folioID,
289
+ currentViewports.left.transcriptionType,
290
+ currentViewports.right.folioID,
291
+ currentViewports.right.transcriptionType,
292
+ folioID,
293
+ transcriptionType,
294
+ )
272
295
  }
273
- } else if (side === 'left') {
274
- var _otherSide3 = currentViewports.right;
275
- var thirdPane = currentViewports.third;
276
- navigateFolios(folioID, transcriptionType, _otherSide3.folioID, _otherSide3.transcriptionType, thirdPane.folioID, thirdPane.transcriptionType);
277
- } else if (side === 'right') {
278
- var _otherSide4 = currentViewports.left;
279
- var _thirdPane = currentViewports.third;
280
- navigateFolios(_otherSide4.folioID, _otherSide4.transcriptionType, folioID, transcriptionType, _thirdPane.folioID, _thirdPane.transcriptionType);
281
- } else {
282
- navigateFolios(currentViewports.left.folioID, currentViewports.left.transcriptionType, currentViewports.right.folioID, currentViewports.right.transcriptionType, folioID, transcriptionType);
283
- }
284
- };
285
- var determineViewType = function determineViewType(side) {
286
- var transcriptionType = getViewports()[side].transcriptionType;
287
- var xmlMode = side === 'left' ? left.isXMLMode : side === 'right' ? right.isXMLMode : third.isXMLMode;
296
+ }
297
+ else if (side === 'left') {
298
+ const otherSide = currentViewports.right
299
+ const thirdPane = currentViewports.third
300
+ navigateFolios(
301
+ folioID,
302
+ transcriptionType,
303
+ otherSide.folioID,
304
+ otherSide.transcriptionType,
305
+ thirdPane.folioID,
306
+ thirdPane.transcriptionType,
307
+ )
308
+ }
309
+ else if (side === 'right') {
310
+ const otherSide = currentViewports.left
311
+ const thirdPane = currentViewports.third
312
+ navigateFolios(
313
+ otherSide.folioID,
314
+ otherSide.transcriptionType,
315
+ folioID,
316
+ transcriptionType,
317
+ thirdPane.folioID,
318
+ thirdPane.transcriptionType,
319
+ )
320
+ }
321
+ else {
322
+ navigateFolios(
323
+ currentViewports.left.folioID,
324
+ currentViewports.left.transcriptionType,
325
+ currentViewports.right.folioID,
326
+ currentViewports.right.transcriptionType,
327
+ folioID,
328
+ transcriptionType,
329
+ )
330
+ }
331
+ }
332
+
333
+ const determineViewType = (side) => {
334
+ const { transcriptionType } = getViewports()[side]
335
+ const xmlMode = side === 'left'
336
+ ? left.isXMLMode
337
+ : side === 'right' ? right.isXMLMode : third.isXMLMode
338
+
288
339
  if (transcriptionType === 'g') {
289
- return 'ImageGridView';
340
+ return 'ImageGridView'
290
341
  }
291
342
  if (transcriptionType === 'f') {
292
- return 'ImageView';
343
+ return 'ImageView'
293
344
  }
294
345
  if (transcriptionType === 'glossary') {
295
- return 'GlossaryView';
346
+ return 'GlossaryView'
296
347
  }
297
- return xmlMode ? 'XMLView' : 'TranscriptionView';
298
- };
299
- var viewportState = function viewportState(side) {
300
- var doc = props.document;
301
- var viewport = getViewports()[side];
348
+ return xmlMode ? 'XMLView' : 'TranscriptionView'
349
+ }
350
+
351
+ const viewportState = (side) => {
352
+ const { document: doc } = props
353
+ const viewport = getViewports()[side]
302
354
 
303
355
  // blank folio ID
304
356
  if (viewport.folioID === '-1') {
305
- return _objectSpread(_objectSpread({}, side === 'left' ? left : side === 'right' ? right : third), {}, {
357
+ return {
358
+ ...side === 'left' ? left : side === 'right' ? right : third,
306
359
  iiifShortID: viewport.folioID,
307
- transcriptionType: viewport.transcriptionType
308
- });
309
- }
310
- var shortID = viewport.folioID;
311
- var documentFolios = doc.variorum ? doc.folios.filter(function (f) {
312
- return f.doc_id === doc.folioIndex[shortID].doc_id;
313
- }) : doc.folios;
314
- var folioCount = documentFolios.length;
315
- var nextID = '';
316
- var prevID = '';
317
- var current_hasPrev = false;
318
- var current_hasNext = false;
360
+ transcriptionType: viewport.transcriptionType,
361
+ }
362
+ }
363
+
364
+ const shortID = viewport.folioID
365
+ const documentFolios = doc.variorum ? doc.folios.filter(f => f.doc_id === doc.folioIndex[shortID].doc_id) : doc.folios
366
+ const folioCount = documentFolios.length
367
+ let nextID = ''
368
+ let prevID = ''
369
+ let current_hasPrev = false
370
+ let current_hasNext = false
371
+
319
372
  if (bookMode) {
320
- var _findBookFolios5 = findBookFolios(shortID),
321
- _findBookFolios6 = _slicedToArray(_findBookFolios5, 1),
322
- versoID = _findBookFolios6[0];
323
- var current_idx = doc.folioIndex[versoID].pageNumber;
373
+ const [versoID] = findBookFolios(shortID)
374
+ const current_idx = doc.folioIndex[versoID].pageNumber
375
+
324
376
  if (current_idx > -1) {
325
- current_hasNext = current_idx < folioCount - 2;
326
- nextID = current_hasNext ? documentFolios[current_idx + 2].id : '';
327
- current_hasPrev = current_idx > 1 && folioCount > 1;
328
- prevID = current_hasPrev ? documentFolios[current_idx - 2].id : '';
377
+ current_hasNext = (current_idx < (folioCount - 2))
378
+ nextID = current_hasNext ? documentFolios[current_idx + 2].id : ''
379
+ current_hasPrev = (current_idx > 1 && folioCount > 1)
380
+ prevID = current_hasPrev ? documentFolios[current_idx - 2].id : ''
329
381
  }
330
- } else {
331
- var _current_idx = doc.folioIndex[shortID].pageNumber;
332
- if (_current_idx > -1) {
333
- current_hasNext = _current_idx < folioCount - 1;
334
- nextID = current_hasNext ? documentFolios[_current_idx + 1].id : '';
335
- current_hasPrev = _current_idx > 0 && folioCount > 1;
336
- prevID = current_hasPrev ? documentFolios[_current_idx - 1].id : '';
382
+ }
383
+ else {
384
+ const current_idx = doc.folioIndex[shortID].pageNumber
385
+ if (current_idx > -1) {
386
+ current_hasNext = (current_idx < (folioCount - 1))
387
+ nextID = current_hasNext ? documentFolios[current_idx + 1].id : ''
388
+
389
+ current_hasPrev = (current_idx > 0 && folioCount > 1)
390
+ prevID = current_hasPrev ? documentFolios[current_idx - 1].id : ''
337
391
  }
338
392
  }
339
- return _objectSpread(_objectSpread({}, side === 'left' ? left : side === 'right' ? right : third), {}, {
393
+
394
+ return {
395
+ ...side === 'left' ? left : side === 'right' ? right : third,
340
396
  iiifShortID: shortID,
341
397
  transcriptionType: viewport.transcriptionType,
342
398
  hasPrevious: current_hasPrev,
343
399
  hasNext: current_hasNext,
344
400
  previousFolioShortID: prevID,
345
401
  nextFolioShortID: nextID,
346
- documentID: doc.variorum ? doc.folioIndex[shortID].doc_id : doc.documentName
347
- });
348
- };
349
- var documentViewActions = {
350
- setXMLMode: setXMLMode,
351
- setLinkedMode: setLinkedMode,
402
+ documentID: doc.variorum ? doc.folioIndex[shortID].doc_id : doc.documentName,
403
+ }
404
+ }
405
+
406
+ const documentViewActions = {
407
+ setXMLMode,
408
+ setLinkedMode,
352
409
  setBookMode: handleSetBookMode,
353
- changeTranscriptionType: changeTranscriptionType,
354
- changeCurrentFolio: changeCurrentFolio,
355
- jumpToFolio: jumpToFolio
356
- };
357
- var renderPane = function renderPane(side, docView) {
358
- var viewType = determineViewType(side);
359
- var key = viewPaneKey(side);
360
- var folioID = docView[side].iiifShortID;
361
- var document = docView[side].documentID;
362
- var transcriptionType = docView[side].transcriptionType;
410
+ changeTranscriptionType,
411
+ changeCurrentFolio,
412
+ jumpToFolio,
413
+ }
414
+
415
+ const renderPane = (side, docView) => {
416
+ const viewType = determineViewType(side)
417
+ const key = viewPaneKey(side)
418
+ const folioID = docView[side].iiifShortID
419
+ const document = docView[side].documentID
420
+ const { transcriptionType } = docView[side]
421
+
363
422
  if (viewType === 'ImageView') {
364
- return /*#__PURE__*/React.createElement(ImageView, {
365
- key: key,
366
- folioID: folioID,
367
- documentView: docView,
368
- documentViewActions: documentViewActions,
369
- side: side
370
- });
371
- }
372
- if (viewType === 'TranscriptionView') {
373
- return /*#__PURE__*/React.createElement(TranscriptionView, {
374
- key: key,
375
- documentView: docView,
376
- documentViewActions: documentViewActions,
377
- side: side,
378
- folioID: folioID,
379
- transcriptionType: transcriptionType
380
- });
381
- }
382
- if (viewType === 'XMLView') {
383
- return /*#__PURE__*/React.createElement(XMLView, {
384
- key: key,
385
- folioID: folioID,
386
- transcriptionType: transcriptionType,
387
- documentView: docView,
388
- documentViewActions: documentViewActions,
389
- side: side
390
- });
391
- }
392
- if (viewType === 'ImageGridView') {
393
- return /*#__PURE__*/React.createElement(ImageGridView, {
394
- key: key,
395
- documentView: docView,
396
- documentViewActions: documentViewActions,
397
- side: side,
398
- selectedDoc: document ? document : props.document.variorum && Object.keys(props.document.derivativeNames)[side === 'left' ? 0 : side === 'right' ? 1 : Object.keys(props.document.derivativeNames).length > 2 ? 2 : 1]
399
- });
400
- }
401
- if (viewType === 'GlossaryView') {
402
- return /*#__PURE__*/React.createElement(GlossaryView, {
403
- key: key,
404
- documentView: docView,
405
- documentViewActions: documentViewActions,
406
- side: side
407
- });
408
- }
409
- return /*#__PURE__*/React.createElement("div", null, "ERROR: Unrecognized viewType.");
410
- };
411
- var viewPaneKey = function viewPaneKey(side) {
412
- var pane = side === 'left' ? left : side === 'right' ? right : third;
423
+ return (
424
+ <ImageView
425
+ key={key}
426
+ folioID={folioID}
427
+ documentView={docView}
428
+ documentViewActions={documentViewActions}
429
+ side={side}
430
+ />
431
+ )
432
+ } if (viewType === 'TranscriptionView') {
433
+ return (
434
+ <TranscriptionView
435
+ key={key}
436
+ documentView={docView}
437
+ documentViewActions={documentViewActions}
438
+ side={side}
439
+ folioID={folioID}
440
+ transcriptionType={transcriptionType}
441
+ />
442
+ )
443
+ } if (viewType === 'XMLView') {
444
+ return (
445
+ <XMLView
446
+ key={key}
447
+ folioID={folioID}
448
+ transcriptionType={transcriptionType}
449
+ documentView={docView}
450
+ documentViewActions={documentViewActions}
451
+ side={side}
452
+ />
453
+ )
454
+ } if (viewType === 'ImageGridView') {
455
+ return (
456
+ <ImageGridView
457
+ key={key}
458
+ documentView={docView}
459
+ documentViewActions={documentViewActions}
460
+ side={side}
461
+ selectedDoc={document || props.document.variorum && Object.keys(props.document.derivativeNames)[side === 'left' ? 0 : side === 'right' ? 1 : Object.keys(props.document.derivativeNames).length > 2 ? 2 : 1]}
462
+ />
463
+ )
464
+ } if (viewType === 'GlossaryView') {
465
+ return (
466
+ <GlossaryView
467
+ key={key}
468
+ documentView={docView}
469
+ documentViewActions={documentViewActions}
470
+ side={side}
471
+ />
472
+ )
473
+ }
474
+ return (
475
+ <div>ERROR: Unrecognized viewType.</div>
476
+ )
477
+ }
478
+
479
+ const viewPaneKey = (side) => {
480
+ const pane = side === 'left'
481
+ ? left
482
+ : side === 'right'
483
+ ? right
484
+ : third
485
+
413
486
  if (pane.viewType === 'ImageGridView') {
414
- return "".concat(side, "-").concat(pane.viewType);
487
+ return `${side}-${pane.viewType}`
415
488
  }
416
489
  if (typeof pane.folio !== 'undefined') {
417
- return "".concat(side, "-").concat(pane.viewType, "-").concat(pane.folio.id);
490
+ return `${side}-${pane.viewType}-${pane.folio.id}`
418
491
  }
419
- return "".concat(side, "-").concat(pane.viewType);
420
- };
421
- if (!props.document.loaded) {
422
- return null;
492
+ return `${side}-${pane.viewType}`
423
493
  }
424
494
 
495
+ if (!props.document.loaded) { return null }
496
+
425
497
  // combine component state with state from props
426
- var docView = {
427
- linkedMode: linkedMode,
428
- bookMode: bookMode,
498
+ const docView = {
499
+ linkedMode,
500
+ bookMode,
429
501
  left: viewportState('left'),
430
502
  right: viewportState('right'),
431
- third: viewportState('third')
432
- };
433
- var mobileDocView = {
434
- linkedMode: linkedMode,
435
- bookMode: bookMode,
436
- left: left,
437
- right: _objectSpread({}, viewportState('right'))
438
- };
503
+ third: viewportState('third'),
504
+ }
505
+
506
+ const mobileDocView = {
507
+ linkedMode,
508
+ bookMode,
509
+ left,
510
+ right: { ...viewportState('right') },
511
+ }
512
+
439
513
  if (isWidthUp('md', props.width) && !singlePaneMode) {
440
- return /*#__PURE__*/React.createElement("div", {
441
- style: {
442
- height: '100%'
443
- }
444
- }, /*#__PURE__*/React.createElement(SplitPaneView, {
445
- leftPane: renderPane('left', docView),
446
- rightPane: renderPane('right', docView),
447
- thirdPane: renderPane('third', docView),
448
- onWidth: onWidth,
449
- threePanel: props.document.threePanel
450
- }));
514
+ return (
515
+ <div style={{ height: '100%' }}>
516
+ <SplitPaneView
517
+ leftPane={renderPane('left', docView)}
518
+ rightPane={renderPane('right', docView)}
519
+ thirdPane={renderPane('third', docView)}
520
+ onWidth={onWidth}
521
+ threePanel={props.document.threePanel}
522
+ />
523
+ </div>
524
+ )
451
525
  }
452
- return /*#__PURE__*/React.createElement("div", {
453
- style: {
454
- height: '100%'
455
- }
456
- }, /*#__PURE__*/React.createElement(SinglePaneView, {
457
- singlePane: renderPane(viewportState('left').iiifShortID === "-1" ? 'left' : 'right', docView)
458
- }));
459
- };
526
+ return (
527
+ <div style={{ height: '100%' }}>
528
+ <SinglePaneView
529
+ singlePane={renderPane(viewportState('left').iiifShortID === '-1' ? 'left' : 'right', docView)}
530
+ />
531
+ </div>
532
+ )
533
+ }
534
+
460
535
  function mapStateToProps(state) {
461
536
  return {
462
537
  document: state.document,
463
- glossary: state.glossary
464
- };
538
+ glossary: state.glossary,
539
+ }
465
540
  }
466
- export default withWidth()(connect(mapStateToProps)(DocumentView));
541
+
542
+ export default withWidth()(connect(mapStateToProps)(DocumentView))