@yahoo/uds-mobile 2.23.3 → 2.24.0-beta.10
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 +41 -13
- package/dist/bin/automated-config/dist/generated/generatedConfigs.mjs +92 -46
- package/dist/components/Avatar/AvatarIcon.cjs +8 -2
- package/dist/components/Avatar/AvatarIcon.d.cts.map +1 -1
- package/dist/components/Avatar/AvatarIcon.d.ts.map +1 -1
- package/dist/components/Avatar/AvatarIcon.js +9 -3
- package/dist/components/Avatar/AvatarIcon.js.map +1 -1
- package/dist/components/Avatar/AvatarImage.cjs +9 -2
- package/dist/components/Avatar/AvatarImage.d.cts.map +1 -1
- package/dist/components/Avatar/AvatarImage.d.ts.map +1 -1
- package/dist/components/Avatar/AvatarImage.js +10 -3
- package/dist/components/Avatar/AvatarImage.js.map +1 -1
- package/dist/components/Avatar/AvatarText.cjs +8 -2
- package/dist/components/Avatar/AvatarText.d.cts.map +1 -1
- package/dist/components/Avatar/AvatarText.d.ts.map +1 -1
- package/dist/components/Avatar/AvatarText.js +9 -3
- package/dist/components/Avatar/AvatarText.js.map +1 -1
- package/dist/components/Avatar/types.d.cts +7 -3
- package/dist/components/Avatar/types.d.cts.map +1 -1
- package/dist/components/Avatar/types.d.ts +7 -3
- package/dist/components/Avatar/types.d.ts.map +1 -1
- package/dist/components/Avatar/useAvatarFontScale.cjs +16 -0
- package/dist/components/Avatar/useAvatarFontScale.d.cts +7 -0
- package/dist/components/Avatar/useAvatarFontScale.d.cts.map +1 -0
- package/dist/components/Avatar/useAvatarFontScale.d.ts +7 -0
- package/dist/components/Avatar/useAvatarFontScale.d.ts.map +1 -0
- package/dist/components/Avatar/useAvatarFontScale.js +16 -0
- package/dist/components/Avatar/useAvatarFontScale.js.map +1 -0
- package/dist/components/Avatar/utils.cjs +9 -6
- package/dist/components/Avatar/utils.d.cts +2 -2
- package/dist/components/Avatar/utils.d.cts.map +1 -1
- package/dist/components/Avatar/utils.d.ts +2 -2
- package/dist/components/Avatar/utils.d.ts.map +1 -1
- package/dist/components/Avatar/utils.js +9 -6
- package/dist/components/Avatar/utils.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.cjs +1 -1
- package/dist/components/BottomSheet/BottomSheet.js +1 -1
- package/dist/components/Button/buttonTheme.cjs +31 -9
- package/dist/components/Button/buttonTheme.d.cts +24 -5
- package/dist/components/Button/buttonTheme.d.cts.map +1 -1
- package/dist/components/Button/buttonTheme.d.ts +24 -5
- package/dist/components/Button/buttonTheme.d.ts.map +1 -1
- package/dist/components/Button/buttonTheme.js +31 -10
- package/dist/components/Button/buttonTheme.js.map +1 -1
- package/dist/components/Button.cjs +35 -8
- package/dist/components/Button.d.cts +7 -0
- package/dist/components/Button.d.cts.map +1 -1
- package/dist/components/Button.d.ts +7 -0
- package/dist/components/Button.d.ts.map +1 -1
- package/dist/components/Button.js +35 -8
- package/dist/components/Button.js.map +1 -1
- package/dist/components/Checkbox.cjs +42 -9
- package/dist/components/Checkbox.d.cts +7 -0
- package/dist/components/Checkbox.d.cts.map +1 -1
- package/dist/components/Checkbox.d.ts +7 -0
- package/dist/components/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox.js +42 -9
- package/dist/components/Checkbox.js.map +1 -1
- package/dist/components/Chip/ChipBase.cjs +31 -14
- package/dist/components/Chip/ChipBase.d.cts.map +1 -1
- package/dist/components/Chip/ChipBase.d.ts.map +1 -1
- package/dist/components/Chip/ChipBase.js +31 -14
- package/dist/components/Chip/ChipBase.js.map +1 -1
- package/dist/components/Chip/ChipDismissible.cjs +3 -1
- package/dist/components/Chip/ChipDismissible.js +3 -1
- package/dist/components/Chip/ChipDismissible.js.map +1 -1
- package/dist/components/Chip/types.d.cts +7 -0
- package/dist/components/Chip/types.d.cts.map +1 -1
- package/dist/components/Chip/types.d.ts +7 -0
- package/dist/components/Chip/types.d.ts.map +1 -1
- package/dist/components/Icon.cjs +24 -5
- package/dist/components/Icon.d.cts +11 -2
- package/dist/components/Icon.d.cts.map +1 -1
- package/dist/components/Icon.d.ts +11 -2
- package/dist/components/Icon.d.ts.map +1 -1
- package/dist/components/Icon.js +24 -5
- package/dist/components/Icon.js.map +1 -1
- package/dist/components/IconButton.cjs +17 -6
- package/dist/components/IconButton.d.cts +6 -0
- package/dist/components/IconButton.d.cts.map +1 -1
- package/dist/components/IconButton.d.ts +6 -0
- package/dist/components/IconButton.d.ts.map +1 -1
- package/dist/components/IconButton.js +18 -7
- package/dist/components/IconButton.js.map +1 -1
- package/dist/components/Input.cjs +56 -18
- package/dist/components/Input.d.cts +5 -0
- package/dist/components/Input.d.cts.map +1 -1
- package/dist/components/Input.d.ts +5 -0
- package/dist/components/Input.d.ts.map +1 -1
- package/dist/components/Input.js +56 -18
- package/dist/components/Input.js.map +1 -1
- package/dist/components/InputHelpText.cjs +7 -1
- package/dist/components/InputHelpText.d.cts +2 -0
- package/dist/components/InputHelpText.d.cts.map +1 -1
- package/dist/components/InputHelpText.d.ts +2 -0
- package/dist/components/InputHelpText.d.ts.map +1 -1
- package/dist/components/InputHelpText.js +7 -1
- package/dist/components/InputHelpText.js.map +1 -1
- package/dist/components/Link.cjs +13 -1
- package/dist/components/Link.d.cts +7 -0
- package/dist/components/Link.d.cts.map +1 -1
- package/dist/components/Link.d.ts +7 -0
- package/dist/components/Link.d.ts.map +1 -1
- package/dist/components/Link.js +13 -1
- package/dist/components/Link.js.map +1 -1
- package/dist/components/Pagination/Pagination.cjs +18 -10
- package/dist/components/Pagination/Pagination.d.cts +2 -0
- package/dist/components/Pagination/Pagination.d.cts.map +1 -1
- package/dist/components/Pagination/Pagination.d.ts +2 -0
- package/dist/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/components/Pagination/Pagination.js +18 -10
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Pagination/PaginationEllipsis.cjs +8 -2
- package/dist/components/Pagination/PaginationEllipsis.d.cts.map +1 -1
- package/dist/components/Pagination/PaginationEllipsis.d.ts.map +1 -1
- package/dist/components/Pagination/PaginationEllipsis.js +9 -3
- package/dist/components/Pagination/PaginationEllipsis.js.map +1 -1
- package/dist/components/Pagination/PaginationItem.cjs +2 -1
- package/dist/components/Pagination/PaginationItem.js +2 -1
- package/dist/components/Pagination/PaginationItem.js.map +1 -1
- package/dist/components/Pagination/PaginationLink.cjs +2 -1
- package/dist/components/Pagination/PaginationLink.js +2 -1
- package/dist/components/Pagination/PaginationLink.js.map +1 -1
- package/dist/components/Pagination/PaginationNext.cjs +3 -1
- package/dist/components/Pagination/PaginationNext.js +3 -1
- package/dist/components/Pagination/PaginationNext.js.map +1 -1
- package/dist/components/Pagination/PaginationPrev.cjs +3 -1
- package/dist/components/Pagination/PaginationPrev.js +3 -1
- package/dist/components/Pagination/PaginationPrev.js.map +1 -1
- package/dist/components/Pagination/paginationContext.d.cts +2 -0
- package/dist/components/Pagination/paginationContext.d.cts.map +1 -1
- package/dist/components/Pagination/paginationContext.d.ts +2 -0
- package/dist/components/Pagination/paginationContext.d.ts.map +1 -1
- package/dist/components/Pagination/paginationContext.js.map +1 -1
- package/dist/components/Pagination/usePaginationControlStyles.cjs +8 -1
- package/dist/components/Pagination/usePaginationControlStyles.d.cts.map +1 -1
- package/dist/components/Pagination/usePaginationControlStyles.d.ts.map +1 -1
- package/dist/components/Pagination/usePaginationControlStyles.js +9 -2
- package/dist/components/Pagination/usePaginationControlStyles.js.map +1 -1
- package/dist/components/Radio/Radio.cjs +30 -11
- package/dist/components/Radio/Radio.d.cts +7 -0
- package/dist/components/Radio/Radio.d.cts.map +1 -1
- package/dist/components/Radio/Radio.d.ts +7 -0
- package/dist/components/Radio/Radio.d.ts.map +1 -1
- package/dist/components/Radio/Radio.js +30 -11
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Select/Select.cjs +29 -6
- package/dist/components/Select/Select.d.cts +2 -0
- package/dist/components/Select/Select.d.cts.map +1 -1
- package/dist/components/Select/Select.d.ts +2 -0
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +29 -6
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Select/SelectContent.cjs +31 -23
- package/dist/components/Select/SelectContent.d.cts.map +1 -1
- package/dist/components/Select/SelectContent.d.ts.map +1 -1
- package/dist/components/Select/SelectContent.js +32 -24
- package/dist/components/Select/SelectContent.js.map +1 -1
- package/dist/components/Select/SelectItem.cjs +25 -15
- package/dist/components/Select/SelectItem.d.cts.map +1 -1
- package/dist/components/Select/SelectItem.d.ts.map +1 -1
- package/dist/components/Select/SelectItem.js +25 -15
- package/dist/components/Select/SelectItem.js.map +1 -1
- package/dist/components/Select/SelectTrigger.cjs +27 -13
- package/dist/components/Select/SelectTrigger.d.cts.map +1 -1
- package/dist/components/Select/SelectTrigger.d.ts.map +1 -1
- package/dist/components/Select/SelectTrigger.js +27 -13
- package/dist/components/Select/SelectTrigger.js.map +1 -1
- package/dist/components/Select/types.d.cts +2 -0
- package/dist/components/Select/types.d.cts.map +1 -1
- package/dist/components/Select/types.d.ts +2 -0
- package/dist/components/Select/types.d.ts.map +1 -1
- package/dist/components/Switch.cjs +48 -8
- package/dist/components/Switch.d.cts +7 -0
- package/dist/components/Switch.d.cts.map +1 -1
- package/dist/components/Switch.d.ts +7 -0
- package/dist/components/Switch.d.ts.map +1 -1
- package/dist/components/Switch.js +48 -8
- package/dist/components/Switch.js.map +1 -1
- package/dist/components/Tabs/Tab.cjs +17 -3
- package/dist/components/Tabs/Tab.d.cts.map +1 -1
- package/dist/components/Tabs/Tab.d.ts.map +1 -1
- package/dist/components/Tabs/Tab.js +17 -3
- package/dist/components/Tabs/Tab.js.map +1 -1
- package/dist/components/Tabs/Tabs.cjs +8 -3
- package/dist/components/Tabs/Tabs.d.cts +9 -1
- package/dist/components/Tabs/Tabs.d.cts.map +1 -1
- package/dist/components/Tabs/Tabs.d.ts +9 -1
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +8 -3
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/tabsContexts.d.cts +2 -0
- package/dist/components/Tabs/tabsContexts.d.cts.map +1 -1
- package/dist/components/Tabs/tabsContexts.d.ts +2 -0
- package/dist/components/Tabs/tabsContexts.d.ts.map +1 -1
- package/dist/components/Tabs/tabsContexts.js.map +1 -1
- package/dist/components/Text.cjs +9 -1
- package/dist/components/Text.d.cts +11 -2
- package/dist/components/Text.d.cts.map +1 -1
- package/dist/components/Text.d.ts +11 -2
- package/dist/components/Text.d.ts.map +1 -1
- package/dist/components/Text.js +9 -1
- package/dist/components/Text.js.map +1 -1
- package/dist/components/UDSProvider.cjs +6 -2
- package/dist/components/UDSProvider.d.cts +9 -0
- package/dist/components/UDSProvider.d.cts.map +1 -1
- package/dist/components/UDSProvider.d.ts +9 -0
- package/dist/components/UDSProvider.d.ts.map +1 -1
- package/dist/components/UDSProvider.js +6 -2
- package/dist/components/UDSProvider.js.map +1 -1
- package/dist/components/internal/Overlay/index.cjs +1 -1
- package/dist/components/internal/Overlay/index.js +1 -1
- package/dist/fontScaling/FontScalingContext.cjs +67 -0
- package/dist/fontScaling/FontScalingContext.d.cts +53 -0
- package/dist/fontScaling/FontScalingContext.d.cts.map +1 -0
- package/dist/fontScaling/FontScalingContext.d.ts +53 -0
- package/dist/fontScaling/FontScalingContext.d.ts.map +1 -0
- package/dist/fontScaling/FontScalingContext.js +63 -0
- package/dist/fontScaling/FontScalingContext.js.map +1 -0
- package/dist/fontScaling/androidNonlinearFontScaling.cjs +250 -0
- package/dist/fontScaling/androidNonlinearFontScaling.d.cts +7 -0
- package/dist/fontScaling/androidNonlinearFontScaling.d.cts.map +1 -0
- package/dist/fontScaling/androidNonlinearFontScaling.d.ts +7 -0
- package/dist/fontScaling/androidNonlinearFontScaling.d.ts.map +1 -0
- package/dist/fontScaling/androidNonlinearFontScaling.js +251 -0
- package/dist/fontScaling/androidNonlinearFontScaling.js.map +1 -0
- package/dist/fontScaling/constants.cjs +106 -0
- package/dist/fontScaling/constants.d.cts +60 -0
- package/dist/fontScaling/constants.d.cts.map +1 -0
- package/dist/fontScaling/constants.d.ts +60 -0
- package/dist/fontScaling/constants.d.ts.map +1 -0
- package/dist/fontScaling/constants.js +103 -0
- package/dist/fontScaling/constants.js.map +1 -0
- package/dist/fontScaling/index.cjs +14 -0
- package/dist/fontScaling/index.d.cts +8 -0
- package/dist/fontScaling/index.d.ts +8 -0
- package/dist/fontScaling/index.js +6 -0
- package/dist/fontScaling/resolveMaxFontSizeMultiplier.cjs +37 -0
- package/dist/fontScaling/resolveMaxFontSizeMultiplier.d.cts +35 -0
- package/dist/fontScaling/resolveMaxFontSizeMultiplier.d.cts.map +1 -0
- package/dist/fontScaling/resolveMaxFontSizeMultiplier.d.ts +35 -0
- package/dist/fontScaling/resolveMaxFontSizeMultiplier.d.ts.map +1 -0
- package/dist/fontScaling/resolveMaxFontSizeMultiplier.js +38 -0
- package/dist/fontScaling/resolveMaxFontSizeMultiplier.js.map +1 -0
- package/dist/fontScaling/types.cjs +1 -0
- package/dist/fontScaling/types.d.cts +54 -0
- package/dist/fontScaling/types.d.cts.map +1 -0
- package/dist/fontScaling/types.d.ts +54 -0
- package/dist/fontScaling/types.d.ts.map +1 -0
- package/dist/fontScaling/types.js +1 -0
- package/dist/fontScaling/useFontScale.cjs +58 -0
- package/dist/fontScaling/useFontScale.d.cts +12 -0
- package/dist/fontScaling/useFontScale.d.cts.map +1 -0
- package/dist/fontScaling/useFontScale.d.ts +12 -0
- package/dist/fontScaling/useFontScale.d.ts.map +1 -0
- package/dist/fontScaling/useFontScale.js +57 -0
- package/dist/fontScaling/useFontScale.js.map +1 -0
- package/dist/fontScaling/useMaxFontSizeMultiplier.cjs +24 -0
- package/dist/fontScaling/useMaxFontSizeMultiplier.d.cts +16 -0
- package/dist/fontScaling/useMaxFontSizeMultiplier.d.cts.map +1 -0
- package/dist/fontScaling/useMaxFontSizeMultiplier.d.ts +16 -0
- package/dist/fontScaling/useMaxFontSizeMultiplier.d.ts.map +1 -0
- package/dist/fontScaling/useMaxFontSizeMultiplier.js +24 -0
- package/dist/fontScaling/useMaxFontSizeMultiplier.js.map +1 -0
- package/dist/jest/mocks/react-native.cjs +19 -4
- package/dist/jest/mocks/react-native.d.cts +8 -5
- package/dist/jest/mocks/react-native.d.cts.map +1 -1
- package/dist/jest/mocks/react-native.d.ts +8 -5
- package/dist/jest/mocks/react-native.d.ts.map +1 -1
- package/dist/jest/mocks/react-native.js +18 -5
- package/dist/jest/mocks/react-native.js.map +1 -1
- package/dist/jest/mocks/styles.cjs +28 -1
- package/dist/jest/mocks/styles.d.cts.map +1 -1
- package/dist/jest/mocks/styles.d.ts.map +1 -1
- package/dist/jest/mocks/styles.js +28 -1
- package/dist/jest/mocks/styles.js.map +1 -1
- package/dist/jest/setup.cjs +4 -0
- package/dist/jest/setup.d.cts.map +1 -1
- package/dist/jest/setup.d.ts.map +1 -1
- package/dist/jest/setup.js +4 -0
- package/dist/jest/setup.js.map +1 -1
- package/dist/mobile/generated/fontMetrics.cjs +530 -530
- package/dist/mobile/generated/fontMetrics.js +530 -530
- package/dist/mobile/generated/fontMetrics.js.map +1 -1
- package/dist/portal.cjs +8 -2
- package/dist/portal.d.cts.map +1 -1
- package/dist/portal.d.ts.map +1 -1
- package/dist/portal.js +8 -2
- package/dist/portal.js.map +1 -1
- package/dist/types/dist/index.d.cts.map +1 -1
- package/dist/types/dist/index.d.ts.map +1 -1
- package/fonts/index.cjs +214 -214
- package/fonts/index.mjs +214 -214
- package/fonts/uds-icons.ttf +0 -0
- package/generated/fontMetrics.ts +530 -530
- package/generated/styles.d.ts +5 -28
- package/generated/unistyles.d.ts +0 -27
- package/package.json +11 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
|
|
2
|
+
import { TextVariant } from "../components/Text.js";
|
|
3
|
+
|
|
4
|
+
//#region src/fontScaling/types.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* A cap on OS font scaling for a piece of text.
|
|
7
|
+
*
|
|
8
|
+
* - `number` (>= 1) — text scales with the OS setting up to this multiplier
|
|
9
|
+
* - `null` — explicitly uncapped: text follows the OS setting with no limit
|
|
10
|
+
*/
|
|
11
|
+
type FontScalingCapValue = number | null;
|
|
12
|
+
/**
|
|
13
|
+
* App-level font-scaling configuration, applied via `UDSFontScalingProvider`
|
|
14
|
+
* (or the `fontScaling` prop on `UDSGestureProvider`).
|
|
15
|
+
*
|
|
16
|
+
* Resolution order for any piece of text: explicit component prop, then this
|
|
17
|
+
* config, then the built-in defaults in `DEFAULT_MAX_FONT_SIZE_MULTIPLIERS`.
|
|
18
|
+
*
|
|
19
|
+
* The config object should be identity-stable (a module constant or memoized)
|
|
20
|
+
* — every UDS text element reads it from context.
|
|
21
|
+
*/
|
|
22
|
+
interface FontScalingConfig {
|
|
23
|
+
/**
|
|
24
|
+
* Master switch for UDS-added font-scaling behavior. When `false`, native
|
|
25
|
+
* text keeps its pre-feature scaling behavior while UDS caps, Dynamic Type
|
|
26
|
+
* ramps, multicolor-icon scaling, and scale-aware geometry are disabled.
|
|
27
|
+
* Explicit component and native text props still apply.
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
enabled?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Fallback cap for any variant not listed in `variants`. Takes precedence
|
|
33
|
+
* over the built-in default table. For example, `default: 1.75` replaces the
|
|
34
|
+
* built-in 2x cap for body, label, and caption text unless a variant-specific
|
|
35
|
+
* override applies.
|
|
36
|
+
*/
|
|
37
|
+
default?: FontScalingCapValue;
|
|
38
|
+
/**
|
|
39
|
+
* Cap for control-internal text, icons, and geometry in Button, IconButton,
|
|
40
|
+
* Checkbox, Radio, Switch, Chip, Tabs, Input, Select, Avatar, and Pagination,
|
|
41
|
+
* plus standalone `Icon` glyphs and multicolor SVGs. Link resolves through
|
|
42
|
+
* its typography variant instead of the control cap.
|
|
43
|
+
* @default 2
|
|
44
|
+
*/
|
|
45
|
+
control?: FontScalingCapValue;
|
|
46
|
+
/**
|
|
47
|
+
* Per-variant caps. A base-variant key (e.g. `display1`) also covers its
|
|
48
|
+
* `/emphasized` twin unless the emphasized key is listed explicitly.
|
|
49
|
+
*/
|
|
50
|
+
variants?: Partial<Record<TextVariant, FontScalingCapValue>>;
|
|
51
|
+
}
|
|
52
|
+
//#endregion
|
|
53
|
+
export { type FontScalingCapValue, type FontScalingConfig };
|
|
54
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/fontScaling/types.ts"],"mappings":";;;;;;AAAsD;;;;KAQjD,mBAAA;AAAmB;;;;;;;;;;AAAA,UAYd,iBAAA;EAQR;;;;;;;EAAA,OAAA;EAoB0B;;;;;;EAb1B,OAAA,GAAU,mBAAA;;;;;;;;EAQV,OAAA,GAAU,mBAAA;;;;;EAKV,QAAA,GAAW,OAAA,CAAQ,MAAA,CAAO,WAAA,EAAa,mBAAA;AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
const require_fontScaling_FontScalingContext = require("./FontScalingContext.cjs");
|
|
5
|
+
const require_fontScaling_androidNonlinearFontScaling = require("./androidNonlinearFontScaling.cjs");
|
|
6
|
+
let react = require("react");
|
|
7
|
+
let react_native = require("react-native");
|
|
8
|
+
//#region src/fontScaling/useFontScale.ts
|
|
9
|
+
function subscribe(onStoreChange) {
|
|
10
|
+
const subscription = react_native.Dimensions.addEventListener("change", onStoreChange);
|
|
11
|
+
return () => subscription.remove();
|
|
12
|
+
}
|
|
13
|
+
function getFontScale() {
|
|
14
|
+
return react_native.Dimensions.get("window").fontScale;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The effective scale for `fontSize`, clamped to `[1, cap]`, for sizing
|
|
18
|
+
* containers around scaled text (e.g. a checkbox box growing with its
|
|
19
|
+
* checkmark).
|
|
20
|
+
*
|
|
21
|
+
* `cap` uses the same semantics as `maxFontSizeMultiplier`: a number >= 1
|
|
22
|
+
* caps the scale; `null`, `0`, or `undefined` leave it uncapped. The result
|
|
23
|
+
* is never below 1 so containers never shrink under their token metrics
|
|
24
|
+
* (font scales < 1 shrink text only, as today).
|
|
25
|
+
*
|
|
26
|
+
* Pass the SP size that the geometry accompanies on Android so this mirrors
|
|
27
|
+
* Android 14+'s nonlinear scaling. Omitting `fontSize` preserves the legacy
|
|
28
|
+
* scalar behavior for custom callers that do not know their base size.
|
|
29
|
+
* On iOS this follows the global text-size curve; accompanying text should
|
|
30
|
+
* omit `dynamicTypeRamp` so its native size uses the same multiplier.
|
|
31
|
+
*
|
|
32
|
+
* Subscribes to font-scale changes only — rotation does not re-render, and
|
|
33
|
+
* components re-render solely when the user changes the OS text size.
|
|
34
|
+
* Returns 1 when the nearest font-scaling provider has `enabled: false`.
|
|
35
|
+
*/
|
|
36
|
+
function useFontScaleValue(cap, fontSize, honorResolvedComponentOverride = false) {
|
|
37
|
+
const enabled = require_fontScaling_FontScalingContext.useFontScalingEnabled();
|
|
38
|
+
const fontScale = (0, react.useSyncExternalStore)(subscribe, getFontScale, getFontScale);
|
|
39
|
+
if (!enabled && !honorResolvedComponentOverride) return 1;
|
|
40
|
+
const effectiveCap = typeof cap === "number" && cap >= 1 ? cap : Number.POSITIVE_INFINITY;
|
|
41
|
+
const platformVersion = Number(react_native.Platform.Version);
|
|
42
|
+
const nativeScale = react_native.Platform.OS === "android" && platformVersion >= 34 && typeof fontSize === "number" && fontSize > 0 ? require_fontScaling_androidNonlinearFontScaling.convertAndroidSpToDp(fontSize, fontScale, platformVersion) / fontSize : fontScale;
|
|
43
|
+
return Math.max(1, Math.min(nativeScale, effectiveCap));
|
|
44
|
+
}
|
|
45
|
+
function useFontScale(cap, fontSize) {
|
|
46
|
+
return useFontScaleValue(cap, fontSize);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Internal component path. A resolved cap is defined under rollback mode only
|
|
50
|
+
* when it came from an explicit component prop, which the public contract says
|
|
51
|
+
* must continue to apply.
|
|
52
|
+
*/
|
|
53
|
+
function useComponentFontScale(cap, fontSize) {
|
|
54
|
+
return useFontScaleValue(cap, fontSize, cap !== void 0);
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
exports.useComponentFontScale = useComponentFontScale;
|
|
58
|
+
exports.useFontScale = useFontScale;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/fontScaling/useFontScale.d.ts
|
|
3
|
+
declare function useFontScale(cap?: number | null, fontSize?: number): number;
|
|
4
|
+
/**
|
|
5
|
+
* Internal component path. A resolved cap is defined under rollback mode only
|
|
6
|
+
* when it came from an explicit component prop, which the public contract says
|
|
7
|
+
* must continue to apply.
|
|
8
|
+
*/
|
|
9
|
+
declare function useComponentFontScale(cap?: number | null, fontSize?: number): number;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { useComponentFontScale, useFontScale };
|
|
12
|
+
//# sourceMappingURL=useFontScale.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFontScale.d.cts","names":[],"sources":["../../src/fontScaling/useFontScale.ts"],"mappings":";;iBA+DS,YAAA,CAAa,GAAA,kBAAqB,QAAA;;;;;;iBASlC,qBAAA,CAAsB,GAAA,kBAAqB,QAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/fontScaling/useFontScale.d.ts
|
|
3
|
+
declare function useFontScale(cap?: number | null, fontSize?: number): number;
|
|
4
|
+
/**
|
|
5
|
+
* Internal component path. A resolved cap is defined under rollback mode only
|
|
6
|
+
* when it came from an explicit component prop, which the public contract says
|
|
7
|
+
* must continue to apply.
|
|
8
|
+
*/
|
|
9
|
+
declare function useComponentFontScale(cap?: number | null, fontSize?: number): number;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { useComponentFontScale, useFontScale };
|
|
12
|
+
//# sourceMappingURL=useFontScale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFontScale.d.ts","names":[],"sources":["../../src/fontScaling/useFontScale.ts"],"mappings":";;iBA+DS,YAAA,CAAa,GAAA,kBAAqB,QAAA;;;;;;iBASlC,qBAAA,CAAsB,GAAA,kBAAqB,QAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
import { useFontScalingEnabled } from "./FontScalingContext.js";
|
|
3
|
+
import { convertAndroidSpToDp } from "./androidNonlinearFontScaling.js";
|
|
4
|
+
import { useSyncExternalStore } from "react";
|
|
5
|
+
import { Dimensions, Platform } from "react-native";
|
|
6
|
+
//#region src/fontScaling/useFontScale.ts
|
|
7
|
+
function subscribe(onStoreChange) {
|
|
8
|
+
const subscription = Dimensions.addEventListener("change", onStoreChange);
|
|
9
|
+
return () => subscription.remove();
|
|
10
|
+
}
|
|
11
|
+
function getFontScale() {
|
|
12
|
+
return Dimensions.get("window").fontScale;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The effective scale for `fontSize`, clamped to `[1, cap]`, for sizing
|
|
16
|
+
* containers around scaled text (e.g. a checkbox box growing with its
|
|
17
|
+
* checkmark).
|
|
18
|
+
*
|
|
19
|
+
* `cap` uses the same semantics as `maxFontSizeMultiplier`: a number >= 1
|
|
20
|
+
* caps the scale; `null`, `0`, or `undefined` leave it uncapped. The result
|
|
21
|
+
* is never below 1 so containers never shrink under their token metrics
|
|
22
|
+
* (font scales < 1 shrink text only, as today).
|
|
23
|
+
*
|
|
24
|
+
* Pass the SP size that the geometry accompanies on Android so this mirrors
|
|
25
|
+
* Android 14+'s nonlinear scaling. Omitting `fontSize` preserves the legacy
|
|
26
|
+
* scalar behavior for custom callers that do not know their base size.
|
|
27
|
+
* On iOS this follows the global text-size curve; accompanying text should
|
|
28
|
+
* omit `dynamicTypeRamp` so its native size uses the same multiplier.
|
|
29
|
+
*
|
|
30
|
+
* Subscribes to font-scale changes only — rotation does not re-render, and
|
|
31
|
+
* components re-render solely when the user changes the OS text size.
|
|
32
|
+
* Returns 1 when the nearest font-scaling provider has `enabled: false`.
|
|
33
|
+
*/
|
|
34
|
+
function useFontScaleValue(cap, fontSize, honorResolvedComponentOverride = false) {
|
|
35
|
+
const enabled = useFontScalingEnabled();
|
|
36
|
+
const fontScale = useSyncExternalStore(subscribe, getFontScale, getFontScale);
|
|
37
|
+
if (!enabled && !honorResolvedComponentOverride) return 1;
|
|
38
|
+
const effectiveCap = typeof cap === "number" && cap >= 1 ? cap : Number.POSITIVE_INFINITY;
|
|
39
|
+
const platformVersion = Number(Platform.Version);
|
|
40
|
+
const nativeScale = Platform.OS === "android" && platformVersion >= 34 && typeof fontSize === "number" && fontSize > 0 ? convertAndroidSpToDp(fontSize, fontScale, platformVersion) / fontSize : fontScale;
|
|
41
|
+
return Math.max(1, Math.min(nativeScale, effectiveCap));
|
|
42
|
+
}
|
|
43
|
+
function useFontScale(cap, fontSize) {
|
|
44
|
+
return useFontScaleValue(cap, fontSize);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Internal component path. A resolved cap is defined under rollback mode only
|
|
48
|
+
* when it came from an explicit component prop, which the public contract says
|
|
49
|
+
* must continue to apply.
|
|
50
|
+
*/
|
|
51
|
+
function useComponentFontScale(cap, fontSize) {
|
|
52
|
+
return useFontScaleValue(cap, fontSize, cap !== void 0);
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { useComponentFontScale, useFontScale };
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=useFontScale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFontScale.js","names":[],"sources":["../../src/fontScaling/useFontScale.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\nimport { Dimensions, Platform } from 'react-native';\n\nimport { convertAndroidSpToDp } from './androidNonlinearFontScaling';\nimport { useFontScalingEnabled } from './FontScalingContext';\n\nfunction subscribe(onStoreChange: () => void): () => void {\n const subscription = Dimensions.addEventListener('change', onStoreChange);\n return () => subscription.remove();\n}\n\n// Unistyles' rt.fontScale is stale when the OS text size changes while the\n// app is running; Dimensions reflects the live value on both platforms.\nfunction getFontScale(): number {\n return Dimensions.get('window').fontScale;\n}\n\n/**\n * The effective scale for `fontSize`, clamped to `[1, cap]`, for sizing\n * containers around scaled text (e.g. a checkbox box growing with its\n * checkmark).\n *\n * `cap` uses the same semantics as `maxFontSizeMultiplier`: a number >= 1\n * caps the scale; `null`, `0`, or `undefined` leave it uncapped. The result\n * is never below 1 so containers never shrink under their token metrics\n * (font scales < 1 shrink text only, as today).\n *\n * Pass the SP size that the geometry accompanies on Android so this mirrors\n * Android 14+'s nonlinear scaling. Omitting `fontSize` preserves the legacy\n * scalar behavior for custom callers that do not know their base size.\n * On iOS this follows the global text-size curve; accompanying text should\n * omit `dynamicTypeRamp` so its native size uses the same multiplier.\n *\n * Subscribes to font-scale changes only — rotation does not re-render, and\n * components re-render solely when the user changes the OS text size.\n * Returns 1 when the nearest font-scaling provider has `enabled: false`.\n */\nfunction useFontScaleValue(\n cap?: number | null,\n fontSize?: number,\n honorResolvedComponentOverride = false,\n): number {\n const enabled = useFontScalingEnabled();\n const fontScale = useSyncExternalStore(subscribe, getFontScale, getFontScale);\n if (!enabled && !honorResolvedComponentOverride) {\n return 1;\n }\n\n const effectiveCap = typeof cap === 'number' && cap >= 1 ? cap : Number.POSITIVE_INFINITY;\n const platformVersion = Number(Platform.Version);\n const nativeScale =\n Platform.OS === 'android' &&\n platformVersion >= 34 &&\n typeof fontSize === 'number' &&\n fontSize > 0\n ? convertAndroidSpToDp(fontSize, fontScale, platformVersion) / fontSize\n : fontScale;\n\n // React Native applies maxFontSizeMultiplier after the platform conversion.\n // This matters on Android 14+, where the converted size is nonlinear.\n return Math.max(1, Math.min(nativeScale, effectiveCap));\n}\n\nfunction useFontScale(cap?: number | null, fontSize?: number): number {\n return useFontScaleValue(cap, fontSize);\n}\n\n/**\n * Internal component path. A resolved cap is defined under rollback mode only\n * when it came from an explicit component prop, which the public contract says\n * must continue to apply.\n */\nfunction useComponentFontScale(cap?: number | null, fontSize?: number): number {\n return useFontScaleValue(cap, fontSize, cap !== undefined);\n}\n\nexport { useComponentFontScale, useFontScale };\n"],"mappings":";;;;;;AAMA,SAAS,UAAU,eAAuC;CACxD,MAAM,eAAe,WAAW,iBAAiB,UAAU,cAAc;CACzE,aAAa,aAAa,QAAQ;;AAKpC,SAAS,eAAuB;CAC9B,OAAO,WAAW,IAAI,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;AAuBlC,SAAS,kBACP,KACA,UACA,iCAAiC,OACzB;CACR,MAAM,UAAU,uBAAuB;CACvC,MAAM,YAAY,qBAAqB,WAAW,cAAc,aAAa;CAC7E,IAAI,CAAC,WAAW,CAAC,gCACf,OAAO;CAGT,MAAM,eAAe,OAAO,QAAQ,YAAY,OAAO,IAAI,MAAM,OAAO;CACxE,MAAM,kBAAkB,OAAO,SAAS,QAAQ;CAChD,MAAM,cACJ,SAAS,OAAO,aAChB,mBAAmB,MACnB,OAAO,aAAa,YACpB,WAAW,IACP,qBAAqB,UAAU,WAAW,gBAAgB,GAAG,WAC7D;CAIN,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,aAAa,aAAa,CAAC;;AAGzD,SAAS,aAAa,KAAqB,UAA2B;CACpE,OAAO,kBAAkB,KAAK,SAAS;;;;;;;AAQzC,SAAS,sBAAsB,KAAqB,UAA2B;CAC7E,OAAO,kBAAkB,KAAK,UAAU,QAAQ,KAAA,EAAU"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
const require_fontScaling_FontScalingContext = require("./FontScalingContext.cjs");
|
|
5
|
+
const require_fontScaling_resolveMaxFontSizeMultiplier = require("./resolveMaxFontSizeMultiplier.cjs");
|
|
6
|
+
let react = require("react");
|
|
7
|
+
//#region src/fontScaling/useMaxFontSizeMultiplier.ts
|
|
8
|
+
/**
|
|
9
|
+
* Resolves the `maxFontSizeMultiplier` for a text variant (or `'control'` for
|
|
10
|
+
* control-internal text/icons), combining an explicit prop value, the nearest
|
|
11
|
+
* `UDSFontScalingProvider` config, and the built-in defaults.
|
|
12
|
+
*
|
|
13
|
+
* Returns a value to pass directly to React Native: a cap (>= 1), `0`
|
|
14
|
+
* (force-uncap), or `undefined` (native default / inherit).
|
|
15
|
+
*/
|
|
16
|
+
function useMaxFontSizeMultiplier(variant, explicit) {
|
|
17
|
+
return require_fontScaling_resolveMaxFontSizeMultiplier.resolveMaxFontSizeMultiplier({
|
|
18
|
+
explicit,
|
|
19
|
+
config: (0, react.useContext)(require_fontScaling_FontScalingContext.FontScalingContext),
|
|
20
|
+
variant
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
exports.useMaxFontSizeMultiplier = useMaxFontSizeMultiplier;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
import { TextVariant } from "../components/Text.cjs";
|
|
3
|
+
|
|
4
|
+
//#region src/fontScaling/useMaxFontSizeMultiplier.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Resolves the `maxFontSizeMultiplier` for a text variant (or `'control'` for
|
|
7
|
+
* control-internal text/icons), combining an explicit prop value, the nearest
|
|
8
|
+
* `UDSFontScalingProvider` config, and the built-in defaults.
|
|
9
|
+
*
|
|
10
|
+
* Returns a value to pass directly to React Native: a cap (>= 1), `0`
|
|
11
|
+
* (force-uncap), or `undefined` (native default / inherit).
|
|
12
|
+
*/
|
|
13
|
+
declare function useMaxFontSizeMultiplier(variant?: TextVariant | 'control', explicit?: number | null): number | undefined;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { useMaxFontSizeMultiplier };
|
|
16
|
+
//# sourceMappingURL=useMaxFontSizeMultiplier.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMaxFontSizeMultiplier.d.cts","names":[],"sources":["../../src/fontScaling/useMaxFontSizeMultiplier.ts"],"mappings":";;;;;;AAEsD;;;;;;iBAY7C,wBAAA,CACP,OAAA,GAAU,WAAA,cACV,QAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
import { TextVariant } from "../components/Text.js";
|
|
3
|
+
|
|
4
|
+
//#region src/fontScaling/useMaxFontSizeMultiplier.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Resolves the `maxFontSizeMultiplier` for a text variant (or `'control'` for
|
|
7
|
+
* control-internal text/icons), combining an explicit prop value, the nearest
|
|
8
|
+
* `UDSFontScalingProvider` config, and the built-in defaults.
|
|
9
|
+
*
|
|
10
|
+
* Returns a value to pass directly to React Native: a cap (>= 1), `0`
|
|
11
|
+
* (force-uncap), or `undefined` (native default / inherit).
|
|
12
|
+
*/
|
|
13
|
+
declare function useMaxFontSizeMultiplier(variant?: TextVariant | 'control', explicit?: number | null): number | undefined;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { useMaxFontSizeMultiplier };
|
|
16
|
+
//# sourceMappingURL=useMaxFontSizeMultiplier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMaxFontSizeMultiplier.d.ts","names":[],"sources":["../../src/fontScaling/useMaxFontSizeMultiplier.ts"],"mappings":";;;;;;AAEsD;;;;;;iBAY7C,wBAAA,CACP,OAAA,GAAU,WAAA,cACV,QAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
import { FontScalingContext } from "./FontScalingContext.js";
|
|
3
|
+
import { resolveMaxFontSizeMultiplier } from "./resolveMaxFontSizeMultiplier.js";
|
|
4
|
+
import { useContext } from "react";
|
|
5
|
+
//#region src/fontScaling/useMaxFontSizeMultiplier.ts
|
|
6
|
+
/**
|
|
7
|
+
* Resolves the `maxFontSizeMultiplier` for a text variant (or `'control'` for
|
|
8
|
+
* control-internal text/icons), combining an explicit prop value, the nearest
|
|
9
|
+
* `UDSFontScalingProvider` config, and the built-in defaults.
|
|
10
|
+
*
|
|
11
|
+
* Returns a value to pass directly to React Native: a cap (>= 1), `0`
|
|
12
|
+
* (force-uncap), or `undefined` (native default / inherit).
|
|
13
|
+
*/
|
|
14
|
+
function useMaxFontSizeMultiplier(variant, explicit) {
|
|
15
|
+
return resolveMaxFontSizeMultiplier({
|
|
16
|
+
explicit,
|
|
17
|
+
config: useContext(FontScalingContext),
|
|
18
|
+
variant
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { useMaxFontSizeMultiplier };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=useMaxFontSizeMultiplier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMaxFontSizeMultiplier.js","names":[],"sources":["../../src/fontScaling/useMaxFontSizeMultiplier.ts"],"sourcesContent":["import { useContext } from 'react';\n\nimport type { TextVariant } from '../components/Text';\nimport { FontScalingContext } from './FontScalingContext';\nimport { resolveMaxFontSizeMultiplier } from './resolveMaxFontSizeMultiplier';\n\n/**\n * Resolves the `maxFontSizeMultiplier` for a text variant (or `'control'` for\n * control-internal text/icons), combining an explicit prop value, the nearest\n * `UDSFontScalingProvider` config, and the built-in defaults.\n *\n * Returns a value to pass directly to React Native: a cap (>= 1), `0`\n * (force-uncap), or `undefined` (native default / inherit).\n */\nfunction useMaxFontSizeMultiplier(\n variant?: TextVariant | 'control',\n explicit?: number | null,\n): number | undefined {\n const config = useContext(FontScalingContext);\n return resolveMaxFontSizeMultiplier({ explicit, config, variant });\n}\n\nexport { useMaxFontSizeMultiplier };\n"],"mappings":";;;;;;;;;;;;;AAcA,SAAS,yBACP,SACA,UACoB;CAEpB,OAAO,6BAA6B;EAAE;EAAU,QADjC,WAAW,mBAC4B;EAAE;EAAS,CAAC"}
|
|
@@ -76,20 +76,33 @@ const Platform = {
|
|
|
76
76
|
};
|
|
77
77
|
const SCREEN_WIDTH = 375;
|
|
78
78
|
const SCREEN_HEIGHT = 812;
|
|
79
|
+
let mockFontScale = 1;
|
|
80
|
+
const dimensionListeners = /* @__PURE__ */ new Set();
|
|
81
|
+
/** Set the mocked OS font scale and notify Dimensions 'change' listeners. */
|
|
82
|
+
const __setMockFontScale = (fontScale) => {
|
|
83
|
+
mockFontScale = fontScale;
|
|
84
|
+
dimensionListeners.forEach((listener) => listener());
|
|
85
|
+
};
|
|
86
|
+
const __resetMockFontScale = () => {
|
|
87
|
+
__setMockFontScale(1);
|
|
88
|
+
};
|
|
79
89
|
const Dimensions = {
|
|
80
90
|
get: (_dim) => ({
|
|
81
91
|
width: SCREEN_WIDTH,
|
|
82
92
|
height: SCREEN_HEIGHT,
|
|
83
93
|
scale: 2,
|
|
84
|
-
fontScale:
|
|
94
|
+
fontScale: mockFontScale
|
|
85
95
|
}),
|
|
86
96
|
set: jest.fn(),
|
|
87
|
-
addEventListener: jest.fn(() =>
|
|
97
|
+
addEventListener: jest.fn((_event, listener) => {
|
|
98
|
+
dimensionListeners.add(listener);
|
|
99
|
+
return { remove: () => dimensionListeners.delete(listener) };
|
|
100
|
+
}),
|
|
88
101
|
removeEventListener: jest.fn()
|
|
89
102
|
};
|
|
90
103
|
const PixelRatio = {
|
|
91
104
|
get: () => 2,
|
|
92
|
-
getFontScale: () =>
|
|
105
|
+
getFontScale: () => mockFontScale,
|
|
93
106
|
getPixelSizeForLayoutSize: (size) => size * 2,
|
|
94
107
|
roundToNearestPixel: (size) => Math.round(size * 2) / 2
|
|
95
108
|
};
|
|
@@ -155,7 +168,7 @@ const useWindowDimensions = () => ({
|
|
|
155
168
|
width: SCREEN_WIDTH,
|
|
156
169
|
height: SCREEN_HEIGHT,
|
|
157
170
|
scale: 2,
|
|
158
|
-
fontScale:
|
|
171
|
+
fontScale: mockFontScale
|
|
159
172
|
});
|
|
160
173
|
const ReactNative = {
|
|
161
174
|
View,
|
|
@@ -222,6 +235,8 @@ exports.TouchableHighlight = TouchableHighlight;
|
|
|
222
235
|
exports.TouchableOpacity = TouchableOpacity;
|
|
223
236
|
exports.TouchableWithoutFeedback = TouchableWithoutFeedback;
|
|
224
237
|
exports.View = View;
|
|
238
|
+
exports.__resetMockFontScale = __resetMockFontScale;
|
|
239
|
+
exports.__setMockFontScale = __setMockFontScale;
|
|
225
240
|
exports.default = ReactNative;
|
|
226
241
|
exports.useColorScheme = useColorScheme;
|
|
227
242
|
exports.useWindowDimensions = useWindowDimensions;
|
|
@@ -63,6 +63,9 @@ declare const Platform: {
|
|
|
63
63
|
};
|
|
64
64
|
};
|
|
65
65
|
};
|
|
66
|
+
/** Set the mocked OS font scale and notify Dimensions 'change' listeners. */
|
|
67
|
+
declare const __setMockFontScale: (fontScale: number) => void;
|
|
68
|
+
declare const __resetMockFontScale: () => void;
|
|
66
69
|
declare const Dimensions: {
|
|
67
70
|
get: (_dim: "window" | "screen") => {
|
|
68
71
|
width: number;
|
|
@@ -72,8 +75,8 @@ declare const Dimensions: {
|
|
|
72
75
|
};
|
|
73
76
|
set: jest.Mock<any, any, any>;
|
|
74
77
|
addEventListener: jest.Mock<{
|
|
75
|
-
remove:
|
|
76
|
-
}, [], any>;
|
|
78
|
+
remove: () => boolean;
|
|
79
|
+
}, [_event: "change", listener: () => void], any>;
|
|
77
80
|
removeEventListener: jest.Mock<any, any, any>;
|
|
78
81
|
};
|
|
79
82
|
declare const PixelRatio: {
|
|
@@ -228,8 +231,8 @@ declare const ReactNative: {
|
|
|
228
231
|
};
|
|
229
232
|
set: jest.Mock<any, any, any>;
|
|
230
233
|
addEventListener: jest.Mock<{
|
|
231
|
-
remove:
|
|
232
|
-
}, [], any>;
|
|
234
|
+
remove: () => boolean;
|
|
235
|
+
}, [_event: "change", listener: () => void], any>;
|
|
233
236
|
removeEventListener: jest.Mock<any, any, any>;
|
|
234
237
|
};
|
|
235
238
|
PixelRatio: {
|
|
@@ -317,5 +320,5 @@ declare const ReactNative: {
|
|
|
317
320
|
};
|
|
318
321
|
};
|
|
319
322
|
//#endregion
|
|
320
|
-
export { AccessibilityInfo, ActivityIndicator, Animated, AppState, Appearance, BackHandler, Dimensions, FlatList, I18nManager, Image, Keyboard, KeyboardAvoidingView, Linking, Modal, NativeEventEmitter, PixelRatio, Platform, Pressable, RefreshControl, SafeAreaView, ScrollView, SectionList, StyleSheet, Switch, Text, TextInput, TouchableHighlight, TouchableOpacity, TouchableWithoutFeedback, View, ReactNative as default, useColorScheme, useWindowDimensions };
|
|
323
|
+
export { AccessibilityInfo, ActivityIndicator, Animated, AppState, Appearance, BackHandler, Dimensions, FlatList, I18nManager, Image, Keyboard, KeyboardAvoidingView, Linking, Modal, NativeEventEmitter, PixelRatio, Platform, Pressable, RefreshControl, SafeAreaView, ScrollView, SectionList, StyleSheet, Switch, Text, TextInput, TouchableHighlight, TouchableOpacity, TouchableWithoutFeedback, View, __resetMockFontScale, __setMockFontScale, ReactNative as default, useColorScheme, useWindowDimensions };
|
|
321
324
|
//# sourceMappingURL=react-native.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-native.d.cts","names":[],"sources":["../../../src/jest/mocks/react-native.tsx"],"mappings":";;;;UAgBU,kBAAA;EACR,QAAA,GAAW,SAAA;EACX,KAAA;EACA,MAAA;EACA,iBAAA;EACA,kBAAA;EAAA,CACC,GAAA;AAAA;AAAA,cAaG,IAAA,EAAI,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACJ,IAAA,EAAI,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACJ,KAAA,EAAK,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACL,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACV,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACT,gBAAA,EAAgB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cAChB,kBAAA,EAAkB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cAClB,wBAAA,EAAwB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACxB,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACT,QAAA,EAAQ,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACR,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACX,iBAAA,EAAiB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACjB,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACZ,KAAA,EAAK,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACL,MAAA,EAAM,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACN,cAAA,EAAc,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACd,oBAAA,EAAoB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cAGpB,UAAA;qBACe,MAAA,kBAAsB,MAAA,EAAU,CAAA,KAAI,CAAA;;4BAO/B,MAAA;;;;;;;;;;;;;;;;;cAOpB,QAAA;;;qBAGe,MAAA,mBAAuB,MAAA,EAAU,CAAA,KAAI,CAAA,OAAQ,CAAA
|
|
1
|
+
{"version":3,"file":"react-native.d.cts","names":[],"sources":["../../../src/jest/mocks/react-native.tsx"],"mappings":";;;;UAgBU,kBAAA;EACR,QAAA,GAAW,SAAA;EACX,KAAA;EACA,MAAA;EACA,iBAAA;EACA,kBAAA;EAAA,CACC,GAAA;AAAA;AAAA,cAaG,IAAA,EAAI,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACJ,IAAA,EAAI,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACJ,KAAA,EAAK,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACL,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACV,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACT,gBAAA,EAAgB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cAChB,kBAAA,EAAkB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cAClB,wBAAA,EAAwB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACxB,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACT,QAAA,EAAQ,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACR,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACX,iBAAA,EAAiB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACjB,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACZ,KAAA,EAAK,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACL,MAAA,EAAM,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACN,cAAA,EAAc,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACd,oBAAA,EAAoB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cAGpB,UAAA;qBACe,MAAA,kBAAsB,MAAA,EAAU,CAAA,KAAI,CAAA;;4BAO/B,MAAA;;;;;;;;;;;;;;;;;cAOpB,QAAA;;;qBAGe,MAAA,mBAAuB,MAAA,EAAU,CAAA,KAAI,CAAA,OAAQ,CAAA;;;;;;;;;;;;;;cAqB5D,kBAAA,GAAsB,SAAA;AAAA,cAKtB,oBAAA;AAAA,cAIA,UAAA;;;;;;;;;;;;;cAgBA,UAAA;;;;;;cAQA,QAAA;;;;;;;;;;;;;;;;uCAaiC,KAAA,CAAM,aAAA,KAAa,KAAA,CAAA,aAAA;AAAA;AAAA,cAIpD,QAAA;;;;;;;;cAOA,WAAA;;;;;;cAKA,WAAA;;YAKL,IAAA,CAAA,IAAA;YAAA,IAAA,CAAA,IAAA;;;;;cAGK,OAAA;;;;;;;;cAQA,QAAA;;;;;;;cAOA,iBAAA;;;;;;;cAOA,kBAAA;EACJ,WAAA,EAAW,IAAA,CAAA,IAAA;;;EACX,cAAA,EAAc,IAAA,CAAA,IAAA;EACd,kBAAA,EAAkB,IAAA,CAAA,IAAA;AAAA;AAAA,cAId,UAAA;;;;;;;cAOA,cAAA;AAAA,cAGA,mBAAA;;;;;;cAQA,WAAA;;;;;;;;;;;;;;;;;;;uBA3Je,MAAA,kBAAsB,MAAA,EAAU,CAAA,KAAI,CAAA;;8BAO/B,MAAA;;;;;;;;;;;;;;;;;;;;uBAUL,MAAA,mBAAuB,MAAA,EAAU,CAAA,KAAI,CAAA,OAAQ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAmE3B,KAAA,CAAM,aAAA,KAAa,KAAA,CAAA,aAAA;EAAA"}
|
|
@@ -63,6 +63,9 @@ declare const Platform: {
|
|
|
63
63
|
};
|
|
64
64
|
};
|
|
65
65
|
};
|
|
66
|
+
/** Set the mocked OS font scale and notify Dimensions 'change' listeners. */
|
|
67
|
+
declare const __setMockFontScale: (fontScale: number) => void;
|
|
68
|
+
declare const __resetMockFontScale: () => void;
|
|
66
69
|
declare const Dimensions: {
|
|
67
70
|
get: (_dim: "window" | "screen") => {
|
|
68
71
|
width: number;
|
|
@@ -72,8 +75,8 @@ declare const Dimensions: {
|
|
|
72
75
|
};
|
|
73
76
|
set: jest.Mock<any, any, any>;
|
|
74
77
|
addEventListener: jest.Mock<{
|
|
75
|
-
remove:
|
|
76
|
-
}, [], any>;
|
|
78
|
+
remove: () => boolean;
|
|
79
|
+
}, [_event: "change", listener: () => void], any>;
|
|
77
80
|
removeEventListener: jest.Mock<any, any, any>;
|
|
78
81
|
};
|
|
79
82
|
declare const PixelRatio: {
|
|
@@ -228,8 +231,8 @@ declare const ReactNative: {
|
|
|
228
231
|
};
|
|
229
232
|
set: jest.Mock<any, any, any>;
|
|
230
233
|
addEventListener: jest.Mock<{
|
|
231
|
-
remove:
|
|
232
|
-
}, [], any>;
|
|
234
|
+
remove: () => boolean;
|
|
235
|
+
}, [_event: "change", listener: () => void], any>;
|
|
233
236
|
removeEventListener: jest.Mock<any, any, any>;
|
|
234
237
|
};
|
|
235
238
|
PixelRatio: {
|
|
@@ -317,5 +320,5 @@ declare const ReactNative: {
|
|
|
317
320
|
};
|
|
318
321
|
};
|
|
319
322
|
//#endregion
|
|
320
|
-
export { AccessibilityInfo, ActivityIndicator, Animated, AppState, Appearance, BackHandler, Dimensions, FlatList, I18nManager, Image, Keyboard, KeyboardAvoidingView, Linking, Modal, NativeEventEmitter, PixelRatio, Platform, Pressable, RefreshControl, SafeAreaView, ScrollView, SectionList, StyleSheet, Switch, Text, TextInput, TouchableHighlight, TouchableOpacity, TouchableWithoutFeedback, View, ReactNative as default, useColorScheme, useWindowDimensions };
|
|
323
|
+
export { AccessibilityInfo, ActivityIndicator, Animated, AppState, Appearance, BackHandler, Dimensions, FlatList, I18nManager, Image, Keyboard, KeyboardAvoidingView, Linking, Modal, NativeEventEmitter, PixelRatio, Platform, Pressable, RefreshControl, SafeAreaView, ScrollView, SectionList, StyleSheet, Switch, Text, TextInput, TouchableHighlight, TouchableOpacity, TouchableWithoutFeedback, View, __resetMockFontScale, __setMockFontScale, ReactNative as default, useColorScheme, useWindowDimensions };
|
|
321
324
|
//# sourceMappingURL=react-native.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-native.d.ts","names":[],"sources":["../../../src/jest/mocks/react-native.tsx"],"mappings":";;;;UAgBU,kBAAA;EACR,QAAA,GAAW,SAAA;EACX,KAAA;EACA,MAAA;EACA,iBAAA;EACA,kBAAA;EAAA,CACC,GAAA;AAAA;AAAA,cAaG,IAAA,EAAI,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACJ,IAAA,EAAI,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACJ,KAAA,EAAK,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACL,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACV,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACT,gBAAA,EAAgB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cAChB,kBAAA,EAAkB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cAClB,wBAAA,EAAwB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACxB,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACT,QAAA,EAAQ,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACR,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACX,iBAAA,EAAiB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACjB,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACZ,KAAA,EAAK,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACL,MAAA,EAAM,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACN,cAAA,EAAc,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACd,oBAAA,EAAoB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cAGpB,UAAA;qBACe,MAAA,kBAAsB,MAAA,EAAU,CAAA,KAAI,CAAA;;4BAO/B,MAAA;;;;;;;;;;;;;;;;;cAOpB,QAAA;;;qBAGe,MAAA,mBAAuB,MAAA,EAAU,CAAA,KAAI,CAAA,OAAQ,CAAA
|
|
1
|
+
{"version":3,"file":"react-native.d.ts","names":[],"sources":["../../../src/jest/mocks/react-native.tsx"],"mappings":"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"}
|
|
@@ -70,20 +70,33 @@ const Platform = {
|
|
|
70
70
|
};
|
|
71
71
|
const SCREEN_WIDTH = 375;
|
|
72
72
|
const SCREEN_HEIGHT = 812;
|
|
73
|
+
let mockFontScale = 1;
|
|
74
|
+
const dimensionListeners = /* @__PURE__ */ new Set();
|
|
75
|
+
/** Set the mocked OS font scale and notify Dimensions 'change' listeners. */
|
|
76
|
+
const __setMockFontScale = (fontScale) => {
|
|
77
|
+
mockFontScale = fontScale;
|
|
78
|
+
dimensionListeners.forEach((listener) => listener());
|
|
79
|
+
};
|
|
80
|
+
const __resetMockFontScale = () => {
|
|
81
|
+
__setMockFontScale(1);
|
|
82
|
+
};
|
|
73
83
|
const Dimensions = {
|
|
74
84
|
get: (_dim) => ({
|
|
75
85
|
width: SCREEN_WIDTH,
|
|
76
86
|
height: SCREEN_HEIGHT,
|
|
77
87
|
scale: 2,
|
|
78
|
-
fontScale:
|
|
88
|
+
fontScale: mockFontScale
|
|
79
89
|
}),
|
|
80
90
|
set: jest.fn(),
|
|
81
|
-
addEventListener: jest.fn(() =>
|
|
91
|
+
addEventListener: jest.fn((_event, listener) => {
|
|
92
|
+
dimensionListeners.add(listener);
|
|
93
|
+
return { remove: () => dimensionListeners.delete(listener) };
|
|
94
|
+
}),
|
|
82
95
|
removeEventListener: jest.fn()
|
|
83
96
|
};
|
|
84
97
|
const PixelRatio = {
|
|
85
98
|
get: () => 2,
|
|
86
|
-
getFontScale: () =>
|
|
99
|
+
getFontScale: () => mockFontScale,
|
|
87
100
|
getPixelSizeForLayoutSize: (size) => size * 2,
|
|
88
101
|
roundToNearestPixel: (size) => Math.round(size * 2) / 2
|
|
89
102
|
};
|
|
@@ -149,7 +162,7 @@ const useWindowDimensions = () => ({
|
|
|
149
162
|
width: SCREEN_WIDTH,
|
|
150
163
|
height: SCREEN_HEIGHT,
|
|
151
164
|
scale: 2,
|
|
152
|
-
fontScale:
|
|
165
|
+
fontScale: mockFontScale
|
|
153
166
|
});
|
|
154
167
|
const ReactNative = {
|
|
155
168
|
View,
|
|
@@ -186,6 +199,6 @@ const ReactNative = {
|
|
|
186
199
|
useWindowDimensions
|
|
187
200
|
};
|
|
188
201
|
//#endregion
|
|
189
|
-
export { AccessibilityInfo, ActivityIndicator, Animated, AppState, Appearance, BackHandler, Dimensions, FlatList, I18nManager, Image, Keyboard, KeyboardAvoidingView, Linking, Modal, NativeEventEmitter, PixelRatio, Platform, Pressable, RefreshControl, SafeAreaView, ScrollView, SectionList, StyleSheet, Switch, Text, TextInput, TouchableHighlight, TouchableOpacity, TouchableWithoutFeedback, View, ReactNative as default, useColorScheme, useWindowDimensions };
|
|
202
|
+
export { AccessibilityInfo, ActivityIndicator, Animated, AppState, Appearance, BackHandler, Dimensions, FlatList, I18nManager, Image, Keyboard, KeyboardAvoidingView, Linking, Modal, NativeEventEmitter, PixelRatio, Platform, Pressable, RefreshControl, SafeAreaView, ScrollView, SectionList, StyleSheet, Switch, Text, TextInput, TouchableHighlight, TouchableOpacity, TouchableWithoutFeedback, View, __resetMockFontScale, __setMockFontScale, ReactNative as default, useColorScheme, useWindowDimensions };
|
|
190
203
|
|
|
191
204
|
//# sourceMappingURL=react-native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-native.js","names":[],"sources":["../../../src/jest/mocks/react-native.tsx"],"sourcesContent":["/**\n * Jest mock for react-native core components.\n *\n * Provides simple mock implementations for React Native components\n * that work in a Jest environment without native modules.\n */\n\n/// <reference types=\"jest\" />\n\nimport type { ReactNode } from 'react';\nimport React, { forwardRef } from 'react';\n\n// Set up React Native globals\ndeclare const global: { __DEV__?: boolean };\nglobal.__DEV__ = true;\n\ninterface MockComponentProps {\n children?: ReactNode;\n style?: object;\n testID?: string;\n accessibilityRole?: string;\n accessibilityLabel?: string;\n [key: string]: unknown;\n}\n\n// Create a simple mock component factory\nfunction createMockComponent(name: string) {\n const MockComponent = forwardRef<unknown, MockComponentProps>(({ children, ...props }, ref) => {\n return React.createElement(name, { ...props, ref }, children as ReactNode);\n });\n MockComponent.displayName = name;\n return MockComponent;\n}\n\n// Component mocks\nconst View = createMockComponent('View');\nconst Text = createMockComponent('Text');\nconst Image = createMockComponent('Image');\nconst ScrollView = createMockComponent('ScrollView');\nconst TextInput = createMockComponent('TextInput');\nconst TouchableOpacity = createMockComponent('TouchableOpacity');\nconst TouchableHighlight = createMockComponent('TouchableHighlight');\nconst TouchableWithoutFeedback = createMockComponent('TouchableWithoutFeedback');\nconst Pressable = createMockComponent('Pressable');\nconst FlatList = createMockComponent('FlatList');\nconst SectionList = createMockComponent('SectionList');\nconst ActivityIndicator = createMockComponent('ActivityIndicator');\nconst SafeAreaView = createMockComponent('SafeAreaView');\nconst Modal = createMockComponent('Modal');\nconst Switch = createMockComponent('Switch');\nconst RefreshControl = createMockComponent('RefreshControl');\nconst KeyboardAvoidingView = createMockComponent('KeyboardAvoidingView');\n\n// StyleSheet mock\nconst StyleSheet = {\n create: <T extends Record<string, object>>(styles: T): T => styles,\n flatten: (style: object | object[]): object => {\n if (Array.isArray(style)) {\n return Object.assign({}, ...style);\n }\n return style || {};\n },\n compose: (style1: object, style2: object): object[] => [style1, style2],\n hairlineWidth: 1,\n absoluteFill: { position: 'absolute', left: 0, right: 0, top: 0, bottom: 0 },\n absoluteFillObject: { position: 'absolute', left: 0, right: 0, top: 0, bottom: 0 },\n};\n\n// Platform mock\nconst Platform = {\n OS: 'ios' as const,\n Version: 17,\n select: <T extends Record<string, unknown>>(config: T): T[keyof T] | undefined => {\n return (config.ios ?? config.default) as T[keyof T] | undefined;\n },\n isTV: false,\n isPad: false,\n isVision: false,\n isTesting: true,\n constants: {\n reactNativeVersion: { major: 0, minor: 83, patch: 0 },\n },\n};\n\n// Dimensions mock\nconst SCREEN_WIDTH = 375;\nconst SCREEN_HEIGHT = 812;\n\nconst Dimensions = {\n get: (_dim: 'window' | 'screen') => ({\n width: SCREEN_WIDTH,\n height: SCREEN_HEIGHT,\n scale: 2,\n fontScale: 1,\n }),\n set: jest.fn(),\n addEventListener: jest.fn(() => ({ remove: jest.fn() })),\n removeEventListener: jest.fn(),\n};\n\n// PixelRatio mock\nconst PixelRatio = {\n get: () => 2,\n getFontScale: () => 1,\n getPixelSizeForLayoutSize: (size: number) => size * 2,\n roundToNearestPixel: (size: number) => Math.round(size * 2) / 2,\n};\n\n// Animated mock (basic - reanimated provides more complete implementation)\nconst Animated = {\n View: createMockComponent('Animated.View'),\n Text: createMockComponent('Animated.Text'),\n Image: createMockComponent('Animated.Image'),\n ScrollView: createMockComponent('Animated.ScrollView'),\n Value: class {\n _value: number;\n constructor(value: number) {\n this._value = value;\n }\n },\n timing: jest.fn(() => ({ start: jest.fn() })),\n spring: jest.fn(() => ({ start: jest.fn() })),\n createAnimatedComponent: (Component: React.ComponentType) => Component,\n};\n\n// Keyboard mock\nconst Keyboard = {\n dismiss: jest.fn(),\n addListener: jest.fn(() => ({ remove: jest.fn() })),\n removeListener: jest.fn(),\n isVisible: jest.fn(() => false),\n};\n\nconst BackHandler = {\n addEventListener: jest.fn(() => ({ remove: jest.fn() })),\n exitApp: jest.fn(),\n};\n\nconst I18nManager = {\n isRTL: false,\n allowRTL: jest.fn(),\n forceRTL: jest.fn(),\n getConstants: () => ({ isRTL: false }),\n};\n\n// Linking mock\nconst Linking = {\n openURL: jest.fn().mockResolvedValue(true),\n canOpenURL: jest.fn().mockResolvedValue(true),\n getInitialURL: jest.fn().mockResolvedValue(null),\n addEventListener: jest.fn(() => ({ remove: jest.fn() })),\n};\n\n// AppState mock\nconst AppState = {\n currentState: 'active',\n addEventListener: jest.fn(() => ({ remove: jest.fn() })),\n removeEventListener: jest.fn(),\n};\n\n// AccessibilityInfo mock\nconst AccessibilityInfo = {\n isReduceMotionEnabled: jest.fn().mockResolvedValue(false),\n isScreenReaderEnabled: jest.fn().mockResolvedValue(false),\n addEventListener: jest.fn(() => ({ remove: jest.fn() })),\n};\n\n// NativeEventEmitter mock\nclass NativeEventEmitter {\n addListener = jest.fn(() => ({ remove: jest.fn() }));\n removeListener = jest.fn();\n removeAllListeners = jest.fn();\n}\n\n// Appearance mock\nconst Appearance = {\n getColorScheme: () => 'light' as const,\n addChangeListener: jest.fn(() => ({ remove: jest.fn() })),\n removeChangeListener: jest.fn(),\n};\n\n// useColorScheme hook mock\nconst useColorScheme = () => 'light' as const;\n\n// useWindowDimensions hook mock\nconst useWindowDimensions = () => ({\n width: SCREEN_WIDTH,\n height: SCREEN_HEIGHT,\n scale: 2,\n fontScale: 1,\n});\n\n// Default export for compatibility\nconst ReactNative = {\n View,\n Text,\n Image,\n ScrollView,\n TextInput,\n TouchableOpacity,\n TouchableHighlight,\n TouchableWithoutFeedback,\n Pressable,\n FlatList,\n SectionList,\n ActivityIndicator,\n SafeAreaView,\n Modal,\n Switch,\n RefreshControl,\n KeyboardAvoidingView,\n StyleSheet,\n Platform,\n Dimensions,\n PixelRatio,\n Animated,\n BackHandler,\n Keyboard,\n I18nManager,\n Linking,\n AppState,\n AccessibilityInfo,\n NativeEventEmitter,\n Appearance,\n useColorScheme,\n useWindowDimensions,\n};\n\n// Named exports\nexport {\n AccessibilityInfo,\n ActivityIndicator,\n Animated,\n Appearance,\n AppState,\n BackHandler,\n Dimensions,\n FlatList,\n I18nManager,\n Image,\n Keyboard,\n KeyboardAvoidingView,\n Linking,\n Modal,\n NativeEventEmitter,\n PixelRatio,\n Platform,\n Pressable,\n RefreshControl,\n SafeAreaView,\n ScrollView,\n SectionList,\n StyleSheet,\n Switch,\n Text,\n TextInput,\n TouchableHighlight,\n TouchableOpacity,\n TouchableWithoutFeedback,\n useColorScheme,\n useWindowDimensions,\n View,\n};\n\nexport default ReactNative;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-native.js","names":[],"sources":["../../../src/jest/mocks/react-native.tsx"],"sourcesContent":["/**\n * Jest mock for react-native core components.\n *\n * Provides simple mock implementations for React Native components\n * that work in a Jest environment without native modules.\n */\n\n/// <reference types=\"jest\" />\n\nimport type { ReactNode } from 'react';\nimport React, { forwardRef } from 'react';\n\n// Set up React Native globals\ndeclare const global: { __DEV__?: boolean };\nglobal.__DEV__ = true;\n\ninterface MockComponentProps {\n children?: ReactNode;\n style?: object;\n testID?: string;\n accessibilityRole?: string;\n accessibilityLabel?: string;\n [key: string]: unknown;\n}\n\n// Create a simple mock component factory\nfunction createMockComponent(name: string) {\n const MockComponent = forwardRef<unknown, MockComponentProps>(({ children, ...props }, ref) => {\n return React.createElement(name, { ...props, ref }, children as ReactNode);\n });\n MockComponent.displayName = name;\n return MockComponent;\n}\n\n// Component mocks\nconst View = createMockComponent('View');\nconst Text = createMockComponent('Text');\nconst Image = createMockComponent('Image');\nconst ScrollView = createMockComponent('ScrollView');\nconst TextInput = createMockComponent('TextInput');\nconst TouchableOpacity = createMockComponent('TouchableOpacity');\nconst TouchableHighlight = createMockComponent('TouchableHighlight');\nconst TouchableWithoutFeedback = createMockComponent('TouchableWithoutFeedback');\nconst Pressable = createMockComponent('Pressable');\nconst FlatList = createMockComponent('FlatList');\nconst SectionList = createMockComponent('SectionList');\nconst ActivityIndicator = createMockComponent('ActivityIndicator');\nconst SafeAreaView = createMockComponent('SafeAreaView');\nconst Modal = createMockComponent('Modal');\nconst Switch = createMockComponent('Switch');\nconst RefreshControl = createMockComponent('RefreshControl');\nconst KeyboardAvoidingView = createMockComponent('KeyboardAvoidingView');\n\n// StyleSheet mock\nconst StyleSheet = {\n create: <T extends Record<string, object>>(styles: T): T => styles,\n flatten: (style: object | object[]): object => {\n if (Array.isArray(style)) {\n return Object.assign({}, ...style);\n }\n return style || {};\n },\n compose: (style1: object, style2: object): object[] => [style1, style2],\n hairlineWidth: 1,\n absoluteFill: { position: 'absolute', left: 0, right: 0, top: 0, bottom: 0 },\n absoluteFillObject: { position: 'absolute', left: 0, right: 0, top: 0, bottom: 0 },\n};\n\n// Platform mock\nconst Platform = {\n OS: 'ios' as const,\n Version: 17,\n select: <T extends Record<string, unknown>>(config: T): T[keyof T] | undefined => {\n return (config.ios ?? config.default) as T[keyof T] | undefined;\n },\n isTV: false,\n isPad: false,\n isVision: false,\n isTesting: true,\n constants: {\n reactNativeVersion: { major: 0, minor: 83, patch: 0 },\n },\n};\n\n// Dimensions mock\nconst SCREEN_WIDTH = 375;\nconst SCREEN_HEIGHT = 812;\n\n// Controllable font scale so tests can simulate OS text-size settings.\nlet mockFontScale = 1;\nconst dimensionListeners = new Set<() => void>();\n\n/** Set the mocked OS font scale and notify Dimensions 'change' listeners. */\nconst __setMockFontScale = (fontScale: number) => {\n mockFontScale = fontScale;\n dimensionListeners.forEach((listener) => listener());\n};\n\nconst __resetMockFontScale = () => {\n __setMockFontScale(1);\n};\n\nconst Dimensions = {\n get: (_dim: 'window' | 'screen') => ({\n width: SCREEN_WIDTH,\n height: SCREEN_HEIGHT,\n scale: 2,\n fontScale: mockFontScale,\n }),\n set: jest.fn(),\n addEventListener: jest.fn((_event: 'change', listener: () => void) => {\n dimensionListeners.add(listener);\n return { remove: () => dimensionListeners.delete(listener) };\n }),\n removeEventListener: jest.fn(),\n};\n\n// PixelRatio mock\nconst PixelRatio = {\n get: () => 2,\n getFontScale: () => mockFontScale,\n getPixelSizeForLayoutSize: (size: number) => size * 2,\n roundToNearestPixel: (size: number) => Math.round(size * 2) / 2,\n};\n\n// Animated mock (basic - reanimated provides more complete implementation)\nconst Animated = {\n View: createMockComponent('Animated.View'),\n Text: createMockComponent('Animated.Text'),\n Image: createMockComponent('Animated.Image'),\n ScrollView: createMockComponent('Animated.ScrollView'),\n Value: class {\n _value: number;\n constructor(value: number) {\n this._value = value;\n }\n },\n timing: jest.fn(() => ({ start: jest.fn() })),\n spring: jest.fn(() => ({ start: jest.fn() })),\n createAnimatedComponent: (Component: React.ComponentType) => Component,\n};\n\n// Keyboard mock\nconst Keyboard = {\n dismiss: jest.fn(),\n addListener: jest.fn(() => ({ remove: jest.fn() })),\n removeListener: jest.fn(),\n isVisible: jest.fn(() => false),\n};\n\nconst BackHandler = {\n addEventListener: jest.fn(() => ({ remove: jest.fn() })),\n exitApp: jest.fn(),\n};\n\nconst I18nManager = {\n isRTL: false,\n allowRTL: jest.fn(),\n forceRTL: jest.fn(),\n getConstants: () => ({ isRTL: false }),\n};\n\n// Linking mock\nconst Linking = {\n openURL: jest.fn().mockResolvedValue(true),\n canOpenURL: jest.fn().mockResolvedValue(true),\n getInitialURL: jest.fn().mockResolvedValue(null),\n addEventListener: jest.fn(() => ({ remove: jest.fn() })),\n};\n\n// AppState mock\nconst AppState = {\n currentState: 'active',\n addEventListener: jest.fn(() => ({ remove: jest.fn() })),\n removeEventListener: jest.fn(),\n};\n\n// AccessibilityInfo mock\nconst AccessibilityInfo = {\n isReduceMotionEnabled: jest.fn().mockResolvedValue(false),\n isScreenReaderEnabled: jest.fn().mockResolvedValue(false),\n addEventListener: jest.fn(() => ({ remove: jest.fn() })),\n};\n\n// NativeEventEmitter mock\nclass NativeEventEmitter {\n addListener = jest.fn(() => ({ remove: jest.fn() }));\n removeListener = jest.fn();\n removeAllListeners = jest.fn();\n}\n\n// Appearance mock\nconst Appearance = {\n getColorScheme: () => 'light' as const,\n addChangeListener: jest.fn(() => ({ remove: jest.fn() })),\n removeChangeListener: jest.fn(),\n};\n\n// useColorScheme hook mock\nconst useColorScheme = () => 'light' as const;\n\n// useWindowDimensions hook mock\nconst useWindowDimensions = () => ({\n width: SCREEN_WIDTH,\n height: SCREEN_HEIGHT,\n scale: 2,\n fontScale: mockFontScale,\n});\n\n// Default export for compatibility\nconst ReactNative = {\n View,\n Text,\n Image,\n ScrollView,\n TextInput,\n TouchableOpacity,\n TouchableHighlight,\n TouchableWithoutFeedback,\n Pressable,\n FlatList,\n SectionList,\n ActivityIndicator,\n SafeAreaView,\n Modal,\n Switch,\n RefreshControl,\n KeyboardAvoidingView,\n StyleSheet,\n Platform,\n Dimensions,\n PixelRatio,\n Animated,\n BackHandler,\n Keyboard,\n I18nManager,\n Linking,\n AppState,\n AccessibilityInfo,\n NativeEventEmitter,\n Appearance,\n useColorScheme,\n useWindowDimensions,\n};\n\n// Named exports\nexport {\n __resetMockFontScale,\n __setMockFontScale,\n AccessibilityInfo,\n ActivityIndicator,\n Animated,\n Appearance,\n AppState,\n BackHandler,\n Dimensions,\n FlatList,\n I18nManager,\n Image,\n Keyboard,\n KeyboardAvoidingView,\n Linking,\n Modal,\n NativeEventEmitter,\n PixelRatio,\n Platform,\n Pressable,\n RefreshControl,\n SafeAreaView,\n ScrollView,\n SectionList,\n StyleSheet,\n Switch,\n Text,\n TextInput,\n TouchableHighlight,\n TouchableOpacity,\n TouchableWithoutFeedback,\n useColorScheme,\n useWindowDimensions,\n View,\n};\n\nexport default ReactNative;\n"],"mappings":"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"}
|