@edrlab/thorium-web 1.3.0 → 1.4.0
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/{ThPreferencesAdapter-D0rzsGRl.d.mts → ThPreferencesAdapter-L1H6gzmu.d.mts} +23 -6
- package/dist/{ThSettingsWrapper-BXuRgdqp.d.mts → ThSettingsWrapper-DWEA4hYF.d.mts} +1 -1
- package/dist/{actions-BLAr0oaM.d.mts → actions-BjeRjaJU.d.mts} +1 -1
- package/dist/{actionsReducer-BhG1wicI.d.mts → actionsReducer-B32cq2mB.d.mts} +11 -4
- package/dist/{chunk-L4XGZAZ5.mjs → chunk-2YRT7RNW.mjs} +20 -3
- package/dist/chunk-2YRT7RNW.mjs.map +1 -0
- package/dist/{chunk-UCTMVCW7.mjs → chunk-6MONB2DN.mjs} +91 -63
- package/dist/chunk-6MONB2DN.mjs.map +1 -0
- package/dist/chunk-A575ZW4A.mjs +10 -0
- package/dist/chunk-A575ZW4A.mjs.map +1 -0
- package/dist/chunk-AE6P4KJB.mjs +13 -0
- package/dist/chunk-AE6P4KJB.mjs.map +1 -0
- package/dist/{chunk-OWHP7ONM.mjs → chunk-IVXRCKWR.mjs} +4 -4
- package/dist/{chunk-OWHP7ONM.mjs.map → chunk-IVXRCKWR.mjs.map} +1 -1
- package/dist/{chunk-RRVLWDT3.mjs → chunk-KVUG6BNI.mjs} +92 -27
- package/dist/chunk-KVUG6BNI.mjs.map +1 -0
- package/dist/{chunk-IYAFKTPL.mjs → chunk-NUXGQWED.mjs} +7 -5
- package/dist/chunk-NUXGQWED.mjs.map +1 -0
- package/dist/{chunk-4ODYHZKD.mjs → chunk-P6ILEQ5P.mjs} +49 -51
- package/dist/chunk-P6ILEQ5P.mjs.map +1 -0
- package/dist/{chunk-D7MFLHXV.mjs → chunk-PXXWEMNL.mjs} +951 -592
- package/dist/chunk-PXXWEMNL.mjs.map +1 -0
- package/dist/{chunk-T2E6MRVP.mjs → chunk-QUSGPT5M.mjs} +11 -12
- package/dist/chunk-QUSGPT5M.mjs.map +1 -0
- package/dist/{chunk-XBZWGRDM.mjs → chunk-SZAVAQ6S.mjs} +30 -6
- package/dist/chunk-SZAVAQ6S.mjs.map +1 -0
- package/dist/{chunk-3LDWKC5N.mjs → chunk-T5ENYSDJ.mjs} +5 -5
- package/dist/chunk-T5ENYSDJ.mjs.map +1 -0
- package/dist/{chunk-4TVEDX7L.mjs → chunk-TSLTLQ6O.mjs} +127 -41
- package/dist/chunk-TSLTLQ6O.mjs.map +1 -0
- package/dist/{chunk-ITDBOMY5.mjs → chunk-VENFFPK2.mjs} +3 -3
- package/dist/{chunk-ITDBOMY5.mjs.map → chunk-VENFFPK2.mjs.map} +1 -1
- package/dist/{chunk-YZ3KCMKY.mjs → chunk-WLVE3WNW.mjs} +238 -58
- package/dist/chunk-WLVE3WNW.mjs.map +1 -0
- package/dist/chunk-XRFLDNAY.mjs +3913 -0
- package/dist/chunk-XRFLDNAY.mjs.map +1 -0
- package/dist/components/Audio/index.d.mts +12 -12
- package/dist/components/Audio/index.mjs +14 -14
- package/dist/components/Epub/index.css +3 -3
- package/dist/components/Epub/index.css.map +1 -1
- package/dist/components/Epub/index.d.mts +12 -12
- package/dist/components/Epub/index.mjs +15 -15
- package/dist/components/Misc/index.css +2 -2
- package/dist/components/Misc/index.css.map +1 -1
- package/dist/components/Misc/index.mjs +4 -4
- package/dist/components/Reader/index.css +5 -5
- package/dist/components/Reader/index.css.map +1 -1
- package/dist/components/Reader/index.d.mts +11 -11
- package/dist/components/Reader/index.mjs +26 -24
- package/dist/components/Reader/index.mjs.map +1 -1
- package/dist/components/WebPub/index.css +3 -3
- package/dist/components/WebPub/index.css.map +1 -1
- package/dist/components/WebPub/index.d.mts +12 -12
- package/dist/components/WebPub/index.mjs +15 -15
- package/dist/core/Components/index.d.mts +11 -21
- package/dist/core/Components/index.mjs +1 -1
- package/dist/core/Helpers/index.d.mts +1 -1
- package/dist/core/Helpers/index.mjs +2 -3
- package/dist/core/Hooks/index.d.mts +12 -8
- package/dist/core/Hooks/index.mjs +1 -1
- package/dist/i18n/index.mjs +3 -6
- package/dist/lib/index.d.mts +49 -20
- package/dist/lib/index.mjs +3 -2
- package/dist/locales/da/thorium-shared.json +3 -0
- package/dist/locales/en/thorium-shared.json +24 -2
- package/dist/locales/en/thorium-web.json +2 -2
- package/dist/locales/es/thorium-shared.json +364 -0
- package/dist/locales/es/thorium-web.json +130 -0
- package/dist/locales/et/thorium-shared.json +121 -9
- package/dist/locales/et/thorium-web.json +32 -1
- package/dist/locales/fi/thorium-shared.json +42 -4
- package/dist/locales/fi/thorium-web.json +36 -2
- package/dist/locales/fr/thorium-shared.json +108 -1
- package/dist/locales/fr/thorium-web.json +121 -86
- package/dist/locales/it/thorium-shared.json +108 -1
- package/dist/locales/it/thorium-web.json +15 -2
- package/dist/locales/lt/thorium-web.json +10 -1
- package/dist/locales/pl/thorium-web.json +1 -1
- package/dist/locales/pt-BR/thorium-shared.json +6 -0
- package/dist/locales/pt-BR/thorium-web.json +88 -88
- package/dist/locales/pt-PT/thorium-shared.json +91 -0
- package/dist/locales/pt-PT/thorium-web.json +15 -3
- package/dist/locales/sv/thorium-shared.json +108 -2
- package/dist/locales/sv/thorium-web.json +15 -3
- package/dist/locales/tr/thorium-shared.json +42 -0
- package/dist/preferences/index.d.mts +59 -13
- package/dist/preferences/index.mjs +6 -6
- package/dist/{settingsReducer-Bu1zeveu.d.mts → settingsReducer-DLaT2wUB.d.mts} +14 -2
- package/dist/{ui-nBv8gfr0.d.mts → ui-DnZZhozX.d.mts} +1 -1
- package/dist/{useAudioNavigator-C5aW4-eT.d.mts → useAudioNavigator-CWXyNWq1.d.mts} +3 -1
- package/dist/{useContrast-2t429O9O.d.mts → useContrast-Bo7cDw_X.d.mts} +5 -1
- package/dist/{usePreferences-VaBf46eP.d.mts → usePreferences-D8NU1yhP.d.mts} +6 -8
- package/dist/{useReaderTransitions-JDzlBFsu.d.mts → useReaderTransitions-BQGzKeY2.d.mts} +61 -10
- package/package.json +12 -11
- package/dist/chunk-3LDWKC5N.mjs.map +0 -1
- package/dist/chunk-4ODYHZKD.mjs.map +0 -1
- package/dist/chunk-4TVEDX7L.mjs.map +0 -1
- package/dist/chunk-7CGMWOZN.mjs +0 -20
- package/dist/chunk-7CGMWOZN.mjs.map +0 -1
- package/dist/chunk-C236BQQB.mjs +0 -1725
- package/dist/chunk-C236BQQB.mjs.map +0 -1
- package/dist/chunk-D7MFLHXV.mjs.map +0 -1
- package/dist/chunk-IYAFKTPL.mjs.map +0 -1
- package/dist/chunk-L4XGZAZ5.mjs.map +0 -1
- package/dist/chunk-RRVLWDT3.mjs.map +0 -1
- package/dist/chunk-T2E6MRVP.mjs.map +0 -1
- package/dist/chunk-UCTMVCW7.mjs.map +0 -1
- package/dist/chunk-WECWPYZB.mjs +0 -1950
- package/dist/chunk-WECWPYZB.mjs.map +0 -1
- package/dist/chunk-XBZWGRDM.mjs.map +0 -1
- package/dist/chunk-YZ3KCMKY.mjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { toEntryRef } from './chunk-TEZB4ULX.mjs';
|
|
2
2
|
import { defaultPlatformModifier } from './chunk-5LUMM7FW.mjs';
|
|
3
3
|
import { useRef } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { Provider } from 'react-redux';
|
|
5
5
|
import { createSlice, configureStore } from '@reduxjs/toolkit';
|
|
6
6
|
import { jsx } from 'react/jsx-runtime';
|
|
7
7
|
|
|
@@ -94,8 +94,10 @@ var initialState2 = {
|
|
|
94
94
|
fontWeight: 400,
|
|
95
95
|
hyphens: null,
|
|
96
96
|
letterSpacing: null,
|
|
97
|
+
ligatures: null,
|
|
97
98
|
lineHeight: "publisher" /* publisher */,
|
|
98
99
|
lineLength: null,
|
|
100
|
+
noRuby: null,
|
|
99
101
|
paragraphIndent: null,
|
|
100
102
|
paragraphSpacing: null,
|
|
101
103
|
publisherStyles: true,
|
|
@@ -163,6 +165,9 @@ var settingsSlice = createSlice({
|
|
|
163
165
|
setHyphens: (state, action) => {
|
|
164
166
|
state.hyphens = action.payload;
|
|
165
167
|
},
|
|
168
|
+
setLigatures: (state, action) => {
|
|
169
|
+
state.ligatures = action.payload;
|
|
170
|
+
},
|
|
166
171
|
setLetterSpacing: (state, action) => {
|
|
167
172
|
handleSpacingSetting(state, action, "letterSpacing" /* letterSpacing */);
|
|
168
173
|
},
|
|
@@ -243,6 +248,9 @@ var settingsSlice = createSlice({
|
|
|
243
248
|
setTextNormalization: (state, action) => {
|
|
244
249
|
state.textNormalization = action.payload;
|
|
245
250
|
},
|
|
251
|
+
setNoRuby: (state, action) => {
|
|
252
|
+
state.noRuby = action.payload;
|
|
253
|
+
},
|
|
246
254
|
setWordSpacing: (state, action) => {
|
|
247
255
|
handleSpacingSetting(state, action, "wordSpacing" /* wordSpacing */);
|
|
248
256
|
}
|
|
@@ -255,6 +263,7 @@ var {
|
|
|
255
263
|
setFontWeight,
|
|
256
264
|
setFontFamily,
|
|
257
265
|
setHyphens,
|
|
266
|
+
setLigatures,
|
|
258
267
|
setLetterSpacing,
|
|
259
268
|
setLineHeight,
|
|
260
269
|
setLineLength,
|
|
@@ -265,6 +274,7 @@ var {
|
|
|
265
274
|
setSpacingPreset,
|
|
266
275
|
setTextAlign,
|
|
267
276
|
setTextNormalization,
|
|
277
|
+
setNoRuby,
|
|
268
278
|
setWordSpacing
|
|
269
279
|
} = settingsSlice.actions;
|
|
270
280
|
var settingsReducer_default = settingsSlice.reducer;
|
|
@@ -329,8 +339,49 @@ var {
|
|
|
329
339
|
} = themeSlice.actions;
|
|
330
340
|
var themeReducer_default = themeSlice.reducer;
|
|
331
341
|
var initialState4 = {
|
|
332
|
-
dock: {
|
|
333
|
-
|
|
342
|
+
dock: {
|
|
343
|
+
epub: {
|
|
344
|
+
["dockingStart" /* start */]: {
|
|
345
|
+
actionKey: null,
|
|
346
|
+
active: false,
|
|
347
|
+
collapsed: false
|
|
348
|
+
},
|
|
349
|
+
["dockingEnd" /* end */]: {
|
|
350
|
+
actionKey: null,
|
|
351
|
+
active: false,
|
|
352
|
+
collapsed: false
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
webPub: {
|
|
356
|
+
["dockingStart" /* start */]: {
|
|
357
|
+
actionKey: null,
|
|
358
|
+
active: false,
|
|
359
|
+
collapsed: false
|
|
360
|
+
},
|
|
361
|
+
["dockingEnd" /* end */]: {
|
|
362
|
+
actionKey: null,
|
|
363
|
+
active: false,
|
|
364
|
+
collapsed: false
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
audio: {
|
|
368
|
+
["dockingStart" /* start */]: {
|
|
369
|
+
actionKey: null,
|
|
370
|
+
active: false,
|
|
371
|
+
collapsed: false
|
|
372
|
+
},
|
|
373
|
+
["dockingEnd" /* end */]: {
|
|
374
|
+
actionKey: null,
|
|
375
|
+
active: false,
|
|
376
|
+
collapsed: false
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
keys: {
|
|
381
|
+
epub: {},
|
|
382
|
+
webPub: {},
|
|
383
|
+
audio: {}
|
|
384
|
+
},
|
|
334
385
|
overflow: {}
|
|
335
386
|
};
|
|
336
387
|
var initializeProfileDock = (state, profile) => {
|
|
@@ -349,6 +400,11 @@ var initializeProfileDock = (state, profile) => {
|
|
|
349
400
|
};
|
|
350
401
|
}
|
|
351
402
|
};
|
|
403
|
+
var initializeProfileKeys = (state, profile) => {
|
|
404
|
+
if (!state.keys[profile]) {
|
|
405
|
+
state.keys[profile] = {};
|
|
406
|
+
}
|
|
407
|
+
};
|
|
352
408
|
var actionsSlice = createSlice({
|
|
353
409
|
name: "actions",
|
|
354
410
|
initialState: initialState4,
|
|
@@ -356,13 +412,15 @@ var actionsSlice = createSlice({
|
|
|
356
412
|
dockAction: (state, action) => {
|
|
357
413
|
const { key, dockingKey, profile } = action.payload;
|
|
358
414
|
initializeProfileDock(state, profile);
|
|
415
|
+
initializeProfileKeys(state, profile);
|
|
359
416
|
const profileDock = state.dock[profile];
|
|
417
|
+
const profileKeys = state.keys[profile];
|
|
360
418
|
switch (dockingKey) {
|
|
361
419
|
case "dockingStart" /* start */:
|
|
362
|
-
for (const k in
|
|
363
|
-
if (
|
|
364
|
-
|
|
365
|
-
...
|
|
420
|
+
for (const k in profileKeys) {
|
|
421
|
+
if (profileKeys[k]?.docking === dockingKey) {
|
|
422
|
+
profileKeys[k] = {
|
|
423
|
+
...profileKeys[k],
|
|
366
424
|
docking: "dockingTransient" /* transient */,
|
|
367
425
|
isOpen: false
|
|
368
426
|
};
|
|
@@ -380,10 +438,10 @@ var actionsSlice = createSlice({
|
|
|
380
438
|
}
|
|
381
439
|
break;
|
|
382
440
|
case "dockingEnd" /* end */:
|
|
383
|
-
for (const k in
|
|
384
|
-
if (
|
|
385
|
-
|
|
386
|
-
...
|
|
441
|
+
for (const k in profileKeys) {
|
|
442
|
+
if (profileKeys[k]?.docking === dockingKey) {
|
|
443
|
+
profileKeys[k] = {
|
|
444
|
+
...profileKeys[k],
|
|
387
445
|
docking: "dockingTransient" /* transient */,
|
|
388
446
|
isOpen: false
|
|
389
447
|
};
|
|
@@ -417,21 +475,26 @@ var actionsSlice = createSlice({
|
|
|
417
475
|
}
|
|
418
476
|
break;
|
|
419
477
|
}
|
|
420
|
-
|
|
421
|
-
...
|
|
478
|
+
profileKeys[key] = {
|
|
479
|
+
...profileKeys[key],
|
|
422
480
|
docking: dockingKey
|
|
423
481
|
};
|
|
424
482
|
},
|
|
425
483
|
setActionOpen: (state, action) => {
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
484
|
+
const { key, isOpen, profile } = action.payload;
|
|
485
|
+
initializeProfileKeys(state, profile);
|
|
486
|
+
state.keys[profile][key] = {
|
|
487
|
+
...state.keys[profile][key],
|
|
488
|
+
isOpen
|
|
429
489
|
};
|
|
430
490
|
},
|
|
431
491
|
toggleActionOpen: (state, action) => {
|
|
492
|
+
const { key, profile } = action.payload;
|
|
493
|
+
initializeProfileKeys(state, profile);
|
|
432
494
|
const payload = {
|
|
433
|
-
key
|
|
434
|
-
isOpen: state.keys[
|
|
495
|
+
key,
|
|
496
|
+
isOpen: state.keys[profile][key]?.isOpen ? !state.keys[profile][key]?.isOpen : true,
|
|
497
|
+
profile
|
|
435
498
|
};
|
|
436
499
|
actionsSlice.caseReducers.setActionOpen(state, {
|
|
437
500
|
type: "toggleActionOpen",
|
|
@@ -479,10 +542,11 @@ var actionsSlice = createSlice({
|
|
|
479
542
|
setDockPanelWidth: (state, action) => {
|
|
480
543
|
const { key, width, profile } = action.payload;
|
|
481
544
|
initializeProfileDock(state, profile);
|
|
545
|
+
initializeProfileKeys(state, profile);
|
|
482
546
|
const dockKey = state.dock[profile][key].actionKey;
|
|
483
547
|
if (dockKey) {
|
|
484
|
-
state.keys[dockKey] = {
|
|
485
|
-
...state.keys[dockKey],
|
|
548
|
+
state.keys[profile][dockKey] = {
|
|
549
|
+
...state.keys[profile][dockKey],
|
|
486
550
|
dockedWidth: width
|
|
487
551
|
};
|
|
488
552
|
}
|
|
@@ -509,6 +573,7 @@ var initialState5 = {
|
|
|
509
573
|
fontLanguage: "default",
|
|
510
574
|
isFXL: false,
|
|
511
575
|
isRTL: false,
|
|
576
|
+
scriptMode: "ltr",
|
|
512
577
|
hasDisplayTransformability: false,
|
|
513
578
|
positionsList: [],
|
|
514
579
|
atPublicationStart: false,
|
|
@@ -529,6 +594,9 @@ var publicationSlice = createSlice({
|
|
|
529
594
|
setRTL: (state, action) => {
|
|
530
595
|
state.isRTL = action.payload;
|
|
531
596
|
},
|
|
597
|
+
setScriptMode: (state, action) => {
|
|
598
|
+
state.scriptMode = action.payload;
|
|
599
|
+
},
|
|
532
600
|
setHasDisplayTransformability: (state, action) => {
|
|
533
601
|
state.hasDisplayTransformability = action.payload;
|
|
534
602
|
},
|
|
@@ -579,6 +647,7 @@ var {
|
|
|
579
647
|
setFontLanguage,
|
|
580
648
|
setFXL,
|
|
581
649
|
setRTL,
|
|
650
|
+
setScriptMode,
|
|
582
651
|
setHasDisplayTransformability,
|
|
583
652
|
setPositionsList,
|
|
584
653
|
setPublicationStart,
|
|
@@ -623,10 +692,6 @@ var mapPaginatedAffordance = (format) => {
|
|
|
623
692
|
};
|
|
624
693
|
var mapPreferencesToState = (prefs) => {
|
|
625
694
|
return {
|
|
626
|
-
l10n: {
|
|
627
|
-
locale: prefs.locale,
|
|
628
|
-
direction: prefs.direction
|
|
629
|
-
},
|
|
630
695
|
progressionFormat: {
|
|
631
696
|
reflow: mapRenditionFormat(
|
|
632
697
|
prefs.theming?.progression?.format?.reflow
|
|
@@ -706,8 +771,6 @@ var mapStateToPreferences = (state, currentPrefs) => {
|
|
|
706
771
|
};
|
|
707
772
|
return {
|
|
708
773
|
...currentPrefs,
|
|
709
|
-
locale: state.l10n?.locale ?? currentPrefs.locale,
|
|
710
|
-
direction: state.l10n?.direction ?? currentPrefs.direction,
|
|
711
774
|
theming: {
|
|
712
775
|
...currentPrefs.theming,
|
|
713
776
|
...state.progressionFormat && {
|
|
@@ -797,9 +860,6 @@ var preferencesSlice = createSlice({
|
|
|
797
860
|
name: "preferences",
|
|
798
861
|
initialState: initialState6,
|
|
799
862
|
reducers: {
|
|
800
|
-
setL10n: (state, action) => {
|
|
801
|
-
state.l10n = action.payload;
|
|
802
|
-
},
|
|
803
863
|
setProgressionFormat: (state, action) => {
|
|
804
864
|
const { key, value, breakpoint } = action.payload;
|
|
805
865
|
state.progressionFormat = {
|
|
@@ -862,7 +922,6 @@ var preferencesSlice = createSlice({
|
|
|
862
922
|
}
|
|
863
923
|
});
|
|
864
924
|
var {
|
|
865
|
-
setL10n,
|
|
866
925
|
setProgressionFormat,
|
|
867
926
|
setRunningHeadFormat,
|
|
868
927
|
setUI,
|
|
@@ -871,12 +930,26 @@ var {
|
|
|
871
930
|
updateFromPreferences
|
|
872
931
|
} = preferencesSlice.actions;
|
|
873
932
|
var preferencesReducer_default = preferencesSlice.reducer;
|
|
874
|
-
var initialState7 = {
|
|
933
|
+
var initialState7 = {};
|
|
934
|
+
var globalPreferencesSlice = createSlice({
|
|
935
|
+
name: "globalPreferences",
|
|
936
|
+
initialState: initialState7,
|
|
937
|
+
reducers: {
|
|
938
|
+
setLocale: (state, action) => {
|
|
939
|
+
state.locale = action.payload;
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
});
|
|
943
|
+
var { setLocale } = globalPreferencesSlice.actions;
|
|
944
|
+
var globalPreferencesReducer_default = globalPreferencesSlice.reducer;
|
|
945
|
+
var initialState8 = {
|
|
875
946
|
fontFamily: { default: "publisher" },
|
|
876
947
|
fontWeight: 400,
|
|
877
948
|
hyphens: null,
|
|
878
949
|
letterSpacing: null,
|
|
950
|
+
ligatures: null,
|
|
879
951
|
lineHeight: "publisher" /* publisher */,
|
|
952
|
+
noRuby: null,
|
|
880
953
|
paragraphIndent: null,
|
|
881
954
|
paragraphSpacing: null,
|
|
882
955
|
publisherStyles: true,
|
|
@@ -892,7 +965,7 @@ var initialState7 = {
|
|
|
892
965
|
};
|
|
893
966
|
var webPubSettingsSlice = createSlice({
|
|
894
967
|
name: "webPubSettings",
|
|
895
|
-
initialState:
|
|
968
|
+
initialState: initialState8,
|
|
896
969
|
reducers: {
|
|
897
970
|
setWebPubFontFamily: (state, action) => {
|
|
898
971
|
const { key, value } = action.payload;
|
|
@@ -904,6 +977,9 @@ var webPubSettingsSlice = createSlice({
|
|
|
904
977
|
setWebPubHyphens: (state, action) => {
|
|
905
978
|
state.hyphens = action.payload;
|
|
906
979
|
},
|
|
980
|
+
setWebPubLigatures: (state, action) => {
|
|
981
|
+
state.ligatures = action.payload;
|
|
982
|
+
},
|
|
907
983
|
setWebPubLetterSpacing: (state, action) => {
|
|
908
984
|
handleSpacingSetting(state, action, "letterSpacing" /* letterSpacing */);
|
|
909
985
|
},
|
|
@@ -944,6 +1020,9 @@ var webPubSettingsSlice = createSlice({
|
|
|
944
1020
|
setWebPubTextNormalization: (state, action) => {
|
|
945
1021
|
state.textNormalization = action.payload;
|
|
946
1022
|
},
|
|
1023
|
+
setWebPubNoRuby: (state, action) => {
|
|
1024
|
+
state.noRuby = action.payload;
|
|
1025
|
+
},
|
|
947
1026
|
setWebPubWordSpacing: (state, action) => {
|
|
948
1027
|
handleSpacingSetting(state, action, "wordSpacing" /* wordSpacing */);
|
|
949
1028
|
},
|
|
@@ -952,11 +1031,12 @@ var webPubSettingsSlice = createSlice({
|
|
|
952
1031
|
}
|
|
953
1032
|
}
|
|
954
1033
|
});
|
|
955
|
-
var initialWebPubSettingsState =
|
|
1034
|
+
var initialWebPubSettingsState = initialState8;
|
|
956
1035
|
var {
|
|
957
1036
|
setWebPubFontFamily,
|
|
958
1037
|
setWebPubFontWeight,
|
|
959
1038
|
setWebPubHyphens,
|
|
1039
|
+
setWebPubLigatures,
|
|
960
1040
|
setWebPubLetterSpacing,
|
|
961
1041
|
setWebPubLineHeight,
|
|
962
1042
|
setWebPubParagraphIndent,
|
|
@@ -965,11 +1045,12 @@ var {
|
|
|
965
1045
|
setWebPubSpacingPreset,
|
|
966
1046
|
setWebPubTextAlign,
|
|
967
1047
|
setWebPubTextNormalization,
|
|
1048
|
+
setWebPubNoRuby,
|
|
968
1049
|
setWebPubWordSpacing,
|
|
969
1050
|
setWebPubZoom
|
|
970
1051
|
} = webPubSettingsSlice.actions;
|
|
971
1052
|
var webPubSettingsReducer_default = webPubSettingsSlice.reducer;
|
|
972
|
-
var
|
|
1053
|
+
var initialState9 = {
|
|
973
1054
|
volume: 1,
|
|
974
1055
|
playbackRate: 1,
|
|
975
1056
|
preservePitch: true,
|
|
@@ -982,7 +1063,7 @@ var initialState8 = {
|
|
|
982
1063
|
};
|
|
983
1064
|
var audioSettingsSlice = createSlice({
|
|
984
1065
|
name: "audioSettings",
|
|
985
|
-
initialState:
|
|
1066
|
+
initialState: initialState9,
|
|
986
1067
|
reducers: {
|
|
987
1068
|
setVolume: (state, action) => {
|
|
988
1069
|
state.volume = action.payload;
|
|
@@ -1025,7 +1106,7 @@ var {
|
|
|
1025
1106
|
setEnableMediaSession
|
|
1026
1107
|
} = audioSettingsSlice.actions;
|
|
1027
1108
|
var audioSettingsReducer_default = audioSettingsSlice.reducer;
|
|
1028
|
-
var
|
|
1109
|
+
var initialState10 = {
|
|
1029
1110
|
status: "idle",
|
|
1030
1111
|
isSeeking: false,
|
|
1031
1112
|
isStalled: false,
|
|
@@ -1036,7 +1117,7 @@ var initialState9 = {
|
|
|
1036
1117
|
};
|
|
1037
1118
|
var playerSlice = createSlice({
|
|
1038
1119
|
name: "player",
|
|
1039
|
-
initialState:
|
|
1120
|
+
initialState: initialState10,
|
|
1040
1121
|
reducers: {
|
|
1041
1122
|
setStatus: (state, action) => {
|
|
1042
1123
|
state.status = action.payload;
|
|
@@ -1174,20 +1255,44 @@ var migrateFontFamily = (stateSlice) => {
|
|
|
1174
1255
|
return stateSlice;
|
|
1175
1256
|
};
|
|
1176
1257
|
var updateActionsState = (state) => {
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1258
|
+
if (state.keys && typeof state.keys === "object" && ("epub" in state.keys || "webPub" in state.keys || "audio" in state.keys)) {
|
|
1259
|
+
const updatedKeys = {};
|
|
1260
|
+
for (const profile in state.keys) {
|
|
1261
|
+
updatedKeys[profile] = Object.fromEntries(
|
|
1262
|
+
Object.entries(state.keys[profile]).map(([key, value]) => [
|
|
1263
|
+
key,
|
|
1264
|
+
{
|
|
1265
|
+
...value,
|
|
1266
|
+
// Transient/undocked actions should never re-open on load
|
|
1267
|
+
// Docked actions reset to null so useDocking re-establishes open state
|
|
1268
|
+
// based on the actual breakpoint at load time (avoids opening docked
|
|
1269
|
+
// sheets in fullscreen/compact where docking is unavailable)
|
|
1270
|
+
isOpen: value?.docking === "dockingTransient" /* transient */ || value?.docking == null ? false : value?.docking === "dockingStart" /* start */ || value?.docking === "dockingEnd" /* end */ ? null : value?.isOpen
|
|
1271
|
+
}
|
|
1272
|
+
])
|
|
1273
|
+
);
|
|
1274
|
+
}
|
|
1275
|
+
return {
|
|
1276
|
+
...state,
|
|
1277
|
+
keys: updatedKeys,
|
|
1278
|
+
overflow: {}
|
|
1279
|
+
};
|
|
1280
|
+
} else {
|
|
1281
|
+
const updatedKeys = Object.fromEntries(
|
|
1282
|
+
Object.entries(state.keys).map(([key, value]) => [
|
|
1283
|
+
key,
|
|
1284
|
+
{
|
|
1285
|
+
...value,
|
|
1286
|
+
isOpen: value?.docking === "dockingTransient" /* transient */ || value?.docking == null ? false : value?.docking === "dockingStart" /* start */ || value?.docking === "dockingEnd" /* end */ ? null : value?.isOpen
|
|
1287
|
+
}
|
|
1288
|
+
])
|
|
1289
|
+
);
|
|
1290
|
+
return {
|
|
1291
|
+
...state,
|
|
1292
|
+
keys: updatedKeys,
|
|
1293
|
+
overflow: {}
|
|
1294
|
+
};
|
|
1295
|
+
}
|
|
1191
1296
|
};
|
|
1192
1297
|
var migrateDockStateToProfileKeyed = (state) => {
|
|
1193
1298
|
if (state.dock && typeof state.dock === "object" && !("epub" in state.dock || "webPub" in state.dock || "audio" in state.dock)) {
|
|
@@ -1206,6 +1311,33 @@ var migrateDockStateToProfileKeyed = (state) => {
|
|
|
1206
1311
|
}
|
|
1207
1312
|
return state;
|
|
1208
1313
|
};
|
|
1314
|
+
var migrateKeysStateToProfileKeyed = (state) => {
|
|
1315
|
+
if (!state.keys) {
|
|
1316
|
+
return state;
|
|
1317
|
+
}
|
|
1318
|
+
const isProfileKeyed = "epub" in state.keys || "webPub" in state.keys || "audio" in state.keys;
|
|
1319
|
+
if (!isProfileKeyed) {
|
|
1320
|
+
const oldKeys = state.keys;
|
|
1321
|
+
const newKeys = {
|
|
1322
|
+
epub: { ...oldKeys },
|
|
1323
|
+
webPub: {},
|
|
1324
|
+
audio: {}
|
|
1325
|
+
};
|
|
1326
|
+
return {
|
|
1327
|
+
...state,
|
|
1328
|
+
keys: newKeys
|
|
1329
|
+
};
|
|
1330
|
+
}
|
|
1331
|
+
const migratedKeys = {
|
|
1332
|
+
epub: state.keys.epub || {},
|
|
1333
|
+
webPub: state.keys.webPub || {},
|
|
1334
|
+
audio: state.keys.audio || {}
|
|
1335
|
+
};
|
|
1336
|
+
return {
|
|
1337
|
+
...state,
|
|
1338
|
+
keys: migratedKeys
|
|
1339
|
+
};
|
|
1340
|
+
};
|
|
1209
1341
|
var loadState = (storageKey = DEFAULT_STORAGE_KEY) => {
|
|
1210
1342
|
try {
|
|
1211
1343
|
const resolvedKey = storageKey || DEFAULT_STORAGE_KEY;
|
|
@@ -1216,11 +1348,17 @@ var loadState = (storageKey = DEFAULT_STORAGE_KEY) => {
|
|
|
1216
1348
|
settings: void 0,
|
|
1217
1349
|
theming: void 0,
|
|
1218
1350
|
preferences: void 0,
|
|
1351
|
+
globalPreferences: void 0,
|
|
1219
1352
|
webPubSettings: void 0,
|
|
1220
1353
|
audioSettings: void 0
|
|
1221
1354
|
};
|
|
1222
1355
|
}
|
|
1223
1356
|
let state = JSON.parse(serializedState);
|
|
1357
|
+
if (state && state.actions) {
|
|
1358
|
+
state.actions = migrateDockStateToProfileKeyed(state.actions);
|
|
1359
|
+
state.actions = migrateKeysStateToProfileKeyed(state.actions);
|
|
1360
|
+
state.actions = updateActionsState(state.actions);
|
|
1361
|
+
}
|
|
1224
1362
|
if (state) {
|
|
1225
1363
|
if (state.settings) {
|
|
1226
1364
|
state.settings = migrateFontFamily(state.settings);
|
|
@@ -1240,6 +1378,7 @@ var loadState = (storageKey = DEFAULT_STORAGE_KEY) => {
|
|
|
1240
1378
|
settings: void 0,
|
|
1241
1379
|
theming: void 0,
|
|
1242
1380
|
preferences: void 0,
|
|
1381
|
+
globalPreferences: void 0,
|
|
1243
1382
|
webPubSettings: void 0
|
|
1244
1383
|
};
|
|
1245
1384
|
}
|
|
@@ -1252,6 +1391,7 @@ var saveState = (state, storageKey, externalReducers = {}) => {
|
|
|
1252
1391
|
if (state.settings) stateToPersist.settings = state.settings;
|
|
1253
1392
|
if (state.theming) stateToPersist.theming = state.theming;
|
|
1254
1393
|
if (state.preferences) stateToPersist.preferences = state.preferences;
|
|
1394
|
+
if (state.globalPreferences) stateToPersist.globalPreferences = state.globalPreferences;
|
|
1255
1395
|
if (state.webPubSettings) stateToPersist.webPubSettings = state.webPubSettings;
|
|
1256
1396
|
if (state.audioSettings) stateToPersist.audioSettings = state.audioSettings;
|
|
1257
1397
|
Object.entries(externalReducers).forEach(([key, config]) => {
|
|
@@ -1273,6 +1413,7 @@ var makeStore = (storageKey, externalReducers = {}) => {
|
|
|
1273
1413
|
actions: actionsReducer_default,
|
|
1274
1414
|
publication: publicationReducer_default,
|
|
1275
1415
|
preferences: preferencesReducer_default,
|
|
1416
|
+
globalPreferences: globalPreferencesReducer_default,
|
|
1276
1417
|
webPubSettings: webPubSettingsReducer_default,
|
|
1277
1418
|
audioSettings: audioSettingsReducer_default,
|
|
1278
1419
|
player: playerReducer_default,
|
|
@@ -1287,6 +1428,7 @@ var makeStore = (storageKey, externalReducers = {}) => {
|
|
|
1287
1428
|
settings: persistedState.settings,
|
|
1288
1429
|
theming: persistedState.theming,
|
|
1289
1430
|
preferences: persistedState.preferences,
|
|
1431
|
+
globalPreferences: persistedState.globalPreferences,
|
|
1290
1432
|
webPubSettings: persistedState.webPubSettings,
|
|
1291
1433
|
audioSettings: persistedState.audioSettings,
|
|
1292
1434
|
// Include persisted state for external reducers that have it
|
|
@@ -1330,7 +1472,10 @@ var ThReduxPreferencesAdapter = class {
|
|
|
1330
1472
|
this.store.subscribe(() => {
|
|
1331
1473
|
const state = this.store.getState();
|
|
1332
1474
|
const prefs = this.mapStateToPreferences(state);
|
|
1333
|
-
|
|
1475
|
+
if (JSON.stringify(prefs) !== JSON.stringify(this.currentPreferences)) {
|
|
1476
|
+
this.currentPreferences = prefs;
|
|
1477
|
+
this.notifyListeners(prefs);
|
|
1478
|
+
}
|
|
1334
1479
|
});
|
|
1335
1480
|
}
|
|
1336
1481
|
getPreferences() {
|
|
@@ -1358,10 +1503,45 @@ var ThReduxPreferencesAdapter = class {
|
|
|
1358
1503
|
this.listeners.forEach((callback) => callback(prefsCopy));
|
|
1359
1504
|
}
|
|
1360
1505
|
};
|
|
1361
|
-
var useAppDispatch = useDispatch;
|
|
1362
|
-
var useAppSelector = useSelector;
|
|
1363
|
-
var useAppStore = useStore;
|
|
1364
1506
|
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1507
|
+
// src/lib/ThReduxGlobalPreferencesAdapter.ts
|
|
1508
|
+
var ThReduxGlobalPreferencesAdapter = class {
|
|
1509
|
+
store;
|
|
1510
|
+
listeners = /* @__PURE__ */ new Set();
|
|
1511
|
+
currentPreferences;
|
|
1512
|
+
constructor(store, initialPreferences = {}) {
|
|
1513
|
+
this.store = store;
|
|
1514
|
+
this.currentPreferences = initialPreferences;
|
|
1515
|
+
this.store.subscribe(() => {
|
|
1516
|
+
const locale = this.store.getState().globalPreferences?.locale;
|
|
1517
|
+
const next = { locale };
|
|
1518
|
+
if (JSON.stringify(next) !== JSON.stringify(this.currentPreferences)) {
|
|
1519
|
+
this.currentPreferences = next;
|
|
1520
|
+
this.notifyListeners(next);
|
|
1521
|
+
}
|
|
1522
|
+
});
|
|
1523
|
+
}
|
|
1524
|
+
getPreferences() {
|
|
1525
|
+
return { ...this.currentPreferences };
|
|
1526
|
+
}
|
|
1527
|
+
setPreferences(prefs) {
|
|
1528
|
+
this.currentPreferences = { ...prefs };
|
|
1529
|
+
this.store.dispatch(setLocale(prefs.locale));
|
|
1530
|
+
this.notifyListeners(this.currentPreferences);
|
|
1531
|
+
}
|
|
1532
|
+
subscribe(callback) {
|
|
1533
|
+
this.listeners.add(callback);
|
|
1534
|
+
callback(this.getPreferences());
|
|
1535
|
+
}
|
|
1536
|
+
unsubscribe(callback) {
|
|
1537
|
+
this.listeners.delete(callback);
|
|
1538
|
+
}
|
|
1539
|
+
notifyListeners(prefs) {
|
|
1540
|
+
const copy = { ...prefs };
|
|
1541
|
+
this.listeners.forEach((cb) => cb(copy));
|
|
1542
|
+
}
|
|
1543
|
+
};
|
|
1544
|
+
|
|
1545
|
+
export { ThReduxGlobalPreferencesAdapter, ThReduxPreferencesAdapter, ThStoreProvider, actionsSlice, activateDockPanel, audioSettingsSlice, collapseDockPanel, deactivateDockPanel, debounce, dockAction, expandDockPanel, globalPreferencesSlice, handleSpacingSetting, initialSettingsState, initialWebPubSettingsState, makeStore, playerSlice, preferencesSlice, publicationSlice, readerSlice, setActionOpen, setAdjacentTimelineItems, setAutoPlay, setBreakpoint, setColorScheme, setColumnCount, setContrast, setCoverTheme, setDirection, setDockPanelWidth, setEnableMediaSession, setFXL, setFontFamily, setFontLanguage, setFontSize, setFontWeight, setForcedColors, setFullscreen, setHasArrows, setHasDisplayTransformability, setHovering, setHyphens, setImmersive, setLetterSpacing, setLigatures, setLineHeight, setLineLength, setLoading, setLocale, setMonochrome, setNoRuby, setOverflow, setPaginatedAffordance, setParagraphIndent, setParagraphSpacing, setPlatformModifier, setPlaybackRate, setPollInterval, setPositionsList, setPreservePitch, setProgressionFormat, setPublicationEnd, setPublicationStart, setPublisherStyles, setRTL, setReaderProfile, setReducedMotion, setReducedTransparency, setRemotePlaybackState, setRunningHeadFormat, setScriptMode, setScroll, setScrollAffordance, setScrollAffordances, setSeekableRanges, setSeeking, setSettingsContainer, setSkipBackwardInterval, setSkipForwardInterval, setSkipInterval, setSleepTimerOnFragmentEnd, setSleepTimerOnTrackEnd, setSleepTimerRemainingSeconds, setSpacingPreset, setStalled, setStatus, setTextAlign, setTextNormalization, setTheme, setTimeline, setTocEntry, setTocTree, setTrackReady, setUI, setUserNavigated, setVolume, setWebPubFontFamily, setWebPubFontWeight, setWebPubHyphens, setWebPubLetterSpacing, setWebPubLigatures, setWebPubLineHeight, setWebPubNoRuby, setWebPubParagraphIndent, setWebPubParagraphSpacing, setWebPubPublisherStyles, setWebPubSpacingPreset, setWebPubTextAlign, setWebPubTextNormalization, setWebPubWordSpacing, setWebPubZoom, setWordSpacing, settingsSlice, themeSlice, toggleActionOpen, toggleImmersive, updateFromPreferences, webPubSettingsSlice };
|
|
1546
|
+
//# sourceMappingURL=chunk-WLVE3WNW.mjs.map
|
|
1547
|
+
//# sourceMappingURL=chunk-WLVE3WNW.mjs.map
|