@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.
- package/LICENSE +1 -1
- package/dist/{ThSettingsWrapper-De4qvjsh.d.mts → ThSettingsWrapper-CA2_0nQz.d.mts} +1 -1
- package/dist/{actionsReducer-e808e6V_.d.mts → actionsReducer-D4Mphfuv.d.mts} +1 -1
- package/dist/chunk-BNPR6V7V.mjs.map +1 -1
- package/dist/chunk-IEYR7QV7.mjs.map +1 -1
- package/dist/{chunk-O4MBY6P4.mjs → chunk-KQLSID7M.mjs} +52 -20
- package/dist/chunk-KQLSID7M.mjs.map +1 -0
- package/dist/chunk-MLEYTQGK.mjs.map +1 -1
- package/dist/chunk-NA3KMUS4.mjs +417 -0
- package/dist/chunk-NA3KMUS4.mjs.map +1 -0
- package/dist/{chunk-GHEGQBCW.mjs → chunk-NOV43IG4.mjs} +4 -18
- package/dist/chunk-NOV43IG4.mjs.map +1 -0
- package/dist/chunk-NQ2ZSGCX.mjs.map +1 -1
- package/dist/{chunk-TWGRY5SW.mjs → chunk-RQFPGXWN.mjs} +29 -22
- package/dist/chunk-RQFPGXWN.mjs.map +1 -0
- package/dist/{chunk-BVSROK7Z.mjs → chunk-SDVDRPT5.mjs} +116 -6
- package/dist/chunk-SDVDRPT5.mjs.map +1 -0
- package/dist/chunk-TTGURRX3.mjs.map +1 -1
- package/dist/{chunk-PGZF5NO2.mjs → chunk-TXILKP4F.mjs} +16 -12
- package/dist/chunk-TXILKP4F.mjs.map +1 -0
- package/dist/components/Epub/index.d.mts +48 -25
- package/dist/components/Epub/index.mjs +877 -407
- package/dist/components/Epub/index.mjs.map +1 -1
- package/dist/{const-DGYvRLhk.d.mts → const-IAfi9t_g.d.mts} +14 -11
- package/dist/core/Components/index.d.mts +52 -6
- package/dist/core/Components/index.mjs +2 -2
- package/dist/core/Helpers/index.d.mts +3 -9
- package/dist/core/Helpers/index.mjs +2 -3
- package/dist/core/Hooks/index.d.mts +15 -5
- package/dist/core/Hooks/index.mjs +2 -3
- package/dist/{enums-DxbWWvn7.d.mts → enums-DqGQ66r1.d.mts} +1 -23
- package/dist/lib/index.d.mts +355 -11
- package/dist/lib/index.mjs +2 -3
- package/dist/{overflowMenu.module-XQRI7RJJ.module.css → overflowMenu.module-FO27A2A3.module.css} +12 -0
- package/dist/preferences/index.d.mts +6 -6
- package/dist/preferences/index.mjs +2 -3
- package/dist/publicationGrid.module-T6ISNRGM.module.css +70 -0
- package/dist/{reader-QFK7DGLX.css → reader-NGCQJKLX.css} +74 -36
- package/dist/{readerArrowButton.module-NHAUIQXS.module.css → readerArrowButton.module-EFLOIADG.module.css} +4 -0
- package/dist/{readerHeader.module-OBKZATSW.module.css → readerHeader.module-K7OLOIJP.module.css} +2 -7
- package/dist/{readerLoader.module-U6LLXOVQ.module.css → readerLoader.module-KDBPCQZJ.module.css} +1 -1
- package/dist/readerPagination.module-W4IAEOSH.module.css +73 -0
- package/dist/readerProgression.module-7PU7L74S.module.css +5 -0
- package/dist/{readerSharedUI.module-MCLGNG22.module.css → readerSharedUI.module-Y2VDWFS5.module.css} +1 -5
- package/dist/{sheets.module-DDN7GPMG.module.css → sheets.module-NA32WOSZ.module.css} +4 -4
- package/dist/{toc.module-XJLXQM7G.module.css → toc.module-KNW5CKIY.module.css} +1 -0
- package/dist/{useBreakpoints-I7vHrywa.d.mts → useBreakpoints-BQaiwecQ.d.mts} +1 -1
- package/dist/{useEpubNavigator-BrV4MYJy.d.mts → useEpubNavigator-DFRJ_tHa.d.mts} +9 -10
- package/dist/{usePreferences-B55XqFto.d.mts → usePreferences-BMyBhq7F.d.mts} +1 -1
- package/dist/useTimeline-Bid5B7AQ.d.mts +39 -0
- package/package.json +31 -22
- package/dist/bookUrlConverter.module-J46O27CR.module.css +0 -63
- package/dist/chunk-3QS3WKRC.mjs +0 -29
- package/dist/chunk-3QS3WKRC.mjs.map +0 -1
- package/dist/chunk-BVSROK7Z.mjs.map +0 -1
- package/dist/chunk-GHEGQBCW.mjs.map +0 -1
- package/dist/chunk-JS5WI5D4.mjs +0 -600
- package/dist/chunk-JS5WI5D4.mjs.map +0 -1
- package/dist/chunk-O4MBY6P4.mjs.map +0 -1
- package/dist/chunk-PGZF5NO2.mjs.map +0 -1
- package/dist/chunk-TWGRY5SW.mjs.map +0 -1
- package/dist/index-ClB-1iNN.d.mts +0 -356
- 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 {
|
|
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-
|
|
5
|
-
export { q as useTheming } from '../../const-
|
|
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-
|
|
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-
|
|
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-
|
|
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 {
|
|
13
|
-
export {
|
|
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-
|
|
17
|
-
export { getPlatform, isActiveElement, isIOSish, isInteractiveElement, isIpadOS, isKeyboardTriggered, isMacish,
|
|
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-
|
|
20
|
-
import '../../useBreakpoints-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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 };
|