@edrlab/thorium-web 1.4.0 → 1.4.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/dist/{ThPreferencesAdapter-L1H6gzmu.d.mts → ThPreferencesAdapter-_5AePKHa.d.mts} +5 -3
- package/dist/{ThSettingsWrapper-DWEA4hYF.d.mts → ThSettingsWrapper-B_9klYXH.d.mts} +1 -1
- package/dist/{actions-BjeRjaJU.d.mts → actions-CuRRM3rp.d.mts} +4 -1
- package/dist/{actionsReducer-B32cq2mB.d.mts → actionsReducer-VFR42qgL.d.mts} +1 -1
- package/dist/{chunk-NUXGQWED.mjs → chunk-2NCN2AG2.mjs} +3 -3
- package/dist/{chunk-NUXGQWED.mjs.map → chunk-2NCN2AG2.mjs.map} +1 -1
- package/dist/{chunk-5LUMM7FW.mjs → chunk-44PEO3DS.mjs} +2 -2
- package/dist/{chunk-5LUMM7FW.mjs.map → chunk-44PEO3DS.mjs.map} +1 -1
- package/dist/chunk-AQSJDL63.mjs +193 -0
- package/dist/chunk-AQSJDL63.mjs.map +1 -0
- package/dist/{chunk-T5ENYSDJ.mjs → chunk-DQDOOTCE.mjs} +3 -3
- package/dist/{chunk-T5ENYSDJ.mjs.map → chunk-DQDOOTCE.mjs.map} +1 -1
- package/dist/{chunk-QUSGPT5M.mjs → chunk-E2JEGVVE.mjs} +12 -11
- package/dist/chunk-E2JEGVVE.mjs.map +1 -0
- package/dist/{chunk-P6ILEQ5P.mjs → chunk-ETLIGONP.mjs} +17 -9
- package/dist/chunk-ETLIGONP.mjs.map +1 -0
- package/dist/chunk-GNROODJB.mjs +9 -0
- package/dist/chunk-GNROODJB.mjs.map +1 -0
- package/dist/{chunk-6MONB2DN.mjs → chunk-KGSFTRCH.mjs} +15 -37
- package/dist/chunk-KGSFTRCH.mjs.map +1 -0
- package/dist/{chunk-PXXWEMNL.mjs → chunk-MSHUPSBI.mjs} +54 -38
- package/dist/chunk-MSHUPSBI.mjs.map +1 -0
- package/dist/{chunk-XRFLDNAY.mjs → chunk-OD75GC5N.mjs} +52 -12
- package/dist/chunk-OD75GC5N.mjs.map +1 -0
- package/dist/{chunk-KVUG6BNI.mjs → chunk-RBEPH5E5.mjs} +19 -13
- package/dist/chunk-RBEPH5E5.mjs.map +1 -0
- package/dist/{chunk-TSLTLQ6O.mjs → chunk-SI4FBFHM.mjs} +20 -16
- package/dist/chunk-SI4FBFHM.mjs.map +1 -0
- package/dist/{chunk-IVXRCKWR.mjs → chunk-WF2UOYO7.mjs} +4 -4
- package/dist/{chunk-IVXRCKWR.mjs.map → chunk-WF2UOYO7.mjs.map} +1 -1
- package/dist/{chunk-WLVE3WNW.mjs → chunk-YEVLT3AV.mjs} +12 -7
- package/dist/chunk-YEVLT3AV.mjs.map +1 -0
- package/dist/components/Audio/index.css +2 -1
- package/dist/components/Audio/index.css.map +1 -1
- package/dist/components/Audio/index.d.mts +14 -13
- package/dist/components/Audio/index.mjs +10 -10
- package/dist/components/Epub/index.css +2 -1
- package/dist/components/Epub/index.css.map +1 -1
- package/dist/components/Epub/index.d.mts +11 -11
- package/dist/components/Epub/index.mjs +11 -11
- package/dist/components/Misc/index.mjs +5 -5
- package/dist/components/Reader/index.css +2 -1
- package/dist/components/Reader/index.css.map +1 -1
- package/dist/components/Reader/index.d.mts +9 -9
- package/dist/components/Reader/index.mjs +24 -22
- package/dist/components/Reader/index.mjs.map +1 -1
- package/dist/components/WebPub/index.css +2 -1
- package/dist/components/WebPub/index.css.map +1 -1
- package/dist/components/WebPub/index.d.mts +11 -11
- package/dist/components/WebPub/index.mjs +11 -11
- package/dist/core/Components/index.d.mts +6 -6
- package/dist/core/Components/index.mjs +2 -2
- package/dist/core/Helpers/index.mjs +1 -1
- package/dist/core/Hooks/index.d.mts +4 -4
- package/dist/i18n/index.mjs +3 -3
- package/dist/lib/index.d.mts +15 -8
- package/dist/lib/index.mjs +2 -2
- package/dist/locales/da/thorium-web.json +37 -2
- package/dist/locales/fi/thorium-web.json +1 -1
- package/dist/locales/fr/thorium-web.json +1 -1
- package/dist/locales/lt/thorium-web.json +26 -1
- package/dist/next-lib/index.mjs +1 -1
- package/dist/next-lib/index.mjs.map +1 -1
- package/dist/preferences/index.d.mts +8 -8
- package/dist/preferences/index.mjs +4 -4
- package/dist/{settingsReducer-DLaT2wUB.d.mts → settingsReducer-VqBhLq50.d.mts} +1 -1
- package/dist/{useContrast-Bo7cDw_X.d.mts → useContrast-Cbso7N1l.d.mts} +1 -1
- package/dist/{usePreferences-D8NU1yhP.d.mts → usePreferences-9ZvbcbLW.d.mts} +3 -3
- package/dist/{useReaderTransitions-BQGzKeY2.d.mts → useReaderTransitions-0hKGCvMm.d.mts} +10 -9
- package/package.json +5 -5
- package/dist/chunk-6MONB2DN.mjs.map +0 -1
- package/dist/chunk-B3WDMWCT.mjs +0 -9
- package/dist/chunk-B3WDMWCT.mjs.map +0 -1
- package/dist/chunk-KVUG6BNI.mjs.map +0 -1
- package/dist/chunk-MLEYTQGK.mjs +0 -60
- package/dist/chunk-MLEYTQGK.mjs.map +0 -1
- package/dist/chunk-P6ILEQ5P.mjs.map +0 -1
- package/dist/chunk-PXXWEMNL.mjs.map +0 -1
- package/dist/chunk-QUSGPT5M.mjs.map +0 -1
- package/dist/chunk-TSLTLQ6O.mjs.map +0 -1
- package/dist/chunk-WLVE3WNW.mjs.map +0 -1
- package/dist/chunk-XRFLDNAY.mjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { e as UnstableShortcutRepresentation } from './keyboardUtilities-BWAyLS_D.mjs';
|
|
2
2
|
import { B as BreakpointsMap, d as ThBreakpoints, e as ThBreakpointsObject, f as ThDocumentTitleFormat, T as ThBackLinkPref, g as ThFormatPref, h as ThRunningHeadFormat, i as ThProgressionFormat, j as ThLayoutUI, k as ThPaginatedAffordancePref } from './ui-DnZZhozX.mjs';
|
|
3
|
-
import { I as I18nValue, e as ThColorScheme, f as ThContrast, g as ThSettingsKeys, h as ThTextSettingsKeys, b as ThSpacingSettingsKeys, d as ThSettingsRangePrefRequired, i as ThSettingsRadioPref, T as ThLineHeightOptions, j as ThSettingsGroupPref, a as ThSpacingPresetKeys } from './useContrast-
|
|
4
|
-
import { e as ThSheetTypes, g as ThActionsKeys, d as ThCollapsibility, c as ThActionsTokens, f as ThDockingPref, T as ThDockingKeys } from './actions-
|
|
3
|
+
import { I as I18nValue, e as ThColorScheme, f as ThContrast, g as ThSettingsKeys, h as ThTextSettingsKeys, b as ThSpacingSettingsKeys, d as ThSettingsRangePrefRequired, i as ThSettingsRadioPref, T as ThLineHeightOptions, j as ThSettingsGroupPref, a as ThSpacingPresetKeys } from './useContrast-Cbso7N1l.mjs';
|
|
4
|
+
import { e as ThSheetTypes, g as ThActionsKeys, d as ThCollapsibility, c as ThActionsTokens, f as ThDockingPref, T as ThDockingKeys } from './actions-CuRRM3rp.mjs';
|
|
5
5
|
import { IContentProtectionConfig, IAudioContentProtectionConfig, ExperimentKey } from '@readium/navigator';
|
|
6
6
|
|
|
7
7
|
type CSSValueUnitless = `${number}`;
|
|
@@ -350,8 +350,9 @@ interface useThemingProps<T extends string> {
|
|
|
350
350
|
onMonochromeChange?: (isMonochrome: boolean) => void;
|
|
351
351
|
onReducedMotionChange?: (reducedMotion: boolean) => void;
|
|
352
352
|
onReducedTransparencyChange?: (reducedTransparency: boolean) => void;
|
|
353
|
+
onContainerBreakpointChange?: (breakpoint: ThBreakpoints | null) => void;
|
|
353
354
|
}
|
|
354
|
-
declare const useTheming: <T extends string>({ theme, systemKeys, themeKeys, breakpointsMap, initProps, coverUrl, autoThemeSource, onBreakpointChange, onColorSchemeChange, onContrastChange, onForcedColorsChange, onMonochromeChange, onReducedMotionChange, onReducedTransparencyChange, onCoverThemeGenerated, }: useThemingProps<T>) => {
|
|
355
|
+
declare const useTheming: <T extends string>({ theme, systemKeys, themeKeys, breakpointsMap, initProps, coverUrl, autoThemeSource, onBreakpointChange, onColorSchemeChange, onContrastChange, onForcedColorsChange, onMonochromeChange, onReducedMotionChange, onReducedTransparencyChange, onCoverThemeGenerated, onContainerBreakpointChange, }: useThemingProps<T>) => {
|
|
355
356
|
inferThemeAuto: () => T | undefined;
|
|
356
357
|
theme: string | undefined;
|
|
357
358
|
breakpoints: ThBreakpointsObject;
|
|
@@ -363,6 +364,7 @@ declare const useTheming: <T extends string>({ theme, systemKeys, themeKeys, bre
|
|
|
363
364
|
reducedTransparency: boolean;
|
|
364
365
|
coverThemeTokens: ThemeTokens | null;
|
|
365
366
|
themeResolved: boolean;
|
|
367
|
+
setContainerRef: (el: Element | null) => void;
|
|
366
368
|
};
|
|
367
369
|
|
|
368
370
|
interface ThGlobalPreferences {
|
|
@@ -2,7 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import React__default, { ComponentType, SVGProps } from 'react';
|
|
3
3
|
import { TooltipTriggerProps, KeyboardProps } from 'react-aria';
|
|
4
4
|
import { ButtonProps, TooltipProps, MenuItemProps, LabelProps, MenuProps, MenuTriggerProps, PopoverProps, NumberFieldProps, GroupProps, InputProps, RadioGroupProps, RadioProps, SliderProps, SliderOutputProps, SliderTrackProps, SliderThumbProps, SwitchProps, HeadingProps, SelectProps, Button, ListBoxProps, ListBox, ListBoxItemProps, Heading } from 'react-aria-components';
|
|
5
|
-
import { h as ThActionEntry, i as ThActionsBarProps, C as CollapsiblePref } from './actions-
|
|
5
|
+
import { h as ThActionEntry, i as ThActionsBarProps, C as CollapsiblePref } from './actions-CuRRM3rp.mjs';
|
|
6
6
|
|
|
7
7
|
interface HTMLAttributesWithRef<T> extends React.HTMLAttributes<T> {
|
|
8
8
|
ref?: React.ForwardedRef<T>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
1
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
3
|
import { ToolbarProps } from 'react-aria-components';
|
|
3
4
|
import { B as BreakpointsMap } from './ui-DnZZhozX.mjs';
|
|
@@ -33,9 +34,11 @@ interface CollapsiblePref {
|
|
|
33
34
|
};
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
|
-
declare const useCollapsibility: (items: ThActionEntry<string>[], prefs: CollapsiblePref, breakpoint?: string) => {
|
|
37
|
+
declare const useCollapsibility: (items: ThActionEntry<string>[], prefs: CollapsiblePref, breakpoint?: string, containerRef?: RefObject<HTMLElement | null>) => {
|
|
37
38
|
ActionIcons: ThActionEntry<string>[];
|
|
38
39
|
MenuItems: ThActionEntry<string>[];
|
|
40
|
+
getItemRef: (key: string) => (el: HTMLElement | null) => void;
|
|
41
|
+
getGhostRef: (el: HTMLDivElement | null) => void;
|
|
39
42
|
};
|
|
40
43
|
|
|
41
44
|
type ThBottomSheetDetent = "content-height" | "full-height";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _reduxjs_toolkit from '@reduxjs/toolkit';
|
|
2
2
|
import { W as WritableDraft } from './immer.d-CoRThNOF.mjs';
|
|
3
|
-
import { T as ThDockingKeys } from './actions-
|
|
3
|
+
import { T as ThDockingKeys } from './actions-CuRRM3rp.mjs';
|
|
4
4
|
|
|
5
5
|
type ActionsStateKeys = string;
|
|
6
6
|
type OverflowStateKeys = string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { supportedLocales } from './chunk-
|
|
1
|
+
import { supportedLocales } from './chunk-GNROODJB.mjs';
|
|
2
2
|
import i18n from 'i18next';
|
|
3
3
|
export { default as i18n } from 'i18next';
|
|
4
4
|
import { initReactI18next, useTranslation } from 'react-i18next';
|
|
@@ -67,5 +67,5 @@ var useI18n = (ns) => {
|
|
|
67
67
|
};
|
|
68
68
|
|
|
69
69
|
export { DEFAULT_CONFIG, initI18n, useI18n };
|
|
70
|
-
//# sourceMappingURL=chunk-
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
70
|
+
//# sourceMappingURL=chunk-2NCN2AG2.mjs.map
|
|
71
|
+
//# sourceMappingURL=chunk-2NCN2AG2.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/i18n/config.ts","../src/i18n/useI18n.ts"],"names":["i18n"],"mappings":";;;;;;;;AAOO,IAAM,cAAA,GAA8B;AAAA,EACzC,WAAA,EAAa,IAAA;AAAA,EACb,IAAA,EAAM,KAAA;AAAA,EACN,wBAAA,EAA0B,IAAA;AAAA,EAC1B,aAAA,EAAe,gBAAA;AAAA,EACf,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,CAAC,WAAW,CAAA;AAAA,IACnB,QAAQ;AAAC,GACX;AAAA,EACA,aAAA,EAAe;AAAA,IACb,WAAA,EAAa;AAAA,GACf;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,EAAA,EAAI,CAAC,gBAAA,EAAkB,aAAa,CAAA;AAAA,EACpC,SAAA,EAAW,CAAC,aAAA,EAAe,gBAAgB,CAAA;AAAA,EAC3C,iBAAA,EAAmB;AACrB;AAEO,IAAM,QAAA,GAAW,OAAO,OAAA,GAAgC,EAAC,KAAM;AACpE,EAAA,IAAI,KAAK,aAAA,EAAe;AACtB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA,CACJ,GAAA,CAAI,OAAO,CAAA,CACX,GAAA,CAAI,gBAAgB,CAAA,CACpB,GAAA,CAAI,gBAAgB,CAAA,CACpB,IAAA,CAAK;AAAA,IACJ,GAAG,cAAA;AAAA,IACH,GAAG;AAAA,GACJ,CAAA;AACL;AC/BO,IAAM,OAAA,GAAU,CAAC,EAAA,KAA2B;AAGjD,EAAA,MAAM,EAAE,CAAA,EAAG,IAAA,EAAM,IAAA,EAAAA,KAAAA,EAAM,OAAM,GAAI,cAAA,CAAe,EAAA,IAAM,cAAA,CAAe,EAAc,CAAA;AAGnF,EAAA,MAAM,cAAA,GAAiB,CAAC,GAAA,KAAgB;AACtC,IAAA,OAAOA,KAAAA,CAAK,eAAe,GAAG,CAAA;AAAA,EAChC,CAAA;AAGA,EAAA,MAAM,CAAA,GAAI,WAAA,CAAY,CAAC,GAAA,EAAa,OAAA,KAA0B;AAC5D,IAAA,IAAI,EAAA,EAAI;AAEN,MAAA,OAAO,IAAA,CAAK,KAAK,OAAO,CAAA;AAAA,IAC1B,CAAA,MAAO;AAEL,MAAA,KAAA,MAAW,SAAA,IAAa,eAAe,EAAA,EAAgB;AACrD,QAAA,MAAM,MAAA,GAAS,KAAK,GAAA,EAAK,EAAE,GAAG,OAAA,EAAS,EAAA,EAAI,WAAW,CAAA;AACtD,QAAA,IAAI,MAAA,KAAW,KAAK,OAAO,MAAA;AAAA,MAC7B;AACA,MAAA,OAAO,GAAA;AAAA,IACT;AAAA,EACF,CAAA,EAAG,CAAC,EAAA,EAAI,IAAI,CAAC,CAAA;AAEb,EAAA,OAAO;AAAA;AAAA,IAEL,CAAA;AAAA;AAAA,IAEA,IAAA,EAAAA,KAAAA;AAAA;AAAA,IAEA,KAAA;AAAA;AAAA,IAEA,iBAAiBA,KAAAA,CAAK,QAAA;AAAA;AAAA,IAEtB,WAAWA,KAAAA,CAAK,SAAA;AAAA;AAAA,IAEhB;AAAA,GACF;AACF","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/i18n/config.ts","../src/i18n/useI18n.ts"],"names":["i18n"],"mappings":";;;;;;;;AAOO,IAAM,cAAA,GAA8B;AAAA,EACzC,WAAA,EAAa,IAAA;AAAA,EACb,IAAA,EAAM,KAAA;AAAA,EACN,wBAAA,EAA0B,IAAA;AAAA,EAC1B,aAAA,EAAe,gBAAA;AAAA,EACf,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,CAAC,WAAW,CAAA;AAAA,IACnB,QAAQ;AAAC,GACX;AAAA,EACA,aAAA,EAAe;AAAA,IACb,WAAA,EAAa;AAAA,GACf;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,EAAA,EAAI,CAAC,gBAAA,EAAkB,aAAa,CAAA;AAAA,EACpC,SAAA,EAAW,CAAC,aAAA,EAAe,gBAAgB,CAAA;AAAA,EAC3C,iBAAA,EAAmB;AACrB;AAEO,IAAM,QAAA,GAAW,OAAO,OAAA,GAAgC,EAAC,KAAM;AACpE,EAAA,IAAI,KAAK,aAAA,EAAe;AACtB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA,CACJ,GAAA,CAAI,OAAO,CAAA,CACX,GAAA,CAAI,gBAAgB,CAAA,CACpB,GAAA,CAAI,gBAAgB,CAAA,CACpB,IAAA,CAAK;AAAA,IACJ,GAAG,cAAA;AAAA,IACH,GAAG;AAAA,GACJ,CAAA;AACL;AC/BO,IAAM,OAAA,GAAU,CAAC,EAAA,KAA2B;AAGjD,EAAA,MAAM,EAAE,CAAA,EAAG,IAAA,EAAM,IAAA,EAAAA,KAAAA,EAAM,OAAM,GAAI,cAAA,CAAe,EAAA,IAAM,cAAA,CAAe,EAAc,CAAA;AAGnF,EAAA,MAAM,cAAA,GAAiB,CAAC,GAAA,KAAgB;AACtC,IAAA,OAAOA,KAAAA,CAAK,eAAe,GAAG,CAAA;AAAA,EAChC,CAAA;AAGA,EAAA,MAAM,CAAA,GAAI,WAAA,CAAY,CAAC,GAAA,EAAa,OAAA,KAA0B;AAC5D,IAAA,IAAI,EAAA,EAAI;AAEN,MAAA,OAAO,IAAA,CAAK,KAAK,OAAO,CAAA;AAAA,IAC1B,CAAA,MAAO;AAEL,MAAA,KAAA,MAAW,SAAA,IAAa,eAAe,EAAA,EAAgB;AACrD,QAAA,MAAM,MAAA,GAAS,KAAK,GAAA,EAAK,EAAE,GAAG,OAAA,EAAS,EAAA,EAAI,WAAW,CAAA;AACtD,QAAA,IAAI,MAAA,KAAW,KAAK,OAAO,MAAA;AAAA,MAC7B;AACA,MAAA,OAAO,GAAA;AAAA,IACT;AAAA,EACF,CAAA,EAAG,CAAC,EAAA,EAAI,IAAI,CAAC,CAAA;AAEb,EAAA,OAAO;AAAA;AAAA,IAEL,CAAA;AAAA;AAAA,IAEA,IAAA,EAAAA,KAAAA;AAAA;AAAA,IAEA,KAAA;AAAA;AAAA,IAEA,iBAAiBA,KAAAA,CAAK,QAAA;AAAA;AAAA,IAEtB,WAAWA,KAAAA,CAAK,SAAA;AAAA;AAAA,IAEhB;AAAA,GACF;AACF","file":"chunk-2NCN2AG2.mjs","sourcesContent":["import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport Backend from \"i18next-http-backend\";\nimport { InitOptions } from \"i18next\";\nimport { supportedLocales } from \"./supported-locales\";\n\nexport const DEFAULT_CONFIG: InitOptions = {\n fallbackLng: \"en\",\n load: \"all\",\n nonExplicitSupportedLngs: true,\n supportedLngs: supportedLocales,\n detection: {\n order: [\"navigator\"],\n caches: []\n },\n interpolation: {\n escapeValue: false\n },\n backend: {\n loadPath: \"/locales/{{lng}}/{{ns}}.json\"\n },\n ns: [\"thorium-shared\", \"thorium-web\"],\n defaultNS: [\"thorium-web\", \"thorium-shared\"],\n returnEmptyString: false\n};\n\nexport const initI18n = async (options: Partial<InitOptions> = {}) => {\n if (i18n.isInitialized) {\n return i18n;\n }\n\n return i18n\n .use(Backend)\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n ...DEFAULT_CONFIG,\n ...options\n });\n};\n\nexport { i18n };","import { useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { DEFAULT_CONFIG } from \"./config\";\n\n/**\n * Hook to access the i18n instance and translation functions\n * @param ns Optional additional namespace(s) to include alongside the default namespaces\n * @returns Translation functions and i18n instance\n */\nexport const useI18n = (ns?: string | string[]) => {\n // If no namespace provided, use both defaults with fallback\n // If namespace provided, use only that (override behavior)\n const { t: tRaw, i18n, ready } = useTranslation(ns || DEFAULT_CONFIG.ns as string[]);\n \n // Helper function to change language\n const changeLanguage = (lng: string) => {\n return i18n.changeLanguage(lng);\n };\n\n // Enhanced t function that searches both namespaces only when using defaults\n const t = useCallback((key: string, options?: any): string => {\n if (ns) {\n // If custom namespace provided, use it directly (no fallback)\n return tRaw(key, options) as string;\n } else {\n // If no namespace provided, search all default namespaces\n for (const namespace of DEFAULT_CONFIG.ns as string[]) {\n const result = tRaw(key, { ...options, ns: namespace });\n if (result !== key) return result as string;\n }\n return key;\n }\n }, [ns, tRaw]);\n\n return {\n // Translation function\n t,\n // i18n instance\n i18n,\n // Whether translations are loaded\n ready,\n // Current language\n currentLanguage: i18n.language,\n // List of available languages\n languages: i18n.languages,\n // Function to change language\n changeLanguage\n };\n};\n"]}
|
|
@@ -117,5 +117,5 @@ var buildShortcut = (str) => {
|
|
|
117
117
|
};
|
|
118
118
|
|
|
119
119
|
export { UnstableShortcutMetaKeywords, UnstableShortcutRepresentation, buildShortcut, defaultPlatformModifier, getPlatform, getPlatformModifier, isIOSish, isIpadOS, isMacish, metaKeys };
|
|
120
|
-
//# sourceMappingURL=chunk-
|
|
121
|
-
//# sourceMappingURL=chunk-
|
|
120
|
+
//# sourceMappingURL=chunk-44PEO3DS.mjs.map
|
|
121
|
+
//# sourceMappingURL=chunk-44PEO3DS.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/Helpers/getPlatform.ts","../src/core/Helpers/keyboardUtilities.ts"],"names":["UnstableShortcutMetaKeywords","UnstableShortcutRepresentation"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/core/Helpers/getPlatform.ts","../src/core/Helpers/keyboardUtilities.ts"],"names":["UnstableShortcutMetaKeywords","UnstableShortcutRepresentation"],"mappings":"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","file":"chunk-44PEO3DS.mjs","sourcesContent":["\"use client\";\n\n// Extend Navigator interface to include userAgentData\ndeclare global {\n interface Navigator {\n userAgentData?: {\n brands: Array<{brand: string; version: string}>;\n mobile: boolean;\n platform: string;\n };\n }\n}\n\n// See https://developer.mozilla.org/en-US/docs/Web/API/Navigator/userAgentData\nexport const getPlatform = () => {\n if (typeof window !== \"undefined\") {\n const nav = window.navigator;\n\n if (nav.userAgentData) {\n return nav.userAgentData.platform.toLowerCase();\n }\n\n // Deprecated but userAgentData still experimental…\n if (typeof nav.platform !== \"undefined\") {\n // android navigator.platform is often set as \"linux\", so we have to check userAgent\n if (typeof nav.userAgent !== \"undefined\" && /android/.test(nav.userAgent.toLowerCase())) {\n return \"android\";\n }\n return nav.platform.toLowerCase();\n }\n }\n\n return \"unknown\";\n};\n\nexport const isMacish = () => {\n const MacOSPattern = /mac|ipod|iphone|ipad/i;\n const platform = getPlatform();\n return MacOSPattern.test(platform);\n}\n\n// “Desktop-class” iPadOS\nexport const isIpadOS = () => {\n return !!(navigator.maxTouchPoints \n && navigator.maxTouchPoints > 2 \n && navigator.userAgent.includes(\"Intel\"));\n}\n\n// Covers all iOS/iPadOS: iPhone/iPod/iPad by platform string + desktop-class iPadOS by UA sniff\nexport const isIOSish = () => {\n const AppleMobilePattern = /ipod|iphone|ipad/i;\n const platform = getPlatform();\n if (AppleMobilePattern.test(platform)) {\n return true;\n } else {\n return isIpadOS();\n }\n}","\"use client\";\n\nimport { isMacish } from \"./getPlatform\";\n\nexport interface UnstableKey {\n [key: string]: string;\n longform: string;\n shortform: string;\n}\n\nexport interface UnstableMetaKey extends UnstableKey {\n modifier: \"altKey\" | \"ctrlKey\" | \"metaKey\" | \"shiftKey\";\n symbol: \"⌥\" | \"^\" | \"⌘\" | \"⊞\" | \"⇧\";\n}\n\nexport interface UnstablePlatformModifier extends UnstableKey {\n modifier: \"ctrlKey\" | \"metaKey\";\n symbol: \"^\" | \"⌘\";\n}\n\nexport interface UnstableMetaKeys {\n [key: string]: UnstableMetaKey;\n altKey: UnstableMetaKey;\n ctrlKey: UnstableMetaKey;\n metaKey: UnstableMetaKey;\n shiftKey: UnstableMetaKey;\n}\n\nexport enum UnstableShortcutMetaKeywords {\n alt = \"altKey\",\n ctrl = \"ctrlKey\",\n meta = \"metaKey\",\n platform = \"platformKey\",\n shift = \"shiftKey\"\n}\n\nexport enum UnstableShortcutRepresentation {\n symbol = \"symbol\",\n short = \"shortform\",\n long = \"longform\"\n};\n\nexport interface UnstableShortcut {\n className?: string;\n rawForm: string;\n representation?: UnstableShortcutRepresentation; \n joiner?: string;\n}\n\nexport interface UnstablePShortcut {\n key?: string;\n char?: string;\n modifiers: {\n [key: string]: boolean;\n altKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n platformKey: boolean;\n shiftKey: boolean;\n }\n}\n\nconst altModifier: UnstableMetaKey = {\n longform: \"Option\",\n shortform: \"Alt\",\n modifier: \"altKey\",\n symbol: \"⌥\"\n}\n\nconst ctrlModifier: UnstableMetaKey & UnstablePlatformModifier = {\n longform: \"Control\",\n shortform: \"Ctrl\",\n modifier: \"ctrlKey\",\n symbol: \"^\"\n}\n\nconst metaModifierMac: UnstableMetaKey & UnstablePlatformModifier = {\n longform: \"Command\",\n shortform: \"Cmd\",\n modifier: \"metaKey\",\n symbol: \"⌘\" \n}\n\nconst metaModifierWin: UnstableMetaKey = {\n longform: \"Windows\",\n shortform: \"Win\",\n modifier: \"metaKey\",\n symbol: \"⊞\"\n}\n\nconst shiftModifier: UnstableMetaKey = {\n longform: \"Shift\",\n shortform: \"Shift\",\n modifier: \"shiftKey\",\n symbol: \"⇧\"\n}\n\nexport const metaKeys: UnstableMetaKeys = {\n altKey: altModifier,\n ctrlKey: ctrlModifier,\n metaKey: isMacish() ? metaModifierMac : metaModifierWin,\n shiftKey: shiftModifier\n}\n\n// Platform modifier differs from Mac to Windows so we have to get it dynamically\n\nexport const defaultPlatformModifier = ctrlModifier;\n\nexport const getPlatformModifier = (): UnstablePlatformModifier => {\n if (isMacish()) {\n return metaModifierMac;\n } else {\n return ctrlModifier;\n }\n}\n\nexport const buildShortcut = (str: string) => {\n let shortcutObj: UnstablePShortcut = {\n key: \"\",\n char: \"\",\n modifiers: {\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n platformKey: false,\n shiftKey: false\n }\n }\n \n const shortcutArray = str.split(/\\s*?[+-]\\s*?/);\n\n shortcutArray.filter((val) => {\n if ((Object.values(UnstableShortcutMetaKeywords) as string[]).includes(val)) {\n const trimmedKey = val.trim();\n shortcutObj.modifiers[trimmedKey] = true;\n } else {\n shortcutObj.char = val.trim().toUpperCase();\n shortcutObj.key = `Key${ val.trim().toUpperCase() }`;\n }\n });\n\n return shortcutObj.key ? shortcutObj : null;\n}"]}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { useState, useRef, useCallback, useLayoutEffect, useEffect, useMemo } from 'react';
|
|
2
|
+
|
|
3
|
+
// src/core/Components/Actions/hooks/useCollapsibility.ts
|
|
4
|
+
var ThCollapsibilityVisibility = /* @__PURE__ */ ((ThCollapsibilityVisibility2) => {
|
|
5
|
+
ThCollapsibilityVisibility2["always"] = "always";
|
|
6
|
+
ThCollapsibilityVisibility2["partially"] = "partially";
|
|
7
|
+
ThCollapsibilityVisibility2["overflow"] = "overflow";
|
|
8
|
+
return ThCollapsibilityVisibility2;
|
|
9
|
+
})(ThCollapsibilityVisibility || {});
|
|
10
|
+
var useCollapsibility = (items, prefs, breakpoint, containerRef) => {
|
|
11
|
+
const isSpaceFit = prefs.collapse === true;
|
|
12
|
+
const [partialInBar, setPartialInBar] = useState(Number.MAX_SAFE_INTEGER);
|
|
13
|
+
const lastCountRef = useRef(Number.MAX_SAFE_INTEGER);
|
|
14
|
+
const keyToElement = useRef(/* @__PURE__ */ new Map());
|
|
15
|
+
const itemWidthsRef = useRef(/* @__PURE__ */ new Map());
|
|
16
|
+
const alwaysKeysRef = useRef([]);
|
|
17
|
+
const orderedPartialKeysRef = useRef([]);
|
|
18
|
+
const hasOverflowRef = useRef(false);
|
|
19
|
+
const columnGapRef = useRef(0);
|
|
20
|
+
const rafIdRef = useRef(null);
|
|
21
|
+
const specRef = useRef("");
|
|
22
|
+
const computeLayout = useCallback((containerWidth) => {
|
|
23
|
+
if (!containerWidth) return;
|
|
24
|
+
const widths = itemWidthsRef.current;
|
|
25
|
+
const alwaysKeys = alwaysKeysRef.current;
|
|
26
|
+
const partialKeys = orderedPartialKeysRef.current;
|
|
27
|
+
const gap = columnGapRef.current;
|
|
28
|
+
const N_a = alwaysKeys.length;
|
|
29
|
+
const alwaysTotal = alwaysKeys.reduce((s, k) => s + (widths.get(k) ?? 0), 0);
|
|
30
|
+
const partialWidths = partialKeys.map((k) => widths.get(k) ?? 0);
|
|
31
|
+
const partialTotal = partialWidths.reduce((s, w) => s + w, 0);
|
|
32
|
+
let newCount;
|
|
33
|
+
const noMenuTotal = alwaysTotal + partialTotal + gap * Math.max(0, N_a + partialKeys.length - 1);
|
|
34
|
+
if (!hasOverflowRef.current && noMenuTotal <= containerWidth) {
|
|
35
|
+
newCount = partialKeys.length;
|
|
36
|
+
} else {
|
|
37
|
+
const menuW = widths.values().next().value ?? 0;
|
|
38
|
+
if (!menuW) return;
|
|
39
|
+
let count = 0, usedPartial = 0;
|
|
40
|
+
for (const w of partialWidths) {
|
|
41
|
+
const totalGap = gap * Math.max(0, N_a + count + 1);
|
|
42
|
+
if (alwaysTotal + usedPartial + w + menuW + totalGap <= containerWidth) {
|
|
43
|
+
usedPartial += w;
|
|
44
|
+
count++;
|
|
45
|
+
} else {
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
newCount = count;
|
|
50
|
+
}
|
|
51
|
+
if (newCount !== lastCountRef.current) {
|
|
52
|
+
lastCountRef.current = newCount;
|
|
53
|
+
setPartialInBar(newCount);
|
|
54
|
+
}
|
|
55
|
+
}, []);
|
|
56
|
+
const remeasureAndCompute = useCallback((containerWidth) => {
|
|
57
|
+
if (!containerRef?.current) return;
|
|
58
|
+
for (const [key, el] of keyToElement.current) {
|
|
59
|
+
itemWidthsRef.current.set(key, el.getBoundingClientRect().width);
|
|
60
|
+
}
|
|
61
|
+
columnGapRef.current = parseFloat(getComputedStyle(containerRef.current).columnGap) || 0;
|
|
62
|
+
computeLayout(containerWidth ?? containerRef.current.getBoundingClientRect().width);
|
|
63
|
+
}, [containerRef, computeLayout]);
|
|
64
|
+
const remeasureAndComputeRef = useRef(remeasureAndCompute);
|
|
65
|
+
useLayoutEffect(() => {
|
|
66
|
+
remeasureAndComputeRef.current = remeasureAndCompute;
|
|
67
|
+
}, [remeasureAndCompute]);
|
|
68
|
+
useLayoutEffect(() => {
|
|
69
|
+
if (!isSpaceFit || !containerRef?.current) return;
|
|
70
|
+
const spec = items.map((i) => `${i.key}:${prefs.keys[i.key]?.visibility ?? ""}`).join(",");
|
|
71
|
+
const widthsMissing = items.some((i) => !(itemWidthsRef.current.get(i.key) ?? 0));
|
|
72
|
+
if (spec === specRef.current && !widthsMissing) return;
|
|
73
|
+
specRef.current = spec;
|
|
74
|
+
const always = [], partial = [];
|
|
75
|
+
let hasOverflow = false;
|
|
76
|
+
for (const item of items) {
|
|
77
|
+
const v = prefs.keys[item.key]?.visibility;
|
|
78
|
+
if (v === "overflow" /* overflow */) hasOverflow = true;
|
|
79
|
+
else if (v === "always" /* always */) always.push(item.key);
|
|
80
|
+
else partial.push(item.key);
|
|
81
|
+
}
|
|
82
|
+
alwaysKeysRef.current = always;
|
|
83
|
+
orderedPartialKeysRef.current = partial;
|
|
84
|
+
hasOverflowRef.current = hasOverflow;
|
|
85
|
+
remeasureAndCompute(containerRef.current.getBoundingClientRect().width);
|
|
86
|
+
}, [isSpaceFit, items, prefs, containerRef, remeasureAndCompute]);
|
|
87
|
+
useEffect(() => {
|
|
88
|
+
if (!isSpaceFit || !containerRef?.current) return;
|
|
89
|
+
const observer = new ResizeObserver((entries) => {
|
|
90
|
+
const w = entries[0]?.contentRect.width;
|
|
91
|
+
if (w === void 0) return;
|
|
92
|
+
if (rafIdRef.current !== null) cancelAnimationFrame(rafIdRef.current);
|
|
93
|
+
rafIdRef.current = requestAnimationFrame(() => {
|
|
94
|
+
rafIdRef.current = null;
|
|
95
|
+
remeasureAndCompute(w);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
observer.observe(containerRef.current);
|
|
99
|
+
return () => {
|
|
100
|
+
observer.disconnect();
|
|
101
|
+
if (rafIdRef.current !== null) cancelAnimationFrame(rafIdRef.current);
|
|
102
|
+
};
|
|
103
|
+
}, [isSpaceFit, containerRef, remeasureAndCompute]);
|
|
104
|
+
const ghostObserverRef = useRef(null);
|
|
105
|
+
const getGhostRef = useCallback((el) => {
|
|
106
|
+
ghostObserverRef.current?.disconnect();
|
|
107
|
+
ghostObserverRef.current = null;
|
|
108
|
+
if (el && isSpaceFit) {
|
|
109
|
+
const observer = new ResizeObserver(() => {
|
|
110
|
+
if (rafIdRef.current !== null) cancelAnimationFrame(rafIdRef.current);
|
|
111
|
+
rafIdRef.current = requestAnimationFrame(() => {
|
|
112
|
+
rafIdRef.current = null;
|
|
113
|
+
remeasureAndComputeRef.current();
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
observer.observe(el);
|
|
117
|
+
ghostObserverRef.current = observer;
|
|
118
|
+
}
|
|
119
|
+
}, [isSpaceFit]);
|
|
120
|
+
const getItemRef = useCallback((key) => (el) => {
|
|
121
|
+
if (el) {
|
|
122
|
+
keyToElement.current.set(key, el);
|
|
123
|
+
} else {
|
|
124
|
+
keyToElement.current.delete(key);
|
|
125
|
+
itemWidthsRef.current.delete(key);
|
|
126
|
+
}
|
|
127
|
+
}, []);
|
|
128
|
+
const [actionIcons, menuItems] = useMemo(() => {
|
|
129
|
+
const actionIcons2 = [];
|
|
130
|
+
const menuItems2 = [];
|
|
131
|
+
if (!prefs.collapse) {
|
|
132
|
+
items.forEach((item) => actionIcons2.push(item));
|
|
133
|
+
return [actionIcons2, menuItems2];
|
|
134
|
+
}
|
|
135
|
+
if (prefs.collapse === true) {
|
|
136
|
+
const barPartialSet = /* @__PURE__ */ new Set();
|
|
137
|
+
let partialCount = 0;
|
|
138
|
+
for (const item of items) {
|
|
139
|
+
if (prefs.keys[item.key]?.visibility === "partially" /* partially */) {
|
|
140
|
+
if (partialCount < partialInBar) {
|
|
141
|
+
barPartialSet.add(item.key);
|
|
142
|
+
partialCount++;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
for (const item of items) {
|
|
147
|
+
const v = prefs.keys[item.key]?.visibility;
|
|
148
|
+
if (v === "overflow" /* overflow */ || v === "partially" /* partially */ && !barPartialSet.has(item.key)) {
|
|
149
|
+
menuItems2.push(item);
|
|
150
|
+
} else {
|
|
151
|
+
actionIcons2.push(item);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return [actionIcons2, menuItems2];
|
|
155
|
+
}
|
|
156
|
+
let countdown = 0;
|
|
157
|
+
if (breakpoint) {
|
|
158
|
+
const prefForBreakpoint = prefs.collapse[breakpoint];
|
|
159
|
+
if (prefForBreakpoint) {
|
|
160
|
+
const partialCount = items.filter((i) => prefs.keys[i.key]?.visibility === "partially" /* partially */).length;
|
|
161
|
+
const overflowCount = items.filter((i) => prefs.keys[i.key]?.visibility === "overflow" /* overflow */).length;
|
|
162
|
+
const collapsibleCount = partialCount + overflowCount;
|
|
163
|
+
if (prefForBreakpoint === "all") {
|
|
164
|
+
countdown = overflowCount;
|
|
165
|
+
} else if (!isNaN(prefForBreakpoint)) {
|
|
166
|
+
countdown = Math.max(0, collapsibleCount - (prefForBreakpoint - 1));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
[...items].reverse().forEach((item) => {
|
|
171
|
+
const actionPref = prefs.keys[item.key];
|
|
172
|
+
if (actionPref.visibility === "overflow" /* overflow */) {
|
|
173
|
+
menuItems2.unshift(item);
|
|
174
|
+
--countdown;
|
|
175
|
+
} else if (actionPref.visibility === "partially" /* partially */) {
|
|
176
|
+
if (countdown > 0) {
|
|
177
|
+
menuItems2.unshift(item);
|
|
178
|
+
--countdown;
|
|
179
|
+
} else {
|
|
180
|
+
actionIcons2.unshift(item);
|
|
181
|
+
}
|
|
182
|
+
} else {
|
|
183
|
+
actionIcons2.unshift(item);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
return [actionIcons2, menuItems2];
|
|
187
|
+
}, [items, prefs, breakpoint, partialInBar]);
|
|
188
|
+
return { ActionIcons: actionIcons, MenuItems: menuItems, getItemRef, getGhostRef };
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
export { ThCollapsibilityVisibility, useCollapsibility };
|
|
192
|
+
//# sourceMappingURL=chunk-AQSJDL63.mjs.map
|
|
193
|
+
//# sourceMappingURL=chunk-AQSJDL63.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/Components/Actions/hooks/useCollapsibility.ts"],"names":["ThCollapsibilityVisibility","actionIcons","menuItems"],"mappings":";;;AAQO,IAAK,0BAAA,qBAAAA,2BAAAA,KAAL;AACL,EAAAA,4BAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,4BAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,4BAAA,UAAA,CAAA,GAAW,UAAA;AAHD,EAAA,OAAAA,2BAAAA;AAAA,CAAA,EAAA,0BAAA,IAAA,EAAA;AAiBL,IAAM,iBAAA,GAAoB,CAC/B,KAAA,EACA,KAAA,EACA,YACA,YAAA,KACG;AACH,EAAA,MAAM,UAAA,GAAa,MAAM,QAAA,KAAa,IAAA;AAKtC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,QAAA,CAAiB,OAAO,gBAAgB,CAAA;AAChF,EAAA,MAAM,YAAA,GAAe,MAAA,CAAe,MAAA,CAAO,gBAAgB,CAAA;AAI3D,EAAA,MAAM,YAAA,GAAe,MAAA,iBAAO,IAAI,GAAA,EAA0B,CAAA;AAC1D,EAAA,MAAM,aAAA,GAAgB,MAAA,iBAAO,IAAI,GAAA,EAAqB,CAAA;AAGtD,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAiB,EAAE,CAAA;AACzC,EAAA,MAAM,qBAAA,GAAwB,MAAA,CAAiB,EAAE,CAAA;AACjD,EAAA,MAAM,cAAA,GAAiB,OAAgB,KAAK,CAAA;AAC5C,EAAA,MAAM,YAAA,GAAe,OAAe,CAAC,CAAA;AAGrC,EAAA,MAAM,QAAA,GAAW,OAAsB,IAAI,CAAA;AAG3C,EAAA,MAAM,OAAA,GAAU,OAAe,EAAE,CAAA;AAIjC,EAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,CAAC,cAAA,KAA2B;AAC5D,IAAA,IAAI,CAAC,cAAA,EAAgB;AAErB,IAAA,MAAM,SAAS,aAAA,CAAc,OAAA;AAC7B,IAAA,MAAM,aAAa,aAAA,CAAc,OAAA;AACjC,IAAA,MAAM,cAAc,qBAAA,CAAsB,OAAA;AAC1C,IAAA,MAAM,MAAM,YAAA,CAAa,OAAA;AAEzB,IAAA,MAAM,MAAM,UAAA,CAAW,MAAA;AACvB,IAAA,MAAM,WAAA,GAAc,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,IAAK,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,IAAK,CAAA,CAAA,EAAI,CAAC,CAAA;AAC3E,IAAA,MAAM,aAAA,GAAgB,YAAY,GAAA,CAAI,CAAA,CAAA,KAAK,OAAO,GAAA,CAAI,CAAC,KAAK,CAAC,CAAA;AAC7D,IAAA,MAAM,YAAA,GAAe,cAAc,MAAA,CAAO,CAAC,GAAG,CAAA,KAAM,CAAA,GAAI,GAAG,CAAC,CAAA;AAE5D,IAAA,IAAI,QAAA;AAGJ,IAAA,MAAM,WAAA,GAAc,WAAA,GAAc,YAAA,GAAe,GAAA,GAAM,IAAA,CAAK,IAAI,CAAA,EAAG,GAAA,GAAM,WAAA,CAAY,MAAA,GAAS,CAAC,CAAA;AAC/F,IAAA,IAAI,CAAC,cAAA,CAAe,OAAA,IAAW,WAAA,IAAe,cAAA,EAAgB;AAC5D,MAAA,QAAA,GAAW,WAAA,CAAY,MAAA;AAAA,IACzB,CAAA,MAAO;AAGL,MAAA,MAAM,QAAQ,MAAA,CAAO,MAAA,EAAO,CAAE,IAAA,GAAO,KAAA,IAAS,CAAA;AAC9C,MAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,MAAA,IAAI,KAAA,GAAQ,GAAG,WAAA,GAAc,CAAA;AAC7B,MAAA,KAAA,MAAW,KAAK,aAAA,EAAe;AAE7B,QAAA,MAAM,WAAW,GAAA,GAAM,IAAA,CAAK,IAAI,CAAA,EAAG,GAAA,GAAM,QAAQ,CAAC,CAAA;AAClD,QAAA,IAAI,WAAA,GAAc,WAAA,GAAc,CAAA,GAAI,KAAA,GAAQ,YAAY,cAAA,EAAgB;AACtE,UAAA,WAAA,IAAe,CAAA;AACf,UAAA,KAAA,EAAA;AAAA,QACF,CAAA,MAAO;AACL,UAAA;AAAA,QACF;AAAA,MACF;AACA,MAAA,QAAA,GAAW,KAAA;AAAA,IACb;AAEA,IAAA,IAAI,QAAA,KAAa,aAAa,OAAA,EAAS;AACrC,MAAA,YAAA,CAAa,OAAA,GAAU,QAAA;AACvB,MAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAOL,EAAA,MAAM,mBAAA,GAAsB,WAAA,CAAY,CAAC,cAAA,KAA4B;AACnE,IAAA,IAAI,CAAC,cAAc,OAAA,EAAS;AAC5B,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,EAAE,CAAA,IAAK,aAAa,OAAA,EAAS;AAC5C,MAAA,aAAA,CAAc,QAAQ,GAAA,CAAI,GAAA,EAAK,EAAA,CAAG,qBAAA,GAAwB,KAAK,CAAA;AAAA,IACjE;AACA,IAAA,YAAA,CAAa,UAAU,UAAA,CAAW,gBAAA,CAAiB,aAAa,OAAO,CAAA,CAAE,SAAS,CAAA,IAAK,CAAA;AACvF,IAAA,aAAA,CAAc,cAAA,IAAkB,YAAA,CAAa,OAAA,CAAQ,qBAAA,GAAwB,KAAK,CAAA;AAAA,EACpF,CAAA,EAAG,CAAC,YAAA,EAAc,aAAa,CAAC,CAAA;AAIhC,EAAA,MAAM,sBAAA,GAAyB,OAAO,mBAAmB,CAAA;AACzD,EAAA,eAAA,CAAgB,MAAM;AAAE,IAAA,sBAAA,CAAuB,OAAA,GAAU,mBAAA;AAAA,EAAqB,CAAA,EAAG,CAAC,mBAAmB,CAAC,CAAA;AAQtG,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,UAAA,IAAc,CAAC,YAAA,EAAc,OAAA,EAAS;AAE3C,IAAA,MAAM,OAAO,KAAA,CAAM,GAAA,CAAI,OAAK,CAAA,EAAG,CAAA,CAAE,GAAG,CAAA,CAAA,EAAI,KAAA,CAAM,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA,EAAG,UAAA,IAAc,EAAE,CAAA,CAAE,CAAA,CAAE,KAAK,GAAG,CAAA;AACvF,IAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,aAAA,CAAc,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAE,GAAG,CAAA,IAAK,CAAA,CAAE,CAAA;AAC9E,IAAA,IAAI,IAAA,KAAS,OAAA,CAAQ,OAAA,IAAW,CAAC,aAAA,EAAe;AAChD,IAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAElB,IAAA,MAAM,MAAA,GAAmB,EAAC,EAAG,OAAA,GAAoB,EAAC;AAClD,IAAA,IAAI,WAAA,GAAc,KAAA;AAElB,IAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,MAAA,MAAM,CAAA,GAAI,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,EAAG,UAAA;AAChC,MAAA,IAAI,CAAA,KAAM,2BAAqC,WAAA,GAAc,IAAA;AAAA,WAAA,IACpD,CAAA,KAAM,QAAA,eAAmC,MAAA,CAAO,IAAA,CAAK,KAAK,GAAG,CAAA;AAAA,WACjE,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AAAA,IAC5B;AAEA,IAAA,aAAA,CAAc,OAAA,GAAU,MAAA;AACxB,IAAA,qBAAA,CAAsB,OAAA,GAAU,OAAA;AAChC,IAAA,cAAA,CAAe,OAAA,GAAU,WAAA;AAEzB,IAAA,mBAAA,CAAoB,YAAA,CAAa,OAAA,CAAQ,qBAAA,EAAsB,CAAE,KAAK,CAAA;AAAA,EACxE,GAAG,CAAC,UAAA,EAAY,OAAO,KAAA,EAAO,YAAA,EAAc,mBAAmB,CAAC,CAAA;AAMhE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,UAAA,IAAc,CAAC,YAAA,EAAc,OAAA,EAAS;AAE3C,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,CAAA,OAAA,KAAW;AAC7C,MAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,CAAC,CAAA,EAAG,WAAA,CAAY,KAAA;AAClC,MAAA,IAAI,MAAM,MAAA,EAAW;AAErB,MAAA,IAAI,QAAA,CAAS,OAAA,KAAY,IAAA,EAAM,oBAAA,CAAqB,SAAS,OAAO,CAAA;AACpE,MAAA,QAAA,CAAS,OAAA,GAAU,sBAAsB,MAAM;AAC7C,QAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AACnB,QAAA,mBAAA,CAAoB,CAAC,CAAA;AAAA,MACvB,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAED,IAAA,QAAA,CAAS,OAAA,CAAQ,aAAa,OAAO,CAAA;AACrC,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,UAAA,EAAW;AACpB,MAAA,IAAI,QAAA,CAAS,OAAA,KAAY,IAAA,EAAM,oBAAA,CAAqB,SAAS,OAAO,CAAA;AAAA,IACtE,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,YAAA,EAAc,mBAAmB,CAAC,CAAA;AAMlD,EAAA,MAAM,gBAAA,GAAmB,OAA8B,IAAI,CAAA;AAC3D,EAAA,MAAM,WAAA,GAAc,WAAA,CAAY,CAAC,EAAA,KAA8B;AAC7D,IAAA,gBAAA,CAAiB,SAAS,UAAA,EAAW;AACrC,IAAA,gBAAA,CAAiB,OAAA,GAAU,IAAA;AAC3B,IAAA,IAAI,MAAM,UAAA,EAAY;AACpB,MAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,MAAM;AACxC,QAAA,IAAI,QAAA,CAAS,OAAA,KAAY,IAAA,EAAM,oBAAA,CAAqB,SAAS,OAAO,CAAA;AACpE,QAAA,QAAA,CAAS,OAAA,GAAU,sBAAsB,MAAM;AAC7C,UAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AACnB,UAAA,sBAAA,CAAuB,OAAA,EAAQ;AAAA,QACjC,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AACD,MAAA,QAAA,CAAS,QAAQ,EAAE,CAAA;AACnB,MAAA,gBAAA,CAAiB,OAAA,GAAU,QAAA;AAAA,IAC7B;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAIf,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,CAAC,GAAA,KAAgB,CAAC,EAAA,KAA2B;AAC1E,IAAA,IAAI,EAAA,EAAI;AACN,MAAA,YAAA,CAAa,OAAA,CAAQ,GAAA,CAAI,GAAA,EAAK,EAAE,CAAA;AAAA,IAClC,CAAA,MAAO;AACL,MAAA,YAAA,CAAa,OAAA,CAAQ,OAAO,GAAG,CAAA;AAC/B,MAAA,aAAA,CAAc,OAAA,CAAQ,OAAO,GAAG,CAAA;AAAA,IAClC;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAIL,EAAA,MAAM,CAAC,WAAA,EAAa,SAAS,CAAA,GAAI,QAAQ,MAAM;AAC7C,IAAA,MAAMC,eAAuC,EAAC;AAC9C,IAAA,MAAMC,aAAqC,EAAC;AAE5C,IAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AACnB,MAAA,KAAA,CAAM,QAAQ,CAAC,IAAA,KAASD,YAAAA,CAAY,IAAA,CAAK,IAAI,CAAC,CAAA;AAC9C,MAAA,OAAO,CAACA,cAAaC,UAAS,CAAA;AAAA,IAChC;AAEA,IAAA,IAAI,KAAA,CAAM,aAAa,IAAA,EAAM;AAE3B,MAAA,MAAM,aAAA,uBAAoB,GAAA,EAAY;AACtC,MAAA,IAAI,YAAA,GAAe,CAAA;AACnB,MAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,QAAA,IAAI,MAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,EAAG,eAAe,WAAA,kBAAsC;AAC7E,UAAA,IAAI,eAAe,YAAA,EAAc;AAC/B,YAAA,aAAA,CAAc,GAAA,CAAI,KAAK,GAAG,CAAA;AAC1B,YAAA,YAAA,EAAA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,MAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,QAAA,MAAM,CAAA,GAAI,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,EAAG,UAAA;AAChC,QAAA,IAAI,CAAA,KAAM,6BAAwC,CAAA,KAAM,WAAA,oBAAwC,CAAC,aAAA,CAAc,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA,EAAI;AAC7H,UAAAA,UAAAA,CAAU,KAAK,IAAI,CAAA;AAAA,QACrB,CAAA,MAAO;AACL,UAAAD,YAAAA,CAAY,KAAK,IAAI,CAAA;AAAA,QACvB;AAAA,MACF;AAEA,MAAA,OAAO,CAACA,cAAaC,UAAS,CAAA;AAAA,IAChC;AAGA,IAAA,IAAI,SAAA,GAAoB,CAAA;AAExB,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,MAAM,iBAAA,GAAoB,KAAA,CAAM,QAAA,CAAS,UAAU,CAAA;AACnD,MAAA,IAAI,iBAAA,EAAmB;AAErB,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,MAAA,CAAO,CAAA,CAAA,KAAK,KAAA,CAAM,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA,EAAG,UAAA,KAAe,WAAA,iBAAoC,CAAE,MAAA;AAC/G,QAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,MAAA,CAAO,CAAA,CAAA,KAAK,KAAA,CAAM,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA,EAAG,UAAA,KAAe,UAAA,gBAAmC,CAAE,MAAA;AAC/G,QAAA,MAAM,mBAAmB,YAAA,GAAe,aAAA;AAExC,QAAA,IAAI,sBAAsB,KAAA,EAAO;AAC/B,UAAA,SAAA,GAAY,aAAA;AAAA,QACd,CAAA,MAAA,IAAW,CAAC,KAAA,CAAM,iBAAiB,CAAA,EAAG;AACpC,UAAA,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,gBAAA,IAAoB,oBAAoB,CAAA,CAAE,CAAA;AAAA,QACpE;AAAA,MACF;AAAA,IACF;AAGA,IAAA,CAAC,GAAG,KAAK,CAAA,CAAE,SAAQ,CAAE,OAAA,CAAQ,CAAC,IAAA,KAAS;AACrC,MAAA,MAAM,UAAA,GAAa,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AACtC,MAAA,IAAI,UAAA,CAAW,eAAe,UAAA,iBAAqC;AACjE,QAAAA,UAAAA,CAAU,QAAQ,IAAI,CAAA;AACtB,QAAA,EAAE,SAAA;AAAA,MACJ,CAAA,MAAA,IAAW,UAAA,CAAW,UAAA,KAAe,WAAA,kBAAsC;AACzE,QAAA,IAAI,YAAY,CAAA,EAAG;AACjB,UAAAA,UAAAA,CAAU,QAAQ,IAAI,CAAA;AACtB,UAAA,EAAE,SAAA;AAAA,QACJ,CAAA,MAAO;AACL,UAAAD,YAAAA,CAAY,QAAQ,IAAI,CAAA;AAAA,QAC1B;AAAA,MACF,CAAA,MAAO;AACL,QAAAA,YAAAA,CAAY,QAAQ,IAAI,CAAA;AAAA,MAC1B;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,CAACA,cAAaC,UAAS,CAAA;AAAA,EAChC,GAAG,CAAC,KAAA,EAAO,KAAA,EAAO,UAAA,EAAY,YAAY,CAAC,CAAA;AAE3C,EAAA,OAAO,EAAE,WAAA,EAAa,WAAA,EAAa,SAAA,EAAW,SAAA,EAAW,YAAY,WAAA,EAAY;AACnF","file":"chunk-AQSJDL63.mjs","sourcesContent":["\"use client\";\n\nimport { RefObject, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\";\n\nimport { ThActionEntry } from \"../ThActionsBar\";\n\nexport type ThCollapsibility = boolean | Record<string, number | \"all\">;\n\nexport enum ThCollapsibilityVisibility {\n always = \"always\",\n partially = \"partially\",\n overflow = \"overflow\"\n}\n\nexport interface CollapsiblePref {\n displayOrder: string[];\n collapse: ThCollapsibility;\n keys: {\n [key: string]: {\n [key: string]: any;\n visibility: ThCollapsibilityVisibility;\n };\n }\n}\n\nexport const useCollapsibility = (\n items: ThActionEntry<string>[],\n prefs: CollapsiblePref,\n breakpoint?: string,\n containerRef?: RefObject<HTMLElement | null>\n) => {\n const isSpaceFit = prefs.collapse === true;\n\n // --- Space-fit mode (collapse: true) ---\n // How many `partially` items currently fit in the bar.\n // MAX_SAFE_INTEGER = \"assume all fit\" — corrected by useLayoutEffect before first paint.\n const [partialInBar, setPartialInBar] = useState<number>(Number.MAX_SAFE_INTEGER);\n const lastCountRef = useRef<number>(Number.MAX_SAFE_INTEGER);\n\n // Ghost element tracking — spans wrapping each item in the hidden measurement clone.\n // The ghost always renders all items, so widths are stable regardless of bar state.\n const keyToElement = useRef(new Map<string, HTMLElement>());\n const itemWidthsRef = useRef(new Map<string, number>());\n\n // Inputs for computeLayout, kept in refs so the function is stable\n const alwaysKeysRef = useRef<string[]>([]);\n const orderedPartialKeysRef = useRef<string[]>([]);\n const hasOverflowRef = useRef<boolean>(false);\n const columnGapRef = useRef<number>(0);\n\n // Shared rAF handle — both ResizeObservers dequeue into the same frame slot.\n const rafIdRef = useRef<number | null>(null);\n\n // Tracks the last spec so categorization is skipped when nothing meaningful changed.\n const specRef = useRef<string>(\"\");\n\n // computeLayout reads only refs — no closure over props, truly stable.\n // Called from remeasureAndCompute after fresh DOM reads.\n const computeLayout = useCallback((containerWidth: number) => {\n if (!containerWidth) return;\n\n const widths = itemWidthsRef.current;\n const alwaysKeys = alwaysKeysRef.current;\n const partialKeys = orderedPartialKeysRef.current;\n const gap = columnGapRef.current;\n\n const N_a = alwaysKeys.length;\n const alwaysTotal = alwaysKeys.reduce((s, k) => s + (widths.get(k) ?? 0), 0);\n const partialWidths = partialKeys.map(k => widths.get(k) ?? 0);\n const partialTotal = partialWidths.reduce((s, w) => s + w, 0);\n\n let newCount: number;\n\n // Check if everything fits without an overflow menu trigger\n const noMenuTotal = alwaysTotal + partialTotal + gap * Math.max(0, N_a + partialKeys.length - 1);\n if (!hasOverflowRef.current && noMenuTotal <= containerWidth) {\n newCount = partialKeys.length;\n } else {\n // Need the overflow menu trigger — use first measured width as proxy\n // (all icon buttons are the same size)\n const menuW = widths.values().next().value ?? 0;\n if (!menuW) return;\n\n let count = 0, usedPartial = 0;\n for (const w of partialWidths) {\n // Items in bar at this step: N_a always + count partial + 1 new partial + 1 menu trigger\n const totalGap = gap * Math.max(0, N_a + count + 1);\n if (alwaysTotal + usedPartial + w + menuW + totalGap <= containerWidth) {\n usedPartial += w;\n count++;\n } else {\n break;\n }\n }\n newCount = count;\n }\n\n if (newCount !== lastCountRef.current) {\n lastCountRef.current = newCount;\n setPartialInBar(newCount);\n }\n }, []);\n\n // Re-measures all ghost item widths and the container gap, then calls computeLayout.\n // getBoundingClientRect and getComputedStyle are cheap when called from a rAF callback\n // or useLayoutEffect (layout is already computed by the browser at those points).\n // Passing containerWidth avoids a second getBoundingClientRect on the container when\n // the caller already has it (e.g. from ResizeObserver contentRect).\n const remeasureAndCompute = useCallback((containerWidth?: number) => {\n if (!containerRef?.current) return;\n for (const [key, el] of keyToElement.current) {\n itemWidthsRef.current.set(key, el.getBoundingClientRect().width);\n }\n columnGapRef.current = parseFloat(getComputedStyle(containerRef.current).columnGap) || 0;\n computeLayout(containerWidth ?? containerRef.current.getBoundingClientRect().width);\n }, [containerRef, computeLayout]);\n\n // Kept in a ref so the ghost observer's rAF closure is always current\n // without the observer needing to re-subscribe when the function identity changes.\n const remeasureAndComputeRef = useRef(remeasureAndCompute);\n useLayoutEffect(() => { remeasureAndComputeRef.current = remeasureAndCompute; }, [remeasureAndCompute]);\n\n // Categorize items by visibility and do initial measurement before first paint.\n // useLayoutEffect runs synchronously after DOM mutations — so the initial\n // correction happens before the user sees anything.\n // The spec guard skips the effect when items/prefs object references are unstable\n // but nothing meaningful changed, UNLESS widths haven't been populated yet\n // (ghost elements not yet measured on first mount).\n useLayoutEffect(() => {\n if (!isSpaceFit || !containerRef?.current) return;\n\n const spec = items.map(i => `${i.key}:${prefs.keys[i.key]?.visibility ?? \"\"}`).join(\",\");\n const widthsMissing = items.some(i => !(itemWidthsRef.current.get(i.key) ?? 0));\n if (spec === specRef.current && !widthsMissing) return;\n specRef.current = spec;\n\n const always: string[] = [], partial: string[] = [];\n let hasOverflow = false;\n\n for (const item of items) {\n const v = prefs.keys[item.key]?.visibility;\n if (v === ThCollapsibilityVisibility.overflow) hasOverflow = true;\n else if (v === ThCollapsibilityVisibility.always) always.push(item.key);\n else partial.push(item.key);\n }\n\n alwaysKeysRef.current = always;\n orderedPartialKeysRef.current = partial;\n hasOverflowRef.current = hasOverflow;\n\n remeasureAndCompute(containerRef.current.getBoundingClientRect().width);\n }, [isSpaceFit, items, prefs, containerRef, remeasureAndCompute]);\n\n // Container ResizeObserver — fires when the container width changes.\n // Batched via rAF so we compute at most once per frame, not once per pixel.\n // Re-measures item widths each time so icon size changes (e.g. zoom) that also\n // cause a container reflow are picked up automatically.\n useEffect(() => {\n if (!isSpaceFit || !containerRef?.current) return;\n\n const observer = new ResizeObserver(entries => {\n const w = entries[0]?.contentRect.width;\n if (w === undefined) return;\n\n if (rafIdRef.current !== null) cancelAnimationFrame(rafIdRef.current);\n rafIdRef.current = requestAnimationFrame(() => {\n rafIdRef.current = null;\n remeasureAndCompute(w);\n });\n });\n\n observer.observe(containerRef.current);\n return () => {\n observer.disconnect();\n if (rafIdRef.current !== null) cancelAnimationFrame(rafIdRef.current);\n };\n }, [isSpaceFit, containerRef, remeasureAndCompute]);\n\n // Ghost wrapper ResizeObserver — fires when icon sizes change independently of\n // container width (e.g. app-level zoom on a fixed-width container).\n // Implemented as a callback ref so the observer is set up directly on mount\n // without a separate state variable or useEffect dependency on a mutable ref.\n const ghostObserverRef = useRef<ResizeObserver | null>(null);\n const getGhostRef = useCallback((el: HTMLDivElement | null) => {\n ghostObserverRef.current?.disconnect();\n ghostObserverRef.current = null;\n if (el && isSpaceFit) {\n const observer = new ResizeObserver(() => {\n if (rafIdRef.current !== null) cancelAnimationFrame(rafIdRef.current);\n rafIdRef.current = requestAnimationFrame(() => {\n rafIdRef.current = null;\n remeasureAndComputeRef.current();\n });\n });\n observer.observe(el);\n ghostObserverRef.current = observer;\n }\n }, [isSpaceFit]);\n\n // Ref callback factory — attaches to ghost spans for width measurement.\n // Harmless noop in other modes.\n const getItemRef = useCallback((key: string) => (el: HTMLElement | null) => {\n if (el) {\n keyToElement.current.set(key, el);\n } else {\n keyToElement.current.delete(key);\n itemWidthsRef.current.delete(key);\n }\n }, []);\n\n // --- Triage ---\n\n const [actionIcons, menuItems] = useMemo(() => {\n const actionIcons: ThActionEntry<string>[] = [];\n const menuItems: ThActionEntry<string>[] = [];\n\n if (!prefs.collapse) {\n items.forEach((item) => actionIcons.push(item));\n return [actionIcons, menuItems];\n }\n\n if (prefs.collapse === true) {\n // Build the set of partial keys that fit in the bar (first N in displayOrder)\n const barPartialSet = new Set<string>();\n let partialCount = 0;\n for (const item of items) {\n if (prefs.keys[item.key]?.visibility === ThCollapsibilityVisibility.partially) {\n if (partialCount < partialInBar) {\n barPartialSet.add(item.key);\n partialCount++;\n }\n }\n }\n\n for (const item of items) {\n const v = prefs.keys[item.key]?.visibility;\n if (v === ThCollapsibilityVisibility.overflow || (v === ThCollapsibilityVisibility.partially && !barPartialSet.has(item.key))) {\n menuItems.push(item);\n } else {\n actionIcons.push(item);\n }\n }\n\n return [actionIcons, menuItems];\n }\n\n // collapse: Record — breakpoint-based triage (existing logic)\n let countdown: number = 0;\n\n if (breakpoint) {\n const prefForBreakpoint = prefs.collapse[breakpoint];\n if (prefForBreakpoint) {\n // `always` items are never collapsed, so count only partially + overflow items\n const partialCount = items.filter(i => prefs.keys[i.key]?.visibility === ThCollapsibilityVisibility.partially).length;\n const overflowCount = items.filter(i => prefs.keys[i.key]?.visibility === ThCollapsibilityVisibility.overflow).length;\n const collapsibleCount = partialCount + overflowCount;\n\n if (prefForBreakpoint === \"all\") {\n countdown = overflowCount;\n } else if (!isNaN(prefForBreakpoint)) {\n countdown = Math.max(0, collapsibleCount - (prefForBreakpoint - 1));\n }\n }\n }\n\n // Creating a shallow copy so that actionsOrder doesn't mutate between rerenders\n [...items].reverse().forEach((item) => {\n const actionPref = prefs.keys[item.key];\n if (actionPref.visibility === ThCollapsibilityVisibility.overflow) {\n menuItems.unshift(item);\n --countdown;\n } else if (actionPref.visibility === ThCollapsibilityVisibility.partially) {\n if (countdown > 0) {\n menuItems.unshift(item);\n --countdown;\n } else {\n actionIcons.unshift(item);\n }\n } else {\n actionIcons.unshift(item);\n }\n });\n\n return [actionIcons, menuItems];\n }, [items, prefs, breakpoint, partialInBar]);\n\n return { ActionIcons: actionIcons, MenuItems: menuItems, getItemRef, getGhostRef };\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useGlobalPreferences } from './chunk-AE6P4KJB.mjs';
|
|
2
|
-
import { i18n, initI18n } from './chunk-
|
|
2
|
+
import { i18n, initI18n } from './chunk-2NCN2AG2.mjs';
|
|
3
3
|
import { I18nextProvider } from 'react-i18next';
|
|
4
4
|
export { Trans } from 'react-i18next';
|
|
5
5
|
import { useState, useEffect } from 'react';
|
|
@@ -36,5 +36,5 @@ var ThI18nProvider = ({
|
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
export { ThI18nProvider };
|
|
39
|
-
//# sourceMappingURL=chunk-
|
|
40
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
//# sourceMappingURL=chunk-DQDOOTCE.mjs.map
|
|
40
|
+
//# sourceMappingURL=chunk-DQDOOTCE.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/i18n/ThI18nProvider.tsx"],"names":[],"mappings":";;;;;;;AAYO,IAAM,iBAAiB,CAAC;AAAA,EAC7B,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA2B;AACzB,EAAA,MAAM,EAAE,WAAA,EAAa,EAAE,MAAA,EAAO,KAAM,oBAAA,EAAqB;AACzD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAA,CAAS,KAAK,aAAa,CAAA;AAErE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,KAAK,aAAA,EAAe;AACvB,MAAA,QAAA,CAAS;AAAA,QACP,GAAG,OAAA;AAAA,QACH,GAAA,EAAK,UAAU,OAAA,CAAQ;AAAA,OACxB,CAAA,CAAE,IAAA,CAAK,MAAM,gBAAA,CAAiB,IAAI,CAAC,CAAA;AAAA,IACtC;AAAA,EACF,CAAC,CAAA;AAED,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,iBAAiB,MAAA,EAAQ;AAC3B,MAAA,IAAA,CAAK,eAAe,MAAM,CAAA;AAAA,IAC5B;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,aAAa,CAAC,CAAA;AAE1B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAA,EAAe;AACpB,IAAA,MAAM,IAAA,GAAO,MAAA,IAAU,IAAA,CAAK,gBAAA,IAAoB,KAAK,QAAA,IAAY,IAAA;AACjE,IAAA,QAAA,CAAS,gBAAgB,IAAA,GAAO,IAAA;AAAA,EAClC,CAAA,EAAG,CAAC,MAAA,EAAQ,aAAa,CAAC,CAAA;AAE1B,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBAAO,GAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAgB,QAAA,EAAU,CAAA;AACpD","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/i18n/ThI18nProvider.tsx"],"names":[],"mappings":";;;;;;;AAYO,IAAM,iBAAiB,CAAC;AAAA,EAC7B,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA2B;AACzB,EAAA,MAAM,EAAE,WAAA,EAAa,EAAE,MAAA,EAAO,KAAM,oBAAA,EAAqB;AACzD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAA,CAAS,KAAK,aAAa,CAAA;AAErE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,KAAK,aAAA,EAAe;AACvB,MAAA,QAAA,CAAS;AAAA,QACP,GAAG,OAAA;AAAA,QACH,GAAA,EAAK,UAAU,OAAA,CAAQ;AAAA,OACxB,CAAA,CAAE,IAAA,CAAK,MAAM,gBAAA,CAAiB,IAAI,CAAC,CAAA;AAAA,IACtC;AAAA,EACF,CAAC,CAAA;AAED,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,iBAAiB,MAAA,EAAQ;AAC3B,MAAA,IAAA,CAAK,eAAe,MAAM,CAAA;AAAA,IAC5B;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,aAAa,CAAC,CAAA;AAE1B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAA,EAAe;AACpB,IAAA,MAAM,IAAA,GAAO,MAAA,IAAU,IAAA,CAAK,gBAAA,IAAoB,KAAK,QAAA,IAAY,IAAA;AACjE,IAAA,QAAA,CAAS,gBAAgB,IAAA,GAAO,IAAA;AAAA,EAClC,CAAA,EAAG,CAAC,MAAA,EAAQ,aAAa,CAAC,CAAA;AAE1B,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBAAO,GAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAgB,QAAA,EAAU,CAAA;AACpD","file":"chunk-DQDOOTCE.mjs","sourcesContent":["\"use client\";\n\nimport React, { ReactNode, useEffect, useState } from \"react\";\nimport { I18nextProvider } from \"react-i18next\";\nimport { i18n, initI18n } from \"./config\";\nimport { InitOptions } from \"i18next\";\nimport { useGlobalPreferences } from \"@/preferences/hooks/useGlobalPreferences\";\n\nexport type ThI18nProviderProps = {\n children: ReactNode;\n} & Partial<InitOptions>;\n\nexport const ThI18nProvider = ({\n children,\n ...options\n}: ThI18nProviderProps) => {\n const { preferences: { locale } } = useGlobalPreferences();\n const [isInitialized, setIsInitialized] = useState(i18n.isInitialized);\n \n useEffect(() => {\n if (!i18n.isInitialized) { \n initI18n({\n ...options,\n lng: locale || options.lng,\n }).then(() => setIsInitialized(true));\n }\n });\n\n useEffect(() => {\n if (isInitialized && locale) {\n i18n.changeLanguage(locale);\n }\n }, [locale, isInitialized]);\n\n useEffect(() => {\n if (!isInitialized) return;\n const lang = locale || i18n.resolvedLanguage || i18n.language || \"en\";\n document.documentElement.lang = lang;\n }, [locale, isInitialized]);\n\n if (!isInitialized) {\n return null;\n }\n\n return <I18nextProvider i18n={ i18n }>{ children }</I18nextProvider>;\n};\n\nexport default ThI18nProvider;\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { useNavigator, StatefulActionIcon, createAudioDefaultPlugin, usePositionStorage, NavigatorProvider, StatefulDockingWrapper, useReaderHeaderBase, StatefulBackLink, thorium_web_reader_header_default, StatefulCollapsibleActionsBar, thorium_web_overflow_default } from './chunk-
|
|
1
|
+
import { useNavigator, StatefulActionIcon, createAudioDefaultPlugin, usePositionStorage, NavigatorProvider, StatefulDockingWrapper, useReaderHeaderBase, StatefulBackLink, thorium_web_reader_header_default, StatefulCollapsibleActionsBar, thorium_web_overflow_default } from './chunk-MSHUPSBI.mjs';
|
|
2
2
|
import { useAudioNavigator, useDocumentTitle, useAudioSettingsCache } from './chunk-SZAVAQ6S.mjs';
|
|
3
|
-
import { setTocEntry, setAdjacentTimelineItems, setSleepTimerOnFragmentEnd, setRemotePlaybackState, setStatus, setSeekableRanges, setSeeking, setStalled, setSleepTimerOnTrackEnd, setTrackReady, setPublicationStart, setPublicationEnd, debounce, setLoading } from './chunk-
|
|
3
|
+
import { setTocEntry, setAdjacentTimelineItems, setSleepTimerOnFragmentEnd, setRemotePlaybackState, setStatus, setSeekableRanges, setSeeking, setStalled, setSleepTimerOnTrackEnd, setTrackReady, setPublicationStart, setPublicationEnd, debounce, setLoading } from './chunk-YEVLT3AV.mjs';
|
|
4
4
|
import { findTocItemByHref } from './chunk-TEZB4ULX.mjs';
|
|
5
|
-
import { useAudioPreferences, resolveAudioContentProtectionConfig, proxyUrl } from './chunk-
|
|
5
|
+
import { useAudioPreferences, resolveAudioContentProtectionConfig, proxyUrl } from './chunk-OD75GC5N.mjs';
|
|
6
6
|
import { useAppSelector, useAppDispatch } from './chunk-A575ZW4A.mjs';
|
|
7
|
-
import { ThActionsBar, ThAudioProgress, usePlugins, ThPluginRegistry, ThPluginProvider } from './chunk-
|
|
8
|
-
import { useI18n } from './chunk-
|
|
7
|
+
import { ThActionsBar, ThAudioProgress, usePlugins, ThPluginRegistry, ThPluginProvider } from './chunk-ETLIGONP.mjs';
|
|
8
|
+
import { useI18n } from './chunk-2NCN2AG2.mjs';
|
|
9
9
|
import { useCallback, useState, useMemo, useLayoutEffect, useRef, useEffect, Fragment as Fragment$1 } from 'react';
|
|
10
10
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
11
11
|
import { Link, Locator, LocatorLocations } from '@readium/shared';
|
|
@@ -574,7 +574,8 @@ var StatefulPlayer = ({
|
|
|
574
574
|
localDataKey,
|
|
575
575
|
plugins,
|
|
576
576
|
positionStorage,
|
|
577
|
-
coverUrl
|
|
577
|
+
coverUrl,
|
|
578
|
+
containerRefSetter
|
|
578
579
|
}) => {
|
|
579
580
|
const [pluginsRegistered, setPluginsRegistered] = useState(false);
|
|
580
581
|
useLayoutEffect(() => {
|
|
@@ -590,9 +591,9 @@ var StatefulPlayer = ({
|
|
|
590
591
|
if (!pluginsRegistered) {
|
|
591
592
|
return null;
|
|
592
593
|
}
|
|
593
|
-
return /* @__PURE__ */ jsx(ThPluginProvider, { children: /* @__PURE__ */ jsx(StatefulPlayerInner, { publication, localDataKey, positionStorage, coverUrl }) });
|
|
594
|
+
return /* @__PURE__ */ jsx(ThPluginProvider, { children: /* @__PURE__ */ jsx(StatefulPlayerInner, { publication, localDataKey, positionStorage, coverUrl, containerRefSetter }) });
|
|
594
595
|
};
|
|
595
|
-
var StatefulPlayerInner = ({ publication, localDataKey, positionStorage, coverUrl }) => {
|
|
596
|
+
var StatefulPlayerInner = ({ publication, localDataKey, positionStorage, coverUrl, containerRefSetter }) => {
|
|
596
597
|
const { preferences } = useAudioPreferences();
|
|
597
598
|
const { t } = useI18n();
|
|
598
599
|
const wrapperRef = useRef(null);
|
|
@@ -833,7 +834,7 @@ var StatefulPlayerInner = ({ publication, localDataKey, positionStorage, coverUr
|
|
|
833
834
|
observer.disconnect();
|
|
834
835
|
};
|
|
835
836
|
}, [isExpanded]);
|
|
836
|
-
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(NavigatorProvider, { mediaNavigator: audioNavigator, children: /* @__PURE__ */ jsx("main", { className: thorium_web_audio_app_default.main, children: /* @__PURE__ */ jsx(StatefulDockingWrapper, { children: /* @__PURE__ */ jsxs("div", { className: thorium_web_audio_app_default.shell, children: [
|
|
837
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(NavigatorProvider, { mediaNavigator: audioNavigator, children: /* @__PURE__ */ jsx("main", { className: thorium_web_audio_app_default.main, children: /* @__PURE__ */ jsx(StatefulDockingWrapper, { children: /* @__PURE__ */ jsxs("div", { ref: containerRefSetter, className: thorium_web_audio_app_default.shell, children: [
|
|
837
838
|
/* @__PURE__ */ jsx(
|
|
838
839
|
StatefulPlayerHeader,
|
|
839
840
|
{
|
|
@@ -857,5 +858,5 @@ var StatefulPlayerInner = ({ publication, localDataKey, positionStorage, coverUr
|
|
|
857
858
|
};
|
|
858
859
|
|
|
859
860
|
export { StatefulAudioMediaActions, StatefulAudioPlaybackControls, StatefulAudioProgressBar, StatefulNextButton, StatefulPlayPauseButton, StatefulPlayer, StatefulPreviousButton, StatefulSkipBackwardButton, StatefulSkipForwardButton };
|
|
860
|
-
//# sourceMappingURL=chunk-
|
|
861
|
-
//# sourceMappingURL=chunk-
|
|
861
|
+
//# sourceMappingURL=chunk-E2JEGVVE.mjs.map
|
|
862
|
+
//# sourceMappingURL=chunk-E2JEGVVE.mjs.map
|