@egjs/flicking 4.10.3 → 4.10.5-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/CONTRIBUTING.md +5 -4
  2. package/declaration/Flicking.d.ts +236 -236
  3. package/declaration/camera/Camera.d.ts +82 -82
  4. package/declaration/camera/index.d.ts +4 -4
  5. package/declaration/camera/mode/BoundCameraMode.d.ts +13 -13
  6. package/declaration/camera/mode/CameraMode.d.ts +20 -20
  7. package/declaration/camera/mode/CircularCameraMode.d.ts +19 -19
  8. package/declaration/camera/mode/LinearCameraMode.d.ts +9 -9
  9. package/declaration/camera/mode/index.d.ts +6 -6
  10. package/declaration/cfc/getDefaultCameraTransform.d.ts +3 -3
  11. package/declaration/cfc/getRenderingPanels.d.ts +4 -4
  12. package/declaration/cfc/index.d.ts +5 -5
  13. package/declaration/cfc/sync.d.ts +4 -4
  14. package/declaration/cfc/withFlickingMethods.d.ts +2 -2
  15. package/declaration/const/axes.d.ts +8 -8
  16. package/declaration/const/error.d.ts +34 -34
  17. package/declaration/const/external.d.ts +44 -44
  18. package/declaration/control/AxesController.d.ts +44 -44
  19. package/declaration/control/Control.d.ts +44 -44
  20. package/declaration/control/FreeControl.d.ts +14 -14
  21. package/declaration/control/SnapControl.d.ts +16 -16
  22. package/declaration/control/StateMachine.d.ts +14 -14
  23. package/declaration/control/StrictControl.d.ts +20 -20
  24. package/declaration/control/index.d.ts +14 -14
  25. package/declaration/control/states/AnimatingState.d.ts +9 -9
  26. package/declaration/control/states/DisabledState.d.ts +9 -9
  27. package/declaration/control/states/DraggingState.d.ts +8 -8
  28. package/declaration/control/states/HoldingState.d.ts +10 -10
  29. package/declaration/control/states/IdleState.d.ts +9 -9
  30. package/declaration/control/states/State.d.ts +47 -47
  31. package/declaration/core/AnchorPoint.d.ts +15 -15
  32. package/declaration/core/AutoResizer.d.ts +16 -16
  33. package/declaration/core/FlickingError.d.ts +5 -5
  34. package/declaration/core/ResizeWatcher.d.ts +33 -33
  35. package/declaration/core/Viewport.d.ts +25 -25
  36. package/declaration/core/VirtualManager.d.ts +37 -37
  37. package/declaration/core/index.d.ts +6 -6
  38. package/declaration/core/panel/Panel.d.ts +89 -89
  39. package/declaration/core/panel/VirtualPanel.d.ts +19 -19
  40. package/declaration/core/panel/index.d.ts +5 -5
  41. package/declaration/core/panel/provider/ElementProvider.d.ts +8 -8
  42. package/declaration/core/panel/provider/VanillaElementProvider.d.ts +12 -12
  43. package/declaration/core/panel/provider/VirtualElementProvider.d.ts +15 -15
  44. package/declaration/core/panel/provider/index.d.ts +5 -5
  45. package/declaration/index.d.ts +13 -13
  46. package/declaration/index.umd.d.ts +2 -2
  47. package/declaration/renderer/ExternalRenderer.d.ts +7 -7
  48. package/declaration/renderer/Renderer.d.ts +58 -58
  49. package/declaration/renderer/VanillaRenderer.d.ts +10 -10
  50. package/declaration/renderer/index.d.ts +6 -6
  51. package/declaration/renderer/strategy/NormalRenderingStrategy.d.ts +23 -23
  52. package/declaration/renderer/strategy/RenderingStrategy.d.ts +15 -15
  53. package/declaration/renderer/strategy/VirtualRenderingStrategy.d.ts +17 -17
  54. package/declaration/renderer/strategy/index.d.ts +5 -5
  55. package/declaration/type/event.d.ts +88 -88
  56. package/declaration/type/external.d.ts +31 -31
  57. package/declaration/type/internal.d.ts +13 -13
  58. package/declaration/utils.d.ts +45 -45
  59. package/dist/flicking.esm.js +36 -5
  60. package/dist/flicking.esm.js.map +1 -1
  61. package/dist/flicking.js +36 -5
  62. package/dist/flicking.js.map +1 -1
  63. package/dist/flicking.min.js +2 -2
  64. package/dist/flicking.min.js.map +1 -1
  65. package/dist/flicking.pkgd.js +899 -836
  66. package/dist/flicking.pkgd.js.map +1 -1
  67. package/dist/flicking.pkgd.min.js +2 -2
  68. package/dist/flicking.pkgd.min.js.map +1 -1
  69. package/package.json +2 -2
  70. package/src/Flicking.ts +33 -2
  71. package/src/utils.ts +1 -1
@@ -4,7 +4,7 @@ name: @egjs/flicking
4
4
  license: MIT
5
5
  author: NAVER Corp.
6
6
  repository: https://github.com/naver/egjs-flicking
7
- version: 4.10.3
7
+ version: 4.10.5-beta.0
8
8
  */
9
9
  (function (global, factory) {
10
10
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
@@ -256,7 +256,7 @@ version: 4.10.3
256
256
  license: MIT
257
257
  author: NAVER Corp.
258
258
  repository: https://github.com/naver/egjs-component
259
- version: 3.0.2
259
+ version: 3.0.3
260
260
  */
261
261
  /*! *****************************************************************************
262
262
  Copyright (c) Microsoft Corporation.
@@ -274,8 +274,8 @@ version: 4.10.3
274
274
  ***************************************************************************** */
275
275
  function __values(o) {
276
276
  var s = typeof Symbol === "function" && Symbol.iterator,
277
- m = s && o[s],
278
- i = 0;
277
+ m = s && o[s],
278
+ i = 0;
279
279
  if (m) return m.call(o);
280
280
  if (o && typeof o.length === "number") return {
281
281
  next: function () {
@@ -292,10 +292,9 @@ version: 4.10.3
292
292
  var m = typeof Symbol === "function" && o[Symbol.iterator];
293
293
  if (!m) return o;
294
294
  var i = m.call(o),
295
- r,
296
- ar = [],
297
- e;
298
-
295
+ r,
296
+ ar = [],
297
+ e;
299
298
  try {
300
299
  while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
301
300
  } catch (error) {
@@ -309,12 +308,10 @@ version: 4.10.3
309
308
  if (e) throw e.error;
310
309
  }
311
310
  }
312
-
313
311
  return ar;
314
312
  }
315
313
  function __spread() {
316
314
  for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
317
-
318
315
  return ar;
319
316
  }
320
317
 
@@ -326,14 +323,12 @@ version: 4.10.3
326
323
  return typeof value === "undefined";
327
324
  };
328
325
 
326
+ // This class name is not matched to file name intentionally
329
327
  /**
330
328
  * Event class to provide additional properties
331
329
  * @ko Component에서 추가적인 프로퍼티를 제공하는 이벤트 클래스
332
330
  */
333
-
334
- var ComponentEvent =
335
- /*#__PURE__*/
336
- function () {
331
+ var ComponentEvent = /*#__PURE__*/function () {
337
332
  /**
338
333
  * Create a new instance of ComponentEvent.
339
334
  * @ko ComponentEvent의 새로운 인스턴스를 생성한다.
@@ -342,14 +337,12 @@ version: 4.10.3
342
337
  */
343
338
  function ComponentEvent(eventType, props) {
344
339
  var e_1, _a;
345
-
346
340
  this._canceled = false;
347
-
348
341
  if (props) {
349
342
  try {
350
343
  for (var _b = __values(Object.keys(props)), _c = _b.next(); !_c.done; _c = _b.next()) {
351
- var key = _c.value; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
352
-
344
+ var key = _c.value;
345
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
353
346
  this[key] = props[key];
354
347
  }
355
348
  } catch (e_1_1) {
@@ -364,17 +357,13 @@ version: 4.10.3
364
357
  }
365
358
  }
366
359
  }
367
-
368
360
  this.eventType = eventType;
369
361
  }
370
362
  /**
371
363
  * Stop the event. {@link ComponentEvent#isCanceled} will return `true` after.
372
364
  * @ko 이벤트를 중단한다. 이후 {@link ComponentEvent#isCanceled}가 `true`를 반환한다.
373
365
  */
374
-
375
-
376
366
  var __proto = ComponentEvent.prototype;
377
-
378
367
  __proto.stop = function () {
379
368
  this._canceled = true;
380
369
  };
@@ -383,12 +372,9 @@ version: 4.10.3
383
372
  * @ko {@link ComponentEvent#stop}이 호출되었는지 여부를 반환한다.
384
373
  * @return {boolean} A boolean value that indicates whether {@link ComponentEvent#stop} is called before.<ko>이전에 {@link ComponentEvent#stop}이 불려졌는지 여부를 반환한다.</ko>
385
374
  */
386
-
387
-
388
375
  __proto.isCanceled = function () {
389
376
  return this._canceled;
390
377
  };
391
-
392
378
  return ComponentEvent;
393
379
  }();
394
380
 
@@ -396,10 +382,7 @@ version: 4.10.3
396
382
  * A class used to manage events in a component
397
383
  * @ko 컴포넌트의 이벤트을 관리할 수 있게 하는 클래스
398
384
  */
399
-
400
- var Component =
401
- /*#__PURE__*/
402
- function () {
385
+ var Component = /*#__PURE__*/function () {
403
386
  /**
404
387
  * @support {"ie": "7+", "ch" : "latest", "ff" : "latest", "sf" : "latest", "edge" : "latest", "ios" : "7+", "an" : "2.1+ (except 3.x)"}
405
388
  */
@@ -447,25 +430,17 @@ version: 4.10.3
447
430
  * // https://github.com/naver/egjs-component/wiki/How-to-make-Component-event-design%3F
448
431
  * ```
449
432
  */
450
-
451
-
452
433
  var __proto = Component.prototype;
453
-
454
434
  __proto.trigger = function (event) {
455
435
  var params = [];
456
-
457
436
  for (var _i = 1; _i < arguments.length; _i++) {
458
437
  params[_i - 1] = arguments[_i];
459
438
  }
460
-
461
439
  var eventName = event instanceof ComponentEvent ? event.eventType : event;
462
-
463
440
  var handlers = __spread(this._eventHandler[eventName] || []);
464
-
465
441
  if (handlers.length <= 0) {
466
442
  return this;
467
443
  }
468
-
469
444
  if (event instanceof ComponentEvent) {
470
445
  event.currentTarget = this;
471
446
  handlers.forEach(function (handler) {
@@ -477,7 +452,6 @@ version: 4.10.3
477
452
  handler.apply(void 0, __spread(params));
478
453
  });
479
454
  }
480
-
481
455
  return this;
482
456
  };
483
457
  /**
@@ -509,36 +483,26 @@ version: 4.10.3
509
483
  * // Nothing happens
510
484
  * ```
511
485
  */
512
-
513
-
514
486
  __proto.once = function (eventName, handlerToAttach) {
515
487
  var _this = this;
516
-
517
488
  if (typeof eventName === "object" && isUndefined(handlerToAttach)) {
518
489
  var eventHash = eventName;
519
-
520
490
  for (var key in eventHash) {
521
491
  this.once(key, eventHash[key]);
522
492
  }
523
-
524
493
  return this;
525
494
  } else if (typeof eventName === "string" && typeof handlerToAttach === "function") {
526
495
  var listener_1 = function () {
527
496
  var args = [];
528
-
529
497
  for (var _i = 0; _i < arguments.length; _i++) {
530
498
  args[_i] = arguments[_i];
531
- } // eslint-disable-next-line @typescript-eslint/no-unsafe-call
532
-
533
-
499
+ }
500
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
534
501
  handlerToAttach.apply(void 0, __spread(args));
535
-
536
502
  _this.off(eventName, listener_1);
537
503
  };
538
-
539
504
  this.on(eventName, listener_1);
540
505
  }
541
-
542
506
  return this;
543
507
  };
544
508
  /**
@@ -559,8 +523,6 @@ version: 4.10.3
559
523
  * }
560
524
  * ```
561
525
  */
562
-
563
-
564
526
  __proto.hasOn = function (eventName) {
565
527
  return !!this._eventHandler[eventName];
566
528
  };
@@ -586,28 +548,21 @@ version: 4.10.3
586
548
  * }
587
549
  * ```
588
550
  */
589
-
590
-
591
551
  __proto.on = function (eventName, handlerToAttach) {
592
552
  if (typeof eventName === "object" && isUndefined(handlerToAttach)) {
593
553
  var eventHash = eventName;
594
-
595
554
  for (var name in eventHash) {
596
555
  this.on(name, eventHash[name]);
597
556
  }
598
-
599
557
  return this;
600
558
  } else if (typeof eventName === "string" && typeof handlerToAttach === "function") {
601
559
  var handlerList = this._eventHandler[eventName];
602
-
603
560
  if (isUndefined(handlerList)) {
604
561
  this._eventHandler[eventName] = [];
605
562
  handlerList = this._eventHandler[eventName];
606
563
  }
607
-
608
564
  handlerList.push(handlerToAttach);
609
565
  }
610
-
611
566
  return this;
612
567
  };
613
568
  /**
@@ -632,53 +587,40 @@ version: 4.10.3
632
587
  * }
633
588
  * ```
634
589
  */
635
-
636
-
637
590
  __proto.off = function (eventName, handlerToDetach) {
638
- var e_1, _a; // Detach all event handlers.
639
-
640
-
591
+ var e_1, _a;
592
+ // Detach all event handlers.
641
593
  if (isUndefined(eventName)) {
642
594
  this._eventHandler = {};
643
595
  return this;
644
- } // Detach all handlers for eventname or detach event handlers by object.
645
-
646
-
596
+ }
597
+ // Detach all handlers for eventname or detach event handlers by object.
647
598
  if (isUndefined(handlerToDetach)) {
648
599
  if (typeof eventName === "string") {
649
600
  delete this._eventHandler[eventName];
650
601
  return this;
651
602
  } else {
652
603
  var eventHash = eventName;
653
-
654
604
  for (var name in eventHash) {
655
605
  this.off(name, eventHash[name]);
656
606
  }
657
-
658
607
  return this;
659
608
  }
660
- } // Detach single event handler
661
-
662
-
609
+ }
610
+ // Detach single event handler
663
611
  var handlerList = this._eventHandler[eventName];
664
-
665
612
  if (handlerList) {
666
613
  var idx = 0;
667
-
668
614
  try {
669
615
  for (var handlerList_1 = __values(handlerList), handlerList_1_1 = handlerList_1.next(); !handlerList_1_1.done; handlerList_1_1 = handlerList_1.next()) {
670
616
  var handlerFunction = handlerList_1_1.value;
671
-
672
617
  if (handlerFunction === handlerToDetach) {
673
618
  handlerList.splice(idx, 1);
674
-
675
619
  if (handlerList.length <= 0) {
676
620
  delete this._eventHandler[eventName];
677
621
  }
678
-
679
622
  break;
680
623
  }
681
-
682
624
  idx++;
683
625
  }
684
626
  } catch (e_1_1) {
@@ -693,7 +635,6 @@ version: 4.10.3
693
635
  }
694
636
  }
695
637
  }
696
-
697
638
  return this;
698
639
  };
699
640
  /**
@@ -705,9 +646,7 @@ version: 4.10.3
705
646
  * Component.VERSION; // ex) 3.0.0
706
647
  * @memberof Component
707
648
  */
708
-
709
-
710
- Component.VERSION = "3.0.2";
649
+ Component.VERSION = "3.0.3";
711
650
  return Component;
712
651
  }();
713
652
 
@@ -715,7 +654,7 @@ version: 4.10.3
715
654
  * Copyright (c) 2015 NAVER Corp.
716
655
  * egjs projects are licensed under the MIT license
717
656
  */
718
-
657
+ // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unsafe-assignment
719
658
  var ComponentEvent$1 = ComponentEvent;
720
659
 
721
660
  /*
@@ -1148,7 +1087,7 @@ version: 4.10.3
1148
1087
  if (pos < min) {
1149
1088
  var offset = (min - pos) % size;
1150
1089
  pos = max - offset;
1151
- } else if (pos > max) {
1090
+ } else if (pos >= max) {
1152
1091
  var offset = (pos - max) % size;
1153
1092
  pos = min + offset;
1154
1093
  }
@@ -2487,9 +2426,9 @@ version: 4.10.3
2487
2426
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2488
2427
  }
2489
2428
 
2490
- /*
2491
- * Copyright (c) 2015 NAVER Corp.
2492
- * egjs projects are licensed under the MIT license
2429
+ /*
2430
+ * Copyright (c) 2015 NAVER Corp.
2431
+ * egjs projects are licensed under the MIT license
2493
2432
  */
2494
2433
 
2495
2434
  /* eslint-disable no-new-func, no-nested-ternary */
@@ -2506,9 +2445,9 @@ version: 4.10.3
2506
2445
  win = window;
2507
2446
  }
2508
2447
 
2509
- /*
2510
- * Copyright (c) 2015 NAVER Corp.
2511
- * egjs projects are licensed under the MIT license
2448
+ /*
2449
+ * Copyright (c) 2015 NAVER Corp.
2450
+ * egjs projects are licensed under the MIT license
2512
2451
  */
2513
2452
  var DIRECTION_NONE = 1;
2514
2453
  var DIRECTION_LEFT = 2;
@@ -2521,6 +2460,12 @@ version: 4.10.3
2521
2460
  var MOUSE_LEFT = "left";
2522
2461
  var MOUSE_RIGHT = "right";
2523
2462
  var MOUSE_MIDDLE = "middle";
2463
+ var ANY = "any";
2464
+ var NONE = "none";
2465
+ var SHIFT = "shift";
2466
+ var CTRL = "ctrl";
2467
+ var ALT = "alt";
2468
+ var META = "meta";
2524
2469
  var VELOCITY_INTERVAL = 16;
2525
2470
  var IOS_EDGE_THRESHOLD = 30;
2526
2471
  var IS_IOS_SAFARI = "ontouchstart" in win && agent().browser.name === "safari";
@@ -2635,21 +2580,21 @@ version: 4.10.3
2635
2580
 
2636
2581
  caf = win.clearTimeout;
2637
2582
  }
2638
- /**
2639
- * A polyfill for the window.requestAnimationFrame() method.
2640
- * @see https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
2641
- * @private
2583
+ /**
2584
+ * A polyfill for the window.requestAnimationFrame() method.
2585
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
2586
+ * @private
2642
2587
  */
2643
2588
 
2644
2589
 
2645
2590
  var requestAnimationFrame = function (fp) {
2646
2591
  return raf(fp);
2647
2592
  };
2648
- /**
2649
- * A polyfill for the window.cancelAnimationFrame() method. It cancels an animation executed through a call to the requestAnimationFrame() method.
2650
- * @param {Number} key − The ID value returned through a call to the requestAnimationFrame() method. <ko>requestAnimationFrame() 메서드가 반환한 아이디 값</ko>
2651
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/cancelAnimationFrame
2652
- * @private
2593
+ /**
2594
+ * A polyfill for the window.cancelAnimationFrame() method. It cancels an animation executed through a call to the requestAnimationFrame() method.
2595
+ * @param {Number} key − The ID value returned through a call to the requestAnimationFrame() method. <ko>requestAnimationFrame() 메서드가 반환한 아이디 값</ko>
2596
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/cancelAnimationFrame
2597
+ * @private
2653
2598
  */
2654
2599
 
2655
2600
  var cancelAnimationFrame = function (key) {
@@ -2816,32 +2761,32 @@ version: 4.10.3
2816
2761
  function EventManager(_axes) {
2817
2762
  this._axes = _axes;
2818
2763
  }
2819
- /**
2820
- * This event is fired when a user holds an element on the screen of the device.
2821
- * @ko 사용자가 기기의 화면에 손을 대고 있을 때 발생하는 이벤트
2822
- * @event Axes#hold
2823
- * @type {object}
2824
- * @property {Object.<string, number>} pos coordinate <ko>좌표 정보</ko>
2825
- * @property {Object} input The instance of inputType where the event occurred<ko>이벤트가 발생한 inputType 인스턴스</ko>
2826
- * @property {Object} inputEvent The event object received from inputType <ko>inputType으로 부터 받은 이벤트 객체</ko>
2827
- * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>
2828
- *
2829
- * @example
2830
- * ```js
2831
- * const axes = new eg.Axes({
2832
- * "x": {
2833
- * range: [0, 100]
2834
- * },
2835
- * "zoom": {
2836
- * range: [50, 30]
2837
- * }
2838
- * }).on("hold", function(event) {
2839
- * // event.pos
2840
- * // event.input
2841
- * // event.inputEvent
2842
- * // isTrusted
2843
- * });
2844
- * ```
2764
+ /**
2765
+ * This event is fired when a user holds an element on the screen of the device.
2766
+ * @ko 사용자가 기기의 화면에 손을 대고 있을 때 발생하는 이벤트
2767
+ * @event Axes#hold
2768
+ * @type {object}
2769
+ * @property {Object.<string, number>} pos coordinate <ko>좌표 정보</ko>
2770
+ * @property {Object} input The instance of inputType where the event occurred<ko>이벤트가 발생한 inputType 인스턴스</ko>
2771
+ * @property {Object} inputEvent The event object received from inputType <ko>inputType으로 부터 받은 이벤트 객체</ko>
2772
+ * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>
2773
+ *
2774
+ * @example
2775
+ * ```js
2776
+ * const axes = new eg.Axes({
2777
+ * "x": {
2778
+ * range: [0, 100]
2779
+ * },
2780
+ * "zoom": {
2781
+ * range: [50, 30]
2782
+ * }
2783
+ * }).on("hold", function(event) {
2784
+ * // event.pos
2785
+ * // event.input
2786
+ * // event.inputEvent
2787
+ * // isTrusted
2788
+ * });
2789
+ * ```
2845
2790
  */
2846
2791
 
2847
2792
 
@@ -2857,80 +2802,80 @@ version: 4.10.3
2857
2802
  isTrusted: true
2858
2803
  }));
2859
2804
  };
2860
- /**
2861
- * Specifies the coordinates to move after the 'change' event. It works when the holding value of the change event is true.
2862
- * @ko 'change' 이벤트 이후 이동할 좌표를 지정한다. change이벤트의 holding 값이 true일 경우에 동작한다
2863
- * @param {Object.<string, number>} pos The coordinate to move to <ko>이동할 좌표</ko>
2864
- * @example
2865
- * ```js
2866
- * const axes = new eg.Axes({
2867
- * "x": {
2868
- * range: [0, 100]
2869
- * },
2870
- * "zoom": {
2871
- * range: [50, 30]
2872
- * }
2873
- * }).on("change", function(event) {
2874
- * event.holding && event.set({x: 10});
2875
- * });
2876
- * ```
2805
+ /**
2806
+ * Specifies the coordinates to move after the 'change' event. It works when the holding value of the change event is true.
2807
+ * @ko 'change' 이벤트 이후 이동할 좌표를 지정한다. change이벤트의 holding 값이 true일 경우에 동작한다
2808
+ * @param {Object.<string, number>} pos The coordinate to move to <ko>이동할 좌표</ko>
2809
+ * @example
2810
+ * ```js
2811
+ * const axes = new eg.Axes({
2812
+ * "x": {
2813
+ * range: [0, 100]
2814
+ * },
2815
+ * "zoom": {
2816
+ * range: [50, 30]
2817
+ * }
2818
+ * }).on("change", function(event) {
2819
+ * event.holding && event.set({x: 10});
2820
+ * });
2821
+ * ```
2877
2822
  */
2878
2823
 
2879
- /** Specifies the animation coordinates to move after the 'release' or 'animationStart' events.
2880
- * @ko 'release' 또는 'animationStart' 이벤트 이후 이동할 좌표를 지정한다.
2881
- * @param {Object.<string, number>} pos The coordinate to move to <ko>이동할 좌표</ko>
2882
- * @param {Number} [duration=0] Duration of the animation (unit: ms) <ko>애니메이션 진행 시간(단위: ms)</ko>
2883
- * @example
2884
- * ```js
2885
- * const axes = new eg.Axes({
2886
- * "x": {
2887
- * range: [0, 100]
2888
- * },
2889
- * "zoom": {
2890
- * range: [50, 30]
2891
- * }
2892
- * }).on("animationStart", function(event) {
2893
- * event.setTo({x: 10}, 2000);
2894
- * });
2895
- * ```
2824
+ /** Specifies the animation coordinates to move after the 'release' or 'animationStart' events.
2825
+ * @ko 'release' 또는 'animationStart' 이벤트 이후 이동할 좌표를 지정한다.
2826
+ * @param {Object.<string, number>} pos The coordinate to move to <ko>이동할 좌표</ko>
2827
+ * @param {Number} [duration=0] Duration of the animation (unit: ms) <ko>애니메이션 진행 시간(단위: ms)</ko>
2828
+ * @example
2829
+ * ```js
2830
+ * const axes = new eg.Axes({
2831
+ * "x": {
2832
+ * range: [0, 100]
2833
+ * },
2834
+ * "zoom": {
2835
+ * range: [50, 30]
2836
+ * }
2837
+ * }).on("animationStart", function(event) {
2838
+ * event.setTo({x: 10}, 2000);
2839
+ * });
2840
+ * ```
2896
2841
  */
2897
2842
 
2898
- /**
2899
- * This event is fired when a user release an element on the screen of the device.
2900
- * @ko 사용자가 기기의 화면에서 손을 뗐을 때 발생하는 이벤트
2901
- * @event Axes#release
2902
- * @type {object}
2903
- * @property {Object.<string, number>} depaPos The coordinates when releasing an element<ko>손을 뗐을 때의 좌표 </ko>
2904
- * @property {Object.<string, number>} destPos The coordinates to move to after releasing an element<ko>손을 뗀 뒤에 이동할 좌표</ko>
2905
- * @property {Object.<string, number>} delta The movement variation of coordinate <ko>좌표의 변화량</ko>
2906
- * @property {Object.<string, number>} bounceRatio If the coordinates at the time of release are in the bounce area, the current bounce value divided by the maximum bounce value <ko>손을 뗐을 때의 좌표가 bounce 영역에 있는 경우 현재 bounce된 값을 최대 bounce 값으로 나눈 수치.</ko>
2907
- * @property {Object} inputEvent The event object received from inputType <ko>inputType으로 부터 받은 이벤트 객체</ko>
2908
- * @property {Object} input The instance of inputType where the event occurred<ko>이벤트가 발생한 inputType 인스턴스</ko>
2909
- * @property {setTo} setTo Specifies the animation coordinates to move after the event <ko>이벤트 이후 이동할 애니메이션 좌표를 지정한다</ko>
2910
- * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>
2911
- *
2912
- * @example
2913
- * ```js
2914
- * const axes = new eg.Axes({
2915
- * "x": {
2916
- * range: [0, 100]
2917
- * },
2918
- * "zoom": {
2919
- * range: [50, 30]
2920
- * }
2921
- * }).on("release", function(event) {
2922
- * // event.depaPos
2923
- * // event.destPos
2924
- * // event.delta
2925
- * // event.input
2926
- * // event.inputEvent
2927
- * // event.setTo
2928
- * // event.isTrusted
2929
- *
2930
- * // if you want to change the animation coordinates to move after the 'release' event.
2931
- * event.setTo({x: 10}, 2000);
2932
- * });
2933
- * ```
2843
+ /**
2844
+ * This event is fired when a user release an element on the screen of the device.
2845
+ * @ko 사용자가 기기의 화면에서 손을 뗐을 때 발생하는 이벤트
2846
+ * @event Axes#release
2847
+ * @type {object}
2848
+ * @property {Object.<string, number>} depaPos The coordinates when releasing an element<ko>손을 뗐을 때의 좌표 </ko>
2849
+ * @property {Object.<string, number>} destPos The coordinates to move to after releasing an element<ko>손을 뗀 뒤에 이동할 좌표</ko>
2850
+ * @property {Object.<string, number>} delta The movement variation of coordinate <ko>좌표의 변화량</ko>
2851
+ * @property {Object.<string, number>} bounceRatio If the coordinates at the time of release are in the bounce area, the current bounce value divided by the maximum bounce value <ko>손을 뗐을 때의 좌표가 bounce 영역에 있는 경우 현재 bounce된 값을 최대 bounce 값으로 나눈 수치.</ko>
2852
+ * @property {Object} inputEvent The event object received from inputType <ko>inputType으로 부터 받은 이벤트 객체</ko>
2853
+ * @property {Object} input The instance of inputType where the event occurred<ko>이벤트가 발생한 inputType 인스턴스</ko>
2854
+ * @property {setTo} setTo Specifies the animation coordinates to move after the event <ko>이벤트 이후 이동할 애니메이션 좌표를 지정한다</ko>
2855
+ * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>
2856
+ *
2857
+ * @example
2858
+ * ```js
2859
+ * const axes = new eg.Axes({
2860
+ * "x": {
2861
+ * range: [0, 100]
2862
+ * },
2863
+ * "zoom": {
2864
+ * range: [50, 30]
2865
+ * }
2866
+ * }).on("release", function(event) {
2867
+ * // event.depaPos
2868
+ * // event.destPos
2869
+ * // event.delta
2870
+ * // event.input
2871
+ * // event.inputEvent
2872
+ * // event.setTo
2873
+ * // event.isTrusted
2874
+ *
2875
+ * // if you want to change the animation coordinates to move after the 'release' event.
2876
+ * event.setTo({x: 10}, 2000);
2877
+ * });
2878
+ * ```
2934
2879
  */
2935
2880
 
2936
2881
 
@@ -2947,43 +2892,43 @@ version: 4.10.3
2947
2892
  bounceRatio: this._getBounceRatio(roundPos)
2948
2893
  })));
2949
2894
  };
2950
- /**
2951
- * This event is fired when coordinate changes.
2952
- * @ko 좌표가 변경됐을 때 발생하는 이벤트
2953
- * @event Axes#change
2954
- * @type {object}
2955
- * @property {Object.<string, number>} pos The coordinate <ko>좌표</ko>
2956
- * @property {Object.<string, number>} delta The movement variation of coordinate <ko>좌표의 변화량</ko>
2957
- * @property {Object.<string, number>} bounceRatio If the current coordinates are in the bounce area, the current bounce value divided by the maximum bounce value <ko>현재 좌표가 bounce 영역에 있는 경우 현재 bounce된 값을 최대 bounce 값으로 나눈 수치.</ko>
2958
- * @property {Boolean} holding Indicates whether a user holds an element on the screen of the device.<ko>사용자가 기기의 화면을 누르고 있는지 여부</ko>
2959
- * @property {Object} input The instance of inputType where the event occurred. If the value is changed by animation, it returns 'null'.<ko>이벤트가 발생한 inputType 인스턴스. 애니메이션에 의해 값이 변경될 경우에는 'null'을 반환한다.</ko>
2960
- * @property {Object} inputEvent The event object received from inputType. If the value is changed by animation, it returns 'null'.<ko>inputType으로 부터 받은 이벤트 객체. 애니메이션에 의해 값이 변경될 경우에는 'null'을 반환한다.</ko>
2961
- * @property {set} set Specifies the coordinates to move after the event. It works when the holding value is true <ko>이벤트 이후 이동할 좌표를 지정한다. holding 값이 true일 경우에 동작한다.</ko>
2962
- * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>
2963
- *
2964
- * @example
2965
- * ```js
2966
- * const axes = new eg.Axes({
2967
- * "x": {
2968
- * range: [0, 100]
2969
- * },
2970
- * "zoom": {
2971
- * range: [50, 30]
2972
- * }
2973
- * }).on("change", function(event) {
2974
- * // event.pos
2975
- * // event.delta
2976
- * // event.input
2977
- * // event.inputEvent
2978
- * // event.holding
2979
- * // event.set
2980
- * // event.isTrusted
2981
- *
2982
- * // if you want to change the coordinates to move after the 'change' event.
2983
- * // it works when the holding value of the change event is true.
2984
- * event.holding && event.set({x: 10});
2985
- * });
2986
- * ```
2895
+ /**
2896
+ * This event is fired when coordinate changes.
2897
+ * @ko 좌표가 변경됐을 때 발생하는 이벤트
2898
+ * @event Axes#change
2899
+ * @type {object}
2900
+ * @property {Object.<string, number>} pos The coordinate <ko>좌표</ko>
2901
+ * @property {Object.<string, number>} delta The movement variation of coordinate <ko>좌표의 변화량</ko>
2902
+ * @property {Object.<string, number>} bounceRatio If the current coordinates are in the bounce area, the current bounce value divided by the maximum bounce value <ko>현재 좌표가 bounce 영역에 있는 경우 현재 bounce된 값을 최대 bounce 값으로 나눈 수치.</ko>
2903
+ * @property {Boolean} holding Indicates whether a user holds an element on the screen of the device.<ko>사용자가 기기의 화면을 누르고 있는지 여부</ko>
2904
+ * @property {Object} input The instance of inputType where the event occurred. If the value is changed by animation, it returns 'null'.<ko>이벤트가 발생한 inputType 인스턴스. 애니메이션에 의해 값이 변경될 경우에는 'null'을 반환한다.</ko>
2905
+ * @property {Object} inputEvent The event object received from inputType. If the value is changed by animation, it returns 'null'.<ko>inputType으로 부터 받은 이벤트 객체. 애니메이션에 의해 값이 변경될 경우에는 'null'을 반환한다.</ko>
2906
+ * @property {set} set Specifies the coordinates to move after the event. It works when the holding value is true <ko>이벤트 이후 이동할 좌표를 지정한다. holding 값이 true일 경우에 동작한다.</ko>
2907
+ * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>
2908
+ *
2909
+ * @example
2910
+ * ```js
2911
+ * const axes = new eg.Axes({
2912
+ * "x": {
2913
+ * range: [0, 100]
2914
+ * },
2915
+ * "zoom": {
2916
+ * range: [50, 30]
2917
+ * }
2918
+ * }).on("change", function(event) {
2919
+ * // event.pos
2920
+ * // event.delta
2921
+ * // event.input
2922
+ * // event.inputEvent
2923
+ * // event.holding
2924
+ * // event.set
2925
+ * // event.isTrusted
2926
+ *
2927
+ * // if you want to change the coordinates to move after the 'change' event.
2928
+ * // it works when the holding value of the change event is true.
2929
+ * event.holding && event.set({x: 10});
2930
+ * });
2931
+ * ```
2987
2932
  */
2988
2933
 
2989
2934
 
@@ -3030,42 +2975,42 @@ version: 4.10.3
3030
2975
 
3031
2976
  return !event.isCanceled();
3032
2977
  };
3033
- /**
3034
- * This event is fired when animation starts.
3035
- * @ko 에니메이션이 시작할 때 발생한다.
3036
- * @event Axes#animationStart
3037
- * @type {object}
3038
- * @property {Object.<string, number>} depaPos The coordinates when animation starts<ko>애니메이션이 시작 되었을 때의 좌표 </ko>
3039
- * @property {Object.<string, number>} destPos The coordinates to move to. If you change this value, you can run the animation<ko>이동할 좌표. 이값을 변경하여 애니메이션을 동작시킬수 있다</ko>
3040
- * @property {Object.<string, number>} delta The movement variation of coordinate <ko>좌표의 변화량</ko>
3041
- * @property {Number} duration Duration of the animation (unit: ms). If you change this value, you can control the animation duration time.<ko>애니메이션 진행 시간(단위: ms). 이값을 변경하여 애니메이션의 이동시간을 조절할 수 있다.</ko>
3042
- * @property {Object} input The instance of inputType where the event occurred. If the value is changed by animation, it returns 'null'.<ko>이벤트가 발생한 inputType 인스턴스. 애니메이션에 의해 값이 변경될 경우에는 'null'을 반환한다.</ko>
3043
- * @property {Object} inputEvent The event object received from inputType <ko>inputType으로 부터 받은 이벤트 객체</ko>
3044
- * @property {setTo} setTo Specifies the animation coordinates to move after the event <ko>이벤트 이후 이동할 애니메이션 좌표를 지정한다</ko>
3045
- * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>
3046
- *
3047
- * @example
3048
- * ```js
3049
- * const axes = new eg.Axes({
3050
- * "x": {
3051
- * range: [0, 100]
3052
- * },
3053
- * "zoom": {
3054
- * range: [50, 30]
3055
- * }
3056
- * }).on("release", function(event) {
3057
- * // event.depaPos
3058
- * // event.destPos
3059
- * // event.delta
3060
- * // event.input
3061
- * // event.inputEvent
3062
- * // event.setTo
3063
- * // event.isTrusted
3064
- *
3065
- * // if you want to change the animation coordinates to move after the 'animationStart' event.
3066
- * event.setTo({x: 10}, 2000);
3067
- * });
3068
- * ```
2978
+ /**
2979
+ * This event is fired when animation starts.
2980
+ * @ko 에니메이션이 시작할 때 발생한다.
2981
+ * @event Axes#animationStart
2982
+ * @type {object}
2983
+ * @property {Object.<string, number>} depaPos The coordinates when animation starts<ko>애니메이션이 시작 되었을 때의 좌표 </ko>
2984
+ * @property {Object.<string, number>} destPos The coordinates to move to. If you change this value, you can run the animation<ko>이동할 좌표. 이값을 변경하여 애니메이션을 동작시킬수 있다</ko>
2985
+ * @property {Object.<string, number>} delta The movement variation of coordinate <ko>좌표의 변화량</ko>
2986
+ * @property {Number} duration Duration of the animation (unit: ms). If you change this value, you can control the animation duration time.<ko>애니메이션 진행 시간(단위: ms). 이값을 변경하여 애니메이션의 이동시간을 조절할 수 있다.</ko>
2987
+ * @property {Object} input The instance of inputType where the event occurred. If the value is changed by animation, it returns 'null'.<ko>이벤트가 발생한 inputType 인스턴스. 애니메이션에 의해 값이 변경될 경우에는 'null'을 반환한다.</ko>
2988
+ * @property {Object} inputEvent The event object received from inputType <ko>inputType으로 부터 받은 이벤트 객체</ko>
2989
+ * @property {setTo} setTo Specifies the animation coordinates to move after the event <ko>이벤트 이후 이동할 애니메이션 좌표를 지정한다</ko>
2990
+ * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>
2991
+ *
2992
+ * @example
2993
+ * ```js
2994
+ * const axes = new eg.Axes({
2995
+ * "x": {
2996
+ * range: [0, 100]
2997
+ * },
2998
+ * "zoom": {
2999
+ * range: [50, 30]
3000
+ * }
3001
+ * }).on("release", function(event) {
3002
+ * // event.depaPos
3003
+ * // event.destPos
3004
+ * // event.delta
3005
+ * // event.input
3006
+ * // event.inputEvent
3007
+ * // event.setTo
3008
+ * // event.isTrusted
3009
+ *
3010
+ * // if you want to change the animation coordinates to move after the 'animationStart' event.
3011
+ * event.setTo({x: 10}, 2000);
3012
+ * });
3013
+ * ```
3069
3014
  */
3070
3015
 
3071
3016
 
@@ -3083,26 +3028,26 @@ version: 4.10.3
3083
3028
 
3084
3029
  return !event.isCanceled();
3085
3030
  };
3086
- /**
3087
- * This event is fired when animation ends.
3088
- * @ko 에니메이션이 끝났을 때 발생한다.
3089
- * @event Axes#animationEnd
3090
- * @type {object}
3091
- * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>
3092
- *
3093
- * @example
3094
- * ```js
3095
- * const axes = new eg.Axes({
3096
- * "x": {
3097
- * range: [0, 100]
3098
- * },
3099
- * "zoom": {
3100
- * range: [50, 30]
3101
- * }
3102
- * }).on("animationEnd", function(event) {
3103
- * // event.isTrusted
3104
- * });
3105
- * ```
3031
+ /**
3032
+ * This event is fired when animation ends.
3033
+ * @ko 에니메이션이 끝났을 때 발생한다.
3034
+ * @event Axes#animationEnd
3035
+ * @type {object}
3036
+ * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>
3037
+ *
3038
+ * @example
3039
+ * ```js
3040
+ * const axes = new eg.Axes({
3041
+ * "x": {
3042
+ * range: [0, 100]
3043
+ * },
3044
+ * "zoom": {
3045
+ * range: [50, 30]
3046
+ * }
3047
+ * }).on("animationEnd", function(event) {
3048
+ * // event.isTrusted
3049
+ * });
3050
+ * ```
3106
3051
  */
3107
3052
 
3108
3053
 
@@ -3115,26 +3060,26 @@ version: 4.10.3
3115
3060
  isTrusted: isTrusted
3116
3061
  }));
3117
3062
  };
3118
- /**
3119
- * This event is fired when all actions have been completed.
3120
- * @ko 에니메이션이 끝났을 때 발생한다.
3121
- * @event Axes#finish
3122
- * @type {object}
3123
- * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>
3124
- *
3125
- * @example
3126
- * ```js
3127
- * const axes = new eg.Axes({
3128
- * "x": {
3129
- * range: [0, 100]
3130
- * },
3131
- * "zoom": {
3132
- * range: [50, 30]
3133
- * }
3134
- * }).on("finish", function(event) {
3135
- * // event.isTrusted
3136
- * });
3137
- * ```
3063
+ /**
3064
+ * This event is fired when all actions have been completed.
3065
+ * @ko 에니메이션이 끝났을 때 발생한다.
3066
+ * @event Axes#finish
3067
+ * @type {object}
3068
+ * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>
3069
+ *
3070
+ * @example
3071
+ * ```js
3072
+ * const axes = new eg.Axes({
3073
+ * "x": {
3074
+ * range: [0, 100]
3075
+ * },
3076
+ * "zoom": {
3077
+ * range: [50, 30]
3078
+ * }
3079
+ * }).on("finish", function(event) {
3080
+ * // event.isTrusted
3081
+ * });
3082
+ * ```
3138
3083
  */
3139
3084
 
3140
3085
 
@@ -3234,9 +3179,9 @@ version: 4.10.3
3234
3179
  return InterruptManager;
3235
3180
  }();
3236
3181
 
3237
- /*
3238
- * Copyright (c) 2015 NAVER Corp.
3239
- * egjs projects are licensed under the MIT license
3182
+ /*
3183
+ * Copyright (c) 2015 NAVER Corp.
3184
+ * egjs projects are licensed under the MIT license
3240
3185
  */
3241
3186
  var getInsidePosition = function (destPos, range, circular, bounce) {
3242
3187
  var toDestPos = destPos;
@@ -3390,9 +3335,9 @@ version: 4.10.3
3390
3335
 
3391
3336
  this._complementOptions();
3392
3337
  };
3393
- /**
3394
- * set up 'css' expression
3395
- * @private
3338
+ /**
3339
+ * set up 'css' expression
3340
+ * @private
3396
3341
  */
3397
3342
 
3398
3343
 
@@ -3424,6 +3369,13 @@ version: 4.10.3
3424
3369
  var SUPPORT_POINTER = ("PointerEvent" in win);
3425
3370
  var SUPPORT_MSPOINTER = ("MSPointerEvent" in win);
3426
3371
  var SUPPORT_POINTER_EVENTS = SUPPORT_POINTER || SUPPORT_MSPOINTER;
3372
+ var isValidKey = function (event, inputKey) {
3373
+ if (!inputKey || inputKey.indexOf(ANY) > -1 || inputKey.indexOf(NONE) > -1 && !event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey || inputKey.indexOf(SHIFT) > -1 && event.shiftKey || inputKey.indexOf(CTRL) > -1 && event.ctrlKey || inputKey.indexOf(ALT) > -1 && event.altKey || inputKey.indexOf(META) > -1 && event.metaKey) {
3374
+ return true;
3375
+ }
3376
+
3377
+ return false;
3378
+ };
3427
3379
 
3428
3380
  var EventInput =
3429
3381
  /*#__PURE__*/
@@ -3506,13 +3458,17 @@ version: 4.10.3
3506
3458
  };
3507
3459
 
3508
3460
  __proto._isTouchEvent = function (event) {
3509
- return event.type.indexOf("touch") > -1;
3461
+ return event.type && event.type.indexOf("touch") > -1;
3510
3462
  };
3511
3463
 
3512
3464
  __proto._isValidButton = function (button, inputButton) {
3513
3465
  return inputButton.indexOf(button) > -1;
3514
3466
  };
3515
3467
 
3468
+ __proto._isValidEvent = function (event, inputKey, inputButton) {
3469
+ return (!inputKey || isValidKey(event, inputKey)) && (!inputButton || this._isValidButton(this._getButton(event), inputButton));
3470
+ };
3471
+
3516
3472
  __proto._preventMouseButton = function (event, button) {
3517
3473
  if (button === MOUSE_RIGHT) {
3518
3474
  win.addEventListener("contextmenu", this._stopContextMenu);
@@ -3540,10 +3496,10 @@ version: 4.10.3
3540
3496
 
3541
3497
  var __proto = MouseEventInput.prototype;
3542
3498
 
3543
- __proto.onEventStart = function (event, inputButton) {
3499
+ __proto.onEventStart = function (event, inputKey, inputButton) {
3544
3500
  var button = this._getButton(event);
3545
3501
 
3546
- if (inputButton && !this._isValidButton(button, inputButton)) {
3502
+ if (!this._isValidEvent(event, inputKey, inputButton)) {
3547
3503
  return null;
3548
3504
  }
3549
3505
 
@@ -3552,8 +3508,8 @@ version: 4.10.3
3552
3508
  return this.extendEvent(event);
3553
3509
  };
3554
3510
 
3555
- __proto.onEventMove = function (event, inputButton) {
3556
- if (inputButton && !this._isValidButton(this._getButton(event), inputButton)) {
3511
+ __proto.onEventMove = function (event, inputKey, inputButton) {
3512
+ if (!this._isValidEvent(event, inputKey, inputButton)) {
3557
3513
  return null;
3558
3514
  }
3559
3515
 
@@ -3620,12 +3576,21 @@ version: 4.10.3
3620
3576
 
3621
3577
  var __proto = TouchEventInput.prototype;
3622
3578
 
3623
- __proto.onEventStart = function (event) {
3579
+ __proto.onEventStart = function (event, inputKey) {
3624
3580
  this._baseTouches = event.touches;
3581
+
3582
+ if (!this._isValidEvent(event, inputKey)) {
3583
+ return null;
3584
+ }
3585
+
3625
3586
  return this.extendEvent(event);
3626
3587
  };
3627
3588
 
3628
- __proto.onEventMove = function (event) {
3589
+ __proto.onEventMove = function (event, inputKey) {
3590
+ if (!this._isValidEvent(event, inputKey)) {
3591
+ return null;
3592
+ }
3593
+
3629
3594
  return this.extendEvent(event);
3630
3595
  };
3631
3596
 
@@ -3697,10 +3662,10 @@ version: 4.10.3
3697
3662
 
3698
3663
  var __proto = PointerEventInput.prototype;
3699
3664
 
3700
- __proto.onEventStart = function (event, inputButton) {
3665
+ __proto.onEventStart = function (event, inputKey, inputButton) {
3701
3666
  var button = this._getButton(event);
3702
3667
 
3703
- if (inputButton && !this._isValidButton(button, inputButton)) {
3668
+ if (!this._isValidEvent(event, inputKey, inputButton)) {
3704
3669
  return null;
3705
3670
  }
3706
3671
 
@@ -3711,8 +3676,8 @@ version: 4.10.3
3711
3676
  return this.extendEvent(event);
3712
3677
  };
3713
3678
 
3714
- __proto.onEventMove = function (event, inputButton) {
3715
- if (inputButton && !this._isValidButton(this._getButton(event), inputButton)) {
3679
+ __proto.onEventMove = function (event, inputKey, inputButton) {
3680
+ if (!this._isValidEvent(event, inputKey, inputButton)) {
3716
3681
  return null;
3717
3682
  }
3718
3683
 
@@ -3814,14 +3779,14 @@ version: 4.10.3
3814
3779
 
3815
3780
  var __proto = TouchMouseEventInput.prototype;
3816
3781
 
3817
- __proto.onEventStart = function (event, inputButton) {
3782
+ __proto.onEventStart = function (event, inputKey, inputButton) {
3818
3783
  var button = this._getButton(event);
3819
3784
 
3820
3785
  if (this._isTouchEvent(event)) {
3821
3786
  this._baseTouches = event.touches;
3822
3787
  }
3823
3788
 
3824
- if (inputButton && !this._isValidButton(button, inputButton)) {
3789
+ if (!this._isValidEvent(event, inputKey, inputButton)) {
3825
3790
  return null;
3826
3791
  }
3827
3792
 
@@ -3830,8 +3795,8 @@ version: 4.10.3
3830
3795
  return this.extendEvent(event);
3831
3796
  };
3832
3797
 
3833
- __proto.onEventMove = function (event, inputButton) {
3834
- if (inputButton && !this._isValidButton(this._getButton(event), inputButton)) {
3798
+ __proto.onEventMove = function (event, inputKey, inputButton) {
3799
+ if (!this._isValidEvent(event, inputKey, inputButton)) {
3835
3800
  return null;
3836
3801
  }
3837
3802
 
@@ -4011,7 +3976,7 @@ version: 4.10.3
4011
3976
  this._moveDistance = this._axisManager.get(input.axes);
4012
3977
  };
4013
3978
 
4014
- __proto.change = function (input, event, offset, useAnimation) {
3979
+ __proto.change = function (input, event, offset, useAnimation, velocity) {
4015
3980
  if (this._isStopped || !this._interruptManager.isInterrupting() || this._axisManager.every(offset, function (v) {
4016
3981
  return v === 0;
4017
3982
  })) {
@@ -4024,8 +3989,7 @@ version: 4.10.3
4024
3989
  return;
4025
3990
  }
4026
3991
 
4027
- var depaPos = this._moveDistance || this._axisManager.get(input.axes);
4028
-
3992
+ var depaPos = !this._moveDistance || velocity ? this._axisManager.get(input.axes) : this._moveDistance;
4029
3993
  var destPos; // for outside logic
4030
3994
 
4031
3995
  destPos = map(depaPos, function (v, k) {
@@ -4060,9 +4024,7 @@ version: 4.10.3
4060
4024
  };
4061
4025
 
4062
4026
  if (useAnimation) {
4063
- var duration = this._animationManager.getDuration(destPos, depaPos);
4064
-
4065
- this._animationManager.animateTo(destPos, duration, changeOption);
4027
+ this._animationManager.changeTo(destPos, changeOption);
4066
4028
  } else {
4067
4029
  var isCanceled = !this._eventManager.triggerChange(destPos, depaPos, changeOption, true);
4068
4030
 
@@ -4071,6 +4033,15 @@ version: 4.10.3
4071
4033
  this._moveDistance = null;
4072
4034
 
4073
4035
  this._animationManager.finish(false);
4036
+ } else if (velocity) {
4037
+ var displacement = this._animationManager.getDisplacement(velocity);
4038
+
4039
+ var nextOffset_1 = toAxis(input.axes, displacement);
4040
+ destPos = this._atOutside(map(destPos, function (v, k) {
4041
+ return v + (nextOffset_1[k] || 0);
4042
+ }));
4043
+
4044
+ this._animationManager.changeTo(destPos, changeOption);
4074
4045
  }
4075
4046
  }
4076
4047
  };
@@ -4118,6 +4089,7 @@ version: 4.10.3
4118
4089
  destPos: destPos,
4119
4090
  duration: duration,
4120
4091
  delta: this._axisManager.getDelta(depaPos, destPos),
4092
+ triggerAnimationEvent: true,
4121
4093
  inputEvent: event,
4122
4094
  input: input,
4123
4095
  isTrusted: true
@@ -4256,14 +4228,11 @@ version: 4.10.3
4256
4228
  this.eventManager.triggerChange(pos, orgPos_1, option, !!option);
4257
4229
  }
4258
4230
 
4259
- this._animateParam = null;
4260
-
4261
- if (this._raf) {
4262
- cancelAnimationFrame(this._raf);
4231
+ if (this._animateParam.triggerAnimationEvent) {
4232
+ this.eventManager.triggerAnimationEnd(!!(option === null || option === void 0 ? void 0 : option.event));
4263
4233
  }
4264
4234
 
4265
- this._raf = null;
4266
- this.eventManager.triggerAnimationEnd(!!(option === null || option === void 0 ? void 0 : option.event));
4235
+ this._removeAnimationParam();
4267
4236
  }
4268
4237
  };
4269
4238
 
@@ -4324,6 +4293,30 @@ version: 4.10.3
4324
4293
  return userWish;
4325
4294
  };
4326
4295
 
4296
+ __proto.changeTo = function (destPos, option) {
4297
+ var _this = this;
4298
+
4299
+ var depaPos = this.axisManager.get(option.input.axes);
4300
+
4301
+ if (this._raf) {
4302
+ cancelAnimationFrame(this._raf);
4303
+ }
4304
+
4305
+ if (!equal(destPos, depaPos)) {
4306
+ var newParam = {
4307
+ depaPos: depaPos,
4308
+ destPos: destPos,
4309
+ duration: this.getDuration(destPos, depaPos),
4310
+ delta: this.axisManager.getDelta(depaPos, destPos),
4311
+ triggerAnimationEvent: false
4312
+ };
4313
+
4314
+ this._animateLoop(newParam, function () {
4315
+ return _this._removeAnimationParam();
4316
+ });
4317
+ }
4318
+ };
4319
+
4327
4320
  __proto.animateTo = function (destPos, duration, option) {
4328
4321
  var _this = this;
4329
4322
 
@@ -4351,6 +4344,7 @@ version: 4.10.3
4351
4344
  destPos: userWish.destPos,
4352
4345
  duration: userWish.duration,
4353
4346
  delta: this.axisManager.getDelta(depaPos, userWish.destPos),
4347
+ triggerAnimationEvent: true,
4354
4348
  isTrusted: !!inputEvent,
4355
4349
  inputEvent: inputEvent,
4356
4350
  input: (option === null || option === void 0 ? void 0 : option.input) || null
@@ -4426,6 +4420,7 @@ version: 4.10.3
4426
4420
  destPos: destPos,
4427
4421
  duration: clamp(duration, this._options.minimumDuration, this._options.maximumDuration),
4428
4422
  delta: this.axisManager.getDelta(depaPos, destPos),
4423
+ triggerAnimationEvent: true,
4429
4424
  inputEvent: inputEvent,
4430
4425
  input: (option === null || option === void 0 ? void 0 : option.input) || null,
4431
4426
  isTrusted: !!inputEvent,
@@ -4433,6 +4428,16 @@ version: 4.10.3
4433
4428
  };
4434
4429
  };
4435
4430
 
4431
+ __proto._removeAnimationParam = function () {
4432
+ this._animateParam = null;
4433
+
4434
+ if (this._raf) {
4435
+ cancelAnimationFrame(this._raf);
4436
+ }
4437
+
4438
+ this._raf = null;
4439
+ };
4440
+
4436
4441
  __proto._animateLoop = function (param, complete) {
4437
4442
  var _this = this;
4438
4443
 
@@ -4477,15 +4482,15 @@ version: 4.10.3
4477
4482
  complete();
4478
4483
  }
4479
4484
  };
4480
- /**
4481
- * Get estimated final value.
4482
- *
4483
- * If destPos is within the 'error range' of the original intended position, the initial intended position is returned.
4484
- * - eg. original intended pos: 100, destPos: 100.0000000004 ==> return 100;
4485
- * If dest Pos is outside the 'range of error' compared to the originally intended pos, it is returned rounded based on the originally intended pos.
4486
- * - eg. original intended pos: 100.123 destPos: 50.12345 => return 50.123
4487
- * @param originalIntendedPos
4488
- * @param destPos
4485
+ /**
4486
+ * Get estimated final value.
4487
+ *
4488
+ * If destPos is within the 'error range' of the original intended position, the initial intended position is returned.
4489
+ * - eg. original intended pos: 100, destPos: 100.0000000004 ==> return 100;
4490
+ * If dest Pos is outside the 'range of error' compared to the originally intended pos, it is returned rounded based on the originally intended pos.
4491
+ * - eg. original intended pos: 100.123 destPos: 50.12345 => return 50.123
4492
+ * @param originalIntendedPos
4493
+ * @param destPos
4489
4494
  */
4490
4495
 
4491
4496
 
@@ -4642,116 +4647,116 @@ version: 4.10.3
4642
4647
  return EasingManager;
4643
4648
  }(AnimationManager);
4644
4649
 
4645
- /**
4646
- * @typedef {Object} AxisOption The Axis information. The key of the axis specifies the name to use as the logical virtual coordinate system.
4647
- * @ko 축 정보. 축의 키는 논리적인 가상 좌표계로 사용할 이름을 지정한다.
4648
- * @param {Number[]} [range] The range of coordinate <ko>좌표 범위</ko>
4649
- * @param {Number} [range[0]=0] The coordinate of the minimum <ko>최소 좌표</ko>
4650
- * @param {Number} [range[1]=0] The coordinate of the maximum <ko>최대 좌표</ko>
4651
- * @param {Number} [startPos=range[0]] The coordinates to be moved when creating an instance <ko>인스턴스 생성시 이동할 좌표</ko>
4652
- * @param {Number[]} [bounce] The size of bouncing area. The coordinates can exceed the coordinate area as much as the bouncing area based on user action. If the coordinates does not exceed the bouncing area when an element is dragged, the coordinates where bouncing effects are applied are retuned back into the coordinate area<ko>바운스 영역의 크기. 사용자의 동작에 따라 좌표가 좌표 영역을 넘어 바운스 영역의 크기만큼 더 이동할 수 있다. 사용자가 끌어다 놓는 동작을 했을 때 좌표가 바운스 영역에 있으면, 바운스 효과가 적용된 좌표가 다시 좌표 영역 안으로 들어온다</ko>
4653
- * @param {Number} [bounce[0]=0] The size of coordinate of the minimum area <ko>최소 좌표 바운스 영역의 크기</ko>
4654
- * @param {Number} [bounce[1]=0] The size of coordinate of the maximum area <ko>최대 좌표 바운스 영역의 크기</ko>
4655
- * @param {Boolean[]} [circular] Indicates whether a circular element is available. If it is set to "true" and an element is dragged outside the coordinate area, the element will appear on the other side.<ko>순환 여부. 'true'로 설정한 방향의 좌표 영역 밖으로 엘리먼트가 이동하면 반대 방향에서 엘리먼트가 나타난다</ko>
4656
- * @param {Boolean} [circular[0]=false] Indicates whether to circulate to the coordinate of the minimum <ko>최소 좌표 방향의 순환 여부</ko>
4657
- * @param {Boolean} [circular[1]=false] Indicates whether to circulate to the coordinate of the maximum <ko>최대 좌표 방향의 순환 여부</ko>
4650
+ /**
4651
+ * @typedef {Object} AxisOption The Axis information. The key of the axis specifies the name to use as the logical virtual coordinate system.
4652
+ * @ko 축 정보. 축의 키는 논리적인 가상 좌표계로 사용할 이름을 지정한다.
4653
+ * @param {Number[]} [range] The range of coordinate <ko>좌표 범위</ko>
4654
+ * @param {Number} [range[0]=0] The coordinate of the minimum <ko>최소 좌표</ko>
4655
+ * @param {Number} [range[1]=0] The coordinate of the maximum <ko>최대 좌표</ko>
4656
+ * @param {Number} [startPos=range[0]] The coordinates to be moved when creating an instance <ko>인스턴스 생성시 이동할 좌표</ko>
4657
+ * @param {Number[]} [bounce] The size of bouncing area. The coordinates can exceed the coordinate area as much as the bouncing area based on user action. If the coordinates does not exceed the bouncing area when an element is dragged, the coordinates where bouncing effects are applied are retuned back into the coordinate area<ko>바운스 영역의 크기. 사용자의 동작에 따라 좌표가 좌표 영역을 넘어 바운스 영역의 크기만큼 더 이동할 수 있다. 사용자가 끌어다 놓는 동작을 했을 때 좌표가 바운스 영역에 있으면, 바운스 효과가 적용된 좌표가 다시 좌표 영역 안으로 들어온다</ko>
4658
+ * @param {Number} [bounce[0]=0] The size of coordinate of the minimum area <ko>최소 좌표 바운스 영역의 크기</ko>
4659
+ * @param {Number} [bounce[1]=0] The size of coordinate of the maximum area <ko>최대 좌표 바운스 영역의 크기</ko>
4660
+ * @param {Boolean[]} [circular] Indicates whether a circular element is available. If it is set to "true" and an element is dragged outside the coordinate area, the element will appear on the other side.<ko>순환 여부. 'true'로 설정한 방향의 좌표 영역 밖으로 엘리먼트가 이동하면 반대 방향에서 엘리먼트가 나타난다</ko>
4661
+ * @param {Boolean} [circular[0]=false] Indicates whether to circulate to the coordinate of the minimum <ko>최소 좌표 방향의 순환 여부</ko>
4662
+ * @param {Boolean} [circular[1]=false] Indicates whether to circulate to the coordinate of the maximum <ko>최대 좌표 방향의 순환 여부</ko>
4658
4663
  **/
4659
4664
 
4660
- /**
4661
- * @typedef {Object} AxesOption The option object of the eg.Axes module
4662
- * @ko eg.Axes 모듈의 옵션 객체
4663
- * @param {Function} [easing=easing.easeOutCubic] The easing function to apply to an animation <ko>애니메이션에 적용할 easing 함수</ko>
4664
- * @param {Number} [maximumDuration=Infinity] Maximum duration of the animation <ko>가속도에 의해 애니메이션이 동작할 때의 최대 좌표 이동 시간</ko>
4665
- * @param {Number} [minimumDuration=0] Minimum duration of the animation <ko>가속도에 의해 애니메이션이 동작할 때의 최소 좌표 이동 시간</ko>
4666
- * @param {Number} [deceleration=0.0006] Deceleration of the animation where acceleration is manually enabled by user. A higher value indicates shorter running time. <ko>사용자의 동작으로 가속도가 적용된 애니메이션의 감속도. 값이 높을수록 애니메이션 실행 시간이 짧아진다</ko>
4667
- * @param {Boolean} [interruptable=true] Indicates whether an animation is interruptible.
4668
- * - true: It can be paused or stopped by user action or the API.
4669
- * - false: It cannot be paused or stopped by user action or the API while it is running.
4670
- * <ko>진행 중인 애니메이션 중지 가능 여부.
4671
- * - true: 사용자의 동작이나 API로 애니메이션을 중지할 수 있다.
4672
- * - false: 애니메이션이 진행 중일 때는 사용자의 동작이나 API가 적용되지 않는다</ko>
4673
- * @param {Number} [round=null] Rounding unit. For example, 0.1 rounds to 0.1 decimal point(6.1234 => 6.1), 5 rounds to 5 (93 => 95)
4674
- * [Details](https://github.com/naver/egjs-axes/wiki/round-option)<ko>반올림 단위. 예를 들어 0.1 은 소숫점 0.1 까지 반올림(6.1234 => 6.1), 5 는 5 단위로 반올림(93 => 95).
4675
- * [상세내용](https://github.com/naver/egjs-axes/wiki/round-option)</ko>
4676
- * @param {Boolean} [nested=false] Whether the event propagates to other instances when the coordinates reach the end of the movable area <ko>좌표가 이동 가능한 영역의 끝까지 도달했을 때 다른 인스턴스들로의 이벤트 전파 여부</ko>
4665
+ /**
4666
+ * @typedef {Object} AxesOption The option object of the eg.Axes module
4667
+ * @ko eg.Axes 모듈의 옵션 객체
4668
+ * @param {Function} [easing=easing.easeOutCubic] The easing function to apply to an animation <ko>애니메이션에 적용할 easing 함수</ko>
4669
+ * @param {Number} [maximumDuration=Infinity] Maximum duration of the animation <ko>가속도에 의해 애니메이션이 동작할 때의 최대 좌표 이동 시간</ko>
4670
+ * @param {Number} [minimumDuration=0] Minimum duration of the animation <ko>가속도에 의해 애니메이션이 동작할 때의 최소 좌표 이동 시간</ko>
4671
+ * @param {Number} [deceleration=0.0006] Deceleration of the animation where acceleration is manually enabled by user. A higher value indicates shorter running time. <ko>사용자의 동작으로 가속도가 적용된 애니메이션의 감속도. 값이 높을수록 애니메이션 실행 시간이 짧아진다</ko>
4672
+ * @param {Boolean} [interruptable=true] Indicates whether an animation is interruptible.
4673
+ * - true: It can be paused or stopped by user action or the API.
4674
+ * - false: It cannot be paused or stopped by user action or the API while it is running.
4675
+ * <ko>진행 중인 애니메이션 중지 가능 여부.
4676
+ * - true: 사용자의 동작이나 API로 애니메이션을 중지할 수 있다.
4677
+ * - false: 애니메이션이 진행 중일 때는 사용자의 동작이나 API가 적용되지 않는다</ko>
4678
+ * @param {Number} [round=null] Rounding unit. For example, 0.1 rounds to 0.1 decimal point(6.1234 => 6.1), 5 rounds to 5 (93 => 95)
4679
+ * [Details](https://github.com/naver/egjs-axes/wiki/round-option)<ko>반올림 단위. 예를 들어 0.1 은 소숫점 0.1 까지 반올림(6.1234 => 6.1), 5 는 5 단위로 반올림(93 => 95).
4680
+ * [상세내용](https://github.com/naver/egjs-axes/wiki/round-option)</ko>
4681
+ * @param {Boolean} [nested=false] Whether the event propagates to other instances when the coordinates reach the end of the movable area <ko>좌표가 이동 가능한 영역의 끝까지 도달했을 때 다른 인스턴스들로의 이벤트 전파 여부</ko>
4677
4682
  **/
4678
4683
 
4679
- /**
4680
- * A module used to change the information of user action entered by various input devices such as touch screen or mouse into the logical virtual coordinates. You can easily create a UI that responds to user actions.
4681
- * @ko 터치 입력 장치나 마우스와 같은 다양한 입력 장치를 통해 전달 받은 사용자의 동작을 논리적인 가상 좌표로 변경하는 모듈이다. 사용자 동작에 반응하는 UI를 손쉽게 만들수 있다.
4682
- * @extends eg.Component
4683
- *
4684
- * @param {Object.<string, AxisOption>} axis Axis information managed by eg.Axes. The key of the axis specifies the name to use as the logical virtual coordinate system. <ko>eg.Axes가 관리하는 축 정보. 축의 키는 논리적인 가상 좌표계로 사용할 이름을 지정한다.</ko>
4685
- * @param {AxesOption} [options={}] The option object of the eg.Axes module<ko>eg.Axes 모듈의 옵션 객체</ko>
4686
- * @param {Object.<string, number>} [startPos={}] The coordinates to be moved when creating an instance. It is applied with higher priority than startPos of axisOption.<ko>인스턴스 생성시 이동할 좌표, axisOption의 startPos보다 높은 우선순위로 적용된다.</ko>
4687
- *
4688
- * @support {"ie": "10+", "ch" : "latest", "ff" : "latest", "sf" : "latest", "edge" : "latest", "ios" : "7+", "an" : "2.3+ (except 3.x)"}
4689
- * @example
4690
- * ```js
4691
- * // 1. Initialize eg.Axes
4692
- * const axes = new eg.Axes({
4693
- * something1: {
4694
- * range: [0, 150],
4695
- * bounce: 50
4696
- * },
4697
- * something2: {
4698
- * range: [0, 200],
4699
- * bounce: 100
4700
- * },
4701
- * somethingN: {
4702
- * range: [1, 10],
4703
- * }
4704
- * }, {
4705
- * deceleration : 0.0024
4706
- * });
4707
- *
4708
- * // 2. attach event handler
4709
- * axes.on({
4710
- * "hold" : function(evt) {
4711
- * },
4712
- * "release" : function(evt) {
4713
- * },
4714
- * "animationStart" : function(evt) {
4715
- * },
4716
- * "animationEnd" : function(evt) {
4717
- * },
4718
- * "change" : function(evt) {
4719
- * }
4720
- * });
4721
- *
4722
- * // 3. Initialize inputTypes
4723
- * const panInputArea = new eg.Axes.PanInput("#area", {
4724
- * scale: [0.5, 1]
4725
- * });
4726
- * const panInputHmove = new eg.Axes.PanInput("#hmove");
4727
- * const panInputVmove = new eg.Axes.PanInput("#vmove");
4728
- * const pinchInputArea = new eg.Axes.PinchInput("#area", {
4729
- * scale: 1.5
4730
- * });
4731
- *
4732
- * // 4. Connect eg.Axes and InputTypes
4733
- * // [PanInput] When the mouse or touchscreen is down and moved.
4734
- * // Connect the 'something2' axis to the mouse or touchscreen x position and
4735
- * // connect the 'somethingN' axis to the mouse or touchscreen y position.
4736
- * axes.connect(["something2", "somethingN"], panInputArea); // or axes.connect("something2 somethingN", panInputArea);
4737
- *
4738
- * // Connect only one 'something1' axis to the mouse or touchscreen x position.
4739
- * axes.connect(["something1"], panInputHmove); // or axes.connect("something1", panInputHmove);
4740
- *
4741
- * // Connect only one 'something2' axis to the mouse or touchscreen y position.
4742
- * axes.connect(["", "something2"], panInputVmove); // or axes.connect(" something2", panInputVmove);
4743
- *
4744
- * // [PinchInput] Connect 'something2' axis when two pointers are moving toward (zoom-in) or away from each other (zoom-out).
4745
- * axes.connect("something2", pinchInputArea);
4746
- * ```
4684
+ /**
4685
+ * A module used to change the information of user action entered by various input devices such as touch screen or mouse into the logical virtual coordinates. You can easily create a UI that responds to user actions.
4686
+ * @ko 터치 입력 장치나 마우스와 같은 다양한 입력 장치를 통해 전달 받은 사용자의 동작을 논리적인 가상 좌표로 변경하는 모듈이다. 사용자 동작에 반응하는 UI를 손쉽게 만들수 있다.
4687
+ * @extends eg.Component
4688
+ *
4689
+ * @param {Object.<string, AxisOption>} axis Axis information managed by eg.Axes. The key of the axis specifies the name to use as the logical virtual coordinate system. <ko>eg.Axes가 관리하는 축 정보. 축의 키는 논리적인 가상 좌표계로 사용할 이름을 지정한다.</ko>
4690
+ * @param {AxesOption} [options={}] The option object of the eg.Axes module<ko>eg.Axes 모듈의 옵션 객체</ko>
4691
+ * @param {Object.<string, number>} [startPos={}] The coordinates to be moved when creating an instance. It is applied with higher priority than startPos of axisOption.<ko>인스턴스 생성시 이동할 좌표, axisOption의 startPos보다 높은 우선순위로 적용된다.</ko>
4692
+ *
4693
+ * @support {"ie": "10+", "ch" : "latest", "ff" : "latest", "sf" : "latest", "edge" : "latest", "ios" : "7+", "an" : "2.3+ (except 3.x)"}
4694
+ * @example
4695
+ * ```js
4696
+ * // 1. Initialize eg.Axes
4697
+ * const axes = new eg.Axes({
4698
+ * something1: {
4699
+ * range: [0, 150],
4700
+ * bounce: 50
4701
+ * },
4702
+ * something2: {
4703
+ * range: [0, 200],
4704
+ * bounce: 100
4705
+ * },
4706
+ * somethingN: {
4707
+ * range: [1, 10],
4708
+ * }
4709
+ * }, {
4710
+ * deceleration : 0.0024
4711
+ * });
4712
+ *
4713
+ * // 2. attach event handler
4714
+ * axes.on({
4715
+ * "hold" : function(evt) {
4716
+ * },
4717
+ * "release" : function(evt) {
4718
+ * },
4719
+ * "animationStart" : function(evt) {
4720
+ * },
4721
+ * "animationEnd" : function(evt) {
4722
+ * },
4723
+ * "change" : function(evt) {
4724
+ * }
4725
+ * });
4726
+ *
4727
+ * // 3. Initialize inputTypes
4728
+ * const panInputArea = new eg.Axes.PanInput("#area", {
4729
+ * scale: [0.5, 1]
4730
+ * });
4731
+ * const panInputHmove = new eg.Axes.PanInput("#hmove");
4732
+ * const panInputVmove = new eg.Axes.PanInput("#vmove");
4733
+ * const pinchInputArea = new eg.Axes.PinchInput("#area", {
4734
+ * scale: 1.5
4735
+ * });
4736
+ *
4737
+ * // 4. Connect eg.Axes and InputTypes
4738
+ * // [PanInput] When the mouse or touchscreen is down and moved.
4739
+ * // Connect the 'something2' axis to the mouse or touchscreen x position and
4740
+ * // connect the 'somethingN' axis to the mouse or touchscreen y position.
4741
+ * axes.connect(["something2", "somethingN"], panInputArea); // or axes.connect("something2 somethingN", panInputArea);
4742
+ *
4743
+ * // Connect only one 'something1' axis to the mouse or touchscreen x position.
4744
+ * axes.connect(["something1"], panInputHmove); // or axes.connect("something1", panInputHmove);
4745
+ *
4746
+ * // Connect only one 'something2' axis to the mouse or touchscreen y position.
4747
+ * axes.connect(["", "something2"], panInputVmove); // or axes.connect(" something2", panInputVmove);
4748
+ *
4749
+ * // [PinchInput] Connect 'something2' axis when two pointers are moving toward (zoom-in) or away from each other (zoom-out).
4750
+ * axes.connect("something2", pinchInputArea);
4751
+ * ```
4747
4752
  */
4748
4753
 
4749
4754
  var Axes =
4750
4755
  /*#__PURE__*/
4751
4756
  function (_super) {
4752
4757
  __extends$1(Axes, _super);
4753
- /**
4754
- *
4758
+ /**
4759
+ *
4755
4760
  */
4756
4761
 
4757
4762
 
@@ -4798,30 +4803,30 @@ version: 4.10.3
4798
4803
 
4799
4804
  return _this;
4800
4805
  }
4801
- /**
4802
- * Connect the axis of eg.Axes to the inputType.
4803
- * @ko eg.Axes의 축과 inputType을 연결한다
4804
- * @param {(String[]|String)} axes The name of the axis to associate with inputType <ko>inputType과 연결할 축의 이름</ko>
4805
- * @param {Object} inputType The inputType instance to associate with the axis of eg.Axes <ko>eg.Axes의 축과 연결할 inputType 인스턴스</ko>
4806
- * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
4807
- * @example
4808
- * ```js
4809
- * const axes = new eg.Axes({
4810
- * "x": {
4811
- * range: [0, 100]
4812
- * },
4813
- * "xOther": {
4814
- * range: [-100, 100]
4815
- * }
4816
- * });
4817
- *
4818
- * axes.connect("x", new eg.Axes.PanInput("#area1"))
4819
- * .connect("x xOther", new eg.Axes.PanInput("#area2"))
4820
- * .connect(" xOther", new eg.Axes.PanInput("#area3"))
4821
- * .connect(["x"], new eg.Axes.PanInput("#area4"))
4822
- * .connect(["xOther", "x"], new eg.Axes.PanInput("#area5"))
4823
- * .connect(["", "xOther"], new eg.Axes.PanInput("#area6"));
4824
- * ```
4806
+ /**
4807
+ * Connect the axis of eg.Axes to the inputType.
4808
+ * @ko eg.Axes의 축과 inputType을 연결한다
4809
+ * @param {(String[]|String)} axes The name of the axis to associate with inputType <ko>inputType과 연결할 축의 이름</ko>
4810
+ * @param {Object} inputType The inputType instance to associate with the axis of eg.Axes <ko>eg.Axes의 축과 연결할 inputType 인스턴스</ko>
4811
+ * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
4812
+ * @example
4813
+ * ```js
4814
+ * const axes = new eg.Axes({
4815
+ * "x": {
4816
+ * range: [0, 100]
4817
+ * },
4818
+ * "xOther": {
4819
+ * range: [-100, 100]
4820
+ * }
4821
+ * });
4822
+ *
4823
+ * axes.connect("x", new eg.Axes.PanInput("#area1"))
4824
+ * .connect("x xOther", new eg.Axes.PanInput("#area2"))
4825
+ * .connect(" xOther", new eg.Axes.PanInput("#area3"))
4826
+ * .connect(["x"], new eg.Axes.PanInput("#area4"))
4827
+ * .connect(["xOther", "x"], new eg.Axes.PanInput("#area5"))
4828
+ * .connect(["", "xOther"], new eg.Axes.PanInput("#area6"));
4829
+ * ```
4825
4830
  */
4826
4831
 
4827
4832
 
@@ -4848,33 +4853,33 @@ version: 4.10.3
4848
4853
 
4849
4854
  return this;
4850
4855
  };
4851
- /**
4852
- * Disconnect the axis of eg.Axes from the inputType.
4853
- * @ko eg.Axes의 축과 inputType의 연결을 끊는다.
4854
- * @param {Object} [inputType] An inputType instance associated with the axis of eg.Axes <ko>eg.Axes의 축과 연결한 inputType 인스턴스</ko>
4855
- * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
4856
- * @example
4857
- * ```js
4858
- * const axes = new eg.Axes({
4859
- * "x": {
4860
- * range: [0, 100]
4861
- * },
4862
- * "xOther": {
4863
- * range: [-100, 100]
4864
- * }
4865
- * });
4866
- *
4867
- * const input1 = new eg.Axes.PanInput("#area1");
4868
- * const input2 = new eg.Axes.PanInput("#area2");
4869
- * const input3 = new eg.Axes.PanInput("#area3");
4870
- *
4871
- * axes.connect("x", input1);
4872
- * .connect("x xOther", input2)
4873
- * .connect(["xOther", "x"], input3);
4874
- *
4875
- * axes.disconnect(input1); // disconnects input1
4876
- * axes.disconnect(); // disconnects all of them
4877
- * ```
4856
+ /**
4857
+ * Disconnect the axis of eg.Axes from the inputType.
4858
+ * @ko eg.Axes의 축과 inputType의 연결을 끊는다.
4859
+ * @param {Object} [inputType] An inputType instance associated with the axis of eg.Axes <ko>eg.Axes의 축과 연결한 inputType 인스턴스</ko>
4860
+ * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
4861
+ * @example
4862
+ * ```js
4863
+ * const axes = new eg.Axes({
4864
+ * "x": {
4865
+ * range: [0, 100]
4866
+ * },
4867
+ * "xOther": {
4868
+ * range: [-100, 100]
4869
+ * }
4870
+ * });
4871
+ *
4872
+ * const input1 = new eg.Axes.PanInput("#area1");
4873
+ * const input2 = new eg.Axes.PanInput("#area2");
4874
+ * const input3 = new eg.Axes.PanInput("#area3");
4875
+ *
4876
+ * axes.connect("x", input1);
4877
+ * .connect("x xOther", input2)
4878
+ * .connect(["xOther", "x"], input3);
4879
+ *
4880
+ * axes.disconnect(input1); // disconnects input1
4881
+ * axes.disconnect(); // disconnects all of them
4882
+ * ```
4878
4883
  */
4879
4884
 
4880
4885
 
@@ -4897,62 +4902,62 @@ version: 4.10.3
4897
4902
 
4898
4903
  return this;
4899
4904
  };
4900
- /**
4901
- * Returns the current position of the coordinates.
4902
- * @ko 좌표의 현재 위치를 반환한다
4903
- * @param {Object} [axes] The names of the axis <ko>축 이름들</ko>
4904
- * @return {Object.<string, number>} Axis coordinate information <ko>축 좌표 정보</ko>
4905
- * @example
4906
- * ```js
4907
- * const axes = new eg.Axes({
4908
- * "x": {
4909
- * range: [0, 100]
4910
- * },
4911
- * "xOther": {
4912
- * range: [-100, 100]
4913
- * },
4914
- * "zoom": {
4915
- * range: [50, 30]
4916
- * }
4917
- * });
4918
- *
4919
- * axes.get(); // {"x": 0, "xOther": -100, "zoom": 50}
4920
- * axes.get(["x", "zoom"]); // {"x": 0, "zoom": 50}
4921
- * ```
4905
+ /**
4906
+ * Returns the current position of the coordinates.
4907
+ * @ko 좌표의 현재 위치를 반환한다
4908
+ * @param {Object} [axes] The names of the axis <ko>축 이름들</ko>
4909
+ * @return {Object.<string, number>} Axis coordinate information <ko>축 좌표 정보</ko>
4910
+ * @example
4911
+ * ```js
4912
+ * const axes = new eg.Axes({
4913
+ * "x": {
4914
+ * range: [0, 100]
4915
+ * },
4916
+ * "xOther": {
4917
+ * range: [-100, 100]
4918
+ * },
4919
+ * "zoom": {
4920
+ * range: [50, 30]
4921
+ * }
4922
+ * });
4923
+ *
4924
+ * axes.get(); // {"x": 0, "xOther": -100, "zoom": 50}
4925
+ * axes.get(["x", "zoom"]); // {"x": 0, "zoom": 50}
4926
+ * ```
4922
4927
  */
4923
4928
 
4924
4929
 
4925
4930
  __proto.get = function (axes) {
4926
4931
  return this.axisManager.get(axes);
4927
4932
  };
4928
- /**
4929
- * Moves an axis to specific coordinates.
4930
- * @ko 좌표를 이동한다.
4931
- * @param {Object.<string, number>} pos The coordinate to move to <ko>이동할 좌표</ko>
4932
- * @param {Number} [duration=0] Duration of the animation (unit: ms) <ko>애니메이션 진행 시간(단위: ms)</ko>
4933
- * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
4934
- * @example
4935
- * ```js
4936
- * const axes = new eg.Axes({
4937
- * "x": {
4938
- * range: [0, 100]
4939
- * },
4940
- * "xOther": {
4941
- * range: [-100, 100]
4942
- * },
4943
- * "zoom": {
4944
- * range: [50, 30]
4945
- * }
4946
- * });
4947
- *
4948
- * axes.setTo({"x": 30, "zoom": 60});
4949
- * axes.get(); // {"x": 30, "xOther": -100, "zoom": 60}
4950
- *
4951
- * axes.setTo({"x": 100, "xOther": 60}, 1000); // animatation
4952
- *
4953
- * // after 1000 ms
4954
- * axes.get(); // {"x": 100, "xOther": 60, "zoom": 60}
4955
- * ```
4933
+ /**
4934
+ * Moves an axis to specific coordinates.
4935
+ * @ko 좌표를 이동한다.
4936
+ * @param {Object.<string, number>} pos The coordinate to move to <ko>이동할 좌표</ko>
4937
+ * @param {Number} [duration=0] Duration of the animation (unit: ms) <ko>애니메이션 진행 시간(단위: ms)</ko>
4938
+ * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
4939
+ * @example
4940
+ * ```js
4941
+ * const axes = new eg.Axes({
4942
+ * "x": {
4943
+ * range: [0, 100]
4944
+ * },
4945
+ * "xOther": {
4946
+ * range: [-100, 100]
4947
+ * },
4948
+ * "zoom": {
4949
+ * range: [50, 30]
4950
+ * }
4951
+ * });
4952
+ *
4953
+ * axes.setTo({"x": 30, "zoom": 60});
4954
+ * axes.get(); // {"x": 30, "xOther": -100, "zoom": 60}
4955
+ *
4956
+ * axes.setTo({"x": 100, "xOther": 60}, 1000); // animatation
4957
+ *
4958
+ * // after 1000 ms
4959
+ * axes.get(); // {"x": 100, "xOther": 60, "zoom": 60}
4960
+ * ```
4956
4961
  */
4957
4962
 
4958
4963
 
@@ -4964,34 +4969,34 @@ version: 4.10.3
4964
4969
  this.animationManager.setTo(pos, duration);
4965
4970
  return this;
4966
4971
  };
4967
- /**
4968
- * Moves an axis from the current coordinates to specific coordinates.
4969
- * @ko 현재 좌표를 기준으로 좌표를 이동한다.
4970
- * @param {Object.<string, number>} pos The coordinate to move to <ko>이동할 좌표</ko>
4971
- * @param {Number} [duration=0] Duration of the animation (unit: ms) <ko>애니메이션 진행 시간(단위: ms)</ko>
4972
- * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
4973
- * @example
4974
- * ```js
4975
- * const axes = new eg.Axes({
4976
- * "x": {
4977
- * range: [0, 100]
4978
- * },
4979
- * "xOther": {
4980
- * range: [-100, 100]
4981
- * },
4982
- * "zoom": {
4983
- * range: [50, 30]
4984
- * }
4985
- * });
4986
- *
4987
- * axes.setBy({"x": 30, "zoom": 10});
4988
- * axes.get(); // {"x": 30, "xOther": -100, "zoom": 60}
4989
- *
4990
- * axes.setBy({"x": 70, "xOther": 60}, 1000); // animatation
4991
- *
4992
- * // after 1000 ms
4993
- * axes.get(); // {"x": 100, "xOther": -40, "zoom": 60}
4994
- * ```
4972
+ /**
4973
+ * Moves an axis from the current coordinates to specific coordinates.
4974
+ * @ko 현재 좌표를 기준으로 좌표를 이동한다.
4975
+ * @param {Object.<string, number>} pos The coordinate to move to <ko>이동할 좌표</ko>
4976
+ * @param {Number} [duration=0] Duration of the animation (unit: ms) <ko>애니메이션 진행 시간(단위: ms)</ko>
4977
+ * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
4978
+ * @example
4979
+ * ```js
4980
+ * const axes = new eg.Axes({
4981
+ * "x": {
4982
+ * range: [0, 100]
4983
+ * },
4984
+ * "xOther": {
4985
+ * range: [-100, 100]
4986
+ * },
4987
+ * "zoom": {
4988
+ * range: [50, 30]
4989
+ * }
4990
+ * });
4991
+ *
4992
+ * axes.setBy({"x": 30, "zoom": 10});
4993
+ * axes.get(); // {"x": 30, "xOther": -100, "zoom": 60}
4994
+ *
4995
+ * axes.setBy({"x": 70, "xOther": 60}, 1000); // animatation
4996
+ *
4997
+ * // after 1000 ms
4998
+ * axes.get(); // {"x": 100, "xOther": -40, "zoom": 60}
4999
+ * ```
4995
5000
  */
4996
5001
 
4997
5002
 
@@ -5003,31 +5008,31 @@ version: 4.10.3
5003
5008
  this.animationManager.setBy(pos, duration);
5004
5009
  return this;
5005
5010
  };
5006
- /**
5007
- * Change the options of Axes instance.
5008
- * @ko 인스턴스의 옵션을 변경한다.
5009
- * @param {AxesOption} options Axes options to change <ko>변경할 옵션 목록</ko>
5010
- * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5011
- * @example
5012
- * ```js
5013
- * const axes = new eg.Axes({
5014
- * "x": {
5015
- * range: [0, 100]
5016
- * },
5017
- * }, {
5018
- * round: 10,
5019
- * });
5020
- *
5021
- * axes.setTo({"x": 48});
5022
- * axes.get(); // {"x": 50}
5023
- *
5024
- * axes.setOptions({
5025
- * round: 1,
5026
- * });
5027
- *
5028
- * axes.setTo({"x": 48});
5029
- * axes.get(); // {"x": 48}
5030
- * ```
5011
+ /**
5012
+ * Change the options of Axes instance.
5013
+ * @ko 인스턴스의 옵션을 변경한다.
5014
+ * @param {AxesOption} options Axes options to change <ko>변경할 옵션 목록</ko>
5015
+ * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5016
+ * @example
5017
+ * ```js
5018
+ * const axes = new eg.Axes({
5019
+ * "x": {
5020
+ * range: [0, 100]
5021
+ * },
5022
+ * }, {
5023
+ * round: 10,
5024
+ * });
5025
+ *
5026
+ * axes.setTo({"x": 48});
5027
+ * axes.get(); // {"x": 50}
5028
+ *
5029
+ * axes.setOptions({
5030
+ * round: 1,
5031
+ * });
5032
+ *
5033
+ * axes.setTo({"x": 48});
5034
+ * axes.get(); // {"x": 48}
5035
+ * ```
5031
5036
  */
5032
5037
 
5033
5038
 
@@ -5035,31 +5040,31 @@ version: 4.10.3
5035
5040
  this.options = __assign$1(__assign$1({}, this.options), options);
5036
5041
  return this;
5037
5042
  };
5038
- /**
5039
- * Change the information of an existing axis.
5040
- * @ko 존재하는 축의 정보를 변경한다.
5041
- * @param {Object.<string, AxisOption>} axis Axis options to change <ko>변경할 축의 정보</ko>
5042
- * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5043
- * @example
5044
- * ```js
5045
- * const axes = new eg.Axes({
5046
- * "x": {
5047
- * range: [0, 100]
5048
- * },
5049
- * });
5050
- *
5051
- * axes.setTo({"x": 150});
5052
- * axes.get(); // {"x": 100}
5053
- *
5054
- * axes.setAxis({
5055
- * "x": {
5056
- * range: [0, 200]
5057
- * },
5058
- * });
5059
- *
5060
- * axes.setTo({"x": 150});
5061
- * axes.get(); // {"x": 150}
5062
- * ```
5043
+ /**
5044
+ * Change the information of an existing axis.
5045
+ * @ko 존재하는 축의 정보를 변경한다.
5046
+ * @param {Object.<string, AxisOption>} axis Axis options to change <ko>변경할 축의 정보</ko>
5047
+ * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5048
+ * @example
5049
+ * ```js
5050
+ * const axes = new eg.Axes({
5051
+ * "x": {
5052
+ * range: [0, 100]
5053
+ * },
5054
+ * });
5055
+ *
5056
+ * axes.setTo({"x": 150});
5057
+ * axes.get(); // {"x": 100}
5058
+ *
5059
+ * axes.setAxis({
5060
+ * "x": {
5061
+ * range: [0, 200]
5062
+ * },
5063
+ * });
5064
+ *
5065
+ * axes.setTo({"x": 150});
5066
+ * axes.get(); // {"x": 150}
5067
+ * ```
5063
5068
  */
5064
5069
 
5065
5070
 
@@ -5067,23 +5072,23 @@ version: 4.10.3
5067
5072
  this.axisManager.setAxis(axis);
5068
5073
  return this;
5069
5074
  };
5070
- /**
5071
- * Stop an animation in progress.
5072
- * @ko 재생 중인 애니메이션을 정지한다.
5073
- * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5074
- * @example
5075
- * ```js
5076
- * const axes = new eg.Axes({
5077
- * "x": {
5078
- * range: [0, 100]
5079
- * },
5080
- * });
5081
- *
5082
- * axes.setTo({"x": 10}, 1000); // start animatation
5083
- *
5084
- * // after 500 ms
5085
- * axes.stopAnimation(); // stop animation during movement.
5086
- * ```
5075
+ /**
5076
+ * Stop an animation in progress.
5077
+ * @ko 재생 중인 애니메이션을 정지한다.
5078
+ * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5079
+ * @example
5080
+ * ```js
5081
+ * const axes = new eg.Axes({
5082
+ * "x": {
5083
+ * range: [0, 100]
5084
+ * },
5085
+ * });
5086
+ *
5087
+ * axes.setTo({"x": 10}, 1000); // start animatation
5088
+ *
5089
+ * // after 500 ms
5090
+ * axes.stopAnimation(); // stop animation during movement.
5091
+ * ```
5087
5092
  */
5088
5093
 
5089
5094
 
@@ -5092,33 +5097,33 @@ version: 4.10.3
5092
5097
  this.animationManager.finish(false);
5093
5098
  return this;
5094
5099
  };
5095
- /**
5096
- * Change the destination of an animation in progress.
5097
- * @ko 재생 중인 애니메이션의 목적지와 진행 시간을 변경한다.
5098
- * @param {UpdateAnimationOption} pos The coordinate to move to <ko>이동할 좌표</ko>
5099
- * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5100
- * @example
5101
- * ```js
5102
- * const axes = new eg.Axes({
5103
- * "x": {
5104
- * range: [0, 200]
5105
- * },
5106
- * "y": {
5107
- * range: [0, 200]
5108
- * }
5109
- * });
5110
- *
5111
- * axes.setTo({"x": 50, "y": 50}, 1000); // trigger animation by setTo
5112
- *
5113
- * // after 500 ms
5114
- * axes.updateAnimation({destPos: {"x": 100, "y": 100}}); // animation will end after 500 ms, at {"x": 100, "y": 100}
5115
- *
5116
- * // after 500 ms
5117
- * axes.setTo({"x": 50, "y": 50}, 1000); // trigger animation by setTo
5118
- *
5119
- * // after 700 ms
5120
- * axes.updateAnimation({destPos: {"x": 100, "y": 100}, duration: 1500, restart: true}); // this works same as axes.setTo({"x": 100, "y": 100}, 800) since restart is true.
5121
- * ```
5100
+ /**
5101
+ * Change the destination of an animation in progress.
5102
+ * @ko 재생 중인 애니메이션의 목적지와 진행 시간을 변경한다.
5103
+ * @param {UpdateAnimationOption} pos The coordinate to move to <ko>이동할 좌표</ko>
5104
+ * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5105
+ * @example
5106
+ * ```js
5107
+ * const axes = new eg.Axes({
5108
+ * "x": {
5109
+ * range: [0, 200]
5110
+ * },
5111
+ * "y": {
5112
+ * range: [0, 200]
5113
+ * }
5114
+ * });
5115
+ *
5116
+ * axes.setTo({"x": 50, "y": 50}, 1000); // trigger animation by setTo
5117
+ *
5118
+ * // after 500 ms
5119
+ * axes.updateAnimation({destPos: {"x": 100, "y": 100}}); // animation will end after 500 ms, at {"x": 100, "y": 100}
5120
+ *
5121
+ * // after 500 ms
5122
+ * axes.setTo({"x": 50, "y": 50}, 1000); // trigger animation by setTo
5123
+ *
5124
+ * // after 700 ms
5125
+ * axes.updateAnimation({destPos: {"x": 100, "y": 100}, duration: 1500, restart: true}); // this works same as axes.setTo({"x": 100, "y": 100}, 800) since restart is true.
5126
+ * ```
5122
5127
  */
5123
5128
 
5124
5129
 
@@ -5126,38 +5131,38 @@ version: 4.10.3
5126
5131
  this.animationManager.updateAnimation(options);
5127
5132
  return this;
5128
5133
  };
5129
- /**
5130
- * Returns whether there is a coordinate in the bounce area of ​​the target axis.
5131
- * @ko 대상 축 중 bounce영역에 좌표가 존재하는지를 반환한다
5132
- * @param {Object} [axes] The names of the axis <ko>축 이름들</ko>
5133
- * @return {Boolen} Whether the bounce area exists. <ko>bounce 영역 존재 여부</ko>
5134
- * @example
5135
- * ```js
5136
- * const axes = new eg.Axes({
5137
- * "x": {
5138
- * range: [0, 100]
5139
- * },
5140
- * "xOther": {
5141
- * range: [-100, 100]
5142
- * },
5143
- * "zoom": {
5144
- * range: [50, 30]
5145
- * }
5146
- * });
5147
- *
5148
- * axes.isBounceArea(["x"]);
5149
- * axes.isBounceArea(["x", "zoom"]);
5150
- * axes.isBounceArea();
5151
- * ```
5134
+ /**
5135
+ * Returns whether there is a coordinate in the bounce area of ​​the target axis.
5136
+ * @ko 대상 축 중 bounce영역에 좌표가 존재하는지를 반환한다
5137
+ * @param {Object} [axes] The names of the axis <ko>축 이름들</ko>
5138
+ * @return {Boolen} Whether the bounce area exists. <ko>bounce 영역 존재 여부</ko>
5139
+ * @example
5140
+ * ```js
5141
+ * const axes = new eg.Axes({
5142
+ * "x": {
5143
+ * range: [0, 100]
5144
+ * },
5145
+ * "xOther": {
5146
+ * range: [-100, 100]
5147
+ * },
5148
+ * "zoom": {
5149
+ * range: [50, 30]
5150
+ * }
5151
+ * });
5152
+ *
5153
+ * axes.isBounceArea(["x"]);
5154
+ * axes.isBounceArea(["x", "zoom"]);
5155
+ * axes.isBounceArea();
5156
+ * ```
5152
5157
  */
5153
5158
 
5154
5159
 
5155
5160
  __proto.isBounceArea = function (axes) {
5156
5161
  return this.axisManager.isOutside(axes);
5157
5162
  };
5158
- /**
5159
- * Destroys properties, and events used in a module and disconnect all connections to inputTypes.
5160
- * @ko 모듈에 사용한 속성, 이벤트를 해제한다. 모든 inputType과의 연결을 끊는다.
5163
+ /**
5164
+ * Destroys properties, and events used in a module and disconnect all connections to inputTypes.
5165
+ * @ko 모듈에 사용한 속성, 이벤트를 해제한다. 모든 inputType과의 연결을 끊는다.
5161
5166
  */
5162
5167
 
5163
5168
 
@@ -5165,90 +5170,90 @@ version: 4.10.3
5165
5170
  this.disconnect();
5166
5171
  this.eventManager.destroy();
5167
5172
  };
5168
- /**
5169
- * @name VERSION
5170
- * @desc Version info string
5171
- * @ko 버전정보 문자열
5172
- *
5173
- * @constant
5174
- * @type {String}
5175
- * @example
5176
- * ```js
5177
- * eg.Axes.VERSION; // ex) 3.3.3
5178
- * ```
5173
+ /**
5174
+ * @name VERSION
5175
+ * @desc Version info string
5176
+ * @ko 버전정보 문자열
5177
+ *
5178
+ * @constant
5179
+ * @type {String}
5180
+ * @example
5181
+ * ```js
5182
+ * eg.Axes.VERSION; // ex) 3.3.3
5183
+ * ```
5179
5184
  */
5180
5185
 
5181
5186
 
5182
5187
  Axes.VERSION = "3.8.1";
5183
5188
  /* eslint-enable */
5184
5189
 
5185
- /**
5186
- * @name TRANSFORM
5187
- * @desc Returns the transform attribute with CSS vendor prefixes.
5188
- * @ko CSS vendor prefixes를 붙인 transform 속성을 반환한다.
5189
- *
5190
- * @constant
5191
- * @type {String}
5192
- * @example
5193
- * ```js
5194
- * eg.Axes.TRANSFORM; // "transform" or "webkitTransform"
5195
- * ```
5190
+ /**
5191
+ * @name TRANSFORM
5192
+ * @desc Returns the transform attribute with CSS vendor prefixes.
5193
+ * @ko CSS vendor prefixes를 붙인 transform 속성을 반환한다.
5194
+ *
5195
+ * @constant
5196
+ * @type {String}
5197
+ * @example
5198
+ * ```js
5199
+ * eg.Axes.TRANSFORM; // "transform" or "webkitTransform"
5200
+ * ```
5196
5201
  */
5197
5202
 
5198
5203
  Axes.TRANSFORM = TRANSFORM;
5199
- /**
5200
- * @name DIRECTION_NONE
5201
- * @constant
5202
- * @type {Number}
5204
+ /**
5205
+ * @name DIRECTION_NONE
5206
+ * @constant
5207
+ * @type {Number}
5203
5208
  */
5204
5209
 
5205
5210
  Axes.DIRECTION_NONE = DIRECTION_NONE;
5206
- /**
5207
- * @name DIRECTION_LEFT
5208
- * @constant
5209
- * @type {Number}
5211
+ /**
5212
+ * @name DIRECTION_LEFT
5213
+ * @constant
5214
+ * @type {Number}
5210
5215
  */
5211
5216
 
5212
5217
  Axes.DIRECTION_LEFT = DIRECTION_LEFT;
5213
- /**
5214
- * @name DIRECTION_RIGHT
5215
- * @constant
5216
- * @type {Number}
5218
+ /**
5219
+ * @name DIRECTION_RIGHT
5220
+ * @constant
5221
+ * @type {Number}
5217
5222
  */
5218
5223
 
5219
5224
  Axes.DIRECTION_RIGHT = DIRECTION_RIGHT;
5220
- /**
5221
- * @name DIRECTION_UP
5222
- * @constant
5223
- * @type {Number}
5225
+ /**
5226
+ * @name DIRECTION_UP
5227
+ * @constant
5228
+ * @type {Number}
5224
5229
  */
5225
5230
 
5226
5231
  Axes.DIRECTION_UP = DIRECTION_UP;
5227
- /**
5228
- * @name DIRECTION_DOWN
5229
- * @constant
5230
- * @type {Number}
5232
+ /**
5233
+ * @name DIRECTION_DOWN
5234
+ * @constant
5235
+ * @type {Number}
5231
5236
  */
5232
5237
 
5233
5238
  Axes.DIRECTION_DOWN = DIRECTION_DOWN;
5234
- /**
5235
- * @name DIRECTION_HORIZONTAL
5236
- * @constant
5237
- * @type {Number}
5239
+ /**
5240
+ * @name DIRECTION_HORIZONTAL
5241
+ * @constant
5242
+ * @type {Number}
5238
5243
  */
5239
5244
 
5240
5245
  Axes.DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL;
5241
- /**
5242
- * @name DIRECTION_VERTICAL
5243
- * @constant
5244
- * @type {Number}
5246
+ /**
5247
+ * @name DIRECTION_VERTICAL
5248
+ * @constant
5249
+ * @type {Number}
5245
5250
  */
5246
5251
 
5247
5252
  Axes.DIRECTION_VERTICAL = DIRECTION_VERTICAL;
5248
- /**
5249
- * @name DIRECTION_ALL
5250
- * @constant
5251
- * @type {Number}
5253
+ /**
5254
+ * @name DIRECTION_ALL
5255
+ * @constant
5256
+ * @type {Number}
5252
5257
  */
5253
5258
 
5254
5259
  Axes.DIRECTION_ALL = DIRECTION_ALL;
@@ -5256,9 +5261,9 @@ version: 4.10.3
5256
5261
  return Axes;
5257
5262
  }(Component);
5258
5263
 
5259
- /*
5260
- * Copyright (c) 2015 NAVER Corp.
5261
- * egjs projects are licensed under the MIT license
5264
+ /*
5265
+ * Copyright (c) 2015 NAVER Corp.
5266
+ * egjs projects are licensed under the MIT license
5262
5267
  */
5263
5268
 
5264
5269
  var getDirectionByAngle = function (angle, thresholdAngle) {
@@ -5269,63 +5274,77 @@ version: 4.10.3
5269
5274
  var toAngle = Math.abs(angle);
5270
5275
  return toAngle > thresholdAngle && toAngle < 180 - thresholdAngle ? DIRECTION_VERTICAL : DIRECTION_HORIZONTAL;
5271
5276
  };
5272
- /**
5273
- * @typedef {Object} PanInputOption The option object of the eg.Axes.PanInput module.
5274
- * @ko eg.Axes.PanInput 모듈의 옵션 객체
5275
- * @param {String[]} [inputType=["touch", "mouse", "pointer"]] Types of input devices
5276
- * - touch: Touch screen
5277
- * - mouse: Mouse
5278
- * - pointer: Mouse and touch <ko>입력 장치 종류
5279
- * - touch: 터치 입력 장치
5280
- * - mouse: 마우스
5281
- * - pointer: 마우스 및 터치</ko>
5282
- * @param {String[]} [inputButton=["left"]] List of buttons to allow input
5283
- * - left: Left mouse button and normal touch
5284
- * - middle: Mouse wheel press
5285
- * - right: Right mouse button <ko>입력을 허용할 버튼 목록
5286
- * - left: 마우스 왼쪽 버튼
5287
- * - middle: 마우스 휠 눌림
5288
- * - right: 마우스 오른쪽 버튼 </ko>
5289
- * @param {Number[]} [scale] Coordinate scale that a user can move<ko>사용자의 동작으로 이동하는 좌표의 배율</ko>
5290
- * @param {Number} [scale[0]=1] horizontal axis scale <ko>수평축 배율</ko>
5291
- * @param {Number} [scale[1]=1] vertical axis scale <ko>수직축 배율</ko>
5292
- * @param {Number} [thresholdAngle=45] The threshold value that determines whether user action is horizontal or vertical (0~90) <ko>사용자의 동작이 가로 방향인지 세로 방향인지 판단하는 기준 각도(0~90)</ko>
5293
- * @param {Number} [threshold=0] Minimal pan distance required before recognizing <ko>사용자의 Pan 동작을 인식하기 위해산 최소한의 거리</ko>
5294
- * @param {Boolean} [preventClickOnDrag=false] Whether to cancel the {@link https://developer.mozilla.org/en/docs/Web/API/Element/click_event click} event when the user finishes dragging more than 1 pixel <ko>사용자가 1픽셀 이상 드래그를 마쳤을 때 {@link https://developer.mozilla.org/ko/docs/Web/API/Element/click_event click} 이벤트 취소 여부</ko>
5295
- * @param {Number} [iOSEdgeSwipeThreshold=30] Area (px) that can go to the next page when swiping the right edge in iOS safari <ko>iOS Safari에서 오른쪽 엣지를 스와이프 하는 경우 다음 페이지로 넘어갈 수 있는 영역(px)</ko>
5296
- * @param {String} [touchAction=null] Value that overrides the element's "touch-action" css property. If set to null, it is automatically set to prevent scrolling in the direction of the connected axis. <ko>엘리먼트의 "touch-action" CSS 속성을 덮어쓰는 값. 만약 null로 설정된 경우, 연결된 축 방향으로의 스크롤을 방지하게끔 자동으로 설정된다.</ko>
5277
+ /**
5278
+ * @typedef {Object} PanInputOption The option object of the eg.Axes.PanInput module.
5279
+ * @ko eg.Axes.PanInput 모듈의 옵션 객체
5280
+ * @param {String[]} [inputType=["touch", "mouse", "pointer"]] Types of input devices
5281
+ * - touch: Touch screen
5282
+ * - mouse: Mouse
5283
+ * - pointer: Mouse and touch <ko>입력 장치 종류
5284
+ * - touch: 터치 입력 장치
5285
+ * - mouse: 마우스
5286
+ * - pointer: 마우스 및 터치</ko>
5287
+ * @param {String[]} [inputKey=["any"]] List of key combinations to allow input
5288
+ * - any: any key
5289
+ * - shift: shift key
5290
+ * - ctrl: ctrl key and pinch gesture on the trackpad
5291
+ * - alt: alt key
5292
+ * - meta: meta key
5293
+ * - none: none of these keys are pressed <ko>입력을 허용할 키 조합 목록
5294
+ * - any: 아무
5295
+ * - shift: shift
5296
+ * - ctrl: ctrl 트랙패드의 pinch 제스쳐
5297
+ * - alt: alt
5298
+ * - meta: meta
5299
+ * - none: 아무 키도 눌리지 않은 상태 </ko>
5300
+ * @param {String[]} [inputButton=["left"]] List of buttons to allow input
5301
+ * - left: Left mouse button and normal touch
5302
+ * - middle: Mouse wheel press
5303
+ * - right: Right mouse button <ko>입력을 허용할 버튼 목록
5304
+ * - left: 마우스 왼쪽 버튼
5305
+ * - middle: 마우스 휠 눌림
5306
+ * - right: 마우스 오른쪽 버튼 </ko>
5307
+ * @param {Number[]} [scale] Coordinate scale that a user can move<ko>사용자의 동작으로 이동하는 좌표의 배율</ko>
5308
+ * @param {Number} [scale[0]=1] horizontal axis scale <ko>수평축 배율</ko>
5309
+ * @param {Number} [scale[1]=1] vertical axis scale <ko>수직축 배율</ko>
5310
+ * @param {Number} [thresholdAngle=45] The threshold value that determines whether user action is horizontal or vertical (0~90) <ko>사용자의 동작이 가로 방향인지 세로 방향인지 판단하는 기준 각도(0~90)</ko>
5311
+ * @param {Number} [threshold=0] Minimal pan distance required before recognizing <ko>사용자의 Pan 동작을 인식하기 위해산 최소한의 거리</ko>
5312
+ * @param {Boolean} [preventClickOnDrag=false] Whether to cancel the {@link https://developer.mozilla.org/en/docs/Web/API/Element/click_event click} event when the user finishes dragging more than threshold <ko>사용자가 threshold 이상 드래그를 마쳤을 때 {@link https://developer.mozilla.org/ko/docs/Web/API/Element/click_event click} 이벤트 취소 여부</ko>
5313
+ * @param {Number} [iOSEdgeSwipeThreshold=30] Area (px) that can go to the next page when swiping the right edge in iOS safari <ko>iOS Safari에서 오른쪽 엣지를 스와이프 하는 경우 다음 페이지로 넘어갈 수 있는 영역(px)</ko>
5314
+ * @param {Boolean} [useAcceleration=false] Whether to apply the dragging speed to coordinate changes. <ko>사용자의 드래그 속도를 좌표 변화에 반영할지 여부</ko>
5315
+ * @param {String} [touchAction=null] Value that overrides the element's "touch-action" css property. If set to null, it is automatically set to prevent scrolling in the direction of the connected axis. <ko>엘리먼트의 "touch-action" CSS 속성을 덮어쓰는 값. 만약 null로 설정된 경우, 연결된 축 방향으로의 스크롤을 방지하게끔 자동으로 설정된다.</ko>
5297
5316
  **/
5298
5317
 
5299
- /**
5300
- * A module that passes the amount of change to eg.Axes when the mouse or touchscreen is down and moved. use less than two axes.
5301
- * @ko 마우스나 터치 스크린을 누르고 움직일때의 변화량을 eg.Axes에 전달하는 모듈. 두개 이하의 축을 사용한다.
5302
- *
5303
- * @example
5304
- * ```js
5305
- * const pan = new eg.Axes.PanInput("#area", {
5306
- * inputType: ["touch"],
5307
- * scale: [1, 1.3],
5308
- * });
5309
- *
5310
- * // Connect the 'something2' axis to the mouse or touchscreen x position when the mouse or touchscreen is down and moved.
5311
- * // Connect the 'somethingN' axis to the mouse or touchscreen y position when the mouse or touchscreen is down and moved.
5312
- * axes.connect(["something2", "somethingN"], pan); // or axes.connect("something2 somethingN", pan);
5313
- *
5314
- * // Connect only one 'something1' axis to the mouse or touchscreen x position when the mouse or touchscreen is down and moved.
5315
- * axes.connect(["something1"], pan); // or axes.connect("something1", pan);
5316
- *
5317
- * // Connect only one 'something2' axis to the mouse or touchscreen y position when the mouse or touchscreen is down and moved.
5318
- * axes.connect(["", "something2"], pan); // or axes.connect(" something2", pan);
5319
- * ```
5320
- * @param {String|HTMLElement|Ref<HTMLElement>|jQuery} element An element to use the eg.Axes.PanInput module <ko>eg.Axes.PanInput 모듈을 사용할 엘리먼트</ko>
5321
- * @param {PanInputOption} [options={}] The option object of the eg.Axes.PanInput module<ko>eg.Axes.PanInput 모듈의 옵션 객체</ko>
5318
+ /**
5319
+ * A module that passes the amount of change to eg.Axes when the mouse or touchscreen is down and moved. use less than two axes.
5320
+ * @ko 마우스나 터치 스크린을 누르고 움직일때의 변화량을 eg.Axes에 전달하는 모듈. 두개 이하의 축을 사용한다.
5321
+ *
5322
+ * @example
5323
+ * ```js
5324
+ * const pan = new eg.Axes.PanInput("#area", {
5325
+ * inputType: ["touch"],
5326
+ * scale: [1, 1.3],
5327
+ * });
5328
+ *
5329
+ * // Connect the 'something2' axis to the mouse or touchscreen x position when the mouse or touchscreen is down and moved.
5330
+ * // Connect the 'somethingN' axis to the mouse or touchscreen y position when the mouse or touchscreen is down and moved.
5331
+ * axes.connect(["something2", "somethingN"], pan); // or axes.connect("something2 somethingN", pan);
5332
+ *
5333
+ * // Connect only one 'something1' axis to the mouse or touchscreen x position when the mouse or touchscreen is down and moved.
5334
+ * axes.connect(["something1"], pan); // or axes.connect("something1", pan);
5335
+ *
5336
+ * // Connect only one 'something2' axis to the mouse or touchscreen y position when the mouse or touchscreen is down and moved.
5337
+ * axes.connect(["", "something2"], pan); // or axes.connect(" something2", pan);
5338
+ * ```
5339
+ * @param {String|HTMLElement|Ref<HTMLElement>|jQuery} element An element to use the eg.Axes.PanInput module <ko>eg.Axes.PanInput 모듈을 사용할 엘리먼트</ko>
5340
+ * @param {PanInputOption} [options={}] The option object of the eg.Axes.PanInput module<ko>eg.Axes.PanInput 모듈의 옵션 객체</ko>
5322
5341
  */
5323
5342
 
5324
5343
  var PanInput =
5325
5344
  /*#__PURE__*/
5326
5345
  function () {
5327
- /**
5328
- *
5346
+ /**
5347
+ *
5329
5348
  */
5330
5349
  function PanInput(el, options) {
5331
5350
  var _this = this;
@@ -5353,6 +5372,7 @@ version: 4.10.3
5353
5372
  this.element = $(el);
5354
5373
  this.options = __assign$1({
5355
5374
  inputType: ["touch", "mouse", "pointer"],
5375
+ inputKey: [ANY],
5356
5376
  inputButton: [MOUSE_LEFT],
5357
5377
  scale: [1, 1],
5358
5378
  thresholdAngle: 45,
@@ -5360,6 +5380,7 @@ version: 4.10.3
5360
5380
  preventClickOnDrag: false,
5361
5381
  iOSEdgeSwipeThreshold: IOS_EDGE_THRESHOLD,
5362
5382
  releaseOnScroll: false,
5383
+ useAcceleration: false,
5363
5384
  touchAction: null
5364
5385
  }, options);
5365
5386
  this._onPanstart = this._onPanstart.bind(this);
@@ -5399,9 +5420,9 @@ version: 4.10.3
5399
5420
  this._direction = DIRECTION_NONE;
5400
5421
  return this;
5401
5422
  };
5402
- /**
5403
- * Destroys elements, properties, and events used in a module.
5404
- * @ko 모듈에 사용한 엘리먼트와 속성, 이벤트를 해제한다.
5423
+ /**
5424
+ * Destroys elements, properties, and events used in a module.
5425
+ * @ko 모듈에 사용한 엘리먼트와 속성, 이벤트를 해제한다.
5405
5426
  */
5406
5427
 
5407
5428
 
@@ -5409,10 +5430,10 @@ version: 4.10.3
5409
5430
  this.disconnect();
5410
5431
  this.element = null;
5411
5432
  };
5412
- /**
5413
- * Enables input devices
5414
- * @ko 입력 장치를 사용할 수 있게 한다
5415
- * @return {PanInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5433
+ /**
5434
+ * Enables input devices
5435
+ * @ko 입력 장치를 사용할 수 있게 한다
5436
+ * @return {PanInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5416
5437
  */
5417
5438
 
5418
5439
 
@@ -5420,10 +5441,10 @@ version: 4.10.3
5420
5441
  this._enabled = true;
5421
5442
  return this;
5422
5443
  };
5423
- /**
5424
- * Disables input devices
5425
- * @ko 입력 장치를 사용할 수 없게 한다.
5426
- * @return {PanInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5444
+ /**
5445
+ * Disables input devices
5446
+ * @ko 입력 장치를 사용할 수 없게 한다.
5447
+ * @return {PanInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5427
5448
  */
5428
5449
 
5429
5450
 
@@ -5431,20 +5452,20 @@ version: 4.10.3
5431
5452
  this._enabled = false;
5432
5453
  return this;
5433
5454
  };
5434
- /**
5435
- * Returns whether to use an input device
5436
- * @ko 입력 장치 사용 여부를 반환한다.
5437
- * @return {Boolean} Whether to use an input device <ko>입력장치 사용여부</ko>
5455
+ /**
5456
+ * Returns whether to use an input device
5457
+ * @ko 입력 장치 사용 여부를 반환한다.
5458
+ * @return {Boolean} Whether to use an input device <ko>입력장치 사용여부</ko>
5438
5459
  */
5439
5460
 
5440
5461
 
5441
5462
  __proto.isEnabled = function () {
5442
5463
  return this._enabled;
5443
5464
  };
5444
- /**
5445
- * Releases current user input.
5446
- * @ko 사용자의 입력을 강제로 중단시킨다.
5447
- * @return {PanInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5465
+ /**
5466
+ * Releases current user input.
5467
+ * @ko 사용자의 입력을 강제로 중단시킨다.
5468
+ * @return {PanInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>
5448
5469
  */
5449
5470
 
5450
5471
 
@@ -5461,9 +5482,11 @@ version: 4.10.3
5461
5482
  };
5462
5483
 
5463
5484
  __proto._onPanstart = function (event) {
5464
- var inputButton = this.options.inputButton;
5485
+ var _a = this.options,
5486
+ inputKey = _a.inputKey,
5487
+ inputButton = _a.inputButton;
5465
5488
  var activeEvent = this._activeEvent;
5466
- var panEvent = activeEvent.onEventStart(event, inputButton);
5489
+ var panEvent = activeEvent.onEventStart(event, inputKey, inputButton);
5467
5490
 
5468
5491
  if (!panEvent || !this._enabled || activeEvent.getTouches(event, inputButton) > 1) {
5469
5492
  return;
@@ -5490,11 +5513,13 @@ version: 4.10.3
5490
5513
  var _a = this.options,
5491
5514
  iOSEdgeSwipeThreshold = _a.iOSEdgeSwipeThreshold,
5492
5515
  releaseOnScroll = _a.releaseOnScroll,
5516
+ useAcceleration = _a.useAcceleration,
5517
+ inputKey = _a.inputKey,
5493
5518
  inputButton = _a.inputButton,
5494
5519
  threshold = _a.threshold,
5495
5520
  thresholdAngle = _a.thresholdAngle;
5496
5521
  var activeEvent = this._activeEvent;
5497
- var panEvent = activeEvent.onEventMove(event, inputButton);
5522
+ var panEvent = activeEvent.onEventMove(event, inputKey, inputButton);
5498
5523
  var touches = activeEvent.getTouches(event, inputButton);
5499
5524
 
5500
5525
  if (touches === 0 || releaseOnScroll && panEvent && !panEvent.srcEvent.cancelable) {
@@ -5553,10 +5578,11 @@ version: 4.10.3
5553
5578
  panEvent.preventSystemEvent = prevent;
5554
5579
 
5555
5580
  if (prevent && (this._isOverThreshold || distance >= threshold)) {
5581
+ var velocity = useAcceleration ? this._getVelocity(panEvent) : undefined;
5556
5582
  this._dragged = true;
5557
5583
  this._isOverThreshold = true;
5558
5584
 
5559
- this._observer.change(this, panEvent, toAxis(this.axes, offset));
5585
+ this._observer.change(this, panEvent, toAxis(this.axes, offset), false, velocity);
5560
5586
  }
5561
5587
 
5562
5588
  activeEvent.prevEvent = panEvent;
@@ -5575,7 +5601,9 @@ version: 4.10.3
5575
5601
 
5576
5602
  clearTimeout(this._rightEdgeTimer);
5577
5603
  var prevEvent = activeEvent.prevEvent;
5578
- var velocity = this._isOverThreshold ? this._getOffset([Math.abs(prevEvent.velocityX) * (prevEvent.offsetX < 0 ? -1 : 1), Math.abs(prevEvent.velocityY) * (prevEvent.offsetY < 0 ? -1 : 1)], [useDirection(DIRECTION_HORIZONTAL, this._direction), useDirection(DIRECTION_VERTICAL, this._direction)]) : [0, 0];
5604
+
5605
+ var velocity = this._getVelocity(prevEvent);
5606
+
5579
5607
  activeEvent.onRelease();
5580
5608
 
5581
5609
  this._observer.release(this, prevEvent, velocity);
@@ -5612,6 +5640,10 @@ version: 4.10.3
5612
5640
  return [direction[0] ? properties[0] * scale[0] : 0, direction[1] ? properties[1] * scale[1] : 0];
5613
5641
  };
5614
5642
 
5643
+ __proto._getVelocity = function (event) {
5644
+ return this._isOverThreshold ? this._getOffset([Math.abs(event.velocityX) * (event.offsetX < 0 ? -1 : 1), Math.abs(event.velocityY) * (event.offsetY < 0 ? -1 : 1)], [useDirection(DIRECTION_HORIZONTAL, this._direction), useDirection(DIRECTION_VERTICAL, this._direction)]) : [0, 0];
5645
+ };
5646
+
5615
5647
  __proto._getDistance = function (delta, direction) {
5616
5648
  return Math.sqrt(Number(direction[0]) * Math.pow(delta[0], 2) + Number(direction[1]) * Math.pow(delta[1], 2));
5617
5649
  };
@@ -5673,9 +5705,9 @@ version: 4.10.3
5673
5705
  return PanInput;
5674
5706
  }();
5675
5707
 
5676
- /*
5677
- * Copyright (c) 2015 NAVER Corp.
5678
- * egjs projects are licensed under the MIT license
5708
+ /*
5709
+ * Copyright (c) 2015 NAVER Corp.
5710
+ * egjs projects are licensed under the MIT license
5679
5711
  */
5680
5712
 
5681
5713
  var Axes$1 = Axes;
@@ -12532,6 +12564,7 @@ version: 4.10.3
12532
12564
  * @property {ALIGN | string | number} panel The align value for each {@link Panel}s<ko>개개의 {@link Panel}에 적용할 값</ko>
12533
12565
  * @property {ALIGN | string | number} camera The align value for {@link Camera}<ko>{@link Camera}에 적용할 값</ko>
12534
12566
  * @default "center"
12567
+ * @see {@link https://naver.github.io/egjs-flicking/Options#align align ( Options )}
12535
12568
  * @example
12536
12569
  * ```ts
12537
12570
  * const possibleOptions = [
@@ -12572,6 +12605,7 @@ version: 4.10.3
12572
12605
  * @ko Flicking의 {@link Flicking#init init()}이 호출될 때 이동할 디폴트 패널의 인덱스로, 0부터 시작하는 정수입니다
12573
12606
  * @type {number}
12574
12607
  * @default 0
12608
+ * @see {@link https://naver.github.io/egjs-flicking/Options#defaultindex defaultIndex ( Options )}
12575
12609
  */
12576
12610
  get: function () {
12577
12611
  return this._defaultIndex;
@@ -12588,6 +12622,7 @@ version: 4.10.3
12588
12622
  * @ko 패널 이동 방향 (true: 가로방향, false: 세로방향)
12589
12623
  * @type {boolean}
12590
12624
  * @default true
12625
+ * @see {@link https://naver.github.io/egjs-flicking/Options#horizontal horizontal ( Options )}
12591
12626
  */
12592
12627
  get: function () {
12593
12628
  return this._horizontal;
@@ -12608,6 +12643,7 @@ version: 4.10.3
12608
12643
  * @ko 순환 모드를 활성화합니다. 순환 모드에서는 양 끝의 패널이 서로 연결되어 끊김없는 스크롤이 가능합니다.
12609
12644
  * @type {boolean}
12610
12645
  * @default false
12646
+ * @see {@link https://naver.github.io/egjs-flicking/Options#circular circular ( Options )}
12611
12647
  */
12612
12648
  get: function () {
12613
12649
  return this._circular;
@@ -12630,6 +12666,7 @@ version: 4.10.3
12630
12666
  * @see CIRCULAR_FALLBACK
12631
12667
  * @type {string}
12632
12668
  * @default "linear"
12669
+ * @see {@link https://naver.github.io/egjs-flicking/Options#circularfallback circularFallback ( Options )}
12633
12670
  */
12634
12671
  get: function () {
12635
12672
  return this._circularFallback;
@@ -12645,6 +12682,7 @@ version: 4.10.3
12645
12682
  * `circular=false`인 경우에만 사용할 수 있습니다
12646
12683
  * @type {boolean}
12647
12684
  * @default false
12685
+ * @see {@link https://naver.github.io/egjs-flicking/Options#bound bound ( Options )}
12648
12686
  */
12649
12687
  get: function () {
12650
12688
  return this._bound;
@@ -12662,6 +12700,7 @@ version: 4.10.3
12662
12700
  * @ko 이동한 후 뷰포트 엘리먼트의 크기를 현재 패널의 높이와 동일하게 설정합니다. `horizontal=true`인 경우에만 사용할 수 있습니다.
12663
12701
  * @type {boolean}
12664
12702
  * @default false
12703
+ * @see {@link https://naver.github.io/egjs-flicking/Options#adaptive adaptive ( Options )}
12665
12704
  */
12666
12705
  get: function () {
12667
12706
  return this._adaptive;
@@ -12679,6 +12718,7 @@ version: 4.10.3
12679
12718
  * @ko 한 화면에 보이는 패널의 개수. 이 옵션을 활성화할 경우 패널의 크기를 강제로 재조정합니다
12680
12719
  * @type {number}
12681
12720
  * @default -1
12721
+ * @see {@link https://naver.github.io/egjs-flicking/Options#panelsperview panelsPerView ( Options )}
12682
12722
  */
12683
12723
  get: function () {
12684
12724
  return this._panelsPerView;
@@ -12717,6 +12757,7 @@ version: 4.10.3
12717
12757
  * 이 동작은 Flicking 내부에 로드 전/후로 크기가 변하는 콘텐츠를 포함하고 있을 때 유용하게 사용하실 수 있습니다.
12718
12758
  * @type {boolean}
12719
12759
  * @default false
12760
+ * @see {@link https://naver.github.io/egjs-flicking/Options#resizeOnContentsReady resizeOnContentsReady ( Options )}
12720
12761
  */
12721
12762
  get: function () {
12722
12763
  return this._resizeOnContentsReady;
@@ -12739,6 +12780,7 @@ version: 4.10.3
12739
12780
  * 만약 상위 Flicking과 하위 Flicking이 서로 다른 horizontal 옵션을 가지고 있다면 이 옵션을 설정할 필요가 없습니다.
12740
12781
  * @type {boolean}
12741
12782
  * @default false
12783
+ * @see {@link https://naver.github.io/egjs-flicking/Options#nested nested ( Options )}
12742
12784
  */
12743
12785
  get: function () {
12744
12786
  return this._nested;
@@ -12762,6 +12804,7 @@ version: 4.10.3
12762
12804
  * @ko `needPanel`이벤트가 발생하기 위한 뷰포트 끝으로부터의 최대 거리
12763
12805
  * @type {number}
12764
12806
  * @default 0
12807
+ * @see {@link https://naver.github.io/egjs-flicking/Options#needpanelthreshold needPanelThreshold ( Options )}
12765
12808
  */
12766
12809
  get: function () {
12767
12810
  return this._needPanelThreshold;
@@ -12779,6 +12822,7 @@ version: 4.10.3
12779
12822
  * @ko 활성화할 경우 초기화시 `ready` 이벤트 이전의 이벤트가 발생하지 않습니다.
12780
12823
  * @type {boolean}
12781
12824
  * @default true
12825
+ * @see {@link https://naver.github.io/egjs-flicking/Options#preventeventsbeforeinit preventEventsBeforeInit ( Options )}
12782
12826
  */
12783
12827
  get: function () {
12784
12828
  return this._preventEventsBeforeInit;
@@ -12797,6 +12841,7 @@ version: 4.10.3
12797
12841
  * @ko 사용자의 동작으로 가속도가 적용된 패널 이동 애니메이션의 감속도. 값이 높을수록 애니메이션 실행 시간이 짧아집니다
12798
12842
  * @type {number}
12799
12843
  * @default 0.0075
12844
+ * @see {@link https://naver.github.io/egjs-flicking/Options#deceleration deceleration ( Options )}
12800
12845
  */
12801
12846
  get: function () {
12802
12847
  return this._deceleration;
@@ -12820,6 +12865,7 @@ version: 4.10.3
12820
12865
  * @type {function}
12821
12866
  * @default x => 1 - Math.pow(1 - x, 3)
12822
12867
  * @see Easing Functions Cheat Sheet {@link http://easings.net/} <ko>이징 함수 Cheat Sheet {@link http://easings.net/}</ko>
12868
+ * @see {@link https://naver.github.io/egjs-flicking/Options#easing Easing ( Options )}
12823
12869
  */
12824
12870
  get: function () {
12825
12871
  return this._easing;
@@ -12841,6 +12887,7 @@ version: 4.10.3
12841
12887
  * @ko 디폴트 애니메이션 재생 시간 (ms)
12842
12888
  * @type {number}
12843
12889
  * @default 500
12890
+ * @see {@link https://naver.github.io/egjs-flicking/Options#duration duration ( Options )}
12844
12891
  */
12845
12892
  get: function () {
12846
12893
  return this._duration;
@@ -12859,8 +12906,9 @@ version: 4.10.3
12859
12906
  * @ko 활성화할 입력 장치 종류
12860
12907
  * @type {string[]}
12861
12908
  * @default ["touch", "mouse"]
12862
- * @see {@link https://naver.github.io/egjs-axes/release/latest/doc/global.html#PanInputOption Possible values (PanInputOption#inputType)}
12863
- * <ko>{@link https://naver.github.io/egjs-axes/release/latest/doc/global.html#PanInputOption 가능한 값들 (PanInputOption#inputType)}</ko>
12909
+ * @see {@link https://naver.github.io/egjs-axes/Options#paninput-options Possible values (PanInputOption#inputType)}
12910
+ * <ko>{@link https://naver.github.io/egjs-axes/Options#paninput-options 가능한 값들 (PanInputOption#inputType)}</ko>
12911
+ * @see {@link https://naver.github.io/egjs-flicking/Options#inputtype inputType ( Options )}
12864
12912
  */
12865
12913
  get: function () {
12866
12914
  return this._inputType;
@@ -12885,6 +12933,7 @@ version: 4.10.3
12885
12933
  * 상수 {@link MOVE_TYPE}에 정의된 값들을 이용할 수 있습니다
12886
12934
  * @type {MOVE_TYPE | Pair<string, object>}
12887
12935
  * @default "snap"
12936
+ * @see {@link https://naver.github.io/egjs-flicking/Options#movetype moveType ( Options )}
12888
12937
  * @example
12889
12938
  * |moveType|control|options|
12890
12939
  * |:---:|:---:|:---:|
@@ -12935,6 +12984,7 @@ version: 4.10.3
12935
12984
  * @ko 패널 변경을 위한 이동 임계값 (단위: px). 주어진 값 이상으로 스크롤해야만 패널 변경이 가능하다.
12936
12985
  * @type {number}
12937
12986
  * @default 40
12987
+ * @see {@link https://naver.github.io/egjs-flicking/Options#threshold Threshold ( Options )}
12938
12988
  */
12939
12989
  get: function () {
12940
12990
  return this._threshold;
@@ -12951,6 +13001,7 @@ version: 4.10.3
12951
13001
  * @ko 사용자의 클릭/터치로 인해 애니메이션을 도중에 멈출 수 있도록 설정합니다.
12952
13002
  * @type {boolean}
12953
13003
  * @default true
13004
+ * @see {@link https://naver.github.io/egjs-flicking/Options#interruptable Interruptable ( Options )}
12954
13005
  */
12955
13006
  get: function () {
12956
13007
  return this._interruptable;
@@ -12978,6 +13029,7 @@ version: 4.10.3
12978
13029
  * 이 값을 변경시 {@link Control#updateInput}를 호출해야 합니다.
12979
13030
  * @type {string | number | Array<string | number>}
12980
13031
  * @default "20%"
13032
+ * @see {@link https://naver.github.io/egjs-flicking/Options#bounce bounce ( Options )}
12981
13033
  * @example
12982
13034
  * ```ts
12983
13035
  * const possibleOptions = [
@@ -13015,6 +13067,7 @@ version: 4.10.3
13015
13067
  * @ko iOS Safari에서 swipe를 통한 뒤로가기/앞으로가기를 활성화하는 오른쪽 끝으로부터의 영역의 크기 (px)
13016
13068
  * @type {number}
13017
13069
  * @default 30
13070
+ * @see {@link https://naver.github.io/egjs-flicking/Options#iosedgeswipethreshold iOSEdgeSwipeThreshold ( Options )}
13018
13071
  */
13019
13072
  get: function () {
13020
13073
  return this._iOSEdgeSwipeThreshold;
@@ -13036,6 +13089,7 @@ version: 4.10.3
13036
13089
  * @ko 사용자가 뷰포트 영역을 1픽셀이라도 드래그했을 경우 자동으로 {@link https://developer.mozilla.org/ko/docs/Web/API/Element/click_event click} 이벤트를 취소합니다
13037
13090
  * @type {boolean}
13038
13091
  * @default true
13092
+ * @see {@link https://naver.github.io/egjs-flicking/Options#preventclickondrag preventClickOnDrag ( Options )}
13039
13093
  */
13040
13094
  get: function () {
13041
13095
  return this._preventClickOnDrag;
@@ -13062,6 +13116,7 @@ version: 4.10.3
13062
13116
  * @ko Flicking init시에 {@link Flicking#disableInput disableInput()}을 바로 호출합니다
13063
13117
  * @type {boolean}
13064
13118
  * @default false
13119
+ * @see {@link https://naver.github.io/egjs-flicking/Options#disableoninit disableOnInit ( Options )}
13065
13120
  */
13066
13121
  get: function () {
13067
13122
  return this._disableOnInit;
@@ -13080,6 +13135,7 @@ version: 4.10.3
13080
13135
  * `willChange`/`willRestore` 이벤트의 `index`값이 새로운 인덱스로 사용될 것입니다.
13081
13136
  * @type {boolean}
13082
13137
  * @default false
13138
+ * @see {@link https://naver.github.io/egjs-flicking/Options#changeonhold changeOnHold ( Options )}
13083
13139
  */
13084
13140
  get: function () {
13085
13141
  return this._changeOnHold;
@@ -13098,6 +13154,7 @@ version: 4.10.3
13098
13154
  * @ko 보이는 패널만 렌더링할지 여부를 설정합니다. 패널이 많을 경우에 퍼포먼스를 크게 향상시킬 수 있습니다
13099
13155
  * @type {boolean}
13100
13156
  * @default false
13157
+ * @see {@link https://naver.github.io/egjs-flicking/Options#renderonlyvisible renderOnlyVisible ( Options )}
13101
13158
  */
13102
13159
  get: function () {
13103
13160
  return this._renderOnlyVisible;
@@ -13123,6 +13180,7 @@ version: 4.10.3
13123
13180
  * @property {number} initialPanelCount Initial panel count to render<ko>최초로 렌더링할 패널의 개수</ko>
13124
13181
  * @property {boolean} [cache=false] Whether to cache rendered panel's innerHTML<ko>렌더링된 패널의 innerHTML 정보를 캐시할지 여부</ko>
13125
13182
  * @property {string} [panelClass="flicking-panel"] The class name that will be applied to rendered panel elements<ko>렌더링되는 패널 엘리먼트에 적용될 클래스 이름</ko>
13183
+ * @see {@link https://naver.github.io/egjs-flicking/Options#virtual virtual ( Options )}
13126
13184
  * @example
13127
13185
  * ```ts
13128
13186
  * import Flicking, { VirtualPanel } from "@egjs/flicking";
@@ -13156,6 +13214,7 @@ version: 4.10.3
13156
13214
  * @ko Flicking 인스턴스를 생성할 때 자동으로 {@link Flicking#init init()}를 호출합니다
13157
13215
  * @type {boolean}
13158
13216
  * @default true
13217
+ * @see {@link https://naver.github.io/egjs-flicking/Options#autoinit autoInit ( Options )}
13159
13218
  * @readonly
13160
13219
  */
13161
13220
  get: function () {
@@ -13193,6 +13252,7 @@ version: 4.10.3
13193
13252
  * @ko autoResize 옵션 사용시 {@link https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver ResizeObserver}의 이벤트를 Window객체의 {@link https://developer.mozilla.org/ko/docs/Web/API/Window/resize_event resize} 이벤트 대신 수신할지 여부를 설정합니다
13194
13253
  * @type {boolean}
13195
13254
  * @default true
13255
+ * @see {@link https://naver.github.io/egjs-flicking/Options#useresizeobserver useResizeObserver ( Options )}
13196
13256
  */
13197
13257
  get: function () {
13198
13258
  return this._useResizeObserver;
@@ -13217,6 +13277,7 @@ version: 4.10.3
13217
13277
  * 이를 통해 `resize`가 너무 많이 호출되는 것을 방지하여 성능을 향상시킬 수 있습니다.
13218
13278
  * @type {number}
13219
13279
  * @default 0
13280
+ * @see {@link https://naver.github.io/egjs-flicking/Options#resizedebounce resizeDebounce ( Options )}
13220
13281
  */
13221
13282
  get: function () {
13222
13283
  return this._resizeDebounce;
@@ -13232,6 +13293,7 @@ version: 4.10.3
13232
13293
  * 이를 통해, 적어도 (n)ms에 한번은 크기 재계산을 수행하는 것을 보장할 수 있습니다.
13233
13294
  * @type {number}
13234
13295
  * @default 100
13296
+ * @see {@link https://naver.github.io/egjs-flicking/Options#maxresizedebounce maxResizeDebounce ( Options )}
13235
13297
  */
13236
13298
  get: function () {
13237
13299
  return this._maxResizeDebounce;
@@ -13249,6 +13311,7 @@ version: 4.10.3
13249
13311
  * 모든 크기는 CSS {@link https://developer.mozilla.org/en-US/docs/Web/CSS/transform transform}이 엘리먼트에 적용되기 이전의 크기를 사용할 것입니다.
13250
13312
  * @type {boolean}
13251
13313
  * @default false
13314
+ * @see {@link https://naver.github.io/egjs-flicking/Options#usefractionalsize useFractionalSize ( Options )}
13252
13315
  */
13253
13316
  get: function () {
13254
13317
  return this._useFractionalSize;
@@ -14115,7 +14178,7 @@ version: 4.10.3
14115
14178
  */
14116
14179
 
14117
14180
 
14118
- Flicking.VERSION = "4.10.3";
14181
+ Flicking.VERSION = "4.10.5-beta.0";
14119
14182
  return Flicking;
14120
14183
  }(Component);
14121
14184