@egjs/flicking-plugins 4.7.2-beta.1 → 4.7.2-beta.10

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.
Files changed (46) hide show
  1. package/README.md +42 -51
  2. package/css/all.css +2 -0
  3. package/css/arrow.css +2 -2
  4. package/css/pagination.css +5 -3
  5. package/declaration/Arrow.d.ts +63 -2
  6. package/declaration/AutoPlay.d.ts +68 -4
  7. package/declaration/Fade.d.ts +25 -0
  8. package/declaration/Parallax.d.ts +25 -0
  9. package/declaration/Perspective.d.ts +45 -2
  10. package/declaration/Sync.d.ts +57 -2
  11. package/declaration/index.d.ts +7 -4
  12. package/declaration/pagination/Pagination.d.ts +81 -1
  13. package/declaration/pagination/renderer/Renderer.d.ts +1 -1
  14. package/declaration/tsdoc-metadata.json +11 -0
  15. package/dist/arrow.css +2 -2
  16. package/dist/flicking-plugins.css +23 -8
  17. package/dist/flicking-plugins.min.css +1 -1
  18. package/dist/pagination.css +21 -6
  19. package/dist/pagination.min.css +1 -1
  20. package/dist/plugins.esm.js +1020 -1535
  21. package/dist/plugins.esm.js.map +1 -1
  22. package/dist/plugins.js +1044 -1571
  23. package/dist/plugins.js.map +1 -1
  24. package/dist/plugins.min.js +1 -9
  25. package/dist/plugins.min.js.map +1 -1
  26. package/package.json +49 -105
  27. package/src/Arrow.ts +124 -49
  28. package/src/AutoPlay.ts +110 -31
  29. package/src/Fade.ts +31 -11
  30. package/src/Parallax.ts +31 -11
  31. package/src/Perspective.ts +69 -22
  32. package/src/Sync.ts +61 -19
  33. package/src/index.ts +9 -22
  34. package/src/pagination/Pagination.ts +163 -40
  35. package/src/pagination/index.ts +2 -6
  36. package/src/pagination/renderer/BulletRenderer.ts +1 -4
  37. package/src/pagination/renderer/FractionRenderer.ts +1 -3
  38. package/src/pagination/renderer/Renderer.ts +14 -13
  39. package/src/pagination/renderer/ScrollBulletRenderer.ts +5 -12
  40. package/CONTRIBUTING +0 -58
  41. package/rollup.config.dev.js +0 -17
  42. package/rollup.config.js +0 -33
  43. package/tsconfig.declaration.json +0 -10
  44. package/tsconfig.eslint.json +0 -8
  45. package/tsconfig.json +0 -17
  46. package/tsconfig.test.json +0 -21
package/dist/plugins.js CHANGED
@@ -1,487 +1,13 @@
1
- /*
2
- Copyright (c) 2019-present NAVER Corp.
3
- name: @egjs/flicking-plugins
4
- license: MIT
5
- author: NAVER Corp.
6
- repository: https://github.com/naver/egjs-flicking-plugins
7
- version: 4.7.2-beta.1
8
- */
9
- (function (global, factory) {
10
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@egjs/flicking')) :
11
- typeof define === 'function' && define.amd ? define(['exports', '@egjs/flicking'], factory) :
12
- (global = global || self, factory((global.Flicking = global.Flicking || {}, global.Flicking.Plugins = {}), global.Flicking));
13
- }(this, function (exports, flicking) { 'use strict';
14
-
15
- /**
16
- * You can apply parallax effect while panel is moving.
17
- * @ko 패널들을 움직이면서 parallax 효과를 부여할 수 있습니다.
18
- * @memberof Flicking.Plugins
19
- */
20
-
21
- var Parallax =
22
- /*#__PURE__*/
23
- function () {
24
- /**
25
- * @param {string} selector Selector of the element to apply parallax effect<ko> Parallax 효과를 적용할 엘리먼트의 선택자 </ko>
26
- * @param {number} scale Effect amplication scale<ko>효과 증폭도</ko>
27
- * @example
28
- * ```ts
29
- * flicking.addPlugins(new Parallax("img", 1));
30
- * ```
31
- */
32
- function Parallax(selector, scale) {
33
- var _this = this;
34
-
35
- if (selector === void 0) {
36
- selector = "";
37
- }
38
-
39
- if (scale === void 0) {
40
- scale = 1;
41
- }
42
-
43
- this.update = function () {
44
- _this._onMove();
45
- };
46
-
47
- this._onMove = function () {
48
- var flicking = _this._flicking;
49
- if (!flicking) return;
50
- var panels = flicking.visiblePanels;
51
- panels.forEach(function (panel) {
52
- var progress = panel.outsetProgress;
53
- var el = panel.element;
54
- var target = _this._selector ? el.querySelector(_this._selector) : el;
55
- var parentTarget = target.parentNode;
56
- var rect = target.getBoundingClientRect();
57
- var parentRect = parentTarget.getBoundingClientRect();
58
- var position = (parentRect.width - rect.width) / 2 * progress * _this._scale;
59
- var transform = "translate(-50%) translate(" + position + "px)";
60
- var style = target.style;
61
- style.cssText += "transform: " + transform + ";-webkit-transform: " + transform + ";-ms-transform:" + transform;
62
- });
63
- };
64
-
65
- this._flicking = null;
66
- this._selector = selector;
67
- this._scale = scale;
68
- }
69
-
70
- var __proto = Parallax.prototype;
71
- Object.defineProperty(__proto, "selector", {
72
- get: function () {
73
- return this._selector;
74
- },
75
- set: function (val) {
76
- this._selector = val;
77
- },
78
- enumerable: false,
79
- configurable: true
80
- });
81
- Object.defineProperty(__proto, "scale", {
82
- get: function () {
83
- return this._scale;
84
- },
85
- set: function (val) {
86
- this._scale = val;
87
- },
88
- enumerable: false,
89
- configurable: true
90
- });
91
-
92
- __proto.init = function (flicking$1) {
93
- if (this._flicking) {
94
- this.destroy();
95
- }
96
-
97
- this._flicking = flicking$1;
98
- flicking$1.on(flicking.EVENTS.MOVE, this._onMove);
99
- flicking$1.on(flicking.EVENTS.AFTER_RESIZE, this.update);
100
-
101
- this._onMove();
102
- };
103
-
104
- __proto.destroy = function () {
105
- if (!this._flicking) return;
106
-
107
- this._flicking.off(flicking.EVENTS.MOVE, this._onMove);
108
-
109
- this._flicking.off(flicking.EVENTS.AFTER_RESIZE, this.update);
110
-
111
- this._flicking = null;
112
- };
113
-
114
- return Parallax;
115
- }();
116
-
117
- /**
118
- * You can apply fade in / out effect while panel is moving.
119
- * @ko 패널들을 움직이면서 fade in / out 효과를 부여할 수 있습니다.
120
- * @memberof Flicking.Plugins
121
- */
122
-
123
- var Fade =
124
- /*#__PURE__*/
125
- function () {
126
- /**
127
- * @param - The selector of the element to which the fade effect is to be applied. If the selector is blank, it applies to panel element. <ko>Fade 효과를 적용할 대상의 선택자. 선택자가 공백이면 패널 엘리먼트에 적용된다.</ko>
128
- * @param - Effect amplication scale<ko>효과 증폭도</ko>
129
- * @example
130
- * ```ts
131
- * flicking.addPlugins(new Fade("p", 1));
132
- * ```
133
- */
134
- function Fade(selector, scale) {
135
- var _this = this;
136
-
137
- if (selector === void 0) {
138
- selector = "";
139
- }
140
-
141
- if (scale === void 0) {
142
- scale = 1;
143
- }
144
-
145
- this.update = function () {
146
- _this._onMove();
147
- };
148
-
149
- this._onMove = function () {
150
- var flicking = _this._flicking;
151
- var selector = _this._selector;
152
- var scale = _this._scale;
153
- if (!flicking) return;
154
- var panels = flicking.visiblePanels;
155
- panels.forEach(function (panel) {
156
- var progress = panel.outsetProgress;
157
- var el = panel.element;
158
- var target = selector ? el.querySelector(selector) : el;
159
-
160
- if (target) {
161
- var opacity = Math.min(1, Math.max(0, 1 - Math.abs(progress * scale)));
162
- target.style.opacity = "" + opacity;
163
- }
164
- });
165
- };
166
-
167
- this._flicking = null;
168
- this._selector = selector;
169
- this._scale = scale;
170
- }
171
-
172
- var __proto = Fade.prototype;
173
- Object.defineProperty(__proto, "selector", {
174
- get: function () {
175
- return this._selector;
176
- },
177
- set: function (val) {
178
- this._selector = val;
179
- },
180
- enumerable: false,
181
- configurable: true
182
- });
183
- Object.defineProperty(__proto, "scale", {
184
- get: function () {
185
- return this._scale;
186
- },
187
- set: function (val) {
188
- this._scale = val;
189
- },
190
- enumerable: false,
191
- configurable: true
192
- });
193
-
194
- __proto.init = function (flicking$1) {
195
- if (this._flicking) {
196
- this.destroy();
197
- }
198
-
199
- this._flicking = flicking$1;
200
- flicking$1.on(flicking.EVENTS.MOVE, this._onMove);
201
- flicking$1.on(flicking.EVENTS.AFTER_RESIZE, this.update);
202
-
203
- this._onMove();
204
- };
205
-
206
- __proto.destroy = function () {
207
- if (!this._flicking) return;
208
-
209
- this._flicking.off(flicking.EVENTS.MOVE, this._onMove);
210
-
211
- this._flicking.off(flicking.EVENTS.AFTER_RESIZE, this.update);
212
-
213
- this._flicking = null;
214
- };
215
-
216
- return Fade;
217
- }();
218
-
219
- /**
220
- * Plugin that allow you to automatically move to the next/previous panel, on a specific time basis
221
- * @ko 일정 시간마다, 자동으로 다음/이전 패널로 넘어가도록 할 수 있는 플러그인
222
- * @memberof Flicking.Plugins
223
- */
224
-
225
- var AutoPlay =
226
- /*#__PURE__*/
227
- function () {
228
- /**
229
- * @param {AutoPlayOptions} options Options for the AutoPlay instance.<ko>AutoPlay 옵션</ko>
230
- * @param {number} options.duration Time to wait before moving on to the next panel.<ko>다음 패널로 움직이기까지 대기 시간</ko>
231
- * @param {number | undefined} options.animationDuration Duration of animation of moving to the next panel. If undefined, duration option of the Flicking instance is used instead.<ko>패널이 움직이는 애니메이션의 지속 시간, undefined라면 Flicking 인스턴스의 duration 값을 사용한다</ko>
232
- * @param {"PREV" | "NEXT"} options.direction The direction in which the panel moves.<ko>패널이 움직이는 방향</ko>
233
- * @param {boolean} options.stopOnHover Whether to stop when mouse hover upon the element.<ko>엘리먼트에 마우스를 올렸을 때 AutoPlay를 정지할지 여부</ko>
234
- * @param {number} options.delayAfterHover If stopOnHover is true, the amount of time to wait before moving on to the next panel when mouse leaves the element.<ko>stopOnHover를 사용한다면 마우스가 엘리먼트로부터 나간 뒤 다음 패널로 움직이기까지 대기 시간</ko>
235
- * @example
236
- * ```ts
237
- * flicking.addPlugins(new AutoPlay({ duration: 2000, direction: "NEXT" }));
238
- * ```
239
- */
240
- function AutoPlay(_a) {
241
- var _this = this;
242
-
243
- var _b = _a === void 0 ? {} : _a,
244
- _c = _b.duration,
245
- duration = _c === void 0 ? 2000 : _c,
246
- _d = _b.animationDuration,
247
- animationDuration = _d === void 0 ? undefined : _d,
248
- _e = _b.direction,
249
- direction = _e === void 0 ? flicking.DIRECTION.NEXT : _e,
250
- _f = _b.stopOnHover,
251
- stopOnHover = _f === void 0 ? false : _f,
252
- delayAfterHover = _b.delayAfterHover;
253
- /* Internal Values */
254
-
255
-
256
- this._flicking = null;
257
- this._timerId = 0;
258
- this._mouseEntered = false;
259
- this._playing = false;
260
-
261
- this.play = function () {
262
- _this._movePanel(_this._duration);
263
- };
264
-
265
- this.stop = function () {
266
- _this._playing = false;
267
- clearTimeout(_this._timerId);
268
- };
269
-
270
- this._onMouseEnter = function () {
271
- _this._mouseEntered = true;
272
-
273
- _this.stop();
274
- };
275
-
276
- this._onMouseLeave = function () {
277
- _this._mouseEntered = false;
278
-
279
- _this._movePanel(_this._delayAfterHover);
280
- };
281
-
282
- this._duration = duration;
283
- this._animationDuration = animationDuration;
284
- this._direction = direction;
285
- this._stopOnHover = stopOnHover;
286
- this._delayAfterHover = delayAfterHover !== null && delayAfterHover !== void 0 ? delayAfterHover : duration;
287
- }
288
-
289
- var __proto = AutoPlay.prototype;
290
- Object.defineProperty(__proto, "duration", {
291
- get: function () {
292
- return this._duration;
293
- },
294
- set: function (val) {
295
- this._duration = val;
296
- },
297
- enumerable: false,
298
- configurable: true
299
- });
300
- Object.defineProperty(__proto, "animationDuration", {
301
- get: function () {
302
- return this._animationDuration;
303
- },
304
- set: function (val) {
305
- this._animationDuration = val;
306
- },
307
- enumerable: false,
308
- configurable: true
309
- });
310
- Object.defineProperty(__proto, "direction", {
311
- get: function () {
312
- return this._direction;
313
- },
314
- set: function (val) {
315
- this._direction = val;
316
- },
317
- enumerable: false,
318
- configurable: true
319
- });
320
- Object.defineProperty(__proto, "stopOnHover", {
321
- get: function () {
322
- return this._stopOnHover;
323
- },
324
- set: function (val) {
325
- this._stopOnHover = val;
326
- },
327
- enumerable: false,
328
- configurable: true
329
- });
330
- Object.defineProperty(__proto, "delayAfterHover", {
331
- get: function () {
332
- return this._delayAfterHover;
333
- },
334
- set: function (val) {
335
- this._delayAfterHover = val;
336
- },
337
- enumerable: false,
338
- configurable: true
339
- });
340
- Object.defineProperty(__proto, "playing", {
341
- get: function () {
342
- return this._playing;
343
- },
344
- enumerable: false,
345
- configurable: true
346
- });
347
-
348
- __proto.init = function (flicking$1) {
349
- var _a;
350
-
351
- if (this._flicking) {
352
- this.destroy();
353
- }
354
-
355
- flicking$1.on((_a = {}, _a[flicking.EVENTS.MOVE_START] = this.stop, _a[flicking.EVENTS.HOLD_START] = this.stop, _a[flicking.EVENTS.MOVE_END] = this.play, _a[flicking.EVENTS.SELECT] = this.play, _a));
356
- this._flicking = flicking$1;
357
-
358
- if (this._stopOnHover) {
359
- var targetEl = this._flicking.element;
360
- targetEl.addEventListener("mouseenter", this._onMouseEnter, false);
361
- targetEl.addEventListener("mouseleave", this._onMouseLeave, false);
362
- }
363
-
364
- this.play();
365
- };
366
-
367
- __proto.destroy = function () {
368
- var flicking$1 = this._flicking;
369
- this._mouseEntered = false;
370
- this.stop();
371
-
372
- if (!flicking$1) {
373
- return;
374
- }
375
-
376
- flicking$1.off(flicking.EVENTS.MOVE_START, this.stop);
377
- flicking$1.off(flicking.EVENTS.HOLD_START, this.stop);
378
- flicking$1.off(flicking.EVENTS.MOVE_END, this.play);
379
- flicking$1.off(flicking.EVENTS.SELECT, this.play);
380
- var targetEl = flicking$1.element;
381
- targetEl.removeEventListener("mouseenter", this._onMouseEnter, false);
382
- targetEl.removeEventListener("mouseleave", this._onMouseLeave, false);
383
- this._flicking = null;
384
- };
385
-
386
- __proto.update = function () {// DO-NOTHING
387
- };
388
-
389
- __proto._movePanel = function (duration) {
390
- var _this = this;
391
-
392
- var flicking$1 = this._flicking;
393
- var direction = this._direction;
394
-
395
- if (!flicking$1) {
396
- return;
397
- }
398
-
399
- this.stop();
400
-
401
- if (this._mouseEntered || flicking$1.animating) {
402
- return;
403
- }
404
-
405
- this._playing = true;
406
- this._timerId = window.setTimeout(function () {
407
- var _a, _b;
408
-
409
- var animationDuration = _this._animationDuration || flicking$1.duration;
410
- var moveType = flicking$1.moveType; // for freeScroll
411
-
412
- if (moveType === flicking.MOVE_TYPE.FREE_SCROLL || (moveType === null || moveType === void 0 ? void 0 : moveType[0]) === flicking.MOVE_TYPE.FREE_SCROLL) {
413
- var range = flicking$1.camera.range;
414
- var cameraPosition = flicking$1.camera.position;
415
- var currentPanel = flicking$1.currentPanel;
416
- var prevPanel = currentPanel.prev();
417
- var nextPanel = currentPanel.next();
418
- var currentPosition = currentPanel.position;
419
- var nextPosition = (_a = nextPanel === null || nextPanel === void 0 ? void 0 : nextPanel.position) !== null && _a !== void 0 ? _a : range.max;
420
- var prevPosition = (_b = prevPanel === null || prevPanel === void 0 ? void 0 : prevPanel.position) !== null && _b !== void 0 ? _b : range.min; // circular: prev (last) > cur (0) => prev(-1) < cur(0)
421
-
422
- if (prevPosition > currentPosition) {
423
- prevPosition = range.min - (range.max - prevPosition);
424
- } // current (last) > next (0)
425
-
426
-
427
- if (nextPosition < currentPosition) {
428
- nextPosition += range.max;
429
- }
430
-
431
- if (direction === flicking.DIRECTION.NEXT) {
432
- // prev - cur - camera - next
433
- var size = nextPosition - currentPosition;
434
- var restSize = nextPosition - cameraPosition;
435
-
436
- if (cameraPosition < currentPosition) {
437
- // prev - camera - cur - next
438
- restSize = nextPosition - cameraPosition;
439
- }
440
-
441
- animationDuration *= restSize / size;
442
- } else {
443
- // prev - caemra - cur - next
444
- var size = currentPosition - prevPosition;
445
- var restSize = cameraPosition - prevPosition;
446
-
447
- if (cameraPosition > currentPosition) {
448
- // prev - cur - camera - next
449
- restSize = cameraPosition - prevPosition;
450
- }
451
-
452
- animationDuration *= restSize / size;
453
- }
454
- }
455
-
456
- if (direction === flicking.DIRECTION.NEXT) {
457
- flicking$1.next(animationDuration).catch(function () {
458
- return void 0;
459
- });
460
- } else {
461
- flicking$1.prev(animationDuration).catch(function () {
462
- return void 0;
463
- });
464
- }
465
-
466
- _this.play();
467
- }, duration);
468
- };
469
-
470
- return AutoPlay;
471
- }();
472
-
473
- var BROWSER = {
474
- CLICK: "click",
475
- MOUSE_DOWN: "mousedown",
476
- TOUCH_START: "touchstart"
477
- };
478
-
479
- var ARROW = {
1
+ (function(global, factory) {
2
+ typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("@egjs/flicking")) : typeof define === "function" && define.amd ? define(["exports", "@egjs/flicking"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory((global.Flicking = global.Flicking || {}, global.Flicking.Plugins = {}), global.Flicking));
3
+ })(this, (function(exports2, flicking) {
4
+ "use strict";
5
+ const ARROW = {
480
6
  PREV_SELECTOR: ".flicking-arrow-prev",
481
7
  NEXT_SELECTOR: ".flicking-arrow-next",
482
8
  DISABLED_CLASS: "flicking-arrow-disabled"
483
9
  };
484
- var PAGINATION = {
10
+ const PAGINATION = {
485
11
  SELECTOR: ".flicking-pagination",
486
12
  PREFIX: "flicking-pagination",
487
13
  BULLET_WRAPPER_SUFFIX: "bullets",
@@ -501,151 +27,125 @@ version: 4.7.2-beta.1
501
27
  SCROLL: "scroll"
502
28
  }
503
29
  };
504
- var SYNC = {
30
+ const SYNC = {
505
31
  TYPE: {
506
32
  CAMERA: "camera",
507
33
  INDEX: "index"
508
34
  }
509
35
  };
510
-
511
- var addClass = function (el, className) {
36
+ const BROWSER = {
37
+ CLICK: "click",
38
+ MOUSE_DOWN: "mousedown",
39
+ TOUCH_START: "touchstart"
40
+ };
41
+ const addClass = (el, className) => {
512
42
  if (!el) return;
513
-
514
43
  if (el.classList) {
515
44
  el.classList.add(className);
516
45
  } else {
517
- var classes = el.className.split(" ");
518
-
46
+ const classes = el.className.split(" ");
519
47
  if (classes.indexOf(className) < 0) {
520
- el.className = el.className + " " + className;
48
+ el.className = `${el.className} ${className}`;
521
49
  }
522
50
  }
523
51
  };
524
- var removeClass = function (el, className) {
52
+ const removeClass = (el, className) => {
525
53
  if (!el) return;
526
-
527
54
  if (el.classList) {
528
55
  el.classList.remove(className);
529
56
  } else {
530
- var classRegex = new RegExp("( |^)" + className + "( |$)", "g");
57
+ const classRegex = new RegExp(`( |^)${className}( |$)`, "g");
531
58
  el.className.replace(classRegex, " ");
532
59
  }
533
60
  };
534
- var getElement = function (selector, parent, pluginName) {
535
- var el = parent.querySelector(selector);
536
-
61
+ const getElement = (selector, parent, pluginName) => {
62
+ const el = parent.querySelector(selector);
537
63
  if (!el) {
538
- throw new Error("[Flicking-" + pluginName + "] Couldn't find element with the given selector: " + selector);
64
+ throw new Error(`[Flicking-${pluginName}] Couldn't find element with the given selector: ${selector}`);
539
65
  }
540
-
541
66
  return el;
542
67
  };
543
-
544
- /**
545
- * A plugin to easily create prev/right arrow button of Flicking
546
- * @ko 이전/다음 버튼을 쉽게 만들 수 있는 플러그인
547
- * @memberof Flicking.Plugins
548
- */
549
-
550
- var Arrow =
551
- /*#__PURE__*/
552
- function () {
553
- function Arrow(_a) {
554
- var _this = this;
555
-
556
- var _b = _a === void 0 ? {} : _a,
557
- _c = _b.parentEl,
558
- parentEl = _c === void 0 ? null : _c,
559
- _d = _b.prevElSelector,
560
- prevElSelector = _d === void 0 ? ARROW.PREV_SELECTOR : _d,
561
- _e = _b.nextElSelector,
562
- nextElSelector = _e === void 0 ? ARROW.NEXT_SELECTOR : _e,
563
- _f = _b.disabledClass,
564
- disabledClass = _f === void 0 ? ARROW.DISABLED_CLASS : _f,
565
- _g = _b.moveCount,
566
- moveCount = _g === void 0 ? 1 : _g,
567
- _h = _b.moveByViewportSize,
568
- moveByViewportSize = _h === void 0 ? false : _h;
569
- /* Internal Values */
570
-
571
-
68
+ class Arrow {
69
+ /**
70
+ * @param options - Options for the Arrow instance
71
+ * @example
72
+ * ```ts
73
+ * flicking.addPlugins(new Arrow({ parentEl: null, prevElSelector: ".flicking-arrow-prev", nextElSelector: ".flicking-arrow-next" }));
74
+ * ```
75
+ */
76
+ constructor(options = {}) {
572
77
  this._flicking = null;
573
-
574
- this._preventInputPropagation = function (e) {
78
+ this._preventInputPropagation = (e) => {
575
79
  e.stopPropagation();
576
80
  };
577
-
578
- this._onPrevClick = function () {
579
- var flicking = _this._flicking;
580
- var camera = flicking.camera;
581
- var anchorPoints = camera.anchorPoints;
582
- if (flicking.animating || anchorPoints.length <= 0) return;
583
- var firstAnchor = anchorPoints[0];
584
- var moveCount = _this._moveCount;
585
-
586
- if (_this._moveByViewportSize) {
587
- flicking.control.moveToPosition(camera.position - camera.size, flicking.duration).catch(_this._onCatch);
81
+ this._onPrevClick = () => {
82
+ const flicking2 = this._flicking;
83
+ const camera = flicking2.camera;
84
+ const anchorPoints = camera.anchorPoints;
85
+ if (flicking2.animating || anchorPoints.length <= 0) return;
86
+ const firstAnchor = anchorPoints[0];
87
+ const moveCount2 = this._moveCount;
88
+ if (this._moveByViewportSize) {
89
+ flicking2.control.moveToPosition(camera.position - camera.size, flicking2.duration).catch(this._onCatch);
588
90
  } else {
589
- if (flicking.circularEnabled) {
590
- var targetPanel = flicking.currentPanel;
591
-
592
- for (var i = 0; i < moveCount; i++) {
91
+ if (flicking2.circularEnabled) {
92
+ let targetPanel = flicking2.currentPanel;
93
+ for (let i = 0; i < moveCount2; i++) {
593
94
  targetPanel = targetPanel.prev();
594
95
  }
595
-
596
- targetPanel.focus().catch(_this._onCatch);
597
- } else if (flicking.index > firstAnchor.panel.index) {
598
- flicking.moveTo(Math.max(flicking.index - moveCount, firstAnchor.panel.index)).catch(_this._onCatch);
96
+ targetPanel.focus().catch(this._onCatch);
97
+ } else if (flicking2.index > firstAnchor.panel.index) {
98
+ flicking2.moveTo(Math.max(flicking2.index - moveCount2, firstAnchor.panel.index)).catch(this._onCatch);
599
99
  } else if (camera.position > camera.range.min) {
600
- flicking.moveTo(flicking.index).catch(_this._onCatch);
100
+ flicking2.moveTo(flicking2.index).catch(this._onCatch);
601
101
  }
602
102
  }
603
103
  };
604
-
605
- this._onNextClick = function () {
606
- var flicking = _this._flicking;
607
- var camera = flicking.camera;
608
- var anchorPoints = camera.anchorPoints;
609
- if (flicking.animating || anchorPoints.length <= 0) return;
610
- var lastAnchor = anchorPoints[anchorPoints.length - 1];
611
- var moveCount = _this._moveCount;
612
-
613
- if (_this._moveByViewportSize) {
614
- flicking.control.moveToPosition(camera.position + camera.size, flicking.duration).catch(_this._onCatch);
104
+ this._onNextClick = () => {
105
+ const flicking2 = this._flicking;
106
+ const camera = flicking2.camera;
107
+ const anchorPoints = camera.anchorPoints;
108
+ if (flicking2.animating || anchorPoints.length <= 0) return;
109
+ const lastAnchor = anchorPoints[anchorPoints.length - 1];
110
+ const moveCount2 = this._moveCount;
111
+ if (this._moveByViewportSize) {
112
+ flicking2.control.moveToPosition(camera.position + camera.size, flicking2.duration).catch(this._onCatch);
615
113
  } else {
616
- if (flicking.circularEnabled) {
617
- var targetPanel = flicking.currentPanel;
618
-
619
- for (var i = 0; i < moveCount; i++) {
114
+ if (flicking2.circularEnabled) {
115
+ let targetPanel = flicking2.currentPanel;
116
+ for (let i = 0; i < moveCount2; i++) {
620
117
  targetPanel = targetPanel.next();
621
118
  }
622
-
623
- targetPanel.focus().catch(_this._onCatch);
624
- } else if (flicking.index < lastAnchor.panel.index) {
625
- flicking.moveTo(Math.min(flicking.index + moveCount, lastAnchor.panel.index)).catch(_this._onCatch);
119
+ targetPanel.focus().catch(this._onCatch);
120
+ } else if (flicking2.index < lastAnchor.panel.index) {
121
+ flicking2.moveTo(Math.min(flicking2.index + moveCount2, lastAnchor.panel.index)).catch(this._onCatch);
626
122
  } else if (camera.position > camera.range.min) {
627
- flicking.moveTo(flicking.index).catch(_this._onCatch);
123
+ flicking2.moveTo(flicking2.index).catch(this._onCatch);
628
124
  }
629
125
  }
630
126
  };
631
-
632
- this._onAnimation = function () {
633
- var flicking = _this._flicking;
634
- var camera = flicking.camera;
635
- var controller = flicking.control.controller;
636
-
637
- if (flicking.holding) {
638
- _this._updateClass(camera.position);
127
+ this._onAnimation = () => {
128
+ const flicking2 = this._flicking;
129
+ const camera = flicking2.camera;
130
+ const controller = flicking2.control.controller;
131
+ if (flicking2.holding) {
132
+ this._updateClass(camera.position);
639
133
  } else {
640
- _this._updateClass(controller.animatingContext.end);
134
+ this._updateClass(controller.animatingContext.end);
641
135
  }
642
136
  };
643
-
644
- this._onCatch = function (err) {
137
+ this._onCatch = (err) => {
645
138
  if (err instanceof flicking.FlickingError) return;
646
139
  throw err;
647
140
  };
648
-
141
+ const {
142
+ parentEl = null,
143
+ prevElSelector = ARROW.PREV_SELECTOR,
144
+ nextElSelector = ARROW.NEXT_SELECTOR,
145
+ disabledClass = ARROW.DISABLED_CLASS,
146
+ moveCount = 1,
147
+ moveByViewportSize = false
148
+ } = options;
649
149
  this._parentEl = parentEl;
650
150
  this._prevElSelector = prevElSelector;
651
151
  this._nextElSelector = nextElSelector;
@@ -653,313 +153,667 @@ version: 4.7.2-beta.1
653
153
  this._moveCount = moveCount;
654
154
  this._moveByViewportSize = moveByViewportSize;
655
155
  }
656
-
657
- var __proto = Arrow.prototype;
658
- Object.defineProperty(__proto, "prevEl", {
659
- get: function () {
660
- return this._prevEl;
661
- },
662
- enumerable: false,
663
- configurable: true
664
- });
665
- Object.defineProperty(__proto, "nextEl", {
666
- get: function () {
667
- return this._nextEl;
668
- },
669
- enumerable: false,
670
- configurable: true
671
- });
672
- Object.defineProperty(__proto, "parentEl", {
673
- get: function () {
674
- return this._parentEl;
675
- },
676
- set: function (val) {
677
- this._parentEl = val;
678
- },
679
- enumerable: false,
680
- configurable: true
681
- });
682
- Object.defineProperty(__proto, "prevElSelector", {
683
- get: function () {
684
- return this._prevElSelector;
685
- },
686
- set: function (val) {
687
- this._prevElSelector = val;
688
- },
689
- enumerable: false,
690
- configurable: true
691
- });
692
- Object.defineProperty(__proto, "nextElSelector", {
693
- get: function () {
694
- return this._nextElSelector;
695
- },
696
- set: function (val) {
697
- this._nextElSelector = val;
698
- },
699
- enumerable: false,
700
- configurable: true
701
- });
702
- Object.defineProperty(__proto, "disabledClass", {
703
- get: function () {
704
- return this._disabledClass;
705
- },
706
- set: function (val) {
707
- this._disabledClass = val;
708
- },
709
- enumerable: false,
710
- configurable: true
711
- });
712
- Object.defineProperty(__proto, "moveCount", {
713
- get: function () {
714
- return this._moveCount;
715
- },
716
- set: function (val) {
717
- this._moveCount = val;
718
- },
719
- enumerable: false,
720
- configurable: true
721
- });
722
- Object.defineProperty(__proto, "moveByViewportSize", {
723
- get: function () {
724
- return this._moveByViewportSize;
725
- },
726
- set: function (val) {
727
- this._moveByViewportSize = val;
728
- },
729
- enumerable: false,
730
- configurable: true
731
- });
732
-
733
- __proto.init = function (flicking$1) {
734
- var _this = this;
735
-
156
+ /** The "previous" arrow HTMLElement
157
+ * @readonly
158
+ */
159
+ get prevEl() {
160
+ return this._prevEl;
161
+ }
162
+ /** The "next" arrow HTMLElement
163
+ * @readonly
164
+ */
165
+ get nextEl() {
166
+ return this._nextEl;
167
+ }
168
+ /** Current value of the {@link ArrowOptions.parentEl | parentEl} option. */
169
+ get parentEl() {
170
+ return this._parentEl;
171
+ }
172
+ /** Current value of the {@link ArrowOptions.prevElSelector | prevElSelector} option. */
173
+ get prevElSelector() {
174
+ return this._prevElSelector;
175
+ }
176
+ /** Current value of the {@link ArrowOptions.nextElSelector | nextElSelector} option. */
177
+ get nextElSelector() {
178
+ return this._nextElSelector;
179
+ }
180
+ /** Current value of the {@link ArrowOptions.disabledClass | disabledClass} option. */
181
+ get disabledClass() {
182
+ return this._disabledClass;
183
+ }
184
+ /** Current value of the {@link ArrowOptions.moveCount | moveCount} option. */
185
+ get moveCount() {
186
+ return this._moveCount;
187
+ }
188
+ /** Current value of the {@link ArrowOptions.moveByViewportSize | moveByViewportSize} option. */
189
+ get moveByViewportSize() {
190
+ return this._moveByViewportSize;
191
+ }
192
+ /** Sets {@link ArrowOptions.parentEl | parentEl}. */
193
+ set parentEl(val) {
194
+ this._parentEl = val;
195
+ }
196
+ /** Sets {@link ArrowOptions.prevElSelector | prevElSelector}. */
197
+ set prevElSelector(val) {
198
+ this._prevElSelector = val;
199
+ }
200
+ /** Sets {@link ArrowOptions.nextElSelector | nextElSelector}. */
201
+ set nextElSelector(val) {
202
+ this._nextElSelector = val;
203
+ }
204
+ /** Sets {@link ArrowOptions.disabledClass | disabledClass}. */
205
+ set disabledClass(val) {
206
+ this._disabledClass = val;
207
+ }
208
+ /** Sets {@link ArrowOptions.moveCount | moveCount}. */
209
+ set moveCount(val) {
210
+ this._moveCount = val;
211
+ }
212
+ /** Sets {@link ArrowOptions.moveByViewportSize | moveByViewportSize}. */
213
+ set moveByViewportSize(val) {
214
+ this._moveByViewportSize = val;
215
+ }
216
+ /** Initialize the plugin and attach arrow event listeners to the Flicking instance.
217
+ * @param flicking - The Flicking instance to attach this plugin to
218
+ */
219
+ init(flicking$1) {
736
220
  if (this._flicking) {
737
221
  this.destroy();
738
222
  }
739
-
740
223
  this._flicking = flicking$1;
741
224
  flicking$1.on(flicking.EVENTS.MOVE, this._onAnimation);
742
- var parentEl = this._parentEl ? this._parentEl : flicking$1.element;
743
- var prevEl = getElement(this._prevElSelector, parentEl, "Arrow");
744
- var nextEl = getElement(this._nextElSelector, parentEl, "Arrow");
745
- [BROWSER.MOUSE_DOWN, BROWSER.TOUCH_START].forEach(function (evt) {
746
- prevEl.addEventListener(evt, _this._preventInputPropagation, {
747
- passive: true
748
- });
749
- nextEl.addEventListener(evt, _this._preventInputPropagation, {
750
- passive: true
751
- });
225
+ const parentEl = this._parentEl ? this._parentEl : flicking$1.element;
226
+ const prevEl = getElement(this._prevElSelector, parentEl, "Arrow");
227
+ const nextEl = getElement(this._nextElSelector, parentEl, "Arrow");
228
+ [BROWSER.MOUSE_DOWN, BROWSER.TOUCH_START].forEach((evt) => {
229
+ prevEl.addEventListener(evt, this._preventInputPropagation, { passive: true });
230
+ nextEl.addEventListener(evt, this._preventInputPropagation, { passive: true });
752
231
  });
753
232
  prevEl.addEventListener(BROWSER.CLICK, this._onPrevClick);
754
233
  nextEl.addEventListener(BROWSER.CLICK, this._onNextClick);
755
234
  this._prevEl = prevEl;
756
235
  this._nextEl = nextEl;
757
236
  this.update();
758
- };
759
-
760
- __proto.destroy = function () {
761
- var _this = this;
762
-
763
- var flicking$1 = this._flicking;
764
-
237
+ }
238
+ /** Destroy the plugin and remove all arrow event listeners. */
239
+ destroy() {
240
+ const flicking$1 = this._flicking;
765
241
  if (!flicking$1) {
766
242
  return;
767
243
  }
768
-
769
244
  flicking$1.off(flicking.EVENTS.MOVE, this._onAnimation);
770
- var prevEl = this._prevEl;
771
- var nextEl = this._nextEl;
772
- [BROWSER.MOUSE_DOWN, BROWSER.TOUCH_START].forEach(function (evt) {
773
- prevEl.removeEventListener(evt, _this._preventInputPropagation);
774
- nextEl.removeEventListener(evt, _this._preventInputPropagation);
245
+ const prevEl = this._prevEl;
246
+ const nextEl = this._nextEl;
247
+ [BROWSER.MOUSE_DOWN, BROWSER.TOUCH_START].forEach((evt) => {
248
+ prevEl.removeEventListener(evt, this._preventInputPropagation);
249
+ nextEl.removeEventListener(evt, this._preventInputPropagation);
775
250
  });
776
251
  prevEl.removeEventListener(BROWSER.CLICK, this._onPrevClick);
777
252
  nextEl.removeEventListener(BROWSER.CLICK, this._onNextClick);
778
253
  this._flicking = null;
779
- };
780
-
781
- __proto.update = function () {
254
+ }
255
+ /** Update the arrow disabled/enabled state based on the current camera position. */
256
+ update() {
782
257
  this._updateClass(this._flicking.camera.position);
783
- };
784
-
785
- __proto._updateClass = function (pos) {
786
- var flicking = this._flicking;
787
- var disabledClass = this._disabledClass;
788
- var prevEl = this._prevEl;
789
- var nextEl = this._nextEl;
790
- var cameraRange = flicking.camera.range;
791
- var stopAtPrevEdge = flicking.circularEnabled ? false : pos <= cameraRange.min;
792
- var stopAtNextEdge = flicking.circularEnabled ? false : pos >= cameraRange.max;
793
-
258
+ }
259
+ _updateClass(pos) {
260
+ const flicking2 = this._flicking;
261
+ const disabledClass = this._disabledClass;
262
+ const prevEl = this._prevEl;
263
+ const nextEl = this._nextEl;
264
+ const cameraRange = flicking2.camera.range;
265
+ const stopAtPrevEdge = flicking2.circularEnabled ? false : pos <= cameraRange.min;
266
+ const stopAtNextEdge = flicking2.circularEnabled ? false : pos >= cameraRange.max;
794
267
  if (stopAtPrevEdge) {
795
268
  addClass(prevEl, disabledClass);
796
269
  } else {
797
270
  removeClass(prevEl, disabledClass);
798
271
  }
799
-
800
272
  if (stopAtNextEdge) {
801
273
  addClass(nextEl, disabledClass);
802
274
  } else {
803
275
  removeClass(nextEl, disabledClass);
804
276
  }
805
- };
806
-
807
- return Arrow;
808
- }();
809
-
810
- /**
811
- * Plugin for synchronizing multiple flickings
812
- * @ko 다양한 형태로 Flicking들이 같이 움직이게 할 수 있습니다.
813
- * @memberof Flicking.Plugins
814
- */
815
-
816
- var Sync =
817
- /*#__PURE__*/
818
- function () {
819
- /** */
820
- function Sync(_a) {
821
- var _this = this;
822
-
823
- var _b = _a === void 0 ? {} : _a,
824
- _c = _b.type,
825
- type = _c === void 0 ? SYNC.TYPE.CAMERA : _c,
826
- _d = _b.synchronizedFlickingOptions,
827
- synchronizedFlickingOptions = _d === void 0 ? [] : _d;
828
- /* Internal Values */
829
-
830
-
277
+ }
278
+ }
279
+ class AutoPlay {
280
+ /**
281
+ * @param options - Options for the AutoPlay instance
282
+ * @example
283
+ * ```ts
284
+ * flicking.addPlugins(new AutoPlay({ duration: 2000, direction: "NEXT" }));
285
+ * ```
286
+ */
287
+ constructor(options = {}) {
288
+ this._flicking = null;
289
+ this._timerId = 0;
290
+ this._mouseEntered = false;
291
+ this._playing = false;
292
+ this.play = () => {
293
+ this._movePanel(this._duration);
294
+ };
295
+ this.stop = () => {
296
+ this._playing = false;
297
+ clearTimeout(this._timerId);
298
+ };
299
+ this._onMouseEnter = () => {
300
+ this._mouseEntered = true;
301
+ this.stop();
302
+ };
303
+ this._onMouseLeave = () => {
304
+ this._mouseEntered = false;
305
+ this._movePanel(this._delayAfterHover);
306
+ };
307
+ const {
308
+ duration = 2e3,
309
+ animationDuration = void 0,
310
+ direction = flicking.DIRECTION.NEXT,
311
+ stopOnHover = false,
312
+ stopOnInit = false,
313
+ delayAfterHover
314
+ } = options;
315
+ this._duration = duration;
316
+ this._animationDuration = animationDuration;
317
+ this._direction = direction;
318
+ this._stopOnHover = stopOnHover;
319
+ this._stopOnInit = stopOnInit;
320
+ this._delayAfterHover = delayAfterHover ?? duration;
321
+ }
322
+ /** Current value of the {@link AutoPlayOptions.duration | duration} option. */
323
+ get duration() {
324
+ return this._duration;
325
+ }
326
+ /** Current value of the {@link AutoPlayOptions.animationDuration | animationDuration} option. */
327
+ get animationDuration() {
328
+ return this._animationDuration;
329
+ }
330
+ /** Current value of the {@link AutoPlayOptions.direction | direction} option. */
331
+ get direction() {
332
+ return this._direction;
333
+ }
334
+ /** Current value of the {@link AutoPlayOptions.stopOnHover | stopOnHover} option. */
335
+ get stopOnHover() {
336
+ return this._stopOnHover;
337
+ }
338
+ /** Current value of the {@link AutoPlayOptions.stopOnInit | stopOnInit} option. */
339
+ get stopOnInit() {
340
+ return this._stopOnInit;
341
+ }
342
+ /** Current value of the {@link AutoPlayOptions.delayAfterHover | delayAfterHover} option. */
343
+ get delayAfterHover() {
344
+ return this._delayAfterHover;
345
+ }
346
+ /** Whether the autoplay is currently active
347
+ * @readonly
348
+ */
349
+ get playing() {
350
+ return this._playing;
351
+ }
352
+ /** Sets {@link AutoPlayOptions.duration | duration}. */
353
+ set duration(val) {
354
+ this._duration = val;
355
+ }
356
+ /** Sets {@link AutoPlayOptions.animationDuration | animationDuration}. */
357
+ set animationDuration(val) {
358
+ this._animationDuration = val;
359
+ }
360
+ /** Sets {@link AutoPlayOptions.direction | direction}. */
361
+ set direction(val) {
362
+ this._direction = val;
363
+ }
364
+ /** Sets {@link AutoPlayOptions.stopOnHover | stopOnHover}. */
365
+ set stopOnHover(val) {
366
+ this._stopOnHover = val;
367
+ }
368
+ /** Sets {@link AutoPlayOptions.stopOnInit | stopOnInit}. */
369
+ set stopOnInit(val) {
370
+ this._stopOnInit = val;
371
+ }
372
+ /** Sets {@link AutoPlayOptions.delayAfterHover | delayAfterHover}. */
373
+ set delayAfterHover(val) {
374
+ this._delayAfterHover = val;
375
+ }
376
+ /** Initialize the plugin and start autoplay on the given Flicking instance.
377
+ * @param flicking - The Flicking instance to attach this plugin to
378
+ */
379
+ init(flicking$1) {
380
+ if (this._flicking) {
381
+ this.destroy();
382
+ }
383
+ flicking$1.on({
384
+ [flicking.EVENTS.MOVE_START]: this.stop,
385
+ [flicking.EVENTS.HOLD_START]: this.stop,
386
+ [flicking.EVENTS.MOVE_END]: this.play,
387
+ [flicking.EVENTS.SELECT]: this.play
388
+ });
389
+ this._flicking = flicking$1;
390
+ if (this._stopOnHover) {
391
+ const targetEl = this._flicking.element;
392
+ targetEl.addEventListener("mouseenter", this._onMouseEnter, false);
393
+ targetEl.addEventListener("mouseleave", this._onMouseLeave, false);
394
+ }
395
+ if (!this._stopOnInit) {
396
+ this.play();
397
+ }
398
+ }
399
+ /** Destroy the plugin, stop autoplay, and remove all event listeners. */
400
+ destroy() {
401
+ const flicking$1 = this._flicking;
402
+ this._mouseEntered = false;
403
+ this.stop();
404
+ if (!flicking$1) {
405
+ return;
406
+ }
407
+ flicking$1.off(flicking.EVENTS.MOVE_START, this.stop);
408
+ flicking$1.off(flicking.EVENTS.HOLD_START, this.stop);
409
+ flicking$1.off(flicking.EVENTS.MOVE_END, this.play);
410
+ flicking$1.off(flicking.EVENTS.SELECT, this.play);
411
+ const targetEl = flicking$1.element;
412
+ targetEl.removeEventListener("mouseenter", this._onMouseEnter, false);
413
+ targetEl.removeEventListener("mouseleave", this._onMouseLeave, false);
414
+ this._flicking = null;
415
+ }
416
+ /** Update the plugin state. This is a no-op for AutoPlay. */
417
+ update() {
418
+ }
419
+ _movePanel(duration) {
420
+ const flicking$1 = this._flicking;
421
+ const direction = this._direction;
422
+ if (!flicking$1) {
423
+ return;
424
+ }
425
+ this.stop();
426
+ if (this._mouseEntered || flicking$1.animating) {
427
+ return;
428
+ }
429
+ this._playing = true;
430
+ this._timerId = window.setTimeout(() => {
431
+ let animationDuration = this._animationDuration || flicking$1.duration;
432
+ const moveType = flicking$1.moveType;
433
+ if (moveType === flicking.MOVE_TYPE.FREE_SCROLL || moveType?.[0] === flicking.MOVE_TYPE.FREE_SCROLL) {
434
+ const range = flicking$1.camera.range;
435
+ const cameraPosition = flicking$1.camera.position;
436
+ const currentPanel = flicking$1.currentPanel;
437
+ const prevPanel = currentPanel.prev();
438
+ const nextPanel = currentPanel.next();
439
+ const currentPosition = currentPanel.position;
440
+ let nextPosition = nextPanel?.position ?? range.max;
441
+ let prevPosition = prevPanel?.position ?? range.min;
442
+ if (prevPosition > currentPosition) {
443
+ prevPosition = range.min - (range.max - prevPosition);
444
+ }
445
+ if (nextPosition < currentPosition) {
446
+ nextPosition += range.max;
447
+ }
448
+ if (direction === flicking.DIRECTION.NEXT) {
449
+ const size = nextPosition - currentPosition;
450
+ let restSize = nextPosition - cameraPosition;
451
+ if (cameraPosition < currentPosition) {
452
+ restSize = nextPosition - cameraPosition;
453
+ }
454
+ animationDuration *= restSize / size;
455
+ } else {
456
+ const size = currentPosition - prevPosition;
457
+ let restSize = cameraPosition - prevPosition;
458
+ if (cameraPosition > currentPosition) {
459
+ restSize = cameraPosition - prevPosition;
460
+ }
461
+ animationDuration *= restSize / size;
462
+ }
463
+ }
464
+ if (direction === flicking.DIRECTION.NEXT) {
465
+ flicking$1.next(animationDuration).catch(() => void 0);
466
+ } else {
467
+ flicking$1.prev(animationDuration).catch(() => void 0);
468
+ }
469
+ this.play();
470
+ }, duration);
471
+ }
472
+ }
473
+ class Fade {
474
+ /**
475
+ * @param selector - CSS selector for the element to apply the fade effect. If empty, the panel element itself is used
476
+ * @param scale - Effect amplification scale
477
+ * @example
478
+ * ```ts
479
+ * flicking.addPlugins(new Fade("p", 1));
480
+ * ```
481
+ */
482
+ constructor(selector = "", scale = 1) {
483
+ this.update = () => {
484
+ this._onMove();
485
+ };
486
+ this._onMove = () => {
487
+ const flicking2 = this._flicking;
488
+ const selector2 = this._selector;
489
+ const scale2 = this._scale;
490
+ if (!flicking2) return;
491
+ const panels = flicking2.visiblePanels;
492
+ panels.forEach((panel) => {
493
+ const progress = panel.outsetProgress;
494
+ const el = panel.element;
495
+ const target = selector2 ? el.querySelector(selector2) : el;
496
+ if (target) {
497
+ const opacity = Math.min(1, Math.max(0, 1 - Math.abs(progress * scale2)));
498
+ target.style.opacity = `${opacity}`;
499
+ }
500
+ });
501
+ };
502
+ this._flicking = null;
503
+ this._selector = selector;
504
+ this._scale = scale;
505
+ }
506
+ /** CSS selector for the element to apply the fade effect. If empty, the panel element itself is used
507
+ * @readonly
508
+ */
509
+ get selector() {
510
+ return this._selector;
511
+ }
512
+ /** Effect amplification scale
513
+ * @readonly
514
+ */
515
+ get scale() {
516
+ return this._scale;
517
+ }
518
+ /** Sets the CSS selector for the target fade element. */
519
+ set selector(val) {
520
+ this._selector = val;
521
+ }
522
+ /** Sets the effect amplification scale. */
523
+ set scale(val) {
524
+ this._scale = val;
525
+ }
526
+ /** Initialize the plugin and apply the fade effect to the Flicking instance.
527
+ * @param flicking - The Flicking instance to attach this plugin to
528
+ */
529
+ init(flicking$1) {
530
+ if (this._flicking) {
531
+ this.destroy();
532
+ }
533
+ this._flicking = flicking$1;
534
+ flicking$1.on(flicking.EVENTS.MOVE, this._onMove);
535
+ flicking$1.on(flicking.EVENTS.AFTER_RESIZE, this.update);
536
+ this._onMove();
537
+ }
538
+ /** Destroy the plugin and remove all event listeners. */
539
+ destroy() {
540
+ if (!this._flicking) return;
541
+ this._flicking.off(flicking.EVENTS.MOVE, this._onMove);
542
+ this._flicking.off(flicking.EVENTS.AFTER_RESIZE, this.update);
543
+ this._flicking = null;
544
+ }
545
+ }
546
+ class Parallax {
547
+ /**
548
+ * @param selector - CSS selector for the element to apply the parallax effect. If empty, the panel element itself is used
549
+ * @param scale - Effect amplification scale
550
+ * @example
551
+ * ```ts
552
+ * flicking.addPlugins(new Parallax("img", 1));
553
+ * ```
554
+ */
555
+ constructor(selector = "", scale = 1) {
556
+ this.update = () => {
557
+ this._onMove();
558
+ };
559
+ this._onMove = () => {
560
+ const flicking2 = this._flicking;
561
+ if (!flicking2) return;
562
+ const panels = flicking2.visiblePanels;
563
+ panels.forEach((panel) => {
564
+ const progress = panel.outsetProgress;
565
+ const el = panel.element;
566
+ const target = this._selector ? el.querySelector(this._selector) : el;
567
+ const parentTarget = target.parentNode;
568
+ const rect = target.getBoundingClientRect();
569
+ const parentRect = parentTarget.getBoundingClientRect();
570
+ const position = (parentRect.width - rect.width) / 2 * progress * this._scale;
571
+ const transform = `translate(-50%) translate(${position}px)`;
572
+ const style = target.style;
573
+ style.cssText += `transform: ${transform};-webkit-transform: ${transform};-ms-transform:${transform}`;
574
+ });
575
+ };
576
+ this._flicking = null;
577
+ this._selector = selector;
578
+ this._scale = scale;
579
+ }
580
+ /** CSS selector for the element to apply the parallax effect. If empty, the panel element itself is used
581
+ * @readonly
582
+ */
583
+ get selector() {
584
+ return this._selector;
585
+ }
586
+ /** Effect amplification scale
587
+ * @readonly
588
+ */
589
+ get scale() {
590
+ return this._scale;
591
+ }
592
+ /** Sets the CSS selector for the target parallax element. */
593
+ set selector(val) {
594
+ this._selector = val;
595
+ }
596
+ /** Sets the effect amplification scale. */
597
+ set scale(val) {
598
+ this._scale = val;
599
+ }
600
+ /** Initialize the plugin and apply the parallax effect to the Flicking instance.
601
+ * @param flicking - The Flicking instance to attach this plugin to
602
+ */
603
+ init(flicking$1) {
604
+ if (this._flicking) {
605
+ this.destroy();
606
+ }
607
+ this._flicking = flicking$1;
608
+ flicking$1.on(flicking.EVENTS.MOVE, this._onMove);
609
+ flicking$1.on(flicking.EVENTS.AFTER_RESIZE, this.update);
610
+ this._onMove();
611
+ }
612
+ /** Destroy the plugin and remove all event listeners. */
613
+ destroy() {
614
+ if (!this._flicking) return;
615
+ this._flicking.off(flicking.EVENTS.MOVE, this._onMove);
616
+ this._flicking.off(flicking.EVENTS.AFTER_RESIZE, this.update);
617
+ this._flicking = null;
618
+ }
619
+ }
620
+ class Perspective {
621
+ /**
622
+ * @param options - Options for the Perspective instance
623
+ * @example
624
+ * ```ts
625
+ * flicking.addPlugins(new Perspective({ selector: "p", scale: 1, rotate: 1, perspective: 1000 }));
626
+ * ```
627
+ */
628
+ constructor(options = {}) {
629
+ this.update = () => {
630
+ this._onMove();
631
+ };
632
+ this._onMove = () => {
633
+ const flicking2 = this._flicking;
634
+ const selector2 = this._selector;
635
+ const scale2 = this._scale;
636
+ const rotate2 = this._rotate;
637
+ const perspective2 = this._perspective;
638
+ if (!flicking2) return;
639
+ const horizontal = flicking2.horizontal;
640
+ const panels = flicking2.visiblePanels;
641
+ panels.forEach((panel) => {
642
+ const progress = panel.outsetProgress;
643
+ const el = panel.element;
644
+ const target = selector2 ? el.querySelector(selector2) : el;
645
+ const panelScale = 1 / (Math.abs(progress * scale2) + 1);
646
+ const rotateDegree = progress > 0 ? Math.min(90, progress * 100 * rotate2) : Math.max(-90, progress * 100 * rotate2);
647
+ const [rotateX, rotateY] = horizontal ? [0, rotateDegree] : [rotateDegree, 0];
648
+ target.style.transform = `perspective(${perspective2}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${panelScale})`;
649
+ });
650
+ };
651
+ const { selector = "", scale = 1, rotate = 1, perspective = 1e3 } = options;
652
+ this._flicking = null;
653
+ this._selector = selector;
654
+ this._scale = scale;
655
+ this._rotate = rotate;
656
+ this._perspective = perspective;
657
+ }
658
+ /** Current value of the {@link PerspectiveOptions.selector | selector} option. */
659
+ get selector() {
660
+ return this._selector;
661
+ }
662
+ /** Current value of the {@link PerspectiveOptions.scale | scale} option. */
663
+ get scale() {
664
+ return this._scale;
665
+ }
666
+ /** Current value of the {@link PerspectiveOptions.rotate | rotate} option. */
667
+ get rotate() {
668
+ return this._rotate;
669
+ }
670
+ /** Current value of the {@link PerspectiveOptions.perspective | perspective} option. */
671
+ get perspective() {
672
+ return this._perspective;
673
+ }
674
+ /** Sets {@link PerspectiveOptions.selector | selector}. */
675
+ set selector(val) {
676
+ this._selector = val;
677
+ }
678
+ /** Sets {@link PerspectiveOptions.scale | scale}. */
679
+ set scale(val) {
680
+ this._scale = val;
681
+ }
682
+ /** Sets {@link PerspectiveOptions.rotate | rotate}. */
683
+ set rotate(val) {
684
+ this._rotate = val;
685
+ }
686
+ /** Sets {@link PerspectiveOptions.perspective | perspective}. */
687
+ set perspective(val) {
688
+ this._perspective = val;
689
+ }
690
+ /** Initialize the plugin and apply the perspective effect to the Flicking instance.
691
+ * @param flicking - The Flicking instance to attach this plugin to
692
+ */
693
+ init(flicking$1) {
694
+ if (this._flicking) {
695
+ this.destroy();
696
+ }
697
+ this._flicking = flicking$1;
698
+ flicking$1.on(flicking.EVENTS.MOVE, this._onMove);
699
+ flicking$1.on(flicking.EVENTS.AFTER_RESIZE, this.update);
700
+ this._onMove();
701
+ }
702
+ /** Destroy the plugin and remove all event listeners. */
703
+ destroy() {
704
+ if (!this._flicking) return;
705
+ this._flicking.off(flicking.EVENTS.MOVE, this._onMove);
706
+ this._flicking.off(flicking.EVENTS.AFTER_RESIZE, this.update);
707
+ this._flicking = null;
708
+ }
709
+ }
710
+ class Sync {
711
+ /**
712
+ * @param options - Options for the Sync instance
713
+ * @example
714
+ * ```ts
715
+ * flicking.addPlugins(new Sync({
716
+ * type: "camera",
717
+ * synchronizedFlickingOptions: [
718
+ * { flicking: flicking1 },
719
+ * { flicking: flicking2, isClickable: true }
720
+ * ]
721
+ * }));
722
+ * ```
723
+ */
724
+ constructor(options = {}) {
831
725
  this._flicking = null;
832
726
  this._disabledIndex = [];
833
-
834
- this._addEvents = function () {
835
- var type = _this._type;
836
- var synced = _this._synchronizedFlickingOptions;
837
- synced.forEach(function (_a) {
838
- var flicking$1 = _a.flicking,
839
- isSlidable = _a.isSlidable,
840
- isClickable = _a.isClickable;
841
-
842
- if (type === SYNC.TYPE.CAMERA) {
843
- flicking$1.on(flicking.EVENTS.MOVE, _this._onMove);
844
- flicking$1.on(flicking.EVENTS.MOVE_START, _this._onMoveStart);
845
- flicking$1.on(flicking.EVENTS.MOVE_END, _this._onMoveEnd);
727
+ this._addEvents = () => {
728
+ const type2 = this._type;
729
+ const synced = this._synchronizedFlickingOptions;
730
+ synced.forEach(({ flicking: flicking$1, isSlidable, isClickable }) => {
731
+ if (type2 === SYNC.TYPE.CAMERA) {
732
+ flicking$1.on(flicking.EVENTS.MOVE, this._onMove);
733
+ flicking$1.on(flicking.EVENTS.MOVE_START, this._onMoveStart);
734
+ flicking$1.on(flicking.EVENTS.MOVE_END, this._onMoveEnd);
846
735
  }
847
-
848
- if (type === SYNC.TYPE.INDEX && isSlidable) {
849
- flicking$1.on(flicking.EVENTS.WILL_CHANGE, _this._onIndexChange);
850
- flicking$1.on(flicking.EVENTS.WILL_RESTORE, _this._onIndexChange);
736
+ if (type2 === SYNC.TYPE.INDEX && isSlidable) {
737
+ flicking$1.on(flicking.EVENTS.WILL_CHANGE, this._onIndexChange);
738
+ flicking$1.on(flicking.EVENTS.WILL_RESTORE, this._onIndexChange);
851
739
  }
852
-
853
740
  if (isClickable) {
854
- flicking$1.on(flicking.EVENTS.SELECT, _this._onSelect);
741
+ flicking$1.on(flicking.EVENTS.SELECT, this._onSelect);
855
742
  }
856
743
  });
857
744
  };
858
-
859
- this._removeEvents = function () {
860
- var type = _this._type;
861
- var synced = _this._synchronizedFlickingOptions;
862
- synced.forEach(function (_a) {
863
- var flicking$1 = _a.flicking,
864
- isSlidable = _a.isSlidable,
865
- isClickable = _a.isClickable;
866
-
867
- if (type === SYNC.TYPE.CAMERA) {
868
- flicking$1.off(flicking.EVENTS.MOVE, _this._onMove);
869
- flicking$1.off(flicking.EVENTS.MOVE_START, _this._onMoveStart);
870
- flicking$1.off(flicking.EVENTS.MOVE_END, _this._onMoveEnd);
745
+ this._removeEvents = () => {
746
+ const type2 = this._type;
747
+ const synced = this._synchronizedFlickingOptions;
748
+ synced.forEach(({ flicking: flicking$1, isSlidable, isClickable }) => {
749
+ if (type2 === SYNC.TYPE.CAMERA) {
750
+ flicking$1.off(flicking.EVENTS.MOVE, this._onMove);
751
+ flicking$1.off(flicking.EVENTS.MOVE_START, this._onMoveStart);
752
+ flicking$1.off(flicking.EVENTS.MOVE_END, this._onMoveEnd);
871
753
  }
872
-
873
- if (type === SYNC.TYPE.INDEX && isSlidable) {
874
- flicking$1.off(flicking.EVENTS.WILL_CHANGE, _this._onIndexChange);
875
- flicking$1.off(flicking.EVENTS.WILL_RESTORE, _this._onIndexChange);
754
+ if (type2 === SYNC.TYPE.INDEX && isSlidable) {
755
+ flicking$1.off(flicking.EVENTS.WILL_CHANGE, this._onIndexChange);
756
+ flicking$1.off(flicking.EVENTS.WILL_RESTORE, this._onIndexChange);
876
757
  }
877
-
878
758
  if (isClickable) {
879
- flicking$1.off(flicking.EVENTS.SELECT, _this._onSelect);
759
+ flicking$1.off(flicking.EVENTS.SELECT, this._onSelect);
880
760
  }
881
761
  });
882
762
  };
883
-
884
- this._onIndexChange = function (e) {
885
- var flicking = e.currentTarget;
886
-
887
- if (!flicking.initialized) {
763
+ this._onIndexChange = (e) => {
764
+ const flicking2 = e.currentTarget;
765
+ if (!flicking2.initialized) {
888
766
  return;
889
767
  }
890
-
891
- _this._synchronizeByIndex(flicking, e.index);
768
+ this._synchronizeByIndex(flicking2, e.index);
892
769
  };
893
-
894
- this._onMove = function (e) {
895
- var camera = e.currentTarget.camera;
896
- var progress = (camera.position - camera.range.min) / camera.rangeDiff;
897
-
898
- _this._synchronizedFlickingOptions.forEach(function (_a) {
899
- var flicking = _a.flicking;
900
- if (flicking === e.currentTarget) return;
901
- var targetPosition = 0;
902
-
770
+ this._onMove = (e) => {
771
+ const camera = e.currentTarget.camera;
772
+ const progress = (camera.position - camera.range.min) / camera.rangeDiff;
773
+ this._synchronizedFlickingOptions.forEach(({ flicking: flicking2 }) => {
774
+ if (flicking2 === e.currentTarget) return;
775
+ let targetPosition = 0;
903
776
  if (camera.position < camera.range.min) {
904
777
  targetPosition = camera.position;
905
778
  } else if (camera.position > camera.range.max) {
906
- targetPosition = flicking.camera.range.max + camera.position - camera.range.max;
779
+ targetPosition = flicking2.camera.range.max + camera.position - camera.range.max;
907
780
  } else {
908
- targetPosition = flicking.camera.range.min + flicking.camera.rangeDiff * progress;
781
+ targetPosition = flicking2.camera.range.min + flicking2.camera.rangeDiff * progress;
909
782
  }
910
-
911
- void flicking.camera.lookAt(targetPosition);
783
+ void flicking2.camera.lookAt(targetPosition);
912
784
  });
913
785
  };
914
-
915
- this._onMoveStart = function (e) {
916
- _this._disabledIndex = [];
917
-
918
- _this._synchronizedFlickingOptions.forEach(function (_a, i) {
919
- var flicking = _a.flicking;
920
-
921
- if (flicking !== e.currentTarget && flicking.control.controller.enabled) {
922
- _this._disabledIndex.push(i);
923
-
924
- flicking.disableInput();
786
+ this._onMoveStart = (e) => {
787
+ this._disabledIndex = [];
788
+ this._synchronizedFlickingOptions.forEach(({ flicking: flicking2 }, i) => {
789
+ if (flicking2 !== e.currentTarget && flicking2.control.controller.enabled) {
790
+ this._disabledIndex.push(i);
791
+ flicking2.disableInput();
925
792
  }
926
793
  });
927
794
  };
928
-
929
- this._onMoveEnd = function (e) {
930
- _this._disabledIndex.forEach(function (i) {
931
- var flicking = _this._synchronizedFlickingOptions[i].flicking;
932
- flicking.enableInput();
933
- flicking.control.updateInput();
795
+ this._onMoveEnd = (e) => {
796
+ this._disabledIndex.forEach((i) => {
797
+ const flicking2 = this._synchronizedFlickingOptions[i].flicking;
798
+ flicking2.enableInput();
799
+ flicking2.control.updateInput();
934
800
  });
935
801
  };
936
-
937
- this._onSelect = function (e) {
938
- void e.currentTarget.moveTo(e.index).catch(function () {
939
- return void 0;
940
- });
941
-
942
- _this._synchronizeByIndex(e.currentTarget, e.index);
802
+ this._onSelect = (e) => {
803
+ void e.currentTarget.moveTo(e.index).catch(() => void 0);
804
+ this._synchronizeByIndex(e.currentTarget, e.index);
943
805
  };
944
-
945
- this._synchronizeByIndex = function (activeFlicking, index) {
946
- var synchronizedFlickingOptions = _this._synchronizedFlickingOptions;
947
-
948
- _this._preventEvent(function () {
949
- synchronizedFlickingOptions.forEach(function (options) {
950
- // Active class should be applied same to the Flicking which triggered event
951
- _this._updateClass(options, index);
952
-
953
- var flicking$1 = options.flicking;
806
+ this._synchronizeByIndex = (activeFlicking, index) => {
807
+ const synchronizedFlickingOptions2 = this._synchronizedFlickingOptions;
808
+ this._preventEvent(() => {
809
+ synchronizedFlickingOptions2.forEach((options2) => {
810
+ this._updateClass(options2, index);
811
+ const { flicking: flicking$1 } = options2;
954
812
  if (flicking$1 === activeFlicking) return;
955
- var targetIndex = flicking.clamp(index, 0, flicking$1.panels.length);
956
-
813
+ const targetIndex = flicking.clamp(index, 0, flicking$1.panels.length);
957
814
  if (flicking$1.animating) {
958
- // Reserve moveTo once previous animation is finished
959
- flicking$1.once(flicking.EVENTS.MOVE_END, function () {
960
- void flicking$1.moveTo(targetIndex).catch(function () {
961
- return void 0;
962
- });
815
+ flicking$1.once(flicking.EVENTS.MOVE_END, () => {
816
+ void flicking$1.moveTo(targetIndex).catch(() => void 0);
963
817
  });
964
818
  } else {
965
819
  void flicking$1.moveTo(targetIndex);
@@ -967,12 +821,9 @@ version: 4.7.2-beta.1
967
821
  });
968
822
  });
969
823
  };
970
-
971
- this._updateClass = function (_a, index) {
972
- var flicking = _a.flicking,
973
- activeClass = _a.activeClass;
824
+ this._updateClass = ({ flicking: flicking2, activeClass }, index) => {
974
825
  if (!activeClass) return;
975
- flicking.panels.forEach(function (panel) {
826
+ flicking2.panels.forEach((panel) => {
976
827
  if (panel.index === index) {
977
828
  addClass(panel.element, activeClass);
978
829
  } else {
@@ -980,617 +831,318 @@ version: 4.7.2-beta.1
980
831
  }
981
832
  });
982
833
  };
983
-
834
+ const { type = SYNC.TYPE.CAMERA, synchronizedFlickingOptions = [] } = options;
984
835
  this._type = type;
985
836
  this._synchronizedFlickingOptions = synchronizedFlickingOptions;
986
837
  }
987
-
988
- var __proto = Sync.prototype;
989
- Object.defineProperty(__proto, "type", {
990
- get: function () {
991
- return this._type;
992
- },
993
- set: function (val) {
994
- this._type = val;
995
- },
996
- enumerable: false,
997
- configurable: true
998
- });
999
- Object.defineProperty(__proto, "synchronizedFlickingOptions", {
1000
- get: function () {
1001
- return this._synchronizedFlickingOptions;
1002
- },
1003
- set: function (val) {
1004
- this._synchronizedFlickingOptions = val;
1005
- },
1006
- enumerable: false,
1007
- configurable: true
1008
- });
1009
-
1010
- __proto.init = function (flicking) {
1011
- var _this = this;
1012
-
1013
- var synced = this._synchronizedFlickingOptions;
1014
-
838
+ /** Current value of the {@link SyncOptions.type | type} option. */
839
+ get type() {
840
+ return this._type;
841
+ }
842
+ /** Current value of the {@link SyncOptions.synchronizedFlickingOptions | synchronizedFlickingOptions} option. */
843
+ get synchronizedFlickingOptions() {
844
+ return this._synchronizedFlickingOptions;
845
+ }
846
+ /** Sets {@link SyncOptions.type | type}. */
847
+ set type(val) {
848
+ this._type = val;
849
+ }
850
+ /** Sets {@link SyncOptions.synchronizedFlickingOptions | synchronizedFlickingOptions}. */
851
+ set synchronizedFlickingOptions(val) {
852
+ this._synchronizedFlickingOptions = val;
853
+ }
854
+ /** Initialize the plugin and set up synchronization event listeners between Flicking instances.
855
+ * @param flicking - The Flicking instance to attach this plugin to
856
+ */
857
+ init(flicking2) {
858
+ const synced = this._synchronizedFlickingOptions;
1015
859
  if (this._flicking) {
1016
860
  this.destroy();
1017
861
  }
1018
-
1019
- this._flicking = flicking;
1020
-
862
+ this._flicking = flicking2;
1021
863
  this._addEvents();
1022
-
1023
- synced.forEach(function (options) {
1024
- var syncedFlicking = options.flicking;
1025
-
1026
- _this._updateClass(options, syncedFlicking.defaultIndex);
864
+ synced.forEach((options) => {
865
+ const { flicking: syncedFlicking } = options;
866
+ this._updateClass(options, syncedFlicking.defaultIndex);
1027
867
  });
1028
- };
1029
-
1030
- __proto.destroy = function () {
1031
- var flicking = this._flicking;
1032
-
1033
- if (!flicking) {
868
+ }
869
+ /** Destroy the plugin and remove all synchronization event listeners. */
870
+ destroy() {
871
+ const flicking2 = this._flicking;
872
+ if (!flicking2) {
1034
873
  return;
1035
874
  }
1036
-
1037
875
  this._removeEvents();
1038
-
1039
876
  this._flicking = null;
1040
- };
1041
-
1042
- __proto.update = function () {
1043
- var _this = this;
1044
-
1045
- this._synchronizedFlickingOptions.forEach(function (options) {
1046
- _this._updateClass(options, options.flicking.index);
877
+ }
878
+ /** Update the active class state for all synchronized Flicking instances. */
879
+ update() {
880
+ this._synchronizedFlickingOptions.forEach((options) => {
881
+ this._updateClass(options, options.flicking.index);
1047
882
  });
1048
- };
1049
-
1050
- __proto._preventEvent = function (fn) {
883
+ }
884
+ _preventEvent(fn) {
1051
885
  this._removeEvents();
1052
-
1053
886
  fn();
1054
-
1055
887
  this._addEvents();
1056
- };
1057
-
1058
- return Sync;
1059
- }();
1060
-
1061
- /* eslint-disable no-underscore-dangle */
1062
- /**
1063
- * You can apply perspective effect while panel is moving.
1064
- * @ko 패널들을 움직이면서 입체감을 부여할 수 있습니다.
1065
- * @memberof Flicking.Plugins
1066
- */
1067
-
1068
- var Perspective =
1069
- /*#__PURE__*/
1070
- function () {
1071
- /**
1072
- * @param - The selector of the element to which the perspective effect is to be applied. If the selector is blank, it applies to panel element. <ko>입체 효과를 적용할 대상의 선택자. 선택자가 공백이면 패널 엘리먼트에 적용된다.</ko>
1073
- * @param - Effect amplication scale.<ko>효과 증폭도</ko>
1074
- * @param - Effect amplication rotate.<ko>회전 증폭도</ko>
1075
- * @param - The value of perspective CSS property. <ko>css perspective 속성 값</ko>
1076
- * @example
1077
- * ```ts
1078
- * flicking.addPlugins(new Perspective({ selector: "p", scale: 1, rotate: 1, perspective = 1000 }));
1079
- * ```
1080
- */
1081
- function Perspective(_a) {
1082
- var _this = this;
1083
-
1084
- var _b = _a === void 0 ? {} : _a,
1085
- _c = _b.selector,
1086
- selector = _c === void 0 ? "" : _c,
1087
- _d = _b.scale,
1088
- scale = _d === void 0 ? 1 : _d,
1089
- _e = _b.rotate,
1090
- rotate = _e === void 0 ? 1 : _e,
1091
- _f = _b.perspective,
1092
- perspective = _f === void 0 ? 1000 : _f;
1093
-
1094
- this.update = function () {
1095
- _this._onMove();
1096
- };
1097
-
1098
- this._onMove = function () {
1099
- var flicking = _this._flicking;
1100
- var selector = _this._selector;
1101
- var scale = _this._scale;
1102
- var rotate = _this._rotate;
1103
- var perspective = _this._perspective;
1104
- if (!flicking) return;
1105
- var horizontal = flicking.horizontal;
1106
- var panels = flicking.visiblePanels;
1107
- panels.forEach(function (panel) {
1108
- var progress = panel.outsetProgress;
1109
- var el = panel.element;
1110
- var target = selector ? el.querySelector(selector) : el;
1111
- var panelScale = 1 / (Math.abs(progress * scale) + 1);
1112
- var rotateDegree = progress > 0 ? Math.min(90, progress * 100 * rotate) : Math.max(-90, progress * 100 * rotate);
1113
-
1114
- var _a = horizontal ? [0, rotateDegree] : [rotateDegree, 0],
1115
- rotateX = _a[0],
1116
- rotateY = _a[1];
1117
-
1118
- target.style.transform = "perspective(" + perspective + "px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg) scale(" + panelScale + ")";
1119
- });
1120
- };
1121
-
1122
- this._flicking = null;
1123
- this._selector = selector;
1124
- this._scale = scale;
1125
- this._rotate = rotate;
1126
- this._perspective = perspective;
1127
888
  }
1128
-
1129
- var __proto = Perspective.prototype;
1130
- Object.defineProperty(__proto, "selector", {
1131
- get: function () {
1132
- return this._selector;
1133
- },
1134
- set: function (val) {
1135
- this._selector = val;
1136
- },
1137
- enumerable: false,
1138
- configurable: true
1139
- });
1140
- Object.defineProperty(__proto, "scale", {
1141
- get: function () {
1142
- return this._scale;
1143
- },
1144
- set: function (val) {
1145
- this._scale = val;
1146
- },
1147
- enumerable: false,
1148
- configurable: true
1149
- });
1150
- Object.defineProperty(__proto, "rotate", {
1151
- get: function () {
1152
- return this._rotate;
1153
- },
1154
- set: function (val) {
1155
- this._rotate = val;
1156
- },
1157
- enumerable: false,
1158
- configurable: true
1159
- });
1160
- Object.defineProperty(__proto, "perspective", {
1161
- get: function () {
1162
- return this._perspective;
1163
- },
1164
- set: function (val) {
1165
- this._perspective = val;
1166
- },
1167
- enumerable: false,
1168
- configurable: true
1169
- });
1170
-
1171
- __proto.init = function (flicking$1) {
1172
- if (this._flicking) {
1173
- this.destroy();
1174
- }
1175
-
1176
- this._flicking = flicking$1;
1177
- flicking$1.on(flicking.EVENTS.MOVE, this._onMove);
1178
- flicking$1.on(flicking.EVENTS.AFTER_RESIZE, this.update);
1179
-
1180
- this._onMove();
1181
- };
1182
-
1183
- __proto.destroy = function () {
1184
- if (!this._flicking) return;
1185
-
1186
- this._flicking.off(flicking.EVENTS.MOVE, this._onMove);
1187
-
1188
- this._flicking.off(flicking.EVENTS.AFTER_RESIZE, this.update);
1189
-
1190
- this._flicking = null;
1191
- };
1192
-
1193
- return Perspective;
1194
- }();
1195
-
1196
- /*! *****************************************************************************
1197
- Copyright (c) Microsoft Corporation.
1198
-
1199
- Permission to use, copy, modify, and/or distribute this software for any
1200
- purpose with or without fee is hereby granted.
1201
-
1202
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
1203
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1204
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
1205
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
1206
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
1207
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1208
- PERFORMANCE OF THIS SOFTWARE.
1209
- ***************************************************************************** */
1210
-
1211
- /* global Reflect, Promise */
1212
- var extendStatics = function (d, b) {
1213
- extendStatics = Object.setPrototypeOf || {
1214
- __proto__: []
1215
- } instanceof Array && function (d, b) {
1216
- d.__proto__ = b;
1217
- } || function (d, b) {
1218
- for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
1219
- };
1220
-
1221
- return extendStatics(d, b);
1222
- };
1223
-
1224
- function __extends(d, b) {
1225
- if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
1226
- extendStatics(d, b);
1227
-
1228
- function __() {
1229
- this.constructor = d;
1230
- }
1231
-
1232
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1233
- }
1234
- function __spreadArray(to, from, pack) {
1235
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
1236
- if (ar || !(i in from)) {
1237
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
1238
- ar[i] = from[i];
1239
- }
1240
- }
1241
- return to.concat(ar || from);
1242
889
  }
1243
-
1244
- var Renderer =
1245
- /*#__PURE__*/
1246
- function () {
1247
- function Renderer(_a) {
1248
- var flicking = _a.flicking,
1249
- pagination = _a.pagination,
1250
- wrapper = _a.wrapper;
1251
- this._flicking = flicking;
890
+ class Renderer {
891
+ constructor(options) {
892
+ const { flicking: flicking2, pagination, wrapper } = options;
893
+ this._flicking = flicking2;
1252
894
  this._pagination = pagination;
1253
895
  this._wrapper = wrapper;
1254
896
  }
1255
-
1256
- var __proto = Renderer.prototype;
1257
-
1258
- __proto._createBulletFromString = function (html, index) {
1259
- var range = document.createRange();
1260
- var frag = range.createContextualFragment(html);
1261
- var bullet = frag.firstChild;
1262
-
897
+ _createBulletFromString(html, index) {
898
+ const range = document.createRange();
899
+ const frag = range.createContextualFragment(html);
900
+ const bullet = frag.firstChild;
1263
901
  this._addBulletEvents(bullet, index);
1264
-
1265
902
  return bullet;
1266
- };
1267
-
1268
- __proto._addBulletEvents = function (bullet, index) {
1269
- var _this = this;
1270
-
1271
- var anchorPoints = this._flicking.camera.anchorPoints;
1272
- var panelIndex = anchorPoints[index].panel.index;
1273
- bullet.addEventListener(BROWSER.MOUSE_DOWN, function (e) {
1274
- e.stopPropagation();
1275
- });
1276
- bullet.addEventListener(BROWSER.TOUCH_START, function (e) {
903
+ }
904
+ _addBulletEvents(bullet, index) {
905
+ const anchorPoints = this._flicking.camera.anchorPoints;
906
+ const panelIndex = anchorPoints[index].panel.index;
907
+ bullet.addEventListener(BROWSER.MOUSE_DOWN, (e) => {
1277
908
  e.stopPropagation();
1278
- }, {
1279
- passive: true
1280
909
  });
1281
- bullet.addEventListener(BROWSER.CLICK, function () {
1282
- _this._flicking.moveTo(panelIndex).catch(function (err) {
910
+ bullet.addEventListener(
911
+ BROWSER.TOUCH_START,
912
+ (e) => {
913
+ e.stopPropagation();
914
+ },
915
+ { passive: true }
916
+ );
917
+ bullet.addEventListener(BROWSER.CLICK, () => {
918
+ this._flicking.moveTo(panelIndex).catch((err) => {
1283
919
  if (err instanceof flicking.FlickingError) return;
1284
920
  throw err;
1285
921
  });
1286
922
  });
1287
- };
1288
-
1289
- return Renderer;
1290
- }();
1291
-
1292
- var BulletRenderer =
1293
- /*#__PURE__*/
1294
- function (_super) {
1295
- __extends(BulletRenderer, _super);
1296
-
1297
- function BulletRenderer() {
1298
- var _this = _super !== null && _super.apply(this, arguments) || this;
1299
-
1300
- _this._bullets = [];
1301
- _this._prevIndex = -1;
1302
- return _this;
1303
- }
1304
-
1305
- var __proto = BulletRenderer.prototype;
1306
- Object.defineProperty(__proto, "_bulletClass", {
1307
- get: function () {
1308
- var pagination = this._pagination;
1309
- return pagination.classPrefix + "-" + PAGINATION.BULLET_SUFFIX;
1310
- },
1311
- enumerable: false,
1312
- configurable: true
1313
- });
1314
- Object.defineProperty(__proto, "_activeClass", {
1315
- get: function () {
1316
- var pagination = this._pagination;
1317
- return pagination.classPrefix + "-" + PAGINATION.BULLET_ACTIVE_SUFFIX;
1318
- },
1319
- enumerable: false,
1320
- configurable: true
1321
- });
1322
-
1323
- __proto.destroy = function () {
923
+ }
924
+ }
925
+ class BulletRenderer extends Renderer {
926
+ constructor() {
927
+ super(...arguments);
928
+ this._bullets = [];
929
+ this._prevIndex = -1;
930
+ }
931
+ get _bulletClass() {
932
+ const pagination = this._pagination;
933
+ return `${pagination.classPrefix}-${PAGINATION.BULLET_SUFFIX}`;
934
+ }
935
+ get _activeClass() {
936
+ const pagination = this._pagination;
937
+ return `${pagination.classPrefix}-${PAGINATION.BULLET_ACTIVE_SUFFIX}`;
938
+ }
939
+ destroy() {
1324
940
  this._bullets = [];
1325
941
  this._prevIndex = -1;
1326
- };
1327
-
1328
- __proto.render = function () {
1329
- var _this = this;
1330
-
1331
- var flicking = this._flicking;
1332
- var pagination = this._pagination;
1333
- var wrapper = this._wrapper;
1334
- var bulletClass = this._bulletClass;
1335
- var activeClass = this._activeClass;
1336
- var renderBullet = pagination.renderBullet;
1337
- var renderActiveBullet = pagination.renderActiveBullet;
1338
- var bulletWrapperClass = pagination.classPrefix + "-" + PAGINATION.BULLET_WRAPPER_SUFFIX;
1339
- var anchorPoints = flicking.camera.anchorPoints;
942
+ }
943
+ render() {
944
+ const flicking2 = this._flicking;
945
+ const pagination = this._pagination;
946
+ const wrapper = this._wrapper;
947
+ const bulletClass = this._bulletClass;
948
+ const activeClass = this._activeClass;
949
+ const renderBullet = pagination.renderBullet;
950
+ const renderActiveBullet = pagination.renderActiveBullet;
951
+ const bulletWrapperClass = `${pagination.classPrefix}-${PAGINATION.BULLET_WRAPPER_SUFFIX}`;
952
+ const anchorPoints = flicking2.camera.anchorPoints;
1340
953
  addClass(wrapper, bulletWrapperClass);
1341
- wrapper.innerHTML = anchorPoints.map(function (anchorPoint, index) {
1342
- if (renderActiveBullet && anchorPoint.panel.index === flicking.index) {
954
+ wrapper.innerHTML = anchorPoints.map((anchorPoint, index) => {
955
+ if (renderActiveBullet && anchorPoint.panel.index === flicking2.index) {
1343
956
  return renderActiveBullet(bulletClass, index);
1344
957
  } else {
1345
958
  return renderBullet(bulletClass, index);
1346
959
  }
1347
960
  }).join("\n");
1348
- var bullets = [].slice.call(wrapper.children);
1349
- bullets.forEach(function (bullet, index) {
1350
- var anchorPoint = anchorPoints[index];
1351
-
1352
- if (anchorPoint.panel.index === flicking.index) {
961
+ const bullets = [].slice.call(wrapper.children);
962
+ bullets.forEach((bullet, index) => {
963
+ const anchorPoint = anchorPoints[index];
964
+ if (anchorPoint.panel.index === flicking2.index) {
1353
965
  addClass(bullet, activeClass);
1354
- _this._prevIndex = index;
966
+ this._prevIndex = index;
1355
967
  }
1356
-
1357
- _this._addBulletEvents(bullet, index);
968
+ this._addBulletEvents(bullet, index);
1358
969
  });
1359
970
  this._bullets = bullets;
1360
- };
1361
-
1362
- __proto.update = function (index) {
1363
- var flicking = this._flicking;
1364
- var pagination = this._pagination;
1365
- var wrapper = this._wrapper;
1366
- var bullets = this._bullets;
1367
- var bulletClass = this._bulletClass;
1368
- var activeClass = this._activeClass;
1369
- var prevIndex = this._prevIndex;
1370
- var anchorPoints = flicking.camera.anchorPoints;
1371
- var renderBullet = pagination.renderBullet;
1372
- var renderActiveBullet = pagination.renderActiveBullet;
971
+ }
972
+ update(index) {
973
+ const flicking2 = this._flicking;
974
+ const pagination = this._pagination;
975
+ const wrapper = this._wrapper;
976
+ const bullets = this._bullets;
977
+ const bulletClass = this._bulletClass;
978
+ const activeClass = this._activeClass;
979
+ const prevIndex = this._prevIndex;
980
+ const anchorPoints = flicking2.camera.anchorPoints;
981
+ const renderBullet = pagination.renderBullet;
982
+ const renderActiveBullet = pagination.renderActiveBullet;
1373
983
  if (anchorPoints.length <= 0) return;
1374
- var anchorOffset = anchorPoints[0].panel.index;
1375
- var activeBulletIndex = index - anchorOffset;
984
+ const anchorOffset = anchorPoints[0].panel.index;
985
+ const activeBulletIndex = index - anchorOffset;
1376
986
  if (prevIndex === activeBulletIndex) return;
1377
-
1378
987
  if (renderActiveBullet) {
1379
- var prevBullet = bullets[prevIndex];
1380
-
988
+ const prevBullet = bullets[prevIndex];
1381
989
  if (prevBullet) {
1382
- var newBullet = this._createBulletFromString(renderBullet(bulletClass, prevIndex), prevIndex);
1383
-
990
+ const newBullet = this._createBulletFromString(renderBullet(bulletClass, prevIndex), prevIndex);
1384
991
  prevBullet.parentElement.replaceChild(newBullet, prevBullet);
1385
992
  bullets[prevIndex] = newBullet;
1386
993
  }
1387
-
1388
- var activeBullet = bullets[activeBulletIndex];
1389
-
1390
- var newActiveBullet = this._createBulletFromString(renderActiveBullet(bulletClass + " " + activeClass, activeBulletIndex), activeBulletIndex);
1391
-
994
+ const activeBullet = bullets[activeBulletIndex];
995
+ const newActiveBullet = this._createBulletFromString(
996
+ renderActiveBullet(`${bulletClass} ${activeClass}`, activeBulletIndex),
997
+ activeBulletIndex
998
+ );
1392
999
  wrapper.replaceChild(newActiveBullet, activeBullet);
1393
1000
  bullets[activeBulletIndex] = newActiveBullet;
1394
1001
  } else {
1395
- var activeBullet = bullets[activeBulletIndex];
1396
- var prevBullet = bullets[prevIndex];
1397
-
1002
+ const activeBullet = bullets[activeBulletIndex];
1003
+ const prevBullet = bullets[prevIndex];
1398
1004
  if (prevBullet) {
1399
1005
  removeClass(prevBullet, activeClass);
1400
1006
  }
1401
-
1402
1007
  addClass(activeBullet, activeClass);
1403
1008
  }
1404
-
1405
1009
  this._prevIndex = activeBulletIndex;
1406
- };
1407
-
1408
- return BulletRenderer;
1409
- }(Renderer);
1410
-
1411
- var FractionRenderer =
1412
- /*#__PURE__*/
1413
- function (_super) {
1414
- __extends(FractionRenderer, _super);
1415
-
1416
- function FractionRenderer() {
1417
- var _this = _super !== null && _super.apply(this, arguments) || this;
1418
-
1419
- _this._prevIndex = -1;
1420
- _this._prevTotal = -1;
1421
- return _this;
1422
- }
1423
-
1424
- var __proto = FractionRenderer.prototype;
1425
-
1426
- __proto.destroy = function () {
1010
+ }
1011
+ }
1012
+ class FractionRenderer extends Renderer {
1013
+ constructor() {
1014
+ super(...arguments);
1427
1015
  this._prevIndex = -1;
1428
1016
  this._prevTotal = -1;
1429
- };
1430
-
1431
- __proto.render = function () {
1432
- var flicking = this._flicking;
1433
- var wrapper = this._wrapper;
1434
- var pagination = this._pagination;
1435
- var fractionWrapperClass = pagination.classPrefix + "-" + PAGINATION.FRACTION_WRAPPER_SUFFIX;
1436
- var fractionCurrentClass = pagination.classPrefix + "-" + PAGINATION.FRACTION_CURRENT_SUFFIX;
1437
- var fractionTotalClass = pagination.classPrefix + "-" + PAGINATION.FRACTION_TOTAL_SUFFIX;
1017
+ }
1018
+ destroy() {
1019
+ this._prevIndex = -1;
1020
+ this._prevTotal = -1;
1021
+ }
1022
+ render() {
1023
+ const flicking2 = this._flicking;
1024
+ const wrapper = this._wrapper;
1025
+ const pagination = this._pagination;
1026
+ const fractionWrapperClass = `${pagination.classPrefix}-${PAGINATION.FRACTION_WRAPPER_SUFFIX}`;
1027
+ const fractionCurrentClass = `${pagination.classPrefix}-${PAGINATION.FRACTION_CURRENT_SUFFIX}`;
1028
+ const fractionTotalClass = `${pagination.classPrefix}-${PAGINATION.FRACTION_TOTAL_SUFFIX}`;
1438
1029
  addClass(wrapper, fractionWrapperClass);
1439
1030
  wrapper.innerHTML = pagination.renderFraction(fractionCurrentClass, fractionTotalClass);
1440
- this.update(flicking.index);
1441
- };
1442
-
1443
- __proto.update = function (index) {
1444
- var flicking = this._flicking;
1445
- var wrapper = this._wrapper;
1446
- var pagination = this._pagination;
1447
- var anchorPoints = flicking.camera.anchorPoints;
1448
- var currentIndex = anchorPoints.length > 0 ? index - anchorPoints[0].panel.index + 1 : 0;
1449
- var anchorCount = anchorPoints.length;
1031
+ this.update(flicking2.index);
1032
+ }
1033
+ update(index) {
1034
+ const flicking2 = this._flicking;
1035
+ const wrapper = this._wrapper;
1036
+ const pagination = this._pagination;
1037
+ const anchorPoints = flicking2.camera.anchorPoints;
1038
+ const currentIndex = anchorPoints.length > 0 ? index - anchorPoints[0].panel.index + 1 : 0;
1039
+ const anchorCount = anchorPoints.length;
1450
1040
  if (currentIndex === this._prevIndex && anchorCount === this._prevTotal) return;
1451
- var fractionCurrentSelector = "." + pagination.classPrefix + "-" + PAGINATION.FRACTION_CURRENT_SUFFIX;
1452
- var fractionTotalSelector = "." + pagination.classPrefix + "-" + PAGINATION.FRACTION_TOTAL_SUFFIX;
1453
- var currentWrapper = wrapper.querySelector(fractionCurrentSelector);
1454
- var totalWrapper = wrapper.querySelector(fractionTotalSelector);
1041
+ const fractionCurrentSelector = `.${pagination.classPrefix}-${PAGINATION.FRACTION_CURRENT_SUFFIX}`;
1042
+ const fractionTotalSelector = `.${pagination.classPrefix}-${PAGINATION.FRACTION_TOTAL_SUFFIX}`;
1043
+ const currentWrapper = wrapper.querySelector(fractionCurrentSelector);
1044
+ const totalWrapper = wrapper.querySelector(fractionTotalSelector);
1455
1045
  currentWrapper.innerHTML = pagination.fractionCurrentFormat(currentIndex);
1456
1046
  totalWrapper.innerHTML = pagination.fractionTotalFormat(anchorCount);
1457
1047
  this._prevIndex = currentIndex;
1458
1048
  this._prevTotal = anchorCount;
1459
- };
1460
-
1461
- return FractionRenderer;
1462
- }(Renderer);
1463
-
1464
- var ScrollBulletRenderer =
1465
- /*#__PURE__*/
1466
- function (_super) {
1467
- __extends(ScrollBulletRenderer, _super);
1468
-
1469
- function ScrollBulletRenderer() {
1470
- var _this = _super !== null && _super.apply(this, arguments) || this;
1471
-
1472
- _this._bullets = [];
1473
- _this._bulletSize = 0;
1474
- _this._previousIndex = -1;
1475
- _this._sliderIndex = -1;
1476
-
1477
- _this.moveTo = function (index) {
1478
- var pagination = _this._pagination;
1479
- var sliderEl = _this._wrapper.firstElementChild;
1480
- var bulletSize = _this._bulletSize;
1481
- var wrapperSize = bulletSize * pagination.bulletCount;
1482
- sliderEl.style.transform = "translate(" + (wrapperSize / 2 - (index + 0.5) * bulletSize) + "px)";
1483
- _this._sliderIndex = index;
1049
+ }
1050
+ }
1051
+ class ScrollBulletRenderer extends Renderer {
1052
+ constructor() {
1053
+ super(...arguments);
1054
+ this._bullets = [];
1055
+ this._bulletSize = 0;
1056
+ this._previousIndex = -1;
1057
+ this._sliderIndex = -1;
1058
+ this.moveTo = (index) => {
1059
+ const pagination = this._pagination;
1060
+ const sliderEl = this._wrapper.firstElementChild;
1061
+ const bulletSize = this._bulletSize;
1062
+ const wrapperSize = bulletSize * pagination.bulletCount;
1063
+ sliderEl.style.transform = `translate(${wrapperSize / 2 - (index + 0.5) * bulletSize}px)`;
1064
+ this._sliderIndex = index;
1484
1065
  };
1485
-
1486
- return _this;
1487
1066
  }
1488
-
1489
- var __proto = ScrollBulletRenderer.prototype;
1490
-
1491
- __proto.destroy = function () {
1067
+ destroy() {
1492
1068
  this._bullets = [];
1493
1069
  this._bulletSize = 0;
1494
1070
  this._previousIndex = -1;
1495
1071
  this._sliderIndex = -1;
1496
- };
1497
-
1498
- __proto.render = function () {
1499
- var _this = this;
1500
-
1501
- var wrapper = this._wrapper;
1502
- var flicking = this._flicking;
1503
- var pagination = this._pagination;
1504
- var renderBullet = pagination.renderBullet;
1505
- var anchorPoints = flicking.camera.anchorPoints;
1506
- var dynamicWrapperClass = pagination.classPrefix + "-" + PAGINATION.SCROLL_WRAPPER_SUFFIX;
1507
- var bulletClass = pagination.classPrefix + "-" + PAGINATION.BULLET_SUFFIX;
1508
- var sliderClass = pagination.classPrefix + "-" + PAGINATION.SCROLL_SLIDER_SUFFIX;
1509
- var uninitClass = pagination.classPrefix + "-" + PAGINATION.SCROLL_UNINIT_SUFFIX;
1510
- var sliderEl = document.createElement("div");
1072
+ }
1073
+ render() {
1074
+ const wrapper = this._wrapper;
1075
+ const flicking2 = this._flicking;
1076
+ const pagination = this._pagination;
1077
+ const renderBullet = pagination.renderBullet;
1078
+ const anchorPoints = flicking2.camera.anchorPoints;
1079
+ const dynamicWrapperClass = `${pagination.classPrefix}-${PAGINATION.SCROLL_WRAPPER_SUFFIX}`;
1080
+ const bulletClass = `${pagination.classPrefix}-${PAGINATION.BULLET_SUFFIX}`;
1081
+ const sliderClass = `${pagination.classPrefix}-${PAGINATION.SCROLL_SLIDER_SUFFIX}`;
1082
+ const uninitClass = `${pagination.classPrefix}-${PAGINATION.SCROLL_UNINIT_SUFFIX}`;
1083
+ const sliderEl = document.createElement("div");
1511
1084
  addClass(sliderEl, sliderClass);
1512
1085
  addClass(wrapper, uninitClass);
1513
1086
  addClass(wrapper, dynamicWrapperClass);
1514
1087
  wrapper.appendChild(sliderEl);
1515
- sliderEl.innerHTML = anchorPoints.map(function (_, index) {
1516
- return renderBullet(bulletClass, index);
1517
- }).join("\n");
1518
- var bullets = [].slice.call(sliderEl.children);
1519
- bullets.forEach(function (bullet, index) {
1520
- _this._addBulletEvents(bullet, index);
1088
+ sliderEl.innerHTML = anchorPoints.map((_, index) => renderBullet(bulletClass, index)).join("\n");
1089
+ const bullets = [].slice.call(sliderEl.children);
1090
+ bullets.forEach((bullet, index) => {
1091
+ this._addBulletEvents(bullet, index);
1521
1092
  });
1522
1093
  if (bullets.length <= 0) return;
1523
- var bulletStyle = getComputedStyle(bullets[0]);
1524
- var bulletSize = bullets[0].clientWidth + parseFloat(bulletStyle.marginLeft) + parseFloat(bulletStyle.marginRight);
1525
- wrapper.style.width = bulletSize * pagination.bulletCount + "px";
1094
+ const bulletStyle = getComputedStyle(bullets[0]);
1095
+ const bulletSize = bullets[0].clientWidth + parseFloat(bulletStyle.marginLeft) + parseFloat(bulletStyle.marginRight);
1096
+ wrapper.style.width = `${bulletSize * pagination.bulletCount}px`;
1526
1097
  this._bullets = bullets;
1527
1098
  this._bulletSize = bulletSize;
1528
1099
  this._previousIndex = -1;
1529
1100
  this.update(this._flicking.index);
1530
- window.requestAnimationFrame(function () {
1101
+ window.requestAnimationFrame(() => {
1531
1102
  removeClass(wrapper, uninitClass);
1532
1103
  });
1533
- };
1534
-
1535
- __proto.update = function (index) {
1536
- var pagination = this._pagination;
1537
- var flicking$1 = this._flicking;
1538
- var bullets = this._bullets;
1539
- var prevIndex = this._previousIndex;
1540
- var renderBullet = pagination.renderBullet;
1541
- var renderActiveBullet = pagination.renderActiveBullet;
1542
- var anchorPoints = flicking$1.camera.anchorPoints;
1543
- var anchorOffset = anchorPoints[0].panel.index;
1544
- var activeIndex = index - anchorOffset;
1104
+ }
1105
+ update(index) {
1106
+ const pagination = this._pagination;
1107
+ const flicking$1 = this._flicking;
1108
+ const bullets = this._bullets;
1109
+ const prevIndex = this._previousIndex;
1110
+ const renderBullet = pagination.renderBullet;
1111
+ const renderActiveBullet = pagination.renderActiveBullet;
1112
+ const anchorPoints = flicking$1.camera.anchorPoints;
1113
+ const anchorOffset = anchorPoints[0].panel.index;
1114
+ const activeIndex = index - anchorOffset;
1545
1115
  if (anchorPoints.length <= 0) return;
1546
- var bulletClass = pagination.classPrefix + "-" + PAGINATION.BULLET_SUFFIX;
1547
- var bulletActiveClass = pagination.classPrefix + "-" + PAGINATION.BULLET_ACTIVE_SUFFIX;
1548
- var prevClassPrefix = pagination.classPrefix + "-" + PAGINATION.SCROLL_PREV_SUFFIX;
1549
- var nextClassPrefix = pagination.classPrefix + "-" + PAGINATION.SCROLL_NEXT_SUFFIX;
1550
-
1551
- var bulletPrevClass = function (offset) {
1552
- return "" + prevClassPrefix + (offset > 1 ? offset : "");
1553
- };
1554
-
1555
- var bulletNextClass = function (offset) {
1556
- return "" + nextClassPrefix + (offset > 1 ? offset : "");
1557
- };
1558
-
1559
- var prevClassRegex = new RegExp("^" + prevClassPrefix);
1560
- var nextClassRegex = new RegExp("^" + nextClassPrefix);
1561
-
1116
+ const bulletClass = `${pagination.classPrefix}-${PAGINATION.BULLET_SUFFIX}`;
1117
+ const bulletActiveClass = `${pagination.classPrefix}-${PAGINATION.BULLET_ACTIVE_SUFFIX}`;
1118
+ const prevClassPrefix = `${pagination.classPrefix}-${PAGINATION.SCROLL_PREV_SUFFIX}`;
1119
+ const nextClassPrefix = `${pagination.classPrefix}-${PAGINATION.SCROLL_NEXT_SUFFIX}`;
1120
+ const bulletPrevClass = (offset) => `${prevClassPrefix}${offset > 1 ? offset : ""}`;
1121
+ const bulletNextClass = (offset) => `${nextClassPrefix}${offset > 1 ? offset : ""}`;
1122
+ const prevClassRegex = new RegExp(`^${prevClassPrefix}`);
1123
+ const nextClassRegex = new RegExp(`^${nextClassPrefix}`);
1562
1124
  if (renderActiveBullet) {
1563
- var prevBullet = bullets[prevIndex];
1564
-
1125
+ const prevBullet = bullets[prevIndex];
1565
1126
  if (prevBullet) {
1566
- var newBullet = this._createBulletFromString(renderBullet(bulletClass, prevIndex), prevIndex);
1567
-
1127
+ const newBullet = this._createBulletFromString(renderBullet(bulletClass, prevIndex), prevIndex);
1568
1128
  prevBullet.parentElement.replaceChild(newBullet, prevBullet);
1569
1129
  bullets[prevIndex] = newBullet;
1570
1130
  }
1571
-
1572
- var activeBullet = bullets[activeIndex];
1573
-
1131
+ const activeBullet = bullets[activeIndex];
1574
1132
  if (activeBullet) {
1575
- var newActiveBullet = this._createBulletFromString(renderActiveBullet(bulletClass, activeIndex), activeIndex);
1576
-
1133
+ const newActiveBullet = this._createBulletFromString(renderActiveBullet(bulletClass, activeIndex), activeIndex);
1577
1134
  activeBullet.parentElement.replaceChild(newActiveBullet, activeBullet);
1578
1135
  bullets[activeIndex] = newActiveBullet;
1579
1136
  }
1580
1137
  }
1581
-
1582
- bullets.forEach(function (bullet, idx) {
1583
- var indexOffset = idx - activeIndex;
1584
- var classList = bullet.className.split(" ");
1585
-
1586
- for (var _i = 0, classList_1 = classList; _i < classList_1.length; _i++) {
1587
- var className = classList_1[_i];
1588
-
1138
+ bullets.forEach((bullet, idx) => {
1139
+ const indexOffset = idx - activeIndex;
1140
+ const classList = bullet.className.split(" ");
1141
+ for (const className of classList) {
1589
1142
  if (className === bulletActiveClass || prevClassRegex.test(className) || nextClassRegex.test(className)) {
1590
1143
  removeClass(bullet, className);
1591
1144
  }
1592
1145
  }
1593
-
1594
1146
  if (indexOffset === 0) {
1595
1147
  addClass(bullet, bulletActiveClass);
1596
1148
  } else if (indexOffset > 0) {
@@ -1601,76 +1153,45 @@ version: 4.7.2-beta.1
1601
1153
  });
1602
1154
  pagination.scrollOnChange(activeIndex, {
1603
1155
  total: bullets.length,
1604
- prevIndex: prevIndex,
1156
+ prevIndex,
1605
1157
  sliderIndex: this._sliderIndex,
1606
1158
  direction: activeIndex > prevIndex ? flicking.DIRECTION.NEXT : flicking.DIRECTION.PREV,
1607
- bullets: __spreadArray([], bullets),
1159
+ bullets: [...bullets],
1608
1160
  moveTo: this.moveTo
1609
1161
  });
1610
1162
  this._previousIndex = activeIndex;
1611
- };
1612
-
1613
- return ScrollBulletRenderer;
1614
- }(Renderer);
1615
-
1616
- /**
1617
- * @memberof Flicking.Plugins
1618
- */
1619
-
1620
- var Pagination =
1621
- /*#__PURE__*/
1622
- function () {
1623
- function Pagination(_a) {
1624
- var _this = this;
1625
-
1626
- var _b = _a === void 0 ? {} : _a,
1627
- _c = _b.parentEl,
1628
- parentEl = _c === void 0 ? null : _c,
1629
- _d = _b.selector,
1630
- selector = _d === void 0 ? PAGINATION.SELECTOR : _d,
1631
- _e = _b.type,
1632
- type = _e === void 0 ? PAGINATION.TYPE.BULLET : _e,
1633
- _f = _b.classPrefix,
1634
- classPrefix = _f === void 0 ? PAGINATION.PREFIX : _f,
1635
- _g = _b.bulletCount,
1636
- bulletCount = _g === void 0 ? 5 : _g,
1637
- _h = _b.renderBullet,
1638
- renderBullet = _h === void 0 ? function (className) {
1639
- return "<span class=\"" + className + "\"></span>";
1640
- } : _h,
1641
- _j = _b.renderActiveBullet,
1642
- renderActiveBullet = _j === void 0 ? null : _j,
1643
- _k = _b.renderFraction,
1644
- renderFraction = _k === void 0 ? function (currentClass, totalClass) {
1645
- return "<span class=\"" + currentClass + "\"></span>/<span class=\"" + totalClass + "\"></span>";
1646
- } : _k,
1647
- _l = _b.fractionCurrentFormat,
1648
- fractionCurrentFormat = _l === void 0 ? function (index) {
1649
- return index.toString();
1650
- } : _l,
1651
- _m = _b.fractionTotalFormat,
1652
- fractionTotalFormat = _m === void 0 ? function (index) {
1653
- return index.toString();
1654
- } : _m,
1655
- _o = _b.scrollOnChange,
1656
- scrollOnChange = _o === void 0 ? function (index, ctx) {
1657
- return ctx.moveTo(index);
1658
- } : _o;
1659
- /* Internal Values */
1660
-
1661
-
1163
+ }
1164
+ }
1165
+ class Pagination {
1166
+ /**
1167
+ * @param options - Options for the Pagination instance
1168
+ * @example
1169
+ * ```ts
1170
+ * flicking.addPlugins(new Pagination({ type: "bullet", selector: ".flicking-pagination" }));
1171
+ * ```
1172
+ */
1173
+ constructor(options = {}) {
1662
1174
  this._flicking = null;
1663
-
1664
- this.update = function () {
1665
- _this._removeAllChilds();
1666
-
1667
- _this._renderer.render();
1175
+ this.update = () => {
1176
+ this._removeAllChilds();
1177
+ this._renderer.render();
1668
1178
  };
1669
-
1670
- this._onIndexChange = function (evt) {
1671
- _this._renderer.update(evt.index);
1179
+ this._onIndexChange = (evt) => {
1180
+ this._renderer.update(evt.index);
1672
1181
  };
1673
-
1182
+ const {
1183
+ parentEl = null,
1184
+ selector = PAGINATION.SELECTOR,
1185
+ type = PAGINATION.TYPE.BULLET,
1186
+ classPrefix = PAGINATION.PREFIX,
1187
+ bulletCount = 5,
1188
+ renderBullet = (className) => `<span class="${className}"></span>`,
1189
+ renderActiveBullet = null,
1190
+ renderFraction = (currentClass, totalClass) => `<span class="${currentClass}"></span>/<span class="${totalClass}"></span>`,
1191
+ fractionCurrentFormat = (index) => index.toString(),
1192
+ fractionTotalFormat = (index) => index.toString(),
1193
+ scrollOnChange = (index, ctx) => ctx.moveTo(index)
1194
+ } = options;
1674
1195
  this._parentEl = parentEl;
1675
1196
  this._selector = selector;
1676
1197
  this._type = type;
@@ -1683,211 +1204,163 @@ version: 4.7.2-beta.1
1683
1204
  this._fractionTotalFormat = fractionTotalFormat;
1684
1205
  this._scrollOnChange = scrollOnChange;
1685
1206
  }
1686
-
1687
- var __proto = Pagination.prototype;
1688
- Object.defineProperty(__proto, "parentEl", {
1689
- get: function () {
1690
- return this._parentEl;
1691
- },
1692
- set: function (val) {
1693
- this._parentEl = val;
1694
- },
1695
- enumerable: false,
1696
- configurable: true
1697
- });
1698
- Object.defineProperty(__proto, "selector", {
1699
- get: function () {
1700
- return this._selector;
1701
- },
1702
- set: function (val) {
1703
- this._selector = val;
1704
- },
1705
- enumerable: false,
1706
- configurable: true
1707
- });
1708
- Object.defineProperty(__proto, "type", {
1709
- get: function () {
1710
- return this._type;
1711
- },
1712
- set: function (val) {
1713
- this._type = val;
1714
- },
1715
- enumerable: false,
1716
- configurable: true
1717
- });
1718
- Object.defineProperty(__proto, "classPrefix", {
1719
- get: function () {
1720
- return this._classPrefix;
1721
- },
1722
- enumerable: false,
1723
- configurable: true
1724
- });
1725
- Object.defineProperty(__proto, "bulletCount", {
1726
- get: function () {
1727
- return this._bulletCount;
1728
- },
1729
- set: function (val) {
1730
- this._bulletCount = val;
1731
- },
1732
- enumerable: false,
1733
- configurable: true
1734
- });
1735
- Object.defineProperty(__proto, "renderBullet", {
1736
- get: function () {
1737
- return this._renderBullet;
1738
- },
1739
- set: function (val) {
1740
- this._renderBullet = val;
1741
- },
1742
- enumerable: false,
1743
- configurable: true
1744
- });
1745
- Object.defineProperty(__proto, "renderActiveBullet", {
1746
- get: function () {
1747
- return this._renderActiveBullet;
1748
- },
1749
- set: function (val) {
1750
- this._renderActiveBullet = val;
1751
- },
1752
- enumerable: false,
1753
- configurable: true
1754
- });
1755
- Object.defineProperty(__proto, "renderFraction", {
1756
- get: function () {
1757
- return this._renderFraction;
1758
- },
1759
- set: function (val) {
1760
- this._renderFraction = val;
1761
- },
1762
- enumerable: false,
1763
- configurable: true
1764
- });
1765
- Object.defineProperty(__proto, "fractionCurrentFormat", {
1766
- get: function () {
1767
- return this._fractionCurrentFormat;
1768
- },
1769
- set: function (val) {
1770
- this._fractionCurrentFormat = val;
1771
- },
1772
- enumerable: false,
1773
- configurable: true
1774
- });
1775
- Object.defineProperty(__proto, "fractionTotalFormat", {
1776
- get: function () {
1777
- return this._fractionTotalFormat;
1778
- },
1779
- set: function (val) {
1780
- this._fractionTotalFormat = val;
1781
- },
1782
- enumerable: false,
1783
- configurable: true
1784
- });
1785
- Object.defineProperty(__proto, "scrollOnChange", {
1786
- get: function () {
1787
- return this._scrollOnChange;
1788
- },
1789
- set: function (val) {
1790
- this._scrollOnChange = val;
1791
- },
1792
- enumerable: false,
1793
- configurable: true
1794
- });
1795
- Object.defineProperty(__proto, "bulletWrapperclassPrefixClass", {
1796
- set: function (val) {
1797
- this._classPrefix = val;
1798
- },
1799
- enumerable: false,
1800
- configurable: true
1801
- });
1802
-
1803
- __proto.init = function (flicking$1) {
1207
+ /** Current value of the {@link PaginationOptions.parentEl | parentEl} option. */
1208
+ get parentEl() {
1209
+ return this._parentEl;
1210
+ }
1211
+ /** Current value of the {@link PaginationOptions.selector | selector} option. */
1212
+ get selector() {
1213
+ return this._selector;
1214
+ }
1215
+ /** Current value of the {@link PaginationOptions.type | type} option. */
1216
+ get type() {
1217
+ return this._type;
1218
+ }
1219
+ /** Current value of the {@link PaginationOptions.classPrefix | classPrefix} option. */
1220
+ get classPrefix() {
1221
+ return this._classPrefix;
1222
+ }
1223
+ /** Current value of the {@link PaginationOptions.bulletCount | bulletCount} option. */
1224
+ get bulletCount() {
1225
+ return this._bulletCount;
1226
+ }
1227
+ /** Current value of the {@link PaginationOptions.renderBullet | renderBullet} option. */
1228
+ get renderBullet() {
1229
+ return this._renderBullet;
1230
+ }
1231
+ /** Current value of the {@link PaginationOptions.renderActiveBullet | renderActiveBullet} option. */
1232
+ get renderActiveBullet() {
1233
+ return this._renderActiveBullet;
1234
+ }
1235
+ /** Current value of the {@link PaginationOptions.renderFraction | renderFraction} option. */
1236
+ get renderFraction() {
1237
+ return this._renderFraction;
1238
+ }
1239
+ /** Current value of the {@link PaginationOptions.fractionCurrentFormat | fractionCurrentFormat} option. */
1240
+ get fractionCurrentFormat() {
1241
+ return this._fractionCurrentFormat;
1242
+ }
1243
+ /** Current value of the {@link PaginationOptions.fractionTotalFormat | fractionTotalFormat} option. */
1244
+ get fractionTotalFormat() {
1245
+ return this._fractionTotalFormat;
1246
+ }
1247
+ /** Current value of the {@link PaginationOptions.scrollOnChange | scrollOnChange} option. */
1248
+ get scrollOnChange() {
1249
+ return this._scrollOnChange;
1250
+ }
1251
+ /** Sets {@link PaginationOptions.parentEl | parentEl}. */
1252
+ set parentEl(val) {
1253
+ this._parentEl = val;
1254
+ }
1255
+ /** Sets {@link PaginationOptions.selector | selector}. */
1256
+ set selector(val) {
1257
+ this._selector = val;
1258
+ }
1259
+ /** Sets {@link PaginationOptions.type | type}. */
1260
+ set type(val) {
1261
+ this._type = val;
1262
+ }
1263
+ /** Sets {@link PaginationOptions.classPrefix | classPrefix}. */
1264
+ set bulletWrapperclassPrefixClass(val) {
1265
+ this._classPrefix = val;
1266
+ }
1267
+ /** Sets {@link PaginationOptions.bulletCount | bulletCount}. */
1268
+ set bulletCount(val) {
1269
+ this._bulletCount = val;
1270
+ }
1271
+ /** Sets {@link PaginationOptions.renderBullet | renderBullet}. */
1272
+ set renderBullet(val) {
1273
+ this._renderBullet = val;
1274
+ }
1275
+ /** Sets {@link PaginationOptions.renderActiveBullet | renderActiveBullet}. */
1276
+ set renderActiveBullet(val) {
1277
+ this._renderActiveBullet = val;
1278
+ }
1279
+ /** Sets {@link PaginationOptions.renderFraction | renderFraction}. */
1280
+ set renderFraction(val) {
1281
+ this._renderFraction = val;
1282
+ }
1283
+ /** Sets {@link PaginationOptions.fractionCurrentFormat | fractionCurrentFormat}. */
1284
+ set fractionCurrentFormat(val) {
1285
+ this._fractionCurrentFormat = val;
1286
+ }
1287
+ /** Sets {@link PaginationOptions.fractionTotalFormat | fractionTotalFormat}. */
1288
+ set fractionTotalFormat(val) {
1289
+ this._fractionTotalFormat = val;
1290
+ }
1291
+ /** Sets {@link PaginationOptions.scrollOnChange | scrollOnChange}. */
1292
+ set scrollOnChange(val) {
1293
+ this._scrollOnChange = val;
1294
+ }
1295
+ /** Initialize the plugin, create the pagination renderer, and attach event listeners to the Flicking instance.
1296
+ * @param flicking - The Flicking instance to attach this plugin to
1297
+ */
1298
+ init(flicking$1) {
1804
1299
  if (this._flicking) {
1805
1300
  this.destroy();
1806
1301
  }
1807
-
1808
1302
  this._flicking = flicking$1;
1809
- var type = this._type;
1810
- var selector = this._selector;
1811
- var parentEl = this._parentEl ? this._parentEl : flicking$1.element;
1812
- var wrapper = parentEl.querySelector(selector);
1813
-
1303
+ const type = this._type;
1304
+ const selector = this._selector;
1305
+ const parentEl = this._parentEl ? this._parentEl : flicking$1.element;
1306
+ const wrapper = parentEl.querySelector(selector);
1814
1307
  if (!wrapper) {
1815
- throw new Error("[Flicking-Pagination] Couldn't find element with the given selector: " + selector);
1308
+ throw new Error(`[Flicking-Pagination] Couldn't find element with the given selector: ${selector}`);
1816
1309
  }
1817
-
1818
1310
  this._wrapper = wrapper;
1819
1311
  this._renderer = this._createRenderer(type);
1820
1312
  flicking$1.on(flicking.EVENTS.WILL_CHANGE, this._onIndexChange);
1821
1313
  flicking$1.on(flicking.EVENTS.WILL_RESTORE, this._onIndexChange);
1822
1314
  flicking$1.on(flicking.EVENTS.PANEL_CHANGE, this.update);
1823
1315
  this.update();
1824
- };
1825
-
1826
- __proto.destroy = function () {
1827
- var flicking$1 = this._flicking;
1828
-
1316
+ }
1317
+ /** Destroy the plugin, remove all event listeners, and clean up pagination DOM elements. */
1318
+ destroy() {
1319
+ const flicking$1 = this._flicking;
1829
1320
  if (!flicking$1) {
1830
1321
  return;
1831
1322
  }
1832
-
1833
1323
  flicking$1.off(flicking.EVENTS.WILL_CHANGE, this._onIndexChange);
1834
1324
  flicking$1.off(flicking.EVENTS.WILL_RESTORE, this._onIndexChange);
1835
1325
  flicking$1.off(flicking.EVENTS.PANEL_CHANGE, this.update);
1836
-
1837
1326
  this._renderer.destroy();
1838
-
1839
1327
  this._removeAllChilds();
1840
-
1841
1328
  this._flicking = null;
1842
- };
1843
-
1844
- __proto._createRenderer = function (type) {
1845
- var options = {
1329
+ }
1330
+ _createRenderer(type) {
1331
+ const options = {
1846
1332
  flicking: this._flicking,
1847
1333
  pagination: this,
1848
1334
  wrapper: this._wrapper
1849
1335
  };
1850
-
1851
1336
  switch (type) {
1852
1337
  case PAGINATION.TYPE.BULLET:
1853
1338
  return new BulletRenderer(options);
1854
-
1855
1339
  case PAGINATION.TYPE.FRACTION:
1856
1340
  return new FractionRenderer(options);
1857
-
1858
1341
  case PAGINATION.TYPE.SCROLL:
1859
1342
  return new ScrollBulletRenderer(options);
1860
-
1861
1343
  default:
1862
- throw new Error("[Flicking-Pagination] type \"" + type + "\" is not supported.");
1344
+ throw new Error(`[Flicking-Pagination] type "${type}" is not supported.`);
1863
1345
  }
1864
- };
1865
-
1866
- __proto._removeAllChilds = function () {
1867
- var wrapper = this._wrapper;
1868
-
1346
+ }
1347
+ _removeAllChilds() {
1348
+ const wrapper = this._wrapper;
1869
1349
  while (wrapper.firstChild) {
1870
1350
  wrapper.removeChild(wrapper.firstChild);
1871
1351
  }
1872
- };
1873
-
1874
- return Pagination;
1875
- }();
1876
-
1877
- /**
1878
- * @namespace Flicking
1879
- */
1880
-
1881
- exports.ARROW = ARROW;
1882
- exports.Arrow = Arrow;
1883
- exports.AutoPlay = AutoPlay;
1884
- exports.Fade = Fade;
1885
- exports.PAGINATION = PAGINATION;
1886
- exports.Pagination = Pagination;
1887
- exports.Parallax = Parallax;
1888
- exports.Perspective = Perspective;
1889
- exports.SYNC = SYNC;
1890
- exports.Sync = Sync;
1891
-
1352
+ }
1353
+ }
1354
+ exports2.ARROW = ARROW;
1355
+ exports2.Arrow = Arrow;
1356
+ exports2.AutoPlay = AutoPlay;
1357
+ exports2.Fade = Fade;
1358
+ exports2.PAGINATION = PAGINATION;
1359
+ exports2.Pagination = Pagination;
1360
+ exports2.Parallax = Parallax;
1361
+ exports2.Perspective = Perspective;
1362
+ exports2.SYNC = SYNC;
1363
+ exports2.Sync = Sync;
1364
+ Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
1892
1365
  }));
1893
1366
  //# sourceMappingURL=plugins.js.map