@egjs/flicking 4.7.3 → 4.8.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.
@@ -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.7.3
7
+ version: 4.8.0
8
8
  */
9
9
  (function (global, factory) {
10
10
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -1294,7 +1294,7 @@ version: 4.7.3
1294
1294
  * @ko Flicking 내부에서 알려진 오류 발생시 throw되는 에러
1295
1295
  * @property {number} code Error code<ko>에러 코드</ko>
1296
1296
  * @property {string} message Error message<ko>에러 메시지</ko>
1297
- * @see {@link Constants.ERROR_CODE ERROR_CODE}
1297
+ * @see {@link ERROR_CODE ERROR_CODE}
1298
1298
  * @example
1299
1299
  * ```ts
1300
1300
  * import Flicking, { FlickingError, ERROR_CODES } from "@egjs/flicking";
@@ -1916,7 +1916,7 @@ version: 4.7.3
1916
1916
  license: MIT
1917
1917
  author: NAVER Corp.
1918
1918
  repository: git+https://github.com/naver/agent.git
1919
- version: 2.3.0
1919
+ version: 2.4.2
1920
1920
  */
1921
1921
  function some(arr, callback) {
1922
1922
  var length = arr.length;
@@ -1940,7 +1940,7 @@ version: 4.7.3
1940
1940
 
1941
1941
  return null;
1942
1942
  }
1943
- function getUserAgent(agent) {
1943
+ function getUserAgentString(agent) {
1944
1944
  var userAgent = agent;
1945
1945
 
1946
1946
  if (typeof userAgent === "undefined") {
@@ -2106,15 +2106,18 @@ version: 4.7.3
2106
2106
  }, {
2107
2107
  test: "windows nt",
2108
2108
  id: "window"
2109
+ }, {
2110
+ test: "win32|windows",
2111
+ id: "window"
2109
2112
  }, {
2110
2113
  test: "iphone|ipad|ipod",
2111
2114
  id: "ios",
2112
2115
  versionTest: "iphone os|cpu os"
2113
2116
  }, {
2114
- test: "mac os x",
2117
+ test: "macos|macintel|mac os x",
2115
2118
  id: "mac"
2116
2119
  }, {
2117
- test: "android",
2120
+ test: "android|linux armv81",
2118
2121
  id: "android"
2119
2122
  }, {
2120
2123
  test: "tizen",
@@ -2124,85 +2127,17 @@ version: 4.7.3
2124
2127
  id: "webos"
2125
2128
  }];
2126
2129
 
2127
- function parseUserAgentData(osData) {
2128
- var userAgentData = navigator.userAgentData;
2129
- var brands = (userAgentData.uaList || userAgentData.brands).slice();
2130
- var isMobile = userAgentData.mobile || false;
2131
- var firstBrand = brands[0];
2132
- var browser = {
2133
- name: firstBrand.brand,
2134
- version: firstBrand.version,
2135
- majorVersion: -1,
2136
- webkit: false,
2137
- webkitVersion: "-1",
2138
- chromium: false,
2139
- chromiumVersion: "-1",
2140
- webview: !!findPresetBrand(WEBVIEW_PRESETS, brands).brand
2141
- };
2142
- var os = {
2143
- name: "unknown",
2144
- version: "-1",
2145
- majorVersion: -1
2146
- };
2147
- browser.webkit = !browser.chromium && some(WEBKIT_PRESETS, function (preset) {
2148
- return findBrand(brands, preset);
2149
- });
2150
- var chromiumBrand = findPresetBrand(CHROMIUM_PRESETS, brands);
2151
- browser.chromium = !!chromiumBrand.brand;
2152
- browser.chromiumVersion = chromiumBrand.version;
2153
-
2154
- if (!browser.chromium) {
2155
- var webkitBrand = findPresetBrand(WEBKIT_PRESETS, brands);
2156
- browser.webkit = !!webkitBrand.brand;
2157
- browser.webkitVersion = webkitBrand.version;
2158
- }
2159
-
2160
- if (osData) {
2161
- var platform_1 = osData.platform.toLowerCase();
2162
- var result = find(OS_PRESETS, function (preset) {
2163
- return new RegExp("" + preset.test, "g").exec(platform_1);
2164
- });
2165
- os.name = result ? result.id : platform_1;
2166
- os.version = osData.platformVersion;
2167
- }
2168
-
2169
- var browserBrand = findPresetBrand(BROWSER_PRESETS, brands);
2170
-
2171
- if (browserBrand.brand) {
2172
- browser.name = browserBrand.brand;
2173
- browser.version = osData ? osData.uaFullVersion : browserBrand.version;
2174
- }
2175
-
2176
- if (navigator.platform === "Linux armv8l") {
2177
- os.name = "android";
2178
- } else if (browser.webkit) {
2179
- os.name = isMobile ? "ios" : "mac";
2180
- }
2181
-
2182
- if (os.name === "ios" && browser.webview) {
2183
- browser.version = "-1";
2184
- }
2185
-
2186
- os.version = convertVersion(os.version);
2187
- browser.version = convertVersion(browser.version);
2188
- os.majorVersion = parseInt(os.version, 10);
2189
- browser.majorVersion = parseInt(browser.version, 10);
2190
- return {
2191
- browser: browser,
2192
- os: os,
2193
- isMobile: isMobile,
2194
- isHints: true
2195
- };
2130
+ function isWebView(userAgent) {
2131
+ return !!findPreset(WEBVIEW_PRESETS, userAgent).preset;
2196
2132
  }
2197
-
2198
- function parseUserAgent(userAgent) {
2199
- var nextAgent = getUserAgent(userAgent);
2133
+ function getLegacyAgent(userAgent) {
2134
+ var nextAgent = getUserAgentString(userAgent);
2200
2135
  var isMobile = !!/mobi/g.exec(nextAgent);
2201
2136
  var browser = {
2202
2137
  name: "unknown",
2203
2138
  version: "-1",
2204
2139
  majorVersion: -1,
2205
- webview: !!findPreset(WEBVIEW_PRESETS, nextAgent).preset,
2140
+ webview: isWebView(nextAgent),
2206
2141
  chromium: false,
2207
2142
  chromiumVersion: "-1",
2208
2143
  webkit: false,
@@ -2240,7 +2175,7 @@ version: 4.7.3
2240
2175
 
2241
2176
  if (browserPreset) {
2242
2177
  browser.name = browserPreset.id;
2243
- browser.version = browserVersion;
2178
+ browser.version = browserVersion; // Early whale bugs
2244
2179
 
2245
2180
  if (browser.webview && os.name === "ios" && browser.name !== "safari") {
2246
2181
  browser.webview = false;
@@ -2255,6 +2190,80 @@ version: 4.7.3
2255
2190
  isHints: false
2256
2191
  };
2257
2192
  }
2193
+
2194
+ function getClientHintsAgent(osData) {
2195
+ var userAgentData = navigator.userAgentData;
2196
+ var brands = (userAgentData.uaList || userAgentData.brands).slice();
2197
+ var fullVersionList = osData && osData.fullVersionList;
2198
+ var isMobile = userAgentData.mobile || false;
2199
+ var firstBrand = brands[0];
2200
+ var platform = (osData && osData.platform || userAgentData.platform || navigator.platform).toLowerCase();
2201
+ var browser = {
2202
+ name: firstBrand.brand,
2203
+ version: firstBrand.version,
2204
+ majorVersion: -1,
2205
+ webkit: false,
2206
+ webkitVersion: "-1",
2207
+ chromium: false,
2208
+ chromiumVersion: "-1",
2209
+ webview: !!findPresetBrand(WEBVIEW_PRESETS, brands).brand || isWebView(getUserAgentString())
2210
+ };
2211
+ var os = {
2212
+ name: "unknown",
2213
+ version: "-1",
2214
+ majorVersion: -1
2215
+ };
2216
+ browser.webkit = !browser.chromium && some(WEBKIT_PRESETS, function (preset) {
2217
+ return findBrand(brands, preset);
2218
+ });
2219
+ var chromiumBrand = findPresetBrand(CHROMIUM_PRESETS, brands);
2220
+ browser.chromium = !!chromiumBrand.brand;
2221
+ browser.chromiumVersion = chromiumBrand.version;
2222
+
2223
+ if (!browser.chromium) {
2224
+ var webkitBrand = findPresetBrand(WEBKIT_PRESETS, brands);
2225
+ browser.webkit = !!webkitBrand.brand;
2226
+ browser.webkitVersion = webkitBrand.version;
2227
+ }
2228
+
2229
+ var platfomResult = find(OS_PRESETS, function (preset) {
2230
+ return new RegExp("" + preset.test, "g").exec(platform);
2231
+ });
2232
+ os.name = platfomResult ? platfomResult.id : "";
2233
+
2234
+ if (osData) {
2235
+ os.version = osData.platformVersion;
2236
+ }
2237
+
2238
+ if (fullVersionList && fullVersionList.length) {
2239
+ var browserBrandByFullVersionList = findPresetBrand(BROWSER_PRESETS, fullVersionList);
2240
+ browser.name = browserBrandByFullVersionList.brand || browser.name;
2241
+ browser.version = browserBrandByFullVersionList.version || browser.version;
2242
+ } else {
2243
+ var browserBrand = findPresetBrand(BROWSER_PRESETS, brands);
2244
+ browser.name = browserBrand.brand || browser.name;
2245
+ browser.version = browserBrand.brand && osData ? osData.uaFullVersion : browserBrand.version;
2246
+ }
2247
+
2248
+ if (browser.webkit) {
2249
+ os.name = isMobile ? "ios" : "mac";
2250
+ }
2251
+
2252
+ if (os.name === "ios" && browser.webview) {
2253
+ browser.version = "-1";
2254
+ }
2255
+
2256
+ os.version = convertVersion(os.version);
2257
+ browser.version = convertVersion(browser.version);
2258
+ os.majorVersion = parseInt(os.version, 10);
2259
+ browser.majorVersion = parseInt(browser.version, 10);
2260
+ return {
2261
+ browser: browser,
2262
+ os: os,
2263
+ isMobile: isMobile,
2264
+ isHints: true
2265
+ };
2266
+ }
2258
2267
  /**
2259
2268
  * Extracts browser and operating system information from the user agent string.
2260
2269
  * @ko 유저 에이전트 문자열에서 브라우저와 운영체제 정보를 추출한다.
@@ -2269,9 +2278,9 @@ version: 4.7.3
2269
2278
 
2270
2279
  function agent(userAgent) {
2271
2280
  if (typeof userAgent === "undefined" && hasUserAgentData()) {
2272
- return parseUserAgentData();
2281
+ return getClientHintsAgent();
2273
2282
  } else {
2274
- return parseUserAgent(userAgent);
2283
+ return getLegacyAgent(userAgent);
2275
2284
  }
2276
2285
  }
2277
2286
 
@@ -5908,8 +5917,15 @@ version: 4.7.3
5908
5917
  var flicking = ctx.flicking,
5909
5918
  axesEvent = ctx.axesEvent,
5910
5919
  transitTo = ctx.transitTo;
5920
+ var targetPanel = this._targetPanel;
5921
+ var control = flicking.control;
5911
5922
  this._delta = 0;
5912
5923
  flicking.control.updateInput();
5924
+
5925
+ if (flicking.changeOnHold && targetPanel) {
5926
+ control.setActive(targetPanel, control.activePanel, axesEvent.isTrusted);
5927
+ }
5928
+
5913
5929
  var holdStartEvent = new ComponentEvent$1(EVENTS.HOLD_START, {
5914
5930
  axesEvent: axesEvent
5915
5931
  });
@@ -7079,7 +7095,7 @@ version: 4.7.3
7079
7095
  var camera = flicking.camera;
7080
7096
  var activeAnchor = camera.findActiveAnchor();
7081
7097
  var anchorAtCamera = camera.findNearestAnchor(camera.position);
7082
- var state = flicking.control.controller.state;
7098
+ var state = this._controller.state;
7083
7099
 
7084
7100
  if (!activeAnchor || !anchorAtCamera) {
7085
7101
  return Promise.reject(new FlickingError(MESSAGE.POSITION_NOT_REACHABLE(position), CODE.POSITION_NOT_REACHABLE));
@@ -7521,6 +7537,7 @@ version: 4.7.3
7521
7537
  var axesRange = this._controller.range;
7522
7538
  var indexRange = this._indexRange;
7523
7539
  var cameraRange = camera.range;
7540
+ var state = this._controller.state;
7524
7541
  var clampedPosition = clamp$1(camera.clampToReachablePosition(position), axesRange[0], axesRange[1]);
7525
7542
  var anchorAtPosition = camera.findAnchorIncludePosition(clampedPosition);
7526
7543
 
@@ -7529,7 +7546,8 @@ version: 4.7.3
7529
7546
  }
7530
7547
 
7531
7548
  var prevPos = activePanel.position;
7532
- var isOverThreshold = Math.abs(position - prevPos) >= flicking.threshold;
7549
+ var posDelta = flicking.animating ? state.delta : position - camera.position;
7550
+ var isOverThreshold = Math.abs(posDelta) >= flicking.threshold;
7533
7551
  var adjacentAnchor = position > prevPos ? camera.getNextAnchor(anchorAtPosition) : camera.getPrevAnchor(anchorAtPosition);
7534
7552
  var targetPos;
7535
7553
  var targetPanel;
@@ -8929,7 +8947,7 @@ version: 4.7.3
8929
8947
  license: MIT
8930
8948
  author: NAVER Corp.
8931
8949
  repository: https://github.com/naver/egjs-imready
8932
- version: 1.2.0
8950
+ version: 1.3.0
8933
8951
  */
8934
8952
 
8935
8953
  /*! *****************************************************************************
@@ -9016,8 +9034,12 @@ version: 4.7.3
9016
9034
 
9017
9035
  return !!target.getAttribute(prefix + "width");
9018
9036
  }
9019
- function hasLoadingAttribute(target) {
9020
- return "loading" in target && target.getAttribute("loading") === "lazy";
9037
+ function hasLoadingAttribute(target, prefix) {
9038
+ if (prefix === void 0) {
9039
+ prefix = "data-";
9040
+ }
9041
+
9042
+ return "loading" in target && target.getAttribute("loading") === "lazy" || !!target.getAttribute(prefix + "lazy");
9021
9043
  }
9022
9044
  function hasSkipAttribute(target, prefix) {
9023
9045
  if (prefix === void 0) {
@@ -9142,6 +9164,11 @@ version: 4.7.3
9142
9164
 
9143
9165
  if (e && e.type === "error") {
9144
9166
  _this.onError(_this.element);
9167
+ }
9168
+
9169
+ if (_this.hasLoading && _this.checkElement()) {
9170
+ // I'm not ready
9171
+ return;
9145
9172
  } // I'm pre-ready and ready!
9146
9173
 
9147
9174
 
@@ -9157,7 +9184,7 @@ version: 4.7.3
9157
9184
  var prefix = _this.options.prefix;
9158
9185
  _this.hasDataSize = hasSizeAttribute(element, prefix);
9159
9186
  _this.isSkip = hasSkipAttribute(element, prefix);
9160
- _this.hasLoading = hasLoadingAttribute(element);
9187
+ _this.hasLoading = hasLoadingAttribute(element, prefix);
9161
9188
  return _this;
9162
9189
  }
9163
9190
 
@@ -9543,6 +9570,7 @@ version: 4.7.3
9543
9570
 
9544
9571
  var tagName = element.tagName.toLowerCase();
9545
9572
  var loaders = this.options.loaders;
9573
+ var prefix = options.prefix;
9546
9574
  var tags = Object.keys(loaders);
9547
9575
 
9548
9576
  if (loaders[tagName]) {
@@ -9552,7 +9580,7 @@ version: 4.7.3
9552
9580
  var loader = new ElementLoader(element, options);
9553
9581
  var children = toArray(element.querySelectorAll(tags.join(", ")));
9554
9582
  loader.setHasLoading(children.some(function (el) {
9555
- return hasLoadingAttribute(el);
9583
+ return hasLoadingAttribute(el, prefix);
9556
9584
  }));
9557
9585
  var withPreReady = false;
9558
9586
  var childrenImReady = this.clone().on("error", function (e) {
@@ -9637,13 +9665,13 @@ version: 4.7.3
9637
9665
  * ```
9638
9666
  */
9639
9667
 
9640
- this.trigger("error", {
9668
+ this.trigger(new ComponentEvent$1("error", {
9641
9669
  element: info.element,
9642
9670
  index: index,
9643
9671
  target: target,
9644
9672
  errorCount: this.getErrorCount(),
9645
9673
  totalErrorCount: ++this.totalErrorCount
9646
- });
9674
+ }));
9647
9675
  };
9648
9676
 
9649
9677
  __proto.onPreReadyElement = function (index) {
@@ -9677,7 +9705,7 @@ version: 4.7.3
9677
9705
  * ```
9678
9706
  */
9679
9707
 
9680
- this.trigger("preReadyElement", {
9708
+ this.trigger(new ComponentEvent$1("preReadyElement", {
9681
9709
  element: info.element,
9682
9710
  index: index,
9683
9711
  preReadyCount: this.preReadyCount,
@@ -9687,7 +9715,7 @@ version: 4.7.3
9687
9715
  isReady: this.isReady(),
9688
9716
  hasLoading: info.hasLoading,
9689
9717
  isSkip: info.isSkip
9690
- });
9718
+ }));
9691
9719
  };
9692
9720
 
9693
9721
  __proto.onPreReady = function () {
@@ -9719,12 +9747,12 @@ version: 4.7.3
9719
9747
  * ```
9720
9748
  */
9721
9749
 
9722
- this.trigger("preReady", {
9750
+ this.trigger(new ComponentEvent$1("preReady", {
9723
9751
  readyCount: this.readyCount,
9724
9752
  totalCount: this.totalCount,
9725
9753
  isReady: this.isReady(),
9726
9754
  hasLoading: this.hasLoading()
9727
- });
9755
+ }));
9728
9756
  };
9729
9757
 
9730
9758
  __proto.onReadyElement = function (index) {
@@ -9758,7 +9786,7 @@ version: 4.7.3
9758
9786
  * ```
9759
9787
  */
9760
9788
 
9761
- this.trigger("readyElement", {
9789
+ this.trigger(new ComponentEvent$1("readyElement", {
9762
9790
  index: index,
9763
9791
  element: info.element,
9764
9792
  hasError: info.hasError,
@@ -9772,7 +9800,7 @@ version: 4.7.3
9772
9800
  hasLoading: info.hasLoading,
9773
9801
  isPreReadyOver: this.isPreReadyOver,
9774
9802
  isSkip: info.isSkip
9775
- });
9803
+ }));
9776
9804
  };
9777
9805
 
9778
9806
  __proto.onReady = function () {
@@ -9806,11 +9834,11 @@ version: 4.7.3
9806
9834
  * });
9807
9835
  * ```
9808
9836
  */
9809
- this.trigger("ready", {
9837
+ this.trigger(new ComponentEvent$1("ready", {
9810
9838
  errorCount: this.getErrorCount(),
9811
9839
  totalErrorCount: this.totalErrorCount,
9812
9840
  totalCount: this.totalCount
9813
- });
9841
+ }));
9814
9842
  };
9815
9843
 
9816
9844
  __proto.getErrorCount = function () {
@@ -11685,24 +11713,26 @@ version: 4.7.3
11685
11713
  preventClickOnDrag = _0 === void 0 ? true : _0,
11686
11714
  _1 = _b.disableOnInit,
11687
11715
  disableOnInit = _1 === void 0 ? false : _1,
11688
- _2 = _b.renderOnlyVisible,
11689
- renderOnlyVisible = _2 === void 0 ? false : _2,
11690
- _3 = _b.virtual,
11691
- virtual = _3 === void 0 ? null : _3,
11692
- _4 = _b.autoInit,
11693
- autoInit = _4 === void 0 ? true : _4,
11694
- _5 = _b.autoResize,
11695
- autoResize = _5 === void 0 ? true : _5,
11696
- _6 = _b.useResizeObserver,
11697
- useResizeObserver = _6 === void 0 ? true : _6,
11698
- _7 = _b.resizeDebounce,
11699
- resizeDebounce = _7 === void 0 ? 0 : _7,
11700
- _8 = _b.maxResizeDebounce,
11701
- maxResizeDebounce = _8 === void 0 ? 100 : _8,
11702
- _9 = _b.externalRenderer,
11703
- externalRenderer = _9 === void 0 ? null : _9,
11704
- _10 = _b.renderExternal,
11705
- renderExternal = _10 === void 0 ? null : _10;
11716
+ _2 = _b.changeOnHold,
11717
+ changeOnHold = _2 === void 0 ? false : _2,
11718
+ _3 = _b.renderOnlyVisible,
11719
+ renderOnlyVisible = _3 === void 0 ? false : _3,
11720
+ _4 = _b.virtual,
11721
+ virtual = _4 === void 0 ? null : _4,
11722
+ _5 = _b.autoInit,
11723
+ autoInit = _5 === void 0 ? true : _5,
11724
+ _6 = _b.autoResize,
11725
+ autoResize = _6 === void 0 ? true : _6,
11726
+ _7 = _b.useResizeObserver,
11727
+ useResizeObserver = _7 === void 0 ? true : _7,
11728
+ _8 = _b.resizeDebounce,
11729
+ resizeDebounce = _8 === void 0 ? 0 : _8,
11730
+ _9 = _b.maxResizeDebounce,
11731
+ maxResizeDebounce = _9 === void 0 ? 100 : _9,
11732
+ _10 = _b.externalRenderer,
11733
+ externalRenderer = _10 === void 0 ? null : _10,
11734
+ _11 = _b.renderExternal,
11735
+ renderExternal = _11 === void 0 ? null : _11;
11706
11736
 
11707
11737
  var _this = _super.call(this) || this; // Internal states
11708
11738
 
@@ -11735,6 +11765,7 @@ version: 4.7.3
11735
11765
  _this._iOSEdgeSwipeThreshold = iOSEdgeSwipeThreshold;
11736
11766
  _this._preventClickOnDrag = preventClickOnDrag;
11737
11767
  _this._disableOnInit = disableOnInit;
11768
+ _this._changeOnHold = changeOnHold;
11738
11769
  _this._renderOnlyVisible = renderOnlyVisible;
11739
11770
  _this._autoInit = autoInit;
11740
11771
  _this._autoResize = autoResize;
@@ -12491,6 +12522,24 @@ version: 4.7.3
12491
12522
  enumerable: false,
12492
12523
  configurable: true
12493
12524
  });
12525
+ Object.defineProperty(__proto, "changeOnHold", {
12526
+ /**
12527
+ * Change active panel index on mouse/touch hold while animating.
12528
+ * `index` of the `willChange`/`willRestore` event will be used as new index.
12529
+ * @ko 애니메이션 도중 마우스/터치 입력시 현재 활성화된 패널의 인덱스를 변경합니다.
12530
+ * `willChange`/`willRestore` 이벤트의 `index`값이 새로운 인덱스로 사용될 것입니다.
12531
+ * @type {boolean}
12532
+ * @default false
12533
+ */
12534
+ get: function () {
12535
+ return this._changeOnHold;
12536
+ },
12537
+ set: function (val) {
12538
+ this._changeOnHold = val;
12539
+ },
12540
+ enumerable: false,
12541
+ configurable: true
12542
+ });
12494
12543
  Object.defineProperty(__proto, "renderOnlyVisible", {
12495
12544
  // PERFORMANCE
12496
12545
 
@@ -13171,6 +13220,8 @@ version: 4.7.3
13171
13220
  camera.updateAlignPos();
13172
13221
  camera.updateRange();
13173
13222
  camera.updateAnchors();
13223
+ camera.updateAdaptiveHeight();
13224
+ camera.updateOffset();
13174
13225
  return [4
13175
13226
  /*yield*/
13176
13227
  , renderer.render()];
@@ -13448,7 +13499,7 @@ version: 4.7.3
13448
13499
  */
13449
13500
 
13450
13501
 
13451
- Flicking.VERSION = "4.7.3";
13502
+ Flicking.VERSION = "4.8.0";
13452
13503
  return Flicking;
13453
13504
  }(Component);
13454
13505