@edrlab/thorium-web 1.0.0-beta.2 → 1.0.0-beta.3

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 (63) hide show
  1. package/LICENSE +1 -1
  2. package/dist/{ThSettingsWrapper-De4qvjsh.d.mts → ThSettingsWrapper-CA2_0nQz.d.mts} +1 -1
  3. package/dist/{actionsReducer-e808e6V_.d.mts → actionsReducer-D4Mphfuv.d.mts} +1 -1
  4. package/dist/chunk-BNPR6V7V.mjs.map +1 -1
  5. package/dist/chunk-IEYR7QV7.mjs.map +1 -1
  6. package/dist/{chunk-O4MBY6P4.mjs → chunk-KQLSID7M.mjs} +52 -20
  7. package/dist/chunk-KQLSID7M.mjs.map +1 -0
  8. package/dist/chunk-MLEYTQGK.mjs.map +1 -1
  9. package/dist/chunk-NA3KMUS4.mjs +417 -0
  10. package/dist/chunk-NA3KMUS4.mjs.map +1 -0
  11. package/dist/{chunk-GHEGQBCW.mjs → chunk-NOV43IG4.mjs} +4 -18
  12. package/dist/chunk-NOV43IG4.mjs.map +1 -0
  13. package/dist/chunk-NQ2ZSGCX.mjs.map +1 -1
  14. package/dist/{chunk-TWGRY5SW.mjs → chunk-RQFPGXWN.mjs} +29 -22
  15. package/dist/chunk-RQFPGXWN.mjs.map +1 -0
  16. package/dist/{chunk-BVSROK7Z.mjs → chunk-SDVDRPT5.mjs} +116 -6
  17. package/dist/chunk-SDVDRPT5.mjs.map +1 -0
  18. package/dist/chunk-TTGURRX3.mjs.map +1 -1
  19. package/dist/{chunk-PGZF5NO2.mjs → chunk-TXILKP4F.mjs} +16 -12
  20. package/dist/chunk-TXILKP4F.mjs.map +1 -0
  21. package/dist/components/Epub/index.d.mts +48 -25
  22. package/dist/components/Epub/index.mjs +877 -407
  23. package/dist/components/Epub/index.mjs.map +1 -1
  24. package/dist/{const-DGYvRLhk.d.mts → const-IAfi9t_g.d.mts} +14 -11
  25. package/dist/core/Components/index.d.mts +52 -6
  26. package/dist/core/Components/index.mjs +2 -2
  27. package/dist/core/Helpers/index.d.mts +3 -9
  28. package/dist/core/Helpers/index.mjs +2 -3
  29. package/dist/core/Hooks/index.d.mts +15 -5
  30. package/dist/core/Hooks/index.mjs +2 -3
  31. package/dist/{enums-DxbWWvn7.d.mts → enums-DqGQ66r1.d.mts} +1 -23
  32. package/dist/lib/index.d.mts +355 -11
  33. package/dist/lib/index.mjs +2 -3
  34. package/dist/{overflowMenu.module-XQRI7RJJ.module.css → overflowMenu.module-FO27A2A3.module.css} +12 -0
  35. package/dist/preferences/index.d.mts +6 -6
  36. package/dist/preferences/index.mjs +2 -3
  37. package/dist/publicationGrid.module-T6ISNRGM.module.css +70 -0
  38. package/dist/{reader-QFK7DGLX.css → reader-NGCQJKLX.css} +74 -36
  39. package/dist/{readerArrowButton.module-NHAUIQXS.module.css → readerArrowButton.module-EFLOIADG.module.css} +4 -0
  40. package/dist/{readerHeader.module-OBKZATSW.module.css → readerHeader.module-K7OLOIJP.module.css} +2 -7
  41. package/dist/{readerLoader.module-U6LLXOVQ.module.css → readerLoader.module-KDBPCQZJ.module.css} +1 -1
  42. package/dist/readerPagination.module-W4IAEOSH.module.css +73 -0
  43. package/dist/readerProgression.module-7PU7L74S.module.css +5 -0
  44. package/dist/{readerSharedUI.module-MCLGNG22.module.css → readerSharedUI.module-Y2VDWFS5.module.css} +1 -5
  45. package/dist/{sheets.module-DDN7GPMG.module.css → sheets.module-NA32WOSZ.module.css} +4 -4
  46. package/dist/{toc.module-XJLXQM7G.module.css → toc.module-KNW5CKIY.module.css} +1 -0
  47. package/dist/{useBreakpoints-I7vHrywa.d.mts → useBreakpoints-BQaiwecQ.d.mts} +1 -1
  48. package/dist/{useEpubNavigator-BrV4MYJy.d.mts → useEpubNavigator-DFRJ_tHa.d.mts} +9 -10
  49. package/dist/{usePreferences-B55XqFto.d.mts → usePreferences-BMyBhq7F.d.mts} +1 -1
  50. package/dist/useTimeline-Bid5B7AQ.d.mts +39 -0
  51. package/package.json +31 -22
  52. package/dist/bookUrlConverter.module-J46O27CR.module.css +0 -63
  53. package/dist/chunk-3QS3WKRC.mjs +0 -29
  54. package/dist/chunk-3QS3WKRC.mjs.map +0 -1
  55. package/dist/chunk-BVSROK7Z.mjs.map +0 -1
  56. package/dist/chunk-GHEGQBCW.mjs.map +0 -1
  57. package/dist/chunk-JS5WI5D4.mjs +0 -600
  58. package/dist/chunk-JS5WI5D4.mjs.map +0 -1
  59. package/dist/chunk-O4MBY6P4.mjs.map +0 -1
  60. package/dist/chunk-PGZF5NO2.mjs.map +0 -1
  61. package/dist/chunk-TWGRY5SW.mjs.map +0 -1
  62. package/dist/index-ClB-1iNN.d.mts +0 -356
  63. package/dist/readerProgression.module-S5R3Y6JI.module.css +0 -11
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/preferences/models/const.ts","../src/preferences/preferences.ts","../src/preferences/defaultPreferences.ts","../src/preferences/ThPreferencesContext.ts","../src/preferences/ThDirectionSetter.tsx","../src/preferences/ThPreferencesProvider.tsx","../src/preferences/helpers/buildThemeObject.ts","../src/preferences/hooks/usePreferences.ts","../src/preferences/hooks/usePreferenceKeys.ts","../src/preferences/hooks/useTheming.ts"],"names":["useEffect"],"mappings":"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","file":"chunk-TXILKP4F.mjs","sourcesContent":["\"use client\";\n\nimport fontStacks from \"@readium/css/css/vars/fontStacks.json\";\n\nimport { ThLineHeightOptions, ThSettingsRangeVariant, ThSpacingSettingsKeys, ThTextSettingsKeys } from \"./enums\";\nimport { ThActionsTokens, ThSettingsRangePref } from \"../preferences\";\nimport { ThCollapsibilityVisibility } from \"@/core/Components/Actions/hooks/useCollapsibility\";\n\nexport const defaultActionKeysObject: ThActionsTokens = {\n visibility: ThCollapsibilityVisibility.partially,\n shortcut: null\n};\n\nexport const defaultTextSettingsMain = [ThTextSettingsKeys.fontFamily];\n\nexport const defaultTextSettingsSubpanel = [\n ThTextSettingsKeys.fontFamily,\n ThTextSettingsKeys.fontWeight,\n ThTextSettingsKeys.textAlign,\n ThTextSettingsKeys.hyphens,\n ThTextSettingsKeys.textNormalize\n]\n\nexport const defaultSpacingSettingsMain = [\n ThSpacingSettingsKeys.lineHeight\n];\n\nexport const defaultSpacingSettingsSubpanel = [\n ThSpacingSettingsKeys.publisherStyles,\n ThSpacingSettingsKeys.lineHeight,\n ThSpacingSettingsKeys.wordSpacing,\n ThSpacingSettingsKeys.letterSpacing,\n ThSpacingSettingsKeys.paragraphSpacing,\n ThSpacingSettingsKeys.paragraphIndent\n]\n\nexport const defaultFontFamilyOptions = {\n publisher: null,\n oldStyle: fontStacks.RS__oldStyleTf,\n modern: fontStacks.RS__modernTf,\n sans: fontStacks.RS__sansTf,\n humanist: fontStacks.RS__humanistTf,\n monospace: fontStacks.RS__monospaceTf\n}\n\nexport const defaultFontSize: Required<ThSettingsRangePref> = {\n variant: ThSettingsRangeVariant.numberField,\n range: [0.7, 2.5],\n step: 0.05\n}\n\nexport const defaultParagraphSpacing: Required<ThSettingsRangePref> = {\n variant: ThSettingsRangeVariant.slider,\n range: [0, 3],\n step: 0.5\n}\n\nexport const defaultParagraphIndent: Required<ThSettingsRangePref> = {\n variant: ThSettingsRangeVariant.slider,\n range: [0, 2],\n step: 0.25\n}\n\nexport const defaultWordSpacing: Required<ThSettingsRangePref> = {\n variant: ThSettingsRangeVariant.numberField,\n range: [0, 1],\n step: 0.1\n}\n\nexport const defaultLetterSpacing: Required<ThSettingsRangePref> = {\n variant: ThSettingsRangeVariant.numberField,\n range: [0, 0.5],\n step: 0.05\n}\n\nexport const defaultLineHeights = {\n [ThLineHeightOptions.small]: 1.25,\n [ThLineHeightOptions.medium]: 1.5,\n [ThLineHeightOptions.large]: 1.75\n}","import { UnstableShortcutRepresentation } from \"@/core/Helpers/keyboardUtilities\";\nimport { BreakpointsMap } from \"@/core/Hooks/useBreakpoints\";\nimport { ThemeTokens } from \"@/preferences/hooks/useTheming\";\nimport { \n ThActionsKeys,\n ThDockingKeys,\n ThDockingTypes,\n ThLineHeightOptions, \n ThSettingsKeys, \n ThSettingsRangeVariant, \n ThSheetHeaderVariant, \n ThSheetTypes, \n ThSpacingSettingsKeys, \n ThTextSettingsKeys, \n ThThemeKeys, \n ThLayoutDirection, \n ThLayoutUI\n} from \"./models/enums\";\nimport { ThCollapsibility, ThCollapsibilityVisibility } from \"@/core/Components/Actions/hooks/useCollapsibility\";\nimport { defaultActionKeysObject } from \"./models\";\n\nexport type ThBottomSheetDetent = \"content-height\" | \"full-height\";\n\nexport interface ThActionsSnappedPref {\n scrim?: boolean | string;\n maxWidth?: number | null;\n maxHeight?: number | ThBottomSheetDetent;\n peekHeight?: number | ThBottomSheetDetent;\n minHeight?: number | ThBottomSheetDetent;\n}\n\nexport interface ThActionsDockedPref {\n dockable: ThDockingTypes,\n dragIndicator?: boolean,\n width?: number,\n minWidth?: number,\n maxWidth?: number\n}\n\nexport interface ThActionsTokens {\n visibility: ThCollapsibilityVisibility;\n shortcut: string | null;\n sheet?: {\n defaultSheet: Exclude<ThSheetTypes, ThSheetTypes.dockedStart | ThSheetTypes.dockedEnd>;\n breakpoints: BreakpointsMap<ThSheetTypes>;\n };\n docked?: ThActionsDockedPref;\n snapped?: ThActionsSnappedPref;\n};\n\nexport interface ThActionsPref<T extends string> {\n reflowOrder: T[];\n fxlOrder: T[];\n collapse: ThCollapsibility;\n keys: {\n [key in T]: ThActionsTokens;\n }\n};\n\nexport interface ThDockingPref<T extends string> {\n displayOrder: T[];\n collapse: ThCollapsibility;\n dock: BreakpointsMap<ThDockingTypes> | boolean; \n keys: {\n [key in T]: Pick<ThActionsTokens, \"visibility\" | \"shortcut\">;\n }\n};\n\nexport interface ThSettingsGroupPref<T> {\n main?: T[];\n subPanel?: T[] | null;\n header?: ThSheetHeaderVariant;\n}\n\nexport interface ThSettingsRangePref {\n variant?: ThSettingsRangeVariant;\n range?: [number, number];\n step?: number;\n}\n\nexport type ThSettingsKeyTypes = {\n [ThSettingsKeys.letterSpacing]?: ThSettingsRangePref;\n [ThSettingsKeys.lineHeight]?: {\n [key in Exclude<ThLineHeightOptions, ThLineHeightOptions.publisher>]: number\n };\n [ThSettingsKeys.paragraphIndent]?: ThSettingsRangePref;\n [ThSettingsKeys.paragraphSpacing]?: ThSettingsRangePref;\n [ThSettingsKeys.wordSpacing]?: ThSettingsRangePref;\n [ThSettingsKeys.zoom]?: ThSettingsRangePref;\n}\n\nexport type ThConstraintKeys = Extract<ThSheetTypes, ThSheetTypes.bottomSheet | ThSheetTypes.popover> | \"pagination\";\n\n// Simplified type for customizable keys\nexport type CustomKeyType = string;\n\nexport interface CustomizableKeys {\n actionKeys: CustomKeyType;\n themeKeys: CustomKeyType;\n settingsKeys: CustomKeyType;\n textSettingsKeys: CustomKeyType;\n spacingSettingsKeys: CustomKeyType;\n constraintsKeys: CustomKeyType;\n customSettingsKeyTypes: Record<string, unknown>;\n}\n\n// Default keys with standard enum values\nexport interface DefaultKeys {\n actionKeys: ThActionsKeys;\n themeKeys: ThThemeKeys;\n settingsKeys: ThSettingsKeys;\n textSettingsKeys: ThTextSettingsKeys;\n spacingSettingsKeys: ThSpacingSettingsKeys;\n constraintsKeys: ThConstraintKeys;\n customSettingsKeyTypes: ThSettingsKeyTypes;\n}\n\n// Type helper for key arrays and objects\nexport type KeysOf<T, D> = T extends CustomKeyType ? T : D;\n\n// Main preferences interface with simplified generics\nexport interface ThPreferences<T extends Partial<CustomizableKeys> = {}> {\n direction?: ThLayoutDirection;\n locale?: string;\n typography: {\n minimalLineLength?: number | null;\n maximalLineLength?: number | null;\n optimalLineLength: number;\n pageGutter: number;\n };\n theming: {\n arrow: {\n size: number;\n offset: number;\n tooltipDelay?: number;\n };\n icon: {\n size: number;\n tooltipOffset: number;\n tooltipDelay?: number;\n };\n layout: {\n ui?: {\n reflow?: ThLayoutUI,\n fxl?: ThLayoutUI\n };\n radius: number;\n spacing: number;\n defaults: {\n dockingWidth: number;\n scrim: string;\n };\n constraints?: {\n [key in KeysOf<T[\"constraintsKeys\"], ThConstraintKeys>]?: number | null\n }\n };\n breakpoints: BreakpointsMap<number | null>;\n themes: {\n reflowOrder: Array<KeysOf<T[\"themeKeys\"], ThThemeKeys> | \"auto\">;\n fxlOrder: Array<KeysOf<T[\"themeKeys\"], ThThemeKeys> | \"auto\">;\n systemThemes?: {\n light: KeysOf<T[\"themeKeys\"], ThThemeKeys>;\n dark: KeysOf<T[\"themeKeys\"], ThThemeKeys>;\n };\n keys: {\n [key in KeysOf<T[\"themeKeys\"], ThThemeKeys>]: ThemeTokens;\n };\n };\n };\n affordances: {\n scroll: {\n hintInImmersive: boolean;\n toggleOnMiddlePointer: Array<\"tap\" | \"click\">;\n hideOnForwardScroll: boolean;\n showOnBackwardScroll: boolean;\n }\n };\n actions: ThActionsPref<KeysOf<T[\"actionKeys\"], ThActionsKeys>>;\n shortcuts: {\n representation: UnstableShortcutRepresentation;\n joiner?: string;\n };\n docking: ThDockingPref<ThDockingKeys>;\n settings: {\n reflowOrder: Array<KeysOf<T[\"settingsKeys\"], ThSettingsKeys>>;\n fxlOrder: Array<KeysOf<T[\"settingsKeys\"], ThSettingsKeys>>;\n keys?: T[\"customSettingsKeyTypes\"] | ThSettingsKeyTypes;\n text?: ThSettingsGroupPref<KeysOf<T[\"textSettingsKeys\"], ThTextSettingsKeys>>;\n spacing?: ThSettingsGroupPref<KeysOf<T[\"spacingSettingsKeys\"], ThSpacingSettingsKeys>>;\n };\n}\n\n/**\n * Creates a new preferences object with the provided parameters\n * @param params The preferences object to create\n * @returns A new preferences object\n */\nexport const createPreferences = <T extends Partial<CustomizableKeys>>(\n params: ThPreferences<T>\n): ThPreferences<T> => {\n // Helper function to validate keys against the provided order arrays\n const validateObjectKeys = <K extends string, V>(\n orderArrays: K[][],\n keysObj: Record<string, V>,\n context: string,\n specialCase?: string,\n fallback?: V\n ): void => {\n // Combine all arrays and filter out special cases if needed\n const allOrders = new Set<K>(\n orderArrays.flatMap(arr => specialCase ? arr.filter(k => k !== specialCase) : arr)\n );\n \n // Get available keys\n const availableKeys = Object.keys(keysObj);\n \n // Check that all keys exist and add from fallback if available\n allOrders.forEach(key => {\n if (!availableKeys.includes(key)) {\n if (fallback) {\n // Add the missing key from fallback to the params object\n keysObj[key] = fallback;\n }\n console.warn(`Key \"${ key }\" in ${ context } order arrays not found in ${ context }.keys.${ fallback ? `\\nUsing fallback: ${ JSON.stringify(fallback) }` : \"\" }`);\n }\n });\n };\n \n // Validate actions\n if (params.actions) {\n validateObjectKeys<KeysOf<T[\"actionKeys\"], ThActionsKeys>, ThActionsTokens>(\n [params.actions.reflowOrder, params.actions.fxlOrder],\n params.actions.keys as Record<string, ThActionsTokens>,\n \"actions\",\n undefined,\n defaultActionKeysObject as ThActionsTokens\n );\n }\n \n // Validate themes\n if (params.theming?.themes) {\n validateObjectKeys<KeysOf<T[\"themeKeys\"], ThThemeKeys> | \"auto\", ThemeTokens>(\n [params.theming.themes.reflowOrder, params.theming.themes.fxlOrder],\n params.theming.themes.keys as Record<string, ThemeTokens>,\n \"theming.themes\",\n \"auto\" // Special case for themes\n );\n }\n \n return params;\n};\n\n// Simplified type helpers\nexport type ActionKeyType = ThActionsKeys | CustomKeyType;\nexport type ThemeKeyType = ThThemeKeys | CustomKeyType;\nexport type SettingsKeyType = ThSettingsKeys | CustomKeyType;\nexport type TextSettingsKeyType = ThTextSettingsKeys | CustomKeyType;\nexport type SpacingSettingsKeyType = ThSpacingSettingsKeys | CustomKeyType;","\"use client\";\n\nimport { UnstableShortcutMetaKeywords, UnstableShortcutRepresentation } from \"@/core/Helpers/keyboardUtilities\";\nimport { ThCollapsibilityVisibility } from \"@/core/Components/Actions/hooks/useCollapsibility\";\nimport { \n ThActionsKeys, \n ThBreakpoints, \n ThDockingTypes, \n ThDockingKeys, \n ThSettingsKeys, \n ThSheetTypes, \n ThThemeKeys, \n ThLayoutDirection,\n ThLineHeightOptions,\n ThTextSettingsKeys,\n ThSheetHeaderVariant,\n ThLayoutUI\n} from \"./models/enums\";\nimport { createPreferences } from \"./preferences\";\n\nimport dayMode from \"@readium/css/css/vars/day.json\";\nimport sepiaMode from \"@readium/css/css/vars/sepia.json\";\nimport nightMode from \"@readium/css/css/vars/night.json\";\n\nexport const defaultPreferences = createPreferences({\n direction: ThLayoutDirection.ltr,\n locale: \"en\",\n typography: {\n minimalLineLength: 40, // undefined | null | number of characters. If 2 cols will switch to 1 based on this\n optimalLineLength: 65, // number of characters. If auto layout, picks colCount based on this\n maximalLineLength: 75, // undefined | null | number of characters.\n pageGutter: 20\n },\n theming: {\n arrow: {\n size: 40, // Size of the left and right arrows in px\n offset: 5 // offset of the arrows from the edges in px\n },\n icon: {\n size: 24, // Size of icons in px\n tooltipOffset: 10 // offset of tooltip in px\n },\n layout: {\n ui: {\n reflow: ThLayoutUI.layered,\n fxl: ThLayoutUI.layered\n },\n radius: 5, // border-radius of containers\n spacing: 20, // padding of containers/sheets\n defaults: {\n dockingWidth: 340, // default width of resizable panels\n scrim: \"rgba(0, 0, 0, 0.2)\" // default scrim/underlay bg-color\n },\n constraints: {\n [ThSheetTypes.bottomSheet]: 600, // Max-width of all bottom sheets\n [ThSheetTypes.popover]: 600, // Max-width of all popover sheets\n pagination: null // Max-width of pagination component\n }\n },\n breakpoints: {\n // See https://m3.material.io/foundations/layout/applying-layout/window-size-classes\n [ThBreakpoints.compact]: 600, // Phone in portrait\n [ThBreakpoints.medium]: 840, // Tablet in portrait, Foldable in portrait (unfolded)\n [ThBreakpoints.expanded]: 1200, // Phone in landscape, Tablet in landscape, Foldable in landscape (unfolded), Desktop\n [ThBreakpoints.large]: 1600, // Desktop\n [ThBreakpoints.xLarge]: null // Desktop Ultra-wide\n },\n themes: {\n reflowOrder: [\n \"auto\", \n ThThemeKeys.light, \n ThThemeKeys.sepia, \n ThThemeKeys.paper, \n ThThemeKeys.dark, \n ThThemeKeys.contrast1, \n ThThemeKeys.contrast2, \n ThThemeKeys.contrast3\n ],\n fxlOrder: [\n \"auto\",\n ThThemeKeys.light,\n ThThemeKeys.dark\n ],\n systemThemes: {\n light: ThThemeKeys.light,\n dark: ThThemeKeys.dark\n },\n keys: {\n [ThThemeKeys.light]: {\n background: dayMode.RS__backgroundColor, // Color of background\n text: dayMode.RS__textColor, // Color of text\n link: \"#0000ee\", // Color of links\n visited: \"#551a8b\", // Color of visited links\n subdue: \"#808080\", // Color of subdued elements\n disable: \"#808080\", // color for :disabled\n hover: \"#d9d9d9\", // color of background for :hover\n onHover: dayMode.RS__textColor, // color of text for :hover\n select: \"#b4d8fe\", // color of selected background\n onSelect: \"inherit\", // color of selected text\n focus: \"#0067f4\", // color of :focus-visible\n elevate: \"0px 0px 2px #808080\", // drop shadow of containers\n immerse: \"0.6\" // opacity of immersive mode\n },\n [ThThemeKeys.sepia]: {\n background: sepiaMode.RS__backgroundColor,\n text: sepiaMode.RS__textColor,\n link: sepiaMode.RS__linkColor,\n visited: sepiaMode.RS__visitedColor,\n subdue: \"#8c8c8c\",\n disable: \"#8c8c8c\",\n hover: \"#edd7ab\",\n onHover: sepiaMode.RS__textColor,\n select: sepiaMode.RS__selectionBackgroundColor,\n onSelect: sepiaMode.RS__selectionTextColor,\n focus: \"#0067f4\",\n elevate: \"0px 0px 2px #8c8c8c\",\n immerse: \"0.5\"\n },\n [ThThemeKeys.dark]: {\n background: nightMode.RS__backgroundColor,\n text: nightMode.RS__textColor,\n link: nightMode.RS__linkColor,\n visited: nightMode.RS__visitedColor,\n subdue: \"#808080\",\n disable: \"#808080\",\n hover: \"#404040\",\n onHover: nightMode.RS__textColor,\n select: nightMode.RS__selectionBackgroundColor,\n onSelect: nightMode.RS__selectionTextColor,\n focus: \"#0067f4\",\n elevate: \"0px 0px 2px #808080\",\n immerse: \"0.4\"\n },\n [ThThemeKeys.paper]: {\n background: \"#e9ddc8\",\n text: \"#000000\",\n link: sepiaMode.RS__linkColor,\n visited: sepiaMode.RS__visitedColor,\n subdue: \"#8c8c8c\",\n disable: \"#8c8c8c\",\n hover: \"#ccb07f\",\n onHover: sepiaMode.RS__textColor,\n select: sepiaMode.RS__selectionBackgroundColor,\n onSelect: sepiaMode.RS__selectionTextColor,\n focus: \"#004099\",\n elevate: \"0px 0px 2px #8c8c8c\",\n immerse: \"0.45\"\n },\n [ThThemeKeys.contrast1]: {\n background: \"#000000\",\n text: \"#ffff00\",\n link: nightMode.RS__linkColor,\n visited: nightMode.RS__visitedColor,\n subdue: \"#808000\",\n disable: \"#808000\",\n hover: \"#404040\",\n onHover: nightMode.RS__textColor,\n select: nightMode.RS__selectionBackgroundColor,\n onSelect: nightMode.RS__selectionTextColor,\n focus: \"#0067f4\",\n elevate: \"0px 0px 2px #808000\",\n immerse: \"0.4\"\n },\n [ThThemeKeys.contrast2]: {\n background: \"#181842\",\n text: \"#ffffff\",\n link: \"#adcfff\",\n visited: \"#7ab2ff\",\n subdue: \"#808080\",\n disable: \"#808080\",\n hover: \"#4444bb\",\n onHover: nightMode.RS__textColor,\n select: nightMode.RS__selectionBackgroundColor,\n onSelect: nightMode.RS__selectionTextColor,\n focus: \"#6BA9FF\",\n elevate: \"0px 0px 2px #808080\",\n immerse: \"0.4\"\n },\n [ThThemeKeys.contrast3]: {\n background: \"#c5e7cd\",\n text: \"#000000\",\n link: sepiaMode.RS__linkColor,\n visited: sepiaMode.RS__visitedColor,\n subdue: \"#8c8c8c\",\n disable: \"#8c8c8c\",\n hover: \"#6fc383\",\n onHover: sepiaMode.RS__textColor,\n select: sepiaMode.RS__selectionBackgroundColor,\n onSelect: sepiaMode.RS__selectionTextColor,\n focus: \"#004099\",\n elevate: \"0px 0px 2px #8c8c8c\",\n immerse: \"0.45\"\n }\n }\n }\n },\n affordances: {\n scroll: {\n hintInImmersive: true,\n toggleOnMiddlePointer: [\"tap\"],\n hideOnForwardScroll: true,\n showOnBackwardScroll: true\n }\n },\n shortcuts: {\n representation: UnstableShortcutRepresentation.symbol,\n joiner: \"+\"\n },\n actions: {\n reflowOrder: [\n ThActionsKeys.settings,\n ThActionsKeys.toc,\n ThActionsKeys.fullscreen,\n ThActionsKeys.jumpToPosition\n ],\n fxlOrder: [\n ThActionsKeys.settings,\n ThActionsKeys.toc,\n ThActionsKeys.fullscreen,\n ThActionsKeys.jumpToPosition\n ],\n collapse: {\n // Number of partially icons to display\n // value \"all\" a keyword for the length of displayOrder above\n // Icons with visibility always are excluded from collapsing\n [ThBreakpoints.compact]: 2,\n [ThBreakpoints.medium]: 3\n }, \n keys: {\n [ThActionsKeys.settings]: {\n visibility: ThCollapsibilityVisibility.partially,\n shortcut: null, // `${ UnstableShortcutMetaKeywords.shift }+${ ShortcutMetaKeywords.alt }+P`,\n sheet: {\n defaultSheet: ThSheetTypes.popover,\n breakpoints: {\n [ThBreakpoints.compact]: ThSheetTypes.bottomSheet\n }\n },\n docked: {\n dockable: ThDockingTypes.none,\n width: 340\n },\n snapped: {\n scrim: true,\n peekHeight: 50,\n minHeight: 30,\n maxHeight: 100\n }\n },\n [ThActionsKeys.fullscreen]: {\n visibility: ThCollapsibilityVisibility.partially,\n shortcut: null\n },\n [ThActionsKeys.toc]: {\n visibility: ThCollapsibilityVisibility.partially,\n shortcut: null, // `${ UnstableShortcutMetaKeywords.shift }+${ ShortcutMetaKeywords.alt }+T`,\n sheet: {\n defaultSheet: ThSheetTypes.popover,\n breakpoints: {\n [ThBreakpoints.compact]: ThSheetTypes.fullscreen,\n [ThBreakpoints.medium]: ThSheetTypes.fullscreen\n }\n },\n docked: {\n dockable: ThDockingTypes.both,\n dragIndicator: false,\n width: 360,\n minWidth: 320,\n maxWidth: 450\n }\n },\n [ThActionsKeys.jumpToPosition]: {\n visibility: ThCollapsibilityVisibility.overflow,\n shortcut: null, // `${ UnstableShortcutMetaKeywords.shift }+${ ShortcutMetaKeywords.alt }+J`,\n sheet: {\n defaultSheet: ThSheetTypes.popover,\n breakpoints: {\n [ThBreakpoints.compact]: ThSheetTypes.bottomSheet\n }\n },\n docked: {\n dockable: ThDockingTypes.none\n },\n snapped: {\n scrim: true,\n minHeight: \"content-height\"\n }\n }\n }\n },\n docking: {\n displayOrder: [\n ThDockingKeys.transient,\n ThDockingKeys.start,\n ThDockingKeys.end\n ],\n dock: {\n [ThBreakpoints.compact]: ThDockingTypes.none,\n [ThBreakpoints.medium]: ThDockingTypes.none,\n [ThBreakpoints.expanded]: ThDockingTypes.start,\n [ThBreakpoints.large]: ThDockingTypes.both,\n [ThBreakpoints.xLarge]: ThDockingTypes.both\n },\n collapse: true,\n keys: {\n [ThDockingKeys.start]: {\n visibility: ThCollapsibilityVisibility.overflow,\n shortcut: null\n },\n [ThDockingKeys.end]: {\n visibility: ThCollapsibilityVisibility.overflow,\n shortcut: null\n },\n [ThDockingKeys.transient]: {\n visibility: ThCollapsibilityVisibility.overflow,\n shortcut: null\n }\n }\n },\n settings: {\n reflowOrder: [\n ThSettingsKeys.zoom,\n ThSettingsKeys.textGroup,\n ThSettingsKeys.theme,\n ThSettingsKeys.spacingGroup,\n ThSettingsKeys.layout,\n ThSettingsKeys.columns\n ],\n fxlOrder: [\n ThSettingsKeys.theme,\n ThSettingsKeys.columns\n ],\n keys: {\n [ThSettingsKeys.lineHeight]: {\n [ThLineHeightOptions.small]: 1.3,\n [ThLineHeightOptions.medium]: 1.5,\n [ThLineHeightOptions.large]: 1.75\n },\n [ThSettingsKeys.zoom]: {\n range: [0.7, 4],\n step: 0.05\n }\n },\n text: {\n header: ThSheetHeaderVariant.previous,\n subPanel: [\n ThTextSettingsKeys.fontFamily,\n ThTextSettingsKeys.fontWeight,\n ThTextSettingsKeys.textAlign,\n ThTextSettingsKeys.hyphens,\n ThTextSettingsKeys.textNormalize\n ]\n },\n spacing: {\n header: ThSheetHeaderVariant.previous,\n }\n }\n})","\"use client\";\n\nimport { createContext } from \"react\";\nimport { defaultPreferences } from \"./defaultPreferences\";\nimport { ThPreferences } from \"./preferences\";\n\n// Create a singleton context instance\nexport const ThPreferencesContext = createContext<ThPreferences<any>>(defaultPreferences);","\"use client\";\n\nimport { useEffect } from \"react\";\n\nimport { ThLayoutDirection } from \"./models/enums\";\n\nexport const ThDirectionSetter = ({ \n direction, \n children \n}: { \n direction?: ThLayoutDirection,\n children: React.ReactNode \n}) => {\n \n useEffect(() => {\n if (direction) document.documentElement.dir = direction;\n }, [direction]);\n\n return children;\n};","\"use client\";\n\nimport { useMemo } from \"react\";\nimport { defaultPreferences } from \"./defaultPreferences\";\n\nimport { ThPreferences, CustomizableKeys } from \"./preferences\";\nimport { ThDirectionSetter } from \"./ThDirectionSetter\";\nimport { ThPreferencesContext } from \"./ThPreferencesContext\";\n\nexport function ThPreferencesProvider<T extends Partial<CustomizableKeys>>({\n value,\n children,\n}: {\n value?: ThPreferences<T>;\n children: React.ReactNode;\n}) {\n const contextValue = useMemo(() => {\n return value || defaultPreferences as ThPreferences<T>;\n }, [value]);\n\n return ( \n <ThPreferencesContext.Provider value={ contextValue }>\n <ThDirectionSetter direction={ contextValue.direction }>\n { children }\n </ThDirectionSetter>\n </ThPreferencesContext.Provider>\n );\n}","\"use client\";\n\nimport { ThColorScheme } from \"@/core/Hooks/useColorScheme\";\nimport { ThemeTokens } from \"../hooks/useTheming\";\n\nexport interface buildThemeProps<T extends string> {\n theme?: string;\n themeKeys: { [key in T]?: ThemeTokens },\n systemThemes?: {\n light: T,\n dark: T\n },\n colorScheme?: ThColorScheme;\n}\n\nexport const buildThemeObject = <T extends string>({\n theme,\n themeKeys,\n systemThemes,\n colorScheme\n}: buildThemeProps<T>) => {\n if (!theme) {\n return {};\n }\n\n if (theme === \"auto\" && colorScheme && systemThemes) {\n theme = colorScheme === ThColorScheme.dark ? systemThemes.dark : systemThemes.light;\n }\n\n let themeProps = {};\n\n const themeToken = themeKeys[theme as T];\n if (themeToken) {\n themeProps = {\n backgroundColor: themeToken.background,\n textColor: themeToken.text,\n linkColor: themeToken.link,\n selectionBackgroundColor: themeToken.select,\n selectionTextColor: themeToken.onSelect,\n visitedColor: themeToken.visited\n };\n } else {\n // Fallback if theme doesn't exist\n console.warn(`Theme key \"${String(theme)}\" not found in themeKeys.`);\n themeProps = {\n backgroundColor: null,\n textColor: null,\n linkColor: null,\n selectionBackgroundColor: null,\n selectionTextColor: null,\n visitedColor: null\n };\n }\n\n return themeProps;\n};","\"use client\";\n\nimport { useContext } from \"react\";\nimport { ThPreferencesContext } from \"../ThPreferencesContext\";\n\nexport const usePreferences = () => useContext(ThPreferencesContext);","\"use client\";\n\nimport { CustomizableKeys, CustomKeyType } from \"@/preferences/preferences\";\nimport { usePreferences } from \"./usePreferences\";\nimport { \n ThActionsKeys, \n ThThemeKeys, \n ThSettingsKeys, \n ThTextSettingsKeys, \n ThSpacingSettingsKeys \n} from \"../models/enums\";\n\n/**\n * Hook to safely access and use preference keys with proper type inference\n * This allows components to use the keys as indexes without type errors\n */\nexport function usePreferenceKeys<T extends Partial<CustomizableKeys>>() {\n const preferences = usePreferences();\n \n // Return an object with typed keys for each customizable section\n return {\n reflowActionKeys: preferences.actions.reflowOrder as Array<T[\"actionKeys\"] extends CustomKeyType ? T[\"actionKeys\"] : ThActionsKeys>,\n fxlActionKeys: preferences.actions.fxlOrder as Array<T[\"actionKeys\"] extends CustomKeyType ? T[\"actionKeys\"] : ThActionsKeys>,\n reflowThemeKeys: preferences.theming.themes.reflowOrder as Array<T[\"themeKeys\"] extends CustomKeyType ? T[\"themeKeys\"] | \"auto\" : ThThemeKeys | \"auto\">,\n fxlThemeKeys: preferences.theming.themes.fxlOrder as Array<T[\"themeKeys\"] extends CustomKeyType ? T[\"themeKeys\"] | \"auto\" : ThThemeKeys | \"auto\">,\n reflowSettingsKeys: preferences.settings.reflowOrder as Array<T[\"settingsKeys\"] extends CustomKeyType ? T[\"settingsKeys\"] : ThSettingsKeys>,\n fxlSettingsKeys: preferences.settings.fxlOrder as Array<T[\"settingsKeys\"] extends CustomKeyType ? T[\"settingsKeys\"] : ThSettingsKeys>,\n mainTextSettingsKeys: preferences.settings.text?.main as Array<T[\"textSettingsKeys\"] extends CustomKeyType ? T[\"textSettingsKeys\"] : ThTextSettingsKeys> || [],\n subPanelTextSettingsKeys: preferences.settings.text?.subPanel as Array<T[\"textSettingsKeys\"] extends CustomKeyType ? T[\"textSettingsKeys\"] : ThTextSettingsKeys> || [],\n mainSpacingSettingsKeys: preferences.settings.spacing?.main as Array<T[\"spacingSettingsKeys\"] extends CustomKeyType ? T[\"spacingSettingsKeys\"] : ThSpacingSettingsKeys> || [],\n subPanelSpacingSettingsKeys: preferences.settings.spacing?.subPanel as Array<T[\"spacingSettingsKeys\"] extends CustomKeyType ? T[\"spacingSettingsKeys\"] : ThSpacingSettingsKeys> || [],\n \n // Helper functions that use type assertion with unknown as intermediate step\n asReflowActionKey: <K extends string>(key: K): T[\"actionKeys\"] extends CustomKeyType ? T[\"actionKeys\"] : ThActionsKeys => key as unknown as T[\"actionKeys\"] extends CustomKeyType ? T[\"actionKeys\"] : ThActionsKeys,\n asFxlActionKey: <K extends string>(key: K): T[\"actionKeys\"] extends CustomKeyType ? T[\"actionKeys\"] : ThActionsKeys => key as unknown as T[\"actionKeys\"] extends CustomKeyType ? T[\"actionKeys\"] : ThActionsKeys,\n asReflowThemeKey: <K extends string>(key: K): T[\"themeKeys\"] extends CustomKeyType ? T[\"themeKeys\"] | \"auto\" : ThThemeKeys | \"auto\" => key as unknown as T[\"themeKeys\"] extends CustomKeyType ? T[\"themeKeys\"] | \"auto\" : ThThemeKeys | \"auto\",\n asFxlThemeKey: <K extends string>(key: K): T[\"themeKeys\"] extends CustomKeyType ? T[\"themeKeys\"] | \"auto\" : ThThemeKeys | \"auto\" => key as unknown as T[\"themeKeys\"] extends CustomKeyType ? T[\"themeKeys\"] | \"auto\" : ThThemeKeys | \"auto\",\n asReflowSettingsKey: <K extends string>(key: K): T[\"settingsKeys\"] extends CustomKeyType ? T[\"settingsKeys\"] : ThSettingsKeys => key as unknown as T[\"settingsKeys\"] extends CustomKeyType ? T[\"settingsKeys\"] : ThSettingsKeys,\n asFxlSettingsKey: <K extends string>(key: K): T[\"settingsKeys\"] extends CustomKeyType ? T[\"settingsKeys\"] : ThSettingsKeys => key as unknown as T[\"settingsKeys\"] extends CustomKeyType ? T[\"settingsKeys\"] : ThSettingsKeys,\n asMainTextSettingsKey: <K extends string>(key: K): T[\"textSettingsKeys\"] extends CustomKeyType ? T[\"textSettingsKeys\"] : ThTextSettingsKeys => key as unknown as T[\"textSettingsKeys\"] extends CustomKeyType ? T[\"textSettingsKeys\"] : ThTextSettingsKeys,\n asSubPanelTextSettingsKey: <K extends string>(key: K): T[\"textSettingsKeys\"] extends CustomKeyType ? T[\"textSettingsKeys\"] : ThTextSettingsKeys => key as unknown as T[\"textSettingsKeys\"] extends CustomKeyType ? T[\"textSettingsKeys\"] : ThTextSettingsKeys,\n asMainSpacingSettingsKey: <K extends string>(key: K): T[\"spacingSettingsKeys\"] extends CustomKeyType ? T[\"spacingSettingsKeys\"] : ThSpacingSettingsKeys => key as unknown as T[\"spacingSettingsKeys\"] extends CustomKeyType ? T[\"spacingSettingsKeys\"] : ThSpacingSettingsKeys,\n asSubPanelSpacingSettingsKey: <K extends string>(key: K): T[\"spacingSettingsKeys\"] extends CustomKeyType ? T[\"spacingSettingsKeys\"] : ThSpacingSettingsKeys => key as unknown as T[\"spacingSettingsKeys\"] extends CustomKeyType ? T[\"spacingSettingsKeys\"] : ThSpacingSettingsKeys,\n };\n}","\"use client\";\n\nimport { useCallback, useEffect, useRef } from \"react\";\n\nimport { CSSColor } from \"../CSSValues\";\n\nimport { ThBreakpoints } from \"../models/enums\";\nimport { BreakpointsMap, useBreakpoints } from \"@/core/Hooks/useBreakpoints\";\nimport { useReducedMotion } from \"@/core/Hooks/useReducedMotion\";\nimport { useReducedTransparency } from \"@/core/Hooks/useReducedTransparency\";\nimport { ThColorScheme, useColorScheme } from \"@/core/Hooks/useColorScheme\";\nimport { ThContrast, useContrast } from \"@/core/Hooks/useContrast\";\nimport { useForcedColors } from \"@/core/Hooks/useForcedColors\";\nimport { useMonochrome } from \"@/core/Hooks/useMonochrome\";\n\nimport { propsToCSSVars } from \"@/core/Helpers/propsToCSSVars\";\n\nexport interface ThemeTokens {\n background: CSSColor;\n text: CSSColor;\n link: CSSColor;\n visited: CSSColor;\n subdue: CSSColor;\n disable: CSSColor;\n hover: CSSColor;\n onHover: CSSColor;\n select: CSSColor;\n onSelect: CSSColor;\n focus: CSSColor;\n elevate: string;\n immerse: string;\n};\n\nexport interface useThemingProps<T extends string> {\n theme?: string;\n themeKeys: { [key in T]?: ThemeTokens };\n systemKeys?: {\n light: T;\n dark: T;\n };\n breakpointsMap: BreakpointsMap<number | null>;\n initProps?: Record<string, any>;\n onBreakpointChange?: (breakpoint: ThBreakpoints | null) => void;\n onColorSchemeChange?: (colorScheme: ThColorScheme) => void;\n onContrastChange?: (contrast: ThContrast) => void;\n onForcedColorsChange?: (forcedColors: boolean) => void;\n onMonochromeChange?: (isMonochrome: boolean) => void;\n onReducedMotionChange?: (reducedMotion: boolean) => void;\n onReducedTransparencyChange?: (reducedTransparency: boolean) => void; \n}\n\n// Takes care of the init of theming and side effects on :root/html\n// Reader still has to handle the side effects on Navigator\nexport const useTheming = <T extends string>({\n theme,\n systemKeys,\n themeKeys,\n breakpointsMap,\n initProps,\n onBreakpointChange,\n onColorSchemeChange,\n onContrastChange,\n onForcedColorsChange,\n onMonochromeChange,\n onReducedMotionChange,\n onReducedTransparencyChange,\n}: useThemingProps<T>) => {\n const breakpoints = useBreakpoints(breakpointsMap, onBreakpointChange);\n const colorScheme = useColorScheme(onColorSchemeChange);\n const colorSchemeRef = useRef(colorScheme);\n const contrast = useContrast(onContrastChange);\n const forcedColors = useForcedColors(onForcedColorsChange);\n const monochrome = useMonochrome(onMonochromeChange);\n const reducedMotion = useReducedMotion(onReducedMotionChange);\n const reducedTransparency = useReducedTransparency(onReducedTransparencyChange);\n\n const inferThemeAuto = useCallback(() => {\n return colorSchemeRef.current === ThColorScheme.dark ? systemKeys?.dark : systemKeys?.light;\n }, [systemKeys]);\n\n const initThemingCustomProps = useCallback(() => {\n for (let p in initProps) {\n document.documentElement.style.setProperty(p, initProps[p])\n }\n }, [initProps]);\n\n const setThemeCustomProps = useCallback((t?: string) => {\n if (!t) {\n return;\n }\n\n if (t === \"auto\") {\n const autoTheme = inferThemeAuto();\n if (!autoTheme) {\n // We are not removing properties cos iframes won’t update\n // Removing here would consequently create a theme inconsistency\n // between the iframe and the main window\n return;\n }\n t = autoTheme;\n }\n \n const themeTokens = themeKeys[t as T];\n if (!themeTokens) {\n // We are not removing properties cos iframes won’t update\n // Removing here would consequently create a theme inconsistency\n // between the iframe and the main window\n return;\n }\n \n const props = propsToCSSVars(themeTokens, \"theme\");\n \n for (let p in props) {\n document.documentElement.style.setProperty(p, props[p])\n }\n }, [inferThemeAuto, themeKeys]);\n\n // On mount add custom props to :root/html\n useEffect(() => {\n initThemingCustomProps();\n }, [initThemingCustomProps]);\n\n // Update theme custom props\n useEffect(() => {\n colorSchemeRef.current = colorScheme;\n setThemeCustomProps(theme);\n }, [setThemeCustomProps, theme, colorScheme]);\n\n return {\n inferThemeAuto,\n theme, \n breakpoints,\n colorScheme,\n contrast, \n forcedColors, \n monochrome, \n reducedMotion, \n reducedTransparency\n }\n}"]}
@@ -1,24 +1,25 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { d as ThActionsKeys, c as ThDockingKeys, s as ThLineHeightOptions, p as ThLayoutStrategy, r as ThTextAlignOptions, i as ThLayoutUI, m as ThSheetTypes, g as ThTextSettingsKeys, h as ThSpacingSettingsKeys, n as ThSheetHeaderVariant } from '../../enums-DxbWWvn7.mjs';
2
+ import { b as ThActionsKeys, a as ThDockingKeys, p as ThLineHeightOptions, o as ThTextAlignOptions, g as ThLayoutUI, k as ThSheetTypes, e as ThTextSettingsKeys, f as ThSpacingSettingsKeys, l as ThSheetHeaderVariant } from '../../enums-DqGQ66r1.mjs';
3
3
  import { T as ThColorScheme } from '../../useContrast-Cgsrl7GS.mjs';
4
- import { x as defaultFontFamilyOptions, i as ThSettingsGroupPref } from '../../const-DGYvRLhk.mjs';
5
- export { q as useTheming } from '../../const-DGYvRLhk.mjs';
6
- import { T as ThActionButtonProps, f as ThMenuItemProps, a as ThCollapsibleActionsBarProps, q as ThSettingsEntry, h as ThNumberFieldProps, k as ThRadioGroupProps, m as ThSliderProps, o as ThSwitchProps } from '../../ThSettingsWrapper-De4qvjsh.mjs';
7
- import { RefObject, ReactNode } from 'react';
4
+ import { x as defaultFontFamilyOptions, i as ThSettingsGroupPref } from '../../const-IAfi9t_g.mjs';
5
+ export { q as useTheming } from '../../const-IAfi9t_g.mjs';
6
+ import { T as ThActionButtonProps, f as ThMenuItemProps, a as ThCollapsibleActionsBarProps, q as ThSettingsEntry, h as ThNumberFieldProps, k as ThRadioGroupProps, m as ThSliderProps, o as ThSwitchProps } from '../../ThSettingsWrapper-CA2_0nQz.mjs';
7
+ import React__default, { RefObject, ReactNode } from 'react';
8
8
  import { d as ThActionsTriggerVariant, T as ThCollapsibilityVisibility, b as ThActionEntry } from '../../useCollapsibility-BmWuCzU4.mjs';
9
- import { a as ActionsStateKeys } from '../../actionsReducer-e808e6V_.mjs';
10
- export { f as ActionOverflowOpenPayload, c as ActionStateDockPayload, g as ActionStateDockedPayload, A as ActionStateObject, d as ActionStateOpenPayload, h as ActionStateSlotPayload, i as ActionStateSlotWidthPayload, e as ActionStateTogglePayload, k as ActionsReducerState, j as DockState, D as DockStateObject, O as OverflowStateKeys, b as OverflowStateObject, l as actionsSlice, o as activateDockPanel, q as collapseDockPanel, p as deactivateDockPanel, m as dockAction, r as expandDockPanel, s as setActionOpen, u as setDockPanelWidth, n as setOverflow, t as toggleActionOpen } from '../../actionsReducer-e808e6V_.mjs';
9
+ import { a as ActionsStateKeys } from '../../actionsReducer-D4Mphfuv.mjs';
10
+ export { f as ActionOverflowOpenPayload, c as ActionStateDockPayload, g as ActionStateDockedPayload, A as ActionStateObject, d as ActionStateOpenPayload, h as ActionStateSlotPayload, i as ActionStateSlotWidthPayload, e as ActionStateTogglePayload, k as ActionsReducerState, j as DockState, D as DockStateObject, O as OverflowStateKeys, b as OverflowStateObject, l as actionsSlice, o as activateDockPanel, q as collapseDockPanel, p as deactivateDockPanel, m as dockAction, r as expandDockPanel, s as setActionOpen, u as setDockPanelWidth, n as setOverflow, t as toggleActionOpen } from '../../actionsReducer-D4Mphfuv.mjs';
11
11
  import { Locator } from '@readium/shared';
12
- import { L as LineLengthStateObject, T as TocItem } from '../../index-ClB-1iNN.mjs';
13
- export { b as AppDispatch, A as AppStore, P as PublicationReducerState, _ as ReaderReducerState, R as RootState, S as SetLineLengthPayload, n as SettingsReducerState, a as ThStoreProvider, M as ThemeReducerState, K as ThemeStateChangePayload, J as ThemeStateObject, m as makeStore, p as publicationSlice, $ as readerSlice, a6 as setArrows, Z as setBreakpoint, Q as setColorScheme, q as setColumnCount, X as setContrast, a0 as setDirection, e as setFXL, v as setFontFamily, r as setFontSize, t as setFontWeight, Y as setForcedColors, a7 as setFullscreen, a5 as setHovering, w as setHyphens, a3 as setImmersive, x as setLayoutStrategy, y as setLetterSpacing, z as setLineHeight, B as setLineLength, a1 as setLoading, O as setMonochrome, C as setParagraphIndent, D as setParagraphSpacing, a2 as setPlatformModifier, h as setPositionsList, g as setProgression, j as setPublicationEnd, i as setPublicationStart, E as setPublisherStyles, f as setRTL, V as setReducedMotion, W as setReducedTransparency, s as setRunningHead, F as setScroll, a8 as setSettingsContainer, G as setTextAlign, H as setTextNormalization, U as setTheme, l as setTocEntry, k as setTocTree, I as setWordSpacing, o as settingsSlice, N as themeSlice, a4 as toggleImmersive, u as useAppDispatch, c as useAppSelector, d as useAppStore } from '../../index-ClB-1iNN.mjs';
12
+ import { LineLengthStateObject } from '../../lib/index.mjs';
13
+ export { AppDispatch, AppStore, PublicationReducerState, ReaderReducerState, RootState, SetLineLengthPayload, SettingsReducerState, ThStoreProvider, ThemeReducerState, ThemeStateChangePayload, ThemeStateObject, makeStore, publicationSlice, readerSlice, setArrows, setBreakpoint, setColorScheme, setColumnCount, setContrast, setDirection, setFXL, setFontFamily, setFontSize, setFontWeight, setForcedColors, setFullscreen, setHovering, setHyphens, setImmersive, setLetterSpacing, setLineHeight, setLineLength, setLoading, setMonochrome, setParagraphIndent, setParagraphSpacing, setPlatformModifier, setPositionsList, setProgression, setPublicationEnd, setPublicationStart, setPublisherStyles, setRTL, setReducedMotion, setReducedTransparency, setRunningHead, setScroll, setScrollAffordance, setSettingsContainer, setTextAlign, setTextNormalization, setTheme, setTimeline, setTocEntry, setTocTree, setWordSpacing, settingsSlice, themeSlice, toggleImmersive, useAppDispatch, useAppSelector, useAppStore } from '../../lib/index.mjs';
14
14
  import { TooltipProps, PopoverProps } from 'react-aria-components';
15
15
  import { PressEvent } from 'react-aria';
16
- export { u as useEpubNavigator } from '../../useEpubNavigator-BrV4MYJy.mjs';
17
- export { getPlatform, isActiveElement, isIOSish, isInteractiveElement, isIpadOS, isKeyboardTriggered, isMacish, localData, makeBreakpointsMap, propsToCSSVars } from '../../core/Helpers/index.mjs';
16
+ export { u as useEpubNavigator } from '../../useEpubNavigator-DFRJ_tHa.mjs';
17
+ export { getPlatform, isActiveElement, isIOSish, isInteractiveElement, isIpadOS, isKeyboardTriggered, isMacish, makeBreakpointsMap, propsToCSSVars } from '../../core/Helpers/index.mjs';
18
18
  export { a as UnstableKey, b as UnstableMetaKey, d as UnstableMetaKeys, g as UnstablePShortcut, c as UnstablePlatformModifier, f as UnstableShortcut, e as UnstableShortcutMetaKeywords, U as UnstableShortcutRepresentation, j as buildShortcut, h as defaultPlatformModifier, i as getPlatformModifier, m as metaKeys } from '../../keyboardUtilities-CoTR9LKx.mjs';
19
- export { T as ThPreferencesProvider, u as usePreferences } from '../../usePreferences-B55XqFto.mjs';
20
- import '../../useBreakpoints-I7vHrywa.mjs';
19
+ export { T as ThPreferencesProvider, u as usePreferences } from '../../usePreferences-BMyBhq7F.mjs';
20
+ import '../../useBreakpoints-BQaiwecQ.mjs';
21
21
  import '@reduxjs/toolkit';
22
+ import '../../useTimeline-Bid5B7AQ.mjs';
22
23
  import 'react-redux';
23
24
  import '@readium/navigator';
24
25
 
@@ -104,22 +105,18 @@ declare const StatefulOverflowMenuItem: ({ id, label, SVGIcon, shortcut, ...prop
104
105
 
105
106
  interface StatefulCollapsibleActionsBarProps extends ThCollapsibleActionsBarProps {
106
107
  items: ThActionEntry<string | ThActionsKeys | ThDockingKeys>[];
107
- overflowActionCallback?: boolean;
108
108
  overflowMenuClassName?: string;
109
- overflowMenuDisplay?: boolean;
110
109
  }
111
- declare const StatefulCollapsibleActionsBar: ({ id, items, overflowActionCallback, overflowMenuClassName, overflowMenuDisplay, ...props }: StatefulCollapsibleActionsBarProps) => react_jsx_runtime.JSX.Element;
110
+ declare const StatefulCollapsibleActionsBar: ({ id, items, overflowMenuClassName, ...props }: StatefulCollapsibleActionsBarProps) => react_jsx_runtime.JSX.Element;
112
111
 
113
112
  interface StatefulOverflowMenuProps {
114
113
  id: string;
115
114
  items: ThActionEntry<string | ThActionsKeys | ThDockingKeys>[];
116
115
  triggerRef: RefObject<HTMLElement | null>;
117
116
  className?: string;
118
- actionFallback?: boolean;
119
- display: boolean;
120
117
  children?: ReactNode;
121
118
  }
122
- declare const StatefulOverflowMenu: ({ id, className, actionFallback, display, items, triggerRef }: StatefulOverflowMenuProps) => react_jsx_runtime.JSX.Element;
119
+ declare const StatefulOverflowMenu: ({ id, className, items, triggerRef }: StatefulOverflowMenuProps) => react_jsx_runtime.JSX.Element | undefined;
123
120
 
124
121
  type ActionComponent = StatefulActionsMapObject;
125
122
  interface SettingComponent extends ThSettingsEntry {
@@ -144,9 +141,8 @@ interface ReadiumCSSSettings {
144
141
  fontWeight: number;
145
142
  hyphens: boolean | null;
146
143
  letterSpacing: number | null;
147
- lineLength: LineLengthStateObject;
144
+ lineLength: LineLengthStateObject | null;
148
145
  lineHeight: ThLineHeightOptions | null;
149
- layoutStrategy: ThLayoutStrategy;
150
146
  paragraphIndent: number | null;
151
147
  paragraphSpacing: number | null;
152
148
  publisherStyles: boolean;
@@ -159,9 +155,9 @@ interface ReadiumCSSSettings {
159
155
  interface StatelessCache {
160
156
  layoutUI: ThLayoutUI;
161
157
  isImmersive: boolean;
158
+ isHovering: boolean;
162
159
  arrowsOccupySpace: boolean;
163
160
  settings: ReadiumCSSSettings;
164
- tocTree?: TocItem[];
165
161
  positionsList: Locator[];
166
162
  colorScheme?: ThColorScheme;
167
163
  reducedMotion?: boolean;
@@ -173,8 +169,6 @@ interface StatefulReaderProps {
173
169
  }
174
170
  declare const StatefulReader: ({ rawManifest, selfHref, plugins }: StatefulReaderProps) => react_jsx_runtime.JSX.Element | null;
175
171
 
176
- declare const BookUrlConverter: () => react_jsx_runtime.JSX.Element;
177
-
178
172
  declare const useDocking: <T extends string>(key: T) => {
179
173
  getDocker: () => ThDockingKeys[];
180
174
  sheetType: ThSheetTypes;
@@ -265,4 +259,33 @@ declare const StatefulLoader: ({ isLoading, children }: {
265
259
  children: ReactNode;
266
260
  }) => react_jsx_runtime.JSX.Element;
267
261
 
268
- export { ActionsStateKeys, BookUrlConverter, LineLengthStateObject, type ReadiumCSSSettings, type ScrimPref, type StatefulActionContainerProps, StatefulActionIcon, type StatefulActionIconProps, type StatefulActionTriggerProps, type StatefulActionsMapObject, StatefulBottomSheet, type StatefulBottomSheetProps, StatefulCollapsibleActionsBar, type StatefulCollapsibleActionsBarProps, StatefulColumns, StatefulDockedSheet, type StatefulDockedSheetProps, StatefulFontFamily, StatefulFontWeight, StatefulFullScreenSheet, type StatefulFullScreenSheetProps, StatefulFullscreenTrigger, StatefulGroupWrapper, type StatefulGroupWrapperProps, StatefulHyphens, StatefulJumpToPositionContainer, StatefulJumpToPositionTrigger, StatefulLayout, StatefulLetterSpacing, StatefulLineHeight, StatefulLoader, StatefulNumberField, type StatefulNumberFieldProps, StatefulOverflowMenu, StatefulOverflowMenuItem, type StatefulOverflowMenuItemProps, type StatefulOverflowMenuProps, StatefulParagraphIndent, StatefulParagraphSpacing, StatefulPopoverSheet, type StatefulPopoverSheetProps, StatefulPublisherStyles, StatefulRadioGroup, type StatefulRadioGroupProps, StatefulReader, type StatefulReaderProps, StatefulSettingsContainer, type StatefulSettingsItemProps, StatefulSettingsTrigger, type StatefulSheet, StatefulSheetWrapper, StatefulSlider, type StatefulSliderProps, StatefulSpacingGroup, StatefulSpacingGroupContainer, StatefulSwitch, type StatefulSwitchProps, StatefulTextAlign, StatefulTextGroup, StatefulTextGroupContainer, StatefulTextNormalize, StatefulTheme, StatefulTocContainer, StatefulTocTrigger, StatefulWordSpacing, StatefulZoom, type StatelessCache, type ThPlugin, createDefaultPlugin, useDocking };
262
+ declare const DefaultImage: ({ src, alt }: {
263
+ src: string;
264
+ alt?: string;
265
+ }) => react_jsx_runtime.JSX.Element;
266
+ interface Publication {
267
+ title: string;
268
+ author: string;
269
+ cover: string;
270
+ url: string;
271
+ rendition?: string;
272
+ }
273
+ interface PublicationGridProps {
274
+ publications: Publication[];
275
+ columnWidth?: number;
276
+ gap?: string;
277
+ renderCover?: (publication: Publication) => React__default.ReactElement<React__default.ImgHTMLAttributes<HTMLImageElement>>;
278
+ }
279
+ declare const PublicationGrid: ({ publications, columnWidth, gap, renderCover, }: PublicationGridProps) => react_jsx_runtime.JSX.Element;
280
+
281
+ interface UsePublicationOptions {
282
+ url: string;
283
+ onError?: (error: string) => void;
284
+ }
285
+ declare function usePublication({ url, onError }: UsePublicationOptions): {
286
+ error: string;
287
+ manifest: object | undefined;
288
+ selfLink: string | undefined;
289
+ };
290
+
291
+ export { ActionsStateKeys, DefaultImage, LineLengthStateObject, type Publication, PublicationGrid, type PublicationGridProps, type ReadiumCSSSettings, type ScrimPref, type StatefulActionContainerProps, StatefulActionIcon, type StatefulActionIconProps, type StatefulActionTriggerProps, type StatefulActionsMapObject, StatefulBottomSheet, type StatefulBottomSheetProps, StatefulCollapsibleActionsBar, type StatefulCollapsibleActionsBarProps, StatefulColumns, StatefulDockedSheet, type StatefulDockedSheetProps, StatefulFontFamily, StatefulFontWeight, StatefulFullScreenSheet, type StatefulFullScreenSheetProps, StatefulFullscreenTrigger, StatefulGroupWrapper, type StatefulGroupWrapperProps, StatefulHyphens, StatefulJumpToPositionContainer, StatefulJumpToPositionTrigger, StatefulLayout, StatefulLetterSpacing, StatefulLineHeight, StatefulLoader, StatefulNumberField, type StatefulNumberFieldProps, StatefulOverflowMenu, StatefulOverflowMenuItem, type StatefulOverflowMenuItemProps, type StatefulOverflowMenuProps, StatefulParagraphIndent, StatefulParagraphSpacing, StatefulPopoverSheet, type StatefulPopoverSheetProps, StatefulPublisherStyles, StatefulRadioGroup, type StatefulRadioGroupProps, StatefulReader, type StatefulReaderProps, StatefulSettingsContainer, type StatefulSettingsItemProps, StatefulSettingsTrigger, type StatefulSheet, StatefulSheetWrapper, StatefulSlider, type StatefulSliderProps, StatefulSpacingGroup, StatefulSpacingGroupContainer, StatefulSwitch, type StatefulSwitchProps, StatefulTextAlign, StatefulTextGroup, StatefulTextGroupContainer, StatefulTextNormalize, StatefulTheme, StatefulTocContainer, StatefulTocTrigger, StatefulWordSpacing, StatefulZoom, type StatelessCache, type ThPlugin, createDefaultPlugin, useDocking, usePublication };