@fountain-ui/lab 1.9.2 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/build/commonjs/AnimatedY/AnimatedY.js +2 -2
  3. package/build/commonjs/Carousel/CarouselWeb.js +52 -56
  4. package/build/commonjs/Carousel/CarouselWeb.js.map +1 -1
  5. package/build/commonjs/Carousel/utils.js +3 -1
  6. package/build/commonjs/Carousel/utils.js.map +1 -1
  7. package/build/commonjs/StatusBarProvider/StatusBarProvider.js +1 -1
  8. package/build/commonjs/StatusBarProvider/StatusBarProvider.js.map +1 -1
  9. package/build/commonjs/ViewPager/ChildrenMemoizedPage.js +4 -0
  10. package/build/commonjs/ViewPager/ChildrenMemoizedPage.js.map +1 -1
  11. package/build/commonjs/ViewPager/ViewPagerWeb.js +4 -4
  12. package/build/commonjs/ViewPager/ViewPagerWeb.js.map +1 -1
  13. package/build/commonjs/index.js +2 -2
  14. package/build/module/Carousel/CarouselWeb.js +52 -57
  15. package/build/module/Carousel/CarouselWeb.js.map +1 -1
  16. package/build/module/Carousel/utils.js +1 -0
  17. package/build/module/Carousel/utils.js.map +1 -1
  18. package/build/module/StatusBarProvider/StatusBarProvider.js +1 -1
  19. package/build/module/StatusBarProvider/StatusBarProvider.js.map +1 -1
  20. package/build/module/ViewPager/ChildrenMemoizedPage.js +4 -0
  21. package/build/module/ViewPager/ChildrenMemoizedPage.js.map +1 -1
  22. package/build/module/ViewPager/ViewPagerWeb.js +4 -4
  23. package/build/module/ViewPager/ViewPagerWeb.js.map +1 -1
  24. package/build/typescript/AnimatedY/AnimatedY.d.ts +1 -0
  25. package/build/typescript/BottomSheet/BottomSheetNative.d.ts +1 -0
  26. package/build/typescript/BottomSheet/BottomSheetWeb.d.ts +1 -0
  27. package/build/typescript/BottomSheet/TransparentBackdrop.d.ts +1 -0
  28. package/build/typescript/Carousel/CarouselNative.d.ts +1 -0
  29. package/build/typescript/Carousel/CarouselProps.d.ts +20 -0
  30. package/build/typescript/Carousel/CarouselWeb.d.ts +1 -0
  31. package/build/typescript/Carousel/utils.d.ts +1 -0
  32. package/build/typescript/DateTimePicker/DateTimePicker.d.ts +1 -0
  33. package/build/typescript/DateTimePicker/YearPicker.d.ts +1 -0
  34. package/build/typescript/StatusBarProvider/StatusBarProvider.d.ts +1 -0
  35. package/build/typescript/ViewPager/ViewPagerNative.d.ts +1 -0
  36. package/build/typescript/ViewPager/ViewPagerWeb.d.ts +1 -0
  37. package/package.json +14 -13
  38. package/src/Carousel/CarouselProps.ts +37 -13
  39. package/src/Carousel/CarouselWeb.tsx +53 -54
  40. package/src/Carousel/utils.ts +3 -1
  41. package/src/StatusBarProvider/StatusBarProvider.tsx +1 -1
  42. package/src/ViewPager/ChildrenMemoizedPage.tsx +4 -0
  43. package/src/ViewPager/ViewPagerWeb.tsx +10 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["CarouselWeb.tsx"],"names":["React","Slick","styled","mapIndexed","defaultAutoplay","defaultAutoplayInterval","defaultInactiveSlideOpacity","defaultInactiveSlideScale","defaultInfinite","baseSettings","arrows","dots","draggable","lazyLoad","pauseOnFocus","pauseOnHover","rows","swipe","slidesPerRow","vertical","noop","StyledContainer","div","props","display","position","userSelect","overflow","margin","padding","outline","cursor","transform","top","left","content","clear","float","height","minHeight","inactiveSlideScale","transition","opacity","inactiveSlideOpacity","Carousel","autoplay","autoplayInterval","centerSlidePadding","data","index","infinite","onChange","renderItem","slidesToScroll","slidesToShow","slickRef","useRef","useEffect","current","slickGoTo","fixOnClickNotWorkingAfterMobileSwipe","innerSlider","clickHandler","handleAfterChange","newIndex","handleBeforeChange","undefined","item","child","cloneElement","key"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Slick, { Settings } from 'react-slick';\nimport styled from '@emotion/styled';\nimport { mapIndexed } from '@fountain-ui/utils';\nimport type CarouselProps from './CarouselProps';\nimport {\n defaultAutoplay,\n defaultAutoplayInterval,\n defaultInactiveSlideOpacity,\n defaultInactiveSlideScale,\n defaultInfinite,\n} from './utils';\n\nconst baseSettings: Settings = {\n arrows: false,\n dots: false,\n draggable: true,\n lazyLoad: 'ondemand',\n pauseOnFocus: true,\n pauseOnHover: true,\n rows: 1,\n swipe: true,\n slidesPerRow: 1,\n vertical: false,\n};\n\nconst noop = () => void 0;\n\nconst StyledContainer: any = styled.div((props: any) => ({\n ['& .slick-slider']: {\n display: 'block',\n position: 'relative',\n userSelect: 'none',\n },\n ['& .slick-list']: {\n display: 'block',\n position: 'relative',\n overflow: 'hidden',\n margin: 0,\n padding: 0,\n ['&:focus']: {\n outline: 'none',\n },\n ['&.dragging']: {\n cursor: 'pointer',\n },\n },\n ['& .slick-slider .slick-track, &.slick-slider .slick-list']: {\n transform: 'translate3d(0, 0, 0)',\n },\n ['& .slick-track']: {\n display: 'block',\n position: 'relative',\n top: 0,\n left: 0,\n ['&:before, &:after']: {\n display: 'table',\n content: '\\'\\'',\n },\n ['&:after']: {\n clear: 'both',\n },\n },\n ['& .slick-slide']: {\n display: 'none',\n float: 'left',\n height: '100%',\n minHeight: 1,\n ['& > div']: {\n display: 'flex',\n transform: `scale(${props.inactiveSlideScale})`,\n transition: 'transform .5s',\n opacity: props.inactiveSlideOpacity,\n },\n },\n ['& .slick-current > div']: {\n transform: 'none',\n opacity: 1,\n },\n ['& .slick-initialized .slick-slide']: {\n display: 'block',\n },\n}));\n\nexport default function Carousel<ItemT>(props: CarouselProps<ItemT>) {\n const {\n autoplay = defaultAutoplay,\n autoplayInterval = defaultAutoplayInterval,\n centerSlidePadding,\n data,\n inactiveSlideOpacity = defaultInactiveSlideOpacity,\n inactiveSlideScale = defaultInactiveSlideScale,\n index,\n infinite = defaultInfinite,\n onChange,\n renderItem,\n slidesToScroll = 1,\n slidesToShow = 1,\n } = props;\n\n const slickRef = React.useRef<Slick | null>(null);\n\n React.useEffect(() => {\n if (slickRef.current) {\n slickRef.current.slickGoTo(index, false);\n }\n }, [index]);\n\n const fixOnClickNotWorkingAfterMobileSwipe = () => {\n // @ts-ignore\n if (slickRef.current && slickRef.current.innerSlider) {\n // @ts-ignore\n slickRef.current.innerSlider.clickHandler = noop;\n }\n };\n\n const handleAfterChange = (newIndex: number) => {\n fixOnClickNotWorkingAfterMobileSwipe();\n\n if (onChange) {\n onChange(newIndex);\n }\n };\n\n const handleBeforeChange = () => {\n fixOnClickNotWorkingAfterMobileSwipe();\n };\n\n return (\n <StyledContainer\n inactiveSlideOpacity={inactiveSlideOpacity}\n inactiveSlideScale={inactiveSlideScale}\n >\n <Slick\n {...baseSettings}\n afterChange={handleAfterChange}\n autoplay={autoplay}\n autoplaySpeed={autoplayInterval}\n beforeChange={handleBeforeChange}\n centerMode={centerSlidePadding !== undefined}\n centerPadding={centerSlidePadding !== undefined ? `${centerSlidePadding}px` : undefined}\n infinite={infinite}\n initialSlide={index}\n ref={slickRef}\n slidesToScroll={centerSlidePadding !== undefined ? 1 : slidesToScroll}\n slidesToShow={centerSlidePadding !== undefined ? 1 : slidesToShow}\n >\n {mapIndexed((item, index) => {\n const child = renderItem({ item, index });\n\n if (child) {\n return React.cloneElement(child, { key: index });\n }\n return child;\n }, data)}\n </Slick>\n </StyledContainer>\n );\n};\n"]}
1
+ {"version":3,"sources":["CarouselWeb.tsx"],"names":["React","View","Slick","styled","ChevronLeft","ChevronRight","mapIndexed","defaultAutoplay","defaultAutoplayInterval","defaultInactiveSlideOpacity","defaultInactiveSlideScale","defaultActiveSlideScale","defaultInfinite","baseSettings","dots","draggable","lazyLoad","pauseOnFocus","pauseOnHover","rows","swipe","slidesPerRow","vertical","noop","StyledContainer","div","props","display","opacity","transform","inactiveSlideScale","transition","activeSlideScale","arrowsStyle","ArrowContainer","children","height","justifyContent","alignItems","backgroundColor","borderRadius","Carousel","autoplay","autoplayInterval","centerMode","centerSlidePadding","data","inactiveSlideOpacity","index","infinite","onChange","renderItem","slidesToScroll","slidesToShow","arrows","slickRef","useRef","useEffect","current","slickGoTo","fixOnClickNotWorkingAfterMobileSwipe","innerSlider","clickHandler","handleAfterChange","newIndex","handleBeforeChange","item","child","cloneElement","key"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;AACA,OAAOC,KAAP,MAAgC,aAAhC;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,WAAT,EAAsBC,YAAtB,QAA0C,oBAA1C;AACA,SAASC,UAAT,QAA2B,oBAA3B;AAEA,SACIC,eADJ,EAEIC,uBAFJ,EAGIC,2BAHJ,EAIIC,yBAJJ,EAKIC,uBALJ,EAMIC,eANJ,QAOO,SAPP;AASA,MAAMC,YAAsB,GAAG;AAC3BC,EAAAA,IAAI,EAAE,KADqB;AAE3BC,EAAAA,SAAS,EAAE,IAFgB;AAG3BC,EAAAA,QAAQ,EAAE,UAHiB;AAI3BC,EAAAA,YAAY,EAAE,IAJa;AAK3BC,EAAAA,YAAY,EAAE,IALa;AAM3BC,EAAAA,IAAI,EAAE,CANqB;AAO3BC,EAAAA,KAAK,EAAE,IAPoB;AAQ3BC,EAAAA,YAAY,EAAE,CARa;AAS3BC,EAAAA,QAAQ,EAAE;AATiB,CAA/B;;AAYA,MAAMC,IAAI,GAAG,MAAM,KAAK,CAAxB;;AAEA,MAAMC,eAAoB,GAAGrB,MAAM,CAACsB,GAAP,CAAYC,KAAD,KAAiB;AACrD,GAAC,gBAAD,GAAoB;AAChBC,IAAAA,OAAO,EAAE;AADO,GADiC;AAIrD,GAAC,sBAAD,GAA0B;AACtBA,IAAAA,OAAO,EAAE,MADa;AAEtBC,IAAAA,OAAO,EAAE,GAFa;AAGtBC,IAAAA,SAAS,EAAG,SAAQH,KAAK,CAACI,kBAAmB,GAHvB;AAItBC,IAAAA,UAAU,EAAE;AAJU,GAJ2B;AAUrD,GAAE,qCAAF,GAAyC;AACrCF,IAAAA,SAAS,EAAG,SAAQH,KAAK,CAACM,gBAAiB,GADN;AAErCJ,IAAAA,OAAO,EAAE;AAF4B,GAVY;AAcrD,KAAGF,KAAK,CAACO;AAd4C,CAAjB,CAAX,CAA7B;;AAqBA,MAAMC,cAAc,GAAG,CAAC;AAAEC,EAAAA;AAAF,CAAD,kBACnB,oBAAC,IAAD;AACI,EAAA,KAAK,EAAE;AACHC,IAAAA,MAAM,EAAE,MADL;AAEHC,IAAAA,cAAc,EAAE,QAFb;AAGHC,IAAAA,UAAU,EAAE,QAHT;AAIHC,IAAAA,eAAe,EAAE,OAJd;AAKHC,IAAAA,YAAY,EAAE;AALX;AADX,GASKL,QATL,CADJ;;AAcA,eAAe,SAASM,QAAT,CAAyBf,KAAzB,EAAsD;AACjE,QAAM;AACFM,IAAAA,gBAAgB,GAAGrB,uBADjB;AAEF+B,IAAAA,QAAQ,GAAGnC,eAFT;AAGFoC,IAAAA,gBAAgB,GAAGnC,uBAHjB;AAIFoC,IAAAA,UAAU,GAAG,IAJX;AAKFC,IAAAA,kBAAkB,GAAG,CALnB;AAMFC,IAAAA,IANE;AAOFC,IAAAA,oBAAoB,GAAGtC,2BAPrB;AAQFqB,IAAAA,kBAAkB,GAAGpB,yBARnB;AASFsC,IAAAA,KATE;AAUFC,IAAAA,QAAQ,GAAGrC,eAVT;AAWFsC,IAAAA,QAXE;AAYFC,IAAAA,UAZE;AAaFC,IAAAA,cAAc,GAAG,CAbf;AAcFC,IAAAA,YAAY,GAAG,CAdb;AAeFC,IAAAA,MAAM,GAAG,KAfP;AAgBFrB,IAAAA,WAAW,GAAG;AAhBZ,MAiBFP,KAjBJ;AAmBA,QAAM6B,QAAQ,GAAGvD,KAAK,CAACwD,MAAN,CAA2B,IAA3B,CAAjB;AAEAxD,EAAAA,KAAK,CAACyD,SAAN,CAAgB,MAAM;AAClB,QAAIF,QAAQ,CAACG,OAAb,EAAsB;AAClBH,MAAAA,QAAQ,CAACG,OAAT,CAAiBC,SAAjB,CAA2BX,KAA3B,EAAkC,KAAlC;AACH;AACJ,GAJD,EAIG,CAACA,KAAD,CAJH;;AAMA,QAAMY,oCAAoC,GAAG,MAAM;AAC/C;AACA,QAAIL,QAAQ,CAACG,OAAT,IAAoBH,QAAQ,CAACG,OAAT,CAAiBG,WAAzC,EAAsD;AAClD;AACAN,MAAAA,QAAQ,CAACG,OAAT,CAAiBG,WAAjB,CAA6BC,YAA7B,GAA4CvC,IAA5C;AACH;AACJ,GAND;;AAQA,QAAMwC,iBAAiB,GAAIC,QAAD,IAAsB;AAC5CJ,IAAAA,oCAAoC;;AAEpC,QAAIV,QAAJ,EAAc;AACVA,MAAAA,QAAQ,CAACc,QAAD,CAAR;AACH;AACJ,GAND;;AAQA,QAAMC,kBAAkB,GAAG,MAAM;AAC7BL,IAAAA,oCAAoC;AACvC,GAFD;;AAIA,sBACI,oBAAC,eAAD;AACI,IAAA,gBAAgB,EAAE5B,gBADtB;AAEI,IAAA,oBAAoB,EAAEe,oBAF1B;AAGI,IAAA,kBAAkB,EAAEjB,kBAHxB;AAII,IAAA,WAAW,EAAEG;AAJjB,kBAMI,oBAAC,KAAD,eACQpB,YADR;AAEI,IAAA,WAAW,EAAEkD,iBAFjB;AAGI,IAAA,QAAQ,EAAErB,QAHd;AAII,IAAA,aAAa,EAAEC,gBAJnB;AAKI,IAAA,YAAY,EAAEsB,kBALlB;AAMI,IAAA,UAAU,EAAErB,UANhB;AAOI,IAAA,aAAa,EAAG,GAAEC,kBAAmB,IAPzC;AAQI,IAAA,QAAQ,EAAEI,QARd;AASI,IAAA,YAAY,EAAED,KATlB;AAUI,IAAA,GAAG,EAAEO,QAVT;AAWI,IAAA,cAAc,EAAEH,cAXpB;AAYI,IAAA,YAAY,EAAEC,YAZlB;AAaI,IAAA,MAAM,EAAEC,MAbZ;AAcI,IAAA,SAAS;AAAA;AACL;AACA,kDACI,oBAAC,cAAD;AAAgB,MAAA,QAAQ,eAAE,oBAAC,WAAD;AAAa,QAAA,IAAI,EAAE;AAAnB;AAA1B,MADJ,CAhBR;AAoBI,IAAA,SAAS,eACL,8CACI,oBAAC,cAAD;AAAgB,MAAA,QAAQ,eAAE,oBAAC,YAAD;AAAc,QAAA,IAAI,EAAE;AAApB;AAA1B,MADJ;AArBR,MA0BKhD,UAAU,CAAC,CAAC4D,IAAD,EAAOlB,KAAP,KAAiB;AACzB,UAAMmB,KAAK,GAAGhB,UAAU,CAAC;AAAEe,MAAAA,IAAF;AAAQlB,MAAAA;AAAR,KAAD,CAAxB;;AAEA,QAAImB,KAAJ,EAAW;AACP,0BAAOnE,KAAK,CAACoE,YAAN,CAAmBD,KAAnB,EAA0B;AAAEE,QAAAA,GAAG,EAAErB;AAAP,OAA1B,CAAP;AACH;;AACD,WAAOmB,KAAP;AACH,GAPU,EAORrB,IAPQ,CA1Bf,CANJ,CADJ;AA4CH;AAAA","sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\nimport Slick, { Settings } from 'react-slick';\nimport styled from '@emotion/styled';\nimport { ChevronLeft, ChevronRight } from '@fountain-ui/icons';\nimport { mapIndexed } from '@fountain-ui/utils';\nimport type CarouselProps from './CarouselProps';\nimport {\n defaultAutoplay,\n defaultAutoplayInterval,\n defaultInactiveSlideOpacity,\n defaultInactiveSlideScale,\n defaultActiveSlideScale,\n defaultInfinite,\n} from './utils';\n\nconst baseSettings: Settings = {\n dots: false,\n draggable: true,\n lazyLoad: 'ondemand',\n pauseOnFocus: true,\n pauseOnHover: true,\n rows: 1,\n swipe: true,\n slidesPerRow: 1,\n vertical: false,\n};\n\nconst noop = () => void 0;\n\nconst StyledContainer: any = styled.div((props: any) => ({\n ['& .slick-track']: {\n display: 'flex',\n },\n ['& .slick-slide > div']: {\n display: 'flex',\n opacity: 0.2,\n transform: `scale(${props.inactiveSlideScale})`,\n transition: 'transform .5s',\n },\n [`& .slick-active.slick-current > div`]: {\n transform: `scale(${props.activeSlideScale})`,\n opacity: 1,\n },\n ...props.arrowsStyle,\n}));\n\ninterface ArrowContainerProps {\n children: React.ReactElement;\n}\n\nconst ArrowContainer = ({ children }: ArrowContainerProps) => (\n <View\n style={{\n height: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'white',\n borderRadius: 16,\n }}\n >\n {children}\n </View>\n);\n\nexport default function Carousel<ItemT>(props: CarouselProps<ItemT>) {\n const {\n activeSlideScale = defaultActiveSlideScale,\n autoplay = defaultAutoplay,\n autoplayInterval = defaultAutoplayInterval,\n centerMode = true,\n centerSlidePadding = 0,\n data,\n inactiveSlideOpacity = defaultInactiveSlideOpacity,\n inactiveSlideScale = defaultInactiveSlideScale,\n index,\n infinite = defaultInfinite,\n onChange,\n renderItem,\n slidesToScroll = 1,\n slidesToShow = 1,\n arrows = false,\n arrowsStyle = {},\n } = props;\n\n const slickRef = React.useRef<Slick | null>(null);\n\n React.useEffect(() => {\n if (slickRef.current) {\n slickRef.current.slickGoTo(index, false);\n }\n }, [index]);\n\n const fixOnClickNotWorkingAfterMobileSwipe = () => {\n // @ts-ignore\n if (slickRef.current && slickRef.current.innerSlider) {\n // @ts-ignore\n slickRef.current.innerSlider.clickHandler = noop;\n }\n };\n\n const handleAfterChange = (newIndex: number) => {\n fixOnClickNotWorkingAfterMobileSwipe();\n\n if (onChange) {\n onChange(newIndex);\n }\n };\n\n const handleBeforeChange = () => {\n fixOnClickNotWorkingAfterMobileSwipe();\n };\n\n return (\n <StyledContainer\n activeSlideScale={activeSlideScale}\n inactiveSlideOpacity={inactiveSlideOpacity}\n inactiveSlideScale={inactiveSlideScale}\n arrowsStyle={arrowsStyle}\n >\n <Slick\n {...baseSettings}\n afterChange={handleAfterChange}\n autoplay={autoplay}\n autoplaySpeed={autoplayInterval}\n beforeChange={handleBeforeChange}\n centerMode={centerMode}\n centerPadding={`${centerSlidePadding}px`}\n infinite={infinite}\n initialSlide={index}\n ref={slickRef}\n slidesToScroll={slidesToScroll}\n slidesToShow={slidesToShow}\n arrows={arrows}\n prevArrow={(\n // If root component is not a div, there's no arrow class.\n <div>\n <ArrowContainer children={<ChevronLeft fill={'#767676'}/>}/>\n </div>\n )}\n nextArrow={(\n <div>\n <ArrowContainer children={<ChevronRight fill={'#767676'}/>}/>\n </div>\n )}\n >\n {mapIndexed((item, index) => {\n const child = renderItem({ item, index });\n\n if (child) {\n return React.cloneElement(child, { key: index });\n }\n return child;\n }, data)}\n </Slick>\n </StyledContainer>\n );\n};\n"]}
@@ -2,5 +2,6 @@ export const defaultAutoplay = false;
2
2
  export const defaultAutoplayInterval = 3000;
3
3
  export const defaultInactiveSlideOpacity = 0.7;
4
4
  export const defaultInactiveSlideScale = 0.9;
5
+ export const defaultActiveSlideScale = 0.990;
5
6
  export const defaultInfinite = false;
6
7
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["utils.ts"],"names":["defaultAutoplay","defaultAutoplayInterval","defaultInactiveSlideOpacity","defaultInactiveSlideScale","defaultInfinite"],"mappings":"AAAA,OAAO,MAAMA,eAAe,GAAG,KAAxB;AAEP,OAAO,MAAMC,uBAAuB,GAAG,IAAhC;AAEP,OAAO,MAAMC,2BAA2B,GAAG,GAApC;AAEP,OAAO,MAAMC,yBAAyB,GAAG,GAAlC;AAEP,OAAO,MAAMC,eAAe,GAAG,KAAxB","sourcesContent":["export const defaultAutoplay = false;\n\nexport const defaultAutoplayInterval = 3000;\n\nexport const defaultInactiveSlideOpacity = 0.7;\n\nexport const defaultInactiveSlideScale = 0.9;\n\nexport const defaultInfinite = false;"]}
1
+ {"version":3,"sources":["utils.ts"],"names":["defaultAutoplay","defaultAutoplayInterval","defaultInactiveSlideOpacity","defaultInactiveSlideScale","defaultActiveSlideScale","defaultInfinite"],"mappings":"AAAA,OAAO,MAAMA,eAAe,GAAG,KAAxB;AAEP,OAAO,MAAMC,uBAAuB,GAAG,IAAhC;AAEP,OAAO,MAAMC,2BAA2B,GAAG,GAApC;AAEP,OAAO,MAAMC,yBAAyB,GAAG,GAAlC;AAEP,OAAO,MAAMC,uBAAuB,GAAG,KAAhC;AAEP,OAAO,MAAMC,eAAe,GAAG,KAAxB","sourcesContent":["export const defaultAutoplay = false;\n\nexport const defaultAutoplayInterval = 3000;\n\nexport const defaultInactiveSlideOpacity = 0.7;\n\nexport const defaultInactiveSlideScale = 0.9;\n\nexport const defaultActiveSlideScale = 0.990;\n\nexport const defaultInfinite = false;\n"]}
@@ -54,7 +54,7 @@ export default function StatusBarProvider(props) {
54
54
  position: 'absolute',
55
55
  right: 0,
56
56
  top: 0,
57
- zIndex: 10
57
+ zIndex: theme.zIndex.statusBar
58
58
  }]);
59
59
  return /*#__PURE__*/React.createElement(Provider, {
60
60
  value: {
@@ -1 +1 @@
1
- {"version":3,"sources":["StatusBarProvider.tsx"],"names":["React","Platform","StatusBar","RNStatusBar","View","useSafeAreaInsets","useTheme","css","Provider","initialVisible","select","ios","android","StatusBarProvider","props","children","theme","defaultColor","palette","background","default","visible","setVisible","useState","backgroundViewColor","setBackgroundViewColor","setBackgroundColor","value","OS","setBarStyle","animated","setHidden","setTranslucent","shouldRenderBackgroundView","inset","backgroundViewStyle","backgroundColor","height","top","left","position","right","zIndex"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,QAAT,EAAmBC,SAAS,IAAIC,WAAhC,EAA6CC,IAA7C,QAAyD,cAAzD;AACA,SAASC,iBAAT,QAAkC,gCAAlC;AACA,SAASC,QAAT,QAAyB,mBAAzB;AACA,SAASC,GAAT,QAAoB,qBAApB;AACA,OAAOC,QAAP,MAAqB,YAArB;AAGA,MAAMC,cAAc,GAAGR,QAAQ,CAACS,MAAT,CAAgB;AACnCC,EAAAA,GAAG,EAAE,IAD8B;AAEnCC,EAAAA,OAAO,EAAE;AAF0B,CAAhB,CAAvB;AAKA,eAAe,SAASC,iBAAT,CAA2BC,KAA3B,EAA0D;AACrE,QAAM;AAAEC,IAAAA;AAAF,MAAeD,KAArB;AAEA,QAAME,KAAK,GAAGV,QAAQ,EAAtB;AACA,QAAMW,YAAY,GAAGD,KAAK,CAACE,OAAN,CAAcC,UAAd,CAAyBC,OAA9C;AAEA,QAAM,CAACC,OAAD,EAAUC,UAAV,IAAwBtB,KAAK,CAACuB,QAAN,CAAed,cAAf,CAA9B;AACA,QAAM,CAACe,mBAAD,EAAsBC,sBAAtB,IAAgDzB,KAAK,CAACuB,QAAN,CAAeN,YAAf,CAAtD;;AAEA,QAAMS,kBAAkB,GAAIC,KAAD,IAAmB;AAC1C,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,SAApB,EAA+B;AAC3BzB,MAAAA,WAAW,CAACuB,kBAAZ,CAA+BC,KAA/B;AACH;;AAED,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,KAApB,EAA2B;AACvBH,MAAAA,sBAAsB,CAACE,KAAD,CAAtB;AACH;AACJ,GARD;;AAUA,QAAME,WAAW,GAAG,CAACF,KAAD,EAAwBG,QAAxB,KAA+C;AAC/D3B,IAAAA,WAAW,CAAC0B,WAAZ,CAAwBF,KAAxB,EAA+BG,QAA/B;AACH,GAFD;;AAIA,QAAMC,SAAS,GAAIJ,KAAD,IAAoB;AAClC,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,KAApB,EAA2B;AACvBN,MAAAA,UAAU,CAAC,CAACK,KAAF,CAAV;AACH;;AAEDxB,IAAAA,WAAW,CAAC4B,SAAZ,CAAsBJ,KAAtB;AACH,GAND;;AAQA,QAAMK,cAAc,GAAIL,KAAD,IAAoB;AACvC,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,SAApB,EAA+B;AAC3BzB,MAAAA,WAAW,CAAC6B,cAAZ,CAA2BL,KAA3B;AACH;AACJ,GAJD;;AAMA,QAAMM,0BAA0B,GAAGhC,QAAQ,CAAC2B,EAAT,KAAgB,KAAhB,IAAyBP,OAA5D;AAEA,QAAMa,KAAK,GAAG7B,iBAAiB,EAA/B;AACA,QAAM8B,mBAAmB,GAAG5B,GAAG,CAAC,CAC5B;AACI6B,IAAAA,eAAe,EAAEZ,mBADrB;AAEIa,IAAAA,MAAM,EAAEH,KAAK,CAACI,GAFlB;AAGIC,IAAAA,IAAI,EAAE,CAHV;AAIIC,IAAAA,QAAQ,EAAE,UAJd;AAKIC,IAAAA,KAAK,EAAE,CALX;AAMIH,IAAAA,GAAG,EAAE,CANT;AAOII,IAAAA,MAAM,EAAE;AAPZ,GAD4B,CAAD,CAA/B;AAYA,sBACI,oBAAC,QAAD;AAAU,IAAA,KAAK,EAAE;AACbhB,MAAAA,kBADa;AAEbG,MAAAA,WAFa;AAGbE,MAAAA,SAHa;AAIbC,MAAAA;AAJa;AAAjB,KAMKC,0BAA0B,gBACvB,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEE;AAAb,IADuB,GAEvB,IARR,EASKpB,QATL,CADJ;AAaH","sourcesContent":["import React from 'react';\nimport type { StatusBarStyle } from 'react-native';\nimport { Platform, StatusBar as RNStatusBar, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { useTheme } from '@fountain-ui/core';\nimport { css } from '@fountain-ui/styles';\nimport Provider from './Provider';\nimport type StatusBarProviderProps from './StatusBarProviderProps';\n\nconst initialVisible = Platform.select({\n ios: true,\n android: false,\n});\n\nexport default function StatusBarProvider(props: StatusBarProviderProps) {\n const { children } = props;\n\n const theme = useTheme();\n const defaultColor = theme.palette.background.default;\n\n const [visible, setVisible] = React.useState(initialVisible);\n const [backgroundViewColor, setBackgroundViewColor] = React.useState(defaultColor);\n\n const setBackgroundColor = (value: string) => {\n if (Platform.OS === 'android') {\n RNStatusBar.setBackgroundColor(value);\n }\n\n if (Platform.OS === 'ios') {\n setBackgroundViewColor(value);\n }\n };\n\n const setBarStyle = (value: StatusBarStyle, animated?: boolean) => {\n RNStatusBar.setBarStyle(value, animated);\n };\n\n const setHidden = (value: boolean) => {\n if (Platform.OS === 'ios') {\n setVisible(!value);\n }\n\n RNStatusBar.setHidden(value);\n };\n\n const setTranslucent = (value: boolean) => {\n if (Platform.OS === 'android') {\n RNStatusBar.setTranslucent(value);\n }\n };\n\n const shouldRenderBackgroundView = Platform.OS === 'ios' && visible;\n\n const inset = useSafeAreaInsets();\n const backgroundViewStyle = css([\n {\n backgroundColor: backgroundViewColor,\n height: inset.top,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n zIndex: 10,\n },\n ]);\n\n return (\n <Provider value={{\n setBackgroundColor,\n setBarStyle,\n setHidden,\n setTranslucent,\n }}>\n {shouldRenderBackgroundView ? (\n <View style={backgroundViewStyle}/>\n ) : null}\n {children}\n </Provider>\n );\n}"]}
1
+ {"version":3,"sources":["StatusBarProvider.tsx"],"names":["React","Platform","StatusBar","RNStatusBar","View","useSafeAreaInsets","useTheme","css","Provider","initialVisible","select","ios","android","StatusBarProvider","props","children","theme","defaultColor","palette","background","default","visible","setVisible","useState","backgroundViewColor","setBackgroundViewColor","setBackgroundColor","value","OS","setBarStyle","animated","setHidden","setTranslucent","shouldRenderBackgroundView","inset","backgroundViewStyle","backgroundColor","height","top","left","position","right","zIndex","statusBar"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,QAAT,EAAmBC,SAAS,IAAIC,WAAhC,EAA6CC,IAA7C,QAAyD,cAAzD;AACA,SAASC,iBAAT,QAAkC,gCAAlC;AACA,SAASC,QAAT,QAAyB,mBAAzB;AACA,SAASC,GAAT,QAAoB,qBAApB;AACA,OAAOC,QAAP,MAAqB,YAArB;AAGA,MAAMC,cAAc,GAAGR,QAAQ,CAACS,MAAT,CAAgB;AACnCC,EAAAA,GAAG,EAAE,IAD8B;AAEnCC,EAAAA,OAAO,EAAE;AAF0B,CAAhB,CAAvB;AAKA,eAAe,SAASC,iBAAT,CAA2BC,KAA3B,EAA0D;AACrE,QAAM;AAAEC,IAAAA;AAAF,MAAeD,KAArB;AAEA,QAAME,KAAK,GAAGV,QAAQ,EAAtB;AACA,QAAMW,YAAY,GAAGD,KAAK,CAACE,OAAN,CAAcC,UAAd,CAAyBC,OAA9C;AAEA,QAAM,CAACC,OAAD,EAAUC,UAAV,IAAwBtB,KAAK,CAACuB,QAAN,CAAed,cAAf,CAA9B;AACA,QAAM,CAACe,mBAAD,EAAsBC,sBAAtB,IAAgDzB,KAAK,CAACuB,QAAN,CAAeN,YAAf,CAAtD;;AAEA,QAAMS,kBAAkB,GAAIC,KAAD,IAAmB;AAC1C,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,SAApB,EAA+B;AAC3BzB,MAAAA,WAAW,CAACuB,kBAAZ,CAA+BC,KAA/B;AACH;;AAED,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,KAApB,EAA2B;AACvBH,MAAAA,sBAAsB,CAACE,KAAD,CAAtB;AACH;AACJ,GARD;;AAUA,QAAME,WAAW,GAAG,CAACF,KAAD,EAAwBG,QAAxB,KAA+C;AAC/D3B,IAAAA,WAAW,CAAC0B,WAAZ,CAAwBF,KAAxB,EAA+BG,QAA/B;AACH,GAFD;;AAIA,QAAMC,SAAS,GAAIJ,KAAD,IAAoB;AAClC,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,KAApB,EAA2B;AACvBN,MAAAA,UAAU,CAAC,CAACK,KAAF,CAAV;AACH;;AAEDxB,IAAAA,WAAW,CAAC4B,SAAZ,CAAsBJ,KAAtB;AACH,GAND;;AAQA,QAAMK,cAAc,GAAIL,KAAD,IAAoB;AACvC,QAAI1B,QAAQ,CAAC2B,EAAT,KAAgB,SAApB,EAA+B;AAC3BzB,MAAAA,WAAW,CAAC6B,cAAZ,CAA2BL,KAA3B;AACH;AACJ,GAJD;;AAMA,QAAMM,0BAA0B,GAAGhC,QAAQ,CAAC2B,EAAT,KAAgB,KAAhB,IAAyBP,OAA5D;AAEA,QAAMa,KAAK,GAAG7B,iBAAiB,EAA/B;AACA,QAAM8B,mBAAmB,GAAG5B,GAAG,CAAC,CAC5B;AACI6B,IAAAA,eAAe,EAAEZ,mBADrB;AAEIa,IAAAA,MAAM,EAAEH,KAAK,CAACI,GAFlB;AAGIC,IAAAA,IAAI,EAAE,CAHV;AAIIC,IAAAA,QAAQ,EAAE,UAJd;AAKIC,IAAAA,KAAK,EAAE,CALX;AAMIH,IAAAA,GAAG,EAAE,CANT;AAOII,IAAAA,MAAM,EAAE1B,KAAK,CAAC0B,MAAN,CAAaC;AAPzB,GAD4B,CAAD,CAA/B;AAYA,sBACI,oBAAC,QAAD;AAAU,IAAA,KAAK,EAAE;AACbjB,MAAAA,kBADa;AAEbG,MAAAA,WAFa;AAGbE,MAAAA,SAHa;AAIbC,MAAAA;AAJa;AAAjB,KAMKC,0BAA0B,gBACvB,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEE;AAAb,IADuB,GAEvB,IARR,EASKpB,QATL,CADJ;AAaH","sourcesContent":["import React from 'react';\nimport type { StatusBarStyle } from 'react-native';\nimport { Platform, StatusBar as RNStatusBar, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { useTheme } from '@fountain-ui/core';\nimport { css } from '@fountain-ui/styles';\nimport Provider from './Provider';\nimport type StatusBarProviderProps from './StatusBarProviderProps';\n\nconst initialVisible = Platform.select({\n ios: true,\n android: false,\n});\n\nexport default function StatusBarProvider(props: StatusBarProviderProps) {\n const { children } = props;\n\n const theme = useTheme();\n const defaultColor = theme.palette.background.default;\n\n const [visible, setVisible] = React.useState(initialVisible);\n const [backgroundViewColor, setBackgroundViewColor] = React.useState(defaultColor);\n\n const setBackgroundColor = (value: string) => {\n if (Platform.OS === 'android') {\n RNStatusBar.setBackgroundColor(value);\n }\n\n if (Platform.OS === 'ios') {\n setBackgroundViewColor(value);\n }\n };\n\n const setBarStyle = (value: StatusBarStyle, animated?: boolean) => {\n RNStatusBar.setBarStyle(value, animated);\n };\n\n const setHidden = (value: boolean) => {\n if (Platform.OS === 'ios') {\n setVisible(!value);\n }\n\n RNStatusBar.setHidden(value);\n };\n\n const setTranslucent = (value: boolean) => {\n if (Platform.OS === 'android') {\n RNStatusBar.setTranslucent(value);\n }\n };\n\n const shouldRenderBackgroundView = Platform.OS === 'ios' && visible;\n\n const inset = useSafeAreaInsets();\n const backgroundViewStyle = css([\n {\n backgroundColor: backgroundViewColor,\n height: inset.top,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n zIndex: theme.zIndex.statusBar,\n },\n ]);\n\n return (\n <Provider value={{\n setBackgroundColor,\n setBarStyle,\n setHidden,\n setTranslucent,\n }}>\n {shouldRenderBackgroundView ? (\n <View style={backgroundViewStyle}/>\n ) : null}\n {children}\n </Provider>\n );\n}"]}
@@ -22,6 +22,10 @@ export default /*#__PURE__*/React.memo(Page, (prevProps, nextProps) => {
22
22
  return false;
23
23
  }
24
24
 
25
+ if (prevProps.style !== nextProps.style) {
26
+ return false;
27
+ }
28
+
25
29
  if (prevProps.rerenderKey !== nextProps.rerenderKey) {
26
30
  return false;
27
31
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["ChildrenMemoizedPage.tsx"],"names":["React","View","Page","props","isVisible","otherProps","memo","prevProps","nextProps","children","rerenderKey"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;;AAGA,MAAMC,IAAI,GAAG,SAASA,IAAT,CAAcC,KAAd,EAAgC;AACzC,QAAM;AAAEC,IAAAA,SAAF;AAAa,OAAGC;AAAhB,MAA+BF,KAArC;AAEA,sBACI,oBAAC,IAAD;AACI,IAAA,WAAW,EAAE;AADjB,KAEQE,UAFR,EADJ;AAMH,CATD;;AAWA,4BAAeL,KAAK,CAACM,IAAN,CAAWJ,IAAX,EAAiB,CAACK,SAAD,EAAYC,SAAZ,KAA0B;AACtD,MAAID,SAAS,CAACE,QAAV,KAAuB,IAAvB,IAA+BD,SAAS,CAACC,QAAV,KAAuB,IAA1D,EAAgE;AAC5D,WAAO,IAAP;AACH;;AAED,MAAIF,SAAS,CAACH,SAAV,KAAwBI,SAAS,CAACJ,SAAtC,EAAiD;AAC7C,WAAO,KAAP;AACH;;AAED,MAAIG,SAAS,CAACG,WAAV,KAA0BF,SAAS,CAACE,WAAxC,EAAqD;AACjD,WAAO,KAAP;AACH;;AAED,SAAOH,SAAS,CAACE,QAAV,KAAuB,IAAvB,IAA+BD,SAAS,CAACC,QAAV,KAAuB,IAA7D;AACH,CAdc,CAAf","sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\nimport type { PageProps } from './ViewPagerProps';\n\nconst Page = function Page(props: PageProps) {\n const { isVisible, ...otherProps } = props;\n\n return (\n <View\n collapsable={false}\n {...otherProps}\n />\n );\n};\n\nexport default React.memo(Page, (prevProps, nextProps) => {\n if (prevProps.children === null && nextProps.children === null) {\n return true;\n }\n\n if (prevProps.isVisible !== nextProps.isVisible) {\n return false;\n }\n\n if (prevProps.rerenderKey !== nextProps.rerenderKey) {\n return false;\n }\n\n return prevProps.children !== null && nextProps.children !== null;\n});\n"]}
1
+ {"version":3,"sources":["ChildrenMemoizedPage.tsx"],"names":["React","View","Page","props","isVisible","otherProps","memo","prevProps","nextProps","children","style","rerenderKey"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;;AAGA,MAAMC,IAAI,GAAG,SAASA,IAAT,CAAcC,KAAd,EAAgC;AACzC,QAAM;AAAEC,IAAAA,SAAF;AAAa,OAAGC;AAAhB,MAA+BF,KAArC;AAEA,sBACI,oBAAC,IAAD;AACI,IAAA,WAAW,EAAE;AADjB,KAEQE,UAFR,EADJ;AAMH,CATD;;AAWA,4BAAeL,KAAK,CAACM,IAAN,CAAWJ,IAAX,EAAiB,CAACK,SAAD,EAAYC,SAAZ,KAA0B;AACtD,MAAID,SAAS,CAACE,QAAV,KAAuB,IAAvB,IAA+BD,SAAS,CAACC,QAAV,KAAuB,IAA1D,EAAgE;AAC5D,WAAO,IAAP;AACH;;AAED,MAAIF,SAAS,CAACH,SAAV,KAAwBI,SAAS,CAACJ,SAAtC,EAAiD;AAC7C,WAAO,KAAP;AACH;;AAED,MAAIG,SAAS,CAACG,KAAV,KAAoBF,SAAS,CAACE,KAAlC,EAAyC;AACrC,WAAO,KAAP;AACH;;AAED,MAAIH,SAAS,CAACI,WAAV,KAA0BH,SAAS,CAACG,WAAxC,EAAqD;AACjD,WAAO,KAAP;AACH;;AAED,SAAOJ,SAAS,CAACE,QAAV,KAAuB,IAAvB,IAA+BD,SAAS,CAACC,QAAV,KAAuB,IAA7D;AACH,CAlBc,CAAf","sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\nimport type { PageProps } from './ViewPagerProps';\n\nconst Page = function Page(props: PageProps) {\n const { isVisible, ...otherProps } = props;\n\n return (\n <View\n collapsable={false}\n {...otherProps}\n />\n );\n};\n\nexport default React.memo(Page, (prevProps, nextProps) => {\n if (prevProps.children === null && nextProps.children === null) {\n return true;\n }\n\n if (prevProps.isVisible !== nextProps.isVisible) {\n return false;\n }\n\n if (prevProps.style !== nextProps.style) {\n return false;\n }\n\n if (prevProps.rerenderKey !== nextProps.rerenderKey) {\n return false;\n }\n\n return prevProps.children !== null && nextProps.children !== null;\n});\n"]}
@@ -3,6 +3,8 @@ import { StyleSheet, View } from 'react-native';
3
3
  import { defaultEnableVisibleHint, defaultLoading, defaultPageComponent, usePageRenderer } from './utils';
4
4
  const styles = StyleSheet.create({
5
5
  root: {
6
+ // @ts-ignore
7
+ overflow: 'auto',
6
8
  position: 'relative'
7
9
  },
8
10
  none: {
@@ -28,10 +30,8 @@ export default function ViewPager(props) {
28
30
  });
29
31
  return /*#__PURE__*/React.createElement(View, {
30
32
  style: [styles.root, style]
31
- }, React.Children.map(renderer(children), (child, i) => /*#__PURE__*/React.createElement(View, {
32
- key: i,
33
- style: i !== index ? styles.none : StyleSheet.absoluteFill,
34
- children: child
33
+ }, React.Children.map(renderer(children), (child, i) => /*#__PURE__*/React.cloneElement(child, {
34
+ style: i !== index ? styles.none : StyleSheet.absoluteFill
35
35
  })));
36
36
  }
37
37
  ;
@@ -1 +1 @@
1
- {"version":3,"sources":["ViewPagerWeb.tsx"],"names":["React","StyleSheet","View","defaultEnableVisibleHint","defaultLoading","defaultPageComponent","usePageRenderer","styles","create","root","position","none","display","ViewPager","props","children","enableVisibleHint","index","loading","pageComponent","pageForceRerenderKey","style","renderer","Children","map","child","i","absoluteFill"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AAEA,SAASC,wBAAT,EAAmCC,cAAnC,EAAmDC,oBAAnD,EAAyEC,eAAzE,QAAgG,SAAhG;AAEA,MAAMC,MAAM,GAAGN,UAAU,CAACO,MAAX,CAAkB;AAC7BC,EAAAA,IAAI,EAAE;AAAEC,IAAAA,QAAQ,EAAE;AAAZ,GADuB;AAE7BC,EAAAA,IAAI,EAAE;AAAEC,IAAAA,OAAO,EAAE;AAAX;AAFuB,CAAlB,CAAf;AAKA,eAAe,SAASC,SAAT,CAAmBC,KAAnB,EAA0C;AACrD,QAAM;AACFC,IAAAA,QADE;AAEFC,IAAAA,iBAAiB,GAAGb,wBAFlB;AAGFc,IAAAA,KAHE;AAIFC,IAAAA,OAAO,GAAGd,cAJR;AAKFe,IAAAA,aAAa,GAAGd,oBALd;AAMFe,IAAAA,oBANE;AAOFC,IAAAA;AAPE,MAQFP,KARJ;AAUA,QAAMQ,QAAQ,GAAGhB,eAAe,CAAC;AAC7BU,IAAAA,iBAD6B;AAE7BC,IAAAA,KAF6B;AAG7BC,IAAAA,OAH6B;AAI7BC,IAAAA,aAJ6B;AAK7BC,IAAAA;AAL6B,GAAD,CAAhC;AAQA,sBACI,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE,CAACb,MAAM,CAACE,IAAR,EAAcY,KAAd;AAAb,KACKrB,KAAK,CAACuB,QAAN,CAAeC,GAAf,CAAmBF,QAAQ,CAACP,QAAD,CAA3B,EAAuC,CAACU,KAAD,EAAQC,CAAR,kBACpC,oBAAC,IAAD;AACI,IAAA,GAAG,EAAEA,CADT;AAEI,IAAA,KAAK,EAAEA,CAAC,KAAKT,KAAN,GAAcV,MAAM,CAACI,IAArB,GAA4BV,UAAU,CAAC0B,YAFlD;AAGI,IAAA,QAAQ,EAAEF;AAHd,IADH,CADL,CADJ;AAWH;AAAA","sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport type ViewPagerProps from './ViewPagerProps';\nimport { defaultEnableVisibleHint, defaultLoading, defaultPageComponent, usePageRenderer } from './utils';\n\nconst styles = StyleSheet.create({\n root: { position: 'relative' },\n none: { display: 'none' },\n});\n\nexport default function ViewPager(props: ViewPagerProps) {\n const {\n children,\n enableVisibleHint = defaultEnableVisibleHint,\n index,\n loading = defaultLoading,\n pageComponent = defaultPageComponent,\n pageForceRerenderKey,\n style,\n } = props;\n\n const renderer = usePageRenderer({\n enableVisibleHint,\n index,\n loading,\n pageComponent,\n pageForceRerenderKey,\n });\n\n return (\n <View style={[styles.root, style]}>\n {React.Children.map(renderer(children), (child, i) => (\n <View\n key={i}\n style={i !== index ? styles.none : StyleSheet.absoluteFill}\n children={child}\n />\n ))}\n </View>\n );\n};\n"]}
1
+ {"version":3,"sources":["ViewPagerWeb.tsx"],"names":["React","StyleSheet","View","defaultEnableVisibleHint","defaultLoading","defaultPageComponent","usePageRenderer","styles","create","root","overflow","position","none","display","ViewPager","props","children","enableVisibleHint","index","loading","pageComponent","pageForceRerenderKey","style","renderer","Children","map","child","i","cloneElement","absoluteFill"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AAEA,SAASC,wBAAT,EAAmCC,cAAnC,EAAmDC,oBAAnD,EAAyEC,eAAzE,QAAgG,SAAhG;AAEA,MAAMC,MAAM,GAAGN,UAAU,CAACO,MAAX,CAAkB;AAC7BC,EAAAA,IAAI,EAAE;AACF;AACAC,IAAAA,QAAQ,EAAE,MAFR;AAGFC,IAAAA,QAAQ,EAAE;AAHR,GADuB;AAM7BC,EAAAA,IAAI,EAAE;AAAEC,IAAAA,OAAO,EAAE;AAAX;AANuB,CAAlB,CAAf;AASA,eAAe,SAASC,SAAT,CAAmBC,KAAnB,EAA0C;AACrD,QAAM;AACFC,IAAAA,QADE;AAEFC,IAAAA,iBAAiB,GAAGd,wBAFlB;AAGFe,IAAAA,KAHE;AAIFC,IAAAA,OAAO,GAAGf,cAJR;AAKFgB,IAAAA,aAAa,GAAGf,oBALd;AAMFgB,IAAAA,oBANE;AAOFC,IAAAA;AAPE,MAQFP,KARJ;AAUA,QAAMQ,QAAQ,GAAGjB,eAAe,CAAC;AAC7BW,IAAAA,iBAD6B;AAE7BC,IAAAA,KAF6B;AAG7BC,IAAAA,OAH6B;AAI7BC,IAAAA,aAJ6B;AAK7BC,IAAAA;AAL6B,GAAD,CAAhC;AAQA,sBACI,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE,CAACd,MAAM,CAACE,IAAR,EAAca,KAAd;AAAb,KACKtB,KAAK,CAACwB,QAAN,CAAeC,GAAf,CAAmBF,QAAQ,CAACP,QAAD,CAA3B,EAAuC,CAACU,KAAD,EAAQC,CAAR,kBACpC3B,KAAK,CAAC4B,YAAN,CAAmBF,KAAnB,EAAgD;AAC5CJ,IAAAA,KAAK,EAAEK,CAAC,KAAKT,KAAN,GAAcX,MAAM,CAACK,IAArB,GAA4BX,UAAU,CAAC4B;AADF,GAAhD,CADH,CADL,CADJ;AASH;AAAA","sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport type ViewPagerProps from './ViewPagerProps';\nimport { defaultEnableVisibleHint, defaultLoading, defaultPageComponent, usePageRenderer } from './utils';\n\nconst styles = StyleSheet.create({\n root: {\n // @ts-ignore\n overflow: 'auto',\n position: 'relative',\n },\n none: { display: 'none' },\n});\n\nexport default function ViewPager(props: ViewPagerProps) {\n const {\n children,\n enableVisibleHint = defaultEnableVisibleHint,\n index,\n loading = defaultLoading,\n pageComponent = defaultPageComponent,\n pageForceRerenderKey,\n style,\n } = props;\n\n const renderer = usePageRenderer({\n enableVisibleHint,\n index,\n loading,\n pageComponent,\n pageForceRerenderKey,\n });\n\n return (\n <View style={[styles.root, style]}>\n {React.Children.map(renderer(children), (child, i) =>\n React.cloneElement(child as React.ReactElement, {\n style: i !== index ? styles.none : StyleSheet.absoluteFill,\n }),\n )}\n </View>\n );\n};\n"]}
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  import type AnimatedYProps from './AnimatedYProps';
2
3
  export default function AnimatedY(props: AnimatedYProps): JSX.Element;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  import type BottomSheetProps from './BottomSheetProps';
2
3
  export default function BottomSheet(props: BottomSheetProps): JSX.Element;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  import type BottomSheetProps from './BottomSheetProps';
2
3
  export default function BottomSheet(props: BottomSheetProps): JSX.Element;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  import { BottomSheetBackdropProps } from '@gorhom/bottom-sheet';
2
3
  export default function TransparentBackdrop(props: BottomSheetBackdropProps): JSX.Element;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  import type CarouselProps from './CarouselProps';
2
3
  export default function Carousel<ItemT>(props: CarouselProps<ItemT>): JSX.Element;
@@ -30,6 +30,11 @@ export default interface CarouselProps<ItemT = any> extends ComponentProps<{
30
30
  * @default 0.9
31
31
  */
32
32
  inactiveSlideScale?: number;
33
+ /**
34
+ * Web only. Value of the 'scale' transform applied to a active slide.
35
+ * @default 0.990
36
+ */
37
+ activeSlideScale?: number;
33
38
  /**
34
39
  * A number representing the index of the active slide.
35
40
  */
@@ -57,5 +62,20 @@ export default interface CarouselProps<ItemT = any> extends ComponentProps<{
57
62
  * @default 1
58
63
  */
59
64
  slidesToShow?: number;
65
+ /**
66
+ * Web only. Enable items to display at the center.
67
+ * @default true
68
+ */
69
+ centerMode?: boolean;
70
+ /**
71
+ * Web only. Enable arrows to display.
72
+ * @default true
73
+ */
74
+ arrows?: boolean;
75
+ /**
76
+ * Web only. Style of arrows
77
+ * @default true
78
+ */
79
+ arrowsStyle?: object;
60
80
  }> {
61
81
  }
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  import type CarouselProps from './CarouselProps';
2
3
  export default function Carousel<ItemT>(props: CarouselProps<ItemT>): JSX.Element;
@@ -2,4 +2,5 @@ export declare const defaultAutoplay = false;
2
2
  export declare const defaultAutoplayInterval = 3000;
3
3
  export declare const defaultInactiveSlideOpacity = 0.7;
4
4
  export declare const defaultInactiveSlideScale = 0.9;
5
+ export declare const defaultActiveSlideScale = 0.99;
5
6
  export declare const defaultInfinite = false;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  import type DateTimePickerProps from './DateTimePickerProps';
2
3
  export default function DateTimePicker(props: DateTimePickerProps): JSX.Element;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  interface YearPickerProps {
2
3
  date: Date;
3
4
  locale?: string;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  import type StatusBarProviderProps from './StatusBarProviderProps';
2
3
  export default function StatusBarProvider(props: StatusBarProviderProps): JSX.Element;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  import type ViewPagerProps from './ViewPagerProps';
2
3
  export default function ViewPager(props: ViewPagerProps): JSX.Element;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  import type ViewPagerProps from './ViewPagerProps';
2
3
  export default function ViewPager(props: ViewPagerProps): JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fountain-ui/lab",
3
- "version": "1.9.2",
3
+ "version": "1.12.0",
4
4
  "private": false,
5
5
  "author": "Fountain-UI Team",
6
6
  "description": "Incubator for Fountain-UI React components.",
@@ -15,14 +15,15 @@
15
15
  "prepare": "bob build"
16
16
  },
17
17
  "dependencies": {
18
- "@emotion/react": "^11.1.1",
18
+ "@emotion/react": "^11.4.1",
19
19
  "@emotion/styled": "^11.0.0",
20
- "@fountain-ui/utils": "^1.0.1",
21
- "react-native-calendars": "^1.830.0"
20
+ "@fountain-ui/icons": "^1.11.0",
21
+ "@fountain-ui/utils": "^1.1.0",
22
+ "react-native-calendars": "1.1249.0"
22
23
  },
23
24
  "peerDependencies": {
24
25
  "@fountain-ui/core": "^1.0.0-alpha.4",
25
- "@gorhom/bottom-sheet": "^3.0.0",
26
+ "@gorhom/bottom-sheet": "^3.6.6",
26
27
  "@react-native-community/viewpager": "> 4.2.x",
27
28
  "date-fns": "^2.0.0",
28
29
  "react": "^16.8.0 || ^17.0.0",
@@ -52,15 +53,15 @@
52
53
  }
53
54
  },
54
55
  "devDependencies": {
55
- "@fountain-ui/core": "^1.7.0",
56
- "@gorhom/bottom-sheet": "^3.2.0",
56
+ "@fountain-ui/core": "^1.10.0",
57
+ "@gorhom/bottom-sheet": "3.6.6",
57
58
  "@react-native-community/viewpager": "^4.2.2",
58
- "@types/react-native-snap-carousel": "^3.8.2",
59
- "@types/react-slick": "^0.23.4",
60
- "date-fns": "^2.16.1",
61
- "react-native-safe-area-context": "^3.1.9",
59
+ "@types/react-native-snap-carousel": "^3.8.4",
60
+ "@types/react-slick": "^0.23.5",
61
+ "date-fns": "^2.23.0",
62
+ "react-native-safe-area-context": "^3.3.2",
62
63
  "react-native-snap-carousel": "^3.9.1",
63
- "react-slick": "^0.27.13"
64
+ "react-slick": "^0.28.1"
64
65
  },
65
66
  "react-native-builder-bob": {
66
67
  "source": "./src",
@@ -84,5 +85,5 @@
84
85
  "publishConfig": {
85
86
  "access": "public"
86
87
  },
87
- "gitHead": "126176b9a981a11483c92d9fec03f0017e297e7d"
88
+ "gitHead": "38c89201acebdf0642b1547b66af8e7f970f55e2"
88
89
  }
@@ -7,66 +7,90 @@ export default interface CarouselProps<ItemT = any> extends ComponentProps<{
7
7
  * If `true`, enable autoplay.
8
8
  * @default false
9
9
  */
10
- autoplay?: boolean,
10
+ autoplay?: boolean;
11
11
 
12
12
  /**
13
13
  * Delay in ms until navigating to the next item.
14
14
  * @default 3000
15
15
  */
16
- autoplayInterval?: number,
16
+ autoplayInterval?: number;
17
17
 
18
18
  /**
19
19
  * Padding for center slide. If specified, `slidesToScroll` and `slidesToShow` set to 1.
20
20
  */
21
- centerSlidePadding?: number,
21
+ centerSlidePadding?: number;
22
22
 
23
23
  /**
24
24
  * Delay in ms until navigating to the next item.
25
25
  */
26
- data: ReadonlyArray<ItemT>,
26
+ data: ReadonlyArray<ItemT>;
27
27
 
28
28
  /**
29
29
  * Value of the opacity effect applied to inactive slides.
30
30
  * @default 0.7
31
31
  */
32
- inactiveSlideOpacity?: number,
32
+ inactiveSlideOpacity?: number;
33
33
 
34
34
  /**
35
35
  * Value of the 'scale' transform applied to inactive slides.
36
36
  * @default 0.9
37
37
  */
38
- inactiveSlideScale?: number,
38
+ inactiveSlideScale?: number;
39
+
40
+ /**
41
+ * Web only. Value of the 'scale' transform applied to a active slide.
42
+ * @default 0.990
43
+ */
44
+ activeSlideScale?: number;
39
45
 
40
46
  /**
41
47
  * A number representing the index of the active slide.
42
48
  */
43
- index: number,
49
+ index: number;
44
50
 
45
51
  /**
46
52
  * Enable infinite loop mode.
47
53
  * @default false
48
54
  */
49
- infinite?: boolean,
55
+ infinite?: boolean;
50
56
 
51
57
  /**
52
58
  * Callback fired when an index is changed.
53
59
  */
54
- onChange?: (newIndex: number) => void,
60
+ onChange?: (newIndex: number) => void;
55
61
 
56
62
  /**
57
63
  * Takes an item from data and renders it into the list.
58
64
  */
59
- renderItem: (info: Omit<ListRenderItemInfo<ItemT>, 'separators'>) => React.ReactElement | null,
65
+ renderItem: (info: Omit<ListRenderItemInfo<ItemT>, 'separators'>) => React.ReactElement | null;
60
66
 
61
67
  /**
62
68
  * Web only. Number of slides to scroll at once.
63
69
  * @default 1
64
70
  */
65
- slidesToScroll?: number,
71
+ slidesToScroll?: number;
66
72
 
67
73
  /**
68
74
  * Web only. Number of slides to display.
69
75
  * @default 1
70
76
  */
71
- slidesToShow?: number,
72
- }> {}
77
+ slidesToShow?: number;
78
+
79
+ /**
80
+ * Web only. Enable items to display at the center.
81
+ * @default true
82
+ */
83
+ centerMode?: boolean;
84
+
85
+ /**
86
+ * Web only. Enable arrows to display.
87
+ * @default true
88
+ */
89
+ arrows?: boolean;
90
+
91
+ /**
92
+ * Web only. Style of arrows
93
+ * @default true
94
+ */
95
+ arrowsStyle?: object;
96
+ }> {}
@@ -1,6 +1,8 @@
1
1
  import React from 'react';
2
+ import { View } from 'react-native';
2
3
  import Slick, { Settings } from 'react-slick';
3
4
  import styled from '@emotion/styled';
5
+ import { ChevronLeft, ChevronRight } from '@fountain-ui/icons';
4
6
  import { mapIndexed } from '@fountain-ui/utils';
5
7
  import type CarouselProps from './CarouselProps';
6
8
  import {
@@ -8,11 +10,11 @@ import {
8
10
  defaultAutoplayInterval,
9
11
  defaultInactiveSlideOpacity,
10
12
  defaultInactiveSlideScale,
13
+ defaultActiveSlideScale,
11
14
  defaultInfinite,
12
15
  } from './utils';
13
16
 
14
17
  const baseSettings: Settings = {
15
- arrows: false,
16
18
  dots: false,
17
19
  draggable: true,
18
20
  lazyLoad: 'ondemand',
@@ -27,66 +29,47 @@ const baseSettings: Settings = {
27
29
  const noop = () => void 0;
28
30
 
29
31
  const StyledContainer: any = styled.div((props: any) => ({
30
- ['& .slick-slider']: {
31
- display: 'block',
32
- position: 'relative',
33
- userSelect: 'none',
34
- },
35
- ['& .slick-list']: {
36
- display: 'block',
37
- position: 'relative',
38
- overflow: 'hidden',
39
- margin: 0,
40
- padding: 0,
41
- ['&:focus']: {
42
- outline: 'none',
43
- },
44
- ['&.dragging']: {
45
- cursor: 'pointer',
46
- },
47
- },
48
- ['& .slick-slider .slick-track, &.slick-slider .slick-list']: {
49
- transform: 'translate3d(0, 0, 0)',
50
- },
51
32
  ['& .slick-track']: {
52
- display: 'block',
53
- position: 'relative',
54
- top: 0,
55
- left: 0,
56
- ['&:before, &:after']: {
57
- display: 'table',
58
- content: '\'\'',
59
- },
60
- ['&:after']: {
61
- clear: 'both',
62
- },
33
+ display: 'flex',
63
34
  },
64
- ['& .slick-slide']: {
65
- display: 'none',
66
- float: 'left',
67
- height: '100%',
68
- minHeight: 1,
69
- ['& > div']: {
70
- display: 'flex',
71
- transform: `scale(${props.inactiveSlideScale})`,
72
- transition: 'transform .5s',
73
- opacity: props.inactiveSlideOpacity,
74
- },
35
+ ['& .slick-slide > div']: {
36
+ display: 'flex',
37
+ opacity: 0.2,
38
+ transform: `scale(${props.inactiveSlideScale})`,
39
+ transition: 'transform .5s',
75
40
  },
76
- ['& .slick-current > div']: {
77
- transform: 'none',
41
+ [`& .slick-active.slick-current > div`]: {
42
+ transform: `scale(${props.activeSlideScale})`,
78
43
  opacity: 1,
79
44
  },
80
- ['& .slick-initialized .slick-slide']: {
81
- display: 'block',
82
- },
45
+ ...props.arrowsStyle,
83
46
  }));
84
47
 
48
+ interface ArrowContainerProps {
49
+ children: React.ReactElement;
50
+ }
51
+
52
+ const ArrowContainer = ({ children }: ArrowContainerProps) => (
53
+ <View
54
+ style={{
55
+ height: '100%',
56
+ justifyContent: 'center',
57
+ alignItems: 'center',
58
+ backgroundColor: 'white',
59
+ borderRadius: 16,
60
+ }}
61
+ >
62
+ {children}
63
+ </View>
64
+ );
65
+
85
66
  export default function Carousel<ItemT>(props: CarouselProps<ItemT>) {
86
67
  const {
68
+ activeSlideScale = defaultActiveSlideScale,
87
69
  autoplay = defaultAutoplay,
88
70
  autoplayInterval = defaultAutoplayInterval,
89
- centerSlidePadding,
71
+ centerMode = true,
72
+ centerSlidePadding = 0,
90
73
  data,
91
74
  inactiveSlideOpacity = defaultInactiveSlideOpacity,
92
75
  inactiveSlideScale = defaultInactiveSlideScale,
@@ -96,6 +79,8 @@ export default function Carousel<ItemT>(props: CarouselProps<ItemT>) {
96
79
  renderItem,
97
80
  slidesToScroll = 1,
98
81
  slidesToShow = 1,
82
+ arrows = false,
83
+ arrowsStyle = {},
99
84
  } = props;
100
85
 
101
86
  const slickRef = React.useRef<Slick | null>(null);
@@ -128,8 +113,10 @@ export default function Carousel<ItemT>(props: CarouselProps<ItemT>) {
128
113
 
129
114
  return (
130
115
  <StyledContainer
116
+ activeSlideScale={activeSlideScale}
131
117
  inactiveSlideOpacity={inactiveSlideOpacity}
132
118
  inactiveSlideScale={inactiveSlideScale}
119
+ arrowsStyle={arrowsStyle}
133
120
  >
134
121
  <Slick
135
122
  {...baseSettings}
@@ -137,13 +124,25 @@ export default function Carousel<ItemT>(props: CarouselProps<ItemT>) {
137
124
  autoplay={autoplay}
138
125
  autoplaySpeed={autoplayInterval}
139
126
  beforeChange={handleBeforeChange}
140
- centerMode={centerSlidePadding !== undefined}
141
- centerPadding={centerSlidePadding !== undefined ? `${centerSlidePadding}px` : undefined}
127
+ centerMode={centerMode}
128
+ centerPadding={`${centerSlidePadding}px`}
142
129
  infinite={infinite}
143
130
  initialSlide={index}
144
131
  ref={slickRef}
145
- slidesToScroll={centerSlidePadding !== undefined ? 1 : slidesToScroll}
146
- slidesToShow={centerSlidePadding !== undefined ? 1 : slidesToShow}
132
+ slidesToScroll={slidesToScroll}
133
+ slidesToShow={slidesToShow}
134
+ arrows={arrows}
135
+ prevArrow={(
136
+ // If root component is not a div, there's no arrow class.
137
+ <div>
138
+ <ArrowContainer children={<ChevronLeft fill={'#767676'}/>}/>
139
+ </div>
140
+ )}
141
+ nextArrow={(
142
+ <div>
143
+ <ArrowContainer children={<ChevronRight fill={'#767676'}/>}/>
144
+ </div>
145
+ )}
147
146
  >
148
147
  {mapIndexed((item, index) => {
149
148
  const child = renderItem({ item, index });
@@ -6,4 +6,6 @@ export const defaultInactiveSlideOpacity = 0.7;
6
6
 
7
7
  export const defaultInactiveSlideScale = 0.9;
8
8
 
9
- export const defaultInfinite = false;
9
+ export const defaultActiveSlideScale = 0.990;
10
+
11
+ export const defaultInfinite = false;
@@ -60,7 +60,7 @@ export default function StatusBarProvider(props: StatusBarProviderProps) {
60
60
  position: 'absolute',
61
61
  right: 0,
62
62
  top: 0,
63
- zIndex: 10,
63
+ zIndex: theme.zIndex.statusBar,
64
64
  },
65
65
  ]);
66
66