@egjs/flicking 4.12.0-beta.1 → 4.12.0-beta.2

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.12.0-beta.1
7
+ version: 4.12.0-beta.2
8
8
  */
9
9
  import Component, { ComponentEvent } from '@egjs/component';
10
10
  import Axes, { PanInput } from '@egjs/axes';
@@ -385,6 +385,8 @@ var MOVE_TYPE = {
385
385
  STRICT: "strict"
386
386
  };
387
387
  var CLASS = {
388
+ VIEWPORT: "flicking-viewport",
389
+ CAMERA: "flicking-camera",
388
390
  VERTICAL: "vertical",
389
391
  HIDDEN: "flicking-hidden",
390
392
  DEFAULT_VIRTUAL: "flicking-panel"
@@ -7871,7 +7873,7 @@ var Flicking = /*#__PURE__*/function (_super) {
7871
7873
  * Flicking.VERSION; // ex) 4.0.0
7872
7874
  * ```
7873
7875
  */
7874
- Flicking.VERSION = "4.12.0-beta.1";
7876
+ Flicking.VERSION = "4.12.0-beta.2";
7875
7877
  return Flicking;
7876
7878
  }(Component);
7877
7879
 
@@ -7888,7 +7890,6 @@ var Flicking = /*#__PURE__*/function (_super) {
7888
7890
  var CrossFlicking = /*#__PURE__*/function (_super) {
7889
7891
  __extends(CrossFlicking, _super);
7890
7892
  // Options Setter
7891
- // UI / LAYOUT
7892
7893
  // public set align(val: FlickingOptions["align"]) {
7893
7894
  // this._align = val;
7894
7895
  // }
@@ -7960,19 +7961,55 @@ var CrossFlicking = /*#__PURE__*/function (_super) {
7960
7961
  _this._syncToCategory(e.index, _this.index);
7961
7962
  }
7962
7963
  };
7964
+ var horizontalPanels = toArray(getElement(root).children[0].children);
7963
7965
  // Internal states
7964
- _this._verticalState = [];
7966
+ _this._verticalState = _this._createVerticalState(horizontalPanels);
7965
7967
  _this._moveDirection = null;
7966
7968
  _this._nextIndex = 0;
7967
7969
  // Bind options
7968
7970
  _this._verticalOptions = verticalOptions;
7969
- return _this;
7970
7971
  // Create core components
7971
- // this._viewport = new Viewport(this, getElement(root));
7972
+ _this._verticalFlicking = _this._createVerticalFlicking(horizontalPanels);
7973
+ return _this;
7972
7974
  }
7973
7975
  var __proto = CrossFlicking.prototype;
7974
- Object.defineProperty(__proto, "verticalOptions", {
7976
+ Object.defineProperty(__proto, "verticalFlicking", {
7975
7977
  // Components
7978
+ /**
7979
+ * {@link Control} instance of the Flicking
7980
+ * @ko 현재 Flicking에 활성화된 {@link Control} 인스턴스
7981
+ * @type {Control}
7982
+ * @default SnapControl
7983
+ * @readonly
7984
+ * @see Control
7985
+ * @see SnapControl
7986
+ * @see FreeControl
7987
+ */
7988
+ get: function () {
7989
+ return this._verticalFlicking;
7990
+ },
7991
+ enumerable: false,
7992
+ configurable: true
7993
+ });
7994
+ Object.defineProperty(__proto, "verticalState", {
7995
+ // Internal States
7996
+ /**
7997
+ * Whether Flicking's {@link Flicking#init init()} is called.
7998
+ * This is `true` when {@link Flicking#init init()} is called, and is `false` after calling {@link Flicking#destroy destroy()}.
7999
+ * @ko Flicking의 {@link Flicking#init init()}이 호출되었는지를 나타내는 멤버 변수.
8000
+ * 이 값은 {@link Flicking#init init()}이 호출되었으면 `true`로 변하고, {@link Flicking#destroy destroy()}호출 이후에 다시 `false`로 변경됩니다.
8001
+ * @type {boolean}
8002
+ * @default false
8003
+ * @readonly
8004
+ */
8005
+ get: function () {
8006
+ return this._verticalState;
8007
+ },
8008
+ enumerable: false,
8009
+ configurable: true
8010
+ });
8011
+ Object.defineProperty(__proto, "verticalOptions", {
8012
+ // Options Getter
7976
8013
  /**
7977
8014
  * Change active panel index on mouse/touch hold while animating.
7978
8015
  * `index` of the `willChange`/`willRestore` event will be used as new index.
@@ -7999,37 +8036,56 @@ var CrossFlicking = /*#__PURE__*/function (_super) {
7999
8036
  __proto.init = function () {
8000
8037
  var _this = this;
8001
8038
  return _super.prototype.init.call(this).then(function () {
8002
- // data-index로 분류하기 전에 임시로 모든 children에 대해 vertical flicking으로 해보자.
8003
- // camera.children들에 대해 갯수 세기
8004
- var verticalPanels = "";
8005
- _this._verticalState = _this.camera.children.reduce(function (state, child) {
8006
- var start = state.length ? +state[state.length - 1].end + 1 : 0;
8007
- verticalPanels += child.children[0].innerHTML;
8008
- return __spread(state, [{
8009
- start: start,
8010
- end: start + child.children[0].children.length - 1,
8011
- element: child
8012
- }]);
8013
- }, []);
8014
- _this.camera.children.forEach(function (child) {
8015
- child.children[0].innerHTML = verticalPanels;
8016
- });
8017
- _this._verticalFlicking = _this.camera.children.map(function (child, i) {
8018
- return new Flicking(child, __assign(__assign({}, _this.verticalOptions), {
8019
- horizontal: false,
8020
- panelsPerView: 1,
8021
- defaultIndex: _this._verticalState[i].start
8022
- }));
8023
- });
8024
- _this.on(EVENTS.HOLD_START, _this._onHorizontalHoldStart);
8025
- _this.on(EVENTS.MOVE, _this._onHorizontalMove);
8026
- _this.on(EVENTS.MOVE_END, _this._onHorizontalMoveEnd);
8027
- _this._verticalFlicking.forEach(function (child) {
8028
- child.on(EVENTS.HOLD_START, _this._onVerticalHoldStart);
8029
- child.on(EVENTS.MOVE, _this._onVerticalMove);
8030
- child.on(EVENTS.MOVE_END, _this._onVerticalMoveEnd);
8031
- child.on(EVENTS.CHANGED, _this._onVerticalChanged);
8039
+ return _this._addComponentEvents();
8040
+ });
8041
+ };
8042
+ __proto._addComponentEvents = function () {
8043
+ var _this = this;
8044
+ this.on(EVENTS.HOLD_START, this._onHorizontalHoldStart);
8045
+ this.on(EVENTS.MOVE, this._onHorizontalMove);
8046
+ this.on(EVENTS.MOVE_END, this._onHorizontalMoveEnd);
8047
+ this._verticalFlicking.forEach(function (flicking) {
8048
+ flicking.on(EVENTS.HOLD_START, _this._onVerticalHoldStart);
8049
+ flicking.on(EVENTS.MOVE, _this._onVerticalMove);
8050
+ flicking.on(EVENTS.MOVE_END, _this._onVerticalMoveEnd);
8051
+ flicking.on(EVENTS.CHANGED, _this._onVerticalChanged);
8052
+ });
8053
+ };
8054
+ __proto._createVerticalState = function (panels) {
8055
+ // data-index로 분류하기 전에 임시로 모든 children에 대해 vertical flicking으로 해보자.
8056
+ // panels에 data-attributes가 붙어있을 때와 안 붙어있을 때를 다르게 처리
8057
+ // 붙어있다면 가상의 viewport들을 index 갯수만큼 만들어줘야 한다
8058
+ var verticalPanels = "";
8059
+ var verticalState = panels.reduce(function (state, panel) {
8060
+ var start = state.length ? +state[state.length - 1].end + 1 : 0;
8061
+ verticalPanels += panel.innerHTML;
8062
+ return __spread(state, [{
8063
+ start: start,
8064
+ end: start + panel.children.length - 1,
8065
+ element: panel
8066
+ }]);
8067
+ }, []);
8068
+ var verticalCamera = document.createElement("div");
8069
+ verticalCamera.classList.add(CLASS.CAMERA);
8070
+ verticalCamera.innerHTML = verticalPanels;
8071
+ panels.forEach(function (panel) {
8072
+ [CLASS.VIEWPORT, CLASS.VERTICAL].forEach(function (className) {
8073
+ if (!panel.classList.contains(className)) {
8074
+ panel.classList.add(className);
8075
+ }
8032
8076
  });
8077
+ panel.innerHTML = verticalCamera.outerHTML;
8078
+ });
8079
+ return verticalState;
8080
+ };
8081
+ __proto._createVerticalFlicking = function (panels) {
8082
+ var _this = this;
8083
+ return panels.map(function (panel, i) {
8084
+ return new Flicking(panel, __assign(__assign({}, _this.verticalOptions), {
8085
+ horizontal: false,
8086
+ panelsPerView: 1,
8087
+ defaultIndex: _this._verticalState[i].start
8088
+ }));
8033
8089
  });
8034
8090
  };
8035
8091
  __proto._syncToCategory = function (index, outerIndex) {