@@ -91,6 +91,7 @@ export interface FlickingOptions {
9191 autoResize : boolean ;
9292 useResizeObserver : boolean ;
9393 resizeDebounce : number ;
94+ resizePanelObserve : boolean ;
9495 maxResizeDebounce : number ;
9596 useFractionalSize : boolean ;
9697 externalRenderer : ExternalRenderer | null ;
@@ -168,6 +169,7 @@ class Flicking extends Component<FlickingEvents> {
168169 private _autoResize : FlickingOptions [ "autoResize" ] ;
169170 private _useResizeObserver : FlickingOptions [ "useResizeObserver" ] ;
170171 private _resizeDebounce : FlickingOptions [ "resizeDebounce" ] ;
172+ private _resizePanelObserve : FlickingOptions [ "resizePanelObserve" ] ;
171173 private _maxResizeDebounce : FlickingOptions [ "maxResizeDebounce" ] ;
172174 private _useFractionalSize : FlickingOptions [ "useFractionalSize" ] ;
173175 private _externalRenderer : FlickingOptions [ "externalRenderer" ] ;
@@ -220,6 +222,13 @@ class Flicking extends Component<FlickingEvents> {
220222 * @see Viewport
221223 */
222224 public get viewport ( ) { return this . _viewport ; }
225+ /**
226+ * {@link AutoResizer } instance of the Flicking
227+ * @ko 현재 Flicking에 활성화된 {@link AutoResizer} 인스턴스
228+ * @internal
229+ * @readonly
230+ */
231+ public get autoResizer ( ) { return this . _autoResizer ; }
223232 // Internal States
224233 /**
225234 * Whether Flicking's {@link Flicking#init init()} is called.
@@ -695,6 +704,15 @@ class Flicking extends Component<FlickingEvents> {
695704 * @see {@link https://naver.github.io/egjs-flicking/Options#useresizeobserver useResizeObserver ( Options ) }
696705 */
697706 public get useResizeObserver ( ) { return this . _useResizeObserver ; }
707+ /**
708+ * Whether to use {@link https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver ResizeObserver} to observe the size of the panel element
709+ * This is only available when `useResizeObserver` is enabled.
710+ * This option garantees that the resize event is triggered when the size of the panel element is changed.
711+ * @ko 이 옵션을 활성화할 경우, {@link https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver ResizeObserver}를 사용하여 패널 엘리먼트의 크기를 추적합니다.
712+ * 이 옵션은 `useResizeObserver` 옵션이 활성화된 경우에만 사용할 수 있습니다.
713+ * 이 옵션은 패널 엘리먼트의 크기가 변경될 경우 resize 이벤트가 발생하도록 보장합니다.
714+ */
715+ public get resizePanelObserve ( ) { return this . _resizePanelObserve ; }
698716 /**
699717 * Delays size recalculation from `autoResize` by the given time in milisecond.
700718 * If the size is changed again while being delayed, it cancels the previous one and delays from the beginning again.
@@ -926,6 +944,10 @@ class Flicking extends Component<FlickingEvents> {
926944 public set autoResize ( val : FlickingOptions [ "autoResize" ] ) {
927945 this . _autoResize = val ;
928946
947+ if ( ! this . _initialized ) {
948+ return ;
949+ }
950+
929951 if ( val ) {
930952 this . _autoResizer . enable ( ) ;
931953 } else {
@@ -936,11 +958,23 @@ class Flicking extends Component<FlickingEvents> {
936958 public set useResizeObserver ( val : FlickingOptions [ "useResizeObserver" ] ) {
937959 this . _useResizeObserver = val ;
938960
939- if ( this . _autoResize ) {
961+ if ( this . _initialized && this . _autoResize ) {
940962 this . _autoResizer . enable ( ) ;
941963 }
942964 }
943965
966+ public set resizePanelObserve ( val : FlickingOptions [ "resizePanelObserve" ] ) {
967+ this . _resizePanelObserve = val ;
968+
969+ if ( this . _initialized && this . _autoResize ) {
970+ if ( val ) {
971+ this . _autoResizer . observePanels ( ) ;
972+ } else {
973+ this . _autoResizer . unobservePanels ( ) ;
974+ }
975+ }
976+ }
977+
944978 /**
945979 * @param root A root HTMLElement to initialize Flicking on it. When it's a typeof `string`, it should be a css selector string
946980 * <ko>Flicking을 초기화할 HTMLElement로, `string` 타입으로 지정시 css 선택자 문자열을 지정해야 합니다.</ko>
@@ -1003,6 +1037,7 @@ class Flicking extends Component<FlickingEvents> {
10031037 autoResize = true ,
10041038 useResizeObserver = true ,
10051039 resizeDebounce = 0 ,
1040+ resizePanelObserve = false ,
10061041 maxResizeDebounce = 100 ,
10071042 useFractionalSize = false ,
10081043 externalRenderer = null ,
@@ -1049,6 +1084,7 @@ class Flicking extends Component<FlickingEvents> {
10491084 this . _useResizeObserver = useResizeObserver ;
10501085 this . _resizeDebounce = resizeDebounce ;
10511086 this . _maxResizeDebounce = maxResizeDebounce ;
1087+ this . _resizePanelObserve = resizePanelObserve ;
10521088 this . _useFractionalSize = useFractionalSize ;
10531089 this . _externalRenderer = externalRenderer ;
10541090 this . _renderExternal = renderExternal ;
0 commit comments