@rific/scroll-view 0.2.0 → 0.4.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 (35) hide show
  1. package/README.md +2 -0
  2. package/dist/index.d.mts +23 -17
  3. package/dist/index.d.ts +23 -17
  4. package/dist/index.js +720 -1960
  5. package/dist/index.mjs +697 -1939
  6. package/package.json +10 -10
  7. package/src/CustomList.tsx +32 -8
  8. package/src/FlatList.tsx +102 -20
  9. package/src/PullSearch.tsx +4 -3
  10. package/src/ScrollView.tsx +28 -8
  11. package/src/ScrollViewContext.ts +17 -4
  12. package/src/ScrollViewHeader.tsx +34 -31
  13. package/src/ScrollViewProvider.tsx +22 -6
  14. package/src/SectionList.tsx +31 -10
  15. package/src/internal/useScrollHandler.ts +19 -21
  16. package/src/internal/useScrollHandlerJS.ts +141 -0
  17. package/src/internal/useScrollList.ts +16 -11
  18. package/src/redux/scrollViewSlice.ts +19 -11
  19. package/src/useScrollInit.ts +200 -19
  20. package/src/__mocks__/auto-paper.ts +0 -9
  21. package/src/__mocks__/flash-list.ts +0 -20
  22. package/src/__mocks__/react-native-gesture-handler.ts +0 -13
  23. package/src/__mocks__/react-native-keyboard-controller.ts +0 -11
  24. package/src/__mocks__/react-native-paper.ts +0 -22
  25. package/src/__mocks__/react-native-reanimated.ts +0 -30
  26. package/src/__mocks__/react-native-safe-area-context.ts +0 -2
  27. package/src/__mocks__/react-native.ts +0 -30
  28. package/src/__tests__/CustomList.test.tsx +0 -61
  29. package/src/__tests__/FlatList.test.tsx +0 -52
  30. package/src/__tests__/PullSearch.test.tsx +0 -38
  31. package/src/__tests__/ScrollView.test.tsx +0 -23
  32. package/src/__tests__/ScrollViewHeader.test.tsx +0 -28
  33. package/src/__tests__/ScrollViewProvider.test.tsx +0 -65
  34. package/src/__tests__/SectionList.test.tsx +0 -88
  35. package/src/out.txt +0 -61
@@ -1,65 +0,0 @@
1
- import { act, render } from '@testing-library/react'
2
- import React, { useContext } from 'react'
3
-
4
- import { ScrollViewContext } from '../ScrollViewContext'
5
- import { ScrollViewProvider } from '../ScrollViewProvider'
6
- import { useScrollView } from '../useScrollView'
7
-
8
- const ContextReader = ({ onRead }: { onRead: (v: ReturnType<typeof useScrollView>) => void }) => {
9
- const value = useScrollView()
10
- onRead(value)
11
- return null
12
- }
13
-
14
- describe('ScrollViewProvider', () => {
15
- it('renders without crashing', () => {
16
- render(
17
- <ScrollViewProvider>
18
- <></>
19
- </ScrollViewProvider>
20
- )
21
- })
22
-
23
- it('provides default context values', () => {
24
- let capturedValue: ReturnType<typeof useScrollView> | undefined
25
- render(
26
- <ScrollViewProvider>
27
- <ContextReader onRead={(v) => { capturedValue = v }} />
28
- </ScrollViewProvider>
29
- )
30
- expect(capturedValue?.progress).toBeNull()
31
- expect(capturedValue?.progressing).toBe(false)
32
- })
33
-
34
- it('accepts headerFixed and footerFixed props', () => {
35
- let capturedCtx: { headerFixed: boolean; footerFixed: boolean } | undefined
36
- const Reader = () => {
37
- const ctx = useContext(ScrollViewContext)
38
- capturedCtx = { headerFixed: ctx.headerFixed, footerFixed: ctx.footerFixed }
39
- return null
40
- }
41
- render(
42
- <ScrollViewProvider headerFixed footerFixed>
43
- <Reader />
44
- </ScrollViewProvider>
45
- )
46
- expect(capturedCtx?.headerFixed).toBe(true)
47
- expect(capturedCtx?.footerFixed).toBe(true)
48
- })
49
-
50
- it('setProgress updates progress value', () => {
51
- let capturedValue: ReturnType<typeof useScrollView> | undefined
52
- const { rerender } = render(
53
- <ScrollViewProvider>
54
- <ContextReader onRead={(v) => { capturedValue = v }} />
55
- </ScrollViewProvider>
56
- )
57
- act(() => { capturedValue?.setProgress(0.5) })
58
- rerender(
59
- <ScrollViewProvider>
60
- <ContextReader onRead={(v) => { capturedValue = v }} />
61
- </ScrollViewProvider>
62
- )
63
- expect(capturedValue?.progress).toBe(0.5)
64
- })
65
- })
@@ -1,88 +0,0 @@
1
- import { render } from '@testing-library/react'
2
- import React from 'react'
3
- import { SectionList as RNSectionList } from 'react-native'
4
-
5
- import { SectionList } from '../SectionList'
6
- import { ScrollViewProvider } from '../ScrollViewProvider'
7
-
8
- const wrapper = ({ children }: { children: React.ReactNode }) => <ScrollViewProvider>{children}</ScrollViewProvider>
9
-
10
- type Section = { title: string; data: string[] }
11
- const sections: Section[] = [
12
- { title: 'Fruits', data: ['Apple', 'Banana'] },
13
- { title: 'Veggies', data: ['Carrot'] }
14
- ]
15
-
16
- describe('SectionList', () => {
17
- beforeEach(() => {
18
- ;(RNSectionList as jest.Mock).mockClear()
19
- })
20
-
21
- it('renders without crashing', () => {
22
- render(
23
- <SectionList sections={sections} renderItem={({ item }) => <>{item}</>} keyExtractor={(item) => item} />,
24
- { wrapper }
25
- )
26
- })
27
-
28
- it('renders with renderSectionHeader', () => {
29
- render(
30
- <SectionList
31
- sections={sections}
32
- renderItem={({ item }) => <>{item}</>}
33
- keyExtractor={(item) => item}
34
- renderSectionHeader={({ section }) => <>{(section as Section).title}</>}
35
- />,
36
- { wrapper }
37
- )
38
- })
39
-
40
- it('disables native stickySectionHeadersEnabled when custom renderSectionHeader is provided', () => {
41
- render(
42
- <SectionList
43
- sections={sections}
44
- renderItem={({ item }) => <>{item}</>}
45
- keyExtractor={(item) => item}
46
- renderSectionHeader={({ section }) => <>{(section as Section).title}</>}
47
- />,
48
- { wrapper }
49
- )
50
- const calls = (RNSectionList as jest.Mock).mock.calls
51
- const lastProps = calls[calls.length - 1]?.[0]
52
- expect(lastProps?.stickySectionHeadersEnabled).toBe(false)
53
- })
54
-
55
- it('keeps native sticky when no renderSectionHeader provided', () => {
56
- render(
57
- <SectionList sections={sections} renderItem={({ item }) => <>{item}</>} keyExtractor={(item) => item} />,
58
- { wrapper }
59
- )
60
- const calls = (RNSectionList as jest.Mock).mock.calls
61
- const lastProps = calls[calls.length - 1]?.[0]
62
- expect(lastProps?.stickySectionHeadersEnabled).toBe(false)
63
- })
64
-
65
- it('renders with pullSearchHeight', () => {
66
- render(
67
- <SectionList
68
- sections={sections}
69
- renderItem={({ item }) => <>{item}</>}
70
- keyExtractor={(item) => item}
71
- pullSearchHeight={60}
72
- />,
73
- { wrapper }
74
- )
75
- })
76
-
77
- it('renders with renderFilters', () => {
78
- render(
79
- <SectionList
80
- sections={sections}
81
- renderItem={({ item }) => <>{item}</>}
82
- keyExtractor={(item) => item}
83
- renderFilters={<></>}
84
- />,
85
- { wrapper }
86
- )
87
- })
88
- })
package/src/out.txt DELETED
@@ -1,61 +0,0 @@
1
- jay~/Developer/React-Native-Scroll-View% yalc publish && yalc push
2
- Running prepublishOnly script: npm run build
3
-
4
- > @rific/scroll-view@0.1.0 prepublishOnly
5
- > npm run build
6
-
7
-
8
- > @rific/scroll-view@0.1.0 build
9
- > tsup src/index.ts --format cjs,esm --dts --clean
10
-
11
- CLI Building entry: src/index.ts
12
- CLI Using tsconfig: tsconfig.json
13
- CLI tsup v8.5.1
14
- CLI Target: es2020
15
- CLI Cleaning output folder
16
- CJS Build start
17
- ESM Build start
18
- CJS dist/index.js 103.45 KB
19
- CJS ⚡️ Build success in 78ms
20
- ESM dist/index.mjs 95.24 KB
21
- ESM ⚡️ Build success in 78ms
22
- DTS Build start
23
- src/ScrollView.tsx(48,49): error TS2339: Property 'scrollTo' does not exist on type 'ScrollResponderMixin'.
24
-
25
- Error: error occurred in dts build
26
- at Worker.<anonymous> (/Users/jay/Developer/React-Native-Scroll-View/node_modules/tsup/dist/index.js:1545:26)
27
- at Worker.emit (node:events:509:20)
28
- at MessagePort.<anonymous> (node:internal/worker:333:53)
29
- at [nodejs.internal.kHybridDispatch] (node:internal/event_target:843:20)
30
- at MessagePort.<anonymous> (node:internal/per_context/messageport:23:28)
31
- DTS Build error
32
- yalc publish
33
-
34
- Publish package in yalc local repo
35
-
36
- Options:
37
- --version Show version number [boolean]
38
- --help Show help [boolean]
39
- --sig [boolean] [default: false]
40
- --dev-mod [boolean] [default: true]
41
- --workspace-resolve [default: true]
42
-
43
- Error: Command failed: npm run prepublishOnly
44
- at genericNodeError (node:internal/errors:998:15)
45
- at wrappedFn (node:internal/errors:543:14)
46
- at checkExecSyncError (node:child_process:925:11)
47
- at Object.execSync (node:child_process:997:15)
48
- at runPmScript (/opt/homebrew/lib/node_modules/yalc/src/publish.js:75:41)
49
- at Array.forEach (<anonymous>)
50
- at /opt/homebrew/lib/node_modules/yalc/src/publish.js:90:28
51
- at step (/opt/homebrew/lib/node_modules/yalc/src/publish.js:44:23)
52
- at Object.next (/opt/homebrew/lib/node_modules/yalc/src/publish.js:25:53)
53
- at /opt/homebrew/lib/node_modules/yalc/src/publish.js:19:71 {
54
- status: 1,
55
- signal: null,
56
- output: [ null, null, null ],
57
- pid: 71344,
58
- stdout: null,
59
- stderr: null
60
- }
61
- jay~/Developer/React-Native-Scroll-View%