a zip code crypto-currency system good for red ONLY

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import { isActivatedDisabled } from './activator-base';
  2. var Activator = (function () {
  3. function Activator(app, config, dom) {
  4. this.app = app;
  5. this.dom = dom;
  6. this._queue = [];
  7. this._active = [];
  8. this.activatedDelay = ADD_ACTIVATED_DEFERS;
  9. this.clearDelay = CLEAR_STATE_DEFERS;
  10. this._css = config.get('activatedClass', 'activated');
  11. }
  12. Activator.prototype.clickAction = function (ev, activatableEle, _startCoord) {
  13. if (isActivatedDisabled(ev, activatableEle)) {
  14. return;
  15. }
  16. // a click happened, so immediately deactive all activated elements
  17. this._scheduleClear();
  18. this._queue.length = 0;
  19. for (var i = 0; i < this._active.length; i++) {
  20. this._active[i].classList.remove(this._css);
  21. }
  22. this._active.length = 0;
  23. // then immediately activate this element
  24. if (activatableEle && activatableEle.parentNode) {
  25. this._active.push(activatableEle);
  26. activatableEle.classList.add(this._css);
  27. }
  28. };
  29. Activator.prototype.downAction = function (ev, activatableEle, _startCoord) {
  30. var _this = this;
  31. // the user just pressed down
  32. if (isActivatedDisabled(ev, activatableEle)) {
  33. return;
  34. }
  35. this.unscheduleClear();
  36. this.deactivate(true);
  37. // queue to have this element activated
  38. this._queue.push(activatableEle);
  39. this._activeDefer = this.dom.write(function () {
  40. _this._activeDefer = null;
  41. var activatableEle;
  42. for (var i = 0; i < _this._queue.length; i++) {
  43. activatableEle = _this._queue[i];
  44. _this._active.push(activatableEle);
  45. activatableEle.classList.add(_this._css);
  46. }
  47. _this._queue.length = 0;
  48. }, this.activatedDelay);
  49. };
  50. // the user was pressing down, then just let up
  51. Activator.prototype.upAction = function (_ev, _activatableEle, _startCoord) {
  52. this._scheduleClear();
  53. };
  54. Activator.prototype._scheduleClear = function () {
  55. var _this = this;
  56. if (this._clearDefer) {
  57. return;
  58. }
  59. this._clearDefer = this.dom.write(function () {
  60. _this.clearState(true);
  61. _this._clearDefer = null;
  62. }, this.clearDelay);
  63. };
  64. Activator.prototype.unscheduleClear = function () {
  65. if (this._clearDefer) {
  66. this._clearDefer();
  67. this._clearDefer = null;
  68. }
  69. };
  70. // all states should return to normal
  71. Activator.prototype.clearState = function (animated) {
  72. var _this = this;
  73. if (!this.app.isEnabled()) {
  74. // the app is actively disabled, so don't bother deactivating anything.
  75. // this makes it easier on the GPU so it doesn't have to redraw any
  76. // buttons during a transition. This will retry in XX milliseconds.
  77. this.dom.write(function () {
  78. _this.clearState(animated);
  79. }, 600);
  80. }
  81. else {
  82. // not actively transitioning, good to deactivate any elements
  83. this.deactivate(animated);
  84. }
  85. };
  86. // remove the active class from all active elements
  87. Activator.prototype.deactivate = function (animated) {
  88. this._clearDeferred();
  89. this._queue.length = 0;
  90. var ele;
  91. for (var i = 0; i < this._active.length; i++) {
  92. ele = this._active[i];
  93. ele.style[this.dom.plt.Css.transition] = animated ? '' : 'none';
  94. ele.classList.remove(this._css);
  95. }
  96. this._active.length = 0;
  97. };
  98. Activator.prototype._clearDeferred = function () {
  99. // Clear any active deferral
  100. if (this._activeDefer) {
  101. this._activeDefer();
  102. this._activeDefer = null;
  103. }
  104. };
  105. return Activator;
  106. }());
  107. export { Activator };
  108. var ADD_ACTIVATED_DEFERS = 80;
  109. var CLEAR_STATE_DEFERS = 80;
  110. //# sourceMappingURL=activator.js.map