luda 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) hide show
  1. checksums.yaml +4 -4
  2. data/assets/javascripts/luda-degradation.js +10 -4
  3. data/assets/javascripts/luda-degradation.js.map +1 -1
  4. data/assets/javascripts/luda-degradation.min.js +2 -2
  5. data/assets/javascripts/luda-degradation.min.js.map +1 -1
  6. data/assets/javascripts/luda-sprockets.js +2 -0
  7. data/assets/javascripts/luda.js +4003 -2083
  8. data/assets/javascripts/luda.js.map +1 -1
  9. data/assets/javascripts/luda.min.js +2 -2
  10. data/assets/javascripts/luda.min.js.map +1 -1
  11. data/assets/javascripts/luda/behaviors/disabled.js +24 -0
  12. data/assets/javascripts/luda/behaviors/enter.js +24 -33
  13. data/assets/javascripts/luda/behaviors/focus.js +98 -95
  14. data/assets/javascripts/luda/behaviors/readonly.js +20 -58
  15. data/assets/javascripts/luda/behaviors/tabulate.js +42 -62
  16. data/assets/javascripts/luda/behaviors/toggle.js +98 -144
  17. data/assets/javascripts/luda/degradation.js +9 -3
  18. data/assets/javascripts/luda/elements/form-file.js +62 -109
  19. data/assets/javascripts/luda/elements/form-select.js +101 -208
  20. data/assets/javascripts/luda/index.js +4 -2
  21. data/assets/javascripts/luda/kernel/index.js +3095 -0
  22. data/assets/javascripts/luda/mixins/disable.js +34 -0
  23. data/assets/javascripts/luda/mixins/resetable.js +46 -0
  24. data/assets/javascripts/luda/mixins/tabable.js +274 -0
  25. data/assets/javascripts/luda/mixins/toggleable.js +185 -0
  26. data/assets/javascripts/luda/patterns/carousel.js +115 -333
  27. data/assets/javascripts/luda/patterns/dropdown.js +132 -271
  28. data/assets/javascripts/luda/patterns/form-dropdown.js +59 -104
  29. data/assets/javascripts/luda/patterns/tab.js +49 -150
  30. data/assets/stylesheets/luda/default/_banner.sass +1 -1
  31. data/assets/stylesheets/luda/default/_base.sass +1 -1
  32. data/assets/stylesheets/luda/default/_functions.sass +1 -1
  33. data/assets/stylesheets/luda/default/_mixins.sass +12 -12
  34. data/assets/stylesheets/luda/default/_variables.sass +747 -1
  35. data/assets/stylesheets/luda/default/behaviors/_disabled.sass +1 -1
  36. data/assets/stylesheets/luda/default/behaviors/_focus.sass +1 -1
  37. data/assets/stylesheets/luda/default/behaviors/_readonly.sass +1 -1
  38. data/assets/stylesheets/luda/default/behaviors/_toggle.sass +1 -1
  39. data/assets/stylesheets/luda/default/elements/_badge.sass +1 -1
  40. data/assets/stylesheets/luda/default/elements/_baseline.sass +1 -1
  41. data/assets/stylesheets/luda/default/elements/_button.sass +1 -1
  42. data/assets/stylesheets/luda/default/elements/_container.sass +1 -1
  43. data/assets/stylesheets/luda/default/elements/_grid.sass +1 -1
  44. data/assets/stylesheets/luda/default/elements/_icon.sass +1 -1
  45. data/assets/stylesheets/luda/default/elements/_media.sass +1 -1
  46. data/assets/stylesheets/luda/default/elements/_overlay.sass +1 -1
  47. data/assets/stylesheets/luda/default/elements/_progress.sass +1 -1
  48. data/assets/stylesheets/luda/default/elements/_scrollbar.sass +1 -1
  49. data/assets/stylesheets/luda/default/elements/_table.sass +1 -1
  50. data/assets/stylesheets/luda/default/elements/_turbolinks-progress-bar.sass +1 -1
  51. data/assets/stylesheets/luda/default/elements/form/_form-check-radio.sass +1 -1
  52. data/assets/stylesheets/luda/default/elements/form/_form-element.sass +1 -1
  53. data/assets/stylesheets/luda/default/elements/form/_form-helper.sass +1 -1
  54. data/assets/stylesheets/luda/default/elements/form/_form-label.sass +1 -1
  55. data/assets/stylesheets/luda/default/elements/form/_form-range.sass +1 -1
  56. data/assets/stylesheets/luda/default/elements/form/_form-row.sass +1 -1
  57. data/assets/stylesheets/luda/default/elements/typography/_code.sass +1 -1
  58. data/assets/stylesheets/luda/default/elements/typography/_heading.sass +1 -1
  59. data/assets/stylesheets/luda/default/elements/typography/_link.sass +1 -1
  60. data/assets/stylesheets/luda/default/elements/typography/_list.sass +1 -1
  61. data/assets/stylesheets/luda/default/elements/typography/_mark.sass +1 -1
  62. data/assets/stylesheets/luda/default/elements/typography/_paragraph.sass +1 -1
  63. data/assets/stylesheets/luda/default/elements/typography/_quote.sass +1 -1
  64. data/assets/stylesheets/luda/default/elements/typography/_sub-sup.sass +1 -1
  65. data/assets/stylesheets/luda/default/elements/typography/_typography.sass +1 -1
  66. data/assets/stylesheets/luda/default/patterns/_alert.sass +1 -1
  67. data/assets/stylesheets/luda/default/patterns/_article.sass +1 -1
  68. data/assets/stylesheets/luda/default/patterns/_avatar.sass +1 -1
  69. data/assets/stylesheets/luda/default/patterns/_breadcrumb.sass +1 -1
  70. data/assets/stylesheets/luda/default/patterns/_button-group.sass +1 -1
  71. data/assets/stylesheets/luda/default/patterns/_button-icon.sass +1 -1
  72. data/assets/stylesheets/luda/default/patterns/_carousel.sass +1 -1
  73. data/assets/stylesheets/luda/default/patterns/_dropdown.sass +1 -1
  74. data/assets/stylesheets/luda/default/patterns/_form-dropdown.sass +1 -1
  75. data/assets/stylesheets/luda/default/patterns/_form-group.sass +1 -1
  76. data/assets/stylesheets/luda/default/patterns/_form-icon.sass +1 -1
  77. data/assets/stylesheets/luda/default/patterns/_modal.sass +1 -1
  78. data/assets/stylesheets/luda/default/patterns/_navigation.sass +1 -1
  79. data/assets/stylesheets/luda/default/patterns/_search-bar.sass +1 -1
  80. data/assets/stylesheets/luda/default/patterns/_tab.sass +1 -1
  81. data/assets/stylesheets/luda/default/utilities/_alignment.sass +1 -1
  82. data/assets/stylesheets/luda/default/utilities/_background.sass +1 -1
  83. data/assets/stylesheets/luda/default/utilities/_border.sass +1 -1
  84. data/assets/stylesheets/luda/default/utilities/_color.sass +1 -1
  85. data/assets/stylesheets/luda/default/utilities/_display.sass +1 -1
  86. data/assets/stylesheets/luda/default/utilities/_flex.sass +1 -1
  87. data/assets/stylesheets/luda/default/utilities/_float.sass +1 -1
  88. data/assets/stylesheets/luda/default/utilities/_opacity.sass +1 -1
  89. data/assets/stylesheets/luda/default/utilities/_overflow.sass +1 -1
  90. data/assets/stylesheets/luda/default/utilities/_position.sass +1 -1
  91. data/assets/stylesheets/luda/default/utilities/_shadow.sass +1 -1
  92. data/assets/stylesheets/luda/default/utilities/_shape.sass +1 -1
  93. data/assets/stylesheets/luda/default/utilities/_size.sass +1 -1
  94. data/assets/stylesheets/luda/default/utilities/_spacing.sass +1 -1
  95. data/assets/stylesheets/luda/default/utilities/_text.sass +1 -1
  96. data/assets/stylesheets/luda/default/utilities/_visibility.sass +1 -1
  97. data/assets/stylesheets/luda/default/utilities/_z-index.sass +1 -1
  98. data/assets/stylesheets/luda/{_core → kernel}/_base.sass +1 -1
  99. data/assets/stylesheets/luda/{_core → kernel}/_functions.sass +23 -0
  100. data/assets/stylesheets/luda/kernel/behaviors/_disabled.sass +7 -0
  101. data/assets/stylesheets/luda/kernel/behaviors/_focus.sass +7 -0
  102. data/assets/stylesheets/luda/kernel/behaviors/_readonly.sass +7 -0
  103. data/assets/stylesheets/luda/kernel/behaviors/_toggle.sass +4 -0
  104. data/assets/stylesheets/luda/{_core → kernel}/elements/_badge.sass +1 -1
  105. data/assets/stylesheets/luda/{_core → kernel}/elements/_baseline.sass +1 -1
  106. data/assets/stylesheets/luda/{_core → kernel}/elements/_button.sass +1 -1
  107. data/assets/stylesheets/luda/{_core → kernel}/elements/_container.sass +1 -1
  108. data/assets/stylesheets/luda/{_core → kernel}/elements/_grid.sass +1 -1
  109. data/assets/stylesheets/luda/{_core → kernel}/elements/_icon.sass +1 -1
  110. data/assets/stylesheets/luda/{_core → kernel}/elements/_media.sass +1 -1
  111. data/assets/stylesheets/luda/{_core → kernel}/elements/_overlay.sass +1 -1
  112. data/assets/stylesheets/luda/{_core → kernel}/elements/_progress.sass +1 -1
  113. data/assets/stylesheets/luda/{_core → kernel}/elements/_scrollbar.sass +7 -1
  114. data/assets/stylesheets/luda/{_core → kernel}/elements/_table.sass +1 -1
  115. data/assets/stylesheets/luda/kernel/elements/_turbolinks-progress-bar.sass +5 -0
  116. data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-check-radio.sass +1 -1
  117. data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-element.sass +1 -1
  118. data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-helper.sass +1 -1
  119. data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-label.sass +1 -1
  120. data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-range.sass +1 -1
  121. data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-row.sass +13 -28
  122. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_code.sass +1 -1
  123. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_heading.sass +1 -1
  124. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_link.sass +1 -1
  125. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_list.sass +1 -1
  126. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_mark.sass +1 -1
  127. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_paragraph.sass +1 -1
  128. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_quote.sass +1 -1
  129. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_sub-sup.sass +1 -1
  130. data/assets/stylesheets/luda/kernel/elements/typography/_typography.sass +6 -0
  131. data/assets/stylesheets/luda/{_core → kernel}/mixins/_base.sass +0 -0
  132. data/assets/stylesheets/luda/{_core → kernel}/mixins/_browser.sass +0 -0
  133. data/assets/stylesheets/luda/{_core → kernel}/mixins/_button.sass +0 -0
  134. data/assets/stylesheets/luda/{_core → kernel}/mixins/_disabled.sass +1 -0
  135. data/assets/stylesheets/luda/{_core → kernel}/mixins/_dropdown.sass +0 -0
  136. data/assets/stylesheets/luda/{_core → kernel}/mixins/_focus.sass +0 -0
  137. data/assets/stylesheets/luda/{_core → kernel}/mixins/_form.sass +0 -0
  138. data/assets/stylesheets/luda/{_core → kernel}/mixins/_install.sass +0 -0
  139. data/assets/stylesheets/luda/{_core → kernel}/mixins/_media-query.sass +0 -0
  140. data/assets/stylesheets/luda/{_core → kernel}/mixins/_overlay.sass +0 -0
  141. data/assets/stylesheets/luda/{_core → kernel}/mixins/_sass-lint-fix.sass +0 -0
  142. data/assets/stylesheets/luda/{_core → kernel}/mixins/_typography.sass +0 -0
  143. data/assets/stylesheets/luda/{_core → kernel}/patterns/_alert.sass +1 -1
  144. data/assets/stylesheets/luda/{_core → kernel}/patterns/_article.sass +1 -1
  145. data/assets/stylesheets/luda/{_core → kernel}/patterns/_avatar.sass +1 -1
  146. data/assets/stylesheets/luda/{_core → kernel}/patterns/_breadcrumb.sass +1 -1
  147. data/assets/stylesheets/luda/{_core → kernel}/patterns/_button-group.sass +1 -1
  148. data/assets/stylesheets/luda/{_core → kernel}/patterns/_button-icon.sass +1 -1
  149. data/assets/stylesheets/luda/{_core → kernel}/patterns/_carousel.sass +2 -2
  150. data/assets/stylesheets/luda/{_core → kernel}/patterns/_dropdown.sass +1 -1
  151. data/assets/stylesheets/luda/{_core → kernel}/patterns/_form-dropdown.sass +6 -1
  152. data/assets/stylesheets/luda/{_core → kernel}/patterns/_form-group.sass +1 -1
  153. data/assets/stylesheets/luda/{_core → kernel}/patterns/_form-icon.sass +1 -1
  154. data/assets/stylesheets/luda/{_core → kernel}/patterns/_modal.sass +1 -1
  155. data/assets/stylesheets/luda/{_core → kernel}/patterns/_navigation.sass +1 -1
  156. data/assets/stylesheets/luda/{_core → kernel}/patterns/_search-bar.sass +1 -1
  157. data/assets/stylesheets/luda/{_core → kernel}/patterns/_tab.sass +1 -1
  158. data/assets/stylesheets/luda/{_core → kernel}/utilities/_alignment.sass +1 -1
  159. data/assets/stylesheets/luda/{_core → kernel}/utilities/_background.sass +1 -1
  160. data/assets/stylesheets/luda/{_core → kernel}/utilities/_border.sass +1 -1
  161. data/assets/stylesheets/luda/{_core → kernel}/utilities/_color.sass +1 -1
  162. data/assets/stylesheets/luda/{_core → kernel}/utilities/_display.sass +1 -1
  163. data/assets/stylesheets/luda/{_core → kernel}/utilities/_flex.sass +1 -1
  164. data/assets/stylesheets/luda/{_core → kernel}/utilities/_float.sass +1 -1
  165. data/assets/stylesheets/luda/{_core → kernel}/utilities/_opacity.sass +1 -1
  166. data/assets/stylesheets/luda/{_core → kernel}/utilities/_overflow.sass +1 -1
  167. data/assets/stylesheets/luda/{_core → kernel}/utilities/_position.sass +1 -1
  168. data/assets/stylesheets/luda/{_core → kernel}/utilities/_shadow.sass +1 -1
  169. data/assets/stylesheets/luda/{_core → kernel}/utilities/_shape.sass +1 -1
  170. data/assets/stylesheets/luda/{_core → kernel}/utilities/_size.sass +1 -1
  171. data/assets/stylesheets/luda/{_core → kernel}/utilities/_spacing.sass +1 -1
  172. data/assets/stylesheets/luda/{_core → kernel}/utilities/_text.sass +1 -1
  173. data/assets/stylesheets/luda/{_core → kernel}/utilities/_visibility.sass +1 -1
  174. data/assets/stylesheets/luda/{_core → kernel}/utilities/_z-index.sass +1 -1
  175. data/lib/luda/version.rb +1 -1
  176. metadata +86 -89
  177. data/assets/javascripts/luda/constants.js +0 -18
  178. data/assets/javascripts/luda/dom.js +0 -143
  179. data/assets/javascripts/luda/event.js +0 -201
  180. data/assets/javascripts/luda/factory.js +0 -334
  181. data/assets/javascripts/luda/install.js +0 -75
  182. data/assets/javascripts/luda/static.js +0 -224
  183. data/assets/javascripts/luda/utilities.js +0 -16
  184. data/assets/stylesheets/luda/_core/_variables.sass +0 -742
  185. data/assets/stylesheets/luda/_core/behaviors/_disabled.sass +0 -7
  186. data/assets/stylesheets/luda/_core/behaviors/_focus.sass +0 -7
  187. data/assets/stylesheets/luda/_core/behaviors/_readonly.sass +0 -14
  188. data/assets/stylesheets/luda/_core/behaviors/_toggle.sass +0 -4
  189. data/assets/stylesheets/luda/_core/elements/_turbolinks-progress-bar.sass +0 -5
  190. data/assets/stylesheets/luda/_core/elements/typography/_typography.sass +0 -6
@@ -1,201 +0,0 @@
1
- //= require ./install
2
- //= require ./dom
3
- (function (global, factory) {
4
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('./install.js'), require('./dom.js')) :
5
- typeof define === 'function' && define.amd ? define(['./install.js', './dom.js'], factory) :
6
- (factory());
7
- }(this, (function () { 'use strict';
8
-
9
- var splice = [].splice;
10
-
11
- luda({
12
- _SWIPE_DISTANCE: 10,
13
- _EVENT_TYPE_PREFIX: 'luda',
14
- _SWIPE_LEFT: 'swipeleft',
15
- _SWIPE_RIGHT: 'swiperight',
16
- _SWIPE_UP: 'swipeup',
17
- _SWIPE_DOWN: 'swipedown',
18
- _SWIPE_LEFT_OR_UP: 'swipeleft or swipeup',
19
- _SWIPE_RIGHT_OR_DOWN: 'swiperight or swipedown',
20
- _DOC_READY: 'docready',
21
- _FORM_RESET: 'reset',
22
- eventPath: function(event) {
23
- var path;
24
- if (event.composedPath) {
25
- return path = event.composedPath();
26
- } else if (event.path) {
27
- return path = event.path;
28
- } else {
29
- return path = [event.target].concat(luda.$parents('*', event.target));
30
- }
31
- },
32
- on: function(event, ...selector) {
33
- var handler, ref;
34
- ref = selector, [...selector] = ref, [handler] = splice.call(selector, -1);
35
- switch (event) {
36
- case this._DOC_READY:
37
- return this._onDocReady(handler);
38
- case this._FORM_RESET:
39
- return this._onReset(selector[0], handler);
40
- case this._SWIPE_LEFT:
41
- case this._SWIPE_RIGHT:
42
- case this._SWIPE_UP:
43
- case this._SWIPE_DOWN:
44
- case this._SWIPE_LEFT_OR_UP:
45
- case this._SWIPE_RIGHT_OR_DOWN:
46
- return this._onSwipe(event, selector[0], handler);
47
- default:
48
- return this._on(event, selector[0], handler);
49
- }
50
- },
51
- onOpposite: function(event, selector, handler) {
52
- var _self;
53
- _self = this;
54
- return document.addEventListener(event, function(e) {
55
- var trigger;
56
- trigger = _self.eventPath(e).every(function($element) {
57
- return !$element.matches || !$element.matches(selector);
58
- });
59
- if (trigger) {
60
- return handler(e);
61
- }
62
- });
63
- },
64
- dispatch: function($target, type, detail, delayMilliseconds, options = {}) {
65
- var evt;
66
- if (typeof options.bubbles !== 'boolean') {
67
- options.bubbles = true;
68
- }
69
- if (typeof options.cancelable !== 'boolean') {
70
- options.cancelable = true;
71
- }
72
- if (typeof options.composed !== 'boolean') {
73
- options.composed = true;
74
- }
75
- evt = new Event(`${this._EVENT_TYPE_PREFIX}:${type}`, options);
76
- evt.detail = detail;
77
- if (typeof delayMilliseconds === 'number') {
78
- return setTimeout(function() {
79
- if ($target) {
80
- return $target.dispatchEvent(evt);
81
- }
82
- }, delayMilliseconds);
83
- } else {
84
- $target.dispatchEvent(evt);
85
- return evt;
86
- }
87
- },
88
- _onDocReady: function(handler) {
89
- if (document.readyState === 'loading') {
90
- return document.addEventListener('DOMContentLoaded', handler);
91
- } else {
92
- return handler();
93
- }
94
- },
95
- _onReset: function(selector, handler) {
96
- return document.addEventListener('reset', function(e) {
97
- if (selector != null) {
98
- return luda.$children(selector, e.target).forEach(function($element) {
99
- return handler.bind($element)(e);
100
- });
101
- } else {
102
- return handler(e);
103
- }
104
- });
105
- },
106
- _onSwipe: function(event, selector, handler) {
107
- var $touchStartElement, _self, touchStartE, touchStartX, touchStartY, watch;
108
- _self = this;
109
- watch = false;
110
- $touchStartElement = document;
111
- touchStartE = null;
112
- touchStartX = 0;
113
- touchStartY = 0;
114
- document.addEventListener('touchstart', function(e) {
115
- if (e.touches.length === 1) {
116
- touchStartX = e.touches[0].screenX;
117
- touchStartY = e.touches[0].screenY;
118
- if (selector != null) {
119
- return _self.eventPath(e).some(function($element) {
120
- if ($element.matches && $element.matches(selector)) {
121
- $touchStartElement = $element;
122
- touchStartE = e;
123
- watch = true;
124
- return true;
125
- }
126
- });
127
- } else {
128
- return watch = true;
129
- }
130
- }
131
- });
132
- return document.addEventListener('touchmove', function(e) {
133
- var eventX, eventXOrY, eventY, touchDistanceX, touchDistanceY;
134
- if (watch && e.touches.length === 1) {
135
- touchDistanceX = e.touches[0].screenX - touchStartX;
136
- touchDistanceY = e.touches[0].screenY - touchStartY;
137
- eventX = void 0;
138
- eventY = void 0;
139
- eventXOrY = void 0;
140
- if (Math.abs(touchDistanceX) >= _self._SWIPE_DISTANCE) {
141
- if (touchDistanceX > 0) {
142
- eventX = _self._SWIPE_RIGHT;
143
- } else {
144
- eventX = _self._SWIPE_LEFT;
145
- }
146
- }
147
- if (Math.abs(touchDistanceY) >= _self._SWIPE_DISTANCE) {
148
- if (touchDistanceY > 0) {
149
- eventY = _self._SWIPE_DOWN;
150
- } else {
151
- eventY = _self._SWIPE_UP;
152
- }
153
- }
154
- if (eventX === _self._SWIPE_LEFT || eventY === _self._SWIPE_UP) {
155
- eventXOrY = _self._SWIPE_LEFT_OR_UP;
156
- }
157
- if (eventX === _self._SWIPE_RIGHT || eventY === _self._SWIPE_DOWN) {
158
- eventXOrY = _self._SWIPE_RIGHT_OR_DOWN;
159
- }
160
- if (((eventX != null) && eventX === event) || ((eventY != null) && eventY === event) || eventXOrY === event) {
161
- if (selector != null) {
162
- return _self.eventPath(e).some(function($element) {
163
- if ($element === $touchStartElement) {
164
- watch = false;
165
- handler.bind($element)(touchStartE, e);
166
- return true;
167
- }
168
- });
169
- } else {
170
- watch = false;
171
- return handler(touchStartE, e);
172
- }
173
- }
174
- }
175
- });
176
- },
177
- _on: function(event, selector, handler) {
178
- var _self;
179
- if (selector === window) {
180
- return window.addEventListener(event, function(e) {
181
- return handler(e);
182
- });
183
- } else {
184
- _self = this;
185
- return document.addEventListener(event, function(e) {
186
- if (selector != null) {
187
- return _self.eventPath(e).some(function($element) {
188
- if ($element.matches && $element.matches(selector)) {
189
- handler.bind($element)(e);
190
- return true;
191
- }
192
- });
193
- } else {
194
- return handler(e);
195
- }
196
- });
197
- }
198
- }
199
- });
200
-
201
- })));
@@ -1,334 +0,0 @@
1
- //= require ./install
2
- //= require ./utilities
3
- //= require ./dom
4
- //= require ./event
5
- (function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('./install.js'), require('./utilities.js'), require('./dom.js'), require('./event.js')) :
7
- typeof define === 'function' && define.amd ? define(['./install.js', './utilities.js', './dom.js', './event.js'], factory) :
8
- (factory());
9
- }(this, (function () { 'use strict';
10
-
11
- var Factory;
12
-
13
- luda(Factory = (function() {
14
- class Factory {
15
- static _ACTIVATE_EVENT_TYPE() {
16
- return `${this._SCOPE}:activate`;
17
- }
18
-
19
- static _ACTIVATED_EVENT_TYPE() {
20
- return `${this._SCOPE}:activated`;
21
- }
22
-
23
- static _DEACTIVATE_EVENT_TYPE() {
24
- return `${this._SCOPE}:deactivate`;
25
- }
26
-
27
- static _DEACTIVATED_EVENT_TYPE() {
28
- return `${this._SCOPE}:deactivated`;
29
- }
30
-
31
- static _ACTIVATING_MARK_ATTRIBUTE() {
32
- return `data-${this._SCOPE}-activating`;
33
- }
34
-
35
- static _DEACTIVATING_MARK_ATTRIBUTE() {
36
- return `data-${this._SCOPE}-deactivating`;
37
- }
38
-
39
- _hasDescendant(descendant) {
40
- if (this._children.length && descendant) {
41
- if (this._children.includes(descendant)) {
42
- return true;
43
- }
44
- return this._children.some(function(child) {
45
- return child._hasDescendant(descendant);
46
- });
47
- } else {
48
- return false;
49
- }
50
- }
51
-
52
- _observe() {
53
- this._observer = new MutationObserver(this._onMutations.bind(this));
54
- return this._observer.observe(this._$component, this.constructor._observerConfig);
55
- }
56
-
57
- _disconnect() {
58
- this._observer.disconnect();
59
- return this._observer = null;
60
- }
61
-
62
- _activatePrevented($ele, detail) {
63
- var activateEvent;
64
- activateEvent = luda.dispatch($ele, this.constructor._ACTIVATE_EVENT_TYPE(), detail);
65
- return activateEvent.defaultPrevented;
66
- }
67
-
68
- _deactivatePrevented($ele, detail) {
69
- var deactivateEvent;
70
- deactivateEvent = luda.dispatch($ele, this.constructor._DEACTIVATE_EVENT_TYPE(), detail);
71
- return deactivateEvent.defaultPrevented;
72
- }
73
-
74
- _handleActivateEnd($ele, detail) {
75
- var activateDuration;
76
- this._setActivatingMark(detail);
77
- activateDuration = luda.getTransitionDuration($ele);
78
- luda.dispatch($ele, this.constructor._ACTIVATED_EVENT_TYPE(), detail, activateDuration);
79
- setTimeout(() => {
80
- if (this._$component) {
81
- return this._removeActivatingMark();
82
- }
83
- }, activateDuration);
84
- return activateDuration;
85
- }
86
-
87
- _handleDeactivateEnd($ele, detail) {
88
- var deactivateDuration;
89
- this._setDeactivatingMark(detail);
90
- deactivateDuration = luda.getTransitionDuration($ele);
91
- luda.dispatch($ele, this.constructor._DEACTIVATED_EVENT_TYPE(), detail, deactivateDuration);
92
- setTimeout(() => {
93
- if (this._$component) {
94
- return this._removeDeactivatingMark();
95
- }
96
- }, deactivateDuration);
97
- return deactivateDuration;
98
- }
99
-
100
- _handleActivateCancel($ele, detail) {
101
- if (this._isActivating()) {
102
- luda.dispatch($ele, this.constructor._ACTIVATED_EVENT_TYPE(), detail);
103
- return this._removeActivatingMark();
104
- }
105
- }
106
-
107
- _handleDeactivateCancel($ele, detail) {
108
- if (this._isDeactivating()) {
109
- luda.dispatch($ele, this.constructor._DEACTIVATED_EVENT_TYPE(), detail);
110
- return this._removeDeactivatingMark();
111
- }
112
- }
113
-
114
- _isActivating() {
115
- return this._$component.hasAttribute(this.constructor._ACTIVATING_MARK_ATTRIBUTE());
116
- }
117
-
118
- _isDeactivating() {
119
- return this._$component.hasAttribute(this.constructor._DEACTIVATING_MARK_ATTRIBUTE());
120
- }
121
-
122
- _isTransitioning() {
123
- return this._isActivating() || this._isDeactivating();
124
- }
125
-
126
- _getActivatingMark() {
127
- return this._$component.getAttribute(this.constructor._ACTIVATING_MARK_ATTRIBUTE());
128
- }
129
-
130
- _getDeactivatingMark() {
131
- return this._$component.getAttribute(this.constructor._DEACTIVATING_MARK_ATTRIBUTE());
132
- }
133
-
134
- _removeActivatingMark() {
135
- return this._$component.removeAttribute(this.constructor._ACTIVATING_MARK_ATTRIBUTE());
136
- }
137
-
138
- _removeDeactivatingMark() {
139
- return this._$component.removeAttribute(this.constructor._DEACTIVATING_MARK_ATTRIBUTE());
140
- }
141
-
142
- _setActivatingMark(value) {
143
- return this._$component.setAttribute(this.constructor._ACTIVATING_MARK_ATTRIBUTE(), value);
144
- }
145
-
146
- _setDeactivatingMark(value) {
147
- return this._$component.setAttribute(this.constructor._DEACTIVATING_MARK_ATTRIBUTE(), value);
148
- }
149
-
150
- static create($component) {
151
- var $family, componentIsElementInstance, instance, parent;
152
- componentIsElementInstance = $component instanceof Element;
153
- if (!componentIsElementInstance) {
154
- throw new Error(this._$COMPONENT_INVALID_ERROR);
155
- }
156
- $family = this._query$family($component);
157
- instance = this.query($component);
158
- if ($family._$parent) {
159
- if (parent = this.query($family._$parent)) {
160
- if (!instance) {
161
- this._instances.push(instance = this._createInstance($component));
162
- }
163
- if (instance._parent !== parent) {
164
- parent._children.push(instance) && (instance._parent = parent);
165
- }
166
- $family._$children.forEach(($child) => {
167
- return this.create($child);
168
- });
169
- return instance;
170
- } else {
171
- this.create($family._$parent);
172
- return this.query($component);
173
- }
174
- } else {
175
- if (!instance) {
176
- this._instances.push(instance = this._createInstance($component));
177
- }
178
- $family._$children.forEach(($child) => {
179
- return this.create($child);
180
- });
181
- return instance;
182
- }
183
- }
184
-
185
- static destroy(instance$component) {
186
- var attribute, instance, results, value;
187
- instance = this.query(instance$component);
188
- if (instance) {
189
- if (instance._observer) {
190
- instance._disconnect();
191
- }
192
- if (instance._destroy) {
193
- instance._destroy();
194
- }
195
- while (instance._children.length) {
196
- this.destroy(instance._children[0]);
197
- }
198
- if (instance._parent) {
199
- luda.except(instance, instance._parent._children);
200
- }
201
- luda.except(instance, this._instances);
202
- results = [];
203
- for (attribute in instance) {
204
- value = instance[attribute];
205
- results.push(instance[attribute] = null);
206
- }
207
- return results;
208
- }
209
- }
210
-
211
- static query(instance$component) {
212
- var instance;
213
- instance = null;
214
- if (instance$component instanceof this && this._instances.includes(instance$component)) {
215
- instance = instance$component;
216
- } else if (instance$component instanceof Element) {
217
- this._instances.some(function(inited) {
218
- if (inited._$component === instance$component) {
219
- instance = inited;
220
- return true;
221
- }
222
- });
223
- }
224
- return instance;
225
- }
226
-
227
- static _query$family($component) {
228
- var _$children, _$parent;
229
- _$parent = null;
230
- _$children = [];
231
- if (this._SELECTOR) {
232
- _$parent = luda.$parent(this._SELECTOR, $component);
233
- _$children = luda.$unnested(this._SELECTOR, $component, this._SELECTOR);
234
- }
235
- return {_$parent, _$children};
236
- }
237
-
238
- static _createInstance($component) {
239
- var instance;
240
- instance = new this();
241
- instance._$component = $component;
242
- instance._parent = null;
243
- instance._children = [];
244
- instance._observer = null;
245
- if (instance._constructor) {
246
- instance._constructor();
247
- }
248
- if (!(instance._observer && instance._onMutations && this._observerConfig)) {
249
- instance._observe();
250
- }
251
- return instance;
252
- }
253
-
254
- static _onEleAdded($ele) {
255
- return Factory._onEleAddedOrRemoved($ele, 'create');
256
- }
257
-
258
- static _onEleRemoved($ele) {
259
- return Factory._onEleAddedOrRemoved($ele, 'destroy');
260
- }
261
-
262
- static _onEleAddedOrRemoved($ele, action) {
263
- return Factory._Observed.forEach(function(Observed) {
264
- if ($ele.matches(Observed._SELECTOR)) {
265
- return Observed[action]($ele);
266
- }
267
- return luda.$children(Observed._SELECTOR, $ele).forEach(function($child) {
268
- return Observed[action]($child);
269
- });
270
- });
271
- }
272
-
273
- static _observe(classObj) {
274
- if (!Factory._observer) {
275
- Factory._observer = luda._observeDom(Factory._onEleAdded, Factory._onEleRemoved);
276
- }
277
- if (!Factory._Observed.includes(classObj)) {
278
- return Factory._Observed.push(classObj);
279
- }
280
- }
281
-
282
- static _install() {
283
- var exposed, self;
284
- self = this;
285
- if (this === Factory) {
286
- return this;
287
- }
288
- if (!(this._SELECTOR || typeof this._SELECTOR !== 'string')) {
289
- throw new Error(this._COMPONENT_NO_SELECTOR_ERROR);
290
- }
291
- if (!this.hasOwnProperty('_instances')) {
292
- this._instances = [];
293
- }
294
- if (typeof this._init === 'function') {
295
- exposed = this._init();
296
- }
297
- luda.on(luda._DOC_READY, function() {
298
- luda.$children(self._SELECTOR).forEach(function($component) {
299
- return self.create($component);
300
- });
301
- return Factory._observe(self);
302
- });
303
- if (exposed) {
304
- return exposed;
305
- } else {
306
- return this;
307
- }
308
- }
309
-
310
- }
311
- Factory._SCOPE = 'Factory';
312
-
313
- Factory._COMPONENT_NO_SELECTOR_ERROR = 'Extended component must has a css selector';
314
-
315
- Factory._$COMPONENT_INVALID_ERROR = '@param $component must be an instance of Element';
316
-
317
- Factory._SELECTOR = '';
318
-
319
- Factory._instances = [];
320
-
321
- Factory._Observed = [];
322
-
323
- Factory._observer = null;
324
-
325
- Factory._observerConfig = {
326
- childList: true,
327
- subtree: true
328
- };
329
-
330
- return Factory;
331
-
332
- }).call(this));
333
-
334
- })));