@xhsreds/reds-rn-next 0.0.5 → 0.0.9

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.
Files changed (140) hide show
  1. package/coverage/coverage-final.json +13 -13
  2. package/lib/cjs/components/Button/index.js +2 -2
  3. package/lib/cjs/components/Button/index.js.map +1 -1
  4. package/lib/cjs/components/Button/interface/index.js +8 -1
  5. package/lib/cjs/components/Button/interface/index.js.map +1 -1
  6. package/lib/cjs/components/ConfigProvider/ConfigProvider.js +40 -8
  7. package/lib/cjs/components/ConfigProvider/ConfigProvider.js.map +1 -1
  8. package/lib/cjs/components/ConfigProvider/hooks/ConfigCache/ConfigCache.js +1 -1
  9. package/lib/cjs/components/ConfigProvider/hooks/ConfigCache/ConfigCache.js.map +1 -1
  10. package/lib/cjs/components/ConfigProvider/hooks/ConfigCache/index.js +1 -1
  11. package/lib/cjs/components/ConfigProvider/hooks/themeToken/useThemeToken.js +1 -1
  12. package/lib/cjs/components/ConfigProvider/hooks/themeToken/useThemeToken.js.map +1 -1
  13. package/lib/cjs/components/ConfigProvider/index.js +3 -3
  14. package/lib/cjs/components/ConfigProvider/interface/index.js +17 -0
  15. package/lib/cjs/components/ConfigProvider/interface/index.js.map +1 -1
  16. package/lib/cjs/components/Popover/hook.js.map +1 -1
  17. package/lib/cjs/components/Popover/index.js +1 -1
  18. package/lib/cjs/components/Popover/index.js.map +1 -1
  19. package/lib/cjs/components/Popover/interface/index.js +2 -3
  20. package/lib/cjs/components/Popover/interface/index.js.map +1 -1
  21. package/lib/cjs/components/Switch/index.js +2 -2
  22. package/lib/cjs/components/Switch/index.js.map +1 -1
  23. package/lib/cjs/components/Switch/interface/index.js +3 -3
  24. package/lib/cjs/components/Switch/interface/index.js.map +1 -1
  25. package/lib/cjs/index.js +5 -3
  26. package/lib/cjs/index.js.map +1 -1
  27. package/lib/esm/components/Button/index.js +2 -2
  28. package/lib/esm/components/Button/index.js.map +1 -1
  29. package/lib/esm/components/Button/interface/index.js +8 -2
  30. package/lib/esm/components/Button/interface/index.js.map +1 -1
  31. package/lib/esm/components/ConfigProvider/ConfigProvider.js +42 -6
  32. package/lib/esm/components/ConfigProvider/ConfigProvider.js.map +1 -1
  33. package/lib/esm/components/ConfigProvider/hooks/ConfigCache/ConfigCache.js +1 -1
  34. package/lib/esm/components/ConfigProvider/hooks/ConfigCache/ConfigCache.js.map +1 -1
  35. package/lib/esm/components/ConfigProvider/hooks/ConfigCache/index.js +1 -1
  36. package/lib/esm/components/ConfigProvider/hooks/themeToken/useThemeToken.js +1 -1
  37. package/lib/esm/components/ConfigProvider/hooks/themeToken/useThemeToken.js.map +1 -1
  38. package/lib/esm/components/ConfigProvider/index.js +2 -2
  39. package/lib/esm/components/ConfigProvider/interface/index.js +17 -1
  40. package/lib/esm/components/ConfigProvider/interface/index.js.map +1 -1
  41. package/lib/esm/components/Popover/hook.js.map +1 -1
  42. package/lib/esm/components/Popover/index.js +1 -1
  43. package/lib/esm/components/Popover/index.js.map +1 -1
  44. package/lib/esm/components/Popover/interface/index.js +2 -3
  45. package/lib/esm/components/Popover/interface/index.js.map +1 -1
  46. package/lib/esm/components/Switch/index.js +3 -3
  47. package/lib/esm/components/Switch/index.js.map +1 -1
  48. package/lib/esm/components/Switch/interface/index.js +3 -3
  49. package/lib/esm/components/Switch/interface/index.js.map +1 -1
  50. package/lib/esm/index.js +3 -2
  51. package/lib/esm/index.js.map +1 -1
  52. package/lib/types/packages/reds-rn/src/components/Button/demo/index.d.ts +2 -0
  53. package/lib/types/packages/reds-rn/src/components/Button/index.d.ts +3 -0
  54. package/lib/types/{src → packages/reds-rn/src}/components/Button/interface/index.d.ts +1 -0
  55. package/lib/types/packages/reds-rn/src/components/Button/test/index.bench.d.ts +1 -0
  56. package/lib/types/packages/reds-rn/src/components/Button/test/index.test.d.ts +1 -0
  57. package/lib/types/packages/reds-rn/src/components/ConfigProvider/ConfigProvider.d.ts +4 -0
  58. package/lib/types/packages/reds-rn/src/components/ConfigProvider/demo/index.d.ts +2 -0
  59. package/lib/types/{src → packages/reds-rn/src}/components/ConfigProvider/hooks/ConfigCache/interface.d.ts +1 -1
  60. package/lib/types/{src → packages/reds-rn/src}/components/ConfigProvider/index.d.ts +1 -1
  61. package/lib/types/{src → packages/reds-rn/src}/components/ConfigProvider/interface/index.d.ts +1 -0
  62. package/lib/types/packages/reds-rn/src/components/ConfigProvider/test/index.bench.d.ts +1 -0
  63. package/lib/types/packages/reds-rn/src/components/ConfigProvider/test/index.test.d.ts +1 -0
  64. package/lib/types/packages/reds-rn/src/components/Popover/demo/index.d.ts +2 -0
  65. package/lib/types/{src → packages/reds-rn/src}/components/Popover/hook.d.ts +2 -1
  66. package/lib/types/{src → packages/reds-rn/src}/components/Popover/interface/index.d.ts +2 -2
  67. package/lib/types/packages/reds-rn/src/components/Popover/test/index.bench.d.ts +1 -0
  68. package/lib/types/packages/reds-rn/src/components/Popover/test/index.test.d.ts +1 -0
  69. package/lib/types/packages/reds-rn/src/components/Switch/demo/index.d.ts +2 -0
  70. package/lib/types/{src → packages/reds-rn/src}/components/Switch/interface/index.d.ts +3 -3
  71. package/lib/types/packages/reds-rn/src/components/Switch/test/index.bench.d.ts +1 -0
  72. package/lib/types/packages/reds-rn/src/components/Switch/test/index.test.d.ts +1 -0
  73. package/lib/types/{src → packages/reds-rn/src}/index.d.ts +1 -0
  74. package/lib/types/utils/redsBench.d.ts +3 -0
  75. package/package.json +3 -3
  76. package/src/components/Button/demo/index.tsx +6 -6
  77. package/src/components/Button/index.tsx +3 -1
  78. package/src/components/Button/interface/index.ts +6 -0
  79. package/src/components/Button/test/index.bench.tsx +1 -1
  80. package/src/components/Button/test/index.test.tsx +0 -1
  81. package/src/components/ConfigProvider/ConfigProvider.tsx +2 -1
  82. package/src/components/ConfigProvider/demo/index.tsx +8 -8
  83. package/src/components/ConfigProvider/index.ts +1 -1
  84. package/src/components/ConfigProvider/interface/index.ts +16 -0
  85. package/src/components/ConfigProvider/test/index.bench.tsx +1 -1
  86. package/src/components/Popover/demo/index.tsx +2 -2
  87. package/src/components/Popover/doc/index.mdx +11 -11
  88. package/src/components/Popover/hook.ts +2 -1
  89. package/src/components/Popover/interface/index.ts +2 -3
  90. package/src/components/Switch/demo/index.tsx +4 -3
  91. package/src/components/Switch/doc/index.mdx +4 -4
  92. package/src/components/Switch/index.tsx +2 -2
  93. package/src/components/Switch/interface/index.ts +4 -5
  94. package/src/index.ts +2 -0
  95. package/tsconfig.json +6 -2
  96. package/lib/cjs/_chunks/DiJl2cva.js +0 -49
  97. package/lib/cjs/_chunks/DiJl2cva.js.map +0 -1
  98. package/lib/cjs/components/NN/index.js +0 -83
  99. package/lib/cjs/components/NN/index.js.map +0 -1
  100. package/lib/cjs/components/NN/interface/index.js +0 -13
  101. package/lib/cjs/components/NN/interface/index.js.map +0 -1
  102. package/lib/cjs/components/NNNN/index.js +0 -83
  103. package/lib/cjs/components/NNNN/index.js.map +0 -1
  104. package/lib/cjs/components/NNNN/interface/index.js +0 -13
  105. package/lib/cjs/components/NNNN/interface/index.js.map +0 -1
  106. package/lib/cjs/components/PP/index.js +0 -83
  107. package/lib/cjs/components/PP/index.js.map +0 -1
  108. package/lib/cjs/components/PP/interface/index.js +0 -14
  109. package/lib/cjs/components/PP/interface/index.js.map +0 -1
  110. package/lib/esm/_chunks/Br6Ked0G.js +0 -46
  111. package/lib/esm/_chunks/Br6Ked0G.js.map +0 -1
  112. package/lib/esm/components/NN/index.js +0 -79
  113. package/lib/esm/components/NN/index.js.map +0 -1
  114. package/lib/esm/components/NN/interface/index.js +0 -11
  115. package/lib/esm/components/NN/interface/index.js.map +0 -1
  116. package/lib/esm/components/NNNN/index.js +0 -79
  117. package/lib/esm/components/NNNN/index.js.map +0 -1
  118. package/lib/esm/components/NNNN/interface/index.js +0 -11
  119. package/lib/esm/components/NNNN/interface/index.js.map +0 -1
  120. package/lib/esm/components/PP/index.js +0 -79
  121. package/lib/esm/components/PP/index.js.map +0 -1
  122. package/lib/esm/components/PP/interface/index.js +0 -12
  123. package/lib/esm/components/PP/interface/index.js.map +0 -1
  124. package/lib/types/src/components/Button/index.d.ts +0 -4
  125. package/lib/types/src/components/ConfigProvider/ConfigProvider.d.ts +0 -4
  126. package/lib/types/src/components/NN/index.d.ts +0 -7
  127. package/lib/types/src/components/NN/interface/index.d.ts +0 -10
  128. package/lib/types/src/components/NNNN/index.d.ts +0 -7
  129. package/lib/types/src/components/NNNN/interface/index.d.ts +0 -10
  130. package/lib/types/src/components/PP/index.d.ts +0 -7
  131. package/lib/types/src/components/PP/interface/index.d.ts +0 -11
  132. package/src/components/Button/demo/index.jsx +0 -50
  133. /package/lib/types/{src → packages/reds-rn/src}/components/ConfigProvider/hooks/ConfigCache/ConfigCache.d.ts +0 -0
  134. /package/lib/types/{src → packages/reds-rn/src}/components/ConfigProvider/hooks/ConfigCache/index.d.ts +0 -0
  135. /package/lib/types/{src → packages/reds-rn/src}/components/ConfigProvider/hooks/ConfigContext/ConfigContext.d.ts +0 -0
  136. /package/lib/types/{src → packages/reds-rn/src}/components/ConfigProvider/hooks/themeToken/useThemeToken.d.ts +0 -0
  137. /package/lib/types/{src → packages/reds-rn/src}/components/Popover/component.d.ts +0 -0
  138. /package/lib/types/{src → packages/reds-rn/src}/components/Popover/index.d.ts +0 -0
  139. /package/lib/types/{src → packages/reds-rn/src}/components/Popover/manifest.d.ts +0 -0
  140. /package/lib/types/{src → packages/reds-rn/src}/components/Switch/index.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sources":["../../../../src/components/Popover/hook.ts"],"sourcesContent":["import { useRef } from \"react\";\nimport { Platform, View } from \"react-native\";\nimport type { MeasureOnSuccessCallback, NativeMethods, LayoutChangeEvent } from \"react-native\";\nimport { useFloating as useFloatingUI, shift, limitShift, flip, offset, arrow } from \"@floating-ui/react-native\";\n\nexport const useFloating = ({ placement, needModal }: { placement: \"top\" | \"bottom\"; needModal: boolean }) => {\n const arrowRef = useRef(null);\n const floatingHeight = useRef(0);\n const referenceX = useRef(0);\n const referenceY = useRef(0);\n const { refs, floatingStyles, middlewareData, elements, ...other } = useFloatingUI({\n placement,\n sameScrollView: !needModal,\n // offset 9,箭头加空隙的宽度\n middleware: [\n shift({ limiter: limitShift({ offset: 9 }), padding: 8 }),\n flip(),\n offset(9),\n arrow({ element: arrowRef, padding: 8 }),\n ],\n });\n // hack 的方式解决 android reactnode measure 方法返回 x、y 一直为 0 的情况。\n // https://github.com/facebook/react-native/issues/35755\n if (Platform.OS === \"android\" && elements.reference) {\n if (!elements.reference.oldmeasure) {\n elements.reference.oldmeasure = (elements.reference as View).measure.bind(elements.reference);\n elements.reference.measure = (fn: MeasureOnSuccessCallback) => {\n return (elements.reference.oldmeasure as NativeMethods[\"measure\"])((x, y, ...other) => {\n return fn(referenceX.current, referenceY.current, ...other);\n });\n };\n }\n }\n\n return {\n setFloatingRef: <T>(ref: T) => refs.setFloating(ref),\n setReferenceRef: <T>(ref: T) => refs.setReference(ref),\n // setOffsetParentRef: <T>(ref: T) => refs.setOffsetParent(ref),\n setOffsetParentRef: refs.offsetParent,\n setArrowRef: arrowRef,\n onReferenceLayout: (event: { nativeEvent: { layout: { x: any; y: any } } }) => {\n const { x, y } = event.nativeEvent.layout;\n referenceX.current = x;\n referenceY.current = y;\n },\n onFloatingLayout: (event: LayoutChangeEvent) => {\n const { height } = event.nativeEvent.layout;\n floatingHeight.current = height;\n },\n refs,\n elements,\n middlewareData,\n floatingStyles:\n (floatingStyles.left || floatingStyles.top) && middlewareData.arrow?.x\n ? floatingStyles\n : { ...floatingStyles, opacity: 0 }, // 因为 rn 的大小位置信息获取皆为异步,且时间有差异,渲染有时间差。故在未全部计算完成前,控制透明度\n arrowStyles: {\n position: \"absolute\",\n left: middlewareData.arrow?.x != null ? middlewareData.arrow.x : null,\n top: middlewareData.offset?.placement.includes(\"top\") ? floatingHeight.current : -12,\n transform: middlewareData.offset?.placement.includes(\"top\") ? `rotate(180deg)` : `rotate(0deg)`,\n },\n ...other,\n };\n};\n"],"names":["useFloating","_ref","_middlewareData$arrow","_middlewareData$arrow2","_middlewareData$offse","_middlewareData$offse2","placement","needModal","arrowRef","useRef","floatingHeight","referenceX","referenceY","_useFloatingUI","useFloatingUI","sameScrollView","middleware","shift","limiter","limitShift","offset","padding","flip","arrow","element","refs","floatingStyles","middlewareData","elements","other","_objectWithoutProperties","_excluded","Platform","OS","reference","oldmeasure","measure","bind","fn","x","y","_len","arguments","length","Array","_key","current","concat","_objectSpread","setFloatingRef","ref","setFloating","setReferenceRef","setReference","setOffsetParentRef","offsetParent","setArrowRef","onReferenceLayout","event","_event$nativeEvent$la","nativeEvent","layout","onFloatingLayout","height","left","top","opacity","arrowStyles","position","includes","transform"],"mappings":"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"}
1
+ {"version":3,"file":"hook.js","sources":["../../../../src/components/Popover/hook.ts"],"sourcesContent":["import { useRef } from \"react\";\nimport { Platform, View } from \"react-native\";\nimport type { MeasureOnSuccessCallback, NativeMethods, LayoutChangeEvent } from \"react-native\";\nimport { useFloating as useFloatingUI, shift, limitShift, flip, offset, arrow } from \"@floating-ui/react-native\";\nimport { RedsPopover } from \"./interface\";\n\nexport const useFloating = ({ placement, needModal }: { placement: RedsPopover[\"placement\"]; needModal: boolean }) => {\n const arrowRef = useRef(null);\n const floatingHeight = useRef(0);\n const referenceX = useRef(0);\n const referenceY = useRef(0);\n const { refs, floatingStyles, middlewareData, elements, ...other } = useFloatingUI({\n placement,\n sameScrollView: !needModal,\n // offset 9,箭头加空隙的宽度\n middleware: [\n shift({ limiter: limitShift({ offset: 9 }), padding: 8 }),\n flip(),\n offset(9),\n arrow({ element: arrowRef, padding: 8 }),\n ],\n });\n // hack 的方式解决 android reactnode measure 方法返回 x、y 一直为 0 的情况。\n // https://github.com/facebook/react-native/issues/35755\n if (Platform.OS === \"android\" && elements.reference) {\n if (!elements.reference.oldmeasure) {\n elements.reference.oldmeasure = (elements.reference as View).measure.bind(elements.reference);\n elements.reference.measure = (fn: MeasureOnSuccessCallback) => {\n return (elements.reference.oldmeasure as NativeMethods[\"measure\"])((x, y, ...other) => {\n return fn(referenceX.current, referenceY.current, ...other);\n });\n };\n }\n }\n\n return {\n setFloatingRef: <T>(ref: T) => refs.setFloating(ref),\n setReferenceRef: <T>(ref: T) => refs.setReference(ref),\n // setOffsetParentRef: <T>(ref: T) => refs.setOffsetParent(ref),\n setOffsetParentRef: refs.offsetParent,\n setArrowRef: arrowRef,\n onReferenceLayout: (event: { nativeEvent: { layout: { x: any; y: any } } }) => {\n const { x, y } = event.nativeEvent.layout;\n referenceX.current = x;\n referenceY.current = y;\n },\n onFloatingLayout: (event: LayoutChangeEvent) => {\n const { height } = event.nativeEvent.layout;\n floatingHeight.current = height;\n },\n refs,\n elements,\n middlewareData,\n floatingStyles:\n (floatingStyles.left || floatingStyles.top) && middlewareData.arrow?.x\n ? floatingStyles\n : { ...floatingStyles, opacity: 0 }, // 因为 rn 的大小位置信息获取皆为异步,且时间有差异,渲染有时间差。故在未全部计算完成前,控制透明度\n arrowStyles: {\n position: \"absolute\",\n left: middlewareData.arrow?.x != null ? middlewareData.arrow.x : null,\n top: middlewareData.offset?.placement.includes(\"top\") ? floatingHeight.current : -12,\n transform: middlewareData.offset?.placement.includes(\"top\") ? `rotate(180deg)` : `rotate(0deg)`,\n },\n ...other,\n };\n};\n"],"names":["useFloating","_ref","_middlewareData$arrow","_middlewareData$arrow2","_middlewareData$offse","_middlewareData$offse2","placement","needModal","arrowRef","useRef","floatingHeight","referenceX","referenceY","_useFloatingUI","useFloatingUI","sameScrollView","middleware","shift","limiter","limitShift","offset","padding","flip","arrow","element","refs","floatingStyles","middlewareData","elements","other","_objectWithoutProperties","_excluded","Platform","OS","reference","oldmeasure","measure","bind","fn","x","y","_len","arguments","length","Array","_key","current","concat","_objectSpread","setFloatingRef","ref","setFloating","setReferenceRef","setReference","setOffsetParentRef","offsetParent","setArrowRef","onReferenceLayout","event","_event$nativeEvent$la","nativeEvent","layout","onFloatingLayout","height","left","top","opacity","arrowStyles","position","includes","transform"],"mappings":"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"}
@@ -3,7 +3,7 @@ import React, { useState, useMemo, useEffect, isValidElement, cloneElement } fro
3
3
  import { TouchableWithoutFeedback, View, Text } from 'react-native';
4
4
  import { ModalWrapper, Arrow } from './component.js';
5
5
  import { useFloating } from './hook.js';
6
- import { typography } from '@xhs/reds-token-next';
6
+ import { typography } from '@xhsreds/reds-token-next';
7
7
  import '@floating-ui/react-native';
8
8
 
9
9
  var index = (function (_ref) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/Popover/index.tsx"],"sourcesContent":["import React, { useState, useMemo, cloneElement, isValidElement, useEffect } from \"react\";\nimport { Text, View, TouchableWithoutFeedback } from \"react-native\";\nimport { RedsPopover } from \"./interface/index\";\nimport { ModalWrapper, Arrow } from \"./component\";\nimport { useFloating } from \"./hook\";\nimport { typography } from \"@xhs/reds-token-next\";\n\nexport default ({\n mode = \"light\",\n opacity = 0,\n content,\n children,\n placement = \"top\",\n closeOnClickAgain = true,\n trigger = \"click\",\n zIndex = 1000,\n visible: defaultVisible = false,\n onVisibleChange,\n}: RedsPopover) => {\n const [visible, setVisible] = useState(defaultVisible);\n const needModal = useMemo(() => opacity !== 0, [opacity]);\n const {\n setArrowRef,\n setFloatingRef,\n setReferenceRef,\n setOffsetParentRef,\n floatingStyles,\n arrowStyles,\n onReferenceLayout,\n onFloatingLayout,\n } = useFloating({\n placement,\n needModal,\n });\n useEffect(() => {\n onVisibleChange?.(visible);\n }, [visible]);\n\n const popoverStyle = useMemo(() => {\n return mode === \"light\"\n ? {\n backgroundColor: \"#303034FC\",\n color: \"#FFFFFF\",\n }\n : {\n backgroundColor: \"#FFFFFFFC\",\n color: \"#000000\",\n };\n }, [mode]);\n\n return (\n <>\n {React.Children.map(children, (child, index) => {\n if (index === 0 && isValidElement(child)) {\n return (\n <TouchableWithoutFeedback\n onPress={() => {\n if (trigger === \"click\") {\n if (closeOnClickAgain) {\n setVisible(!visible);\n } else {\n setVisible(true);\n }\n }\n }}\n onPressIn={() => {\n trigger === \"touch\" && setVisible(true);\n }}\n onPressOut={() => {\n trigger === \"touch\" && setVisible(false);\n }}\n >\n {cloneElement<any>(child, {\n ref: setReferenceRef,\n collapsable: false,\n onLayout: onReferenceLayout,\n })}\n {/* <Text>131</Text> */}\n </TouchableWithoutFeedback>\n );\n }\n return child;\n })}\n <ModalWrapper\n needModal={needModal}\n visible={visible}\n ref={setOffsetParentRef}\n setVisible={setVisible}\n opacity={opacity}\n >\n {visible && (\n <View\n collapsable={false}\n ref={setFloatingRef}\n onLayout={onFloatingLayout}\n style={{\n ...floatingStyles,\n backgroundColor: popoverStyle.backgroundColor,\n paddingHorizontal: 12,\n paddingVertical: 7,\n maxWidth: 280,\n borderRadius: 12,\n zIndex,\n shadowColor: \"#000000\",\n shadowOffset: { width: 0, height: 1 },\n shadowOpacity: 0.1,\n shadowRadius: 4,\n elevation: 2,\n }}\n >\n <Text\n style={{\n fontWeight: typography.B2LooseFontWeight,\n fontSize: typography.B2LooseFontSize,\n lineHeight: typography.B2LooseLineHeight,\n color: popoverStyle.color,\n }}\n >\n {content}\n </Text>\n <Arrow ref={setArrowRef} style={{ ...arrowStyles }} color={popoverStyle.backgroundColor}></Arrow>\n </View>\n )}\n </ModalWrapper>\n </>\n );\n};\n"],"names":["_ref","_ref$mode","mode","_ref$opacity","opacity","content","children","_ref$placement","placement","_ref$closeOnClickAgai","closeOnClickAgain","_ref$trigger","trigger","_ref$zIndex","zIndex","_ref$visible","visible","defaultVisible","onVisibleChange","_useState","useState","_useState2","_slicedToArray","setVisible","needModal","useMemo","_useFloating","useFloating","setArrowRef","setFloatingRef","setReferenceRef","setOffsetParentRef","floatingStyles","arrowStyles","onReferenceLayout","onFloatingLayout","useEffect","popoverStyle","backgroundColor","color","React","Children","map","child","index","isValidElement","createElement","TouchableWithoutFeedback","onPress","onPressIn","onPressOut","cloneElement","ref","collapsable","onLayout","ModalWrapper","View","style","_objectSpread","paddingHorizontal","paddingVertical","maxWidth","borderRadius","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","Text","fontWeight","typography","B2LooseFontWeight","fontSize","B2LooseFontSize","lineHeight","B2LooseLineHeight","Arrow"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/Popover/index.tsx"],"sourcesContent":["import React, { useState, useMemo, cloneElement, isValidElement, useEffect } from \"react\";\nimport { Text, View, TouchableWithoutFeedback } from \"react-native\";\nimport { RedsPopover } from \"./interface/index\";\nimport { ModalWrapper, Arrow } from \"./component\";\nimport { useFloating } from \"./hook\";\nimport { typography } from \"@xhsreds/reds-token-next\";\n\nexport default ({\n mode = \"light\",\n opacity = 0,\n content,\n children,\n placement = \"top\",\n closeOnClickAgain = true,\n trigger = \"click\",\n zIndex = 1000,\n visible: defaultVisible = false,\n onVisibleChange,\n}: RedsPopover) => {\n const [visible, setVisible] = useState(defaultVisible);\n const needModal = useMemo(() => opacity !== 0, [opacity]);\n const {\n setArrowRef,\n setFloatingRef,\n setReferenceRef,\n setOffsetParentRef,\n floatingStyles,\n arrowStyles,\n onReferenceLayout,\n onFloatingLayout,\n } = useFloating({\n placement,\n needModal,\n });\n useEffect(() => {\n onVisibleChange?.(visible);\n }, [visible]);\n\n const popoverStyle = useMemo(() => {\n return mode === \"light\"\n ? {\n backgroundColor: \"#303034FC\",\n color: \"#FFFFFF\",\n }\n : {\n backgroundColor: \"#FFFFFFFC\",\n color: \"#000000\",\n };\n }, [mode]);\n\n return (\n <>\n {React.Children.map(children, (child, index) => {\n if (index === 0 && isValidElement(child)) {\n return (\n <TouchableWithoutFeedback\n onPress={() => {\n if (trigger === \"click\") {\n if (closeOnClickAgain) {\n setVisible(!visible);\n } else {\n setVisible(true);\n }\n }\n }}\n onPressIn={() => {\n trigger === \"touch\" && setVisible(true);\n }}\n onPressOut={() => {\n trigger === \"touch\" && setVisible(false);\n }}\n >\n {cloneElement<any>(child, {\n ref: setReferenceRef,\n collapsable: false,\n onLayout: onReferenceLayout,\n })}\n {/* <Text>131</Text> */}\n </TouchableWithoutFeedback>\n );\n }\n return child;\n })}\n <ModalWrapper\n needModal={needModal}\n visible={visible}\n ref={setOffsetParentRef}\n setVisible={setVisible}\n opacity={opacity}\n >\n {visible && (\n <View\n collapsable={false}\n ref={setFloatingRef}\n onLayout={onFloatingLayout}\n style={{\n ...floatingStyles,\n backgroundColor: popoverStyle.backgroundColor,\n paddingHorizontal: 12,\n paddingVertical: 7,\n maxWidth: 280,\n borderRadius: 12,\n zIndex,\n shadowColor: \"#000000\",\n shadowOffset: { width: 0, height: 1 },\n shadowOpacity: 0.1,\n shadowRadius: 4,\n elevation: 2,\n }}\n >\n <Text\n style={{\n fontWeight: typography.B2LooseFontWeight,\n fontSize: typography.B2LooseFontSize,\n lineHeight: typography.B2LooseLineHeight,\n color: popoverStyle.color,\n }}\n >\n {content}\n </Text>\n <Arrow ref={setArrowRef} style={{ ...arrowStyles }} color={popoverStyle.backgroundColor}></Arrow>\n </View>\n )}\n </ModalWrapper>\n </>\n );\n};\n"],"names":["_ref","_ref$mode","mode","_ref$opacity","opacity","content","children","_ref$placement","placement","_ref$closeOnClickAgai","closeOnClickAgain","_ref$trigger","trigger","_ref$zIndex","zIndex","_ref$visible","visible","defaultVisible","onVisibleChange","_useState","useState","_useState2","_slicedToArray","setVisible","needModal","useMemo","_useFloating","useFloating","setArrowRef","setFloatingRef","setReferenceRef","setOffsetParentRef","floatingStyles","arrowStyles","onReferenceLayout","onFloatingLayout","useEffect","popoverStyle","backgroundColor","color","React","Children","map","child","index","isValidElement","createElement","TouchableWithoutFeedback","onPress","onPressIn","onPressOut","cloneElement","ref","collapsable","onLayout","ModalWrapper","View","style","_objectSpread","paddingHorizontal","paddingVertical","maxWidth","borderRadius","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","Text","fontWeight","typography","B2LooseFontWeight","fontSize","B2LooseFontSize","lineHeight","B2LooseLineHeight","Arrow"],"mappings":";;;;;;;;AAOA,YAAe,CAAA,UAAAA,IAAA,EAWI;AAAA,EAAA,IAAAC,SAAA,GAAAD,IAAA,CAVjBE,IAAO;AAAPA,IAAAA,IAAO,GAAAD,SAAA,KAAA,KAAA,CAAA,GAAA,OAAA,GAAAA,SAAA;IAAAE,YAAA,GAAAH,IAAA,CACPI,OAAU;AAAVA,IAAAA,OAAU,GAAAD,YAAA,KAAA,KAAA,CAAA,GAAA,CAAA,GAAAA,YAAA;IACVE,OAAA,GAAAL,IAAA,CAAAK,OAAA;IACAC,QAAA,GAAAN,IAAA,CAAAM,QAAA;IAAAC,cAAA,GAAAP,IAAA,CACAQ,SAAY;AAAZA,IAAAA,SAAY,GAAAD,cAAA,KAAA,KAAA,CAAA,GAAA,KAAA,GAAAA,cAAA;IAAAE,qBAAA,GAAAT,IAAA,CACZU,iBAAoB;AAApBA,IAAAA,iBAAoB,GAAAD,qBAAA,KAAA,KAAA,CAAA,GAAA,IAAA,GAAAA,qBAAA;IAAAE,YAAA,GAAAX,IAAA,CACpBY,OAAU;AAAVA,IAAAA,OAAU,GAAAD,YAAA,KAAA,KAAA,CAAA,GAAA,OAAA,GAAAA,YAAA;IAAAE,WAAA,GAAAb,IAAA,CACVc,MAAS;AAATA,IAAAA,MAAS,GAAAD,WAAA,KAAA,KAAA,CAAA,GAAA,GAAA,GAAAA,WAAA;IAAAE,YAAA,GAAAf,IAAA,CACTgB;AAASC,IAAAA,cAAiB,GAAAF,YAAA,KAAA,KAAA,CAAA,GAAA,KAAA,GAAAA,YAAA;IAC1BG,eAAA,GAAAlB,IAAA,CAAAkB,eAAA,CAAA;AAEA,EAAA,IAAAC,SAAA,GAA8BC,SAASH,cAAc,CAAA;IAAAI,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA9CH,IAAAA,OAAA,GAAAK,UAAA,CAAA,CAAA,CAAA;AAASE,IAAAA,UAAU,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;EAC1B,IAAMG,YAAYC,OAAQ,CAAA,YAAA;IAAA,OAAMrB,YAAY,CAAG,CAAA;GAAA,EAAA,CAACA,OAAO,CAAC,CAAA,CAAA;EAClD,IAAAsB,YAAA,GASFC,WAAY,CAAA;AACdnB,MAAAA,SAAA,EAAAA,SAAA;AACAgB,MAAAA,SAAA,EAAAA,SAAAA;AACF,KAAC,CAAA;IAXCI,WAAA,GAAAF,YAAA,CAAAE,WAAA;IACAC,cAAA,GAAAH,YAAA,CAAAG,cAAA;IACAC,eAAA,GAAAJ,YAAA,CAAAI,eAAA;IACAC,kBAAA,GAAAL,YAAA,CAAAK,kBAAA;IACAC,cAAA,GAAAN,YAAA,CAAAM,cAAA;IACAC,WAAA,GAAAP,YAAA,CAAAO,WAAA;IACAC,iBAAA,GAAAR,YAAA,CAAAQ,iBAAA;IACAC,gBAAA,GAAAT,YAAA,CAAAS,gBAAA,CAAA;AAKFC,EAAAA,SAAA,CAAU,YAAM;AACdlB,IAAAA,eAAA,aAAAA,eAAA,KAAA,KAAA,CAAA,IAAAA,eAAA,CAAkBF,OAAO,CAAA,CAAA;AAC3B,GAAA,EAAG,CAACA,OAAO,CAAC,CAAA,CAAA;AAEN,EAAA,IAAAqB,YAAA,GAAeZ,QAAQ,YAAM;IACjC,OAAOvB,SAAS,OACZ,GAAA;AACEoC,MAAAA,eAAiB,EAAA,WAAA;AACjBC,MAAAA,KAAO,EAAA,SAAA;AACT,KACA,GAAA;AACED,MAAAA,eAAiB,EAAA,WAAA;AACjBC,MAAAA,KAAO,EAAA,SAAA;KACT,CAAA;AACN,GAAA,EAAG,CAACrC,IAAI,CAAC,CAAA,CAAA;EAET,gEAEKsC,KAAM,CAAAC,QAAA,CAASC,IAAIpC,QAAU,EAAA,UAACqC,OAAOC,KAAU,EAAA;IAC9C,IAAIA,KAAU,KAAA,CAAA,iBAAKC,cAAe,CAAAF,KAAK,CAAG,EAAA;AAEtC,MAAA,sBAAAH,KAAA,CAAAM,aAAA,CAACC,wBAAA,EAAA;QACCC,SAAS,SAAAA,OAAAA,GAAM;UACb,IAAIpC,YAAY,OAAS,EAAA;AACvB,YAAA,IAAIF,iBAAmB,EAAA;cACrBa,UAAA,CAAW,CAACP,OAAO,CAAA,CAAA;AACrB,aAAO,MAAA;cACLO,UAAA,CAAW,IAAI,CAAA,CAAA;AACjB,aAAA;AACF,WAAA;SACF;QACA0B,WAAW,SAAAA,SAAAA,GAAM;AACHrC,UAAAA,OAAA,KAAA,OAAA,IAAWW,WAAW,IAAI,CAAA,CAAA;SACxC;QACA2B,YAAY,SAAAA,UAAAA,GAAM;AACJtC,UAAAA,OAAA,KAAA,OAAA,IAAWW,WAAW,KAAK,CAAA,CAAA;AACzC,SAAA;AAAA,OAAA,eAEC4B,aAAkBR,KAAO,EAAA;AACxBS,QAAAA,GAAK,EAAAtB,eAAA;AACLuB,QAAAA,WAAa,EAAA,KAAA;AACbC,QAAAA,QAAU,EAAApB,iBAAAA;AACZ,OAAC,CAEH,CAAA,CAAA;AAEJ,KAAA;AACO,IAAA,OAAAS,KAAA,CAAA;GACR,CACD,iBAAAH,KAAA,CAAAM,aAAA,CAACS,YAAA,EAAA;AACC/B,IAAAA,SAAA,EAAAA,SAAA;AACAR,IAAAA,OAAA,EAAAA,OAAA;AACAoC,IAAAA,GAAK,EAAArB,kBAAA;AACLR,IAAAA,UAAA,EAAAA,UAAA;AACAnB,IAAAA,OAAA,EAAAA,OAAAA;GAAA,EAECY,OACC,mBAAAwB,KAAA,CAAAM,aAAA,CAACU,IAAA,EAAA;AACCH,IAAAA,WAAa,EAAA,KAAA;AACbD,IAAAA,GAAK,EAAAvB,cAAA;AACLyB,IAAAA,QAAU,EAAAnB,gBAAA;AACVsB,IAAAA,KAAO,EAAAC,cAAA,CAAAA,cAAA,KACF1B,cAAA,CAAA,EAAA,EAAA,EAAA;MACHM,iBAAiBD,YAAa,CAAAC,eAAA;AAC9BqB,MAAAA,iBAAmB,EAAA,EAAA;AACnBC,MAAAA,eAAiB,EAAA,CAAA;AACjBC,MAAAA,QAAU,EAAA,GAAA;AACVC,MAAAA,YAAc,EAAA,EAAA;AACdhD,MAAAA,MAAA,EAAAA,MAAA;AACAiD,MAAAA,WAAa,EAAA,SAAA;AACbC,MAAAA,YAAc,EAAA;AAAEC,QAAAA,KAAO,EAAA,CAAA;AAAGC,QAAAA,QAAQ,CAAA;OAAE;AACpCC,MAAAA,aAAe,EAAA,GAAA;AACfC,MAAAA,YAAc,EAAA,CAAA;AACdC,MAAAA,SAAW,EAAA,CAAA;AAAA,KAAA,CAAA;AACb,GAAA,iBAEA7B,KAAA,CAAAM,aAAA,CAACwB,IAAA,EAAA;AACCb,IAAAA,KAAO,EAAA;MACLc,YAAYC,UAAW,CAAAC,iBAAA;MACvBC,UAAUF,UAAW,CAAAG,eAAA;MACrBC,YAAYJ,UAAW,CAAAK,iBAAA;MACvBtC,OAAOF,YAAa,CAAAE,KAAAA;AACtB,KAAA;GAAA,EAEClC,OACH,CAAA,iBACAmC,KAAA,CAAAM,aAAA,CAACgC,KAAM,EAAA;AAAA1B,IAAAA,GAAA,EAAKxB,WAAa;AAAA6B,IAAAA,KAAA,EAAAC,cAAA,CAAYzB,EAAAA,EAAAA,WAAY,CAAA;IAAGM,KAAO,EAAAF,YAAA,CAAaC,eAAAA;GAAiB,CAC3F,CAEJ,CACF,CAAA,CAAA;AAEJ,CAAA;;;;"}
@@ -1,13 +1,12 @@
1
- var defaultProps = {
1
+ var PopoverDefaultProps = {
2
2
  visible: void 0,
3
3
  placement: "top",
4
4
  content: "",
5
5
  opacity: 0,
6
- mode: "light",
7
6
  trigger: "click",
8
7
  zIndex: 1e3,
9
8
  closeOnClickAgain: true
10
9
  };
11
10
 
12
- export { defaultProps };
11
+ export { PopoverDefaultProps };
13
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/Popover/interface/index.ts"],"sourcesContent":["import { ReactNode } from \"react\";\nexport interface RedsPopover {\n visible?: boolean;\n placement?: \"top\" | \"bottom\";\n content?: string;\n opacity?: number;\n mode?: \"light\" | \"dark\";\n trigger?: \"click\" | \"touch\";\n zIndex?: number;\n closeOnClickAgain?: boolean;\n children?: ReactNode;\n onClickMask?: (evnet: Event) => void;\n onVisibleChange?: (value: boolean) => void;\n}\n\nexport interface RedsPopoverEvent {}\nexport const defaultProps: RedsPopover = {\n visible: undefined,\n placement: \"top\",\n content: \"\",\n opacity: 0,\n mode: \"light\",\n trigger: \"click\",\n zIndex: 1000,\n closeOnClickAgain: true,\n};\n"],"names":["defaultProps","visible","placement","content","opacity","mode","trigger","zIndex","closeOnClickAgain"],"mappings":"AAgBO,IAAMA,YAA4B,GAAA;EACvCC,OAAS,EAAA,KAAA,CAAA;AACTC,EAAAA,SAAW,EAAA,KAAA;AACXC,EAAAA,OAAS,EAAA,EAAA;AACTC,EAAAA,OAAS,EAAA,CAAA;AACTC,EAAAA,IAAM,EAAA,OAAA;AACNC,EAAAA,OAAS,EAAA,OAAA;AACTC,EAAAA,MAAQ,EAAA,GAAA;AACRC,EAAAA,iBAAmB,EAAA,IAAA;AACrB;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/Popover/interface/index.ts"],"sourcesContent":["import { ReactNode } from \"react\";\nexport interface RedsPopover {\n visible?: boolean;\n placement?: \"top-start\" | \"top\" | \"top-end\" | \"bottom-start\" | \"bottom\" | \"bottom-end\";\n content?: string;\n opacity?: number;\n mode?: \"light\" | \"dark\";\n trigger?: \"click\" | \"touch\";\n zIndex?: number;\n closeOnClickAgain?: boolean;\n children?: ReactNode;\n onClickMask?: (evnet: Event) => void;\n onVisibleChange?: (value: boolean) => void;\n}\n\nexport interface RedsPopoverEvent {}\nexport const PopoverDefaultProps: RedsPopover = {\n visible: undefined,\n placement: \"top\",\n content: \"\",\n opacity: 0,\n trigger: \"click\",\n zIndex: 1000,\n closeOnClickAgain: true,\n};\n"],"names":["PopoverDefaultProps","visible","placement","content","opacity","trigger","zIndex","closeOnClickAgain"],"mappings":"AAgBO,IAAMA,mBAAmC,GAAA;EAC9CC,OAAS,EAAA,KAAA,CAAA;AACTC,EAAAA,SAAW,EAAA,KAAA;AACXC,EAAAA,OAAS,EAAA,EAAA;AACTC,EAAAA,OAAS,EAAA,CAAA;AACTC,EAAAA,OAAS,EAAA,OAAA;AACTC,EAAAA,MAAQ,EAAA,GAAA;AACRC,EAAAA,iBAAmB,EAAA,IAAA;AACrB;;;;"}
@@ -1,8 +1,8 @@
1
1
  import { a as _slicedToArray } from '../../_chunks/BHmvJnIm.js';
2
2
  import React, { useState, useRef, useMemo, useEffect } from 'react';
3
3
  import { StyleSheet, Animated, TouchableWithoutFeedback, View } from 'react-native';
4
- import { defaultProps } from './interface/index.js';
5
- import { alwaysColor } from '@xhs/reds-token-next';
4
+ import { SwitchDefaultProps } from './interface/index.js';
5
+ import { alwaysColor } from '@xhsreds/reds-token-next';
6
6
 
7
7
  var Switch = function Switch(_ref) {
8
8
  var isOn = _ref.value,
@@ -56,7 +56,7 @@ var Switch = function Switch(_ref) {
56
56
  }]
57
57
  })));
58
58
  };
59
- Switch.defaultProps = defaultProps;
59
+ Switch.defaultProps = SwitchDefaultProps;
60
60
  var styles = StyleSheet.create({
61
61
  switchContainer: {
62
62
  width: 40,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/Switch/index.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useMemo } from \"react\";\nimport { View, TouchableWithoutFeedback, StyleSheet, Animated, GestureResponderEvent } from \"react-native\";\nimport { RedsSwitch, defaultProps } from \"./interface/index\";\nimport { alwaysColor } from \"@xhs/reds-token-next\";\n\nconst Switch = ({ value: isOn, defaultValue, onChange, onClick, trackOnColor, trackOffColor }: RedsSwitch) => {\n const isControlled = isOn !== undefined;\n const [value, setValue] = useState(defaultValue);\n\n const animatedValue = useRef(new Animated.Value(defaultValue ? 18 : 2)).current;\n\n const thumbTranslateX = useMemo(() => animatedValue.interpolate({ inputRange: [2, 18], outputRange: [2, 18] }), []);\n\n useEffect(() => {\n onChange?.(!!value);\n Animated.timing(animatedValue, {\n toValue: value ? 18 : 2,\n duration: 200,\n useNativeDriver: true,\n }).start();\n }, [value]);\n useEffect(() => {\n isControlled && setValue(isOn);\n }, [isOn]);\n\n const toggleSwitch = (e: GestureResponderEvent) => {\n onClick?.(e);\n !isControlled && setValue((v) => !v);\n };\n\n return (\n <TouchableWithoutFeedback onPress={(e) => toggleSwitch(e)}>\n <View style={[styles.switchContainer, { backgroundColor: value ? trackOnColor : trackOffColor }]}>\n <Animated.View style={[styles.thumb, { transform: [{ translateX: thumbTranslateX }] }]}></Animated.View>\n </View>\n </TouchableWithoutFeedback>\n );\n};\n\nSwitch.defaultProps = defaultProps;\n\nconst styles = StyleSheet.create({\n switchContainer: {\n width: 40,\n height: 24,\n borderRadius: 15,\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n thumb: {\n width: 20,\n height: 20,\n borderRadius: 10,\n backgroundColor: alwaysColor.White,\n justifyContent: \"center\",\n alignItems: \"center\",\n position: \"absolute\",\n left: 0,\n },\n});\n\nexport default Switch;\n"],"names":["Switch","_ref","isOn","value","defaultValue","onChange","onClick","trackOnColor","trackOffColor","isControlled","_useState","useState","_useState2","_slicedToArray","setValue","animatedValue","useRef","Animated","Value","current","thumbTranslateX","useMemo","interpolate","inputRange","outputRange","useEffect","timing","toValue","duration","useNativeDriver","start","toggleSwitch","e","v","TouchableWithoutFeedback","onPress","React","createElement","View","style","styles","switchContainer","backgroundColor","thumb","transform","translateX","defaultProps","StyleSheet","create","width","height","borderRadius","justifyContent","alignItems","alwaysColor","White","position","left"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/Switch/index.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useMemo } from \"react\";\nimport { View, TouchableWithoutFeedback, StyleSheet, Animated, GestureResponderEvent } from \"react-native\";\nimport { RedsSwitch, SwitchDefaultProps } from \"./interface/index\";\nimport { alwaysColor } from \"@xhsreds/reds-token-next\";\n\nconst Switch = ({ value: isOn, defaultValue, onChange, onClick, trackOnColor, trackOffColor }: RedsSwitch) => {\n const isControlled = isOn !== undefined;\n const [value, setValue] = useState(defaultValue);\n\n const animatedValue = useRef(new Animated.Value(defaultValue ? 18 : 2)).current;\n\n const thumbTranslateX = useMemo(() => animatedValue.interpolate({ inputRange: [2, 18], outputRange: [2, 18] }), []);\n\n useEffect(() => {\n onChange?.(!!value);\n Animated.timing(animatedValue, {\n toValue: value ? 18 : 2,\n duration: 200,\n useNativeDriver: true,\n }).start();\n }, [value]);\n useEffect(() => {\n isControlled && setValue(isOn);\n }, [isOn]);\n\n const toggleSwitch = (e: GestureResponderEvent) => {\n onClick?.(e);\n !isControlled && setValue((v) => !v);\n };\n\n return (\n <TouchableWithoutFeedback onPress={(e) => toggleSwitch(e)}>\n <View style={[styles.switchContainer, { backgroundColor: value ? trackOnColor : trackOffColor }]}>\n <Animated.View style={[styles.thumb, { transform: [{ translateX: thumbTranslateX }] }]}></Animated.View>\n </View>\n </TouchableWithoutFeedback>\n );\n};\n\nSwitch.defaultProps = SwitchDefaultProps;\n\nconst styles = StyleSheet.create({\n switchContainer: {\n width: 40,\n height: 24,\n borderRadius: 15,\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n thumb: {\n width: 20,\n height: 20,\n borderRadius: 10,\n backgroundColor: alwaysColor.White,\n justifyContent: \"center\",\n alignItems: \"center\",\n position: \"absolute\",\n left: 0,\n },\n});\n\nexport default Switch;\n"],"names":["Switch","_ref","isOn","value","defaultValue","onChange","onClick","trackOnColor","trackOffColor","isControlled","_useState","useState","_useState2","_slicedToArray","setValue","animatedValue","useRef","Animated","Value","current","thumbTranslateX","useMemo","interpolate","inputRange","outputRange","useEffect","timing","toValue","duration","useNativeDriver","start","toggleSwitch","e","v","TouchableWithoutFeedback","onPress","React","createElement","View","style","styles","switchContainer","backgroundColor","thumb","transform","translateX","defaultProps","SwitchDefaultProps","StyleSheet","create","width","height","borderRadius","justifyContent","alignItems","alwaysColor","White","position","left"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { lightColor } from '@xhs/reds-token-next';
1
+ import { lightColor } from '@xhsreds/reds-token-next';
2
2
 
3
- var defaultProps = {
3
+ var SwitchDefaultProps = {
4
4
  value: void 0,
5
5
  defaultValue: false,
6
6
  disabled: false,
@@ -8,5 +8,5 @@ var defaultProps = {
8
8
  trackOffColor: lightColor.Fill2
9
9
  };
10
10
 
11
- export { defaultProps };
11
+ export { SwitchDefaultProps };
12
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/Switch/interface/index.ts"],"sourcesContent":["import { GestureResponderEvent } from \"react-native\";\nimport { lightColor } from \"@xhs/reds-token-next\";\nexport interface RedsSwitch {\n value?: boolean;\n defaultValue?: boolean;\n disabled?: boolean;\n trackOnColor?: string;\n trackOffColor?: string;\n onChange?: (value: boolean) => void;\n onClick?: (value: GestureResponderEvent) => void;\n}\n\nexport const defaultProps: RedsSwitch = {\n value: undefined,\n defaultValue: false,\n disabled: false,\n trackOnColor: lightColor.Primary,\n trackOffColor: lightColor.Fill2,\n};\n\nexport interface RedsSwitchEvent {}\n"],"names":["defaultProps","value","defaultValue","disabled","trackOnColor","lightColor","Primary","trackOffColor","Fill2"],"mappings":";;AAYO,IAAMA,YAA2B,GAAA;EACtCC,KAAO,EAAA,KAAA,CAAA;AACPC,EAAAA,YAAc,EAAA,KAAA;AACdC,EAAAA,QAAU,EAAA,KAAA;EACVC,cAAcC,UAAW,CAAAC,OAAA;EACzBC,eAAeF,UAAW,CAAAG,KAAAA;AAC5B;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/Switch/interface/index.ts"],"sourcesContent":["import { GestureResponderEvent } from \"react-native\";\nimport { lightColor } from \"@xhsreds/reds-token-next\";\nexport interface RedsSwitch {\n value?: boolean;\n defaultValue?: boolean;\n disabled?: boolean;\n trackOnColor?: string;\n trackOffColor?: string;\n onChange?: (value: boolean) => any;\n onClick?: (value: GestureResponderEvent) => any;\n}\n\nexport interface RedsSwitchEvent {}\nexport const SwitchDefaultProps: RedsSwitch = {\n value: undefined,\n defaultValue: false,\n disabled: false,\n trackOnColor: lightColor.Primary,\n trackOffColor: lightColor.Fill2,\n};\n"],"names":["SwitchDefaultProps","value","defaultValue","disabled","trackOnColor","lightColor","Primary","trackOffColor","Fill2"],"mappings":";;AAaO,IAAMA,kBAAiC,GAAA;EAC5CC,KAAO,EAAA,KAAA,CAAA;AACPC,EAAAA,YAAc,EAAA,KAAA;AACdC,EAAAA,QAAU,EAAA,KAAA;EACVC,cAAcC,UAAW,CAAAC,OAAA;EACzBC,eAAeF,UAAW,CAAAG,KAAAA;AAC5B;;;;"}
package/lib/esm/index.js CHANGED
@@ -1,15 +1,16 @@
1
1
  export { default as Button } from './components/Button/index.js';
2
2
  export { default as Popover } from './components/Popover/index.js';
3
3
  export { default as Switch } from './components/Switch/index.js';
4
- export { C as ConfigProvider } from './_chunks/Br6Ked0G.js';
4
+ export { default as ConfigProvider } from './components/ConfigProvider/ConfigProvider.js';
5
5
  export { useThemeColor } from './components/ConfigProvider/hooks/themeToken/useThemeToken.js';
6
+ export { PopoverDefaultProps } from './components/Popover/interface/index.js';
6
7
  import './_chunks/BHmvJnIm.js';
7
8
  import 'react';
8
9
  import 'react-native';
9
10
  import './components/Popover/component.js';
10
11
  import './components/Popover/hook.js';
11
12
  import '@floating-ui/react-native';
12
- import '@xhs/reds-token-next';
13
+ import '@xhsreds/reds-token-next';
13
14
  import './components/Switch/interface/index.js';
14
15
  import './components/ConfigProvider/hooks/ConfigCache/ConfigCache.js';
15
16
  import './components/ConfigProvider/hooks/ConfigContext/ConfigContext.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export default function App(): React.JSX.Element;
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ declare const Button: React.FC<any>;
3
+ export default Button;
@@ -8,3 +8,4 @@ export interface RedsButton {
8
8
  onClick?: (value: Event) => void;
9
9
  }
10
10
  export declare const defaultProps: RedsButton;
11
+ export declare const ButtonDefaultProps: RedsButton;
@@ -0,0 +1 @@
1
+ import "@testing-library/react-native/extend-expect";
@@ -0,0 +1 @@
1
+ import "@testing-library/react-native/extend-expect";
@@ -0,0 +1,4 @@
1
+ import { ConfigProviderProps } from "./interface";
2
+ import React from "react";
3
+ declare const ConfigProvider: React.FC<ConfigProviderProps>;
4
+ export default ConfigProvider;
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export default function App(): React.JSX.Element;
@@ -1,4 +1,4 @@
1
- import { lightColor, darkColor, typography } from "@xhs/reds-token-next";
1
+ import { lightColor, darkColor, typography } from "@xhsreds/reds-token-next";
2
2
  type ValueOf<T> = T[keyof T];
3
3
  export type LightToken = keyof typeof lightColor;
4
4
  export type DarkToken = keyof typeof darkColor;
@@ -1,3 +1,3 @@
1
- import * as ConfigProvider from "./ConfigProvider";
1
+ import ConfigProvider from "./ConfigProvider";
2
2
  export { useThemeColor } from "./hooks/themeToken/useThemeToken";
3
3
  export default ConfigProvider;
@@ -35,4 +35,5 @@ export interface RedsConfigProvider {
35
35
  export interface RedsConfigProviderEvent {
36
36
  }
37
37
  export declare const defaultProps: RedsConfigProvider;
38
+ export declare const ConfigProviderDefaultProps: RedsConfigProvider;
38
39
  export {};
@@ -0,0 +1 @@
1
+ import "@testing-library/react-native/extend-expect";
@@ -0,0 +1 @@
1
+ import "@testing-library/react-native/extend-expect";
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export default function App(): React.JSX.Element;
@@ -1,7 +1,8 @@
1
1
  /// <reference types="react" />
2
2
  import type { LayoutChangeEvent } from "react-native";
3
+ import { RedsPopover } from "./interface";
3
4
  export declare const useFloating: ({ placement, needModal }: {
4
- placement: "top" | "bottom";
5
+ placement: RedsPopover["placement"];
5
6
  needModal: boolean;
6
7
  }) => {
7
8
  update: () => void;
@@ -1,7 +1,7 @@
1
1
  import { ReactNode } from "react";
2
2
  export interface RedsPopover {
3
3
  visible?: boolean;
4
- placement?: "top" | "bottom";
4
+ placement?: "top-start" | "top" | "top-end" | "bottom-start" | "bottom" | "bottom-end";
5
5
  content?: string;
6
6
  opacity?: number;
7
7
  mode?: "light" | "dark";
@@ -14,4 +14,4 @@ export interface RedsPopover {
14
14
  }
15
15
  export interface RedsPopoverEvent {
16
16
  }
17
- export declare const defaultProps: RedsPopover;
17
+ export declare const PopoverDefaultProps: RedsPopover;
@@ -0,0 +1 @@
1
+ import "@testing-library/react-native/extend-expect";
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export default function App(): React.JSX.Element;
@@ -5,9 +5,9 @@ export interface RedsSwitch {
5
5
  disabled?: boolean;
6
6
  trackOnColor?: string;
7
7
  trackOffColor?: string;
8
- onChange?: (value: boolean) => void;
9
- onClick?: (value: GestureResponderEvent) => void;
8
+ onChange?: (value: boolean) => any;
9
+ onClick?: (value: GestureResponderEvent) => any;
10
10
  }
11
- export declare const defaultProps: RedsSwitch;
12
11
  export interface RedsSwitchEvent {
13
12
  }
13
+ export declare const SwitchDefaultProps: RedsSwitch;
@@ -0,0 +1 @@
1
+ import "@testing-library/react-native/extend-expect";
@@ -2,4 +2,5 @@ import Button from "./components/Button";
2
2
  import Popover from "./components/Popover";
3
3
  import Switch from "./components/Switch";
4
4
  import ConfigProvider, { useThemeColor } from "./components/ConfigProvider";
5
+ export * from "./components/Popover/interface";
5
6
  export { Button, Popover, Switch, ConfigProvider, useThemeColor };
@@ -0,0 +1,3 @@
1
+ import { BenchmarkAPI } from "vitest";
2
+ declare const redsBench: BenchmarkAPI;
3
+ export { redsBench };
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@xhsreds/reds-rn-next",
3
- "version": "0.0.5",
3
+ "version": "0.0.9",
4
4
  "author": "贾斌(呀哈) <jiabin@xiaohongshu.com>",
5
5
  "license": "ISC",
6
6
  "dependencies": {
7
7
  "@floating-ui/react-native": "~0.10.6",
8
8
  "dayjs": "^1.10.7",
9
- "@xhs/reds-token-next": "npm:@xhsreds/reds-token-next@0.0.6"
9
+ "@xhsreds/reds-token-next": "0.0.9"
10
10
  },
11
11
  "peerDependencies": {
12
12
  "react": "~18.2.0",
@@ -14,7 +14,7 @@
14
14
  },
15
15
  "module": "./lib/esm/index.js",
16
16
  "main": "./lib/cjs/index.js",
17
- "types": "./lib/types/index.d.ts",
17
+ "types": "./lib/types/src/index.d.ts",
18
18
  "exports": {
19
19
  ".": {
20
20
  "import": "./lib/esm/index.js",
@@ -20,13 +20,13 @@ const styles = StyleSheet.create({
20
20
  const Desc = ({ children = "" }) => {
21
21
  return <Text>{children}</Text>;
22
22
  };
23
- const Br = (props) => <View style={{ height: props.height || 20 }}></View>;
23
+ const Br = (props: { height?: number }) => <View style={{ height: props.height || 20 }}></View>;
24
24
 
25
25
  export default function App() {
26
26
  const [value, setValue] = useState(false);
27
27
  const [valueStr, setValueStr] = useState(value.toString());
28
- const onClick = (e) => setValue((v) => !v);
29
- const onChange = (v) => setValueStr(v.toString());
28
+ const onClick = (_e: any) => setValue((v) => !v);
29
+ const onChange = (v: boolean) => setValueStr(v.toString());
30
30
  return (
31
31
  <View style={styles.container}>
32
32
  <Desc>默认用法</Desc>
@@ -34,16 +34,16 @@ export default function App() {
34
34
  <Br />
35
35
 
36
36
  <Desc>设置默认值</Desc>
37
- <Button defaultValue={true}></Button>
37
+ <Button></Button>
38
38
  <Br />
39
39
 
40
40
  <Desc>修改开关颜色</Desc>
41
- <Button trackOnColor={"#1b8bcd"} trackOffColor={"#da36c9"}></Button>
41
+ <Button></Button>
42
42
  <Br />
43
43
 
44
44
  <Desc>受控用法</Desc>
45
45
  <Text>当前值:{valueStr}</Text>
46
- <Button value={value} onClick={onClick} onChange={onChange}></Button>
46
+ <Button></Button>
47
47
  <Br />
48
48
  </View>
49
49
  );
@@ -1,7 +1,7 @@
1
1
  import React, { forwardRef } from "react";
2
2
  import { Text, View } from "react-native";
3
3
 
4
- export default forwardRef<View>((props: any, ref) => {
4
+ const Button: React.FC<any> = forwardRef<View>((props: any, ref) => {
5
5
  return (
6
6
  <View
7
7
  ref={ref}
@@ -21,3 +21,5 @@ export default forwardRef<View>((props: any, ref) => {
21
21
  </View>
22
22
  );
23
23
  });
24
+
25
+ export default Button;
@@ -16,3 +16,9 @@ export const defaultProps: RedsButton = {
16
16
  trackOnColor: lightColor.Primary,
17
17
  trackOffColor: lightColor.Fill2,
18
18
  };
19
+ export const ButtonDefaultProps: RedsButton = {
20
+ defaultValue: false,
21
+ disabled: false,
22
+ trackOnColor: lightColor.Primary,
23
+ trackOffColor: lightColor.Fill2,
24
+ };
@@ -7,7 +7,7 @@ import Button from "../index";
7
7
  describe("Button", () => {
8
8
  it(":base", async () => {
9
9
  let isOn = false;
10
- const wrapper = render(<Button onChange={(v) => (isOn = v)}></Button>);
10
+ const wrapper = render(<Button></Button>);
11
11
  expect(wrapper.UNSAFE_root.props.defaultValue).toBe(false);
12
12
  await fireEvent(wrapper.UNSAFE_root.children[0], "press");
13
13
  expect(isOn).toBe(true);
@@ -2,7 +2,6 @@ import { describe, it, expect } from "vitest";
2
2
  import { render, fireEvent, userEvent } from "@testing-library/react-native";
3
3
  import "@testing-library/react-native/extend-expect";
4
4
  import { Pressable, Text, View } from "react-native";
5
- import Button from "../index";
6
5
 
7
6
  describe("Button", () => {
8
7
  it(":base", async () => {});
@@ -1,8 +1,9 @@
1
1
  import { ConfigProviderProps } from "./interface";
2
2
  import { configCache } from "./hooks/ConfigCache/ConfigCache";
3
3
  import { ConfigProviderContext, IConfigProviderContext } from "./hooks/ConfigContext/ConfigContext";
4
+ import React from "react";
4
5
 
5
- const ConfigProvider = (props: ConfigProviderProps) => {
6
+ const ConfigProvider: React.FC<ConfigProviderProps> = (props: ConfigProviderProps) => {
6
7
  const {
7
8
  id = "root",
8
9
  theme = {
@@ -1,6 +1,6 @@
1
1
  import React, { useRef, useEffect, useState } from "react";
2
2
  import { View, Text, StyleSheet, FlatList, ScrollView } from "react-native";
3
- import { ConfigProvider } from "@xhs/reds-rn-next";
3
+ import { Button } from "@xhs/reds-rn-next";
4
4
 
5
5
  const styles = StyleSheet.create({
6
6
  container: {
@@ -20,30 +20,30 @@ const styles = StyleSheet.create({
20
20
  const Desc = ({ children = "" }) => {
21
21
  return <Text>{children}</Text>;
22
22
  };
23
- const Br = (props) => <View style={{ height: props.height || 20 }}></View>;
23
+ const Br = (props: { height?: number }) => <View style={{ height: props.height || 20 }}></View>;
24
24
 
25
25
  export default function App() {
26
26
  const [value, setValue] = useState(false);
27
27
  const [valueStr, setValueStr] = useState(value.toString());
28
- const onClick = (e) => setValue((v) => !v);
29
- const onChange = (v) => setValueStr(v.toString());
28
+ const onClick = (_e: any) => setValue((v) => !v);
29
+ const onChange = (v: boolean) => setValueStr(v.toString());
30
30
  return (
31
31
  <View style={styles.container}>
32
32
  <Desc>默认用法</Desc>
33
- <ConfigProvider></ConfigProvider>
33
+ <Button></Button>
34
34
  <Br />
35
35
 
36
36
  <Desc>设置默认值</Desc>
37
- <ConfigProvider defaultValue={true}></ConfigProvider>
37
+ <Button></Button>
38
38
  <Br />
39
39
 
40
40
  <Desc>修改开关颜色</Desc>
41
- <ConfigProvider trackOnColor={"#1b8bcd"} trackOffColor={"#da36c9"}></ConfigProvider>
41
+ <Button></Button>
42
42
  <Br />
43
43
 
44
44
  <Desc>受控用法</Desc>
45
45
  <Text>当前值:{valueStr}</Text>
46
- <ConfigProvider value={value} onClick={onClick} onChange={onChange}></ConfigProvider>
46
+ <Button></Button>
47
47
  <Br />
48
48
  </View>
49
49
  );
@@ -1,4 +1,4 @@
1
- import * as ConfigProvider from "./ConfigProvider";
1
+ import ConfigProvider from "./ConfigProvider";
2
2
 
3
3
  export { useThemeColor } from "./hooks/themeToken/useThemeToken";
4
4
  export default ConfigProvider;
@@ -52,3 +52,19 @@ export const defaultProps: RedsConfigProvider = {
52
52
  inherit: true,
53
53
  token: {},
54
54
  };
55
+ export const ConfigProviderDefaultProps: RedsConfigProvider = {
56
+ id: "root",
57
+ parentId: "root",
58
+ theme: {
59
+ colorMode: "light",
60
+ inherit: true,
61
+ token: {
62
+ lightColor: {},
63
+ darkColor: {},
64
+ alwaysColor: {},
65
+ },
66
+ },
67
+ colorMode: "light",
68
+ inherit: true,
69
+ token: {},
70
+ };
@@ -7,7 +7,7 @@ import ConfigProvider from "../index";
7
7
  describe("ConfigProvider", () => {
8
8
  it(":base", async () => {
9
9
  let isOn = false;
10
- const wrapper = render(<ConfigProvider onChange={(v) => (isOn = v)}></ConfigProvider>);
10
+ const wrapper = render(<ConfigProvider>123</ConfigProvider>);
11
11
  expect(wrapper.UNSAFE_root.props.defaultValue).toBe(false);
12
12
  await fireEvent(wrapper.UNSAFE_root.children[0], "press");
13
13
  expect(isOn).toBe(true);
@@ -1,6 +1,6 @@
1
1
  import React, { useRef, useEffect, useState, forwardRef } from "react";
2
2
  import { View, Text, StyleSheet, FlatList, ScrollView } from "react-native";
3
- import { Popover, Button } from "@xhs/reds-rn-next";
3
+ import { Popover, Button, RedsPopover } from "@xhs/reds-rn-next";
4
4
 
5
5
  const styles = StyleSheet.create({
6
6
  container: {
@@ -62,7 +62,7 @@ export default function App() {
62
62
 
63
63
  <Br />
64
64
 
65
- <Popover content={placement} placement={placement} visible>
65
+ <Popover content={placement} placement={placement as RedsPopover["placement"]} visible>
66
66
  <Button>{"气泡位置"}</Button>
67
67
  </Popover>
68
68
  </View>