decord/source/design/components/Button/native/BaseTextButton.native.tsx
2026-07-25 08:10:48 +00:00

413 lines
15 KiB
TypeScript

// Module ID: 4545
// Function ID: 39860
// Name: CollapsingText
// Dependencies: [57, 31, 27, 33, 4131, 689, 3992, 4546, 4543, 4547, 4548, 4549, 1324, 4127, 3850, 4100, 4551, 3837, 4553, 2]
// Module 4545 (CollapsingText)
import _slicedToArray from "_slicedToArray";
import importAllResult from "result";
import get_ActivityIndicator from "get ActivityIndicator";
import jsxProd from "jsxProd";
import _createForOfIteratorHelperLoose from "_createForOfIteratorHelperLoose";
import _createForOfIteratorHelperLoose from "_createForOfIteratorHelperLoose";
import _createForOfIteratorHelperLoose from "_createForOfIteratorHelperLoose";
import getIconSize from "getIconSize";
import _createForOfIteratorHelperLoose from "_createForOfIteratorHelperLoose";
import importDefaultResult from "module_3992";
let Platform;
let closure_5;
let closure_6;
let closure_7;
let closure_8;
const require = arg1;
function CollapsingText(children) {
const collapseText = children.collapseText;
let obj = sharedValue(3992);
sharedValue = obj.useSharedValue(0);
const tmp = callback3();
let fn = function o(nativeEvent) {
if (0 === sharedValue.get()) {
const result = sharedValue.set(nativeEvent.nativeEvent.layout.width);
}
};
fn.__closure = { containerWidth: sharedValue };
fn.__workletHash = 5541458715155;
fn.__initData = closure_14;
const items = [sharedValue];
const obj2 = sharedValue(3992);
const workletCallback = sharedValue(3992).useWorkletCallback(fn, items);
const tmp4 = (function useCollapsingTextContainerStyles(sharedValue, collapseText) {
let closure_0 = sharedValue;
let closure_1 = collapseText;
let obj = sharedValue(outer1_2[6]);
const fn = function o() {
if (0 === sharedValue.get()) {
let obj = {};
} else {
obj = {};
let num3 = 1;
let num = 0;
if (1 !== store.get()) {
num = sharedValue.get();
}
obj.width = sharedValue(outer2_2[8]).withSpring(num, sharedValue(outer2_2[9]).SUBTLE_SPRING, "animate-always");
obj = sharedValue(outer2_2[8]);
if (num3 === store.get()) {
num3 = 0;
}
obj.opacity = obj.withSpring(num3, sharedValue(outer2_2[9]).SUBTLE_SPRING, "animate-always");
const obj3 = sharedValue(outer2_2[8]);
}
return obj;
};
obj = { containerWidth: sharedValue, withSpring: sharedValue(outer1_2[8]).withSpring, collapsed: collapseText, SUBTLE_SPRING: sharedValue(outer1_2[9]).SUBTLE_SPRING };
fn.__closure = obj;
fn.__workletHash = 493185281611;
fn.__initData = outer1_15;
return obj.useAnimatedStyle(fn);
})(sharedValue, collapseText);
obj = { style: items1, onLayout: workletCallback };
items1 = [tmp.container, tmp4];
obj.children = callback(importDefault(3992).View, {
style: (function useCollapsingTextStyles(sharedValue, collapseText) {
let closure_0 = sharedValue;
let closure_1 = collapseText;
const textCollapsed = outer1_10().textCollapsed;
const fn = function s() {
if (0 === collapseText.get()) {
let obj = {};
} else {
obj = {};
const merged = Object.assign(textCollapsed);
obj["width"] = sharedValue.get();
}
return obj;
};
fn.__closure = { collapsed: collapseText, textCollapsed, containerWidth: sharedValue };
fn.__workletHash = 5824483783888;
fn.__initData = outer1_16;
return sharedValue(outer1_2[6]).useAnimatedStyle(fn);
})(sharedValue, collapseText),
children: children.children
});
return callback(importDefault(3992).View, obj);
}
function getHitSlop(lg) {
let MEDIUM_BUTTON_HEIGHT = require(4548) /* getButtonPadding */.LARGE_BUTTON_HEIGHT;
if ("sm" === lg) {
MEDIUM_BUTTON_HEIGHT = require(4548) /* getButtonPadding */.SMALL_BUTTON_HEIGHT;
} else if ("md" === lg) {
MEDIUM_BUTTON_HEIGHT = require(4548) /* getButtonPadding */.MEDIUM_BUTTON_HEIGHT;
}
const top = Math.max((require(4548) /* getButtonPadding */.MINIMUM_HIT_AREA - MEDIUM_BUTTON_HEIGHT) / 2, 0);
return { top, left: undefined, right: undefined, bottom: top };
}
function BaseTextButtonIcon(arg0) {
let icon;
let iconOpticalOffsetMargin;
let iconPosition;
let size;
let style;
({ icon, size, iconPosition, iconOpticalOffsetMargin, style } = arg0);
let obj = require(4549) /* useProfileThemedButtonStyles */;
const iconSizeStyles = obj.useIconSizeStyles(size);
obj = { source: icon };
const items = [style, iconSizeStyles, callback5(iconPosition, iconOpticalOffsetMargin).offset];
obj.style = items;
return callback(getIconSize, obj);
}
({ Platform, Text: closure_5, View: closure_6 } = get_ActivityIndicator);
({ jsx: closure_7, jsxs: closure_8 } = jsxProd);
let closure_9 = _createForOfIteratorHelperLoose.createStyles((arg0, sm) => {
let obj = { grow: { flexGrow: 1, alignSelf: "stretch" }, shrink: { flexShrink: 1 } };
obj = { flexShrink: 1, flexGrow: 0, lineHeight: getTextPlatformLineHeight(sm, arg0) };
obj.buttonText = obj;
obj.icon = { flexShrink: 0, flexGrow: 0 };
obj.iconLeft = { paddingLeft: 4 };
obj.iconRight = { paddingRight: 4 };
obj.expressiveButtonContainer = { position: "relative" };
return obj;
});
let closure_10 = _createForOfIteratorHelperLoose.createStyles({ container: { flexDirection: "row", alignItems: "center", position: "relative" }, textCollapsed: { position: "absolute", left: 0 } });
let obj = {};
obj = { borderWidth: 1, borderRadius: require("_createForOfIteratorHelperLoose").radii.round, borderColor: require("_createForOfIteratorHelperLoose").colors.BORDER_SUBTLE, overflow: "hidden" };
obj.entityWrapper = obj;
let closure_11 = _createForOfIteratorHelperLoose.createStyles(obj);
let context = importAllResult.createContext("md");
let closure_14 = { code: "function BaseTextButtonNativeTsx1({nativeEvent:nativeEvent}){const{containerWidth}=this.__closure;if(containerWidth.get()!==0)return;const{width:width}=nativeEvent.layout;containerWidth.set(width);}" };
let closure_15 = { code: "function BaseTextButtonNativeTsx2(){const{containerWidth,withSpring,collapsed,SUBTLE_SPRING}=this.__closure;if(containerWidth.get()===0)return{};return{width:withSpring(collapsed.get()===1?0:containerWidth.get(),SUBTLE_SPRING,'animate-always'),opacity:withSpring(collapsed.get()===1?0:1,SUBTLE_SPRING,'animate-always')};}" };
let closure_16 = { code: "function BaseTextButtonNativeTsx3(){const{collapsed,textCollapsed,containerWidth}=this.__closure;if(collapsed.get()===0)return{};return{...textCollapsed,width:containerWidth.get()};}" };
let closure_17 = _createForOfIteratorHelperLoose.createStyles((arg0, marginLeft) => {
if (0 === marginLeft) {
let obj = { offset: {} };
return obj;
} else if ("start" === arg0) {
obj = {};
const obj1 = { marginLeft };
obj.offset = obj1;
return obj;
} else if ("end" === arg0) {
const obj2 = {};
const obj3 = { marginRight: marginLeft };
obj2.offset = obj3;
return obj2;
} else {
obj = { offset: {} };
return obj;
}
});
_createForOfIteratorHelperLoose = { sm: getHitSlop("sm"), md: getHitSlop("md"), lg: getHitSlop("lg") };
function getTextPlatformLineHeight(sm, arg1) {
let tmp;
if (null != sm) {
const obj = { sm, md: sm + 0.5, lg: sm + 1.9 };
tmp = obj[arg1];
}
return tmp;
}
_createForOfIteratorHelperLoose = {
Icon: function TextButtonIcon(source) {
let str = source.variant;
if (str === undefined) {
str = "icon";
}
let flag = source.disableColor;
if (flag === undefined) {
flag = true;
}
const context = importAllResult.useContext(closure_13);
let obj = require(4549) /* useProfileThemedButtonStyles */;
obj = { source: source.source, disableColor: flag };
obj.style = obj.useIconSizeStyles(context);
const tmp3 = callback(getIconSize, obj);
let tmp4 = tmp3;
if ("entity" === str) {
obj = { style: tmp2.entityWrapper, children: tmp3 };
tmp4 = callback(closure_6, obj);
}
return tmp4;
}
};
let merged = Object.assign({}, importAllResult.forwardRef((iconOpticalOffsetMargin, ref) => {
let accessibilityLabel;
let accessibilityRole;
let collapseText;
let icon;
let iconPosition;
let maxFontSizeMultiplier;
let pillStyle;
let size;
let style;
let text;
let textElement;
({ text, textElement, size } = iconOpticalOffsetMargin);
({ style, pillStyle } = iconOpticalOffsetMargin);
if (undefined === size) {
size = onPressIn(onLayout[10]).DEFAULT_BUTTON_SIZE;
}
({ icon, iconPosition } = iconOpticalOffsetMargin);
let str = "start";
if (undefined !== iconPosition) {
str = iconPosition;
}
iconOpticalOffsetMargin = iconOpticalOffsetMargin.iconOpticalOffsetMargin;
let num2 = 0;
if (undefined !== iconOpticalOffsetMargin) {
num2 = iconOpticalOffsetMargin;
}
const grow = iconOpticalOffsetMargin.grow;
let grow2 = undefined !== grow && grow;
const shrink = iconOpticalOffsetMargin.shrink;
let shrink2 = undefined !== shrink && shrink;
({ collapseText, accessibilityRole } = iconOpticalOffsetMargin);
let str2 = "button";
if (undefined !== accessibilityRole) {
str2 = accessibilityRole;
}
({ accessibilityLabel, maxFontSizeMultiplier } = iconOpticalOffsetMargin);
if (undefined === maxFontSizeMultiplier) {
maxFontSizeMultiplier = onPressIn(onLayout[10]).BUTTON_DEFAULT_MAX_FONT_SIZE_MULTIPLIER;
}
const shiny = iconOpticalOffsetMargin.shiny;
onPressIn = iconOpticalOffsetMargin.onPressIn;
const onPressOut = iconOpticalOffsetMargin.onPressOut;
onLayout = iconOpticalOffsetMargin.onLayout;
let tmp6 = onPressOut(onLayout[12])("BaseTextButton");
if (null != iconOpticalOffsetMargin.textVariant) {
let textVariant = iconOpticalOffsetMargin.textVariant;
} else {
let obj = onPressIn(onLayout[10]);
textVariant = obj.getButtonDefaultTextVariant(size);
}
const tmp9 = onPressIn(onLayout[13]).TextStyleSheet[textVariant];
const tmp10 = callback2(size, tmp9.fontSize);
const enabled = startsWithResult.useContext(onPressIn(onLayout[14]).AccessibilityPreferencesContext).reducedMotion.enabled;
const variant = iconOpticalOffsetMargin.variant;
let str3 = "primary";
if (null != variant) {
str3 = variant;
}
if (tmp6) {
tmp6 = "tertiary" === str3;
}
if (tmp6) {
str3 = "secondary";
}
let obj1 = onPressIn(onLayout[6]);
const sharedValue = obj1.useSharedValue(0);
startsWithResult = str3.startsWith("expressive");
ref = startsWithResult.useRef(null);
let closure_6 = startsWithResult.useRef({ width: 0, height: 0 });
const tmp14 = enabled(startsWithResult.useState({ pressed: false, posx: 0, posy: 0 }), 2);
let callback = tmp14[1];
const items = [onLayout, startsWithResult];
const items1 = [startsWithResult, onPressIn, enabled];
callback = startsWithResult.useCallback((nativeEvent) => {
if (null != onLayout) {
onLayout(nativeEvent);
}
if (closure_4) {
const obj = {};
({ width: obj.width, height: obj.height } = nativeEvent.nativeEvent.layout);
closure_6.current = obj;
}
}, items);
const items2 = [startsWithResult, onPressOut];
const callback1 = startsWithResult.useCallback((nativeEvent) => {
let result = null;
if (null != onPressIn) {
onPressIn(nativeEvent);
}
if (closure_4) {
if (enabled) {
const current2 = ref.current;
if (result != current2) {
current2.play();
}
} else {
nativeEvent = nativeEvent.nativeEvent;
const current = ref.current;
const obj = { pressed: true, posx: nativeEvent.locationX - current.width / 2, posy: nativeEvent.locationY - current.height / 2 };
callback(obj);
}
result = onPressIn(onLayout[15]).triggerHapticFeedback(onPressIn(onLayout[15]).HapticFeedbackTypes.IMPACT_HEAVY);
const obj2 = onPressIn(onLayout[15]);
}
}, items1);
callback2 = startsWithResult.useCallback((arg0) => {
if (null != onPressOut) {
onPressOut(arg0);
}
if (closure_4) {
callback((arg0) => {
const obj = {};
const merged = Object.assign(arg0);
obj["pressed"] = false;
return obj;
});
const result = onPressIn(onLayout[15]).triggerHapticFeedback(onPressIn(onLayout[15]).HapticFeedbackTypes.IMPACT_MEDIUM);
let obj = onPressIn(onLayout[15]);
}
}, items2);
let obj2 = onPressIn(onLayout[11]);
const buttonTextColorStyles = obj2.useButtonTextColorStyles(str3);
if (null == icon) {
obj = {};
} else {
obj = "start" === str ? tmp10.iconLeft : tmp10.iconRight;
}
if (null == icon) {
obj = { icon, size };
const items3 = [tmp10.icon, ];
obj1 = { tintColor: buttonTextColorStyles.color };
items3[1] = obj1;
obj.style = items3;
obj.iconOpticalOffsetMargin = num2;
obj.iconPosition = str;
let tmp20 = callback(BaseTextButtonIcon, obj);
} else {
tmp20 = icon;
}
if (null == textElement) {
obj2 = { maxFontSizeMultiplier, numberOfLines: 1 };
const items4 = [tmp10.buttonText, tmp9, buttonTextColorStyles, obj];
obj2.style = items4;
obj2.children = text;
textElement = callback(ref, obj2);
}
const obj3 = { ref };
let merged = Object.assign(iconOpticalOffsetMargin);
obj3["onPressIn"] = callback1;
obj3["onPressOut"] = callback2;
obj3["onLayout"] = callback;
if (grow2) {
grow2 = tmp10.grow;
}
const items5 = [grow2, , , ];
if (shrink2) {
shrink2 = tmp10.shrink;
}
items5[1] = shrink2;
items5[2] = style;
let expressiveButtonContainer = startsWithResult;
if (startsWithResult) {
expressiveButtonContainer = tmp10.expressiveButtonContainer;
}
items5[3] = expressiveButtonContainer;
obj3["style"] = items5;
let str5 = "box-only";
if (!startsWithResult) {
str5 = iconOpticalOffsetMargin.pointerEvents;
}
obj3["pointerEvents"] = str5;
obj3["pressed"] = sharedValue;
obj3["accessibilityRole"] = str2;
if (null == accessibilityLabel) {
accessibilityLabel = onPressIn(onLayout[17]).getNodeText(text);
const obj9 = onPressIn(onLayout[17]);
}
obj3["accessibilityLabel"] = accessibilityLabel;
obj3["hitSlop"] = _createForOfIteratorHelperLoose[size];
const obj4 = { variant: str3, size, loading: iconOpticalOffsetMargin.loading, pressed: sharedValue, style: pillStyle, shiny: undefined !== shiny && shiny };
let tmp30;
if (startsWithResult) {
tmp30 = ref;
}
obj4.expressiveRiveRef = tmp30;
let first;
if (startsWithResult) {
first = tmp14[0];
}
obj4.expressivePressState = first;
const obj5 = { value: size };
let tmp33 = null != icon;
if (tmp33) {
tmp33 = "start" === str;
}
if (tmp33) {
tmp33 = tmp20;
}
const items6 = [tmp33, , ];
let tmp34 = textElement;
if (undefined !== collapseText) {
const obj6 = { collapseText, children: textElement };
tmp34 = callback(CollapsingText, obj6);
}
items6[1] = tmp34;
let tmp37 = null != icon;
if (tmp37) {
tmp37 = "end" === str;
}
if (tmp37) {
tmp37 = tmp20;
}
items6[2] = tmp37;
obj5.children = items6;
obj4.children = closure_8(redux.Provider, obj5);
obj3["children"] = callback(onPressIn(onLayout[18]).ButtonPill, obj4);
return callback(onPressIn(onLayout[16]).BaseButton, obj3);
}), _createForOfIteratorHelperLoose);
let result = require("get ActivityIndicator").fileFinishedImporting("design/components/Button/native/BaseTextButton.native.tsx");
export const BaseTextButton = merged;