@edrlab/thorium-web 1.0.0-beta.5 → 1.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{actionsReducer-D4Mphfuv.d.mts → actionsReducer-ZN1H6lWp.d.mts} +1 -1
- package/dist/backLink.module-QFOMD4RA.module.css +36 -0
- package/dist/{chunk-SDVDRPT5.mjs → chunk-BD5MZ3QC.mjs} +101 -18
- package/dist/chunk-BD5MZ3QC.mjs.map +1 -0
- package/dist/{chunk-RQFPGXWN.mjs → chunk-HUMV6I5L.mjs} +9 -3
- package/dist/chunk-HUMV6I5L.mjs.map +1 -0
- package/dist/{chunk-OCASVHBV.mjs → chunk-MS2TXXYX.mjs} +3 -3
- package/dist/{chunk-OCASVHBV.mjs.map → chunk-MS2TXXYX.mjs.map} +1 -1
- package/dist/{chunk-NOV43IG4.mjs → chunk-SN7KBNGK.mjs} +3 -3
- package/dist/{chunk-NOV43IG4.mjs.map → chunk-SN7KBNGK.mjs.map} +1 -1
- package/dist/{chunk-TXILKP4F.mjs → chunk-SNRTM7N3.mjs} +8 -2
- package/dist/chunk-SNRTM7N3.mjs.map +1 -0
- package/dist/components/Epub/index.d.mts +7 -7
- package/dist/components/Epub/index.mjs +121 -38
- package/dist/components/Epub/index.mjs.map +1 -1
- package/dist/{const-IAfi9t_g.d.mts → const-PMmwYJND.d.mts} +19 -3
- package/dist/core/Components/index.d.mts +33 -5
- package/dist/core/Components/index.mjs +2 -2
- package/dist/core/Helpers/index.d.mts +2 -2
- package/dist/core/Helpers/index.mjs +2 -2
- package/dist/core/Hooks/index.d.mts +2 -2
- package/dist/core/Hooks/index.mjs +1 -1
- package/dist/{enums-DqGQ66r1.d.mts → enums-zr26wZEt.d.mts} +6 -1
- package/dist/lib/index.d.mts +5 -5
- package/dist/lib/index.mjs +2 -2
- package/dist/preferences/index.d.mts +6 -6
- package/dist/preferences/index.mjs +2 -2
- package/dist/{readerHeader.module-K7OLOIJP.module.css → readerHeader.module-RNGQFLVS.module.css} +12 -6
- package/dist/{useBreakpoints-BQaiwecQ.d.mts → useBreakpoints-D4hBQiGq.d.mts} +1 -1
- package/dist/{usePreferences-BMyBhq7F.d.mts → usePreferences-DN1ACFM8.d.mts} +1 -1
- package/package.json +1 -1
- package/dist/chunk-RQFPGXWN.mjs.map +0 -1
- package/dist/chunk-SDVDRPT5.mjs.map +0 -1
- package/dist/chunk-TXILKP4F.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
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}"]}
|