@egjs/flicking 4.6.1 → 4.6.2

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@egjs/flicking",
3
- "version": "4.6.1",
3
+ "version": "4.6.2",
4
4
  "description": "Everyday 30 million people experience. It's reliable, flexible and extendable carousel.",
5
5
  "main": "dist/flicking.js",
6
6
  "module": "dist/flicking.esm.js",
package/src/cfc/sync.ts CHANGED
@@ -85,7 +85,9 @@ export default (flicking: Flicking, diffResult: DiffResult<any>, rendered: any[]
85
85
  }
86
86
  }
87
87
 
88
- renderer.updateAfterPanelChange(added, removed);
88
+ if (diffResult.added.length > 0 || diffResult.removed.length > 0) {
89
+ renderer.updateAfterPanelChange(added, removed);
90
+ }
89
91
  };
90
92
 
91
93
  const batchInsert = (renderer: Renderer, diffResult: DiffResult<any>, addedElements: any[], startIdx: number, endIdx?: number) => {
@@ -171,7 +171,7 @@ abstract class Control {
171
171
  * @chainable
172
172
  * @return {Promise<void>}
173
173
  */
174
- public updatePosition(_progressInPanel: number): void { // eslint-disable-line @typescript-eslint/no-unused-vars
174
+ public updatePosition(progressInPanel: number): void { // eslint-disable-line @typescript-eslint/no-unused-vars
175
175
  const flicking = getFlickingAttached(this._flicking);
176
176
  const camera = flicking.camera;
177
177
  const activePanel = this._activePanel;
@@ -321,7 +321,7 @@ abstract class Control {
321
321
  }
322
322
  }
323
323
 
324
- protected _triggerIndexChangeEvent(panel: Panel, position: number, axesEvent?: OnRelease): void {
324
+ protected _triggerIndexChangeEvent(panel: Panel, position: number, axesEvent?: OnRelease) {
325
325
  const flicking = getFlickingAttached(this._flicking);
326
326
  const triggeringEvent = panel !== this._activePanel ? EVENTS.WILL_CHANGE : EVENTS.WILL_RESTORE;
327
327
  const camera = flicking.camera;
@@ -106,7 +106,7 @@ class FreeControl extends Control {
106
106
  * </ko>
107
107
  * @return {Promise<void>} A Promise which will be resolved after reaching the target position<ko>해당 좌표 도달시에 resolve되는 Promise</ko>
108
108
  */
109
- public async moveToPosition(position: number, duration: number, axesEvent?: OnRelease) {
109
+ public moveToPosition(position: number, duration: number, axesEvent?: OnRelease) {
110
110
  const flicking = getFlickingAttached(this._flicking);
111
111
 
112
112
  const camera = flicking.camera;
@@ -84,7 +84,7 @@ class SnapControl extends Control {
84
84
  * </ko>
85
85
  * @return {Promise<void>} A Promise which will be resolved after reaching the target position<ko>해당 좌표 도달시에 resolve되는 Promise</ko>
86
86
  */
87
- public async moveToPosition(position: number, duration: number, axesEvent?: OnRelease) {
87
+ public moveToPosition(position: number, duration: number, axesEvent?: OnRelease) {
88
88
  const flicking = getFlickingAttached(this._flicking);
89
89
  const camera = flicking.camera;
90
90
  const activeAnchor = camera.findActiveAnchor();
@@ -187,7 +187,7 @@ class StrictControl extends Control {
187
187
  * </ko>
188
188
  * @return {Promise<void>} A Promise which will be resolved after reaching the target position<ko>해당 좌표 도달시에 resolve되는 Promise</ko>
189
189
  */
190
- public async moveToPosition(position: number, duration: number, axesEvent?: OnRelease) {
190
+ public moveToPosition(position: number, duration: number, axesEvent?: OnRelease) {
191
191
  const flicking = getFlickingAttached(this._flicking);
192
192
  const camera = flicking.camera;
193
193
  const activePanel = this._activePanel;
@@ -65,7 +65,10 @@ class AnimatingState extends State {
65
65
  axesEvent
66
66
  }));
67
67
 
68
- control.setActive(this._targetPanel!, control.activePanel, axesEvent.isTrusted);
68
+ const targetPanel = this._targetPanel;
69
+ if (targetPanel) {
70
+ control.setActive(targetPanel, control.activePanel, axesEvent.isTrusted);
71
+ }
69
72
  }
70
73
  }
71
74
 
@@ -34,7 +34,7 @@ class DraggingState extends State {
34
34
  this._moveToChangedPosition(ctx);
35
35
  }
36
36
 
37
- public onRelease(ctx: Parameters<State["onRelease"]>[0]): void {
37
+ public onRelease(ctx: Parameters<State["onRelease"]>[0]) {
38
38
  const { flicking, axesEvent, transitTo } = ctx;
39
39
 
40
40
  // Update last position to cope with Axes's animating behavior
@@ -55,7 +55,12 @@ class DraggingState extends State {
55
55
  const position = axesEvent.destPos[AXES.POSITION_KEY];
56
56
  const duration = Math.max(axesEvent.duration, flicking.duration);
57
57
 
58
- void control.moveToPosition(position, duration, axesEvent);
58
+ try {
59
+ void control.moveToPosition(position, duration, axesEvent);
60
+ } catch (err) {
61
+ transitTo(STATE_TYPE.IDLE);
62
+ axesEvent.setTo({ [AXES.POSITION_KEY]: flicking.camera.position }, 0);
63
+ }
59
64
  }
60
65
  }
61
66
 
@@ -337,24 +337,26 @@ abstract class Renderer {
337
337
 
338
338
  void this.render();
339
339
 
340
- if (!activePanel || activePanel.removed) {
341
- if (panels.length <= 0) {
342
- // All panels removed
343
- camera.lookAt(0);
344
- } else {
345
- let targetIndex = activePanel?.index ?? 0;
346
- if (targetIndex > panels.length - 1) {
347
- targetIndex = panels.length - 1;
340
+ if (!flicking.animating) {
341
+ if (!activePanel || activePanel.removed) {
342
+ if (panels.length <= 0) {
343
+ // All panels removed
344
+ camera.lookAt(0);
345
+ } else {
346
+ let targetIndex = activePanel?.index ?? 0;
347
+ if (targetIndex > panels.length - 1) {
348
+ targetIndex = panels.length - 1;
349
+ }
350
+
351
+ void control.moveToPanel(panels[targetIndex], {
352
+ duration: 0
353
+ }).catch(() => void 0);
348
354
  }
349
-
350
- void control.moveToPanel(panels[targetIndex], {
355
+ } else {
356
+ void control.moveToPanel(activePanel, {
351
357
  duration: 0
352
358
  }).catch(() => void 0);
353
359
  }
354
- } else {
355
- void control.moveToPanel(control.activePanel!, {
356
- duration: 0
357
- }).catch(() => void 0);
358
360
  }
359
361
 
360
362
  flicking.camera.updateOffset();