@egjs/flicking-plugins 4.6.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.6.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.6.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
 
@@ -1199,6 +1202,39 @@ version: 4.6.0
1199
1202
  this._wrapper = wrapper;
1200
1203
  }
1201
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
+
1202
1238
  return Renderer;
1203
1239
  }();
1204
1240
 
@@ -1210,64 +1246,112 @@ version: 4.6.0
1210
1246
  function BulletRenderer() {
1211
1247
  var _this = _super !== null && _super.apply(this, arguments) || this;
1212
1248
 
1213
- _this._childs = [];
1249
+ _this._bullets = [];
1250
+ _this._prevIndex = -1;
1214
1251
  return _this;
1215
1252
  }
1216
1253
 
1217
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
+ };
1218
1276
 
1219
1277
  __proto.render = function () {
1220
- var flicking$1 = this._flicking;
1278
+ var _this = this;
1279
+
1280
+ var flicking = this._flicking;
1221
1281
  var pagination = this._pagination;
1282
+ var wrapper = this._wrapper;
1283
+ var bulletClass = this._bulletClass;
1284
+ var activeClass = this._activeClass;
1222
1285
  var renderBullet = pagination.renderBullet;
1286
+ var renderActiveBullet = pagination.renderActiveBullet;
1223
1287
  var bulletWrapperClass = pagination.classPrefix + "-" + PAGINATION.BULLET_WRAPPER_SUFFIX;
1224
- var bulletClass = pagination.classPrefix + "-" + PAGINATION.BULLET_SUFFIX;
1225
- var bulletActiveClass = pagination.classPrefix + "-" + PAGINATION.BULLET_ACTIVE_SUFFIX;
1226
- var anchorPoints = flicking$1.camera.anchorPoints;
1227
- var wrapper = this._wrapper;
1288
+ var anchorPoints = flicking.camera.anchorPoints;
1228
1289
  addClass(wrapper, bulletWrapperClass);
1229
- wrapper.innerHTML = anchorPoints.map(function (_, index) {
1230
- 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
+ }
1231
1296
  }).join("\n");
1232
1297
  var bullets = [].slice.call(wrapper.children);
1233
1298
  bullets.forEach(function (bullet, index) {
1234
1299
  var anchorPoint = anchorPoints[index];
1235
1300
 
1236
- if (anchorPoint.panel.index === flicking$1.index) {
1237
- addClass(bullet, bulletActiveClass);
1301
+ if (anchorPoint.panel.index === flicking.index) {
1302
+ addClass(bullet, activeClass);
1303
+ _this._prevIndex = index;
1238
1304
  }
1239
1305
 
1240
- bullet.addEventListener(BROWSER.MOUSE_DOWN, function (e) {
1241
- e.stopPropagation();
1242
- });
1243
- bullet.addEventListener(BROWSER.TOUCH_START, function (e) {
1244
- e.stopPropagation();
1245
- }, {
1246
- passive: true
1247
- });
1248
- bullet.addEventListener(BROWSER.CLICK, function () {
1249
- flicking$1.moveTo(anchorPoint.panel.index).catch(function (err) {
1250
- if (err instanceof flicking.FlickingError) return;
1251
- throw err;
1252
- });
1253
- });
1306
+ _this._addBulletEvents(bullet, index);
1254
1307
  });
1255
- this._childs = bullets;
1308
+ this._bullets = bullets;
1256
1309
  };
1257
1310
 
1258
1311
  __proto.update = function (index) {
1259
1312
  var flicking = this._flicking;
1260
1313
  var pagination = this._pagination;
1261
- var bullets = this._childs;
1262
- 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;
1263
1319
  var anchorPoints = flicking.camera.anchorPoints;
1320
+ var renderBullet = pagination.renderBullet;
1321
+ var renderActiveBullet = pagination.renderActiveBullet;
1264
1322
  if (anchorPoints.length <= 0) return;
1265
- bullets.forEach(function (bullet) {
1266
- removeClass(bullet, activeClass);
1267
- });
1268
1323
  var anchorOffset = anchorPoints[0].panel.index;
1269
- var activeBullet = bullets[index - anchorOffset];
1270
- 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;
1271
1355
  };
1272
1356
 
1273
1357
  return BulletRenderer;
@@ -1279,11 +1363,20 @@ version: 4.6.0
1279
1363
  __extends(FractionRenderer, _super);
1280
1364
 
1281
1365
  function FractionRenderer() {
1282
- 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;
1283
1371
  }
1284
1372
 
1285
1373
  var __proto = FractionRenderer.prototype;
1286
1374
 
1375
+ __proto.destroy = function () {
1376
+ this._prevIndex = -1;
1377
+ this._prevTotal = -1;
1378
+ };
1379
+
1287
1380
  __proto.render = function () {
1288
1381
  var flicking = this._flicking;
1289
1382
  var wrapper = this._wrapper;
@@ -1300,14 +1393,18 @@ version: 4.6.0
1300
1393
  var flicking = this._flicking;
1301
1394
  var wrapper = this._wrapper;
1302
1395
  var pagination = this._pagination;
1303
- var fractionCurrentClass = pagination.classPrefix + "-" + PAGINATION.FRACTION_CURRENT_SUFFIX;
1304
- var fractionTotalClass = pagination.classPrefix + "-" + PAGINATION.FRACTION_TOTAL_SUFFIX;
1305
- var currentWrapper = wrapper.querySelector("." + fractionCurrentClass);
1306
- var totalWrapper = wrapper.querySelector("." + fractionTotalClass);
1307
1396
  var anchorPoints = flicking.camera.anchorPoints;
1308
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);
1309
1404
  currentWrapper.innerHTML = pagination.fractionCurrentFormat(currentIndex);
1310
- totalWrapper.innerHTML = pagination.fractionTotalFormat(anchorPoints.length);
1405
+ totalWrapper.innerHTML = pagination.fractionTotalFormat(anchorCount);
1406
+ this._prevIndex = currentIndex;
1407
+ this._prevTotal = anchorCount;
1311
1408
  };
1312
1409
 
1313
1410
  return FractionRenderer;
@@ -1340,12 +1437,21 @@ version: 4.6.0
1340
1437
 
1341
1438
  var __proto = ScrollBulletRenderer.prototype;
1342
1439
 
1440
+ __proto.destroy = function () {
1441
+ this._bullets = [];
1442
+ this._bulletSize = 0;
1443
+ this._previousIndex = -1;
1444
+ this._sliderIndex = -1;
1445
+ };
1446
+
1343
1447
  __proto.render = function () {
1448
+ var _this = this;
1449
+
1344
1450
  var wrapper = this._wrapper;
1345
- var flicking$1 = this._flicking;
1451
+ var flicking = this._flicking;
1346
1452
  var pagination = this._pagination;
1347
1453
  var renderBullet = pagination.renderBullet;
1348
- var anchorPoints = flicking$1.camera.anchorPoints;
1454
+ var anchorPoints = flicking.camera.anchorPoints;
1349
1455
  var dynamicWrapperClass = pagination.classPrefix + "-" + PAGINATION.SCROLL_WRAPPER_SUFFIX;
1350
1456
  var bulletClass = pagination.classPrefix + "-" + PAGINATION.BULLET_SUFFIX;
1351
1457
  var sliderClass = pagination.classPrefix + "-" + PAGINATION.SCROLL_SLIDER_SUFFIX;
@@ -1360,21 +1466,7 @@ version: 4.6.0
1360
1466
  }).join("\n");
1361
1467
  var bullets = [].slice.call(sliderEl.children);
1362
1468
  bullets.forEach(function (bullet, index) {
1363
- var anchorPoint = anchorPoints[index];
1364
- bullet.addEventListener(BROWSER.MOUSE_DOWN, function (e) {
1365
- e.stopPropagation();
1366
- });
1367
- bullet.addEventListener(BROWSER.TOUCH_START, function (e) {
1368
- e.stopPropagation();
1369
- }, {
1370
- passive: true
1371
- });
1372
- bullet.addEventListener(BROWSER.CLICK, function () {
1373
- flicking$1.moveTo(anchorPoint.panel.index).catch(function (err) {
1374
- if (err instanceof flicking.FlickingError) return;
1375
- throw err;
1376
- });
1377
- });
1469
+ _this._addBulletEvents(bullet, index);
1378
1470
  });
1379
1471
  if (bullets.length <= 0) return;
1380
1472
  var bulletStyle = getComputedStyle(bullets[0]);
@@ -1382,6 +1474,7 @@ version: 4.6.0
1382
1474
  wrapper.style.width = bulletSize * pagination.bulletCount + "px";
1383
1475
  this._bullets = bullets;
1384
1476
  this._bulletSize = bulletSize;
1477
+ this._previousIndex = -1;
1385
1478
  this.update(this._flicking.index);
1386
1479
  window.requestAnimationFrame(function () {
1387
1480
  removeClass(wrapper, uninitClass);
@@ -1393,10 +1486,13 @@ version: 4.6.0
1393
1486
  var flicking$1 = this._flicking;
1394
1487
  var bullets = this._bullets;
1395
1488
  var prevIndex = this._previousIndex;
1489
+ var renderBullet = pagination.renderBullet;
1490
+ var renderActiveBullet = pagination.renderActiveBullet;
1396
1491
  var anchorPoints = flicking$1.camera.anchorPoints;
1397
1492
  var anchorOffset = anchorPoints[0].panel.index;
1398
1493
  var activeIndex = index - anchorOffset;
1399
1494
  if (anchorPoints.length <= 0) return;
1495
+ var bulletClass = pagination.classPrefix + "-" + PAGINATION.BULLET_SUFFIX;
1400
1496
  var bulletActiveClass = pagination.classPrefix + "-" + PAGINATION.BULLET_ACTIVE_SUFFIX;
1401
1497
  var prevClassPrefix = pagination.classPrefix + "-" + PAGINATION.SCROLL_PREV_SUFFIX;
1402
1498
  var nextClassPrefix = pagination.classPrefix + "-" + PAGINATION.SCROLL_NEXT_SUFFIX;
@@ -1411,6 +1507,27 @@ version: 4.6.0
1411
1507
 
1412
1508
  var prevClassRegex = new RegExp("^" + prevClassPrefix);
1413
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
+
1414
1531
  bullets.forEach(function (bullet, idx) {
1415
1532
  var indexOffset = idx - activeIndex;
1416
1533
  var classList = bullet.className.split(" ");
@@ -1470,22 +1587,24 @@ version: 4.6.0
1470
1587
  renderBullet = _h === void 0 ? function (className) {
1471
1588
  return "<span class=\"" + className + "\"></span>";
1472
1589
  } : _h,
1473
- _j = _b.renderFraction,
1474
- 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) {
1475
1594
  return "<span class=\"" + currentClass + "\"></span>/<span class=\"" + totalClass + "\"></span>";
1476
- } : _j,
1477
- _k = _b.fractionCurrentFormat,
1478
- fractionCurrentFormat = _k === void 0 ? function (index) {
1479
- return index.toString();
1480
1595
  } : _k,
1481
- _l = _b.fractionTotalFormat,
1482
- fractionTotalFormat = _l === void 0 ? function (index) {
1596
+ _l = _b.fractionCurrentFormat,
1597
+ fractionCurrentFormat = _l === void 0 ? function (index) {
1483
1598
  return index.toString();
1484
1599
  } : _l,
1485
- _m = _b.scrollOnChange,
1486
- 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) {
1487
1606
  return ctx.moveTo(index);
1488
- } : _m;
1607
+ } : _o;
1489
1608
  /* Internal Values */
1490
1609
 
1491
1610
 
@@ -1507,6 +1626,7 @@ version: 4.6.0
1507
1626
  this._classPrefix = classPrefix;
1508
1627
  this._bulletCount = bulletCount;
1509
1628
  this._renderBullet = renderBullet;
1629
+ this._renderActiveBullet = renderActiveBullet;
1510
1630
  this._renderFraction = renderFraction;
1511
1631
  this._fractionCurrentFormat = fractionCurrentFormat;
1512
1632
  this._fractionTotalFormat = fractionTotalFormat;
@@ -1571,6 +1691,16 @@ version: 4.6.0
1571
1691
  enumerable: false,
1572
1692
  configurable: true
1573
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
+ });
1574
1704
  Object.defineProperty(__proto, "renderFraction", {
1575
1705
  get: function () {
1576
1706
  return this._renderFraction;
@@ -1653,6 +1783,8 @@ version: 4.6.0
1653
1783
  flicking$1.off(flicking.EVENTS.WILL_RESTORE, this._onIndexChange);
1654
1784
  flicking$1.off(flicking.EVENTS.PANEL_CHANGE, this.update);
1655
1785
 
1786
+ this._renderer.destroy();
1787
+
1656
1788
  this._removeAllChilds();
1657
1789
 
1658
1790
  this._flicking = null;