@egjs/flicking-plugins 4.5.0 → 4.7.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.
package/dist/plugins.js CHANGED
@@ -4,7 +4,7 @@ name: @egjs/flicking-plugins
4
4
  license: MIT
5
5
  author: NAVER Corp.
6
6
  repository: https://github.com/naver/egjs-flicking-plugins
7
- version: 4.5.0
7
+ version: 4.7.0
8
8
  */
9
9
  (function (global, factory) {
10
10
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@egjs/flicking')) :
@@ -156,8 +156,11 @@ version: 4.5.0
156
156
  var progress = panel.outsetProgress;
157
157
  var el = panel.element;
158
158
  var target = selector ? el.querySelector(selector) : el;
159
- var opacity = Math.min(1, Math.max(0, 1 - Math.abs(progress * scale)));
160
- target.style.opacity = "" + opacity;
159
+
160
+ if (target) {
161
+ var opacity = Math.min(1, Math.max(0, 1 - Math.abs(progress * scale)));
162
+ target.style.opacity = "" + opacity;
163
+ }
161
164
  });
162
165
  };
163
166
 
@@ -253,12 +256,14 @@ version: 4.5.0
253
256
  this._flicking = null;
254
257
  this._timerId = 0;
255
258
  this._mouseEntered = false;
259
+ this._playing = false;
256
260
 
257
261
  this.play = function () {
258
262
  _this._movePanel(_this._duration);
259
263
  };
260
264
 
261
265
  this.stop = function () {
266
+ _this._playing = false;
262
267
  clearTimeout(_this._timerId);
263
268
  };
264
269
 
@@ -332,6 +337,13 @@ version: 4.5.0
332
337
  enumerable: false,
333
338
  configurable: true
334
339
  });
340
+ Object.defineProperty(__proto, "playing", {
341
+ get: function () {
342
+ return this._playing;
343
+ },
344
+ enumerable: false,
345
+ configurable: true
346
+ });
335
347
 
336
348
  __proto.init = function (flicking$1) {
337
349
  var _a;
@@ -390,6 +402,7 @@ version: 4.5.0
390
402
  return;
391
403
  }
392
404
 
405
+ this._playing = true;
393
406
  this._timerId = window.setTimeout(function () {
394
407
  if (direction === flicking.DIRECTION.NEXT) {
395
408
  flicking$1.next(_this._animationDuration).catch(function () {
@@ -1189,6 +1202,39 @@ version: 4.5.0
1189
1202
  this._wrapper = wrapper;
1190
1203
  }
1191
1204
 
1205
+ var __proto = Renderer.prototype;
1206
+
1207
+ __proto._createBulletFromString = function (html, index) {
1208
+ var range = document.createRange();
1209
+ var frag = range.createContextualFragment(html);
1210
+ var bullet = frag.firstChild;
1211
+
1212
+ this._addBulletEvents(bullet, index);
1213
+
1214
+ return bullet;
1215
+ };
1216
+
1217
+ __proto._addBulletEvents = function (bullet, index) {
1218
+ var _this = this;
1219
+
1220
+ var anchorPoints = this._flicking.camera.anchorPoints;
1221
+ var panelIndex = anchorPoints[index].panel.index;
1222
+ bullet.addEventListener(BROWSER.MOUSE_DOWN, function (e) {
1223
+ e.stopPropagation();
1224
+ });
1225
+ bullet.addEventListener(BROWSER.TOUCH_START, function (e) {
1226
+ e.stopPropagation();
1227
+ }, {
1228
+ passive: true
1229
+ });
1230
+ bullet.addEventListener(BROWSER.CLICK, function () {
1231
+ _this._flicking.moveTo(panelIndex).catch(function (err) {
1232
+ if (err instanceof flicking.FlickingError) return;
1233
+ throw err;
1234
+ });
1235
+ });
1236
+ };
1237
+
1192
1238
  return Renderer;
1193
1239
  }();
1194
1240
 
@@ -1200,64 +1246,112 @@ version: 4.5.0
1200
1246
  function BulletRenderer() {
1201
1247
  var _this = _super !== null && _super.apply(this, arguments) || this;
1202
1248
 
1203
- _this._childs = [];
1249
+ _this._bullets = [];
1250
+ _this._prevIndex = -1;
1204
1251
  return _this;
1205
1252
  }
1206
1253
 
1207
1254
  var __proto = BulletRenderer.prototype;
1255
+ Object.defineProperty(__proto, "_bulletClass", {
1256
+ get: function () {
1257
+ var pagination = this._pagination;
1258
+ return pagination.classPrefix + "-" + PAGINATION.BULLET_SUFFIX;
1259
+ },
1260
+ enumerable: false,
1261
+ configurable: true
1262
+ });
1263
+ Object.defineProperty(__proto, "_activeClass", {
1264
+ get: function () {
1265
+ var pagination = this._pagination;
1266
+ return pagination.classPrefix + "-" + PAGINATION.BULLET_ACTIVE_SUFFIX;
1267
+ },
1268
+ enumerable: false,
1269
+ configurable: true
1270
+ });
1271
+
1272
+ __proto.destroy = function () {
1273
+ this._bullets = [];
1274
+ this._prevIndex = -1;
1275
+ };
1208
1276
 
1209
1277
  __proto.render = function () {
1210
- var flicking$1 = this._flicking;
1278
+ var _this = this;
1279
+
1280
+ var flicking = this._flicking;
1211
1281
  var pagination = this._pagination;
1282
+ var wrapper = this._wrapper;
1283
+ var bulletClass = this._bulletClass;
1284
+ var activeClass = this._activeClass;
1212
1285
  var renderBullet = pagination.renderBullet;
1286
+ var renderActiveBullet = pagination.renderActiveBullet;
1213
1287
  var bulletWrapperClass = pagination.classPrefix + "-" + PAGINATION.BULLET_WRAPPER_SUFFIX;
1214
- var bulletClass = pagination.classPrefix + "-" + PAGINATION.BULLET_SUFFIX;
1215
- var bulletActiveClass = pagination.classPrefix + "-" + PAGINATION.BULLET_ACTIVE_SUFFIX;
1216
- var anchorPoints = flicking$1.camera.anchorPoints;
1217
- var wrapper = this._wrapper;
1288
+ var anchorPoints = flicking.camera.anchorPoints;
1218
1289
  addClass(wrapper, bulletWrapperClass);
1219
- wrapper.innerHTML = anchorPoints.map(function (_, index) {
1220
- return renderBullet(bulletClass, index);
1290
+ wrapper.innerHTML = anchorPoints.map(function (anchorPoint, index) {
1291
+ if (renderActiveBullet && anchorPoint.panel.index === flicking.index) {
1292
+ return renderActiveBullet(bulletClass, index);
1293
+ } else {
1294
+ return renderBullet(bulletClass, index);
1295
+ }
1221
1296
  }).join("\n");
1222
1297
  var bullets = [].slice.call(wrapper.children);
1223
1298
  bullets.forEach(function (bullet, index) {
1224
1299
  var anchorPoint = anchorPoints[index];
1225
1300
 
1226
- if (anchorPoint.panel.index === flicking$1.index) {
1227
- addClass(bullet, bulletActiveClass);
1301
+ if (anchorPoint.panel.index === flicking.index) {
1302
+ addClass(bullet, activeClass);
1303
+ _this._prevIndex = index;
1228
1304
  }
1229
1305
 
1230
- bullet.addEventListener(BROWSER.MOUSE_DOWN, function (e) {
1231
- e.stopPropagation();
1232
- });
1233
- bullet.addEventListener(BROWSER.TOUCH_START, function (e) {
1234
- e.stopPropagation();
1235
- }, {
1236
- passive: true
1237
- });
1238
- bullet.addEventListener(BROWSER.CLICK, function () {
1239
- flicking$1.moveTo(anchorPoint.panel.index).catch(function (err) {
1240
- if (err instanceof flicking.FlickingError) return;
1241
- throw err;
1242
- });
1243
- });
1306
+ _this._addBulletEvents(bullet, index);
1244
1307
  });
1245
- this._childs = bullets;
1308
+ this._bullets = bullets;
1246
1309
  };
1247
1310
 
1248
1311
  __proto.update = function (index) {
1249
1312
  var flicking = this._flicking;
1250
1313
  var pagination = this._pagination;
1251
- var bullets = this._childs;
1252
- var activeClass = pagination.classPrefix + "-" + PAGINATION.BULLET_ACTIVE_SUFFIX;
1314
+ var wrapper = this._wrapper;
1315
+ var bullets = this._bullets;
1316
+ var bulletClass = this._bulletClass;
1317
+ var activeClass = this._activeClass;
1318
+ var prevIndex = this._prevIndex;
1253
1319
  var anchorPoints = flicking.camera.anchorPoints;
1320
+ var renderBullet = pagination.renderBullet;
1321
+ var renderActiveBullet = pagination.renderActiveBullet;
1254
1322
  if (anchorPoints.length <= 0) return;
1255
- bullets.forEach(function (bullet) {
1256
- removeClass(bullet, activeClass);
1257
- });
1258
1323
  var anchorOffset = anchorPoints[0].panel.index;
1259
- var activeBullet = bullets[index - anchorOffset];
1260
- addClass(activeBullet, activeClass);
1324
+ var activeBulletIndex = index - anchorOffset;
1325
+ if (prevIndex === activeBulletIndex) return;
1326
+
1327
+ if (renderActiveBullet) {
1328
+ var prevBullet = bullets[prevIndex];
1329
+
1330
+ if (prevBullet) {
1331
+ var newBullet = this._createBulletFromString(renderBullet(bulletClass, prevIndex), prevIndex);
1332
+
1333
+ prevBullet.parentElement.replaceChild(newBullet, prevBullet);
1334
+ bullets[prevIndex] = newBullet;
1335
+ }
1336
+
1337
+ var activeBullet = bullets[activeBulletIndex];
1338
+
1339
+ var newActiveBullet = this._createBulletFromString(renderActiveBullet(bulletClass + " " + activeClass, activeBulletIndex), activeBulletIndex);
1340
+
1341
+ wrapper.replaceChild(newActiveBullet, activeBullet);
1342
+ bullets[activeBulletIndex] = newActiveBullet;
1343
+ } else {
1344
+ var activeBullet = bullets[activeBulletIndex];
1345
+ var prevBullet = bullets[prevIndex];
1346
+
1347
+ if (prevBullet) {
1348
+ removeClass(prevBullet, activeClass);
1349
+ }
1350
+
1351
+ addClass(activeBullet, activeClass);
1352
+ }
1353
+
1354
+ this._prevIndex = activeBulletIndex;
1261
1355
  };
1262
1356
 
1263
1357
  return BulletRenderer;
@@ -1269,11 +1363,20 @@ version: 4.5.0
1269
1363
  __extends(FractionRenderer, _super);
1270
1364
 
1271
1365
  function FractionRenderer() {
1272
- return _super !== null && _super.apply(this, arguments) || this;
1366
+ var _this = _super !== null && _super.apply(this, arguments) || this;
1367
+
1368
+ _this._prevIndex = -1;
1369
+ _this._prevTotal = -1;
1370
+ return _this;
1273
1371
  }
1274
1372
 
1275
1373
  var __proto = FractionRenderer.prototype;
1276
1374
 
1375
+ __proto.destroy = function () {
1376
+ this._prevIndex = -1;
1377
+ this._prevTotal = -1;
1378
+ };
1379
+
1277
1380
  __proto.render = function () {
1278
1381
  var flicking = this._flicking;
1279
1382
  var wrapper = this._wrapper;
@@ -1290,14 +1393,18 @@ version: 4.5.0
1290
1393
  var flicking = this._flicking;
1291
1394
  var wrapper = this._wrapper;
1292
1395
  var pagination = this._pagination;
1293
- var fractionCurrentClass = pagination.classPrefix + "-" + PAGINATION.FRACTION_CURRENT_SUFFIX;
1294
- var fractionTotalClass = pagination.classPrefix + "-" + PAGINATION.FRACTION_TOTAL_SUFFIX;
1295
- var currentWrapper = wrapper.querySelector("." + fractionCurrentClass);
1296
- var totalWrapper = wrapper.querySelector("." + fractionTotalClass);
1297
1396
  var anchorPoints = flicking.camera.anchorPoints;
1298
1397
  var currentIndex = anchorPoints.length > 0 ? index - anchorPoints[0].panel.index + 1 : 0;
1398
+ var anchorCount = anchorPoints.length;
1399
+ if (currentIndex === this._prevIndex && anchorCount === this._prevTotal) return;
1400
+ var fractionCurrentSelector = "." + pagination.classPrefix + "-" + PAGINATION.FRACTION_CURRENT_SUFFIX;
1401
+ var fractionTotalSelector = "." + pagination.classPrefix + "-" + PAGINATION.FRACTION_TOTAL_SUFFIX;
1402
+ var currentWrapper = wrapper.querySelector(fractionCurrentSelector);
1403
+ var totalWrapper = wrapper.querySelector(fractionTotalSelector);
1299
1404
  currentWrapper.innerHTML = pagination.fractionCurrentFormat(currentIndex);
1300
- totalWrapper.innerHTML = pagination.fractionTotalFormat(anchorPoints.length);
1405
+ totalWrapper.innerHTML = pagination.fractionTotalFormat(anchorCount);
1406
+ this._prevIndex = currentIndex;
1407
+ this._prevTotal = anchorCount;
1301
1408
  };
1302
1409
 
1303
1410
  return FractionRenderer;
@@ -1330,12 +1437,21 @@ version: 4.5.0
1330
1437
 
1331
1438
  var __proto = ScrollBulletRenderer.prototype;
1332
1439
 
1440
+ __proto.destroy = function () {
1441
+ this._bullets = [];
1442
+ this._bulletSize = 0;
1443
+ this._previousIndex = -1;
1444
+ this._sliderIndex = -1;
1445
+ };
1446
+
1333
1447
  __proto.render = function () {
1448
+ var _this = this;
1449
+
1334
1450
  var wrapper = this._wrapper;
1335
- var flicking$1 = this._flicking;
1451
+ var flicking = this._flicking;
1336
1452
  var pagination = this._pagination;
1337
1453
  var renderBullet = pagination.renderBullet;
1338
- var anchorPoints = flicking$1.camera.anchorPoints;
1454
+ var anchorPoints = flicking.camera.anchorPoints;
1339
1455
  var dynamicWrapperClass = pagination.classPrefix + "-" + PAGINATION.SCROLL_WRAPPER_SUFFIX;
1340
1456
  var bulletClass = pagination.classPrefix + "-" + PAGINATION.BULLET_SUFFIX;
1341
1457
  var sliderClass = pagination.classPrefix + "-" + PAGINATION.SCROLL_SLIDER_SUFFIX;
@@ -1350,21 +1466,7 @@ version: 4.5.0
1350
1466
  }).join("\n");
1351
1467
  var bullets = [].slice.call(sliderEl.children);
1352
1468
  bullets.forEach(function (bullet, index) {
1353
- var anchorPoint = anchorPoints[index];
1354
- bullet.addEventListener(BROWSER.MOUSE_DOWN, function (e) {
1355
- e.stopPropagation();
1356
- });
1357
- bullet.addEventListener(BROWSER.TOUCH_START, function (e) {
1358
- e.stopPropagation();
1359
- }, {
1360
- passive: true
1361
- });
1362
- bullet.addEventListener(BROWSER.CLICK, function () {
1363
- flicking$1.moveTo(anchorPoint.panel.index).catch(function (err) {
1364
- if (err instanceof flicking.FlickingError) return;
1365
- throw err;
1366
- });
1367
- });
1469
+ _this._addBulletEvents(bullet, index);
1368
1470
  });
1369
1471
  if (bullets.length <= 0) return;
1370
1472
  var bulletStyle = getComputedStyle(bullets[0]);
@@ -1372,6 +1474,7 @@ version: 4.5.0
1372
1474
  wrapper.style.width = bulletSize * pagination.bulletCount + "px";
1373
1475
  this._bullets = bullets;
1374
1476
  this._bulletSize = bulletSize;
1477
+ this._previousIndex = -1;
1375
1478
  this.update(this._flicking.index);
1376
1479
  window.requestAnimationFrame(function () {
1377
1480
  removeClass(wrapper, uninitClass);
@@ -1383,10 +1486,13 @@ version: 4.5.0
1383
1486
  var flicking$1 = this._flicking;
1384
1487
  var bullets = this._bullets;
1385
1488
  var prevIndex = this._previousIndex;
1489
+ var renderBullet = pagination.renderBullet;
1490
+ var renderActiveBullet = pagination.renderActiveBullet;
1386
1491
  var anchorPoints = flicking$1.camera.anchorPoints;
1387
1492
  var anchorOffset = anchorPoints[0].panel.index;
1388
1493
  var activeIndex = index - anchorOffset;
1389
1494
  if (anchorPoints.length <= 0) return;
1495
+ var bulletClass = pagination.classPrefix + "-" + PAGINATION.BULLET_SUFFIX;
1390
1496
  var bulletActiveClass = pagination.classPrefix + "-" + PAGINATION.BULLET_ACTIVE_SUFFIX;
1391
1497
  var prevClassPrefix = pagination.classPrefix + "-" + PAGINATION.SCROLL_PREV_SUFFIX;
1392
1498
  var nextClassPrefix = pagination.classPrefix + "-" + PAGINATION.SCROLL_NEXT_SUFFIX;
@@ -1401,6 +1507,27 @@ version: 4.5.0
1401
1507
 
1402
1508
  var prevClassRegex = new RegExp("^" + prevClassPrefix);
1403
1509
  var nextClassRegex = new RegExp("^" + nextClassPrefix);
1510
+
1511
+ if (renderActiveBullet) {
1512
+ var prevBullet = bullets[prevIndex];
1513
+
1514
+ if (prevBullet) {
1515
+ var newBullet = this._createBulletFromString(renderBullet(bulletClass, prevIndex), prevIndex);
1516
+
1517
+ prevBullet.parentElement.replaceChild(newBullet, prevBullet);
1518
+ bullets[prevIndex] = newBullet;
1519
+ }
1520
+
1521
+ var activeBullet = bullets[activeIndex];
1522
+
1523
+ if (activeBullet) {
1524
+ var newActiveBullet = this._createBulletFromString(renderActiveBullet(bulletClass, activeIndex), activeIndex);
1525
+
1526
+ activeBullet.parentElement.replaceChild(newActiveBullet, activeBullet);
1527
+ bullets[activeIndex] = newActiveBullet;
1528
+ }
1529
+ }
1530
+
1404
1531
  bullets.forEach(function (bullet, idx) {
1405
1532
  var indexOffset = idx - activeIndex;
1406
1533
  var classList = bullet.className.split(" ");
@@ -1460,22 +1587,24 @@ version: 4.5.0
1460
1587
  renderBullet = _h === void 0 ? function (className) {
1461
1588
  return "<span class=\"" + className + "\"></span>";
1462
1589
  } : _h,
1463
- _j = _b.renderFraction,
1464
- renderFraction = _j === void 0 ? function (currentClass, totalClass) {
1590
+ _j = _b.renderActiveBullet,
1591
+ renderActiveBullet = _j === void 0 ? null : _j,
1592
+ _k = _b.renderFraction,
1593
+ renderFraction = _k === void 0 ? function (currentClass, totalClass) {
1465
1594
  return "<span class=\"" + currentClass + "\"></span>/<span class=\"" + totalClass + "\"></span>";
1466
- } : _j,
1467
- _k = _b.fractionCurrentFormat,
1468
- fractionCurrentFormat = _k === void 0 ? function (index) {
1469
- return index.toString();
1470
1595
  } : _k,
1471
- _l = _b.fractionTotalFormat,
1472
- fractionTotalFormat = _l === void 0 ? function (index) {
1596
+ _l = _b.fractionCurrentFormat,
1597
+ fractionCurrentFormat = _l === void 0 ? function (index) {
1473
1598
  return index.toString();
1474
1599
  } : _l,
1475
- _m = _b.scrollOnChange,
1476
- scrollOnChange = _m === void 0 ? function (index, ctx) {
1600
+ _m = _b.fractionTotalFormat,
1601
+ fractionTotalFormat = _m === void 0 ? function (index) {
1602
+ return index.toString();
1603
+ } : _m,
1604
+ _o = _b.scrollOnChange,
1605
+ scrollOnChange = _o === void 0 ? function (index, ctx) {
1477
1606
  return ctx.moveTo(index);
1478
- } : _m;
1607
+ } : _o;
1479
1608
  /* Internal Values */
1480
1609
 
1481
1610
 
@@ -1497,6 +1626,7 @@ version: 4.5.0
1497
1626
  this._classPrefix = classPrefix;
1498
1627
  this._bulletCount = bulletCount;
1499
1628
  this._renderBullet = renderBullet;
1629
+ this._renderActiveBullet = renderActiveBullet;
1500
1630
  this._renderFraction = renderFraction;
1501
1631
  this._fractionCurrentFormat = fractionCurrentFormat;
1502
1632
  this._fractionTotalFormat = fractionTotalFormat;
@@ -1561,6 +1691,16 @@ version: 4.5.0
1561
1691
  enumerable: false,
1562
1692
  configurable: true
1563
1693
  });
1694
+ Object.defineProperty(__proto, "renderActiveBullet", {
1695
+ get: function () {
1696
+ return this._renderActiveBullet;
1697
+ },
1698
+ set: function (val) {
1699
+ this._renderActiveBullet = val;
1700
+ },
1701
+ enumerable: false,
1702
+ configurable: true
1703
+ });
1564
1704
  Object.defineProperty(__proto, "renderFraction", {
1565
1705
  get: function () {
1566
1706
  return this._renderFraction;
@@ -1643,6 +1783,8 @@ version: 4.5.0
1643
1783
  flicking$1.off(flicking.EVENTS.WILL_RESTORE, this._onIndexChange);
1644
1784
  flicking$1.off(flicking.EVENTS.PANEL_CHANGE, this.update);
1645
1785
 
1786
+ this._renderer.destroy();
1787
+
1646
1788
  this._removeAllChilds();
1647
1789
 
1648
1790
  this._flicking = null;