@edrlab/thorium-web 1.0.0 → 1.0.1
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/README.md +1 -1
- package/dist/{chunk-EDUSR3DX.mjs → chunk-AGJM3AY2.mjs} +15 -8
- package/dist/chunk-AGJM3AY2.mjs.map +1 -0
- package/dist/components/Epub/index.d.mts +7 -5
- package/dist/components/Epub/index.mjs +55 -22
- package/dist/components/Epub/index.mjs.map +1 -1
- package/dist/core/Components/index.d.mts +1 -0
- package/dist/core/Components/index.mjs +1 -1
- package/dist/locales/da/thorium-web.json +1 -0
- package/dist/locales/lt/thorium-web.json +220 -0
- package/dist/locales/pl/thorium-web.json +240 -236
- package/dist/locales/pt-BR/thorium-web.json +220 -0
- package/dist/locales/pt-PT/thorium-web.json +94 -71
- package/dist/locales/sv/thorium-web.json +1 -0
- package/dist/locales/ta/thorium-web.json +220 -0
- package/package.json +13 -9
- package/dist/chunk-EDUSR3DX.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -34,7 +34,7 @@ The development server will automatically reload the page when you make changes
|
|
|
34
34
|
To use Thorium Web in your own project, install the package and its peer dependencies:
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
npm install @edrlab/thorium-web @readium/css @readium/navigator @readium/navigator-html-injectables @readium/shared react-redux @reduxjs/toolkit motion react-aria react-aria-components react-stately react-modal-sheet react-resizable-panels
|
|
37
|
+
npm install @edrlab/thorium-web @readium/css @readium/navigator @readium/navigator-html-injectables @readium/shared react-redux @reduxjs/toolkit i18next i18next-browser-languagedetector i18next-http-backend motion react-aria react-aria-components react-stately react-modal-sheet react-resizable-panels
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
Then you can import and use the components in your own code:
|
|
@@ -326,7 +326,7 @@ var ThNavigationButton = ({
|
|
|
326
326
|
);
|
|
327
327
|
};
|
|
328
328
|
var useFirstFocusable = (props) => {
|
|
329
|
-
const { withinRef, fallbackRef, scrollerRef, trackedState, autoFocus = true, updateState } = props ?? {};
|
|
329
|
+
const { withinRef, fallbackRef, scrollerRef, trackedState, autoFocus = true, scrollTop, updateState } = props ?? {};
|
|
330
330
|
const focusableElement = useRef(null);
|
|
331
331
|
const attemptsRef = useRef(0);
|
|
332
332
|
useEffect(() => {
|
|
@@ -343,6 +343,9 @@ var useFirstFocusable = (props) => {
|
|
|
343
343
|
} else if (selectedEl instanceof HTMLElement) {
|
|
344
344
|
firstFocusable = selectedEl;
|
|
345
345
|
}
|
|
346
|
+
if (!firstFocusable) {
|
|
347
|
+
firstFocusable = withinRef.current && withinRef.current.querySelector("[data-selected]");
|
|
348
|
+
}
|
|
346
349
|
if (!firstFocusable) {
|
|
347
350
|
const focusableElements = withinRef.current && withinRef.current.querySelectorAll("a, button, input, select");
|
|
348
351
|
const element = focusableElements && Array.from(focusableElements).find((element2) => {
|
|
@@ -354,11 +357,15 @@ var useFirstFocusable = (props) => {
|
|
|
354
357
|
}
|
|
355
358
|
if (firstFocusable) {
|
|
356
359
|
if (autoFocus) {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
scrollerRef
|
|
360
|
+
if (scrollTop) {
|
|
361
|
+
firstFocusable.focus({ preventScroll: true });
|
|
362
|
+
if (scrollerRef?.current) {
|
|
363
|
+
scrollerRef.current.scrollTop = 0;
|
|
364
|
+
} else {
|
|
365
|
+
withinRef.current.scrollTop = 0;
|
|
366
|
+
}
|
|
360
367
|
} else {
|
|
361
|
-
|
|
368
|
+
firstFocusable.focus();
|
|
362
369
|
}
|
|
363
370
|
}
|
|
364
371
|
focusableElement.current = firstFocusable;
|
|
@@ -380,7 +387,7 @@ var useFirstFocusable = (props) => {
|
|
|
380
387
|
return () => {
|
|
381
388
|
attemptsRef.current = 0;
|
|
382
389
|
};
|
|
383
|
-
}, [withinRef, fallbackRef, scrollerRef, trackedState, autoFocus, updateState]);
|
|
390
|
+
}, [withinRef, fallbackRef, scrollerRef, trackedState, autoFocus, scrollTop, updateState]);
|
|
384
391
|
return focusableElement.current;
|
|
385
392
|
};
|
|
386
393
|
var ThPopover = ({
|
|
@@ -1384,5 +1391,5 @@ var ThGrid = ({
|
|
|
1384
1391
|
};
|
|
1385
1392
|
|
|
1386
1393
|
export { ThActionButton, ThActionsBar, ThActionsTriggerVariant, ThBackArrow, ThBottomSheet, ThCloseButton, ThCollapsibleActionsBar, ThContainerBody, ThContainerHeader, ThContainerHeaderWithClose, ThContainerHeaderWithPrevious, ThDockedPanel, ThDragIndicatorButton, ThDropdown, ThDropdownButton, ThFooter, ThForm, ThFormNumberField, ThFormSearchField, ThFormTextField, ThGrid, ThHeader, ThHome, ThInteractiveOverlay, ThLibrary, ThLink, ThLoader, ThMenu, ThMenuButton, ThMenuItem, ThModal, ThNavigationButton, ThNumberField, ThPagination, ThPopover, ThProgression, ThRadioGroup, ThRunningHead, ThSettingsWrapper, ThSettingsWrapperButton, ThSlider, ThSwitch, ThTypedComponentRenderer, useActions, useFirstFocusable };
|
|
1387
|
-
//# sourceMappingURL=chunk-
|
|
1388
|
-
//# sourceMappingURL=chunk-
|
|
1394
|
+
//# sourceMappingURL=chunk-AGJM3AY2.mjs.map
|
|
1395
|
+
//# sourceMappingURL=chunk-AGJM3AY2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/Components/Actions/hooks/useActions.ts","../src/core/Components/Actions/ThActionsBar.tsx","../src/core/Components/Menu/assets/icons/more_vert.svg","../src/core/Components/Buttons/ThActionButton.tsx","../src/core/Components/Menu/ThMenuButton.tsx","../src/core/Components/Menu/ThMenu.tsx","../src/core/Components/Actions/ThCollapsibleActionsBar.tsx","../src/core/Components/Buttons/assets/icons/close.svg","../src/core/Components/Buttons/ThCloseButton.tsx","../src/core/Components/Containers/ThBottomSheet/assets/icons/horizontal_rule.svg","../src/core/Components/Containers/ThBottomSheet/ThDragIndicatorButton.tsx","../src/core/Components/assets/icons/arrow_back.svg","../src/core/Components/assets/icons/arrow_forward.svg","../src/core/Components/Buttons/ThNavigationButton.tsx","../src/core/Components/Containers/hooks/useFirstFocusable.ts","../src/core/Components/Containers/ThPopover.tsx","../src/core/Components/Containers/ThModal.tsx","../src/core/Components/Containers/ThDockedPanel.tsx","../src/core/Components/Containers/ThContainerHeader/ThContainerHeader.tsx","../src/core/Components/Containers/ThContainerHeader/ThContainerHeaderWithClose.tsx","../src/core/Components/Containers/ThContainerHeader/ThContainerHeaderWithPrevious.tsx","../src/core/Components/Containers/ThContainerBody.tsx","../src/core/Components/Containers/ThBottomSheet/ThBottomSheet.tsx","../src/core/Components/Containers/ThTypedComponentRenderer.tsx","../src/core/Components/Form/ThForm.tsx","../src/core/Components/Form/Fields/ThFormNumberField.tsx","../src/core/Components/Form/Fields/ThFormTextField.tsx","../src/core/Components/Form/Fields/assets/icons/search.svg","../src/core/Components/Form/Fields/ThFormSearchField.tsx","../src/core/Components/Links/ThLink.tsx","../src/core/Components/Links/ThBackArrow.tsx","../src/core/Components/Links/assets/icons/home.svg","../src/core/Components/Links/ThHome.tsx","../src/core/Components/Links/assets/icons/newsstand.svg","../src/core/Components/Links/ThLibrary.tsx","../src/core/Components/Menu/ThMenuItem.tsx","../src/core/Components/Reader/ThFooter.tsx","../src/core/Components/Reader/ThLoader.tsx","../src/core/Components/Reader/ThHeader.tsx","../src/core/Components/Reader/ThInteractiveOverlay.tsx","../src/core/Components/Reader/ThPagination.tsx","../src/core/Components/Reader/ThProgression.tsx","../src/core/Components/Reader/ThRunningHead.tsx","../src/core/Components/Settings/assets/icons/add.svg","../src/core/Components/Settings/assets/icons/remove.svg","../src/core/Components/Settings/ThNumberField.tsx","../src/core/Components/Settings/ThRadioGroup.tsx","../src/core/Components/Settings/ThSlider.tsx","../src/core/Components/Settings/ThSwitch.tsx","../src/core/Components/Settings/ThDropdown/assets/icons/arrow_drop_down.svg","../src/core/Components/Settings/ThDropdown/ThDropdownButton.tsx","../src/core/Components/Settings/ThDropdown/ThDropdown.tsx","../src/core/Components/Settings/ThSettingsWrapper/assets/icons/settings.svg","../src/core/Components/Settings/ThSettingsWrapper/ThSettingsWrapperButton.tsx","../src/core/Components/Settings/ThSettingsWrapper/ThSettingsWrapper.tsx","../src/core/Components/ThGrid.tsx"],"names":["ThActionsTriggerVariant","jsx","jsxs","Fragment","React","useObjectRef","Button","useRef","input","element","Popover","Dialog","useEffect","FocusScope","Label","Input","Text","FieldError","TooltipTrigger","Tooltip","NumberField","Heading","createElement"],"mappings":"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","file":"chunk-AGJM3AY2.mjs","sourcesContent":["\"use client\";\n\nimport { ActionStateObject } from \"@/lib/actionsReducer\";\nimport { ThDockingKeys } from \"@/preferences/models/enums\";\n\nexport interface ThActionMap {\n [key: string | number | symbol]: ActionStateObject | undefined;\n}\n\nexport const useActions = <K extends string | number | symbol>(actionMap: ThActionMap) => {\n const findOpen = () => {\n const open: K[] = [];\n\n Object.entries(actionMap).forEach(([key, value]) => {\n if (value?.isOpen) open.push(key as K);\n });\n\n return open;\n };\n\n const anyOpen = () => {\n return Object.values(actionMap).some((value) => value?.isOpen);\n };\n\n const isOpen = (key?: K | null) => {\n if (key) {\n if (actionMap[key]?.isOpen == null) {\n return false;\n } else {\n return actionMap[key]?.isOpen;\n }\n }\n return false;\n };\n\n const findDocked = () => {\n const docked: K[] = [];\n\n Object.entries(actionMap).forEach(([key, value]) => {\n const docking = value?.docking;\n if (docking === ThDockingKeys.start || docking === ThDockingKeys.end) {\n docked.push(key as K);\n }\n });\n\n return docked;\n };\n\n const anyDocked = () => {\n return Object.values(actionMap).some((value) => {\n const docking = value?.docking;\n return docking === ThDockingKeys.start || docking === ThDockingKeys.end;\n });\n };\n\n const isDocked = (key?: K | null) => {\n if (!key) return false;\n const docking = actionMap[key]?.docking;\n return docking === ThDockingKeys.start || docking === ThDockingKeys.end;\n };\n\n const whichDocked = (key?: K | null) => {\n return key ? actionMap[key]?.docking : null;\n };\n\n const getDockedWidth = (key?: K | null) => {\n return key && actionMap[key]?.dockedWidth || undefined;\n };\n\n const everyOpenDocked = () => {\n const opens = findOpen();\n\n return opens.every((key) => {\n return isDocked(key);\n });\n };\n\n return {\n findOpen,\n anyOpen,\n isOpen,\n findDocked,\n anyDocked,\n isDocked,\n whichDocked,\n getDockedWidth,\n everyOpenDocked,\n };\n};","\"use client\";\n\nimport { useObjectRef } from \"react-aria\";\nimport { Toolbar, ToolbarProps } from \"react-aria-components\";\n\nexport enum ThActionsTriggerVariant {\n button = \"iconButton\",\n menu = \"menuItem\"\n}\n\nexport interface ThActionEntry<T> {\n key: T;\n associatedKey?: string;\n Trigger: React.ComponentType<any>;\n Target?: React.ComponentType<any>;\n}\n\nexport interface ThActionsBarProps extends ToolbarProps {\n ref?: React.ForwardedRef<HTMLDivElement>\n};\n\nexport const ThActionsBar = ({ \n ref, \n children, \n ...props \n}: ThActionsBarProps) => {\n const resolvedRef = useObjectRef(ref);\n\n return (\n <Toolbar \n ref={ resolvedRef } \n { ...props }\n >\n { children }\n </Toolbar>\n )\n}","import * as React from \"react\";\nconst SvgMoreVert = props => <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"inherit\" {...props}><path d=\"M480-160q-33 0-56.5-23.5T400-240q0-33 23.5-56.5T480-320q33 0 56.5 23.5T560-240q0 33-23.5 56.5T480-160Zm0-240q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Zm0-240q-33 0-56.5-23.5T400-720q0-33 23.5-56.5T480-800q33 0 56.5 23.5T560-720q0 33-23.5 56.5T480-640Z\" /></svg>;\nexport default SvgMoreVert;","\"use client\";\n\nimport { WithRef } from \"../customTypes\";\n\nimport { Button, ButtonProps, Tooltip, TooltipProps, TooltipTrigger } from \"react-aria-components\";\nimport { TooltipTriggerProps } from \"react-aria\";\n\nexport interface ThActionButtonProps extends ButtonProps {\n label?: string,\n ref?: React.ForwardedRef<HTMLButtonElement>,\n compounds?: {\n /**\n * Props for the tooltipTrigger component. See `TooltipTriggerProps` for more information.\n */\n tooltipTrigger?: WithRef<TooltipTriggerProps, HTMLDivElement>,\n /**\n * Props for the tooltip component. See `TooltipProps` for more information.\n */\n tooltip?: WithRef<TooltipProps, HTMLDivElement>,\n /**\n * String for the tooltip\n */\n label: string \n }\n}\n\nexport const ThActionButton = ({\n ref,\n compounds,\n children,\n ...props\n}: ThActionButtonProps) => { \n if (compounds) {\n return (\n <>\n <TooltipTrigger\n { ...compounds.tooltipTrigger }\n >\n <Button \n ref={ ref }\n { ...props }\n >\n { children } \n </Button>\n <Tooltip\n arrowBoundaryOffset={ 0 }\n { ...compounds.tooltip }\n >\n { compounds.label }\n </Tooltip>\n </TooltipTrigger>\n </>\n )\n } else {\n return (\n <>\n <Button \n { ...props }\n >\n { children }\n </Button>\n </>\n )\n }\n}","\"use client\";\n\nimport MoreVertIcon from \"./assets/icons/more_vert.svg\";\n\nimport { ThActionButton, ThActionButtonProps } from \"../Buttons/ThActionButton\";\n\nexport const ThMenuButton = ({\n label,\n ref,\n compounds,\n children,\n ...props\n}: ThActionButtonProps) => {\n return (\n <ThActionButton\n ref={ ref }\n compounds={ compounds }\n { ...props }\n >\n { children \n ? children \n : <>\n <MoreVertIcon aria-hidden=\"true\" focusable=\"false\" /> \n { label }\n </> \n }\n </ThActionButton>\n )\n}","\"use client\";\n\nimport React, { useRef } from \"react\";\n\nimport { WithRef } from \"../customTypes\";\n\nimport { Menu, MenuProps, MenuTrigger, MenuTriggerProps, Popover, PopoverProps } from \"react-aria-components\";\n\nimport { ThMenuButton } from \"./ThMenuButton\";\nimport { ThActionButtonProps } from \"../Buttons\";\nimport { ThActionEntry, ThActionsTriggerVariant } from \"../Actions/ThActionsBar\";\n\nexport interface THMenuProps<T> extends MenuProps<ThActionEntry<T>> {\n ref?: React.ForwardedRef<HTMLDivElement>;\n triggerRef?: React.RefObject<HTMLElement | null>;\n items?: Iterable<ThActionEntry<T>>;\n children?: never;\n compounds?: {\n /**\n * Props for the trigger component. See `MenuTriggerProps` for more information.\n */\n menuTrigger?: Omit<WithRef<MenuTriggerProps, HTMLDivElement>, \"children\">;\n /**\n * Props for the button component. See `ThActionButtonProps` for more information.\n * Alternatively you can provide your own component\n */\n button?: ThActionButtonProps | React.ReactElement<ThActionButtonProps>;\n /**\n * Props for the popover component. See `PopoverProps` for more information.\n */\n popover?: WithRef<PopoverProps, HTMLDivElement>;\n }\n}\n\nexport const ThMenu = ({\n ref,\n id,\n triggerRef,\n items,\n dependencies,\n compounds,\n ...props\n}: THMenuProps<string>) => {\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n if (items) {\n return (\n <>\n <MenuTrigger \n { ...compounds?.menuTrigger }\n >\n { compounds?.button && React.isValidElement(compounds.button) \n ? compounds.button \n : <ThMenuButton \n ref={ buttonRef }\n { ...compounds?.button as ThActionButtonProps }\n />\n }\n <Popover { ...compounds?.popover }>\n <Menu \n ref={ ref }\n id={ id }\n dependencies={ dependencies }\n { ...props }\n >\n { Array.from(items).map(({ Trigger, key, associatedKey }) => \n <Trigger \n key={ `${ key }-menuItem` } \n variant={ ThActionsTriggerVariant.menu }\n { ...(associatedKey ? { associatedKey: associatedKey } : {}) } \n { ...props }\n />\n )}\n </Menu>\n </Popover>\n </MenuTrigger>\n { Array.from(items).map(({ Target, key }) => \n Target && <Target key={ `${ key }-container` } triggerRef={ triggerRef || buttonRef } { ...props } />\n )}\n </>\n )\n }\n}","\"use client\";\n\nimport React, { Fragment } from \"react\";\n\nimport { ThActionEntry, ThActionsBar, ThActionsBarProps, ThActionsTriggerVariant } from \"./ThActionsBar\";\nimport { ThMenu, THMenuProps } from \"../Menu/ThMenu\";\n\nimport { useObjectRef } from \"react-aria\";\nimport { CollapsiblePref, useCollapsibility } from \"./hooks/useCollapsibility\";\n\nexport interface ThCollapsibleActionsBarProps extends ThActionsBarProps {\n id: string;\n items: ThActionEntry<string>[];\n prefs: CollapsiblePref;\n breakpoint?: string;\n children?: never;\n compounds?: {\n menu: THMenuProps<string> | React.ReactElement<typeof ThMenu>;\n }\n}\n\nexport const ThCollapsibleActionsBar = ({\n ref,\n id,\n items,\n prefs,\n breakpoint,\n compounds,\n ...props\n}: ThCollapsibleActionsBarProps) => {\n const resolvedRef = useObjectRef(ref);\n const Actions = useCollapsibility(items, prefs, breakpoint);\n\n return (\n <>\n <ThActionsBar \n ref={ resolvedRef }\n { ...props }\n >\n { Actions.ActionIcons.map(({ Trigger, Target, key, associatedKey }) => \n <Fragment key={ key }>\n <Trigger \n key={ `${ key }-trigger` } \n variant={ ThActionsTriggerVariant.button }\n { ...(associatedKey ? { associatedKey: associatedKey } : {}) } \n { ...props }\n />\n { Target && <Target key={ `${ key }-container` } triggerRef={ resolvedRef } /> }\n </Fragment>\n ) \n }\n\n { React.isValidElement(compounds?.menu) \n ? (React.cloneElement(compounds.menu, {\n ...compounds.menu.props,\n id: id,\n triggerRef: resolvedRef,\n items: Actions.MenuItems,\n dependencies: [\"Trigger\"],\n } as THMenuProps<string>)) \n : (<ThMenu \n id={ id } \n triggerRef={ resolvedRef }\n items={ Actions.MenuItems }\n dependencies={ [\"Trigger\"] }\n { ...compounds?.menu }\n />\n )}\n </ThActionsBar>\n </>\n )\n}\n","import * as React from \"react\";\nconst SvgClose = props => <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"inherit\" {...props}><path d=\"m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z\" /></svg>;\nexport default SvgClose;","\"use client\";\n\nimport Close from \"./assets/icons/close.svg\";\n\nimport { ThActionButton, ThActionButtonProps } from \"./ThActionButton\";\n\nexport const ThCloseButton = ({\n label,\n ref,\n compounds,\n children,\n ...props\n}: ThActionButtonProps) => {\n return (\n <ThActionButton\n ref={ ref }\n compounds={ compounds }\n { ...props }\n >\n { children \n ? children \n : <>\n <Close aria-hidden=\"true\" focusable=\"false\" /> \n { label }\n </> \n }\n </ThActionButton>\n )\n}","import * as React from \"react\";\nconst SvgHorizontalRule = props => <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"inherit\" {...props}><path d=\"M200-440q-17 0-28.5-11.5T160-480q0-17 11.5-28.5T200-520h560q17 0 28.5 11.5T800-480q0 17-11.5 28.5T760-440H200Z\" /></svg>;\nexport default SvgHorizontalRule;","\"use client\";\n\nimport HorizontalRule from \"./assets/icons/horizontal_rule.svg\";\n\nimport { Button, ButtonProps } from \"react-aria-components\";\n\nexport interface ThDragIndicatorButtonProps extends ButtonProps {\n ref?: React.ForwardedRef<HTMLButtonElement>;\n}\n\nexport const ThDragIndicatorButton = ({\n ref,\n children,\n ...props\n}: ThDragIndicatorButtonProps) => {\n return (\n <>\n <Button \n ref={ ref }\n { ...props }\n >\n { children ? children : <HorizontalRule aria-hidden=\"true\" focusable=\"false\" /> }\n </Button>\n </>\n )\n}","import * as React from \"react\";\nconst SvgArrowBack = props => <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"inherit\" {...props}><path d=\"M640-80 240-480l400-400 71 71-329 329 329 329-71 71Z\" /></svg>;\nexport default SvgArrowBack;","import * as React from \"react\";\nconst SvgArrowForward = props => <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"inherit\" {...props}><path d=\"m321-80-71-71 329-329-329-329 71-71 400 400L321-80Z\" /></svg>;\nexport default SvgArrowForward;","\"use client\";\n\nimport React from \"react\";\n\nimport ArrowBack from \"../assets/icons/arrow_back.svg\";\nimport ArrowForward from \"../assets/icons/arrow_forward.svg\";\n\nimport { ThActionButton, ThActionButtonProps } from \"./ThActionButton\";\n\nexport interface ThNavigationButtonProps extends ThActionButtonProps {\n direction?: \"left\" | \"right\";\n}\n\nexport const ThNavigationButton = ({\n direction,\n label,\n ref,\n compounds,\n children,\n ...props\n}: ThNavigationButtonProps) => {\n const fallBackChildren = (\n <React.Fragment>\n { direction === \"right\"\n ? <ArrowForward aria-hidden=\"true\" focusable=\"false\" />\n : <ArrowBack aria-hidden=\"true\" focusable=\"false\" />\n }\n { label }\n </React.Fragment>\n );\n\n return (\n <ThActionButton\n ref={ ref }\n compounds={ compounds }\n { ...props }\n >\n { children || fallBackChildren }\n </ThActionButton>\n )\n}\n","\"use client\";\n\nimport { useEffect, useRef } from \"react\";\n\nexport interface UseFirstFocusableProps {\n withinRef?: React.RefObject<HTMLElement | null>;\n fallbackRef?: React.RefObject<HTMLElement | null>;\n scrollerRef?: React.RefObject<HTMLElement | null>;\n trackedState?: boolean;\n autoFocus?: boolean;\n scrollTop?: boolean;\n updateState?: unknown;\n}\n\nexport const useFirstFocusable = (props?: UseFirstFocusableProps) => {\n const { withinRef, fallbackRef, scrollerRef, trackedState, autoFocus = true, scrollTop, updateState } = props ?? {};\n\n const focusableElement = useRef<HTMLElement | null>(null);\n const attemptsRef = useRef(0);\n\n useEffect(() => {\n if (!withinRef || !trackedState) return;\n\n attemptsRef.current = 0;\n\n const tryFocus = () => {\n const targetElement = withinRef.current && withinRef.current.firstElementChild || withinRef.current;\n const selectedEl = targetElement && targetElement.querySelector(\"[data-selected]\");\n\n let firstFocusable: HTMLElement | null = null;\n\n if (selectedEl === null) {\n const inputs = targetElement && targetElement.querySelectorAll(\"input\");\n const input = inputs && Array.from(inputs).find((input: HTMLInputElement) => !input.disabled && input.tabIndex >= 0);\n firstFocusable = input as HTMLElement | null;\n } else if (selectedEl instanceof HTMLElement) {\n firstFocusable = selectedEl;\n }\n\n if (!firstFocusable) {\n firstFocusable = withinRef.current && withinRef.current.querySelector(\"[data-selected]\") as HTMLElement | null;\n }\n\n if (!firstFocusable) {\n const focusableElements = withinRef.current && withinRef.current.querySelectorAll(\"a, button, input, select\");\n const element = focusableElements && Array.from(focusableElements).find(element => {\n const htmlElement = element as HTMLAnchorElement | HTMLButtonElement | HTMLInputElement | HTMLSelectElement;\n if (htmlElement instanceof HTMLAnchorElement) return true;\n return !htmlElement.disabled && htmlElement.tabIndex >= 0;\n });\n firstFocusable = element as HTMLElement | null;\n }\n\n if (firstFocusable) {\n if (autoFocus) {\n if (scrollTop) {\n firstFocusable.focus({ preventScroll: true });\n if (scrollerRef?.current) {\n scrollerRef.current.scrollTop = 0;\n } else {\n withinRef.current!.scrollTop = 0;\n }\n } else {\n firstFocusable.focus();\n }\n }\n focusableElement.current = firstFocusable;\n } else {\n attemptsRef.current++;\n if (attemptsRef.current < 3) {\n setTimeout(tryFocus, 50);\n } else {\n if (fallbackRef?.current) {\n if (autoFocus) {\n fallbackRef.current.focus({ preventScroll: true });\n }\n focusableElement.current = fallbackRef.current;\n }\n }\n }\n };\n\n tryFocus();\n\n return () => {\n attemptsRef.current = 0;\n };\n }, [withinRef, fallbackRef, scrollerRef, trackedState, autoFocus, scrollTop, updateState]);\n\n return focusableElement.current;\n};","\"use client\";\n\nimport React from \"react\";\n\nimport { WithRef } from \"../customTypes\";\n\nimport { ThContainerProps } from \"./ThContainer\";\n\nimport { Dialog, DialogProps, Popover, PopoverProps } from \"react-aria-components\";\n\nimport { useObjectRef } from \"react-aria\";\nimport { useFirstFocusable } from \"./hooks/useFirstFocusable\";\n\nexport interface ThPopoverProps extends Omit<PopoverProps, \"children\">, ThContainerProps {\n triggerRef: React.RefObject<HTMLElement | null>;\n compounds?: {\n dialog: WithRef<DialogProps, HTMLDivElement>;\n }\n}\n\nexport const ThPopover = ({ \n ref,\n triggerRef,\n focusOptions,\n compounds,\n maxHeight,\n children, \n ...props \n}: ThPopoverProps) => {\n const resolvedRef = useObjectRef(ref as React.RefObject<HTMLDivElement | null>);\n\n useFirstFocusable(focusOptions);\n\n const computeMaxHeight = () => {\n if (!resolvedRef.current) return;\n return window.innerHeight - resolvedRef.current.offsetTop;\n };\n\n return (\n <Popover \n ref={ resolvedRef }\n triggerRef={ triggerRef }\n maxHeight={ maxHeight || computeMaxHeight() }\n { ...props }\n >\n <Dialog { ...compounds?.dialog }>\n { children }\n </Dialog>\n </Popover>\n )\n}","\"use client\";\n\nimport React from \"react\";\n\nimport { WithRef } from \"../customTypes\";\n\nimport { ThContainerProps } from \"./ThContainer\";\n\nimport { Dialog, DialogProps, Modal, ModalOverlayProps } from \"react-aria-components\";\n\nimport { useObjectRef } from \"react-aria\";\nimport { useFirstFocusable } from \"./hooks/useFirstFocusable\";\n\nexport interface ThModalProps extends Omit<ModalOverlayProps, \"children\">, ThContainerProps {\n compounds?: {\n dialog: WithRef<DialogProps, HTMLDivElement>;\n }\n}\n\nexport const ThModal = ({ \n ref,\n focusOptions,\n compounds,\n children, \n ...props \n}: ThModalProps) => {\n const resolvedRef = useObjectRef(ref as React.RefObject<HTMLDivElement | null>);\n\n useFirstFocusable(focusOptions);\n\n return (\n <Modal \n ref={ resolvedRef }\n { ...props }\n >\n <Dialog { ...compounds?.dialog }>\n { children }\n </Dialog>\n </Modal>\n )\n}","\"use client\";\n\nimport React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { ThContainerProps } from \"./ThContainer\";\n\nimport { FocusScope, useObjectRef } from \"react-aria\";\nimport { useFirstFocusable } from \"./hooks/useFirstFocusable\";\n\nexport interface ThDockedPanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">, ThContainerProps {\n isOpen: boolean;\n portal: HTMLElement | null;\n}\n\nexport const ThDockedPanel = ({ \n ref,\n isOpen,\n portal,\n focusOptions,\n children, \n ...props \n}: ThDockedPanelProps) => {\n const resolvedRef = useObjectRef(ref as React.RefObject<HTMLDivElement | null>);\n\n useFirstFocusable(focusOptions);\n\n return (\n <>\n { isOpen && portal && createPortal(\n <FocusScope \n contain={ false }\n autoFocus={ focusOptions?.autoFocus ?? true } \n restoreFocus={ true }\n >\n <div\n ref={ resolvedRef } \n { ...props }\n >\n { children }\n </div>\n </FocusScope>\n , portal)\n }\n </>\n )\n}","\"use client\";\n\nimport { Heading, HeadingProps } from \"react-aria-components\";\nimport { HTMLAttributesWithRef, WithRef } from \"../../customTypes\";\n\nexport interface ThContainerHeaderProps extends HTMLAttributesWithRef<HTMLDivElement> {\n ref?: React.ForwardedRef<HTMLDivElement>;\n label: string;\n compounds?: {\n heading?: WithRef<HeadingProps, HTMLHeadingElement>;\n }\n}\n\nexport const ThContainerHeader = ({ \n ref,\n label,\n compounds,\n children,\n ...props \n}: ThContainerHeaderProps) => {\n return (\n <div \n ref={ ref } \n { ...props }\n >\n <Heading \n slot=\"title\"\n { ...compounds?.heading }\n >\n { label }\n </Heading>\n { children }\n </div>\n )\n}","\"use client\";\n\nimport { WithRef } from \"../../customTypes\";\n\nimport { HeadingProps } from \"react-aria-components\";\nimport { ThActionButtonProps, ThCloseButton } from \"../../Buttons\";\nimport { ThContainerHeader, ThContainerHeaderProps } from \"./ThContainerHeader\"\n\nexport interface THContainerWithCloseProps extends ThContainerHeaderProps {\n closeRef?: React.ForwardedRef<HTMLButtonElement>;\n children?: never;\n compounds?: {\n heading: WithRef<HeadingProps, HTMLHeadingElement>;\n button: ThActionButtonProps;\n }\n}\nexport const ThContainerHeaderWithClose = ({ \n ref,\n closeRef,\n label,\n compounds,\n ...props \n}: THContainerWithCloseProps) => {\n return (\n <ThContainerHeader \n ref={ ref } \n label={ label }\n { ...props }\n compounds={ { heading: compounds?.heading }}\n >\n <ThCloseButton ref={ closeRef } { ...compounds?.button } />\n </ThContainerHeader>\n )\n}","\"use client\";\n\nimport { WithRef } from \"../../customTypes\";\n\nimport { HeadingProps } from \"react-aria-components\";\nimport { ThNavigationButton, ThNavigationButtonProps } from \"../../Buttons\";\nimport { ThContainerHeader, ThContainerHeaderProps } from \"./ThContainerHeader\"\n\nexport interface THContainerWithPreviousProps extends ThContainerHeaderProps {\n previousRef?: React.ForwardedRef<HTMLButtonElement>;\n children?: never;\n compounds?: {\n heading: WithRef<HeadingProps, HTMLHeadingElement>;\n button: ThNavigationButtonProps;\n }\n}\nexport const ThContainerHeaderWithPrevious = ({ \n ref,\n previousRef,\n label,\n compounds,\n ...props \n}: THContainerWithPreviousProps) => {\n return (\n <ThContainerHeader \n ref={ ref } \n label={ label }\n { ...props }\n compounds={ { heading: compounds?.heading }}\n >\n <ThNavigationButton ref={ previousRef } { ...compounds?.button } />\n </ThContainerHeader>\n )\n}","\"use client\";\n\nimport { HTMLAttributesWithRef } from \"../customTypes\";\n\nexport interface ThContainerBodyProps extends HTMLAttributesWithRef<HTMLDivElement> {}\n\nexport const ThContainerBody = ({ \n ref,\n children,\n ...props \n}: ThContainerBodyProps) => {\n return (\n <div \n ref={ ref } \n { ...props }\n >\n { children }\n </div>\n )\n}","\"use client\";\n\nimport React, { \n RefObject, \n useCallback, \n useEffect, \n useMemo, \n useState \n} from \"react\";\n\nimport { ThBottomSheetDetent } from \"@/preferences/preferences\";\n\nimport { OverlayTriggerState, useOverlayTriggerState } from \"react-stately\";\n\nimport { ThContainerHeader, ThContainerHeaderProps } from \"../ThContainerHeader\";\nimport { ThContainerBody } from \"../ThContainerBody\";\nimport { ThContainerProps } from \"../ThContainer\";\nimport { useFirstFocusable, UseFirstFocusableProps } from \"../hooks/useFirstFocusable\";\n\nimport { ThDragIndicatorButton, ThDragIndicatorButtonProps } from \"./ThDragIndicatorButton\";\n\nimport { Sheet, SheetRef } from \"react-modal-sheet\";\nimport { HeadingProps } from \"react-aria-components\";\nimport { \n AriaOverlayProps, \n FocusScope, \n OverlayProvider, \n useDialog, \n useModal, \n useObjectRef, \n useOverlay \n} from \"react-aria\";\n\nexport interface ThBottomSheetHeaderProps extends ThContainerHeaderProps {\n wrapper: React.ComponentProps<typeof Sheet.Header>,\n dragIndicator: React.ComponentProps<typeof ThDragIndicatorButton>,\n header: ThContainerHeaderProps,\n heading: HeadingProps\n}\n\nexport interface ThBottomSheetCompounds {\n container?: Omit<React.ComponentProps<typeof Sheet.Container>, \"children\">,\n header?: React.ComponentProps<typeof Sheet.Header>,\n dragIndicator?: ThDragIndicatorButtonProps,\n content?: React.ComponentProps<typeof Sheet.Content>,\n scroller?: React.ComponentProps<typeof Sheet.Scroller>,\n backdrop?: React.ComponentProps<typeof Sheet.Backdrop>\n}\n\nexport interface ThBottomSheetProps extends Omit<React.ComponentProps<typeof Sheet>, \"children\" | \"ref\" | \"isOpen\" | \"onClose\">, AriaOverlayProps, ThContainerProps {\n onOpenChange?: (isOpen: boolean) => void;\n isKeyboardDismissDisabled?: boolean;\n compounds?: ThBottomSheetCompounds;\n}\n\nconst ThBottomSheetContainer = ({\n sheetRef,\n sheetState,\n isDraggable, \n isKeyboardDismissDisabled,\n focusOptions,\n detent,\n compounds,\n children\n}: {\n sheetRef: RefObject<HTMLDivElement | SheetRef | null>;\n sheetState: OverlayTriggerState;\n onFullHeight?: Omit<React.ComponentProps<typeof Sheet.Container>, \"children\">;\n isDraggable?: boolean;\n isKeyboardDismissDisabled?: boolean;\n focusOptions?: UseFirstFocusableProps;\n detent?: ThBottomSheetDetent;\n compounds?: ThBottomSheetCompounds;\n children: ThContainerProps[\"children\"];\n}) => {\n const containerRef = useObjectRef(compounds?.container?.ref);\n const scrollerRef = useObjectRef(compounds?.scroller?.ref);\n const dialog = useDialog({}, containerRef);\n const overlay = useOverlay({ \n onClose: sheetState.close, \n isOpen: true, \n isDismissable: true,\n isKeyboardDismissDisabled: isKeyboardDismissDisabled\n }, containerRef);\n const [isFullHeight, setFullHeight] = useState<boolean>(false);\n\n useModal();\n\n const fullHeightIntersectionCallback = useCallback((entries: IntersectionObserverEntry[]) => {\n entries.forEach( (entry) => {\n if (\n detent === \"full-height\" &&\n entry.isIntersecting && \n entry.intersectionRatio === 1 && \n // For some reason width is larger on mobile (and border-right is almost invisible)…\n entry.boundingClientRect.width >= window.innerWidth\n ) {\n setFullHeight(true);\n } else {\n setFullHeight(false);\n }\n });\n }, [setFullHeight, detent]);\n\n useEffect(() => {\n const observer = new IntersectionObserver(fullHeightIntersectionCallback, {\n threshold: 1.0\n });\n containerRef.current && observer.observe(containerRef.current);\n\n return () => {\n observer.disconnect();\n }\n });\n\n const [Header, Body] = useMemo(() => {\n const header = children.find((child) => child.type === ThContainerHeader);\n const body = children.find((child) => child.type === ThContainerBody);\n \n const modifiedHeader = header ? React.cloneElement(header as React.ReactElement<ThContainerHeaderProps>, {\n ...header.props,\n compounds: {\n ...(header.props as ThContainerHeaderProps).compounds,\n heading: {\n ...(header.props as ThContainerHeaderProps).compounds?.heading,\n ...dialog.titleProps\n }\n }\n }) : null;\n\n return [modifiedHeader, body];\n }, [children, dialog.titleProps]);\n\n const updatedFocusOptions = focusOptions ? {\n ...focusOptions,\n scrollerRef: scrollerRef\n } : undefined;\n\n useFirstFocusable(updatedFocusOptions);\n\n return (\n <>\n <Sheet.Container \n { ...compounds?.container }\n ref={ containerRef }\n {...(isFullHeight ? { \"data-full-height\": \"true\" } : {} )}\n { ...overlay.overlayProps as any}\n { ...dialog.dialogProps }\n >\n <Sheet.Header\n { ...compounds?.header }\n >\n { isDraggable && \n <ThDragIndicatorButton \n { ...compounds?.dragIndicator }\n /> \n }\n { Header }\n </Sheet.Header>\n <Sheet.Content \n { ...compounds?.content }\n // Motion being picky with style on bundling so we have to cast like this… \n { ...(isDraggable ? { style: { paddingBottom: (sheetRef.current as SheetRef)?.y }} as { [key: string]: any } : {} )}\n >\n <Sheet.Scroller \n ref={ scrollerRef }\n { ...compounds?.scroller }\n // This is enabled by default since 4.4 but breaks scroll on focus…\n autoPadding={ false }\n >\n { Body }\n </Sheet.Scroller>\n </Sheet.Content>\n </Sheet.Container>\n <Sheet.Backdrop \n { ...compounds?.backdrop }\n />\n </>\n )\n}\n\nexport const ThBottomSheet = ({\n id,\n isOpen,\n onOpenChange,\n ref,\n focusOptions,\n isKeyboardDismissDisabled,\n detent,\n snapPoints,\n compounds,\n children, \n ...props\n}: ThBottomSheetProps) => {\n const resolvedRef = useObjectRef(ref);\n\n let sheetState = useOverlayTriggerState({\n isOpen: isOpen,\n onOpenChange: onOpenChange\n });\n\n const isDraggable = useMemo(() => snapPoints && snapPoints.length > 1, [snapPoints]);\n\n return(\n <>\n <Sheet\n ref={ resolvedRef }\n isOpen={ sheetState.isOpen }\n onClose={ sheetState.close }\n detent={ detent }\n snapPoints={ snapPoints }\n { ...props }\n >\n <OverlayProvider>\n <FocusScope \n contain={ true } \n autoFocus={ focusOptions?.autoFocus ?? true } \n restoreFocus={ true }\n >\n <ThBottomSheetContainer \n sheetRef={ resolvedRef } \n sheetState={ sheetState } \n isDraggable= { isDraggable }\n isKeyboardDismissDisabled={ isKeyboardDismissDisabled }\n focusOptions={ focusOptions }\n detent={ detent }\n compounds={ compounds }\n >\n { children }\n </ThBottomSheetContainer>\n </FocusScope>\n </OverlayProvider>\n </Sheet> \n </>\n )\n}","\"use client\";\n\nimport React, { ReactNode } from \"react\";\n\nexport type ComponentMap<T extends string> = {\n [type in T]: React.ComponentType<any>;\n}\n\nexport interface TypedComponentRendererProps<T extends string, K extends keyof ComponentMap<T>> {\n type: K;\n componentMap: ComponentMap<T>;\n props?: any;\n children?: ReactNode;\n}\n\nexport const ThTypedComponentRenderer = <T extends string, K extends keyof ComponentMap<T>>({\n type,\n componentMap,\n props,\n children,\n}: TypedComponentRendererProps<T, K>) => {\n const Component = componentMap[type];\n\n if (!Component) {\n throw new Error(`Unsupported type: ${type}`);\n }\n\n return React.createElement(Component, props, children);\n};","\"use client\";\n\nimport React from \"react\";\n\nimport { WithRef } from \"../customTypes\";\n\nimport { Button, ButtonProps, Form, FormProps } from \"react-aria-components\";\n\nexport interface ThFormProps extends FormProps {\n ref?: React.ForwardedRef<HTMLFormElement>;\n label: string;\n compounds?: {\n button?: Exclude<WithRef<ButtonProps, HTMLButtonElement>, \"type\"> | React.ReactElement<typeof Button>;\n }\n}\n\nexport const ThForm = ({\n ref,\n label,\n compounds,\n children,\n ...props\n}: ThFormProps) => {\n return(\n <>\n <Form\n ref={ ref }\n {...props}\n >\n { children }\n \n { compounds?.button && React.isValidElement(compounds.button) \n ? compounds.button \n : <Button\n { ...compounds?.button }\n type=\"submit\"\n >\n { label }\n </Button>\n }\n </Form>\n </>\n )\n}","\"use client\";\n\nimport { WithRef } from \"../../customTypes\";\n\nimport { \n Input, \n InputProps, \n Label, \n LabelProps, \n NumberField, \n NumberFieldProps, \n Text \n} from \"react-aria-components\";\n\nexport interface ThFormNumberFieldProps extends NumberFieldProps {\n ref?: React.ForwardedRef<HTMLInputElement>;\n label?: string;\n compounds?: {\n label?: WithRef<LabelProps, HTMLLabelElement>;\n input?: WithRef<InputProps, HTMLInputElement>;\n description?: string;\n }\n}\n\nexport const ThFormNumberField = ({\n ref,\n label,\n compounds,\n children,\n ...props\n}: ThFormNumberFieldProps) => {\n return(\n <>\n <NumberField\n ref={ ref }\n {...props }\n >\n { children \n ? children \n : <>\n { label && <Label {...compounds?.label }>\n { label }\n </Label>\n }\n\n <Input {...compounds?.input } />\n \n { compounds?.description && <Text slot=\"description\"> \n { compounds?.description } \n </Text> \n }\n </> \n }\n </NumberField>\n </>\n )\n}","\"use client\";\n\nimport { WithRef } from \"../../customTypes\";\n\nimport { \n FieldError, \n FieldErrorProps, \n Input, \n InputProps, \n Label, \n LabelProps, \n Text, \n TextField, \n TextFieldProps, \n ValidationResult \n} from \"react-aria-components\";\n\nexport interface ThFormTextFieldProps extends TextFieldProps {\n ref?: React.ForwardedRef<HTMLInputElement>;\n label?: string;\n compounds?: {\n label?: WithRef<LabelProps, HTMLLabelElement>;\n input?: WithRef<InputProps, HTMLInputElement>;\n description?: string;\n fieldError?: WithRef<FieldErrorProps, HTMLDivElement>;\n },\n errorMessage?: string | ((validation: ValidationResult) => string);\n}\n\nexport const ThFormTextField = ({\n ref,\n label,\n children,\n compounds,\n errorMessage,\n ...props\n}: ThFormTextFieldProps) => {\n return(\n <>\n <TextField\n ref={ ref }\n {...props }\n >\n <>\n { children \n ? children \n : <>\n { label && <Label {...compounds?.label }>\n { label }\n </Label>\n }\n \n { errorMessage && <FieldError { ...compounds?.fieldError }>\n { errorMessage }\n </FieldError> \n }\n \n <Input {...compounds?.input } />\n \n { compounds?.description && <Text slot=\"description\"> \n { compounds?.description } \n </Text> \n }\n </> \n }\n </>\n </TextField>\n </>\n )\n}","import * as React from \"react\";\nconst SvgSearch = props => <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"inherit\" {...props}><path d=\"M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z\" /></svg>;\nexport default SvgSearch;","\"use client\";\n\nimport React, { HTMLAttributes } from \"react\";\n\nimport { WithRef } from \"../../customTypes\";\n\nimport SearchIcon from \"./assets/icons/search.svg\";\n\nimport { \n FieldError, \n FieldErrorProps, \n Input, \n InputProps, \n Label, \n LabelProps, \n SearchField, \n SearchFieldProps, \n Text, \n ValidationResult \n} from \"react-aria-components\";\nimport { ThActionButtonProps, ThCloseButton } from \"../../Buttons\";\n\nexport interface ThFormSearchFieldProps extends SearchFieldProps {\n ref?: React.ForwardedRef<HTMLInputElement>;\n label?: string;\n compounds?: {\n label?: WithRef<LabelProps, HTMLLabelElement>;\n input?: WithRef<InputProps, HTMLInputElement>;\n searchIcon?: HTMLAttributes<HTMLDivElement> | React.ReactElement<HTMLDivElement>;\n clearButton?: ThActionButtonProps | React.ReactElement<ThActionButtonProps>;\n description?: string;\n fieldError?: WithRef<FieldErrorProps, HTMLDivElement>;\n },\n errorMessage?: string | ((validation: ValidationResult) => string);\n}\n\nexport const ThFormSearchField = ({\n ref,\n label,\n children,\n compounds,\n errorMessage,\n ...props\n}: ThFormSearchFieldProps) => {\n return(\n <>\n <SearchField\n ref={ ref }\n {...props }\n >\n <>\n { children \n ? children \n : <>\n { label && <Label { ...compounds?.label }>\n { label }\n </Label>\n }\n\n { errorMessage && <FieldError { ...compounds?.fieldError }>\n { errorMessage }\n </FieldError> \n }\n \n <Input { ...compounds?.input } />\n\n { compounds?.searchIcon && React.isValidElement(compounds.searchIcon)\n ? compounds.searchIcon\n : <div {...compounds?.searchIcon }>\n <SearchIcon aria-hidden=\"true\" focusable=\"false\" />\n </div>\n }\n \n { compounds?.clearButton && React.isValidElement(compounds.clearButton) \n ? compounds.clearButton \n : <ThCloseButton { ...compounds?.clearButton } type=\"button\" />\n }\n \n { compounds?.description && <Text slot=\"description\"> \n { compounds?.description } \n </Text> \n }\n </> \n }\n </>\n </SearchField>\n </>\n )\n}","\"use client\";\n\nimport { Link, LinkProps, Tooltip, TooltipProps, TooltipTrigger } from \"react-aria-components\";\nimport { WithRef } from \"../customTypes\";\nimport { TooltipTriggerProps } from \"react-aria\";\n\nexport interface ThLinkProps extends LinkProps {\n ref?: React.ForwardedRef<HTMLAnchorElement>;\n href: string;\n children: React.ReactNode;\n compounds?: {\n /**\n * Props for the tooltipTrigger component. See `TooltipTriggerProps` for more information.\n */\n tooltipTrigger?: WithRef<TooltipTriggerProps, HTMLDivElement>,\n /**\n * Props for the tooltip component. See `TooltipProps` for more information.\n */\n tooltip?: WithRef<TooltipProps, HTMLDivElement>,\n /**\n * String for the tooltip\n */\n label: string \n }\n}\n\nexport interface ThLinkIconProps extends Omit<ThLinkProps, \"children\"> {\n \"aria-label\": string;\n}\n\nexport const ThLink = ({ \n ref,\n href,\n children,\n compounds,\n ...props \n}: ThLinkProps) => {\n if (compounds) {\n return (\n <TooltipTrigger\n { ...compounds.tooltipTrigger }\n >\n <Link \n href={ href }\n ref={ ref }\n { ...props }\n >\n { children }\n </Link>\n <Tooltip\n arrowBoundaryOffset={ 0 }\n { ...compounds.tooltip }\n >\n { compounds.label }\n </Tooltip>\n </TooltipTrigger>\n );\n } else {\n return (\n <Link \n href={ href }\n ref={ ref }\n { ...props }\n >\n { children }\n </Link>\n );\n }\n};","\"use client\";\n\nimport ArrowBackIcon from \"../assets/icons/arrow_back.svg\";\nimport ArrowForwardIcon from \"../assets/icons/arrow_forward.svg\";\n\nimport { ThLink, ThLinkIconProps } from \"./ThLink\";\n\nexport interface ThBackArrowProps extends ThLinkIconProps {\n direction?: \"left\" | \"right\";\n}\n\nexport const ThBackArrow = ({\n ref,\n href,\n \"aria-label\": ariaLabel,\n direction,\n ...props\n}: ThBackArrowProps) => {\n return (\n <ThLink \n href={ href }\n ref={ ref }\n aria-label={ ariaLabel }\n { ...props }\n >\n { direction === \"right\"\n ? <ArrowForwardIcon aria-hidden=\"true\" focusable=\"false\" />\n : <ArrowBackIcon aria-hidden=\"true\" focusable=\"false\" />\n }\n </ThLink>\n );\n};","import * as React from \"react\";\nconst SvgHome = props => <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"Inherit\" {...props}><path d=\"M240-200h120v-240h240v240h120v-360L480-740 240-560v360Zm-80 80v-480l320-240 320 240v480H520v-240h-80v240H160Zm320-350Z\" /></svg>;\nexport default SvgHome;","\"use client\";\n\nimport HomeIcon from \"./assets/icons/home.svg\";\n\nimport { ThLink, ThLinkIconProps } from \"./ThLink\";\n\nexport const ThHome = ({\n ref,\n href,\n \"aria-label\": ariaLabel,\n ...props\n}: ThLinkIconProps) => {\n return (\n <ThLink \n href={ href }\n ref={ ref }\n aria-label={ ariaLabel }\n { ...props }\n >\n <HomeIcon aria-hidden=\"true\" focusable=\"false\" />\n </ThLink>\n );\n};","import * as React from \"react\";\nconst SvgNewsstand = props => <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"Inherit\" {...props}><path d=\"M80-160v-80h800v80H80Zm80-160v-320h80v320h-80Zm160 0v-480h80v480h-80Zm160 0v-480h80v480h-80Zm280 0L600-600l70-40 160 280-70 40Z\" /></svg>;\nexport default SvgNewsstand;","\"use client\";\n\nimport LibraryIcon from \"./assets/icons/newsstand.svg\";\n\nimport { ThLink, ThLinkIconProps } from \"./ThLink\";\n\nexport const ThLibrary = ({\n ref,\n href,\n \"aria-label\": ariaLabel,\n ...props\n}: ThLinkIconProps) => {\n return (\n <ThLink \n href={ href }\n ref={ ref }\n aria-label={ ariaLabel }\n { ...props }\n >\n <LibraryIcon aria-hidden=\"true\" focusable=\"false\" />\n </ThLink>\n );\n};","\"use client\";\n\nimport React from \"react\";\nimport { KeyboardProps } from \"react-aria\";\n\nimport { WithRef } from \"../customTypes\";\n\nimport { Keyboard, LabelProps, MenuItem, MenuItemProps, Text } from \"react-aria-components\";\n\nexport interface ThMenuItemProps extends MenuItemProps {\n ref?: React.Ref<HTMLDivElement>;\n id: string;\n SVGIcon?: React.ComponentType<React.SVGProps<SVGElement>>;\n label: string;\n shortcut?: string;\n compounds?: {\n label: WithRef<LabelProps, HTMLSpanElement>;\n shortcut: WithRef<KeyboardProps, HTMLSpanElement>;\n }\n}\n\nexport const ThMenuItem = ({\n ref,\n id,\n SVGIcon,\n label, \n shortcut,\n compounds,\n children,\n ...props\n}: ThMenuItemProps) => {\n const menuItemLabelId = `${ id }-label`; \n return(\n <>\n <MenuItem \n ref={ ref }\n id={ id } \n { ...(children ? {} : { \"aria-labelledby\": menuItemLabelId }) }\n { ...props }\n >\n { children \n ? children \n : <>\n { SVGIcon && <SVGIcon aria-hidden=\"true\" focusable=\"false\" /> }\n <Text \n { ...compounds?.label } \n slot=\"label\"\n id={ menuItemLabelId }\n >\n { label }\n </Text>\n { shortcut && <Keyboard { ...compounds?.shortcut }>{ shortcut }</Keyboard> }\n </>\n }\n </MenuItem>\n </>\n )\n}","\"use client\";\n\nimport { HTMLAttributesWithRef } from \"../customTypes\";\n\nexport const ThFooter = ({ \n ref,\n children,\n ...props \n}: HTMLAttributesWithRef<HTMLDivElement>) => {\n return (\n <aside \n ref={ ref } \n { ...props }\n >\n { children }\n </aside>\n )\n}","\"use client\";\n\nimport { ReactNode } from \"react\";\n\nimport { HTMLAttributesWithRef } from \"../customTypes\";\n\nexport interface ThLoaderProps extends Omit<HTMLAttributesWithRef<HTMLDivElement>, \"aria-busy\" | \"aria-live\"> {\n ref?: React.ForwardedRef<HTMLDivElement>;\n isLoading: boolean;\n loader: ReactNode;\n}\n\n// Since we are removing loader entirely, no need for aria-hidden={ !isLoading }\n// No need for a label either since we are using the string for the animation\nexport const ThLoader = ({ \n ref, \n isLoading,\n loader,\n children,\n ...props\n }: ThLoaderProps) => {\n return (\n <>\n <div \n ref={ ref }\n { ...props }\n aria-busy={ isLoading } \n aria-live=\"polite\"\n >\n { isLoading && loader }\n { children }\n </div>\n </>\n )\n}","\"use client\";\n\nimport { HTMLAttributesWithRef } from \"../customTypes\";\n\nexport const ThHeader = ({ \n ref,\n children,\n ...props \n}: HTMLAttributesWithRef<HTMLDivElement>) => {\n return (\n <header \n ref={ ref } \n { ...props }\n >\n { children }\n </header>\n )\n}","export interface ThInteractiveOverlayProps extends React.HTMLAttributes<HTMLDivElement> {\n ref?: React.ForwardedRef<HTMLDivElement>;\n isActive: boolean;\n children?: never;\n}\n\n// This is meant to mount invisible zones that can be hovered, clicked, etc.\nexport const ThInteractiveOverlay = ({ \n ref,\n isActive,\n className,\n style,\n ...props \n}: ThInteractiveOverlayProps) => {\n const defaultStyles: React.CSSProperties = {\n opacity: 0,\n zIndex: 10000,\n pointerEvents: \"auto\",\n };\n\n const mergedStyles = className \n ? undefined \n : {\n ...defaultStyles,\n ...style\n };\n\n if (isActive) {\n return (\n <div \n ref={ ref } \n className={ className }\n style={ mergedStyles }\n { ...props }\n ></div>\n )\n }\n}","\"use client\";\n\nimport React, { ComponentType, SVGProps } from \"react\";\n\nimport { Button, ButtonProps } from \"react-aria-components\";\nimport { WithRef } from \"../customTypes\";\n\nimport ArrowBack from \"../assets/icons/arrow_back.svg\";\nimport ArrowForward from \"../assets/icons/arrow_forward.svg\";\n\nexport interface ThPaginationLinkProps {\n icon?: ComponentType<SVGProps<SVGElement>> | null;\n node: React.ReactNode;\n onPress: () => void;\n}\n\nexport interface ThPaginationProps extends React.HTMLAttributes<HTMLDivElement> {\n ref?: React.RefObject<HTMLDivElement>;\n direction?: \"left\" | \"right\";\n children?: React.ReactNode;\n links?: {\n previous?: ThPaginationLinkProps;\n next?: ThPaginationLinkProps;\n };\n compounds?: {\n /**\n * Props for the list item element wrapping links and children\n */\n listItem?: React.HTMLAttributes<HTMLLIElement>;\n /**\n * Props for the previous button element\n */\n previousButton?: Exclude<WithRef<ButtonProps, HTMLButtonElement>, \"type\">;\n /**\n * Props for the next button element\n */\n nextButton?: Exclude<WithRef<ButtonProps, HTMLButtonElement>, \"type\">;\n };\n}\n\nexport const ThPagination = ({\n ref,\n direction = \"left\",\n links,\n compounds,\n children,\n ...props\n}: ThPaginationProps) => {\n if (!links) {\n return null;\n }\n\n const { previous, next } = links;\n\n return (\n <nav\n ref={ ref }\n { ...props }\n >\n { previous && (\n <li { ...compounds?.listItem }>\n <Button\n { ...compounds?.previousButton }\n type=\"button\"\n onPress={ previous.onPress }\n >\n { previous.icon \n ? <previous.icon aria-hidden=\"true\" focusable=\"false\" /> \n : direction === \"left\"\n ? <ArrowBack aria-hidden=\"true\" focusable=\"false\" />\n : <ArrowForward aria-hidden=\"true\" focusable=\"false\" />\n }\n { previous.node }\n </Button>\n </li>\n )}\n\n { children && (\n <li { ...compounds?.listItem }>\n { children }\n </li>\n )}\n\n { next && (\n <li { ...compounds?.listItem }>\n <Button\n { ...compounds?.nextButton }\n type=\"button\"\n onPress={ next.onPress }\n >\n { next.node }\n \n { next.icon \n ? <next.icon aria-hidden=\"true\" focusable=\"false\" /> \n : direction === \"left\"\n ? <ArrowForward aria-hidden=\"true\" focusable=\"false\" />\n : <ArrowBack aria-hidden=\"true\" focusable=\"false\" />\n }\n </Button>\n </li>\n )}\n </nav>\n );\n};","\"use client\";\n\nimport React from \"react\";\n\nexport interface ThProgressionProps extends React.HTMLAttributes<HTMLDivElement> {\n ref?: React.RefObject<HTMLDivElement>\n}\n\nexport const ThProgression = ({ \n ref,\n children, \n ...props\n}: ThProgressionProps) => {\n return (\n <>\n <div \n ref={ ref } \n {...props }\n >\n { children }\n </div>\n </>\n )\n}","\"use client\";\n\nimport React, { useEffect } from \"react\";\n\nimport { HTMLAttributesWithRef } from \"../customTypes\";\n\nexport interface ThRunningHeadProps extends HTMLAttributesWithRef<HTMLHeadingElement> {\n ref?: React.RefObject<HTMLHeadingElement>\n label: string;\n syncDocTitle?: boolean; \n}\n\nexport const ThRunningHead = ({ \n ref,\n label,\n syncDocTitle,\n ...props\n}: ThRunningHeadProps) => {\n\n useEffect(() => {\n if (syncDocTitle && label) document.title = label;\n }, [syncDocTitle, label])\n\n return(\n <>\n <h1 \n ref={ ref }\n { ...props }\n >\n { label }\n </h1>\n </>\n )\n}","import * as React from \"react\";\nconst SvgAdd = props => <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"Inherit\" {...props}><path d=\"M440-440H200v-80h240v-240h80v240h240v80H520v240h-80v-240Z\" /></svg>;\nexport default SvgAdd;","import * as React from \"react\";\nconst SvgRemove = props => <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"Inherit\" {...props}><path d=\"M200-440v-80h560v80H200Z\" /></svg>;\nexport default SvgRemove;","\"use client\";\n\nimport { ComponentType, SVGProps } from \"react\";\n\nimport { WithRef } from \"../customTypes\";\n\nimport AddIcon from \"./assets/icons/add.svg\";\nimport RemoveIcon from \"./assets/icons/remove.svg\";\n\nimport { \n Button, \n ButtonProps, \n Group, \n GroupProps, \n Input, \n InputProps, \n Label, \n LabelProps, \n NumberField, \n NumberFieldProps \n} from \"react-aria-components\";\n\nexport interface ThNumberFieldProps extends Omit<NumberFieldProps, \"minValue\" | \"maxValue\" | \"decrementAriaLabel\" | \"incrementAriaLabel\"> {\n ref?: React.ForwardedRef<HTMLInputElement>;\n label?: string;\n range: number[];\n isVirtualKeyboardDisabled?: boolean;\n steppers?: {\n decrementIcon?: ComponentType<SVGProps<SVGElement>> | null;\n decrementLabel: string;\n incrementIcon?: ComponentType<SVGProps<SVGElement>> | null;\n incrementLabel: string;\n };\n compounds?: {\n /**\n * Props for the Group component. See `GroupProps` for more information.\n */\n group?: WithRef<GroupProps, HTMLDivElement>;\n /**\n * Props for the Input component. See `InputProps` for more information.\n */\n input?: WithRef<InputProps, HTMLInputElement>;\n /**\n * Props for the Label component. See `LabelProps` for more information.\n */\n label?: WithRef<LabelProps, HTMLLabelElement>;\n /**\n * Props for the Button component used for decrement/increment. See `ButtonProps` for more information.\n */\n stepper?: ButtonProps;\n };\n}\n\nexport const ThNumberField = ({\n ref,\n label,\n range,\n isVirtualKeyboardDisabled,\n steppers,\n compounds,\n ...props\n}: ThNumberFieldProps) => {\n\n return (\n <NumberField \n ref={ ref }\n minValue={ Math.min(...range) }\n maxValue={ Math.max(...range) }\n decrementAriaLabel={ steppers?.decrementLabel }\n incrementAriaLabel={ steppers?.incrementLabel }\n { ...props }\n >\n { label && <Label { ...compounds?.label }>\n { label }\n </Label>\n }\n\n <Group { ...compounds?.group }>\n { steppers && \n <Button \n { ...compounds?.stepper }\n slot=\"decrement\" \n >\n { steppers.decrementIcon \n ? <steppers.decrementIcon aria-hidden=\"true\" focusable=\"false\" /> \n : <RemoveIcon aria-hidden=\"true\" focusable=\"false\" /> }\n </Button> \n }\n\n <Input \n { ...compounds?.input } \n { ...(isVirtualKeyboardDisabled ? { inputMode: \"none\" } : {}) } \n />\n\n { steppers && \n <Button \n { ...compounds?.stepper }\n slot=\"increment\" \n >\n { steppers.incrementIcon \n ? <steppers.incrementIcon aria-hidden=\"true\" focusable=\"false\" /> \n : <AddIcon aria-hidden=\"true\" focusable=\"false\" /> }\n </Button>\n }\n </Group>\n </NumberField>\n );\n};","\"use client\";\n\nimport React, { ComponentType, SVGProps } from \"react\";\n\nimport { HTMLAttributesWithRef, WithRef } from \"../customTypes\";\n\nimport { \n Label, \n LabelProps, \n Radio, \n RadioGroup, \n RadioGroupProps, \n RadioProps \n} from \"react-aria-components\"\n\nexport interface ThRadioGroupItems {\n value: string;\n icon?: ComponentType<SVGProps<SVGElement>>;\n label: string;\n isDisabled?: boolean;\n}\n\nexport interface ThRadioGroupProps extends RadioGroupProps {\n ref?: React.ForwardedRef<HTMLDivElement>;\n label?: string;\n items?: ThRadioGroupItems[];\n compounds?: {\n /**\n * Props for the wrapper component. See `HTMLAttributesWithRef` for more information.\n */\n wrapper?: HTMLAttributesWithRef<HTMLDivElement>;\n /**\n * Props for the label component. See `LabelProps` for more information.\n */\n label?: WithRef<LabelProps, HTMLLabelElement>;\n /**\n * Props for the radio component. See `RadioProps` for more information.\n */\n radio?: Omit<RadioProps, \"value\">;\n /**\n * Props for the radio label component. See `HTMLAttributesWithRef` for more information.\n */\n radioLabel?: HTMLAttributesWithRef<HTMLSpanElement>;\n }\n}\n\nexport const ThRadioGroup = ({\n ref,\n label,\n items,\n compounds,\n children,\n ...props\n}: ThRadioGroupProps) => {\n if (React.isValidElement(children)) {\n return (\n <RadioGroup \n ref={ ref }\n { ...props }\n >\n { label && <Label { ...compounds?.label }>\n { label }\n </Label> \n }\n { children }\n </RadioGroup>\n )\n } else if (items) {\n return (\n <RadioGroup \n { ...props }\n >\n { label && <Label { ...compounds?.label }>\n { label }\n </Label> \n }\n <div { ...compounds?.wrapper }>\n { items.map((item, index) => (\n <Radio \n { ...compounds?.radio }\n key={ index }\n value={ item.value }\n isDisabled={ item.isDisabled }\n >\n <React.Fragment>\n { item.icon && <item.icon aria-hidden=\"true\" focusable=\"false\" /> }\n <span { ...compounds?.radioLabel }>\n { item.label }\n </span> \n </React.Fragment>\n </Radio>\n )) }\n </div>\n </RadioGroup>\n )\n }\n}","\"use client\";\n\nimport { WithRef } from \"../customTypes\";\n\nimport { \n Label, \n LabelProps, \n Slider, \n SliderOutput, \n SliderOutputProps, \n SliderProps, \n SliderThumb, \n SliderThumbProps, \n SliderTrack, \n SliderTrackProps \n} from \"react-aria-components\";\n\nexport interface ThSliderProps extends Omit<SliderProps, \"minValue\" | \"maxValue\"> {\n ref?: React.ForwardedRef<HTMLDivElement>;\n label?: string;\n range: number[];\n compounds?: {\n /**\n * Props for the label component. See `LabelProps` for more information.\n */\n label?: WithRef<LabelProps, HTMLLabelElement>;\n /**\n * Props for the slider output component. See `SliderOutputProps` for more information.\n */\n output?: WithRef<SliderOutputProps, HTMLOutputElement>;\n /**\n * Props for the slider track component. See `SliderTrackProps` for more information.\n */\n track?: WithRef<SliderTrackProps, HTMLDivElement>;\n /**\n * Props for the slider thumb component. See `SliderThumbProps` for more information.\n */\n thumb?: WithRef<SliderThumbProps, HTMLDivElement>;\n };\n}\n\nexport const ThSlider = ({\n ref,\n label,\n range,\n compounds,\n ...props\n}: ThSliderProps) => {\n return(\n <>\n <Slider \n ref={ ref }\n minValue={ Math.min(...range) }\n maxValue={ Math.max(...range) }\n { ...props }\n >\n { label && <Label { ...compounds?.label }>\n { label }\n </Label> \n }\n <SliderOutput { ...compounds?.output } />\n <SliderTrack { ...compounds?.track }>\n <SliderThumb { ...compounds?.thumb } />\n </SliderTrack>\n </Slider>\n </>\n )\n}","\"use client\";\n\nimport { HTMLAttributesWithRef, WithRef } from \"../customTypes\";\n\nimport { Heading, HeadingProps, Switch, SwitchProps } from \"react-aria-components\";\n\nexport interface ThSwitchProps extends SwitchProps {\n ref?: React.ForwardedRef<HTMLLabelElement>;\n label: string;\n heading?: string;\n compounds?: {\n /**\n * Props for the wrapper component. See `HTMLAttributesWithRef` for more information.\n */\n wrapper?: HTMLAttributesWithRef<HTMLDivElement>;\n /**\n * Props for the heading component. See `HeadingProps` for more information.\n */\n heading?: WithRef<HeadingProps, HTMLHeadingElement>;\n /**\n * Props for the indicator component. See `HTMLAttributesWithRef` for more information.\n */\n indicator?: HTMLAttributesWithRef<HTMLDivElement>;\n }\n}\n\nexport const ThSwitch = ({\n ref,\n label,\n compounds,\n heading, \n ...props\n}: ThSwitchProps) => {\n return(\n <>\n <div { ...compounds?.wrapper }>\n { heading && <Heading { ...compounds?.heading }>\n { heading }\n </Heading> \n }\n <Switch \n ref={ ref }\n { ...props }\n >\n <div { ...compounds?.indicator } />\n { label }\n </Switch>\n </div>\n </>\n )\n}","import * as React from \"react\";\nconst SvgArrowDropDown = props => <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"Inherit\" {...props}><path d=\"M480-360 280-560h400L480-360Z\" /></svg>;\nexport default SvgArrowDropDown;","\"use client\";\n\nimport ArrowDropDownIcon from \"./assets/icons/arrow_drop_down.svg\";\n\nimport { Button, ButtonProps, SelectValue } from \"react-aria-components\";\n\nexport interface ThDropdownButtonProps extends ButtonProps {\n ref?: React.ForwardedRef<HTMLButtonElement>;\n}\n\nexport const ThDropdownButton = ({\n ref,\n children,\n ...props\n}: ThDropdownButtonProps) => {\n return (\n <>\n <Button \n ref={ ref }\n { ...props }\n >\n { children \n ? children \n : <>\n <SelectValue /> \n <ArrowDropDownIcon aria-hidden=\"true\" focusable=\"false\" />\n </> \n }\n </Button>\n </>\n )\n}","\"use client\";\n\nimport React from \"react\";\n\nimport { WithRef } from \"../../customTypes\";\n\nimport { \n Button,\n ButtonProps, \n Label, \n LabelProps, \n ListBox, \n ListBoxItem, \n ListBoxItemProps, \n ListBoxProps, \n Popover, \n PopoverProps, \n Select, \n SelectProps \n} from \"react-aria-components\";\nimport { ThDropdownButton, ThDropdownButtonProps } from \"./ThDropdownButton\";\n\nexport interface ThDropdownEntry {\n id: string;\n label: string;\n value: string;\n}\n\nexport interface ThDropdownProps extends SelectProps {\n ref?: React.ForwardedRef<HTMLDivElement>;\n label?: string;\n items?: Iterable<ThDropdownEntry>;\n children?: never;\n compounds?: {\n /**\n * Props for the label component. See `LabelProps` for more information.\n */\n label?: WithRef<LabelProps, HTMLLabelElement>;\n /**\n * Props for the button component. See `ThDropdownButtonProps` for more information.\n * Alternatively you can provide your own Button component\n */\n button?: WithRef<ButtonProps, HTMLButtonElement> | React.ReactElement<typeof Button>;\n /**\n * Props for the popover component. See `PopoverProps` for more information.\n */\n popover?: WithRef<PopoverProps, HTMLDivElement>;\n /**\n * Props for the listbox component. See `LisboxProps` for more information.\n * Alternatively you can provide your own Listbox component\n */\n listbox?: WithRef<ListBoxProps<ThDropdownEntry>, HTMLDivElement> | React.ReactElement<typeof ListBox | HTMLDivElement>;\n /**\n * Props for the listboxItem component. See `ListBoxItemProps` for more information.\n */\n listboxItem?: ListBoxItemProps<ThDropdownEntry>;\n }\n}\n\nexport const ThDropdown = ({\n ref,\n label,\n items,\n compounds,\n ...props\n}: ThDropdownProps) => {\n if (!items && !React.isValidElement(compounds?.listbox)) {\n return null;\n }\n\n return(\n <>\n <Select\n ref={ ref }\n { ...props }\n >\n { label && <Label { ...compounds?.label }>\n { label }\n </Label>\n }\n { compounds?.button && React.isValidElement(compounds.button) \n ? compounds.button \n : <ThDropdownButton { ...compounds?.button as ThDropdownButtonProps } />\n }\n <Popover\n { ...compounds?.popover }\n >\n { compounds?.listbox && React.isValidElement(compounds.listbox) \n ? compounds.listbox \n : <ListBox \n items={ items } \n { ...compounds?.listbox }>\n { (item: ThDropdownEntry) => <ListBoxItem \n { ...compounds?.listboxItem }\n id={ item.id } \n key={ item.id } \n textValue={ item.value || undefined }\n >\n { item.label }\n </ListBoxItem>\n }\n </ListBox>\n }\n </Popover>\n </Select>\n </>\n )\n}\n","import * as React from \"react\";\nconst SvgSettings = props => <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"inherit\" {...props}><path d=\"m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z\" /></svg>;\nexport default SvgSettings;","\"use client\";\n\nimport Settings from \"./assets/icons/settings.svg\";\n\nimport { ThActionButton, ThActionButtonProps } from \"../../Buttons/ThActionButton\";\n\nexport const ThSettingsWrapperButton = ({\n label,\n ref,\n compounds,\n children,\n ...props\n}: ThActionButtonProps) => {\n return (\n <ThActionButton\n ref={ ref }\n compounds={ compounds }\n { ...props }\n >\n { children \n ? children \n : <>\n <Settings aria-hidden=\"true\" focusable=\"false\" /> \n { label }\n </> \n }\n </ThActionButton>\n )\n}","\"use client\";\n\nimport { ThSettingsWrapperButton } from \"./ThSettingsWrapperButton\";\n\nimport { Heading, HeadingProps } from \"react-aria-components\";\nimport { HTMLAttributesWithRef, WithRef } from \"../../customTypes\";\nimport { ThActionButtonProps } from \"../../Buttons\";\n\nexport interface ThSettingsEntry {\n Comp: React.ComponentType<any>\n}\n\nexport interface ThSettingsPrefs {\n main: string[];\n subPanel?: string[] | null;\n}\n\nexport interface ThSettingsWrapperProps extends HTMLAttributesWithRef<HTMLDivElement> {\n items?: Record<string, ThSettingsEntry> | null;\n prefs: ThSettingsPrefs;\n compounds?: {\n /**\n * Label for advanced settings that will be displayed as a heading\n */\n label?: string;\n /**\n * Props for the heading. See `HeadingProps` for more information.\n */\n heading?: WithRef<HeadingProps, HTMLHeadingElement>;\n /**\n * Props for the button that triggers the subpanel. See `ThActionButtonProps` for more information.\n */\n button?: ThActionButtonProps;\n }\n}\n\n// TODO: Handle Standalone and Usage as Group\nexport const ThSettingsWrapper = ({\n ref,\n items,\n prefs,\n compounds,\n ...props\n}: ThSettingsWrapperProps) => {\n const main = prefs.main;\n const displayOrder = prefs.subPanel;\n \n const isAdvanced = items &&(\n main.length < Object.keys(items).length && \n displayOrder && displayOrder.length > 0\n );\n\n if (items) {\n return(\n <>\n <div \n ref={ ref }\n { ...props }\n >\n { isAdvanced && compounds?.label &&\n <Heading { ...compounds?.heading }>\n { compounds.label }\n </Heading> }\n { main.map((key, index) => {\n const match = items[key];\n return match && <match.Comp key={ key } standalone={ !isAdvanced || index !== 0 } { ...props } />;\n }) }\n { isAdvanced && (\n <ThSettingsWrapperButton\n { ...compounds?.button }\n />\n ) }\n </div>\n </>\n )\n }\n}","\"use client\";\n\nimport React from \"react\";\nimport { HTMLAttributesWithRef } from \"./customTypes\";\n\nexport interface ThGridProps<T> extends HTMLAttributesWithRef<HTMLUListElement> {\n items: T[];\n children?: never;\n renderItem: (item: T, index: number) => React.ReactNode;\n columnWidth?: number | string;\n gap?: number | string;\n}\n\nexport const ThGrid = <T extends unknown>({\n ref,\n items,\n renderItem,\n columnWidth,\n gap,\n ...props\n}: ThGridProps<T>) => {\n return (\n <ul \n ref={ ref } \n { ...props }\n style={{\n ...props.style,\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n display: \"grid\",\n boxSizing: \"border-box\",\n gridTemplateColumns: `repeat(auto-fill, minmax(min(100%, ${typeof columnWidth === 'string' ? columnWidth : columnWidth + 'px'}), 1fr))`,\n gap: typeof gap === 'string' ? gap : gap + 'px'\n }}\n >\n { items.map((item, index) => (\n <li key={ index }>\n { renderItem(item, index) }\n </li>\n )) }\n </ul>\n );\n};"]}
|
|
@@ -226,6 +226,7 @@ interface StatefulSheet {
|
|
|
226
226
|
children?: ReactNode;
|
|
227
227
|
resetFocus?: unknown;
|
|
228
228
|
focusWithinRef?: RefObject<HTMLElement | null>;
|
|
229
|
+
scrollTopOnFocus?: boolean;
|
|
229
230
|
dismissEscapeKeyClose?: boolean;
|
|
230
231
|
}
|
|
231
232
|
|
|
@@ -235,21 +236,21 @@ interface ScrimPref {
|
|
|
235
236
|
active: boolean;
|
|
236
237
|
override?: string;
|
|
237
238
|
}
|
|
238
|
-
declare const StatefulBottomSheet: ({ id, heading, headerVariant, className, isOpen, onOpenChange, onClosePress, children, resetFocus, focusWithinRef, dismissEscapeKeyClose }: StatefulBottomSheetProps) => react_jsx_runtime.JSX.Element | undefined;
|
|
239
|
+
declare const StatefulBottomSheet: ({ id, heading, headerVariant, className, isOpen, onOpenChange, onClosePress, children, resetFocus, focusWithinRef, scrollTopOnFocus, dismissEscapeKeyClose }: StatefulBottomSheetProps) => react_jsx_runtime.JSX.Element | undefined;
|
|
239
240
|
|
|
240
241
|
interface StatefulDockedSheetProps extends StatefulSheet {
|
|
241
242
|
flow: ThDockingKeys.start | ThDockingKeys.end | null;
|
|
242
243
|
}
|
|
243
|
-
declare const StatefulDockedSheet: ({ id, heading, headerVariant, className, isOpen, onClosePress, docker, flow, children, resetFocus, focusWithinRef }: StatefulDockedSheetProps) => react_jsx_runtime.JSX.Element | undefined;
|
|
244
|
+
declare const StatefulDockedSheet: ({ id, heading, headerVariant, className, isOpen, onClosePress, docker, flow, children, resetFocus, focusWithinRef, scrollTopOnFocus }: StatefulDockedSheetProps) => react_jsx_runtime.JSX.Element | undefined;
|
|
244
245
|
|
|
245
246
|
interface StatefulFullScreenSheetProps extends StatefulSheet {
|
|
246
247
|
}
|
|
247
|
-
declare const StatefulFullScreenSheet: ({ heading, headerVariant, className, isOpen, onOpenChange, onClosePress, children, resetFocus, focusWithinRef, dismissEscapeKeyClose }: StatefulFullScreenSheetProps) => react_jsx_runtime.JSX.Element | undefined;
|
|
248
|
+
declare const StatefulFullScreenSheet: ({ heading, headerVariant, className, isOpen, onOpenChange, onClosePress, children, resetFocus, focusWithinRef, scrollTopOnFocus, dismissEscapeKeyClose }: StatefulFullScreenSheetProps) => react_jsx_runtime.JSX.Element | undefined;
|
|
248
249
|
|
|
249
250
|
interface StatefulPopoverSheetProps extends StatefulSheet {
|
|
250
251
|
placement?: PopoverProps["placement"];
|
|
251
252
|
}
|
|
252
|
-
declare const StatefulPopoverSheet: ({ id, triggerRef, heading, headerVariant, className, isOpen, onOpenChange, onClosePress, placement, docker, children, resetFocus, focusWithinRef, dismissEscapeKeyClose }: StatefulPopoverSheetProps) => react_jsx_runtime.JSX.Element | undefined;
|
|
253
|
+
declare const StatefulPopoverSheet: ({ id, triggerRef, heading, headerVariant, className, isOpen, onOpenChange, onClosePress, placement, docker, children, resetFocus, focusWithinRef, scrollTopOnFocus, dismissEscapeKeyClose }: StatefulPopoverSheetProps) => react_jsx_runtime.JSX.Element | undefined;
|
|
253
254
|
|
|
254
255
|
declare const StatefulSheetWrapper: ({ sheetType, sheetProps, children }: {
|
|
255
256
|
sheetType: ThSheetTypes;
|
|
@@ -283,9 +284,10 @@ declare const PublicationGrid: ({ publications, columnWidth, gap, renderCover, }
|
|
|
283
284
|
|
|
284
285
|
interface UsePublicationOptions {
|
|
285
286
|
url: string;
|
|
287
|
+
allowedDomains?: string[];
|
|
286
288
|
onError?: (error: string) => void;
|
|
287
289
|
}
|
|
288
|
-
declare function usePublication({ url, onError }: UsePublicationOptions): {
|
|
290
|
+
declare function usePublication({ url, allowedDomains, onError }: UsePublicationOptions): {
|
|
289
291
|
error: string;
|
|
290
292
|
manifest: object | undefined;
|
|
291
293
|
selfLink: string | undefined;
|
|
@@ -4,7 +4,7 @@ import { require_debounce, useAppSelector, useAppDispatch, setColumnCount, setFo
|
|
|
4
4
|
export { ThStoreProvider, actionsSlice, activateDockPanel, collapseDockPanel, deactivateDockPanel, dockAction, expandDockPanel, makeStore, publicationSlice, readerSlice, setActionOpen, setArrows, setBreakpoint, setColorScheme, setColumnCount, setContrast, setDirection, setDockPanelWidth, setFXL, setFontFamily, setFontSize, setFontWeight, setForcedColors, setFullscreen, setHovering, setHyphens, setImmersive, setLetterSpacing, setLineHeight, setLineLength, setLoading, setMonochrome, setOverflow, setParagraphIndent, setParagraphSpacing, setPlatformModifier, setPositionsList, setProgression, setPublicationEnd, setPublicationStart, setPublisherStyles, setRTL, setReducedMotion, setReducedTransparency, setRunningHead, setScroll, setScrollAffordance, setSettingsContainer, setTextAlign, setTextNormalization, setTheme, setTimeline, setTocEntry, setTocTree, setWordSpacing, settingsSlice, themeSlice, toggleActionOpen, toggleImmersive, useAppDispatch, useAppSelector, useAppStore } from '../../chunk-R5KZTO4S.mjs';
|
|
5
5
|
import { defaultFontFamilyOptions, usePreferences, defaultLetterSpacing, defaultLineHeights, defaultParagraphIndent, defaultParagraphSpacing, defaultSpacingSettingsSubpanel, defaultSpacingSettingsMain, defaultTextSettingsSubpanel, defaultTextSettingsMain, usePreferenceKeys, buildThemeObject, defaultWordSpacing, defaultFontSize, useTheming } from '../../chunk-ZZS7TTFX.mjs';
|
|
6
6
|
export { ThPreferencesProvider, usePreferences, useTheming } from '../../chunk-ZZS7TTFX.mjs';
|
|
7
|
-
import { ThRadioGroup, ThDropdown, ThSlider, ThSwitch, ThNumberField, ThSettingsWrapper, ThActionButton, ThMenu, ThCollapsibleActionsBar, ThMenuItem, ThPopover, ThContainerHeader, ThNavigationButton, ThContainerBody, ThBottomSheet, ThCloseButton, ThModal, ThDockedPanel, ThTypedComponentRenderer, useActions, ThForm, ThFormNumberField, ThFormSearchField, ThLoader, ThGrid, ThInteractiveOverlay, ThHeader, ThRunningHead, ThFooter, ThLink, ThLibrary, ThHome, ThBackArrow, ThPagination, ThProgression } from '../../chunk-
|
|
7
|
+
import { ThRadioGroup, ThDropdown, ThSlider, ThSwitch, ThNumberField, ThSettingsWrapper, ThActionButton, ThMenu, ThCollapsibleActionsBar, ThMenuItem, ThPopover, ThContainerHeader, ThNavigationButton, ThContainerBody, ThBottomSheet, ThCloseButton, ThModal, ThDockedPanel, ThTypedComponentRenderer, useActions, ThForm, ThFormNumberField, ThFormSearchField, ThLoader, ThGrid, ThInteractiveOverlay, ThHeader, ThRunningHead, ThFooter, ThLink, ThLibrary, ThHome, ThBackArrow, ThPagination, ThProgression } from '../../chunk-AGJM3AY2.mjs';
|
|
8
8
|
import '../../chunk-MLEYTQGK.mjs';
|
|
9
9
|
import { makeBreakpointsMap, isKeyboardTriggered, isActiveElement, isInteractiveElement } from '../../chunk-DSQWBBAX.mjs';
|
|
10
10
|
export { isActiveElement, isInteractiveElement, isKeyboardTriggered, makeBreakpointsMap } from '../../chunk-DSQWBBAX.mjs';
|
|
@@ -1072,7 +1072,7 @@ var StatefulTheme = ({ mapArrowNav }) => {
|
|
|
1072
1072
|
id: themeItem,
|
|
1073
1073
|
style: doStyles(themeItem),
|
|
1074
1074
|
...mapArrowNav && !isNaN(mapArrowNav) ? {
|
|
1075
|
-
onKeyDown: async (e) => await handleKeyboardNav(e)
|
|
1075
|
+
onKeyDown: (async (e) => await handleKeyboardNav(e))
|
|
1076
1076
|
} : {},
|
|
1077
1077
|
children: /* @__PURE__ */ jsxs("span", { children: [
|
|
1078
1078
|
t(`reader.settings.themes.${themeItem}`, { defaultValue: themeItem }),
|
|
@@ -1918,6 +1918,7 @@ var StatefulReaderProgression = ({
|
|
|
1918
1918
|
ThProgression,
|
|
1919
1919
|
{
|
|
1920
1920
|
id: progressionStyles.current,
|
|
1921
|
+
className,
|
|
1921
1922
|
"aria-label": t("reader.app.progression.wrapper"),
|
|
1922
1923
|
children: t("reader.app.progression.of", { current, reference })
|
|
1923
1924
|
}
|
|
@@ -2476,6 +2477,7 @@ var StatefulPopoverSheet = ({
|
|
|
2476
2477
|
children,
|
|
2477
2478
|
resetFocus,
|
|
2478
2479
|
focusWithinRef,
|
|
2480
|
+
scrollTopOnFocus,
|
|
2479
2481
|
dismissEscapeKeyClose
|
|
2480
2482
|
}) => {
|
|
2481
2483
|
const { t } = useI18n();
|
|
@@ -2495,6 +2497,7 @@ var StatefulPopoverSheet = ({
|
|
|
2495
2497
|
withinRef: focusWithinRef ?? popoverBodyRef,
|
|
2496
2498
|
trackedState: isOpen,
|
|
2497
2499
|
fallbackRef: popoverCloseRef,
|
|
2500
|
+
scrollTop: scrollTopOnFocus,
|
|
2498
2501
|
updateState: resetFocus
|
|
2499
2502
|
},
|
|
2500
2503
|
placement: placement || "bottom",
|
|
@@ -2572,6 +2575,7 @@ var StatefulBottomSheet = ({
|
|
|
2572
2575
|
children,
|
|
2573
2576
|
resetFocus,
|
|
2574
2577
|
focusWithinRef,
|
|
2578
|
+
scrollTopOnFocus,
|
|
2575
2579
|
dismissEscapeKeyClose
|
|
2576
2580
|
}) => {
|
|
2577
2581
|
const RSPrefs = usePreferences();
|
|
@@ -2728,6 +2732,7 @@ var StatefulBottomSheet = ({
|
|
|
2728
2732
|
withinRef: focusWithinRef ?? bottomSheetBodyRef,
|
|
2729
2733
|
trackedState: isOpen,
|
|
2730
2734
|
fallbackRef: bottomSheetCloseRef,
|
|
2735
|
+
scrollTop: scrollTopOnFocus,
|
|
2731
2736
|
updateState: resetFocus
|
|
2732
2737
|
},
|
|
2733
2738
|
onOpenChange,
|
|
@@ -2823,6 +2828,7 @@ var StatefulFullScreenSheet = ({
|
|
|
2823
2828
|
children,
|
|
2824
2829
|
resetFocus,
|
|
2825
2830
|
focusWithinRef,
|
|
2831
|
+
scrollTopOnFocus,
|
|
2826
2832
|
dismissEscapeKeyClose
|
|
2827
2833
|
}) => {
|
|
2828
2834
|
const { t } = useI18n();
|
|
@@ -2840,6 +2846,7 @@ var StatefulFullScreenSheet = ({
|
|
|
2840
2846
|
withinRef: focusWithinRef ?? fullScreenBodyRef,
|
|
2841
2847
|
trackedState: isOpen,
|
|
2842
2848
|
fallbackRef: fullScreenCloseRef,
|
|
2849
|
+
scrollTop: scrollTopOnFocus,
|
|
2843
2850
|
updateState: resetFocus
|
|
2844
2851
|
},
|
|
2845
2852
|
compounds: {
|
|
@@ -2912,7 +2919,8 @@ var StatefulDockedSheet = ({
|
|
|
2912
2919
|
flow,
|
|
2913
2920
|
children,
|
|
2914
2921
|
resetFocus,
|
|
2915
|
-
focusWithinRef
|
|
2922
|
+
focusWithinRef,
|
|
2923
|
+
scrollTopOnFocus
|
|
2916
2924
|
}) => {
|
|
2917
2925
|
const { t } = useI18n();
|
|
2918
2926
|
const dockPortal = flow && document.getElementById(flow);
|
|
@@ -2937,7 +2945,8 @@ var StatefulDockedSheet = ({
|
|
|
2937
2945
|
withinRef: focusWithinRef ?? dockedSheetBodyRef,
|
|
2938
2946
|
trackedState: isOpen,
|
|
2939
2947
|
fallbackRef: dockedSheetCloseRef,
|
|
2940
|
-
autoFocus:
|
|
2948
|
+
autoFocus: true,
|
|
2949
|
+
scrollTop: scrollTopOnFocus,
|
|
2941
2950
|
updateState: resetFocus
|
|
2942
2951
|
},
|
|
2943
2952
|
className: classNames10(sheetStyles2.dockedSheet, className, classFromFlow()),
|
|
@@ -3448,6 +3457,7 @@ var StatefulSettingsContainer = ({
|
|
|
3448
3457
|
},
|
|
3449
3458
|
docker: docking.getDocker(),
|
|
3450
3459
|
resetFocus: contains,
|
|
3460
|
+
scrollTopOnFocus: true,
|
|
3451
3461
|
dismissEscapeKeyClose: contains !== "initial" /* initial */
|
|
3452
3462
|
},
|
|
3453
3463
|
children: renderSettings()
|
|
@@ -3493,6 +3503,7 @@ var chevron_right_default = SvgChevronRight;
|
|
|
3493
3503
|
var StatefulTocContainer = ({ triggerRef }) => {
|
|
3494
3504
|
const { t } = useI18n();
|
|
3495
3505
|
const treeRef = useRef(null);
|
|
3506
|
+
const [expandedKeys, setExpandedKeys] = useState(/* @__PURE__ */ new Set());
|
|
3496
3507
|
const unstableTimeline = useAppSelector((state) => state.publication.unstableTimeline);
|
|
3497
3508
|
const tocEntry = unstableTimeline?.toc?.currentEntry;
|
|
3498
3509
|
const tocTree = unstableTimeline?.toc?.tree;
|
|
@@ -3500,8 +3511,6 @@ var StatefulTocContainer = ({ triggerRef }) => {
|
|
|
3500
3511
|
const isRTL = direction === "rtl" /* rtl */;
|
|
3501
3512
|
const actionState = useAppSelector((state) => state.actions.keys["toc" /* toc */]);
|
|
3502
3513
|
const dispatch = useAppDispatch();
|
|
3503
|
-
const previousTocEntry = usePrevious(tocEntry);
|
|
3504
|
-
const [forceRerender, setForceRerender] = useState(0);
|
|
3505
3514
|
const { goLink } = useEpubNavigator();
|
|
3506
3515
|
const docking = useDocking("toc" /* toc */);
|
|
3507
3516
|
const sheetType = docking.sheetType;
|
|
@@ -3565,16 +3574,29 @@ var StatefulTocContainer = ({ triggerRef }) => {
|
|
|
3565
3574
|
}
|
|
3566
3575
|
}, [actionState, setOpen, filterValue]);
|
|
3567
3576
|
useEffect(() => {
|
|
3568
|
-
if (
|
|
3569
|
-
|
|
3570
|
-
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3577
|
+
if (tocEntry && tocTree) {
|
|
3578
|
+
setExpandedKeys((prevExpandedKeys) => {
|
|
3579
|
+
const newExpandedKeys = new Set(prevExpandedKeys);
|
|
3580
|
+
let hasUpdates = false;
|
|
3581
|
+
const updateExpanded = (items) => {
|
|
3582
|
+
return items.some((item) => {
|
|
3583
|
+
if (item.id === tocEntry) return true;
|
|
3584
|
+
if (item.children) {
|
|
3585
|
+
const hasChild = updateExpanded(item.children);
|
|
3586
|
+
if (hasChild && !newExpandedKeys.has(item.id)) {
|
|
3587
|
+
newExpandedKeys.add(item.id);
|
|
3588
|
+
hasUpdates = true;
|
|
3589
|
+
}
|
|
3590
|
+
return hasChild;
|
|
3591
|
+
}
|
|
3592
|
+
return false;
|
|
3593
|
+
});
|
|
3594
|
+
};
|
|
3595
|
+
updateExpanded(tocTree);
|
|
3596
|
+
return hasUpdates ? newExpandedKeys : prevExpandedKeys;
|
|
3597
|
+
});
|
|
3575
3598
|
}
|
|
3576
|
-
|
|
3577
|
-
};
|
|
3599
|
+
}, [tocEntry, tocTree]);
|
|
3578
3600
|
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
|
|
3579
3601
|
StatefulSheetWrapper,
|
|
3580
3602
|
{
|
|
@@ -3589,6 +3611,7 @@ var StatefulTocContainer = ({ triggerRef }) => {
|
|
|
3589
3611
|
onOpenChange: setOpen,
|
|
3590
3612
|
onClosePress: () => setOpen(false),
|
|
3591
3613
|
docker: docking.getDocker(),
|
|
3614
|
+
resetFocus: tocEntry,
|
|
3592
3615
|
focusWithinRef: treeRef
|
|
3593
3616
|
},
|
|
3594
3617
|
children: tocTree && tocTree.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -3629,9 +3652,9 @@ var StatefulTocContainer = ({ triggerRef }) => {
|
|
|
3629
3652
|
items: displayedTocTree,
|
|
3630
3653
|
className: tocStyles.tocTree,
|
|
3631
3654
|
onSelectionChange: handleAction,
|
|
3632
|
-
defaultSelectedKeys: tocEntry ? [tocEntry] : [],
|
|
3633
3655
|
selectedKeys: tocEntry ? [tocEntry] : [],
|
|
3634
|
-
|
|
3656
|
+
expandedKeys,
|
|
3657
|
+
onExpandedChange: setExpandedKeys,
|
|
3635
3658
|
children: function renderItem(item) {
|
|
3636
3659
|
return /* @__PURE__ */ jsxs(
|
|
3637
3660
|
TreeItem,
|
|
@@ -3660,8 +3683,7 @@ var StatefulTocContainer = ({ triggerRef }) => {
|
|
|
3660
3683
|
}
|
|
3661
3684
|
);
|
|
3662
3685
|
}
|
|
3663
|
-
}
|
|
3664
|
-
forceRerender
|
|
3686
|
+
}
|
|
3665
3687
|
)
|
|
3666
3688
|
] }) : /* @__PURE__ */ jsx("div", { className: tocStyles.empty, children: t("reader.toc.empty") })
|
|
3667
3689
|
}
|
|
@@ -4498,8 +4520,12 @@ var PublicationGrid = ({
|
|
|
4498
4520
|
}
|
|
4499
4521
|
);
|
|
4500
4522
|
};
|
|
4501
|
-
function usePublication({
|
|
4502
|
-
|
|
4523
|
+
function usePublication({
|
|
4524
|
+
url,
|
|
4525
|
+
allowedDomains,
|
|
4526
|
+
onError = () => {
|
|
4527
|
+
}
|
|
4528
|
+
}) {
|
|
4503
4529
|
const [error, setError] = useState("");
|
|
4504
4530
|
const [manifest, setManifest] = useState(void 0);
|
|
4505
4531
|
const [selfLink, setSelfLink] = useState(void 0);
|
|
@@ -4509,6 +4535,13 @@ function usePublication({ url, onError = () => {
|
|
|
4509
4535
|
return;
|
|
4510
4536
|
}
|
|
4511
4537
|
const decodedUrl = decodeURIComponent(url);
|
|
4538
|
+
const urlObj = new URL(decodedUrl);
|
|
4539
|
+
const domain = urlObj.hostname;
|
|
4540
|
+
if (allowedDomains?.length && !allowedDomains.includes(domain)) {
|
|
4541
|
+
const errorMsg = `Manifest from domain ${domain} is not allowed`;
|
|
4542
|
+
setError(errorMsg);
|
|
4543
|
+
return;
|
|
4544
|
+
}
|
|
4512
4545
|
const manifestLink = new Link$1({ href: decodedUrl });
|
|
4513
4546
|
const fetcher = new HttpFetcher(void 0);
|
|
4514
4547
|
try {
|
|
@@ -4526,7 +4559,7 @@ function usePublication({ url, onError = () => {
|
|
|
4526
4559
|
console.error("Error loading manifest:", error2);
|
|
4527
4560
|
setError(`Failed loading manifest ${decodedUrl}: ${error2 instanceof Error ? error2.message : "Unknown error"}`);
|
|
4528
4561
|
}
|
|
4529
|
-
}, [url]);
|
|
4562
|
+
}, [url, allowedDomains]);
|
|
4530
4563
|
useEffect(() => {
|
|
4531
4564
|
if (error) {
|
|
4532
4565
|
onError(error);
|