@draftbit/core 43.4.8 → 43.4.11-143169.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.
@@ -21,8 +21,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
21
21
 
22
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
23
 
24
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
25
-
26
24
  const AccordionItem = _ref => {
27
25
  let {
28
26
  Icon,
@@ -37,9 +35,10 @@ const AccordionItem = _ref => {
37
35
  textStyles,
38
36
  viewStyles
39
37
  } = (0, _utilities.extractStyles)(style);
40
- return /*#__PURE__*/React.createElement(_reactNative.Pressable, _extends({
41
- style: [styles.container, viewStyles]
42
- }, rest), /*#__PURE__*/React.createElement(_reactNative.View, {
38
+ return /*#__PURE__*/React.createElement(_reactNative.Pressable, {
39
+ style: [styles.container, viewStyles],
40
+ ...rest
41
+ }, /*#__PURE__*/React.createElement(_reactNative.View, {
43
42
  style: styles.row
44
43
  }, icon ? /*#__PURE__*/React.createElement(Icon, {
45
44
  name: icon,
@@ -74,5 +73,22 @@ const styles = _reactNative.StyleSheet.create({
74
73
 
75
74
  var _default = (0, _theming.withTheme)(AccordionItem);
76
75
 
76
+ exports.default = _default;
77
+ //# sourceMappingURL=AccordionItem.js.map flexDirection: "row",
78
+ alignItems: "center",
79
+ paddingLeft: 8
80
+ },
81
+ item: {
82
+ marginVertical: 6,
83
+ paddingLeft: 8
84
+ },
85
+ content: {
86
+ flex: 1,
87
+ justifyContent: "center"
88
+ }
89
+ });
90
+
91
+ var _default = (0, _theming.withTheme)(AccordionItem);
92
+
77
93
  exports.default = _default;
78
94
  //# sourceMappingURL=AccordionItem.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["AccordionItem.tsx"],"names":["AccordionItem","Icon","icon","label","style","iconColor","theme","rest","textStyles","viewStyles","styles","container","row","colors","primary","item","content","StyleSheet","create","padding","flexDirection","alignItems","paddingLeft","marginVertical","flex","justifyContent"],"mappings":";;;;;;;AAAA;;AACA;;AAQA;;AAEA;;AACA;;;;;;;;;;AAWA,MAAMA,aAAa,GAAG,QAQT;AAAA,MARU;AACrBC,IAAAA,IADqB;AAErBC,IAAAA,IAFqB;AAGrBC,IAAAA,KAHqB;AAIrBC,IAAAA,KAJqB;AAKrBC,IAAAA,SALqB;AAMrBC,IAAAA,KANqB;AAOrB,OAAGC;AAPkB,GAQV;AACX,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA;AAAd,MAA6B,8BAAcL,KAAd,CAAnC;AACA,sBACE,oBAAC,sBAAD;AAAW,IAAA,KAAK,EAAE,CAACM,MAAM,CAACC,SAAR,EAAmBF,UAAnB;AAAlB,KAAsDF,IAAtD,gBACE,oBAAC,iBAAD;AAAM,IAAA,KAAK,EAAEG,MAAM,CAACE;AAApB,KACGV,IAAI,gBACH,oBAAC,IAAD;AACE,IAAA,IAAI,EAAEA,IADR;AAEE,IAAA,IAAI,EAAE,EAFR;AAGE,IAAA,KAAK,EAAEG,SAAS,IAAIC,KAAK,CAACO,MAAN,CAAaC;AAHnC,IADG,GAMD,IAPN,eAQE,oBAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACJ,MAAM,CAACK,IAAR,EAAcL,MAAM,CAACM,OAArB;AAAb,kBACE,oBAAC,aAAD;AAAM,IAAA,UAAU,EAAE,KAAlB;AAAyB,IAAA,KAAK,EAAER;AAAhC,KACGL,KADH,CADF,CARF,CADF,CADF;AAkBD,CA5BD;;AA8BA,MAAMO,MAAM,GAAGO,wBAAWC,MAAX,CAAkB;AAC/BP,EAAAA,SAAS,EAAE;AACTQ,IAAAA,OAAO,EAAE;AADA,GADoB;AAI/BP,EAAAA,GAAG,EAAE;AACHQ,IAAAA,aAAa,EAAE,KADZ;AAEHC,IAAAA,UAAU,EAAE,QAFT;AAGHC,IAAAA,WAAW,EAAE;AAHV,GAJ0B;AAS/BP,EAAAA,IAAI,EAAE;AACJQ,IAAAA,cAAc,EAAE,CADZ;AAEJD,IAAAA,WAAW,EAAE;AAFT,GATyB;AAa/BN,EAAAA,OAAO,EAAE;AACPQ,IAAAA,IAAI,EAAE,CADC;AAEPC,IAAAA,cAAc,EAAE;AAFT;AAbsB,CAAlB,CAAf;;eAmBe,wBAAUzB,aAAV,C","sourcesContent":["import * as React from \"react\";\nimport {\n Pressable,\n StyleSheet,\n View,\n StyleProp,\n ViewStyle,\n} from \"react-native\";\n\nimport Text from \"../Text\";\nimport type { IconSlot } from \"../../interfaces/Icon\";\nimport { extractStyles } from \"../../utilities\";\nimport { withTheme } from \"../../theming\";\nimport type { Theme } from \"../../styles/DefaultTheme\";\n\ntype Props = {\n icon?: string;\n label: string;\n iconColor?: string;\n style?: StyleProp<ViewStyle>;\n theme: Theme;\n} & IconSlot;\n\nconst AccordionItem = ({\n Icon,\n icon,\n label,\n style,\n iconColor,\n theme,\n ...rest\n}: Props) => {\n const { textStyles, viewStyles } = extractStyles(style);\n return (\n <Pressable style={[styles.container, viewStyles]} {...rest}>\n <View style={styles.row}>\n {icon ? (\n <Icon\n name={icon}\n size={24}\n color={iconColor || theme.colors.primary}\n />\n ) : null}\n <View style={[styles.item, styles.content]}>\n <Text selectable={false} style={textStyles}>\n {label}\n </Text>\n </View>\n </View>\n </Pressable>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n padding: 8,\n },\n row: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingLeft: 8,\n },\n item: {\n marginVertical: 6,\n paddingLeft: 8,\n },\n content: {\n flex: 1,\n justifyContent: \"center\",\n },\n});\n\nexport default withTheme(AccordionItem);\n"]}
1
+ {"version":3,"sources":["AccordionItem.js"],"names":["AccordionItem","Icon","icon","label","style","iconColor","theme","rest","textStyles","viewStyles","React","createElement","Pressable","styles","container","View","row","name","size","color","colors","primary","item","content","Text","selectable","StyleSheet","create","padding","flexDirection","alignItems","paddingLeft","marginVertical","flex","justifyContent"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AACA,MAAMA,aAAa,GAAG,QAA6D;AAAA,MAA5D;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,IAAR;AAAcC,IAAAA,KAAd;AAAqBC,IAAAA,KAArB;AAA4BC,IAAAA,SAA5B;AAAuCC,IAAAA,KAAvC;AAA8C,OAAGC;AAAjD,GAA4D;AAC/E,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA;AAAd,MAA6B,8BAAcL,KAAd,CAAnC;AACA,sBAAQM,KAAK,CAACC,aAAN,CAAoBC,sBAApB,EAA+B;AAAER,IAAAA,KAAK,EAAE,CAACS,MAAM,CAACC,SAAR,EAAmBL,UAAnB,CAAT;AAAyC,OAAGF;AAA5C,GAA/B,eACJG,KAAK,CAACC,aAAN,CAAoBI,iBAApB,EAA0B;AAAEX,IAAAA,KAAK,EAAES,MAAM,CAACG;AAAhB,GAA1B,EACId,IAAI,gBAAIQ,KAAK,CAACC,aAAN,CAAoBV,IAApB,EAA0B;AAAEgB,IAAAA,IAAI,EAAEf,IAAR;AAAcgB,IAAAA,IAAI,EAAE,EAApB;AAAwBC,IAAAA,KAAK,EAAEd,SAAS,IAAIC,KAAK,CAACc,MAAN,CAAaC;AAAzD,GAA1B,CAAJ,GAAqG,IAD7G,eAEIX,KAAK,CAACC,aAAN,CAAoBI,iBAApB,EAA0B;AAAEX,IAAAA,KAAK,EAAE,CAACS,MAAM,CAACS,IAAR,EAAcT,MAAM,CAACU,OAArB;AAAT,GAA1B,eACIb,KAAK,CAACC,aAAN,CAAoBa,aAApB,EAA0B;AAAEC,IAAAA,UAAU,EAAE,KAAd;AAAqBrB,IAAAA,KAAK,EAAEI;AAA5B,GAA1B,EAAoEL,KAApE,CADJ,CAFJ,CADI,CAAR;AAKH,CAPD;;AAQA,MAAMU,MAAM,GAAGa,wBAAWC,MAAX,CAAkB;AAC7Bb,EAAAA,SAAS,EAAE;AACPc,IAAAA,OAAO,EAAE;AADF,GADkB;AAI7BZ,EAAAA,GAAG,EAAE;AACDa,IAAAA,aAAa,EAAE,KADd;AAEDC,IAAAA,UAAU,EAAE,QAFX;AAGDC,IAAAA,WAAW,EAAE;AAHZ,GAJwB;AAS7BT,EAAAA,IAAI,EAAE;AACFU,IAAAA,cAAc,EAAE,CADd;AAEFD,IAAAA,WAAW,EAAE;AAFX,GATuB;AAa7BR,EAAAA,OAAO,EAAE;AACLU,IAAAA,IAAI,EAAE,CADD;AAELC,IAAAA,cAAc,EAAE;AAFX;AAboB,CAAlB,CAAf;;eAkBe,wBAAUlC,aAAV,C","sourcesContent":["import * as React from \"react\";\nimport { Pressable, StyleSheet, View, } from \"react-native\";\nimport Text from \"../Text\";\nimport { extractStyles } from \"../../utilities\";\nimport { withTheme } from \"../../theming\";\nconst AccordionItem = ({ Icon, icon, label, style, iconColor, theme, ...rest }) => {\n const { textStyles, viewStyles } = extractStyles(style);\n return (React.createElement(Pressable, { style: [styles.container, viewStyles], ...rest },\n React.createElement(View, { style: styles.row },\n icon ? (React.createElement(Icon, { name: icon, size: 24, color: iconColor || theme.colors.primary })) : null,\n React.createElement(View, { style: [styles.item, styles.content] },\n React.createElement(Text, { selectable: false, style: textStyles }, label)))));\n};\nconst styles = StyleSheet.create({\n container: {\n padding: 8,\n },\n row: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingLeft: 8,\n },\n item: {\n marginVertical: 6,\n paddingLeft: 8,\n },\n content: {\n flex: 1,\n justifyContent: \"center\",\n },\n});\nexport default withTheme(AccordionItem);\n"]}
@@ -21,8 +21,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
21
21
 
22
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
23
 
24
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
25
-
26
24
  const AvatarEdit = _ref => {
27
25
  let {
28
26
  Icon,
@@ -42,9 +40,10 @@ const AvatarEdit = _ref => {
42
40
  width: size,
43
41
  height: size
44
42
  };
45
- return /*#__PURE__*/React.createElement(_reactNative.View, _extends({
46
- style: [style, dimensions]
47
- }, rest), /*#__PURE__*/React.createElement(_Touchable.default, {
43
+ return /*#__PURE__*/React.createElement(_reactNative.View, {
44
+ style: [style, dimensions],
45
+ ...rest
46
+ }, /*#__PURE__*/React.createElement(_Touchable.default, {
48
47
  onPress: onPress
49
48
  }, /*#__PURE__*/React.createElement(_CircleImage.default, {
50
49
  source: image,
@@ -68,5 +67,18 @@ const AvatarEdit = _ref => {
68
67
 
69
68
  var _default = (0, _theming.withTheme)(AvatarEdit);
70
69
 
70
+ exports.default = _default;
71
+ //# sourceMappingURL=AvatarEdit.js.map (3 / 16),
72
+ padding: size * (3 / 32)
73
+ }
74
+ }, /*#__PURE__*/React.createElement(Icon, {
75
+ name: "MaterialIcons/edit",
76
+ color: colorStyles.editIconColor,
77
+ size: size * (3 / 16)
78
+ }))));
79
+ };
80
+
81
+ var _default = (0, _theming.withTheme)(AvatarEdit);
82
+
71
83
  exports.default = _default;
72
84
  //# sourceMappingURL=AvatarEdit.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["AvatarEdit.tsx"],"names":["AvatarEdit","Icon","image","size","onPress","style","theme","rest","colorStyles","editBackgroundColor","colors","primary","editIconColor","surface","editBorderColor","dimensions","width","height","position","top","right","borderColor","backgroundColor","borderRadius","padding"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAaA,MAAMA,UAA2B,GAAG,QAQ9B;AAAA,MAR+B;AACnCC,IAAAA,IADmC;AAEnCC,IAAAA,KAFmC;AAGnCC,IAAAA,IAAI,GAAG,EAH4B;AAInCC,IAAAA,OAAO,GAAG,MAAM,CAAE,CAJiB;AAKnCC,IAAAA,KALmC;AAMnCC,IAAAA,KANmC;AAOnC,OAAGC;AAPgC,GAQ/B;AACJ,QAAMC,WAAW,GAAG;AAClBC,IAAAA,mBAAmB,EAAEH,KAAK,CAACI,MAAN,CAAaC,OADhB;AAElBC,IAAAA,aAAa,EAAEN,KAAK,CAACI,MAAN,CAAaG,OAFV;AAGlBC,IAAAA,eAAe,EAAER,KAAK,CAACI,MAAN,CAAaG;AAHZ,GAApB;AAMA,QAAME,UAAU,GAAG;AACjBC,IAAAA,KAAK,EAAEb,IADU;AAEjBc,IAAAA,MAAM,EAAEd;AAFS,GAAnB;AAKA,sBACE,oBAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACE,KAAD,EAAQU,UAAR;AAAb,KAAsCR,IAAtC,gBACE,oBAAC,kBAAD;AAAW,IAAA,OAAO,EAAEH;AAApB,kBACE,oBAAC,oBAAD;AAAa,IAAA,MAAM,EAAEF,KAArB;AAA4B,IAAA,IAAI,EAAEC;AAAlC,IADF,eAEE,oBAAC,iBAAD;AACE,IAAA,KAAK,EAAE;AACLe,MAAAA,QAAQ,EAAE,UADL;AAELC,MAAAA,GAAG,EAAE,CAAC,CAFD;AAGLC,MAAAA,KAAK,EAAE,CAAC,CAHH;AAILC,MAAAA,WAAW,EAAEb,WAAW,CAACM,eAJpB;AAKLQ,MAAAA,eAAe,EAAEd,WAAW,CAACC,mBALxB;AAMLc,MAAAA,YAAY,EAAEpB,IAAI,IAAI,IAAI,EAAR,CANb;AAOLqB,MAAAA,OAAO,EAAErB,IAAI,IAAI,IAAI,EAAR;AAPR;AADT,kBAWE,oBAAC,IAAD;AACE,IAAA,IAAI,EAAC,oBADP;AAEE,IAAA,KAAK,EAAEK,WAAW,CAACI,aAFrB;AAGE,IAAA,IAAI,EAAET,IAAI,IAAI,IAAI,EAAR;AAHZ,IAXF,CAFF,CADF,CADF;AAwBD,CA5CD;;eA8Ce,wBAAUH,UAAV,C","sourcesContent":["import * as React from \"react\";\nimport { View, ImageSourcePropType, StyleProp, ViewStyle } from \"react-native\";\nimport Touchable from \"./Touchable\";\nimport CircleImage from \"./CircleImage\";\nimport { withTheme } from \"../theming\";\n\nimport type { Theme } from \"../styles/DefaultTheme\";\nimport type { IconSlot } from \"../interfaces/Icon\";\n\ntype Props = {\n image: string | ImageSourcePropType;\n size?: number;\n onPress?: () => void;\n style?: StyleProp<ViewStyle>;\n theme: Theme;\n} & IconSlot;\n\nconst AvatarEdit: React.FC<Props> = ({\n Icon,\n image,\n size = 80,\n onPress = () => {},\n style,\n theme,\n ...rest\n}) => {\n const colorStyles = {\n editBackgroundColor: theme.colors.primary,\n editIconColor: theme.colors.surface,\n editBorderColor: theme.colors.surface,\n };\n\n const dimensions = {\n width: size,\n height: size,\n };\n\n return (\n <View style={[style, dimensions]} {...rest}>\n <Touchable onPress={onPress}>\n <CircleImage source={image} size={size} />\n <View\n style={{\n position: \"absolute\",\n top: -3,\n right: -3,\n borderColor: colorStyles.editBorderColor,\n backgroundColor: colorStyles.editBackgroundColor,\n borderRadius: size * (3 / 16),\n padding: size * (3 / 32),\n }}\n >\n <Icon\n name=\"MaterialIcons/edit\"\n color={colorStyles.editIconColor}\n size={size * (3 / 16)}\n />\n </View>\n </Touchable>\n </View>\n );\n};\n\nexport default withTheme(AvatarEdit);\n"]}
1
+ {"version":3,"sources":["AvatarEdit.js"],"names":["AvatarEdit","Icon","image","size","onPress","style","theme","rest","colorStyles","editBackgroundColor","colors","primary","editIconColor","surface","editBorderColor","dimensions","width","height","React","createElement","View","Touchable","CircleImage","source","position","top","right","borderColor","backgroundColor","borderRadius","padding","name","color"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AACA,MAAMA,UAAU,GAAG,QAA4E;AAAA,MAA3E;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,KAAR;AAAeC,IAAAA,IAAI,GAAG,EAAtB;AAA0BC,IAAAA,OAAO,GAAG,MAAM,CAAG,CAA7C;AAA+CC,IAAAA,KAA/C;AAAsDC,IAAAA,KAAtD;AAA6D,OAAGC;AAAhE,GAA2E;AAC3F,QAAMC,WAAW,GAAG;AAChBC,IAAAA,mBAAmB,EAAEH,KAAK,CAACI,MAAN,CAAaC,OADlB;AAEhBC,IAAAA,aAAa,EAAEN,KAAK,CAACI,MAAN,CAAaG,OAFZ;AAGhBC,IAAAA,eAAe,EAAER,KAAK,CAACI,MAAN,CAAaG;AAHd,GAApB;AAKA,QAAME,UAAU,GAAG;AACfC,IAAAA,KAAK,EAAEb,IADQ;AAEfc,IAAAA,MAAM,EAAEd;AAFO,GAAnB;AAIA,sBAAQe,KAAK,CAACC,aAAN,CAAoBC,iBAApB,EAA0B;AAAEf,IAAAA,KAAK,EAAE,CAACA,KAAD,EAAQU,UAAR,CAAT;AAA8B,OAAGR;AAAjC,GAA1B,eACJW,KAAK,CAACC,aAAN,CAAoBE,kBAApB,EAA+B;AAAEjB,IAAAA,OAAO,EAAEA;AAAX,GAA/B,eACIc,KAAK,CAACC,aAAN,CAAoBG,oBAApB,EAAiC;AAAEC,IAAAA,MAAM,EAAErB,KAAV;AAAiBC,IAAAA,IAAI,EAAEA;AAAvB,GAAjC,CADJ,eAEIe,KAAK,CAACC,aAAN,CAAoBC,iBAApB,EAA0B;AAAEf,IAAAA,KAAK,EAAE;AAC3BmB,MAAAA,QAAQ,EAAE,UADiB;AAE3BC,MAAAA,GAAG,EAAE,CAAC,CAFqB;AAG3BC,MAAAA,KAAK,EAAE,CAAC,CAHmB;AAI3BC,MAAAA,WAAW,EAAEnB,WAAW,CAACM,eAJE;AAK3Bc,MAAAA,eAAe,EAAEpB,WAAW,CAACC,mBALF;AAM3BoB,MAAAA,YAAY,EAAE1B,IAAI,IAAI,IAAI,EAAR,CANS;AAO3B2B,MAAAA,OAAO,EAAE3B,IAAI,IAAI,IAAI,EAAR;AAPc;AAAT,GAA1B,eASIe,KAAK,CAACC,aAAN,CAAoBlB,IAApB,EAA0B;AAAE8B,IAAAA,IAAI,EAAE,oBAAR;AAA8BC,IAAAA,KAAK,EAAExB,WAAW,CAACI,aAAjD;AAAgET,IAAAA,IAAI,EAAEA,IAAI,IAAI,IAAI,EAAR;AAA1E,GAA1B,CATJ,CAFJ,CADI,CAAR;AAaH,CAvBD;;eAwBe,wBAAUH,UAAV,C","sourcesContent":["import * as React from \"react\";\nimport { View } from \"react-native\";\nimport Touchable from \"./Touchable\";\nimport CircleImage from \"./CircleImage\";\nimport { withTheme } from \"../theming\";\nconst AvatarEdit = ({ Icon, image, size = 80, onPress = () => { }, style, theme, ...rest }) => {\n const colorStyles = {\n editBackgroundColor: theme.colors.primary,\n editIconColor: theme.colors.surface,\n editBorderColor: theme.colors.surface,\n };\n const dimensions = {\n width: size,\n height: size,\n };\n return (React.createElement(View, { style: [style, dimensions], ...rest },\n React.createElement(Touchable, { onPress: onPress },\n React.createElement(CircleImage, { source: image, size: size }),\n React.createElement(View, { style: {\n position: \"absolute\",\n top: -3,\n right: -3,\n borderColor: colorStyles.editBorderColor,\n backgroundColor: colorStyles.editBackgroundColor,\n borderRadius: size * (3 / 16),\n padding: size * (3 / 32),\n } },\n React.createElement(Icon, { name: \"MaterialIcons/edit\", color: colorStyles.editIconColor, size: size * (3 / 16) })))));\n};\nexport default withTheme(AvatarEdit);\n"]}
@@ -24,15 +24,16 @@ const NumberInput = _ref => {
24
24
  defaultValue,
25
25
  ...props
26
26
  } = _ref;
27
+ const [currentStringNumberValue, setCurrentStringNumberValue] = (0, _react.useState)("0");
27
28
 
28
- const formatValueToStringNumber = (valueToFormat, currentStringNumberValue) => {
29
+ const formatValueToStringNumber = valueToFormat => {
29
30
  if (valueToFormat != null) {
30
31
  if ((0, _lodash.isString)(valueToFormat) && valueToFormat !== "") {
31
32
  if (/^0[1-9]$/.test(valueToFormat)) {
32
33
  return valueToFormat.slice(1);
33
34
  } else if (/^[+-]?([0-9]+\.?[0-9]*|\.[0-9]+)$/.test(valueToFormat)) {
34
35
  return valueToFormat;
35
- } else if (currentStringNumberValue) {
36
+ } else {
36
37
  return currentStringNumberValue;
37
38
  }
38
39
  } else if ((0, _lodash.isNumber)(valueToFormat) && !(0, _lodash.isNaN)(valueToFormat)) {
@@ -41,31 +42,28 @@ const NumberInput = _ref => {
41
42
  }
42
43
 
43
44
  return "0";
44
- };
45
-
46
- const [currentStringNumberValue, setCurrentStringNumberValue] = (0, _react.useState)(formatValueToStringNumber(value));
47
-
48
- const handleChangeText = newValue => {
49
- const newStringNumberValue = formatValueToStringNumber(newValue, currentStringNumberValue);
50
- const number = parseFloat(newStringNumberValue);
51
- setCurrentStringNumberValue(newStringNumberValue);
52
- onChangeText === null || onChangeText === void 0 ? void 0 : onChangeText(number);
53
- };
54
- /* set currentStringNumberValue directly to defaultValue if it exists on load
55
- ( no need to use TextInput's defaultValue because its value is always controlled & set ) */
45
+ }; // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only
56
46
 
57
47
 
58
48
  (0, _react.useEffect)(() => {
59
- const defaultStringNumberValue = formatValueToStringNumber(defaultValue, currentStringNumberValue);
49
+ const defaultStringNumberValue = formatValueToStringNumber(defaultValue);
60
50
 
61
51
  if (currentStringNumberValue !== defaultStringNumberValue) {
62
52
  setCurrentStringNumberValue(defaultStringNumberValue);
63
53
  } // eslint-disable-next-line react-hooks/exhaustive-deps
64
54
 
65
- }, []); // set new value if different from current value
55
+ }, []);
56
+
57
+ const handleChangeText = newValue => {
58
+ const newStringNumberValue = formatValueToStringNumber(newValue);
59
+ const number = parseFloat(newStringNumberValue);
60
+ setCurrentStringNumberValue(newStringNumberValue);
61
+ onChangeText === null || onChangeText === void 0 ? void 0 : onChangeText(number);
62
+ }; // run handleChangeText with value prop only when value prop changes (and first render to reset currentStringNumberValue)
63
+
66
64
 
67
65
  (0, _react.useEffect)(() => {
68
- const nextStringNumberValue = formatValueToStringNumber(value, currentStringNumberValue);
66
+ const nextStringNumberValue = formatValueToStringNumber(value);
69
67
 
70
68
  if (currentStringNumberValue !== nextStringNumberValue) {
71
69
  handleChangeText(nextStringNumberValue);
@@ -1 +1 @@
1
- {"version":3,"sources":["NumberInput.tsx"],"names":["NumberInput","onChangeText","value","defaultValue","props","formatValueToStringNumber","valueToFormat","currentStringNumberValue","test","slice","toString","setCurrentStringNumberValue","handleChangeText","newValue","newStringNumberValue","number","parseFloat","defaultStringNumberValue","nextStringNumberValue"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAQA,MAAMA,WAAsB,GAAG,QAKzB;AAAA,MAL0B;AAC9BC,IAAAA,YAD8B;AAE9BC,IAAAA,KAF8B;AAG9BC,IAAAA,YAH8B;AAI9B,OAAGC;AAJ2B,GAK1B;;AACJ,QAAMC,yBAAyB,GAAG,CAChCC,aADgC,EAEhCC,wBAFgC,KAG7B;AACH,QAAID,aAAa,IAAI,IAArB,EAA2B;AACzB,UAAI,sBAASA,aAAT,KAA2BA,aAAa,KAAK,EAAjD,EAAqD;AACnD,YAAI,WAAWE,IAAX,CAAgBF,aAAhB,CAAJ,EAAoC;AAClC,iBAAOA,aAAa,CAACG,KAAd,CAAoB,CAApB,CAAP;AACD,SAFD,MAEO,IAAI,oCAAoCD,IAApC,CAAyCF,aAAzC,CAAJ,EAA6D;AAClE,iBAAOA,aAAP;AACD,SAFM,MAEA,IAAIC,wBAAJ,EAA8B;AACnC,iBAAOA,wBAAP;AACD;AACF,OARD,MAQO,IAAI,sBAASD,aAAT,KAA2B,CAAC,mBAAMA,aAAN,CAAhC,EAAsD;AAC3D,eAAOA,aAAa,CAACI,QAAd,EAAP;AACD;AACF;;AAED,WAAO,GAAP;AACD,GAnBD;;AAqBA,QAAM,CAACH,wBAAD,EAA2BI,2BAA3B,IAA0D,qBAC9DN,yBAAyB,CAACH,KAAD,CADqC,CAAhE;;AAIA,QAAMU,gBAAgB,GAAIC,QAAD,IAAsB;AAC7C,UAAMC,oBAAoB,GAAGT,yBAAyB,CACpDQ,QADoD,EAEpDN,wBAFoD,CAAtD;AAIA,UAAMQ,MAAM,GAAGC,UAAU,CAACF,oBAAD,CAAzB;AAEAH,IAAAA,2BAA2B,CAACG,oBAAD,CAA3B;AACAb,IAAAA,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAGc,MAAH,CAAZ;AACD,GATD;AAWA;AACF;;;AACE,wBAAU,MAAM;AACd,UAAME,wBAAwB,GAAGZ,yBAAyB,CACxDF,YADwD,EAExDI,wBAFwD,CAA1D;;AAKA,QAAIA,wBAAwB,KAAKU,wBAAjC,EAA2D;AACzDN,MAAAA,2BAA2B,CAACM,wBAAD,CAA3B;AACD,KARa,CASd;;AACD,GAVD,EAUG,EAVH,EAvCI,CAmDJ;;AACA,wBAAU,MAAM;AACd,UAAMC,qBAAqB,GAAGb,yBAAyB,CACrDH,KADqD,EAErDK,wBAFqD,CAAvD;;AAKA,QAAIA,wBAAwB,KAAKW,qBAAjC,EAAwD;AACtDN,MAAAA,gBAAgB,CAACM,qBAAD,CAAhB;AACD,KARa,CASd;;AACD,GAVD,EAUG,CAAChB,KAAD,CAVH;AAYA,sBACE,6BAAC,sBAAD;AACE,IAAA,YAAY,EAAC,SADf;AAEE,IAAA,KAAK,EAAEK,wBAFT;AAGE,IAAA,YAAY,EAAEK;AAHhB,KAIMR,KAJN,EADF;AAQD,CA7ED;;eA+EeJ,W","sourcesContent":["import React, { FC, useEffect, useState } from \"react\";\nimport { TextInput } from \"react-native\";\nimport { isString, isNumber, isNaN } from \"lodash\";\n\ninterface Props {\n value?: number | string;\n defaultValue?: number | string;\n onChangeText?: (value?: number) => void;\n}\n\nconst NumberInput: FC<Props> = ({\n onChangeText,\n value,\n defaultValue,\n ...props\n}) => {\n const formatValueToStringNumber = (\n valueToFormat?: number | string,\n currentStringNumberValue?: string\n ) => {\n if (valueToFormat != null) {\n if (isString(valueToFormat) && valueToFormat !== \"\") {\n if (/^0[1-9]$/.test(valueToFormat)) {\n return valueToFormat.slice(1);\n } else if (/^[+-]?([0-9]+\\.?[0-9]*|\\.[0-9]+)$/.test(valueToFormat)) {\n return valueToFormat;\n } else if (currentStringNumberValue) {\n return currentStringNumberValue;\n }\n } else if (isNumber(valueToFormat) && !isNaN(valueToFormat)) {\n return valueToFormat.toString();\n }\n }\n\n return \"0\";\n };\n\n const [currentStringNumberValue, setCurrentStringNumberValue] = useState(\n formatValueToStringNumber(value)\n );\n\n const handleChangeText = (newValue: string) => {\n const newStringNumberValue = formatValueToStringNumber(\n newValue,\n currentStringNumberValue\n );\n const number = parseFloat(newStringNumberValue);\n\n setCurrentStringNumberValue(newStringNumberValue);\n onChangeText?.(number);\n };\n\n /* set currentStringNumberValue directly to defaultValue if it exists on load\n ( no need to use TextInput's defaultValue because its value is always controlled & set ) */\n useEffect(() => {\n const defaultStringNumberValue = formatValueToStringNumber(\n defaultValue,\n currentStringNumberValue\n );\n\n if (currentStringNumberValue !== defaultStringNumberValue) {\n setCurrentStringNumberValue(defaultStringNumberValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // set new value if different from current value\n useEffect(() => {\n const nextStringNumberValue = formatValueToStringNumber(\n value,\n currentStringNumberValue\n );\n\n if (currentStringNumberValue !== nextStringNumberValue) {\n handleChangeText(nextStringNumberValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n return (\n <TextInput\n keyboardType=\"numeric\"\n value={currentStringNumberValue}\n onChangeText={handleChangeText}\n {...props}\n />\n );\n};\n\nexport default NumberInput;\n"]}
1
+ {"version":3,"sources":["NumberInput.tsx"],"names":["NumberInput","onChangeText","value","defaultValue","props","currentStringNumberValue","setCurrentStringNumberValue","formatValueToStringNumber","valueToFormat","test","slice","toString","defaultStringNumberValue","handleChangeText","newValue","newStringNumberValue","number","parseFloat","nextStringNumberValue"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAQA,MAAMA,WAAsB,GAAG,QAKzB;AAAA,MAL0B;AAC9BC,IAAAA,YAD8B;AAE9BC,IAAAA,KAF8B;AAG9BC,IAAAA,YAH8B;AAI9B,OAAGC;AAJ2B,GAK1B;AACJ,QAAM,CAACC,wBAAD,EAA2BC,2BAA3B,IAA0D,qBAAS,GAAT,CAAhE;;AAEA,QAAMC,yBAAyB,GAAIC,aAAD,IAAqC;AACrE,QAAIA,aAAa,IAAI,IAArB,EAA2B;AACzB,UAAI,sBAASA,aAAT,KAA2BA,aAAa,KAAK,EAAjD,EAAqD;AACnD,YAAI,WAAWC,IAAX,CAAgBD,aAAhB,CAAJ,EAAoC;AAClC,iBAAOA,aAAa,CAACE,KAAd,CAAoB,CAApB,CAAP;AACD,SAFD,MAEO,IAAI,oCAAoCD,IAApC,CAAyCD,aAAzC,CAAJ,EAA6D;AAClE,iBAAOA,aAAP;AACD,SAFM,MAEA;AACL,iBAAOH,wBAAP;AACD;AACF,OARD,MAQO,IAAI,sBAASG,aAAT,KAA2B,CAAC,mBAAMA,aAAN,CAAhC,EAAsD;AAC3D,eAAOA,aAAa,CAACG,QAAd,EAAP;AACD;AACF;;AAED,WAAO,GAAP;AACD,GAhBD,CAHI,CAqBJ;;;AACA,wBAAU,MAAM;AACd,UAAMC,wBAAwB,GAAGL,yBAAyB,CAACJ,YAAD,CAA1D;;AAEA,QAAIE,wBAAwB,KAAKO,wBAAjC,EAA2D;AACzDN,MAAAA,2BAA2B,CAACM,wBAAD,CAA3B;AACD,KALa,CAMd;;AACD,GAPD,EAOG,EAPH;;AASA,QAAMC,gBAAgB,GAAIC,QAAD,IAAsB;AAC7C,UAAMC,oBAAoB,GAAGR,yBAAyB,CAACO,QAAD,CAAtD;AACA,UAAME,MAAM,GAAGC,UAAU,CAACF,oBAAD,CAAzB;AAEAT,IAAAA,2BAA2B,CAACS,oBAAD,CAA3B;AACAd,IAAAA,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAGe,MAAH,CAAZ;AACD,GAND,CA/BI,CAuCJ;;;AACA,wBAAU,MAAM;AACd,UAAME,qBAAqB,GAAGX,yBAAyB,CAACL,KAAD,CAAvD;;AAEA,QAAIG,wBAAwB,KAAKa,qBAAjC,EAAwD;AACtDL,MAAAA,gBAAgB,CAACK,qBAAD,CAAhB;AACD,KALa,CAMd;;AACD,GAPD,EAOG,CAAChB,KAAD,CAPH;AASA,sBACE,6BAAC,sBAAD;AACE,IAAA,YAAY,EAAC,SADf;AAEE,IAAA,KAAK,EAAEG,wBAFT;AAGE,IAAA,YAAY,EAAEQ;AAHhB,KAIMT,KAJN,EADF;AAQD,CA9DD;;eAgEeJ,W","sourcesContent":["import React, { FC, useEffect, useState } from \"react\";\nimport { TextInput } from \"react-native\";\nimport { isString, isNumber, isNaN } from \"lodash\";\n\ninterface Props {\n value?: number | string;\n defaultValue?: number | string;\n onChangeText?: (value?: number) => void;\n}\n\nconst NumberInput: FC<Props> = ({\n onChangeText,\n value,\n defaultValue,\n ...props\n}) => {\n const [currentStringNumberValue, setCurrentStringNumberValue] = useState(\"0\");\n\n const formatValueToStringNumber = (valueToFormat?: number | string) => {\n if (valueToFormat != null) {\n if (isString(valueToFormat) && valueToFormat !== \"\") {\n if (/^0[1-9]$/.test(valueToFormat)) {\n return valueToFormat.slice(1);\n } else if (/^[+-]?([0-9]+\\.?[0-9]*|\\.[0-9]+)$/.test(valueToFormat)) {\n return valueToFormat;\n } else {\n return currentStringNumberValue;\n }\n } else if (isNumber(valueToFormat) && !isNaN(valueToFormat)) {\n return valueToFormat.toString();\n }\n }\n\n return \"0\";\n };\n\n // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only\n useEffect(() => {\n const defaultStringNumberValue = formatValueToStringNumber(defaultValue);\n\n if (currentStringNumberValue !== defaultStringNumberValue) {\n setCurrentStringNumberValue(defaultStringNumberValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleChangeText = (newValue: string) => {\n const newStringNumberValue = formatValueToStringNumber(newValue);\n const number = parseFloat(newStringNumberValue);\n\n setCurrentStringNumberValue(newStringNumberValue);\n onChangeText?.(number);\n };\n\n // run handleChangeText with value prop only when value prop changes (and first render to reset currentStringNumberValue)\n useEffect(() => {\n const nextStringNumberValue = formatValueToStringNumber(value);\n\n if (currentStringNumberValue !== nextStringNumberValue) {\n handleChangeText(nextStringNumberValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n return (\n <TextInput\n keyboardType=\"numeric\"\n value={currentStringNumberValue}\n onChangeText={handleChangeText}\n {...props}\n />\n );\n};\n\nexport default NumberInput;\n"]}
@@ -14,7 +14,9 @@ const SEED_DATA = {
14
14
  category: _types.COMPONENT_TYPES.basic,
15
15
  layout: {},
16
16
  props: {
17
- name: (0, _types.createIconProp)(),
17
+ name: { ...(0, _types.createIconProp)(),
18
+ group: _types.GROUPS.data
19
+ },
18
20
  color: (0, _types.createColorProp)(),
19
21
  size: (0, _types.createNumberProp)({
20
22
  group: _types.GROUPS.basic,
@@ -1 +1 @@
1
- {"version":3,"sources":["Icon.ts"],"names":["SEED_DATA","name","tag","description","category","COMPONENT_TYPES","basic","layout","props","color","size","group","GROUPS","label","defaultValue","min","max","step","precision"],"mappings":";;;;;;;AAAA;;AAQO,MAAMA,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,MADiB;AAEvBC,EAAAA,GAAG,EAAE,MAFkB;AAGvBC,EAAAA,WAAW,EAAE,SAHU;AAIvBC,EAAAA,QAAQ,EAAEC,uBAAgBC,KAJH;AAKvBC,EAAAA,MAAM,EAAE,EALe;AAMvBC,EAAAA,KAAK,EAAE;AACLP,IAAAA,IAAI,EAAE,4BADD;AAELQ,IAAAA,KAAK,EAAE,6BAFF;AAGLC,IAAAA,IAAI,EAAE,6BAAiB;AACrBC,MAAAA,KAAK,EAAEC,cAAON,KADO;AAErBO,MAAAA,KAAK,EAAE,MAFc;AAGrBV,MAAAA,WAAW,EAAE,+BAHQ;AAIrBW,MAAAA,YAAY,EAAE,EAJO;AAKrBC,MAAAA,GAAG,EAAE,EALgB;AAMrBC,MAAAA,GAAG,EAAE,GANgB;AAOrBC,MAAAA,IAAI,EAAE,CAPe;AAQrBC,MAAAA,SAAS,EAAE;AARU,KAAjB;AAHD;AANgB,CAAlB","sourcesContent":["import {\n COMPONENT_TYPES,\n GROUPS,\n createNumberProp,\n createColorProp,\n createIconProp,\n} from \"@draftbit/types\";\n\nexport const SEED_DATA = {\n name: \"Icon\",\n tag: \"Icon\",\n description: \"An icon\",\n category: COMPONENT_TYPES.basic,\n layout: {},\n props: {\n name: createIconProp(),\n color: createColorProp(),\n size: createNumberProp({\n group: GROUPS.basic,\n label: \"Size\",\n description: \"Width and height of your icon\",\n defaultValue: 24,\n min: 16,\n max: 128,\n step: 1,\n precision: 0,\n }),\n },\n};\n"]}
1
+ {"version":3,"sources":["Icon.ts"],"names":["SEED_DATA","name","tag","description","category","COMPONENT_TYPES","basic","layout","props","group","GROUPS","data","color","size","label","defaultValue","min","max","step","precision"],"mappings":";;;;;;;AAAA;;AAQO,MAAMA,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,MADiB;AAEvBC,EAAAA,GAAG,EAAE,MAFkB;AAGvBC,EAAAA,WAAW,EAAE,SAHU;AAIvBC,EAAAA,QAAQ,EAAEC,uBAAgBC,KAJH;AAKvBC,EAAAA,MAAM,EAAE,EALe;AAMvBC,EAAAA,KAAK,EAAE;AACLP,IAAAA,IAAI,EAAE,EACJ,GAAG,4BADC;AAEJQ,MAAAA,KAAK,EAAEC,cAAOC;AAFV,KADD;AAKLC,IAAAA,KAAK,EAAE,6BALF;AAMLC,IAAAA,IAAI,EAAE,6BAAiB;AACrBJ,MAAAA,KAAK,EAAEC,cAAOJ,KADO;AAErBQ,MAAAA,KAAK,EAAE,MAFc;AAGrBX,MAAAA,WAAW,EAAE,+BAHQ;AAIrBY,MAAAA,YAAY,EAAE,EAJO;AAKrBC,MAAAA,GAAG,EAAE,EALgB;AAMrBC,MAAAA,GAAG,EAAE,GANgB;AAOrBC,MAAAA,IAAI,EAAE,CAPe;AAQrBC,MAAAA,SAAS,EAAE;AARU,KAAjB;AAND;AANgB,CAAlB","sourcesContent":["import {\n COMPONENT_TYPES,\n GROUPS,\n createNumberProp,\n createColorProp,\n createIconProp,\n} from \"@draftbit/types\";\n\nexport const SEED_DATA = {\n name: \"Icon\",\n tag: \"Icon\",\n description: \"An icon\",\n category: COMPONENT_TYPES.basic,\n layout: {},\n props: {\n name: {\n ...createIconProp(),\n group: GROUPS.data,\n },\n color: createColorProp(),\n size: createNumberProp({\n group: GROUPS.basic,\n label: \"Size\",\n description: \"Width and height of your icon\",\n defaultValue: 24,\n min: 16,\n max: 128,\n step: 1,\n precision: 0,\n }),\n },\n};\n"]}
@@ -11,15 +11,16 @@ const NumberInput = _ref => {
11
11
  defaultValue,
12
12
  ...props
13
13
  } = _ref;
14
+ const [currentStringNumberValue, setCurrentStringNumberValue] = useState("0");
14
15
 
15
- const formatValueToStringNumber = (valueToFormat, currentStringNumberValue) => {
16
+ const formatValueToStringNumber = valueToFormat => {
16
17
  if (valueToFormat != null) {
17
18
  if (isString(valueToFormat) && valueToFormat !== "") {
18
19
  if (/^0[1-9]$/.test(valueToFormat)) {
19
20
  return valueToFormat.slice(1);
20
21
  } else if (/^[+-]?([0-9]+\.?[0-9]*|\.[0-9]+)$/.test(valueToFormat)) {
21
22
  return valueToFormat;
22
- } else if (currentStringNumberValue) {
23
+ } else {
23
24
  return currentStringNumberValue;
24
25
  }
25
26
  } else if (isNumber(valueToFormat) && !isNaN(valueToFormat)) {
@@ -28,31 +29,28 @@ const NumberInput = _ref => {
28
29
  }
29
30
 
30
31
  return "0";
31
- };
32
-
33
- const [currentStringNumberValue, setCurrentStringNumberValue] = useState(formatValueToStringNumber(value));
34
-
35
- const handleChangeText = newValue => {
36
- const newStringNumberValue = formatValueToStringNumber(newValue, currentStringNumberValue);
37
- const number = parseFloat(newStringNumberValue);
38
- setCurrentStringNumberValue(newStringNumberValue);
39
- onChangeText === null || onChangeText === void 0 ? void 0 : onChangeText(number);
40
- };
41
- /* set currentStringNumberValue directly to defaultValue if it exists on load
42
- ( no need to use TextInput's defaultValue because its value is always controlled & set ) */
32
+ }; // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only
43
33
 
44
34
 
45
35
  useEffect(() => {
46
- const defaultStringNumberValue = formatValueToStringNumber(defaultValue, currentStringNumberValue);
36
+ const defaultStringNumberValue = formatValueToStringNumber(defaultValue);
47
37
 
48
38
  if (currentStringNumberValue !== defaultStringNumberValue) {
49
39
  setCurrentStringNumberValue(defaultStringNumberValue);
50
40
  } // eslint-disable-next-line react-hooks/exhaustive-deps
51
41
 
52
- }, []); // set new value if different from current value
42
+ }, []);
43
+
44
+ const handleChangeText = newValue => {
45
+ const newStringNumberValue = formatValueToStringNumber(newValue);
46
+ const number = parseFloat(newStringNumberValue);
47
+ setCurrentStringNumberValue(newStringNumberValue);
48
+ onChangeText === null || onChangeText === void 0 ? void 0 : onChangeText(number);
49
+ }; // run handleChangeText with value prop only when value prop changes (and first render to reset currentStringNumberValue)
50
+
53
51
 
54
52
  useEffect(() => {
55
- const nextStringNumberValue = formatValueToStringNumber(value, currentStringNumberValue);
53
+ const nextStringNumberValue = formatValueToStringNumber(value);
56
54
 
57
55
  if (currentStringNumberValue !== nextStringNumberValue) {
58
56
  handleChangeText(nextStringNumberValue);
@@ -1 +1 @@
1
- {"version":3,"sources":["NumberInput.tsx"],"names":["React","useEffect","useState","TextInput","isString","isNumber","isNaN","NumberInput","onChangeText","value","defaultValue","props","formatValueToStringNumber","valueToFormat","currentStringNumberValue","test","slice","toString","setCurrentStringNumberValue","handleChangeText","newValue","newStringNumberValue","number","parseFloat","defaultStringNumberValue","nextStringNumberValue"],"mappings":";;AAAA,OAAOA,KAAP,IAAoBC,SAApB,EAA+BC,QAA/B,QAA+C,OAA/C;AACA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,QAAT,EAAmBC,QAAnB,EAA6BC,KAA7B,QAA0C,QAA1C;;AAQA,MAAMC,WAAsB,GAAG,QAKzB;AAAA,MAL0B;AAC9BC,IAAAA,YAD8B;AAE9BC,IAAAA,KAF8B;AAG9BC,IAAAA,YAH8B;AAI9B,OAAGC;AAJ2B,GAK1B;;AACJ,QAAMC,yBAAyB,GAAG,CAChCC,aADgC,EAEhCC,wBAFgC,KAG7B;AACH,QAAID,aAAa,IAAI,IAArB,EAA2B;AACzB,UAAIT,QAAQ,CAACS,aAAD,CAAR,IAA2BA,aAAa,KAAK,EAAjD,EAAqD;AACnD,YAAI,WAAWE,IAAX,CAAgBF,aAAhB,CAAJ,EAAoC;AAClC,iBAAOA,aAAa,CAACG,KAAd,CAAoB,CAApB,CAAP;AACD,SAFD,MAEO,IAAI,oCAAoCD,IAApC,CAAyCF,aAAzC,CAAJ,EAA6D;AAClE,iBAAOA,aAAP;AACD,SAFM,MAEA,IAAIC,wBAAJ,EAA8B;AACnC,iBAAOA,wBAAP;AACD;AACF,OARD,MAQO,IAAIT,QAAQ,CAACQ,aAAD,CAAR,IAA2B,CAACP,KAAK,CAACO,aAAD,CAArC,EAAsD;AAC3D,eAAOA,aAAa,CAACI,QAAd,EAAP;AACD;AACF;;AAED,WAAO,GAAP;AACD,GAnBD;;AAqBA,QAAM,CAACH,wBAAD,EAA2BI,2BAA3B,IAA0DhB,QAAQ,CACtEU,yBAAyB,CAACH,KAAD,CAD6C,CAAxE;;AAIA,QAAMU,gBAAgB,GAAIC,QAAD,IAAsB;AAC7C,UAAMC,oBAAoB,GAAGT,yBAAyB,CACpDQ,QADoD,EAEpDN,wBAFoD,CAAtD;AAIA,UAAMQ,MAAM,GAAGC,UAAU,CAACF,oBAAD,CAAzB;AAEAH,IAAAA,2BAA2B,CAACG,oBAAD,CAA3B;AACAb,IAAAA,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAGc,MAAH,CAAZ;AACD,GATD;AAWA;AACF;;;AACErB,EAAAA,SAAS,CAAC,MAAM;AACd,UAAMuB,wBAAwB,GAAGZ,yBAAyB,CACxDF,YADwD,EAExDI,wBAFwD,CAA1D;;AAKA,QAAIA,wBAAwB,KAAKU,wBAAjC,EAA2D;AACzDN,MAAAA,2BAA2B,CAACM,wBAAD,CAA3B;AACD,KARa,CASd;;AACD,GAVQ,EAUN,EAVM,CAAT,CAvCI,CAmDJ;;AACAvB,EAAAA,SAAS,CAAC,MAAM;AACd,UAAMwB,qBAAqB,GAAGb,yBAAyB,CACrDH,KADqD,EAErDK,wBAFqD,CAAvD;;AAKA,QAAIA,wBAAwB,KAAKW,qBAAjC,EAAwD;AACtDN,MAAAA,gBAAgB,CAACM,qBAAD,CAAhB;AACD,KARa,CASd;;AACD,GAVQ,EAUN,CAAChB,KAAD,CAVM,CAAT;AAYA,sBACE,oBAAC,SAAD;AACE,IAAA,YAAY,EAAC,SADf;AAEE,IAAA,KAAK,EAAEK,wBAFT;AAGE,IAAA,YAAY,EAAEK;AAHhB,KAIMR,KAJN,EADF;AAQD,CA7ED;;AA+EA,eAAeJ,WAAf","sourcesContent":["import React, { FC, useEffect, useState } from \"react\";\nimport { TextInput } from \"react-native\";\nimport { isString, isNumber, isNaN } from \"lodash\";\n\ninterface Props {\n value?: number | string;\n defaultValue?: number | string;\n onChangeText?: (value?: number) => void;\n}\n\nconst NumberInput: FC<Props> = ({\n onChangeText,\n value,\n defaultValue,\n ...props\n}) => {\n const formatValueToStringNumber = (\n valueToFormat?: number | string,\n currentStringNumberValue?: string\n ) => {\n if (valueToFormat != null) {\n if (isString(valueToFormat) && valueToFormat !== \"\") {\n if (/^0[1-9]$/.test(valueToFormat)) {\n return valueToFormat.slice(1);\n } else if (/^[+-]?([0-9]+\\.?[0-9]*|\\.[0-9]+)$/.test(valueToFormat)) {\n return valueToFormat;\n } else if (currentStringNumberValue) {\n return currentStringNumberValue;\n }\n } else if (isNumber(valueToFormat) && !isNaN(valueToFormat)) {\n return valueToFormat.toString();\n }\n }\n\n return \"0\";\n };\n\n const [currentStringNumberValue, setCurrentStringNumberValue] = useState(\n formatValueToStringNumber(value)\n );\n\n const handleChangeText = (newValue: string) => {\n const newStringNumberValue = formatValueToStringNumber(\n newValue,\n currentStringNumberValue\n );\n const number = parseFloat(newStringNumberValue);\n\n setCurrentStringNumberValue(newStringNumberValue);\n onChangeText?.(number);\n };\n\n /* set currentStringNumberValue directly to defaultValue if it exists on load\n ( no need to use TextInput's defaultValue because its value is always controlled & set ) */\n useEffect(() => {\n const defaultStringNumberValue = formatValueToStringNumber(\n defaultValue,\n currentStringNumberValue\n );\n\n if (currentStringNumberValue !== defaultStringNumberValue) {\n setCurrentStringNumberValue(defaultStringNumberValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // set new value if different from current value\n useEffect(() => {\n const nextStringNumberValue = formatValueToStringNumber(\n value,\n currentStringNumberValue\n );\n\n if (currentStringNumberValue !== nextStringNumberValue) {\n handleChangeText(nextStringNumberValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n return (\n <TextInput\n keyboardType=\"numeric\"\n value={currentStringNumberValue}\n onChangeText={handleChangeText}\n {...props}\n />\n );\n};\n\nexport default NumberInput;\n"]}
1
+ {"version":3,"sources":["NumberInput.tsx"],"names":["React","useEffect","useState","TextInput","isString","isNumber","isNaN","NumberInput","onChangeText","value","defaultValue","props","currentStringNumberValue","setCurrentStringNumberValue","formatValueToStringNumber","valueToFormat","test","slice","toString","defaultStringNumberValue","handleChangeText","newValue","newStringNumberValue","number","parseFloat","nextStringNumberValue"],"mappings":";;AAAA,OAAOA,KAAP,IAAoBC,SAApB,EAA+BC,QAA/B,QAA+C,OAA/C;AACA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,QAAT,EAAmBC,QAAnB,EAA6BC,KAA7B,QAA0C,QAA1C;;AAQA,MAAMC,WAAsB,GAAG,QAKzB;AAAA,MAL0B;AAC9BC,IAAAA,YAD8B;AAE9BC,IAAAA,KAF8B;AAG9BC,IAAAA,YAH8B;AAI9B,OAAGC;AAJ2B,GAK1B;AACJ,QAAM,CAACC,wBAAD,EAA2BC,2BAA3B,IAA0DX,QAAQ,CAAC,GAAD,CAAxE;;AAEA,QAAMY,yBAAyB,GAAIC,aAAD,IAAqC;AACrE,QAAIA,aAAa,IAAI,IAArB,EAA2B;AACzB,UAAIX,QAAQ,CAACW,aAAD,CAAR,IAA2BA,aAAa,KAAK,EAAjD,EAAqD;AACnD,YAAI,WAAWC,IAAX,CAAgBD,aAAhB,CAAJ,EAAoC;AAClC,iBAAOA,aAAa,CAACE,KAAd,CAAoB,CAApB,CAAP;AACD,SAFD,MAEO,IAAI,oCAAoCD,IAApC,CAAyCD,aAAzC,CAAJ,EAA6D;AAClE,iBAAOA,aAAP;AACD,SAFM,MAEA;AACL,iBAAOH,wBAAP;AACD;AACF,OARD,MAQO,IAAIP,QAAQ,CAACU,aAAD,CAAR,IAA2B,CAACT,KAAK,CAACS,aAAD,CAArC,EAAsD;AAC3D,eAAOA,aAAa,CAACG,QAAd,EAAP;AACD;AACF;;AAED,WAAO,GAAP;AACD,GAhBD,CAHI,CAqBJ;;;AACAjB,EAAAA,SAAS,CAAC,MAAM;AACd,UAAMkB,wBAAwB,GAAGL,yBAAyB,CAACJ,YAAD,CAA1D;;AAEA,QAAIE,wBAAwB,KAAKO,wBAAjC,EAA2D;AACzDN,MAAAA,2BAA2B,CAACM,wBAAD,CAA3B;AACD,KALa,CAMd;;AACD,GAPQ,EAON,EAPM,CAAT;;AASA,QAAMC,gBAAgB,GAAIC,QAAD,IAAsB;AAC7C,UAAMC,oBAAoB,GAAGR,yBAAyB,CAACO,QAAD,CAAtD;AACA,UAAME,MAAM,GAAGC,UAAU,CAACF,oBAAD,CAAzB;AAEAT,IAAAA,2BAA2B,CAACS,oBAAD,CAA3B;AACAd,IAAAA,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAGe,MAAH,CAAZ;AACD,GAND,CA/BI,CAuCJ;;;AACAtB,EAAAA,SAAS,CAAC,MAAM;AACd,UAAMwB,qBAAqB,GAAGX,yBAAyB,CAACL,KAAD,CAAvD;;AAEA,QAAIG,wBAAwB,KAAKa,qBAAjC,EAAwD;AACtDL,MAAAA,gBAAgB,CAACK,qBAAD,CAAhB;AACD,KALa,CAMd;;AACD,GAPQ,EAON,CAAChB,KAAD,CAPM,CAAT;AASA,sBACE,oBAAC,SAAD;AACE,IAAA,YAAY,EAAC,SADf;AAEE,IAAA,KAAK,EAAEG,wBAFT;AAGE,IAAA,YAAY,EAAEQ;AAHhB,KAIMT,KAJN,EADF;AAQD,CA9DD;;AAgEA,eAAeJ,WAAf","sourcesContent":["import React, { FC, useEffect, useState } from \"react\";\nimport { TextInput } from \"react-native\";\nimport { isString, isNumber, isNaN } from \"lodash\";\n\ninterface Props {\n value?: number | string;\n defaultValue?: number | string;\n onChangeText?: (value?: number) => void;\n}\n\nconst NumberInput: FC<Props> = ({\n onChangeText,\n value,\n defaultValue,\n ...props\n}) => {\n const [currentStringNumberValue, setCurrentStringNumberValue] = useState(\"0\");\n\n const formatValueToStringNumber = (valueToFormat?: number | string) => {\n if (valueToFormat != null) {\n if (isString(valueToFormat) && valueToFormat !== \"\") {\n if (/^0[1-9]$/.test(valueToFormat)) {\n return valueToFormat.slice(1);\n } else if (/^[+-]?([0-9]+\\.?[0-9]*|\\.[0-9]+)$/.test(valueToFormat)) {\n return valueToFormat;\n } else {\n return currentStringNumberValue;\n }\n } else if (isNumber(valueToFormat) && !isNaN(valueToFormat)) {\n return valueToFormat.toString();\n }\n }\n\n return \"0\";\n };\n\n // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only\n useEffect(() => {\n const defaultStringNumberValue = formatValueToStringNumber(defaultValue);\n\n if (currentStringNumberValue !== defaultStringNumberValue) {\n setCurrentStringNumberValue(defaultStringNumberValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleChangeText = (newValue: string) => {\n const newStringNumberValue = formatValueToStringNumber(newValue);\n const number = parseFloat(newStringNumberValue);\n\n setCurrentStringNumberValue(newStringNumberValue);\n onChangeText?.(number);\n };\n\n // run handleChangeText with value prop only when value prop changes (and first render to reset currentStringNumberValue)\n useEffect(() => {\n const nextStringNumberValue = formatValueToStringNumber(value);\n\n if (currentStringNumberValue !== nextStringNumberValue) {\n handleChangeText(nextStringNumberValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n return (\n <TextInput\n keyboardType=\"numeric\"\n value={currentStringNumberValue}\n onChangeText={handleChangeText}\n {...props}\n />\n );\n};\n\nexport default NumberInput;\n"]}
@@ -6,7 +6,9 @@ export const SEED_DATA = {
6
6
  category: COMPONENT_TYPES.basic,
7
7
  layout: {},
8
8
  props: {
9
- name: createIconProp(),
9
+ name: { ...createIconProp(),
10
+ group: GROUPS.data
11
+ },
10
12
  color: createColorProp(),
11
13
  size: createNumberProp({
12
14
  group: GROUPS.basic,
@@ -1 +1 @@
1
- {"version":3,"sources":["Icon.ts"],"names":["COMPONENT_TYPES","GROUPS","createNumberProp","createColorProp","createIconProp","SEED_DATA","name","tag","description","category","basic","layout","props","color","size","group","label","defaultValue","min","max","step","precision"],"mappings":"AAAA,SACEA,eADF,EAEEC,MAFF,EAGEC,gBAHF,EAIEC,eAJF,EAKEC,cALF,QAMO,iBANP;AAQA,OAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,MADiB;AAEvBC,EAAAA,GAAG,EAAE,MAFkB;AAGvBC,EAAAA,WAAW,EAAE,SAHU;AAIvBC,EAAAA,QAAQ,EAAET,eAAe,CAACU,KAJH;AAKvBC,EAAAA,MAAM,EAAE,EALe;AAMvBC,EAAAA,KAAK,EAAE;AACLN,IAAAA,IAAI,EAAEF,cAAc,EADf;AAELS,IAAAA,KAAK,EAAEV,eAAe,EAFjB;AAGLW,IAAAA,IAAI,EAAEZ,gBAAgB,CAAC;AACrBa,MAAAA,KAAK,EAAEd,MAAM,CAACS,KADO;AAErBM,MAAAA,KAAK,EAAE,MAFc;AAGrBR,MAAAA,WAAW,EAAE,+BAHQ;AAIrBS,MAAAA,YAAY,EAAE,EAJO;AAKrBC,MAAAA,GAAG,EAAE,EALgB;AAMrBC,MAAAA,GAAG,EAAE,GANgB;AAOrBC,MAAAA,IAAI,EAAE,CAPe;AAQrBC,MAAAA,SAAS,EAAE;AARU,KAAD;AAHjB;AANgB,CAAlB","sourcesContent":["import {\n COMPONENT_TYPES,\n GROUPS,\n createNumberProp,\n createColorProp,\n createIconProp,\n} from \"@draftbit/types\";\n\nexport const SEED_DATA = {\n name: \"Icon\",\n tag: \"Icon\",\n description: \"An icon\",\n category: COMPONENT_TYPES.basic,\n layout: {},\n props: {\n name: createIconProp(),\n color: createColorProp(),\n size: createNumberProp({\n group: GROUPS.basic,\n label: \"Size\",\n description: \"Width and height of your icon\",\n defaultValue: 24,\n min: 16,\n max: 128,\n step: 1,\n precision: 0,\n }),\n },\n};\n"]}
1
+ {"version":3,"sources":["Icon.ts"],"names":["COMPONENT_TYPES","GROUPS","createNumberProp","createColorProp","createIconProp","SEED_DATA","name","tag","description","category","basic","layout","props","group","data","color","size","label","defaultValue","min","max","step","precision"],"mappings":"AAAA,SACEA,eADF,EAEEC,MAFF,EAGEC,gBAHF,EAIEC,eAJF,EAKEC,cALF,QAMO,iBANP;AAQA,OAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,MADiB;AAEvBC,EAAAA,GAAG,EAAE,MAFkB;AAGvBC,EAAAA,WAAW,EAAE,SAHU;AAIvBC,EAAAA,QAAQ,EAAET,eAAe,CAACU,KAJH;AAKvBC,EAAAA,MAAM,EAAE,EALe;AAMvBC,EAAAA,KAAK,EAAE;AACLN,IAAAA,IAAI,EAAE,EACJ,GAAGF,cAAc,EADb;AAEJS,MAAAA,KAAK,EAAEZ,MAAM,CAACa;AAFV,KADD;AAKLC,IAAAA,KAAK,EAAEZ,eAAe,EALjB;AAMLa,IAAAA,IAAI,EAAEd,gBAAgB,CAAC;AACrBW,MAAAA,KAAK,EAAEZ,MAAM,CAACS,KADO;AAErBO,MAAAA,KAAK,EAAE,MAFc;AAGrBT,MAAAA,WAAW,EAAE,+BAHQ;AAIrBU,MAAAA,YAAY,EAAE,EAJO;AAKrBC,MAAAA,GAAG,EAAE,EALgB;AAMrBC,MAAAA,GAAG,EAAE,GANgB;AAOrBC,MAAAA,IAAI,EAAE,CAPe;AAQrBC,MAAAA,SAAS,EAAE;AARU,KAAD;AANjB;AANgB,CAAlB","sourcesContent":["import {\n COMPONENT_TYPES,\n GROUPS,\n createNumberProp,\n createColorProp,\n createIconProp,\n} from \"@draftbit/types\";\n\nexport const SEED_DATA = {\n name: \"Icon\",\n tag: \"Icon\",\n description: \"An icon\",\n category: COMPONENT_TYPES.basic,\n layout: {},\n props: {\n name: {\n ...createIconProp(),\n group: GROUPS.data,\n },\n color: createColorProp(),\n size: createNumberProp({\n group: GROUPS.basic,\n label: \"Size\",\n description: \"Width and height of your icon\",\n defaultValue: 24,\n min: 16,\n max: 128,\n step: 1,\n precision: 0,\n }),\n },\n};\n"]}
@@ -6,6 +6,7 @@ export declare const SEED_DATA: {
6
6
  layout: {};
7
7
  props: {
8
8
  name: {
9
+ group: string;
9
10
  label: string;
10
11
  description: string;
11
12
  formType: string;
@@ -13,7 +14,6 @@ export declare const SEED_DATA: {
13
14
  defaultValue: string;
14
15
  required: boolean;
15
16
  editable: boolean;
16
- group: string;
17
17
  };
18
18
  color: {
19
19
  group: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@draftbit/core",
3
- "version": "43.4.8",
3
+ "version": "43.4.11-143169.1+14316984",
4
4
  "description": "Core (non-native) Components",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -41,7 +41,7 @@
41
41
  "dependencies": {
42
42
  "@date-io/date-fns": "^1.3.13",
43
43
  "@draftbit/react-theme-provider": "^2.1.1",
44
- "@draftbit/types": "^43.4.0",
44
+ "@draftbit/types": "^43.4.10",
45
45
  "@material-ui/core": "^4.11.0",
46
46
  "@material-ui/pickers": "^3.2.10",
47
47
  "@react-native-community/slider": "4.1.7",
@@ -80,5 +80,5 @@
80
80
  ]
81
81
  ]
82
82
  },
83
- "gitHead": "afb91aec7223adbde7640b85877af6e7ea4f361f"
83
+ "gitHead": "143169844134d6f56b45c9017522d3143cad9743"
84
84
  }
@@ -2,7 +2,8 @@ import React, { useEffect, useState } from "react";
2
2
  import { TextInput } from "react-native";
3
3
  import { isString, isNumber, isNaN } from "lodash";
4
4
  const NumberInput = ({ onChangeText, value, defaultValue, ...props }) => {
5
- const formatValueToStringNumber = (valueToFormat, currentStringNumberValue) => {
5
+ const [currentStringNumberValue, setCurrentStringNumberValue] = useState("0");
6
+ const formatValueToStringNumber = (valueToFormat) => {
6
7
  if (valueToFormat != null) {
7
8
  if (isString(valueToFormat) && valueToFormat !== "") {
8
9
  if (/^0[1-9]$/.test(valueToFormat)) {
@@ -11,7 +12,7 @@ const NumberInput = ({ onChangeText, value, defaultValue, ...props }) => {
11
12
  else if (/^[+-]?([0-9]+\.?[0-9]*|\.[0-9]+)$/.test(valueToFormat)) {
12
13
  return valueToFormat;
13
14
  }
14
- else if (currentStringNumberValue) {
15
+ else {
15
16
  return currentStringNumberValue;
16
17
  }
17
18
  }
@@ -21,25 +22,23 @@ const NumberInput = ({ onChangeText, value, defaultValue, ...props }) => {
21
22
  }
22
23
  return "0";
23
24
  };
24
- const [currentStringNumberValue, setCurrentStringNumberValue] = useState(formatValueToStringNumber(value));
25
- const handleChangeText = (newValue) => {
26
- const newStringNumberValue = formatValueToStringNumber(newValue, currentStringNumberValue);
27
- const number = parseFloat(newStringNumberValue);
28
- setCurrentStringNumberValue(newStringNumberValue);
29
- onChangeText?.(number);
30
- };
31
- /* set currentStringNumberValue directly to defaultValue if it exists on load
32
- ( no need to use TextInput's defaultValue because its value is always controlled & set ) */
25
+ // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only
33
26
  useEffect(() => {
34
- const defaultStringNumberValue = formatValueToStringNumber(defaultValue, currentStringNumberValue);
27
+ const defaultStringNumberValue = formatValueToStringNumber(defaultValue);
35
28
  if (currentStringNumberValue !== defaultStringNumberValue) {
36
29
  setCurrentStringNumberValue(defaultStringNumberValue);
37
30
  }
38
31
  // eslint-disable-next-line react-hooks/exhaustive-deps
39
32
  }, []);
40
- // set new value if different from current value
33
+ const handleChangeText = (newValue) => {
34
+ const newStringNumberValue = formatValueToStringNumber(newValue);
35
+ const number = parseFloat(newStringNumberValue);
36
+ setCurrentStringNumberValue(newStringNumberValue);
37
+ onChangeText?.(number);
38
+ };
39
+ // run handleChangeText with value prop only when value prop changes (and first render to reset currentStringNumberValue)
41
40
  useEffect(() => {
42
- const nextStringNumberValue = formatValueToStringNumber(value, currentStringNumberValue);
41
+ const nextStringNumberValue = formatValueToStringNumber(value);
43
42
  if (currentStringNumberValue !== nextStringNumberValue) {
44
43
  handleChangeText(nextStringNumberValue);
45
44
  }
@@ -14,17 +14,16 @@ const NumberInput: FC<Props> = ({
14
14
  defaultValue,
15
15
  ...props
16
16
  }) => {
17
- const formatValueToStringNumber = (
18
- valueToFormat?: number | string,
19
- currentStringNumberValue?: string
20
- ) => {
17
+ const [currentStringNumberValue, setCurrentStringNumberValue] = useState("0");
18
+
19
+ const formatValueToStringNumber = (valueToFormat?: number | string) => {
21
20
  if (valueToFormat != null) {
22
21
  if (isString(valueToFormat) && valueToFormat !== "") {
23
22
  if (/^0[1-9]$/.test(valueToFormat)) {
24
23
  return valueToFormat.slice(1);
25
24
  } else if (/^[+-]?([0-9]+\.?[0-9]*|\.[0-9]+)$/.test(valueToFormat)) {
26
25
  return valueToFormat;
27
- } else if (currentStringNumberValue) {
26
+ } else {
28
27
  return currentStringNumberValue;
29
28
  }
30
29
  } else if (isNumber(valueToFormat) && !isNaN(valueToFormat)) {
@@ -35,28 +34,9 @@ const NumberInput: FC<Props> = ({
35
34
  return "0";
36
35
  };
37
36
 
38
- const [currentStringNumberValue, setCurrentStringNumberValue] = useState(
39
- formatValueToStringNumber(value)
40
- );
41
-
42
- const handleChangeText = (newValue: string) => {
43
- const newStringNumberValue = formatValueToStringNumber(
44
- newValue,
45
- currentStringNumberValue
46
- );
47
- const number = parseFloat(newStringNumberValue);
48
-
49
- setCurrentStringNumberValue(newStringNumberValue);
50
- onChangeText?.(number);
51
- };
52
-
53
- /* set currentStringNumberValue directly to defaultValue if it exists on load
54
- ( no need to use TextInput's defaultValue because its value is always controlled & set ) */
37
+ // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only
55
38
  useEffect(() => {
56
- const defaultStringNumberValue = formatValueToStringNumber(
57
- defaultValue,
58
- currentStringNumberValue
59
- );
39
+ const defaultStringNumberValue = formatValueToStringNumber(defaultValue);
60
40
 
61
41
  if (currentStringNumberValue !== defaultStringNumberValue) {
62
42
  setCurrentStringNumberValue(defaultStringNumberValue);
@@ -64,12 +44,17 @@ const NumberInput: FC<Props> = ({
64
44
  // eslint-disable-next-line react-hooks/exhaustive-deps
65
45
  }, []);
66
46
 
67
- // set new value if different from current value
47
+ const handleChangeText = (newValue: string) => {
48
+ const newStringNumberValue = formatValueToStringNumber(newValue);
49
+ const number = parseFloat(newStringNumberValue);
50
+
51
+ setCurrentStringNumberValue(newStringNumberValue);
52
+ onChangeText?.(number);
53
+ };
54
+
55
+ // run handleChangeText with value prop only when value prop changes (and first render to reset currentStringNumberValue)
68
56
  useEffect(() => {
69
- const nextStringNumberValue = formatValueToStringNumber(
70
- value,
71
- currentStringNumberValue
72
- );
57
+ const nextStringNumberValue = formatValueToStringNumber(value);
73
58
 
74
59
  if (currentStringNumberValue !== nextStringNumberValue) {
75
60
  handleChangeText(nextStringNumberValue);
@@ -6,7 +6,10 @@ export const SEED_DATA = {
6
6
  category: COMPONENT_TYPES.basic,
7
7
  layout: {},
8
8
  props: {
9
- name: createIconProp(),
9
+ name: {
10
+ ...createIconProp(),
11
+ group: GROUPS.data,
12
+ },
10
13
  color: createColorProp(),
11
14
  size: createNumberProp({
12
15
  group: GROUPS.basic,
@@ -13,7 +13,10 @@ export const SEED_DATA = {
13
13
  category: COMPONENT_TYPES.basic,
14
14
  layout: {},
15
15
  props: {
16
- name: createIconProp(),
16
+ name: {
17
+ ...createIconProp(),
18
+ group: GROUPS.data,
19
+ },
17
20
  color: createColorProp(),
18
21
  size: createNumberProp({
19
22
  group: GROUPS.basic,