@edrlab/thorium-web 1.1.6 → 1.1.7

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.
@@ -1,12 +1,12 @@
1
+ import { makeBreakpointsMap, isInteractiveElement, isKeyboardTriggered, isActiveElement, getBestMatchingProgressionFormat } from './chunk-47AIIJFO.mjs';
1
2
  import { useFullscreen, useEpubNavigator } from './chunk-KJXHAJYK.mjs';
2
3
  import { useAppDispatch, setFullscreen, useAppSelector, setActionOpen, dockAction, setSettingsContainer, debounce, setColumnCount, setWebPubFontFamily, setFontFamily, setWebPubFontWeight, setFontWeight, setWebPubHyphens, setHyphens, setScroll, setWebPubLetterSpacing, setLetterSpacing, setWebPubLineHeight, setLineHeight, setWebPubParagraphIndent, setParagraphIndent, setWebPubParagraphSpacing, setParagraphSpacing, setWebPubWordSpacing, setWordSpacing, setWebPubSpacingPreset, setWebPubPublisherStyles, setSpacingPreset, setPublisherStyles, setWebPubTextAlign, setTextAlign, setWebPubTextNormalization, setTextNormalization, setTheme, setWebPubZoom, setFontSize, ThReduxPreferencesAdapter, setHovering, setImmersive, setOverflow, setUserNavigated, setTocEntry, collapseDockPanel, expandDockPanel, activateDockPanel, deactivateDockPanel, setDockPanelWidth } from './chunk-COQXDRKD.mjs';
3
- import { usePreferences, prefixString, ThDockingTypes, ThSheetTypes, defaultSpacingSettingsSubpanel, defaultSpacingSettingsMain, defaultTextSettingsSubpanel, defaultTextSettingsMain, usePreferenceKeys, ThTextSettingsKeys, ThSpacingSettingsKeys, buildThemeObject, defaultPreferences, ThPreferencesProvider } from './chunk-SMK7A7VF.mjs';
4
- import { ThMenuItem, ThActionButton, ThMenu, ThCollapsibleActionsBar, ThPopover, ThContainerHeader, ThNavigationButton, ThContainerBody, ThBottomSheet, ThCloseButton, ThModal, ThDockedPanel, ThTypedComponentRenderer, useActions, ThForm, ThFormNumberField, ThSettingsWrapper, ThFormSearchField, ThRadioGroup, ThDropdown, ThSwitch, ThNumberField, ThSlider, ThInteractiveOverlay, ThHeader, ThFooter, ThLink, ThLibrary, ThHome, ThBackArrow, ThRunningHead, ThPagination, ThProgression } from './chunk-KTPIH35Y.mjs';
5
- import { usePrevious } from './chunk-YZ73DHRU.mjs';
6
- import { useI18n } from './chunk-IYAFKTPL.mjs';
7
- import { makeBreakpointsMap, isInteractiveElement, isKeyboardTriggered, isActiveElement, getBestMatchingProgressionFormat } from './chunk-47AIIJFO.mjs';
4
+ import { usePreferences, prefixString, ThDockingTypes, ThSheetTypes, defaultSpacingSettingsSubpanel, defaultSpacingSettingsMain, defaultTextSettingsSubpanel, defaultTextSettingsMain, usePreferenceKeys, ThTextSettingsKeys, ThSpacingSettingsKeys, buildThemeObject, defaultPreferences, ThPreferencesProvider } from './chunk-YIW2OOMW.mjs';
8
5
  import { ThRunningHeadFormat, ThProgressionFormat } from './chunk-XVSFXHYB.mjs';
9
6
  import { isIOSish, getPlatform, buildShortcut, metaKeys } from './chunk-5LUMM7FW.mjs';
7
+ import { useI18n } from './chunk-IYAFKTPL.mjs';
8
+ import { ThMenuItem, ThActionButton, ThMenu, ThCollapsibleActionsBar, ThPopover, ThContainerHeader, ThNavigationButton, ThContainerBody, ThBottomSheet, ThCloseButton, ThModal, ThDockedPanel, ThTypedComponentRenderer, useActions, ThForm, ThFormNumberField, ThSettingsWrapper, ThFormSearchField, ThRadioGroup, ThDropdown, ThSwitch, ThNumberField, ThSlider, ThInteractiveOverlay, ThHeader, ThFooter, ThLink, ThLibrary, ThHome, ThBackArrow, ThRunningHead, ThPagination, ThProgression } from './chunk-NYZBHYW2.mjs';
9
+ import { usePrevious } from './chunk-YZ73DHRU.mjs';
10
10
  import { Text, useFilter, Tree, TreeItem, TreeItemContent, Button, Collection, ListBox, ListBoxItem, Radio, Keyboard, Toolbar } from 'react-aria-components';
11
11
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
12
12
  import React18, { createContext, useRef, useCallback, useEffect, useMemo, useState, useContext } from 'react';
@@ -1387,6 +1387,11 @@ var thorium_web_jumpToPosition_default = {
1387
1387
  button: "thorium_web_jumpToPosition_button",
1388
1388
  numberField: "thorium_web_jumpToPosition_numberField"
1389
1389
  };
1390
+
1391
+ // src/components/Actions/JumpToPosition/helpers/utils.ts
1392
+ var isPositionsListValid = (positionsList) => {
1393
+ return !!(positionsList && positionsList.length > 0 && positionsList.some((item) => item.locations?.position));
1394
+ };
1390
1395
  var StatefulJumpToPositionContainer = ({
1391
1396
  triggerRef
1392
1397
  }) => {
@@ -1400,6 +1405,7 @@ var StatefulJumpToPositionContainer = ({
1400
1405
  const sheetType = docking.sheetType;
1401
1406
  const { go } = useEpubNavigator();
1402
1407
  const [position, setPosition] = useState(0);
1408
+ const [errorMessage, setErrorMessage] = useState();
1403
1409
  const positionInRange = useCallback(() => {
1404
1410
  if (!positionNumbers) return false;
1405
1411
  return positionNumbers.length === 2 ? position >= positionNumbers[0] && position <= positionNumbers[1] : position === positionNumbers[0];
@@ -1418,19 +1424,24 @@ var StatefulJumpToPositionContainer = ({
1418
1424
  const handleAction = useCallback((e) => {
1419
1425
  e.preventDefault();
1420
1426
  if (!positionsList) return;
1427
+ setErrorMessage(void 0);
1421
1428
  const item = positionsList.find((item2) => item2.locations.position === position);
1422
- if (!item || positionInRange()) return setOpen(false);
1429
+ if (!item) {
1430
+ setErrorMessage(t("reader.jumpToPosition.error.notFound"));
1431
+ return;
1432
+ }
1433
+ if (positionInRange()) return setOpen(false);
1423
1434
  const cb = () => {
1424
1435
  setOpen(false);
1425
1436
  dispatch(setImmersive(true));
1426
1437
  dispatch(setUserNavigated(true));
1427
1438
  };
1428
1439
  go(item, !reducedMotion, cb);
1429
- }, [position, positionsList, reducedMotion, positionInRange, go, setOpen, dispatch]);
1440
+ }, [position, positionsList, reducedMotion, t, positionInRange, go, setOpen, dispatch]);
1430
1441
  useEffect(() => {
1431
1442
  positionNumbers && setPosition(positionNumbers[0]);
1432
1443
  }, [positionNumbers]);
1433
- if (!positionsList) return null;
1444
+ if (!isPositionsListValid(positionsList)) return null;
1434
1445
  return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
1435
1446
  StatefulSheetWrapper,
1436
1447
  {
@@ -1472,6 +1483,7 @@ var StatefulJumpToPositionContainer = ({
1472
1483
  step: 1,
1473
1484
  formatOptions: { style: "decimal" },
1474
1485
  isWheelDisabled: true,
1486
+ errorMessage,
1475
1487
  compounds: {
1476
1488
  label: {
1477
1489
  className: thorium_web_jumpToPosition_default.label
@@ -1502,7 +1514,7 @@ var StatefulJumpToPositionTrigger = ({ variant }) => {
1502
1514
  isOpen: value
1503
1515
  }));
1504
1516
  };
1505
- if (!positionsList) return null;
1517
+ if (!isPositionsListValid(positionsList)) return null;
1506
1518
  return /* @__PURE__ */ jsx(Fragment, { children: variant && variant === "menuItem" /* menu */ ? /* @__PURE__ */ jsx(
1507
1519
  StatefulOverflowMenuItem,
1508
1520
  {
@@ -3949,7 +3961,7 @@ var createDefaultPlugin = () => {
3949
3961
  id: "core",
3950
3962
  name: "Core Components",
3951
3963
  description: "Default components for Thorium Web Epub StatefulReader",
3952
- version: "1.1.6",
3964
+ version: "1.1.7",
3953
3965
  components: {
3954
3966
  actions: {
3955
3967
  ["fullscreen" /* fullscreen */]: {
@@ -4582,6 +4594,7 @@ var StatefulReaderHeader = ({
4582
4594
  const isImmersive = useAppSelector((state) => state.reader.isImmersive);
4583
4595
  const isHovering = useAppSelector((state) => state.reader.isHovering);
4584
4596
  const hasScrollAffordance = useAppSelector((state) => state.reader.hasScrollAffordance);
4597
+ const positionsList = useAppSelector((state) => state.publication.positionsList);
4585
4598
  const actions = useActions({ ...actionsMap, ...overflowMap });
4586
4599
  const dispatch = useAppDispatch();
4587
4600
  const { focusWithinProps } = useFocusWithin({
@@ -4619,8 +4632,16 @@ var StatefulReaderHeader = ({
4619
4632
  }
4620
4633
  });
4621
4634
  }
4622
- return actionsItems;
4623
- }, [actionKeys, actionsComponentsMap]);
4635
+ return actionsItems.filter((item) => {
4636
+ if (item.key === "jumpToPosition" /* jumpToPosition */) {
4637
+ return isPositionsListValid(positionsList);
4638
+ }
4639
+ if (item.key === "fullscreen" /* fullscreen */) {
4640
+ return document.fullscreenEnabled && !isIOSish();
4641
+ }
4642
+ return true;
4643
+ });
4644
+ }, [actionKeys, actionsComponentsMap, positionsList]);
4624
4645
  useEffect(() => {
4625
4646
  if (isImmersive) {
4626
4647
  const focusElement = document.activeElement;
@@ -5364,5 +5385,5 @@ function getReaderClassNames(options) {
5364
5385
  }
5365
5386
 
5366
5387
  export { NavigatorProvider, Peripherals, StatefulActionIcon, StatefulBottomSheet, StatefulCollapsibleActionsBar, StatefulColumns, StatefulDockedSheet, StatefulDockingWrapper, StatefulDropdown, StatefulFontFamily, StatefulFullScreenSheet, StatefulFullscreenTrigger, StatefulGroupWrapper, StatefulHyphens, StatefulJumpToPositionContainer, StatefulJumpToPositionTrigger, StatefulLayout, StatefulLetterSpacing, StatefulLineHeight, StatefulNumberField, StatefulOverflowMenu, StatefulOverflowMenuItem, StatefulParagraphIndent, StatefulParagraphSpacing, StatefulPopoverSheet, StatefulPreferencesProvider, StatefulPublisherStyles, StatefulRadioGroup, StatefulReaderFooter, StatefulReaderHeader, StatefulSettingsContainer, StatefulSettingsTrigger, StatefulSheetWrapper, StatefulSlider, StatefulSpacingGroup, StatefulSpacingGroupContainer, StatefulSpacingPresets, StatefulSwitch, StatefulTextAlign, StatefulTextGroup, StatefulTextGroupContainer, StatefulTextNormalize, StatefulTheme, StatefulTocContainer, StatefulTocTrigger, StatefulWordSpacing, StatefulZoom, ThPluginProvider, ThPluginRegistry, UnstableStatefulFontWeight, createDefaultPlugin, getReaderClassNames, thorium_web_button_default, thorium_web_reader_app_default, useDocking, useFonts, useGridNavigation, useGridTemplate, useLineHeight, useNavigator, usePublication, useReaderTransitions, useSettingsComponentStatus, useSpacingPresets };
5367
- //# sourceMappingURL=chunk-SFHOVH6R.mjs.map
5368
- //# sourceMappingURL=chunk-SFHOVH6R.mjs.map
5388
+ //# sourceMappingURL=chunk-4C3UOTX4.mjs.map
5389
+ //# sourceMappingURL=chunk-4C3UOTX4.mjs.map