@egjs/flicking 4.14.2-beta.2 → 4.15.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@egjs/flicking",
3
- "version": "4.14.2-beta.2",
3
+ "version": "4.15.0",
4
4
  "description": "Everyday 30 million people experience. It's reliable, flexible and extendable carousel.",
5
5
  "main": "dist/flicking.cjs.js",
6
6
  "module": "dist/flicking.esm.js",
package/src/Flicking.ts CHANGED
@@ -1870,9 +1870,12 @@ class Flicking extends Component<FlickingEvents> {
1870
1870
  return;
1871
1871
  }
1872
1872
  if (this._isResizing) {
1873
+ // resize를 연속으로 발생하면 무시하기에 마지막 viewport를 사이즈를 알 수 없음.
1874
+ // resize를 1번 더 실행할 수 잇는 스케줄링 등록
1873
1875
  this._scheduleResize = true;
1874
1876
  return;
1875
1877
  }
1878
+
1876
1879
  this._scheduleResize = false;
1877
1880
  this._isResizing = true;
1878
1881
 
@@ -1951,6 +1954,7 @@ class Flicking extends Component<FlickingEvents> {
1951
1954
 
1952
1955
  this._isResizing = false;
1953
1956
 
1957
+ // 연속으로 resize를 호출하는 경우를 대비하기 위해서 스케줄링 반영
1954
1958
  if (this._scheduleResize) {
1955
1959
  this.resize();
1956
1960
  }
@@ -13,7 +13,7 @@ export default <T>(flicking: Flicking, diffResult: DiffResult<T>) => {
13
13
  return map;
14
14
  }, {});
15
15
  const renderingPanels = flicking.panels
16
- .filter(panel => !removedPanels[panel.index]);
16
+ .filter(panel => !removedPanels[panel.index]);
17
17
 
18
18
 
19
19
  if (!flicking.useCSSOrder) {
@@ -26,4 +26,3 @@ export default <T>(flicking: Flicking, diffResult: DiffResult<T>) => {
26
26
  ...diffResult.added.map(idx => diffResult.list[idx])
27
27
  ];
28
28
  };
29
-
@@ -521,7 +521,7 @@ abstract class Renderer {
521
521
  const firstPanelSizeObj = {
522
522
  size: panelSize,
523
523
  margin: referencePanel.margin,
524
- ...(!flicking.horizontal && { height: referencePanel.height})
524
+ ...(!flicking.horizontal && { height: referencePanel.height })
525
525
  };
526
526
 
527
527
  if (!flicking.noPanelStyleOverride) {
@@ -567,11 +567,14 @@ abstract class Renderer {
567
567
  flicking.camera.applyTransform();
568
568
 
569
569
  if (flicking.useCSSOrder) {
570
- // useCSSOrder 사용하는 경우 DOM은 변화가 없지만 대신 CSS Order가 추가 된다.
571
- const panels = flicking.panels;
570
+ // `useCSSOrder`를 사용하는 경우 DOM은 변화가 없지만 대신 css `order`값을 주입
571
+ const renderedPanels = flicking.renderer.panels.filter(panel => panel.rendered);
572
572
 
573
573
  this._strategy.getRenderingIndexesByOrder(flicking).forEach((domIndex, index) => {
574
- panels[domIndex].element.style.order = `${index}`;
574
+ if (renderedPanels[domIndex].element) {
575
+ // 방어 코드 추가
576
+ renderedPanels[domIndex].element.style.order = `${index}`;
577
+ }
575
578
  });
576
579
  }
577
580
  }
@@ -44,7 +44,7 @@ class VanillaRenderer extends Renderer {
44
44
  let reversedElements: HTMLElement[] = [];
45
45
 
46
46
  if (flicking.useCSSOrder) {
47
- // useCSSOrder를 사용하는 경우 원본 그대로 렌더링
47
+ // useCSSOrder를 사용하는 경우 DOM은 변화가 없지만 대신 css `order`값을 주입
48
48
  reversedElements = this.getRenderedPanels().map(panel => panel.element).reverse();
49
49
  } else {
50
50
  reversedElements = this._strategy