@unif/react-native-design 0.31.3 → 0.32.0
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 +6 -0
- package/lib/module/components/ui/Avatar/Avatar.js +2 -1
- package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
- package/lib/module/components/ui/Avatar/geometry.js +43 -0
- package/lib/module/components/ui/Avatar/geometry.js.map +1 -0
- package/lib/module/components/ui/Avatar/styles.js +1 -41
- package/lib/module/components/ui/Avatar/styles.js.map +1 -1
- package/lib/module/components/ui/AvatarGroup/AvatarGroup.js +1 -1
- package/lib/module/components/ui/AvatarGroup/AvatarGroup.js.map +1 -1
- package/lib/module/components/ui/CircularProgress/CircularProgress.js +14 -25
- package/lib/module/components/ui/CircularProgress/CircularProgress.js.map +1 -1
- package/lib/module/components/ui/CircularProgress/normalizeCircularProgress.js.map +1 -1
- package/lib/module/components/ui/CircularProgress/styles.js +24 -0
- package/lib/module/components/ui/CircularProgress/styles.js.map +1 -0
- package/lib/module/components/ui/Pulse/PulseDot.js +5 -5
- package/lib/module/components/ui/Pulse/PulseDot.js.map +1 -1
- package/lib/module/components/ui/Pulse/constants.js +15 -0
- package/lib/module/components/ui/Pulse/constants.js.map +1 -0
- package/lib/module/components/ui/Pulse/usePulse.js +4 -62
- package/lib/module/components/ui/Pulse/usePulse.js.map +1 -1
- package/lib/module/components/ui/Skeleton/Skeleton.js +6 -2
- package/lib/module/components/ui/Skeleton/Skeleton.js.map +1 -1
- package/lib/module/components/ui/Skeleton/constants.js +9 -0
- package/lib/module/components/ui/Skeleton/constants.js.map +1 -0
- package/lib/module/components/ui/TextField/TextFieldBase.js +21 -4
- package/lib/module/components/ui/TextField/TextFieldBase.js.map +1 -1
- package/lib/module/components/ui/TextField/constants.js +7 -0
- package/lib/module/components/ui/TextField/constants.js.map +1 -0
- package/lib/module/components/ui/TextField/styles.js +10 -2
- package/lib/module/components/ui/TextField/styles.js.map +1 -1
- package/lib/module/components/ui/TextField/useMultilineLayout.js +18 -0
- package/lib/module/components/ui/TextField/useMultilineLayout.js.map +1 -0
- package/lib/module/components/ui/TextField/useMultilineLayout.web.js +44 -0
- package/lib/module/components/ui/TextField/useMultilineLayout.web.js.map +1 -0
- package/lib/module/components/ui/Thumbnail/Thumbnail.js +13 -6
- package/lib/module/components/ui/Thumbnail/Thumbnail.js.map +1 -1
- package/lib/module/components/ui/Thumbnail/constants.js +22 -0
- package/lib/module/components/ui/Thumbnail/constants.js.map +1 -0
- package/lib/module/components/ui/Thumbnail/normalize.js +30 -1
- package/lib/module/components/ui/Thumbnail/normalize.js.map +1 -1
- package/lib/module/components/ui/Thumbnail/styles.js +5 -28
- package/lib/module/components/ui/Thumbnail/styles.js.map +1 -1
- package/lib/module/components/ui/index.js.map +1 -1
- package/lib/module/components/ui/shared/pulse/constants.js +5 -0
- package/lib/module/components/ui/shared/pulse/constants.js.map +1 -0
- package/lib/module/components/ui/{Pulse → shared/pulse}/normalizePulseOptions.js +2 -12
- package/lib/module/components/ui/shared/pulse/normalizePulseOptions.js.map +1 -0
- package/lib/module/components/ui/shared/pulse/types.js +2 -0
- package/lib/module/components/ui/shared/pulse/types.js.map +1 -0
- package/lib/module/components/ui/shared/pulse/usePulseAnimation.js +30 -0
- package/lib/module/components/ui/shared/pulse/usePulseAnimation.js.map +1 -0
- package/lib/module/components/ui/{Pulse → shared/pulse}/usePulseDriver.js +1 -1
- package/lib/module/components/ui/shared/pulse/usePulseDriver.js.map +1 -0
- package/lib/module/components/ui/{Pulse → shared/pulse}/usePulseDriver.web.js +2 -17
- package/lib/module/components/ui/shared/pulse/usePulseDriver.web.js.map +1 -0
- package/lib/typescript/src/components/ui/Avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Avatar/geometry.d.ts +7 -0
- package/lib/typescript/src/components/ui/Avatar/geometry.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Avatar/styles.d.ts +1 -9
- package/lib/typescript/src/components/ui/Avatar/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Avatar/types.d.ts +7 -2
- package/lib/typescript/src/components/ui/Avatar/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/CircularProgress/CircularProgress.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/CircularProgress/normalizeCircularProgress.d.ts +2 -14
- package/lib/typescript/src/components/ui/CircularProgress/normalizeCircularProgress.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/CircularProgress/styles.d.ts +19 -0
- package/lib/typescript/src/components/ui/CircularProgress/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/CircularProgress/types.d.ts +17 -2
- package/lib/typescript/src/components/ui/CircularProgress/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Pulse/PulseDot.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Pulse/constants.d.ts +4 -0
- package/lib/typescript/src/components/ui/Pulse/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Pulse/types.d.ts +6 -6
- package/lib/typescript/src/components/ui/Pulse/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Pulse/usePulse.d.ts +0 -9
- package/lib/typescript/src/components/ui/Pulse/usePulse.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Skeleton/Skeleton.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Skeleton/constants.d.ts +3 -0
- package/lib/typescript/src/components/ui/Skeleton/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Skeleton/types.d.ts +2 -2
- package/lib/typescript/src/components/ui/Skeleton/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TextField/constants.d.ts +4 -0
- package/lib/typescript/src/components/ui/TextField/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/TextField/styles.d.ts +6 -0
- package/lib/typescript/src/components/ui/TextField/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TextField/types.d.ts +36 -11
- package/lib/typescript/src/components/ui/TextField/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/TextField/useMultilineLayout.d.ts +4 -0
- package/lib/typescript/src/components/ui/TextField/useMultilineLayout.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/TextField/useMultilineLayout.web.d.ts +4 -0
- package/lib/typescript/src/components/ui/TextField/useMultilineLayout.web.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Textarea/types.d.ts +4 -2
- package/lib/typescript/src/components/ui/Textarea/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Thumbnail/constants.d.ts +4 -0
- package/lib/typescript/src/components/ui/Thumbnail/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Thumbnail/index.d.ts +1 -1
- package/lib/typescript/src/components/ui/Thumbnail/index.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Thumbnail/normalize.d.ts +2 -6
- package/lib/typescript/src/components/ui/Thumbnail/normalize.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts +9 -8
- package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/Thumbnail/types.d.ts +23 -5
- package/lib/typescript/src/components/ui/Thumbnail/types.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/index.d.ts +1 -1
- package/lib/typescript/src/components/ui/index.d.ts.map +1 -1
- package/lib/typescript/src/components/ui/shared/pulse/constants.d.ts +2 -0
- package/lib/typescript/src/components/ui/shared/pulse/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/shared/pulse/normalizePulseOptions.d.ts +7 -0
- package/lib/typescript/src/components/ui/shared/pulse/normalizePulseOptions.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/shared/pulse/types.d.ts +17 -0
- package/lib/typescript/src/components/ui/shared/pulse/types.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/shared/pulse/usePulseAnimation.d.ts +8 -0
- package/lib/typescript/src/components/ui/shared/pulse/usePulseAnimation.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/{Pulse → shared/pulse}/usePulseDriver.d.ts +1 -1
- package/lib/typescript/src/components/ui/shared/pulse/usePulseDriver.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/shared/pulse/usePulseDriver.web.d.ts +7 -0
- package/lib/typescript/src/components/ui/shared/pulse/usePulseDriver.web.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/components/ui/Avatar/Avatar.tsx +2 -6
- package/src/components/ui/Avatar/geometry.ts +30 -0
- package/src/components/ui/Avatar/styles.ts +2 -30
- package/src/components/ui/Avatar/types.ts +8 -2
- package/src/components/ui/AvatarGroup/AvatarGroup.tsx +1 -1
- package/src/components/ui/CircularProgress/CircularProgress.tsx +20 -26
- package/src/components/ui/CircularProgress/normalizeCircularProgress.ts +7 -15
- package/src/components/ui/CircularProgress/styles.ts +13 -0
- package/src/components/ui/CircularProgress/types.ts +19 -2
- package/src/components/ui/Pulse/PulseDot.tsx +6 -5
- package/src/components/ui/Pulse/constants.ts +14 -0
- package/src/components/ui/Pulse/types.ts +6 -6
- package/src/components/ui/Pulse/usePulse.ts +4 -81
- package/src/components/ui/Skeleton/Skeleton.tsx +6 -6
- package/src/components/ui/Skeleton/constants.ts +8 -0
- package/src/components/ui/Skeleton/types.ts +2 -2
- package/src/components/ui/TextField/TextFieldBase.tsx +28 -4
- package/src/components/ui/TextField/constants.ts +6 -0
- package/src/components/ui/TextField/styles.ts +8 -2
- package/src/components/ui/TextField/types.ts +41 -11
- package/src/components/ui/TextField/useMultilineLayout.ts +20 -0
- package/src/components/ui/TextField/useMultilineLayout.web.ts +59 -0
- package/src/components/ui/Textarea/types.ts +9 -6
- package/src/components/ui/Thumbnail/Thumbnail.tsx +19 -5
- package/src/components/ui/Thumbnail/constants.ts +24 -0
- package/src/components/ui/Thumbnail/index.ts +1 -0
- package/src/components/ui/Thumbnail/normalize.ts +38 -19
- package/src/components/ui/Thumbnail/styles.ts +6 -17
- package/src/components/ui/Thumbnail/types.ts +27 -5
- package/src/components/ui/index.ts +1 -0
- package/src/components/ui/shared/pulse/constants.ts +2 -0
- package/src/components/ui/shared/pulse/normalizePulseOptions.ts +48 -0
- package/src/components/ui/shared/pulse/types.ts +18 -0
- package/src/components/ui/shared/pulse/usePulseAnimation.ts +29 -0
- package/src/components/ui/{Pulse → shared/pulse}/usePulseDriver.ts +2 -2
- package/src/components/ui/{Pulse → shared/pulse}/usePulseDriver.web.ts +4 -19
- package/lib/module/components/ui/Pulse/normalizePulseOptions.js.map +0 -1
- package/lib/module/components/ui/Pulse/usePulseDriver.js.map +0 -1
- package/lib/module/components/ui/Pulse/usePulseDriver.web.js.map +0 -1
- package/lib/typescript/src/components/ui/Pulse/normalizePulseOptions.d.ts +0 -32
- package/lib/typescript/src/components/ui/Pulse/normalizePulseOptions.d.ts.map +0 -1
- package/lib/typescript/src/components/ui/Pulse/usePulseDriver.d.ts.map +0 -1
- package/lib/typescript/src/components/ui/Pulse/usePulseDriver.web.d.ts +0 -18
- package/lib/typescript/src/components/ui/Pulse/usePulseDriver.web.d.ts.map +0 -1
- package/src/components/ui/Pulse/normalizePulseOptions.ts +0 -76
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","forwardRef","useEffect","useImperativeHandle","useState","Platform","Text","TextInput","View","fixed","
|
|
1
|
+
{"version":3,"names":["React","forwardRef","useEffect","useImperativeHandle","useState","Platform","Text","TextInput","View","fixed","useColors","useThemedStyles","childTestID","createLogger","normalizeInputHeight","normalizeTextareaHeights","sanitizeTextFieldContainerStyle","makeStyles","TextFieldSlot","useErrorAnnouncement","useTextFieldValue","useMultilineLayout","jsx","_jsx","jsxs","_jsxs","log","TextFieldBase","props","forwardedRef","multiline","height","minHeight","maxHeight","searchLayout","leading","trailing","error","disabled","editable","containerStyle","value","defaultValue","onChangeText","accessibilityState","accessibilityRole","placeholderTextColor","callerPlaceholder","onFocus","onBlur","onContentSizeChange","onLayout","scrollEnabled","testID","style","_style","numberOfLines","_numberOfLines","_ariaDisabled","readOnly","_readOnly","role","_role","enterKeyHint","_enterKeyHint","clearTextOnFocus","_clearTextOnFocus","allowedNativeProps","removedNativeAliasKey","Object","entries","filter","entry","undefined","map","name","join","colors","styles","focused","setFocused","nativeRef","useRef","scope","controller","normalizedInputHeight","hitTarget","normalizedTextareaHeights","multilineLayout","enabled","fontSize","input","placeholder","inputRef","sanitizedContainer","effectiveEditable","mergedAccessibilityState","normalizedHeight","filled","length","diagnostics","diagnosticKey","warn","focus","current","blur","wrapStateStyles","wrapActive","wrapError","wrapFocus","wrapFilled","wrapIdle","interactiveHeight","containerDisabled","rootCentered","minWidth","children","wrap","wrapMultiline","searchInteractiveRow","pointerEvents","searchVisibleSurface","top","verticalInset","bottom","slot","ref","event","inputMultiline","inputScrolling","inputClipped","inputStyle","foregroundSubtle","errorMsg","accessibilityLiveRegion","OS","displayName"],"sourceRoot":"../../../../../src","sources":["components/ui/TextField/TextFieldBase.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { space } from "../../../theme/index.js";
|
|
4
|
+
export const TEXT_FIELD_BORDER_WIDTH = 1;
|
|
5
|
+
export const TEXTAREA_VERTICAL_PADDING = space[4];
|
|
6
|
+
export const TEXTAREA_VERTICAL_INSET = 2 * (TEXTAREA_VERTICAL_PADDING + TEXT_FIELD_BORDER_WIDTH);
|
|
7
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["space","TEXT_FIELD_BORDER_WIDTH","TEXTAREA_VERTICAL_PADDING","TEXTAREA_VERTICAL_INSET"],"sourceRoot":"../../../../../src","sources":["components/ui/TextField/constants.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,yBAAgB;AAEtC,OAAO,MAAMC,uBAAuB,GAAG,CAAC;AACxC,OAAO,MAAMC,yBAAyB,GAAGF,KAAK,CAAC,CAAC,CAAC;AACjD,OAAO,MAAMG,uBAAuB,GAClC,CAAC,IAAID,yBAAyB,GAAGD,uBAAuB,CAAC","ignoreList":[]}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { StyleSheet } from 'react-native';
|
|
4
4
|
import { fw, radius, space, type as t } from "../../../theme/index.js";
|
|
5
|
+
import { TEXTAREA_VERTICAL_PADDING, TEXT_FIELD_BORDER_WIDTH } from "./constants.js";
|
|
6
|
+
|
|
5
7
|
/** TextField primitive styles —— Input + Textarea 共享。 */
|
|
6
8
|
export const makeStyles = c => StyleSheet.create({
|
|
7
9
|
wrap: {
|
|
@@ -10,10 +12,10 @@ export const makeStyles = c => StyleSheet.create({
|
|
|
10
12
|
gap: space[3],
|
|
11
13
|
paddingHorizontal: space[5],
|
|
12
14
|
borderRadius: radius.md,
|
|
13
|
-
borderWidth:
|
|
15
|
+
borderWidth: TEXT_FIELD_BORDER_WIDTH
|
|
14
16
|
},
|
|
15
17
|
wrapMultiline: {
|
|
16
|
-
paddingVertical:
|
|
18
|
+
paddingVertical: TEXTAREA_VERTICAL_PADDING,
|
|
17
19
|
alignItems: 'flex-start'
|
|
18
20
|
},
|
|
19
21
|
/** Search 的可见底色/边框绝不承载命中区域。 */
|
|
@@ -58,6 +60,12 @@ export const makeStyles = c => StyleSheet.create({
|
|
|
58
60
|
inputMultiline: {
|
|
59
61
|
textAlignVertical: 'top'
|
|
60
62
|
},
|
|
63
|
+
inputScrolling: {
|
|
64
|
+
overflow: 'scroll'
|
|
65
|
+
},
|
|
66
|
+
inputClipped: {
|
|
67
|
+
overflow: 'hidden'
|
|
68
|
+
},
|
|
61
69
|
slotDisplay: {
|
|
62
70
|
alignItems: 'center',
|
|
63
71
|
justifyContent: 'center',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","fw","radius","space","type","t","makeStyles","c","create","wrap","flexDirection","alignItems","gap","paddingHorizontal","borderRadius","md","borderWidth","wrapMultiline","paddingVertical","searchInteractiveRow","searchVisibleSurface","position","left","right","wrapIdle","backgroundColor","surfaceContainerHigh","borderColor","wrapActive","surface","wrapFocus","primary","wrapFilled","outline","wrapError","error","input","flex","minWidth","fontSize","body","color","foreground","padding","margin","outlineWidth","inputMultiline","textAlignVertical","slotDisplay","justifyContent","minHeight","slotText","foregroundMuted","sm","slotActionLabel","xs","fontWeight","medium","slotActionLabelDisabled","foregroundSubtle","actionFrame","height","errorMsg","micro","marginTop","regular","containerDisabled","opacity","rootCentered"],"sourceRoot":"../../../../../src","sources":["components/ui/TextField/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,EAAE,EAAEC,MAAM,EAAEC,KAAK,EAAEC,IAAI,IAAIC,CAAC,QAAQ,yBAAgB;
|
|
1
|
+
{"version":3,"names":["StyleSheet","fw","radius","space","type","t","TEXTAREA_VERTICAL_PADDING","TEXT_FIELD_BORDER_WIDTH","makeStyles","c","create","wrap","flexDirection","alignItems","gap","paddingHorizontal","borderRadius","md","borderWidth","wrapMultiline","paddingVertical","searchInteractiveRow","searchVisibleSurface","position","left","right","wrapIdle","backgroundColor","surfaceContainerHigh","borderColor","wrapActive","surface","wrapFocus","primary","wrapFilled","outline","wrapError","error","input","flex","minWidth","fontSize","body","color","foreground","padding","margin","outlineWidth","inputMultiline","textAlignVertical","inputScrolling","overflow","inputClipped","slotDisplay","justifyContent","minHeight","slotText","foregroundMuted","sm","slotActionLabel","xs","fontWeight","medium","slotActionLabelDisabled","foregroundSubtle","actionFrame","height","errorMsg","micro","marginTop","regular","containerDisabled","opacity","rootCentered"],"sourceRoot":"../../../../../src","sources":["components/ui/TextField/styles.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { TEXTAREA_VERTICAL_INSET } from "./constants.js";
|
|
4
|
+
/** 原生 Yoga 直接测量文本;固定 height 会阻断 iOS Fabric 的后续内容尺寸通知。 */
|
|
5
|
+
export function useMultilineLayout({
|
|
6
|
+
minHeight,
|
|
7
|
+
maxHeight
|
|
8
|
+
}) {
|
|
9
|
+
return {
|
|
10
|
+
inputStyle: {
|
|
11
|
+
minHeight: Math.max(0, minHeight - TEXTAREA_VERTICAL_INSET),
|
|
12
|
+
maxHeight: maxHeight === undefined ? undefined : Math.max(0, maxHeight - TEXTAREA_VERTICAL_INSET)
|
|
13
|
+
},
|
|
14
|
+
// 原生仅在内容溢出时滚动;min=max 时也不等待不会再变化的框高事件。
|
|
15
|
+
scrollEnabled: true
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=useMultilineLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TEXTAREA_VERTICAL_INSET","useMultilineLayout","minHeight","maxHeight","inputStyle","Math","max","undefined","scrollEnabled"],"sourceRoot":"../../../../../src","sources":["components/ui/TextField/useMultilineLayout.ts"],"mappings":";;AAAA,SAASA,uBAAuB,QAAQ,gBAAa;AAGrD;AACA,OAAO,SAASC,kBAAkBA,CAAC;EACjCC,SAAS;EACTC;AACoB,CAAC,EAAmB;EACxC,OAAO;IACLC,UAAU,EAAE;MACVF,SAAS,EAAEG,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEJ,SAAS,GAAGF,uBAAuB,CAAC;MAC3DG,SAAS,EACPA,SAAS,KAAKI,SAAS,GACnBA,SAAS,GACTF,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEH,SAAS,GAAGH,uBAAuB;IACvD,CAAC;IACD;IACAQ,aAAa,EAAE;EACjB,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useLayoutEffect, useState } from 'react';
|
|
4
|
+
import { TEXTAREA_VERTICAL_INSET } from "./constants.js";
|
|
5
|
+
/** RNW 的 contentSize 使用 scrollHeight,固定高度会阻止缩短,须临时解除高度后测量。 */
|
|
6
|
+
export function useMultilineLayout({
|
|
7
|
+
enabled,
|
|
8
|
+
value,
|
|
9
|
+
minHeight,
|
|
10
|
+
maxHeight,
|
|
11
|
+
fontSize,
|
|
12
|
+
placeholder,
|
|
13
|
+
inputRef
|
|
14
|
+
}) {
|
|
15
|
+
const [contentHeight, setContentHeight] = useState(0);
|
|
16
|
+
const [width, setWidth] = useState(0);
|
|
17
|
+
const minimum = Math.max(0, minHeight - TEXTAREA_VERTICAL_INSET);
|
|
18
|
+
const maximum = maxHeight === undefined ? Infinity : Math.max(0, maxHeight - TEXTAREA_VERTICAL_INSET);
|
|
19
|
+
useLayoutEffect(() => {
|
|
20
|
+
if (!enabled || inputRef.current === null) return;
|
|
21
|
+
const node = inputRef.current;
|
|
22
|
+
const {
|
|
23
|
+
height,
|
|
24
|
+
minHeight: previousMinimum
|
|
25
|
+
} = node.style;
|
|
26
|
+
const scrollTop = node.scrollTop;
|
|
27
|
+
node.style.height = '0px';
|
|
28
|
+
node.style.minHeight = '0px';
|
|
29
|
+
const measured = node.scrollHeight;
|
|
30
|
+
node.style.height = height;
|
|
31
|
+
node.style.minHeight = previousMinimum;
|
|
32
|
+
node.scrollTop = scrollTop;
|
|
33
|
+
if (Number.isFinite(measured)) setContentHeight(measured);
|
|
34
|
+
}, [enabled, value, width, fontSize, placeholder, minHeight, maxHeight, inputRef]);
|
|
35
|
+
const onLayout = useCallback(event => setWidth(event.nativeEvent.layout.width), []);
|
|
36
|
+
return {
|
|
37
|
+
inputStyle: {
|
|
38
|
+
height: Math.min(maximum, Math.max(minimum, contentHeight))
|
|
39
|
+
},
|
|
40
|
+
scrollEnabled: contentHeight > maximum,
|
|
41
|
+
onLayout
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=useMultilineLayout.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useLayoutEffect","useState","TEXTAREA_VERTICAL_INSET","useMultilineLayout","enabled","value","minHeight","maxHeight","fontSize","placeholder","inputRef","contentHeight","setContentHeight","width","setWidth","minimum","Math","max","maximum","undefined","Infinity","current","node","height","previousMinimum","style","scrollTop","measured","scrollHeight","Number","isFinite","onLayout","event","nativeEvent","layout","inputStyle","min","scrollEnabled"],"sourceRoot":"../../../../../src","sources":["components/ui/TextField/useMultilineLayout.web.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,eAAe,EAAEC,QAAQ,QAAQ,OAAO;AAC9D,SAASC,uBAAuB,QAAQ,gBAAa;AAOrD;AACA,OAAO,SAASC,kBAAkBA,CAAC;EACjCC,OAAO;EACPC,KAAK;EACLC,SAAS;EACTC,SAAS;EACTC,QAAQ;EACRC,WAAW;EACXC;AACoB,CAAC,EAAmB;EACxC,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGX,QAAQ,CAAC,CAAC,CAAC;EACrD,MAAM,CAACY,KAAK,EAAEC,QAAQ,CAAC,GAAGb,QAAQ,CAAC,CAAC,CAAC;EACrC,MAAMc,OAAO,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEX,SAAS,GAAGJ,uBAAuB,CAAC;EAChE,MAAMgB,OAAO,GACXX,SAAS,KAAKY,SAAS,GACnBC,QAAQ,GACRJ,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEV,SAAS,GAAGL,uBAAuB,CAAC;EACtDF,eAAe,CAAC,MAAM;IACpB,IAAI,CAACI,OAAO,IAAIM,QAAQ,CAACW,OAAO,KAAK,IAAI,EAAE;IAC3C,MAAMC,IAAI,GAAGZ,QAAQ,CAACW,OAA6C;IACnE,MAAM;MAAEE,MAAM;MAAEjB,SAAS,EAAEkB;IAAgB,CAAC,GAAGF,IAAI,CAACG,KAAK;IACzD,MAAMC,SAAS,GAAGJ,IAAI,CAACI,SAAS;IAChCJ,IAAI,CAACG,KAAK,CAACF,MAAM,GAAG,KAAK;IACzBD,IAAI,CAACG,KAAK,CAACnB,SAAS,GAAG,KAAK;IAC5B,MAAMqB,QAAQ,GAAGL,IAAI,CAACM,YAAY;IAClCN,IAAI,CAACG,KAAK,CAACF,MAAM,GAAGA,MAAM;IAC1BD,IAAI,CAACG,KAAK,CAACnB,SAAS,GAAGkB,eAAe;IACtCF,IAAI,CAACI,SAAS,GAAGA,SAAS;IAC1B,IAAIG,MAAM,CAACC,QAAQ,CAACH,QAAQ,CAAC,EAAEf,gBAAgB,CAACe,QAAQ,CAAC;EAC3D,CAAC,EAAE,CACDvB,OAAO,EACPC,KAAK,EACLQ,KAAK,EACLL,QAAQ,EACRC,WAAW,EACXH,SAAS,EACTC,SAAS,EACTG,QAAQ,CACT,CAAC;EACF,MAAMqB,QAAQ,GAAGhC,WAAW,CACzBiC,KAAK,IAAKlB,QAAQ,CAACkB,KAAK,CAACC,WAAW,CAACC,MAAM,CAACrB,KAAK,CAAC,EACnD,EACF,CAAC;EACD,OAAO;IACLsB,UAAU,EAAE;MACVZ,MAAM,EAAEP,IAAI,CAACoB,GAAG,CAAClB,OAAO,EAAEF,IAAI,CAACC,GAAG,CAACF,OAAO,EAAEJ,aAAa,CAAC;IAC5D,CAAC;IACD0B,aAAa,EAAE1B,aAAa,GAAGO,OAAO;IACtCa;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -7,8 +7,8 @@ import { resolveImageSource } from "../../../utils/imageSource.js";
|
|
|
7
7
|
import { createLogger } from "../../../utils/logger/index.js";
|
|
8
8
|
import { ImageAttempt } from "../shared/ImageAttempt.js";
|
|
9
9
|
import { A11Y_HIDDEN_PROPS } from "../shared/a11y.js";
|
|
10
|
-
import { sanitizeThumbnailImageStyle } from "./normalize.js";
|
|
11
|
-
import { makeStyles
|
|
10
|
+
import { normalizeThumbnailDimensions, sanitizeThumbnailImageStyle } from "./normalize.js";
|
|
11
|
+
import { makeStyles } from "./styles.js";
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
13
|
const log = createLogger('Thumbnail');
|
|
14
14
|
const hasOwn = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
|
|
@@ -22,6 +22,7 @@ export function Thumbnail(props) {
|
|
|
22
22
|
uri,
|
|
23
23
|
source,
|
|
24
24
|
size = 'md',
|
|
25
|
+
fallback,
|
|
25
26
|
selected,
|
|
26
27
|
containerStyle,
|
|
27
28
|
imageStyle,
|
|
@@ -31,7 +32,8 @@ export function Thumbnail(props) {
|
|
|
31
32
|
} = props;
|
|
32
33
|
const colors = useColors();
|
|
33
34
|
const styles = useThemedStyles(makeStyles);
|
|
34
|
-
const
|
|
35
|
+
const normalizedDimensions = normalizeThumbnailDimensions(size);
|
|
36
|
+
const dim = normalizedDimensions.dimensions;
|
|
35
37
|
const hasUri = hasOwn(props, 'uri');
|
|
36
38
|
const hasSource = hasOwn(props, 'source');
|
|
37
39
|
const sourceCandidate = hasUri !== hasSource ? hasUri && typeof uri === 'string' ? {
|
|
@@ -39,7 +41,7 @@ export function Thumbnail(props) {
|
|
|
39
41
|
} : source : undefined;
|
|
40
42
|
const resolvedSource = resolveImageSource(sourceCandidate);
|
|
41
43
|
const sanitizedImageStyle = sanitizeThumbnailImageStyle(imageStyle);
|
|
42
|
-
const diagnostics = [...(resolvedSource === undefined ? ['source'] : []), ...sanitizedImageStyle.diagnostics.map(field => field === 'style' ? 'imageStyle' : `imageStyle.${field}`)];
|
|
44
|
+
const diagnostics = [...normalizedDimensions.diagnostics, ...(resolvedSource === undefined ? ['source'] : []), ...sanitizedImageStyle.diagnostics.map(field => field === 'style' ? 'imageStyle' : `imageStyle.${field}`)];
|
|
43
45
|
const diagnosticKey = diagnostics.join(',');
|
|
44
46
|
useEffect(() => {
|
|
45
47
|
if (__DEV__ && diagnosticKey.length > 0) {
|
|
@@ -56,16 +58,21 @@ export function Thumbnail(props) {
|
|
|
56
58
|
borderRadius: dim.borderRadius,
|
|
57
59
|
borderColor: selected ? colors.primary : 'transparent'
|
|
58
60
|
};
|
|
61
|
+
const fallbackContent = fallback === undefined ? null : /*#__PURE__*/_jsx(View, {
|
|
62
|
+
...imageAccessibilityProps,
|
|
63
|
+
style: styles.fallback,
|
|
64
|
+
children: fallback
|
|
65
|
+
});
|
|
59
66
|
return /*#__PURE__*/_jsx(View, {
|
|
60
67
|
style: containerStyle,
|
|
61
68
|
testID: testID,
|
|
62
69
|
children: /*#__PURE__*/_jsxs(View, {
|
|
63
70
|
style: [styles.visualFrame, dim],
|
|
64
|
-
children: [resolvedSource === undefined ?
|
|
71
|
+
children: [resolvedSource === undefined ? fallbackContent : /*#__PURE__*/_createElement(ImageAttempt, {
|
|
65
72
|
...imageAccessibilityProps,
|
|
66
73
|
key: resolvedSource.key,
|
|
67
74
|
source: resolvedSource.source,
|
|
68
|
-
fallback:
|
|
75
|
+
fallback: fallbackContent,
|
|
69
76
|
style: [sanitizedImageStyle.style, StyleSheet.absoluteFill],
|
|
70
77
|
resizeMode: resizeMode
|
|
71
78
|
}), /*#__PURE__*/_jsx(View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","createElement","_createElement","StyleSheet","View","useColors","useThemedStyles","resolveImageSource","createLogger","ImageAttempt","A11Y_HIDDEN_PROPS","
|
|
1
|
+
{"version":3,"names":["React","useEffect","createElement","_createElement","StyleSheet","View","useColors","useThemedStyles","resolveImageSource","createLogger","ImageAttempt","A11Y_HIDDEN_PROPS","normalizeThumbnailDimensions","sanitizeThumbnailImageStyle","makeStyles","jsx","_jsx","jsxs","_jsxs","log","hasOwn","value","key","Object","prototype","hasOwnProperty","call","Thumbnail","props","uri","source","size","fallback","selected","containerStyle","imageStyle","resizeMode","accessibilityLabel","testID","colors","styles","normalizedDimensions","dim","dimensions","hasUri","hasSource","sourceCandidate","trim","undefined","resolvedSource","sanitizedImageStyle","diagnostics","map","field","diagnosticKey","join","__DEV__","length","warn","normalizedLabel","imageAccessibilityProps","accessible","accessibilityRole","ringStyle","borderRadius","borderColor","primary","fallbackContent","style","children","visualFrame","absoluteFill","pointerEvents","ring"],"sourceRoot":"../../../../../src","sources":["components/ui/Thumbnail/Thumbnail.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAAC,aAAA,IAAAC,cAAA,QAAQ,OAAO;AACxC,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,SAAS,EAAEC,eAAe,QAAQ,yBAAgB;AAC3D,SAASC,kBAAkB,QAAQ,+BAA4B;AAC/D,SAASC,YAAY,QAAQ,gCAAuB;AACpD,SAASC,YAAY,QAAQ,2BAAwB;AACrD,SAASC,iBAAiB,QAAQ,mBAAgB;AAClD,SACEC,4BAA4B,EAC5BC,2BAA2B,QACtB,gBAAa;AACpB,SAASC,UAAU,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGtC,MAAMC,GAAG,GAAGV,YAAY,CAAC,WAAW,CAAC;AACrC,MAAMW,MAAM,GAAGA,CAACC,KAAa,EAAEC,GAAgB,KAC7CC,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACL,KAAK,EAAEC,GAAG,CAAC;;AAElD;AACA;AACA;AACA;AACA,OAAO,SAASK,SAASA,CAACC,KAAqB,EAAqB;EAClE,MAAM;IACJC,GAAG;IACHC,MAAM;IACNC,IAAI,GAAG,IAAI;IACXC,QAAQ;IACRC,QAAQ;IACRC,cAAc;IACdC,UAAU;IACVC,UAAU,GAAG,OAAO;IACpBC,kBAAkB;IAClBC;EACF,CAAC,GAAGV,KAAK;EACT,MAAMW,MAAM,GAAGjC,SAAS,CAAC,CAAC;EAC1B,MAAMkC,MAAM,GAAGjC,eAAe,CAACO,UAAU,CAAC;EAC1C,MAAM2B,oBAAoB,GAAG7B,4BAA4B,CAACmB,IAAI,CAAC;EAC/D,MAAMW,GAAG,GAAGD,oBAAoB,CAACE,UAAU;EAC3C,MAAMC,MAAM,GAAGxB,MAAM,CAACQ,KAAK,EAAE,KAAK,CAAC;EACnC,MAAMiB,SAAS,GAAGzB,MAAM,CAACQ,KAAK,EAAE,QAAQ,CAAC;EACzC,MAAMkB,eAAe,GACnBF,MAAM,KAAKC,SAAS,GAChBD,MAAM,IAAI,OAAOf,GAAG,KAAK,QAAQ,GAC/B;IAAEA,GAAG,EAAEA,GAAG,CAACkB,IAAI,CAAC;EAAE,CAAC,GACnBjB,MAAM,GACRkB,SAAS;EACf,MAAMC,cAAc,GAAGzC,kBAAkB,CAACsC,eAAe,CAAC;EAC1D,MAAMI,mBAAmB,GAAGrC,2BAA2B,CAACsB,UAAU,CAAC;EACnE,MAAMgB,WAAW,GAAG,CAClB,GAAGV,oBAAoB,CAACU,WAAW,EACnC,IAAIF,cAAc,KAAKD,SAAS,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EACnD,GAAGE,mBAAmB,CAACC,WAAW,CAACC,GAAG,CAAEC,KAAK,IAC3CA,KAAK,KAAK,OAAO,GAAG,YAAY,GAAG,cAAcA,KAAK,EACxD,CAAC,CACF;EACD,MAAMC,aAAa,GAAGH,WAAW,CAACI,IAAI,CAAC,GAAG,CAAC;EAE3CtD,SAAS,CAAC,MAAM;IACd,IAAIuD,OAAO,IAAIF,aAAa,CAACG,MAAM,GAAG,CAAC,EAAE;MACvCtC,GAAG,CAACuC,IAAI,CAAC,sBAAsBJ,aAAa,OAAO,CAAC;IACtD;EACF,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAEnB,MAAMK,eAAe,GACnB,OAAOtB,kBAAkB,KAAK,QAAQ,GAClCA,kBAAkB,CAACU,IAAI,CAAC,CAAC,GACzBC,SAAS;EACf,MAAMY,uBAAuB,GAC3BD,eAAe,IAAIA,eAAe,CAACF,MAAM,GAAG,CAAC,GACzC;IACEI,UAAU,EAAE,IAAI;IAChBxB,kBAAkB,EAAEsB,eAAe;IACnCG,iBAAiB,EAAE;EACrB,CAAC,GACDnD,iBAAiB;EACvB,MAAMoD,SAAS,GAAG;IAChBC,YAAY,EAAEtB,GAAG,CAACsB,YAAY;IAC9BC,WAAW,EAAEhC,QAAQ,GAAGM,MAAM,CAAC2B,OAAO,GAAG;EAC3C,CAAC;EACD,MAAMC,eAAe,GACnBnC,QAAQ,KAAKgB,SAAS,GAAG,IAAI,gBAC3BhC,IAAA,CAACX,IAAI;IAAA,GAAKuD,uBAAuB;IAAEQ,KAAK,EAAE5B,MAAM,CAACR,QAAS;IAAAqC,QAAA,EACvDrC;EAAQ,CACL,CACP;EAEH,oBACEhB,IAAA,CAACX,IAAI;IAAC+D,KAAK,EAAElC,cAAe;IAACI,MAAM,EAAEA,MAAO;IAAA+B,QAAA,eAC1CnD,KAAA,CAACb,IAAI;MAAC+D,KAAK,EAAE,CAAC5B,MAAM,CAAC8B,WAAW,EAAE5B,GAAG,CAAE;MAAA2B,QAAA,GACpCpB,cAAc,KAAKD,SAAS,GAC3BmB,eAAe,gBAEfhE,cAAA,CAACO,YAAY;QAAA,GACPkD,uBAAuB;QAC3BtC,GAAG,EAAE2B,cAAc,CAAC3B,GAAI;QACxBQ,MAAM,EAAEmB,cAAc,CAACnB,MAAO;QAC9BE,QAAQ,EAAEmC,eAAgB;QAC1BC,KAAK,EAAE,CAAClB,mBAAmB,CAACkB,KAAK,EAAEhE,UAAU,CAACmE,YAAY,CAAE;QAC5DnC,UAAU,EAAEA;MAAW,CACxB,CACF,eACDpB,IAAA,CAACX,IAAI;QAAA,GACCM,iBAAiB;QACrB6D,aAAa,EAAC,MAAM;QACpBJ,KAAK,EAAE,CAAChE,UAAU,CAACmE,YAAY,EAAE/B,MAAM,CAACiC,IAAI,EAAEV,SAAS;MAAE,CAC1D,CAAC;IAAA,CACE;EAAC,CACH,CAAC;AAEX","ignoreList":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { r } from "../../../theme/index.js";
|
|
4
|
+
export const THUMBNAIL_DIMENSIONS = {
|
|
5
|
+
sm: {
|
|
6
|
+
width: r(64),
|
|
7
|
+
height: r(40),
|
|
8
|
+
borderRadius: r(6)
|
|
9
|
+
},
|
|
10
|
+
md: {
|
|
11
|
+
width: r(113),
|
|
12
|
+
height: r(67),
|
|
13
|
+
borderRadius: r(8)
|
|
14
|
+
},
|
|
15
|
+
lg: {
|
|
16
|
+
width: r(160),
|
|
17
|
+
height: r(96),
|
|
18
|
+
borderRadius: r(10)
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
export const RESERVED_IMAGE_STYLE_KEYS = ['position', 'top', 'right', 'bottom', 'left', 'width', 'height', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight'];
|
|
22
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["r","THUMBNAIL_DIMENSIONS","sm","width","height","borderRadius","md","lg","RESERVED_IMAGE_STYLE_KEYS"],"sourceRoot":"../../../../../src","sources":["components/ui/Thumbnail/constants.ts"],"mappings":";;AAAA,SAASA,CAAC,QAAQ,yBAAgB;AAGlC,OAAO,MAAMC,oBAEZ,GAAG;EACFC,EAAE,EAAE;IAAEC,KAAK,EAAEH,CAAC,CAAC,EAAE,CAAC;IAAEI,MAAM,EAAEJ,CAAC,CAAC,EAAE,CAAC;IAAEK,YAAY,EAAEL,CAAC,CAAC,CAAC;EAAE,CAAC;EACvDM,EAAE,EAAE;IAAEH,KAAK,EAAEH,CAAC,CAAC,GAAG,CAAC;IAAEI,MAAM,EAAEJ,CAAC,CAAC,EAAE,CAAC;IAAEK,YAAY,EAAEL,CAAC,CAAC,CAAC;EAAE,CAAC;EACxDO,EAAE,EAAE;IAAEJ,KAAK,EAAEH,CAAC,CAAC,GAAG,CAAC;IAAEI,MAAM,EAAEJ,CAAC,CAAC,EAAE,CAAC;IAAEK,YAAY,EAAEL,CAAC,CAAC,EAAE;EAAE;AAC1D,CAAC;AAED,OAAO,MAAMQ,yBAAyB,GAAG,CACvC,UAAU,EACV,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,OAAO,EACP,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,CACH","ignoreList":[]}
|
|
@@ -1,7 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { StyleSheet } from 'react-native';
|
|
4
|
-
|
|
4
|
+
import { RESERVED_IMAGE_STYLE_KEYS, THUMBNAIL_DIMENSIONS } from "./constants.js";
|
|
5
|
+
export function normalizeThumbnailDimensions(size) {
|
|
6
|
+
if (size === undefined || size === 'sm' || size === 'md' || size === 'lg') {
|
|
7
|
+
return {
|
|
8
|
+
dimensions: THUMBNAIL_DIMENSIONS[size ?? 'md'],
|
|
9
|
+
diagnostics: []
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
if (typeof size === 'object' && size !== null && !Array.isArray(size)) {
|
|
13
|
+
const {
|
|
14
|
+
width,
|
|
15
|
+
height,
|
|
16
|
+
borderRadius
|
|
17
|
+
} = size;
|
|
18
|
+
if (typeof width === 'number' && Number.isFinite(width) && width > 0 && typeof height === 'number' && Number.isFinite(height) && height > 0 && (borderRadius === undefined || typeof borderRadius === 'number' && Number.isFinite(borderRadius) && borderRadius >= 0)) {
|
|
19
|
+
return {
|
|
20
|
+
dimensions: {
|
|
21
|
+
width,
|
|
22
|
+
height,
|
|
23
|
+
borderRadius: borderRadius ?? THUMBNAIL_DIMENSIONS.md.borderRadius
|
|
24
|
+
},
|
|
25
|
+
diagnostics: []
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
dimensions: THUMBNAIL_DIMENSIONS.md,
|
|
31
|
+
diagnostics: ['size']
|
|
32
|
+
};
|
|
33
|
+
}
|
|
5
34
|
function invalidStyle() {
|
|
6
35
|
return {
|
|
7
36
|
style: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","RESERVED_IMAGE_STYLE_KEYS","
|
|
1
|
+
{"version":3,"names":["StyleSheet","RESERVED_IMAGE_STYLE_KEYS","THUMBNAIL_DIMENSIONS","normalizeThumbnailDimensions","size","undefined","dimensions","diagnostics","Array","isArray","width","height","borderRadius","Number","isFinite","md","invalidStyle","style","isEmptyStyleInput","value","every","sanitizeThumbnailImageStyle","flattened","flatten","source","reserved","Set","foundReserved","sanitized","key","Object","entries","has","add","filter"],"sourceRoot":"../../../../../src","sources":["components/ui/Thumbnail/normalize.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { StyleSheet } from 'react-native';
|
|
4
|
-
import { r } from "../../../theme/index.js";
|
|
5
4
|
/** Thumbnail 静态样式 ——
|
|
6
5
|
* - `visualFrame`:固定尺寸、裁切、加载失败 placeholder
|
|
7
6
|
* - `ring`:始终存在的 2pt visual overlay,selected 只切颜色 */
|
|
@@ -12,33 +11,11 @@ export const makeStyles = c => StyleSheet.create({
|
|
|
12
11
|
},
|
|
13
12
|
ring: {
|
|
14
13
|
borderWidth: 2
|
|
14
|
+
},
|
|
15
|
+
fallback: {
|
|
16
|
+
...StyleSheet.absoluteFill,
|
|
17
|
+
alignItems: 'center',
|
|
18
|
+
justifyContent: 'center'
|
|
15
19
|
}
|
|
16
20
|
});
|
|
17
|
-
|
|
18
|
-
/** Thumbnail size 阶梯 —— width / height / borderRadius 全 r() 缩放。
|
|
19
|
-
* 新增 size 在 types.ts 加 union + 这里加 case,两处同步。 */
|
|
20
|
-
export const sizingFor = size => {
|
|
21
|
-
switch (size) {
|
|
22
|
-
case 'sm':
|
|
23
|
-
return {
|
|
24
|
-
width: r(64),
|
|
25
|
-
height: r(40),
|
|
26
|
-
borderRadius: r(6)
|
|
27
|
-
};
|
|
28
|
-
case 'lg':
|
|
29
|
-
return {
|
|
30
|
-
width: r(160),
|
|
31
|
-
height: r(96),
|
|
32
|
-
borderRadius: r(10)
|
|
33
|
-
};
|
|
34
|
-
case 'md':
|
|
35
|
-
default:
|
|
36
|
-
// 113×67 与 NewsList / NewsArea 历史一致,16:9.5 接近视频宽高比
|
|
37
|
-
return {
|
|
38
|
-
width: r(113),
|
|
39
|
-
height: r(67),
|
|
40
|
-
borderRadius: r(8)
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
21
|
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","
|
|
1
|
+
{"version":3,"names":["StyleSheet","makeStyles","c","create","visualFrame","backgroundColor","surfaceContainer","overflow","ring","borderWidth","fallback","absoluteFill","alignItems","justifyContent"],"sourceRoot":"../../../../../src","sources":["components/ui/Thumbnail/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AAGzC;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAIC,CAAc,IACvCF,UAAU,CAACG,MAAM,CAAC;EAChBC,WAAW,EAAE;IACXC,eAAe,EAAEH,CAAC,CAACI,gBAAgB;IACnCC,QAAQ,EAAE;EACZ,CAAC;EACDC,IAAI,EAAE;IACJC,WAAW,EAAE;EACf,CAAC;EACDC,QAAQ,EAAE;IACR,GAAGV,UAAU,CAACW,YAAY;IAC1BC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Avatar","AvatarGroup","BlurLayer","BorderBeam","Button","Card","Carousel","Cell","List","Checkbox","Chip","CircularProgress","confirm","ConfirmHost","DrawerHeader","Empty","EntryCard","Form","FormGroup","FormRow","Grid","Icon","IconButton","Input","Logo","NavBar","PasswordInput","Pulse","PulseDot","usePulse","Radio","Reveal","Ribbon","Search","Skeleton","Segmented","Spinner","StatusDot","Stepper","Switch","TabBar","Tabs","Tag","Textarea","Thumbnail","toast","ToastHost"],"sourceRoot":"../../../../src","sources":["components/ui/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,mBAAU;AAOjC,SAASC,WAAW,QAAQ,wBAAe;AAE3C,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,UAAU,QAAQ,uBAAc;AAEzC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,IAAI,EAAEC,IAAI,QAAQ,iBAAQ;AAQnC,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,gBAAgB,QAAQ,6BAAoB;AAErD,SAASC,OAAO,EAAEC,WAAW,QAAQ,oBAAW;AAEhD,SAASC,YAAY,QAAQ,yBAAgB;AAE7C,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,IAAI,EAAEC,SAAS,EAAEC,OAAO,QAAQ,iBAAQ;AAEjD,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,UAAU,QAAQ,uBAAc;AAEzC,SAASC,KAAK,QAAQ,kBAAS;AAO/B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,aAAa,QAAQ,0BAAiB;AAE/C,SAASC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,QAAQ,kBAAS;AAEnD,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,OAAO,QAAQ,oBAAW;AAEnC,SAASC,SAAS,QAAQ,sBAAa;AAMvC,SAASC,OAAO,QAAQ,oBAAW;AAEnC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,GAAG,QAAQ,gBAAO;AAE3B,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,SAAS,QAAQ,sBAAa;
|
|
1
|
+
{"version":3,"names":["Avatar","AvatarGroup","BlurLayer","BorderBeam","Button","Card","Carousel","Cell","List","Checkbox","Chip","CircularProgress","confirm","ConfirmHost","DrawerHeader","Empty","EntryCard","Form","FormGroup","FormRow","Grid","Icon","IconButton","Input","Logo","NavBar","PasswordInput","Pulse","PulseDot","usePulse","Radio","Reveal","Ribbon","Search","Skeleton","Segmented","Spinner","StatusDot","Stepper","Switch","TabBar","Tabs","Tag","Textarea","Thumbnail","toast","ToastHost"],"sourceRoot":"../../../../src","sources":["components/ui/index.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,mBAAU;AAOjC,SAASC,WAAW,QAAQ,wBAAe;AAE3C,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,UAAU,QAAQ,uBAAc;AAEzC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,IAAI,EAAEC,IAAI,QAAQ,iBAAQ;AAQnC,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,gBAAgB,QAAQ,6BAAoB;AAErD,SAASC,OAAO,EAAEC,WAAW,QAAQ,oBAAW;AAEhD,SAASC,YAAY,QAAQ,yBAAgB;AAE7C,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,IAAI,EAAEC,SAAS,EAAEC,OAAO,QAAQ,iBAAQ;AAEjD,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,UAAU,QAAQ,uBAAc;AAEzC,SAASC,KAAK,QAAQ,kBAAS;AAO/B,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,aAAa,QAAQ,0BAAiB;AAE/C,SAASC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,QAAQ,kBAAS;AAEnD,SAASC,KAAK,QAAQ,kBAAS;AAE/B,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,SAAS,QAAQ,sBAAa;AAEvC,SAASC,OAAO,QAAQ,oBAAW;AAEnC,SAASC,SAAS,QAAQ,sBAAa;AAMvC,SAASC,OAAO,QAAQ,oBAAW;AAEnC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SAASC,IAAI,QAAQ,iBAAQ;AAE7B,SAASC,GAAG,QAAQ,gBAAO;AAE3B,SAASC,QAAQ,QAAQ,qBAAY;AAErC,SAASC,SAAS,QAAQ,sBAAa;AAOvC,SAASC,KAAK,EAAEC,SAAS,QAAQ,kBAAS","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MAX_TIMER"],"sourceRoot":"../../../../../../src","sources":["components/ui/shared/pulse/constants.ts"],"mappings":";;AAAA;AACA,OAAO,MAAMA,SAAS,GAAG,CAAC,IAAI,EAAE","ignoreList":[]}
|
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
* Pulse 参数的**唯一**归一化入口 —— 公共 hook 先跑完这里,平台 driver 只消费产物。
|
|
5
|
-
*
|
|
6
|
-
* 为什么要单独一层:此前 native / web 两份 `usePulse` 各自读原始 props 并各自解释
|
|
7
|
-
* 默认值,web 侧甚至把未校验的 `duration` 直接喂给 `setInterval`(0 或 2^31 会退化成
|
|
8
|
-
* 「每帧触发」)。归一化收口后,两端拿到的一定是同一组已验证数值。
|
|
9
|
-
*
|
|
10
|
-
* 纪律:**不做 clamp、不做取整**。非法值一律整体回退到 defaults 并记一条诊断 ——
|
|
11
|
-
* 悄悄把 `duration: 0` 夹成 `1` 会让调用方永远发现不了自己传错了。
|
|
12
|
-
*/
|
|
3
|
+
import { MAX_TIMER } from "./constants.js";
|
|
13
4
|
|
|
14
|
-
|
|
15
|
-
const MAX_TIMER = 2 ** 31;
|
|
5
|
+
/** 共用的参数校验:非法字段采用所属组件默认值并报告诊断,不夹值或取整。 */
|
|
16
6
|
export function normalizePulseOptions(input = {}, defaults) {
|
|
17
7
|
const diagnostics = [];
|
|
18
8
|
const pick = (field, valid) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MAX_TIMER","normalizePulseOptions","input","defaults","diagnostics","pick","field","valid","received","undefined","push","fallback","duration","value","Number","isFinite","delay","from","to","isStatic","shouldAnimatePulse","options","reducedMotion"],"sourceRoot":"../../../../../../src","sources":["components/ui/shared/pulse/normalizePulseOptions.ts"],"mappings":";;AAMA,SAASA,SAAS,QAAQ,gBAAa;;AAEvC;AACA,OAAO,SAASC,qBAAqBA,CACnCC,KAAmB,GAAG,CAAC,CAAC,EACxBC,QAAiC,EACT;EACxB,MAAMC,WAA8B,GAAG,EAAE;EACzC,MAAMC,IAAI,GAAGA,CACXC,KAA0B,EAC1BC,KAAiC,KACtB;IACX,MAAMC,QAAQ,GAAGN,KAAK,CAACI,KAAK,CAAC;IAC7B,IAAIE,QAAQ,KAAKC,SAAS,EAAE,OAAON,QAAQ,CAACG,KAAK,CAAC;IAClD,IAAI,OAAOE,QAAQ,KAAK,QAAQ,IAAID,KAAK,CAACC,QAAQ,CAAC,EAAE,OAAOA,QAAQ;IACpEJ,WAAW,CAACM,IAAI,CAAC;MAAEJ,KAAK;MAAEE,QAAQ;MAAEG,QAAQ,EAAER,QAAQ,CAACG,KAAK;IAAE,CAAC,CAAC;IAChE,OAAOH,QAAQ,CAACG,KAAK,CAAC;EACxB,CAAC;EACD,MAAMM,QAAQ,GAAGP,IAAI,CACnB,UAAU,EACTQ,KAAK,IAAKC,MAAM,CAACC,QAAQ,CAACF,KAAK,CAAC,IAAIA,KAAK,IAAI,CAAC,IAAIA,KAAK,GAAGb,SAC7D,CAAC;EACD,MAAMgB,KAAK,GAAGX,IAAI,CAChB,OAAO,EACNQ,KAAK,IAAKC,MAAM,CAACC,QAAQ,CAACF,KAAK,CAAC,IAAIA,KAAK,IAAI,CAAC,IAAIA,KAAK,GAAGb,SAC7D,CAAC;EACD,MAAMiB,IAAI,GAAGZ,IAAI,CACf,MAAM,EACLQ,KAAK,IAAKC,MAAM,CAACC,QAAQ,CAACF,KAAK,CAAC,IAAIA,KAAK,IAAI,CAAC,IAAIA,KAAK,IAAI,CAC9D,CAAC;EACD,MAAMK,EAAE,GAAGb,IAAI,CACb,IAAI,EACHQ,KAAK,IAAKC,MAAM,CAACC,QAAQ,CAACF,KAAK,CAAC,IAAIA,KAAK,IAAI,CAAC,IAAIA,KAAK,IAAI,CAC9D,CAAC;EACD,OAAO;IAAED,QAAQ;IAAEI,KAAK;IAAEC,IAAI;IAAEC,EAAE;IAAEC,QAAQ,EAAEF,IAAI,KAAKC,EAAE;IAAEd;EAAY,CAAC;AAC1E;;AAEA;AACA,OAAO,MAAMgB,kBAAkB,GAAGA,CAChCC,OAA+B,EAC/BC,aAAsB,KACV,CAACA,aAAa,IAAI,CAACD,OAAO,CAACF,QAAQ","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../../../src","sources":["components/ui/shared/pulse/types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useMemo } from 'react';
|
|
4
|
+
import { normalizePulseOptions } from "./normalizePulseOptions.js";
|
|
5
|
+
import { usePulseDriver } from './usePulseDriver';
|
|
6
|
+
|
|
7
|
+
/** 共享参数解释与平台驱动;默认值和诊断 scope 由所属组件交付。 */
|
|
8
|
+
export function usePulseAnimation({
|
|
9
|
+
duration,
|
|
10
|
+
delay,
|
|
11
|
+
from,
|
|
12
|
+
to
|
|
13
|
+
} = {}, defaults, log) {
|
|
14
|
+
// 各组件交付自己的固定默认值;内联 options 的新引用不重启动效。
|
|
15
|
+
const normalized = useMemo(() => normalizePulseOptions({
|
|
16
|
+
duration,
|
|
17
|
+
delay,
|
|
18
|
+
from,
|
|
19
|
+
to
|
|
20
|
+
}, defaults), [duration, delay, from, to, defaults]);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (__DEV__) {
|
|
23
|
+
for (const item of normalized.diagnostics) {
|
|
24
|
+
log.warn(`${item.field}=${String(item.received)} 无效,已回退为 ${item.fallback}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}, [normalized.diagnostics, log]);
|
|
28
|
+
return usePulseDriver(normalized);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=usePulseAnimation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useMemo","normalizePulseOptions","usePulseDriver","usePulseAnimation","duration","delay","from","to","defaults","log","normalized","__DEV__","item","diagnostics","warn","field","String","received","fallback"],"sourceRoot":"../../../../../../src","sources":["components/ui/shared/pulse/usePulseAnimation.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAI1C,SAASC,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASC,cAAc,QAAQ,kBAAkB;;AAEjD;AACA,OAAO,SAASC,iBAAiBA,CAC/B;EAAEC,QAAQ;EAAEC,KAAK;EAAEC,IAAI;EAAEC;AAAiB,CAAC,GAAG,CAAC,CAAC,EAChDC,QAAiC,EACjCC,GAAoC,EACpC;EACA;EACA,MAAMC,UAAU,GAAGV,OAAO,CACxB,MAAMC,qBAAqB,CAAC;IAAEG,QAAQ;IAAEC,KAAK;IAAEC,IAAI;IAAEC;EAAG,CAAC,EAAEC,QAAQ,CAAC,EACpE,CAACJ,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAEC,EAAE,EAAEC,QAAQ,CACtC,CAAC;EACDT,SAAS,CAAC,MAAM;IACd,IAAIY,OAAO,EAAE;MACX,KAAK,MAAMC,IAAI,IAAIF,UAAU,CAACG,WAAW,EAAE;QACzCJ,GAAG,CAACK,IAAI,CACN,GAAGF,IAAI,CAACG,KAAK,IAAIC,MAAM,CAACJ,IAAI,CAACK,QAAQ,CAAC,YAAYL,IAAI,CAACM,QAAQ,EACjE,CAAC;MACH;IACF;EACF,CAAC,EAAE,CAACR,UAAU,CAACG,WAAW,EAAEJ,GAAG,CAAC,CAAC;EACjC,OAAOP,cAAc,CAACQ,UAAU,CAAC;AACnC","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useEffect } from 'react';
|
|
4
4
|
import { cancelAnimation, useAnimatedStyle, useSharedValue, withDelay, withRepeat, withSequence, withTiming } from 'react-native-reanimated';
|
|
5
|
-
import { usePrefersReducedMotion } from "
|
|
5
|
+
import { usePrefersReducedMotion } from "../../../../theme/index.js";
|
|
6
6
|
import { shouldAnimatePulse } from "./normalizePulseOptions.js";
|
|
7
7
|
/**
|
|
8
8
|
* native Pulse driver —— reanimated 4 worklet,整个动画在 UI 线程跑、不占 JS 桥。
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","cancelAnimation","useAnimatedStyle","useSharedValue","withDelay","withRepeat","withSequence","withTiming","usePrefersReducedMotion","shouldAnimatePulse","usePulseDriver","options","reduced","animate","from","to","duration","delay","op","value","cycle","opacity"],"sourceRoot":"../../../../../../src","sources":["components/ui/shared/pulse/usePulseDriver.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SACEC,eAAe,EACfC,gBAAgB,EAChBC,cAAc,EACdC,SAAS,EACTC,UAAU,EACVC,YAAY,EACZC,UAAU,QACL,yBAAyB;AAChC,SAASC,uBAAuB,QAAQ,4BAAmB;AAC3D,SAASC,kBAAkB,QAAQ,4BAAyB;AAG5D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAACC,OAA+B,EAAE;EAC9D,MAAMC,OAAO,GAAGJ,uBAAuB,CAAC,CAAC;EACzC,MAAMK,OAAO,GAAGJ,kBAAkB,CAACE,OAAO,EAAEC,OAAO,CAAC;EACpD,MAAM;IAAEE,IAAI;IAAEC,EAAE;IAAEC,QAAQ;IAAEC;EAAM,CAAC,GAAGN,OAAO;EAC7C,MAAMO,EAAE,GAAGf,cAAc,CAACU,OAAO,GAAGC,IAAI,GAAGC,EAAE,CAAC;EAE9Cf,SAAS,CAAC,MAAM;IACd,IAAI,CAACa,OAAO,EAAE;MACZ;MACAZ,eAAe,CAACiB,EAAE,CAAC;MACnBA,EAAE,CAACC,KAAK,GAAGJ,EAAE;MACb;IACF;IACA;IACAG,EAAE,CAACC,KAAK,GAAGL,IAAI;IACf,MAAMM,KAAK,GAAGf,UAAU,CACtBC,YAAY,CACVC,UAAU,CAACQ,EAAE,EAAE;MAAEC;IAAS,CAAC,CAAC,EAC5BT,UAAU,CAACO,IAAI,EAAE;MAAEE;IAAS,CAAC,CAC/B,CAAC,EACD,CAAC,CAAC,EACF,KACF,CAAC;IACDE,EAAE,CAACC,KAAK,GAAGF,KAAK,GAAG,CAAC,GAAGb,SAAS,CAACa,KAAK,EAAEG,KAAK,CAAC,GAAGA,KAAK;IACtD,OAAO,MAAMnB,eAAe,CAACiB,EAAE,CAAC;EAClC,CAAC,EAAE,CAACA,EAAE,EAAEL,OAAO,EAAEC,IAAI,EAAEC,EAAE,EAAEC,QAAQ,EAAEC,KAAK,CAAC,CAAC;EAE5C,OAAOf,gBAAgB,CAAC,OAAO;IAAEmB,OAAO,EAAEH,EAAE,CAACC;EAAM,CAAC,CAAC,CAAC;AACxD","ignoreList":[]}
|
|
@@ -1,20 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { useEffect, useState } from 'react';
|
|
4
|
-
import { usePrefersReducedMotion } from "
|
|
4
|
+
import { usePrefersReducedMotion } from "../../../../theme/index.js";
|
|
5
5
|
import { shouldAnimatePulse } from "./normalizePulseOptions.js";
|
|
6
|
-
/**
|
|
7
|
-
* Web Pulse driver —— RN-Web 上 reanimated 的 `useAnimatedStyle` 链路会在
|
|
8
|
-
* `_updatePropsJS` 里对 undefined 取 `Object.keys` 而抛 TypeError,pulse 卡死在初始值。
|
|
9
|
-
* 故 web 走 **CSS transition 降级**(零 rAF JS 帧):
|
|
10
|
-
*
|
|
11
|
-
* - `setInterval` 每隔 `duration` ms 只在 from / to 两档翻转 opacity
|
|
12
|
-
* —— setState 频率从 ~60fps 降到 1 次/duration ms(参 ToastHost.web.tsx)
|
|
13
|
-
* - 补间交给浏览器 CSS transition,JS 侧零插值
|
|
14
|
-
*
|
|
15
|
-
* **只接受归一化产物**:duration 已被验证在 `[1, 2^31)`,不会出现 `setInterval(0)`
|
|
16
|
-
* 那种「每帧触发」的退化。web 端**不跑 worklet** —— 别在文档里宣称它跑。
|
|
17
|
-
*/
|
|
6
|
+
/** Web 由 CSS 补间,timer 只按归一化后的半周期切换透明度;每个实例独立释放。 */
|
|
18
7
|
export function usePulseDriver(options) {
|
|
19
8
|
const reduced = usePrefersReducedMotion();
|
|
20
9
|
const animate = shouldAnimatePulse(options, reduced);
|
|
@@ -53,10 +42,6 @@ export function usePulseDriver(options) {
|
|
|
53
42
|
if (timer != null) clearInterval(timer);
|
|
54
43
|
};
|
|
55
44
|
}, [animate, from, to, duration, delay]);
|
|
56
|
-
|
|
57
|
-
// RN-Web 把 transition 字段透传到 DOM style,实现 CSS 级平滑过渡。
|
|
58
|
-
// RN 的 style typedef 没有 transition 字段,故用交叉类型补一个窄声明 ——
|
|
59
|
-
// 比整块 `as any` 精确:仍然保留 opacity 的类型检查。
|
|
60
45
|
return {
|
|
61
46
|
opacity,
|
|
62
47
|
...(animate ? {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useState","usePrefersReducedMotion","shouldAnimatePulse","usePulseDriver","options","reduced","animate","from","to","duration","delay","opacity","setOpacity","timer","delayTimer","current","start","setInterval","setTimeout","clearTimeout","clearInterval","transition","undefined"],"sourceRoot":"../../../../../../src","sources":["components/ui/shared/pulse/usePulseDriver.web.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,uBAAuB,QAAQ,4BAAmB;AAC3D,SAASC,kBAAkB,QAAQ,4BAAyB;AAG5D;AACA,OAAO,SAASC,cAAcA,CAACC,OAA+B,EAAE;EAC9D,MAAMC,OAAO,GAAGJ,uBAAuB,CAAC,CAAC;EACzC,MAAMK,OAAO,GAAGJ,kBAAkB,CAACE,OAAO,EAAEC,OAAO,CAAC;EACpD,MAAM;IAAEE,IAAI;IAAEC,EAAE;IAAEC,QAAQ;IAAEC;EAAM,CAAC,GAAGN,OAAO;EAC7C,MAAM,CAACO,OAAO,EAAEC,UAAU,CAAC,GAAGZ,QAAQ,CAACM,OAAO,GAAGC,IAAI,GAAGC,EAAE,CAAC;EAE3DT,SAAS,CAAC,MAAM;IACd,IAAI,CAACO,OAAO,EAAE;MACZ;MACAM,UAAU,CAACJ,EAAE,CAAC;MACd;IACF;IAEAI,UAAU,CAACL,IAAI,CAAC;IAChB,IAAIM,KAA4C,GAAG,IAAI;IACvD,IAAIC,UAAgD,GAAG,IAAI;IAC3D,IAAIC,OAAO,GAAGR,IAAI;IAElB,MAAMS,KAAK,GAAGA,CAAA,KAAM;MAClBH,KAAK,GAAGI,WAAW,CAAC,MAAM;QACxBF,OAAO,GAAGA,OAAO,KAAKR,IAAI,GAAGC,EAAE,GAAGD,IAAI;QACtCK,UAAU,CAACG,OAAO,CAAC;MACrB,CAAC,EAAEN,QAAQ,CAAC;IACd,CAAC;IAED,IAAIC,KAAK,GAAG,CAAC,EAAE;MACbI,UAAU,GAAGI,UAAU,CAACF,KAAK,EAAEN,KAAK,CAAC;IACvC,CAAC,MAAM;MACLM,KAAK,CAAC,CAAC;IACT;;IAEA;IACA,OAAO,MAAM;MACX,IAAIF,UAAU,IAAI,IAAI,EAAEK,YAAY,CAACL,UAAU,CAAC;MAChD,IAAID,KAAK,IAAI,IAAI,EAAEO,aAAa,CAACP,KAAK,CAAC;IACzC,CAAC;EACH,CAAC,EAAE,CAACP,OAAO,EAAEC,IAAI,EAAEC,EAAE,EAAEC,QAAQ,EAAEC,KAAK,CAAC,CAAC;EAExC,OAAO;IACLC,OAAO;IACP,IAAIL,OAAO,GACP;MAAEe,UAAU,EAAE,WAAWZ,QAAQ;IAAiB,CAAC,GACnDa,SAAS;EACf,CAAC;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,IAAW,EACX,KAAgB,EAChB,OAAmB,EACnB,MAAM,EACN,KAAK,EACL,MAAM,GACP,EAAE,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA6CjC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AvatarGeometry, AvatarShape, AvatarSize } from './types';
|
|
2
|
+
/** Avatar 尺寸推导:5 档 size → { box, fs }。box 走 avatar.<size> token。
|
|
3
|
+
* 新增 size 在 types.ts 加 union + 这里加 case + tokens.ts 补 avatar.<key>。 */
|
|
4
|
+
export declare function sizingFor(size: AvatarSize): AvatarGeometry;
|
|
5
|
+
/** circle 保留直径一半的现有视觉;square 按尺寸使用既有圆角 token。 */
|
|
6
|
+
export declare function resolveAvatarBorderRadius(size: AvatarSize, shape: AvatarShape): number;
|
|
7
|
+
//# sourceMappingURL=geometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Avatar/geometry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEvE;wEACwE;AACxE,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CAa1D;AAED,iDAAiD;AACjD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,WAAW,GACjB,MAAM,CAKR"}
|