@egjs/flicking 4.11.4 → 4.11.5-beta.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@egjs/flicking",
3
- "version": "4.11.4",
3
+ "version": "4.11.5-beta.1",
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
@@ -218,6 +218,13 @@ class Flicking extends Component<FlickingEvents> {
218
218
  * @see Viewport
219
219
  */
220
220
  public get viewport() { return this._viewport; }
221
+ /**
222
+ * {@link AutoResizer} instance of the Flicking
223
+ * @ko 현재 Flicking에 활성화된 {@link AutoResizer} 인스턴스
224
+ * @internal
225
+ * @readonly
226
+ */
227
+ public get autoResizer() { return this._autoResizer; }
221
228
  // Internal States
222
229
  /**
223
230
  * Whether Flicking's {@link Flicking#init init()} is called.
@@ -906,6 +913,10 @@ class Flicking extends Component<FlickingEvents> {
906
913
  public set autoResize(val: FlickingOptions["autoResize"]) {
907
914
  this._autoResize = val;
908
915
 
916
+ if (!this._initialized) {
917
+ return;
918
+ }
919
+
909
920
  if (val) {
910
921
  this._autoResizer.enable();
911
922
  } else {
@@ -916,7 +927,7 @@ class Flicking extends Component<FlickingEvents> {
916
927
  public set useResizeObserver(val: FlickingOptions["useResizeObserver"]) {
917
928
  this._useResizeObserver = val;
918
929
 
919
- if (this._autoResize) {
930
+ if (this._initialized && this._autoResize) {
920
931
  this._autoResizer.enable();
921
932
  }
922
933
  }
@@ -4,6 +4,10 @@
4
4
  */
5
5
  import Flicking from "../Flicking";
6
6
 
7
+ /**
8
+ * A component that detects size change and trigger resize method when the autoResize option is used
9
+ * @ko autoResize 옵션을 사용할 때 크기 변화를 감지하고 Flicking의 resize를 호출하는 컴포넌트
10
+ */
7
11
  class AutoResizer {
8
12
  private _flicking: Flicking;
9
13
  private _enabled: boolean;
@@ -36,7 +40,11 @@ class AutoResizer {
36
40
  ? new ResizeObserver(this._skipFirstResize)
37
41
  : new ResizeObserver(this._onResize);
38
42
 
39
- resizeObserver.observe(flicking.viewport.element);
43
+ [
44
+ flicking.viewport.element,
45
+ flicking.camera.element,
46
+ ...flicking.panels.map(panel => panel.element)
47
+ ].forEach((element) => { resizeObserver.observe(element); });
40
48
 
41
49
  this._resizeObserver = resizeObserver;
42
50
  } else {
@@ -64,6 +72,13 @@ class AutoResizer {
64
72
  return this;
65
73
  }
66
74
 
75
+ public observe(element: Element): this {
76
+ if (this._resizeObserver) {
77
+ this._resizeObserver.observe(element);
78
+ }
79
+ return this;
80
+ }
81
+
67
82
  private _onResize = () => {
68
83
  const flicking = this._flicking;
69
84
  const resizeDebounce = flicking.resizeDebounce;
@@ -335,6 +335,12 @@ abstract class Renderer {
335
335
  // Update camera & control
336
336
  this._updateCameraAndControl();
337
337
 
338
+ if (flicking.autoResize && flicking.useResizeObserver) {
339
+ panelsAdded.forEach((panel) => {
340
+ flicking.autoResizer.observe(panel.element);
341
+ });
342
+ }
343
+
338
344
  void this.render();
339
345
 
340
346
  if (!flicking.animating) {