@edrlab/thorium-web 1.4.0 → 1.5.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.
Files changed (94) hide show
  1. package/dist/{ThPreferencesAdapter-L1H6gzmu.d.mts → ThPreferencesAdapter-B3a-f5v-.d.mts} +25 -18
  2. package/dist/{ThSettingsWrapper-DWEA4hYF.d.mts → ThSettingsWrapper-DtzcwzYX.d.mts} +4 -4
  3. package/dist/{actions-BjeRjaJU.d.mts → actions-C33UN3Ji.d.mts} +18 -4
  4. package/dist/{actionsReducer-B32cq2mB.d.mts → actionsReducer-Bzcj3wk3.d.mts} +1 -1
  5. package/dist/{chunk-NUXGQWED.mjs → chunk-2NCN2AG2.mjs} +3 -3
  6. package/dist/{chunk-NUXGQWED.mjs.map → chunk-2NCN2AG2.mjs.map} +1 -1
  7. package/dist/{chunk-IVXRCKWR.mjs → chunk-2T65MDBR.mjs} +4 -4
  8. package/dist/{chunk-IVXRCKWR.mjs.map → chunk-2T65MDBR.mjs.map} +1 -1
  9. package/dist/{chunk-KVUG6BNI.mjs → chunk-63LKYJFG.mjs} +62 -56
  10. package/dist/chunk-63LKYJFG.mjs.map +1 -0
  11. package/dist/chunk-AQSJDL63.mjs +193 -0
  12. package/dist/chunk-AQSJDL63.mjs.map +1 -0
  13. package/dist/{chunk-TSLTLQ6O.mjs → chunk-BBCSLDQT.mjs} +144 -86
  14. package/dist/chunk-BBCSLDQT.mjs.map +1 -0
  15. package/dist/{chunk-QUSGPT5M.mjs → chunk-BCXKBHU3.mjs} +34 -15
  16. package/dist/chunk-BCXKBHU3.mjs.map +1 -0
  17. package/dist/{chunk-T5ENYSDJ.mjs → chunk-DQDOOTCE.mjs} +3 -3
  18. package/dist/{chunk-T5ENYSDJ.mjs.map → chunk-DQDOOTCE.mjs.map} +1 -1
  19. package/dist/chunk-GNROODJB.mjs +9 -0
  20. package/dist/chunk-GNROODJB.mjs.map +1 -0
  21. package/dist/{chunk-SZAVAQ6S.mjs → chunk-GRYEOCGD.mjs} +8 -5
  22. package/dist/chunk-GRYEOCGD.mjs.map +1 -0
  23. package/dist/{chunk-PXXWEMNL.mjs → chunk-KJ55Q63A.mjs} +220 -106
  24. package/dist/chunk-KJ55Q63A.mjs.map +1 -0
  25. package/dist/{chunk-5LUMM7FW.mjs → chunk-KOR74F6M.mjs} +9 -41
  26. package/dist/chunk-KOR74F6M.mjs.map +1 -0
  27. package/dist/{chunk-WLVE3WNW.mjs → chunk-PAFJZH7O.mjs} +12 -7
  28. package/dist/chunk-PAFJZH7O.mjs.map +1 -0
  29. package/dist/{chunk-XRFLDNAY.mjs → chunk-PRQBFBJ7.mjs} +123 -56
  30. package/dist/chunk-PRQBFBJ7.mjs.map +1 -0
  31. package/dist/{chunk-6MONB2DN.mjs → chunk-Y5X74VW7.mjs} +52 -146
  32. package/dist/chunk-Y5X74VW7.mjs.map +1 -0
  33. package/dist/{chunk-P6ILEQ5P.mjs → chunk-ZD4LTF6G.mjs} +17 -9
  34. package/dist/chunk-ZD4LTF6G.mjs.map +1 -0
  35. package/dist/components/Audio/index.css +12 -1
  36. package/dist/components/Audio/index.css.map +1 -1
  37. package/dist/components/Audio/index.d.mts +17 -15
  38. package/dist/components/Audio/index.mjs +11 -11
  39. package/dist/components/Epub/index.css +12 -1
  40. package/dist/components/Epub/index.css.map +1 -1
  41. package/dist/components/Epub/index.d.mts +14 -13
  42. package/dist/components/Epub/index.mjs +12 -12
  43. package/dist/components/Misc/index.mjs +5 -5
  44. package/dist/components/Reader/index.css +12 -1
  45. package/dist/components/Reader/index.css.map +1 -1
  46. package/dist/components/Reader/index.d.mts +12 -11
  47. package/dist/components/Reader/index.mjs +26 -24
  48. package/dist/components/Reader/index.mjs.map +1 -1
  49. package/dist/components/WebPub/index.css +12 -1
  50. package/dist/components/WebPub/index.css.map +1 -1
  51. package/dist/components/WebPub/index.d.mts +14 -13
  52. package/dist/components/WebPub/index.mjs +12 -12
  53. package/dist/core/Components/index.d.mts +7 -6
  54. package/dist/core/Components/index.mjs +2 -2
  55. package/dist/core/Helpers/index.d.mts +1 -1
  56. package/dist/core/Helpers/index.mjs +1 -1
  57. package/dist/core/Hooks/index.d.mts +6 -5
  58. package/dist/core/Hooks/index.mjs +1 -1
  59. package/dist/i18n/index.mjs +3 -3
  60. package/dist/keyboardUtilities-BCP3UcLb.d.mts +30 -0
  61. package/dist/lib/index.d.mts +17 -9
  62. package/dist/lib/index.mjs +2 -2
  63. package/dist/locales/da/thorium-web.json +37 -2
  64. package/dist/locales/fi/thorium-web.json +1 -1
  65. package/dist/locales/fr/thorium-web.json +1 -1
  66. package/dist/locales/he/thorium-web.json +9 -0
  67. package/dist/locales/it/thorium-web.json +22 -0
  68. package/dist/locales/lt/thorium-web.json +26 -1
  69. package/dist/locales/sv/thorium-web.json +22 -0
  70. package/dist/next-lib/index.mjs +1 -1
  71. package/dist/next-lib/index.mjs.map +1 -1
  72. package/dist/preferences/index.d.mts +14 -23
  73. package/dist/preferences/index.mjs +4 -4
  74. package/dist/{settingsReducer-DLaT2wUB.d.mts → settingsReducer-Pp9aoiiC.d.mts} +1 -1
  75. package/dist/{useAudioNavigator-CWXyNWq1.d.mts → useAudioNavigator-pGwxhXLj.d.mts} +4 -1
  76. package/dist/{useContrast-Bo7cDw_X.d.mts → useContrast-Bl08zDTU.d.mts} +2 -7
  77. package/dist/{usePreferences-D8NU1yhP.d.mts → usePreferences-Cy7-JN2x.d.mts} +4 -8
  78. package/dist/{useReaderTransitions-BQGzKeY2.d.mts → useReaderTransitions-Zvomj9RQ.d.mts} +30 -21
  79. package/package.json +7 -7
  80. package/dist/chunk-5LUMM7FW.mjs.map +0 -1
  81. package/dist/chunk-6MONB2DN.mjs.map +0 -1
  82. package/dist/chunk-B3WDMWCT.mjs +0 -9
  83. package/dist/chunk-B3WDMWCT.mjs.map +0 -1
  84. package/dist/chunk-KVUG6BNI.mjs.map +0 -1
  85. package/dist/chunk-MLEYTQGK.mjs +0 -60
  86. package/dist/chunk-MLEYTQGK.mjs.map +0 -1
  87. package/dist/chunk-P6ILEQ5P.mjs.map +0 -1
  88. package/dist/chunk-PXXWEMNL.mjs.map +0 -1
  89. package/dist/chunk-QUSGPT5M.mjs.map +0 -1
  90. package/dist/chunk-SZAVAQ6S.mjs.map +0 -1
  91. package/dist/chunk-TSLTLQ6O.mjs.map +0 -1
  92. package/dist/chunk-WLVE3WNW.mjs.map +0 -1
  93. package/dist/chunk-XRFLDNAY.mjs.map +0 -1
  94. package/dist/keyboardUtilities-BWAyLS_D.d.mts +0 -56
@@ -3,12 +3,13 @@ import { useBreakpoints, useForcedColors, useMonochrome, useReducedMotion, useRe
3
3
  import { ThGlobalPreferencesContext } from './chunk-AE6P4KJB.mjs';
4
4
  import { useAppSelector } from './chunk-A575ZW4A.mjs';
5
5
  import { useColorScheme, useContrast } from './chunk-NQ2ZSGCX.mjs';
6
- import { isSupportedLocale, supportedLocales } from './chunk-B3WDMWCT.mjs';
6
+ import { isSupportedLocale, supportedLocales } from './chunk-GNROODJB.mjs';
7
7
  import { createContext, useMemo, useState, useCallback, useEffect, useContext, useRef } from 'react';
8
8
  import { I18nProvider, useLocale } from 'react-aria';
9
9
  import { jsx } from 'react/jsx-runtime';
10
10
  import fontStacks from '@readium/css/css/vars/fontStacks.json';
11
11
  import ReadiumCSSColors from '@readium/css/css/vars/colors.json';
12
+ import ReadiumCSSSettings from '@readium/css/css/vars/settings.json';
12
13
 
13
14
  // src/preferences/globalPreferences.ts
14
15
  var createGlobalPreferences = (params) => {
@@ -79,6 +80,11 @@ function ThGlobalPreferencesProvider({ adapter, initialPreferences, children })
79
80
  }
80
81
 
81
82
  // src/preferences/models/actions.ts
83
+ var TEXT_INPUT_SELECTORS = [
84
+ "input:not([type='button']):not([type='submit']):not([type='reset']):not([type='file']):not([type='checkbox']):not([type='radio'])",
85
+ "textarea",
86
+ "[contenteditable]"
87
+ ];
82
88
  var ThActionsKeys = /* @__PURE__ */ ((ThActionsKeys3) => {
83
89
  ThActionsKeys3["fullscreen"] = "fullscreen";
84
90
  ThActionsKeys3["jumpToPosition"] = "jumpToPosition";
@@ -120,8 +126,10 @@ var defaultActionKeysObject = {
120
126
  };
121
127
  var defaultSettingsAction = {
122
128
  visibility: "partially" /* partially */,
123
- shortcut: null,
124
- // `${ UnstableShortcutMetaKeywords.shift }+${ ShortcutMetaKeywords.alt }+P`,
129
+ shortcut: {
130
+ label: "P",
131
+ keyCombos: [{ keyCode: 80, shift: true, alt: true, suppressOnInteractiveElement: TEXT_INPUT_SELECTORS }]
132
+ },
125
133
  sheet: {
126
134
  defaultSheet: "popover" /* popover */,
127
135
  breakpoints: {
@@ -145,8 +153,10 @@ var defaultFullscreenAction = {
145
153
  };
146
154
  var defaultTocAction = {
147
155
  visibility: "partially" /* partially */,
148
- shortcut: null,
149
- // `${ UnstableShortcutMetaKeywords.shift }+${ ShortcutMetaKeywords.alt }+T`,
156
+ shortcut: {
157
+ label: "T",
158
+ keyCombos: [{ keyCode: 84, shift: true, alt: true, suppressOnInteractiveElement: TEXT_INPUT_SELECTORS }]
159
+ },
150
160
  sheet: {
151
161
  defaultSheet: "popover" /* popover */,
152
162
  breakpoints: {
@@ -164,8 +174,10 @@ var defaultTocAction = {
164
174
  };
165
175
  var defaultJumpToPositionAction = {
166
176
  visibility: "overflow" /* overflow */,
167
- shortcut: null,
168
- // `${ UnstableShortcutMetaKeywords.shift }+${ ShortcutMetaKeywords.alt }+J`,
177
+ shortcut: {
178
+ label: "J",
179
+ keyCombos: [{ keyCode: 74, shift: true, alt: true, suppressOnInteractiveElement: TEXT_INPUT_SELECTORS }]
180
+ },
169
181
  sheet: {
170
182
  defaultSheet: "popover" /* popover */,
171
183
  breakpoints: {
@@ -438,7 +450,10 @@ var defaultAudioVolumeAction = {
438
450
  };
439
451
  var defaultAudioPlaybackRateAction = {
440
452
  visibility: "always" /* always */,
441
- shortcut: null,
453
+ shortcut: {
454
+ label: "R",
455
+ keyCombos: [{ keyCode: 82, shift: true, alt: true, suppressOnInteractiveElement: TEXT_INPUT_SELECTORS }]
456
+ },
442
457
  sheet: {
443
458
  defaultSheet: "compactPopover" /* compactPopover */,
444
459
  breakpoints: { ["compact" /* compact */]: "bottomSheet" /* bottomSheet */ }
@@ -450,7 +465,10 @@ var defaultAudioPlaybackRateAction = {
450
465
  };
451
466
  var defaultAudioSleepTimerAction = {
452
467
  visibility: "partially" /* partially */,
453
- shortcut: null,
468
+ shortcut: {
469
+ label: "S",
470
+ keyCombos: [{ keyCode: 83, shift: true, alt: true, suppressOnInteractiveElement: TEXT_INPUT_SELECTORS }]
471
+ },
454
472
  sheet: {
455
473
  defaultSheet: "modal" /* modal */,
456
474
  breakpoints: {
@@ -469,7 +487,10 @@ var defaultAudioRemotePlaybackAction = {
469
487
  };
470
488
  var defaultAudioTocAction = {
471
489
  visibility: "partially" /* partially */,
472
- shortcut: null,
490
+ shortcut: {
491
+ label: "T",
492
+ keyCombos: [{ keyCode: 84, shift: true, alt: true, suppressOnInteractiveElement: TEXT_INPUT_SELECTORS }]
493
+ },
473
494
  sheet: {
474
495
  defaultSheet: "modal" /* modal */,
475
496
  breakpoints: {
@@ -796,7 +817,7 @@ var readiumCSSFontCollection = {
796
817
  label: "reader.preferences.fontFamily.oldStyle.descriptive",
797
818
  source: { type: "system" },
798
819
  spec: {
799
- family: fontStacks.RS__oldStyleTf,
820
+ family: fontStacks.oldStyleTf,
800
821
  weights: { type: "static", values: [400, 700] },
801
822
  fallbacks: []
802
823
  }
@@ -807,7 +828,7 @@ var readiumCSSFontCollection = {
807
828
  label: "reader.preferences.fontFamily.modern.descriptive",
808
829
  source: { type: "system" },
809
830
  spec: {
810
- family: fontStacks.RS__modernTf,
831
+ family: fontStacks.modernTf,
811
832
  weights: { type: "static", values: [400, 700] },
812
833
  fallbacks: []
813
834
  }
@@ -818,7 +839,7 @@ var readiumCSSFontCollection = {
818
839
  label: "reader.preferences.fontFamily.sans",
819
840
  source: { type: "system" },
820
841
  spec: {
821
- family: fontStacks.RS__sansTf,
842
+ family: fontStacks.sansTf,
822
843
  weights: { type: "static", values: [400, 700] },
823
844
  fallbacks: []
824
845
  }
@@ -829,7 +850,7 @@ var readiumCSSFontCollection = {
829
850
  label: "reader.preferences.fontFamily.humanist.descriptive",
830
851
  source: { type: "system" },
831
852
  spec: {
832
- family: fontStacks.RS__humanistTf,
853
+ family: fontStacks.humanistTf,
833
854
  weights: { type: "static", values: [400, 700] },
834
855
  fallbacks: []
835
856
  }
@@ -840,7 +861,7 @@ var readiumCSSFontCollection = {
840
861
  label: "reader.preferences.fontFamily.monospace",
841
862
  source: { type: "system" },
842
863
  spec: {
843
- family: fontStacks.RS__monospaceTf,
864
+ family: fontStacks.monospaceTf,
844
865
  weights: { type: "static", values: [400, 700] },
845
866
  fallbacks: []
846
867
  }
@@ -987,8 +1008,8 @@ var chineseTraditionalCollection = {
987
1008
  })
988
1009
  };
989
1010
  var japaneseCollection = {
990
- "japanese-sans": sysFontDef("japanese-sans", "Sans-Serif", '"Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif'),
991
- "japanese-serif": sysFontDef("japanese-serif", "Serif", '"Hiragino Mincho ProN", "Yu Mincho", "MS PMincho", serif'),
1011
+ "japanese-sans": sysFontDef("japanese-sans", "Sans-Serif", fontStacks["sans-serif-ja"]),
1012
+ "japanese-serif": sysFontDef("japanese-serif", "Serif", fontStacks["serif-ja"]),
992
1013
  ...createDefinitionsFromGoogleFonts({
993
1014
  cssUrl: "https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100..900&family=Noto+Serif+JP:wght@200..900",
994
1015
  options: {
@@ -1003,8 +1024,8 @@ var japaneseCollection = {
1003
1024
  })
1004
1025
  };
1005
1026
  var japaneseVerticalCollection = {
1006
- "japanese-v-serif": sysFontDef("japanese-v-serif", "Serif", '"Hiragino Mincho ProN", "Yu Mincho", "MS PMincho", serif'),
1007
- "japanese-v-sans": sysFontDef("japanese-v-sans", "Sans-Serif", '"Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif'),
1027
+ "japanese-v-sans": sysFontDef("japanese-v-sans", "Sans-Serif", fontStacks["sans-serif-ja-v"]),
1028
+ "japanese-v-serif": sysFontDef("japanese-v-serif", "Serif", fontStacks["serif-ja-v"]),
1008
1029
  ...createDefinitionsFromGoogleFonts({
1009
1030
  cssUrl: "https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@200..900&family=Shippori+Mincho:wght@400..800&family=Noto+Sans+JP:wght@100..900",
1010
1031
  options: {
@@ -1142,9 +1163,9 @@ var ThThemeKeys = /* @__PURE__ */ ((ThThemeKeys3) => {
1142
1163
  return ThThemeKeys3;
1143
1164
  })(ThThemeKeys || {});
1144
1165
  var lightTheme = {
1145
- background: ReadiumCSSColors.RS__backgroundColor,
1166
+ background: ReadiumCSSColors.backgroundColor,
1146
1167
  // Color of background
1147
- text: ReadiumCSSColors.RS__textColor,
1168
+ text: ReadiumCSSColors.textColor,
1148
1169
  // Color of text
1149
1170
  link: "#0000ee",
1150
1171
  // Color of links
@@ -1156,7 +1177,7 @@ var lightTheme = {
1156
1177
  // color for :disabled
1157
1178
  hover: "#d9d9d9",
1158
1179
  // color of background for :hover
1159
- onHover: ReadiumCSSColors.RS__textColor,
1180
+ onHover: ReadiumCSSColors.textColor,
1160
1181
  // color of text for :hover
1161
1182
  select: "#b4d8fe",
1162
1183
  // color of selected background
@@ -1467,7 +1488,8 @@ var defaultAudioPreferences = createAudioPreferences({
1467
1488
  },
1468
1489
  shortcuts: {
1469
1490
  representation: "symbol" /* symbol */,
1470
- joiner: "+"
1491
+ joiner: "+",
1492
+ displayIn: ["tooltip", "menuItem"]
1471
1493
  },
1472
1494
  docking: {
1473
1495
  displayOrder: [
@@ -1954,7 +1976,8 @@ var defaultPreferences = createPreferences({
1954
1976
  },
1955
1977
  shortcuts: {
1956
1978
  representation: "symbol" /* symbol */,
1957
- joiner: "+"
1979
+ joiner: "+",
1980
+ displayIn: ["tooltip", "menuItem"]
1958
1981
  },
1959
1982
  actions: {
1960
1983
  reflowOrder: [
@@ -1974,13 +1997,7 @@ var defaultPreferences = createPreferences({
1974
1997
  "toc" /* toc */,
1975
1998
  "fullscreen" /* fullscreen */
1976
1999
  ],
1977
- collapse: {
1978
- // Number of partially icons to display
1979
- // value "all" a keyword for the length of displayOrder above
1980
- // Icons with visibility always are excluded from collapsing
1981
- ["compact" /* compact */]: 2,
1982
- ["medium" /* medium */]: 3
1983
- },
2000
+ collapse: true,
1984
2001
  keys: {
1985
2002
  ["settings" /* settings */]: defaultSettingsAction,
1986
2003
  ["fullscreen" /* fullscreen */]: defaultFullscreenAction,
@@ -2633,27 +2650,31 @@ var usePreferenceKeys = () => {
2633
2650
  webPubSpacingPresetKeys
2634
2651
  };
2635
2652
  };
2636
- var EXCLUDED_CJK = [
2637
- "textAlign" /* textAlign */,
2638
- "hyphens" /* hyphens */,
2639
- "ligatures" /* ligatures */,
2640
- "paragraphIndent" /* paragraphIndent */,
2641
- "wordSpacing" /* wordSpacing */,
2642
- "textNormalize" /* textNormalize */
2643
- ];
2653
+ var READIUM_CSS_TO_SETTINGS_KEY = {
2654
+ bodyHyphens: "hyphens" /* hyphens */,
2655
+ a11yNormalize: "textNormalize" /* textNormalize */,
2656
+ letterSpacing: "letterSpacing" /* letterSpacing */,
2657
+ textAlign: "textAlign" /* textAlign */,
2658
+ paraIndent: "paragraphIndent" /* paragraphIndent */,
2659
+ wordSpacing: "wordSpacing" /* wordSpacing */,
2660
+ ligatures: "ligatures" /* ligatures */,
2661
+ noRuby: "noRuby" /* noRuby */
2662
+ };
2663
+ var globallyAdded = new Set(
2664
+ Object.values(ReadiumCSSSettings).flatMap((entry) => entry.added)
2665
+ );
2666
+ var deriveExcluded = (entry) => {
2667
+ const fromDisabled = entry.disabled.map((k) => READIUM_CSS_TO_SETTINGS_KEY[k]).filter((k) => k !== void 0);
2668
+ const fromAddedInversion = [...globallyAdded].filter((k) => !entry.added.includes(k)).map((k) => READIUM_CSS_TO_SETTINGS_KEY[k]).filter((k) => k !== void 0);
2669
+ return [...fromDisabled, ...fromAddedInversion];
2670
+ };
2671
+ var CJK_VERTICAL_EXCLUDED = [...deriveExcluded(ReadiumCSSSettings["cjk-vertical"]), "layout" /* layout */];
2644
2672
  var EXCLUDED_BY_SCRIPT_MODE = {
2645
- "ltr": [
2646
- "noRuby" /* noRuby */
2647
- ],
2648
- "rtl": [
2649
- "hyphens" /* hyphens */,
2650
- "letterSpacing" /* letterSpacing */,
2651
- "textNormalize" /* textNormalize */,
2652
- "noRuby" /* noRuby */
2653
- ],
2654
- "cjk-horizontal": EXCLUDED_CJK,
2655
- "cjk-vertical": [...EXCLUDED_CJK, "layout" /* layout */],
2656
- "mongolian-vertical": [...EXCLUDED_CJK, "layout" /* layout */]
2673
+ "ltr": deriveExcluded(ReadiumCSSSettings["default"]),
2674
+ "rtl": deriveExcluded(ReadiumCSSSettings["rtl"]),
2675
+ "cjk-horizontal": deriveExcluded(ReadiumCSSSettings["cjk-horizontal"]),
2676
+ "cjk-vertical": CJK_VERTICAL_EXCLUDED,
2677
+ "mongolian-vertical": CJK_VERTICAL_EXCLUDED
2657
2678
  };
2658
2679
  var useFilteredPreferenceKeys = () => {
2659
2680
  const keys = usePreferenceKeys();
@@ -3759,6 +3780,49 @@ var proxyUrl = (url) => {
3759
3780
  }
3760
3781
  return url;
3761
3782
  };
3783
+ var initRanges = (prefs) => {
3784
+ const ranges = {};
3785
+ let prev = null;
3786
+ Object.entries(prefs).forEach(([key, value]) => {
3787
+ if (value && !isNaN(value)) {
3788
+ const max = value;
3789
+ const min = prev ? prev + 1 : null;
3790
+ ranges[key] = { min, max };
3791
+ prev = value;
3792
+ } else if (!value && key === "xLarge" /* xLarge */ && prev) {
3793
+ ranges[key] = { min: prev + 1, max: null };
3794
+ }
3795
+ });
3796
+ return ranges;
3797
+ };
3798
+ var resolveBreakpoint = (width, ranges) => {
3799
+ for (const [key, range] of Object.entries(ranges)) {
3800
+ const { min, max } = range;
3801
+ if (min !== null && width < min) continue;
3802
+ if (max !== null && width > max) continue;
3803
+ return key;
3804
+ }
3805
+ return null;
3806
+ };
3807
+ var useContainerBreakpoints = (map, onChange) => {
3808
+ const [containerEl, setContainerEl] = useState(null);
3809
+ useEffect(() => {
3810
+ if (!containerEl) return;
3811
+ const ranges = initRanges(map);
3812
+ const observer = new ResizeObserver((entries) => {
3813
+ const entry = entries[0];
3814
+ if (!entry) return;
3815
+ const width = entry.contentRect.width;
3816
+ const breakpoint = resolveBreakpoint(width, ranges);
3817
+ onChange?.(breakpoint);
3818
+ });
3819
+ observer.observe(containerEl);
3820
+ return () => observer.disconnect();
3821
+ }, [containerEl, map, onChange]);
3822
+ return useCallback((el) => {
3823
+ setContainerEl(el);
3824
+ }, []);
3825
+ };
3762
3826
 
3763
3827
  // src/preferences/hooks/useTheming.ts
3764
3828
  var useTheming = ({
@@ -3776,11 +3840,13 @@ var useTheming = ({
3776
3840
  onMonochromeChange,
3777
3841
  onReducedMotionChange,
3778
3842
  onReducedTransparencyChange,
3779
- onCoverThemeGenerated
3843
+ onCoverThemeGenerated,
3844
+ onContainerBreakpointChange
3780
3845
  }) => {
3781
3846
  const [coverThemeTokens, setCoverThemeTokens] = useState(null);
3782
3847
  const [coverThemeFailed, setCoverThemeFailed] = useState(false);
3783
3848
  const breakpoints = useBreakpoints(breakpointsMap, onBreakpointChange);
3849
+ const setContainerRef = useContainerBreakpoints(breakpointsMap, onContainerBreakpointChange);
3784
3850
  const colorScheme = useColorScheme(onColorSchemeChange);
3785
3851
  const colorSchemeRef = useRef(colorScheme);
3786
3852
  const contrast = useContrast(onContrastChange);
@@ -3878,7 +3944,8 @@ var useTheming = ({
3878
3944
  reducedMotion,
3879
3945
  reducedTransparency,
3880
3946
  coverThemeTokens,
3881
- themeResolved
3947
+ themeResolved,
3948
+ setContainerRef
3882
3949
  };
3883
3950
  };
3884
3951
  var useSharedPreferences = () => {
@@ -3908,6 +3975,6 @@ var useSharedPreferences = () => {
3908
3975
  };
3909
3976
  };
3910
3977
 
3911
- export { ThActionsKeys, ThAudioActionKeys, ThAudioAffordance, ThAudioKeys, ThAudioMemoryPreferencesAdapter, ThAudioPreferencesContext, ThAudioPreferencesProvider, ThDockingKeys, ThDockingTypes, ThGlobalMemoryPreferencesAdapter, ThGlobalPreferencesProvider, ThLayoutOptions, ThLineHeightOptions, ThMemoryPreferencesAdapter, ThPreferencesContext, ThPreferencesProvider, ThSettingsContainerKeys, ThSettingsKeys, ThSettingsRangePlaceholder, ThSettingsRangeVariant, ThSettingsTimerVariant, ThSheetHeaderVariant, ThSheetTypes, ThSpacingPresetKeys, ThSpacingSettingsKeys, ThTextAlignOptions, ThTextSettingsKeys, ThThemeKeys, arabicFarsiCollection, buildThemeObject, chineseSimplifiedCollection, chineseTraditionalCollection, contrast1Theme, contrast2Theme, contrast3Theme, createAudioPreferences, createDefinitionFromStaticFonts, createDefinitionsFromBunnyFonts, createDefinitionsFromGoogleFonts, createGlobalPreferences, createPreferences, darkTheme, defaultActionKeysObject, defaultAudioContentProtectionConfig, defaultAudioPlaybackRate, defaultAudioPlaybackRateAction, defaultAudioPreferences, defaultAudioPreferencesContextValue, defaultAudioRemotePlaybackAction, defaultAudioSkipBackwardInterval, defaultAudioSkipForwardInterval, defaultAudioSkipInterval, defaultAudioSleepTimer, defaultAudioSleepTimerAction, defaultAudioSleepTimerPresetList, defaultAudioTocAction, defaultAudioVolume, defaultAudioVolumeAction, defaultContentProtectionConfig, defaultFontCollection, defaultFullscreenAction, defaultJumpToPositionAction, defaultLetterSpacing, defaultLineHeights, defaultParagraphIndent, defaultParagraphSpacing, defaultPreferences, defaultPreferencesContextValue, defaultSettingsAction, defaultSpacingPresets, defaultSpacingPresetsOrder, defaultSpacingSettingsMain, defaultSpacingSettingsSubpanel, defaultTextSettingsMain, defaultTextSettingsSubpanel, defaultTocAction, defaultWordSpacing, defaultZoom, devContentProtectionConfig, hebrewCollection, japaneseCollection, japaneseVerticalCollection, koreanCollection, lightTheme, paperTheme, prefixString, proxyUrl, readiumCSSFontCollection, resolveAudioContentProtectionConfig, resolveContentProtectionConfig, sepiaTheme, tamilCollection, useActionsPreferences, useAudioActionsPreferences, useAudioPreferences, useFilteredPreferenceKeys, usePreferenceKeys, usePreferences, useSharedPreferences, useTheming, validateObjectKeys };
3912
- //# sourceMappingURL=chunk-XRFLDNAY.mjs.map
3913
- //# sourceMappingURL=chunk-XRFLDNAY.mjs.map
3978
+ export { TEXT_INPUT_SELECTORS, ThActionsKeys, ThAudioActionKeys, ThAudioAffordance, ThAudioKeys, ThAudioMemoryPreferencesAdapter, ThAudioPreferencesContext, ThAudioPreferencesProvider, ThDockingKeys, ThDockingTypes, ThGlobalMemoryPreferencesAdapter, ThGlobalPreferencesProvider, ThLayoutOptions, ThLineHeightOptions, ThMemoryPreferencesAdapter, ThPreferencesContext, ThPreferencesProvider, ThSettingsContainerKeys, ThSettingsKeys, ThSettingsRangePlaceholder, ThSettingsRangeVariant, ThSettingsTimerVariant, ThSheetHeaderVariant, ThSheetTypes, ThSpacingPresetKeys, ThSpacingSettingsKeys, ThTextAlignOptions, ThTextSettingsKeys, ThThemeKeys, arabicFarsiCollection, buildThemeObject, chineseSimplifiedCollection, chineseTraditionalCollection, contrast1Theme, contrast2Theme, contrast3Theme, createAudioPreferences, createDefinitionFromStaticFonts, createDefinitionsFromBunnyFonts, createDefinitionsFromGoogleFonts, createGlobalPreferences, createPreferences, darkTheme, defaultActionKeysObject, defaultAudioContentProtectionConfig, defaultAudioPlaybackRate, defaultAudioPlaybackRateAction, defaultAudioPreferences, defaultAudioPreferencesContextValue, defaultAudioRemotePlaybackAction, defaultAudioSkipBackwardInterval, defaultAudioSkipForwardInterval, defaultAudioSkipInterval, defaultAudioSleepTimer, defaultAudioSleepTimerAction, defaultAudioSleepTimerPresetList, defaultAudioTocAction, defaultAudioVolume, defaultAudioVolumeAction, defaultContentProtectionConfig, defaultFontCollection, defaultFullscreenAction, defaultJumpToPositionAction, defaultLetterSpacing, defaultLineHeights, defaultParagraphIndent, defaultParagraphSpacing, defaultPreferences, defaultPreferencesContextValue, defaultSettingsAction, defaultSpacingPresets, defaultSpacingPresetsOrder, defaultSpacingSettingsMain, defaultSpacingSettingsSubpanel, defaultTextSettingsMain, defaultTextSettingsSubpanel, defaultTocAction, defaultWordSpacing, defaultZoom, devContentProtectionConfig, hebrewCollection, japaneseCollection, japaneseVerticalCollection, koreanCollection, lightTheme, paperTheme, prefixString, proxyUrl, readiumCSSFontCollection, resolveAudioContentProtectionConfig, resolveContentProtectionConfig, sepiaTheme, tamilCollection, useActionsPreferences, useAudioActionsPreferences, useAudioPreferences, useFilteredPreferenceKeys, usePreferenceKeys, usePreferences, useSharedPreferences, useTheming, validateObjectKeys };
3979
+ //# sourceMappingURL=chunk-PRQBFBJ7.mjs.map
3980
+ //# sourceMappingURL=chunk-PRQBFBJ7.mjs.map