@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.
@@ -54,7 +54,7 @@ export interface FlickingOptions {
54
54
  threshold: number;
55
55
  dragThreshold: number;
56
56
  animationThreshold: number;
57
- useCSSOrderProperty: boolean;
57
+ useCSSOrder: boolean;
58
58
  interruptable: boolean;
59
59
  bounce: number | string | [number | string, number | string];
60
60
  iOSEdgeSwipeThreshold: number;
@@ -108,7 +108,7 @@ declare class Flicking extends Component<FlickingEvents> {
108
108
  private _threshold;
109
109
  private _dragThreshold;
110
110
  private _animationThreshold;
111
- private _useCSSOrderProperty;
111
+ private _useCSSOrder;
112
112
  private _interruptable;
113
113
  private _bounce;
114
114
  private _iOSEdgeSwipeThreshold;
@@ -130,6 +130,7 @@ declare class Flicking extends Component<FlickingEvents> {
130
130
  private _initialized;
131
131
  private _plugins;
132
132
  private _isResizing;
133
+ private _scheduleResize;
133
134
  get control(): Control;
134
135
  get camera(): Camera;
135
136
  get renderer(): Renderer;
@@ -171,7 +172,7 @@ declare class Flicking extends Component<FlickingEvents> {
171
172
  get threshold(): FlickingOptions["threshold"];
172
173
  get dragThreshold(): FlickingOptions["dragThreshold"];
173
174
  get animationThreshold(): FlickingOptions["animationThreshold"];
174
- get useCSSOrderProperty(): FlickingOptions["useCSSOrderProperty"];
175
+ get useCSSOrder(): FlickingOptions["useCSSOrder"];
175
176
  get interruptable(): FlickingOptions["interruptable"];
176
177
  get bounce(): FlickingOptions["bounce"];
177
178
  get iOSEdgeSwipeThreshold(): FlickingOptions["iOSEdgeSwipeThreshold"];
@@ -214,7 +215,7 @@ declare class Flicking extends Component<FlickingEvents> {
214
215
  set threshold(val: FlickingOptions["threshold"]);
215
216
  set dragThreshold(val: FlickingOptions["dragThreshold"]);
216
217
  set animationThreshold(val: FlickingOptions["animationThreshold"]);
217
- set useCSSOrderProperty(val: FlickingOptions["useCSSOrderProperty"]);
218
+ set useCSSOrder(val: FlickingOptions["useCSSOrder"]);
218
219
  set interruptable(val: FlickingOptions["interruptable"]);
219
220
  set bounce(val: FlickingOptions["bounce"]);
220
221
  set iOSEdgeSwipeThreshold(val: FlickingOptions["iOSEdgeSwipeThreshold"]);
@@ -227,7 +228,7 @@ declare class Flicking extends Component<FlickingEvents> {
227
228
  set useResizeObserver(val: FlickingOptions["useResizeObserver"]);
228
229
  set observePanelResize(val: FlickingOptions["observePanelResize"]);
229
230
  set optimizeSizeUpdate(val: FlickingOptions["optimizeSizeUpdate"]);
230
- constructor(root: HTMLElement | string, { align, defaultIndex, horizontal, circular, circularFallback, bound, adaptive, panelsPerView, noPanelStyleOverride, resizeOnContentsReady, nested, needPanelThreshold, preventEventsBeforeInit, deceleration, duration, easing, inputType, moveType, threshold, dragThreshold, interruptable, bounce, iOSEdgeSwipeThreshold, preventClickOnDrag, preventDefaultOnDrag, disableOnInit, changeOnHold, renderOnlyVisible, virtual, autoInit, autoResize, useResizeObserver, resizeDebounce, observePanelResize, maxResizeDebounce, useFractionalSize, externalRenderer, renderExternal, optimizeSizeUpdate, animationThreshold, useCSSOrderProperty, }?: Partial<FlickingOptions>);
231
+ constructor(root: HTMLElement | string, { align, defaultIndex, horizontal, circular, circularFallback, bound, adaptive, panelsPerView, noPanelStyleOverride, resizeOnContentsReady, nested, needPanelThreshold, preventEventsBeforeInit, deceleration, duration, easing, inputType, moveType, threshold, dragThreshold, interruptable, bounce, iOSEdgeSwipeThreshold, preventClickOnDrag, preventDefaultOnDrag, disableOnInit, changeOnHold, renderOnlyVisible, virtual, autoInit, autoResize, useResizeObserver, resizeDebounce, observePanelResize, maxResizeDebounce, useFractionalSize, externalRenderer, renderExternal, optimizeSizeUpdate, animationThreshold, useCSSOrder, }?: Partial<FlickingOptions>);
231
232
  init(): Promise<void>;
232
233
  destroy(): void;
233
234
  prev(duration?: number): Promise<void>;
@@ -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
  'use strict';
10
10
 
@@ -5129,11 +5129,16 @@ var Renderer = /*#__PURE__*/function () {
5129
5129
  __proto._afterRender = function () {
5130
5130
  var flicking = getFlickingAttached(this._flicking);
5131
5131
  flicking.camera.applyTransform();
5132
- if (flicking.useCSSOrderProperty) {
5133
- // useCSSOrderProperty를 사용하는 경우 DOM은 변화가 없지만 대신 CSS Order가 추가 된다.
5134
- var panels_1 = flicking.panels;
5132
+ if (flicking.useCSSOrder) {
5133
+ // `useCSSOrder`를 사용하는 경우 DOM은 변화가 없지만 대신 css `order`값을 주입
5134
+ var renderedPanels_1 = flicking.renderer.panels.filter(function (panel) {
5135
+ return panel.rendered;
5136
+ });
5135
5137
  this._strategy.getRenderingIndexesByOrder(flicking).forEach(function (domIndex, index) {
5136
- panels_1[domIndex].element.style.order = "" + index;
5138
+ if (renderedPanels_1[domIndex].element) {
5139
+ // 방어 코드 추가
5140
+ renderedPanels_1[domIndex].element.style.order = "" + index;
5141
+ }
5137
5142
  });
5138
5143
  }
5139
5144
  };
@@ -5179,8 +5184,8 @@ var VanillaRenderer = /*#__PURE__*/function (_super) {
5179
5184
  var cameraEl = flicking.camera.element;
5180
5185
  // We're using reversed panels here as last panel should be the last element of camera element
5181
5186
  var reversedElements = [];
5182
- if (flicking.useCSSOrderProperty) {
5183
- // useCSSOrderProperty를 사용하는 경우 원본 그대로 렌더링
5187
+ if (flicking.useCSSOrder) {
5188
+ // useCSSOrder를 사용하는 경우 DOM은 변화가 없지만 대신 css `order`값을 주입
5184
5189
  reversedElements = this.getRenderedPanels().map(function (panel) {
5185
5190
  return panel.element;
5186
5191
  }).reverse();
@@ -6252,9 +6257,10 @@ var Flicking = /*#__PURE__*/function (_super) {
6252
6257
  optimizeSizeUpdate = _16 === void 0 ? false : _16,
6253
6258
  _17 = _b.animationThreshold,
6254
6259
  animationThreshold = _17 === void 0 ? 0.5 : _17,
6255
- _18 = _b.useCSSOrderProperty,
6256
- useCSSOrderProperty = _18 === void 0 ? false : _18;
6260
+ _18 = _b.useCSSOrder,
6261
+ useCSSOrder = _18 === void 0 ? false : _18;
6257
6262
  var _this = _super.call(this) || this;
6263
+ _this._scheduleResize = false;
6258
6264
  // Internal states
6259
6265
  _this._initialized = false;
6260
6266
  _this._plugins = [];
@@ -6300,7 +6306,7 @@ var Flicking = /*#__PURE__*/function (_super) {
6300
6306
  _this._renderExternal = renderExternal;
6301
6307
  _this._optimizeSizeUpdate = optimizeSizeUpdate;
6302
6308
  _this._animationThreshold = animationThreshold;
6303
- _this._useCSSOrderProperty = useCSSOrderProperty;
6309
+ _this._useCSSOrder = useCSSOrder;
6304
6310
  // Create core components
6305
6311
  _this._viewport = new Viewport(_this, getElement(root));
6306
6312
  _this._autoResizer = new AutoResizer(_this);
@@ -7029,22 +7035,23 @@ var Flicking = /*#__PURE__*/function (_super) {
7029
7035
  enumerable: false,
7030
7036
  configurable: true
7031
7037
  });
7032
- Object.defineProperty(__proto, "useCSSOrderProperty", {
7038
+ Object.defineProperty(__proto, "useCSSOrder", {
7033
7039
  /**
7034
- * 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.
7040
+ * 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.)
7035
7041
  * When using `iframe`, you can prevent reloading when the DOM order changes.
7036
- * @ko `circular`를 사용한 경우 위치에 따라 DOM의 순서가 변경된다. `useCSSOrderProperty`를 사용하면 DOM의 순서는 변경되지 않지만 `order` css가 설정되면서 화면상 순서가 바뀐다.
7042
+ * In svelte, CSS order is always used.
7043
+ * @ko `useCSSOrder`를 사용하면 DOM의 순서는 변경되지 않지만 `order` css가 설정되면서 화면상 순서가 바뀐다. (`circular`를 사용한 경우 위치에 따라 DOM의 순서가 변경된다.)
7037
7044
  * `iframe`을 사용하는 경우 DOM의 순서가 변경되면서 reload가 되는 것을 막을 수 있다.
7045
+ * svelte에서는 css order를 무조건 사용한다.
7038
7046
  * @type {boolean}
7039
- * @requires `circular`
7040
7047
  * @default false
7041
- * @see {@link https://naver.github.io/egjs-flicking/Options#useCSSOrderProperty animationThreshold ( Options )}
7048
+ * @see {@link https://naver.github.io/egjs-flicking/Options#useCSSOrder useCSSOrder ( Options )}
7042
7049
  */
7043
7050
  get: function () {
7044
- return this._useCSSOrderProperty;
7051
+ return this._useCSSOrder;
7045
7052
  },
7046
7053
  set: function (val) {
7047
- this._useCSSOrderProperty = val;
7054
+ this._useCSSOrder = val;
7048
7055
  },
7049
7056
  enumerable: false,
7050
7057
  configurable: true
@@ -7531,7 +7538,9 @@ var Flicking = /*#__PURE__*/function (_super) {
7531
7538
  this._plugins.forEach(function (plugin) {
7532
7539
  return plugin.destroy();
7533
7540
  });
7541
+ this._scheduleResize = false;
7534
7542
  this._initialized = false;
7543
+ this._isResizing = false;
7535
7544
  };
7536
7545
  /**
7537
7546
  * Move to the previous panel (current index - 1)
@@ -7896,7 +7905,7 @@ var Flicking = /*#__PURE__*/function (_super) {
7896
7905
  * @method
7897
7906
  * @fires Flicking#beforeResize
7898
7907
  * @fires Flicking#afterResize
7899
- * @return {this}
7908
+ * @return {boolean}
7900
7909
  */
7901
7910
  __proto.resize = function () {
7902
7911
  return __awaiter(this, void 0, void 0, function () {
@@ -7904,7 +7913,18 @@ var Flicking = /*#__PURE__*/function (_super) {
7904
7913
  return __generator(this, function (_a) {
7905
7914
  switch (_a.label) {
7906
7915
  case 0:
7907
- if (this._isResizing) return [2 /*return*/];
7916
+ if (!this._initialized) {
7917
+ return [2 /*return*/];
7918
+ }
7919
+
7920
+ if (this._isResizing) {
7921
+ // resize를 연속으로 발생하면 무시하기에 마지막 viewport를 사이즈를 알 수 없음.
7922
+ // resize를 1번 더 실행할 수 잇는 스케줄링 등록
7923
+ this._scheduleResize = true;
7924
+ return [2 /*return*/];
7925
+ }
7926
+
7927
+ this._scheduleResize = false;
7908
7928
  this._isResizing = true;
7909
7929
  viewport = this._viewport;
7910
7930
  renderer = this._renderer;
@@ -7970,6 +7990,10 @@ var Flicking = /*#__PURE__*/function (_super) {
7970
7990
  element: viewport.element
7971
7991
  }));
7972
7992
  this._isResizing = false;
7993
+ // 연속으로 resize를 호출하는 경우를 대비하기 위해서 스케줄링 반영
7994
+ if (this._scheduleResize) {
7995
+ this.resize();
7996
+ }
7973
7997
  return [2 /*return*/];
7974
7998
  }
7975
7999
  });
@@ -8189,7 +8213,7 @@ var Flicking = /*#__PURE__*/function (_super) {
8189
8213
  * Flicking.VERSION; // ex) 4.0.0
8190
8214
  * ```
8191
8215
  */
8192
- Flicking.VERSION = "4.14.2-beta.1";
8216
+ Flicking.VERSION = "4.15.0";
8193
8217
  return Flicking;
8194
8218
  }(Component);
8195
8219
 
@@ -8708,8 +8732,8 @@ var getRenderingPanels = (function (flicking, diffResult) {
8708
8732
  var renderingPanels = flicking.panels.filter(function (panel) {
8709
8733
  return !removedPanels[panel.index];
8710
8734
  });
8711
- if (!flicking.useCSSOrderProperty) {
8712
- // useCSSOrderProperty를 사용하게 되는 경우 sort를 하지 않는다.
8735
+ if (!flicking.useCSSOrder) {
8736
+ // useCSSOrder를 사용하게 되는 경우 sort를 하지 않는다.
8713
8737
  renderingPanels.sort(function (panel1, panel2) {
8714
8738
  return panel1.position + panel1.offset - (panel2.position + panel2.offset);
8715
8739
  });