luda 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (246) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +5 -0
  4. data/assets/javascripts/luda-degradation.js +131 -0
  5. data/assets/javascripts/luda-degradation.js.map +1 -0
  6. data/assets/javascripts/luda-degradation.min.js +7 -0
  7. data/assets/javascripts/luda-degradation.min.js.map +1 -0
  8. data/assets/javascripts/luda-sprockets.js +11 -0
  9. data/assets/javascripts/luda.js +2024 -0
  10. data/assets/javascripts/luda.js.map +1 -0
  11. data/assets/javascripts/luda.min.js +7 -0
  12. data/assets/javascripts/luda.min.js.map +1 -0
  13. data/assets/javascripts/luda/behaviours/enter-click.js +38 -0
  14. data/assets/javascripts/luda/behaviours/focus.js +103 -0
  15. data/assets/javascripts/luda/behaviours/radio-tab.js +69 -0
  16. data/assets/javascripts/luda/behaviours/readonly.js +57 -0
  17. data/assets/javascripts/luda/behaviours/toggle.js +104 -0
  18. data/assets/javascripts/luda/collections/carousel.js +314 -0
  19. data/assets/javascripts/luda/collections/dropdown.js +269 -0
  20. data/assets/javascripts/luda/collections/form-dropdown.js +112 -0
  21. data/assets/javascripts/luda/collections/tab.js +117 -0
  22. data/assets/javascripts/luda/component.js +240 -0
  23. data/assets/javascripts/luda/constants.js +18 -0
  24. data/assets/javascripts/luda/degradation.js +125 -0
  25. data/assets/javascripts/luda/dom.js +81 -0
  26. data/assets/javascripts/luda/elements/form-file.js +104 -0
  27. data/assets/javascripts/luda/elements/form-select.js +212 -0
  28. data/assets/javascripts/luda/event.js +193 -0
  29. data/assets/javascripts/luda/index.js +20 -0
  30. data/assets/javascripts/luda/install.js +75 -0
  31. data/assets/javascripts/luda/singleton.js +77 -0
  32. data/assets/javascripts/luda/utilities.js +16 -0
  33. data/assets/stylesheets/luda/_core/_base.sass +430 -0
  34. data/assets/stylesheets/luda/_core/_functions.sass +240 -0
  35. data/assets/stylesheets/luda/_core/_variables.sass +710 -0
  36. data/assets/stylesheets/luda/_core/behaviours/_disabled.sass +12 -0
  37. data/assets/stylesheets/luda/_core/behaviours/_focus.sass +7 -0
  38. data/assets/stylesheets/luda/_core/behaviours/_readonly.sass +16 -0
  39. data/assets/stylesheets/luda/_core/behaviours/_toggle.sass +4 -0
  40. data/assets/stylesheets/luda/_core/collections/_alert.sass +24 -0
  41. data/assets/stylesheets/luda/_core/collections/_avatar.sass +117 -0
  42. data/assets/stylesheets/luda/_core/collections/_breadcrumb.sass +21 -0
  43. data/assets/stylesheets/luda/_core/collections/_button-group.sass +67 -0
  44. data/assets/stylesheets/luda/_core/collections/_button-icon.sass +46 -0
  45. data/assets/stylesheets/luda/_core/collections/_carousel.sass +132 -0
  46. data/assets/stylesheets/luda/_core/collections/_dropdown.sass +60 -0
  47. data/assets/stylesheets/luda/_core/collections/_form-button.sass +23 -0
  48. data/assets/stylesheets/luda/_core/collections/_form-dropdown.sass +21 -0
  49. data/assets/stylesheets/luda/_core/collections/_form-group.sass +48 -0
  50. data/assets/stylesheets/luda/_core/collections/_form-icon.sass +71 -0
  51. data/assets/stylesheets/luda/_core/collections/_media.sass +55 -0
  52. data/assets/stylesheets/luda/_core/collections/_modal.sass +12 -0
  53. data/assets/stylesheets/luda/_core/collections/_nav.sass +162 -0
  54. data/assets/stylesheets/luda/_core/collections/_tab.sass +18 -0
  55. data/assets/stylesheets/luda/_core/elements/_badge.sass +19 -0
  56. data/assets/stylesheets/luda/_core/elements/_baseline.sass +22 -0
  57. data/assets/stylesheets/luda/_core/elements/_button.sass +136 -0
  58. data/assets/stylesheets/luda/_core/elements/_container.sass +8 -0
  59. data/assets/stylesheets/luda/_core/elements/_grid.sass +55 -0
  60. data/assets/stylesheets/luda/_core/elements/_icon.sass +110 -0
  61. data/assets/stylesheets/luda/_core/elements/_overlay.sass +11 -0
  62. data/assets/stylesheets/luda/_core/elements/_progress.sass +31 -0
  63. data/assets/stylesheets/luda/_core/elements/_scrollbar.sass +21 -0
  64. data/assets/stylesheets/luda/_core/elements/_table.sass +102 -0
  65. data/assets/stylesheets/luda/_core/elements/_turbolinks-progress-bar.sass +5 -0
  66. data/assets/stylesheets/luda/_core/elements/form/_form-check-radio.sass +105 -0
  67. data/assets/stylesheets/luda/_core/elements/form/_form-element.sass +83 -0
  68. data/assets/stylesheets/luda/_core/elements/form/_form-helper.sass +66 -0
  69. data/assets/stylesheets/luda/_core/elements/form/_form-label.sass +20 -0
  70. data/assets/stylesheets/luda/_core/elements/form/_form-range.sass +92 -0
  71. data/assets/stylesheets/luda/_core/elements/form/_form-row.sass +214 -0
  72. data/assets/stylesheets/luda/_core/elements/typography/_code.sass +27 -0
  73. data/assets/stylesheets/luda/_core/elements/typography/_link.sass +15 -0
  74. data/assets/stylesheets/luda/_core/elements/typography/_list.sass +14 -0
  75. data/assets/stylesheets/luda/_core/elements/typography/_mark.sass +7 -0
  76. data/assets/stylesheets/luda/_core/elements/typography/_quote.sass +68 -0
  77. data/assets/stylesheets/luda/_core/elements/typography/_sub-sup.sass +16 -0
  78. data/assets/stylesheets/luda/_core/elements/typography/_typography.sass +52 -0
  79. data/assets/stylesheets/luda/_core/mixins/_browser.sass +15 -0
  80. data/assets/stylesheets/luda/_core/mixins/_button.sass +90 -0
  81. data/assets/stylesheets/luda/_core/mixins/_dropdown.sass +40 -0
  82. data/assets/stylesheets/luda/_core/mixins/_focus.sass +3 -0
  83. data/assets/stylesheets/luda/_core/mixins/_form.sass +27 -0
  84. data/assets/stylesheets/luda/_core/mixins/_install.sass +7 -0
  85. data/assets/stylesheets/luda/_core/mixins/_media-query.sass +66 -0
  86. data/assets/stylesheets/luda/_core/mixins/_overlay.sass +14 -0
  87. data/assets/stylesheets/luda/_core/mixins/_sass-lint-fix.sass +3 -0
  88. data/assets/stylesheets/luda/_core/mixins/_typography.sass +40 -0
  89. data/assets/stylesheets/luda/_core/utilities/_align.sass +19 -0
  90. data/assets/stylesheets/luda/_core/utilities/_background.sass +88 -0
  91. data/assets/stylesheets/luda/_core/utilities/_color.sass +36 -0
  92. data/assets/stylesheets/luda/_core/utilities/_display.sass +40 -0
  93. data/assets/stylesheets/luda/_core/utilities/_flex.sass +114 -0
  94. data/assets/stylesheets/luda/_core/utilities/_float.sass +21 -0
  95. data/assets/stylesheets/luda/_core/utilities/_opacity.sass +19 -0
  96. data/assets/stylesheets/luda/_core/utilities/_overflow.sass +18 -0
  97. data/assets/stylesheets/luda/_core/utilities/_position.sass +48 -0
  98. data/assets/stylesheets/luda/_core/utilities/_shape.sass +62 -0
  99. data/assets/stylesheets/luda/_core/utilities/_size.sass +67 -0
  100. data/assets/stylesheets/luda/_core/utilities/_space.sass +227 -0
  101. data/assets/stylesheets/luda/_core/utilities/_text.sass +85 -0
  102. data/assets/stylesheets/luda/_core/utilities/_visibility.sass +11 -0
  103. data/assets/stylesheets/luda/_core/utilities/_z-index.sass +19 -0
  104. data/assets/stylesheets/luda/_default.sass +51 -0
  105. data/assets/stylesheets/luda/core/_base.sass +430 -0
  106. data/assets/stylesheets/luda/core/_functions.sass +240 -0
  107. data/assets/stylesheets/luda/core/_variables.sass +710 -0
  108. data/assets/stylesheets/luda/core/behaviours/_disabled.sass +12 -0
  109. data/assets/stylesheets/luda/core/behaviours/_focus.sass +7 -0
  110. data/assets/stylesheets/luda/core/behaviours/_readonly.sass +16 -0
  111. data/assets/stylesheets/luda/core/behaviours/_toggle.sass +4 -0
  112. data/assets/stylesheets/luda/core/collections/_alert.sass +24 -0
  113. data/assets/stylesheets/luda/core/collections/_avatar.sass +117 -0
  114. data/assets/stylesheets/luda/core/collections/_breadcrumb.sass +21 -0
  115. data/assets/stylesheets/luda/core/collections/_button-group.sass +67 -0
  116. data/assets/stylesheets/luda/core/collections/_button-icon.sass +46 -0
  117. data/assets/stylesheets/luda/core/collections/_carousel.sass +132 -0
  118. data/assets/stylesheets/luda/core/collections/_dropdown.sass +60 -0
  119. data/assets/stylesheets/luda/core/collections/_form-button.sass +23 -0
  120. data/assets/stylesheets/luda/core/collections/_form-dropdown.sass +21 -0
  121. data/assets/stylesheets/luda/core/collections/_form-group.sass +48 -0
  122. data/assets/stylesheets/luda/core/collections/_form-icon.sass +71 -0
  123. data/assets/stylesheets/luda/core/collections/_media.sass +55 -0
  124. data/assets/stylesheets/luda/core/collections/_modal.sass +12 -0
  125. data/assets/stylesheets/luda/core/collections/_nav.sass +162 -0
  126. data/assets/stylesheets/luda/core/collections/_tab.sass +18 -0
  127. data/assets/stylesheets/luda/core/elements/_badge.sass +19 -0
  128. data/assets/stylesheets/luda/core/elements/_baseline.sass +22 -0
  129. data/assets/stylesheets/luda/core/elements/_button.sass +136 -0
  130. data/assets/stylesheets/luda/core/elements/_container.sass +8 -0
  131. data/assets/stylesheets/luda/core/elements/_grid.sass +55 -0
  132. data/assets/stylesheets/luda/core/elements/_icon.sass +110 -0
  133. data/assets/stylesheets/luda/core/elements/_overlay.sass +11 -0
  134. data/assets/stylesheets/luda/core/elements/_progress.sass +31 -0
  135. data/assets/stylesheets/luda/core/elements/_scrollbar.sass +21 -0
  136. data/assets/stylesheets/luda/core/elements/_table.sass +102 -0
  137. data/assets/stylesheets/luda/core/elements/_turbolinks-progress-bar.sass +5 -0
  138. data/assets/stylesheets/luda/core/elements/form/_form-check-radio.sass +105 -0
  139. data/assets/stylesheets/luda/core/elements/form/_form-element.sass +83 -0
  140. data/assets/stylesheets/luda/core/elements/form/_form-helper.sass +66 -0
  141. data/assets/stylesheets/luda/core/elements/form/_form-label.sass +20 -0
  142. data/assets/stylesheets/luda/core/elements/form/_form-range.sass +92 -0
  143. data/assets/stylesheets/luda/core/elements/form/_form-row.sass +214 -0
  144. data/assets/stylesheets/luda/core/elements/typography/_code.sass +27 -0
  145. data/assets/stylesheets/luda/core/elements/typography/_link.sass +15 -0
  146. data/assets/stylesheets/luda/core/elements/typography/_list.sass +14 -0
  147. data/assets/stylesheets/luda/core/elements/typography/_mark.sass +7 -0
  148. data/assets/stylesheets/luda/core/elements/typography/_quote.sass +68 -0
  149. data/assets/stylesheets/luda/core/elements/typography/_sub-sup.sass +16 -0
  150. data/assets/stylesheets/luda/core/elements/typography/_typography.sass +52 -0
  151. data/assets/stylesheets/luda/core/mixins/_browser.sass +15 -0
  152. data/assets/stylesheets/luda/core/mixins/_button.sass +90 -0
  153. data/assets/stylesheets/luda/core/mixins/_dropdown.sass +40 -0
  154. data/assets/stylesheets/luda/core/mixins/_focus.sass +3 -0
  155. data/assets/stylesheets/luda/core/mixins/_form.sass +27 -0
  156. data/assets/stylesheets/luda/core/mixins/_install.sass +7 -0
  157. data/assets/stylesheets/luda/core/mixins/_media-query.sass +66 -0
  158. data/assets/stylesheets/luda/core/mixins/_overlay.sass +14 -0
  159. data/assets/stylesheets/luda/core/mixins/_sass-lint-fix.sass +3 -0
  160. data/assets/stylesheets/luda/core/mixins/_typography.sass +40 -0
  161. data/assets/stylesheets/luda/core/utilities/_align.sass +19 -0
  162. data/assets/stylesheets/luda/core/utilities/_background.sass +88 -0
  163. data/assets/stylesheets/luda/core/utilities/_color.sass +36 -0
  164. data/assets/stylesheets/luda/core/utilities/_display.sass +40 -0
  165. data/assets/stylesheets/luda/core/utilities/_flex.sass +114 -0
  166. data/assets/stylesheets/luda/core/utilities/_float.sass +21 -0
  167. data/assets/stylesheets/luda/core/utilities/_opacity.sass +19 -0
  168. data/assets/stylesheets/luda/core/utilities/_overflow.sass +18 -0
  169. data/assets/stylesheets/luda/core/utilities/_position.sass +48 -0
  170. data/assets/stylesheets/luda/core/utilities/_shape.sass +62 -0
  171. data/assets/stylesheets/luda/core/utilities/_size.sass +67 -0
  172. data/assets/stylesheets/luda/core/utilities/_space.sass +227 -0
  173. data/assets/stylesheets/luda/core/utilities/_text.sass +85 -0
  174. data/assets/stylesheets/luda/core/utilities/_visibility.sass +11 -0
  175. data/assets/stylesheets/luda/core/utilities/_z-index.sass +19 -0
  176. data/assets/stylesheets/luda/default/_banner.sass +7 -0
  177. data/assets/stylesheets/luda/default/_base.sass +6 -0
  178. data/assets/stylesheets/luda/default/_functions.sass +1 -0
  179. data/assets/stylesheets/luda/default/_mixins.sass +10 -0
  180. data/assets/stylesheets/luda/default/_variables.sass +1 -0
  181. data/assets/stylesheets/luda/default/behaviours/_disabled.sass +5 -0
  182. data/assets/stylesheets/luda/default/behaviours/_focus.sass +5 -0
  183. data/assets/stylesheets/luda/default/behaviours/_readonly.sass +5 -0
  184. data/assets/stylesheets/luda/default/behaviours/_toggle.sass +5 -0
  185. data/assets/stylesheets/luda/default/collections/_alert.sass +6 -0
  186. data/assets/stylesheets/luda/default/collections/_avatar.sass +7 -0
  187. data/assets/stylesheets/luda/default/collections/_breadcrumb.sass +6 -0
  188. data/assets/stylesheets/luda/default/collections/_button-group.sass +7 -0
  189. data/assets/stylesheets/luda/default/collections/_button-icon.sass +8 -0
  190. data/assets/stylesheets/luda/default/collections/_carousel.sass +7 -0
  191. data/assets/stylesheets/luda/default/collections/_dropdown.sass +8 -0
  192. data/assets/stylesheets/luda/default/collections/_form-button.sass +9 -0
  193. data/assets/stylesheets/luda/default/collections/_form-dropdown.sass +8 -0
  194. data/assets/stylesheets/luda/default/collections/_form-group.sass +11 -0
  195. data/assets/stylesheets/luda/default/collections/_form-icon.sass +8 -0
  196. data/assets/stylesheets/luda/default/collections/_media.sass +7 -0
  197. data/assets/stylesheets/luda/default/collections/_modal.sass +7 -0
  198. data/assets/stylesheets/luda/default/collections/_nav.sass +10 -0
  199. data/assets/stylesheets/luda/default/collections/_tab.sass +9 -0
  200. data/assets/stylesheets/luda/default/elements/_badge.sass +6 -0
  201. data/assets/stylesheets/luda/default/elements/_baseline.sass +6 -0
  202. data/assets/stylesheets/luda/default/elements/_button.sass +7 -0
  203. data/assets/stylesheets/luda/default/elements/_container.sass +6 -0
  204. data/assets/stylesheets/luda/default/elements/_form.sass +13 -0
  205. data/assets/stylesheets/luda/default/elements/_grid.sass +6 -0
  206. data/assets/stylesheets/luda/default/elements/_icon.sass +6 -0
  207. data/assets/stylesheets/luda/default/elements/_overlay.sass +6 -0
  208. data/assets/stylesheets/luda/default/elements/_progress.sass +6 -0
  209. data/assets/stylesheets/luda/default/elements/_scrollbar.sass +6 -0
  210. data/assets/stylesheets/luda/default/elements/_table.sass +6 -0
  211. data/assets/stylesheets/luda/default/elements/_turbolinks-progress-bar.sass +6 -0
  212. data/assets/stylesheets/luda/default/elements/_typography.sass +12 -0
  213. data/assets/stylesheets/luda/default/elements/form/_form-check-radio.sass +5 -0
  214. data/assets/stylesheets/luda/default/elements/form/_form-element.sass +5 -0
  215. data/assets/stylesheets/luda/default/elements/form/_form-helper.sass +5 -0
  216. data/assets/stylesheets/luda/default/elements/form/_form-label.sass +5 -0
  217. data/assets/stylesheets/luda/default/elements/form/_form-range.sass +5 -0
  218. data/assets/stylesheets/luda/default/elements/form/_form-row.sass +5 -0
  219. data/assets/stylesheets/luda/default/elements/typography/_code.sass +5 -0
  220. data/assets/stylesheets/luda/default/elements/typography/_link.sass +5 -0
  221. data/assets/stylesheets/luda/default/elements/typography/_list.sass +4 -0
  222. data/assets/stylesheets/luda/default/elements/typography/_mark.sass +5 -0
  223. data/assets/stylesheets/luda/default/elements/typography/_quote.sass +5 -0
  224. data/assets/stylesheets/luda/default/elements/typography/_sub-sup.sass +5 -0
  225. data/assets/stylesheets/luda/default/elements/typography/_typography.sass +5 -0
  226. data/assets/stylesheets/luda/default/index.sass +56 -0
  227. data/assets/stylesheets/luda/default/utilities/_align.sass +5 -0
  228. data/assets/stylesheets/luda/default/utilities/_background.sass +5 -0
  229. data/assets/stylesheets/luda/default/utilities/_color.sass +5 -0
  230. data/assets/stylesheets/luda/default/utilities/_display.sass +5 -0
  231. data/assets/stylesheets/luda/default/utilities/_flex.sass +5 -0
  232. data/assets/stylesheets/luda/default/utilities/_float.sass +5 -0
  233. data/assets/stylesheets/luda/default/utilities/_opacity.sass +5 -0
  234. data/assets/stylesheets/luda/default/utilities/_overflow.sass +5 -0
  235. data/assets/stylesheets/luda/default/utilities/_position.sass +5 -0
  236. data/assets/stylesheets/luda/default/utilities/_shape.sass +5 -0
  237. data/assets/stylesheets/luda/default/utilities/_size.sass +5 -0
  238. data/assets/stylesheets/luda/default/utilities/_space.sass +5 -0
  239. data/assets/stylesheets/luda/default/utilities/_text.sass +5 -0
  240. data/assets/stylesheets/luda/default/utilities/_visibility.sass +5 -0
  241. data/assets/stylesheets/luda/default/utilities/_z-index.sass +5 -0
  242. data/lib/luda.rb +72 -0
  243. data/lib/luda/config.rb +3 -0
  244. data/lib/luda/engine.rb +11 -0
  245. data/lib/luda/version.rb +3 -0
  246. metadata +302 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 895935589896879f027cb8e39db9a1a4d97e464b15bd48a3e3ce530c51a8e9a7
4
+ data.tar.gz: a20fad13c1956a9b8bb6945752abdd620ee62cd5bb3e949517017186b841a9bf
5
+ SHA512:
6
+ metadata.gz: bb6e6295e4a457573cbc334f1b05f5fb91a6883a22aa4eb88134c91bde4e87e308360ec90a2f25723a637d92a1dc732d727f9622c8e8be093e31049a103d7f6a
7
+ data.tar.gz: 27fde2192338a38a3e1283366480db794946d45a0f280abc9f24bcd54b6af20e3c712b870b529e66c28be109ab3b4219b68d22a2dd31b549c42b4e73f6a9188f
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2019 littlstonee
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # Luda
2
+
3
+ A lightweight and responsive UI framework for modern development.
4
+
5
+ ## This package has not been released official officially, this is just a demo package to occupy a package name.
@@ -0,0 +1,131 @@
1
+ /*!
2
+ * Luda degradation script 0.1.5 | https://luda.dev
3
+ * Copyright 2018 oatw | https://oatw.blog
4
+ * MIT license | http://opensource.org/licenses/MIT
5
+ */
6
+ (function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
8
+ typeof define === 'function' && define.amd ? define(factory) :
9
+ (factory());
10
+ }(this, (function () { 'use strict';
11
+
12
+ var Degradation;
13
+
14
+ Degradation = {
15
+ _URL_ATTRIBUTE: 'data-degradation-url',
16
+ _HTML: ['<div id="luda-degradation-html" ', 'style="padding:100px 30px;text-align:center">', '<h1>Your Browser Is Too Old!</h1>', '<p>', 'Please visit this site with a modern browser ', '<a target="_blank" href="https://www.google.com/chrome/">', '(Chrome recommended)', '</a>', '.</p>', '</div>'].join(''),
17
+ _CSS_PROPERTIES: [
18
+ {
19
+ display: 'flex',
20
+ position: ['sticky',
21
+ 'fixed']
22
+ },
23
+ 'transition',
24
+ 'animation'
25
+ ],
26
+ _JS_PROPERTIES: {
27
+ es6Class: 'class X {}',
28
+ es6ArrowFunction: '((x) => x)()'
29
+ },
30
+ _NOTIFY_MILLSECONDS: 500,
31
+ check: function() {
32
+ this._checkEnv();
33
+ this._checkJS(this._JS_PROPERTIES);
34
+ return this._checkCSS(this._CSS_PROPERTIES);
35
+ },
36
+ _eval: eval,
37
+ _checkEnv: function() {
38
+ if (typeof document !== 'undefined') {
39
+ if (typeof window !== 'undefined') {
40
+ return window;
41
+ }
42
+ if (typeof global !== 'undefined') {
43
+ return global;
44
+ }
45
+ }
46
+ throw new Error('Unsupported runtime environment.');
47
+ },
48
+ _checkJS: function(properties) {
49
+ var err, property, results, value;
50
+ results = [];
51
+ for (property in properties) {
52
+ value = properties[property];
53
+ try {
54
+ results.push(this._eval(value));
55
+ } catch (error) {
56
+ err = error;
57
+ this._notify();
58
+ throw new Error(property + ' ' + err);
59
+ }
60
+ }
61
+ return results;
62
+ },
63
+ _checkCSS: function(properties) {
64
+ var ele, i, len, name, property, results, value, valueEle;
65
+ ele = document.createElement('div');
66
+ results = [];
67
+ for (i = 0, len = properties.length; i < len; i++) {
68
+ property = properties[i];
69
+ if (typeof property === 'string') {
70
+ results.push(this._CSSPropertySupported(ele, property));
71
+ } else {
72
+ results.push((function() {
73
+ var results1;
74
+ results1 = [];
75
+ for (name in property) {
76
+ value = property[name];
77
+ this._CSSPropertySupported(ele, name);
78
+ if (value instanceof Array) {
79
+ results1.push((function() {
80
+ var j, len1, results2;
81
+ results2 = [];
82
+ for (j = 0, len1 = value.length; j < len1; j++) {
83
+ valueEle = value[j];
84
+ results2.push(this._CSSValueSupported(ele, name, valueEle));
85
+ }
86
+ return results2;
87
+ }).call(this));
88
+ } else {
89
+ results1.push(this._CSSValueSupported(ele, name, value));
90
+ }
91
+ }
92
+ return results1;
93
+ }).call(this));
94
+ }
95
+ }
96
+ return results;
97
+ },
98
+ _CSSPropertySupported: function(ele, property) {
99
+ if (typeof ele.style[property] !== 'string') {
100
+ this._notify();
101
+ throw new Error('Unsupported CSS property: ' + property);
102
+ }
103
+ },
104
+ _CSSValueSupported: function(ele, property, value) {
105
+ ele.style[property] = value;
106
+ if (ele.style[property] !== value) {
107
+ this._notify();
108
+ throw new Error('Unsupported CSS property value: ' + property + ' ' + value);
109
+ }
110
+ },
111
+ _notify: function() {
112
+ var _self, redirectUrl;
113
+ redirectUrl = document.documentElement.getAttribute(this._URL_ATTRIBUTE);
114
+ if (redirectUrl) {
115
+ return location.href = redirectUrl;
116
+ }
117
+ _self = this;
118
+ return setInterval(function() {
119
+ if (!document.getElementById('luda-degradation-html')) {
120
+ if (document.body) {
121
+ return document.body.innerHTML = _self._HTML;
122
+ }
123
+ }
124
+ }, this._NOTIFY_MILLSECONDS);
125
+ }
126
+ };
127
+
128
+ Degradation.check();
129
+
130
+ })));
131
+ //# sourceMappingURL=luda-degradation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"luda-degradation.js","sources":["../../src/coffee/degradation.coffee"],"sourcesContent":["Degradation =\r\n\r\n _URL_ATTRIBUTE: 'data-degradation-url'\r\n\r\n _HTML: [\r\n '<div id=\"luda-degradation-html\" '\r\n 'style=\"padding:100px 30px;text-align:center\">'\r\n '<h1>Your Browser Is Too Old!</h1>'\r\n '<p>'\r\n 'Please visit this site with a modern browser '\r\n '<a target=\"_blank\" href=\"https://www.google.com/chrome/\">'\r\n '(Chrome recommended)'\r\n '</a>'\r\n '.</p>'\r\n '</div>'\r\n ].join('')\r\n\r\n _CSS_PROPERTIES: [\r\n display: 'flex'\r\n position: ['sticky', 'fixed']\r\n 'transition'\r\n 'animation'\r\n ]\r\n\r\n _JS_PROPERTIES:\r\n es6Class: 'class X {}'\r\n es6ArrowFunction: '((x) => x)()'\r\n\r\n _NOTIFY_MILLSECONDS: 500\r\n\r\n check: ->\r\n @_checkEnv()\r\n @_checkJS @_JS_PROPERTIES\r\n @_checkCSS @_CSS_PROPERTIES\r\n\r\n _eval: eval\r\n\r\n _checkEnv: ->\r\n if typeof document isnt 'undefined'\r\n return window if typeof window isnt 'undefined'\r\n return global if typeof global isnt 'undefined'\r\n throw new Error 'Unsupported runtime environment.'\r\n\r\n _checkJS: (properties) ->\r\n for property, value of properties\r\n try\r\n @_eval value\r\n catch err\r\n @_notify()\r\n throw new Error property + ' ' + err\r\n\r\n _checkCSS: (properties) ->\r\n ele = document.createElement 'div'\r\n for property in properties\r\n if typeof property is 'string'\r\n @_CSSPropertySupported ele, property\r\n else\r\n for name, value of property\r\n @_CSSPropertySupported ele, name\r\n if value instanceof Array\r\n @_CSSValueSupported ele, name, valueEle for valueEle in value\r\n else\r\n @_CSSValueSupported ele, name, value\r\n\r\n _CSSPropertySupported: (ele, property) ->\r\n unless typeof ele.style[property] is 'string'\r\n @_notify()\r\n throw new Error 'Unsupported CSS property: ' + property\r\n\r\n _CSSValueSupported: (ele, property, value) ->\r\n ele.style[property] = value\r\n unless ele.style[property] is value\r\n @_notify()\r\n throw new Error 'Unsupported CSS property value: ' \\\r\n + property + ' ' + value\r\n\r\n _notify: ->\r\n redirectUrl = document.documentElement.getAttribute @_URL_ATTRIBUTE\r\n return location.href = redirectUrl if redirectUrl\r\n _self = this\r\n setInterval(->\r\n unless document.getElementById 'luda-degradation-html'\r\n document.body.innerHTML = _self._HTML if document.body\r\n , @_NOTIFY_MILLSECONDS)\r\n\r\n\r\n\r\n\r\nDegradation.check()"],"names":[],"mappings":";;;;;;;;;;;EAAA,IAAA;;EAAA,WAAA,GAEE;IAAA,cAAA,EAAgB,sBAAhB;IAEA,KAAA,EAAO,CACL,kCADK,EAEL,+CAFK,EAGL,mCAHK,EAIL,KAJK,EAKL,+CALK,EAML,2DANK,EAOL,sBAPK,EAQL,MARK,EASL,OATK,EAUL,QAVK,CAWJ,CAAC,IAXG,CAWE,EAXF,CAFP;IAeA,eAAA,EAAiB;MACf;QAAA,OAAA,EAAS,MAAT;QACA,QAAA,EAAU,CAAC,QAAD;MAAW,OAAX;OAFK;MAGf,YAHe;MAIf,WAJe;KAfjB;IAsBA,cAAA,EACE;MAAA,QAAA,EAAU,YAAV;MACA,gBAAA,EAAkB;KAxBpB;IA0BA,mBAAA,EAAqB,GA1BrB;IA4BA,KAAA,EAAO;MACL,IAAC,CAAA,SAAD;MACA,IAAC,CAAA,QAAD,CAAU,IAAC,CAAA,cAAX;aACA,IAAC,CAAA,SAAD,CAAW,IAAC,CAAA,eAAZ;KA/BF;IAiCA,KAAA,EAAO,IAjCP;IAmCA,SAAA,EAAW;MACT,IAAG,OAAO,QAAP,KAAqB,WAAxB;QACE,IAAiB,OAAO,MAAP,KAAmB,WAApC;EAAA,eAAO,OAAP;;QACA,IAAiB,OAAO,MAAP,KAAmB,WAApC;EAAA,eAAO,OAAP;SAFF;;MAGA,MAAM,IAAI,KAAJ,CAAU,kCAAV;KAvCR;IAyCA,QAAA,EAAU,SAAC,UAAD;EACR,QAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA;EAAA;MAAA,KAAA,sBAAA;;EACE;uBACE,IAAC,CAAA,KAAD,CAAO,KAAP,GADF;SAAA,aAAA;UAEM;UACJ,IAAC,CAAA,OAAD;UACA,MAAM,IAAI,KAAJ,CAAU,QAAA,GAAW,GAAX,GAAiB,GAA3B,EAJR;;OADF;;KA1CF;IAiDA,SAAA,EAAW,SAAC,UAAD;EACT,QAAA,GAAA,EAAA,CAAA,EAAA,GAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EAAA;MAAA,GAAA,GAAM,QAAQ,CAAC,aAAT,CAAuB,KAAvB;EACN;MAAA,KAAA,4CAAA;;QACE,IAAG,OAAO,QAAP,KAAmB,QAAtB;uBACE,IAAC,CAAA,qBAAD,CAAuB,GAAvB,EAA4B,QAA5B,GADF;SAAA,MAAA;;;EAGE;YAAA,KAAA,gBAAA;;cACE,IAAC,CAAA,qBAAD,CAAuB,GAAvB,EAA4B,IAA5B;cACA,IAAG,KAAA,YAAiB,KAApB;;;EAC0C;kBAAA,KAAA,yCAAA;;kCAAxC,IAAC,CAAA,kBAAD,CAAoB,GAApB,EAAyB,IAAzB,EAA+B,QAA/B;mBAAwC;;+BAD1C;eAAA,MAAA;8BAGE,IAAC,CAAA,kBAAD,CAAoB,GAApB,EAAyB,IAAzB,EAA+B,KAA/B,GAHF;;aAFF;;yBAHF;;OADF;;KAnDF;IA8DA,qBAAA,EAAuB,SAAC,GAAD,EAAM,QAAN;MACrB,IAAO,OAAO,GAAG,CAAC,KAAM,CAAA,QAAA,CAAjB,KAA8B,QAArC;QACE,IAAC,CAAA,OAAD;QACA,MAAM,IAAI,KAAJ,CAAU,4BAAA,GAA+B,QAAzC,EAFR;;KA/DF;IAmEA,kBAAA,EAAoB,SAAC,GAAD,EAAM,QAAN,EAAgB,KAAhB;MAClB,GAAG,CAAC,KAAM,CAAA,QAAA,CAAV,GAAsB;MACtB,IAAO,GAAG,CAAC,KAAM,CAAA,QAAA,CAAV,KAAuB,KAA9B;QACE,IAAC,CAAA,OAAD;QACA,MAAM,IAAI,KAAJ,CAAU,kCAAA,GACd,QADc,GACH,GADG,GACG,KADb,EAFR;;KArEF;IA0EA,OAAA,EAAS;EACP,QAAA,KAAA,EAAA;MAAA,WAAA,GAAc,QAAQ,CAAC,eAAe,CAAC,YAAzB,CAAsC,IAAC,CAAA,cAAvC;MACd,IAAsC,WAAtC;EAAA,aAAO,QAAQ,CAAC,IAAT,GAAgB,YAAvB;;MACA,KAAA,GAAQ;aACR,WAAA,CAAY;QACV,IAAA,CAAO,QAAQ,CAAC,cAAT,CAAwB,uBAAxB,CAAP;UACE,IAAyC,QAAQ,CAAC,IAAlD;mBAAA,QAAQ,CAAC,IAAI,CAAC,SAAd,GAA0B,KAAK,CAAC,MAAhC;WADF;;OADF,EAGE,IAAC,CAAA,mBAHH;;EA9EF;;EAsFF,WAAW,CAAC,KAAZ;;;;"}
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * Luda degradation script 0.1.5 | https://luda.dev
3
+ * Copyright 2018 oatw | https://oatw.blog
4
+ * MIT license | http://opensource.org/licenses/MIT
5
+ */
6
+ (function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory():typeof define==="function"&&define.amd?define(factory):factory()})(this,function(){"use strict";var Degradation;Degradation={_URL_ATTRIBUTE:"data-degradation-url",_HTML:['<div id="luda-degradation-html" ','style="padding:100px 30px;text-align:center">',"<h1>Your Browser Is Too Old!</h1>","<p>","Please visit this site with a modern browser ",'<a target="_blank" href="https://www.google.com/chrome/">',"(Chrome recommended)","</a>",".</p>","</div>"].join(""),_CSS_PROPERTIES:[{display:"flex",position:["sticky","fixed"]},"transition","animation"],_JS_PROPERTIES:{es6Class:"class X {}",es6ArrowFunction:"((x) => x)()"},_NOTIFY_MILLSECONDS:500,check:function(){this._checkEnv();this._checkJS(this._JS_PROPERTIES);return this._checkCSS(this._CSS_PROPERTIES)},_eval:eval,_checkEnv:function(){if(typeof document!=="undefined"){if(typeof window!=="undefined"){return window}if(typeof global!=="undefined"){return global}}throw new Error("Unsupported runtime environment.")},_checkJS:function(properties){var err,property,results,value;results=[];for(property in properties){value=properties[property];try{results.push(this._eval(value))}catch(error){err=error;this._notify();throw new Error(property+" "+err)}}return results},_checkCSS:function(properties){var ele,i,len,name,property,results,value,valueEle;ele=document.createElement("div");results=[];for(i=0,len=properties.length;i<len;i++){property=properties[i];if(typeof property==="string"){results.push(this._CSSPropertySupported(ele,property))}else{results.push(function(){var results1;results1=[];for(name in property){value=property[name];this._CSSPropertySupported(ele,name);if(value instanceof Array){results1.push(function(){var j,len1,results2;results2=[];for(j=0,len1=value.length;j<len1;j++){valueEle=value[j];results2.push(this._CSSValueSupported(ele,name,valueEle))}return results2}.call(this))}else{results1.push(this._CSSValueSupported(ele,name,value))}}return results1}.call(this))}}return results},_CSSPropertySupported:function(ele,property){if(typeof ele.style[property]!=="string"){this._notify();throw new Error("Unsupported CSS property: "+property)}},_CSSValueSupported:function(ele,property,value){ele.style[property]=value;if(ele.style[property]!==value){this._notify();throw new Error("Unsupported CSS property value: "+property+" "+value)}},_notify:function(){var _self,redirectUrl;redirectUrl=document.documentElement.getAttribute(this._URL_ATTRIBUTE);if(redirectUrl){return location.href=redirectUrl}_self=this;return setInterval(function(){if(!document.getElementById("luda-degradation-html")){if(document.body){return document.body.innerHTML=_self._HTML}}},this._NOTIFY_MILLSECONDS)}};Degradation.check()});
7
+ //# sourceMappingURL=luda-degradation.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/coffee/degradation.coffee"],"names":["Degradation","_URL_ATTRIBUTE","_HTML","join","_CSS_PROPERTIES","display","position","_JS_PROPERTIES","es6Class","es6ArrowFunction","_NOTIFY_MILLSECONDS","check","this","_checkEnv","_checkJS","_checkCSS","_eval","eval","document","window","global","Error","properties","err","property","results","value","error","_notify","ele","i","len","name","valueEle","createElement","length","_CSSPropertySupported","results1","Array","results2","j","len1","_CSSValueSupported","style","_self","redirectUrl","documentElement","getAttribute","location","href","setInterval","getElementById","body","innerHTML"],"mappings":";;;;;2LAAA,IAAAA,YAAAA,YAEE,CAAAC,eAAgB,uBAEhBC,MAAO,CACL,mCACA,gDACA,oCACA,MACA,gDACA,4DACA,uBACA,OACA,QACA,UACEC,KAAK,IAETC,gBAAiB,CACf,CAAAC,QAAS,OACTC,SAAU,CAAC,SAAU,UACrB,aACA,aAGFC,eACE,CAAAC,SAAU,aACVC,iBAAkB,gBAEpBC,oBAAqB,IAErBC,MAAO,WACLC,KAACC,YACDD,KAACE,SAASF,KAACL,uBACXK,KAACG,UAAUH,KAACR,kBAEdY,MAAOC,KAEPJ,UAAW,WACT,UAAUK,WAAc,YAAxB,CACE,UAAwBC,SAAY,YAApC,CAAA,OAAOA,OACP,UAAwBC,SAAY,YAApC,CAAA,OAAOA,QACT,MAAM,IAAIC,MAAM,qCAElBP,SAAU,SAACQ,YACT,IAAAC,IAAAC,SAAAC,QAAAC,MAAAD,QAAA,GAAA,IAAAD,YAAAF,WAAA,4BACE,iBACEV,KAACI,MAAMU,QADT,MAAAC,OAEMJ,IAAAI,MACJf,KAACgB,UACD,MAAM,IAAIP,MAAMG,SAAW,IAAMD,sBAEvCR,UAAW,SAACO,YACV,IAAAO,IAAAC,EAAAC,IAAAC,KAAAR,SAAAC,QAAAC,MAAAO,SAAAJ,IAAMX,SAASgB,cAAc,OAC7BT,QAAA,GAAA,IAAAK,EAAA,EAAAC,IAAAT,WAAAa,OAAAL,EAAAC,IAAAD,IAAA,wBACE,UAAUN,WAAY,SAAtB,cACEZ,KAACwB,sBAAsBP,IAAKL,eAD9B,sCAGEa,SAAA,GAAA,IAAAL,QAAAR,SAAA,sBACEZ,KAACwB,sBAAsBP,IAAKG,MAC5B,GAAGN,iBAAiBY,MAApB,8CAC0CC,SAAA,GAAA,IAAAC,EAAA,EAAAC,KAAAf,MAAAS,OAAAK,EAAAC,KAAAD,IAAA,iCAAxC5B,KAAC8B,mBAAmBb,IAAKG,KAAMC,4CADjC,eAGErB,KAAC8B,mBAAmBb,IAAKG,KAAMN,uDAEzCU,sBAAuB,SAACP,IAAKL,UAC3B,UAAcK,IAAIc,MAAMnB,YAAa,SAArC,CACEZ,KAACgB,UACD,MAAM,IAAIP,MAAM,6BAA+BG,YAEnDkB,mBAAoB,SAACb,IAAKL,SAAUE,OAClCG,IAAIc,MAAMnB,UAAYE,MACtB,GAAOG,IAAIc,MAAMnB,YAAaE,MAA9B,CACEd,KAACgB,UACD,MAAM,IAAIP,MAAM,mCACdG,SAAW,IAAME,SAEvBE,QAAS,WACP,IAAAgB,MAAAC,YAAAA,YAAc3B,SAAS4B,gBAAgBC,aAAanC,KAACX,gBACrD,GAAsC4C,YAAtC,CAAA,OAAOG,SAASC,KAAOJ,YACvBD,MAAQhC,YACRsC,YAAY,WACV,IAAOhC,SAASiC,eAAe,yBAA/B,CACE,GAAyCjC,SAASkC,KAAlD,QAAAlC,SAASkC,KAAKC,UAAYT,MAAM1C,SAClCU,KAACF,uBAKPV,YAAYW","sourcesContent":["Degradation =\r\n\r\n _URL_ATTRIBUTE: 'data-degradation-url'\r\n\r\n _HTML: [\r\n '<div id=\"luda-degradation-html\" '\r\n 'style=\"padding:100px 30px;text-align:center\">'\r\n '<h1>Your Browser Is Too Old!</h1>'\r\n '<p>'\r\n 'Please visit this site with a modern browser '\r\n '<a target=\"_blank\" href=\"https://www.google.com/chrome/\">'\r\n '(Chrome recommended)'\r\n '</a>'\r\n '.</p>'\r\n '</div>'\r\n ].join('')\r\n\r\n _CSS_PROPERTIES: [\r\n display: 'flex'\r\n position: ['sticky', 'fixed']\r\n 'transition'\r\n 'animation'\r\n ]\r\n\r\n _JS_PROPERTIES:\r\n es6Class: 'class X {}'\r\n es6ArrowFunction: '((x) => x)()'\r\n\r\n _NOTIFY_MILLSECONDS: 500\r\n\r\n check: ->\r\n @_checkEnv()\r\n @_checkJS @_JS_PROPERTIES\r\n @_checkCSS @_CSS_PROPERTIES\r\n\r\n _eval: eval\r\n\r\n _checkEnv: ->\r\n if typeof document isnt 'undefined'\r\n return window if typeof window isnt 'undefined'\r\n return global if typeof global isnt 'undefined'\r\n throw new Error 'Unsupported runtime environment.'\r\n\r\n _checkJS: (properties) ->\r\n for property, value of properties\r\n try\r\n @_eval value\r\n catch err\r\n @_notify()\r\n throw new Error property + ' ' + err\r\n\r\n _checkCSS: (properties) ->\r\n ele = document.createElement 'div'\r\n for property in properties\r\n if typeof property is 'string'\r\n @_CSSPropertySupported ele, property\r\n else\r\n for name, value of property\r\n @_CSSPropertySupported ele, name\r\n if value instanceof Array\r\n @_CSSValueSupported ele, name, valueEle for valueEle in value\r\n else\r\n @_CSSValueSupported ele, name, value\r\n\r\n _CSSPropertySupported: (ele, property) ->\r\n unless typeof ele.style[property] is 'string'\r\n @_notify()\r\n throw new Error 'Unsupported CSS property: ' + property\r\n\r\n _CSSValueSupported: (ele, property, value) ->\r\n ele.style[property] = value\r\n unless ele.style[property] is value\r\n @_notify()\r\n throw new Error 'Unsupported CSS property value: ' \\\r\n + property + ' ' + value\r\n\r\n _notify: ->\r\n redirectUrl = document.documentElement.getAttribute @_URL_ATTRIBUTE\r\n return location.href = redirectUrl if redirectUrl\r\n _self = this\r\n setInterval(->\r\n unless document.getElementById 'luda-degradation-html'\r\n document.body.innerHTML = _self._HTML if document.body\r\n , @_NOTIFY_MILLSECONDS)\r\n\r\n\r\n\r\n\r\nDegradation.check()"]}
@@ -0,0 +1,11 @@
1
+ //= require luda\behaviours\enter-click
2
+ //= require luda\behaviours\focus
3
+ //= require luda\behaviours\radio-tab
4
+ //= require luda\behaviours\readonly
5
+ //= require luda\behaviours\toggle
6
+ //= require luda\elements\form-file
7
+ //= require luda\elements\form-select
8
+ //= require luda\collections\carousel
9
+ //= require luda\collections\dropdown
10
+ //= require luda\collections\form-dropdown
11
+ //= require luda\collections\tab
@@ -0,0 +1,2024 @@
1
+ /*!
2
+ * Luda 0.1.5 | https://luda.dev
3
+ * Copyright 2018 oatw | https://oatw.blog
4
+ * MIT license | http://opensource.org/licenses/MIT
5
+ */
6
+ (function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
8
+ typeof define === 'function' && define.amd ? define(factory) :
9
+ (factory());
10
+ }(this, (function () { 'use strict';
11
+
12
+ var ENV;
13
+
14
+ ENV = (function() {
15
+ if (typeof document !== 'undefined') {
16
+ if (typeof window !== 'undefined') {
17
+ return window;
18
+ }
19
+ if (typeof global !== 'undefined') {
20
+ return global;
21
+ }
22
+ }
23
+ throw new Error('Unsupported runtime environment.');
24
+ })();
25
+
26
+ if (typeof ENV.luda !== 'function') {
27
+ ENV.luda = function(installer) {
28
+ var installed, name, property;
29
+ if (!installer) {
30
+ throw new Error('Installer cannot be detected.');
31
+ }
32
+ if (!['object', 'function'].includes(typeof installer)) {
33
+ throw new Error('Installer must be object, array or function.');
34
+ }
35
+ if (installer.hasOwnProperty('_SCOPE')) {
36
+ if (typeof installer._SCOPE !== 'string') {
37
+ throw new Error('_SCOPE must be string');
38
+ }
39
+ return ENV.luda._install(installer._SCOPE, installer);
40
+ }
41
+ if (installer instanceof Array || typeof installer === 'function') {
42
+ throw new Error('Unscoped installer must be object.');
43
+ }
44
+ installed = {};
45
+ for (name in installer) {
46
+ property = installer[name];
47
+ installed[name] = ENV.luda._install(name, property);
48
+ }
49
+ return installed;
50
+ };
51
+ ENV.luda._install = function(namespace, installer) {
52
+ var installedInstaller, installedName, ref;
53
+ if (ENV.luda[namespace]) {
54
+ console.warn(`Namespace ${namespace} is ocupied, sikp installation.`);
55
+ return ENV.luda[namespace];
56
+ }
57
+ ref = ENV.luda;
58
+ for (installedName in ref) {
59
+ installedInstaller = ref[installedName];
60
+ if (installer === installedInstaller) {
61
+ console.warn(`Installer is installed with name ${installedName}, skip installation.`);
62
+ return ENV.luda[installedName];
63
+ }
64
+ }
65
+ if (installer._install) {
66
+ if (typeof installer._install === 'function') {
67
+ return ENV.luda[namespace] = installer._install();
68
+ }
69
+ return ENV.luda[namespace] = installer._install;
70
+ }
71
+ return ENV.luda[namespace] = installer;
72
+ };
73
+ }
74
+
75
+ luda({
76
+ KEY_LEFT: 37,
77
+ KEY_UP: 38,
78
+ KEY_RIGHT: 39,
79
+ KEY_DOWN: 40,
80
+ KEY_TAB: 9,
81
+ KEY_ESC: 27,
82
+ KEY_ENTER: 13
83
+ });
84
+
85
+ luda({
86
+ $child: function(selector, $ancestor) {
87
+ if (!$ancestor) {
88
+ $ancestor = document;
89
+ }
90
+ return $ancestor.querySelector(selector);
91
+ },
92
+ $children: function(selector, $ancestor) {
93
+ var $descendant, descendants;
94
+ if (!$ancestor) {
95
+ $ancestor = document;
96
+ }
97
+ $descendant = this.$child(selector, $ancestor);
98
+ if ($descendant) {
99
+ return descendants = Array.from($ancestor.querySelectorAll(selector));
100
+ } else {
101
+ return descendants = [];
102
+ }
103
+ },
104
+ $unnested: function(selector, $ancestor, ancestorSelector) {
105
+ var descendants;
106
+ descendants = this.$children(selector, $ancestor);
107
+ return descendants.filter(($descendant) => {
108
+ if (this.$parent(ancestorSelector, $descendant) === $ancestor) {
109
+ return $descendant;
110
+ }
111
+ });
112
+ },
113
+ $parent: function(selector, $descendant) {
114
+ var $ancestor;
115
+ $ancestor = $descendant.parentNode;
116
+ if ($ancestor) {
117
+ if ($ancestor.matches && $ancestor.matches(selector)) {
118
+ return $ancestor;
119
+ } else {
120
+ return this.$parent(selector, $ancestor);
121
+ }
122
+ }
123
+ },
124
+ $parents: function(selector, $descendant, _ancestors) {
125
+ var $ancestor;
126
+ $ancestor = this.$parent(selector, $descendant);
127
+ if (!_ancestors) {
128
+ _ancestors = [];
129
+ }
130
+ if ($ancestor) {
131
+ _ancestors.push($ancestor);
132
+ return this.$parents(selector, $ancestor, _ancestors);
133
+ } else {
134
+ return _ancestors;
135
+ }
136
+ },
137
+ $after: function($node, $target) {
138
+ var $parent;
139
+ $parent = $target.parentNode;
140
+ if ($parent.lastChild === $target) {
141
+ return $parent.appendChild($node);
142
+ } else {
143
+ return $parent.insertBefore($node, $target.nextSibling);
144
+ }
145
+ },
146
+ $prepend: function($node, $target) {
147
+ if ($target.firstChild) {
148
+ return $target.insertBefore($node, $target.firstChild);
149
+ } else {
150
+ return $target.appendChild($node);
151
+ }
152
+ },
153
+ reflow: function($element) {
154
+ return $element.offsetHeight;
155
+ }
156
+ });
157
+
158
+ var splice = [].splice;
159
+
160
+ luda({
161
+ _SWIPE_DISTANCE: 10,
162
+ _EVENT_TYPE_PREFIX: 'luda',
163
+ _SWIPE_LEFT: 'swipeleft',
164
+ _SWIPE_RIGHT: 'swiperight',
165
+ _SWIPE_UP: 'swipeup',
166
+ _SWIPE_DOWN: 'swipedown',
167
+ _SWIPE_LEFT_OR_UP: 'swipeleft or swipeup',
168
+ _SWIPE_RIGHT_OR_DOWN: 'swiperight or swipedown',
169
+ _DOC_READY: 'docready',
170
+ _FORM_RESET: 'reset',
171
+ eventPath: function(event) {
172
+ var path;
173
+ if (event.composedPath) {
174
+ return path = event.composedPath();
175
+ } else if (event.path) {
176
+ return path = event.path;
177
+ } else {
178
+ return path = [event.target].concat(luda.$parents('*', event.target));
179
+ }
180
+ },
181
+ on: function(event, ...selector) {
182
+ var handler, ref;
183
+ ref = selector, [...selector] = ref, [handler] = splice.call(selector, -1);
184
+ switch (event) {
185
+ case this._DOC_READY:
186
+ return this._onDocReady(handler);
187
+ case this._FORM_RESET:
188
+ return this._onReset(selector[0], handler);
189
+ case this._SWIPE_LEFT:
190
+ case this._SWIPE_RIGHT:
191
+ case this._SWIPE_UP:
192
+ case this._SWIPE_DOWN:
193
+ case this._SWIPE_LEFT_OR_UP:
194
+ case this._SWIPE_RIGHT_OR_DOWN:
195
+ return this._onSwipe(event, selector[0], handler);
196
+ default:
197
+ return this._on(event, selector[0], handler);
198
+ }
199
+ },
200
+ onOpposite: function(event, selector, handler) {
201
+ var _self;
202
+ _self = this;
203
+ return document.addEventListener(event, function(e) {
204
+ var trigger;
205
+ trigger = _self.eventPath(e).every(function($element) {
206
+ return !$element.matches || !$element.matches(selector);
207
+ });
208
+ if (trigger) {
209
+ return handler(e);
210
+ }
211
+ });
212
+ },
213
+ dispatch: function($target, type, detail, options = {}) {
214
+ var evt;
215
+ if (typeof options.bubbles !== 'boolean') {
216
+ options.bubbles = true;
217
+ }
218
+ if (typeof options.cancelable !== 'boolean') {
219
+ options.cancelable = true;
220
+ }
221
+ if (typeof options.composed !== 'boolean') {
222
+ options.composed = true;
223
+ }
224
+ evt = new Event(`${this._EVENT_TYPE_PREFIX}:${type}`, options);
225
+ evt.detail = detail;
226
+ $target.dispatchEvent(evt);
227
+ return evt;
228
+ },
229
+ _onDocReady: function(handler) {
230
+ if (document.readyState === 'loading') {
231
+ return document.addEventListener('DOMContentLoaded', handler);
232
+ } else {
233
+ return handler();
234
+ }
235
+ },
236
+ _onReset: function(selector, handler) {
237
+ return document.addEventListener('reset', function(e) {
238
+ if (selector != null) {
239
+ return luda.$children(selector, e.target).forEach(function($element) {
240
+ return handler.bind($element)(e);
241
+ });
242
+ } else {
243
+ return handler(e);
244
+ }
245
+ });
246
+ },
247
+ _onSwipe: function(event, selector, handler) {
248
+ var $touchStartElement, _self, touchStartE, touchStartX, touchStartY, watch;
249
+ _self = this;
250
+ watch = false;
251
+ $touchStartElement = document;
252
+ touchStartE = null;
253
+ touchStartX = 0;
254
+ touchStartY = 0;
255
+ document.addEventListener('touchstart', function(e) {
256
+ if (e.touches.length === 1) {
257
+ touchStartX = e.touches[0].screenX;
258
+ touchStartY = e.touches[0].screenY;
259
+ if (selector != null) {
260
+ return _self.eventPath(e).some(function($element) {
261
+ if ($element.matches && $element.matches(selector)) {
262
+ $touchStartElement = $element;
263
+ touchStartE = e;
264
+ watch = true;
265
+ return true;
266
+ }
267
+ });
268
+ } else {
269
+ return watch = true;
270
+ }
271
+ }
272
+ });
273
+ return document.addEventListener('touchmove', function(e) {
274
+ var eventX, eventXOrY, eventY, touchDistanceX, touchDistanceY;
275
+ if (watch && e.touches.length === 1) {
276
+ touchDistanceX = e.touches[0].screenX - touchStartX;
277
+ touchDistanceY = e.touches[0].screenY - touchStartY;
278
+ eventX = void 0;
279
+ eventY = void 0;
280
+ eventXOrY = void 0;
281
+ if (Math.abs(touchDistanceX) >= _self._SWIPE_DISTANCE) {
282
+ if (touchDistanceX > 0) {
283
+ eventX = _self._SWIPE_RIGHT;
284
+ } else {
285
+ eventX = _self._SWIPE_LEFT;
286
+ }
287
+ }
288
+ if (Math.abs(touchDistanceY) >= _self._SWIPE_DISTANCE) {
289
+ if (touchDistanceY > 0) {
290
+ eventY = _self._SWIPE_DOWN;
291
+ } else {
292
+ eventY = _self._SWIPE_UP;
293
+ }
294
+ }
295
+ if (eventX === _self._SWIPE_LEFT || eventY === _self._SWIPE_UP) {
296
+ eventXOrY = _self._SWIPE_LEFT_OR_UP;
297
+ }
298
+ if (eventX === _self._SWIPE_RIGHT || eventY === _self._SWIPE_DOWN) {
299
+ eventXOrY = _self._SWIPE_RIGHT_OR_DOWN;
300
+ }
301
+ if (((eventX != null) && eventX === event) || ((eventY != null) && eventY === event) || eventXOrY === event) {
302
+ if (selector != null) {
303
+ return _self.eventPath(e).some(function($element) {
304
+ if ($element === $touchStartElement) {
305
+ watch = false;
306
+ handler.bind($element)(touchStartE, e);
307
+ return true;
308
+ }
309
+ });
310
+ } else {
311
+ watch = false;
312
+ return handler(touchStartE, e);
313
+ }
314
+ }
315
+ }
316
+ });
317
+ },
318
+ _on: function(event, selector, handler) {
319
+ var _self;
320
+ if (selector === window) {
321
+ return window.addEventListener(event, function(e) {
322
+ return handler(e);
323
+ });
324
+ } else {
325
+ _self = this;
326
+ return document.addEventListener(event, function(e) {
327
+ if (selector != null) {
328
+ return _self.eventPath(e).some(function($element) {
329
+ if ($element.matches && $element.matches(selector)) {
330
+ handler.bind($element)(e);
331
+ return true;
332
+ }
333
+ });
334
+ } else {
335
+ return handler(e);
336
+ }
337
+ });
338
+ }
339
+ }
340
+ });
341
+
342
+ luda({
343
+ except: function(element, arr) {
344
+ if (arr.includes(element)) {
345
+ return arr.splice(arr.indexOf(element), 1);
346
+ }
347
+ }
348
+ });
349
+
350
+ var Singleton;
351
+
352
+ luda(Singleton = (function() {
353
+ class Singleton {
354
+ static active() {
355
+ return this._actived = true;
356
+ }
357
+
358
+ static deactive() {
359
+ return this._actived = false;
360
+ }
361
+
362
+ static _add(selector) {
363
+ if (typeof selector !== 'string') {
364
+ throw new Error(this._SELECTOR_INVALID_ERROR);
365
+ }
366
+ if (!this._SELECTORS.includes(selector)) {
367
+ this._SELECTORS.push(selector);
368
+ }
369
+ return this._mergeSelectors();
370
+ }
371
+
372
+ static _remove(selector) {
373
+ if (typeof selector !== 'string') {
374
+ throw new Error(this._SELECTOR_INVALID_ERROR);
375
+ }
376
+ luda.except(selector, this._SELECTORS);
377
+ return this._mergeSelectors();
378
+ }
379
+
380
+ static _mergeSelectors() {
381
+ return this._selector = this._SELECTORS.join(',');
382
+ }
383
+
384
+ static _install() {
385
+ var exposed;
386
+ if (this === Singleton) {
387
+ return this;
388
+ }
389
+ if (!this.hasOwnProperty('_SELECTORS')) {
390
+ this._SELECTORS = [];
391
+ }
392
+ this._mergeSelectors();
393
+ if (typeof this._init === 'function') {
394
+ exposed = this._init();
395
+ }
396
+ if (exposed) {
397
+ return exposed;
398
+ } else {
399
+ return this;
400
+ }
401
+ }
402
+
403
+ }
404
+ Singleton._SCOPE = 'Singleton';
405
+
406
+ Singleton._SELECTOR_INVALID_ERROR = '@param selector must be a css selector string';
407
+
408
+ Singleton._SELECTORS = [];
409
+
410
+ Singleton._selector = '';
411
+
412
+ Singleton._actived = true;
413
+
414
+ return Singleton;
415
+
416
+ }).call(this));
417
+
418
+ luda((function() {
419
+ var _Class;
420
+
421
+ _Class = class extends luda.Singleton {
422
+ static _init() {
423
+ var self;
424
+ self = this;
425
+ return luda.on('keydown', function(e) {
426
+ if (self._actived && e.keyCode === luda.KEY_ENTER && e.target.matches(self._selector)) {
427
+ e.preventDefault();
428
+ return setTimeout(function() {
429
+ return e.target.click();
430
+ });
431
+ }
432
+ });
433
+ }
434
+
435
+ };
436
+
437
+ _Class._SCOPE = 'enterClick';
438
+
439
+ _Class._SELECTORS = ['input[type=checkbox]', 'input[type=radio]', '[tabindex]'];
440
+
441
+ return _Class;
442
+
443
+ }).call(this));
444
+
445
+ luda((function() {
446
+ var _Class;
447
+
448
+ _Class = class extends luda.Singleton {
449
+ static _removeFocusClassExcept($exception) {
450
+ return Array.from(this._$focus).forEach(($focus) => {
451
+ if ($focus !== $exception) {
452
+ return $focus.classList.remove(this._CSS_CLASS);
453
+ }
454
+ });
455
+ }
456
+
457
+ static _addFocusClassExceptHtmlAndBody($target) {
458
+ if ($target !== document.body && $target !== document.documentElement) {
459
+ return $target.classList.add(this._CSS_CLASS);
460
+ }
461
+ }
462
+
463
+ static _changeFocusStateOnKeyEvent(e) {
464
+ if (this._actived) {
465
+ this._removeFocusClassExcept(e.target);
466
+ return this._addFocusClassExceptHtmlAndBody(e.target);
467
+ }
468
+ }
469
+
470
+ static _changeFocusStateOnMouseDownEvent(e) {
471
+ var target;
472
+ if (this._actived) {
473
+ if (e.target.matches(this._PARENT_FOCUS_CHILDREN_SELECTOR)) {
474
+ target = luda.$parent(this._PARENT_FOCUS_SELECTOR, e.target);
475
+ } else {
476
+ target = e.target;
477
+ }
478
+ if (target.matches(this._selector)) {
479
+ this._removeFocusClassExcept(target);
480
+ return this._addFocusClassExceptHtmlAndBody(target);
481
+ } else {
482
+ return this._removeFocusClassExcept();
483
+ }
484
+ }
485
+ }
486
+
487
+ static _setElementPrototype() {
488
+ var blur, focus, self;
489
+ focus = HTMLElement.prototype.focus;
490
+ blur = HTMLElement.prototype.blur;
491
+ self = this;
492
+ HTMLElement.prototype.focus = function() {
493
+ focus.apply(this, arguments);
494
+ if (self._actived && document.activeElement === this) {
495
+ self._removeFocusClassExcept(this);
496
+ return self._addFocusClassExceptHtmlAndBody(this);
497
+ }
498
+ };
499
+ return HTMLElement.prototype.blur = function() {
500
+ blur.apply(this, arguments);
501
+ if (self._actived) {
502
+ return this.classList.remove(self._CSS_CLASS);
503
+ }
504
+ };
505
+ }
506
+
507
+ static _init() {
508
+ this._setElementPrototype();
509
+ luda.on('keydown', this._changeFocusStateOnKeyEvent.bind(this));
510
+ luda.on('keyup', this._changeFocusStateOnKeyEvent.bind(this));
511
+ luda.on('mousedown', this._changeFocusStateOnMouseDownEvent.bind(this));
512
+ luda.on('touchstart', this._TOUCHSTART_FOCUS_SELECTOR, this._changeFocusStateOnMouseDownEvent.bind(this));
513
+ return luda.on('focusin', this._changeFocusStateOnMouseDownEvent.bind(this));
514
+ }
515
+
516
+ };
517
+
518
+ _Class._SCOPE = 'focus';
519
+
520
+ _Class._CSS_CLASS = 'focus';
521
+
522
+ // mouse focusable selectors
523
+ _Class._SELECTORS = ['select', 'textarea', ':not(.btn-check):not(.btn-radio):not(.btn-file) > input:not([type=button]):not([type=submit]):not([type=reset])'];
524
+
525
+ _Class._TOUCHSTART_FOCUS_SELECTOR = 'input[type=range]';
526
+
527
+ _Class._PARENT_FOCUS_SELECTOR = 'select[multiple]';
528
+
529
+ _Class._PARENT_FOCUS_CHILDREN_SELECTOR = `${_Class._PARENT_FOCUS_SELECTOR} *`;
530
+
531
+ _Class._$focus = document.getElementsByClassName(_Class._CSS_CLASS);
532
+
533
+ return _Class;
534
+
535
+ }).call(this));
536
+
537
+ luda((function() {
538
+ var _Class;
539
+
540
+ _Class = class extends luda.Singleton {
541
+ static _querySameName$radios($radio) {
542
+ var $inputs, selector;
543
+ if ($radio.name) {
544
+ selector = `${this._selector}[name=${$radio.name}]`;
545
+ } else {
546
+ selector = this._selector;
547
+ }
548
+ $inputs = luda.$children(selector);
549
+ return $inputs.filter(function($input) {
550
+ return $input.tabIndex >= 0;
551
+ });
552
+ }
553
+
554
+ static _query$prev$next($radio) {
555
+ var $next, $prev, $sameNameRadios, radioIndex;
556
+ $sameNameRadios = this._querySameName$radios($radio);
557
+ radioIndex = $sameNameRadios.indexOf($radio);
558
+ $prev = $sameNameRadios[radioIndex - 1];
559
+ $next = $sameNameRadios[radioIndex + 1];
560
+ return {$prev, $next};
561
+ }
562
+
563
+ static _init() {
564
+ var self;
565
+ self = this;
566
+ return luda.on('keydown', function(e) {
567
+ var $next, $prev;
568
+ if (self._actived && e.keyCode === luda.KEY_TAB && e.target.nodeName.toUpperCase() === 'INPUT' && e.target.type === 'radio') {
569
+ if (e.shiftKey) {
570
+ if ($prev = self._query$prev$next(e.target).$prev) {
571
+ e.preventDefault();
572
+ return $prev.focus();
573
+ }
574
+ } else {
575
+ if ($next = self._query$prev$next(e.target).$next) {
576
+ e.preventDefault();
577
+ return $next.focus();
578
+ }
579
+ }
580
+ }
581
+ });
582
+ }
583
+
584
+ };
585
+
586
+ _Class._SCOPE = 'radioTab';
587
+
588
+ _Class._SELECTORS = ['input[type=radio]:not([disabled])'];
589
+
590
+ return _Class;
591
+
592
+ }).call(this));
593
+
594
+ var Component;
595
+
596
+ luda(Component = (function() {
597
+ class Component {
598
+ _hasDescendant(descendant) {
599
+ if (this._children.length && descendant) {
600
+ if (this._children.includes(descendant)) {
601
+ return true;
602
+ }
603
+ return this._children.some(function(child) {
604
+ return child._hasDescendant(descendant);
605
+ });
606
+ } else {
607
+ return false;
608
+ }
609
+ }
610
+
611
+ _observe() {
612
+ this._observer = new MutationObserver(this._onMutations.bind(this));
613
+ return this._observer.observe(this._$component, this.constructor._observerConfig);
614
+ }
615
+
616
+ _disconnect() {
617
+ this._observer.disconnect();
618
+ return this._observer = null;
619
+ }
620
+
621
+ static create($component) {
622
+ var $family, componentIsElementInstance, instance, parent;
623
+ componentIsElementInstance = $component instanceof Element;
624
+ if (!componentIsElementInstance) {
625
+ throw new Error(this._$COMPONENT_INVALID_ERROR);
626
+ }
627
+ $family = this._query$family($component);
628
+ instance = this.query($component);
629
+ if ($family._$parent) {
630
+ if (parent = this.query($family._$parent)) {
631
+ if (!instance) {
632
+ this._instances.push(instance = this._createInstance($component));
633
+ }
634
+ if (instance._parent !== parent) {
635
+ parent._children.push(instance) && (instance._parent = parent);
636
+ }
637
+ $family._$children.forEach(($child) => {
638
+ return this.create($child);
639
+ });
640
+ return instance;
641
+ } else {
642
+ this.create($family._$parent);
643
+ return this.query($component);
644
+ }
645
+ } else {
646
+ if (!instance) {
647
+ this._instances.push(instance = this._createInstance($component));
648
+ }
649
+ $family._$children.forEach(($child) => {
650
+ return this.create($child);
651
+ });
652
+ return instance;
653
+ }
654
+ }
655
+
656
+ static destroy(instance$component) {
657
+ var attribute, instance, results, value;
658
+ instance = this.query(instance$component);
659
+ if (instance) {
660
+ if (instance._observer) {
661
+ instance._disconnect();
662
+ }
663
+ if (instance._destroy) {
664
+ instance._destroy();
665
+ }
666
+ while (instance._children.length) {
667
+ this.destroy(instance._children[0]);
668
+ }
669
+ if (instance._parent) {
670
+ luda.except(instance, instance._parent._children);
671
+ }
672
+ luda.except(instance, this._instances);
673
+ results = [];
674
+ for (attribute in instance) {
675
+ value = instance[attribute];
676
+ results.push(instance[attribute] = null);
677
+ }
678
+ return results;
679
+ }
680
+ }
681
+
682
+ static query(instance$component) {
683
+ var instance;
684
+ instance = null;
685
+ if (instance$component instanceof this && this._instances.includes(instance$component)) {
686
+ instance = instance$component;
687
+ } else if (instance$component instanceof Element) {
688
+ this._instances.some(function(inited) {
689
+ if (inited._$component === instance$component) {
690
+ instance = inited;
691
+ return true;
692
+ }
693
+ });
694
+ }
695
+ return instance;
696
+ }
697
+
698
+ static _query$family($component) {
699
+ var _$children, _$parent;
700
+ _$parent = null;
701
+ _$children = [];
702
+ if (this._SELECTOR) {
703
+ _$parent = luda.$parent(this._SELECTOR, $component);
704
+ _$children = luda.$unnested(this._SELECTOR, $component, this._SELECTOR);
705
+ }
706
+ return {_$parent, _$children};
707
+ }
708
+
709
+ static _createInstance($component) {
710
+ var instance;
711
+ instance = new this();
712
+ instance._$component = $component;
713
+ instance._parent = null;
714
+ instance._children = [];
715
+ instance._observer = null;
716
+ if (instance._constructor) {
717
+ instance._constructor();
718
+ }
719
+ if (!(instance._observer && instance._onMutations && this._observerConfig)) {
720
+ instance._observe();
721
+ }
722
+ return instance;
723
+ }
724
+
725
+ static _observe(classObj) {
726
+ if (!Component._observer) {
727
+ Component._observer = new MutationObserver(function(mutations) {
728
+ return mutations.forEach(function(mutation) {
729
+ var $addedNodes, $removedNodes;
730
+ $removedNodes = Array.from(mutation.removedNodes);
731
+ $addedNodes = Array.from(mutation.addedNodes);
732
+ $removedNodes.forEach(function($node) {
733
+ if ($node instanceof Element) {
734
+ return Component._Observed.forEach(function(Observed) {
735
+ var $destroies;
736
+ if ($node.matches(Observed._SELECTOR)) {
737
+ return Observed.destroy($node);
738
+ } else {
739
+ $destroies = luda.$children(Observed._SELECTOR, $node);
740
+ return $destroies.forEach(function($destroy) {
741
+ return Observed.destroy($destroy);
742
+ });
743
+ }
744
+ });
745
+ }
746
+ });
747
+ return $addedNodes.forEach(function($node) {
748
+ if ($node instanceof Element) {
749
+ return Component._Observed.forEach(function(Observed) {
750
+ var $creates;
751
+ if ($node.matches(Observed._SELECTOR)) {
752
+ return Observed.create($node);
753
+ } else {
754
+ $creates = luda.$children(Observed._SELECTOR, $node);
755
+ return $creates.forEach(function($create) {
756
+ return Observed.create($create);
757
+ });
758
+ }
759
+ });
760
+ }
761
+ });
762
+ });
763
+ });
764
+ Component._observer.observe(document.documentElement, Component._observerConfig);
765
+ }
766
+ if (!Component._Observed.includes(classObj)) {
767
+ return Component._Observed.push(classObj);
768
+ }
769
+ }
770
+
771
+ static _install() {
772
+ var exposed, self;
773
+ self = this;
774
+ if (this === Component) {
775
+ return this;
776
+ }
777
+ if (!(this._SELECTOR || typeof this._SELECTOR !== 'string')) {
778
+ throw new Error(this._COMPONENT_NO_SELECTOR_ERROR);
779
+ }
780
+ if (!this.hasOwnProperty('_instances')) {
781
+ this._instances = [];
782
+ }
783
+ if (typeof this._init === 'function') {
784
+ exposed = this._init();
785
+ }
786
+ luda.on(luda._DOC_READY, function() {
787
+ luda.$children(self._SELECTOR).forEach(function($component) {
788
+ return self.create($component);
789
+ });
790
+ return Component._observe(self);
791
+ });
792
+ if (exposed) {
793
+ return exposed;
794
+ } else {
795
+ return this;
796
+ }
797
+ }
798
+
799
+ }
800
+ Component._SCOPE = 'Component';
801
+
802
+ Component._COMPONENT_NO_SELECTOR_ERROR = 'Extended component must has a css selector';
803
+
804
+ Component._$COMPONENT_INVALID_ERROR = '@param $component must be an instance of Element';
805
+
806
+ Component._SELECTOR = '';
807
+
808
+ Component._instances = [];
809
+
810
+ Component._Observed = [];
811
+
812
+ Component._observer = null;
813
+
814
+ Component._observerConfig = {
815
+ childList: true,
816
+ subtree: true
817
+ };
818
+
819
+ return Component;
820
+
821
+ }).call(this));
822
+
823
+ luda((function() {
824
+ var _Class;
825
+
826
+ _Class = class extends luda.Component {
827
+ _getConfig() {
828
+ var _isReadonly, _originalTabIndex, readonly;
829
+ readonly = this._$component.getAttribute(this.constructor._READONLY_ATTRIBUTE);
830
+ _isReadonly = readonly !== this.constructor._READONLY_FALSE_VALUE;
831
+ _originalTabIndex = this._$component.tabIndex;
832
+ return {_isReadonly, _originalTabIndex};
833
+ }
834
+
835
+ _constructor() {
836
+ ({_isReadonly: this._isReadonly, _originalTabIndex: this._originalTabIndex} = this._getConfig());
837
+ return this._setTabIndex();
838
+ }
839
+
840
+ _onMutations() {
841
+ return this._constructor();
842
+ }
843
+
844
+ _setTabIndex() {
845
+ if (this._isReadonly) {
846
+ return this._$component.tabIndex = -1;
847
+ } else {
848
+ return this._$component.tabIndex = this._originalTabIndex;
849
+ }
850
+ }
851
+
852
+ };
853
+
854
+ _Class._SCOPE = 'readonly';
855
+
856
+ _Class._READONLY_ATTRIBUTE = 'data-readonly';
857
+
858
+ _Class._READONLY_FALSE_VALUE = 'false';
859
+
860
+ _Class._SELECTOR = `[${_Class._READONLY_ATTRIBUTE}]`;
861
+
862
+ _Class._observerConfig = {
863
+ attributes: true,
864
+ attributeFilter: [_Class._READONLY_ATTRIBUTE]
865
+ };
866
+
867
+ return _Class;
868
+
869
+ }).call(this));
870
+
871
+ luda((function() {
872
+ var _Class;
873
+
874
+ _Class = class extends luda.Singleton {
875
+ static active(name$target) {
876
+ return this._query$targets(name$target).forEach(($target) => {
877
+ $target.classList.add(this._ACTIVE_CSS_CLASS);
878
+ return luda.dispatch($target, this._ACTIVED_EVENT_TYPE);
879
+ });
880
+ }
881
+
882
+ static deactive(name$target) {
883
+ return this._query$targets(name$target).forEach(($target) => {
884
+ $target.classList.remove(this._ACTIVE_CSS_CLASS);
885
+ return luda.dispatch($target, this._DEACTIVED_EVENT_TYPE);
886
+ });
887
+ }
888
+
889
+ static toggle(name$target) {
890
+ return this._query$targets(name$target).forEach(($target) => {
891
+ if ($target.classList.contains(this._ACTIVE_CSS_CLASS)) {
892
+ return this.deactive($target);
893
+ } else {
894
+ return this.active($target);
895
+ }
896
+ });
897
+ }
898
+
899
+ static _query$targets(name$target) {
900
+ if (name$target instanceof Element) {
901
+ return [name$target];
902
+ } else {
903
+ return luda.$children(`[${this._TOGGLE_TARGET_ATTRIBUTE}=${name$target}]`);
904
+ }
905
+ }
906
+
907
+ static _init() {
908
+ var self;
909
+ self = this;
910
+ return luda.on('click', this._selector, function(e) {
911
+ var toggleChecked;
912
+ toggleChecked = false;
913
+ return luda.eventPath(e).some(function($path) {
914
+ var $toggle, toggleName;
915
+ if ($path instanceof Element) {
916
+ if ($path.hasAttribute(self._TOGGLE_ATTRIBUTE) || $path.hasAttribute(self._TOGGLE_FOR_ATTRIBUTE)) {
917
+ if (toggleName = $path.getAttribute(self._TOGGLE_FOR_ATTRIBUTE)) {
918
+ self.toggle(toggleName);
919
+ toggleChecked = true;
920
+ }
921
+ if ($path.hasAttribute(self._TOGGLE_ATTRIBUTE)) {
922
+ if ($path.hasAttribute(self._TOGGLE_TARGET_ATTRIBUTE)) {
923
+ $toggle = $path;
924
+ } else {
925
+ $toggle = luda.$parent(`[${self._TOGGLE_TARGET_ATTRIBUTE}]`, $path);
926
+ }
927
+ if ($toggle) {
928
+ self.toggle($toggle);
929
+ return toggleChecked = true;
930
+ }
931
+ }
932
+ } else if ($path.hasAttribute(self._NONE_TOGGLE_ATTRIBUTE)) {
933
+ return toggleChecked = true;
934
+ }
935
+ }
936
+ });
937
+ });
938
+ }
939
+
940
+ };
941
+
942
+ _Class._SCOPE = 'toggle';
943
+
944
+ _Class._TOGGLE_TARGET_ATTRIBUTE = 'data-toggle-target';
945
+
946
+ _Class._TOGGLE_ATTRIBUTE = 'data-toggle';
947
+
948
+ _Class._TOGGLE_FOR_ATTRIBUTE = 'data-toggle-for';
949
+
950
+ _Class._NONE_TOGGLE_ATTRIBUTE = 'data-none-toggle';
951
+
952
+ _Class._ACTIVE_CSS_CLASS = 'toggle-active';
953
+
954
+ _Class._SELECTORS = [`[${_Class._TOGGLE_FOR_ATTRIBUTE}]`, `[${_Class._TOGGLE_ATTRIBUTE}]`];
955
+
956
+ _Class._ACTIVED_EVENT_TYPE = `${_Class._SCOPE}:actived`;
957
+
958
+ _Class._DEACTIVED_EVENT_TYPE = `${_Class._SCOPE}:deactived`;
959
+
960
+ return _Class;
961
+
962
+ }).call(this));
963
+
964
+ luda((function() {
965
+ var _Class;
966
+
967
+ _Class = class extends luda.Component {
968
+ _getConfig() {
969
+ var _$file, _$simulator;
970
+ _$file = luda.$child(this.constructor._FILE_SELECTOR, this._$component);
971
+ _$simulator = luda.$child(this.constructor._SIMULATOR_SELECTOR, this._$component);
972
+ return {_$file, _$simulator};
973
+ }
974
+
975
+ _constructor() {
976
+ ({_$file: this._$file, _$simulator: this._$simulator} = this._getConfig());
977
+ return this._init();
978
+ }
979
+
980
+ _onMutations() {
981
+ return this._constructor();
982
+ }
983
+
984
+ _insertSimulator() {
985
+ this._$simulator = document.createElement('input');
986
+ this._$simulator.tabIndex = -1;
987
+ return luda.$after(this._$simulator, this._$file);
988
+ }
989
+
990
+ _setPlaceholderValue() {
991
+ return this._$simulator.placeholder = this._$file.getAttribute(this.constructor._PLACEHOLDER_ATTRIBUTE);
992
+ }
993
+
994
+ _setSimulatorValue() {
995
+ var values;
996
+ values = [];
997
+ Array.from(this._$file.files).map(function(file) {
998
+ return values.push(file.name);
999
+ });
1000
+ if (values.length) {
1001
+ return this._$simulator.value = values.join(this.constructor._VALUE_SPLITOR);
1002
+ } else if (this._$file.hasAttribute(this.constructor._VALUE_ATTRIBUTE)) {
1003
+ return this._$simulator.value = this._$file.getAttribute(this.constructor._VALUE_ATTRIBUTE);
1004
+ }
1005
+ }
1006
+
1007
+ _init() {
1008
+ if (this._$file) {
1009
+ if (!this._$simulator) {
1010
+ this._insertSimulator();
1011
+ }
1012
+ if (this._$file.hasAttribute(this.constructor._PLACEHOLDER_ATTRIBUTE)) {
1013
+ this._setPlaceholderValue();
1014
+ }
1015
+ return this._setSimulatorValue();
1016
+ }
1017
+ }
1018
+
1019
+ static _init() {
1020
+ var self;
1021
+ self = this;
1022
+ luda.on('change', `${this._SELECTOR} ${this._FILE_SELECTOR}`, function(e) {
1023
+ return self.query(luda.$parent(self._SELECTOR, this))._setSimulatorValue();
1024
+ });
1025
+ return luda.on(luda._FORM_RESET, this._SELECTOR, function(e) {
1026
+ return setTimeout(() => {
1027
+ return self.query(this)._setSimulatorValue();
1028
+ });
1029
+ });
1030
+ }
1031
+
1032
+ };
1033
+
1034
+ _Class._SCOPE = 'fmFile';
1035
+
1036
+ _Class._VALUE_SPLITOR = ' ';
1037
+
1038
+ _Class._SELECTOR = '.fm-file';
1039
+
1040
+ _Class._FILE_SELECTOR = 'input[type=file]';
1041
+
1042
+ _Class._SIMULATOR_SELECTOR = 'input:not([type=file])';
1043
+
1044
+ _Class._PLACEHOLDER_ATTRIBUTE = 'placeholder';
1045
+
1046
+ _Class._VALUE_ATTRIBUTE = 'value';
1047
+
1048
+ _Class._observerConfig = {
1049
+ childList: true,
1050
+ subtree: true
1051
+ };
1052
+
1053
+ return _Class;
1054
+
1055
+ }).call(this));
1056
+
1057
+ luda((function() {
1058
+ var _Class;
1059
+
1060
+ _Class = class extends luda.Component {
1061
+ select(indexOrIndexArray) {
1062
+ var selectedIndexes;
1063
+ if (this._$select.multiple) {
1064
+ if (this._$multipleSelectPlaceholder) {
1065
+ selectedIndexes = indexOrIndexArray;
1066
+ } else {
1067
+ selectedIndexes = indexOrIndexArray.map(function(index) {
1068
+ return index + 1;
1069
+ });
1070
+ }
1071
+ Array.from(this._$select.options).forEach(function($option, index) {
1072
+ return $option.selected = selectedIndexes.includes(index);
1073
+ });
1074
+ return this._markSelectedOption();
1075
+ } else {
1076
+ this._$select.selectedIndex = selectedIndex;
1077
+ this._setSingleSelectSimulatorValue();
1078
+ return this._markSelectedOption();
1079
+ }
1080
+ }
1081
+
1082
+ _getConfig() {
1083
+ var _$defaultSelectedOptions, _$multipleSelectPlaceholder, _$select, _$singleSelectSimulator, _defaultSelectedOptionMarked;
1084
+ _$select = luda.$child(this.constructor._SELECT_SELECTOR, this._$component);
1085
+ _$singleSelectSimulator = luda.$child(this.constructor._SINGLE_SELECT_SIMULATOR_SELECTOR, this._$component);
1086
+ _$multipleSelectPlaceholder = luda.$child(`.${this.constructor._MULTIPLE_SELECT_PLACEHOLDER_CSS_CLASS}`, this._$component);
1087
+ _$defaultSelectedOptions = luda.$children(`[${this.constructor._DEFAULT_SELECTED_OPTION_ATTRIBUTE}]`, this._$component);
1088
+ _defaultSelectedOptionMarked = this._$component.hasAttribute(this.constructor._INITED_ATTRIBUTE);
1089
+ return {_$select, _$singleSelectSimulator, _$multipleSelectPlaceholder, _$defaultSelectedOptions, _defaultSelectedOptionMarked};
1090
+ }
1091
+
1092
+ _constructor() {
1093
+ ({_$select: this._$select, _$singleSelectSimulator: this._$singleSelectSimulator, _$multipleSelectPlaceholder: this._$multipleSelectPlaceholder, _$defaultSelectedOptions: this._$defaultSelectedOptions, _defaultSelectedOptionMarked: this._defaultSelectedOptionMarked} = this._getConfig());
1094
+ if (this._$select) {
1095
+ if (this._$select.multiple) {
1096
+ return this._initMultipleSelect();
1097
+ } else {
1098
+ return this._initSingleSelect();
1099
+ }
1100
+ }
1101
+ }
1102
+
1103
+ _onMutations() {
1104
+ return this._constructor();
1105
+ }
1106
+
1107
+ _markSelectedOption() {
1108
+ if (this._observer) {
1109
+ this._disconnect();
1110
+ }
1111
+ Array.from(this._$select.options).forEach(function($option) {
1112
+ if ($option.selected) {
1113
+ return $option.setAttribute('selected', 'selected');
1114
+ } else {
1115
+ return $option.removeAttribute('selected');
1116
+ }
1117
+ });
1118
+ if (!this._observer) {
1119
+ return this._observe();
1120
+ }
1121
+ }
1122
+
1123
+ _markDefaultSelectedOption() {
1124
+ this._$component.setAttribute(this.constructor._INITED_ATTRIBUTE, '');
1125
+ return Array.from(this._$select.options).forEach(($option) => {
1126
+ if ($option.selected) {
1127
+ return $option.setAttribute(this.constructor._DEFAULT_SELECTED_OPTION_ATTRIBUTE, '');
1128
+ }
1129
+ });
1130
+ }
1131
+
1132
+ _setSingleSelectedDefaultSelectedOption() {
1133
+ var hasSelected;
1134
+ hasSelected = Array.from(this._$select.options).some(function($option) {
1135
+ return $option.getAttribute('selected') === 'selected';
1136
+ });
1137
+ if (!hasSelected) {
1138
+ return this._$select.selectedIndex = -1;
1139
+ }
1140
+ }
1141
+
1142
+ _insertSingleSelectSimulator() {
1143
+ this._$singleSelectSimulator = document.createElement('input');
1144
+ this._$singleSelectSimulator.tabIndex = -1;
1145
+ return luda.$after(this._$singleSelectSimulator, this._$select);
1146
+ }
1147
+
1148
+ _setSingleSelectPlaceholderValue() {
1149
+ return this._$singleSelectSimulator.placeholder = this._$select.getAttribute(this.constructor._PLACEHOLDER_ATTRIBUTE);
1150
+ }
1151
+
1152
+ _setSingleSelectSimulatorValue() {
1153
+ var $selectedOption;
1154
+ if ($selectedOption = this._$select.options[this._$select.selectedIndex]) {
1155
+ return this._$singleSelectSimulator.value = $selectedOption.innerText;
1156
+ } else {
1157
+ return this._$singleSelectSimulator.value = '';
1158
+ }
1159
+ }
1160
+
1161
+ _initSingleSelect() {
1162
+ if (!this._$singleSelectSimulator) {
1163
+ this._insertSingleSelectSimulator();
1164
+ }
1165
+ if (this._$select.hasAttribute(this.constructor._PLACEHOLDER_ATTRIBUTE)) {
1166
+ this._setSingleSelectedDefaultSelectedOption();
1167
+ this._setSingleSelectPlaceholderValue();
1168
+ }
1169
+ if (!this._defaultSelectedOptionMarked) {
1170
+ this._markDefaultSelectedOption();
1171
+ }
1172
+ this._setSingleSelectSimulatorValue();
1173
+ return this._markSelectedOption();
1174
+ }
1175
+
1176
+ _insertMultipleSelectBlankOption() {
1177
+ this._$multipleSelectPlaceholder = document.createElement('option');
1178
+ this._$multipleSelectPlaceholder.className = this.constructor._MULTIPLE_SELECT_PLACEHOLDER_CSS_CLASS;
1179
+ this._$multipleSelectPlaceholder.disabled = true;
1180
+ return luda.$prepend(this._$multipleSelectPlaceholder, this._$select);
1181
+ }
1182
+
1183
+ _setMultipleSelectPlaceholderValue() {
1184
+ return this._$multipleSelectPlaceholder.innerText = this._$select.getAttribute(this.constructor._PLACEHOLDER_ATTRIBUTE);
1185
+ }
1186
+
1187
+ _initMultipleSelect() {
1188
+ if (!this._$multipleSelectPlaceholder) {
1189
+ if (this._$select.hasAttribute(this.constructor._PLACEHOLDER_ATTRIBUTE)) {
1190
+ this._insertMultipleSelectBlankOption();
1191
+ this._setMultipleSelectPlaceholderValue();
1192
+ }
1193
+ }
1194
+ if (!this._defaultSelectedOptionMarked) {
1195
+ return this._markDefaultSelectedOption();
1196
+ }
1197
+ }
1198
+
1199
+ _reset() {
1200
+ if (this._$select) {
1201
+ Array.from(this._$select.options).forEach(($option) => {
1202
+ return $option.selected = this._$defaultSelectedOptions.includes($option);
1203
+ });
1204
+ if (!this._$select.multiple) {
1205
+ this._setSingleSelectSimulatorValue();
1206
+ }
1207
+ return this._markSelectedOption();
1208
+ }
1209
+ }
1210
+
1211
+ static _init() {
1212
+ var self;
1213
+ self = this;
1214
+ luda.on('change', `${this._SELECTOR} ${this._SELECT_SELECTOR}`, function(e) {
1215
+ var instance;
1216
+ instance = self.query(luda.$parent(self._SELECTOR, this));
1217
+ if (!this.multiple) {
1218
+ instance._setSingleSelectSimulatorValue();
1219
+ }
1220
+ return instance._markSelectedOption();
1221
+ });
1222
+ return luda.on(luda._FORM_RESET, this._SELECTOR, function(e) {
1223
+ return setTimeout(() => {
1224
+ return self.query(this)._reset();
1225
+ });
1226
+ });
1227
+ }
1228
+
1229
+ };
1230
+
1231
+ _Class._SCOPE = 'fmSelect';
1232
+
1233
+ _Class._SELECTOR = '.fm-select';
1234
+
1235
+ _Class._SELECT_SELECTOR = 'select';
1236
+
1237
+ _Class._SINGLE_SELECT_SIMULATOR_SELECTOR = 'input';
1238
+
1239
+ _Class._PLACEHOLDER_ATTRIBUTE = 'placeholder';
1240
+
1241
+ _Class._MULTIPLE_SELECT_PLACEHOLDER_CSS_CLASS = 'fm-select-multiple-placeholder';
1242
+
1243
+ _Class._DEFAULT_SELECTED_OPTION_ATTRIBUTE = 'data-fm-select-default-selected';
1244
+
1245
+ _Class._INITED_ATTRIBUTE = 'data-fm-select-inited';
1246
+
1247
+ _Class._observerConfig = {
1248
+ childList: true,
1249
+ attributes: true,
1250
+ subtree: true,
1251
+ attributeFilter: ['selected']
1252
+ };
1253
+
1254
+ return _Class;
1255
+
1256
+ }).call(this));
1257
+
1258
+ luda((function() {
1259
+ var _Class;
1260
+
1261
+ _Class = class extends luda.Component {
1262
+
1263
+ // public
1264
+ active(index) {
1265
+ var action, activedIndex;
1266
+ if (this._$items.length && !this._transiting) {
1267
+ activedIndex = this._activeIndex;
1268
+ if ((index != null) && index !== this._activeIndex && (0 <= index && index <= this._$items.length - 1)) {
1269
+ this._transiting = true;
1270
+ this._activeIndex = index;
1271
+ action = index < activedIndex ? '_slidePrev' : '_slideNext';
1272
+ return this[action](this._$items[activedIndex], activedIndex);
1273
+ }
1274
+ }
1275
+ }
1276
+
1277
+ next() {
1278
+ var activedIndex, index;
1279
+ if (this._$items.length && !this._transiting) {
1280
+ activedIndex = this._activeIndex;
1281
+ index = activedIndex + 1;
1282
+ if (index > this._$items.length - 1) {
1283
+ if (!this._wrap) {
1284
+ return;
1285
+ }
1286
+ index = 0;
1287
+ }
1288
+ this._transiting = true;
1289
+ this._activeIndex = index;
1290
+ this._slideNext(this._$items[activedIndex], activedIndex);
1291
+ this._playTimeStamp = Date.now();
1292
+ return this._pausedRemainTime = this._interval;
1293
+ }
1294
+ }
1295
+
1296
+ prev() {
1297
+ var activedIndex, index;
1298
+ if (this._$items.length && !this._transiting) {
1299
+ activedIndex = this._activeIndex;
1300
+ index = activedIndex - 1;
1301
+ if (index < 0) {
1302
+ if (!this._wrap) {
1303
+ return;
1304
+ }
1305
+ index = this._$items.length - 1;
1306
+ }
1307
+ this._transiting = true;
1308
+ this._activeIndex = index;
1309
+ this._slidePrev(this._$items[activedIndex], activedIndex);
1310
+ this._playTimeStamp = Date.now();
1311
+ return this._pausedRemainTime = this._interval;
1312
+ }
1313
+ }
1314
+
1315
+ pause() {
1316
+ if (this._intervaling != null) {
1317
+ clearInterval(this._intervaling);
1318
+ this._intervaling = null;
1319
+ return this._pausedRemainTime = this._pausedRemainTime - (Date.now() - this._playTimeStamp);
1320
+ }
1321
+ }
1322
+
1323
+ play() {
1324
+ var execute;
1325
+ if (this._interval && this._$items.length > 1) {
1326
+ this._playTimeStamp = Date.now();
1327
+ this.pause();
1328
+ execute = () => {
1329
+ this.next();
1330
+ return this._intervaling = setInterval(this.next.bind(this), this._interval);
1331
+ };
1332
+ return this._intervaling = setTimeout(execute, this._pausedRemainTime);
1333
+ }
1334
+ }
1335
+
1336
+ // private
1337
+ _getConfig() {
1338
+ var _$indicators, _$items, _$nextControl, _$prevControl, _activeIndex, _interval, _wrap;
1339
+ _$items = luda.$unnested(this.constructor._ITEMS_SELECTOR, this._$component, this.constructor._SELECTOR);
1340
+ _$indicators = luda.$unnested(this.constructor._INDICATORS_SELECTOR, this._$component, this.constructor._SELECTOR);
1341
+ _$prevControl = luda.$child(this.constructor._PREV_CONTROL_SELECTOR, this._$component);
1342
+ _$nextControl = luda.$child(this.constructor._NEXT_CONTROL_SELECTOR, this._$component);
1343
+ _activeIndex = _$items.indexOf(luda.$child(`.${this.constructor._ITEM_ACTIVE_CSS_CLASS}`, this._$component));
1344
+ if (_activeIndex === -1) {
1345
+ _activeIndex = this.constructor._ACTIVE_INDEX;
1346
+ }
1347
+ _interval = this._$component.getAttribute(this.constructor._INTERVAL_ATTRIBUTE);
1348
+ if (_interval === this.constructor._FALSE) {
1349
+ _interval = false;
1350
+ } else {
1351
+ _interval = Math.abs(parseInt(_interval, 10)) || this.constructor._INTERVAL;
1352
+ }
1353
+ _wrap = this._$component.getAttribute(this.constructor._WRAP_ATTRIBUTE);
1354
+ _wrap = _wrap === this.constructor._FALSE ? false : this.constructor._WRAP;
1355
+ return {_$items, _$indicators, _$prevControl, _$nextControl, _activeIndex, _interval, _wrap};
1356
+ }
1357
+
1358
+ _constructor() {
1359
+ ({_$items: this._$items, _$indicators: this._$indicators, _$prevControl: this._$prevControl, _$nextControl: this._$nextControl, _activeIndex: this._activeIndex, _interval: this._interval, _wrap: this._wrap} = this._getConfig());
1360
+ this._transiting = false;
1361
+ this._intervaling = null;
1362
+ this._playTimeStamp = 0;
1363
+ this._pausedRemainTime = this._interval;
1364
+ this._layout();
1365
+ return this.play();
1366
+ }
1367
+
1368
+ _onMutations(mutations) {
1369
+ ({_$items: this._$items, _$indicators: this._$indicators, _$prevControl: this._$prevControl, _$nextControl: this._$nextControl, _activeIndex: this._activeIndex, _interval: this._interval, _wrap: this._wrap} = this._getConfig());
1370
+ this._setIndicatorsState();
1371
+ this._setDirectionControlState();
1372
+ return this.play();
1373
+ }
1374
+
1375
+ _destroy() {
1376
+ return this.pause();
1377
+ }
1378
+
1379
+ _layout() {
1380
+ this._$items.forEach(($item, index) => {
1381
+ $item.style.transition = 'none';
1382
+ if (index > this._activeIndex) {
1383
+ $item.classList.add(this.constructor._ITEM_NEXT_CSS_CLASS);
1384
+ $item.classList.remove(this.constructor._ITEM_PREV_CSS_CLASS);
1385
+ $item.classList.remove(this.constructor._ITEM_ACTIVE_CSS_CLASS);
1386
+ } else if (index < this._activeIndex) {
1387
+ $item.classList.add(this.constructor._ITEM_PREV_CSS_CLASS);
1388
+ $item.classList.remove(this.constructor._ITEM_NEXT_CSS_CLASS);
1389
+ $item.classList.remove(this.constructor._ITEM_ACTIVE_CSS_CLASS);
1390
+ } else {
1391
+ luda.dispatch($item, this.constructor._ACTIVED_EVENT_TYPE, index);
1392
+ $item.classList.add(this.constructor._ITEM_ACTIVE_CSS_CLASS);
1393
+ $item.classList.remove(this.constructor._ITEM_NEXT_CSS_CLASS);
1394
+ $item.classList.remove(this.constructor._ITEM_PREV_CSS_CLASS);
1395
+ }
1396
+ luda.reflow($item);
1397
+ return $item.style.transition = '';
1398
+ });
1399
+ this._setIndicatorsState();
1400
+ return this._setDirectionControlState();
1401
+ }
1402
+
1403
+ _slideNext($activedItem, activedIndex) {
1404
+ var $item;
1405
+ if (this._$items.length > 1) {
1406
+ $item = this._$items[this._activeIndex];
1407
+ luda.dispatch($item, this.constructor._ACTIVE_EVENT_TYPE, this._activeIndex);
1408
+ $item.style.transition = 'none';
1409
+ $item.classList.remove(this.constructor._ITEM_PREV_CSS_CLASS);
1410
+ $item.classList.add(this.constructor._ITEM_NEXT_CSS_CLASS);
1411
+ luda.reflow($item);
1412
+ $item.style.transition = '';
1413
+ $item.classList.remove(this.constructor._ITEM_NEXT_CSS_CLASS);
1414
+ $item.classList.add(this.constructor._ITEM_ACTIVE_CSS_CLASS);
1415
+ luda.dispatch($activedItem, this.constructor._DEACTIVE_EVENT_TYPE, activedIndex);
1416
+ $activedItem.classList.remove(this.constructor._ITEM_ACTIVE_CSS_CLASS);
1417
+ $activedItem.classList.add(this.constructor._ITEM_PREV_CSS_CLASS);
1418
+ this._setIndicatorsState();
1419
+ return this._setDirectionControlState();
1420
+ }
1421
+ }
1422
+
1423
+ _slidePrev($activedItem, activedIndex) {
1424
+ var $item;
1425
+ if (this._$items.length > 1) {
1426
+ $item = this._$items[this._activeIndex];
1427
+ luda.dispatch($item, this.constructor._ACTIVE_EVENT_TYPE, this._activeIndex);
1428
+ $item.style.transition = 'none';
1429
+ $item.classList.remove(this.constructor._ITEM_NEXT_CSS_CLASS);
1430
+ $item.classList.add(this.constructor._ITEM_PREV_CSS_CLASS);
1431
+ luda.reflow($item);
1432
+ $item.style.transition = '';
1433
+ $item.classList.remove(this.constructor._ITEM_PREV_CSS_CLASS);
1434
+ $item.classList.add(this.constructor._ITEM_ACTIVE_CSS_CLASS);
1435
+ luda.dispatch($activedItem, this.constructor._DEACTIVE_EVENT_TYPE, activedIndex);
1436
+ $activedItem.classList.remove(this.constructor._ITEM_ACTIVE_CSS_CLASS);
1437
+ $activedItem.classList.add(this.constructor._ITEM_NEXT_CSS_CLASS);
1438
+ this._setIndicatorsState();
1439
+ return this._setDirectionControlState();
1440
+ }
1441
+ }
1442
+
1443
+ _setIndicatorsState() {
1444
+ return this._$indicators.forEach(($indicator, index) => {
1445
+ return $indicator.disabled = index === this._activeIndex;
1446
+ });
1447
+ }
1448
+
1449
+ _setDirectionControlState() {
1450
+ var ref, ref1, ref2, ref3;
1451
+ if (this._$items.length <= 1) {
1452
+ return (ref = this._$prevControl) != null ? ref.disabled = (ref1 = this._$nextControl) != null ? ref1.disabled = true : void 0 : void 0;
1453
+ } else {
1454
+ if ((ref2 = this._$prevControl) != null) {
1455
+ ref2.disabled = this._activeIndex === 0 && !this._wrap;
1456
+ }
1457
+ return (ref3 = this._$nextControl) != null ? ref3.disabled = this._activeIndex === this._$items.length - 1 && !this._wrap : void 0;
1458
+ }
1459
+ }
1460
+
1461
+
1462
+ // static private
1463
+ static _init() {
1464
+ var self;
1465
+ self = this;
1466
+ luda.on('transitionend', this._ITEMS_SELECTOR, function(e) {
1467
+ var index, instance;
1468
+ instance = self.query(luda.$parent(self._SELECTOR, this));
1469
+ instance._transiting = false;
1470
+ index = instance._$items.indexOf(this);
1471
+ if (this.classList.contains(self._ITEM_ACTIVE_CSS_CLASS)) {
1472
+ return luda.dispatch(this, self._ACTIVED_EVENT_TYPE, index);
1473
+ } else {
1474
+ return luda.dispatch(this, self._DEACTIVED_EVENT_TYPE, index);
1475
+ }
1476
+ });
1477
+ luda.on('click', this._INDICATORS_SELECTOR, function(e) {
1478
+ var instance;
1479
+ instance = self.query(luda.$parent(self._SELECTOR, this));
1480
+ return instance.active(instance._$indicators.indexOf(this));
1481
+ });
1482
+ luda.on('touchstart', this._SELECTOR, function(e) {
1483
+ return self.query(this).pause();
1484
+ });
1485
+ luda.on('touchend', this._SELECTOR, function(e) {
1486
+ return setTimeout(() => {
1487
+ return self.query(this).play();
1488
+ });
1489
+ });
1490
+ luda.on('mouseover', this._SELECTOR, function(e) {
1491
+ return self.query(this).pause();
1492
+ });
1493
+ luda.on('mouseout', this._SELECTOR, function(e) {
1494
+ return self.query(this).play();
1495
+ });
1496
+ luda.on(luda._SWIPE_LEFT_OR_UP, this._SELECTOR, function(startE, e) {
1497
+ return self.query(this).next();
1498
+ });
1499
+ luda.on(luda._SWIPE_RIGHT_OR_DOWN, this._SELECTOR, function(startE, e) {
1500
+ return self.query(this).prev();
1501
+ });
1502
+ luda.on('click', this._PREV_CONTROL_SELECTOR, function(e) {
1503
+ return self.query(luda.$parent(self._SELECTOR, this)).prev();
1504
+ });
1505
+ return luda.on('click', this._NEXT_CONTROL_SELECTOR, function(e) {
1506
+ return self.query(luda.$parent(self._SELECTOR, this)).next();
1507
+ });
1508
+ }
1509
+
1510
+ };
1511
+
1512
+ _Class._SCOPE = 'carousel';
1513
+
1514
+ _Class._SELECTOR = '.carousel';
1515
+
1516
+ _Class._ITEMS_SELECTOR = '.carousel-item';
1517
+
1518
+ _Class._PREV_CONTROL_SELECTOR = '.carousel-prev';
1519
+
1520
+ _Class._NEXT_CONTROL_SELECTOR = '.carousel-next';
1521
+
1522
+ _Class._INDICATORS_SELECTOR = '.carousel-indicators .btn';
1523
+
1524
+ _Class._INTERVAL_ATTRIBUTE = 'data-carousel-interval';
1525
+
1526
+ _Class._WRAP_ATTRIBUTE = 'data-carousel-wrap';
1527
+
1528
+ _Class._ITEM_ACTIVE_CSS_CLASS = 'carousel-item-active';
1529
+
1530
+ _Class._ITEM_NEXT_CSS_CLASS = 'carousel-item-next';
1531
+
1532
+ _Class._ITEM_PREV_CSS_CLASS = 'carousel-item-prev';
1533
+
1534
+ _Class._ACTIVE_INDEX = 0;
1535
+
1536
+ _Class._INTERVAL = 5000;
1537
+
1538
+ _Class._WRAP = true;
1539
+
1540
+ _Class._FALSE = 'false';
1541
+
1542
+ _Class._ACTIVE_EVENT_TYPE = `${_Class._SCOPE}:active`;
1543
+
1544
+ _Class._ACTIVED_EVENT_TYPE = `${_Class._SCOPE}:actived`;
1545
+
1546
+ _Class._DEACTIVE_EVENT_TYPE = `${_Class._SCOPE}:deactive`;
1547
+
1548
+ _Class._DEACTIVED_EVENT_TYPE = `${_Class._SCOPE}:deactived`;
1549
+
1550
+ _Class._observerConfig = {
1551
+ childList: true,
1552
+ attributes: true,
1553
+ subtree: true,
1554
+ attributeFilter: [_Class._INTERVAL_ATTRIBUTE, _Class._WRAP_ATTRIBUTE]
1555
+ };
1556
+
1557
+ return _Class;
1558
+
1559
+ }).call(this));
1560
+
1561
+ luda((function() {
1562
+ var _Class;
1563
+
1564
+ _Class = class extends luda.Component {
1565
+ active() {
1566
+ var ref;
1567
+ if (!this._actived()) {
1568
+ this._$component.classList.add(this.constructor._ACTIVE_CSS_CLASS);
1569
+ this.constructor._$focused.push(document.activeElement);
1570
+ if ((ref = this._parent) != null) {
1571
+ ref.active();
1572
+ }
1573
+ return luda.dispatch(this._$component, this.constructor._ACTIVED_EVENT_TYPE);
1574
+ }
1575
+ }
1576
+
1577
+ deactive(focus) {
1578
+ var ref;
1579
+ if (this._actived()) {
1580
+ this._$component.classList.remove(this.constructor._ACTIVE_CSS_CLASS);
1581
+ this._children.forEach(function(child) {
1582
+ return child.deactive();
1583
+ });
1584
+ if (focus) {
1585
+ if ((ref = this.constructor._$focused[this.constructor._$focused.length - 1]) != null) {
1586
+ ref.focus();
1587
+ }
1588
+ }
1589
+ this.constructor._$focused.splice(this.constructor._$focused.length - 1, 1);
1590
+ return luda.dispatch(this._$component, this.constructor._DEACTIVED_EVENT_TYPE);
1591
+ }
1592
+ }
1593
+
1594
+ toggle(focus) {
1595
+ if (this._actived()) {
1596
+ return this.deactive(focus);
1597
+ } else {
1598
+ return this.active();
1599
+ }
1600
+ }
1601
+
1602
+ prev() {
1603
+ var focusIndex;
1604
+ if (this._$items.length && this._actived()) {
1605
+ focusIndex = this._$items.indexOf(document.activeElement) - 1;
1606
+ if (focusIndex < 0) {
1607
+ focusIndex = 0;
1608
+ }
1609
+ return this._$items[focusIndex].focus();
1610
+ }
1611
+ }
1612
+
1613
+ next() {
1614
+ var focusIndex;
1615
+ if (this._$items.length && this._actived()) {
1616
+ focusIndex = this._$items.indexOf(document.activeElement) + 1;
1617
+ if (focusIndex > this._$items.length - 1) {
1618
+ focusIndex = this._$items.length - 1;
1619
+ }
1620
+ return this._$items[focusIndex].focus();
1621
+ }
1622
+ }
1623
+
1624
+ _getConfig() {
1625
+ var _$items, _$menu, _$noneSwitches, _$switches, _isStandalone;
1626
+ _$menu = luda.$child(this.constructor._MENU_SELECTOR, this._$component);
1627
+ _$switches = luda.$unnested(this.constructor._SWITCHES_SELECTOR, this._$component, this.constructor._SELECTOR).concat(luda.$unnested(this.constructor._SWITCHES_SELECTOR, _$menu, this.constructor._MENU_SELECTOR));
1628
+ _$noneSwitches = luda.$unnested(this.constructor._NONE_SWITCHES_SELECTOR, this._$component, this.constructor._SELECTOR).concat(luda.$unnested(this.constructor._NONE_SWITCHES_SELECTOR, _$menu, this.constructor._MENU_SELECTOR));
1629
+ _$items = luda.$unnested(this.constructor._ITEMS_SELECTOR, _$menu, this.constructor._MENU_SELECTOR);
1630
+ _isStandalone = this._$component.hasAttribute(this.constructor._STANDALONE_ATTRIBUTE);
1631
+ return {_$items, _$switches, _$noneSwitches, _isStandalone};
1632
+ }
1633
+
1634
+ _constructor() {
1635
+ return ({_$items: this._$items, _$switches: this._$switches, _$noneSwitches: this._$noneSwitches, _isStandalone: this._isStandalone} = this._getConfig());
1636
+ }
1637
+
1638
+ _onMutations(mutations) {
1639
+ return this._constructor();
1640
+ }
1641
+
1642
+ _actived() {
1643
+ return this._$component.classList.contains(this.constructor._ACTIVE_CSS_CLASS);
1644
+ }
1645
+
1646
+ _deactiveChildrenExcept(exceptions) {
1647
+ if (exceptions && !(exceptions instanceof Array)) {
1648
+ exceptions = [exceptions];
1649
+ }
1650
+ if (exceptions) {
1651
+ return this._children.forEach(function(child) {
1652
+ if (child._actived() && !exceptions.includes(child)) {
1653
+ return child.deactive();
1654
+ }
1655
+ });
1656
+ } else {
1657
+ return this._children.forEach(function(child) {
1658
+ if (child._actived()) {
1659
+ return child.deactive();
1660
+ }
1661
+ });
1662
+ }
1663
+ }
1664
+
1665
+ static deactiveExcept(instances$dropdowns) {
1666
+ var exceptions;
1667
+ exceptions = [];
1668
+ if (instances$dropdowns && !(instances$dropdowns instanceof Array)) {
1669
+ instances$dropdowns = [instances$dropdowns];
1670
+ }
1671
+ if (instances$dropdowns) {
1672
+ instances$dropdowns.forEach((instance$dropdown) => {
1673
+ var exception;
1674
+ if (exception = this.query(instance$dropdown)) {
1675
+ return exceptions.push(exception);
1676
+ }
1677
+ });
1678
+ }
1679
+ if (exceptions.length) {
1680
+ return this._instances.forEach(function(instance) {
1681
+ var instanceHasntExceptionChild, instanceIsntInExceptions;
1682
+ instanceIsntInExceptions = !exceptions.includes(instance);
1683
+ instanceHasntExceptionChild = exceptions.every(function(exception) {
1684
+ return !instance._hasDescendant(exception);
1685
+ });
1686
+ if (instance._actived() && instanceIsntInExceptions && instanceHasntExceptionChild) {
1687
+ return instance.deactive();
1688
+ }
1689
+ });
1690
+ } else {
1691
+ return this._instances.forEach(function(instance) {
1692
+ if (instance._actived()) {
1693
+ return instance.deactive();
1694
+ }
1695
+ });
1696
+ }
1697
+ }
1698
+
1699
+ static _standaloneInstances() {
1700
+ return this._instances.filter(function(instance) {
1701
+ if (instance._isStandalone) {
1702
+ return instance;
1703
+ }
1704
+ });
1705
+ }
1706
+
1707
+ static _init() {
1708
+ var self;
1709
+ self = this;
1710
+ luda.onOpposite('click', this._SELECTOR, function(e) {
1711
+ return self.deactiveExcept(self._standaloneInstances());
1712
+ });
1713
+ luda.on('click', this._SELECTOR, function(e) {
1714
+ var focus, instance, toggleChecked;
1715
+ if (instance = self.query(this)) {
1716
+ toggleChecked = false;
1717
+ focus = !e.detail;
1718
+ self.deactiveExcept(self._standaloneInstances().concat(instance));
1719
+ instance._deactiveChildrenExcept();
1720
+ if (instance._parent) {
1721
+ instance._parent._deactiveChildrenExcept(instance);
1722
+ }
1723
+ if (instance._$switches.length || instance._$noneSwitches.length) {
1724
+ luda.eventPath(e).some(function($path) {
1725
+ if (instance._$switches.includes($path)) {
1726
+ instance.toggle(focus);
1727
+ return toggleChecked = true;
1728
+ } else if (instance._$noneSwitches.includes($path)) {
1729
+ return toggleChecked = true;
1730
+ }
1731
+ });
1732
+ }
1733
+ if (!toggleChecked) {
1734
+ return instance.toggle(focus);
1735
+ }
1736
+ }
1737
+ });
1738
+ luda.onOpposite('keyup', this._SELECTOR, function(e) {
1739
+ return self.deactiveExcept();
1740
+ });
1741
+ luda.on('keyup', this._SELECTOR, function(e) {
1742
+ var instance;
1743
+ if (e.keyCode === luda.KEY_TAB && (instance = self.query(this))) {
1744
+ self.deactiveExcept(instance);
1745
+ return instance.active();
1746
+ }
1747
+ });
1748
+ luda.on('keydown', this._SELECTOR, function(e) {
1749
+ var instance, ref;
1750
+ if (e.keyCode === luda.KEY_ESC && (instance = self.query(this))) {
1751
+ e.preventDefault();
1752
+ if (instance._actived()) {
1753
+ return instance.deactive(true);
1754
+ } else {
1755
+ return (ref = instance._parent) != null ? ref.deactive(true) : void 0;
1756
+ }
1757
+ }
1758
+ });
1759
+ return luda.on('keydown', this._SELECTOR, function(e) {
1760
+ var instance, ref, ref1;
1761
+ if ([luda.KEY_LEFT, luda.KEY_UP].includes(e.keyCode) && (instance = self.query(this))) {
1762
+ e.preventDefault();
1763
+ if (instance._actived()) {
1764
+ return instance.prev();
1765
+ } else {
1766
+ return (ref = instance._parent) != null ? ref.prev() : void 0;
1767
+ }
1768
+ } else if ([luda.KEY_RIGHT, luda.KEY_DOWN].includes(e.keyCode) && (instance = self.query(this))) {
1769
+ e.preventDefault();
1770
+ if (instance._actived()) {
1771
+ return instance.next();
1772
+ } else {
1773
+ return (ref1 = instance._parent) != null ? ref1.next() : void 0;
1774
+ }
1775
+ }
1776
+ });
1777
+ }
1778
+
1779
+ };
1780
+
1781
+ _Class._SCOPE = 'dropdown';
1782
+
1783
+ _Class._SELECTOR = '.dropdown-fixed,.dropdown-absolute, .dropdown-static,.dropdown-absolute-m';
1784
+
1785
+ _Class._MENU_SELECTOR = '.dropdown-menu';
1786
+
1787
+ _Class._ITEMS_SELECTOR = 'a[href]:not([disabled]),button:not([disabled]), input:not([disabled]),[tabindex]:not([disabled])';
1788
+
1789
+ _Class._TOGGLE_ATTRIBUTE = 'data-dropdown-toggle';
1790
+
1791
+ _Class._NONE_TOGGLE_ATTRIBUTE = 'data-dropdown-none-toggle';
1792
+
1793
+ _Class._STANDALONE_ATTRIBUTE = 'data-dropdown-standalone';
1794
+
1795
+ _Class._SWITCHES_SELECTOR = `[${_Class._TOGGLE_ATTRIBUTE}]`;
1796
+
1797
+ _Class._NONE_SWITCHES_SELECTOR = `[${_Class._NONE_TOGGLE_ATTRIBUTE}]`;
1798
+
1799
+ _Class._ACTIVE_CSS_CLASS = 'dropdown-active';
1800
+
1801
+ _Class._ACTIVED_EVENT_TYPE = `${_Class._SCOPE}:actived`;
1802
+
1803
+ _Class._DEACTIVED_EVENT_TYPE = `${_Class._SCOPE}:deactived`;
1804
+
1805
+ _Class._observerConfig = {
1806
+ childList: true,
1807
+ attributes: true,
1808
+ subtree: true,
1809
+ attributeFilter: [_Class._TOGGLE_ATTRIBUTE, _Class._NONE_TOGGLE_ATTRIBUTE, _Class._STANDALONE_ATTRIBUTE]
1810
+ };
1811
+
1812
+ _Class._$focused = [];
1813
+
1814
+ return _Class;
1815
+
1816
+ }).call(this));
1817
+
1818
+ luda((function() {
1819
+ var _Class;
1820
+
1821
+ _Class = class extends luda.Component {
1822
+ _getConfig() {
1823
+ var _$defaultValues, _$valueHolder, _$values;
1824
+ _$values = luda.$children(this.constructor._VALUE_SELECTOR, this._$component);
1825
+ _$defaultValues = luda.$children(this.constructor._DEFAULT_VALUE_SELECTOR, this._$component);
1826
+ _$valueHolder = luda.$child(this.constructor._VALUE_HOLDER_SELECTOR, this._$component);
1827
+ return {_$values, _$valueHolder, _$defaultValues};
1828
+ }
1829
+
1830
+ _constructor() {
1831
+ ({_$values: this._$values, _$valueHolder: this._$valueHolder, _$defaultValues: this._$defaultValues} = this._getConfig());
1832
+ this._setValueHolderAttribute();
1833
+ return this._setValueHolderValue();
1834
+ }
1835
+
1836
+ _onMutations() {
1837
+ return this._constructor();
1838
+ }
1839
+
1840
+ _setValueHolderValue() {
1841
+ var values;
1842
+ values = [];
1843
+ this._$values.forEach(($value, index) => {
1844
+ var value;
1845
+ if ($value.checked) {
1846
+ if ($value.hasAttribute(this.constructor._VALUE_ATTRIBUTE)) {
1847
+ value = $value.getAttribute(this.constructor._VALUE_ATTRIBUTE);
1848
+ } else {
1849
+ value = this._$defaultValues[index].innerText;
1850
+ }
1851
+ }
1852
+ if (value && !values.includes(value)) {
1853
+ return values.push(value);
1854
+ }
1855
+ });
1856
+ if (this._$valueHolder) {
1857
+ return this._$valueHolder.value = values.join(this.constructor._VALUE_SPLITOR);
1858
+ }
1859
+ }
1860
+
1861
+ _setValueHolderAttribute() {
1862
+ if (this._$valueHolder) {
1863
+ return this._$valueHolder.setAttribute('readonly', '');
1864
+ }
1865
+ }
1866
+
1867
+ static _init() {
1868
+ var self;
1869
+ self = this;
1870
+ luda.enterClick._add(this._ENTER_CLICK_VALUE_HOLDER_SELECTOR);
1871
+ luda.on('change', `${this._SELECTOR} ${this._VALUE_SELECTOR}`, function(e) {
1872
+ return self.query(luda.$parent(self._SELECTOR, this))._setValueHolderValue();
1873
+ });
1874
+ luda.on(luda._FORM_RESET, this._SELECTOR, function(e) {
1875
+ return setTimeout(() => {
1876
+ return self.query(this)._setValueHolderValue();
1877
+ });
1878
+ });
1879
+ // prevent ios device pop out wired navigation pannel
1880
+ if (/iphone/i.test(navigator.userAgent) || /ipad/i.test(navigator.userAgent)) {
1881
+ return luda.on('focusin', this._ENTER_CLICK_VALUE_HOLDER_SELECTOR, function(e) {
1882
+ this.blur();
1883
+ return this.classList.add(luda.focus._CSS_CLASS);
1884
+ });
1885
+ }
1886
+ }
1887
+
1888
+ };
1889
+
1890
+ _Class._SCOPE = 'fmDropdown';
1891
+
1892
+ _Class._SELECTOR = '.fm-dropdown';
1893
+
1894
+ _Class._VALUE_SPLITOR = ' ';
1895
+
1896
+ _Class._VALUE_ATTRIBUTE = 'data-fm-dropdown-value';
1897
+
1898
+ _Class._VALUE_SELECTOR = '.dropdown-items .btn-radio input, .dropdown-items .btn-check input';
1899
+
1900
+ _Class._DEFAULT_VALUE_SELECTOR = '.dropdown-items .btn-radio label, .dropdown-items .btn-check label';
1901
+
1902
+ _Class._VALUE_HOLDER_SELECTOR = '.fm input';
1903
+
1904
+ _Class._ENTER_CLICK_VALUE_HOLDER_SELECTOR = '.fm-dropdown .fm input';
1905
+
1906
+ _Class._observerConfig = {
1907
+ childList: true,
1908
+ attributes: true,
1909
+ subtree: true,
1910
+ attributeFilter: ['checked', _Class._VALUE_ATTRIBUTE]
1911
+ };
1912
+
1913
+ return _Class;
1914
+
1915
+ }).call(this));
1916
+
1917
+ luda((function() {
1918
+ var _Class;
1919
+
1920
+ _Class = class extends luda.Component {
1921
+
1922
+ // public
1923
+ active(index) {
1924
+ var activedIndex;
1925
+ if (this._$panes.length) {
1926
+ activedIndex = this._activeIndex;
1927
+ if ((index != null) && index !== this._activeIndex && (0 <= index && index <= this._$panes.length - 1)) {
1928
+ this._activeIndex = index;
1929
+ return this._active(activedIndex);
1930
+ }
1931
+ }
1932
+ }
1933
+
1934
+ // private
1935
+ _getConfig() {
1936
+ var _$indicators, _$panes, _activeIndex;
1937
+ _$panes = luda.$unnested(this.constructor._PANE_SELECTOR, this._$component, this.constructor._SELECTOR);
1938
+ _$indicators = luda.$unnested(this.constructor._INDICATOR_SELECTOR, this._$component, this.constructor._SELECTOR);
1939
+ _activeIndex = this.constructor._ACTIVE_INDEX;
1940
+ _$indicators.some(function($indicator, index) {
1941
+ if ($indicator.checked) {
1942
+ _activeIndex = index;
1943
+ return true;
1944
+ }
1945
+ });
1946
+ return {_$panes, _$indicators, _activeIndex};
1947
+ }
1948
+
1949
+ _constructor() {
1950
+ ({_$panes: this._$panes, _$indicators: this._$indicators, _activeIndex: this._activeIndex} = this._getConfig());
1951
+ return this._active();
1952
+ }
1953
+
1954
+ _onMutations(mutations) {
1955
+ return this._constructor();
1956
+ }
1957
+
1958
+ _active(activedIndex) {
1959
+ this._$panes.forEach(($pane, index) => {
1960
+ if (index === this._activeIndex) {
1961
+ $pane.classList.add(this.constructor._PANE_ACTIVE_CSS_CLASS);
1962
+ return luda.dispatch($pane, this.constructor._ACTIVED_EVENT_TYPE, index);
1963
+ } else {
1964
+ $pane.classList.remove(this.constructor._PANE_ACTIVE_CSS_CLASS);
1965
+ if (index === activedIndex) {
1966
+ return luda.dispatch($pane, this.constructor._DEACTIVED_EVENT_TYPE, index);
1967
+ }
1968
+ }
1969
+ });
1970
+ return this._setIndicatorsState();
1971
+ }
1972
+
1973
+ _setIndicatorsState() {
1974
+ return this._$indicators.forEach(($indicator, index) => {
1975
+ if (index === this._activeIndex) {
1976
+ return $indicator.setAttribute('checked', '');
1977
+ } else {
1978
+ return $indicator.removeAttribute('checked');
1979
+ }
1980
+ });
1981
+ }
1982
+
1983
+ // static private
1984
+ static _init() {
1985
+ var self;
1986
+ self = this;
1987
+ return luda.on('change', this._INDICATOR_SELECTOR, function(e) {
1988
+ var instance;
1989
+ if (this.checked) {
1990
+ instance = self.query(luda.$parent(self._SELECTOR, this));
1991
+ return instance.active(instance._$indicators.indexOf(this));
1992
+ }
1993
+ });
1994
+ }
1995
+
1996
+ };
1997
+
1998
+ _Class._SCOPE = 'tab';
1999
+
2000
+ _Class._SELECTOR = '.tab';
2001
+
2002
+ _Class._PANE_SELECTOR = '.tab-pane';
2003
+
2004
+ _Class._INDICATOR_SELECTOR = '.tab-indicators .btn-radio input[type=radio]';
2005
+
2006
+ _Class._PANE_ACTIVE_CSS_CLASS = 'tab-pane-active';
2007
+
2008
+ _Class._ACTIVE_INDEX = 0;
2009
+
2010
+ _Class._ACTIVED_EVENT_TYPE = `${_Class._SCOPE}:actived`;
2011
+
2012
+ _Class._DEACTIVED_EVENT_TYPE = `${_Class._SCOPE}:deactived`;
2013
+
2014
+ _Class._observerConfig = {
2015
+ childList: true,
2016
+ subtree: true
2017
+ };
2018
+
2019
+ return _Class;
2020
+
2021
+ }).call(this));
2022
+
2023
+ })));
2024
+ //# sourceMappingURL=luda.js.map