@egjs/flicking 4.4.2 → 4.6.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.
Files changed (57) hide show
  1. package/TODO.md +3 -0
  2. package/declaration/Flicking.d.ts +15 -2
  3. package/declaration/camera/Camera.d.ts +28 -26
  4. package/declaration/camera/index.d.ts +2 -4
  5. package/declaration/camera/mode/BoundCameraMode.d.ts +13 -0
  6. package/declaration/camera/mode/CameraMode.d.ts +19 -0
  7. package/declaration/camera/mode/CircularCameraMode.d.ts +18 -0
  8. package/declaration/camera/mode/LinearCameraMode.d.ts +9 -0
  9. package/declaration/camera/mode/index.d.ts +6 -0
  10. package/declaration/const/external.d.ts +4 -0
  11. package/declaration/control/StrictControl.d.ts +1 -0
  12. package/declaration/core/AutoResizer.d.ts +3 -0
  13. package/declaration/core/ResizeWatcher.d.ts +33 -0
  14. package/declaration/renderer/Renderer.d.ts +13 -0
  15. package/declaration/type/external.d.ts +1 -3
  16. package/{css → dist/css}/flicking-inline.css +20 -13
  17. package/dist/css/flicking-inline.min.css +1 -0
  18. package/dist/css/flicking.css +44 -0
  19. package/dist/css/flicking.min.css +1 -0
  20. package/dist/flicking.esm.js +1491 -1251
  21. package/dist/flicking.esm.js.map +1 -1
  22. package/dist/flicking.js +1494 -1253
  23. package/dist/flicking.js.map +1 -1
  24. package/dist/flicking.min.js +2 -2
  25. package/dist/flicking.min.js.map +1 -1
  26. package/dist/flicking.pkgd.js +1466 -1225
  27. package/dist/flicking.pkgd.js.map +1 -1
  28. package/dist/flicking.pkgd.min.js +2 -2
  29. package/dist/flicking.pkgd.min.js.map +1 -1
  30. package/package.json +17 -7
  31. package/sass/flicking-inline.sass +30 -0
  32. package/sass/flicking.sass +23 -0
  33. package/src/Flicking.ts +127 -35
  34. package/src/camera/Camera.ts +162 -81
  35. package/src/camera/index.ts +3 -7
  36. package/src/camera/{BoundCamera.ts → mode/BoundCameraMode.ts} +46 -43
  37. package/src/camera/mode/CameraMode.ts +77 -0
  38. package/src/camera/mode/CircularCameraMode.ts +171 -0
  39. package/src/camera/mode/LinearCameraMode.ts +23 -0
  40. package/src/camera/mode/index.ts +14 -0
  41. package/src/cfc/sync.ts +29 -23
  42. package/src/cfc/withFlickingMethods.ts +3 -2
  43. package/src/const/external.ts +12 -0
  44. package/src/control/StrictControl.ts +10 -0
  45. package/src/core/AutoResizer.ts +33 -0
  46. package/src/core/ResizeWatcher.ts +133 -0
  47. package/src/renderer/Renderer.ts +92 -43
  48. package/css/flicking.css +0 -28
  49. package/declaration/camera/BoundCamera.d.ts +0 -9
  50. package/declaration/camera/CircularCamera.d.ts +0 -37
  51. package/declaration/camera/LinearCamera.d.ts +0 -5
  52. package/dist/flicking-inline.css +0 -2
  53. package/dist/flicking-inline.css.map +0 -1
  54. package/dist/flicking.css +0 -2
  55. package/dist/flicking.css.map +0 -1
  56. package/src/camera/CircularCamera.ts +0 -268
  57. package/src/camera/LinearCamera.ts +0 -35
package/TODO.md ADDED
@@ -0,0 +1,3 @@
1
+ ## React 18 대응
2
+ - [] updateoffset을 미루기
3
+ - render가 완료되기 전에 updateOffset이 3번 호출되었음
@@ -5,7 +5,7 @@ import VirtualManager, { VirtualOptions } from "./core/VirtualManager";
5
5
  import { Control } from "./control";
6
6
  import { Camera } from "./camera";
7
7
  import { Renderer, ExternalRenderer, RendererOptions } from "./renderer";
8
- import { EVENTS, ALIGN, MOVE_TYPE, DIRECTION } from "./const/external";
8
+ import { EVENTS, ALIGN, MOVE_TYPE, DIRECTION, CIRCULAR_FALLBACK } from "./const/external";
9
9
  import { HoldStartEvent, HoldEndEvent, MoveStartEvent, SelectEvent, MoveEvent, MoveEndEvent, WillChangeEvent, WillRestoreEvent, NeedPanelEvent, VisibleChangeEvent, ReachEdgeEvent, ReadyEvent, AfterResizeEvent, BeforeResizeEvent, ChangedEvent, RestoredEvent, PanelChangeEvent } from "./type/event";
10
10
  import { LiteralUnion, ValueOf } from "./type/internal";
11
11
  import { ElementLike, Plugin, Status, MoveTypeOptions } from "./type/external";
@@ -36,6 +36,7 @@ export interface FlickingOptions {
36
36
  defaultIndex: number;
37
37
  horizontal: boolean;
38
38
  circular: boolean;
39
+ circularFallback: LiteralUnion<ValueOf<typeof CIRCULAR_FALLBACK>>;
39
40
  bound: boolean;
40
41
  adaptive: boolean;
41
42
  panelsPerView: number;
@@ -59,6 +60,8 @@ export interface FlickingOptions {
59
60
  autoInit: boolean;
60
61
  autoResize: boolean;
61
62
  useResizeObserver: boolean;
63
+ resizeDebounce: number;
64
+ maxResizeDebounce: number;
62
65
  externalRenderer: ExternalRenderer | null;
63
66
  renderExternal: {
64
67
  renderer: new (options: RendererOptions) => ExternalRenderer;
@@ -77,6 +80,7 @@ declare class Flicking extends Component<FlickingEvents> {
77
80
  private _defaultIndex;
78
81
  private _horizontal;
79
82
  private _circular;
83
+ private _circularFallback;
80
84
  private _bound;
81
85
  private _adaptive;
82
86
  private _panelsPerView;
@@ -100,6 +104,8 @@ declare class Flicking extends Component<FlickingEvents> {
100
104
  private _autoInit;
101
105
  private _autoResize;
102
106
  private _useResizeObserver;
107
+ private _resizeDebounce;
108
+ private _maxResizeDebounce;
103
109
  private _externalRenderer;
104
110
  private _renderExternal;
105
111
  private _initialized;
@@ -124,6 +130,10 @@ declare class Flicking extends Component<FlickingEvents> {
124
130
  get defaultIndex(): FlickingOptions["defaultIndex"];
125
131
  get horizontal(): FlickingOptions["horizontal"];
126
132
  get circular(): FlickingOptions["circular"];
133
+ get circularFallback(): LiteralUnion<ValueOf<{
134
+ readonly LINEAR: "linear";
135
+ readonly BOUND: "bound";
136
+ }>, string>;
127
137
  get bound(): FlickingOptions["bound"];
128
138
  get adaptive(): FlickingOptions["adaptive"];
129
139
  get panelsPerView(): FlickingOptions["panelsPerView"];
@@ -147,6 +157,8 @@ declare class Flicking extends Component<FlickingEvents> {
147
157
  get autoInit(): boolean;
148
158
  get autoResize(): FlickingOptions["autoResize"];
149
159
  get useResizeObserver(): FlickingOptions["useResizeObserver"];
160
+ get resizeDebounce(): number;
161
+ get maxResizeDebounce(): number;
150
162
  get externalRenderer(): ExternalRenderer;
151
163
  get renderExternal(): {
152
164
  renderer: new (options: RendererOptions) => ExternalRenderer;
@@ -177,7 +189,7 @@ declare class Flicking extends Component<FlickingEvents> {
177
189
  set renderOnlyVisible(val: FlickingOptions["renderOnlyVisible"]);
178
190
  set autoResize(val: FlickingOptions["autoResize"]);
179
191
  set useResizeObserver(val: FlickingOptions["useResizeObserver"]);
180
- constructor(root: HTMLElement | string, { align, defaultIndex, horizontal, circular, bound, adaptive, panelsPerView, noPanelStyleOverride, resizeOnContentsReady, needPanelThreshold, preventEventsBeforeInit, deceleration, duration, easing, inputType, moveType, threshold, interruptable, bounce, iOSEdgeSwipeThreshold, preventClickOnDrag, disableOnInit, renderOnlyVisible, virtual, autoInit, autoResize, useResizeObserver, externalRenderer, renderExternal }?: Partial<FlickingOptions>);
192
+ constructor(root: HTMLElement | string, { align, defaultIndex, horizontal, circular, circularFallback, bound, adaptive, panelsPerView, noPanelStyleOverride, resizeOnContentsReady, needPanelThreshold, preventEventsBeforeInit, deceleration, duration, easing, inputType, moveType, threshold, interruptable, bounce, iOSEdgeSwipeThreshold, preventClickOnDrag, disableOnInit, renderOnlyVisible, virtual, autoInit, autoResize, useResizeObserver, resizeDebounce, maxResizeDebounce, externalRenderer, renderExternal }?: Partial<FlickingOptions>);
181
193
  init(): Promise<void>;
182
194
  destroy(): void;
183
195
  prev(duration?: number): Promise<void>;
@@ -206,5 +218,6 @@ declare class Flicking extends Component<FlickingEvents> {
206
218
  private _createExternalRenderer;
207
219
  private _createVanillaRenderer;
208
220
  private _moveToInitialPanel;
221
+ private _initialResize;
209
222
  }
210
223
  export default Flicking;
@@ -1,32 +1,32 @@
1
1
  import Flicking, { FlickingOptions } from "../Flicking";
2
2
  import Panel from "../core/panel/Panel";
3
3
  import AnchorPoint from "../core/AnchorPoint";
4
+ import { CameraMode } from "./mode";
4
5
  export interface CameraOptions {
5
6
  align: FlickingOptions["align"];
6
7
  }
7
- declare abstract class Camera {
8
- protected _align: FlickingOptions["align"];
9
- protected _flicking: Flicking | null;
10
- protected _el: HTMLElement;
11
- protected _transform: string;
12
- protected _position: number;
13
- protected _alignPos: number;
14
- protected _offset: number;
15
- protected _range: {
16
- min: number;
17
- max: number;
18
- };
19
- protected _visiblePanels: Panel[];
20
- protected _anchors: AnchorPoint[];
21
- protected _needPanelTriggered: {
22
- prev: boolean;
23
- next: boolean;
24
- };
8
+ declare class Camera {
9
+ private _align;
10
+ private _flicking;
11
+ private _mode;
12
+ private _el;
13
+ private _transform;
14
+ private _position;
15
+ private _alignPos;
16
+ private _offset;
17
+ private _circularOffset;
18
+ private _circularEnabled;
19
+ private _range;
20
+ private _visiblePanels;
21
+ private _anchors;
22
+ private _needPanelTriggered;
25
23
  get element(): HTMLElement;
26
24
  get children(): HTMLElement[];
27
25
  get position(): number;
28
26
  get alignPosition(): number;
29
27
  get offset(): number;
28
+ get circularEnabled(): boolean;
29
+ get mode(): CameraMode;
30
30
  get range(): {
31
31
  min: number;
32
32
  max: number;
@@ -51,9 +51,8 @@ declare abstract class Camera {
51
51
  get progress(): number;
52
52
  get align(): FlickingOptions["align"];
53
53
  set align(val: FlickingOptions["align"]);
54
- constructor({ align }?: Partial<CameraOptions>);
55
- abstract updateRange(): this;
56
- init(flicking: Flicking): this;
54
+ constructor(flicking: Flicking, { align }?: Partial<CameraOptions>);
55
+ init(): this;
57
56
  destroy(): this;
58
57
  lookAt(pos: number): void;
59
58
  getPrevAnchor(anchor: AnchorPoint): AnchorPoint | null;
@@ -65,16 +64,19 @@ declare abstract class Camera {
65
64
  clampToReachablePosition(position: number): number;
66
65
  canReach(panel: Panel): boolean;
67
66
  canSee(panel: Panel): boolean;
67
+ updateRange(): this;
68
68
  updateAlignPos(): this;
69
69
  updateAnchors(): this;
70
70
  updateAdaptiveHeight(): void;
71
71
  updateOffset(): this;
72
72
  resetNeedPanelHistory(): this;
73
73
  applyTransform(): this;
74
- protected _resetInternalValues(): void;
75
- protected _refreshVisiblePanels(): void;
76
- protected _checkNeedPanel(): void;
77
- protected _checkReachEnd(prevPos: number, newPos: number): void;
78
- protected _checkTranslateSupport: () => void;
74
+ private _resetInternalValues;
75
+ private _refreshVisiblePanels;
76
+ private _checkNeedPanel;
77
+ private _checkReachEnd;
78
+ private _checkTranslateSupport;
79
+ private _updateMode;
80
+ private _togglePanels;
79
81
  }
80
82
  export default Camera;
@@ -1,6 +1,4 @@
1
1
  import Camera, { CameraOptions } from "./Camera";
2
- import LinearCamera from "./LinearCamera";
3
- import CircularCamera from "./CircularCamera";
4
- import BoundCamera from "./BoundCamera";
5
- export { Camera, LinearCamera, CircularCamera, BoundCamera };
2
+ export { Camera };
6
3
  export type { CameraOptions };
4
+ export * from "./mode";
@@ -0,0 +1,13 @@
1
+ import AnchorPoint from "../../core/AnchorPoint";
2
+ import CameraMode from "./CameraMode";
3
+ declare class BoundCameraMode extends CameraMode {
4
+ checkAvailability(): boolean;
5
+ getRange(): {
6
+ min: number;
7
+ max: number;
8
+ };
9
+ getAnchors(): AnchorPoint[];
10
+ findAnchorIncludePosition(position: number): AnchorPoint | null;
11
+ private _findNearestPanel;
12
+ }
13
+ export default BoundCameraMode;
@@ -0,0 +1,19 @@
1
+ import Flicking from "../../Flicking";
2
+ import Panel from "../../core/panel/Panel";
3
+ import AnchorPoint from "../../core/AnchorPoint";
4
+ declare abstract class CameraMode {
5
+ protected _flicking: Flicking;
6
+ constructor(flicking: Flicking);
7
+ abstract checkAvailability(): boolean;
8
+ abstract getRange(): {
9
+ min: number;
10
+ max: number;
11
+ };
12
+ getAnchors(): AnchorPoint[];
13
+ findAnchorIncludePosition(position: number): AnchorPoint | null;
14
+ clampToReachablePosition(position: number): number;
15
+ getCircularOffset(): number;
16
+ canReach(panel: Panel): boolean;
17
+ canSee(panel: Panel): boolean;
18
+ }
19
+ export default CameraMode;
@@ -0,0 +1,18 @@
1
+ import Panel from "../../core/panel/Panel";
2
+ import AnchorPoint from "../../core/AnchorPoint";
3
+ import CameraMode from "./CameraMode";
4
+ declare class CircularCameraMode extends CameraMode {
5
+ checkAvailability(): boolean;
6
+ getRange(): {
7
+ min: number;
8
+ max: number;
9
+ };
10
+ getAnchors(): AnchorPoint[];
11
+ findAnchorIncludePosition(position: number): AnchorPoint | null;
12
+ getCircularOffset(): number;
13
+ clampToReachablePosition(position: number): number;
14
+ canReach(panel: Panel): boolean;
15
+ canSee(panel: Panel): boolean;
16
+ private _calcPanelAreaSum;
17
+ }
18
+ export default CircularCameraMode;
@@ -0,0 +1,9 @@
1
+ import CameraMode from "./CameraMode";
2
+ declare class LinearCameraMode extends CameraMode {
3
+ checkAvailability(): boolean;
4
+ getRange(): {
5
+ min: number;
6
+ max: number;
7
+ };
8
+ }
9
+ export default LinearCameraMode;
@@ -0,0 +1,6 @@
1
+ import CameraMode from "./CameraMode";
2
+ import LinearCameraMode from "./LinearCameraMode";
3
+ import CircularCameraMode from "./CircularCameraMode";
4
+ import BoundCameraMode from "./BoundCameraMode";
5
+ export { LinearCameraMode, CircularCameraMode, BoundCameraMode };
6
+ export type { CameraMode };
@@ -38,3 +38,7 @@ export declare const CLASS: {
38
38
  HIDDEN: string;
39
39
  DEFAULT_VIRTUAL: string;
40
40
  };
41
+ export declare const CIRCULAR_FALLBACK: {
42
+ readonly LINEAR: "linear";
43
+ readonly BOUND: "bound";
44
+ };
@@ -12,6 +12,7 @@ declare class StrictControl extends Control {
12
12
  constructor({ count }?: Partial<StrictControlOptions>);
13
13
  destroy(): void;
14
14
  updateInput(): this;
15
+ moveToPanel(panel: Panel, options: Parameters<Control["moveToPanel"]>[1]): Promise<void>;
15
16
  moveToPosition(position: number, duration: number, axesEvent?: OnRelease): Promise<void>;
16
17
  setActive: (newActivePanel: Panel, prevActivePanel: Panel | null, isTrusted: boolean) => void;
17
18
  private _resetIndexRange;
@@ -3,11 +3,14 @@ declare class AutoResizer {
3
3
  private _flicking;
4
4
  private _enabled;
5
5
  private _resizeObserver;
6
+ private _resizeTimer;
7
+ private _maxResizeDebounceTimer;
6
8
  get enabled(): boolean;
7
9
  constructor(flicking: Flicking);
8
10
  enable(): this;
9
11
  disable(): this;
10
12
  private _onResize;
13
+ private _doScheduledResize;
11
14
  private _skipFirstResize;
12
15
  }
13
16
  export default AutoResizer;
@@ -0,0 +1,33 @@
1
+ export interface ResizeWatherOptions {
2
+ resizeDebounce?: number;
3
+ maxResizeDebounce?: number;
4
+ useResizeObserver?: boolean;
5
+ useWindowResize?: boolean;
6
+ watchDirection?: "width" | "height" | "box" | false;
7
+ rectBox?: "border-box" | "content-box";
8
+ }
9
+ declare class ResizeWatcher {
10
+ private _container;
11
+ private _rect;
12
+ private _resizeTimer;
13
+ private _maxResizeDebounceTimer;
14
+ private _emitter;
15
+ private _observer;
16
+ private _options;
17
+ constructor(container: HTMLElement | string, options?: ResizeWatherOptions);
18
+ getRect(): {
19
+ width: number;
20
+ height: number;
21
+ };
22
+ setRect(rect: {
23
+ width: number;
24
+ height: number;
25
+ }): void;
26
+ resize(): void;
27
+ listen(callback: () => void): this;
28
+ destroy(): void;
29
+ private _init;
30
+ private _onResize;
31
+ private _scheduleResize;
32
+ }
33
+ export default ResizeWatcher;
@@ -8,9 +8,11 @@ export interface RendererOptions {
8
8
  declare abstract class Renderer {
9
9
  protected _flicking: Flicking | null;
10
10
  protected _panels: Panel[];
11
+ protected _rendering: boolean;
11
12
  protected _align: NonNullable<RendererOptions["align"]>;
12
13
  protected _strategy: RendererOptions["strategy"];
13
14
  get panels(): Panel[];
15
+ get rendering(): boolean;
14
16
  get panelCount(): number;
15
17
  get strategy(): RenderingStrategy;
16
18
  get align(): NonNullable<RendererOptions["align"]>;
@@ -29,11 +31,22 @@ declare abstract class Renderer {
29
31
  elements: any[];
30
32
  hasDOMInElements: boolean;
31
33
  }>): Panel[];
34
+ batchInsertDefer(...items: Array<{
35
+ index: number;
36
+ elements: any[];
37
+ hasDOMInElements: boolean;
38
+ }>): any[];
32
39
  batchRemove(...items: Array<{
33
40
  index: number;
34
41
  deleteCount: number;
35
42
  hasDOMInElements: boolean;
36
43
  }>): Panel[];
44
+ batchRemoveDefer(...items: Array<{
45
+ index: number;
46
+ deleteCount: number;
47
+ hasDOMInElements: boolean;
48
+ }>): any[];
49
+ updateAfterPanelChange(panelsAdded: Panel[], panelsRemoved: Panel[]): void;
37
50
  checkPanelContentsReady(checkingPanels: Panel[]): void;
38
51
  protected _updateCameraAndControl(): void;
39
52
  protected _showOnlyVisiblePanels(flicking: Flicking): void;
@@ -20,9 +20,7 @@ export interface Status {
20
20
  html?: string;
21
21
  }>;
22
22
  }
23
- export declare type MoveTypeOptions<T extends ValueOf<typeof MOVE_TYPE>> = T extends typeof MOVE_TYPE.SNAP ? [T] | [T, Partial<SnapControlOptions>] : T extends typeof MOVE_TYPE.FREE_SCROLL ? [T] | [T, Partial<FreeControlOptions>] : T extends typeof MOVE_TYPE.STRICT ? [T] | [T, Partial<StrictControlOptions>] : [
24
- T
25
- ];
23
+ export declare type MoveTypeOptions<T extends ValueOf<typeof MOVE_TYPE>> = T extends typeof MOVE_TYPE.SNAP ? [T] | [T, Partial<SnapControlOptions>] : T extends typeof MOVE_TYPE.FREE_SCROLL ? [T] | [T, Partial<FreeControlOptions>] : T extends typeof MOVE_TYPE.STRICT ? [T] | [T, Partial<StrictControlOptions>] : [T];
26
24
  export interface ControlParams {
27
25
  range: {
28
26
  min: number;
@@ -2,37 +2,44 @@
2
2
  position: relative;
3
3
  overflow: hidden;
4
4
  }
5
+
5
6
  .flicking-viewport:not(.vertical) {
6
7
  width: 100%;
7
8
  height: 100%;
8
9
  }
9
- .flicking-camera {
10
- width: 100%;
11
- height: 100%;
12
- position: relative;
13
- z-index: 1;
14
- white-space: nowrap;
15
- will-change: transform;
16
- }
17
10
 
18
- .flicking-camera>* {
19
- display: inline-block;
20
- white-space: normal;
21
- vertical-align: top;
22
- }
23
11
  .flicking-viewport.vertical,
24
12
  .flicking-viewport.vertical > .flicking-camera {
25
13
  display: inline-block;
26
14
  }
15
+
27
16
  .flicking-viewport.vertical.middle > .flicking-camera > * {
28
17
  vertical-align: middle;
29
18
  }
19
+
30
20
  .flicking-viewport.vertical.bottom > .flicking-camera > * {
31
21
  vertical-align: bottom;
32
22
  }
23
+
33
24
  .flicking-viewport.vertical > .flicking-camera > * {
34
25
  display: block;
35
26
  }
27
+
36
28
  .flicking-viewport.flicking-hidden > .flicking-camera > * {
37
29
  visibility: hidden;
38
30
  }
31
+
32
+ .flicking-camera {
33
+ width: 100%;
34
+ height: 100%;
35
+ position: relative;
36
+ z-index: 1;
37
+ white-space: nowrap;
38
+ will-change: transform;
39
+ }
40
+
41
+ .flicking-camera > * {
42
+ display: inline-block;
43
+ white-space: normal;
44
+ vertical-align: top;
45
+ }
@@ -0,0 +1 @@
1
+ .flicking-viewport{position:relative;overflow:hidden}.flicking-viewport:not(.vertical){width:100%;height:100%}.flicking-viewport.vertical,.flicking-viewport.vertical>.flicking-camera{display:inline-block}.flicking-viewport.vertical.middle>.flicking-camera>*{vertical-align:middle}.flicking-viewport.vertical.bottom>.flicking-camera>*{vertical-align:bottom}.flicking-viewport.vertical>.flicking-camera>*{display:block}.flicking-viewport.flicking-hidden>.flicking-camera>*{visibility:hidden}.flicking-camera{width:100%;height:100%;position:relative;z-index:1;white-space:nowrap;will-change:transform}.flicking-camera>*{display:inline-block;white-space:normal;vertical-align:top}
@@ -0,0 +1,44 @@
1
+ .flicking-viewport {
2
+ position: relative;
3
+ overflow: hidden;
4
+ }
5
+
6
+ .flicking-viewport.vertical {
7
+ display: -webkit-inline-box;
8
+ display: -ms-inline-flexbox;
9
+ display: inline-flex;
10
+ }
11
+
12
+ .flicking-viewport.vertical > .flicking-camera {
13
+ display: -webkit-inline-box;
14
+ display: -ms-inline-flexbox;
15
+ display: inline-flex;
16
+ -webkit-box-orient: vertical;
17
+ -webkit-box-direction: normal;
18
+ -ms-flex-direction: column;
19
+ flex-direction: column;
20
+ }
21
+
22
+ .flicking-viewport.flicking-hidden > .flicking-camera > * {
23
+ visibility: hidden;
24
+ }
25
+
26
+ .flicking-camera {
27
+ width: 100%;
28
+ height: 100%;
29
+ display: -webkit-box;
30
+ display: -ms-flexbox;
31
+ display: flex;
32
+ position: relative;
33
+ -webkit-box-orient: horizontal;
34
+ -webkit-box-direction: normal;
35
+ -ms-flex-direction: row;
36
+ flex-direction: row;
37
+ z-index: 1;
38
+ will-change: transform;
39
+ }
40
+
41
+ .flicking-camera > * {
42
+ -ms-flex-negative: 0;
43
+ flex-shrink: 0;
44
+ }
@@ -0,0 +1 @@
1
+ .flicking-viewport{position:relative;overflow:hidden}.flicking-viewport.vertical{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.flicking-viewport.vertical>.flicking-camera{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.flicking-viewport.flicking-hidden>.flicking-camera>*{visibility:hidden}.flicking-camera{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;z-index:1;will-change:transform}.flicking-camera>*{-ms-flex-negative:0;flex-shrink:0}