@egjs/flicking 3.8.2 → 3.9.1

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 (59) hide show
  1. package/declaration/Flicking.d.ts +2 -1
  2. package/declaration/components/AutoResizer.d.ts +12 -0
  3. package/declaration/types.d.ts +1 -0
  4. package/dist/flicking.esm.js +101 -24
  5. package/dist/flicking.esm.js.map +1 -1
  6. package/dist/flicking.js +101 -24
  7. package/dist/flicking.js.map +1 -1
  8. package/dist/flicking.min.js +2 -2
  9. package/dist/flicking.min.js.map +1 -1
  10. package/dist/flicking.pkgd.js +101 -24
  11. package/dist/flicking.pkgd.js.map +1 -1
  12. package/dist/flicking.pkgd.min.js +2 -2
  13. package/dist/flicking.pkgd.min.js.map +1 -1
  14. package/doc/eg.Flicking.html +102 -39
  15. package/doc/global.html +1 -1
  16. package/doc/index.html +1 -1
  17. package/doc/node_modules_@egjs_component_src_Component.ts.html +1 -1
  18. package/doc/src_Flicking.ts.html +16 -18
  19. package/doc/src_types.ts.html +2 -1
  20. package/docs/build/release/3.8.4/dist/flicking.esm.js +5055 -0
  21. package/docs/build/release/3.8.4/dist/flicking.esm.js.map +1 -0
  22. package/docs/build/release/3.8.4/dist/flicking.js +5062 -0
  23. package/docs/build/release/3.8.4/dist/flicking.js.map +1 -0
  24. package/docs/build/release/3.8.4/dist/flicking.min.js +10 -0
  25. package/docs/build/release/3.8.4/dist/flicking.min.js.map +1 -0
  26. package/docs/build/release/3.8.4/dist/flicking.pkgd.js +11391 -0
  27. package/docs/build/release/3.8.4/dist/flicking.pkgd.js.map +1 -0
  28. package/docs/build/release/3.8.4/dist/flicking.pkgd.min.js +10 -0
  29. package/docs/build/release/3.8.4/dist/flicking.pkgd.min.js.map +1 -0
  30. package/docs/build/release/3.9.0/dist/flicking.esm.js +5124 -0
  31. package/docs/build/release/3.9.0/dist/flicking.esm.js.map +1 -0
  32. package/docs/build/release/3.9.0/dist/flicking.js +5131 -0
  33. package/docs/build/release/3.9.0/dist/flicking.js.map +1 -0
  34. package/docs/build/release/3.9.0/dist/flicking.min.js +10 -0
  35. package/docs/build/release/3.9.0/dist/flicking.min.js.map +1 -0
  36. package/docs/build/release/3.9.0/dist/flicking.pkgd.js +11460 -0
  37. package/docs/build/release/3.9.0/dist/flicking.pkgd.js.map +1 -0
  38. package/docs/build/release/3.9.0/dist/flicking.pkgd.min.js +10 -0
  39. package/docs/build/release/3.9.0/dist/flicking.pkgd.min.js.map +1 -0
  40. package/docs/build/release/3.9.1/dist/flicking.esm.js +5124 -0
  41. package/docs/build/release/3.9.1/dist/flicking.esm.js.map +1 -0
  42. package/docs/build/release/3.9.1/dist/flicking.js +5131 -0
  43. package/docs/build/release/3.9.1/dist/flicking.js.map +1 -0
  44. package/docs/build/release/3.9.1/dist/flicking.min.js +10 -0
  45. package/docs/build/release/3.9.1/dist/flicking.min.js.map +1 -0
  46. package/docs/build/release/3.9.1/dist/flicking.pkgd.js +11460 -0
  47. package/docs/build/release/3.9.1/dist/flicking.pkgd.js.map +1 -0
  48. package/docs/build/release/3.9.1/dist/flicking.pkgd.min.js +10 -0
  49. package/docs/build/release/3.9.1/dist/flicking.pkgd.min.js.map +1 -0
  50. package/package.json +8 -12
  51. package/rollup.config.development.js +26 -0
  52. package/src/Flicking.ts +15 -17
  53. package/src/components/AutoResizer.ts +80 -0
  54. package/src/components/PanelManager.ts +0 -1
  55. package/src/components/Viewport.ts +11 -5
  56. package/src/consts.ts +1 -0
  57. package/src/types.ts +1 -0
  58. package/src/utils.ts +1 -1
  59. package/tsconfig.test.json +1 -0
package/dist/flicking.js CHANGED
@@ -4,7 +4,7 @@ name: @egjs/flicking
4
4
  license: MIT
5
5
  author: NAVER Corp.
6
6
  repository: https://github.com/naver/egjs-flicking
7
- version: 3.8.2
7
+ version: 3.9.1
8
8
  */
9
9
  (function (global, factory) {
10
10
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@egjs/component'), require('@egjs/imready'), require('@egjs/axes')) :
@@ -115,7 +115,8 @@ version: 3.8.2
115
115
  renderExternal: false,
116
116
  resizeOnContentsReady: false,
117
117
  iOSEdgeSwipeThreshold: 30,
118
- collectStatistics: true
118
+ collectStatistics: true,
119
+ useResizeObserver: true
119
120
  };
120
121
  var DEFAULT_VIEWPORT_CSS = {
121
122
  position: "relative",
@@ -377,7 +378,7 @@ version: 3.8.2
377
378
  for (var i = 0; i < iterable.length; i += 1) {
378
379
  var element = iterable[i];
379
380
 
380
- if (element && callback(element)) {
381
+ if (element != null && callback(element)) {
381
382
  return i;
382
383
  }
383
384
  }
@@ -2514,7 +2515,12 @@ version: 3.8.2
2514
2515
  __proto.disable = function () {
2515
2516
  if (this.panInput) {
2516
2517
  this.panInput.destroy();
2517
- this.panInput = null;
2518
+ this.panInput = null; // Refresh Axes instance
2519
+
2520
+ this.axes.destroy();
2521
+ this.setAxesInstance();
2522
+ this.updateScrollArea();
2523
+ this.updateAxesPosition(this.state.position);
2518
2524
  this.stateMachine.transitTo(STATE_TYPE.IDLE);
2519
2525
  }
2520
2526
  };
@@ -3213,6 +3219,7 @@ version: 3.8.2
3213
3219
  this.applyCSSValue();
3214
3220
  this.setMoveType();
3215
3221
  this.setAxesInstance();
3222
+ this.createPanInput();
3216
3223
  this.refreshPanels();
3217
3224
  this.setDefaultPanel();
3218
3225
  this.resize();
@@ -3324,7 +3331,6 @@ version: 3.8.2
3324
3331
  deceleration: options.deceleration,
3325
3332
  interruptable: true
3326
3333
  });
3327
- this.createPanInput();
3328
3334
  };
3329
3335
 
3330
3336
  __proto.refreshPanels = function () {
@@ -3372,7 +3378,7 @@ version: 3.8.2
3372
3378
  var relativeHangerPosition = this.getRelativeHangerPosition();
3373
3379
  var areaPrev = (relativeHangerPosition - relativeAnchorPosition) % sumOriginalPanelSize;
3374
3380
  var sizeSum = 0;
3375
- var panelAtLeftBoundary;
3381
+ var panelAtLeftBoundary = null;
3376
3382
 
3377
3383
  for (var _i = 0, reversedPanels_1 = reversedPanels; _i < reversedPanels_1.length; _i++) {
3378
3384
  var panel = reversedPanels_1[_i];
@@ -3391,7 +3397,7 @@ version: 3.8.2
3391
3397
 
3392
3398
  var areaNext = (viewportSize - relativeHangerPosition + relativeAnchorPosition) % sumOriginalPanelSize;
3393
3399
  sizeSum = 0;
3394
- var panelAtRightBoundary;
3400
+ var panelAtRightBoundary = null;
3395
3401
 
3396
3402
  for (var _a = 0, panels_1 = panels; _a < panels_1.length; _a++) {
3397
3403
  var panel = panels_1[_a];
@@ -3409,7 +3415,7 @@ version: 3.8.2
3409
3415
  } // Need one more set of clones on prev area of original panel 0
3410
3416
 
3411
3417
 
3412
- var needCloneOnPrev = panelAtLeftBoundary.getIndex() !== 0 && panelAtLeftBoundary.getIndex() <= panelAtRightBoundary.getIndex(); // Visible count of panel 0 on first screen
3418
+ var needCloneOnPrev = panelAtLeftBoundary && panelAtRightBoundary && panelAtLeftBoundary.getIndex() !== 0 && panelAtLeftBoundary.getIndex() <= panelAtRightBoundary.getIndex(); // Visible count of panel 0 on first screen
3413
3419
 
3414
3420
  var panel0OnFirstscreen = Math.ceil((relativeHangerPosition + firstPanel.getSize() - relativeAnchorPosition) / sumOriginalPanelSize) + Math.ceil((viewportSize - relativeHangerPosition + relativeAnchorPosition) / sumOriginalPanelSize) - 1; // duplication
3415
3421
 
@@ -4041,6 +4047,77 @@ version: 3.8.2
4041
4047
  return Viewport;
4042
4048
  }();
4043
4049
 
4050
+ var AutoResizer =
4051
+ /*#__PURE__*/
4052
+ function () {
4053
+ function AutoResizer(flicking) {
4054
+ var _this = this;
4055
+
4056
+ this.skipFirstResize = function () {
4057
+ var isFirstResize = true;
4058
+ return function () {
4059
+ if (isFirstResize) {
4060
+ isFirstResize = false;
4061
+ return;
4062
+ }
4063
+
4064
+ _this.onResize();
4065
+ };
4066
+ }();
4067
+
4068
+ this.onResize = function () {
4069
+ _this.flicking.resize();
4070
+ };
4071
+
4072
+ this.flicking = flicking;
4073
+ this.enabled = false;
4074
+ this.resizeObserver = null;
4075
+ }
4076
+
4077
+ var __proto = AutoResizer.prototype;
4078
+
4079
+ __proto.enable = function () {
4080
+ var flicking = this.flicking;
4081
+
4082
+ if (this.enabled) {
4083
+ this.disable();
4084
+ }
4085
+
4086
+ if (flicking.options.useResizeObserver && !!window.ResizeObserver) {
4087
+ var flickingEl = flicking.getElement();
4088
+ var viewportSizeNot0 = flickingEl.clientWidth !== 0 || flickingEl.clientHeight !== 0;
4089
+ var resizeObserver = viewportSizeNot0 ? new ResizeObserver(this.skipFirstResize) : new ResizeObserver(this.onResize);
4090
+ resizeObserver.observe(flickingEl);
4091
+ this.resizeObserver = resizeObserver;
4092
+ } else {
4093
+ window.addEventListener("resize", this.onResize);
4094
+ }
4095
+
4096
+ this.enabled = true;
4097
+ return this;
4098
+ };
4099
+
4100
+ __proto.disable = function () {
4101
+ if (!this.enabled) {
4102
+ return this;
4103
+ }
4104
+
4105
+ var resizeObserver = this.resizeObserver;
4106
+
4107
+ if (resizeObserver) {
4108
+ resizeObserver.disconnect();
4109
+ this.resizeObserver = null;
4110
+ } else {
4111
+ window.removeEventListener("resize", this.onResize);
4112
+ }
4113
+
4114
+ this.enabled = false;
4115
+ return this;
4116
+ };
4117
+
4118
+ return AutoResizer;
4119
+ }();
4120
+
4044
4121
  /**
4045
4122
  * Copyright (c) 2015 NAVER Corp.
4046
4123
  * egjs projects are licensed under the MIT license
@@ -4090,6 +4167,7 @@ version: 3.8.2
4090
4167
  * @param {boolean} [options.isConstantSize=false] Whether all panels have a constant size that won't be changed after resize. Enabling this option can increase performance while recalculating panel size.<ko>모든 패널의 크기가 불변인지의 여부. 이 옵션을 'true'로 설정하면 패널 크기 재설정시에 성능을 높일 수 있다.</ko>
4091
4168
  * @param {boolean} [options.renderExternal=false] Whether to use external rendering. It will delegate DOM manipulation and can synchronize the rendered state by calling `sync()` method. You can use this option to use in frameworks like React, Vue, Angular, which has its states and rendering methods.<ko>외부 렌더링을 사용할 지의 여부. 이 옵션을 사용시 렌더링을 외부에 위임할 수 있고, `sync()`를 호출하여 그 상태를 동기화할 수 있다. 이 옵션을 사용하여, React, Vue, Angular 등 자체적인 상태와 렌더링 방법을 갖는 프레임워크에 대응할 수 있다.</ko>
4092
4169
  * @param {boolean} [options.resizeOnContentsReady=false] Whether to resize the Flicking after the image/video elements inside viewport are ready.<br/>Use this property to prevent wrong Flicking layout caused by dynamic image / video sizes.<ko>Flicking 내부의 이미지 / 비디오 엘리먼트들이 전부 로드되었을 때 Flicking의 크기를 재계산하기 위한 옵션.<br/>이미지 / 비디오 크기가 고정 크기가 아닐 경우 사용하여 레이아웃이 잘못되는 것을 방지할 수 있다.</ko>
4170
+ * @param {boolean} [options.useResizeObserver=true] Whether to listen {@link https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver ResizeObserver}'s event instead of Window's {@link https://developer.mozilla.org/ko/docs/Web/API/Window/resize_event resize} event when using the `autoResize` option<ko>autoResize 옵션 사용시 {@link https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver ResizeObserver}의 이벤트를 Window객체의 {@link https://developer.mozilla.org/ko/docs/Web/API/Window/resize_event resize} 이벤트 대신 수신할지 여부를 설정합니다</ko>
4093
4171
  * @param {boolean} [options.collectStatistics=true] Whether to collect statistics on how you are using `Flicking`. These statistical data do not contain any personal information and are used only as a basis for the development of a user-friendly product.<ko>어떻게 `Flicking`을 사용하고 있는지에 대한 통계 수집 여부를 나타낸다. 이 통계자료는 개인정보를 포함하고 있지 않으며 오직 사용자 친화적인 제품으로 발전시키기 위한 근거자료로서 활용한다.</ko>
4094
4172
  */
4095
4173
 
@@ -4119,7 +4197,9 @@ version: 3.8.2
4119
4197
  var allPanels = viewport.panelManager.allPanels();
4120
4198
 
4121
4199
  if (!options.isConstantSize) {
4122
- allPanels.forEach(function (panel) {
4200
+ allPanels.filter(function (panel) {
4201
+ return !!panel;
4202
+ }).forEach(function (panel) {
4123
4203
  return panel.unCacheBbox();
4124
4204
  });
4125
4205
  }
@@ -4255,18 +4335,13 @@ version: 3.8.2
4255
4335
 
4256
4336
 
4257
4337
  _this.viewport = new Viewport(_this, _this.options, _this.triggerEvent);
4338
+ _this.autoResizer = new AutoResizer(_this);
4258
4339
 
4259
4340
  _this.listenInput();
4260
4341
 
4261
4342
  _this.listenResize();
4262
4343
 
4263
- return _this; // if (this.options.collectStatistics) {
4264
- // sendEvent(
4265
- // "usage",
4266
- // "options",
4267
- // options,
4268
- // );
4269
- // }
4344
+ return _this;
4270
4345
  }
4271
4346
  /**
4272
4347
  * Move to the previous panel if it exists.
@@ -4600,11 +4675,7 @@ version: 3.8.2
4600
4675
  }
4601
4676
 
4602
4677
  this.off();
4603
-
4604
- if (this.options.autoResize) {
4605
- window.removeEventListener("resize", this.resize);
4606
- }
4607
-
4678
+ this.autoResizer.disable();
4608
4679
  this.viewport.destroy(option);
4609
4680
  (_a = this.contentsReadyChecker) === null || _a === void 0 ? void 0 : _a.destroy(); // release resources
4610
4681
 
@@ -4757,6 +4828,8 @@ version: 3.8.2
4757
4828
  __proto.beforeSync = function (diffInfo) {
4758
4829
  var _this = this;
4759
4830
 
4831
+ var _a;
4832
+
4760
4833
  var maintained = diffInfo.maintained,
4761
4834
  added = diffInfo.added,
4762
4835
  changed = diffInfo.changed,
@@ -4848,8 +4921,12 @@ version: 3.8.2
4848
4921
  }
4849
4922
 
4850
4923
  panelManager.replacePanels(newPanels, newClones);
4924
+ var currentPanelIndex = (_a = currentPanel === null || currentPanel === void 0 ? void 0 : currentPanel.getIndex()) !== null && _a !== void 0 ? _a : -1;
4925
+ var currentPanelIsRemoved = findIndex(removed, function (index) {
4926
+ return index === currentPanelIndex;
4927
+ }) >= 0;
4851
4928
 
4852
- if (!currentPanel && newPanels.length > 0) {
4929
+ if ((!currentPanel || currentPanelIsRemoved) && newPanels.length > 0) {
4853
4930
  viewport.setCurrentPanel(newPanels[0]);
4854
4931
  } else if (newPanels.length <= 0) {
4855
4932
  viewport.setCurrentPanel(undefined);
@@ -4970,7 +5047,7 @@ version: 3.8.2
4970
5047
  var options = this.options;
4971
5048
 
4972
5049
  if (options.autoResize) {
4973
- window.addEventListener("resize", this.resize);
5050
+ this.autoResizer.enable();
4974
5051
  }
4975
5052
 
4976
5053
  if (options.resizeOnContentsReady) {
@@ -5010,7 +5087,7 @@ version: 3.8.2
5010
5087
  */
5011
5088
 
5012
5089
 
5013
- Flicking.VERSION = "3.8.2";
5090
+ Flicking.VERSION = "3.9.1";
5014
5091
  /**
5015
5092
  * Direction constant - "PREV" or "NEXT"
5016
5093
  * @ko 방향 상수 - "PREV" 또는 "NEXT"