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

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.3
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"
@@ -736,6 +738,26 @@ var setPrototypeOf = Object.setPrototypeOf || function (obj, proto) {
736
738
  obj.__proto__ = proto;
737
739
  return obj;
738
740
  };
741
+ var camelize = function (str) {
742
+ return str.replace(/[\s-_]([a-z])/g, function (all, letter) {
743
+ return letter.toUpperCase();
744
+ });
745
+ };
746
+ var getDataAttributes = function (element, attributePrefix) {
747
+ var dataAttributes = {};
748
+ var attributes = element.attributes;
749
+ var length = attributes.length;
750
+ for (var i = 0; i < length; ++i) {
751
+ var attribute = attributes[i];
752
+ var name_1 = attribute.name,
753
+ value = attribute.value;
754
+ if (name_1.indexOf(attributePrefix) === -1) {
755
+ continue;
756
+ }
757
+ dataAttributes[camelize(name_1.replace(attributePrefix, ""))] = value;
758
+ }
759
+ return dataAttributes;
760
+ };
739
761
 
740
762
  /*
741
763
  * Copyright (c) 2015 NAVER Corp.
@@ -7871,7 +7893,7 @@ var Flicking = /*#__PURE__*/function (_super) {
7871
7893
  * Flicking.VERSION; // ex) 4.0.0
7872
7894
  * ```
7873
7895
  */
7874
- Flicking.VERSION = "4.12.0-beta.1";
7896
+ Flicking.VERSION = "4.12.0-beta.3";
7875
7897
  return Flicking;
7876
7898
  }(Component);
7877
7899
 
@@ -7888,7 +7910,6 @@ var Flicking = /*#__PURE__*/function (_super) {
7888
7910
  var CrossFlicking = /*#__PURE__*/function (_super) {
7889
7911
  __extends(CrossFlicking, _super);
7890
7912
  // Options Setter
7891
- // UI / LAYOUT
7892
7913
  // public set align(val: FlickingOptions["align"]) {
7893
7914
  // this._align = val;
7894
7915
  // }
@@ -7961,18 +7982,53 @@ var CrossFlicking = /*#__PURE__*/function (_super) {
7961
7982
  }
7962
7983
  };
7963
7984
  // Internal states
7964
- _this._verticalState = [];
7985
+ _this._verticalState = _this._createVerticalState();
7965
7986
  _this._moveDirection = null;
7966
7987
  _this._nextIndex = 0;
7967
7988
  // Bind options
7968
7989
  _this._verticalOptions = verticalOptions;
7969
- return _this;
7970
7990
  // Create core components
7971
- // this._viewport = new Viewport(this, getElement(root));
7991
+ _this._verticalFlicking = _this._createVerticalFlicking();
7992
+ return _this;
7972
7993
  }
7973
7994
  var __proto = CrossFlicking.prototype;
7974
- Object.defineProperty(__proto, "verticalOptions", {
7995
+ Object.defineProperty(__proto, "verticalFlicking", {
7975
7996
  // Components
7997
+ /**
7998
+ * {@link Control} instance of the Flicking
7999
+ * @ko 현재 Flicking에 활성화된 {@link Control} 인스턴스
8000
+ * @type {Control}
8001
+ * @default SnapControl
8002
+ * @readonly
8003
+ * @see Control
8004
+ * @see SnapControl
8005
+ * @see FreeControl
8006
+ */
8007
+ get: function () {
8008
+ return this._verticalFlicking;
8009
+ },
8010
+ enumerable: false,
8011
+ configurable: true
8012
+ });
8013
+ Object.defineProperty(__proto, "verticalState", {
8014
+ // Internal States
8015
+ /**
8016
+ * Whether Flicking's {@link Flicking#init init()} is called.
8017
+ * This is `true` when {@link Flicking#init init()} is called, and is `false` after calling {@link Flicking#destroy destroy()}.
8018
+ * @ko Flicking의 {@link Flicking#init init()}이 호출되었는지를 나타내는 멤버 변수.
8019
+ * 이 값은 {@link Flicking#init init()}이 호출되었으면 `true`로 변하고, {@link Flicking#destroy destroy()}호출 이후에 다시 `false`로 변경됩니다.
8020
+ * @type {boolean}
8021
+ * @default false
8022
+ * @readonly
8023
+ */
8024
+ get: function () {
8025
+ return this._verticalState;
8026
+ },
8027
+ enumerable: false,
8028
+ configurable: true
8029
+ });
8030
+ Object.defineProperty(__proto, "verticalOptions", {
8031
+ // Options Getter
7976
8032
  /**
7977
8033
  * Change active panel index on mouse/touch hold while animating.
7978
8034
  * `index` of the `willChange`/`willRestore` event will be used as new index.
@@ -7999,37 +8055,102 @@ var CrossFlicking = /*#__PURE__*/function (_super) {
7999
8055
  __proto.init = function () {
8000
8056
  var _this = this;
8001
8057
  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) {
8058
+ return _this._addComponentEvents();
8059
+ });
8060
+ };
8061
+ __proto._addComponentEvents = function () {
8062
+ var _this = this;
8063
+ this.on(EVENTS.HOLD_START, this._onHorizontalHoldStart);
8064
+ this.on(EVENTS.MOVE, this._onHorizontalMove);
8065
+ this.on(EVENTS.MOVE_END, this._onHorizontalMoveEnd);
8066
+ this._verticalFlicking.forEach(function (flicking) {
8067
+ flicking.on(EVENTS.HOLD_START, _this._onVerticalHoldStart);
8068
+ flicking.on(EVENTS.MOVE, _this._onVerticalMove);
8069
+ flicking.on(EVENTS.MOVE_END, _this._onVerticalMoveEnd);
8070
+ flicking.on(EVENTS.CHANGED, _this._onVerticalChanged);
8071
+ });
8072
+ };
8073
+ __proto._createVerticalState = function () {
8074
+ var _this = this;
8075
+ // data-index로 분류하기 전에 임시로 모든 children에 대해 vertical flicking으로 해보자.
8076
+ // panels에 data-attributes가 붙어있을 때와 안 붙어있을 때를 다르게 처리
8077
+ // 붙어있다면 가상의 viewport들을 index 갯수만큼 만들어줘야 한다
8078
+ var cameraEl = this.camera.element;
8079
+ var panels = toArray(cameraEl.children);
8080
+ var verticalState;
8081
+ var verticalPanels = "";
8082
+ // check data attribute exists
8083
+ var groupKeys = [];
8084
+ var groupPanels = {};
8085
+ var verticalCamera = document.createElement("div");
8086
+ verticalCamera.classList.add(CLASS.CAMERA);
8087
+ panels.forEach(function (panel) {
8088
+ var groupKey = getDataAttributes(panel, "data-flicking-").groupkey;
8089
+ if (groupKey && !includes(groupKeys, groupKey)) {
8090
+ groupKeys.push(groupKey);
8091
+ groupPanels[groupKey] = [panel];
8092
+ } else if (groupKey) {
8093
+ groupPanels[groupKey].push(panel);
8094
+ }
8095
+ return groupKey;
8096
+ });
8097
+ if (groupKeys.length) {
8098
+ panels.forEach(function () {
8099
+ return _this.remove(0);
8100
+ });
8101
+ verticalState = groupKeys.reduce(function (state, key) {
8006
8102
  var start = state.length ? +state[state.length - 1].end + 1 : 0;
8007
- verticalPanels += child.children[0].innerHTML;
8103
+ var element = groupPanels[key].reduce(function (el, panel) {
8104
+ verticalPanels += panel.outerHTML;
8105
+ el.appendChild(panel);
8106
+ return el;
8107
+ }, document.createElement("div"));
8008
8108
  return __spread(state, [{
8109
+ key: key,
8009
8110
  start: start,
8010
- end: start + child.children[0].children.length - 1,
8011
- element: child
8111
+ end: start + groupPanels[key].length - 1,
8112
+ element: element
8012
8113
  }]);
8013
8114
  }, []);
8014
- _this.camera.children.forEach(function (child) {
8015
- child.children[0].innerHTML = verticalPanels;
8115
+ verticalCamera.innerHTML = verticalPanels;
8116
+ cameraEl.innerHTML = "";
8117
+ groupKeys.forEach(function () {
8118
+ var panel = document.createElement("div");
8119
+ panel.classList.add(CLASS.VIEWPORT, CLASS.VERTICAL);
8120
+ panel.innerHTML = verticalCamera.outerHTML;
8121
+ _this.append(panel);
8016
8122
  });
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);
8123
+ } else {
8124
+ verticalState = panels.reduce(function (state, panel, i) {
8125
+ var start = state.length ? +state[state.length - 1].end + 1 : 0;
8126
+ verticalPanels += panel.innerHTML;
8127
+ return __spread(state, [{
8128
+ key: i.toString(),
8129
+ start: start,
8130
+ end: start + panel.children.length - 1,
8131
+ element: panel
8132
+ }]);
8133
+ }, []);
8134
+ verticalCamera.innerHTML = verticalPanels;
8135
+ panels.forEach(function (panel) {
8136
+ [CLASS.VIEWPORT, CLASS.VERTICAL].forEach(function (className) {
8137
+ if (!panel.classList.contains(className)) {
8138
+ panel.classList.add(className);
8139
+ }
8140
+ });
8141
+ panel.innerHTML = verticalCamera.outerHTML;
8032
8142
  });
8143
+ }
8144
+ return verticalState;
8145
+ };
8146
+ __proto._createVerticalFlicking = function () {
8147
+ var _this = this;
8148
+ return this.camera.children.map(function (panel, i) {
8149
+ return new Flicking(panel, __assign(__assign({}, _this.verticalOptions), {
8150
+ horizontal: false,
8151
+ panelsPerView: 1,
8152
+ defaultIndex: _this._verticalState[i].start
8153
+ }));
8033
8154
  });
8034
8155
  };
8035
8156
  __proto._syncToCategory = function (index, outerIndex) {
@@ -8263,5 +8384,5 @@ var parseAlign = function (alignVal) {
8263
8384
  * egjs projects are licensed under the MIT license
8264
8385
  */
8265
8386
 
8266
- export { ALIGN, AnchorPoint, AnimatingState, AxesController, BoundCameraMode, CIRCULAR_FALLBACK, CLASS, Camera, CircularCameraMode, Control, CrossFlicking, DIRECTION, DisabledState, DraggingState, CODE as ERROR_CODE, EVENTS, ExternalRenderer, FlickingError, FreeControl, HoldingState, IdleState, LinearCameraMode, MOVE_DIRECTION, MOVE_TYPE, NormalRenderingStrategy, ORDER, Panel, Renderer, SnapControl, State, StateMachine, StrictControl, VanillaElementProvider, VanillaRenderer, Viewport, VirtualElementProvider, VirtualManager, VirtualPanel, VirtualRenderingStrategy, checkExistence, circulateIndex, circulatePosition, clamp, Flicking as default, find, findIndex, findRight, getDefaultCameraTransform, getDirection, getElement, getElementSize, getFlickingAttached, getMinusCompensatedIndex, getProgress, getRenderingPanels, getStyle, includes, isBetween, isString, merge, parseAlign$1 as parseAlign, parseArithmeticExpression, parseArithmeticSize, parseBounce, parseCSSSizeValue, parseElement, parsePanelAlign, range, setPrototypeOf, setSize, sync, toArray, withFlickingMethods };
8387
+ export { ALIGN, AnchorPoint, AnimatingState, AxesController, BoundCameraMode, CIRCULAR_FALLBACK, CLASS, Camera, CircularCameraMode, Control, CrossFlicking, DIRECTION, DisabledState, DraggingState, CODE as ERROR_CODE, EVENTS, ExternalRenderer, FlickingError, FreeControl, HoldingState, IdleState, LinearCameraMode, MOVE_DIRECTION, MOVE_TYPE, NormalRenderingStrategy, ORDER, Panel, Renderer, SnapControl, State, StateMachine, StrictControl, VanillaElementProvider, VanillaRenderer, Viewport, VirtualElementProvider, VirtualManager, VirtualPanel, VirtualRenderingStrategy, camelize, checkExistence, circulateIndex, circulatePosition, clamp, Flicking as default, find, findIndex, findRight, getDataAttributes, getDefaultCameraTransform, getDirection, getElement, getElementSize, getFlickingAttached, getMinusCompensatedIndex, getProgress, getRenderingPanels, getStyle, includes, isBetween, isString, merge, parseAlign$1 as parseAlign, parseArithmeticExpression, parseArithmeticSize, parseBounce, parseCSSSizeValue, parseElement, parsePanelAlign, range, setPrototypeOf, setSize, sync, toArray, withFlickingMethods };
8267
8388
  //# sourceMappingURL=flicking.esm.js.map