@egjs/flicking 4.14.2-beta.1 → 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.
@@ -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: 4.14.2-beta.1
7
+ version: 4.15.0
8
8
  */
9
9
  import Component, { ComponentEvent } from '@egjs/component';
10
10
  import Axes, { PanInput } from '@egjs/axes';
@@ -5127,11 +5127,16 @@ var Renderer = /*#__PURE__*/function () {
5127
5127
  __proto._afterRender = function () {
5128
5128
  var flicking = getFlickingAttached(this._flicking);
5129
5129
  flicking.camera.applyTransform();
5130
- if (flicking.useCSSOrderProperty) {
5131
- // useCSSOrderProperty를 사용하는 경우 DOM은 변화가 없지만 대신 CSS Order가 추가 된다.
5132
- var panels_1 = flicking.panels;
5130
+ if (flicking.useCSSOrder) {
5131
+ // `useCSSOrder`를 사용하는 경우 DOM은 변화가 없지만 대신 css `order`값을 주입
5132
+ var renderedPanels_1 = flicking.renderer.panels.filter(function (panel) {
5133
+ return panel.rendered;
5134
+ });
5133
5135
  this._strategy.getRenderingIndexesByOrder(flicking).forEach(function (domIndex, index) {
5134
- panels_1[domIndex].element.style.order = "" + index;
5136
+ if (renderedPanels_1[domIndex].element) {
5137
+ // 방어 코드 추가
5138
+ renderedPanels_1[domIndex].element.style.order = "" + index;
5139
+ }
5135
5140
  });
5136
5141
  }
5137
5142
  };
@@ -5177,8 +5182,8 @@ var VanillaRenderer = /*#__PURE__*/function (_super) {
5177
5182
  var cameraEl = flicking.camera.element;
5178
5183
  // We're using reversed panels here as last panel should be the last element of camera element
5179
5184
  var reversedElements = [];
5180
- if (flicking.useCSSOrderProperty) {
5181
- // useCSSOrderProperty를 사용하는 경우 원본 그대로 렌더링
5185
+ if (flicking.useCSSOrder) {
5186
+ // useCSSOrder를 사용하는 경우 DOM은 변화가 없지만 대신 css `order`값을 주입
5182
5187
  reversedElements = this.getRenderedPanels().map(function (panel) {
5183
5188
  return panel.element;
5184
5189
  }).reverse();
@@ -6250,9 +6255,10 @@ var Flicking = /*#__PURE__*/function (_super) {
6250
6255
  optimizeSizeUpdate = _16 === void 0 ? false : _16,
6251
6256
  _17 = _b.animationThreshold,
6252
6257
  animationThreshold = _17 === void 0 ? 0.5 : _17,
6253
- _18 = _b.useCSSOrderProperty,
6254
- useCSSOrderProperty = _18 === void 0 ? false : _18;
6258
+ _18 = _b.useCSSOrder,
6259
+ useCSSOrder = _18 === void 0 ? false : _18;
6255
6260
  var _this = _super.call(this) || this;
6261
+ _this._scheduleResize = false;
6256
6262
  // Internal states
6257
6263
  _this._initialized = false;
6258
6264
  _this._plugins = [];
@@ -6298,7 +6304,7 @@ var Flicking = /*#__PURE__*/function (_super) {
6298
6304
  _this._renderExternal = renderExternal;
6299
6305
  _this._optimizeSizeUpdate = optimizeSizeUpdate;
6300
6306
  _this._animationThreshold = animationThreshold;
6301
- _this._useCSSOrderProperty = useCSSOrderProperty;
6307
+ _this._useCSSOrder = useCSSOrder;
6302
6308
  // Create core components
6303
6309
  _this._viewport = new Viewport(_this, getElement(root));
6304
6310
  _this._autoResizer = new AutoResizer(_this);
@@ -7027,22 +7033,23 @@ var Flicking = /*#__PURE__*/function (_super) {
7027
7033
  enumerable: false,
7028
7034
  configurable: true
7029
7035
  });
7030
- Object.defineProperty(__proto, "useCSSOrderProperty", {
7036
+ Object.defineProperty(__proto, "useCSSOrder", {
7031
7037
  /**
7032
- * When `circular` is used, the DOM order changes depending on the position. Using `useCSSOrderProperty` does not change the DOM order, but the `order` CSS property changes the order on the screen.
7038
+ * Using `useCSSOrder` does not change the DOM order, but the `order` CSS property changes the order on the screen. (When `circular` is used, the DOM order changes depending on the position.)
7033
7039
  * When using `iframe`, you can prevent reloading when the DOM order changes.
7034
- * @ko `circular`를 사용한 경우 위치에 따라 DOM의 순서가 변경된다. `useCSSOrderProperty`를 사용하면 DOM의 순서는 변경되지 않지만 `order` css가 설정되면서 화면상 순서가 바뀐다.
7040
+ * In svelte, CSS order is always used.
7041
+ * @ko `useCSSOrder`를 사용하면 DOM의 순서는 변경되지 않지만 `order` css가 설정되면서 화면상 순서가 바뀐다. (`circular`를 사용한 경우 위치에 따라 DOM의 순서가 변경된다.)
7035
7042
  * `iframe`을 사용하는 경우 DOM의 순서가 변경되면서 reload가 되는 것을 막을 수 있다.
7043
+ * svelte에서는 css order를 무조건 사용한다.
7036
7044
  * @type {boolean}
7037
- * @requires `circular`
7038
7045
  * @default false
7039
- * @see {@link https://naver.github.io/egjs-flicking/Options#useCSSOrderProperty animationThreshold ( Options )}
7046
+ * @see {@link https://naver.github.io/egjs-flicking/Options#useCSSOrder useCSSOrder ( Options )}
7040
7047
  */
7041
7048
  get: function () {
7042
- return this._useCSSOrderProperty;
7049
+ return this._useCSSOrder;
7043
7050
  },
7044
7051
  set: function (val) {
7045
- this._useCSSOrderProperty = val;
7052
+ this._useCSSOrder = val;
7046
7053
  },
7047
7054
  enumerable: false,
7048
7055
  configurable: true
@@ -7529,7 +7536,9 @@ var Flicking = /*#__PURE__*/function (_super) {
7529
7536
  this._plugins.forEach(function (plugin) {
7530
7537
  return plugin.destroy();
7531
7538
  });
7539
+ this._scheduleResize = false;
7532
7540
  this._initialized = false;
7541
+ this._isResizing = false;
7533
7542
  };
7534
7543
  /**
7535
7544
  * Move to the previous panel (current index - 1)
@@ -7894,7 +7903,7 @@ var Flicking = /*#__PURE__*/function (_super) {
7894
7903
  * @method
7895
7904
  * @fires Flicking#beforeResize
7896
7905
  * @fires Flicking#afterResize
7897
- * @return {this}
7906
+ * @return {boolean}
7898
7907
  */
7899
7908
  __proto.resize = function () {
7900
7909
  return __awaiter(this, void 0, void 0, function () {
@@ -7902,7 +7911,18 @@ var Flicking = /*#__PURE__*/function (_super) {
7902
7911
  return __generator(this, function (_a) {
7903
7912
  switch (_a.label) {
7904
7913
  case 0:
7905
- if (this._isResizing) return [2 /*return*/];
7914
+ if (!this._initialized) {
7915
+ return [2 /*return*/];
7916
+ }
7917
+
7918
+ if (this._isResizing) {
7919
+ // resize를 연속으로 발생하면 무시하기에 마지막 viewport를 사이즈를 알 수 없음.
7920
+ // resize를 1번 더 실행할 수 잇는 스케줄링 등록
7921
+ this._scheduleResize = true;
7922
+ return [2 /*return*/];
7923
+ }
7924
+
7925
+ this._scheduleResize = false;
7906
7926
  this._isResizing = true;
7907
7927
  viewport = this._viewport;
7908
7928
  renderer = this._renderer;
@@ -7968,6 +7988,10 @@ var Flicking = /*#__PURE__*/function (_super) {
7968
7988
  element: viewport.element
7969
7989
  }));
7970
7990
  this._isResizing = false;
7991
+ // 연속으로 resize를 호출하는 경우를 대비하기 위해서 스케줄링 반영
7992
+ if (this._scheduleResize) {
7993
+ this.resize();
7994
+ }
7971
7995
  return [2 /*return*/];
7972
7996
  }
7973
7997
  });
@@ -8187,7 +8211,7 @@ var Flicking = /*#__PURE__*/function (_super) {
8187
8211
  * Flicking.VERSION; // ex) 4.0.0
8188
8212
  * ```
8189
8213
  */
8190
- Flicking.VERSION = "4.14.2-beta.1";
8214
+ Flicking.VERSION = "4.15.0";
8191
8215
  return Flicking;
8192
8216
  }(Component);
8193
8217
 
@@ -8706,8 +8730,8 @@ var getRenderingPanels = (function (flicking, diffResult) {
8706
8730
  var renderingPanels = flicking.panels.filter(function (panel) {
8707
8731
  return !removedPanels[panel.index];
8708
8732
  });
8709
- if (!flicking.useCSSOrderProperty) {
8710
- // useCSSOrderProperty를 사용하게 되는 경우 sort를 하지 않는다.
8733
+ if (!flicking.useCSSOrder) {
8734
+ // useCSSOrder를 사용하게 되는 경우 sort를 하지 않는다.
8711
8735
  renderingPanels.sort(function (panel1, panel2) {
8712
8736
  return panel1.position + panel1.offset - (panel2.position + panel2.offset);
8713
8737
  });