@egjs/react-flicking 4.16.0-beta.1 → 4.16.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 (52) hide show
  1. package/.env +1 -0
  2. package/package.json +3 -3
  3. package/dev/archive/App.css +0 -32
  4. package/dev/archive/App.tsx +0 -52
  5. package/dev/archive/DebugPage.css +0 -21
  6. package/dev/archive/DebugPage.tsx +0 -93
  7. package/dev/archive/Header.tsx +0 -52
  8. package/dev/archive/StatePage.css +0 -21
  9. package/dev/archive/StatePage.tsx +0 -107
  10. package/dev/archive/css/align.css +0 -79
  11. package/dev/archive/css/bound.css +0 -88
  12. package/dev/archive/css/common.css +0 -76
  13. package/dev/archive/css/cross.css +0 -21
  14. package/dev/archive/css/features.css +0 -49
  15. package/dev/archive/css/gap.css +0 -13
  16. package/dev/archive/css/highlight.css +0 -96
  17. package/dev/archive/css/infinite.css +0 -35
  18. package/dev/archive/css/parallax.css +0 -3
  19. package/dev/archive/css/plugins.css +0 -46
  20. package/dev/archive/css/progress.css +0 -16
  21. package/dev/archive/css/variable-size.css +0 -15
  22. package/dev/archive/features/Align.tsx +0 -149
  23. package/dev/archive/features/Bound.tsx +0 -83
  24. package/dev/archive/features/CrossFlicking.tsx +0 -74
  25. package/dev/archive/features/FreeScroll.tsx +0 -66
  26. package/dev/archive/features/InfiniteFlicking.tsx +0 -192
  27. package/dev/archive/features/PlaceHolderItem.tsx +0 -36
  28. package/dev/archive/features/Progress.tsx +0 -241
  29. package/dev/archive/features/PropChange.tsx +0 -171
  30. package/dev/archive/features/Snap.tsx +0 -95
  31. package/dev/archive/features/VariableSize.tsx +0 -42
  32. package/dev/archive/features/Virtual.tsx +0 -45
  33. package/dev/archive/plugins/Arrow.tsx +0 -25
  34. package/dev/archive/plugins/AutoPlay.tsx +0 -70
  35. package/dev/archive/plugins/Fade.tsx +0 -69
  36. package/dev/archive/plugins/Parallax.tsx +0 -70
  37. package/dev/archive/utils.ts +0 -3
  38. package/dev/basic-sample/App.tsx +0 -36
  39. package/dev/basic-sample/index.html +0 -12
  40. package/dev/basic-sample/main.tsx +0 -10
  41. package/dev/index.html +0 -18
  42. package/dev/plugin-check/App.tsx +0 -341
  43. package/dev/plugin-check/index.html +0 -15
  44. package/dev/plugin-check/main.tsx +0 -6
  45. package/dev/scratch/App.tsx +0 -34
  46. package/dev/scratch/index.html +0 -15
  47. package/dev/scratch/main.tsx +0 -13
  48. package/dev/tsconfig.json +0 -12
  49. package/dev/vite-env.d.ts +0 -3
  50. package/tsconfig.json +0 -23
  51. package/vite.config.ts +0 -38
  52. package/vite.dev.config.ts +0 -58
@@ -1,192 +0,0 @@
1
- import Flicking from "@dev/react-flicking";
2
- import * as React from "react";
3
- import "../css/infinite.css";
4
- import { insertCode } from "../utils";
5
- import PlaceHolderItem from "./PlaceHolderItem";
6
-
7
- export default class InfiniteFlicking extends React.Component<
8
- {},
9
- { list0: number[]; list1: number[]; list2: number[] }
10
- > {
11
- public container?: HTMLElement;
12
- public state = {
13
- list0: [0, 1, 2, 3, 4],
14
- list1: [0, 1, 2, 3, 4],
15
- list2: [0, 1, 2, 3, 4]
16
- };
17
-
18
- public render() {
19
- return (
20
- <div id="infinite" className="container">
21
- <h1>Infinite Flicking</h1>
22
- <h2>Append &amp; Prepend panel dynamically</h2>
23
- <ul className="extra">
24
- <li>You can dynamically add panels to the flicking.</li>
25
- <li>The panel's indexes are zero-based integer.</li>
26
- <li>Note: The number displayed above each panel is not panel's index.</li>
27
- </ul>
28
- <Flicking className="flicking flicking0" gap={10}>
29
- {this.state.list0.map(num => {
30
- return (
31
- <div key={num} className={`infinite infinite${Math.abs(num) % 5}`}>
32
- {num}
33
- </div>
34
- );
35
- })}
36
- </Flicking>
37
- <div className="buttons">
38
- <button
39
- id="prepend"
40
- onClick={_e =>
41
- this.setState(state => {
42
- const start = state.list0[0] || 0;
43
- return { list0: [start - 2, start - 1, ...state.list0] };
44
- })
45
- }
46
- >
47
- {" "}
48
- Prepend
49
- </button>
50
- <button
51
- id="append"
52
- onClick={_e =>
53
- this.setState(state => {
54
- const end = state.list0[state.list0.length - 1] || 0;
55
- return { list0: [...state.list0, end + 1, end + 2] };
56
- })
57
- }
58
- >
59
- Append
60
- </button>
61
- </div>
62
- <pre>
63
- <code className="hljs html" data-script="flicking0"></code>
64
- </pre>
65
- <h2>infinite: true &amp; needPanel event</h2>
66
- <ul className="extra">
67
- <li>
68
- Enabling the infinite option can make <strong>needPanel</strong> event to be triggered when more panels at
69
- moving direction should be fetched within <strong>infiniteThreshold</strong> value.
70
- </li>
71
- </ul>
72
- <Flicking
73
- className="flicking flicking1"
74
- gap={10}
75
- needPanelThreshold={50}
76
- onNeedPanel={e => {
77
- if (e.direction !== "NEXT") return;
78
-
79
- this.setState(state => {
80
- const end = state.list1[state.list1.length - 1] || 0;
81
-
82
- return { list1: [...state.list1, end + 1, end + 2] };
83
- });
84
- }}
85
- >
86
- {this.state.list1.map(num => {
87
- return (
88
- <div key={num} className={`infinite infinite${Math.abs(num) % 5}`}>
89
- {num}
90
- </div>
91
- );
92
- })}
93
- </Flicking>
94
- <pre>
95
- <code className="hljs html" data-script="flicking1"></code>
96
- </pre>
97
- <h2>infinite: true &amp; placeholder</h2>
98
- <ul className="extra">
99
- <li>
100
- You can make continuous carousel UI with asynchronous data by adding placeholder panel first, then update
101
- panel with fetched data later.
102
- </li>
103
- </ul>
104
- <Flicking
105
- className="flicking flicking2"
106
- gap={10}
107
- moveType={"freeScroll"}
108
- onNeedPanel={e => {
109
- if (e.direction !== "NEXT") return;
110
-
111
- this.setState(state => {
112
- const end = state.list2[state.list2.length - 1] || 0;
113
-
114
- return { list2: [...state.list2, end + 1, end + 2] };
115
- });
116
- }}
117
- >
118
- {this.state.list2.map(num => {
119
- return <PlaceHolderItem key={num} num={num} />;
120
- })}
121
- </Flicking>
122
- <pre>
123
- <code className="hljs html" data-script="flicking2"></code>
124
- </pre>
125
- </div>
126
- );
127
- }
128
-
129
- public componentDidMount() {
130
- insertCode(
131
- "infinite",
132
- 0,
133
- `
134
- <Flicking className="flicking flicking0" gap={10}>
135
- {this.state.list0.map(num => {
136
- return <div key={num} className={"infinite infinite" + Math.abs(num) % 5}>{num}</div>;
137
- })}
138
- </Flicking>
139
- <div className="buttons">
140
- <button id="prepend" onClick={e => this.setState(state => {
141
- const start = state.list0[0] || 0;
142
- return { list0: [start - 2, start - 1, ...state.list0] };
143
- })}> Prepend</button>
144
- <button id="append" onClick={e => this.setState(state => {
145
- const end = state.list0[state.list0.length - 1] || 0;
146
- return { list0: [...state.list0, end + 1, end + 2] };
147
- })}>Append</button>
148
- </div>
149
- `
150
- );
151
- insertCode(
152
- "infinite",
153
- 1,
154
- `
155
- <Flicking
156
- className="flicking flicking1" gap={10} infiniteThreshold={50}
157
- onNeedPanel={() => {
158
- this.setState(state => {
159
- const end = state.list1[state.list1.length - 1] || 0;
160
-
161
- return { list1: [...state.list1, end + 1, end + 2] };
162
- });
163
- }}
164
- >
165
- {this.state.list1.map(num => {
166
- return <div key={num} className={"infinite infinite" + Math.abs(num) % 5}>{num}</div>;
167
- })}
168
- </Flicking>
169
- `
170
- );
171
- insertCode(
172
- "infinite",
173
- 2,
174
- `
175
- <Flicking
176
- className="flicking flicking2" gap={10} moveType={"freeScroll"}
177
- onNeedPanel={() => {
178
- this.setState(state => {
179
- const end = state.list2[state.list2.length - 1] || 0;
180
-
181
- return { list2: [...state.list2, end + 1, end + 2] };
182
- });
183
- }}
184
- >
185
- {this.state.list2.map(num => {
186
- return <PlaceHolderItem key={num} num={num} />;
187
- })}
188
- </Flicking>
189
- `
190
- );
191
- }
192
- }
@@ -1,36 +0,0 @@
1
- import * as React from "react";
2
-
3
- class PlaceHolderItem extends React.Component<{ num: number; domRef: React.Ref<HTMLDivElement> }, { loaded: boolean }> {
4
- public state = {
5
- loaded: false
6
- };
7
-
8
- private _timer: number = -1;
9
-
10
- public render() {
11
- const num = this.props.num;
12
- const loaded = this.state.loaded;
13
- return (
14
- <div
15
- ref={this.props.domRef}
16
- className={`infinite infinite${Math.abs(num) % 5} ${loaded ? "" : "placeholder"} flicking-panel`}
17
- >
18
- {num}
19
- </div>
20
- );
21
- }
22
-
23
- public componentDidMount() {
24
- this._timer = window.setTimeout(() => {
25
- this.setState({ loaded: true });
26
- }, 1500);
27
- }
28
-
29
- public componentWillUnmount() {
30
- clearTimeout(this._timer);
31
- }
32
- }
33
-
34
- export default React.forwardRef<HTMLDivElement, { num: number }>((props, ref) => (
35
- <PlaceHolderItem domRef={ref} {...props} />
36
- ));
@@ -1,241 +0,0 @@
1
- import Flicking from "@dev/react-flicking";
2
- import * as React from "react";
3
- import { insertCode } from "../utils";
4
- import "../css/progress.css";
5
-
6
- export default class Progress extends React.Component<{}> {
7
- private thumb: HTMLElement;
8
- private flicking1: Flicking;
9
- private flicking2: Flicking;
10
- private flicking3: Flicking;
11
- public render() {
12
- return (
13
- <div id="progress" className="container">
14
- <h1>e.progress</h1>
15
- <ul className="extra">
16
- <li>Indicates the overall progress of the Flicking.</li>
17
- </ul>
18
- <Flicking
19
- className="flicking flicking0"
20
- gap={10}
21
- circular={true}
22
- moveType="snap"
23
- onMove={e => {
24
- const progress =
25
- Math.min(Math.max(-e.currentTarget.panels[0].progress, 0), e.currentTarget.panelCount - 1) /
26
- (e.currentTarget.panelCount - 1);
27
-
28
- this.thumb.style.width = `${progress * 100}%`;
29
- }}
30
- >
31
- <div className="panel panel0"></div>
32
- <div className="panel panel1"></div>
33
- <div className="panel panel2"></div>
34
- <div className="panel panel3"></div>
35
- <div className="panel panel4"></div>
36
- </Flicking>
37
- <div className="progress">
38
- <div
39
- className="thumb"
40
- ref={e => {
41
- this.thumb = e as HTMLElement;
42
- }}
43
- ></div>
44
- </div>
45
- <pre>
46
- <code className="hljs html" data-script="flicking0"></code>
47
- </pre>
48
- <h1>panel.getProgress()</h1>
49
- <ul className="extra">
50
- <li>Indicates the progress of the relative index of each panel.</li>
51
- </ul>
52
- <Flicking
53
- className="flicking flicking1"
54
- gap={10}
55
- circular={true}
56
- moveType="snap"
57
- ref={e => {
58
- this.flicking1 = e as Flicking;
59
- }}
60
- onMove={e => {
61
- const flicking = e.currentTarget;
62
-
63
- flicking.panels.forEach(panel => {
64
- panel.element.innerHTML = panel.progress.toFixed(2);
65
- });
66
- }}
67
- >
68
- <div className="panel panel0"></div>
69
- <div className="panel panel1"></div>
70
- <div className="panel panel2"></div>
71
- <div className="panel panel3"></div>
72
- <div className="panel panel4"></div>
73
- </Flicking>
74
- <div className="pagination pagination1"></div>
75
- <pre>
76
- <code className="hljs html" data-script="flicking1"></code>
77
- </pre>
78
-
79
- <h1>panel.getOutsetProgress()</h1>
80
- <ul className="extra">
81
- <li>
82
- When panel is completely invisible, outsetProgress becomes -1 at left(up), 1 at right(down) direction, and 0
83
- when panel's anchor and hanger is overlapped.
84
- </li>
85
- </ul>
86
- <Flicking
87
- className="flicking flicking2"
88
- gap={10}
89
- circular={true}
90
- moveType="snap"
91
- ref={e => {
92
- this.flicking2 = e as Flicking;
93
- }}
94
- onMove={e => {
95
- const flicking = e.currentTarget;
96
-
97
- flicking.panels.forEach(panel => {
98
- panel.element.innerHTML = panel.outsetProgress.toFixed(2);
99
- });
100
- }}
101
- >
102
- <div className="panel panel0"></div>
103
- <div className="panel panel1"></div>
104
- <div className="panel panel2"></div>
105
- <div className="panel panel3"></div>
106
- <div className="panel panel4"></div>
107
- </Flicking>
108
- <div className="pagination pagination2"></div>
109
- <pre>
110
- <code className="hljs html" data-script="flicking2"></code>
111
- </pre>
112
-
113
- <h1>panel.getVisibleRatio()</h1>
114
- <ul className="extra">
115
- <li>Indicates the percentage of areas within the viewport that the panel occupies.</li>
116
- </ul>
117
- <Flicking
118
- className="flicking flicking3"
119
- gap={10}
120
- circular={true}
121
- moveType="snap"
122
- ref={e => {
123
- this.flicking3 = e as Flicking;
124
- }}
125
- onMove={e => {
126
- const flicking = e.currentTarget;
127
-
128
- flicking.panels.forEach(panel => {
129
- panel.element.innerHTML = panel.visibleRatio.toFixed(2);
130
- });
131
- }}
132
- >
133
- <div className="panel panel0"></div>
134
- <div className="panel panel1"></div>
135
- <div className="panel panel2"></div>
136
- <div className="panel panel3"></div>
137
- <div className="panel panel4"></div>
138
- </Flicking>
139
- <div className="pagination pagination3"></div>
140
- <pre>
141
- <code className="hljs html" data-script="flicking3"></code>
142
- </pre>
143
- </div>
144
- );
145
- }
146
- public componentDidMount() {
147
- // this.flicking1.getAllPanels(true).forEach(panel => {
148
- // panel.getElement().innerHTML = panel.getVisibleRatio().toFixed(2);
149
- // });
150
- // this.flicking2.getAllPanels(true).forEach(panel => {
151
- // panel.getElement().innerHTML = panel.getOutsetProgress().toFixed(2);
152
- // });
153
- // this.flicking3.getAllPanels(true).forEach(panel => {
154
- // panel.getElement().innerHTML = panel.getVisibleRatio().toFixed(2);
155
- // });
156
- insertCode(
157
- "progress",
158
- 0,
159
- `
160
- <Flicking className="flicking flicking0"
161
- gap={10}
162
- circular={true}
163
- moveType={{type: "snap", count: 5}}
164
- onMove={e => {
165
- this.thumb.style.width = (e.progress * 100) + "%";
166
- }}>
167
- <div className="panel"></div>
168
- <div className="panel"></div>
169
- <div className="panel"></div>
170
- <div className="panel"></div>
171
- <div className="panel"></div>
172
- </Flicking>`
173
- );
174
- insertCode(
175
- "progress",
176
- 1,
177
- `
178
- <Flicking className="flicking flicking1"
179
- gap={10}
180
- circular={true}
181
- moveType={{type: "snap", count: 5}}
182
- onMove={e => {
183
- const flicking = e.currentTarget;
184
-
185
- flicking.getAllPanels(true).forEach(panel => {
186
- panel.getElement().innerHTML = panel.getProgress().toFixed(2);
187
- });
188
- }}>
189
- <div className="panel"></div>
190
- <div className="panel"></div>
191
- <div className="panel"></div>
192
- <div className="panel"></div>
193
- <div className="panel"></div>
194
- </Flicking>`
195
- );
196
- insertCode(
197
- "progress",
198
- 2,
199
- `
200
- <Flicking className="flicking flicking2"
201
- gap={10}
202
- circular={true}
203
- moveType={{type: "snap", count: 5}}
204
- onMove={e => {
205
- const flicking = e.currentTarget;
206
-
207
- flicking.getAllPanels(true).forEach(panel => {
208
- panel.getElement().innerHTML = panel.getOutsetProgress().toFixed(2);
209
- });
210
- }}>
211
- <div className="panel"></div>
212
- <div className="panel"></div>
213
- <div className="panel"></div>
214
- <div className="panel"></div>
215
- <div className="panel"></div>
216
- </Flicking>`
217
- );
218
- insertCode(
219
- "progress",
220
- 3,
221
- `
222
- <Flicking className="flicking flicking3"
223
- gap={10}
224
- circular={true}
225
- moveType={{type: "snap", count: 5}}
226
- onMove={e => {
227
- const flicking = e.currentTarget;
228
-
229
- flicking.getAllPanels(true).forEach(panel => {
230
- panel.getElement().innerHTML = panel.getVisibleRatio().toFixed(2);
231
- });
232
- }}>
233
- <div className="panel"></div>
234
- <div className="panel"></div>
235
- <div className="panel"></div>
236
- <div className="panel"></div>
237
- <div className="panel"></div>
238
- </Flicking>`
239
- );
240
- }
241
- }
@@ -1,171 +0,0 @@
1
- import Flicking from "@dev/react-flicking";
2
- import * as React from "react";
3
-
4
- export default class PropChange extends React.Component<{}, Record<string, any>> {
5
- public constructor(props) {
6
- super(props);
7
-
8
- this.state = {
9
- align: 0,
10
- panelsPerView: 5,
11
- horizontal: true,
12
- circular: true,
13
- bound: true,
14
- adaptive: true,
15
- noPanelStyleOverride: true,
16
- moveType: "snap"
17
- };
18
- }
19
-
20
- public render() {
21
- return (
22
- <div className="container">
23
- <h1>align</h1>
24
- <Flicking className="flicking" align={`${this.state.align}%`}>
25
- <div className="panel panel0"></div>
26
- <div className="panel panel1"></div>
27
- <div className="panel panel2"></div>
28
- <div className="panel panel3"></div>
29
- <div className="panel panel4"></div>
30
- </Flicking>
31
- <button
32
- onClick={() => {
33
- this.setState({ align: (this.state.align + 50) % 150 });
34
- }}
35
- >
36
- Change
37
- </button>
38
-
39
- <h1>horizontal</h1>
40
- <Flicking className="flicking" horizontal={this.state.horizontal}>
41
- <div className="panel panel0"></div>
42
- <div className="panel panel1"></div>
43
- <div className="panel panel2"></div>
44
- <div className="panel panel3"></div>
45
- <div className="panel panel4"></div>
46
- </Flicking>
47
- <button
48
- onClick={() => {
49
- this.setState({ horizontal: !this.state.horizontal });
50
- }}
51
- >
52
- Change
53
- </button>
54
-
55
- <h1>circular</h1>
56
- <Flicking className="flicking" circular={this.state.circular}>
57
- <div className="panel panel0"></div>
58
- <div className="panel panel1"></div>
59
- <div className="panel panel2"></div>
60
- <div className="panel panel3"></div>
61
- <div className="panel panel4"></div>
62
- </Flicking>
63
- <button
64
- onClick={() => {
65
- this.setState({ circular: !this.state.circular });
66
- }}
67
- >
68
- Change
69
- </button>
70
-
71
- <h1>bound</h1>
72
- <Flicking className="flicking" bound={this.state.bound}>
73
- <div className="panel panel0"></div>
74
- <div className="panel panel1"></div>
75
- <div className="panel panel2"></div>
76
- <div className="panel panel3"></div>
77
- <div className="panel panel4"></div>
78
- </Flicking>
79
- <button
80
- onClick={() => {
81
- this.setState({ bound: !this.state.bound });
82
- }}
83
- >
84
- Change
85
- </button>
86
-
87
- <h1>adaptive</h1>
88
- <Flicking className="flicking" adaptive={this.state.adaptive}>
89
- <div className="panel panel0" style={{ height: "200px" }}></div>
90
- <div className="panel panel1" style={{ height: "300px" }}></div>
91
- <div className="panel panel2" style={{ height: "400px" }}></div>
92
- <div className="panel panel3" style={{ height: "500px" }}></div>
93
- <div className="panel panel4" style={{ height: "600px" }}></div>
94
- </Flicking>
95
- <button
96
- onClick={() => {
97
- this.setState({ adaptive: !this.state.adaptive });
98
- }}
99
- >
100
- Change
101
- </button>
102
-
103
- <h1>panelsPerView</h1>
104
- <Flicking className="flicking" panelsPerView={this.state.panelsPerView}>
105
- <div className="panel panel0"></div>
106
- <div className="panel panel1"></div>
107
- <div className="panel panel2"></div>
108
- <div className="panel panel3"></div>
109
- <div className="panel panel4"></div>
110
- </Flicking>
111
- <button
112
- onClick={() => {
113
- this.setState({ panelsPerView: this.state.panelsPerView - 1 });
114
- }}
115
- >
116
- Change
117
- </button>
118
-
119
- <h1>noPanelStyleOverride</h1>
120
- <Flicking className="flicking" panelsPerView={5} noPanelStyleOverride={this.state.noPanelStyleOverride}>
121
- <div className="panel panel0"></div>
122
- <div className="panel panel1"></div>
123
- <div className="panel panel2"></div>
124
- <div className="panel panel3"></div>
125
- <div className="panel panel4"></div>
126
- </Flicking>
127
- <button
128
- onClick={() => {
129
- this.setState({ noPanelStyleOverride: !this.state.noPanelStyleOverride });
130
- }}
131
- >
132
- Change
133
- </button>
134
-
135
- <h1>moveType</h1>
136
- <Flicking className="flicking" moveType={this.state.moveType}>
137
- <div className="panel panel0"></div>
138
- <div className="panel panel1"></div>
139
- <div className="panel panel2"></div>
140
- <div className="panel panel3"></div>
141
- <div className="panel panel4"></div>
142
- </Flicking>
143
- <button
144
- onClick={() => {
145
- this.setState({ moveType: this.state.moveType === "snap" ? "freeScroll" : "snap" });
146
- }}
147
- >
148
- Change
149
- </button>
150
-
151
- <h1>moveType</h1>
152
- <Flicking className="flicking" moveType={this.state.moveType}>
153
- <div className="panel panel0"></div>
154
- <div className="panel panel1"></div>
155
- <div className="panel panel2"></div>
156
- <div className="panel panel3"></div>
157
- <div className="panel panel4"></div>
158
- </Flicking>
159
- <button
160
- onClick={() => {
161
- this.setState({ moveType: this.state.moveType === "snap" ? "freeScroll" : "snap" });
162
- }}
163
- >
164
- Change
165
- </button>
166
- </div>
167
- );
168
- }
169
-
170
- public componentDidMount() {}
171
- }