@egjs/flicking 3.8.3 → 3.9.2-beta.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 (58) 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 +99 -23
  5. package/dist/flicking.esm.js.map +1 -1
  6. package/dist/flicking.js +99 -23
  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 +99 -23
  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 +13 -17
  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 +12 -16
  53. package/src/components/AutoResizer.ts +80 -0
  54. package/src/components/Viewport.ts +14 -6
  55. package/src/consts.ts +1 -0
  56. package/src/types.ts +1 -0
  57. package/src/utils.ts +1 -1
  58. package/tsconfig.test.json +1 -0
@@ -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.3
7
+ version: 3.9.2-beta.0
8
8
  */
9
9
  (function (global, factory) {
10
10
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -6444,7 +6444,8 @@ version: 3.8.3
6444
6444
  renderExternal: false,
6445
6445
  resizeOnContentsReady: false,
6446
6446
  iOSEdgeSwipeThreshold: 30,
6447
- collectStatistics: true
6447
+ collectStatistics: true,
6448
+ useResizeObserver: true
6448
6449
  };
6449
6450
  var DEFAULT_VIEWPORT_CSS = {
6450
6451
  position: "relative",
@@ -6706,7 +6707,7 @@ version: 3.8.3
6706
6707
  for (var i = 0; i < iterable.length; i += 1) {
6707
6708
  var element = iterable[i];
6708
6709
 
6709
- if (element && callback(element)) {
6710
+ if (element != null && callback(element)) {
6710
6711
  return i;
6711
6712
  }
6712
6713
  }
@@ -8843,7 +8844,12 @@ version: 3.8.3
8843
8844
  __proto.disable = function () {
8844
8845
  if (this.panInput) {
8845
8846
  this.panInput.destroy();
8846
- this.panInput = null;
8847
+ this.panInput = null; // Refresh Axes instance
8848
+
8849
+ this.axes.destroy();
8850
+ this.setAxesInstance();
8851
+ this.updateScrollArea();
8852
+ this.updateAxesPosition(this.state.position);
8847
8853
  this.stateMachine.transitTo(STATE_TYPE.IDLE);
8848
8854
  }
8849
8855
  };
@@ -9542,6 +9548,7 @@ version: 3.8.3
9542
9548
  this.applyCSSValue();
9543
9549
  this.setMoveType();
9544
9550
  this.setAxesInstance();
9551
+ this.createPanInput();
9545
9552
  this.refreshPanels();
9546
9553
  this.setDefaultPanel();
9547
9554
  this.resize();
@@ -9653,7 +9660,6 @@ version: 3.8.3
9653
9660
  deceleration: options.deceleration,
9654
9661
  interruptable: true
9655
9662
  });
9656
- this.createPanInput();
9657
9663
  };
9658
9664
 
9659
9665
  __proto.refreshPanels = function () {
@@ -9697,11 +9703,12 @@ version: 3.8.3
9697
9703
  var panels = panelManager.originalPanels();
9698
9704
  var reversedPanels = panels.concat().reverse();
9699
9705
  var sumOriginalPanelSize = lastPanel.getPosition() + lastPanel.getSize() - firstPanel.getPosition() + gap;
9706
+ if (sumOriginalPanelSize <= 0) return;
9700
9707
  var relativeAnchorPosition = firstPanel.getRelativeAnchorPosition();
9701
9708
  var relativeHangerPosition = this.getRelativeHangerPosition();
9702
9709
  var areaPrev = (relativeHangerPosition - relativeAnchorPosition) % sumOriginalPanelSize;
9703
9710
  var sizeSum = 0;
9704
- var panelAtLeftBoundary;
9711
+ var panelAtLeftBoundary = null;
9705
9712
 
9706
9713
  for (var _i = 0, reversedPanels_1 = reversedPanels; _i < reversedPanels_1.length; _i++) {
9707
9714
  var panel = reversedPanels_1[_i];
@@ -9720,7 +9727,7 @@ version: 3.8.3
9720
9727
 
9721
9728
  var areaNext = (viewportSize - relativeHangerPosition + relativeAnchorPosition) % sumOriginalPanelSize;
9722
9729
  sizeSum = 0;
9723
- var panelAtRightBoundary;
9730
+ var panelAtRightBoundary = null;
9724
9731
 
9725
9732
  for (var _a = 0, panels_1 = panels; _a < panels_1.length; _a++) {
9726
9733
  var panel = panels_1[_a];
@@ -9738,7 +9745,7 @@ version: 3.8.3
9738
9745
  } // Need one more set of clones on prev area of original panel 0
9739
9746
 
9740
9747
 
9741
- var needCloneOnPrev = panelAtLeftBoundary.getIndex() !== 0 && panelAtLeftBoundary.getIndex() <= panelAtRightBoundary.getIndex(); // Visible count of panel 0 on first screen
9748
+ var needCloneOnPrev = panelAtLeftBoundary && panelAtRightBoundary && panelAtLeftBoundary.getIndex() !== 0 && panelAtLeftBoundary.getIndex() <= panelAtRightBoundary.getIndex(); // Visible count of panel 0 on first screen
9742
9749
 
9743
9750
  var panel0OnFirstscreen = Math.ceil((relativeHangerPosition + firstPanel.getSize() - relativeAnchorPosition) / sumOriginalPanelSize) + Math.ceil((viewportSize - relativeHangerPosition + relativeAnchorPosition) / sumOriginalPanelSize) - 1; // duplication
9744
9751
 
@@ -10370,6 +10377,77 @@ version: 3.8.3
10370
10377
  return Viewport;
10371
10378
  }();
10372
10379
 
10380
+ var AutoResizer =
10381
+ /*#__PURE__*/
10382
+ function () {
10383
+ function AutoResizer(flicking) {
10384
+ var _this = this;
10385
+
10386
+ this.skipFirstResize = function () {
10387
+ var isFirstResize = true;
10388
+ return function () {
10389
+ if (isFirstResize) {
10390
+ isFirstResize = false;
10391
+ return;
10392
+ }
10393
+
10394
+ _this.onResize();
10395
+ };
10396
+ }();
10397
+
10398
+ this.onResize = function () {
10399
+ _this.flicking.resize();
10400
+ };
10401
+
10402
+ this.flicking = flicking;
10403
+ this.enabled = false;
10404
+ this.resizeObserver = null;
10405
+ }
10406
+
10407
+ var __proto = AutoResizer.prototype;
10408
+
10409
+ __proto.enable = function () {
10410
+ var flicking = this.flicking;
10411
+
10412
+ if (this.enabled) {
10413
+ this.disable();
10414
+ }
10415
+
10416
+ if (flicking.options.useResizeObserver && !!window.ResizeObserver) {
10417
+ var flickingEl = flicking.getElement();
10418
+ var viewportSizeNot0 = flickingEl.clientWidth !== 0 || flickingEl.clientHeight !== 0;
10419
+ var resizeObserver = viewportSizeNot0 ? new ResizeObserver(this.skipFirstResize) : new ResizeObserver(this.onResize);
10420
+ resizeObserver.observe(flickingEl);
10421
+ this.resizeObserver = resizeObserver;
10422
+ } else {
10423
+ window.addEventListener("resize", this.onResize);
10424
+ }
10425
+
10426
+ this.enabled = true;
10427
+ return this;
10428
+ };
10429
+
10430
+ __proto.disable = function () {
10431
+ if (!this.enabled) {
10432
+ return this;
10433
+ }
10434
+
10435
+ var resizeObserver = this.resizeObserver;
10436
+
10437
+ if (resizeObserver) {
10438
+ resizeObserver.disconnect();
10439
+ this.resizeObserver = null;
10440
+ } else {
10441
+ window.removeEventListener("resize", this.onResize);
10442
+ }
10443
+
10444
+ this.enabled = false;
10445
+ return this;
10446
+ };
10447
+
10448
+ return AutoResizer;
10449
+ }();
10450
+
10373
10451
  /**
10374
10452
  * Copyright (c) 2015 NAVER Corp.
10375
10453
  * egjs projects are licensed under the MIT license
@@ -10419,6 +10497,7 @@ version: 3.8.3
10419
10497
  * @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>
10420
10498
  * @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>
10421
10499
  * @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>
10500
+ * @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>
10422
10501
  * @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>
10423
10502
  */
10424
10503
 
@@ -10586,18 +10665,13 @@ version: 3.8.3
10586
10665
 
10587
10666
 
10588
10667
  _this.viewport = new Viewport(_this, _this.options, _this.triggerEvent);
10668
+ _this.autoResizer = new AutoResizer(_this);
10589
10669
 
10590
10670
  _this.listenInput();
10591
10671
 
10592
10672
  _this.listenResize();
10593
10673
 
10594
- return _this; // if (this.options.collectStatistics) {
10595
- // sendEvent(
10596
- // "usage",
10597
- // "options",
10598
- // options,
10599
- // );
10600
- // }
10674
+ return _this;
10601
10675
  }
10602
10676
  /**
10603
10677
  * Move to the previous panel if it exists.
@@ -10931,11 +11005,7 @@ version: 3.8.3
10931
11005
  }
10932
11006
 
10933
11007
  this.off();
10934
-
10935
- if (this.options.autoResize) {
10936
- window.removeEventListener("resize", this.resize);
10937
- }
10938
-
11008
+ this.autoResizer.disable();
10939
11009
  this.viewport.destroy(option);
10940
11010
  (_a = this.contentsReadyChecker) === null || _a === void 0 ? void 0 : _a.destroy(); // release resources
10941
11011
 
@@ -11088,6 +11158,8 @@ version: 3.8.3
11088
11158
  __proto.beforeSync = function (diffInfo) {
11089
11159
  var _this = this;
11090
11160
 
11161
+ var _a;
11162
+
11091
11163
  var maintained = diffInfo.maintained,
11092
11164
  added = diffInfo.added,
11093
11165
  changed = diffInfo.changed,
@@ -11179,8 +11251,12 @@ version: 3.8.3
11179
11251
  }
11180
11252
 
11181
11253
  panelManager.replacePanels(newPanels, newClones);
11254
+ var currentPanelIndex = (_a = currentPanel === null || currentPanel === void 0 ? void 0 : currentPanel.getIndex()) !== null && _a !== void 0 ? _a : -1;
11255
+ var currentPanelIsRemoved = findIndex(removed, function (index) {
11256
+ return index === currentPanelIndex;
11257
+ }) >= 0;
11182
11258
 
11183
- if (!currentPanel && newPanels.length > 0) {
11259
+ if ((!currentPanel || currentPanelIsRemoved) && newPanels.length > 0) {
11184
11260
  viewport.setCurrentPanel(newPanels[0]);
11185
11261
  } else if (newPanels.length <= 0) {
11186
11262
  viewport.setCurrentPanel(undefined);
@@ -11301,7 +11377,7 @@ version: 3.8.3
11301
11377
  var options = this.options;
11302
11378
 
11303
11379
  if (options.autoResize) {
11304
- window.addEventListener("resize", this.resize);
11380
+ this.autoResizer.enable();
11305
11381
  }
11306
11382
 
11307
11383
  if (options.resizeOnContentsReady) {
@@ -11341,7 +11417,7 @@ version: 3.8.3
11341
11417
  */
11342
11418
 
11343
11419
 
11344
- Flicking.VERSION = "3.8.3";
11420
+ Flicking.VERSION = "3.9.2-beta.0";
11345
11421
  /**
11346
11422
  * Direction constant - "PREV" or "NEXT"
11347
11423
  * @ko 방향 상수 - "PREV" 또는 "NEXT"