@draftbit/core 44.1.9-222859.1 → 44.1.9-55c084.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,13 @@
1
1
  import * as React from "react";
2
- import { View, StyleSheet, Text, Platform, Dimensions } from "react-native";
3
- import { omit, pick, pickBy, identity } from "lodash";
2
+ import { View, StyleSheet, Text, Platform } from "react-native";
3
+ import { omit, pickBy, identity, isObject } from "lodash";
4
4
  import { SafeAreaView } from "react-native-safe-area-context";
5
5
  import { Picker as NativePicker } from "@react-native-picker/picker";
6
6
  import { withTheme } from "../../theming";
7
7
  import Portal from "../Portal/Portal";
8
8
  import Button from "../DeprecatedButton";
9
9
  import Touchable from "../Touchable";
10
- import { extractStyles } from "../../utilities";
10
+ import { extractStyles, extractBorderAndMarginStyles, borderStyleNames, marginStyleNames } from "../../utilities";
11
11
 
12
12
  function normalizeOptions(options) {
13
13
  if (options.length === 0) {
@@ -21,7 +21,7 @@ function normalizeOptions(options) {
21
21
  }));
22
22
  }
23
23
 
24
- if (typeof options[0] === "object" && options[0].value !== null && options[0].label !== null) {
24
+ if (isObject(options[0]) && options[0].value !== null && options[0].label !== null) {
25
25
  return options.map(option => {
26
26
  return {
27
27
  label: String(option.label),
@@ -38,7 +38,7 @@ const disabledColor = "rgb(240, 240, 240)";
38
38
  const errorColor = "rgba(255, 69, 100, 1)";
39
39
 
40
40
  const Picker = _ref => {
41
- var _find$label, _find, _stylesWithoutBorders;
41
+ var _find$label, _find;
42
42
 
43
43
  let {
44
44
  error,
@@ -78,14 +78,17 @@ const Picker = _ref => {
78
78
  value: placeholder,
79
79
  label: placeholder
80
80
  }, ...normalizedOptions] : normalizedOptions;
81
+ const {
82
+ colors
83
+ } = theme;
81
84
  const {
82
85
  viewStyles,
83
86
  textStyles
84
87
  } = extractStyles(style);
85
88
  const {
86
- colors
87
- } = theme;
88
- const borders = ["borderRadius", "borderTopLeftRadius", "borderTopRightRadius", "borderBottomRightRadius", "borderBottomLeftRadius", "borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth", "borderColor", "borderStyle", "backgroundColor"];
89
+ marginStyles,
90
+ borderStyles: extractedBorderStyles
91
+ } = extractBorderAndMarginStyles(viewStyles, ["backgroundColor"]);
89
92
  const borderStyles = { ...{ ...(type === "solid" ? {
90
93
  borderTopLeftRadius: 5,
91
94
  borderTopRightRadius: 5,
@@ -99,7 +102,8 @@ const Picker = _ref => {
99
102
  borderColor: unstyledColor,
100
103
  borderStyle: "solid"
101
104
  },
102
- ...pick(viewStyles, borders),
105
+ // ...pick(viewStyles, borders),
106
+ ...pickBy(extractedBorderStyles, identity),
103
107
  ...(error ? {
104
108
  borderColor: errorColor
105
109
  } : {}),
@@ -108,17 +112,13 @@ const Picker = _ref => {
108
112
  backgroundColor: disabledColor
109
113
  } : {})
110
114
  };
111
- const margins = ["marginLeft", "marginRight", "marginTop", "marginBottom"];
112
- const marginStyles = pick(viewStyles, margins);
113
- const maxHeight = viewStyles !== null && viewStyles !== void 0 && viewStyles.maxHeight && viewStyles.maxHeight !== "100%" ? viewStyles.maxHeight : Dimensions.get("window").height;
115
+ const platform = Platform.OS;
114
116
  const stylesWithoutBordersAndMargins = { ...{
115
117
  height: 60,
116
- width: "100%"
118
+ width: "100%",
119
+ flex: platform === "web" ? undefined : 1
117
120
  },
118
- ...omit(viewStyles, [...borders, ...margins]),
119
- ...{
120
- maxHeight
121
- }
121
+ ...omit(viewStyles, [...borderStyleNames, ...marginStyleNames, "backgroundColor"])
122
122
  };
123
123
  const selectedLabel = internalValue && ((_find$label = (_find = pickerOptions.find(option => option.value === internalValue)) === null || _find === void 0 ? void 0 : _find.label) !== null && _find$label !== void 0 ? _find$label : internalValue);
124
124
  const labelText = label ? /*#__PURE__*/React.createElement(Text, {
@@ -148,7 +148,7 @@ const Picker = _ref => {
148
148
  marginLeft: 8
149
149
  }
150
150
  }) : null;
151
- const width = (_stylesWithoutBorders = stylesWithoutBordersAndMargins === null || stylesWithoutBordersAndMargins === void 0 ? void 0 : stylesWithoutBordersAndMargins.width) !== null && _stylesWithoutBorders !== void 0 ? _stylesWithoutBorders : undefined;
151
+ const width = stylesWithoutBordersAndMargins === null || stylesWithoutBordersAndMargins === void 0 ? void 0 : stylesWithoutBordersAndMargins.width;
152
152
  const textAlign = textStyles === null || textStyles === void 0 ? void 0 : textStyles.textAlign;
153
153
  const paddingLeft = leftIconOutset && (!textAlign || textAlign === "left" || textAlign === "justify") ? iconSize + 4 : 0;
154
154
  const assistiveTextLabel = assistiveText ? /*#__PURE__*/React.createElement(Text, {
@@ -193,18 +193,14 @@ const Picker = _ref => {
193
193
  style: styles.touchableContainer
194
194
  }, /*#__PURE__*/React.createElement(View, {
195
195
  pointerEvents: "none",
196
- style: [styles.outsetContainer, stylesWithoutBordersAndMargins, // @ts-expect-error ... rejects border-related { key: undefined }
197
- !leftIconOutset && borderStyles // set border if Icon is inset
198
- ]
196
+ style: [styles.outsetContainer, stylesWithoutBordersAndMargins, !leftIconOutset ? borderStyles : {}]
199
197
  }, leftIcon, /*#__PURE__*/React.createElement(View, {
200
- style: [styles.insetContainer, // @ts-expect-error ... rejects border-related { key: undefined }
201
- leftIconOutset && borderStyles // set border if Icon is outset
202
- ]
198
+ style: [styles.insetContainer, leftIconOutset ? borderStyles : {}]
203
199
  }, /*#__PURE__*/React.createElement(View, {
204
200
  style: styles.primaryTextContainer
205
201
  }, labelText, /*#__PURE__*/React.createElement(Text, {
206
202
  style: primaryTextStyle
207
- }, String(selectedLabel !== null && selectedLabel !== void 0 ? selectedLabel : placeholder))), rightIcon)), assistiveTextLabel), Platform.OS === "ios" && pickerVisible ? /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(View, {
203
+ }, String(selectedLabel !== null && selectedLabel !== void 0 ? selectedLabel : placeholder))), rightIcon)), assistiveTextLabel), platform === "ios" && pickerVisible ? /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(View, {
208
204
  style: [styles.iosPicker, {
209
205
  backgroundColor: colors.divider
210
206
  }]
@@ -223,7 +219,7 @@ const Picker = _ref => {
223
219
  label: option.label,
224
220
  value: option.value,
225
221
  key: option.value
226
- })))))) : null, Platform.OS !== "ios" ? /*#__PURE__*/React.createElement(NativePicker, {
222
+ })))))) : null, platform !== "ios" ? /*#__PURE__*/React.createElement(NativePicker, {
227
223
  enabled: !disabled,
228
224
  selectedValue: internalValue,
229
225
  onValueChange: handleValueChange,
@@ -1 +1 @@
1
- {"version":3,"sources":["Picker.tsx"],"names":["React","View","StyleSheet","Text","Platform","Dimensions","omit","pick","pickBy","identity","SafeAreaView","Picker","NativePicker","withTheme","Portal","Button","Touchable","extractStyles","normalizeOptions","options","length","map","option","label","String","value","Error","unstyledColor","disabledColor","errorColor","error","onValueChange","defaultValue","Icon","style","placeholder","disabled","theme","assistiveText","iconColor","iconSize","leftIconMode","leftIconName","placeholderTextColor","rightIconName","type","internalValue","setInternalValue","useState","pickerVisible","togglePickerVisible","useReducer","state","useEffect","normalizedOptions","pickerOptions","viewStyles","textStyles","colors","borders","borderStyles","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderTopWidth","borderRightWidth","borderLeftWidth","borderBottomWidth","borderColor","borderStyle","backgroundColor","margins","marginStyles","maxHeight","get","height","stylesWithoutBordersAndMargins","width","selectedLabel","find","labelText","textAlign","color","fontSize","paddingBottom","leftIconOutset","leftIcon","marginRight","marginLeft","rightIcon","undefined","paddingLeft","assistiveTextLabel","paddingTop","primaryTextStyle","handleValueChange","newValue","itemIndex","styles","marginsContainer","touchableContainer","outsetContainer","insetContainer","primaryTextContainer","OS","iosPicker","divider","iosSafeArea","iosButton","iosNativePicker","nonIosPicker","create","alignSelf","alignItems","flexDirection","justifyContent","flex","paddingRight","position","bottom","left","right","opacity","top"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport {\n View,\n StyleSheet,\n Text,\n Platform,\n ViewStyle,\n StyleProp,\n Dimensions,\n} from \"react-native\";\nimport { omit, pick, pickBy, identity } from \"lodash\";\nimport { SafeAreaView } from \"react-native-safe-area-context\";\nimport { Picker as NativePicker } from \"@react-native-picker/picker\";\n\nimport { withTheme } from \"../../theming\";\nimport Portal from \"../Portal/Portal\";\nimport Button from \"../DeprecatedButton\";\nimport Touchable from \"../Touchable\";\nimport type { Theme } from \"../../styles/DefaultTheme\";\nimport type { IconSlot } from \"../../interfaces/Icon\";\nimport { extractStyles } from \"../../utilities\";\n\nexport interface PickerOption {\n value: string;\n label: string;\n}\n\nexport type PickerProps = {\n error?: any;\n placeholder?: string;\n disabled?: boolean;\n style?: StyleProp<ViewStyle> & { height?: number };\n value?: string;\n options: PickerOption[] | string[];\n onValueChange: (value: string, index: number) => void;\n defaultValue?: string;\n assistiveText?: string;\n label?: string;\n iconColor?: string;\n iconSize?: number;\n leftIconMode?: \"inset\" | \"outset\";\n leftIconName?: string;\n placeholderTextColor?: string;\n rightIconName?: string;\n type?: \"solid\" | \"underline\";\n theme: Theme;\n Icon: IconSlot[\"Icon\"];\n};\n\nfunction normalizeOptions(options: PickerProps[\"options\"]): PickerOption[] {\n if (options.length === 0) {\n return [];\n }\n\n if (typeof options[0] === (\"string\" || \"number\")) {\n return (options as string[]).map((option) => ({\n label: String(option),\n value: String(option),\n }));\n }\n\n if (\n typeof options[0] === \"object\" &&\n options[0].value !== null &&\n options[0].label !== null\n ) {\n return (options as PickerOption[]).map((option) => {\n return {\n label: String(option.label),\n value: String(option.value),\n };\n });\n }\n\n throw new Error(\n 'Picker options must be either an array of strings or array of { \"label\": string; \"value\": string; } objects.'\n );\n}\n\nconst unstyledColor = \"rgba(165, 173, 183, 1)\";\nconst disabledColor = \"rgb(240, 240, 240)\";\nconst errorColor = \"rgba(255, 69, 100, 1)\";\n\nconst Picker: React.FC<PickerProps> = ({\n error,\n options = [],\n onValueChange,\n defaultValue,\n Icon,\n style,\n placeholder,\n value,\n disabled = false,\n theme,\n assistiveText,\n label,\n iconColor = unstyledColor,\n iconSize = 24,\n leftIconMode = \"inset\",\n leftIconName,\n placeholderTextColor = unstyledColor,\n rightIconName,\n type = \"solid\",\n}) => {\n const [internalValue, setInternalValue] = React.useState<string | undefined>(\n value || defaultValue\n );\n\n const [pickerVisible, togglePickerVisible] = React.useReducer(\n (state) => !state,\n false\n );\n\n React.useEffect(() => {\n if (value != null) {\n setInternalValue(value);\n }\n }, [value]);\n\n React.useEffect(() => {\n if (defaultValue != null) {\n setInternalValue(defaultValue);\n }\n }, [defaultValue]);\n\n const normalizedOptions = normalizeOptions(options);\n\n const pickerOptions = placeholder\n ? [{ value: placeholder, label: placeholder }, ...normalizedOptions]\n : normalizedOptions;\n\n const { viewStyles, textStyles } = extractStyles(style);\n\n const { colors } = theme;\n\n const borders = [\n \"borderRadius\",\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderTopWidth\",\n \"borderRightWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderColor\",\n \"borderStyle\",\n \"backgroundColor\",\n ];\n\n const borderStyles = {\n ...{\n ...(type === \"solid\"\n ? {\n borderTopLeftRadius: 5,\n borderTopRightRadius: 5,\n borderBottomRightRadius: 5,\n borderBottomLeftRadius: 5,\n borderTopWidth: 1,\n borderRightWidth: 1,\n borderLeftWidth: 1,\n }\n : {}),\n borderBottomWidth: 1,\n borderColor: unstyledColor,\n borderStyle: \"solid\",\n },\n ...pick(viewStyles, borders),\n ...(error ? { borderColor: errorColor } : {}),\n ...(disabled\n ? { borderColor: \"transparent\", backgroundColor: disabledColor }\n : {}),\n };\n\n const margins = [\"marginLeft\", \"marginRight\", \"marginTop\", \"marginBottom\"];\n\n const marginStyles = pick(viewStyles, margins);\n\n const maxHeight =\n viewStyles?.maxHeight && viewStyles.maxHeight !== \"100%\"\n ? viewStyles.maxHeight\n : Dimensions.get(\"window\").height;\n\n const stylesWithoutBordersAndMargins = {\n ...{\n height: 60,\n width: \"100%\",\n },\n ...omit(viewStyles, [...borders, ...margins]),\n ...{ maxHeight },\n };\n\n const selectedLabel =\n internalValue &&\n ((pickerOptions as unknown as PickerOption[]).find(\n (option) => option.value === internalValue\n )?.label ??\n internalValue);\n\n const labelText = label ? (\n <Text\n style={{\n textAlign: textStyles.textAlign,\n color: unstyledColor,\n fontSize: 12,\n paddingBottom: 4,\n }}\n >\n {label}\n </Text>\n ) : null;\n\n const leftIconOutset = leftIconMode === \"outset\";\n\n const leftIcon = leftIconName ? (\n <Icon\n name={leftIconName}\n color={disabled ? unstyledColor : iconColor}\n size={iconSize}\n style={{\n marginRight: 4,\n marginLeft: 4,\n }}\n />\n ) : null;\n\n const rightIcon = rightIconName ? (\n <Icon\n name={rightIconName}\n color={disabled ? unstyledColor : iconColor}\n size={iconSize}\n style={{\n marginRight: -10,\n marginLeft: 8,\n }}\n />\n ) : null;\n\n const width = stylesWithoutBordersAndMargins?.width ?? undefined;\n\n const textAlign = textStyles?.textAlign;\n\n const paddingLeft =\n leftIconOutset &&\n (!textAlign || textAlign === \"left\" || textAlign === \"justify\")\n ? iconSize + 4\n : 0;\n\n const assistiveTextLabel = assistiveText ? (\n <Text\n style={{\n textAlign,\n width,\n paddingLeft,\n color: unstyledColor,\n fontSize: 12,\n paddingTop: 4,\n }}\n >\n {assistiveText}\n </Text>\n ) : null;\n\n const primaryTextStyle = {\n color: unstyledColor,\n fontSize: 14,\n ...pickBy(textStyles, identity),\n ...(placeholder === internalValue ? { color: placeholderTextColor } : {}),\n ...(disabled ? { color: unstyledColor } : {}),\n };\n\n const handleValueChange = (newValue: string, itemIndex: number) => {\n if (!placeholder || itemIndex > 0) {\n onValueChange?.(newValue, itemIndex);\n }\n setInternalValue(newValue);\n };\n\n return (\n /* marginsContainer */\n <View style={[styles.marginsContainer, marginStyles]}>\n {/* touchableContainer */}\n <Touchable\n disabled={disabled}\n onPress={togglePickerVisible}\n style={styles.touchableContainer}\n >\n {/* outsetContainer */}\n <View\n pointerEvents=\"none\"\n style={[\n styles.outsetContainer,\n stylesWithoutBordersAndMargins,\n // @ts-expect-error ... rejects border-related { key: undefined }\n !leftIconOutset && borderStyles, // set border if Icon is inset\n ]}\n >\n {leftIcon}\n\n {/* insetContainer */}\n <View\n style={[\n styles.insetContainer,\n // @ts-expect-error ... rejects border-related { key: undefined }\n leftIconOutset && borderStyles, // set border if Icon is outset\n ]}\n >\n {/* primaryTextContainer */}\n <View style={styles.primaryTextContainer}>\n {labelText}\n\n <Text style={primaryTextStyle}>\n {String(selectedLabel ?? placeholder)}\n </Text>\n </View>\n\n {rightIcon}\n </View>\n </View>\n {assistiveTextLabel}\n </Touchable>\n\n {/* iosPicker */}\n {Platform.OS === \"ios\" && pickerVisible ? (\n <Portal>\n <View\n style={[\n styles.iosPicker,\n {\n backgroundColor: colors.divider,\n },\n ]}\n >\n <SafeAreaView style={styles.iosSafeArea}>\n <Button\n Icon={Icon}\n type=\"text\"\n onPress={togglePickerVisible}\n style={styles.iosButton}\n >\n {\"Close\"}\n </Button>\n\n <NativePicker\n style={styles.iosNativePicker}\n selectedValue={internalValue}\n onValueChange={handleValueChange}\n >\n {(pickerOptions as unknown as PickerOption[]).map((option) => (\n <NativePicker.Item\n label={option.label}\n value={option.value}\n key={option.value}\n />\n ))}\n </NativePicker>\n </SafeAreaView>\n </View>\n </Portal>\n ) : null}\n\n {/* nonIosPicker */}\n {Platform.OS !== \"ios\" ? (\n <NativePicker\n enabled={!disabled}\n selectedValue={internalValue}\n onValueChange={handleValueChange}\n style={styles.nonIosPicker}\n >\n {(pickerOptions as unknown as PickerOption[]).map((option) => (\n <NativePicker.Item\n label={option.label}\n value={option.value}\n key={option.value}\n />\n ))}\n </NativePicker>\n ) : null}\n </View>\n );\n};\n\nexport default withTheme(Picker);\n\nconst styles = StyleSheet.create({\n marginsContainer: { alignSelf: \"stretch\" },\n touchableContainer: { alignSelf: \"stretch\", alignItems: \"center\" },\n outsetContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n insetContainer: {\n flex: 1,\n height: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingLeft: 12,\n paddingRight: 12,\n },\n primaryTextContainer: { flex: 1 },\n iosPicker: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n flexDirection: \"row\",\n justifyContent: \"center\",\n },\n iosSafeArea: {\n backgroundColor: \"white\",\n flexDirection: \"column\",\n width: \"100%\",\n },\n iosButton: { alignSelf: \"flex-end\" },\n iosNativePicker: { backgroundColor: \"white\" },\n nonIosPicker: {\n opacity: 0,\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: \"100%\",\n },\n});\n"]}
1
+ {"version":3,"sources":["Picker.tsx"],"names":["React","View","StyleSheet","Text","Platform","omit","pickBy","identity","isObject","SafeAreaView","Picker","NativePicker","withTheme","Portal","Button","Touchable","extractStyles","extractBorderAndMarginStyles","borderStyleNames","marginStyleNames","normalizeOptions","options","length","map","option","label","String","value","Error","unstyledColor","disabledColor","errorColor","error","onValueChange","defaultValue","Icon","style","placeholder","disabled","theme","assistiveText","iconColor","iconSize","leftIconMode","leftIconName","placeholderTextColor","rightIconName","type","internalValue","setInternalValue","useState","pickerVisible","togglePickerVisible","useReducer","state","useEffect","normalizedOptions","pickerOptions","colors","viewStyles","textStyles","marginStyles","borderStyles","extractedBorderStyles","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderTopWidth","borderRightWidth","borderLeftWidth","borderBottomWidth","borderColor","borderStyle","backgroundColor","platform","OS","stylesWithoutBordersAndMargins","height","width","flex","undefined","selectedLabel","find","labelText","textAlign","color","fontSize","paddingBottom","leftIconOutset","leftIcon","marginRight","marginLeft","rightIcon","paddingLeft","assistiveTextLabel","paddingTop","primaryTextStyle","handleValueChange","newValue","itemIndex","styles","marginsContainer","touchableContainer","outsetContainer","insetContainer","primaryTextContainer","iosPicker","divider","iosSafeArea","iosButton","iosNativePicker","nonIosPicker","create","alignSelf","alignItems","flexDirection","justifyContent","paddingRight","position","bottom","left","right","opacity","top"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SACEC,IADF,EAEEC,UAFF,EAGEC,IAHF,EAIEC,QAJF,QAOO,cAPP;AAQA,SAASC,IAAT,EAAeC,MAAf,EAAuBC,QAAvB,EAAiCC,QAAjC,QAAiD,QAAjD;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,MAAM,IAAIC,YAAnB,QAAuC,6BAAvC;AAEA,SAASC,SAAT,QAA0B,eAA1B;AACA,OAAOC,MAAP,MAAmB,kBAAnB;AACA,OAAOC,MAAP,MAAmB,qBAAnB;AACA,OAAOC,SAAP,MAAsB,cAAtB;AAGA,SACEC,aADF,EAEEC,4BAFF,EAGEC,gBAHF,EAIEC,gBAJF,QAKO,iBALP;;AAkCA,SAASC,gBAAT,CAA0BC,OAA1B,EAA2E;AACzE,MAAIA,OAAO,CAACC,MAAR,KAAmB,CAAvB,EAA0B;AACxB,WAAO,EAAP;AACD;;AAED,MAAI,OAAOD,OAAO,CAAC,CAAD,CAAd,MAAuB,YAAY,QAAnC,CAAJ,EAAkD;AAChD,WAAQA,OAAD,CAAsBE,GAAtB,CAA2BC,MAAD,KAAa;AAC5CC,MAAAA,KAAK,EAAEC,MAAM,CAACF,MAAD,CAD+B;AAE5CG,MAAAA,KAAK,EAAED,MAAM,CAACF,MAAD;AAF+B,KAAb,CAA1B,CAAP;AAID;;AAED,MACEhB,QAAQ,CAACa,OAAO,CAAC,CAAD,CAAR,CAAR,IACAA,OAAO,CAAC,CAAD,CAAP,CAAWM,KAAX,KAAqB,IADrB,IAEAN,OAAO,CAAC,CAAD,CAAP,CAAWI,KAAX,KAAqB,IAHvB,EAIE;AACA,WAAQJ,OAAD,CAA4BE,GAA5B,CAAiCC,MAAD,IAAY;AACjD,aAAO;AACLC,QAAAA,KAAK,EAAEC,MAAM,CAACF,MAAM,CAACC,KAAR,CADR;AAELE,QAAAA,KAAK,EAAED,MAAM,CAACF,MAAM,CAACG,KAAR;AAFR,OAAP;AAID,KALM,CAAP;AAMD;;AAED,QAAM,IAAIC,KAAJ,CACJ,8GADI,CAAN;AAGD;;AAED,MAAMC,aAAa,GAAG,wBAAtB;AACA,MAAMC,aAAa,GAAG,oBAAtB;AACA,MAAMC,UAAU,GAAG,uBAAnB;;AAEA,MAAMrB,MAA6B,GAAG,QAoBhC;AAAA;;AAAA,MApBiC;AACrCsB,IAAAA,KADqC;AAErCX,IAAAA,OAAO,GAAG,EAF2B;AAGrCY,IAAAA,aAHqC;AAIrCC,IAAAA,YAJqC;AAKrCC,IAAAA,IALqC;AAMrCC,IAAAA,KANqC;AAOrCC,IAAAA,WAPqC;AAQrCV,IAAAA,KARqC;AASrCW,IAAAA,QAAQ,GAAG,KAT0B;AAUrCC,IAAAA,KAVqC;AAWrCC,IAAAA,aAXqC;AAYrCf,IAAAA,KAZqC;AAarCgB,IAAAA,SAAS,GAAGZ,aAbyB;AAcrCa,IAAAA,QAAQ,GAAG,EAd0B;AAerCC,IAAAA,YAAY,GAAG,OAfsB;AAgBrCC,IAAAA,YAhBqC;AAiBrCC,IAAAA,oBAAoB,GAAGhB,aAjBc;AAkBrCiB,IAAAA,aAlBqC;AAmBrCC,IAAAA,IAAI,GAAG;AAnB8B,GAoBjC;AACJ,QAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoCjD,KAAK,CAACkD,QAAN,CACxCvB,KAAK,IAAIO,YAD+B,CAA1C;AAIA,QAAM,CAACiB,aAAD,EAAgBC,mBAAhB,IAAuCpD,KAAK,CAACqD,UAAN,CAC1CC,KAAD,IAAW,CAACA,KAD+B,EAE3C,KAF2C,CAA7C;AAKAtD,EAAAA,KAAK,CAACuD,SAAN,CAAgB,MAAM;AACpB,QAAI5B,KAAK,IAAI,IAAb,EAAmB;AACjBsB,MAAAA,gBAAgB,CAACtB,KAAD,CAAhB;AACD;AACF,GAJD,EAIG,CAACA,KAAD,CAJH;AAMA3B,EAAAA,KAAK,CAACuD,SAAN,CAAgB,MAAM;AACpB,QAAIrB,YAAY,IAAI,IAApB,EAA0B;AACxBe,MAAAA,gBAAgB,CAACf,YAAD,CAAhB;AACD;AACF,GAJD,EAIG,CAACA,YAAD,CAJH;AAMA,QAAMsB,iBAAiB,GAAGpC,gBAAgB,CAACC,OAAD,CAA1C;AAEA,QAAMoC,aAAa,GAAGpB,WAAW,GAC7B,CAAC;AAAEV,IAAAA,KAAK,EAAEU,WAAT;AAAsBZ,IAAAA,KAAK,EAAEY;AAA7B,GAAD,EAA6C,GAAGmB,iBAAhD,CAD6B,GAE7BA,iBAFJ;AAIA,QAAM;AAAEE,IAAAA;AAAF,MAAanB,KAAnB;AAEA,QAAM;AAAEoB,IAAAA,UAAF;AAAcC,IAAAA;AAAd,MAA6B5C,aAAa,CAACoB,KAAD,CAAhD;AAEA,QAAM;AAAEyB,IAAAA,YAAF;AAAgBC,IAAAA,YAAY,EAAEC;AAA9B,MACJ9C,4BAA4B,CAAC0C,UAAD,EAAa,CAAC,iBAAD,CAAb,CAD9B;AAGA,QAAMG,YAAY,GAAG,EACnB,GAAG,EACD,IAAIf,IAAI,KAAK,OAAT,GACA;AACEiB,QAAAA,mBAAmB,EAAE,CADvB;AAEEC,QAAAA,oBAAoB,EAAE,CAFxB;AAGEC,QAAAA,uBAAuB,EAAE,CAH3B;AAIEC,QAAAA,sBAAsB,EAAE,CAJ1B;AAKEC,QAAAA,cAAc,EAAE,CALlB;AAMEC,QAAAA,gBAAgB,EAAE,CANpB;AAOEC,QAAAA,eAAe,EAAE;AAPnB,OADA,GAUA,EAVJ,CADC;AAYDC,MAAAA,iBAAiB,EAAE,CAZlB;AAaDC,MAAAA,WAAW,EAAE3C,aAbZ;AAcD4C,MAAAA,WAAW,EAAE;AAdZ,KADgB;AAiBnB;AACA,OAAGnE,MAAM,CAACyD,qBAAD,EAAwBxD,QAAxB,CAlBU;AAmBnB,QAAIyB,KAAK,GAAG;AAAEwC,MAAAA,WAAW,EAAEzC;AAAf,KAAH,GAAiC,EAA1C,CAnBmB;AAoBnB,QAAIO,QAAQ,GACR;AAAEkC,MAAAA,WAAW,EAAE,aAAf;AAA8BE,MAAAA,eAAe,EAAE5C;AAA/C,KADQ,GAER,EAFJ;AApBmB,GAArB;AAyBA,QAAM6C,QAAQ,GAAGvE,QAAQ,CAACwE,EAA1B;AAEA,QAAMC,8BAA8B,GAAG,EACrC,GAAG;AACDC,MAAAA,MAAM,EAAE,EADP;AAEDC,MAAAA,KAAK,EAAE,MAFN;AAGDC,MAAAA,IAAI,EAAEL,QAAQ,KAAK,KAAb,GAAqBM,SAArB,GAAiC;AAHtC,KADkC;AAMrC,OAAG5E,IAAI,CAACsD,UAAD,EAAa,CAClB,GAAGzC,gBADe,EAElB,GAAGC,gBAFe,EAGlB,iBAHkB,CAAb;AAN8B,GAAvC;AAaA,QAAM+D,aAAa,GACjBlC,aAAa,6BACXS,aAAD,CAA6C0B,IAA7C,CACE3D,MAAD,IAAYA,MAAM,CAACG,KAAP,KAAiBqB,aAD9B,CADY,0CACZ,MAEEvB,KAHU,qDAIXuB,aAJW,CADf;AAOA,QAAMoC,SAAS,GAAG3D,KAAK,gBACrB,oBAAC,IAAD;AACE,IAAA,KAAK,EAAE;AACL4D,MAAAA,SAAS,EAAEzB,UAAU,CAACyB,SADjB;AAELC,MAAAA,KAAK,EAAEzD,aAFF;AAGL0D,MAAAA,QAAQ,EAAE,EAHL;AAILC,MAAAA,aAAa,EAAE;AAJV;AADT,KAQG/D,KARH,CADqB,GAWnB,IAXJ;AAaA,QAAMgE,cAAc,GAAG9C,YAAY,KAAK,QAAxC;AAEA,QAAM+C,QAAQ,GAAG9C,YAAY,gBAC3B,oBAAC,IAAD;AACE,IAAA,IAAI,EAAEA,YADR;AAEE,IAAA,KAAK,EAAEN,QAAQ,GAAGT,aAAH,GAAmBY,SAFpC;AAGE,IAAA,IAAI,EAAEC,QAHR;AAIE,IAAA,KAAK,EAAE;AACLiD,MAAAA,WAAW,EAAE,CADR;AAELC,MAAAA,UAAU,EAAE;AAFP;AAJT,IAD2B,GAUzB,IAVJ;AAYA,QAAMC,SAAS,GAAG/C,aAAa,gBAC7B,oBAAC,IAAD;AACE,IAAA,IAAI,EAAEA,aADR;AAEE,IAAA,KAAK,EAAER,QAAQ,GAAGT,aAAH,GAAmBY,SAFpC;AAGE,IAAA,IAAI,EAAEC,QAHR;AAIE,IAAA,KAAK,EAAE;AACLiD,MAAAA,WAAW,EAAE,CAAC,EADT;AAELC,MAAAA,UAAU,EAAE;AAFP;AAJT,IAD6B,GAU3B,IAVJ;AAYA,QAAMb,KAAK,GAAGF,8BAAH,aAAGA,8BAAH,uBAAGA,8BAA8B,CAAEE,KAA9C;AAEA,QAAMM,SAAS,GAAGzB,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAEyB,SAA9B;AAEA,QAAMS,WAAW,GACfL,cAAc,KACb,CAACJ,SAAD,IAAcA,SAAS,KAAK,MAA5B,IAAsCA,SAAS,KAAK,SADvC,CAAd,GAEI3C,QAAQ,GAAG,CAFf,GAGI,CAJN;AAMA,QAAMqD,kBAAkB,GAAGvD,aAAa,gBACtC,oBAAC,IAAD;AACE,IAAA,KAAK,EAAE;AACL6C,MAAAA,SADK;AAELN,MAAAA,KAFK;AAGLe,MAAAA,WAHK;AAILR,MAAAA,KAAK,EAAEzD,aAJF;AAKL0D,MAAAA,QAAQ,EAAE,EALL;AAMLS,MAAAA,UAAU,EAAE;AANP;AADT,KAUGxD,aAVH,CADsC,GAapC,IAbJ;AAeA,QAAMyD,gBAAgB,GAAG;AACvBX,IAAAA,KAAK,EAAEzD,aADgB;AAEvB0D,IAAAA,QAAQ,EAAE,EAFa;AAGvB,OAAGjF,MAAM,CAACsD,UAAD,EAAarD,QAAb,CAHc;AAIvB,QAAI8B,WAAW,KAAKW,aAAhB,GAAgC;AAAEsC,MAAAA,KAAK,EAAEzC;AAAT,KAAhC,GAAkE,EAAtE,CAJuB;AAKvB,QAAIP,QAAQ,GAAG;AAAEgD,MAAAA,KAAK,EAAEzD;AAAT,KAAH,GAA8B,EAA1C;AALuB,GAAzB;;AAQA,QAAMqE,iBAAiB,GAAG,CAACC,QAAD,EAAmBC,SAAnB,KAAyC;AACjE,QAAI,CAAC/D,WAAD,IAAgB+D,SAAS,GAAG,CAAhC,EAAmC;AACjCnE,MAAAA,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAGkE,QAAH,EAAaC,SAAb,CAAb;AACD;;AACDnD,IAAAA,gBAAgB,CAACkD,QAAD,CAAhB;AACD,GALD;;AAOA;AAAA;;AACE;AACA,wBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAACE,MAAM,CAACC,gBAAR,EAA0BzC,YAA1B;AAAb,oBAEE,oBAAC,SAAD;AACE,MAAA,QAAQ,EAAEvB,QADZ;AAEE,MAAA,OAAO,EAAEc,mBAFX;AAGE,MAAA,KAAK,EAAEiD,MAAM,CAACE;AAHhB,oBAME,oBAAC,IAAD;AACE,MAAA,aAAa,EAAC,MADhB;AAEE,MAAA,KAAK,EAAE,CACLF,MAAM,CAACG,eADF,EAEL3B,8BAFK,EAGL,CAACY,cAAD,GAAmB3B,YAAnB,GAA2D,EAHtD;AAFT,OAQG4B,QARH,eAWE,oBAAC,IAAD;AACE,MAAA,KAAK,EAAE,CACLW,MAAM,CAACI,cADF,EAELhB,cAAc,GAAI3B,YAAJ,GAA4C,EAFrD;AADT,oBAOE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEuC,MAAM,CAACK;AAApB,OACGtB,SADH,eAGE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEa;AAAb,OACGvE,MAAM,CAACwD,aAAD,aAACA,aAAD,cAACA,aAAD,GAAkB7C,WAAlB,CADT,CAHF,CAPF,EAeGwD,SAfH,CAXF,CANF,EAmCGE,kBAnCH,CAFF,EAyCGpB,QAAQ,KAAK,KAAb,IAAsBxB,aAAtB,gBACC,oBAAC,MAAD,qBACE,oBAAC,IAAD;AACE,MAAA,KAAK,EAAE,CACLkD,MAAM,CAACM,SADF,EAEL;AACEjC,QAAAA,eAAe,EAAEhB,MAAM,CAACkD;AAD1B,OAFK;AADT,oBAQE,oBAAC,YAAD;AAAc,MAAA,KAAK,EAAEP,MAAM,CAACQ;AAA5B,oBACE,oBAAC,MAAD;AACE,MAAA,IAAI,EAAE1E,IADR;AAEE,MAAA,IAAI,EAAC,MAFP;AAGE,MAAA,OAAO,EAAEiB,mBAHX;AAIE,MAAA,KAAK,EAAEiD,MAAM,CAACS;AAJhB,OAMG,OANH,CADF,eAUE,oBAAC,YAAD;AACE,MAAA,KAAK,EAAET,MAAM,CAACU,eADhB;AAEE,MAAA,aAAa,EAAE/D,aAFjB;AAGE,MAAA,aAAa,EAAEkD;AAHjB,OAKIzC,aAAD,CAA6ClC,GAA7C,CAAkDC,MAAD,iBAChD,oBAAC,YAAD,CAAc,IAAd;AACE,MAAA,KAAK,EAAEA,MAAM,CAACC,KADhB;AAEE,MAAA,KAAK,EAAED,MAAM,CAACG,KAFhB;AAGE,MAAA,GAAG,EAAEH,MAAM,CAACG;AAHd,MADD,CALH,CAVF,CARF,CADF,CADD,GAoCG,IA7EN,EAgFGgD,QAAQ,KAAK,KAAb,gBACC,oBAAC,YAAD;AACE,MAAA,OAAO,EAAE,CAACrC,QADZ;AAEE,MAAA,aAAa,EAAEU,aAFjB;AAGE,MAAA,aAAa,EAAEkD,iBAHjB;AAIE,MAAA,KAAK,EAAEG,MAAM,CAACW;AAJhB,OAMIvD,aAAD,CAA6ClC,GAA7C,CAAkDC,MAAD,iBAChD,oBAAC,YAAD,CAAc,IAAd;AACE,MAAA,KAAK,EAAEA,MAAM,CAACC,KADhB;AAEE,MAAA,KAAK,EAAED,MAAM,CAACG,KAFhB;AAGE,MAAA,GAAG,EAAEH,MAAM,CAACG;AAHd,MADD,CANH,CADD,GAeG,IA/FN;AAFF;AAoGD,CAzRD;;AA2RA,eAAef,SAAS,CAACF,MAAD,CAAxB;AAEA,MAAM2F,MAAM,GAAGnG,UAAU,CAAC+G,MAAX,CAAkB;AAC/BX,EAAAA,gBAAgB,EAAE;AAChBY,IAAAA,SAAS,EAAE;AADK,GADa;AAI/BX,EAAAA,kBAAkB,EAAE;AAClBW,IAAAA,SAAS,EAAE,SADO;AAElBC,IAAAA,UAAU,EAAE;AAFM,GAJW;AAQ/BX,EAAAA,eAAe,EAAE;AACfY,IAAAA,aAAa,EAAE,KADA;AAEfD,IAAAA,UAAU,EAAE,QAFG;AAGfE,IAAAA,cAAc,EAAE;AAHD,GARc;AAa/BZ,EAAAA,cAAc,EAAE;AACdzB,IAAAA,IAAI,EAAE,CADQ;AAEdF,IAAAA,MAAM,EAAE,MAFM;AAGdsC,IAAAA,aAAa,EAAE,KAHD;AAIdD,IAAAA,UAAU,EAAE,QAJE;AAKdE,IAAAA,cAAc,EAAE,eALF;AAMdvB,IAAAA,WAAW,EAAE,EANC;AAOdwB,IAAAA,YAAY,EAAE;AAPA,GAbe;AAsB/BZ,EAAAA,oBAAoB,EAAE;AACpB1B,IAAAA,IAAI,EAAE;AADc,GAtBS;AAyB/B2B,EAAAA,SAAS,EAAE;AACTY,IAAAA,QAAQ,EAAE,UADD;AAETC,IAAAA,MAAM,EAAE,CAFC;AAGTC,IAAAA,IAAI,EAAE,CAHG;AAITC,IAAAA,KAAK,EAAE,CAJE;AAKTN,IAAAA,aAAa,EAAE,KALN;AAMTC,IAAAA,cAAc,EAAE;AANP,GAzBoB;AAiC/BR,EAAAA,WAAW,EAAE;AACXnC,IAAAA,eAAe,EAAE,OADN;AAEX0C,IAAAA,aAAa,EAAE,QAFJ;AAGXrC,IAAAA,KAAK,EAAE;AAHI,GAjCkB;AAsC/B+B,EAAAA,SAAS,EAAE;AACTI,IAAAA,SAAS,EAAE;AADF,GAtCoB;AAyC/BH,EAAAA,eAAe,EAAE;AACfrC,IAAAA,eAAe,EAAE;AADF,GAzCc;AA4C/BsC,EAAAA,YAAY,EAAE;AACZW,IAAAA,OAAO,EAAE,CADG;AAEZJ,IAAAA,QAAQ,EAAE,UAFE;AAGZK,IAAAA,GAAG,EAAE,CAHO;AAIZH,IAAAA,IAAI,EAAE,CAJM;AAKZC,IAAAA,KAAK,EAAE,CALK;AAMZF,IAAAA,MAAM,EAAE,CANI;AAOZzC,IAAAA,KAAK,EAAE;AAPK;AA5CiB,CAAlB,CAAf","sourcesContent":["import * as React from \"react\";\nimport {\n View,\n StyleSheet,\n Text,\n Platform,\n ViewStyle,\n StyleProp,\n} from \"react-native\";\nimport { omit, pickBy, identity, isObject } from \"lodash\";\nimport { SafeAreaView } from \"react-native-safe-area-context\";\nimport { Picker as NativePicker } from \"@react-native-picker/picker\";\n\nimport { withTheme } from \"../../theming\";\nimport Portal from \"../Portal/Portal\";\nimport Button from \"../DeprecatedButton\";\nimport Touchable from \"../Touchable\";\nimport type { Theme } from \"../../styles/DefaultTheme\";\nimport type { IconSlot } from \"../../interfaces/Icon\";\nimport {\n extractStyles,\n extractBorderAndMarginStyles,\n borderStyleNames,\n marginStyleNames,\n} from \"../../utilities\";\n\nexport interface PickerOption {\n value: string;\n label: string;\n}\n\nexport type PickerProps = {\n error?: any;\n placeholder?: string;\n disabled?: boolean;\n style?: StyleProp<ViewStyle> & { height?: number };\n value?: string;\n options: PickerOption[] | string[];\n onValueChange: (value: string, index: number) => void;\n defaultValue?: string;\n assistiveText?: string;\n label?: string;\n iconColor?: string;\n iconSize?: number;\n leftIconMode?: \"inset\" | \"outset\";\n leftIconName?: string;\n placeholderTextColor?: string;\n rightIconName?: string;\n type?: \"solid\" | \"underline\";\n theme: Theme;\n Icon: IconSlot[\"Icon\"];\n};\n\nfunction normalizeOptions(options: PickerProps[\"options\"]): PickerOption[] {\n if (options.length === 0) {\n return [];\n }\n\n if (typeof options[0] === (\"string\" || \"number\")) {\n return (options as string[]).map((option) => ({\n label: String(option),\n value: String(option),\n }));\n }\n\n if (\n isObject(options[0]) &&\n options[0].value !== null &&\n options[0].label !== null\n ) {\n return (options as PickerOption[]).map((option) => {\n return {\n label: String(option.label),\n value: String(option.value),\n };\n });\n }\n\n throw new Error(\n 'Picker options must be either an array of strings or array of { \"label\": string; \"value\": string; } objects.'\n );\n}\n\nconst unstyledColor = \"rgba(165, 173, 183, 1)\";\nconst disabledColor = \"rgb(240, 240, 240)\";\nconst errorColor = \"rgba(255, 69, 100, 1)\";\n\nconst Picker: React.FC<PickerProps> = ({\n error,\n options = [],\n onValueChange,\n defaultValue,\n Icon,\n style,\n placeholder,\n value,\n disabled = false,\n theme,\n assistiveText,\n label,\n iconColor = unstyledColor,\n iconSize = 24,\n leftIconMode = \"inset\",\n leftIconName,\n placeholderTextColor = unstyledColor,\n rightIconName,\n type = \"solid\",\n}) => {\n const [internalValue, setInternalValue] = React.useState<string | undefined>(\n value || defaultValue\n );\n\n const [pickerVisible, togglePickerVisible] = React.useReducer(\n (state) => !state,\n false\n );\n\n React.useEffect(() => {\n if (value != null) {\n setInternalValue(value);\n }\n }, [value]);\n\n React.useEffect(() => {\n if (defaultValue != null) {\n setInternalValue(defaultValue);\n }\n }, [defaultValue]);\n\n const normalizedOptions = normalizeOptions(options);\n\n const pickerOptions = placeholder\n ? [{ value: placeholder, label: placeholder }, ...normalizedOptions]\n : normalizedOptions;\n\n const { colors } = theme;\n\n const { viewStyles, textStyles } = extractStyles(style);\n\n const { marginStyles, borderStyles: extractedBorderStyles } =\n extractBorderAndMarginStyles(viewStyles, [\"backgroundColor\"]);\n\n const borderStyles = {\n ...{\n ...(type === \"solid\"\n ? {\n borderTopLeftRadius: 5,\n borderTopRightRadius: 5,\n borderBottomRightRadius: 5,\n borderBottomLeftRadius: 5,\n borderTopWidth: 1,\n borderRightWidth: 1,\n borderLeftWidth: 1,\n }\n : {}),\n borderBottomWidth: 1,\n borderColor: unstyledColor,\n borderStyle: \"solid\",\n },\n // ...pick(viewStyles, borders),\n ...pickBy(extractedBorderStyles, identity),\n ...(error ? { borderColor: errorColor } : {}),\n ...(disabled\n ? { borderColor: \"transparent\", backgroundColor: disabledColor }\n : {}),\n };\n\n const platform = Platform.OS;\n\n const stylesWithoutBordersAndMargins = {\n ...{\n height: 60,\n width: \"100%\",\n flex: platform === \"web\" ? undefined : 1,\n },\n ...omit(viewStyles, [\n ...borderStyleNames,\n ...marginStyleNames,\n \"backgroundColor\",\n ]),\n };\n\n const selectedLabel =\n internalValue &&\n ((pickerOptions as unknown as PickerOption[]).find(\n (option) => option.value === internalValue\n )?.label ??\n internalValue);\n\n const labelText = label ? (\n <Text\n style={{\n textAlign: textStyles.textAlign,\n color: unstyledColor,\n fontSize: 12,\n paddingBottom: 4,\n }}\n >\n {label}\n </Text>\n ) : null;\n\n const leftIconOutset = leftIconMode === \"outset\";\n\n const leftIcon = leftIconName ? (\n <Icon\n name={leftIconName}\n color={disabled ? unstyledColor : iconColor}\n size={iconSize}\n style={{\n marginRight: 4,\n marginLeft: 4,\n }}\n />\n ) : null;\n\n const rightIcon = rightIconName ? (\n <Icon\n name={rightIconName}\n color={disabled ? unstyledColor : iconColor}\n size={iconSize}\n style={{\n marginRight: -10,\n marginLeft: 8,\n }}\n />\n ) : null;\n\n const width = stylesWithoutBordersAndMargins?.width;\n\n const textAlign = textStyles?.textAlign;\n\n const paddingLeft =\n leftIconOutset &&\n (!textAlign || textAlign === \"left\" || textAlign === \"justify\")\n ? iconSize + 4\n : 0;\n\n const assistiveTextLabel = assistiveText ? (\n <Text\n style={{\n textAlign,\n width,\n paddingLeft,\n color: unstyledColor,\n fontSize: 12,\n paddingTop: 4,\n }}\n >\n {assistiveText}\n </Text>\n ) : null;\n\n const primaryTextStyle = {\n color: unstyledColor,\n fontSize: 14,\n ...pickBy(textStyles, identity),\n ...(placeholder === internalValue ? { color: placeholderTextColor } : {}),\n ...(disabled ? { color: unstyledColor } : {}),\n };\n\n const handleValueChange = (newValue: string, itemIndex: number) => {\n if (!placeholder || itemIndex > 0) {\n onValueChange?.(newValue, itemIndex);\n }\n setInternalValue(newValue);\n };\n\n return (\n /* marginsContainer */\n <View style={[styles.marginsContainer, marginStyles]}>\n {/* touchableContainer */}\n <Touchable\n disabled={disabled}\n onPress={togglePickerVisible}\n style={styles.touchableContainer}\n >\n {/* outsetContainer */}\n <View\n pointerEvents=\"none\"\n style={[\n styles.outsetContainer,\n stylesWithoutBordersAndMargins,\n !leftIconOutset ? (borderStyles as PickerProps[\"style\"]) : {},\n ]}\n >\n {leftIcon}\n\n {/* insetContainer */}\n <View\n style={[\n styles.insetContainer,\n leftIconOutset ? (borderStyles as PickerProps[\"style\"]) : {},\n ]}\n >\n {/* primaryTextContainer */}\n <View style={styles.primaryTextContainer}>\n {labelText}\n\n <Text style={primaryTextStyle}>\n {String(selectedLabel ?? placeholder)}\n </Text>\n </View>\n\n {rightIcon}\n </View>\n </View>\n {assistiveTextLabel}\n </Touchable>\n\n {/* iosPicker */}\n {platform === \"ios\" && pickerVisible ? (\n <Portal>\n <View\n style={[\n styles.iosPicker,\n {\n backgroundColor: colors.divider,\n },\n ]}\n >\n <SafeAreaView style={styles.iosSafeArea}>\n <Button\n Icon={Icon}\n type=\"text\"\n onPress={togglePickerVisible}\n style={styles.iosButton}\n >\n {\"Close\"}\n </Button>\n\n <NativePicker\n style={styles.iosNativePicker}\n selectedValue={internalValue}\n onValueChange={handleValueChange}\n >\n {(pickerOptions as unknown as PickerOption[]).map((option) => (\n <NativePicker.Item\n label={option.label}\n value={option.value}\n key={option.value}\n />\n ))}\n </NativePicker>\n </SafeAreaView>\n </View>\n </Portal>\n ) : null}\n\n {/* nonIosPicker */}\n {platform !== \"ios\" ? (\n <NativePicker\n enabled={!disabled}\n selectedValue={internalValue}\n onValueChange={handleValueChange}\n style={styles.nonIosPicker}\n >\n {(pickerOptions as unknown as PickerOption[]).map((option) => (\n <NativePicker.Item\n label={option.label}\n value={option.value}\n key={option.value}\n />\n ))}\n </NativePicker>\n ) : null}\n </View>\n );\n};\n\nexport default withTheme(Picker);\n\nconst styles = StyleSheet.create({\n marginsContainer: {\n alignSelf: \"stretch\",\n },\n touchableContainer: {\n alignSelf: \"stretch\",\n alignItems: \"center\",\n },\n outsetContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n insetContainer: {\n flex: 1,\n height: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingLeft: 12,\n paddingRight: 12,\n },\n primaryTextContainer: {\n flex: 1,\n },\n iosPicker: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n flexDirection: \"row\",\n justifyContent: \"center\",\n },\n iosSafeArea: {\n backgroundColor: \"white\",\n flexDirection: \"column\",\n width: \"100%\",\n },\n iosButton: {\n alignSelf: \"flex-end\",\n },\n iosNativePicker: {\n backgroundColor: \"white\",\n },\n nonIosPicker: {\n opacity: 0,\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: \"100%\",\n },\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["AudioPlayer.js"],"names":["GROUPS","COMPONENT_TYPES","FORM_TYPES","PROP_TYPES","SEED_DATA","name","tag","description","category","media","layout","props","source","group","data","label","editable","required","defaultValue","formType","sourceUrl","propType","OBJECT"],"mappings":"AAAA,SAASA,MAAT,EAAiBC,eAAjB,EAAkCC,UAAlC,EAA8CC,UAA9C,QAAiE,iBAAjE;AACA,OAAO,MAAMC,SAAS,GAAG;AACrBC,EAAAA,IAAI,EAAE,cADe;AAErBC,EAAAA,GAAG,EAAE,aAFgB;AAGrBC,EAAAA,WAAW,EAAE,2CAHQ;AAIrBC,EAAAA,QAAQ,EAAEP,eAAe,CAACQ,KAJL;AAKrBC,EAAAA,MAAM,EAAE,EALa;AAMrBC,EAAAA,KAAK,EAAE;AACHC,IAAAA,MAAM,EAAE;AACJC,MAAAA,KAAK,EAAEb,MAAM,CAACc,IADV;AAEJC,MAAAA,KAAK,EAAE,QAFH;AAGJR,MAAAA,WAAW,EAAE,oCAHT;AAIJS,MAAAA,QAAQ,EAAE,IAJN;AAKJC,MAAAA,QAAQ,EAAE,IALN;AAMJC,MAAAA,YAAY,EAAE,+DANV;AAOJC,MAAAA,QAAQ,EAAEjB,UAAU,CAACkB,SAPjB;AAQJC,MAAAA,QAAQ,EAAElB,UAAU,CAACmB;AARjB;AADL;AANc,CAAlB","sourcesContent":["import { GROUPS, COMPONENT_TYPES, FORM_TYPES, PROP_TYPES, } from \"@draftbit/types\";\nexport const SEED_DATA = {\n name: \"Audio Player\",\n tag: \"AudioPlayer\",\n description: \"Given a source URL, plays sounds & audio!\",\n category: COMPONENT_TYPES.media,\n layout: {},\n props: {\n source: {\n group: GROUPS.data,\n label: \"Source\",\n description: \"The source URL for the audio file.\",\n editable: true,\n required: true,\n defaultValue: \"https://static.draftbit.com/audio/intro-to-draftbit-audio.mp3\",\n formType: FORM_TYPES.sourceUrl,\n propType: PROP_TYPES.OBJECT,\n },\n },\n};\n"]}
1
+ {"version":3,"sources":["AudioPlayer.ts"],"names":["GROUPS","COMPONENT_TYPES","FORM_TYPES","PROP_TYPES","SEED_DATA","name","tag","description","category","media","layout","props","source","group","data","label","editable","required","defaultValue","formType","sourceUrl","propType","OBJECT"],"mappings":"AAAA,SACEA,MADF,EAEEC,eAFF,EAGEC,UAHF,EAIEC,UAJF,QAKO,iBALP;AAOA,OAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,cADiB;AAEvBC,EAAAA,GAAG,EAAE,aAFkB;AAGvBC,EAAAA,WAAW,EAAE,2CAHU;AAIvBC,EAAAA,QAAQ,EAAEP,eAAe,CAACQ,KAJH;AAKvBC,EAAAA,MAAM,EAAE,EALe;AAMvBC,EAAAA,KAAK,EAAE;AACLC,IAAAA,MAAM,EAAE;AACNC,MAAAA,KAAK,EAAEb,MAAM,CAACc,IADR;AAENC,MAAAA,KAAK,EAAE,QAFD;AAGNR,MAAAA,WAAW,EAAE,oCAHP;AAINS,MAAAA,QAAQ,EAAE,IAJJ;AAKNC,MAAAA,QAAQ,EAAE,IALJ;AAMNC,MAAAA,YAAY,EACV,+DAPI;AAQNC,MAAAA,QAAQ,EAAEjB,UAAU,CAACkB,SARf;AASNC,MAAAA,QAAQ,EAAElB,UAAU,CAACmB;AATf;AADH;AANgB,CAAlB","sourcesContent":["import {\n GROUPS,\n COMPONENT_TYPES,\n FORM_TYPES,\n PROP_TYPES,\n} from \"@draftbit/types\";\n\nexport const SEED_DATA = {\n name: \"Audio Player\",\n tag: \"AudioPlayer\",\n description: \"Given a source URL, plays sounds & audio!\",\n category: COMPONENT_TYPES.media,\n layout: {},\n props: {\n source: {\n group: GROUPS.data,\n label: \"Source\",\n description: \"The source URL for the audio file.\",\n editable: true,\n required: true,\n defaultValue:\n \"https://static.draftbit.com/audio/intro-to-draftbit-audio.mp3\",\n formType: FORM_TYPES.sourceUrl,\n propType: PROP_TYPES.OBJECT,\n },\n },\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import { StyleSheet } from "react-native";
2
- import { isString, isNumber } from "lodash";
2
+ import { isString, isNumber, pick } from "lodash";
3
3
  export function extractStyles(style) {
4
4
  const {
5
5
  color,
@@ -33,6 +33,17 @@ export function extractStyles(style) {
33
33
  textStyles
34
34
  };
35
35
  }
36
+ export const borderStyleNames = ["borderRadius", "borderTopLeftRadius", "borderTopRightRadius", "borderBottomRightRadius", "borderBottomLeftRadius", "borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth", "borderColor", "borderStyle"];
37
+ export const marginStyleNames = ["marginLeft", "marginRight", "marginTop", "marginBottom"];
38
+ export function extractBorderAndMarginStyles(style, additionalBorderStyles, additionalMarginStyles) {
39
+ const flatStyle = StyleSheet.flatten(style || {});
40
+ const borderStyles = pick(flatStyle, [...borderStyleNames, ...(additionalBorderStyles ? additionalBorderStyles : [])]);
41
+ const marginStyles = pick(flatStyle, [...marginStyleNames, ...(additionalMarginStyles ? additionalMarginStyles : [])]);
42
+ return {
43
+ borderStyles,
44
+ marginStyles
45
+ };
46
+ }
36
47
  /**
37
48
  * Merges a style object on top of another style object. In React Native,
38
49
  * keys with undefined values in a style object will still override styles
@@ -1 +1 @@
1
- {"version":3,"sources":["utilities.ts"],"names":["StyleSheet","isString","isNumber","extractStyles","style","color","fontFamily","fontWeight","fontSize","lineHeight","letterSpacing","textTransform","textAlign","textDecorationLine","textDecorationColor","textDecorationStyle","viewStyles","flatten","textStyles","applyStyles","baseStyles","stylesToApply","flattenedStyles","key","value","Object","entries","getValueForRadioButton","String","Error"],"mappings":"AAAA,SAASA,UAAT,QAAiD,cAAjD;AACA,SAASC,QAAT,EAAmBC,QAAnB,QAAmC,QAAnC;AAEA,OAAO,SAASC,aAAT,CAAuBC,KAAvB,EAA8C;AACnD,QAAM;AACJC,IAAAA,KADI;AAEJC,IAAAA,UAFI;AAGJC,IAAAA,UAHI;AAIJC,IAAAA,QAJI;AAKJC,IAAAA,UALI;AAMJC,IAAAA,aANI;AAOJC,IAAAA,aAPI;AAQJC,IAAAA,SARI;AASJC,IAAAA,kBATI;AAUJC,IAAAA,mBAVI;AAWJC,IAAAA,mBAXI;AAYJ,OAAGC;AAZC,MAaFhB,UAAU,CAACiB,OAAX,CAAmBb,KAAK,IAAI,EAA5B,CAbJ;AAeA,QAAMc,UAAqB,GAAG;AAC5Bb,IAAAA,KAD4B;AAE5BC,IAAAA,UAF4B;AAG5BC,IAAAA,UAH4B;AAI5BC,IAAAA,QAJ4B;AAK5BC,IAAAA,UAL4B;AAM5BC,IAAAA,aAN4B;AAO5BC,IAAAA,aAP4B;AAQ5BC,IAAAA,SAR4B;AAS5BC,IAAAA,kBAT4B;AAU5BC,IAAAA,mBAV4B;AAW5BC,IAAAA;AAX4B,GAA9B;AAcA,SAAO;AAAEC,IAAAA,UAAF;AAAcE,IAAAA;AAAd,GAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,WAAT,CACLC,UADK,EAELC,aAFK,EAGL;AACA,MAAI,CAACA,aAAL,EAAoB;AAClB;AACD;;AAED,QAAMC,eAAe,GAAGtB,UAAU,CAACiB,OAAX,CAAmBG,UAAnB,CAAxB;;AAEA,OAAK,MAAM,CAACG,GAAD,EAAMC,KAAN,CAAX,IAA2BC,MAAM,CAACC,OAAP,CAAeL,aAAf,CAA3B,EAA0D;AACxD,QAAIG,KAAK,IAAI,IAAb,EAAmB;AACjBF,MAAAA,eAAe,CAACC,GAAD,CAAf,GAAuBC,KAAvB;AACD;AACF;;AAED,SAAOF,eAAP;AACD;AAED,OAAO,SAASK,sBAAT,CAAgCH,KAAhC,EAAwD;AAC7D,MAAIvB,QAAQ,CAACuB,KAAD,CAAZ,EAAqB;AACnB,WAAOA,KAAP;AACD,GAFD,MAEO,IAAItB,QAAQ,CAACsB,KAAD,CAAZ,EAAqB;AAC1B,WAAOI,MAAM,CAACJ,KAAD,CAAb;AACD,GAFM,MAEA;AACL,UAAM,IAAIK,KAAJ,CAAW,kBAAiBL,KAAM,EAAlC,CAAN;AACD;AACF","sourcesContent":["import { StyleSheet, StyleProp, TextStyle } from \"react-native\";\nimport { isString, isNumber } from \"lodash\";\n\nexport function extractStyles(style: StyleProp<any>) {\n const {\n color,\n fontFamily,\n fontWeight,\n fontSize,\n lineHeight,\n letterSpacing,\n textTransform,\n textAlign,\n textDecorationLine,\n textDecorationColor,\n textDecorationStyle,\n ...viewStyles\n } = StyleSheet.flatten(style || {});\n\n const textStyles: TextStyle = {\n color,\n fontFamily,\n fontWeight,\n fontSize,\n lineHeight,\n letterSpacing,\n textTransform,\n textAlign,\n textDecorationLine,\n textDecorationColor,\n textDecorationStyle,\n };\n\n return { viewStyles, textStyles };\n}\n\n/**\n * Merges a style object on top of another style object. In React Native,\n * keys with undefined values in a style object will still override styles\n * that appear earlier in a sequence. This avoids that problem.\n *\n * This lets us avoid the `...(something ? { something } : {})` pattern.\n * There doesn't seem to be a better way to do this. These all seem to not\n * work (i.e. they all result in `{ color: undefined }`:\n * `const mergedStyles = [{ color: \"red\" }, { color: undefined }]`\n * `const mergedStyles = StyleSheet.compose({ color: \"red\" }, { color: undefined })`\n * `const mergedStyles = StyleSheet.flatten([{ color: \"red\" }, { color: undefined }])`\n */\nexport function applyStyles(\n baseStyles: Array<StyleProp<any>>,\n stylesToApply: StyleProp<any> | undefined\n) {\n if (!stylesToApply) {\n return;\n }\n\n const flattenedStyles = StyleSheet.flatten(baseStyles);\n\n for (const [key, value] of Object.entries(stylesToApply)) {\n if (value != null) {\n flattenedStyles[key] = value;\n }\n }\n\n return flattenedStyles;\n}\n\nexport function getValueForRadioButton(value: string | number) {\n if (isString(value)) {\n return value;\n } else if (isNumber(value)) {\n return String(value);\n } else {\n throw new Error(`Invalid value: ${value}`);\n }\n}\n"]}
1
+ {"version":3,"sources":["utilities.ts"],"names":["StyleSheet","isString","isNumber","pick","extractStyles","style","color","fontFamily","fontWeight","fontSize","lineHeight","letterSpacing","textTransform","textAlign","textDecorationLine","textDecorationColor","textDecorationStyle","viewStyles","flatten","textStyles","borderStyleNames","marginStyleNames","extractBorderAndMarginStyles","additionalBorderStyles","additionalMarginStyles","flatStyle","borderStyles","marginStyles","applyStyles","baseStyles","stylesToApply","flattenedStyles","key","value","Object","entries","getValueForRadioButton","String","Error"],"mappings":"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","sourcesContent":["import { StyleSheet, StyleProp, TextStyle } from \"react-native\";\nimport { isString, isNumber, pick } from \"lodash\";\n\nexport function extractStyles(style: StyleProp<any>) {\n const {\n color,\n fontFamily,\n fontWeight,\n fontSize,\n lineHeight,\n letterSpacing,\n textTransform,\n textAlign,\n textDecorationLine,\n textDecorationColor,\n textDecorationStyle,\n ...viewStyles\n } = StyleSheet.flatten(style || {});\n\n const textStyles: TextStyle = {\n color,\n fontFamily,\n fontWeight,\n fontSize,\n lineHeight,\n letterSpacing,\n textTransform,\n textAlign,\n textDecorationLine,\n textDecorationColor,\n textDecorationStyle,\n };\n\n return { viewStyles, textStyles };\n}\n\nexport const borderStyleNames = [\n \"borderRadius\",\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderTopWidth\",\n \"borderRightWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderColor\",\n \"borderStyle\",\n];\n\nexport const marginStyleNames = [\n \"marginLeft\",\n \"marginRight\",\n \"marginTop\",\n \"marginBottom\",\n];\n\nexport function extractBorderAndMarginStyles(\n style: StyleProp<any>,\n additionalBorderStyles?: string[],\n additionalMarginStyles?: string[]\n) {\n const flatStyle = StyleSheet.flatten(style || {});\n\n const borderStyles = pick(flatStyle, [\n ...borderStyleNames,\n ...(additionalBorderStyles ? additionalBorderStyles : []),\n ]);\n\n const marginStyles = pick(flatStyle, [\n ...marginStyleNames,\n ...(additionalMarginStyles ? additionalMarginStyles : []),\n ]);\n\n return { borderStyles, marginStyles };\n}\n\n/**\n * Merges a style object on top of another style object. In React Native,\n * keys with undefined values in a style object will still override styles\n * that appear earlier in a sequence. This avoids that problem.\n *\n * This lets us avoid the `...(something ? { something } : {})` pattern.\n * There doesn't seem to be a better way to do this. These all seem to not\n * work (i.e. they all result in `{ color: undefined }`:\n * `const mergedStyles = [{ color: \"red\" }, { color: undefined }]`\n * `const mergedStyles = StyleSheet.compose({ color: \"red\" }, { color: undefined })`\n * `const mergedStyles = StyleSheet.flatten([{ color: \"red\" }, { color: undefined }])`\n */\nexport function applyStyles(\n baseStyles: Array<StyleProp<any>>,\n stylesToApply: StyleProp<any> | undefined\n) {\n if (!stylesToApply) {\n return;\n }\n\n const flattenedStyles = StyleSheet.flatten(baseStyles);\n\n for (const [key, value] of Object.entries(stylesToApply)) {\n if (value != null) {\n flattenedStyles[key] = value;\n }\n }\n\n return flattenedStyles;\n}\n\nexport function getValueForRadioButton(value: string | number) {\n if (isString(value)) {\n return value;\n } else if (isNumber(value)) {\n return String(value);\n } else {\n throw new Error(`Invalid value: ${value}`);\n }\n}\n"]}
@@ -3,6 +3,12 @@ export declare function extractStyles(style: StyleProp<any>): {
3
3
  viewStyles: any;
4
4
  textStyles: TextStyle;
5
5
  };
6
+ export declare const borderStyleNames: string[];
7
+ export declare const marginStyleNames: string[];
8
+ export declare function extractBorderAndMarginStyles(style: StyleProp<any>, additionalBorderStyles?: string[], additionalMarginStyles?: string[]): {
9
+ borderStyles: Pick<any, string>;
10
+ marginStyles: Pick<any, string>;
11
+ };
6
12
  /**
7
13
  * Merges a style object on top of another style object. In React Native,
8
14
  * keys with undefined values in a style object will still override styles
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@draftbit/core",
3
- "version": "44.1.9-222859.1+22285965",
3
+ "version": "44.1.9-55c084.1+55c0842b",
4
4
  "description": "Core (non-native) Components",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -79,5 +79,5 @@
79
79
  ]
80
80
  ]
81
81
  },
82
- "gitHead": "22285965c262975f9214a8aec02a06d2dc56d351"
82
+ "gitHead": "55c0842b1f44bb4cdef4af999f179bdbd0a4d23f"
83
83
  }
@@ -1,13 +1,13 @@
1
1
  import * as React from "react";
2
- import { View, StyleSheet, Text, Platform, Dimensions, } from "react-native";
3
- import { omit, pick, pickBy, identity } from "lodash";
2
+ import { View, StyleSheet, Text, Platform, } from "react-native";
3
+ import { omit, pickBy, identity, isObject } from "lodash";
4
4
  import { SafeAreaView } from "react-native-safe-area-context";
5
5
  import { Picker as NativePicker } from "@react-native-picker/picker";
6
6
  import { withTheme } from "../../theming";
7
7
  import Portal from "../Portal/Portal";
8
8
  import Button from "../DeprecatedButton";
9
9
  import Touchable from "../Touchable";
10
- import { extractStyles } from "../../utilities";
10
+ import { extractStyles, extractBorderAndMarginStyles, borderStyleNames, marginStyleNames, } from "../../utilities";
11
11
  function normalizeOptions(options) {
12
12
  if (options.length === 0) {
13
13
  return [];
@@ -18,7 +18,7 @@ function normalizeOptions(options) {
18
18
  value: String(option),
19
19
  }));
20
20
  }
21
- if (typeof options[0] === "object" &&
21
+ if (isObject(options[0]) &&
22
22
  options[0].value !== null &&
23
23
  options[0].label !== null) {
24
24
  return options.map((option) => {
@@ -50,22 +50,9 @@ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style,
50
50
  const pickerOptions = placeholder
51
51
  ? [{ value: placeholder, label: placeholder }, ...normalizedOptions]
52
52
  : normalizedOptions;
53
- const { viewStyles, textStyles } = extractStyles(style);
54
53
  const { colors } = theme;
55
- const borders = [
56
- "borderRadius",
57
- "borderTopLeftRadius",
58
- "borderTopRightRadius",
59
- "borderBottomRightRadius",
60
- "borderBottomLeftRadius",
61
- "borderTopWidth",
62
- "borderRightWidth",
63
- "borderBottomWidth",
64
- "borderLeftWidth",
65
- "borderColor",
66
- "borderStyle",
67
- "backgroundColor",
68
- ];
54
+ const { viewStyles, textStyles } = extractStyles(style);
55
+ const { marginStyles, borderStyles: extractedBorderStyles } = extractBorderAndMarginStyles(viewStyles, ["backgroundColor"]);
69
56
  const borderStyles = {
70
57
  ...{
71
58
  ...(type === "solid"
@@ -83,24 +70,25 @@ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style,
83
70
  borderColor: unstyledColor,
84
71
  borderStyle: "solid",
85
72
  },
86
- ...pick(viewStyles, borders),
73
+ // ...pick(viewStyles, borders),
74
+ ...pickBy(extractedBorderStyles, identity),
87
75
  ...(error ? { borderColor: errorColor } : {}),
88
76
  ...(disabled
89
77
  ? { borderColor: "transparent", backgroundColor: disabledColor }
90
78
  : {}),
91
79
  };
92
- const margins = ["marginLeft", "marginRight", "marginTop", "marginBottom"];
93
- const marginStyles = pick(viewStyles, margins);
94
- const maxHeight = viewStyles?.maxHeight && viewStyles.maxHeight !== "100%"
95
- ? viewStyles.maxHeight
96
- : Dimensions.get("window").height;
80
+ const platform = Platform.OS;
97
81
  const stylesWithoutBordersAndMargins = {
98
82
  ...{
99
83
  height: 60,
100
84
  width: "100%",
85
+ flex: platform === "web" ? undefined : 1,
101
86
  },
102
- ...omit(viewStyles, [...borders, ...margins]),
103
- ...{ maxHeight },
87
+ ...omit(viewStyles, [
88
+ ...borderStyleNames,
89
+ ...marginStyleNames,
90
+ "backgroundColor",
91
+ ]),
104
92
  };
105
93
  const selectedLabel = internalValue &&
106
94
  (pickerOptions.find((option) => option.value === internalValue)?.label ??
@@ -120,7 +108,7 @@ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style,
120
108
  marginRight: -10,
121
109
  marginLeft: 8,
122
110
  } })) : null;
123
- const width = stylesWithoutBordersAndMargins?.width ?? undefined;
111
+ const width = stylesWithoutBordersAndMargins?.width;
124
112
  const textAlign = textStyles?.textAlign;
125
113
  const paddingLeft = leftIconOutset &&
126
114
  (!textAlign || textAlign === "left" || textAlign === "justify")
@@ -154,21 +142,19 @@ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style,
154
142
  React.createElement(View, { pointerEvents: "none", style: [
155
143
  styles.outsetContainer,
156
144
  stylesWithoutBordersAndMargins,
157
- // @ts-expect-error ... rejects border-related { key: undefined }
158
- !leftIconOutset && borderStyles, // set border if Icon is inset
145
+ !leftIconOutset ? borderStyles : {},
159
146
  ] },
160
147
  leftIcon,
161
148
  React.createElement(View, { style: [
162
149
  styles.insetContainer,
163
- // @ts-expect-error ... rejects border-related { key: undefined }
164
- leftIconOutset && borderStyles, // set border if Icon is outset
150
+ leftIconOutset ? borderStyles : {},
165
151
  ] },
166
152
  React.createElement(View, { style: styles.primaryTextContainer },
167
153
  labelText,
168
154
  React.createElement(Text, { style: primaryTextStyle }, String(selectedLabel ?? placeholder))),
169
155
  rightIcon)),
170
156
  assistiveTextLabel),
171
- Platform.OS === "ios" && pickerVisible ? (React.createElement(Portal, null,
157
+ platform === "ios" && pickerVisible ? (React.createElement(Portal, null,
172
158
  React.createElement(View, { style: [
173
159
  styles.iosPicker,
174
160
  {
@@ -178,12 +164,17 @@ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style,
178
164
  React.createElement(SafeAreaView, { style: styles.iosSafeArea },
179
165
  React.createElement(Button, { Icon: Icon, type: "text", onPress: togglePickerVisible, style: styles.iosButton }, "Close"),
180
166
  React.createElement(NativePicker, { style: styles.iosNativePicker, selectedValue: internalValue, onValueChange: handleValueChange }, pickerOptions.map((option) => (React.createElement(NativePicker.Item, { label: option.label, value: option.value, key: option.value })))))))) : null,
181
- Platform.OS !== "ios" ? (React.createElement(NativePicker, { enabled: !disabled, selectedValue: internalValue, onValueChange: handleValueChange, style: styles.nonIosPicker }, pickerOptions.map((option) => (React.createElement(NativePicker.Item, { label: option.label, value: option.value, key: option.value }))))) : null));
167
+ platform !== "ios" ? (React.createElement(NativePicker, { enabled: !disabled, selectedValue: internalValue, onValueChange: handleValueChange, style: styles.nonIosPicker }, pickerOptions.map((option) => (React.createElement(NativePicker.Item, { label: option.label, value: option.value, key: option.value }))))) : null));
182
168
  };
183
169
  export default withTheme(Picker);
184
170
  const styles = StyleSheet.create({
185
- marginsContainer: { alignSelf: "stretch" },
186
- touchableContainer: { alignSelf: "stretch", alignItems: "center" },
171
+ marginsContainer: {
172
+ alignSelf: "stretch",
173
+ },
174
+ touchableContainer: {
175
+ alignSelf: "stretch",
176
+ alignItems: "center",
177
+ },
187
178
  outsetContainer: {
188
179
  flexDirection: "row",
189
180
  alignItems: "center",
@@ -198,7 +189,9 @@ const styles = StyleSheet.create({
198
189
  paddingLeft: 12,
199
190
  paddingRight: 12,
200
191
  },
201
- primaryTextContainer: { flex: 1 },
192
+ primaryTextContainer: {
193
+ flex: 1,
194
+ },
202
195
  iosPicker: {
203
196
  position: "absolute",
204
197
  bottom: 0,
@@ -212,8 +205,12 @@ const styles = StyleSheet.create({
212
205
  flexDirection: "column",
213
206
  width: "100%",
214
207
  },
215
- iosButton: { alignSelf: "flex-end" },
216
- iosNativePicker: { backgroundColor: "white" },
208
+ iosButton: {
209
+ alignSelf: "flex-end",
210
+ },
211
+ iosNativePicker: {
212
+ backgroundColor: "white",
213
+ },
217
214
  nonIosPicker: {
218
215
  opacity: 0,
219
216
  position: "absolute",